【问题标题】:encrypt to multiple public keys with RSA using Webcrypto使用 Webcrypto 使用 RSA 加密到多个公钥
【发布时间】:2018-09-04 22:53:22
【问题描述】:

有没有办法使用javascript cryto Api加密多个公钥的数据(以便多个密钥所有者可以使用他们的私钥解密数据)。

如果使用 RSA-OAEP 无法做到这一点,您能否提出相同的建议?

谢谢

window.crypto.subtle.encrypt(
    {
        name: "RSA-OAEP",

    },
    ArrayOfPublicKeys, 
    data 
)
.then(function(encrypted){

    console.log(encrypted);
})

【问题讨论】:

  • 这在数学上是不可能的,是吗?您必须为每个公钥创建一个单独的密文。
  • 感谢评论,但其他 pgp 程序如何支持多用户加密?
  • 不知道具体是如何工作的。
  • @pointy,阅读您链接的帖子的第一条评论PGP 所做的是为对称密码生成一个密钥,并使用他们的公钥为每个收件人加密。所以许多收件人的消息并不比 1 大多少

标签: javascript encryption rsa public-key


【解决方案1】:

杰克米兰博士。

PGP、S/MIME 和其他类似的消息传递解决方案启用多方消息的方式是: 1. 生成消息加密密钥 (MEK),例如,用于 GCM 模式的 AES 密钥, 2.查找每个收件人的公钥, 3. 将 MEK 加密为每个接收者的公钥, 4. 将加密后的 MEK 与加密消息打包, 5. 分发给参与者。

这里的挑战是公钥的安全发现,大多数应用程序都以此为基础,让用户进行手动指纹验证或依赖第三方(如证书颁发机构)来验证密钥与主题的绑定。

您可以在此处找到使用 webcrypto 和单个收件人执行此操作的示例: https://pkijs.org/examples/CMSEnvelopedExample.html

此演示的来源在这里: https://github.com/PeculiarVentures/PKI.js/tree/master/examples/HowToEncryptCMSviaCertificate

【讨论】:

  • 谢谢@rmshrisk 我刚刚看到它看起来很复杂,问题是如果我可以制作自己的风格怎么办,另一个是我必须遵循哪些步骤才能实现标准 CMS?
  • 你当然可以,但你可能会遇到一些陷阱,因此我通常会告诉那些不熟悉的人依赖经过验证的真实格式。另一个是:github.com/square/js-jose 如果您提供更多示例,我们很乐意提供更多帮助。
猜你喜欢
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 2014-06-23
  • 2011-11-10
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多