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

5. Mixing (混合)

5. Mixing (混合)

強力で信頼性の高いハードウェアエントロピーソースがない場合に推測不可能な乱数を取得するための最良の全体的な戦略は何ですか? それは, 多数の相関していないソースから入力を取得し, それらを強力な混合関数で混合することです。そのような関数は, 組み合わされている他の量がたまたま固定されているか簡単に推測可能である (低エントロピー) 場合でも, ソースのいずれかに存在するエントロピーを保持します。このアプローチは, ハードウェアも故障する可能性があるため, 優れたハードウェアソースがある場合でも推奨される場合があります。ただし, これは追加されたソフトウェアの複雑さによる全体的な障害の可能性の増加と比較検討する必要があります。

セクション 3 にリストされているような良好なソースを使用し, このセクションで説明されているように混合したら, 強力なシードがあります。これは, セクション 6 および 7 で説明されているように, 大量の暗号学的に強力な素材を生成するために使用できます。

強力な混合関数は, 入力を組み合わせて出力を生成する関数であり, 各出力ビットはすべての入力ビットの異なる複雑な非線形関数です。平均して, 任意の入力ビットを変更すると, 出力ビットの約半分が変更されます。しかし, 関係が複雑で非線形であるため, 特定の入力ビットが変更されたときに特定の出力ビットが変更されることは保証されていません。

セクション 4 で説明したように, 0 または 1 に偏っているビットストリームまたはやや予測可能なパターンを持つビットストリームを, よりランダムなより短いストリームに変換する問題を考えます。これは単に, 強力な混合関数が望まれる別のケースであり, 入力ビットを混合してより少ない数の出力ビットを生成します。セクション 4.1 で示された技術は, 多数のビットのパリティを使用して, それらを連続的に XOR した結果にすぎません。これは, 以下ですぐに些細な混合関数として検討されます。より強力な混合関数を使用して偏ったビットのストリームのランダム性をより多く抽出することは, セクション 5.2 で検討されます。[NASLUND] も参照してください。