GPGに十分なエントロピーがありません


86

十分なエントロピーを取得しようとするために、バックグラウンドで実行されているプロセスが大量にありますが、まだ失敗しています。

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

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

回答:


112

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


4
また、より深刻な注意事項として、sudo apt-get install rng-toolsUbuntu sudo yum install rng-utils用のrng-utilsパッケージは存在しないため、Fedoraの場合のようにUbuntuを使用している場合に使用できます。
ジェイソンスウェット

4
パッケージの名前rng-toolsはFedoraとEL6の両方で付けられているため、リンクされた記事のタイプミスが疑われます。ところで、リンクが将来停止した場合に備えて、ここで回答の重要な部分と参照用のリンクを提供することをお勧めします。
マイケルハンプトン

11
urandomには「低品質のエントロピー」や「偽のエントロピー」はありません。urandomは、/ dev / randomと同じコードを呼び出します。追加のランダム性をCSPRNGに入力する必要はありません(ブート時を除き、ディストリビューションがそれを処理する必要があります)。これは神話であり、伝播すべきではありません。たとえば、sockpuppet.org / blog / 2014/02/25 / safely
Sebastian Wiesinger


2
最も高く評価されたコメントはナンセンスです。残念ながら、これはSOでよく見ます。警告(完全に間違っている場合でも)は多くの票を獲得し、それらを修正する方法はありません(コメントダウン投票オプションなし)は、神話を取り除くことができないことを意味します。
スティンデウィット

28

キーを生成できました

apt-get install rng-tools

別のSSHウィンドウを開く

 gpg --gen-key

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

sudo rngd -r /dev/urandom

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


9
/dev/urandom重要なキーを生成するためにこれまで使用することは絶対にお勧めしません。
アンドリューバーバー

12
@AndrewBarberナンセンス。推奨される方法です。
デビッドシュワルツ

3
@AndrewBarberその目的のために明示的に設計されています。基本的に/dev/random、設計ミスです。エントロピーがまだ収集されていない場合、最初の(最初の)呼び出し(最初のブート)でのみブロックする必要があります。他のOSでも同様です。代わりに、2つのプールを取得しました。決して使用/dev/randomしないでください。利点はありません。
スティンデウィット

@AndrewBarber代わりに何をお勧めしますか?
qodeninja

13

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

cat /proc/sys/kernel/random/entropy_avail

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

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

たとえば、次を起動します。

$ ./readspeed < /dev/random

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

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

最後に、http//www.entropykey.co.uk/などのエントロピー生成デバイスが利用できます


4
urandomには「低品質のエントロピー」はありません。urandomは、/ dev / randomと同じコードを呼び出します。これは神話であり、伝播すべきではありません。たとえば、sockpuppet.org / blog
Sebastian Wiesinger

この答えは5歳です。私たちはurandomはランダムほど安全ではないと思っていましたが、それ以来、状況は変化しており、urandomは安全と見なされています。
ジュリアンヴェヘント

1
事実は、最初から安全だったということです。警告も7年前には間違っていました。
スティンデウィット

8

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


私もリモートサーバーにルートアクセスできませんでしたが、これはいくつかのエントロピーを作成するのに役立ちました。条件をに変更する必要があると思います[ $COUNT -lt 0 ]。エントロピーが非常に少ないシステムで、時々0になって停止するためです。GPGは本当にエントロピーに飢えています。
アジェイブラフマクシャトリヤ

おかげで、これはエアギャップのあるボックスでいくつかのエントロピーを生成するのに十分なはずです。それは予測可能なので、私は日付を使用しません除いて
grepsedawk

7

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

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


0

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



0

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

一発ギャグ:

while true; do cat /proc/sys/kernel/random/entropy_avail; dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync; done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.