web-dev-qa-db-ja.com

ランダムキーを押すことは、キージェネレータをシードする安全な方法ですか?

キー生成用のRNGをシードするために、ランダム性のソースとしてランダムキーを入力するように要求する、私が最近使用しているいくつかのプログラムがあります。

これは今でも良い習慣と見なされていますか、それとも/ dev/urandomと会社をエントロピーソースとして利用する方が良いですか?

4
Stack Tracer

はい、でもそれがランダム性を取得する方法です。Linuxおよび他のほとんどのオペレーティングシステムでは、キーが押された正確な時間(ナノ秒単位)が記録されますそしてエントロピープールに注入されました。このプールは、/dev/urandomおよびその他の暗号化ランダムAPIを強化するCSPRNGをシードするために使用されます。

同様の/dev/randomキャラクターデバイスは、blockingとして説明するものです。使用されているすべての暗号化関数が壊れている(最悪のシナリオ)と想定しているため、十分なエントロピーが「収集」されたと考えられる場合にのみランダム性を出力します。キーを入力すると、オペレーティングシステムはそれをエントロピーのソースとして使用し、エントロピーの見積もりを増やし、/dev/randomのブロックを解除します。これにより、そのデバイスを使用するプログラムによるエントロピー収集が高速化されます。だからといって、プログラムが正しいことをしているわけではありません。それらは あるはずです だけ使用されます/dev/urandomこれはブロックせず、依然として暗号的に非常に安全です。 https://www.2uo.de/myths-about-urandom をご覧ください。

ランダム性生成のベストプラクティスに関する関連ドキュメントは BCP 106 です。

2
forest