生成带有密码的 RSA 密钥然后将其剥离比完全没有密码更安全吗?
Disa
指的是如果攻击者窃取了加密密钥,他们还需要窃取保护密钥的密码。
所以Disa
指的是操作安全而不是数学安全。加密的密钥在数学上并不更安全——从暴力攻击的角度来看,熵的水平没有改变1。但硬盘驱动器的盗窃或复制不一定会丢失攻击者的密钥,因为密码可能永远不会存储在计算机上;在其自己的密码管理器之外。
1.除非密钥对的初始熵太差以至于加密密钥暂时增加了更多的熵......
在 OpenSSL 中,完全相同的代码用于生成 RSA 密钥对,无论之后使用该密钥做什么,例如,它是否存储在带有或不带有一些额外加密层的文件中。
但请注意,私钥是敏感对象;您应努力让它们尽可能少地写入物理介质。这通常是围绕openssl
命令行实用程序的应用程序的问题,因为该实用程序倾向于创建文件。应用程序可能希望在 RAM 中生成密钥对并使用它,并且可能将私钥存储在“其他地方”,但如果应用程序依赖于调用openssl
,那么私钥的副本可能会保存到某个硬盘. 在这种情况下,确保对虚假副本进行加密(使用仅保存在 RAM 中的粗随机密码)可以提高安全性。不过,在这种情况下,最好使用 OpenSSL库,直接,而不是命令行工具(无论如何,它一直更像是调试助手)。
据我所知(即使在 Disa 的注释中并不明显),这似乎更安全,主要是如果密钥不是在以后使用的系统上生成的(或者如果您需要存储备份某处的钥匙)。
在这种情况下,密钥将被写入生成它的文件系统上,即使在通常的文件删除之后也会留下痕迹,那么密钥将需要通过网络或任何其他方式(可移动)在目标系统上传输媒体等),它们都会留下痕迹并可能被拦截。即使目标服务器实际上将使用明文版本,这种痕迹和潜在的拦截风险也会影响密钥的加密版本而不是明文版本。
因此,我认为这只会在密钥处理过程中带来比密钥本身更高的安全性,而密钥本身保持不变,无论是否加密生成。