ヴィジュネル暗号
ヴィジュネル暗号は、複数の暗号のアルファベット(換字表)を使う有名な暗号です。そのため、従来の頻度分析に対してずっと強い暗号です。
暗号化と復号のしくみ
暗号化の手順は、シーザー暗号を使って説明できます。ヴィジュネル暗号の鍵は、英語のアルファベット a–z の文字でできた任意の単語です。例えば、「bcf」という単語を鍵にできます。暗号化では、まず平文を書き、そのすぐ下に鍵を書きます。鍵は、平文と同じ長さになるまでくり返して書きます。平文が「konbanwa」の場合は、次のようになります。
| 平文: | k | o | n | b | a | n | w | a |
| 鍵: | b | c | f | b | c | f | b | c |
次に、平文の各文字を、対応する鍵、つまり同じ列にある鍵の文字を使って、シーザー暗号で暗号化します。シーザー暗号は文字をずらす暗号で、鍵の文字は、平文の文字を何文字ずらすかを「a」から数えて表します。例えば、「b」はアルファベットで「右へ」1文字ずらすことを表し、「d」は右へ3文字ずらすことを表します。単語「hello」を鍵「b」のシーザー暗号で暗号化すると、「ifmmp」になります。
シーザー暗号では文全体を1つの文字で暗号化しますが、ヴィジュネル暗号ではふつう複数の文字で暗号化します。「konbanwa」を鍵「bcf」で暗号化すると、次のようになります。
| 平文: | k | o | n | b | a | n | w | a |
| 鍵: | b | c | f | b | c | f | b | c |
| 暗号文: | l | q | s | c | c | s | x | c |
最初の文字「k」は鍵「b」、つまり1文字ずらして暗号化したので、結果は「l」です。文字「o」は鍵「c」、つまり2文字ずらして暗号化したので、結果は「q」です。残りの文字も同じようにします。
復号もまったく同じ方法で行います。ただし、文字を「右へ」ずらすかわりに「左へ」ずらします。
ヴィジュネル暗号で暗号化・復号するオンラインツール
ヴィジュネル方陣
暗号化と復号の手順全体は、ヴィジュネル方陣を使っても説明できます。ヴィジュネル方陣は、暗号化のときに使える補助の表です。26行26列の表で、各行にアルファベットが書かれていて、行が1つ下がるごとに1文字ずつずれています。
このようなヴィジュネル方陣があれば、暗号化は次のように行います。まず平文の文字をとり、その文字で始まる行を探します。次に鍵の文字をとり、その文字で始まる列を探します。その行と列が交わるところにある文字が、暗号文の文字です。
前の例では、「konbanwa」を鍵「bcf」で暗号化しました。そこで、「k」で始まる行と「b」で始まる列を探します。この行と列が交わるところにある文字は「l」で、これが暗号文の文字になります。
復号はその逆の手順です。文字「l」を鍵「b」で復号するには、まず列「b」を探し、その列の中で文字「l」がある行を探します。その行の先頭にある文字が平文の文字です。
ヴィジュネル暗号の強み
ヴィジュネル暗号は、なぜ当時あれほど強い暗号だったのでしょうか。従来の頻度分析をとても難しくしたからです。例えばシーザー暗号では、平文の同じ文字は、暗号文でも必ず同じ文字に暗号化されます。ところが、ヴィジュネル暗号ではそうなるとは限りません。
文「moshi moshi moshi」を鍵「stan」で暗号化すると、暗号文「ehsua fofzb mbkai」が得られます。平文には同じ単語が3つ並んでいるのに、暗号文ではどの単語もまったくちがって見えます。真ん中の単語「fofzb」には「f」が2つ含まれていますが、これらは平文のちがう2文字「m」と「s」からできたものです。
鍵の選び方
ヴィジュネル暗号の安全性は、鍵の選び方に大きく左右されます。シーザー暗号では、「a」以外ならどの文字を選んでも安全性は変わりませんでしたが、ヴィジュネル暗号では鍵によって安全性が大きく変わります。
- 1文字だけの鍵を使うと、ヴィジュネル暗号はシーザー暗号にもどってしまいます。
- 「mmm」のように同じ文字だけでできた鍵も、やはりシーザー暗号と同じになります。
- 短い鍵で暗号化した文は、とても簡単に解読できます。
- ある程度長い鍵(50文字くらい)で暗号化した文でも、暗号文が十分に長ければ、とても簡単に解読できます。コンピュータを使えば数秒で解けます。
- 完全にランダムで、文そのものと同じ長さの鍵で暗号化した文は、解読できません。