当前位置:首页 » 区块链精品文章 » 正文

4.3 成员认证及身份管理

1645 人参与  2018年10月15日 10:56  分类 : 区块链精品文章  评论

在Gossip网络中,每个节点都有超级账本网络认可的MSP(Membership Service Provider)颁发的证书(身份,Identity),从证书计算哈希值导出(目前的实现是直接用Endpoint转换而来的)的一个标识符称为节点 的PKI-ID。

身份管理模块管理节点标识符和证书之间的映射,在内部维护了以PKI-ID为键、证书为值的映射表 pkiID2Cert,可以通过PKI-ID获取节点的证书,也可以更新节点的证书。同时还内置了MCS(MessageCryptoService)模 块,它可以对消息进行签名和验证。更新节点证书的时候也会通过MCS模块验证证书是否有效,检查从证书导出的标识符是否和PKI-ID匹配。¤

在生产环境中,假设所有节点都是双向TLS部署的,TLS连接的双方都有一个有效的TLS证书。当节点和对端节点 第一次连接时,会有一个握手协议,这个协议验证它是否拥有TLS证书的私钥,因而在TLS会话中绑定成员身份。握手是相互的,过程比较简单,握手节点主动 发送给对端节点一条ConnEstablish消息,包含的内容有:

·节点TLS证书的哈希值;

·节点的PKI-ID;

·MSP身份证书。

然后,对端节点的处理过程是:

·接收发送过来的ConnEstablish消息;

·提取节点的TLS证书并计算哈希值;

·通过哈希值验证ConnEstablish的签名是否正确。

如果签名验证通过,还会检查PKI-ID是否在黑名单列表中,如果不在黑名单中,就信任这个节点。用PKI-ID 作为键值,保存证书到映射表pkiID2Cert中,后续可以验证这个节点发送消息的签名。同时还会用PKI-ID作为键值,创建一个连接并进行关联,并 将其保存在内存中。需要和这个节点通信的时候通过PKI-ID快速地找到连接并发送消息。发送的过程是把消息放到一个发送缓冲区中,由一个线程负责把发送 缓冲区中的数据发送出去。如果签名验证失败,节点拒绝这次连接。


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1079

区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>

网站分类

标签列表

最近发表

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

本站资源大部分来自互联网,版权归原作者所有!