2

在 WebCrypto/Subtle 加密 API 中,您可以生成密钥等等。然而,似乎明显缺乏.destroyKey()或类似的东西。

是否在引用计数达到零或类似情况时清理键?有没有办法从内存中显式销毁/删除密钥?

请注意,我担心的不是安全问题,因为我知道这不会带来太多的安全好处,尽管我担心资源泄漏等问题。无法明确地清理自己的自我感觉很奇怪。

4

1 回答 1

3

网络密码学规范写道

作者应该知道,本规范对如何存储底层加密密钥材料的实现没有规范要求。唯一的要求是密钥材料不暴露给脚本,除非通过使用 exportKey 和 wrapKey 操作。

一旦所有对它的引用消失,该规范没有对实现如何处理关键材料提出规范要求。也就是说,符合要求的用户代理不需要将密钥材料归零,即使在所有对 CryptoKey 的引用都消失之后,它仍然可以在设备存储或设备内存上访问。

也就是说,用户代理可以选择在其CryptoKey符合垃圾收集条件时立即丢弃关键数据,但也可以选择将数据保留更长时间,例如直到导航到不同页面时丢弃整个浏览上下文或关闭浏览器选项卡。

在实践中,这种差异不太重要:您可以在任何支持网络的设备的内存中容纳数千甚至数百万个密钥,因此由于延迟收集密钥材料而耗尽内存的可能性极小。而且由于浏览器实现者有保持低内存使用的动机,大多数人会选择在收集CryptoKey.

于 2021-05-12T01:49:08.210 回答