GPG依赖于熵的产生

时间:2015-10-05 03:58:33

标签: ubuntu gnupg

尝试生成GPG密钥(使用gpg --gen-key)时,它可能会在发出消息后挂起:

没有足够的随机字节可用。请做一些其他的工作 操作系统有机会收集更多熵! (需要278个字节)

gpg(GnuPG)1.4.16

Ubuntu 14.04.2 LTS

3 个答案:

答案 0 :(得分:3)

原来这是一个已知问题: https://bugs.launchpad.net/ubuntu/+source/gnupg/+bug/706011

我通过安装rng-tools解决了这个问题。

sudo apt-get install rng-tools

然后gpg --gen-key按预期工作。

答案 1 :(得分:2)

虽然rng-tools可行,但由于它不能提供真正的熵,因此不建议这样做。请参阅此处的讨论:https://bugs.launchpad.net/ubuntu/+source/gnupg/+bug/706011

对于对此感到沮丧的用户,我发现这些内容在没有鼠标/桌面的服务器上有用。

1)完成创建GPG密钥的过程。如果它挂起等待更多熵,请转到下一步。

2)您可以通过打开终端并键入(这将每秒查看该文件)来观察您的系统有多少熵:

watch -n1 cat /proc/sys/kernel/random/entropy_avail

3)打开第三个终端以生成熵。您可以尝试各种方法来尝试增强熵。以下是我注意到的一些事情,增加了熵足以使gpg工作。请注意,这有点随机(没有双关语)。有时做某事会增加熵;但是当我再次这样做时,却没有:

从互联网上获取一个大文件

wget http://us1.php.net/get/php-7.2.2.tar.bz2/from/this/mirror

做一些向终端打印很多东西的东西:

ls -R /
sudo find /folder/with/lots/of/files/ -type f | xargs grep 'simple string that shows up in lots of files'

4)如果您正在做的事情不会增加entropy_avail,那么请尝试其他方法。

答案 2 :(得分:0)

sudo apt install haveged

这将安装haveged服务,该服务收集熵并更有效地填充/dev/random。安装haveged后,您无需运行任何其他命令,它将自动启动服务。 systemctl status haveged验证服务是否正在运行。您也可以cat /dev/random来证明它可以连续提供值。在我的测试中,gpg --gen-key在10秒钟内完成安装haveged的情况。

如果您不想安装任何东西,则可以通过其他方式生成熵,但是它比haveged慢得多(在我的测试中慢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

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