【问题标题】:Is there a way to encrypt a file/string using public/private keys generated by Hyperledger Fabric?有没有办法使用 Hyperledger Fabric 生成的公钥/私钥来加密文件/字符串?
【发布时间】:2020-03-03 16:23:06
【问题描述】:

我在我的项目中使用 Hyperledger Fabric V1.4。我已经注册并注册了用户。现在我想在保持私密的同时在用户之间传输文件,这意味着我需要对文件进行加密,以便只有接收者才能看到。例如,用户 A 想向用户 B 发送文件。我现在考虑的基本工作流程是:

  1. 用户 A 和 B 在 Hyperledger 网络中注册并获得公钥/私钥。
  2. 用户 A 在 IPFS 中上传文件并从 IPFS 获取哈希。 (由于拥有哈希的每个人都可以访问该文件,因此我们需要对文件哈希进行加密。)
  3. 使用用户 B 的公钥加密文件哈希。
  4. 将加密后的哈希发送给用户B。
  5. 用户B收到加密后的hash,使用B的私钥解密hash,得到IPFS文件hash。然后 B 可以使用 IPFS 查看哈希。

我遇到的问题:

  1. 第三步,如何获取用户的公钥?我只找到了获取证书和私钥的方法。或者我可以从证书中获取公钥吗?
  2. 是否有使用 Hyperledger 生成的公钥和私钥加密文件/字符串的算法?

谢谢!

【问题讨论】:

    标签: javascript encryption hyperledger-fabric


    【解决方案1】:

    是的,可能有类似的东西,但使用 ECDSA 时,它不能以这种方式工作。您不使用用户 B 的公钥进行加密。您所做的是从用户 B 的公钥和用户 A 的私钥派生对称密钥,其方式与从用户 A 的公钥和用户 B 的私钥派生的对称密钥相同。它被称为 ECDH。我这里没有 Javascript 中的示例(您可以像我一样搜索它),但要理解它,请看一下 https://jameshfisher.com/2017/04/14/openssl-ecc/ 中的示例(使用 OpenSSL)。

    您可以从证书中获取公钥(它嵌入在证书中)或从私钥中派生出来。选择你的方式。

    注意:我发现在将内容存储到 IPFS 之前加密内容并共享哈希比加密哈希更安全。

    编辑:对于 nodejs,你可以试试这个:https://www.npmjs.com/package/eccrypto。它似乎还包括一些与您最初寻找的内容相似的内容。

    【讨论】:

    • 我找不到从证书或私钥派生公钥的方法。我尝试了node-forge,但失败了。你有什么建议吗?
    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2015-09-25
    • 2013-06-08
    • 2019-03-13
    • 2013-04-06
    相关资源
    最近更新 更多