题 GPG没有足够的熵


我有很多进程在后台运行以尝试获得足够的熵,但我仍然失败。

**We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 210 more bytes)**

我需要一种方法来生成有效的密钥,因为我正在尝试做的事情显然是失败的。


73
2017-12-20 21:20






答案:


你看过RNG了吗?

Fedora / Rh / Centos类型: sudo yum install rng-tools

关于deb类型: sudo apt-get install rng-tools 设置它。

然后跑 sudo rngd -r /dev/urandom 在生成密钥之前。

参考: http://it.toolbox.com/blogs/lim/how-to-generate-enough-entropy-for-gpg-key-generation-process-on-fedora-linux-38022


96
2017-12-20 21:43



另外,更严肃的说明,你可以使用 sudo apt-get install rng-tools 如果你在Ubuntu而不是 sudo yum install rng-utils 就像他们对Fedora一样,因为没有 rng-utils 包存在Ubuntu。 - Jason Swett
该包名为 rng-tools 在Fedora和EL6上,所以我怀疑链接文章中有拼写错误。顺便说一句,最好在这里提供答案的基本部分,并提供参考链接,以防链接在将来失效。 - Michael Hampton♦
urandom中没有“低质量熵”或“假熵”。 urandom调用与/ dev / random相同的代码。无需向CSPRNG提供额外的随机性(启动时除外,您的分发应该处理它)。这是一个神话,不应该传播。请参阅sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers或此视频:media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy - Sebastian
这是另一个关于随机神话的好人。 - Andrew B
最高投票评论是无稽之谈;不幸的是,我在SO上看到了很多。警告(即使完全错误)将获得大量投票,无法纠正它们(没有评论downvote选项)意味着我们无法摆脱神话。 - Stijn de Witt


我能够通过生成密钥

apt-get install rng-tools

在另一个SSH窗口打开

 gpg --gen-key

回到第一个SSH会话并运行

sudo rngd -r /dev/urandom

让这个运行直到gpg生成你的钥匙!


24
2017-12-20 21:42



我肯定会建议不要使用 /dev/urandom 用于生成任何重要的密钥。 - Andrew Barber
@AndrewBarber胡说八道。这是推荐的方法。 - David Schwartz
@AndrewBarber它是为此目的而明确设计的。基本上, /dev/random 是一个设计错误。它应该只在第一次(永远)调用时阻止(在第一次启动时),当时还没有收集任何熵。就像在其他操作系统上一样。相反,我们现在有两个游泳池。永远不要使用 /dev/random 它没有任何优势。 - Stijn de Witt
@AndrewBarber你会推荐什么? - qodeninja


要检查当前可用的熵的字节数,请使用

cat /proc/sys/kernel/random/entropy_avail

熵桶大4096字节,很快就会耗尽。

使用这个小'readpeed'工具(http://1wt.eu/tools/readspeed/),您可以测量熵桶用不同方法填充的速度。

例如,启动:

$ ./readspeed < /dev/random

并移动你的鼠标。你会看到'readspeed'在填充后立即清空熵桶,当你移动鼠标时,它会填满一些。

尝试不同的方法,似乎键盘输入和鼠标移动是补充该桶的最有效的方法。网络传输和硬盘副本没有太大影响。

最后,有熵生成设备可用,例如: http://www.entropykey.co.uk/


13
2017-12-20 21:52



urandom中没有“低质量的熵”。 urandom调用与/ dev / random相同的代码。这是一个神话,不应该传播。例如,参见 sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers 或者这个视频: media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy - Sebastian
这个答案是5岁。我们认为urandom当时并不像随机那么安全,但事情发生了变化,因为urandom被认为是安全的。 - Julien Vehent
事实上它从一开始就是安全的。 7年前的警告也是错误的。 - Stijn de Witt


rng-tools为+1

万一你陷入困境 - 无法在没有连接输入硬件(声卡,键盘,鼠标)的无头服务器上安装新软件(rng-tools)。您可以从另一个终端运行这个简单的代码连接到同一个服务器,添加到熵。如果你在开始之前或之后开始运行它并不重要 gpg --gen-key

$ nice -n 19 bash
$ until [ $COUNT -lt 1 ]; do
  let COUNT=`cat /proc/sys/kernel/random/entropy_avail`
  echo "`date` COUNTER $COUNT"
done

第一行是启动一个新的bash shell,优先级较低(我需要在很多用户共享的服务器上运行良好)。 until循环是无限的,因此请记住在生成密钥后将其中断。 它所做的只是导致网络流量增加熵。它还监视entropy_avail计数器,以显示它是如何通过gpg在另一侧填充和清空的。在我的情况下,计数器迅速填满64并被清空回到0(猜测gpg在64块中获得)。我在服务器上等待超过3小时的4096位密钥生成。开始运行此脚本后,它在5分钟内完成。


6
2018-05-25 17:08



我也没有远程服务器上的root访问权限,这有助于创建一些熵。我认为条件应该改为 [ $COUNT -lt 0 ]。因为对于一个系统 真 熵越少,有时达到0并停止。 GPG真的很熵。 - Ajay Brahmakshatriya


我被绑定并决定在我的无头Ubuntu 14.04服务器上生成熵以生成4096密钥 gpg --gen-key

有一个用于生成熵的包,称为hasged。安装示例:

sudo apt-get install haveged

我不得不 sudo apt-get install rng-tools 因为它是以下测试中的依赖项。

查看是否由hasged生成熵的测试示例:

cat /dev/random | rngtest -c 1000

任何随机数都可以接受极少量的故障   发电机,但你可以经常看到998-1000成功   当使用悬停时。

我在这里的教程中发现了它:

https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged

我现在跑完了钥匙 gpg --gen-key


4
2018-06-14 11:47