ヴィジュネル暗号:鍵の長さを突き止め、解読する

L 文字の鍵を使うヴィジュネル暗号は、L 個のシーザー暗号を交互に重ね合わせたものにほかなりません。暗号文を横に k 文字ずつ並べて縦の列ごとに一致の度合いを数えると、k が鍵の長さと一致した瞬間、どの列も英語本来の統計的性質を取り戻します。順を追って解読を進めるか、グラフの棒を直接選んで試してみてください。

インタラクティブシミュレーションを読み込んでいます...

レッスン

理論 — ヴィジュネル暗号:鍵の長さを突き止め、解読する

ヴィジュネル暗号は、繰り返す鍵の文字を原文の一文字一文字に足し合わせる暗号です。A = 0 から Z = 25 と置くと、i 番目の暗号文字は (原文の文字 i + 鍵の文字 i mod L) mod 26 で求まり、L 文字ごとに同じ鍵文字によるシーザー暗号が適用されます。N 文字の一致指数(IC = Σ n(n − 1) / (N(N − 1)))は、異なる二箇所から無作為に取り出した文字が一致する確率を表し、ランダムな文字列では 1/26 = 0.0385、英語ではおよそ 0.066 になります。フリードマンの検定法は、暗号文を横に k 文字ずつ並べて縦の列ごとに一致の度合いを測ります。k が鍵長(およびその整数倍)に一致したとき、各列は単一のシーザー暗号でずらされた英語そのものとなり、その一致指数は英語本来の値へと跳ね上がります。1863 年に発表されたカシスキーの検定法は、暗号文中に繰り返し現れる文字列の間隔を因数分解して鍵長を探る手法です。

各記号の意味

L
鍵の文字数(鍵長)
k
検証中の鍵長(暗号文を振り分ける列の数)
N
原文の文字数
n
一致指数の計算式における、各文字の出現回数
前提
キャロルのカードと同じく、暗号化に先立って大文字・小文字の区別、空白、句読点はすべて取り除き、英文字のみを扱います。本教材における「英語」とは、『不思議の国のアリス』第1章の 8,606 文字を指します。各文字の出現比率と 0.0665 という一致指数がすべての検定の基準となっており、解読精度の検証にも同じ章から文章を切り出しているため、解読器側にはやや有利な条件です。鍵長は、列の平均一致指数が 1/26 から英語までの 3/4 以上に達した最小の k として特定されます。ランダム鍵は各文字を一様に選ぶため同じ文字が重なることがあり、前半と後半で文字が繰り返すような鍵では、鍵長の半分の位置にある棒が基準線を超えてしまうことがあります。

各棒の高さは平均して、英語までの到達度の gcd(k, L)/L に位置する 🖖

RABBIT(600文字)を押して、バーの並びを見てみましょう。暗号文を k 列に配分すると、各列には L/gcd(k, L) 種類の鍵文字のアルファベットが混ざり合います。さまざまな鍵で平均をとると、ランダムな文字と英語の一致指数の差のうち、gcd(k, L)/L だけが保たれます。6文字の「RABBIT」では、6、12、18 が頂点に達し、3、9、15 は半分の高さ、それ以外の偶数の k は3分の1、残る奇数は6分の1の位置に来る計算です。手元のバーも、それぞれ 98〜106%、42〜52%、26〜37%、9〜23% に収まっています。バー1は暗号文全体そのものです。10文字ごとに平文英語が現れるとしても、鍵が10文字なら、文字頻度に残る英語特有の偏りは平均して10分の1しかありません。1から12までの各長さについて100個のランダムな鍵で平均をとると、20本のバーはどれも、gcd(k, L)/L が示す位置から差の 3% 以内に収まります。フリードマンの一致指数に関する1935年の論文には、その両端の値が示されています。周期が正しいときは 0.066、誤っているときは 0.038。この章の実測値は 0.0665 で、ランダムな 1/26 は 0.0385 です。基準線が4分の3の高さにあるのは、L/2 のバーが平均しておよそ半分、列が短いときはそれよりわずかに低い位置に来るためです。

鍵の一文字一文字が、解くべきシーザー暗号 🖖

12文字の鍵を押してみてください。これで鍵長は正解です。12列のそれぞれは18文字のシーザー暗号になっており、26通りすべてのシフトをこの章の文字出現比率と照合して解読します。正しく解けるのは11列。第5列には E が2文字、R が3文字しか含まれておらず、各 R を E に変えるシフトのほうが、本来の正しいシフトよりも英語らしく見えてしまうのです。単独の列なら、30文字あれば 98% の確率で正解できます。しかし、鍵全体を解くにはすべての列が揃わなければなりません。この章から1列あたり30文字を切り出した2,000区間で試すと、12列すべてが正解したのは 81% にとどまりました。各列の解読は前段階のシーザー暗号攻撃を繰り返しているだけなので、鍵が長くなるほど失敗する確率も掛け合わされていきます。5文字刻みで数えると、12文字の鍵が初めて 99% の確率で完全に解けるのは、1列あたり55文字、全体で 660文字に達したときです。もっとも、これは鍵長が判明してからの話。バーによる検定そのものは、平均をとれる列が少ないため、むしろ短い鍵ほど多くのテキストを必要とします。1列あたり60文字の場合、一連の攻撃で1文字の鍵が復元できる確率は約 87% ですが、12文字の鍵なら 99% を超えます。

原文と同じ長さの鍵は、すべてを E と読むほかない 🖖

原文と同じ長さの鍵を押して、最後までステップを進めてみてください。20 文字の原文に 20 文字の鍵を使うと、各列には一文字しか入りません。比較できる文字のペアがそもそも存在しないため、棒 20 は描画すらできず、一文字だけに対するカイ二乗検定は、その文字を本章で最も多い E に変えるずらしを最善とみなすしかありません。その結果、どの列も E と復号され、正しく読めるのは「Alice was beginning to g」の中に二つある E の 2 文字だけになります。第1章全体で見ると、E は 8,606 文字中 1,078 文字(12.5%)を占めています。1 列に一文字しかない場合、この解読法が示す的中率は 12.6% です。これは英語に関する事前の知識をそのまま出力したにすぎず、暗号文から得られた情報は皆無です。もし 20 個の鍵文字が完全にランダムに選ばれ、二度と使い回されないとすれば、どのような 20 文字の文章であっても、この 20 文字の暗号文とまったく同じ確からしさで当てはまります。これがワンタイムパッドです。

全プロセスの詳細解説

  1. キャロルの暗号カードの主張は正しかったのか? 4 ステップ

    ルイス・キャロルはこの暗号を解説したカードを印刷させました。印刷年は記されていませんが、鍵語の送付に言及した彼の手紙は 1868 年 4 月付であり、カシスキーの著書から 5 年後のことです。カードでは「meet me on Tuesday evening at seven」という文を「vigilance」という鍵語で暗号化し、「鍵語を知らない者には、換字表を手がかりにしても解読は不可能である」と謳っていました。キャロルの暗号カードを押してみてください。この解読器は彼の文を読めるでしょうか? 次に、同じ鍵語を使って第1章の冒頭を暗号化してみましょう。鍵語「VIGILANCE」を完全に読み取るには、何文字必要になるでしょうか。

    この問題をツールで開く

    1. 手計算で 1 文字確かめてみましょう。m は 12、v は 21 です。12 + 21 = 33 であり、33 − 26 = 7、すなわち h となります。画面に生成された暗号文 HMKBXEBPXPMYLLYRXIIQTOLTFGZZV は、キャロルが記した暗号文と一字一句違わず一致しています。

    2. 29 文字を 9 列に配分すると、4 文字の列が二つ、3 文字の列が七つできます。三文字組の反復は一つもなく、カシスキー・テストで因数分解できる手がかりはありません。0.0595 の基準線に届く棒はなく、最高値は k = 9 の 0.0556 ですから、鍵の長さ自体は正しく捉えられています。しかし、わずか三、四文字に対するカイ二乗検定は当て推量にすぎません。推定された鍵は HIGXXLNPM で、9 文字中 3 文字しか合っておらず、解読できた原文も 29 文字中 10 文字にとどまります。

    3. VIGILANCE(189文字)を押してください。キャロルの鍵語で暗号化した第1章の冒頭(1 列あたり 21 文字)です。棒 9 が 0.0794 を記録して初めて基準線を超え、反復文字列の間隔も 5 箇所のうち 4 箇所(54、36、27、72。残り一つは 29)が 9 の倍数となっています。全 9 列が正しく特定され、189 文字すべてが正確に復号されました。

    4. 文字数を 188 に設定してみてください。鍵長は 9 のままですが、第 9 列が 20 文字に減ったことで、E ではなく T への適合度が高くなってしまいます。その結果、復号できるのは 188 文字中 168 文字にとどまります。189 文字目が加わることで第 9 列に重みが乗り、判定が E へと傾くのです。

    解答

    この画面上では、キャロルの短文は暗号の安全性を保ち、『アリス』の 189 文字は破られました。 1 列あたり三、四文字では統計処理を行うには少なすぎ、鍵は HIGXXLNPM と崩れてしまいますが、1 列 21 文字あれば「VIGILANCE」を完璧に読み解くことができます。彼のメッセージを守ったのは、理論の堅牢さではなく文の短さだったのです。なお、「Tuesday」のような単語を推測された場合に残りが解読できるかどうかは、この画面では検証できません。文字の頻度だけを数えているからです。

学習の道すじ

暗号はいかにして破られるか

参考文献 (3)