Hyperledger Fabric中的Identity

Hyperledger Fabric中的Identity

什么是Identity

区块链网络中存在如下的角色:peers, orderers, client application, administrators等等。每一个这样的角色都有一个身份标识(Identity),该身份标识是通过X.509 数字证书来表示的。这些身份标识决定了该角色的对区块链网络上资源的权限,比如是否有权限访问区块链上的某种信息。

数字身份有很多附加属性,供fabric来判断权限。数字身份给出了一个身份的组合结构,与之相关的属性称之为principal。Principals 就像用户ID或者是群组ID,但是更加复杂,因为principal中包含了该角色的一系列属性信息。当我们谈论principal的时候,就是在说觉得角色权限的各种属性信息。

为了保证身份(identity)是可以被验证的,Identity必须来自于一个受信任的颁发机构。在Fabric中,这是通过membership service provider (MSP) 来实现的。MSP是Fabric中的一个组件,它定义了管理有效identity的规则。Fabric中默认的MSP实现是使用X.509证书作为identity,采用传统的PKI(Public Key Infrastructure )结构模型。

说明Identity使用的简单场景

假设你正在逛超市买东西,在买单时发现收银台只支持银联和visa的银行卡。这时如果你想使用一张不属于银联和visa的卡来支付,无论你的卡中是否有足够的余额,这都是不被收银员接受的。

有一张有效的信用卡是不够的,还需要被超市所支持。PKI和MSP以相同的方式运作,PKI提供了一系列identity,而MSP来指明哪一个identity才是区块链网络的参与者。

PKI证书颁发和MSP提供了相似的功能,PKI就像一个银行卡发行机构,它分发很多不同类型的可以验证的Identity。MSP就像被超市所接受的银行卡,决定哪些Identity是可以信任的区块链网络成员。MSP讲可验证的Identity转化为区块链网络的成员。

什么是PKI

A public key infrastructure (PKI)是一组提供网络通讯安全的信息技术。https中的"s"字母就是由PKI来实现的,在传统的http上加入PKI技术来实现网络通信安全。

PKI由Certificate Authorities(CA) 组成,它向各方(例如,服务的用户、服务提供者)颁发数字证书,然后使用它们在与环境交换的消息中进行身份验证。一个Certificate Revocation List (CRL) 中包含了那些已经失效的证书的引用。证书可以被撤销,比如当一个与证书关联的私有加密材料泄露时,该证书应该被撤销。

尽管区块链不仅仅是一个通讯网络,但是它也是依赖于PKI来实现在网络参与者之间的安全通讯的。理解基本的PKI与MSP,对于理解区块链中消息的传输是十分重要的。

PKI有一下四个关键元素:

  • Digital Certificate 数字证书
  • Public and Private Keys 公钥、私钥
  • Certificate Authorities 证书颁发机构
  • Certificate Revocation List 证书撤销列表

关于PKI的介绍可以看看Wikipedia的PKI词条。

Digital Certificates 数字证书

数字证书是有个文档,其中包含了一系列证书中包含的属性。最常见的数字证书类型是符合X.509标准的证书,该标准允许在其结构中编码identity细节。

比如说,位于底特律的某个汽车制造厂家可能在其数字证书中会包含诸如地点、行业、UID等一系列信息。数字证书就像身份证一样,记录了所有者的关键信息。在X.509证书中,有许多属性信息,我们仅仅看一下如下图所示的几个。

上图这个数字证书描述了一个名为Mary Morris的组织,Mary是证书的所有者(主人),黑色加粗的一行文字描述了Mary的关键信息。该证书也描述了很多其他信息。更重要的是,Mary的公钥是随着证书分发的,而私钥却不是。

Mary的所有属性都可以用密码学加密记录,以防止被篡改。加密学允许Mary提供他的数字证书给其他人验证他的身份,只要其他人相信证书的颁发机构(CA)。只要CA保证这种加密信息的安全,任何读取该证书的人都可以确信Mary的信息没有被篡改过。可以将Mary的X.509证书看做是不会被篡改的数字身份。

Authentication, Public keys, and Private Keys

在安全通讯中,身份认证和消息完整性是两个很重要的概念。身份认证是说消息交换的双方知道是哪个发来的消息。而消息完整性是说,消息在传输过程中没有被破坏。比如说,你会去确认跟你交易的是否就是Mary而不是张三。Mary发给你一个信息,你想确认信息在传输中没有被张三更改。

传统的认证机制是基于数字签名的,允许用户对消息进行数字签名。数字签名也可以保证签名消息的完整性。

技术角度来看,数字签名需要各方都持有两个加密秘钥: 一个是公钥,可以广泛使用并朝哪个档身份验证锚;另一个是私钥,用于在消息上生成数字签名。数字签名的接受方可以通过检查其附属签名在于其发送方的公钥下是否有效来验证消息的来源和完整性。

私钥与公钥关系的唯一性使得加密的消息安全传输成为可能。唯一性的数学关系是这样的,私钥可以用来在消息上产生只符合特定公钥的签名,而且只在该消息上符合。

Certificate Authorities

一个节点加入区块链网络是通过节点从一个受信任的机构那里获取一个数字身份来达到的。在多数情况下,数字身份是以加密的数字证书(X.509)表示,该证书由Certificate Authorities(CA)所颁发。

CA是网络安全协议的一部分,你可能听过一些,比如:Symantec (originally Verisign), GeoTrust, DigiCert, GoDaddy, and Comodo等等。

CA向不同的角色分发证书,证书是被CA数字签名的,并与角色通过公钥绑定在一起的。因此,一个人如果信任CA(知道CA的public key),那么他就可以信任与该公钥绑定的角色。

证书可以被广泛的传播,因为证书中不包含角色或者是CA的私钥。

CA也有证书,它们可以广泛地提供证书。这允许给定CA颁发的标识的使用者通过检查证书是否只能由相应的私钥(CA)的持有者生成来验证它们。

在区块链网络中,每个角色如果想与网络中互动,都需要一个数字身份。您可能会说,可以使用一个或多个CA从数字的角度定义组织的成员。它是为组织的参与者提供可验证的数字身份的基础的CA。

Root CAs, Intermediate CAs and Chains of Trust

CA可以分为两种:Root CA和Intermediate CA。因为Root CAs (Symantec, Geotrust等)必须安全地向网络用户分发数以亿计的证书,所以将这个过程扩展到所谓的 Intermediate CA是有意义的。这些Intermediate CA由 Root CA或其他中介机构颁发证书,允许为链中的任何CA颁发的任何证书建立“信任链”。这种可以追踪回Root CA的能力,不仅让CA在提供安全的功能的同时进行扩展(这种方式允许组织受信任地使用Intermediate CA),而且CA链也避免了Root CA的泄露,ROOT CA泄露会危及整个链的信任。另一方面,如果一个中间CA被破坏了,暴露量就会小得多。

如上图所示,信任链是通过一个ROOT CA和一系列intermediate CA来建立的。每个CA都可以签署新的CA来构成信任链的一部分。

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

Fabric CA

CA太重要了,所以在Fabric中提供了一个内建的CA组件,以在区块链中创建CA。这个组件就是Fabric CA,这是一个私有的Root CA提供者,可以用来管理网络成员的数字身份(通过X.509证书)。因为Fabric CA是针对Fabric的根CA需求的定制CA,所以它本质上不能为浏览器中的通用/自动使用提供SSL证书。但是,由于某些CA必须用于管理标识(甚至在测试环境中),所以Fabric CA可以用于提供和管理证书。

Certificate Revocation Lists

Certificate Revocation Lists(CRL)很容易理解,他就是一系列已经被撤销的证书的引用。

如果一个第三方想去验证另一方的身份时,他首先会检查CA中的CRL是否有该证书,已确认该证书没有被撤销。

原文地址:https://www.cnblogs.com/gexin/p/9231630.html

时间: 2024-10-09 19:42:03

Hyperledger Fabric中的Identity的相关文章

在HyperLedger Fabric中启用CouchDB作为State Database

回顾一下我之前的一篇博客,在Fabric 1.0中,我们存在3种类型的数据存储,一种是基于文件系统的区块链数据,这个跟比特币很像,比特币也是文件形式存储的.Fabric1.0中的区块链存储了Transaction订单读写集.而读写集到底是读什么?写什么?其实就是我们的State Database,也叫做World State,里面以键值对的方式存储了我们在ChainCode中操作的业务数据.另外还有就是对历史数据和区块链索引的数据库. 区块链是文件系统,这个目前不支持更改,历史数据和区块链的索引

HyperLedger Fabric中fabric-samples 安装

官网文档:https://hyperledger-fabric.readthedocs.io/en/release-1.0/samples.html 版本:v1.0 1.下载fabric-samples 选择文件位置,下载fabric-samples git clone https://github.com/hyperledger/fabric-samples.git cd fabric-samples 2.下载Platform-specific Binaries 官方文档指导方式为: curl

Hyperledger Fabric 1.0 从零开始(四)——Fabric源码及镜像文件处理

2:Fabric源码及镜像文件处理 2.1下载Fabric源码 下载Fabric源码是因为要用到源码中提到的列子和工具,工具编译需要用到go语言环境,因此需要把源码目录放到$GOPATH下.通过1.3中go的安装配置,$GOPATH设置为/opt/gopath. 我们可以使用Git命令下载源码,也可以使用go get命令,偷懒一点,我们直接用go get命令获取最新的Fabric源码: go get github.com/hyperledger/fabric [注:使用离线环境或者内网环境的朋友

Hyperledger Fabric 账本结构解析

前言 现在很多人都在从事区块链方面的研究,作者也一直在基于Hyperledger Fabric做一些开发工作.为了方便后来人更快的入门,本着"开源"的精神,在本文中向大家讲解一下Hyperledger Fabric账本的结构和原理.作者解析的Fabric的工程版本为v1.0.1,在新版本中可能会有些许偏差. ps:作者默认各位读者已经具备了一定的区块链基本知识,不再做一些基础知识的阐述. Hyperledger Fabric账本的结构 在作者最初了解bitcoin的时候有一个疑问:矿工

HyperLedger Fabric 学习思路分享

HyperLedger Fabric 学习思路分享 HyperLedger Fabric最初是由Digital Asset和IBM公司贡献的.由Linux基金会主办的一个超级账本项目,它是一个目前非常流行并广为人知的区块链网络框架的实现方案.作为一种基于模块化架构开发应用程序或解决方案的基础,HyperLedger Fabric支持如共识和会员服务等即插即用的组件,它的设计初衷是支持不同组件的可插拔实现,并适应整个经济生态系统的复杂性和高精度性.HyperLedger Fabric利用容器技术运

hyperledger fabric 结构模型学习

1.hyperledger fabric1.1.0 主要包含以下几个结构模型,Assets(资产),Chaincode(链码),Ledger Features(总帐功能),Privacy through Channels(渠道隐私),Security & Membership Services (安全和会员服务),Consensus(共识) 2.Assets(资产):资产可以从有形资产(房地产和硬件)到无形资产(合同和知识产权).hyperledger fabric提供了使用链式事务修改资产的能

Hyperledger Fabric on SAP Cloud Platform

今天的文章来自Wen Aviva, 坐Jerry面对面的程序媛. Jerry在之前的公众号文章<在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图>已经介绍过Aviva了,SAP成都C4C开发团队中其他同事评价她为:"美腻与智慧的化身","云时代女王","是大家前沿技术的引路人".因为Jerry和Aviva就在一个组,所以我的看法是,这些评价都实至名归. 比如Jerry了解到的Javascript 3D渲染,增强现

Hyperledger fabric 1.3版本的安装部署(原创多机多Orderer部署

首先,我们在安装前,要考虑一个问题 Hyperledger Fabric,通过指定的节点进行背书授权,才能完成交易的存储 延伸开来,就是为了实现容错.高并发.易扩展,需要zookeeper来选择排序引擎处理记账的唯一性 我们这里选择kafka排序引擎并通过Kafka集群和zookeeper集群保证数据的一致性,实现排序功能 同时,为了排序服务器的稳定,采取多Orderer集群实现容错空间, 为此,我们采用了最基础的配置方案:两个组织,四个节点 两个CA服务器,三个Zookeeper服务器,四个K

在Ubuntu中部署并测试HyperLedger Fabric

最近开始研究区块链,对这个新兴的技术有了基本概念上的了解,所以打算基于一个开源项目做做实验.如果是做数字货币,那么比特币的源代码是最好的了,不过这算是区块链1.0吧,已经有很多改进的竞争币和山寨币出来了,所以打算对区块链2.0,也就是智能合约入手. 智能合约比较成功的就是以太坊了.以太坊主要是公有链,其实对企业应用来说并不是特别合适,而且本身并没有权限控制功能,面向企业的,主要还是超级账本HyperLedger的Fabric和刚刚开源出来的R3的Corda.关于这些项目的应用场景和区别,我觉得这