• 9-HyperLedger-Fabric原理-MSP详解(一)-MSP基础


    在前面的文章中,我们分析了Fabric的架构,把Fabric系统看成由不同的逻辑结构组成。其中MSP是一个逻辑结构,主要的功能是承担权限管理。

    fabric架构

    那么,MSP是什么?它在Fabric中,又是以怎样的形式存在呢?接下来的这篇文章,将会做详细介绍。全文按照如下结构展开:

    全文结构

    一、基本概念

    MSP是Membership Service Provider的缩写,直译为成员关系服务提供者。为了更好的理解MSP,这里首先介绍MSP中的要用到的一些术语。

     

    certificate 证书

    证书(certificate)是Fabric中权限管理的基础。目前采用了基于ECDSA算法的非对称加密算法来生成公钥和私钥,证书格式则采用了X.509的标准规范。

    Fabric中采用单独的Fabric CA项目来管理证书的生成。每一个实体、组织都可以拥有自己的身份证书,并且证书也遵循了组织结构,方便基于组织实现灵活的权限管理。

     

    Member 成员

    拥有网络唯一根证书的合法独立实体。

    在Fabric区块链中,peer节点和app client这样的网络组件实际上就是一个Member。

    在学习过程中,一度对成员与Peer之间的关系不太清楚,这里做一个总结。

    成员 与 Peer的关系
    Fabric网络提供的是联盟链服务,联盟由多个组织构成,组织中的成员提供了节点服务来维护网络,同时通过身份证书来进行权限管理。
    通道概念就可以理解为一个通道(Fabric中的channel)对应一个联盟.
    一个通道上可以有多个组织。每个组织(Fabric中的org)有多个成员。
    也就是说,成员提供节点服务。

    一个组织中的成员可以根据网络中流量的要求,提供不同数量的节点服务来满足网络中的访问量。

     

    Organization 组织

    组织(organization)代表一组拥有共同信任的根证书(可以为根CA证书或中间CA证书)的成员。

    这些成员由于共享同样的信任根,彼此之间信任度很高,可以相互交换比较敏感的内容。同一个组织的成员节点在网络中可以被认为是同一个身份,代表组织进行签名。组织中成员可以为普通成员角色或者管理员角色,后者拥有更高的权限,可以对组织配置进行修改。

    组织一般包括名称、ID、MSP信息、管理策略、认证采用的密码库类型、一组锚点节点位置等信息。通常情况下,多个组织为了进行数据沟通,可以加入到同一个通道中。

    组织示例

    如上图所示,三家银行一共三个组织,两两加入到同一个通道中彼此进行相关数据交互,而无需担心被其他人看到。

     

    Consortium 联盟

    联盟由若干组织构成的集合,是联盟链场景所独有的结构形式。联盟一般用于多个组织相互合作的场景,例如某联盟中指定需要所有参与方同时对交易背书,才允许在网络中进行执行。

    联盟中的组织成员会使用同一个排序服务,并且遵循相同的通道创建策略(Channel-CreationPolicy)。通道创建策略可以为ALL、MAJORITY或者ANY(默认值)。通道在创建时也必须指定所绑定的联盟信息。例如,某个联盟内可能定义必须要所有成员都同意才能创建新的通道;或者任何成员都可以自行创建新的通道。通道创建策略会成为所新建通道Application组的修改策略(mod_policy)。

    在设置联盟时候,每个组织都需要指定自己的ID信息,该信息必须要跟该组织所关联的MSP ID一致。

     

    MSP 成员关系服务提供者

    成员服务提供者(MSP)是一个提供抽象化成员操作框架的组件。

    MSP将颁发与校验证书,以及用户认证背后的所有密码学机制与协议都抽象了出来。

    一个MSP可以自己定义身份,以及身份的管理(身份验证)与认证(生成与验证签名)规则。也就是说,在一个运行的fabric系统网络中有众多的参与者,MSP就是为了管理这些参与者,可以辨识验证哪些人有资格,哪些人没资格,既维护某一个参与者的权限,也维护参与者之间的关系。

    为了处理网络成员身份和身份,成员服务提供者(MSP)管理用户id,并对网络中的所有参与者进行身份验证。一个Fabric区块链网络可以由一个或多个MSPs控制。这提供了成员操作的模块化,以及跨不同成员标准和体系结构的互操作性。

    当MSP的成员管理规则表示一个团体,组织或组织分工时,该名称会被引用。这又被成为MSP标识符或MSP ID。对于每个MSP实例,MSP标识符都必须独一无二。关于这一点,会在后面MSP实践中详细说明。

     

    MS(Member Service) 成员服务

    成员服务在许可的区块链网络上认证、授权和管理身份。在peer和order中运行的成员服务的代码都会认证和授权区块链操作。它是基于PKI的MSP实现。

     

    综上所述,成员是最基本的元素,它对应的是我们Fabric网络中的Peer节点或者Order节点或者Fabric-CA。MSP就是对这些成员进行身份的管理与验证的实现。

    总结为一句话,成员关系服务提供者,给成员提供成员服务。这种服务是基于PKI的MSP实现的。


    二、MSP的作用

    从上面的解释中可知,MSP将颁发与校验证书,以及用户认证背后的所有密码学机制与协议都抽象了出来。

    成员服务提供者(MSP)管理用户id,并对网络中的所有参与者进行身份验证。一个Fabric区块链网络可以由一个或多个MSPs控制。这提供了成员操作的模块化,以及跨不同成员标准和体系结构的互操作性。


    三、MSP结构

    Fabric中提出了成员服务提供者(Membership Service Provider,MSP)的概念,抽象代表了一个身份验证的实体。基于它可以实现对不同资源进行基于身份证书的权限验证。

    成员服务提供者代表了用于对某个资源(成员、节点、组织等)进行身份验证的一组机制,是实现权限管理的基础。

    基于MSP,资源实体可以对数据签名进行确认,网络可以对签名的身份进行验证。

    通常情况下,一个组织或联盟可以对应到一个层级化的MSP。这里所谓的层级化的MSP,是指由根证书,生成中间件证书等组成的层级化的结构,从而实现不同管理员与普通成员之间的权限控制。

    一个资源实体的MSP结构中往往包括签名和验证算法,以及一组符合X.509格式的证书,这些证书最后都需要追溯到同一个信任的根。

    以下是一个MSP结构中常见的组成部分:

    · 一组信任的根证书,是整个组织证书信任的基础,根证书可以签发中间层证书;
    · MSP的管理员的身份证书,管理员可以对MSP中证书进行管理;
    · 组织单元(Organizational Unit)列表(可选);
    · 一组信任的中间证书,中间证书由根证书签发(可选);
    · 证书撤销列表,代表被吊销的证书名单(可选)。

    如果更详细一些,可以用下图来表示:

    MSP结构

    Root CAs | 根证书列表

    此文件夹包含,由此MSP代表的组织信任的Root CA,自签名X.509证书列表。此MSP文件夹中必须至少有一个Root CA X.509证书。这是最重要的文件夹,因为它标识了所有其它证书。

    Intermediate CAs | 中间证书列表

    此文件夹包含此组织信任的Intermediate CA的X.509证书列表。每个证书都必须由MSP中的一个Root CA签署,或者由 Intermediate CA 签署。

    Intermediate CA可以表示组织的不同细分或组织本身(例如,如果商业CA用于组织的身份管理)。在前一种情况下,可以使用CA层次结构中,较低的其他Intermediate CA来表示组织细分。请注意,可能有一个没有任何中间CA的功能网络,在这种情况下,此文件夹将为空。

    与Root CA文件夹一样,此文件夹定义了中间证书。只有拥有了这些证书,才能被系统视为组织成员的CA。

    Organizational Units (OUs) | 组织单元列表

    可选的

    Administrators | 管理员身份证书

    该文件夹包含一个身份列表,用于定义具有该组织管理员角色的参与者。对于标准MSP类型,此列表中应该有一个或多个X.509证书。

    Revoked Certificates | 撤销证书列表

    可选的

    KeyStore for Private Key | 私钥库

    该文件夹为peer 或 orderer节点(或客户端的local MSP)的local MSP定义,并包含节点的signing key(签名密钥)。 此密钥用于签署数据,作为认可阶段的一部分。

    该文件夹对Local MSP是必须的,并且必须包含一个私钥。 很明显,访问这个文件夹,只能由,对此peer有管理权限的用户。

    Channel MSP的配置不包括此部分,因为Channel MSP旨在提供纯粹的身份验证功能,而不是签署能力。

    TLS Root CA | TLS根证书列表

    此文件夹包含,此组织为TLS通信所信任的Root CA的自签名X.509证书列表。 TLS通信的一个例子是,peer需要连接到orderer以便它可以接收ledger更新。

    MSP TLS信息涉及网络内的节点,即对peers 和 the orderers,此文件夹中必须至少有一个TLS Root CA X.509证书。

    TLS Intermediate CA | TLS中间证书

    此文件夹包含由此MSP代表的,组织信任的用于TLS通信的Intermediate CA证书列表。当商业CA用于组织的TLS证书时,此文件夹特别有用。 它是可选的。

     

    Fabric中MSP相关实现代码都在msp目录下,目前采用了bccspmsp结构来代表一个成员身份结构,并且采用了MSPConfig(主要是其成员FabricMSPConfig)结构来代表跟该实体相关的证书信息。

    MSP中各实体资源的证书必须被证书信任树上的叶子节点签名。中间层签名的证书会被认为是非法实体证书。


    四、MSP实践

    我们讲,MSP在Fabric中的作用是对用户进行管理。那么,它是怎么实现用户管理与权限认证的呢?

    第一,生成相关的证书和签名。

    第二,在Peer,Orderer,Channel等组件的配置文件设置关于msp的相关信心。

    也就是说,要想初始化一个MSP实例:首先,要生成用户权限管理和签名认证的证书。然后,每一个peer节点和orderer节点,Channel等都需要在本地指定其配置。

    注意channel上的全体成员均参与此过程。

    在一个channel中,当MSP的成员管理规则表示一个团体,组织或组织分工时,该名称会被引用。这又被成为MSP标识符或MSP ID。对于每个MSP实例,MSP标识符都必须独一无二。举个例子:系统channel创建时如果检测到两个MSP有相同的标识符,那么orderer节点的启动将以失败告终。

     

    在实际的操作中如下:

    1. 编写crypto-config.yaml配置文件指定网络的拓扑结构和组织结构。

    2. cryptogen-生成秘钥和证书文件。
    快速地根据配置自动批量生成所需要的密钥和证书文件。

    3. 编写依赖配置文件configtx.yaml。
    该文件包含网络的定义,并给出了网络组件的每个网络实体的加密材料的存储位置。

    4. configtxgen-生成通道配置。
    在这个过程中,会生成系统channel的创世纪块。该创世纪块(genesis block)中包含所有MSP的验证元素。回忆一下,MSP验证元素有MSP身份标识(MSP identifier),root CAs,intermediate CAs,admin CAs,OU List,CRLs。

    5. 在Peer节点和Order节点配置MSP相关的信息。
    具体步骤会在后面“Fabric配置管理”中仔细讲解。

     

    下面,对步骤1进行简单的说明:

    使用cryptogen生成所需文件的命令:

    $ cryptogen generate 
        --config $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/crypto-
            config.yaml 
        --output crypto-config
    上述命令解释如下:
    ·generate[flags]:生成密钥和证书文件;

    其中,generate子命令支持如下参数:
    ·--output:指定存放生成密钥和证书文件的路径,默认为当前目录下的crypto-config目录;
    ·--config:指定所采用的配置模板文件的路径。

    为了实现对Peer,Orderer以及Channel的管理,在搭建网络的过程中,我们只需要在它们的配置文件中,配置好相关的证书即可。

    拿Peer配置为例:

    peer配置示例

    mspConfigPath:MSP目录所在的路径,可以为绝对路径,或相对配置目录的路径,一般建议为/etc/hyperledger/fabric/msp;

    localMspId关联Peer所关联的MSP的ID,一般为组织单位名称,需要与联盟配置中的名称一致。


    五、总结

    本文

    介绍了MSP的基本概念:

    • 它是Fabric网络中的一个逻辑组件。它是在证书,成员,联盟,签名等基础概念之上,抽象出来的。

    介绍了MSP的作用:

    • 在Fabric网络中,提供用户管理与权限验证的功能。

    介绍了MSP的基本结构,也就是实现用户管理与权限验证,需要哪些信息才能提供保障。

    包括:

    • 根证书列表、组织单元列表、管理员身份证书、撤销证书列表、私钥库、TLS根证书列表、TLS中间证书等等。

    介绍了实现MSP的基本步骤

    • 生成MSP证书和它们的签名匙
    • 配置PEER和Orderer
    • 配置Channel

    由此,关于MSP,我们也有了一个较为宏观的认识。


    参考资料:

    Hyperledger系列(十) Fabric MSP和Fabric CA的区别

    Hyperledger系列(十二)MSP详细介绍

    HyperLedger-中文文档-MSP介绍

    《区块链原理、设计与应用》-杨保华-陈昌-12.4节-权限管理与策略

  • 相关阅读:
    ubuntu下管理android手机
    ubuntu下管理android手机
    ubuntu下管理android手机
    常用开源<监控软件>介绍
    常用开源<监控软件>介绍
    我的坦克兵爷爷也曾扬威世界
    bootstrap-巨幕、缩略图、警告框
    bootstrap-面包屑和分页
    bootstrap-导航条
    bootstrap-导航、选项卡
  • 原文地址:https://www.cnblogs.com/yuluoxingkong/p/13558510.html
Copyright © 2020-2023  润新知