如何防止在链码过程之外访问状态数据库

时间:2020-02-23 05:53:03

标签: hyperledger-fabric hyperledger-chaincode

我正在构建一个用于保存敏感用户数据的系统。

这意味着我需要防止在链码程序之外访问状态数据库。

如果我将数据库作为docker映像发布,也要确保对等方使用该特定数据库映像,而不是被篡改的映像。

1 个答案:

答案 0 :(得分:1)

如何防止在链码之外访问状态数据库 处理

您需要确保两件事:

  • 链码读取的数据不能在链码之外使用
  • 链码读取的数据无法更改,如果更改,则可以检测到。

第一个问题可以通过对数据进行加密来缓解,第二个问题可以通过使链码将MAC(消息身份验证代码)标签附加到它写入的每个项目上,并验证其任何项目的MAC标签来缓解读取,如果标签无效,则返回错误。

值得一提的是,您应该对密文进行MAC处理,而不要对MAC进行加密(先加密,然后进行MAC)。

如果我将数据库作为docker映像发布,该如何做 确保对等方使用该特定的数据库映像,而不是 被篡改的。

如果链码中嵌入了MAC密钥,那么您发布的数据库映像将包含链码未产生的记录(因此未在链码上附加适当的MAC标签),那么它将被检测到。

>

问题在于,恶意管理员还可以从过去向对等方提供有效的数据库容器。

您可以研究的另一种选择是Fabric Private Chaincode,它使用了Intel SGX TEE(受信任的执行环境)功能。

相关问题