コンテンツにスキップ

「誕生日のパラドックス」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Melan (会話 | 投稿記録)
32行目: 32行目:


== 誕生日攻撃 ==
== 誕生日攻撃 ==
{{Main|誕生日攻撃}}
この誕生日問題の考え方は、誕生日攻撃と呼ばれる[[暗号解読]]法に利用されている。
この誕生日問題の考え方は、誕生日攻撃と呼ばれる[[暗号解読]]法に利用されている。
=== ハッシュ関数の衝突 ===
=== ハッシュ関数の衝突 ===
38行目: 39行目:
=== [[暗号利用モード|CTRモード]]の乱数識別性 ===
=== [[暗号利用モード|CTRモード]]の乱数識別性 ===
[[ブロック暗号]]アルゴリズムをCTRモードで使用した[[擬似乱数生成器]]は、ブロック長をLとしたときに、2<sup>L/2</sup>程度のブロック分の乱数出力を行うと1/2の確率で真の乱数と区別できる。真の乱数は誕生日のパラドックスから、2<sup>L/2</sup>ブロック分の乱数の中に同じ値を持つブロックが約1/2の確率で存在する。一方でCTRモードはカウンタが同じ値に戻らないことから同じ値を持つブロックは存在しない。
[[ブロック暗号]]アルゴリズムをCTRモードで使用した[[擬似乱数生成器]]は、ブロック長をLとしたときに、2<sup>L/2</sup>程度のブロック分の乱数出力を行うと1/2の確率で真の乱数と区別できる。真の乱数は誕生日のパラドックスから、2<sup>L/2</sup>ブロック分の乱数の中に同じ値を持つブロックが約1/2の確率で存在する。一方でCTRモードはカウンタが同じ値に戻らないことから同じ値を持つブロックは存在しない。

== 外部リンク ==
== 外部リンク ==
* [http://keisan.casio.jp/has10/SpecExec.cgi?path=04000000%2e%90%94%8aw%8c%f6%8e%ae%8fW%2f08000000%2e%8am%97%a6%2f01001000%2e%90F%81X%82%c8%8am%97%a6%2f10000100%2e%92a%90%b6%93%fa%82%aa%88%ea%92v%82%b7%82%e9%8am%97%a6%2fdefault%2exml 同じ誕生日の人が少なくとも一組いる確率の計算]
* [http://keisan.casio.jp/has10/SpecExec.cgi?path=04000000%2e%90%94%8aw%8c%f6%8e%ae%8fW%2f08000000%2e%8am%97%a6%2f01001000%2e%90F%81X%82%c8%8am%97%a6%2f10000100%2e%92a%90%b6%93%fa%82%aa%88%ea%92v%82%b7%82%e9%8am%97%a6%2fdefault%2exml 同じ誕生日の人が少なくとも一組いる確率の計算]

2009年8月13日 (木) 22:55時点における版

誕生日のパラドックス(たんじょうびのパラドックス)とは「何人集まればその中に同じ誕生日の人がいる確率が50%を超えるか?」という問題から生じるパラドックスであり、答えは23人である。直感的な答えよりもずっと少なくはないだろうか。 誕生日のパラドックスは論理的な矛盾に基づいているという意味でのパラドックスではなく、結果が一般的な直感と反しているという意味である。

この理論の背景にはZE Schnabelによって記述された「湖にいる魚の総数の推定("The estimation of the total fish population of a lake.")」がある。これは、統計学ではcapture-recapture法として知られている。

誕生日問題

ある集団に同じ誕生日のペアがいる確率。23人で確率が0.5になっているのがわかる

上記の確率を求める問題やその類似問題は、誕生日問題とよばれる。

部屋に22人の人間がいる。あなたがその部屋に入ったときに、「あなたと同じ」誕生日の人がいる確率は50%ではない。その確率はずっと低い。これは、「あなた以外の人」同士の誕生日が同じであるという可能性は考慮されないからである。

それでは、n人の中で同じ誕生日の人が少なくとも2人いる場合の確率を計算する。閏年や双子は考えないものとし、誕生日は365日とも等確率であるとする。
まずは、n人の誕生日が全て異なる場合の確率p1を計算する。

2人目が1人目と異なっている誕生日である確率は、364/365である。次に、3人目が1人目2人目と異なる誕生日である確率は363/365である。同様に4人目は362/365、…、n人目は(365-n+1)/365となる。 つまり、n人の誕生日が全て異なる確率は次のようになる。

よって、n人の中で同じ誕生日の人が少なくとも2人いる場合の確率p2は、

となり、n=23のとき、p=0.507...となる。

一方、先ほどの、n人の部屋に"あなた"が入ったときに、あなたと同じ誕生日の人がいる確率p3は、

となる。n=23 ならば、p = 0.0611...である。nが253のときに初めてpが0.5以上となる。

誕生日攻撃

この誕生日問題の考え方は、誕生日攻撃と呼ばれる暗号解読法に利用されている。

ハッシュ関数の衝突

ハッシュ関数の出力の長さが、Nビットであるときには、2Nではなく、2N/2程度の文字列を試すことで同じハッシュ値を持つ文字列を見つけ出せる可能性が高い。 これは、ハッシュ関数の出力はある程度の長さを持つ必要があることを示している。

CTRモードの乱数識別性

ブロック暗号アルゴリズムをCTRモードで使用した擬似乱数生成器は、ブロック長をLとしたときに、2L/2程度のブロック分の乱数出力を行うと1/2の確率で真の乱数と区別できる。真の乱数は誕生日のパラドックスから、2L/2ブロック分の乱数の中に同じ値を持つブロックが約1/2の確率で存在する。一方でCTRモードはカウンタが同じ値に戻らないことから同じ値を持つブロックは存在しない。

外部リンク