为什么我的熵一直在耗尽?

为什么我的熵一直在耗尽?

因此,我一直在尝试创建一个新的 GPG 密钥,但不断收到这个众所周知的错误:

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 294 more bytes)

因此,经过 20 分钟的鼠标移动后,甚至没有+++++在终端底部出现令人鼓舞的 s,我尝试了似乎已经为其他人解决了问题的方法:我安装rng-tools并运行:

rngd -r /dev/random

但这也没什么用。一点变化都没有。当我运行:

cat /proc/sys/kernel/random/entropy_avail

我的输出从来没有超过 60 左右。

因此,除了眼前的问题(即无法生成新的 GPG 密钥)之外,为什么我的机器会这么快地消耗熵?看来一定有一个潜在问题需要解决。

答案1

要获得更多的熵,请查看我在 Server Fault 上的回答为 PGP 密钥生成熵

该答案的摘要如下:

  • 生成网络和磁盘 IO;
  • 使用 haveged(但在 VM 环境中要小心,请参阅链接)。

至于您对 rngd 的使用,它不会“起作用”。程序 rngd 是一种随机事物的收集器,经过一些去偏和白化后,它将用于提供熵池,该熵池将用于使用 PRNG 生成随机数。因此,rngd 是一个为 Linux 的 PRNG 提供“输入”的收集器。当您使用 时/dev/random,Linux 会估计熵池,如果它认为它足够好,它将使用它为 生成一个新的随机数/dev/random。检查这个有关 LWN 上随机数的技术文章,请参阅“管理员建议”一章

基本上,当调用/dev/random或 gpg 时,您正在使用(并“消耗”)相同的熵池。所以它不会有帮助/工作。使用硬件 RNG 作为 rngd 的源或任何源(如网络摄像头、麦克风等),但您需要适当的驱动程序将它们链接到 rngd。这取决于您是否使用 VM 以及您使用哪个发行版。

注意:如果您运行的是裸机(因此不在客户虚拟机中),则可以将 TPM 用于硬件 RNG。如果您最大的敌人是 NSA,则不建议使用 TPM ;-) 在线阅读有关 TPM 的信息。但如果您想使用它,这里有一种将 TPM 链接到 rngd 的方法(免责声明是我写的这篇文章):http://www.berthon.eu/2015/using-tpm-as-a-source-of-randomness-entropy/

并检查此 PDF 演示文稿以获取使用熵的信息:-)https://www.blackhat.com/docs/us-15/materials/us-15-Potter-Understanding-And-Managing-Entropy-Usage.pdf

相关内容