使用 Webcrypto 使用 RSA 加密多个 public 密钥

encrypt to multiple public keys with RSA using Webcrypto

有什么方法可以使用 javascript cryto Api.[=12= 为多个 public 密钥加密数据(这样多个密钥所有者可以使用他们的私钥解密数据) ]

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

谢谢

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

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

    console.log(encrypted);
})

杰克·米兰博士。

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

这里的挑战是 public 密钥的安全发现,大多数应用程序都依赖于此并让用户进行手动指纹验证或依赖 third-party 例如证书颁发机构来验证将键绑定到主题。

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

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