国密加密算法java开源_HyperledgerFabric国密改造项⽬介绍引⾔
密码学是区块链实施中最重要的组成部分之⼀。然⽽,每个国家都有⾃⼰的国家加密算法,因此,在实施联盟链⽅案時⽀持国密算法尤其重要。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 系列 (github/Hyperledger-TWGC/pku-gm)
中国⽹安 CCS-GM 系列 (github/Hyperledger-TWGC/ccs-gm)
苏州同济区块链研究院 (tjfoc-gm github/Hyperledger-TWGC/tjfoc-gm)
⾃⼰实现的国密算法java-gm (github/Hyperledger-TWGC/java-gm)
node-gm (github/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版本 docs.qq/doc/DV1VMenFiQXBpeFZK)。此外,国密⼯作组积极参与开源标准制定,⽐如:向Fabric社区提交了有关bccsp的改造⽅案的RFC⽂档 (github/hyperledger/fabric-
rfcs/pull/34)。
参与国密改造项⽬你将收获个⼈⼀志同道合的朋友
技术能⼒提升
开源项⽬经验
⼤平台的交流机会
企业认知度提升
更多的合作机会
更好的⼈才储备
Fabric国密改造项⽬是由Hyperledger TWGC发起执⾏的开源项⽬,需要对该项⽬感兴趣的开发者⼀起协作完成。我们TWGC现已招募到了50+项⽬志愿者。欢迎企业或个⼈参与Fabric国密改造项⽬,为开源社区贡献⾃⼰的⼀份⼒量。⼈⼈为我,我为⼈⼈。
联系⽅式加⼊TWGC Github组织, 给国密项⽬做出代码贡献 (github/Hyperledger-TWGC)
国密⽀持开发:联络David Liu(davidkhala),Scott Long(hncslwx)进。
TWGC在Hyperledger的联系渠道 (/display/TWGC/Technical+Working+Group+China)
参加国密改造周例会(github/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 系列 github/Hyperledger-TWGC/pku-gm
中国⽹安 CCS-GM 系列 github/Hyperledger-TWGC/ccs-gm
苏州同济区块链研究院 tjfoc-gm github/Hyperledger-TWGC/tjfoc-gm
java-gm github/Hyperledger-TWGC/java-gm
node-gm github/Hyperledger-TWGC/node-gm
TWGC对于《⾦融分布式账本技术安全规范》的解析(beta版本) docs.qq/doc/DV1VMenFiQXBpeFZK
向Fabric社区提交了有关bccsp的改造⽅案的RFC⽂档 github/hyperledger/fabric-rfcs/pull/34
TWGC Github组织, 给国密项⽬做出代码贡献 github/Hyperledger-TWGC
开源项目TWGC在Hyperledger的联系渠道 /display/TWGC/Technical+Working+Group+China
参加国密改造周例会 github/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: github/davidkhala
Xiao Hui: github/xiaohui249
Sam Yuan: github/SamYuan1990
马上点击这⾥获取本⽂章內的超链接
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论