Fabric中的“账户”体系

2023-11-18

本文的联盟链是以Fabric为例。本文中transaction翻译成事务,而非交易。

联盟链相对于公链,最大的不同在于:联盟链上的数据不是对所有人都公开的,只有联盟内的成员才可以访问、写入链上数据。
第二个重要的区别:联盟链不发币,所以联盟链里的账户没有以太坊比特币那样的账户地址。Fabric的访问控制、权限控制等,是通过MSP(Membership Service Provider)提供。这套机制与公链常见的账户模型差别甚大。

本文探讨下Fabric中基于PKI的账户体系,此处假设读者已经对非对称加密有一定了解,并能够回答以下几个问题:

  1. 私钥/公钥啥意思?各自的作用?
  2. 签名与加密有何区别,又有何共性?
  3. 为何需要数字证书?

首先简单捋一下Fabric-CA、MSP、 PKI三者的关系。

PKI

PKI是什么:一套软硬件系统和安全策略的集合
PKI的作用:它提供了一整套安全机制,使数据可以安全地、不可抵赖地在互联网上发送与接收
PKI提供的功能

  • 密钥管理(密钥对的创建、备份、恢复)
  • 证书管理(证书的申请、颁发、吊销、验证)

PKI的结构
在这里插入图片描述
中间层为PKI应用提供各种服务,诸如证书申请、验证等操作。其中RA(注册机构)不是必需的,此时CA服务器负责提供绝大多数的业务功能。可见,CA是PKI体系中最重要的一个部分了。
中间层的详细结构如下图所示:

一句话总结:PKI是以非对称加密为基石,以证书为中心,以实现数据的安全传输(防泄露,防抵赖)为目标的一套基础设施,CA是该设施中最重要的一个组成部分。

关于PKI的详细信息,请看[这篇博文](https://blog.csdn.net/carolzhang8406/article/79458206

Fabric-CA

Fabric-CA是hyperledger下的一个项目,与Fabric属于同级的项目。旨在为基于Fabric的联盟链提供CA服务。负责为联盟链当中的各种角色(peer、orderer、client)颁发证书,提供身份认证,至于这个身份在联盟链中是何角色(Peer?Orderer?Client?)具有何种权限(是否可加入channel?是否能管理channel?),则由MSP负责。

https://blog.csdn.net/boss2967/article/details/83037332details/79458206),说的很详细。

MSP(Membership Service Provider)
  • MSP译为成员服务提供者,他是Fabric中的一个逻辑组件
  • 成员是指联盟链网络的参与者
  • 不同的成员拥有不同的角色、权限,MSP了负责权限管理。
  • 组织内受信任的RCA、ICA,由MSP负责定义

通过以上梳理,我们知道,MSP是“账户”体系的核心体现,接下来我们通过分析MSP来窥探Fabric的“账户”体系。

  • MSP有不同的级别:
  • Network MSP
  • Channel MSP
  • Local MSP
  • Peer MSP
  • Orderer MSP

Local MSP

  1. Local MSP是为客户端(用户)和节点(Peer、Orderer)而设计的。
  2. 节点的Local MSP可以定义用户对一个节点的访问权限,例如,定义哪个用户是peer Admin。
  3. 用户的Local MSP负责用户方在其事务中的身份验证。例如,在一个链码事务中的channel成员身份),在配置事务中的组织管理员身份,等等。
  4. 每一个节点、客户端,都必须定义一个Local MSP,因为它(local MSP)定义了角色在所在层级中的管理权和参与权。假如没有这个定义,节点、客户端将无法加入到联盟链网络。

Channel MSP
Channel MSP定义了Channel这个层级的管理权和参与权(也就是定义了谁能够管理该channel,谁能加入该channel)。如果一个组织希望加入channel,则需要在channel配置中添加该组织的MSP,否则该组织针对此channel的事务将会被拒绝。
另外,Channel MSP是在通道配置中进行逻辑定义,通过共识扩散到通道所有的成员,这一点不同于local MSP,它只在User或者peer的本地文件夹中。

以上将MSP分成了两大类:Local MSP 和 Channel MSP,还有一种分类方式:按照level进行分类,为何需要加一种分类方式呢?因为,在有些时候,同样是Local MSP,在网络中起到的作用是不一样的,看下面这张图:
在这里插入图片描述
右下角标红的部分,说明 ORG1.MSP不仅仅是一个Local MSP,它还管理着整个网络的配置——这跟同为Local MSP 的 ORG2.MSP是完全不同的级别

按照level分,MSP可以有以下几种:
Network MSP:在网络配置中定义参与的ORG的MSP,决定了谁是联盟链网络的成员,同时也决定了这些成员中由谁来执行管理任务(创建频道等等)

Channel MSP:同上面的Channel MSP

Peer MSP:Peer MSP掌管成员对Peer的权限,例如谁有权力在当前的Peer上安装链码。Peer MSP是Local MSP的一种。

Orderer MSP:Orderer MSP也是Local MSP的一种,定义在本地文件系统中,该类MSP定义了受信任的节点列表

我们知道了MSP的作用以及种类,下面看下MSP的物理结构:
在这里插入图片描述
上图的每一个方块都对应着MSP文件夹下的一个子目录,子目录中存放着相关的文件:
RCA:此文件夹包含由此MSP代表的组织所信任的根CA的自签名X.509证书的列表。该目录下至少要有一个跟CA的证书,同时该目录是MSP最重要的一个目录,这个目录就是MSP身份的代表,从根CA派生出的证书才会被认为是该MSP所代表的组织的成员。
ICA: 此文件夹包含此组织信任的中间CA的X.509证书的列表。 每个证书必须由MSP中的一个根CA签名,或者由中间CA签名但最终能通过信任链追溯到该MSP的根CA。中间CA的使用使得管理成员关系的方式更为灵活:中间CA可以看作是组织中不同的部门的这样一个层级,可以更详细的分类组织中的成员。另外,该文件夹是可以为空的。
OU:
Administrator: 改目录定义了MSP管理员的身份列表。该目录中会有一个至多个证书。另外值得注意的是,不是说成为了管理员就能够控制本组织的所有资源,管理员的权限还受系统资源策略的限制。比如该MSP定义了A,B两位管理员,channel策略中只允许A对channel进行添加成员操作,而B则无此权限。

Revoked Certificates:被撤销的证书列表
Node Identity:
Keystore:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fabric中的“账户”体系 的相关文章

随机推荐

  • 【笔记】有点麻烦的MatConvNet的dagnn的debug过程

    尝试用MatConvNet训练 然而遇到了以下bug 一脸懵逼折腾了四天 No public property dilate exists for class dagnn Conv Error in dagnn Layer load lin
  • javaweb课程设计之商品后台管理系统

    主要技术 layui框架 html5 jsp oracle数据库 servlet session filter 功能说明 基于java开发的商品管理系统 管理员在后台进行添加商品 修改商品 删除商品 批量删除商品 设置商品上下架功能等 完美
  • webSocket的使用

    在Spring Boot项目中使用Java WebSocket 添加依赖 在项目的构建文件 如pom xml 中添加Java WebSocket的依赖项 可以使用Java EE的WebSocket API或者其他第三方库 例如 Tyrus
  • MATLAB绘制局部放大图

    在数据处理时 当曲线出现跳变的时间极短 出于观察跳变时间段波形的需要 需要对曲线跳变处进行局部放大处理 本文给出了此种情况下MATLAB绘制局部放大图的流程 同时 当曲线的峰值数据与平均值相差一个数量级时 如峰值12 平均值范围落在是 1间
  • awk内置函数

    http blog csdn net nuoline article details 8610679
  • 【爬虫进阶】猿人学任务七之字体反爬(难度2.0)

    目录 前言 特此说明 分析 代码过程 成果 完整源码 前言 往期有讲解过某团字体反爬 感觉效果不太好 所以本章重新找了个例子 希望能帮助大家理解透彻 再遇到直接手撕 特此说明 如果涉及到版权问题 请立刻联系博主删除 分析 首先 我们看题目
  • C++实现栈(链表模拟)【每一步详细深入讲解,代码清晰、简单、易懂】

    文章目录 一 利用链表实现栈 1 链表实现的思路 2 设计栈的结构 3 入栈操作 4 出栈操作 5 判断栈空 6 构造析构 7 完整代码 一 利用链表实现栈 1 链表实现的思路 由于栈是一种较为简单的数据结构 用链表实现栈 逻辑上和数组差不
  • 多输入通道和多输出通道

    目录 多输入通道和多输出通道 目录 1 什么是多输入通道和多输出通道 2 多输入通道和多输出通道的实现 2 1 多输入通道和多输出通道的卷积操作 2 2 多输入通道和多输出通道的全连接操作 3 多输入通道和多输出通道的实例 3 1 导入必要
  • 若依SpringBoot+Vue分离版打包部署(前端)

    遇到的问题为vue项目webpack dev server配置后本地连接服务器地址正常请求 但是打包之后请求服务器接口一直是404 Vue前端打包 1 npm run build prod 打包 2 npm run preview 打包正式
  • 【Vue2从入门到精通】深入浅出,带你彻底搞懂Vue2组件通信的9种方式

    文章目录 人工智能福利文章 Vue组件间通信分类 1 props emit 1 1 父组件向子组件传值 1 2 子组件向父组件传值 2 parent children 3 ref refs 3 1 ref作用于组件 3 2 ref作用于Ht
  • FLASH位宽为8、16、32时,CPU与外设之间地址线的连接方法

    原文地址 http www eefocus com E5 8D 83 E9 87 8C E7 9F A5 E9 B9 B0 blog 10 03 186914 04945 html FLASH连接CPU时 根据不同的数据宽度 比如16位的N
  • java BigDecimal保留两位小数

    对于一些精准的数字 如涉及到金额时我们一般会使用BigDecimal类型来保存和处理 在处理保留小数位数时 如果通过DecimalFormat表达式需要注意下 1 通过DecimalFormat保留两位小数 通过上图可以看到 在补位时 如果
  • 文件上传之IIS6.0解析漏洞

    文章目录 1 判断iis版本 2 使用目录解析漏洞 2 1 写asp一句话木马 2 2 bp抓包 2 3 修改上传路径 2 4 实用工具连接 2 5 get shell 3 使用文件解析漏洞 3 1 写一句话马 3 2 上传 3 3 抓包改
  • mmyolo框架实现在VOC数据集上复现Yolov6教程(详细)

    写在开头 最近学习mmyolo的框架 想着它能将所有配置都写在一个config文件里 只需要改配置文件就可以改动模型 感觉挺方便的 就想着Yolov6用mmyolo框架来实现 但mmyolo并没有提供v6的voc实现配置 v5是有的 看下图
  • RocketMQ的消息优先级

    有些场景 需要应用程序处理几种类型的消息 不同消息的优先级不同 RocketMQ是个先入先出的队列 不支持消息级别或者Topic级别的优先级 业务中简单的优先级需求 可以通过间接的方式解决 下面列举三种优先级相关需求的具体处理方法 第一种
  • Linux环境下的jdk安装(大数据环境)

    jdk安装 创建软件存放目录 上传文件 我使用的MobaXterm 创建解压目录 解压jdk压缩包 修改软件名 使他简洁易操作 配置环境变量 让配置文件生效 查看jdk版本信息 将HP01 的usr文件夹整体拷贝到HP02 HP03目录下
  • 如何使用 FreeRTOS中的xQueueCreate,xQueueSend,xQueueReceive

    信号量Semaphore和互斥量mutex 只能用于进程间的同步 并不能传递更多的数据 在freertos 提供了messageQ 用来在实现进程同步的同时 传递数据 进程间通信 或者ISR和TASK之间通信 如果没有messageQ 则只
  • Object&Objects

    Object 概念 Object 是类层次结构的根 每个类都可以将 Object 作为超类 所有类都直接或者间接的继承自该类 换句话说 该类所具备的方法 所有类都会有一份 toString 作用 以良好的格式 更方便的展示对象中的属性值 重
  • c++ Json库读取和写入json文件

    include json include writer h include json include reader h include
  • Fabric中的“账户”体系

    本文的联盟链是以Fabric为例 本文中transaction翻译成事务 而非交易 联盟链相对于公链 最大的不同在于 联盟链上的数据不是对所有人都公开的 只有联盟内的成员才可以访问 写入链上数据 第二个重要的区别 联盟链不发币 所以联盟链里