我正在构建一个用于保存敏感用户数据的系统。
这意味着我需要防止在链码程序之外访问状态数据库。
如果我将数据库作为docker映像发布,也要确保对等方使用该特定数据库映像,而不是被篡改的映像。
答案 0 :(得分:1)
如何防止在链码之外访问状态数据库 处理
您需要确保两件事:
第一个问题可以通过对数据进行加密来缓解,第二个问题可以通过使链码将MAC(消息身份验证代码)标签附加到它写入的每个项目上,并验证其任何项目的MAC标签来缓解读取,如果标签无效,则返回错误。
值得一提的是,您应该对密文进行MAC处理,而不要对MAC进行加密(先加密,然后进行MAC)。
如果我将数据库作为docker映像发布,该如何做 确保对等方使用该特定的数据库映像,而不是 被篡改的。
如果链码中嵌入了MAC密钥,那么您发布的数据库映像将包含链码未产生的记录(因此未在链码上附加适当的MAC标签),那么它将被检测到。
>问题在于,恶意管理员还可以从过去向对等方提供有效的数据库容器。
您可以研究的另一种选择是Fabric Private Chaincode,它使用了Intel SGX TEE(受信任的执行环境)功能。