これには一粒の真実があり、実際には神話よりも真実ですが、それでもこの陳述は、起こっていることの根本的な誤解を反映しています。はい、GPGでキーを生成しながらマウスを動かすのは良い考えです。はい、マウスを動かすと、乱数がランダムになるエントロピーが発生します。いいえ、マウスを動かしてもキーの安全性は向上しません。
暗号化に適したすべての優れたランダムジェネレーター、およびLinuxはそのカテゴリに属し、2つのコンポーネントがあります。
- エントロピー非決定論的であるソース、。エントロピーの目的は、予測できないデータで乱数ジェネレータをブートストラップすることです。エントロピーソースは非決定的である必要があります。そうでない場合、敵は同じ計算を再現する可能性があります。
- 擬似乱数生成器変化内部状態から決定論的な方法で予測不可能な乱数を生成します。
エントロピーは、コンピューターの外部にあるソースから取得する必要があります。ユーザーはエントロピーの1つのソースです。ユーザーが行うことはほとんどランダムではありませんが、キーストロークやマウスの動きの細かいタイミングは予測不可能であり、わずかにランダムです—非常にランダムではありませんが、少しずつ蓄積されます。エントロピーの他の潜在的な原因には、ネットワークパケットのタイミングやカメラまたはマイクのホワイトノイズなどがあります。カーネルのバージョンと構成が異なると、使用するソースのセットが異なる場合があります。一部のコンピューターには、放射性崩壊に基づく専用ハードウェアRNG回路、またはそれほど印象的ではないが、不安定な電子回路があります。これらの専用ソースは、ユーザーが奇妙なことをしなくても、最初の起動時にかなり予測可能な動作をすることができる組み込みデバイスおよびサーバーで特に役立ちます。
Linuxは/dev/random
、およびの/dev/urandom
2つのデバイスを介してプログラムに乱数を提供します。どちらかのデバイスから読み取ると、暗号品質になります。両方のデバイスは、同じ内部RNG状態と同じアルゴリズムを使用して状態を変換し、ランダムバイトを生成します。それらには特有の制限があり、どちらも正しいことではありません。
/dev/urandom
システムがまだ十分なエントロピーを蓄積していない場合、予測可能なデータを返すことができます。
/dev/random
利用可能なエントロピーの量を計算し、十分でない場合はブロックします。これは良い計算ですが、計算は、利用可能なエントロピーの量を各出力ビットで線形的に減少させる理論的な考慮に基づいています。したがって、/dev/random
非常に速くブロックする傾向があります。
Linuxシステムは、内部RNG状態をディスクに保存し、ブート時に復元します。したがって、エントロピーは1つのブートから次のブートに引き継がれます。Linuxシステムがエントロピーに欠けるのは、新しくインストールされたときだけです。システムに十分なエントロピーがあると、エントロピーは減少しません。Linuxの欠陥のある計算のみが減少します。この考慮事項の詳細については、専門の暗号技術者/dev/urandom
が read を使用して暗号鍵を生成することをお勧めします。asoを参照してください。random.cで使用されるエントロピー推定について説明できますか。
マウスを動かすと、システムにエントロピーが追加されます。しかし、gpgはからしか読み取れ/dev/random
ません/dev/urandom
(この問題を解決する方法/dev/random
はと同じ1:9デバイスを作成する/dev/urandom
ことです)。したがって、ランダムでない十分な乱数を受け取るリスクはありません。マウスを動かさない場合、キーはできる限りランダムになります。しかし、起こりうることは/dev/random
、カーネルのエントロピーカウンターが上昇するのを待って、gpgがからの読み取りでブロックされる可能性があることです。