Hyperledger fabric Hyperledger结构:如何将加密操作委托给Hashicorp Vault?

Hyperledger fabric Hyperledger结构:如何将加密操作委托给Hashicorp Vault?,hyperledger-fabric,hyperledger,signing,hashicorp-vault,Hyperledger Fabric,Hyperledger,Signing,Hashicorp Vault,是否有任何方法可以将Hyperledger结构节点(客户端节点、订购方节点和对等方)执行的加密操作委托给Hashicorp Vault? 允许对等方和订购方节点在不公开其私钥的情况下签署和认可事务 Hyperledger Fabric正式支持HSM,但我找不到任何相关文档通过使用Hashicorp Vault替换HSM来实现同样的功能。您不能,至少不是所有的加密操作 结构节点将加密操作(如签名)委托给名为BCCSP(块链加密服务提供商)的组件。它有两种口味: 软件(作为代码嵌入到节点中) PK

是否有任何方法可以将Hyperledger结构节点(客户端节点、订购方节点和对等方)执行的加密操作委托给Hashicorp Vault? 允许对等方和订购方节点在不公开其私钥的情况下签署和认可事务


Hyperledger Fabric正式支持HSM,但我找不到任何相关文档通过使用Hashicorp Vault替换HSM来实现同样的功能。

您不能,至少不是所有的加密操作

结构节点将加密操作(如签名)委托给名为BCCSP(块链加密服务提供商)的组件。它有两种口味:

  • 软件(作为代码嵌入到节点中)
  • PKCS11(使用称为PKCS11的协议与驱动程序通信,该驱动程序端部可能有一个HSM,但可能只是有一个用于测试的基于软件的HSM)
PKCS11方法: 您可能需要找到某种连接器,将PKCS11调用从结构转换到vault。从理论上讲,我想可以实现softhsm的
.so
文件,并使其与vault而不是HSM通信

软件方法:
  • 在Fabric 1.4中,基于Golang的本地插件,有一些BCCSP插件,但它被删除了
结构对等方签署两种类型的消息:

  • 在对等方之间传输和传播的P2P消息,如成员信息和心跳
  • 背书,最终成为交易的一部分
  • 虽然两种签名操作都使用BCCSP,但后者通过使用Go插件间接使用BCCSP

    因此,这意味着您不能使对等方不持有私钥(除非您使用PKCS11),但您可以为对等方提供一个用于P2P消息的私钥,以及一个用于背书交易的不同私钥

    但这里有两个挑战:

  • 如果您制作了一个定制的背书插件,那么您需要一个匹配的验证插件,以检查交易是否确实被您需要使用的私钥正确背书
  • 您需要记住,如果应用程序配置为使用,那么您需要确保它们仍然能够根据对等方知道的证书(而不是背书插件使用的证书)找到对等方

  • 你不能,至少不是所有的加密操作

    结构节点将加密操作(如签名)委托给名为BCCSP(块链加密服务提供商)的组件。它有两种口味:

    • 软件(作为代码嵌入到节点中)
    • PKCS11(使用称为PKCS11的协议与驱动程序通信,该驱动程序端部可能有一个HSM,但可能只是有一个用于测试的基于软件的HSM)
    PKCS11方法: 您可能需要找到某种连接器,将PKCS11调用从结构转换到vault。从理论上讲,我想可以实现softhsm的
    .so
    文件,并使其与vault而不是HSM通信

    软件方法:
    • 在Fabric 1.4中,基于Golang的本地插件,有一些BCCSP插件,但它被删除了
    结构对等方签署两种类型的消息:

  • 在对等方之间传输和传播的P2P消息,如成员信息和心跳
  • 背书,最终成为交易的一部分
  • 虽然两种签名操作都使用BCCSP,但后者通过使用Go插件间接使用BCCSP

    因此,这意味着您不能使对等方不持有私钥(除非您使用PKCS11),但您可以为对等方提供一个用于P2P消息的私钥,以及一个用于背书交易的不同私钥

    但这里有两个挑战:

  • 如果您制作了一个定制的背书插件,那么您需要一个匹配的验证插件,以检查交易是否确实被您需要使用的私钥正确背书
  • 您需要记住,如果应用程序配置为使用,那么您需要确保它们仍然能够根据对等方知道的证书(而不是背书插件使用的证书)找到对等方

  • 谢谢你的回答。您能帮助我理解下面的文章()在这个问题的上下文中所处的位置吗?如果我没记错的话,这篇文章只是为了替换客户端应用程序节点的签名机制。但这是针对客户端的,不是针对节点的。谢谢你的回答。您能帮助我理解下面的文章()在这个问题的上下文中所处的位置吗?如果我没记错的话,本文只是为了替换客户端应用程序节点的签名机制,但这是针对客户端的,而不是针对节点的。