最も単純でまた歴史のあるクリプトグラフィ、シーザー暗号について説明します。これは実際にユリウスカエサル(シーザー)が秘密文書に使用した方法です。
シーザー暗号
|
シーザー暗号は元々のアルファベットを平アルファベット、ずらしたアルファベットを暗号アルファベットとし(下図参照)、平アルファベットで書かれた文字列を暗号アルファベットで書き直す(暗号化)。復号化はその逆の操作を行う。 |
平アルファベット : 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
暗号アルファベット: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
(この場合暗号アルファベットは平アルファベットを3つシフトしています。このことをここではCAESAR SHIFT 3と呼ぶことにします。)
つまりA→D、B→Eといった具合に平文を暗号文に換えていきます。
例えば
I LOVE YOU
なら
L ORYH BRX
となり普通はスペースを詰めて書くので
LORYHBRX
となります。
上の例ではスペースを無くしましたけど元々の平アルファベットにスペースを入れて、スペースも他の文字に対応させる場合もあります。
しかしこれでは第三者は暗号文を入手するとアルファベットを1文字ずつ、ずらしていって最終的に25回(スペース含めても26回)シフトするだけで平分を得ることができます。
そこでキーワードまたはキーフレーズを用いると少し第三者にばれにくく、かつ当事者同士で覚えやすいシフトになります。
例えばキーフレーズを COGITO ERGO SUM とあらかじめ当事者同士で決めておきます。そしてキーフレーズのスペースを省きます。
COGITOERGOSUM
次に2回目以降出てくる文字を消去します。
COGITOERGOSUM → COGITERSUM
この出来上がった文字列のあとに使われていないアルファベットを並べていきます。
COGITERSUMABDFHJKLNPQVWXYZ
これで COGITO ERGO SUM をキーフレーズとした暗号アルファベットの完成です。
しかし暗号を創る人もいれば、暗号を解読する人もいます。何でもない文章を眺めていると、どの文字の出現頻度が高くて、どの文字の出現頻度が低いかだいたい見当がつきます。そういう場合はいくらキーフレーズを作っていても、それとは無関係に解読されていきます。
そういうときは”ヌル”を使用します。ヌルとはそれ自体全く意味のない文字で、ただ第三者にばれにくくするためだけに使用します。
たとえばアルファベットの26文字を0から99までの数字にランダムに対応させていきます。残りの74個の数字は”ヌル”です。それぞれのヌルの出現頻度は暗号化する側が自由に設定できるので、第三者にとっては非常にやっかいなものでしょう。