Hyperledger Fabric:如何将加密操作委托给 Hashicorp Vault?

Hyperledger Fabric: How to delegate cryptographic operations to Hashicorp Vault?

有没有办法将 Hyperledger Fabric 节点(客户端节点、排序节点和对等节点)执行的加密操作委托给 Hashicorp Vault? 允许对等节点和排序节点在不暴露私钥的情况下签署和背书交易。

Hyperledger Fabric 正式支持 HSM,但我无法找到任何相关文档来通过将 HSM 替换为 Hashicorp Vault 来实现同样的效果。

你不能,至少不是所有的密码操作。

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

  • 软件(嵌入节点中,作为代码)
  • PKCS11(使用称为 PKCS11 的协议与驱动程序通信,该驱动程序可能在其末端具有 HSM,但可能只是具有用于测试的基于软件的 HSM)

PKCS11 方法:

您可能需要找到某种连接器,将 PKCS11 调用从 Fabric 转换为 vault。理论上,我想可以通过 cloning the repository 实现 softhsm 的 .so 文件并使其与 vault 而不是 HSM 通信。

软件方法:

  • 在 Fabric 1.4 中,有一些 initial work 用于基于 Golang 原生插件的 BCCSP 插件,但已被删除。

结构对等体签署两种类型的消息:

  1. 在对等点之间传递广播和传播的 P2P 消息,例如成员信息和心跳。
  2. 背书,最终成为交易的一部分。

虽然两个签名操作都使用 BCCSP,但后者通过 another layer which can be altered 使用 Go 插件间接使用它。

所以这意味着你不能让对等点不持有私钥(除非你使用 PKCS11),但你可以有一个私钥供对等点用于 P2P 消息,以及不同的用于背书交易的私钥。

不过这里有 2 个挑战:

  1. 如果您制作自定义背书插件,则需要匹配的验证插件,以检查交易是否确实由您需要使用的私钥正确背书。
  2. 您需要记住,如果应用程序配置为使用 service discovery,那么您需要确保它们仍然能够根据对等点知道的证书找到对等点(不是背书插件使用的那些)。