必要なのは、「それにアクセスするために、この小さな追加的ハードウェアやソフトウェアは、必要不可欠であり、有用であること」という、コンピュータベンダーが共有している価値観です。現在、「エントロピーの源泉」に特化したパートを含む標準を策定中です。乱雑性?』というように、要件を定量化することは、可能か?」その答えは、「さほど必要ではない」となります。以上の強い鍵とする素材を要求する可能性は低いといえます。節において説明されるように、強い乱雑な種(初期値)から暗号技術的に強いシーケンスを使って生成できます。回、生成される)数百の乱雑なビット列で十分です。秒位、待つ我慢ができる必要があります。これらの数は、普通に達成可能です。これは、コイン・トスを繰り返すことによって達成される可能性があり、ほとんど、あらゆるハードウェアに基づくプロセスは、はるかに早い傾向があります。English下記のように、多くのコンピュータは、真性乱数を生成するために(注意を払って)使うことができるハードウェア部品を備えています。English多くのコンピュータは、マイクからの音声やカメラからのビデオ入力のような、何らかの現実世界のアナログ源泉をデジタル化する入力を備えて製造されるようになってきています。音源が接続されていない音声デジタイザや、レンズにキャップがされたカメラからの「入力」は、要するに、熱雑音です。そのシステムがすべてを検出できるだけの増幅能力をもつ場合、このような入力は、合理的に高品質な乱雑なビット列を提供できます。この手法は、そのハードウェア実装に極めて強く依存します。デバイス」から、マイクジャックに何も挿さずに入力を得たり、あるいは、マイクが低レベルな背後のノイズのみを拾うようにして、入力を得ることができます。ハードウェア故障の場合、何らかのチェックをすること無しに、これを信頼してはいけませんが、このようなデータは、要するに、乱雑なノイズであり、これは平滑化される必要があります。流のコマンドラインで、膨大な量の中程度の品質の乱雑なデータを生成できます。Jakobsson]。システムに低レベルのディスクシーク時間測定器を追加することは、この乱雑性を含む一連の測定結果を作り出します。ような有意な処理が必要とされます。作り出せること」を示しました。処理速度の向上は、ディスク動作スケジュールを改善したり、ディスク・シーク頻度を向上し、このテクニックで可能な乱雑なビットの生成を高速化させます。このテクニックは、多くのオペレーティングシステムのライブラリに含まれる)乱数生成器中に使われています。キャッシュにヒットさせるシーク時間がとても短く、単純に無視される場合、キャッシュメモリをディスクコントローラに入れることは、このテクニックについて、あまり効果がありません。English集積回路が設計されたり、あるいは、試作される場合、自走式(free-running)リングオシレータを作るために、奇数個の論理ゲートを、直列に接続することができます。一定周期(例えば、安定的な水晶発振オシレータによって決定されるもの)でリングオシレータ上の点をサンプリングすることによって、一定量のエントロピーが取り出せます。(これは、自走式オシレータのタイミング変動に起因します。)互いに素な長さをもつ少数のリングオシレータからサンプリングされた値の排他的論理和をとることによって、エントロピー値を増加することが可能です。「たとえリングオシレータが、どういうわけか相互に同期してロックしてしまうような場合にも、なお、サンプリングされるビットの遷移があるように、奇数個のリングオシレータが使われること」が、しばしば推奨されます。ひとつの可能性のある発信源は、雑音が多いダイオードの出力です。参照)のと同様に、強く平滑化されなければなりません。特定の設計に依存して作り出されるエントロピーの量を決定するために設計検討が必要とされます。いずれにせよ、これらは、現代の基準では、取るに足らない量のハードウェア負担の良い発信源になれます。下記の回路を提案します。ここには、リングオシレータ間の分離や、望まない同期化等を避けるためのクロック回路からの分離、および大量の後処理についての設計における相当の注意が示されています。Englishコンピュータ時計や、同様のオペレーティングシステム/ハードウェアの値は、それらの仕様に表現されていることより、顕著に少ないビット数の予測困難性しか提供しません。(例えば、マイクロ秒精度の時計を)提供する可能性がありますが、一方、「同一の」システムの異なる設定は、常に同一の低位ビットを提供する可能性があり、かなり低い精度で上位ビットのみカウントします。これは、「たとえ時計の公称精度に基づいて値が変化する『必要がある』十分な時間が経過した場合でも、連続する時刻の読み出しが同値を作り出す可能性があること」を意味します。コードを設計することは、格別、挑戦に値するものです。システム設計者は、コードが実行される予定のシステム時計の特性を知っているとは限らないからです。アドレスのような)ハードウェアシリアル番号の利用は、人が推測するより少ないビットの固有性しか提供しない可能性もあります。このような数は、通常、相当に構造化されており、サブフィールドは、制限された範囲の候補値のみ、もしくは、およその作成日や他のデータに基づいて容易に推測可能な値をもつ可能性があります。コンピュータとイーサネットアダプタの両方を製造する会社が、(少なくとも内部的には)自社のアダプタを使う可能性が高く、これは、組み込まれたアドレスの範囲を顕著に制限します。上記のような問題は、コードが様々なコンピュータのプラットフォームやシステムに移植される予定である場合、コードが予測困難な数を作り出すことを困難にします。Englishマウスの移動、打鍵、および同様なユーザによるイベントのタイミングや内容を測定することができます。これは、一定の資格をもつ推測困難なデータの合理的な源泉です。マシンによっては、打鍵のような入力は、バッファに貯められることがあります。ユーザの打鍵間隔は、十分な多様性と予測困難性をもつ可能性がありますが、その多様性にアクセスする容易なやり方が無い可能性があります。別の問題は、「タイミングの詳細をサンプリングするための標準的手法が存在しないこと」です。このことは、このテクニックに基づく広範なマシンへの配布を意図された標準ソフトウェアの構築を困難にしています。マウスの移動と実際の打鍵の量は、通常、タイミングにアクセスするより簡単ですが、それらの予測困難性は、低下する可能性があります。ユーザは、反復的な入力を提供する可能性があるからです。(ネットワークパケットの到着時刻のような)他の外部イベントも、注意を払って使うことができます。攻撃者によるこのようなネットワークトラフィック測定の操作の可能性と、システム起動時における履歴の欠如が、注意深く考慮されなければなりません。この入力が捜査の対象となる場合、これを、エントロピーの源泉として信頼してはなりません。原則として、放射能検出や、適切に備えられたコンピュータにおける温度測定のように、ほとんどすべての外部センサを使うことができます。各場合において、「どの程度、このデータは、攻撃者による操作の対象となるか?」と、「どの程度のエントロピーまで、これは実際に提供できるのか?」について、注意深い考察が、なされなければなりません。上記のテクニックは、測定される量にアクセス権限をもたない攻撃者に対して、極めて強力です。事後的に人の乱雑な種を破ろうとしている攻撃者に対して強力です。すべての場合において、より正確に人が外部センサーのタイミングもしくは値を測定できるほど、より速く人はビット列を生成できます。English入力エントロピーの最善の源泉は、リングオシレータ、ディスクドライブのタイミング、熱雑音もしくは放射性物質の崩壊のようなハードウェアに基づく乱雑な源泉です。これらのいずれもが利用不能な場合、他の可能性があります。シリアル番号/アドレス/タイミング、およびユーザ入力が含まれます。残念ながら、これらの源泉の各々は、一定の環境において、非常に限られた値、もしくは、予測可能な値しか作り出せません。上記の源泉として、(システムの各ユーザが本質的に乱雑性の源泉である)マルチユーザシステムには、極めて強いものがあります。「少数ユーザのシステム」もしく「は組込みシステム」には、(特に、起動時には、)攻撃者が同様の設定をすることが可能である可能性があります。現実的なものとするために使われた設定と十分に相関した撹拌プロセスへの入力」を与えてしまう可能性があります。強い撹拌関数を伴う複数の乱雑な入力の利用は、推奨され、あらゆる特定の入力にある弱点を克服できます。要求される「乱雑な」ユーザの打鍵のタイミングと内容は、数百の乱雑なビット列を生成できますが、保守的な想定をする必要があります。乱雑性しか提供しない。(ただし、その間隔時間が、その時点までの一連の間隔時間において固有であるときのみ)」でしょう。乱雑性しか提供しない。(ただし、そのコードがそのシーケンスにおいて固有であるときのみ)」が挙げられます。それゆえ、以前の値と重複する間隔もしくはキー・コードは、追加的な乱雑性を提供しないと想定されます。これらのタイミングを打鍵された文字で撹拌した結果は、さらに、時計の値や他の入力と組み合わされる可能性があります。この戦略は、たとえ、その標的システムのいずれかにおいて、その入力のいくつかが非常に弱い場合でも、セキュリティ向きの良い乱数を作り出すための実践的な移植可能なコードを作る可能性があります。これは、特に、その攻撃者が過去にその生成プロセスを観察できていた場合、なおも「小さな小人数のシステム」や「組込みシステム」における高度な攻撃に対して敗れる可能性があります。ハードウェアに基づく乱雑な源泉は、なおも選好されます。English乱数を作り出すためのエントロピーのために生成された量の分散の型について、何らかの特定の要件があるでしょうか?よい知らせは、「その分散は、統一されている必要がないこと」です。「『どの程度、単型から偏るか?』についての保守的な見積もり」が、性能に影響する必要とされることのすべてです。English単純ではあるが特別に実践的ではない例として、十分に長いビット列をとって、そのビット列を「ゼロ」か「1」に対応させることを検討します。その対応付けは、完全に一様な分布にはならないでしょうが、近いものになる可能性があります。この目的に合う対応付けのひとつは、その文字列のパリティをとることです。これは、「予想されている最大の偏りの程度まで、あらゆる程度の偏りについて強く、「ハードウェアに実装することが普及している」という優位性をもちます。下記の分析は、サンプリングされなければならないビット数を与えます。間であり、分散の「乖離率」の尺度です。サンプルのパリティ関数の分散を考慮します。偶数か奇数の項の和です。これらの和は、下記にように、容易に計算できます。なる確率に対応しています。あるので、これらの式は、短く変形できます。近づけることができます。以内にしたい場合、下記のようになります。負値であること」に注意してください。負の数値による剰算は、不等式の意味を逆にします。以内となること」を示しています。説明するように、利用可能なエントロピーの、より多くを得られる、はるかに強いテクニックがあります。由来する別のテクニックには、重複しない対のシーケンスとしてビットストリームを吟味するものあります。源泉の乖離率であり、前節において記述したもの」と想定します。そこで、各ペアの確率は、下表に示されます。e^2このテクニックは、いかなる偏りも完全に根絶しますが、望まれる特定の出力ビット数を得るために費やす入力ビット数は、確定しません。このテクニックは、次のようなストリームからビットが得られるものと想定します。なり、ビット間に相関関係がない(つまり、ビット列が同様の独立分布を示す)ストリームです。上記のテクニックは、「どのように、単純な統計的分析は、人が攻撃者によって攻略される可能性があるパターンを常に見張っていない場合、誤解を招く可能性があるのか?」についての別の描写も提供します。与えられる統計的分析は、同様となります。交互になってしまっている総合的には予測可能なシーケンスを作り出します。English現実世界のデータが大きく偏ったビットや相関したビットから成るときでも、なおも、有用な量の乱雑性を含む可能性があります。このエントロピーは、様々な変換を通じて得られます。節に記述されています。利用は、主に論理的な理由で興味深いものです。「このテクニックは、強い相関関係を除去すること」が示される可能性があります。[BRILLINGER]。English可逆な圧縮テクニックも、偏ったビット列を平準化する粗い手法を提供します。示したシーケンス内の情報量の公式にも従います。圧縮は可逆なので、長い入力の中にあった情報量が、より短い出力の中にもあるはずです。情報量の等式によると、これは、普通は、異なる、より短いシーケンスの確率が、より長いシーケンスの確率よりも均一に分布する場合にのみ成立します。それゆえ、より短いシーケンスは、その入力と比べて平準化されているのです。多くの圧縮テクニックは、何らかの予測可能な事前情報をその出力ストリームに追加し、同様のシーケンスを再度、定期的にその出力に挿入したり、あるいは、自身のかすかなパターンを導入する可能性があります。記述されているものと比べると、大ざっぱなテクニックに過ぎないと見なされる必要があります。最低限、圧縮されたシーケンスの先頭は、無視される必要があり、以降のビットのみが概ね乱雑なビット列を要求するアプリケーションに使われる必要があります。English強く信頼できるハードウェアのエントロピー源泉が無い場合、何が推測不能な乱数を得ることについて、最善の全体戦略でしょうか?それは、数多くの相関しない源泉から入力を得て、それらを強い撹拌関数で撹拌することです。このような関数は、たとえ組み合わされる他の数がたまたま一定あるいは容易に推測可能(低いエントロピー)である場合でも、あらゆる源泉にあるエントロピーを確保します。このアプローチは、ハードウェアも故障する可能性があるので、たとえ良いハードウェア源泉を使うときでも助言できる可能性があります。これは、追加されたソフトウェアの複雑性に起因する失敗全体の機会における可能性ある増加に照らして重みづけられる必要があります。列挙したもののような良い源泉を使い、それらをこの章に記述されているように攪拌すれば、人は、強い種を得ます。記述するように、大量の暗号技術的に強い素材を作り出すのに使えます。強い撹拌関数は、すべての入力ビット列の異なる複雑な非線形関数である入力を組み合わせて出力ビットを作り出す関数です。入力ビットを変更することは、その出力の約半分のビットを変化させます。ある特定の入力ビットが変更されたときに変化することを保証されている特定の出力ビットは、ありません。もつように歪ませられたより短いビットストリームを変換することの問題を検討します。これは、単純に、入力ビットを撹拌してより少ない出力ビット列を作り出すために強い撹拌関数が渇望される別の事例です。述べた、数多くのビット列のパリティを使うテクニックは、単に、それらの排他的論理和を求めた結果です。これは、直下の「卑近な撹拌関数」の一例です。おいて吟味されています。入力について、卑近な例を記述します。この関数は、下表に示されるように、パリティ(carry)無しの加算と同等です。これは、退化した事例です。ここでは、いずれかの入力ビットの変化に伴って、常に、出力ビットが変化します。その単純さにかかわらず、これは、有用な表を提供します。相関せず、このように組み合わされた場合、その出力は、入力よりも、さらに良い(偏りが少ない)乱雑なビットとなります。定義されているように想定する場合、その出力は、下記のように、出力乖離率は、入力乖離率と関連します。大きくならないので、少なくとも一方が完全に定数である場合を除いて、乖離率は、常に向上します。これは、下表に示されています。つの入力の乖離率であり、その項目は、出力の乖離率です。「上記の計算は、入力は、相関しないと想定していること」に注意してください。分以上の間隔で乱雑に拾えば、各々は、乱雑に見える可能性があります。それらが同時に拾われて排他的論理和と組み合わされている場合、その結果は、ほとんどの場合、ゼロとなります。数についての強い撹拌関数の一例です。各出力ビットは、すべての入力ビット列に対する複雑な非線形関数の出力となります。等)も、(すべての鍵とデータ入力ビットを攪拌することを考慮することによって)使うことができます。シリーズのような「メッセージダイジェスト」もしくはハッシュ関数があります。これらの関数は、皆、実際に無制限の量の入力を受けて、すべての入力ビット列を撹拌することによって、比較的短い固定長の出力を作り出します。他の暗号化関数は、任意の数の入力を組み合わせるためにも使えます。「鍵」にまとめることができます。連続的に暗号化するために使われます。採用することを望む場合、より複雑な撹拌が、行われる必要があります。乱雑性』をもつビット列を得ることは、まったく不可能であること」に注意。C)にまとめられる」と想定します。暗号化して次の出力を生成します。暗号化して、より多くの出力を得る可能性があります。逆にすることによって作り出せます。同様のことが、複数の出力を作り出すために、入力データの様々な部分群をハッシュ化することによって、ハッシュ関数について行えます。文字列の事例を再検討します。以上の情報を含みます。ないものが生成されます。以上のエントロピーの大部分を保持するために、そのハッシュ出力全体を使うことができます。box)」として知られているモジュールをもっています。これらは、より多くの入力からの有限なエントロピーを結合して出力する効果を持つ複雑な非線形撹拌関数を通じて、より少ない出力を作り出します。関数(同等の長さの出力ビット列を作り出し、各ビットが最大の非線形性となる関数)」を組み込みます。あらゆる特定のビットの位置が異なる、すべての入力ペアについて出力に注目すると、ちょうど半分の出力が異なります。ボックス」と呼ばれます。者間で共有された秘密を生成するテクニックです。主体間のべてのメッセージを観察できる場合でも、計算量的に非現実的である可能性があります。この「共有された秘密」は、各主体によって生成された初期の数の混合です。[D-H]これらの初期量が乱雑であり、相関しない場合、その共有された秘密は、それらのエントロピーを組み合わせますが、当然ながら、生成された「共有された秘密」の大きさより多くの乱雑性は、作り出せません。計算できるようにするために、他方のプライベート鍵の空間を探索する必要があるのみです。つの入力に相当する推測可能性の量を作り出すことを考慮することが最善となります。計算量的に重い」という事実に起因して、その撹拌関数としての利用は、推奨されません。English撹拌関数について、その入力と同数、もしくは、より少ないビットの出力を作り出すことは、必要不可欠ではありませんが、撹拌ビット列は、現在、入力中にある乱雑な予測困難性の量を「増大」できません。以上に相当する予測不可能な出力を作り出せません。入力よりも少ないビット数への撹拌は、その出力の乱雑性を強化する傾向があります。中の最後の表は、「乱雑なビットを固定ビットとの排他的論理和で撹拌することは、乱雑なビットを作り出すこと」を示します。ものに「延長」する方法は提供しません。