GPG 没有足够的熵

Joe*_*uts 94 linux ubuntu 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)**
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*ple 121

你看过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

  • 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 (11认同)
  • [这是关于 urandom 神话的另一个好消息。](http://www.2uo.de/myths-about-urandom/) (7认同)
  • 此外,更严肃地说,如果你在 Ubuntu 上,你可以使用 `sudo apt-get install rng-tools` 而不是像 Fedora 那样使用 `sudo yum install rng-utils`,因为没有 `rng-utils`存在适用于 Ubuntu 的软件包。 (4认同)
  • 这个包在 Fedora 和 EL6 上都被命名为 `rng-tools`,所以我怀疑链接文章中有错字。顺便说一句,最好在此处提供答案的基本部分以及参考链接,以防将来链接失效。 (4认同)
  • 基本上 GPG 从 /dev/random 读取,然后阻塞,从 /dev/urandom 读取的 iso 从不阻塞。网络上充满了关于它的问题。 (3认同)
  • 得票最多的评论是胡说八道;不幸的是,我在 SO 上看到了很多。警告(即使完全错误)会得到很多选票并且无法纠正它们(没有评论downvote选项)意味着我们无法摆脱神话。 (2认同)

Joe*_*uts 29

我能够通过

apt-get install rng-tools
Run Code Online (Sandbox Code Playgroud)

在另一个 SSH 窗口中打开

 gpg --gen-key
Run Code Online (Sandbox Code Playgroud)

回到你的第一个 SSH 会话并运行

sudo rngd -r /dev/urandom
Run Code Online (Sandbox Code Playgroud)

让它运行直到 gpg 生成您的密钥!

  • @AndrewBarber 胡说八道。这是推荐的方法。 (13认同)
  • 我绝对建议不要使用`/dev/urandom` 来生成任何重要的密钥。 (9认同)
  • @AndrewBarber 它是专门为此目的而设计的。基本上,`/dev/random` 是一个设计错误。当尚未收集任何熵时,它应该只在第一次(永远)调用(第一次启动时)时阻塞。就像在其他操作系统上一样。相反,我们现在有两个池。永远不要使用`/dev/random`,它没有任何优势。 (3认同)

Jul*_*ent 14

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

cat /proc/sys/kernel/random/entropy_avail
Run Code Online (Sandbox Code Playgroud)

熵桶有 4096 字节大,可以很快耗尽。

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

例如,启动:

$ ./readspeed < /dev/random
Run Code Online (Sandbox Code Playgroud)

并移动鼠标。您会看到 'readspeed' 一填满熵桶就会清空它,当您移动鼠标时,它会填满一点。

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

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

  • urandom 中没有“低质量熵”。urandom 调用与 /dev/random 相同的代码。这是一个神话,不应传播。参见例如 http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers/ 或此视频:https://media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy (4认同)
  • 事实上,从一开始它就很安全。七年前的警告也是错误的。 (3认同)

小智 10

+1 用于 rng 工具

如果您像我一样陷入困境 - 没有权限在几乎没有连接输入硬件(声卡、键盘、鼠标)的无头服务器上安装新软件(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
Run Code Online (Sandbox Code Playgroud)

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


dmm*_*fll 7

我被绑定并决定在我的无头 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