現代の暗号

暗号の用途は分かりましたが、実際にはどのような暗号があるのでしょう?

認証目的の暗号には、先ほど挙げた「山」「川」のような合言葉があります。一方、情報の秘匿化を目的とする暗号には、先ほどの隠語文の他にも、シーザー暗号(詳しくは後述)と呼ばれるものが有名です。

この隠語文。暗号化する単位が「文」であることは分かるでしょうか。つまり、秘密に伝えたい「」を、当事者間で事前に秘密裏に対応を決めておいた別の「」に置き換えて伝えるのです。例えば、「二時に来て!」という文を伝えたい時には「たい焼き焼いた」などと全く想像の付かない文に変えて伝えるよう取り決めておくのです。このため様々な状況を想定するには、より多くの文に対する暗号文の対応を予め決めておく必要があります。

しかし、これには限界があります。当初想定されなかった事態が発生し、対応する暗号文を事前に取り決めてない文を伝えたくなった場合には暗号化できないのです。もう少し自由な文を送れるようにするにはどうしたらよいでしょうか。とりあえず、暗号化する単位を「文」から「単語」へと縮めるのはいかがでしょう?

これは、「渡辺さん」→「ナベ」、「とても」→「チョ〜」、「むかつく」→「MM」などと言い、「ギリギリになってキャンセル」することを「ドタキャン」と言う高校生に例えることができます。高校生が「ナベがドタキャンしてさぁ、チョ〜MM」と言った場合、単語の置き換えルールを知っている同じ高校生には意味が通じますが、そのルールを知らない おじさんたちには全く意味不明 です。これなら、もし文を「渡辺さん」ではなく「内山さん」として伝えたい場合にも、事前に「内山さん」を「うっちゃん」とさえ対応づけておけば、「うっちゃんがドタキャンしてさぁ、チョ〜MM」と暗号化した単語の組み合わせで対応できるのです。このように暗号化の単位を「単語」に縮めることで、未想定の多くのメッセージを伝達できるようになります。

しかしこれも限界があります。事前に置換方法を取り決めていなかった単語を使いたい場合には対応できないのです。とは言え、世界に存在する全ての単語の置換方法を決めておくのは困難です。何とか完全に自由な文を暗号化することはできないでしょうか?

いっそのこと、置換の単位を「単語」よりもさらに短い「文字」にしてしまえばどうでしょう?つまり、秘密に情報を共有したい当事者間で、「あ」は五十音順で一文字後にずらして「い」に、「い」は「う」に、「う」は「え」に…などと文字の単位で置換方法を取り決めてしまうのです。

例えば「池袋で待て」と言う文を伝えるには、

などとなります。これなら、どんなメッセージも暗号文に置換できます。しかも五十音順で後にずらす文字数を一文字ではなく、二文字、三文字などと変えることもでき、暗号化結果を異なる暗号文にすることもできます。こうして、暗号化の単位を「文字」とし、五十音順のような公開された文字の順番付けに従って、各文字を事前に取り決めた数だけずらした別の文字に置き換えて暗号化する方法は、冒頭に述べた シーザー暗号 とも言われます(※1)

このように、情報を秘匿化する暗号には隠語文のように事前に取り決めた文しか暗号化できないものと、シーザー暗号のような自由な文を暗号化できるものがあります。ただ、現代の情報ネットワーク社会の暗号は、シーザー暗号のように任意の文を暗号化できなければ役に立ちません。そのため学術的には、隠語文のような特定の文しか暗号化できないものは暗号とは呼ばず、任意の文を秘匿化できる方法 だけを暗号と呼んでいます。

※1 シーザー暗号

ここでは分かりやすく日本語で考えましたが、古代ローマのジュリアス・シーザーが使ったと言われる暗号であり、実際は’A’を’C’に置き換え、’B’を’D’に置き換える…などとローマ字を暗号化するものでした。なお、シーザー暗号(Caesar)は、日本語での発音の仕方の違いから「カエサル暗号」とも呼ばれます。

戻る次へ