• Hyperledger Fabric使用硬件安全模块(HSM)


    使用硬件安全模型

    官方文档
    可以通过Fabric节点使用硬件安全模块(HSM)来产生和存储私钥。HSM用于保护私钥和处理加密操作。允许peer节点与orderer节点在不暴露他们的私钥的条件下去签名和背书交易,当前Fabric只支持使用PKCS11标准与HSM进行通信。

    配置HSM

    为了在Fabric节点上使用HSM,需要更新关于节点配置文件如core.yaml中的BCCSP(加密服务提供者)部分.在BCCSP部分,需要选择PKCS11作为提供者并提供需要使用的PKCS11库的路径。还需要提供为加密操作创建的令牌的标签和密码。可以使用令牌去生成和存储多个秘钥。
    预先构建的Hyperledger Fabric Docker镜像不能够使用PKCS11。如果使用Docker部署Fabric,需要通过以下的命令启动PKCS11构建自己的镜像。

    make docker GO_TAGS=pkcs11
    

    同时也需要确保PKCS11的库文件是有效的,挂载到容器内部或者通过节点安装后是可以使用的。

    示例

    接下来的示例说明了如何去配置一个可以使用HSMFabirc节点。

    首先,需要安装一个实现了PKCS11的接口。本例使用开源的softhsm实现。在下载和配置完成softhsm后,需要设置环境变量SOFTHSM2_CONF指向softhsm2配置文件。

    可以使用softhsm去创建用于处理关于Fabric节点在HSM插槽中用于加密操作令牌。在这个示例中,我们创建了一个标签为fabric,密码为71811222的令牌。在创建令牌完成之后,更新配置文件来使用PKCS11,并将令牌作为加密服务提供者。可以在下面发现关于BCCSP部分配置的例子:

    #############################################################################
    # BCCSP (区块链加密服务提供者) 部分,用于选择使用的已实现的加密库文件
    #############################################################################
    bccsp:
      default: PKCS11
      pkcs11:
        Library: /etc/hyperledger/fabric/libsofthsm2.so
        Pin: 71811222
        Label: fabric
        hash: SHA2
        security: 256
    

    也可以通过环境变量来覆盖配置文件中相关的字段。如果通过Fabric CA服务器连接到了HSM,则需要设置以下环境变量:

    FABRIC_CA_SERVER_BCCSP_DEFAULT=PKCS11
    FABRIC_CA_SERVER_BCCSP_PKCS11_LIBRARY=/etc/hyperledger/fabric/libsofthsm2.so
    FABRIC_CA_SERVER_BCCSP_PKCS11_PIN=71811222
    FABRIC_CA_SERVER_BCCSP_PKCS11_LABEL=fabric
    

    如果使用docker compose部署了节点,在构建完自己的镜像后,可以更新docker compose文件通过volumessofthsm库文件和配置文件挂载到容器中。例如,可以添加下面的环境和volumes变量到docker compose文件:

      environment:
         - SOFTHSM2_CONF=/etc/hyperledger/fabric/config.file
      volumes:
         - /home/softhsm/config.file:/etc/hyperledger/fabric/config.file
         - /usr/local/Cellar/softhsm/2.1.0/lib/softhsm/libsofthsm2.so:/etc/hyperledger/fabric/libsofthsm2.so
    

    配置使用HSM的网络

    如果使用HSM部署了Fabric节点,私钥将会在HSM内部生成而不是节点本地的MSP中的keystore文件夹内。MSP中的keystore文件夹将为空文件夹。另外,Fabric节点将使用关于signcerts文件夹内的签名证书的主题秘钥标识符去接收HSM中的私钥。这个创建MSP文件夹的过程将和之前不同,取决于自己使用的Fabric 证书认证中心。

    使用Fabric CA

    可以通过编辑相同的配置文件配置Fabric CA使peer节点或者是orderer节点使用HSM。因为可以使用Fabric CA内部的HSM来生成秘钥。通过下面的步骤将直接创建本地的MSP文件夹:

    1. 创建一个HSM令牌并将它指向Fabirc CA的配置文件。当Fabric CA服务启动时,将会在HSM中生成CA签名证书。如果不担心CA签名证书是否暴露,可以跳过该步骤。
    2. 使用Fabric CA客户端通过自己的CA去注册peer或者order节点身份。
    3. 编辑Fabric CA客户端配置文件或者是环境变量使用HSM作为加密服务提供者并再次登录获取节点的身份。登录命令将通过HSM生成私钥文件.
    4. 更新关于peer或者orderer节点的配置文件中的BCCSP部分使用PKCS11,并将令牌作为加密服务提供者。指向由Fabric CA客户端创建的MSP文件夹。一旦部署完成,peer节点或者orderer节点将可以通过由HSM提供保护的私钥文件签名和背书交易。

    通过自己的CA使用HSM

    如果使用自己的CA证书中心来部署Fabric组件,可以通过以下几步使用HSM:

    1. 配置自己的CA使用PKCS11创建令牌与HSM进行通信。然后使用自己的CA去为每一个节点生成私钥和签名证书。私钥由HSM内部进行生成。
    2. 使用CA去构建节点的MSP文件夹。将步骤一中生成的签名证书放入signcerts文件夹内。可以保持keystore文件夹为空。
    3. 更新关于peer或者orderer节点的配置文件中的BCCSP部分使用PKCS11,并将令牌作为加密服务提供者。指向由Fabric CA客户端创建的MSP文件夹。一旦部署完成,peer节点或者orderer节点将可以通过由HSM提供保护的私钥文件签名和背书交易。
  • 相关阅读:
    54、操控变形—调整
    leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树(中等)
    leetcode 219. Contains Duplicate II 存在重复元素 II(简单)
    leetcode 145. Binary Tree Postorder Traversal 二叉树的后序遍历 (中等)
    leetcode 530. Minimum Absolute Difference in BST二叉搜索树的最小绝对差 (简单)
    leetcode 889. Construct Binary Tree from Preorder and Postorder Traversal 根据前序和后
    leetcode 146. LRU Cache LRU 缓存 (简单)
    leetcode 785. Is Graph Bipartite判断二分图 (中等)
    leetcode 94. Binary Tree Inorder Traversal 二叉树的中序遍历(中等)
    leetcode 220. Contains Duplicate III 存在重复元素 III(困难)
  • 原文地址:https://www.cnblogs.com/cbkj-xd/p/12090174.html
Copyright © 2020-2023  润新知