1、什么是Identity

区块链网络中的不同实体有peers、orderers、client applications、administrators等等。

这些实体都有一个X.509的数字证书。

这些身份的认证十分重要,它决定了区块链网络上资源以及信息是否对这些实体有相应权限。


数字的identity还有一些附加的属性信息,被Fabric用来确定权限,Fabric将这个数字的identity和它附加的属性命名为principal。

Principals就像用户ID或组织ID,但是要更复杂,因为它包含一个实体identity的大范围的属性信息,例如组织、OU(organization unit),角色甚至是这个实体特有的identity。

当我们说起principals时,他们表示完全确定他们权限的一些属性信息。


为了identity的可信性(可验证性),它必须来自于一个可信的认证。在Fabric中,membership service provider(MSP)来实现这个目的。

具体的说,MSP是一个组件,它定义了管理这个组织内有效identities的规则。Fabric中的默认MSP使用X.509证书作为identities,采用传统的公共密钥基础结构(PKI)层次模型。


2、Identity用法简单场景

假设你去超市买一些杂货。

在结账时,你发现有提示只接受Vis、AMEX类型的卡。如果你使用其他类型的卡,不管这个卡是否真实、是否资金充足,它都不会被接受。

仅仅有有效的卡时不够的,它还必须被超市认可。


PKI和MSP的工作方式和此场景类似,PKI提供一组identities,MSP会辨别这些identities中的哪些是属于可接受的组织的(可接受的组织,即参加到网络中的组织)。

PKI就像是卡片的发行商,它发放许多不同类型的、可验证的identities。

MSP,像是被超市认可的卡片发行商列表,它决定了哪些identities是可信的。

MSPs将认可的identites转换为区块链网络的成员。

3、什么是PKI

Public key infrastrucure(PKI)是在网络中提供安全通信的Internet技术的集合。

HyperLedger Fabric依赖于PKI标准来确保各种网络参与者之间的安全通信,并确保正确认证在区块链上发布的消息。

3.1、数字证书 digital certificates

数字证书是一个文件,它保存了证书持有者的相关属性信息。

这个证书使用了数学加密技术,篡改这个文件会使之失效。

只要对方信任这个证书文件的颁发者(或者颁发机构,也就是CA),那么证书持有者就可以出示证书来证明自己的身份。

3.2、公钥和私钥 public and private keys

在安全信息交流方面,认证和信息完整性是十分重要的。

认证,需要交换信息的参与方确定彼此的身份;

信息完整性则是表示信息在传递过程中不能被篡改。


传统的认证机制依赖于数字证书,数字证书也可以为签名信息提供完整性保证。

技术上来讲,数字签名技术需要参与者持有两个密码学密钥,public key ,是广泛可用的,用作认证扫描;private key,用于生成数字签名。接收到被数字签名过的信息的人可以通过使用public key检查附加的数字签名来验证信息的来源和完整性。


私钥和相应的公钥之间的独特关系是使安全通信成为可能的关键。

这个独特关系是这样的:私钥可以为一个消息生成数字签名,只有相对应的公钥才可以对这个相同的消息进行处理。

3.3、证书颁发机构 CA

在区块链网络中,每一个想要加入的实体需要由identity。CA为组织参与者具有可验证的数字身份提供了基础。

3.4、证书吊销列表 Certificate Revocation Lists