什么是身份?¶
区块链网络中的不同参与者包括Peer节点、排序节点、客户端应用程序、管理员等。这些参与者中的每一个——能够消费服务的网络内外的活动元素——都有一个封装在X.509数字证书中的数字身份。这些身份确实很重要,因为它们决定了参与者在区块链网络中对资源和信息的确切权限。
此外,数字身份还有一些附加属性,Fabric使用这些属性来确定权限,它为身份和相关属性的联合提供了一个特殊的名称——主体(principal)。主体就像userID或groupID一样,但更灵活一点,因为它们可以包括参与者身份的广泛属性,例如参与者的组织、组织单位、角色,甚至参与者的特定身份。当我们谈论主体时,它们是决定其权限的属性。
要使身份可以验证,该信息必须来自可信的权威机构。成员资格服务提供商(MSP)是Fabric网络中的受信任机构。更具体地说,MSP是一个组件,它定义了管理该组织有效身份的规则。Fabric中默认的MSP实现使用X.509证书作为身份,采用传统的公钥基础设施(PKI)分层模型。
举例:使用身份的一种简单场景¶
想象一下,你去超市买一些杂货。结账时,你会看到一块牌子,上面写着只接受Visa、Mastercard和AMEX卡。如果你试图用另一张卡支付——我们称之为“ImagineCard”——那么这张卡是否真实以及你的账户中是否有足够的资金都无关紧要,它将不被接受。
仅仅拥有一张有效的信用卡是不够的,它还必须被商店接受!PKI和MSP以相同的方式协同工作——PKI提供身份列表,MSP表示其中哪些是参与Fabric网络的特定组织的成员。
PKI证书颁发机构和MSP提供了类似的功能组合。PKI就像一个信用卡提供商,它分配许多不同类型的可验证身份。另一方面,MSP就像商店接受的信用卡提供商列表,确定哪些身份是商店支付网络的可信成员(参与者)。MSP将可验证的身份转换为区块链网络的成员。
接下来,让我们更详细地了解这些概念。
什么是PKI?¶
公钥基础设施(PKI)是在网络中提供安全通信的互联网技术的集合。正是PKI将S置于HTTPS中——如果你在网络浏览器上阅读这些文档,你可能会使用PKI来确保它来自经过验证的来源。
上图展示了构成公钥基础设施(PKI)的要素。PKI由证书颁发机构组成,证书颁发机构向各方(例如服务的用户、服务提供商)颁发数字证书,然后由各方在其环境中交换的消息中使用数字证书对自己进行身份验证。CA的证书吊销列表(CRL)构成了对不再有效的证书的引用。证书的吊销可能有多种原因。例如,证书可能会被吊销,因为与该证书相关联的加密专用材料已经公开。
尽管区块链网络不仅仅是一个通信网络,但它依赖PKI标准来确保各种网络参与者之间的安全通信,并确保发布在区块链上的消息得到正确的身份验证。因此,了解PKI的基本原理以及为什么MSP如此重要是很重要的。
归纳来看,PKI有四个关键要素:
- 数字证书
- 公钥和私钥
- 证书颁发机构
- 证书吊销列表
下面,让我们快速介绍一下这些PKI基础知识。不过,如果你想了解更多相关细节的话,维基百科是一个很好的起点。
数字证书¶
数字证书是一种文档,它包含与证书持有人相关的一组属性。最常见的证书类型是符合X.509标准的证书,该标准允许在其结构中对一方的识别细节进行编码。
例如,密歇根州底特律市Mitchell Cars制造部门的玛丽·莫里斯可能拥有一个数字证书,其主题属性为C=US,ST=Michigan,L=Detroit,O=Mitchell Cars,OU=Manufacturing,CN=Mary Morris/UD=123456。玛丽的证书类似于她的政府身份证——它提供了玛丽的信息,她可以用这些信息来证明她的关键事实。X.509证书中还有许多其他属性,但现在我们只关注这些属性。
上图描述了一个叫玛丽·莫里斯的当事人的数字证书。玛丽是证书的主题,突出显示的主题文本显示了关于玛丽的关键事实。正如您所看到的,证书还包含更多的信息。最重要的是,玛丽的公钥是在她的证书中分发的,而她的私人签名密钥则不是。此签名密钥必须是私有的。
重要的是,玛丽的所有属性都可以使用一种名为密码学(字面意思是“秘密书写”)的数学技术来记录,这样篡改就会使证书无效。只要另一方信任证书颁发者,即证书颁发机构(CA),密码学允许玛丽向他人出示她的证书以证明她的身份。只要CA安全地保存某些加密信息(即其自己的私人签名密钥),那么任何阅读证书的人都可以确保有关玛丽的信息没有被篡改——它将始终具有玛丽·莫里斯的特定属性。把玛丽的X.509证书想象成一张无法更改的数字身份证。
身份验证、公钥和私钥¶
身份验证和消息完整性是安全通信中的重要概念。身份验证要求交换消息的各方确信创建特定消息的身份。消息具有“完整性”意味着在传输过程中无法修改。例如,你可能想确保你与真实的玛丽·莫里斯交流,而不是与一个模仿者交流。或者,如果玛丽给你发了一条信息,你可能需要确保这条信息在传输过程中没有被其他人篡改。
传统的身份验证机制依赖于数字签名,顾名思义,数字签名允许一方对其信息进行数字签名。数字签名还为签名消息的完整性提供了保证。
从技术上讲,数字签名机制要求各方持有两个加密连接的密钥:一个是广泛可用的公钥,用作身份验证锚,另一个是用于在消息上生成数字签名的私钥。数字签名邮件的收件人可以通过检查所附签名在预期发件人的公钥下是否有效来验证收到邮件的来源和完整性。
私钥和各自公钥之间的独特关系是使安全通信成为可能的密码魔法。密钥之间的唯一数学关系是,私钥可以用于在只有相应公钥才能匹配的消息上生成签名,并且只能在同一消息上生成。
在上面的示例中,玛丽·莫里斯使用她的私钥对消息进行签名。任何看到签名消息的人都可以使用她的公钥验证签名。
证书颁发机构¶
正如你所看到的,参与者或节点能够通过系统信任的机构为其颁发的数字身份参与区块链网络。在最常见的情况下,数字身份(或简称身份)具有符合X.509标准的加密验证数字证书的形式,由证书颁发机构(CA)颁发。
CA是互联网安全协议的常见组成部分,你可能听说过一些更受欢迎的协议:赛门铁克(最初是Verisign)、GeoTrust、DigiCert、GoDaddy和Comodo等。
证书颁发机构将证书分配给不同的参与者。这些证书由CA进行数字签名,并将参与者与参与者的公钥(以及可选的全面属性列表)绑定在一起。因此,如果信任CA(并知道其公钥),则可以通过验证参与者证书上的CA签名来信任特定参与者绑定到证书中包含的公钥,并拥有包含的属性。
证书可以广泛传播,因为它们既不包括参与者的私钥,也不包括CA的私钥。因此,它们可以用作验证来自不同参与者的消息的信任锚。
CA还有一个证书,可以广泛使用。这允许给定CA颁发的身份的使用者通过检查证书是否只能由相应私钥(CA)的持有者生成来验证他们。
在区块链环境中,每个希望与网络互动的参与者都需要一个身份。在这种设置中,您可以说一个或多个CA可以用于从数字角度定义组织的成员。CA为组织的参与者提供了可验证的数字身份的基础。
根CA、中间CA和信任链¶
CA有两种类型:根CA和中间CA。由于根CA(赛门铁克、Geotrust等)必须向互联网用户安全地分发数亿证书,因此将这一过程分散到所谓的中间CA中是有意义的。这些中间CA的证书由根CA或另一个中间机构颁发,允许为链中任何CA颁发的任何证书建立“信任链”。这种追溯到根CA的能力不仅允许CA的功能扩展,同时仍然提供安全性——允许使用证书的组织放心地使用中间CA——还限制了根CA的暴露;如果泄露,将危及整个信任链。另一方面,如果中间CA受到损害,则暴露的风险会小得多。
在根CA和一组中间CA之间建立信任链,只要这些中间CA中每一个的证书的颁发CA是根CA本身或对根CA具有信任链。
当涉及到在多个组织之间颁发证书时,中间CA提供了巨大的灵活性,这在许可的区块链系统(如Fabric)中非常有帮助。例如,您会看到不同的组织可能使用不同的根CA,或者同一根CA使用不同的中间CA——这确实取决于网络的需求。
Fabric CA¶
因为CA非常重要,所以Fabric提供了一个内置的CA组件,允许您在您组建的区块链网络中创建CA。该组件被称为Fabric CA,是一个私有的根CA提供商,能够管理具有X.509证书形式的Fabric参与者的数字身份。由于Fabric CA是一种针对Fabric的根CA需求的自定义CA,因此它本质上无法为浏览器中的常规/自动使用提供SSL证书。但是,由于某些CA必须用于管理身份(即使在测试环境中也是如此),因此Fabric CA可以用于提供和管理证书。使用公共/商业根或中间CA来提供标识也是可能的,也是完全合适的。
如果您感兴趣,可以在官方CA文档部分阅读更多关于Fabric CA的内容。
证书吊销列表¶
证书吊销列表(Certificate Revocation List:CRL)很容易理解——它只是CA知道由于某种原因被吊销的证书的引用列表。如果你还记得商店的示例场景,CRL就像一个被盗信用卡的列表。
当第三方想要验证另一方的身份时,它首先检查颁发CA的CRL,以确保证书没有被吊销。验证者不必检查CRL。但如果不检查,他们就有接受受损身份的风险。
使用CRL检查证书是否仍然有效。如果模仿者试图将受损的数字证书传递给验证方,可以首先根据颁发CA的CRL对其进行检查,以确保它没有被列为不再有效。
请注意,被吊销的证书与即将过期的证书非常不同。被吊销的证书没有过期——从其他方面来看,它们是完全有效的证书。
有关CRL的更多深入信息,请单击此处。
现在,您已经了解了PKI如何通过信任链提供可验证的身份,下一步是了解如何使用这些身份来表示区块链网络的受信任成员。这就是会员服务提供商(MSP)发挥作用的地方——它识别区块链网络中特定组织的成员。
要了解更多关于会员资格的信息,请查看MSP的概念文档。