我可以通过在同一时间和日期生成 RSA 密钥对来恢复它们吗?

我可以通过在同一时间和日期生成 RSA 密钥对来恢复它们吗?

我想用 openssl 生成一个 rsa 密钥对。出于安全原因(例如丢失),我想问一下,是否可以使用 openssl 并在精确的日期和时间(精确到秒的同一日期和同一时间)执行相同的 genrsa 命令来重新生成这些密钥对?或者密钥的生成是否还取决于其他参数,例如使用的硬件等?

答案1

不。加密密钥生成不仅仅基于时钟秒数或硬件 ID。这些都是可预测的来源,这就是完全相反RSA 密钥必须是随机的——从字面上看,整个要点是密钥应该是无法预测的,即“随机的”。

(换句话说,加密密钥与序列号或许可证密钥不同!)

为了实现这种不可预测性,OpenSSL 使用操作系统提供的随机数据(例如 Linux 上的 /dev/urandom)为其生成器提供种子,操作系统从各种“噪声源”收集此类数据 - 例如纳秒分辨率时钟、按键之间的时间和硬件生成的随机数据。(这是一个详细分析了解它的工作原理。

基本上,整个过程旨在防止阻止某人做你想做的事。

尽管如果你创建了一个虚拟机,在运行时对其进行快照(以便可以将其恢复到完全相同的 CPU 和内存状态),并且让同一个实时快照的两个相同克隆运行相同的“genkey”纳秒准确度,那么他们可能会得到相同的结果。但他们可能仍然不会得到相同的结果。

相关内容