T

Text Machine

強力なテキストツールを、ブラウザで

一致指数(IC)計算ツール

テキストの文字分布の偏りを測り、列単位の表から鍵長をそのまま読み取ります。

例:

テキスト

テキストを貼り付けると測定します。シーザーとヴィジュネルの例は英語の例と同じ文章なので、暗号の種類によって数値がどう変わるかがそのまま見えます。

一致指数計算ツール の使い方

  1. 1

    テキストを貼り付ける

    平文でも暗号文でも入力欄に入れてください。計算に入るのは A から Z の文字だけで、大文字小文字・空白・数字・約物は無視されるため、書式が数値を動かすことはありません。

  2. 2

    指数を読む

    生値は、無作為に取り出した 2 文字が同じ文字である確率です。正規化値はそれを一様アルファベット基準に直したもので、1.00 ならランダム、1.73 前後なら英語です。

  3. 3

    暗号の種類を見分ける

    0.066 前後なら文字分布が保たれているので、平文か単純換字です。0.038 前後なら分布が平坦化されており、反復鍵暗号が疑われます。

  4. 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の平均は、本当の鍵長とその倍数で上がります。表を上から読んで最初に跳ね上がる長さを探すのが、ヴィジュネルの鍵長を見つける古典的な方法で、実際のテキストではフリードマンの公式より当てになります。

次にすること

列単位の表がある長さを指しているなら、カシスキー検査が自然な第二の意見になります。文字統計ではなく反復区間どうしの距離から出発するため、失敗する場面が違います。独立した二つの方法が同じ数字を指すなら、片方だけよりはるかに強い根拠になります。

長さに確信が持てたら、ヴィジュネル解読ツールが暗号文をその数の列に分け、各列をシーザー暗号として解いて、鍵語と平文を返します。

よくある質問

一致指数とは何ですか。
テキストから無作為に 2 文字を取り出したとき、同じ文字になる確率です。式で書くと、各文字の出現回数 n について n(n-1) を合計し、全体の文字数 N について N(N-1) で割った値です。英語は少数の文字が大半を占めるため 0.066 前後になり、一様なランダムアルファベットは 26 分の 1、およそ 0.0385 になります。
他の計算機と値が違うのはなぜですか。
ほとんどの場合は正規化の違いです。確率をそのまま出すツールと、26 を掛けるツールがあるため、同じテキストが 0.0667 にも 1.73 にも見えます。ここでは両方を表示します。もう一つよくある原因は、空白や数字まで文字として数えている場合です。このツールは A から Z だけを数えます。
一致指数でどうやって鍵長が分かるのですか。
値ひとつだけでは分かりません。鍵長を突き止めるのは、暗号文を L 個の列に分けて列ごとに測る作業です。本当の L では、どの列も同じずらし量で暗号化されているため英語のICを保ちます。誤った L では列が混ざり、平坦なままです。列単位の表はすべての候補を並べて見せます。
フリードマン推定は信用できますか。
1922 年の公式で、ICひとつからおおよその鍵長を出します。列単位の表の横に置いて検算に使うぶんには有用ですが、単独で使うには外れることが多く、特に短いテキストでそうです。テキストがすでに平文と同じくらい偏っている場合や、ICを出せないほど短い場合はダッシュになります。この式は繰り返し鍵がテキストを平らにしたことを前提にしているので、その範囲の外では推定する対象そのものがなく、数字を出せば作り物になります。
5 と 10 と 15 がどれも高く出るのはなぜですか。
10 列に分けるのは本当の 5 列をさらに半分にしたもので、それぞれがなお同じずらし量を保っているからです。本当の長さの倍数はその点数をすべて受け継ぎます。答えはその系列で最短の値なので、推奨リストからは倍数を除いています。
テキストの言語を判定できますか。
ごく大まかにだけです。比較表は入力が公表値に対してどのあたりかを示しますが、値の近い言語が複数あり、サンプルが短いとその差より大きく揺れます。自然言語かランダムに見えるテキストかを分ける用途に使い、フランス語かスペイン語かを決める用途には使わないでください。
入力したテキストはブラウザの外に出ますか。
出ません。計算はすべてページ内で行われます。どこにもアップロード、記録、保存はしません。

関連ツール

こちらの便利なツールもどうぞ

カシスキー検査

ヴィジュネル暗号ソルバー

頻度分析

暗号識別ツール

換字式暗号ソルバー

Unixタイムスタンプ変換