Hyperledger Fabric身份

参考资料:官方文档——身份

什么是身份

区块链网络中的不同参与者包括 Peer 节点、排序节点、客户端应用程序、管理员等等,这些参与者都一个封装在 X.509 数字证书中的数字身份。这些身份决定了参与者在区块链网络中对资源的确切权限和对信息的访问权限

数字身份还有一些额外的属性,Fabric 使用这些属性来确定权限,并为身份和相关属性的联合提供了一个特殊的名称——主体。主体与 userid 或 groupid 类似,但是更加灵活,因为它们可以包含参与者身份的广泛属性,比如参与者的组织、组织单元、角色,甚至是参与者的特定身份。当我们讨论主体时,它们是决定其权限的属性。

要使身份可验证,它必须来自受信的权威机构。成员服务提供者(MSP)就是Fabric中的受信机构。更具体地说,MSP 是一个为组织定义有效身份管理规则的组件。Fabric 中的默认 MSP 实现使用 X.509 证书作为身份,采用了传统公钥基础设施(PKI)层次模型

PKI 证书授权中心提供许多不同类型的可验证身份,MSP 确定哪些身份是区块链网络被认可的参与者。

MSP 将可验证的身份转换为区块链网络的成员

在本文中,将会主要解释 PKI 相关的概念,在之后的文章将会解释成员服务提供者 MSP 的相关内容。

什么是PKI

公钥基础设施(Public Key Infrastructure,PKI)是一组互联网技术,它在网络中提供安全的通信。将 S 放入 HTTP 变成 HTTPS 的是 PKI。

PKI 由证书授权中心(Certificate Authority,CA)组成。这些 CA 向各方(例如服务的用户、服务提供者)颁发数字证书,然后在与环境交换的消息中使用这些证书对自己进行身份验证。CA 的证书撤销列表(Certificate Revocation List)构成不再有效的证书的引用。撤销证书的原因有很多。例如,因为与证书关联的加密私有材料被公开,证书可能会被吊销。

虽然区块链网络不仅仅是一个通信网络,它还依赖 PKI 标准来确保各个网络参与者之间的安全通信,并确保在区块链上发布的消息得到正确的身份验证。

PKI 有四个基本要素

  • 数字证书
  • 公钥和私钥
  • 证书授权中心
  • 证书撤销列表

数字证书

数字证书是包含一组与证书持有者相关的属性的文档。最常见的证书类型是符合 X.509 标准的证书,该标准允许在其结构中编码某参与方的身份细节。

一个大致的客户端服务器通信过程如下:

  1. 服务端运营人员向 CA 提出公开秘钥的申请
  2. CA 在判明申请者的身份之后,CA 会用自己的私钥已申请的公开秘钥做数字签名,CA 的公钥是服务端与客户端都知道的,然后CA将这个签名的公开秘钥放入数字证书分配个服务器申请者。这一步即 CA 向服务端颁发数字证书,数字证书中包含了服务端的身份信息以及服务端的公钥信息(被 CA 的私钥签名,可以用 CA 的公钥来验证)
  3. 服务端会把这个由 CA 颁发的数字证书(里面包含了服务端的公钥)发送给客户端,以此来和客户端通信
  4. 接收到证书的客户端可以使用 CA 的公钥来数字证书上的签名进行认证,一旦认证通过,客户端就可以知道认证服务端公钥的是真实有效的 CA,并且服务端的公钥信息是值得信赖的。这样就验证了服务端的身份信息

认证,公钥和私钥

传统的身份认证机制依赖于数字签名,就是允许一方对其消息进行数字签名。数字签名还为签名消息的完整性提供了保证,可以通过验证签名来验证消息是否被篡改过。

数字签名机制要求每一方都持有两个加密连接的密钥:

  • 一个公开密钥
  • 一个私有密钥

公开密钥高度可获取,充当身份验证锚;私有密钥用于在消息上生成数字签名。数字签名消息的接收方可以通过检查消息中的附加签名在预期发送方的公钥下是否有效来验证所接收消息的来源和完整性。

私钥与其对应公钥之间的独特关系是使安全通信成为可能的密码术。密钥之间独特的数学关系在于私钥可用于对消息生成签名,只有对应的公钥能够、且仅能在相同消息上与之匹配。

当消息通信的一方使用私钥对消息进行签名之后,任何使用该方对应的公钥查看此签名消息的人都可以验证该签名。

证书授权

参与者或节点可以通过数字身份的方式参与区块链网络,该数字身份是由系统信任的机构(证书授权中心 CA )为其颁布的。多数情况下,数字身份具有密码验证的数字证书形式,符合 X.509 标准,由 CA 颁发。

证书授权中心将证书颁发给不同的参与者。这些证书由 CA 进行数字签名,证书把参与者与其公钥绑定在一起(也可以和一整套属性绑定)。因此,如果一方信任 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。

当涉及到跨多个组织颁发证书时,中间 CA 提供了巨大的灵活性,这在许可区块链系统(如 Fabric)中非常有用。例如,不同的组织可能使用不同的根 CA,或者使用相同的根 CA 和不同的中间 CA——这完全取决于网络的需要。

证书撤销列表

证书撤销列表(Certificate Revocation List, CRL)很容易理解——它就是一个证书的参照列表,有了它,CA 就知道列表上的这些证书是因为这样或那样的原因被撤销了的。

当第三方想要验证另一方的身份时,它首先会检查颁发其证书的 CA 的 CRL,以确保该证书未被撤销。验证者不是必须要检查 CRL,但是如果他们不检查 ,就将冒着接受被盗身份的风险。

如果虚假身份者试图将一个已受损的数字证书传递给验证方,可以根据证书颁发CA 的 CRL 检查它,以确保它未被列为不再有效。

注意,被撤销的证书与到期的证书相差甚远。被撤销的证书还没有过期——按其他任何标准衡量,它们都是完全有效的证书。

你可能感兴趣的:(Fabric1.4学习)