• 蜗牛讲-fabric原理之MSP介绍



    什么是MSP

    在区块链网络中用于颁发和验证证书和身份的一组加密机制和协议。是一个可插拔的接口。

    理论上讲,可以通过以下组件来定义一个MSP:

    • 身份格式,或是说证书,有时还带有一个产生身份的算法

    • 一种签名算法,利用与身份相关的秘钥和消息,生成一组byte数组(实际上就是签名),这组byte数组也和该身份唯一绑定。

    • 一种签名验证算法,算法的输入为身份,消息和签名(bytes数组),如果签名数组对于输入消息是一个有效的签名,那么输出是“接受”,否则就是“拒绝”

    • 一组规则。对于MSP来说,满足这个规则的身份必须是一个有效的身份

    • 一组admin身份集合,用于修改MSP指定的一些配置

    一个区块链网络中可以管理一个或是多个MSP。对于很多MSP来说,前面三点是比较通用规则,4和5对于不同的MSP会有所变化。从这个角度看,Fabric-CA也算是一个MSP。而官网提供的first-network,没有用到Farbic-CA, 用的是localMSP。

    使用MSP

    这里列举一个节点侧的典型MSP场景。注意这里的节点在网络中不涉及到身份发布流程,只限制于客户端的背书请求,客户端身份验证和客户端身份签名验证三个过程。

    在这个场景中,身份(id) 具有X.509证书格式,由一个明确的根CA颁发。根据证书秘钥,签名和签名验证算法都是基于 ECDSA或是RSA(取决于生成证书时候的设置的算法),身份的验证主要包含有:

     通过可信的根CA,验证证书链是否正确

    确保身份没有被吊销,这个可以通过在msp启动阶段配置吊销列表或是MSP身份白名单实现

    节点签名能力

    Orderer节点,peer节点都需要有签名能力,为了实现这个,节点的管理员要在节点设置的时候指定MSP的配置。由于此处包含的MSP实例仅用于实例化节点的签名标识,因此我们通过SignerMSP引用此MSP。签名者MSP是可以被管理员手动更改,所以可以在各个节点之间变化。如果需要设置签名者MSP,需要将下面四组文件复制到节点文件系统中的专用位置,四组文件为:

    Cacert – PEM文件,MSP的根证书

    Admincerts – PEM文件,MSP的管理员证书

    Keystore-  节点的签名私钥

    Signcerts – PEM文件,节点身份的编码证书,fabric有四种身份:user,peer, orderer,client

    如下为peer相关证书文件对应的目录

    |——org1.example.com   组织名称

                   |

                   |——-ca    组织的根证书

                   |

                   |——-msp   组织的msp

                   |

                   |——-peers 节点相关证书

                   |

                   |——-tlsca    组织内部的tlsca证书

                   |

                   |——-users   组织所属用户

    链的参与者

    链的创世块必现包含有链的参与者的MSP说明。如果一个MSP涵盖了多条链,那么需要维护每条链上的MSP状态。这是为了避免重新配置不一致攻击,所谓的重新配置不一致攻击是指通过每个组织的MSP的重新配置交易信息到达每个链的顺序不一致导致,这样就会出现在一定时间内,同一个管道内的节点MSP信息不一致情况。

    我们一般定义一个MSP都是基于链或管道的上下文。这是为了orderer节点和peer节点可以对这条链上或是这条管道内的所有交易签名者,背书者,管道的广播和链或是管道创建,终止等请求进行认证。

    特别是在orderer的系统管道中指定的MSP允许策略规范去管理以下请求:管道读请求(认证,验证管道的delivery请求),写请求(认证和验证管道广播请求),链的创建者(鉴定链的创建请求)和管理员(认证和验证管道配置请求)。可以看出,链中的MSP具有验证者身份,和本地提供的MSP提供的签名者形成对比。更具体的说,peer和orderer在系统管道和链的上下文设置MSP是为了认证交易和配置相关的请求,这里的MSP不提供生成签名的能力。

    Peer和orderer节点可以验证由多个MSP颁发的身份签名。为了方便实现这点,fabric引入了MSP管理者概念。Fabric组件中的MSPManager接口可以在链设置阶段或是orderer管道启动时候被创建一个或是多个实例,使用这些MSP管理者来验证交易签名。MSPManager接口的引入给fabric带来了几个重要优势:

    • 可以插拔的MSP

    • 同时支持多个MSP提供者

    • 隐藏了单一MSP和MSP架构内部复杂性

    MSPManager 使用链的配置块信息来实例化MSP,如下图所示


     

    蜗牛讲技术,满满的都是干货,你值得关注。

     

  • 相关阅读:
    Go-常量-const
    centos-安装python3.6环境并配置虚拟环境
    centos-环境变量配置
    linux_命令格式和命令提示符
    linux_基础调优
    使用 Docker 容器应该避免的 10 个事情
    Linux--多网卡的7种Bond模式和交换机配置
    《Linux内核精髓:精通Linux内核必会的75个绝技》目录
    《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #21FUSE
    《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #20 使用fio进行I/O的基准测试
  • 原文地址:https://www.cnblogs.com/StephenWu/p/10485713.html
Copyright © 2020-2023  润新知