一致指数(IC)計算ツール
テキストの文字分布の偏りを測り、列単位の表から鍵長をそのまま読み取ります。
例:
テキストを貼り付けると測定します。シーザーとヴィジュネルの例は英語の例と同じ文章なので、暗号の種類によって数値がどう変わるかがそのまま見えます。
一致指数計算ツール の使い方
- 1
テキストを貼り付ける
平文でも暗号文でも入力欄に入れてください。計算に入るのは A から Z の文字だけで、大文字小文字・空白・数字・約物は無視されるため、書式が数値を動かすことはありません。
- 2
指数を読む
生値は、無作為に取り出した 2 文字が同じ文字である確率です。正規化値はそれを一様アルファベット基準に直したもので、1.00 ならランダム、1.73 前後なら英語です。
- 3
暗号の種類を見分ける
0.066 前後なら文字分布が保たれているので、平文か単純換字です。0.038 前後なら分布が平坦化されており、反復鍵暗号が疑われます。
- 4
列単位の表で鍵長を探す
多表式に見えるなら、列単位ICが 0.066 に向かって戻る最短の長さを探してください。それが鍵長であり、ヴィジュネル解読ツールに渡す数字です。
一致指数の考え方
ひとつの数字が答えるひとつの問い
一致指数は狭い問いにひとつだけ答えます。テキストに二度手を入れて 1 文字ずつ取り出したとき、同じ文字が二度出る割合はどれくらいか。26 文字が等しく現れる袋なら 26 分の 1、およそ 0.0385 です。英語はその倍近い 0.066 前後になります。英語が均等な袋ではないからです。E、T、A、O が仕事の大半をこなし、J、Q、X、Z はほとんど出てきません。
この差がこの統計量の値打ちのすべてです。ラベルの付け替えには耐えます。すべての A を Q に、すべての Q を A に入れ替えても、個数は移動しますが偏りそのものは変わらないため指数は動きません。一方、複数のアルファベットに散らされると耐えられません。反復鍵暗号がやっているのは、まさにそれです。
分かることと分からないこと
ICが 0.066 付近なら文字分布は保たれています。ふつうの平文、シーザー暗号、アトバシュ、あらゆる単純換字暗号がここに入ります。単一換字暗号をこの数字ではなく頻度分析で解くのは、そのためです。
ICが 0.038 付近なら分布は平坦化されています。平文の 1 文字が複数の暗号文字に対応づけられている合図であり、ヴィジュネルの系統か、あるいは本当にランダムな文字列です。
その中間の値は、暗号が変わっているというより、テキストが短いことを意味する場合がほとんどです。100 文字を切ると指数は誤解を招くほど揺れ、300 文字を切るうちは結論ではなくヒントとして扱うのが無難です。
実際に働くのは列単位の表
テキスト全体の値ひとつは、暗号の種類を教えてくれます。鍵長を突き止めるにはもう一歩必要で、多くの計算機が省いているのがこの一歩です。
文字を L 個の山に配ります。1 番目、L+1 番目、2L+1 番目は最初の山へ、2 番目、L+2 番目は 2 番目の山へ、という具合です。L が本当の鍵長なら、ひとつの山の文字はすべて同じ鍵文字でずらされているので、その山は英語のシーザー暗号であり、英語の偏りをそのまま持ちます。L が誤っていれば、山の中で異なるずらし量が混ざり、平坦になります。
したがって山ごとのICの平均は、本当の鍵長とその倍数で上がります。表を上から読んで最初に跳ね上がる長さを探すのが、ヴィジュネルの鍵長を見つける古典的な方法で、実際のテキストではフリードマンの公式より当てになります。
次にすること
列単位の表がある長さを指しているなら、カシスキー検査が自然な第二の意見になります。文字統計ではなく反復区間どうしの距離から出発するため、失敗する場面が違います。独立した二つの方法が同じ数字を指すなら、片方だけよりはるかに強い根拠になります。
長さに確信が持てたら、ヴィジュネル解読ツールが暗号文をその数の列に分け、各列をシーザー暗号として解いて、鍵語と平文を返します。
よくある質問
一致指数とは何ですか。
他の計算機と値が違うのはなぜですか。
一致指数でどうやって鍵長が分かるのですか。
フリードマン推定は信用できますか。
5 と 10 と 15 がどれも高く出るのはなぜですか。
テキストの言語を判定できますか。
入力したテキストはブラウザの外に出ますか。
関連ツール
こちらの便利なツールもどうぞ