Answers:
获取数据出来的/dev/random
或者/dev/urandom
是绝对不会去帮忙,所有它的作用就是消耗你的熵池,使问题变得更糟。这两个文件之间的主要区别在于,即使内核用尽了熵,urandom
也将继续生成质量较低的随机数据,而random
将阻塞直到收集到新的高质量随机数据。PGP需要尽可能高的随机数据来生成安全密钥,因此它将始终使用/dev/random
。
如果周围有良好的随机数据,或者从另一台服务器导出了一些随机数据,则/dev/random
可以将cat
其导入到服务器中/dev/random
以获取更多信息。但是,您永远不应cat
将同一文件两次/dev/random
。
如果您经常发现自己用尽了熵,还可以考虑安装诸如Haveged之类的守护程序,该守护程序会在后台重新生成熵并/dev/random
根据需要重新填充。
也可能很容易将符号链接/dev/random
到/dev/urandom
,但这应被视为安全隐患,因为使用它生成的任何密钥都可能比应有的安全性低。虽然它可能对不太重要的应用程序有所帮助,但您必须考虑对的其他所有可能的用法/dev/random
,包括其他生成自己的密钥,CSR等的用户。
/dev/random
是现代BSD和Linux上的高质量PRNG。但是,如果没有足够的熵,它将阻塞。另一方面,/dev/urandom
如果没有足够的可用空间,则不会阻塞,但是这种情况下其随机性质量可能会受到影响。在细节上,Linux与各种BSD之间的随机和urandom实现之间有许多微妙的区别,但是以上对于所有AFAIK都是正确的。
ping 8.8.8.8
如果您拥有另一个网络主机,则可以通过简单地ping主机(例如)来产生更多的熵(例如,如果您的RTT <100ms),则尝试每100ms进行ping。和/或find
用于在硬盘上查找文件并在每次文件搜索之间刷新RAM缓存。
/dev/random
它不会在FreeBSD上阻止。
dd if=/dev/random of=/tmp/rndtest bs=64M count=1
在全新启动后运行,它连续运行了2次才能看到生成64MB文件增加的时间。我以为我不会看到urandom作为输入的这种效果,但是与Linux不同,FreeBSD似乎也对它产生了阻碍。
您可以使用haveged
。
haveged
是一个在需要时生成熵的守护程序。
我建议在本地计算机上生成您的gpg密钥,这将比远程计算机具有更好的随机性。然后使用SSH将密钥迁移到您的远程计算机。
本地生成将更快(熵的来源更多),更安全(如果您的计算机未受到感染,则任何人都无法监视进程,更好的随机性)。
如果您仍然想远程生成这些信息:在Linux上,ping 8.8.8.8
如果您拥有另一台网络主机,则只需对主机(例如)进行ping操作,就可以产生更多的熵(例如,如果您的RTT <100ms当然),请每100毫秒执行一次ping操作。和/或find
用于在硬盘上查找文件并在每次文件搜索之间刷新RAM缓存。
haveged
如果在虚拟环境中运行它,也可以安装但要阅读限制:https : //wiki.archlinux.org/index.php/Haveged#Virtual_machines
在基于Debian的系统上,您可以rng-tools
使用atp-get 安装软件包,然后启动守护程序以生成熵:
echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart
在CentOS-6服务器上,rng
守护程序作为基本工具之一安装(至少在我使用过的大多数系统上),并且可以运行以下命令来启动它,以生成熵:
sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart
/dev/random
是高质量PRNG,通常不应阻塞。