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

问题描述 投票:1回答:1

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

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

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

hyperledger-fabric hyperledger-chaincode
1个回答
1
投票

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

您需要确保两件事:

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

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

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

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

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

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

您可以研究的另一个选项是Fabric Private Chaincode,它使用英特尔SGX TEE(受信任的执行环境)功能。

© www.soinside.com 2019 - 2024. All rights reserved.