FISCO BCOS证书与鉴权体系

BCOS评论2,734阅读模式

区块链之所以被称为“信任的机器”,是因为其通过密码学算法使各不信任的节点互相协作达到信任。这一理念在联盟链中的体现主要是基于PKI(公钥基础设施)建立证书体系,FISCO BCOS中的证书主要满足SSL/TLS加密,通过证书认证的方式,去与特定受信任的“友好”节点连接并通信。

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS是SSL的标准化后的产物,也是更为安全的升级版 SSL。事实上我们目前用的都是TLS,但因为历史上已习惯了SSL这个叫法。

BCOS证书体系

FISCO BCOS的证书结构中有4种角色,分别是联盟链委员会、联盟链成员机构、联盟链参与方(节点和SDK)。

1. 联盟链委员会

联盟链委员会拥有联盟链的根证书ca.crt和私钥ca.key,通过使用ca.key对联盟链成员机构签发机构证书,负责完成联盟链成员机构的准入、剔除等操作。

2. 联盟链成员机构

联盟链成员机构为经过联盟链委员会许可,加入到联盟链的机构。联盟链成员机构拥有机构私钥agency.key和经过根私钥ca.key签发的机构证书agency.crt。联盟链成员机构可以通过机构私钥签发节点证书,从而配置本机构的节点和SDK。

3. 联盟链参与方

联盟链参与方可以通过运行节点或SDK联盟链交互,拥有与其他节点进行通信的节点证书node.crt和私钥node.key。联盟链参与方运行节点或SDK时,需要加载根证书ca.crt和相应的节点证书node.crt和私钥node.key(不需要机构证书);与其他成员进行网络通信时,使用预先加载的证书进行身份认证。

BCOS证书生成过程梳理

 

FISCO BCOS证书与鉴权体系

 

FISCO BCOS证书与鉴权体系

 

FISCO BCOS证书与鉴权体系

 

FISCO BCOS证书与鉴权体系

FISCO BCOS证书与鉴权体系

BCOS证书体系与配置流程

联盟链委员会

1.本地生成私钥ca.key;

2. 自签生成根证书ca.crt;

联盟链机构成员

3.本地生成私钥agency.key;

4.由本地私钥生成证书请求文件agency.csr;

5.将证书请求文件agency.csr发送至联盟链委员会;

6.联盟链委员会使用ca.key对证书请求文件agency.csr进行签发,得到联盟链成员机构证书agency.crt,联盟链委员会将联盟链成员机构证书agency.crt发送至对应成员;

节点/SDK

7.本地生成私钥node.key;

8.由本地私钥生成证书请求文件node.csr;

9.将证书请求文件node.csr发送至联盟链成员机构;

10.联盟链成员机构使用agency.key对证书请求文件node.csr进行签发,得到节点/SDK证书node.crt,并将节点证书node.crt发送至对应实体(sdk使用的也是node证书)。

FISCO BCOS证书与鉴权体系

证书验证流程

普通数字证书验证方法是这样,假设有A和B两方通信时A需要验证B,则:

1. A首先需要获取到为B颁发证书的那个CA(Certificate Authority证书颁发机构)的证书(上级CA证书),用这个上级CA证书中的公钥解密证书中的签名,得到“摘要信息1”

2. A再使用B证书中签名算法里面的HASH算法对B证书的数据部分进行HASH计算(如字段Signature Algorithm: ecdsa-with-SHA256,HASH算法为SHA256),得到一个“摘要信息2”。

3. A将摘要信息1和摘要信息2进行对比,如果两者一致,就说明证书确实是由这个上级CA颁发的(能用CA的公钥解密说明该CA确实持有私钥),并且没有被篡改过,说明该证书没有问题。

当然,也会同时检查证书是否在有效期内等参数。

FISCO BCOS证书与鉴权体系

 

依据上面数字证书的验证过程,总结BCOS链上TLS/SSL证书验证过程:

1.证书加载

节点程序会在本地持有ca.crt(链证书)、agency.crt(机构证书)等相关上级证书。在程序启动时,会首先加载本地的ca.crt和node.crt(节点证书);

2.验证node.crt来源是否合法

当节点验证对方的证书时,会首先使用对方node.crt中的HASH算法计算对方的证书数据部分HASH值;之后节点再使用agency.crt中的信息解密node.crt中的签名,两部分计算结果比对来确定是否为合法agency签发;

3.验证agency.crt来源是否合法

最后节点会使用本地加载ca.crt中的信息验证agency.crt是否为联盟链委员会签发;

4.确定证书来源

当两者都验证通过时,表示节点接收到的node.crt是由本地加载的ca.crt签发的。

TLS握手流程

TLS(SSL)建立连接时,需要互换证书验证。

FISCO BCOS证书与鉴权体系

 

BCOS最后更新:2022-1-3
WeIdentity-Sample国密化部署 BCOS

WeIdentity-Sample国密化部署

之前基于全国密化搭建了FiSCO BCOS链,但是官网给的WeIdentity-Sample例子是基于非国密的,欲将WeIdentity-Sample在国密下运行,还需要手动修改下。 1.修改代码 W...