区块链参与者包括 peers
、orderers
、client applications
以及 administrators
等,这些参与者都有一个封装在 x509
数字证书中的数字身份,这些身份决定了其背后的参与者在区块链网络中对资源的访问权限。
此外,数字身份还有一些额外的属性,hyperchain
利用这些属性来确定权限,并给身份和相关属性的结合起了一个特殊的名字:principal
。principal
包含行为者身份的各种属性,如行为者的组织、组织单位、角色甚至行为者的特定身份。
只有当身份是由可信的机构授予的,才能验证身份的合法性。成员服务提供商 (MSP) 就是 hyperchain
中的可信机构。MSP
采用 x509
证书作为身份,使用传统的公钥基础设施 (PKI) 分层模型。
想象一下你在超市购物,然后在收银台处,你看到一个牌子上写着仅支持使用银联、微信和支付宝付款。如果你试图用一张国外的信用卡结账,那么不管该卡是否真实,也不管里面是否有足够的余额,超市收银员都会拒绝你用这张卡付款。
仅有一张合法的信用卡是不够的,它还必须被超市接受。PKI
和 MSP
以同样的方式协同工作:PKI
提供一个身份列表,而 MSP
则说明其中哪些是参与区块链网络的特定组织的成员。
PKI
证书颁发机构和 MSP
提供类似的功能组合,PKI
就像一个信用卡提供商,它提供多种类型的可验证信用卡。另一方面,MSP
就像超市的那个公告牌,决定哪些信用卡是可以被用来结账的。MSP
将可验证身份转化为区块链网络的成员。
公钥基础设施 (PKI) 是互联网技术的集合,可在网络中提供安全通信。PKI
由证书颁发机构 (CA) 组成,证书颁发机构向各方(如客户端、服务端)颁发数字证书,然后各方在交换信息时使用这些证书进行身份验证。CA
的证书吊销列表 (CRL) 列出了不再有效的证书。证书可能会因为与证书相关的私密信息被暴露而被吊销。
在 PKI
中有以下四种关键元素:
- 数字证书 (Digital Certificates)
- 公钥和私钥 (Public and Private Keys)
- 证书颁发机构 (Certificate Authorities)
- 证书吊销列表 (Certificate Revocation Lists)
数字证书是一种文件,其中包含一组与证书持有者有关的属性。最常见的证书类型是符合 x509
标准的证书,该标准允许在证书结构中对当事人的身份细节进行编码。当事人的身份细节通过密码技术记录到证书中,因此任何信息的篡改都会导致证书失效。只要人们相信证书颁发机构 (CA),那么证书拥有者就可以通过密码学技术向其他人证明自己的身份。
身份认证和信息的完整性是安全通信中非常重要的概念。身份认证要求交换信息的各方确信创建特定信息的身份。信息的“完整性”是指信息在传输过程中不能被修改。
传统的身份认证机制依靠的是数字签名,数字签名还能保证信息的完整性。
从技术上讲,数字签名机制要求签名的生成者与验证方分别持有私钥和公钥,验证者可以通过检查签名是否在预期的公钥下有效,来验证所收信息的来源和完整性。
节点通过系统信任的机构为其颁发的数字身份参与区块链网络。hyperchain
为节点定义的数字身份的形式符合 x509
标准的加密验证数字证书,由 CA
颁发。
证书颁发机构向不同的实体颁发证书,这些证书由 CA
进行数字签名,并将实体与其公钥以及一些可选的属性绑定在一起。因此,如果人们信任 CA
,就可以通过验证 CA
在实体证书上的签名,来确信实体与证书中的公钥绑定,并拥有其中包含的属性。
CA
有两种类型:根 CA
和中级 CA
。中级 CA
的证书由根 CA
或者其他中级 CA
签发,因此,通过证书的签发过程可以建立“信任链”。这种追溯到根 CA
的能力不仅使 CA
的功能得以扩展,同时还能提供安全性:允许使用证书的组织放心地使用中级 CA
,而且还限制了根 CA
的风险,因为一旦根 CA
遭到破坏,整个信任链都将受到威胁。另一方面,如果中级 CA
遭到破坏,暴露的风险会小得多。
证书吊销列表(CRL)很容易理解:它只是一个证书引用列表,CA
知道这些证书由于某种原因已被吊销。类比前面举的超市的例子,那么 CRL
就像是被盗信用卡的清单。
当第三方要验证另一方的身份时,首先要检查 CA
的 CRL
,以确保证书没有被撤销。
请注意,证书被撤销与证书过期是完全不同的。被废止的证书并没有过期,从其他任何方面来看,它们都是完全有效的证书。有关 CRL 的更多详细信息,请点击此处。