十分なエントロピーを得るためにバックグラウンドで実行されている大量のプロセスがありますが、それでも失敗します。
**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)**
機能するキーを生成する方法が必要です。私がしようとしていることは明らかに失敗しています。
RNGを見たことがありますか?
Fedora/Rh/Centosタイプ:Sudo yum install rng-tools
Debタイプの場合:Sudo apt-get install rng-tools
を使用して設定します。
次に、キーを生成する前にSudo rngd -r /dev/urandom
を実行します。
私はキーを生成することができました
apt-get install rng-tools
別のSSHウィンドウで開く
gpg --gen-key
最初のSSHセッションに戻り、実行します
Sudo rngd -r /dev/urandom
Gpgがキーを生成するまでこれを実行してください!
現在利用可能なエントロピーのバイト数を確認するには、次のコマンドを使用します。
cat /proc/sys/kernel/random/entropy_avail
エントロピーバケットのサイズは4096バイトで、すぐに使い果たす可能性があります。
この小さな「readspeed」ツール( http://1wt.eu/tools/readspeed/ )を使用すると、さまざまな方法でエントロピーバケットが満たされる速度を測定できます。
たとえば、次のように起動します。
$ ./readspeed < /dev/random
マウスを動かします。エントロピーバケットがいっぱいになるとすぐに「readspeed」がエントロピーバケットを空にし、マウスを動かすと少しエントロピーバケットがいっぱいになることがわかります。
さまざまな方法を試してみると、キーボード入力とマウスの動きがそのバケットを補充するための最も効率的な方法のようです。ネットワーク転送とハードドライブのコピーはあまり影響しません。
最後に、次のようなエントロピー生成デバイスがあります: http://www.entropykey.co.uk/ 。
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分未満で終了しました。
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回のエラーが頻繁に発生することが予想されます。
私はここのチュートリアルでそれについて知りました:
gpg --gen-key
を実行した後、キーを取得しました
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
まあ、それはここに提示されたソリューションと比較して、私が思っていたよりも簡単です:
ls -R /
上記のコマンドで提供されるランダムバイトは、RSA/4096キーペアを生成するために必要なエントロピーを提供するのに十分でした。
以下から引用:https://www.thingy-ma-jig.co.uk/blog/22-01-2010/generate -entropy-gnupg
Archでpacman-key --init
を実行しているときにこの問題に遭遇しました。ここでの他のソリューションはうまく機能しませんでしたが、ルーターにフラッディングpingを送信するだけでうまく機能することがわかりました:ping -f ip.of.my.router