T

Text Machine

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

Vigenère ソルバー

Vigenère の暗号文を貼り付けるだけで、鍵を知らなくてもキーワードと元のメッセージを復元できます。ソルバーは一致指数から鍵の長さを見つけ、カシスキー法でそれを裏付け、各列をシーザー暗号として解読し、最も英語らしく読める復号結果を選びます。すべてブラウザ内で動作します。

サンプルを試す:

Vigenère の暗号文

上に Vigenère の暗号文を貼り付けると、復元された鍵・復号されたメッセージ・鍵長の分析がここに表示されます。与えるテキストが多いほど、答えの信頼性は高まります。

ヴィジュネル暗号ソルバー の使い方

  1. 1

    暗号文を貼り付ける

    Vigenère で暗号化されたテキストをコピーしてボックスに貼り付けます。1段落以上あれば最良の結果が得られます。文字は大文字小文字を問わず読み取り、解読中はスペース・数字・記号を無視します。

  2. 2

    復元された鍵を読む

    ソルバーは最も可能性の高いキーワードを上部に表示します。ワンクリックでコピーできます — それを Vigenère 暗号ツールに貼り付ければ、同じメッセージを復号することを確認できます。

  3. 3

    復号されたメッセージを読む

    鍵の下に、元の大文字小文字・スペース・記号が復元された完全な平文が表示されます。コピーして結果を保存しましょう。

  4. 4

    鍵長の根拠を確認する

    一致指数チャートとカシスキーのパネルが、その鍵長が選ばれた理由を示します。結果がおかしく見える場合は、チャートで別の長さをクリックして強制的に解読するか、最大鍵長を広げてください。

  5. 5

    共有またはクリア

    あなたの暗号文そのままでツールを再び開く共有リンクをコピーします — テキストは URL のハッシュより後ろの部分に乗り、サーバーには決して届きません。クリアするとすべてがリセットされます。

Vigenère 暗号の解読を解説

このツールの機能

Vigenère 暗号は、繰り返されるキーワードに従って各文字を異なる量だけずらすことでメッセージを隠します。この単純な発想のおかげで、この暗号は3世紀ものあいだ le chiffre indéchiffrable — 解読不可能な暗号 — という異名を得ていました。文字頻度を数えるという定番の手口が通用しないからです。それでもこのツールは、あなたが鍵を渡さなくても、自動的にこれを解読します。暗号文を貼り付ければ、最も可能性の高いキーワードと復号されたメッセージを返します。

このツールは人間の暗号解読者と同じやり方で、ただしはるかに速く動作します。鍵の長さを割り出し、メッセージをその数だけの独立したシーザー暗号に分割し、それぞれを解いてから、結果が実際に英語らしく読めるかを確かめます。鍵も推測もいらず、何一つブラウザの外には出ません — 攻撃のすべてがあなた自身のマシン上で完結します。

Vigenère 暗号が解読できる理由

長さ L のキーワードは、L 文字おきにすべて同じシフトで暗号化します。つまり、1番目、(L+1) 番目、(2L+1) 番目……の文字を取り出すと、そのグループの文字はすべて同じ量だけずらされており — これらはごく普通のシーザー暗号を構成します。L 個ある開始位置のそれぞれについて、同じことが言えます。したがって Vigenère 暗号は1つの難しい問題ではなく、L 個のやさしい問題を積み重ねたものであり、あなたと平文の間に立ちはだかるものは L を見つけることだけです。

鍵の長さが分かれば、各列は英語の偏った文字頻度を、単一のシフトで付け替えただけの形でそのまま保っています。これはまさに古典的な頻度分析が対象とするために作られた状況です。つまり Vigenère を解読する技術のすべては、たった1つの問いに帰着します — 鍵はどれくらいの長さなのか?

一致指数で鍵の長さを見つける

一致指数は、あるテキストから無作為に選んだ2文字が同一である確率を測ります。通常の英語は文字の使われ方が非常に不均一なため約 0.066 に位置し、完全にランダムなテキストは 0.038 付近になります。暗号文を正しい数の列に分割すると、各列は単一換字式になり、その一致指数は英語の値へと跳ね上がります。誤った数に分割すれば、各列は平坦でランダムらしい 0.038 のままです。

このツールは、1からあなたが選んだ最大値までのすべての鍵長を試し、それぞれの平均列一致指数を測り、その結果を棒グラフとして描きます。真の長さは高い棒として際立ち — そしてその倍数もまた際立ちます。長さ10は、5文字ごとのグループもすべて揃えてしまうからです。この倍数による曖昧さこそ、このツールが単純に最も高い棒を信用しない理由であり、次の節で説明します。

カシスキー法

鍵の長さを見つけるには、フリードリヒ・カシスキーが1863年に発見した、もう1つの古い方法があります。THE のようなありふれた単語が、キーワードの同じ部分と2度揃うと、両方とも同じ暗号文の並びに暗号化されます。そうした2つの繰り返しの間の距離は、鍵長の整数倍でなければなりません — つまり鍵の長さはその距離を割り切ります。繰り返される並びをいくつか見つけ、間隔を測れば、鍵の長さはそれらの間隔の公約数の中に潜んでいます。

このツールは暗号文から繰り返される3文字の並びを走査し、それらの間の間隔を集め、各候補の約数がいくつの間隔を割り切るかを数えます。最も多く支持された約数が、最も可能性の高い鍵長です。これは一致指数とは独立した、別の根拠のパネルとして示されるので、2つの異なる手法が答えについて一致できるようになっています。

各列を解いてキーワードを読み取る

鍵の長さが定まれば、どの列もシーザー暗号であり、シーザー暗号は瞬時に陥落します。各列について、ソルバーは26通りすべてのシフトを試し、復号された文字が英語で期待される頻度に最もよく一致するものを、χ²検定で測って残します。ある列で勝ち残ったシフトが、キーワードの1文字です。シフト11は L、シフト4は E、という具合です。勝ち残ったシフトを順に読めば、キーワードがおのずと綴られます。

復元されたそのキーワードでメッセージ全体を復号すると、元の大文字小文字・スペース・記号がもとあった場所に正確に戻された平文が得られます。もし復元された鍵がたまたま繰り返しになっていたら — 本当の鍵が LEMON のときに LEMONLEMON のように — このツールはそれを最短の周期に畳み込むので、常に真の最小のキーワードが表示されます。

まず解き、それから検証する — バイグラムが重要な理由

素朴なソルバーは一致指数から鍵の長さを選んで、そこで止まります。これは2つのよくある場合に誤りに陥ります。繰り返しの多いメッセージは統計をゆがめることがあり、真の長さはその約数と混同されやすいのです。このツールはその罠を避けるために、すべての候補の長さで解いてから、各復号結果が実際にどれくらい英語らしく読めるかで判定します — まず解き、次に検証するのです。

判定に使うのは単一文字の頻度ではありません。それは驚くほど簡単にだまされ得ます。少しだけ間違った鍵でも、もっともらしい文字構成をたまたま持つ意味不明なテキストを生むことがあるからです。代わりにこのツールは、各復号結果をバイグラム — 隣り合うすべての文字ペアの尤度を、大量の英語コーパスから学習したもの — で採点します。本物の英語は TH、HE、ER のようなペアに富み、QJ や ZX はほとんど含みません。そのため鍵の1文字でも間違っていると、あり得ないペアが注入されてスコアが沈みます。最良のバイグラム適合度を持つ復号結果が勝ち、同点なら短い鍵が優先されます。これが、単純なシーザー暗号が正しく1文字の鍵に解決される理由です。

必要なテキスト量と、苦戦するとき

各列は頻度分析で解かれるため、重要なのは各列に何文字落ちるか — つまり全体の長さを鍵の長さで割った値です。1列あたりおよそ40文字以上あれば、鍵と平文の両方とも、復元はたいてい正確です。200文字の段落なら短い鍵は容易に解読できます。十数文字の長い鍵は、確実を期すには数百文字の暗号文を欲しがります。

暗号文が鍵に対して短いと、各列は薄くなり、列ごとの頻度集計はノイズを帯びます。それでもソルバーは何も返さないのではなく、最善の結果を返します — 鍵が1〜2文字ずれているがそれでも読める、惜しい結果であることがよくあります。結果がほぼ正しく見える場合、通常の対処は単純にもっと多くの暗号文を与えるか、チャートを使って手作業で鍵の長さを微調整することです。この暗号が抵抗するのは、測定するに足るテキストが本当に足りないときだけです。

よくある質問

鍵なしで本当に Vigenère 暗号を解読できるのですか?
はい。繰り返し鍵の Vigenère 暗号は、複数のシーザー暗号を交互に織り込んだものであり、シーザー暗号は頻度分析に屈します。ソルバーは鍵の長さを割り出し、メッセージをその数だけの列に分割し、それぞれを解読し、結果からキーワードを読み取ります — すべて、あなたが事前に鍵を知らなくてもです。
ソルバーはどうやって鍵の長さを見つけるのですか?
2つの方法を同時に使います。鍵長の候補ごとに平均一致指数を測り — 正しい長さとその倍数は英語のように 0.066 付近のスコアになり、誤った長さは 0.038 付近でランダムに見えます — さらにカシスキー法を実行して、繰り返される並びの間隔を約数に分解します。両方の手法が一致する長さは、ほぼ常に正解です。
一致指数とは何ですか?
テキストから無作為に取り出した2文字が同一である確率です。英語は文字が不均一に使われるため約 0.066、ランダムなテキストは約 0.038 です。暗号文を正しい数の列に分割すると、各列が再び英語のように見えるようになり、これがツールが鍵の長さを見抜く仕組みです。
カシスキー法とは何ですか?
フリードリヒ・カシスキーが1863年に発表した手法です。繰り返される単語が鍵の同じ部分と揃うと、それは同一に暗号化され、それらの繰り返しの間の距離は鍵長の倍数になります。そうした間隔を集めてその公約数を見ることで、頻度統計とは独立に鍵長の候補を復元できます。
復元された鍵がわずかに間違っていることがあるのはなぜですか?
各列は頻度分析で解かれ、信頼できるには十分な文字数が必要です。暗号文が鍵の長さに対して短いと、文字が少なすぎる列が出てきて、鍵の1〜2文字がずれることがあります。それでも平文はたいてい読めます。対処は、より多くの暗号文を与えるか、チャートで手作業で鍵の長さを微調整することです。
暗号文はどれくらい必要ですか?
1列あたり少なくとも40文字を目指してください — これは全体の長さを鍵の長さで割った値です。短い鍵なら1段落で容易に解読できますが、十数文字の長い鍵は正確な復元のために数百文字の暗号文を欲しがります。テキストは多いほど常に良いです。
なぜこのツールは単なる文字頻度ではなくバイグラムを確認するのですか?
単一文字の頻度はだまされ得ます — 少しだけ間違った鍵が、もっともらしい文字構成の意味不明なテキストを生むことがあるからです。バイグラム適合度は、隣り合うすべての文字ペアを本物の英語と照らして採点します。英語では TH や HE がありふれ、QJ や ZX はほとんど現れません。間違った鍵はあり得ないペアを注入してスコアが悪くなるので、本当に英語らしい復号結果が勝ちます。
特定の鍵の長さを強制できますか?
はい。鍵長チャートの任意の棒をクリックすればその正確な長さで解読し、「自動」を押せば自動検出に戻ります。長い鍵が疑われる場合は、ツールが探索する最大鍵長を引き上げることもできます。これは長さをすでに知っている、または推測できるときに便利です。
Beaufort、Gronsfeld、その他の多表式暗号でも機能しますか?
このソルバーは標準的な繰り返し鍵の Vigenère 暗号を対象としています。Gronsfeld(数字版の Vigenère)のような近縁の暗号はしばしば部分的に解けますが、Beaufort や自動鍵(オートキー)の変種は異なる算術を使うため、解けないことがあります。どの暗号か不明な場合は、まず暗号識別ツールを実行し、それから適合するツールを使ってください。
暗号文はサーバーに送信されますか?
いいえ。攻撃のすべてがブラウザ内で動作するため、テキストがアップロード・記録・保存されることはありません。共有リンクでさえ、あなたの暗号文を URL のハッシュより後ろの部分に保持します。ブラウザはこの部分をサーバーに決して送信しないため、あなたが共有を選ぶまで非公開のままです。
Vigenère 暗号ツールとは何が違うのですか?
Vigenère 暗号ツールは、すでに鍵を知っているときに符号化・復号します。このソルバーは知らないときのためのものです。暗号文だけから鍵と平文を復元します。メッセージを解読するにはソルバーを使い、それからその鍵が元どおりに暗号化することを確認するには暗号ツールを使ってください。

関連ツール

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

Unixタイムスタンプ変換

JSON ↔ CSV 変換

CSVをJSONに変換

JSON ↔ YAML 変換

テキスト ↔ バイナリ変換

テキスト ↔ 16進数変換