頻度分析
任意のテキストを貼り付けるだけで、各文字がどれくらいの頻度で現れるかを、英文の頻度と並べて比較できます。バイグラムとトライグラムの集計を読み、一致指数を確認して単一換字式暗号と多表式暗号を見分け、表をエクスポートしましょう。すべてブラウザ内で動作します。
サンプルを試す:
上にテキストを貼り付けると、その文字頻度・バイグラム・トライグラム・一致指数がここに表示されます。
頻度分析 の使い方
- 1
テキストを貼り付ける
調べたいテキストまたは暗号文をコピーしてボックスに貼り付けます。文字は大文字小文字を問わずに数え、スペース・数字・記号は無視します。
- 2
概要を読む
文字数とアルファベットの数、異なる文字がいくつ現れるか、最頻文字、そして1つのアルファベットが使われたか複数かを示唆する一致指数を確認します。
- 3
文字頻度チャートを調べる
各文字の棒を英語のマーカーと比較します。「頻度順」に切り替えて文字をランク付けし、全体の形を見ます — 換字式暗号ならでこぼこ、多表式なら平坦です。
- 4
バイグラムとトライグラムを見る
最も多いペアと3つ組を見ます。暗号では上位のトライグラムがしばしば偽装された THE で、一度に3文字を与えてくれます。
- 5
エクスポートまたは共有
頻度の表をメモや表計算ソフト用に CSV としてダウンロードするか、あなたのテキストそのままでツールを再び開く共有リンクをコピーします。すべてはブラウザ内に留まります。
文字頻度分析の解説
頻度分析とは?
頻度分析とは、文章中で各文字、文字のペア、文字の3つ組がどれくらいの頻度で現れるかを調べる手法です。言語の文字は均等には使われず — 英語では E と T がいたるところに現れる一方で Q や Z はまれ — その頻度のパターンが指紋のように働きます。このパターンを数えることは古典的な暗号解読において最も古く、最も強力な技法であり、9世紀のアラブの学者アル・キンディーによって最初に文書化されました。
このツールは貼り付けたテキストの文字を数え、それぞれを英語で期待される頻度の横に棒グラフとして示し、最も多いバイグラムとトライグラムを一覧にして、一致指数を報告します。これらの数値を合わせて見れば、そのテキストが普通の文章なのか、単純な換字式暗号なのか、それとも複数のアルファベットを同時に使うものなのかが — 1文字も手で数えることなく — 分かります。
文字頻度チャートの読み方
各行はアルファベットの1文字です。塗りつぶされた棒は、その文字がテキスト中で全文字に対して何パーセント現れるかを示し、細い縦のマーカーは典型的な英語における同じ文字の頻度を示します。棒がマーカーをはるかに超えて伸びていれば、その文字は過剰に現れており、届かなければ通常よりもまれです。並べ替え順を切り替えて文字を頻出順にランク付けすれば、分布の形が一目で明らかになります。
通常の英語では最も高い棒は E、T、A、O、I、N で、チャートはでこぼこで不均一に見えます。単一換字式暗号はそのでこぼこな形を保ちますが、各文字が単に別の文字に置き換えられるため、ピークが別の文字へとずれます。多表式暗号はチャートを平坦にし、どの棒もほぼ同じ高さになります。同じ平文の文字が位置に応じて異なる暗号化をされるためです。この2つの形を見分けることが、古典暗号を解読するうえで最も役立つ技能です。
一致指数
一致指数(IoC)は、テキストから無作為に選んだ2文字が同一である確率を測る指標です。通常の英語は頻度が非常に不均一なため約 0.067 に位置し、完全にランダムなテキストは、どの文字も等しく出現する 0.038 に近づきます。1つの数値が、分布がどれくらいでこぼこか、あるいは平坦かを捉えます。
このため IoC は暗号の系統を見分ける最も手早いテストになります。シーザー、Atbash、キーワード換字式の暗号は文字を付け替えるだけなので、英語特有の不均一なプロファイルが残り、IoC は 0.066 付近の高い値を保ちます。Vigenère やその他の多表式暗号は複数のアルファベットを混ぜ合わせ、頻度を平坦にして IoC を 0.04 へと引き下げます。このツールは値を短いヒントとともに表示するので、高い読み取り値は換字式暗号を、低い値は多表式暗号を指し示します。
バイグラム・トライグラムと接触パターン
単一の文字は始まりにすぎません。英語には強く好まれる文字のペアと3つ組もあります。TH、HE、IN、ER、AN が最も多いバイグラムで、THE、AND、ING、ENT がトライグラムの中心を占めます。このツールはテキスト中で最も多いペアと3つ組を一覧にしますが、単語の内部でのみ数えるため、スペースが無関係な2文字を偽のペアに結びつけることはありません。
これらの接触パターンは、単純な文字の集計だけでは足りないときに非常に役立ちます。換字式暗号では THE の偽装された形がしばしば最も多いトライグラムとして現れ、一度に3文字を与えてくれます。繰り返されるバイグラムは、カシスキー法によって Vigenère の鍵の長さを暴くことがあります。二重文字が見当たらないこと、あるいはまれなペアの不審な連続でさえ、どの暗号に直面しているかの手がかりになります。
頻度分析で暗号を解読する
単一換字式暗号を攻略するには、チャートを頻度順に並べ替え、英語と並べてください。最も多い暗号文字はおそらく E、次はおそらく T、そして上位のトライグラムはおそらく THE です。これらの推測を書き込んでから、バイグラムとトライグラムの一覧を使って広げていきます。E と T が分かれば、ペアの TH と単語の THE がすぐに収まり、そこからメッセージの残りがほどけていきます。
シーザー暗号では、すべての文字が同じ量だけ動くため、同じ理屈がさらに単純になります。暗号のピークを英語の E に合わせるシフトを見つければ、それが鍵です。Vigenère 暗号でも頻度分析は依然として有効ですが、鍵の長さで列に分割してからに限られます。各列はそれぞれ独立したシーザー暗号となり、個別に解けるからです。先に一致指数を知っておけば、この列分割の小技がそもそも必要かどうかが分かります。
単一換字式と多表式を一目で
1つだけ覚えるなら、これにしてください。高い一致指数と、はっきり高い棒のあるでこぼこなチャートは、各文字がちょうど1つの別の文字に対応する単一換字式暗号 — シーザー、Atbash、アフィン、またはキーワード換字式 — を意味します。これらは平文の統計がそのまま透けて見えるため、頻度分析に直接屈します。
低い一致指数と、どの棒もほぼ同じ高さの平坦なチャートは、1つの平文の文字が多くの異なる暗号文字になり得る多表式暗号 — Vigenère、Beaufort、Gronsfeld、Porta — を意味します。これらは生の文字頻度を隠すため、まず鍵の長さを復元してから各位置を個別に分析しなければなりません。チャートと IoC は、労力を費やす前にこの2つの世界のどちらにいるのかを教えてくれます。
限界とよい実践
頻度分析は統計的なので、信頼できるだけの十分なテキストを必要とします。十数文字ほどの短いメッセージは、単なる偶然によってひどく誤解を招く頻度を示すことがある一方で、まるまる1段落あれば期待されるパターンの近くに落ち着きます。サンプルが曖昧に見えるとき、その通常の原因は手法が失敗したのではなく、テキストが短すぎることにあります。
ここに示す英語の基準は通常の散文に対するものだと心に留めておいてください。特殊なテキスト — 名前の一覧、ソースコードの一部、あるいは別の言語の文章 — はそれ自体のプロファイルを持ち、一致しません。このツールはスペース・数字・記号を無視し、大文字と小文字をまとめて扱います。これはまさに古典暗号で求められる挙動ですが、Base64 や Morse のようなエンコードの構造ではなく、文字だけを分析するということでもあります。それらの場合は、まずエンコードを特定して復号し、その下にある文字に対して頻度分析を実行してください。
よくある質問
頻度分析とは何ですか?
頻度分析を使ってどうやって暗号を解読しますか?
一致指数とは何ですか?
単一換字式と多表式の違いは何ですか?
なぜこのツールはバイグラムとトライグラムを表示するのですか?
棒と縦のマーカーは何を意味しますか?
信頼できる結果にはどれくらいのテキストが必要ですか?
英語以外の言語でも機能しますか?
Base64、Morse、二進数を分析できますか?
私のテキストはサーバーにアップロードされますか?
頻度の表をエクスポートできますか?
関連ツール
こちらの便利なツールもどうぞ