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

**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)**


我需要一种生成密钥的方法可以正常工作,因为我要尝试执行的操作显然失败了。

#1 楼

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

评论


另外,更重要的是,如果您在Ubuntu上,则可以使用sudo apt-get install rng-tools,而不是像Fedora那样使用sudo yum install rng-utils,因为Ubuntu没有rng-utils软件包。

–詹森·斯威特(Jason Swett)
2011年1月17日17:50

该软件包在Fedora和EL6上都被称为rng-tools,因此我怀疑链接文章中有错字。顺便说一句,最好在此处提供答案的重要部分,并提供链接以供参考,以防将来链接失效。

–迈克尔·汉普顿
2012年12月31日在2:40

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

–塞巴斯蒂安·维辛格
2015年12月30日11:30



这是关于乌兰多姆神话的另一个好例子。

–安德鲁(Andrew B)
15年12月31日在15:46

基本上,GPG已损坏,无法从/ dev / random读取,然后阻塞,即从/ dev / urandom阻塞,永远不会阻塞。网络上充满了有关它的问题。

– Stijn de Witt
17年6月27日在8:06

#2 楼

我能够通过

apt-get install rng-tools


生成密钥,在另一个SSH窗口中打开

 gpg --gen-key


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

sudo rngd -r /dev/urandom


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

评论


我绝对建议不要使用/ dev / urandom来生成任何重要的密钥。

–安德鲁·巴伯(Andrew Barber)
2010-12-21在7:09

@AndrewBarber废话。这是推荐的方法。

– David Schwartz
16年5月25日在19:39

@AndrewBarber它是专门为此目的而设计的。基本上,/ dev / random是设计错误。它应该只在第一次(一次)调用(第一次启动时)阻塞时,才尚未收集到任何熵。就像在其他操作系统上一样。相反,我们现在有两个游泳池。只是永远不要使用/ dev / random它没有优势。

– Stijn de Witt
17年6月27日在8:09

@AndrewBarber您会推荐什么?

–qodeninja
18年8月14日在22:23

#3 楼

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

cat /proc/sys/kernel/random/entropy_avail


熵存储桶为4096字节大,可以很快耗尽。

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

例如,启动:

$ ./readspeed < /dev/random


并移动鼠标。您会看到'readspeed'在填充后立即清空熵存储桶,并且在移动鼠标时会充满一点。

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

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

评论


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

–塞巴斯蒂安·维辛格
15年12月30日在11:29

这个答案是5岁。我们认为当时的urandom并不像随机的那么安全,但是此后情况发生了变化,并且urandom被认为是安全的。

–朱利安·韦恩特(Julien Vehent)
15年12月31日在15:10

事实是从一开始就是安全的。这些警告在7年前也是错误的。

– Stijn de Witt
17年6月27日在8:11

#4 楼

+1为rng-tools

如果您陷入我的境地-没有权限在没有输入硬件(无声卡)的无头服务器上安装新软件(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(我需要很好在许多用户共享的服务器上)。
直到循环是无限的,所以请记住在生成密钥后就将其中断。
它所做的所有事情都会导致网络流量增加熵。它还监视entropy_avail计数器,以显示gpg如何填充和清空另一端。在我的情况下,计数器迅速填满到64,然后清空为0(猜测gpg在64的块中拾取)。我在服务器上等待4096位密钥生成超过3个小时。开始运行此脚本后,不到5分钟即可完成。

评论


我也没有远程服务器上的root用户访问权限,因此可以创建一些熵。我认为条件应更改为[$ COUNT -lt 0]。因为对于一个熵实际上很少的系统,它有时达到0并停止。 GPG确实很饿。

–阿杰(Ajay Brahmakshatriya)
18-10-18在23:58



谢谢,这对于我在气密的盒子上产生一些迷惑物应该足够了。除了我不使用日期,因为那是可以预见的

– Grepsedawk
19年5月24日19:45



#5 楼

我被束缚并决心在无头的Ubuntu 14.04服务器上生成熵,以便使用gpg --gen-key生成4096个密钥。有一个用于生成熵的程序包称为Haveged。安装示例:

sudo apt-get install haveged

我必须安装sudo apt-get install rng-tools,因为它是以下测试中的依赖项。

一个测试示例,查看是否熵是由Haveged产生的:

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后我现在有了密钥

#6 楼

haveged是最好的方法,但是,如果您无法安装任何东西,则可以手动生成熵。此方法使gpg --gen-ken在我的计算机上可以在1-2分钟内完成(与haveged相比,只需10s即可完成)。因此大约慢了10倍。

gpg --gen-key运行时,在另一个终端上运行它:

 while true; do
    # print entropy available
    cat /proc/sys/kernel/random/entropy_avail
    # write a 1 MB stream of zeros to /tmp/foo
    # "conv=fdatasync" flushes the disk cache
    dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync
done
 


一个衬纸:

 while true; do cat /proc/sys/kernel/random/entropy_avail; dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync; done
 


#7 楼

在arch中运行pacman-key --init时遇到了这个问题。此处的其他解决方案对我而言效果不佳,但是我发现对路由器进行泛洪仅能很好地工作:ping -f ip.of.my.router

#8 楼

好吧,与这里介绍的解决方案相比,它比我想的要容易:

ls -R /


上面命令提供的随机字节足以提供所需的用于生成RSA / 4096密钥对的熵。

来自:https://www.thingy-ma-jig.co.uk/blog/22-01-2010/generate-entropy-gnupg