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是否有该证书,已确认该证书没有被撤销。
Hyperledger Fabric中的Identity的更多相关文章
- 在HyperLedger Fabric中启用CouchDB作为State Database
回顾一下我之前的一篇博客,在Fabric 1.0中,我们存在3种类型的数据存储,一种是基于文件系统的区块链数据,这个跟比特币很像,比特币也是文件形式存储的.Fabric1.0中的区块链存储了Trans ...
- Hyperledger Fabric 中channel配置相关数据结构
channel Configuration Transaction Hyperledger Fabric区块链网络中的配置存储在一个configuration-transaction的集合中,每个ch ...
- hyperledger fabric 中java chaincode 支持离线打包
联盟链由于其本身的特性,目前应用在一些大型国有企业银行比较多.出于安全考虑,这些企业一般会隔离外网环境.所以在实际生产需求中可能存在需要在一个离线的环境中打包安装chaincode的情况. 本文基于这 ...
- 第6章 Hyperledger Fabric模型
This section outlines the key design features woven into Hyperledger Fabric that fulfill its promise ...
- Hyperledger Fabric -- gossip 协议
Hyperledger gossip 本文记述了Hyperledger Fabric 中 一种网络数据同步协议--gossip,它的主要作用是致力于账本数据的安全传输,保证不同节点之间状态的同步和 ...
- Hyperledger Fabric 1.2 --- Chaincode Operator 解读和测试(一)
前言 本文主要目的是用于整理Hyperledger Fabric中关于chaincode 管理和操作的内容,作者以release-1.2为范本进行讲解. 主要参考链接: https://hyperl ...
- Hyperledger Fabric 1.0 从零开始(四)——Fabric源码及镜像文件处理
2:Fabric源码及镜像文件处理 2.1下载Fabric源码 下载Fabric源码是因为要用到源码中提到的列子和工具,工具编译需要用到go语言环境,因此需要把源码目录放到$GOPATH下.通过1.3 ...
- Hyperledger Fabric Model——超级账本组成模型
超级账本组成模型 本文主要讲述Hyperledger Fabric的关键设计特性,并细述如何实现了一个全面的.可定制的企业级区块链解决方案: 资产定义--资产这里理解为任何具有货币价值的东西,它们都可 ...
- Hyperledger Fabric Membership Service Providers (MSP)——成员服务
Membership Service Providers (MSP) 本文将介绍有关MSPs的设置和最佳实践的详细方案. Membership Service Providers (MSP)是一个旨在 ...
随机推荐
- sqlplus连接半天才连上
问题现象: 某oracle数据库服务器发现使用ssh,crt连接半天1-2分钟后才返回输入密码的提示,应用人员发现使用 sys_GUID()函数获取唯一值的时候,第一次调用需要等待很长时间,但是同一s ...
- Web—13-判断网站请求来自手机还是pc浏览器
判断网站请求来自手机还是pc浏览器 #判断网站来自mobile还是pc def checkMobile(request): """ demo : @app.route(' ...
- dispatch 之 常见函数小结
你好2019!一起努力呀! 直奔主题 1.dispatch_barrier_async VS dispatch_barrier_sync Barrier blocks only behave spe ...
- OO 第五、六、七次作业总结
第五次作业 算法与实现 这次的电梯因为要使用系统时间进行模拟,所以又是推倒了之前的重写的.最后采用三个电梯线程,一个调度线程,一个输入线程的方式. 源码分析图示 类图 方法分析 类分析 由上图看,由于 ...
- C++练习 | 在递增序列中查找最后一个小于等于指定数的元素
#include <iostream> using namespace std; int mid,l0; int solve(int a1[],int l,int r,int x) { & ...
- MySQL+Service+Servlet+Jsp实现Table表格分页展示数据
下面以一个示例讲解如何使用MySQL+Service+Servlet+Jsp实现Table表格分页展示数据: eg:请假管理系统 要求如下: 一.打开首页页面, 访问查询请假记录的 servlet , ...
- Python - 魔法字符串
''' #capitalize() ---首字母转换为大写--- s="sslssd" v=s.capitalize(); print(v) ''' ''' #center(20, ...
- Hadoop系列-HDFS基础
基本原理 HDFS(Hadoop Distributed File System)是Hadoop的一个基础的分布式文件系统,这个分布式的概念主要体现在两个地方: 数据分块存储在多台主机 数据块采取冗余 ...
- 与虚拟机和linux的初次接触
初次接触虚拟机 根据老师所给的资源和教程,虚拟机安装的过程十分顺利. 接下来是在虚拟机上安装linux操作系统我下载了破解版的Ubuntu,也是十分顺利 接下来就是安装虚拟机增强功能,命令有些繁琐,在 ...
- 20155236 《信息安全概论》实验二(Windows系统口令破解)实验报告
20155236 <信息安全概论>实验二(Windows系统口令破解)实验报告 北京电子科技学院(BESTI) 实验报告 课程:信息安全概论 班级:1552 姓名:范晨歌 学号:20155 ...