回答:
データの取得からの/dev/random
か/dev/urandom
明確にされていない問題がさらに悪化すること、それがどうなるすべてはあなたのエントロピープールを枯渇、助けに行きます。これら2つのファイルの主な違いは、カーネルがエントロピーを使い果たした場合でも、urandom
品質の低いランダムデータを生成し続け、random
新しい高品質のランダムデータを収集できるようになるまでブロックすることです。PGPは、安全なキーを生成するために、可能な限り最高のランダムデータを必要とするため、常にを使用します/dev/random
。
あなたの周りの良いランダムなデータを持っている、または別のサーバのからいくつかをエクスポートする場合/dev/random
、次のことができcat
、それにサーバーの/dev/random
より多くのエントロピーを取得します。あなたはいけcat
二回に同じファイル/dev/random
けれども。
エントロピーが不足していることがよくある場合は、havegedのようなものをインストールすることも検討できます。これは、バックグラウンドでエントロピーを再生成し、/dev/random
必要に応じて再充填するデーモンです。
また、へのシンボリックリンク/dev/random
を/dev/urandom
作成することもできますが、これを使用して生成されたキーは本来よりも安全性が低い可能性があるため、これはセキュリティリスクと見なされます。重要度の低いアプリケーションには役立つかもしれませんが/dev/random
、他のユーザーが独自のキーやCSRなどを生成するなど、他のすべての可能な使用を考慮する必要があります。
/dev/random
は、最新のBSDおよびLinuxでの高品質PRNGです。ただし、十分なエントロピーが利用できない場合はブロックされます。反対に、/dev/urandom
十分な空きがない場合はブロックしませんが、この場合、ランダム性の品質が低下する可能性があります。詳細には、LinuxとさまざまなBSDの間のランダム実装とurandom実装の間に多くの微妙な点がありますが、上記はすべてのAFAIKに当てはまるはずです。
ping 8.8.8.8
別のネットワークホストを所有している場合(たとえば、RTTが100ミリ秒未満の場合)、ホストにpingを実行するだけで、エントロピーをさらに生成できます。および/またはを使用find
して、ハードディスク上のファイルを検索し、各ファイル検索の間にRAMキャッシュをフラッシュします。
/dev/random
は、FreeBSDではブロックしません。
dd if=/dev/random of=/tmp/rndtest bs=64M count=1
新たに起動してから実行してみてください。64MBのファイルを生成する時間を確認するために2回連続して実行しました。urandomを入力としてこの効果を見ることはないと思っていましたが、Linuxとは異なり、FreeBSDも同様にブロックしているようです。
を使用できますhaveged
。
haveged
必要なときにエントロピーを生成するデーモンです。
ローカルマシンでgpgキーを生成することをお勧めします。これは、リモートマシンよりもランダム性がはるかに優れています。次に、SSHを使用してリモートマシンにキーを移行します。
ローカルでの生成はより高速(エントロピーのソースがより多く)で、より安全です(マシンが感染していない場合、誰もプロセスをスパイできず、ランダム性が向上します)。
それでもリモートでそれらを生成したい場合:Linuxでは、ping 8.8.8.8
別のネットワークホストを所有している場合、ホストにpingを実行するだけでエントロピーを生成できます(RTTが100ミリ秒未満の場合)。および/またはを使用find
して、ハードディスク上のファイルを検索し、各ファイル検索の間にRAMキャッシュをフラッシュします。
インストールすることもできhaveged
ますが、仮想環境で実行している場合は制限事項をお読みください:https : //wiki.archlinux.org/index.php/Haveged#Virtual_machines
Debianベースのシステムでは、rng-tools
atp-getを使用してパッケージをインストールし、デーモンを起動してエントロピーを生成できます。
echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart
CentOS-6サーバーでは、rng
デーモンはベースツールの1つとしてインストールされ(少なくとも私が取り組んできたほとんどのシステムでは)、エントロピーを生成するために次のコマンドを実行して起動できます。
sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart
/dev/random
、高品質のPRNGであり、通常はブロックしないことに注意してください。