为 PGP 密钥生成熵

为 PGP 密钥生成熵

我远程登录到虚拟机并尝试生成一个 4096 位 PGP 密钥,但它一直挂起,因为没有熵,而且由于我通过远程桌面工作,它可能无法将鼠标移动检测为熵。

我怎样才能生成一些?

我试过了cat /dev/urandom > /dev/null,但是没有帮助。

答案1

获取数据出去或者肯定/dev/random/dev/urandom不是不会有所帮助,但它会耗尽你的熵池,使问题更加严重。这两个文件的主要区别在于,即使内核耗尽熵,它urandom仍会继续生成质量较低的随机数据,而它random会阻塞,直到它能够收集到新的高质量随机数据。PGP 需要尽可能高的随机数据来生成安全密钥,因此它将始终使用/dev/random

如果你有好的随机数据,或者从其他服务器导出一些数据/dev/random,你cat可以进入您的服务器/dev/random会获得更多的熵。但是您不应该将cat同一个文件放入两次/dev/random

如果你经常发现自己的熵不够,你也可以考虑安装类似哈格德,一个在后台重新生成熵并/dev/random根据需要重新填充的守护进程。

此外,符号链接/dev/random到也是一种诱惑/dev/urandom,但这应被视为一种安全风险,因为使用它生成的任何密钥可能都比它们应有的安全性要低。虽然它可能对一个不太重要的应用程序有帮助,但您必须考虑 的所有其他可能用途/dev/random,包括其他用户生成自己的密钥、CSR 等。

答案2

您可以使用haveged

haveged是一个在需要时生成熵的守护进程。

答案3

我建议在本地机器上生成 gpg 密钥,这样比远程机器的随机性要好得多。然后使用 SSH 将密钥迁移到远程机器。

本地生成会更快(熵源更多),更安全(如果您的机器未被感染,没有人可以监视该过程,随机性更好)。

如果您仍想远程生成这些:在 Linux 上,您可以通过简单地 ping 主机来生成更多熵(例如ping 8.8.8.8)如果您拥有另一个网络主机,请尝试每 100ms 进行一次 ping(当然,如果您的 RTT <100ms)。和/或使用它find来查找硬盘上的文件并在每次文件搜索之间刷新 RAM 缓存。

您也可以安装,haveged但如果在虚拟环境中运行它,请注意限制:https://wiki.archlinux.org/index.php/Haveged#Virtual_machines

答案4

sudo yum install haveged && sudo systemctl start haveged

绝对适用于 CentOS 7.2 VM。如果您要创建一堆 GPG 密钥并且希望密钥环完整无损,有时您需要在虚拟机上创建 GPG 密钥。

相关内容