2019-10-15 HyperLedger Fabric的身份和成员资格

什么是身份identity?

在区块链中有很多角色actor,例如peers,orderers, client applications, administrators等。他们都区块链里扮演者不同的角色,同时也拥有不同的数字身份(封装在x.509数字证书中,至于x.509是什么,不知道,后面再说)。这些身份的重要意义在于:精确确定每一个角色在区块链中的权限和资源。

(一个小概念: a principal =一个ID+它的一些属性,例如单位,部门职责,特殊身份)

我们对于一个系统参与者的身份有两点要求:

1)一个身份必须是可以验证的。不能让它说自己是谁就是谁,它的来源必须是一个可信的authority,例如,hyperledger fabic里面的membership service provider(MSP,用的是传统的PKI架构和x.509证书做身份,后面再说)。

2)一个身份必须是符合验证要求的。每一个系统都有自己的身份政策,来决定什么样的身份可以是符合要求的。在fabric里面,PKI就像是产生身份的authority,它可以生成许多可验证的身份(简单理解就是为一个参与者产生证书的公私钥对),可是它们生成了却不一定都会被fabric接受,因为MSP才是制定身份政策的那个,只有通过MSP验证的身份拥有者才能成为区块链的成员。


PKI是什么

PKI,公钥架构,在网络中提供安全通信的技术,让HTTP变成HTTPS的男人!

PKI = digital certificates + public/private keys + certificate authorities + certificate revocation lists.

1)Digital certificates很好理解,就是能够代表一个人身份和特征的文件,比如x.509标准。它就像人的ID卡,可以用来证明和自己相关的身份信息。

2) 公私钥对不用说

3)Cerfiticate authority,专门给各种人发数字证书,获得证书之后就可以用来证明自己的身份了。CA是一个加密机器,人们把自己的隐私信息给它,它还你一个不可以伪造的数字身份,像身份证发放机构一样。

4) 一个certificate revocation list(CRL)记录已经失效的证书。失效的原因很多,比如和证书相关的隐私材料泄露了。

几个和PKI相关的概念

1)Authentication:认证,是一个比验证要大的概念。认证就是验证数据的完整性,也就是数据是不是发起人发送的,是不是没有被改过,这个过程通常可以用数字签名来完成,这个比较基础,这里不提。

2)值得一提的是CA的分级,root CA和intermediate CA有区别。

       Root CA负责将大量证书发布给网络用户,工作量很大,需要借助中介intermediate CA。

       Intermediate CA的证书可以是root CA发的,也可以是其他intermediate CA发的,只要有一个信任链chain of trust就可以。

这个分级结构在permmisioned blockchian里其实很实用,比如fabric就有内置的CA结构。fabric CA是一个私有root CA,管理成员的身份(x.509证书),它不支持SSL证书,不过基本的证书管理功能它都有。

成员资格membership

PKI通过一系列信任链建立可验证的身份,满足身份的第一个可验证性的要求了,那它又是如何代表区块链中的成员的呢?

就靠MSP啦,它来识别哪些个体是root CA、intermediate CA、是可以信任的成员。它要么就是列出成员表,要么找到可以为成员建立身份的CA。MSP不仅有全员名单,还知道每个身份在网络中的角色。

Fabric 里的MSP

MSP的配置是全信道广播的,不仅如此,每个成员,不管你是peers还orderer,都有local MSP,管理和认证channel之外的成员消息。

一个组织organization成员数可多可少,一般有一个MSP,有时候也可以有多个子MSP负责不用的组织单元organizational unit OUs。还有的时候,一个MSP可以负责一个联盟中的一个组织成员,不过不同组织都用同样的root CA和intermediate CA,有点乱。

LOCAL 和 Channel MSPs

MSP就这两种形式,建立channel的时候配置channel MSP,和一个角色本地维持的local MSP,比如client和nodes。后者记录的是node的权限,在交易或建立channel的时候提供node认证信息或者扮演一种角色的拥有者。local MSP是必每个节点必须有的。而channel MSP的管理权限是channel级的,channel的参与者都要有建立channel的MSP权限。

他俩都是把身份转化成角色的,但是作用范围不一样。本地的身份有local MSP负责,理论上每个节点都只有一个local MSP。假如小李想通过peer1在区块链上放一段智能合约,小李在安装合约的时候,peer1就会在local MSP验证小李的权限,有权限才让安装。而channel MSP不一样,假如小李想要假如一个channel,channel的所有成员必须先要同意,那peer1就要一一查看channel节点的MSPs,确保可以加入。channel MSP是几个节点同步的,在channel建立的时候配置好,存在节点上但是一直通过共识进行同步。

按照级别来划分,MSP可以分为network MSP, Channel MSP, Peer MSP, orderer MSP,高级别的负责的管理任务更高级,比如network MSP就定义网络中完成管理任务者的身份,而比如orderer MSP就定义了可以被节点信任的身份


MSP Level

MSP的结构

MSP的结构

MSP的九个组成部分

root CA:组织信任的root CA的x.509证书清单,证书必须是MSP的root或它为根的intermediate CA签过的。

intermediate CA:组织信任的intermediate CA的x.509证书清单,证书必须是MSP的root或它为根的intermediate CA签过的。

organizational units:这个MSP代表的组织成员的标志

administrators:管理这个组织的角色的身份,至于管理的权限是有具体管理策略规定的。

revoked Certificates:和CRL很像,记录吊销的证书的身份信息

node identity:节点的身份,让节点可以证明自己身份的密码信息:

private key:用来签名的密钥,和node identity匹配

TLS root CA、TLS intermediate CA:在TLS通信的时候用的证书。

主要参考资料和图的来源: hyperledger fabric的白皮书

https://hyperledger-fabric.readthedocs.io/en/release-1.4/membership/membership.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容