引言

密码学是区块链实施中最重要的组成部分之一。然而,每个国家都有自己的国家加密算法,因此,在实施联盟链方案時支持国密算法尤其重要。Hyperledger Fabric在包括中国在内的世界范围内得到广泛使用。为了更好地推进Hyperlegder Fabric项目对不同加密算法实现的支持,降低企业使用其作为区块链解决方案时对于密码套件改造可能的二次开发成本,提高国际化友好性,Fabric国密改造项目应运而生。Hyperledger中国技术工作组决定启动该项目,以社区合作绝对开源的方法为每个人开发通用的解决方案。再次衷心感谢各方努力。接下来,我们來看看这项目的成果。

项目背景和目标

密码是解决网络与信息安全最有效、最可靠、最经济的方式,是维护网络与信息安全的核心技术和基础支撑。

国密算法是国家通用密码算法的简称,是国家密码管理局制定的自主可控的国产算法,包括SM1、SM2、SM3 、SM4、SM7、SM9、祖冲之密码算法(ZUC)等。

密码算法在区块链系统中起着举足轻重的作用,这对于Hyperledger Fabric来说也不例外。Hyperledger Fabric是具有国际影响力的企业级区块链平台,其默认密码算法为国际标准密码算法,但是对世界各国企业而言,区块链项目存在根据行业规范或当地法律法规调整加密算法或实施细节的需要。另外,Fabric的密码套件虽然是可插拔式的,但是密码算法扩展性上还是存在一些限制。为了更好地推进Hyperlegder Fabric项目对不同加密算法实现的支持,降低企业使用其作为区块链解决方案时对于密码套件改造可能的二次开发成本,提高国际化友好性,Fabric国密改造项目应运而生。Fabric国密改造项目由Hyperlegder中国工作组(TWGC)发起执行,旨在构建支持国密算法且密码算法可灵活扩展的Fabric平台,方便世界各国开发者快速接入自定义的密码算法。

接下来,本文会从不同方面来阐述Fabric国密改造项目。

方案设计

Hyperlegder Fabric项目主要包括三个部分:Fabric、Fabric-CA和Fabric SDK。根据改造需求分析,Fabric国密改造方案由三个部分构成:

国密算法基础库收集与改造

构建完善可用的国密算法基础库是Fabric国密改造的首要事项。本次改造涉及的国密算法包括:SM2、SM3和SM4。另外,TLS协议也需要进行对应的国密改造。

实现国密算法的编程语言包括:Golang、NodeJS和Java,各语言实现的国密算法之间需要进行互操作验证。

国密算法基础库的构建有两个途径收集已有的国密算法开源实现项目,最终收集并审核加入的成熟基础库包括北京大学信息安全实验室 GMSSL 系列 (https://github.com/Hyperledger-TWGC/pku-gm)

中国网安 CCS-GM 系列 (https://github.com/Hyperledger-TWGC/ccs-gm)

苏州同济区块链研究院 (tjfoc-gm https://github.com/Hyperledger-TWGC/tjfoc-gm)

自己实现的国密算法java-gm (https://github.com/Hyperledger-TWGC/java-gm)

node-gm (https://github.com/Hyperledger-TWGC/node-gm)

Fabric本体改造

Fabric本体改造包括:Fabirc改造和Fabric-CA改造,主要是重构Fabric密码套件接入方式,以便开发者灵活接入自定义的密码算法。完成对Fabric的国密算法接入改造,主要涉及国密算法的Golang实现以及改造出符合国密标准的TLS通信加密组件。

Fabric SDK改造

Fabric SDK改造包括:Fabric客户端SDK改造,这部分涉及的语言分别是Golang、NodeJS和Java。当Fabric的国密改造完成时,对应的客户端程序中部分涉及加密学的部分也需要进行国密改造以适配Fabric网络的国密PKI体系。

项目进度

基于上述改造方案,改造项目实施路线分为两个阶段:准备阶段、实施阶段、整理阶段。

准备阶段(已完成)国密改造项目收集:该项目发起之前,已经有一些企业或个人对国密算法、Fabric国密改造进行了研究和编码,项目实施前需要将这些项目进行收集整理、参考学习,避免重复造轮子。

改造需求收集:收集广大用户的国密改造需求,明确国密改造目标。主要有:采用规范的非入侵式的改造设计,希望国密改造能够与Fabric升级持续兼容;

开发支持多语言且完善的国密库和通讯套件;

实现Fabric-SDK多语言的国密改造;

2. 实施阶段

好的开始是成功的一半,那么成功的另一半则是脚踏实地的执行。实施阶段是方案落实执行阶段,主要涉及项目管理工作,包括:执行跟踪和测试验收。

执行跟踪:通过周例会的形式,国密改造小组同步各个项目的进展情况,并就执行过程中存在的问题进行分析讨论。成熟:可以使用,并且包含了项目内部单元测试和互操作测试。

beta:功能待完善,开发过程中。

孵化:调研中。测试验收:Fabric国密改造联调测试,主要是各语言SDK与Fabric、Fabric-CA的联调测试。

3. 整理阶段

整理阶段主要复盘国密改造的整体工作,整理开发文档和迁移兼容指南,为对Fabric国密的开发者用户提供详细准确的参考。

项目特点

国密工作组至今的工作有很多其他开源项目少有的方式和特点。主要体现在国密社区多样化的实现方式、互操作认证以及对于开源的贡献上。

多样化的实现方式

密码学是一个门槛比较高的领域,开源领域支持国密算法及其通讯套件的项目凤毛麟角,而且国密算法的开发者生态是不完整的,能够完善支持国密的密码库和通讯套件的流行的编程语言和框架非常少(目前Java的bouncycastle库已支持国密算法)。

对于国密工作组而言,鉴于国密算法生态如此,在Hyperledger Fabric上进行国密算法改造是非常困难的。为了解决这个问题,国密工作组至今并继续努力实现多语言的国密算法基础库,目前规划有Golang,Java,NodeJS等不同语言的国密算法基础库。

互操作认证

由上述特点引申出一个问题,如何在跨语言的国密算法实现库之间验证其兼容性。

Hyperledger Fabric的项目是多方参与的区块链解决方案,由于国密算法是一套标准,而在实际实施过程中,可能会有不同的实现方式。比如Fabric其本身基于Golang语言,使用Golang实现的国密算法,而应用端使用Java或NodeJS等其他语言实现的国密算法。

为了解决这个问题,国密工作组基于不同语言国密算法实现密钥可以交叉验证的宗旨,创建了fabric-gm-plugins这个工程来确保不同语言之间的国密算法基础库之间可以进行互操作。同时,我们对于各个项目库内部的测试,接口与文档规范也有一定的要求,比如在Golang的实现库中覆盖了有关性能的benchMark测试案例。

社区影响力

随着区块链的推广,国密算法在各个行业的应用也会变得普及,从而保护各行各业的信息安全。项目实施过程中遵守开发规范,不断复盘整理框架结构和项目代码,力争对外形成统一规范,树立标杆形象。为了和业界已有的规范标准相匹配,在实现过程中同时也参考了TWGC对于《金融分布式账本技术安全规范》的解析(beta版本 https://docs.qq.com/doc/DV1VMenFiQXBpeFZK)。此外,国密工作组积极参与开源标准制定,比如:向Fabric社区提交了有关bccsp的改造方案的RFC文档 (https://github.com/hyperledger/fabric-rfcs/pull/34)。

参与国密改造项目你将收获个人一群志同道合的朋友

技术能力提升

开源项目经验

大平台的交流机会

企业认知度提升

更多的合作机会

更好的人才储备

Fabric国密改造项目是由Hyperledger TWGC发起执行的开源项目,需要对该项目感兴趣的开发者一起协作完成。我们TWGC现已招募到了50+项目志愿者。欢迎企业或个人参与Fabric国密改造项目,为开源社区贡献自己的一份力量。人人为我,我为人人。

联系方式加入TWGC Github组织, 给国密项目做出代码贡献 (https://github.com/Hyperledger-TWGC)

国密支持开发微信群:微信联络David Liu(davidkhala),Scott Long(hncslwx)进群。

TWGC在Hyperledger的联系渠道 (https://wiki.hyperledger.org/display/TWGC/Technical+Working+Group+China)

参加国密改造周例会(https://github.com/Hyperledger-TWGC/fabric-gm-wiki/wiki/%E6%AF%8F%E5%91%A8%E4%BE%8B%E4%BC%9A%E4%BF%A1%E6%81%AF)

参考链接

北京大学信息安全实验室 GMSSL 系列 https://github.com/Hyperledger-TWGC/pku-gm

中国网安 CCS-GM 系列 https://github.com/Hyperledger-TWGC/ccs-gm

苏州同济区块链研究院 tjfoc-gm https://github.com/Hyperledger-TWGC/tjfoc-gm

java-gm https://github.com/Hyperledger-TWGC/java-gm

node-gm https://github.com/Hyperledger-TWGC/node-gm

TWGC对于《金融分布式账本技术安全规范》的解析(beta版本) https://docs.qq.com/doc/DV1VMenFiQXBpeFZK

向Fabric社区提交了有关bccsp的改造方案的RFC文档 https://github.com/hyperledger/fabric-rfcs/pull/34

TWGC Github组织, 给国密项目做出代码贡献 https://github.com/Hyperledger-TWGC

TWGC在Hyperledger的联系渠道 https://wiki.hyperledger.org/display/TWGC/Technical+Working+Group+China

参加国密改造周例会 https://github.com/Hyperledger-TWGC/fabric-gm-wiki/wiki/%E6%AF%8F%E5%91%A8%E4%BE%8B%E4%BC%9A%E4%BF%A1%E6%81%AF

鸣谢

David Liu: https://github.com/davidkhala

Xiao Hui: https://github.com/xiaohui249

Sam Yuan: https://github.com/SamYuan1990

马上点击这里获取本文章內的超链接

国密加密算法 java 开源_Hyperledger Fabric 国密改造项目介绍相关推荐

  1. 国密算法java源码_国密算法SM2证书制作

    前段时间将系统的RSA算法全部升级为SM2国密算法,密码机和UKey硬件设备大都同时支持RSA和SM2算法,只是应用系统的加解密签名验证需要修改,这个更改底层调用的加密动态库来,原来RSA用的对称加密 ...

  2. Hyperledger Fabric国密改造

    Fabric国密改造是个什么概念?我们来思考以下4个问题: 为什么偏偏是密码算法?(WHY?) 什么是国密算法?(WHAT?) 改造切入点什么?(WHERE?) 如何实现国密支持?(HOW?) 1.为 ...

  3. fabric 国密改造

    背景 最近应公司项目需求,需要对fabric中的加密相关模块进行改造,主要目的是使fabric底层加密服务支持国密算法sm2.sm3以及sm4等.借这次机会,顺便熟悉一下fabric加密模块的源码实现 ...

  4. sm3算法 java_“国密加密算法”SM系列的C#实现方法

    摘要] 本文主要讲解"国密加密算法"SM系列的C#实现方法,不涉及具体的算法剖析,在网络上找到的java实现方法比较少,切在跨语言加密解密上会存在一些问题,所以整理此文志之.JAV ...

  5. Hyperleder Fabric国密改造一键部署工具区块链网络修改工具

    A.Fabric国密改造(以2.2版本为例) A.1.golang国密改造修改文件清单 └─src     └─crypto         │  crypto.go         │       ...

  6. 国密是什么意思?属于商密还是普密?

    最近不少人在问,国密是什么意思?属于商密还是普密?国密算法又是什么意思?为什么要推行国密算法?针对这四个问题,我们小编将为您进行详细解答. 国密是什么意思?属于商密还是普密? [回答]:国密即国家密码 ...

  7. 2020十一届蓝桥杯国赛二等奖Java B组

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 参考博客https://blo ...

  8. 国密数字证书离线申请流程-国密数字信封解析

    国密数字证书离线申请流程-国密数字信封解析 背景 我们设备本身已经集成了自建CA服务器,并且支持国密/商密,但在实际上线使用过程中发现虽然大多数局点都是仅仅使用国密功能,主要涉及国密证书生成,国密ss ...

  9. 【国产加密算法-java实现SM3】

    国产加密算法-java实现SM3 一.国产加密算法介绍 国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2).SM2.SM3.SM4.SM7.SM9.祖冲之密码算法(ZUC)那等等. 其 ...

最新文章

  1. eclipse连接mysql8报错_Eclipse连接MySQL8.0.13 win10 64位
  2. web dynpro配置注意事项
  3. c语言键盘输入若干个数据,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
  4. python 日期 间隔_Python datetime time 等时间 日期 之间的计算和相互转化
  5. scala版本的springboot的helloworld实验记录(转载+自己验证整理)
  6. oracle 12c 多线程,Oracle 12c(12.1)中性能优化功能增强之通过参数THREADED_EXECTION使用多线程模型...
  7. observable_Java Observable countObservers()方法与示例
  8. vue导出Excel(一)
  9. 【小程序】一个提醒休息的小程序,供大家娱乐
  10. 【你可能不知道的】 PICkit3 脱机烧写 program to go 模式
  11. 电子技术基础——基本共射放大电路
  12. C语言:二进制转换十进制
  13. 直角坐标积分化为极坐标积分_将直角坐标系下的二次积分转换成极坐标系下的二次积分...
  14. 前端如何实现搜索记录展示以及清楚历史搜索记录
  15. java计算机毕业设计夕阳红养老院系统源码+lw文档+系统+数据库
  16. php木马导致服务器流出流量很高的排查及临时解决方法
  17. 51Nod-1106质数检测
  18. Nginx更新https证书,三步走
  19. 掌财社:连投三家元宇宙公司,字节开始跟对手们掰手腕了
  20. Python入门自学进阶——11-协程

热门文章

  1. 武汉大学计算机学院考研心得,武汉大学计算机专业考研心得_跨考网
  2. Flutter开发学习课程携程app开发(二)
  3. 北航研究生课程经济学思想知识点
  4. 腾讯云服务器文件解压,使用腾讯云函数SCF快速解压对象存储COS中的ZIP文件
  5. 继富士康之后,又一个8万人大厂转移印度,但仍在中国留有后路
  6. 爱春秋之戏说春秋 Writeup
  7. linux中用循环求平均值,怎么用循环句求平均值(在线等)
  8. 表情包 | 猛猪哭泣。
  9. 北上广深杭大厂+独角兽职位机会推荐
  10. 查并集(朋友圈问题)