为PGP密钥生成熵

我login到一个虚拟机远程,并试图产生一个4096位的PGP密钥,它只是永远挂起,因为没有熵,因为我正在通过远程桌面工作,它可能不会检测到鼠标移动为熵。

我怎样才能生成一些?

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

/dev/random/dev/urandom获取数据肯定不会有帮助,它只会耗尽你的熵池,使问题变得更糟。 这两个文件的主要区别在于,即使内核用完了,随机的随机数据也会随机产生,而random会阻塞,直到收集到新的高质量的随机数据为止。 PGP需要尽可能高的随机数据来生成安全密钥,所以它总是使用/dev/random

如果你有很好的随机数据,或者从另外一台服务器的/dev/random导出一些数据,你可以将它放到服务器的/dev/random以获得更多的熵。 尽pipe如此,你不应该把相同的文件两次捕获到/dev/random

如果你经常发现自己的熵不够用 ,你也可以考虑安装像hasged这样的守护进程,在后台重新生成熵,并根据需要重新填写/dev/random

也可以将/dev/random发送到/dev/urandom ,但是这应该被认为是一种安全风险,因为使用它产生的任何密钥可能都不如其应该那样安全。 虽然它可能有助于减less一个关键的应用程序,但您必须考虑其他可能的/dev/random ,包括其他用户生成自己的密钥,CSR等。

你可以使用haveged

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

在基于Debian的系统上,您可以使用atp-get安装rng-tools软件包,然后启动守护程序以生成熵:

 echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart 

在CentOS-6服务器上, rng守护进程作为基本工具之一安装(至less在我工作的大多数系统上),并且可以运行以下命令启动它,以便生成熵:

 sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart 

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

在本地生成将会更快(更多的熵来源),更安全(如果你的机器没有被感染,没有人可以监视进程,更好的随机性)。

如果你还想远程生成这些文件:在Linux上,如果你拥有另一台networking主机,只需ping一台主机就可以生成更多的熵(例如ping 8.8.8.8 ),每100ms尝试ping一次(如果你的RTT <100ms) 。 和/或使用find来查找硬盘上的文件,并在每个文件search之间刷新RAMcaching。

你也可以安装haveged但读取的限制,如果你在虚拟环境中运行它: https : haveged

 sudo yum install haveged && sudo systemctl start haveged 

绝对适用于CentOS 7.2虚拟机。 有时候你想创build一个虚拟机上的GPG密钥,如果你创build了一堆,并希望你的钥匙圈完好无损。