「暗号論的擬似乱数生成器」の版間の差分

削除された内容 追加された内容
Claw of Slime (会話 | 投稿記録)
m編集の要約なし
"state compromise extensions" の要件に関する記述を、英語版にしたがい訂正しました。
18行目:
 
* 全てのCSPRNGは "next-bit test" に合格する。next-bit test とは、乱数列の最初の <var>k</var> ビットを与えられたとき、<var>k</var>+1 番目のビットの値を多項式時間で2分の1をこえる確率で予測するアルゴリズムが存在しないことを確認する試験である。[[アンドリュー・チーチー・ヤオ]]は[[1982年]]、next-bit test に合格した生成器は、無作為性に関する他の多項式時間統計試験にも合格することを証明した。
* 全てのCSPRNGは "state compromise extensions" に耐える。その状態の一部または全部が明らかになっても(あるいは正しく推測されても)、明らかにされた状態より以前に生成され乱数列を別の場所で再現できない。さらに、実行中にエントロピーの入力がある場合、その入力を知っていてもCSPRNGの将来の状態を予測できない。
::例: [[円周率]]の数列から出力を生成するCSPRNGがあり、2進数化した数列のどこからを使うのか不明であるとする。円周率が[[正規数]]であるという仮定のもとでは、円周率は無作為な数列である。この場合、このアルゴリズムは next-bit test を満足するのでしたがって統計的に無作為性は十分である(これは、円周率が[[正規数]]であるした場合)言える。しかし、このアルゴリズムは暗号論的に安全ではない。なぜなら、アルゴリズムの状態が明らかでれば、たる「円周率のどの部分が現在使われているか」を攻撃者わかるた突き止た場合後者要求仕様攻撃者は先行するビット満足せず、安全すべて計算はないきるからである
 
多くのPRNGはCSPRNGとしては不適であり、上記の2つを満足しない。第一にPRNGの出力は統計的に無作為に見えるが、[[リバースエンジニアリング]]には耐性がない<!-- ??? --->。従って、アルゴリズムを解析することで特別な統計的試験を設計でき、PRNG の出力が真の乱数ではないことを示すことができる。第二に状態が明らかであれば、過去の乱数列を再現でき、攻撃者が全ての過去のメッセージを読むことが可能となる。当然、将来の暗号も解読可能となる。