SIGMA-SE Tech Blog

SIGMA-SE Tech Blog


当サイトは、過去に運営していた別ドメイン(unisia-se.com)から sigma-se.com へ移行した技術ブログです。
旧サイトの記事をもとに、内容の精査・加筆・最新化を行い再構成しています。
正確で実用的な情報提供を目的としています。

情報セキュリティ - 暗号技術:ヴィジュネル暗号と多表式暗号

概要

ヴィジュネル暗号は、頻度分析に対抗するために発展した多表式暗号の代表例となる。

15世紀のアルベルティの暗号円盤は、文章の途中で換字表を切り替えるという考え方を示した。
この発想は、16世紀のヴィジュネル暗号へ受け継がれ、長い間「解読が難しい暗号」と考えられるようになる。

単換字暗号では、同じ平文文字は常に同じ暗号文字に置き換わるため、文字の出現頻度から解読されやすい。
一方、多表式暗号では、同じ A でも位置や鍵によって別の文字に変換される。

そのため、単純な頻度分析を通用しにくくできるが、鍵を繰り返して使う場合には周期が生まれる。
19世紀には、この周期を手がかりにした解読法が整理され、多表式暗号にも弱点があることが明らかになった。

アルベルティの暗号円盤(1467年頃)

  • 概要

    アルベルティの暗号円盤は、15世紀のレオン・バッティスタ・アルベルティが考案した暗号具となる。
    1467年頃に書かれた暗号論の中で示され、多表式暗号の重要な出発点とされる。

    円盤を回すことで、文字の対応関係を変えることができる。
    これは、同じ文章の中で換字表を切り替える多表式暗号の考え方につながる。

  • 仕組み

    外側の円盤に平文の文字、内側の円盤に暗号文の文字を並べる。
    内側の円盤を回すと、対応関係が変化する。

    位置1 : A -> D
    位置2 : A -> Q
    位置3 : A -> M
    

    送信者と受信者が、どのタイミングで円盤を回すかを共有していれば、文章の途中で換字表を切り替えられる。
    これにより、同じ文字が常に同じ暗号文字になる単換字暗号よりも強くなる。

多表式暗号(15世紀 - 16世紀)

  • 概要

    多表式暗号とは、複数の換字表を切り替えながら暗号化する方式を指す。

    単換字暗号では、暗号化の対応表は基本的に一つとなる。
    一方、多表式暗号では、文字ごとに使う対応表を変える。

    例えば、1文字目は表1、2文字目は表2、3文字目は表3のように使い分ける。

    1文字目 : 表1で変換
    2文字目 : 表2で変換
    3文字目 : 表3で変換
    
  • 頻度分析への対抗

    多表式暗号では、同じ文字でも毎回同じ文字に変換されるとは限らない。

    例えば、平文の A が次のように変換される場合がある。

    1回目の A -> X
    2回目の A -> M
    3回目の A -> Q
    

    これにより、暗号文に出てくる文字の頻度が平文の頻度と対応しにくくなる。
    そのため、単純な単換字暗号よりも解読が難しくなる。

ヴィジュネル暗号(16世紀)

  • 概要

    ヴィジュネル暗号は、多表式暗号の代表例となる。

    鍵を使って文字ごとに変換ルールを変える考え方は、1553年にジョヴァン・バッティスタ・ベラソが示した方式に近い。
    その後、1586年にブレーズ・ド・ヴィジュネルの著作によって広く知られるようになり、ヴィジュネル暗号という名前で説明されることが多くなった。

    平文と鍵を使い、文字ごとにずらす数を変えて暗号化する。
    シーザー暗号ではずらす数が固定だったが、ヴィジュネル暗号では鍵の文字によってずらす数が変わる。

  • 仕組み

    アルファベットを A = 0B = 1C = 2、...、Z = 25 と対応させる。
    平文の文字を \(P_i\)、鍵の文字を \(K_i\)、暗号文の文字を \(C_i\) とすると、暗号化は次のように表せる。

    \[ {\small C_i = (P_i + K_i) \bmod 26 } \]

    復号は、鍵の分だけ戻すので、次のように表せる。

    \[ {\small P_i = (C_i - K_i) \bmod 26 } \]
  • 暗号化の例

    平文を ATTACK、鍵を KEY とする。
    鍵は平文の長さに合わせて繰り返す。

    平文 : A T T A C K
    鍵   : K E Y K E Y
    

    K は \(10\)、E は \(4\)、Y は \(24\) と考える。
    そのため、各文字でずらす数が変化する。

    位置 平文 ずらす数 暗号文
    1AK10K
    2TE4X
    3TY24R
    4AK10K
    5CE4G
    6KY24I

    よって、暗号文は次のようになる。

    KXRKGI
    

難攻不落の暗号と呼ばれた理由(16世紀 - 19世紀)

  • 頻度分析が効きにくい

    ヴィジュネル暗号では、同じ文字でも鍵の位置によって別の文字に変換される。

    例えば、平文に A が何度も出てきても、鍵が違えば暗号文は変わる。

    A + K -> K
    A + E -> E
    A + Y -> Y
    

    そのため、暗号文の中で一番多い文字を調べても、単純に平文の EA に対応するとは限らない。

  • 弱点

    ただし、鍵を繰り返して使う場合、暗号文には周期が生まれる。

    例えば、鍵 KEY を繰り返すと、1文字目、4文字目、7文字目は同じ鍵 K で暗号化される。
    この周期を見つけられると、暗号文を同じ鍵位置ごとに分けて分析できる。

解読法への流れ(19世紀)

  • カシスキー検査

    カシスキー検査は、ヴィジュネル暗号の鍵の長さを推測する方法となる。
    19世紀にはチャールズ・バベッジが解読法に近い考え方へ到達し、1863年にはフリードリヒ・カシスキーが鍵の長さを推測する方法を公表した。

    暗号文の中に同じ文字列が繰り返し出てくる場合、その間隔が鍵の長さと関係していることがある。
    その間隔を調べることで、鍵の長さを推測できる。

    同じ暗号文字列が出る
      -> 出現位置の間隔を調べる
      -> 間隔の約数から鍵の長さを推測する
      -> 同じ鍵位置ごとに頻度分析する
    
  • 意味

    ヴィジュネル暗号は長く強力な暗号と考えられていたが、鍵の繰り返しという弱点があった。

    つまり、多表式暗号は単換字暗号より強いが、鍵の使い方が不適切であれば解読される可能性がある。
    この考え方は、現代暗号における鍵管理の重要性にもつながる。

要約

  • 多表式暗号は、15世紀から16世紀にかけて発展し、複数の換字表を切り替えることで頻度分析に対抗する。
  • アルベルティの暗号円盤は、1467年頃に示された多表式暗号の重要な出発点となる。
  • ヴィジュネル暗号は、16世紀に広まった多表式暗号の代表例で、鍵によって文字ごとにずらす数を変える。
  • 鍵を繰り返す場合、周期が生まれるため、19世紀のカシスキー検査などで解読の手がかりになる。
  • 多表式暗号の歴史は、暗号の強さだけでなく鍵の扱いが重要であることを示している。


Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp