全2472文字
PR

 ここでアリス女王に必要なのは、仲立ちを置かず直接ボブ卿に手紙を渡すという過程を模倣したプロトコルだ。現実にこれを解決するには、暗号を導入するしかない(テレポーテーションでもできれば別だが)。こうして人は、何千年も前に、新しい種類の暗号アルゴリズムを考案するに至った。それが、いわゆる対称暗号化のアルゴリズムである(暗号化アルゴリズムのことを、暗号方式(サイファー)ともいう)。

注:暗号アルゴリズムのひとつをプリミティブ(primitive)と呼ぶことも多い。プリミティブは、暗号において使われる最小の構成単位と考えることができ、他のプリミティブと組み合わせてひとつのプロトコルができあがる。あくまでも専門用語で、とりたてて重要なわけではないが、文献に登場することも多いので、知っておいて損はないだろう。

 では、暗号プリミティブを使って、アリス女王の手紙を使者から隠す方法を考えてみよう。ここでは、プリミティブがブラックボックス(中身が何なのか、どんな処理をするのかが見えない装置)であり、次の2つの関数としての機能をはたすとする。

  • ENCRYPT(暗号化)
  • DECRYPT(復号)

 1つ目の関数ENCRYPTは、秘密鍵(通常は大きい数字)とメッセージをとり、ランダムに見える一連の数を出力する。ノイズだらけのデータといってもよい。ここで出力されたものを暗号化メッセージと呼ぶ。ここまでが、図1だ。

図1 ENCRYPT関数は、秘密鍵とメッセージをとり、暗号化メッセージ、つまりランダムなノイズのように見える一連の数を出力する
図1 ENCRYPT関数は、秘密鍵とメッセージをとり、暗号化メッセージ、つまりランダムなノイズのように見える一連の数を出力する
[画像のクリックで拡大表示]

 2つ目の関数DECRYPTは、ENCRYPT の逆の処理を行う。つまり、同じ秘密鍵と、ENCRYPTで出力されたランダムな数(暗号化メッセージ)をとって、元のメッセージを出力する。これが図2だ。

図2 DECRYPT関数は、暗号化メッセージと秘密鍵をとり、元のメッセージを返す
図2 DECRYPT関数は、暗号化メッセージと秘密鍵をとり、元のメッセージを返す
[画像のクリックで拡大表示]