WebCrypto支持RSA,但强制您为可以执行的不同操作选择填充方案。RSA可以同时执行签名/验证和加密/解密(+密钥包装),但这在webcrypto中是不太可能的。
当我使用RSA-OAEP生成RSA密钥时,同样的密钥可以用于RSA-PSS,但是没有明确的方法来绕过那些使用webcrypto API的用户。
我最初的想法是采取这些步骤来转换键:
exportKey和jwk导出密钥alg从(例如) RSA-OAEP-512到PS512key_ops
encrypt-> verify
b. decrypt -> sign当密钥不可导出时,这个系统就会崩溃,我想为私钥(恶意脚本、自xss等)提供额外的安全性。
在算法类型之间进行“转换”的好方法是什么,但保留密钥而不需要导出呢?
发布于 2017-12-11 16:28:39
webcrypto不允许使用密钥进行签名和加密。可能是因为不推荐这种做法。见这个答案https://crypto.stackexchange.com/a/12138/42888
--从密码学上讲,使用相同的RSA密钥对进行签名和加密是安全的,只要密钥对被安全地用于签名,并安全地用于加密。 然而,是一个不好的主意,因为另一个原因是:密钥管理。签名密钥和加密密钥在备份、访问控制、拒绝等方面有不同的要求。在灾难性事件发生时,签名密钥的回退是为了避免将来的伪造,因此不需要对签名密钥进行广泛的备份。相反,加密密钥的后遗症是保留它来解密现有的文档,因此需要可靠地备份。
要回答你的问题,你可以:
RSA-OAEP,key1 2-> RSA-PSS然后,生成的键是相等的,不可提取,原始密钥只能在浏览器内存中管理。
由于您将在浏览器中获得两个密钥,如果公钥的接收方不同,请考虑生成用于签名和加密的不同密钥。
https://stackoverflow.com/questions/47747630
复制相似问题