专题研究二十六:联盟链研究之Fabric国密

61 字

专题研究二十六:联盟链研究之国密Fabric

国密算法可以提供 SM2,SM3 和 SM4 来提供支持。
国密算法是我国自己的密码行业标准,也是某些领域的准入门槛。所以在 Fabric 中引入国密算法标准对于超级账本项目在国内的商业推广有很重要的作用。
用于Hyperledger Fabric项目支持国密算法,支持V1.1.x以上版本;

众所周知的原因,DES和AES等对称加密算法的关键之处:S盒是掌握在美国的手里的,所以是不可信任的。非对称加密算法也有未知的后门,所以我们必须进行替换成国密算法,sm2,sm3和sm4。
sm2 基于椭圆曲线密码的公钥,包含数字签名,密钥交换和公钥加密,用于替换RSA/D-H/ESDSA;
sm3 哈希算法,用于替换MD5,SHA-256;
sm4 对称加密,AES和DES1. Hyperledger Fabric 国密补丁的使用

https://mp.weixin.qq.com/s/rU4s8Cg5KdGMij2B5ImQHw fabric国密算法的改造

常用的密码学分为对称加密,非对称加密和hash算法。非对称密码学算法主要用在:提案交易,背书交易,创建区块,tls和证书验证中。SM是商密算法,不涉及国家秘密。

Fabric作为主流区块链技术平台,它的思路重点是满足企业商用的需求。目前Fabric中密码算法中现在已经支持的加密算法有非对称加密算法、摘要算法(哈希算法)、以及对称加密算法。非对称算法在其中主要提供签名验签功能,需要注意的是,对称加密算法在Fabric核心中暂时还没有用到。”李刘海谈到,“将国密算法用于改造Fabric目前有两种思路:一种是基于Fabric本身扩展国密包;另一种方法是基于Golang标准库扩展国密,两种改法各有优劣。第一种改法不用对Golang标准库做任何地改动,所有的修改都在Fabric项目源码上进行;第二种方案是直接扩充Golang标准库,改法更为清晰。

Fabric整个体系里面,除了最主要的Fabric主体框架,还涉及到有Fabric-CA和Fabric-SDK的扩展。Fabric-CA主要是为了实现对加入联盟链的成员的身份控制以及数据生成保管。Fabric-CA中,Lib,主要是接口的实现,主要在解析申请证书请求以及签发证书流程要替换为国密算法;Util,该包数据工具类,主要在证书的编解码等操作中扩展国密算法;Vendor中,替换对Fabric的包的引用,提供对国密算法的支持。

而Fabric-SDK主要是一个区块链的大框架,每一个应用发布上去,可以调用我们提供的SDK的功能。API主要是接口的定义,PKG主要是接口的实现,Vendor是替换对Fabric包的引用,提供对国密算法的支持,这一点同CA类似。

在Fabric中扩展国密算法,大概有以下几个方面:第一,Fabric框架扩展支持国密算法;第二,Fabric-CA扩展支持国密算法;第三,Fabric-SDK扩展支持国密算法;第四,fabric-baseimage、fabric-baseos镜像扩展支持国密算法;第五,Fabirc框架扩展支持加载.so库。

2月26日消息,江苏银行推出了升级版的区块链金融项目“苏银链2.0”,对原本基于Hyperledger Fabric的“苏银链”进行了国密改造,重构区块链底层架构、优化机制。
国内诸多区块链金融项目是基于国外的Fabric,而Fabric的框架并不完全符合国内央行金融区块链规范所提出的各项规范。像苏银链那样,大量的区块链金融项目需要被改造。

当前国内金融领域,尤其是银行业有诸多区块链项目是基于Fabric打造的,如中国银行、民生银行、邮储银行、工商银行、建设银行等便均曾推出运用Fabric架构的区块链金融项目。

民生银行、中信银行于2017年6月联合推出的基于区块链技术的国内信用证信息传输系统(BCLC);中信银行、中国银行、民生银行于2018年9月打造的区块链福费廷交易平台(BCFT);北京宏链科技有限公司2016年推出的宏链科技区块链基础设施,均是基于Hyperledger Fabric搭建。当前这三个平台,均已提供国密算法的支持模块,与规范要求相适应。
中国银行保险信息技术管理有限公司在2019年11月,推出了中国银保信行业信息联盟链,该联盟链也是依托以Fabric为基础的区块链技术。

Fabric原生架构中没有进行安全硬件适配,暂不符合商用密码中心标准,如需符合标准则需要相关金融机构自行投入人力、硬件成本以满足要求。

Fabric提供了类似SQL查询账本的功能,可进行有效审计,网络参与者见证的交易都可以被授权的监管机构和审计人员检测和跟踪。然而针对标准中关于审计记录的可验可查,Fabric并不能满足,基于Fabric的区块链金融项目,需要投入一定的二次开发成本才能满足相关账本审计的需求。

Fabric在v1.0以后采用Kafka进行交易的定序,在v1.4.1后支持RAFT共识算法,这两种实现方式可以容忍半数节点失效,但不支持拜占庭容错,即不能容忍节点作恶,需适配拜占庭容错共识算法才能满足规范要求。

原生Fabric暂不支持国密标准,主要通过密码套件接口BCCSP支持国际标准的各类加密哈希算法,并应用于相关签名、验签、数据加密等处理流程中,处理过程中存在着大量不可控因素,同时通过自身的安全成员服务MSP而不是第三方可信证书机构提供证书服务。基于Fabric架构的金融项目需要适配新的密码模块,以符合标准要求。

Fabric在v2.0采用了新的链码(chaincode)生命周期管理,包含链码名称和版本号管理,同时,新引入了分布式的智能合约治理方式,对链码升级、背书策略更新等方面进行了优化和支持。但其在链码生命周期管理过程中暂不支持合约冻结/解冻,该功能在实际业务场景中是必要的,另外Fabric当前还不支持访问可信外部数据源,这限制了合约的部分可扩展性。

由于匿名性,Fabric对于身份管理信息如数字身份证明、用户职业居住地工作等无法获取,所以暂不支持部分身份管理规范标准,需要进行业务层面的二次改造。关于隐私交易,Fabric在2.0版本中更新了原有的隐私保护策略,成员组织可选择与其直接网络的特定成员私下共享数据。除此之外,关于隐私交易的数据审计问题如细则中隐私数据的采集、流转、使用的相关审查策略,Fabric不能很好的满足,需要相应改造链码以及业务系统等。

在监管支撑方面,原生Fabric在系统和交易出现问题时,可以对问题进行定位和处理。但没有一套完善的上报纠错机制来满足监管需求。需要对原生的架构进行二次开发,存在一定的改造成本。

Fabric v1.X版本与v0.X版本不能够很好的兼容,不满足规范中对兼容性的要求。同时由于引入了Docker、Kafka、Zookeeper等第三方软件,对需要版本升级的业务系统提出了更高的运维需求。另外,Fabric在系统异常情况下进行数据恢复回滚操作时,节点必须是离线的,在回滚成功之后重启才可恢复正常,这大大降低了系统可用性。

为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现。其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用

可以网上找文章 SM系列国密算法 “区块链兄弟 ”公众号
https://zhuanlan.zhihu.com/p/132352160 国密算法介绍

Fabric在1.0版本的时候,架构进行了重构,相比于v0.6版本来说,有了颠覆性的变革,功能模块进行了结偶,具有了更好的可伸缩性、性能,进行了channel级别的安全隔离,共识算法可插拔,具备了更高的可操作性,具备了更丰富的功能,给开发者更好的体验,v0.6版本中的Membership也升级为了一个独立的Fabric CA项目。

在v1.x版本中,主要分为Fabric CA、Endorser、Committer、Orderer、Application等角色。
Fabric CA:负责维护整个Fabric网络中的证书,主要包括签发、吊销、续签证书等操作。
Endorser:负责对客户端发过来的交易提案进行背书。
Comitter:负责对区块进行有效性校验并将区块写入账本。
Orderer:负责对所有的交易进行全局唯一的排序打包工作。
Application:用于发送交易提案,收集响应,封装交易发送至Orderer排序服务节点。