首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebCrypto:从RSA到RSA的安全转换

WebCrypto:从RSA到RSA的安全转换
EN

Stack Overflow用户
提问于 2017-12-11 06:39:24
回答 1查看 540关注 0票数 2

WebCrypto支持RSA,但强制您为可以执行的不同操作选择填充方案。RSA可以同时执行签名/验证和加密/解密(+密钥包装),但这在webcrypto中是不太可能的。

当我使用RSA-OAEP生成RSA密钥时,同样的密钥可以用于RSA-PSS,但是没有明确的方法来绕过那些使用webcrypto API的用户。

我最初的想法是采取这些步骤来转换键:

  1. 使用exportKeyjwk导出密钥
  2. “修复”alg从(例如) RSA-OAEP-512PS512
  3. “修复”key_ops encrypt-> verify b. decrypt -> sign
  4. 用正确的算法导入“固定”键

当密钥不可导出时,这个系统就会崩溃,我想为私钥(恶意脚本、自xss等)提供额外的安全性。

在算法类型之间进行“转换”的好方法是什么,但保留密钥而不需要导出呢?

EN

回答 1

Stack Overflow用户

发布于 2017-12-11 16:28:39

webcrypto不允许使用密钥进行签名和加密。可能是因为不推荐这种做法。见这个答案https://crypto.stackexchange.com/a/12138/42888

--从密码学上讲,使用相同的RSA密钥对进行签名和加密是安全的,只要密钥对被安全地用于签名,并安全地用于加密。 然而,是一个不好的主意,因为另一个原因是:密钥管理。签名密钥和加密密钥在备份、访问控制、拒绝等方面有不同的要求。在灾难性事件发生时,签名密钥的回退是为了避免将来的伪造,因此不需要对签名密钥进行广泛的备份。相反,加密密钥的后遗症是保留它来解密现有的文档,因此需要可靠地备份。

要回答你的问题,你可以:

  1. 生成RSA密钥作为可提取的,
  2. 将其导出到pcks8或jwk
  3. 将其作为不可提取的两倍导入:key1 1-> RSA-OAEP,key1 2-> RSA-PSS
  4. 销毁原始和可提取的密钥。

然后,生成的键是相等的,不可提取,原始密钥只能在浏览器内存中管理。

由于您将在浏览器中获得两个密钥,如果公钥的接收方不同,请考虑生成用于签名和加密的不同密钥。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47747630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档