APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

眠れなくなるほど面白い暗号化技術 第2回 - 300年間暗号学者を欺き続けた魔法の表

はじめに

こんにちは、クラウド事業部の丸山です。

前回のシーザー暗号はいかがでしたか?
単純ながらも暗号の基本概念を学ぶ絶好の入門編でしたね。

しかし歴史的に見れば、シーザー暗号の致命的な弱点はすぐに明らかになりました。
文字の出現頻度を分析するだけで簡単に解読できてしまうのです。

そこで今回は、この弱点を巧妙に克服した「ヴィジュネル暗号」のをご紹介します。
16世紀に考案されたこの暗号は、なんと300年もの間「解読不能な暗号」として君臨し、
「le chiffre indéchiffrable」(解読不能の暗号)という異名まで与えられました。

一体どのような仕組みが、当時の最高の頭脳たちをこれほど長い間惑わせたのでしょうか?
そして、最終的にこの「解読不能」の神話を打ち破ったのは誰だったのか?
今回は、その数学的洞察の世界をお届けします。

魔法の表を操る - ヴィジュネル暗号の仕組み

ヴィジュネル暗号のエレガントな力は、「多表式換字暗号」という特性に由来します。
シーザー暗号が単一のシフト量を使うのに対し、ヴィジュネル暗号は複数のシフト量を組み合わせることで、
単純な頻度分析を無効化する巧妙な仕組みを持っています。

タブラ・レクタ(ヴィジュネル表)

この暗号の心臓部は「タブラ・レクタ」と呼ばれる26×26のマトリックスです。
これは基本的に、26種類のシーザー暗号(シフト量0~25)をすべて並べた表です。

鍵の繰り返しを入れることで、同じ固定の鍵を利用した際にも文字数の位置でシフトする数値が変わる。
これがヴィジュネル暗号の全てです。
シーザー暗号に多次元的な要素が1つ加わっただけですが、非常に難解になります。

ヴィジュネル表の可視化

暗号化プロセス

  1. 鍵の選択: まず、暗号化のための「鍵」となる単語やフレーズを選びます(例:「LEMON」)。

  2. 鍵の繰り返し: 平文の長さに合わせて鍵を繰り返します。

   平文: ATTACK AT DAWN TO TOMMOROW
   鍵:   LEMON LEMON LEMON LEMON

  1. 暗号化: 平文の各文字を、対応する鍵の文字に基づいて変換します。
    • 平文の文字がタブラ・レクタの行を決定
    • 鍵の文字が列を決定
    • 交差する位置の文字が暗号文の文字になる

    例:

    • 'A'(平文)と'L'(鍵)→ タブラ・レクタで交差する'L'が暗号文に
    • 'T'(平文)と'E'(鍵)→ 交差する'X'が暗号文に
    • 'T'(平文)と'M'(鍵)→ 交差する'F'が暗号文に

    これを数式で表すと:
    暗号文文字 = (平文文字の数値 + 鍵文字の数値) mod 26
    ※ A=0, B=1, ..., Z=25 とした場合

    例:

    • 'A' (=0) と 'L' (=11) → (0+11) % 26 = 11 → 'L'
    • 'T' (=19) と 'E' (=4) → (19+4) % 26 = 23 → 'X'
    • 'T' (=19) と 'M' (=12) → (19+12) % 26 = 5 → 'F'

    結果:

   平文:   ATTACK AT DAWN
   鍵:      LEMONL EM ONLE
   暗号文:  LXFOPV EF RNHR

重要ポイント: ヴィジュネル暗号の特徴は「位置によって異なるシフト量」にあります。同じ平文文字でも、鍵の中の異なる文字と組み合わさると、異なる暗号文字になります。これが単純な頻度分析による解読を困難にしています。

復号化プロセス

復号化は暗号化の逆操作です:
鍵を知っていれば元の平文を正確に復元できます。
ただ、鍵を解析するにもシーザー暗号とは違い、文字数位置により変動的なシフトをするため、非常に難解です。

具体的な復号化の手順は以下のとおりです:

  1. 鍵の繰り返し: 暗号文と同じ長さになるように鍵を繰り返します。

     暗号文: LXFOPV EF RNHR
     鍵:     LEMONL EM ONLE
    
  2. 復号化: 暗号文の各文字から、対応する鍵の文字の値を引いて復号します。

    • 暗号文の文字を取り出す
    • 同じ位置の鍵の文字の値を引く
    • 得られた値(負の場合は26を足す)に対応するアルファベットが平文の文字

    これを数式で表すと:
    平文文字 = (暗号文文字の数値 - 鍵文字の数値 + 26) mod 26
    ※ A=0, B=1, ..., Z=25 とした場合

    例:

    • 'L' (=11) と 'L' (=11) → (11-11+26) % 26 = 0 → 'A'
    • 'X' (=23) と 'E' (=4) → (23-4+26) % 26 = 19 → 'T'
    • 'F' (=5) と 'M' (=12) → (5-12+26) % 26 = 19 → 'T'
  3. 結果:

     暗号文: LXFOPV EF RNHR
     鍵:     LEMONL EM ONLE
     平文:   ATTACK AT DAWN
    
復号化のポイント: 鍵さえ知っていれば、暗号文から元の平文を完全に復元できます。逆に言えば、鍵なしでは解読が困難です。鍵が長いほど解読はさらに困難になりますが、鍵の周期的な繰り返しが解読の糸口にもなります。

解読不能の神話 - なぜ300年も破られなかったのか

ヴィジュネル暗号が長期間「解読不能」と考えられていた理由は、以下の革新的な特性にあります:

1. 同じ平文の文字でも異なる暗号文字に変換される

シーザー暗号の最大の弱点は、同じ文字は常に同じ文字に変換されるため、単純な頻度分析で解読できてしまう点でした。
例えば、英語で最も頻度の高い「E」は、暗号文でも最も頻度の高い文字になります。

対照的に、ヴィジュネル暗号では同じ平文の文字でも、鍵の周期によって異なる暗号文字に変換されます:

平文:    ATTACK AT DAWN
鍵:      KEYKEY KE YKEY
暗号文:  KXRKGC KX BKAL

上の例では、平文の「A」が「K」と「K」に、「T」が「X」と「X」に変換されていますが、これは偶然同じ鍵文字と組み合わさったからです。実際には平文の同じ文字が異なる暗号文字に変換されることも多く、これが頻度分析を困難にします。

2. 複数のシーザー暗号の組み合わせ

ヴィジュネル暗号は本質的に、複数のシーザー暗号を交互に使用するシステムです。
鍵の長さが増えるほど、組み合わせの複雑さも指数関数的に増加します。
これが「解読不能」と考えられた主な理由です。

3. 鍵の長さが未知

解読者にとって、鍵の長さを特定することは極めて困難でした。
鍵の長さがわからなければ、どのシーザー暗号がどの文字に適用されているのかも特定できないのです。

神話の終焉 - ヴィジュネル暗号を破った天才たち

ヴィジュネル暗号の「解読不能」という神話は、19世紀の数学者たちによって徐々に崩れていきました。

チャールズ・バベッジの先駆的解読

コンピュータの父と呼ばれるチャールズ・バベッジは、ヴィジュネル暗号を解読する方法を発見していたとされています。
しかし彼はこの発見を公表せず、その業績は後世まで認められませんでした。

カシスキーテスト - 鍵の長さを突き止める天才的手法

プロイセン(現在のドイツ)の退役将校フリードリヒ・カシスキーが、ヴィジュネル暗号を解読する具体的な方法を発表しました。
これが「カシスキーテスト」と呼ばれる手法です。

カシスキーテストの基本原理:
1. 暗号文内で繰り返しパターンを探す
2. 各繰り返しの間隔を記録
3. これらの間隔の最大公約数を計算 → これが鍵の長さの候補になる

例えば、「DLO」というパターンが暗号文の位置0と位置24に現れた場合、間隔は24です。
他のパターンでも同様に間隔を求め、それらの最大公約数を計算します。
この値が鍵の長さである可能性が高いです。

カシスキー法の原理を視覚化する:

平文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
鍵(3文字): KEY KEY KEY KEY KEY KEY KEY KEY KEY KEY KEY
暗号文: DLO AUOGG LFYAR JYB TUMXQ SZIV DLO VYDI NSW

注目すべき点:
- 平文の中の「THE」というパターンが2回出現し(文頭と「OVER」の後)、鍵「KEY」との位置関係が同じなら、暗号文でも同じパターン「DLO」が現れる
- これらの「DLO」の間隔は24文字(アルファベットのみを数えた場合)
- 鍵の長さは3文字なので、24÷3=8(完全に割り切れる)
- 他のパターンでも同様の計算をすると、間隔は常に鍵の長さの倍数になるはず
- よって、複数の間隔の最大公約数が鍵の長さの有力な候補となる

なぜこれが有効なのか?同じ平文のパターンが同じ鍵のパターンと重なると、同じ暗号文パターンが生成されるからです。
この洞察が、ヴィジュネル暗号の最初の突破口となりました。

鍵の長さが判明したら?

鍵の長さがわかれば、暗号文を鍵の長さごとのグループに分割できます。
すると各グループは単一のシーザー暗号で暗号化されていることになり、前回学んだ頻度分析で解読可能になります!

例えば、鍵の長さが3と判明した場合:
- 1番目、4番目、7番目...の文字は同じシーザー暗号
- 2番目、5番目、8番目...の文字は別のシーザー暗号
- 3番目、6番目、9番目...の文字はさらに別のシーザー暗号

鍵長が判明するとなぜ解読できるのか?
グループ1 (鍵文字1で暗号化):
暗号文: D.O.U.G.L.Y.
この集合は同じシフト量で暗号化されている
グループ2 (鍵文字2で暗号化):
暗号文: .L.A.O..J.B.
別のシフト量で暗号化されている
グループ3 (鍵文字3で暗号化):
暗号文: ..O..I.K..
さらに別のシフト量で暗号化されている
各グループは実質的にシーザー暗号なので、前回学んだ頻度分析を各グループに適用できます。
例えば、英語で最も頻出する文字は「E」なので、各グループで最も頻度の高い文字が「E」を暗号化したものと推測できます。
この仮定に基づいてシフト量(=鍵文字)を推定し、全体を復号します。

それぞれのグループごとに頻度分析を行えば、元の鍵を特定できるのです。

デモ体験 - 300年間「解読不能」だった暗号を試してみよう

ここで、実際にヴィジュネル暗号を体験してみましょう。以下のデモでは、文章の暗号化・復号化や、カシスキー法による解読を試すことができます。

暗号化・復号化

カシスキー法による解読

「解析」ボタンをクリックすると、カシスキー法による解析が実行されます。

次回予告:機械式暗号の傑作とその悲劇的な結末

次回は、暗号技術の歴史で最も有名な機械装置「エニグマ」を経て、コンピュータ技術で利用される現代編へと続けていこうと思います。

おわりに

私達クラウド事業部はクラウド技術を活用したSI/SESのご支援をしております。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です! ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp