我远程登录到虚拟机并尝试生成一个 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 密钥。