メインコンテンツまでスキップ

3.6. Non-hardware Sources of Randomness (ハードウェア以外のランダム性ソース)

3.6. Non-hardware Sources of Randomness (ハードウェア以外のランダム性ソース)

入力エントロピーの最良のソースは, リング発振器, ディスクドライブタイミング, 熱雑音, または放射性崩壊などのハードウェアベースのランダムソースです。しかし, これらのいずれも利用できない場合, 他の可能性があります。これらには, システムクロック, システムまたは入出力バッファ, ユーザー/システム/ハードウェア/ネットワークのシリアル番号またはアドレスとタイミング, およびユーザー入力が含まれます。残念ながら, これらの各ソースは, 一部の状況下で非常に限定的または予測可能な値を生成する可能性があります。

上記のソースのいくつかは, 各ユーザーがシステムの本質的にランダム性のソースであるマルチユーザーシステムでは非常に強力です。しかし, 小規模なシングルユーザーまたは組み込みシステム, 特に起動時には, 敵が類似の構成を組み立てることが可能かもしれません。これにより, 敵は混合プロセスへの入力を得ることができ, 元々使用されたものと十分に相関して, 徹底的な検索を実用的にする可能性があります。

強力な混合関数を使用した複数のランダム入力の使用が推奨され, 特定の入力の弱点を克服できます。要求された "ランダム" ユーザーキーストロークのタイミングと内容は数百のランダムビットを生成できますが, 保守的な仮定を行う必要があります。たとえば, 1 つの合理的に保守的な仮定は, キーストローク間隔が, その時点までのインターバルのシーケンスで一意である場合にのみ, せいぜい数ビットのランダム性を提供するというものです。同様の仮定は, キーコードが, シーケンスで一意である場合にのみ数ビットのランダム性を提供するというものです。したがって, 以前の値を複製した間隔またはキーコードは, 追加のランダム性を提供しないと仮定されます。これらのタイミングと入力された文字を混合した結果は, クロック値および他の入力とさらに組み合わせることができます。

この戦略により, ターゲットシステムの一部で入力の一部が非常に弱い場合でも, セキュリティのための良好な乱数を生成するためのポータブルコードを実用的にすることができます。しかし, 小規模, シングルユーザー, または組み込みシステムに対する高度な攻撃に対してはまだ失敗する可能性があります。特に敵が過去に生成プロセスを観察できた場合です。ハードウェアベースのランダムソースが依然として望ましいです。