私は、プログラムのランダムデータを生成するために_/dev/urandom
_を使用しています。 _/dev/random
_は、生成された十分なバイトがない場合、_/dev/urandom
_とは異なり、SHAを使用しないため、空にできることを学びました。_/dev/random
_は " カーネルエントロピープール "。どうやら、キーボードのタイミング、マウスの動き、およびIDEタイミングに依存しています。
しかし、これは実際にはどのように機能するのでしょうか。
そして/ dev/random出力を予測可能にするためにエントロピープールに「フィード」することは可能ではないでしょうか?
あなたが言っているのはその場です。はい、理論的には/dev/random
にエントロピーを与えることは可能ですが、カーネルの「ノイズ」ソースの多くを制御して、それを重要にする必要があります。 random.c のソースを見て、/dev/random
がノイズを拾う場所を確認できます。基本的に、かなりの数のノイズソースを制御している場合は、他のソースがエントロピープールに寄与しているものを推測できます。
/dev/urandom
は/dev/random
からシードされた ハッシュチェーン なので、シードを知っていれば、実際に次の数値を予測できます。エントロピープールを十分に制御できる場合は、/dev/urandom
の出力からこのシードを推測できる可能性があります。これにより、/dev/urandom
からのすべての次の数値を予測できますが、 /dev/random
を使い切ってください。そうしないと、/dev/urandom
が再シードされます。
とはいえ、管理された環境でさえ、実際にそれを行う人は見たことがありません。もちろんこれは保証ではありませんが、私は心配していません。
したがって、/dev/urandom
を使用して、エントロピーの待機中にプログラムがブロックしないことを保証します。代わりに、/dev/random
を使用して、マウスを動かしたり、キーボード。
LWNの エントロピーとランダム性について を読んでみてください。うまくいけば、心配が落ち着くでしょう:-)。
それでも心配する必要がある場合は、 [〜#〜] hrng [〜#〜] を取得してください。
Editこれはエントロピーに関する小さなメモです:
エントロピーの概念は一般に理解するのが難しいと思います。 Wikipedia に関する詳細な記事があります。しかし、基本的に、この場合、エントロピーをランダム性として読み取ることができます。
だから私がそれを見ると、あなたは色のついたボールの大きな袋を持っていて、この袋のエントロピーが高いほど、袋から引き出される次の色を予測することが難しくなります。
このコンテキストでは、エントロピープールはランダムなバイトの集まりであり、1つを前のバイトから、または他のバイトから派生させることはできません。つまり、エントロピーが高いということです。
Jbrの回答の深さに感謝します。
空のエントロピープールでipsec pkiコマンドまたは同様のブロックを現在見ている人のための実用的な更新を追加します。
別のウィンドウにrng-toolsをインストールし、pkiコマンドを完了しました。
apt-get install rng-tools
私は factorable で論文を読んでいる最中で、それが言っているセクションを書き留めました:
「ライブラリ開発者向け:デフォルトで最も安全な構成。
OpenSSL
とDropbear
はどちらもデフォルトで/dev/urandom
の代わりに/dev/random
を使用し、Dropbear
デフォルトより安全な手法がオプションとして利用可能であるとしても、安全性の低いDSA署名のランダム性手法を使用することは不可能です。」
著者は、エントロピーが/dev/random
を構築するためにエントロピーを待機している間にハングするアプリケーションのトレードオフに対処し、/dev/urandom
による迅速で安全性の低い結果よりも優れたセキュリティを取得します。