一.Hyperledger Fabric介绍

2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术。
Hyperledger Fabric是Hyperledger中的一个区块链项目,包含一个账本,使用智能合约并且是一个通过所有参与者管理交易的系统。
Hyperledger Fabric 是分布式账本解决方案的平台,以模块化架构为基础,支持不同组件的可插拔。

具备以下特点
1. 高度保密性
2. 可伸缩性
3. 弹性
4. 可扩展性

二.基本概念

区块链

共享的、通过智能合约更新的多副本交易系统,并通过协作共识机制保持账本副本一致同步。

1.分布式账本

区块链网络的核心是一个分布式账本,它记录了网络上发生的所有交易。

特点

  1. 去中心化
  2. 网络中每个参与者都保存账本的副本
  3. 网络中每个参与者共同维护账本(协作)
  4. 信息只能以“附加”的方式记录在区块链中
  5. 使用加密技术保障交易一旦被添加进账本中,无法被篡改

2.智能合约

为了持续的进行信息的更新,以及对账本进行管理(写入交易,进行查询等),区块链网络引入了智能合约来实现对账本的访问和控制。

智能合约不仅仅可用于在区块链网络中打包信息,它们也可以被用于自动的执行由参与者定义的特定交易操作。

3.共识

保持网络中所有账本交易的同步流程,就是共识。确保账本仅在交易被适当的参与者批准时更新,并且当账本更新时,它们以相同的顺序更新相同的交易。


4.为什么区块链可行

当前记录系统区块链
无法统一管理参与者身份,确认源头费力各参与者都有账本副本
明确交易耗时长共享账本、共享更新账本流程
手工签订合约减少与私人信息及处理的时间、成本和风险
数据独立,易单点故障可见性高,信任度高

5.Hyperledger Fabric 中相关概念

Hyperledger Fabric 参与者需要认证许可。

1.成员管理 MSP(Membership Service Provider)

Membership Service Provider(MSP)用来登记所有的成员。
账本数据可被存储为多种格式,共识机制可被接入或者断开,同时支持多种不同的MSP。

2.通道 channel

参与者可以建立通道channel,同一个channel中的参与者,才会拥有该channel中的账本,而其他不在此channel中的参与者则看不到这个账本。

3.共享账本 Shared Ledger

共享账本包含世界状态(world state)和交易记录(transaction log)。在Hyperledger Fabric网络中的每一个参与者都拥有一个账本的副本。

1.世界状态组件描述了账本在特定时间点的状态,它是账本的数据库。
2.交易记录组件记录了产生世界状态当前值的所有交易,它是世界状态的更新历史。
3.账本则是世界状态数据库和交易历史记录的集合。

世界状态存储数据库【可插入】。默认是LevelDB一个key-value存储数据库。
交易记录模块【非可插入】。它只是记录在区块链网络中账本数据库被使用时之前和之后的值。

4.智能合约 Smart Contracts

智能合约被称为chaincode,当一个区块链外部的一个应用程序需要访问账本时,就会调用chaincode。大多数情况下,chaincode只会访问账本的数据库组件和世界状态(world state)(比如查询),但不会查询交易记录。

5.隐私 Privacy

隐私,根据网络的需求,在一个Business-to-Business(B2B)网络中的参与者会对信息共享的程度极为敏感。然而,对于其他的网络,隐私并不是首要考虑的因素。
Hyperledger Fabric支持构建隐私保护严格的网络,也支持构建相对开放的网络。

6.共识 Consensus

共识:可插拔,根据需求选择,目前支持SOLO,Kafka以及后续会添加的SBFT (Simplified Byzantine Fault Tolerance)。
交易必须按照它们发生的顺序写入分类帐,即使它们可能在网络内不同的参与者集之间。为此,必须建立交易顺序,并且必须采用一种方法来拒绝错误(或恶意)插入分类帐的不良交易。

三. 身份 Identity

区块链网络中的不同参与者包括对等点(peers)、订购者(orderers)、客户端应用程序(client applications, )、管理员(administrators)等。这些参与者中的每一个——能够使用服务的网络内部或外部的活动元素——都有一个封装在 X.509 数字证书中的数字身份。

作用:确定了对资源的确切权限以及参与者在区块链网络中拥有的信息的访问权限

数字身份还具有 Fabric 用来确定权限的一些附加属性。

1.主体(principal)

身份和相关属性的联合提供了一个特殊的名称。 像userID 或 groupID,但更灵活一些,因为它们可以包含参与者身份的广泛属性,例如参与者的组织、组织单位、角色甚至参与者的特定身份。

2.会员服务提供者( MSP)

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

3. 身份使用的场景


去超时结账假设只能用A信用卡、B信用卡(A、B为举例使用),那对于其他卡无论是否真实及其他卡是否有余额都无效。即便有了有效的信用卡还需要商店认可才能使用。
PKI 和 MSP 以相同的方式协同工作——PKI 提供身份列表,而 MSP 说明其中哪些是参与网络的给定组织的成员。
PKI 类似卡片提供商——它分发许多不同类型的可验证身份。(如发行A卡、B卡、C卡)
MSP 就像商店接受的卡提供商列表,确定哪些身份是商店支付网络的受信任成员(参与者)。MSP 将可验证的身份转变为区块链网络的成员。(如商店仅支持A卡、B卡)

四. PKI 公钥基础设施

是一组互联网技术,可在网络中提供安全通信。将S置于HTTPS中的是 PKI ,如果您在 Web 浏览器上打开的是https的链接,您可能正在使用 PKI 来确保它来自经过验证的来源。

公钥基础设施 (PKI) 的元素。PKI 由向各方(例如,服务的用户、服务提供商)颁发数字证书的证书颁发机构组成,然后他们使用它们在与环境交换的消息中对自己进行身份验证。
CA 的证书撤销列表 (CRL) 构成不再有效证书的参考。证书的吊销可能有多种原因。例如,证书可能会因为与证书相关联的加密私有材料已经暴露而被撤销。
区块链网络不仅仅是一个通信网络,它依赖于 PKI 标准来确保各种网络参与者之间的安全通信,并确保发布在区块链上的消息得到正确的身份验证。

1.PKI 四个关键要素

  1. 数字证书 (Digital Certificates)
  2. 公钥和私钥 (Public and Private Keys)
  3. 证书颁发机构 (Certificate Authorities)
  4. 证书吊销列表 (Certificate Revocation Lists)

1.数字证书(Digital Certificates)

数字证书是一种文档,其中包含与证书持有者相关的一组属性。最常见的证书类型是符合X.509 标准的证书,它允许在其结构中对一方的识别细节进行编码。

如看作Mary身份信息

  1. Subject包含了若干属性,另X.509 证书中还有其他属性。
  2. Mary 是SUBJECT证书的主人,突出显示的SUBJECT文本显示了关于 Mary 的关键事实。
  3. Mary的公钥在证书上显示,私钥没显示,私钥必须保密。
  4. 所有属性都可以使用称为密码学的数学技术记录下来,这样篡改就会使证书失效

Mary 的 X.509 证书可看成一张无法更改的数字身份证。

2.身份验证、公钥和私钥 (Authentication, Public keys, and Private Keys)

身份验证和消息完整性是安全通信中的重要概念。

  1. 身份验证要求交换消息的各方确信创建特定消息的身份。
  2. 消息具有“完整性”意味着在其传输过程中不能被修改。

传统的身份验证机制依赖于数字签名,顾名思义,数字签名允许一方对其消息进行数字签名。数字签名还为签名消息的完整性提供了保证。
从技术上讲,数字签名机制要求每一方持有两个加密连接的密钥:

  1. 一个广泛可用并充当身份验证锚的公钥,
  2. 一个用于在消息上生成数字签名的私钥 。

数字签名消息的接收者可以通过检查附加签名在预期发送者的公钥下是否有效,来验证接收消息的来源和完整性。
私钥和各自的公钥之间的独特关系是使安全通信成为可能的加密魔法。密钥之间独特的数学关系使得私钥可用于在消息上生成签名,只有相应的公钥才能匹配,并且只能在同一消息上。

Mary 使用她的私钥对消息进行签名。任何看到签名消息的人都可以使用她的公钥来验证签名。

3.证书颁发机构(Certificate Authorities)

通常数字身份 digital identity(或简称身份)具有符合 X.509 标准并由证书颁发机构 (CA) 颁发的经过加密验证的数字证书的形式。
常见安全协议:Symantec(最初是 Verisign)、GeoTrust、DigiCert、GoDaddy 和 Comodo 等。

证书颁发机构将证书分发给不同的参与者。这些证书由 CA 进行数字签名,并将参与者与参与者的公钥绑定在一起(以及可选的完整属性列表)。因此,如果一个人信任 CA(并且知道它的公钥),它可以相信特定参与者绑定到证书中包含的公钥,并拥有包含的属性,通过验证参与者证书上的 CA 签名。
证书可以广泛传播,因为它们既不包括参与者的私钥,也不包括 CA 的私钥。因此,它们可以用作信任锚,以验证来自不同参与者的消息。
CA 也有一个证书,它们可以广泛使用。这允许给定 CA 颁发的身份的消费者通过检查证书是否只能由相应私钥的持有者 (CA) 生成来验证他们。
在区块链环境中,每个希望与网络交互的参与者都需要一个身份。在这种情况下,您可能会说一个或多个 CA可用于从数字角度定义组织的成员。

1.根 CA、中间 CA 和信任链(Root CAs, Intermediate CAs and Chains of Trust)

CA 有两种形式:根 CA和中间CA。
由于根 CA(Symantec, Geotrust 等)必须将数亿个证书安全地分发给互联网用户,因此将这个过程分散到所谓的中间 CA上是有意义的。
这些中间 CA 的证书由根 CA 或其他中间机构颁发,允许为链中任何 CA 颁发的任何证书建立“信任链”。
这种追溯根 CA 的能力不仅允许 CA 的功能扩展,同时仍然提供安全性——允许使用证书的组织放心地使用中间 CA——它限制了根 CA 的暴露,如果受到损害,将危及整个信任链。另一方面,如果中间 CA 受到损害,则风险会小得多。

只要每个中间 CA 的证书的颁发 CA 是根 CA 本身或对根 CA 有信任链,就在根 CA 和一组中间 CA 之间建立信任链

2.Fabric CA

Fabric CA是一个私有根 CA 提供者,能够管理具有 X.509 证书形式的 Fabric 参与者的数字身份。
由于 Fabric CA 是针对 Fabric 根 CA 需求的自定义 CA,因此它本质上无法提供 SSL 证书以供浏览器中的一般或自动使用。但是,由于必须使用某些CA 来管理身份(即使在测试环境中),所以 Fabric CA 可用于提供和管理证书。使用公共/商业根或中间 CA 来提供标识也是可能的,而且是完全合适的。

4.证书吊销列表(Certificate Revocation Lists)

它只是对 CA 知道由于某种原因而被吊销的证书的引用列表。如CRL 就像一张被盗信用卡的列表。
当第三方想要验证另一方的身份时,它首先检查颁发 CA 的 CRL 以确保证书没有被吊销。
验证者不必检查 CRL,但如果他们不这样做,他们就会冒着接受受损身份的风险。

使用 CRL 检查证书是否仍然有效。如果冒名顶替者试图将受损的数字证书传递给验证方,则可以首先根据颁发 CA 的 CRL 检查它,以确保它没有被列为不再有效。
注意:被吊销的证书与即将到期的证书非常不同。吊销的证书尚未过期——从其他方面来看,它们是完全有效的证书。

五.会员资格 Membership

如何使用这些身份来代表区块链网络的受信任成员。
会员服务提供商 (MSP) ,它通过列出其成员的身份或通过识别来确定信任域的成员(例如组织),确定哪些根 CA 和中间 CA 是受信任的哪些 CA 被授权为其成员颁发有效身份,或者——通常情况下——通过两者的结合。