換字暗号について
文字を他の文字に一文字ずつ置き換えて作成された暗号のことを「換字暗号」と呼びます。「踊る人形」の暗号は、換字暗号の方法の一つです。
とにかく何か文字を変換する方法を一つ決めれば良いわけですから、「踊る人形」のように文字を絵で表しても良いし、あるいは文字をその他の文字あるいは数字などで置き換えても良いわけです。(広い意味では古代文字を解読することも換字暗号の解読だと考えてよいでしょう。)
シーザー暗号
文字を置き換えるルールで最も単純なものの一つは、ある表に順番に書かれた文字を何文字かずつずらすことでしょう。例えば「おたに」という言葉が何を表しているか分かりますか?次の五十音表をよく眺めながら考えてみましょう。(ヒント:文字を2文字ずらす)
ぱ |
ば |
だ |
ざ |
が |
わ |
ら |
や |
ま |
は |
な |
た |
さ |
か |
あ |
ぴ |
び |
ぢ |
じ |
ぎ |
を |
り |
ゐ |
み |
ひ |
に |
ち |
し |
き |
い |
ぷ |
ぶ |
づ |
ず |
ぐ |
ん |
る |
ゆ |
む |
ふ |
ぬ |
つ |
す |
く |
う |
ぺ |
べ |
で |
ぜ |
げ |
|
れ |
ゑ |
め |
へ |
ね |
て |
せ |
け |
え |
ぽ |
ぼ |
ど |
ぞ |
ご |
|
ろ |
よ |
も |
ほ |
の |
と |
そ |
こ |
お |
五十音表を見ながら文字を2文字ずつ移動すれば、ちゃんと「おたに」が「きつね」という言葉に変換出来ることが確かめられたでしょうか。
暗号にする前の元の文章のことを「平文」といい、暗号を解くことを「復号する」と言いますが、今の場合を図で表すと次のようになります。
[ 平文 ] |
(−2だけ移動)
|
[ 暗号文 ] |
( +2だけ移動)
|
[ 平文 ] |
きつね |
------------>
|
おたに |
------------>
|
きつね |
暗号化
|
復号化
|
日本語の五十音の場合と同じように、アルファベットの場合も、
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
と順番に並べてみます。「SUMMER」という文章の各文字を例えば5文字ずつ動かせば、「XZRRJW」となりますね。
[ 平文 ] |
(+5だけ移動)
|
[ 暗号文 ] |
( ー5だけ移動)
|
[ 平文 ] |
SUMMER |
------------>
|
XZRRJW |
------------>
|
SUMMER |
暗号化
|
復号化
|
このように文字表とずらす字数を決めて作られる暗号はシーザー暗号と呼ばれます。名前からも分かるように、紀元前1世紀頃に古代ローマ帝国の皇帝だったジュリアス・シーザー(Julius Caesar)の時代に考えられた暗号です。2000年以上も前にこのような暗号が使われていたなんて、スゴイですね。
日本でも同様の暗号が知られていて、例えば戦国時代に上杉謙信が用いた暗号(上杉暗号)が有名です。
暗号を解く「鍵」
シーザー暗号の解読のために大切なのは、
の2つの情報です。このように手に入れた暗号を解読するに必要な情報のことを「鍵」と呼びます。例えば、Aさんが暗号文をBさんに送る場合の手順を図に表すと次のようになります:
(Aさん) | (Bさん) | |||
平文 | ------------> | 暗号文 | ------------> | 平文 |
鍵で暗号化 | 鍵で復号化 |
シーザー暗号などの換字暗号は「鍵(つまり何字ずらしたか)をBさん以外の人に知られたら暗号文が解読されてしまう」ということに注意してください。
換字暗号の問題点
シーザー暗号などの換字暗号の欠点は前にも述べたように、「ずらす文字数」の情報(鍵)を人に知られてしまったら、誰でも暗号を解読出来るという点です。
さらに、具体的にいくつずらすのかという数字は分からなかったとしてもシーザー暗号であることさえ知っていれば、(アルファベットは26文字しかありませんから)文字をずらす方法は25通りしかありません。これを全てを調べれば必ず解読出来てしまいます。これでは、人に解読される危険性が大変高いと言わざるを得ません。
そのために、鍵の情報を他人に知られないよう相手に届けないといけませんが、もしそんなことが出来るなら最初から送りたい文をその方法で送れば良いのですから、何だかおかしなことになりましたね。
インターネットでは、クレジットカードの番号や個人情報など、とても大切な個人情報をいくつも扱うわけですから、このような欠点のある換字暗号を用いて個人情報を暗号化するわけにはいきません。さあ、どうしましょう?
公開鍵暗号
換字式暗号などの暗号の欠点は「暗号を読んで欲しい人以外に暗号の鍵が渡ってしまえば、暗号が解読されてしまう」危険があることでした。これでは、安心出来ません。
インターネットなどで頻繁に利用することが想定される暗号は、次のような性質を持てば理想的でしょう:
(1)人に暗号の鍵を知られても構わない(つまり人に暗号の鍵を渡すのに苦労しないで済む)。
(2)暗号文を作れるだけでなく、自分がその暗号を作ったことを証明出来る(身分証明が出来る)
これらの性質を持つような暗号は「公開鍵暗号」と呼ばれます。ここで問題になるのは「どのようにすればこのような暗号を実現出来るのか」ということですが、さていったいどうすれば良いのでしょう?