微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用智能合约作为 ACL 加密/解密存储在 IPFS 上的数据

如何解决使用智能合约作为 ACL 加密/解密存储在 IPFS 上的数据

我正在尝试创建一个加密存储解决方案,该解决方案使用 IPFS 作为存储并使用以太坊智能合约进行访问控制。基本上,每个用户都可以将文件上传到 IPFS,并且他们可以选择可以查看该数据的以太坊地址(与他人共享)。

但是,我找不到一种可行的方法来提供该数据的加密/解密。 我认为的方法如下。当用户 A 想要存储一个文件时,它会使用对称密钥 Ks 进行加密,并创建一个智能合约,其中包含 IPFS 中的文件哈希和代表谁可以查看数据的映射。在映射中,keys 应该是允许查看文件用户的地址,value 是用用户的公钥加密的 Ks。

下载过程应该看起来像 -> B 进入智能合约并要求文件哈希和他们的解密密钥。如果合约在访问映射中有 B,则返回该信息。 B 从 IPFS 下载文件并使用其私钥解密 Ks 即可看到文件

例如,我希望我的应用程序与 Metamask 集成,但我发现我无法使用钱包的私钥进行特定的解密。我找不到任何可能的解决方案。

谁能建议其他可以帮助解决问题的解决方法

解决方法

我可以建议您如何使用 Emercon NVS 而不是以太坊智能合约创建您的系统:

  1. 每个客户将他的公钥部署到 NVS 中,例如:openPGP 关键,通过创建 nvs-record:

    • 名称 -> gpg:用户名
    • 值 -> gpg-pubkey
  2. 当您使用会话密钥 Ks 加密文件时,您附加到 您的消息文件列表,每个都包含会话密钥 Ks,已加密 通过适当用户的公钥。

  3. 此后,您将输出文件部署到 IPFS。此外,你可以把 为您的文件转换为 NVS 可红名,用于将您的文件映射到 IPFS 文件哈希,例如:

    • ipfs:myfile ->a02..ac6
  4. 当用户想要读取文件时,他必须执行以下操作:

    • 从您那里接收文件名。
    • 通过 NVS 请求,他检索 ipfs 文件哈希。
    • 通过文件哈希,他从 IPFS 下载文件。
    • 他在列表 [2] 中搜索他的记录 - 会话密钥,由他自己的公钥加密。
    • 他用这个私钥解密会话密钥。
    • 他使用会话密钥解密您的文件。

如果你想在 Emercoin 上开发这个系统,我可以免费为你提供 20 个测试网币,只需在评论中留下你的 tEMC 地址即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。