web-dev-qa-db-ja.com

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

機能するキーを生成する方法が必要です。私がしようとしていることは明らかに失敗しています。

87
Joey BagODonuts

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

115
Danny Staple

私はキーを生成することができました

apt-get install rng-tools

別のSSHウィンドウで開く

 gpg --gen-key

最初のSSHセッションに戻り、実行します

Sudo rngd -r /dev/urandom

Gpgがキーを生成するまでこれを実行してください!

29
Joey BagODonuts

現在利用可能なエントロピーのバイト数を確認するには、次のコマンドを使用します。

cat /proc/sys/kernel/random/entropy_avail

エントロピーバケットのサイズは4096バイトで、すぐに使い果たす可能性があります。

この小さな「readspeed」ツール( http://1wt.eu/tools/readspeed/ )を使用すると、さまざまな方法でエントロピーバケットが満たされる速度を測定できます。

たとえば、次のように起動します。

$ ./readspeed < /dev/random

マウスを動かします。エントロピーバケットがいっぱいになるとすぐに「readspeed」がエントロピーバケットを空にし、マウスを動かすと少しエントロピーバケットがいっぱいになることがわかります。

さまざまな方法を試してみると、キーボード入力とマウスの動きがそのバケットを補充するための最も効率的な方法のようです。ネットワーク転送とハードドライブのコピーはあまり影響しません。

最後に、次のようなエントロピー生成デバイスがあります: http://www.entropykey.co.uk/

14
Julien Vehent

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シェルを起動することです(多くのユーザーが共有するサーバーでは、Niceである必要がありました)。 untilループは無限なので、キーが生成されたらそれを解除することを忘れないでください。ネットワークトラフィックにエントロピーを増加させるだけです。また、entropy_availカウンターを監視して、反対側でgpgによってどのように満たされ、空にされたかを示します。私の場合、カウンターはすぐに64までいっぱいになり、空に戻されて0に戻りました(gpgが64のチャンクでピックアップされると思います)。サーバーで4096ビットの鍵の生成を3時間以上待っていました。このスクリプトの実行を開始した後、5分未満で終了しました。

9
Raj

gpg --gen-keyで4096キーを生成するために、ヘッドレスUbuntu 14.04サーバーでエントロピーを生成することにしました。

Havegedと呼ばれるエントロピーを生成するためのパッケージがあります。インストールの例:

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を実行した後、キーを取得しました

7
dmmfll

havegedが最善の方法ですが、何もインストールできない場合は、手動でエントロピーを生成できます。このメソッドはgpg --gen-ken私のマシンでは1〜2分で完了します(havegedの場合は10秒と比較)。したがって、約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
1
wisbucky

まあ、それはここに提示されたソリューションと比較して、私が思っていたよりも簡単です:

ls -R /

上記のコマンドで提供されるランダムバイトは、RSA/4096キーペアを生成するために必要なエントロピーを提供するのに十分でした。

以下から引用:https://www.thingy-ma-jig.co.uk/blog/22-01-2010/generate -entropy-gnupg

0
ivanleoncz

Archでpacman-key --initを実行しているときにこの問題に遭遇しました。ここでの他のソリューションはうまく機能しませんでしたが、ルーターにフラッディングpingを送信するだけでうまく機能することがわかりました:ping -f ip.of.my.router

0
Yona Appletree