Hyperledger Fabric 专题 - Identity
1. 身份识别 (Identity) 概述
区块链网络中的不同参与者包括对端节点 (peer),交易排序器 (orderer),客户端应用程序,管理员等。这些参与者 (网络内部或外部能够使用服务的活动元素) 中的每一个都有封装在 X.509 数字证书 (X.509 digital certificate) 中的数字身份 (digital identity)。这些身份确实很重要,因为它们确定了对资源的确切权限以及对参与者在区块链网络中拥有的信息的访问权限。
数字身份还具有一些其他属性,Fabric 可使用这些属性来确定权限,并且 Fabric 为身份和关联的属性的并集定义了特殊名称-主体 (principal)。主体就像用户 ID (userID) 或组 ID (groupID) 一样,但是更加灵活,因为主体可以包含参与者身份的各种属性,例如参与者的组织,组织单位,角色,甚至参与者的特定身份。当我们谈论主体时,它们是确定其权限的属性。
为了使身份可验证,它必须来自受信任的权威机构。成员资格服务提供商 (Membership Service Provider, MSP) 使得这些可以在 Fabric 中实现。更具体地说,MSP 是用于该组织定义管理有效身份规则的组件。 Fabric 中的默认 MSP 实现使用 X.509 证书作为身份标识,并采用传统的公共密钥基础结构 (Public Key Infrastructure, PKI) 层次模型。
2. 一个说明如何使用身份识别的简单场景
想象一下,你去一家超市买了一些杂货。在结帐时,你会看到一个标牌,上面只接受 Visa,Mastercard 和 AMEX 卡。如果你尝试使用其他卡付款 (我们称其为 "ImagineCard"),则该卡是否真实以及帐户中是否有足够的资金都无关紧要,因为它们都不会被接受。
拥有有效的信用卡是不够的 - 还必须要商店接受它! PKI 和 MSP 以相同的方式一起工作 - PKI 提供了一个身份列表,而 MSP 则表示网络中的哪些参与者是参给定组织的成员。
PKI 证书颁发机构和 MSP 提供了类似的功能组合。 PKI 就像卡提供商一样,它分配许多不同类型的可验证身份。另一方面,MSP 就像商店接受的卡提供商列表一样,确定哪些身份是商店支付网络的受信任成员 (参与者)。 MSP 将可验证的身份转换为区块链网络的成员。
PKI 介绍
PKI 有四个关键要素:
- 数字证书 (Digital Certificates)
- 公钥和私钥 (Public and Private Keys)
- 证书颁发机构 (Certificate Authorities)
- 证书吊销列表 (Certificate Revocation Lists)
关于 PKI 的详细介绍可以参考文档 What are PKIs?。
Fabric CA
因为 CA 非常重要,所以 Fabric 提供了内置的 CA 组件,可让你在自己构建的区块链网络中创建 CA。该组件 (称为 Fabric CA) 是私有的根 CA 提供者,能够管理具有 X.509 证书形式的 Fabric 参与者的数字身份。由于 Fabric CA 是针对 Fabric 的根 CA 需求的自定义 CA,因此它无法提供 SSL 证书供浏览器中的常规/自动使用。但是,由于必须使用某些 CA 来管理身份 (即使在测试环境中也是如此),因此可以将 Fabric CA 用于提供和管理证书。也可以 (并且完全合适) 使用公共/商业根或中间 CA 进行标识。
更详细的内容可以 参考 Fabric CA 文档。
既然你已经了解了 PKI 如何通过信任链提供可验证的身份,那么下一步就是了解如何使用这些身份来表示区块链网络的受信任成员。这就是会员服务提供商 (Membership Service Provider, MSP) 发挥作用的地方 - 它确定了在区块链网络中给定组织的成员的参与方。
更详细的内容可以 参考 MSP 文档
Reference
- Docs » Key Concepts » Identity, https://hyperledger-fabric.readthedocs.io/en/release-1.4/identity/identity.html
- Docs » Welcome to Hyperledger Fabric CA (Certificate Authority), https://hyperledger-fabric-ca.readthedocs.io/en/release-1.4/
- Docs » Key Concepts » Membership, https://hyperledger-fabric.readthedocs.io/en/release-1.4/membership/membership.html
项目源代码
项目源代码会逐步上传到 Github,地址为 https://github.com/windstamp。
Contributor
- Windstamp, https://github.com/windstamp
网友评论