Fabric CA学习

区块链学习笔记

Posted by Liu Ke on March 8, 2018

CA负责网络中所有的证书的管理(分发、撤销等),实现标准的PKI(Public Key Infrastructure,公开密钥基础设施)架构。主要代码在单独的fabric-ca项目中。CA在签发证书后,自身不参与网络中的交易过程。

客户端应用使用SDK与Fabric网络建立联系。客户端首先从CA获得合法的身份证书来加入网络内的应用通道之后,才能发起交易。命令行客户端的主要实现代码在peer/chaincode目录下。

CA节点(Fabric-CA)负责对Fabric网络中的成员身份进行管理。Fabric网络目前采用数字证书机制来实现对身份的鉴别和权限控制,CA节点则实现了PKI服务,主要负责对身份证书进行管理,包括生成、撤销等。

需要注意的是,CA节点可以提前签发身份证书,发送给对应的成员实体,这些实体在部署证书后即可访问网络中的各项资源。后续访问中,实体无需再次向CA节点进行请求。因此,CA节点的处理过程跟网络中交易的处理过程是完全解耦的,不会造成性能瓶颈。

身份证书(certificate)是Fabric中权限管理的基础。目前采用了ECDSA算法的非对称加密算法来生成公钥和私钥,证书格式则采用了X.509的标准规范。Fabric中采用单独的Fabric CA项目来管理证书的生成。每一个实体、组织都可以拥有自己的身份证书,并且证书也遵循了组织结构,方便基于组织实现灵活的权限管理。

Fabric设计中考虑了三种类型的证书:登记证书(Enrollment Certificate)、交易证书(Transaction Certificate),以及保障通信链路安全的TLS证书。证书的默认签名算法为ECDSA,Hash算法为SHA-256:

  • 登记证书(ECert):颁发给提供了注册凭证的用户或节点等实体,一般长期有效。
  • 交易证书(TCert):颁发给用户,控制每个交易的权限,一般针对某个交易,短期有效。
  • 通信证书(TLSCert):控制对网络层的接入访问,可以对远端实体进行校验,防止窃听。

目前在实现上,主要通过ECert来对实体身份进行检验,通过检查签名来实现权限管理。

参考资料:《区块链 原理、设计与应用》 杨保华, 陈昌编著


Fork me on GitHub