2008.11.30 Sunday
絶対に破られない暗号(1)
暗号の世界には「量子暗号」というものがあります。1984年にIBMのチャールズ・ベネットとモントリオール大学のジル・ブラザールが原案を考えました。「絶対に破られない」とされる量子暗号のしくみを見てみましょう。
暗号の説明では、暗号の送り手を「アリス」、受け手を「ボブ」、盗聴者を「イブ」とする決まりがありますので、それに従います。
アリスは、ボブに、2進数で「1001110」というメッセージを送ろうとします。このときアリスは、素粒子「光子」がもつ「偏極」という性質を使います。偏極は、光子がもつ振動の角度のこと。たとえば1個の光子がケーブルを通るにしても、「|」「−」「/」「\」などの偏極が存在することになります。
暗号では、縦横スキームといって、「1」を「|」、「0」を「−」で表す方法と、斜めスキームといって「1」を「/」、「0」を「\」で表す方法があります。通信の際「1」や「0」の情報が縦横スキームで送られるか、斜めスキームで送られるかは、光子の性質上まったくのランダムとなります。
つまり、「1001110」は、「|−−/|/\」という光子の偏極で送られることもあれば、「/−\||/−」と送られる場合もあります。
ここで「ポラロイド・フィルタ」と呼ばれるフィルタが登場します。このフィルタにも「|」「−」「/」「\」の4種類があります。例えば「|」のフィルタを使うと、縦横スキームの「|」は通すものの「−」は引っ掛かってしまいます。
このフィルタに特徴的なのは、ここから先。「|」を使った場合、「|」の光子を確実に通す以外に、「/」の光子と「\」の光子については、通す場合もあれば通さない場合もあるのです。その確率は半々。
さらに特徴的なことに、運よく「|」のフィルタを通過することができた光子は、すべて通過後は「|」の光子として扱われることになります。
ここで盗聴者のイブが使えるのは、光子の偏極が「|」か「−」かを読みとる「縦横スキームだけわかる検出器」か、光子の偏極が「/」か「\」かを読みとる「斜めスキームだけわかる検出器」のどちらかに限られてしまいます。
もしイブが「斜めスキームだけわかる検出器」を使ったとすると、アリスが暗号を送った時点で「/」か「\」だった光子は、判定できますが、「|」だった光子は「/」または「\」として誤読してしまいます。「/」であれば、「|」と同じく暗号は「1」を表すのでイブにとっては幸いですが、「\」であれば暗号は「0」を表すのでイブにとっては困ったことになってしまいます。
イブにとってはさらに都合が悪いことに、フィルタを使って光子の偏極を読みとれるのは、1回きりなのでした。
ここまでの条件は、暗号受信者のボブにとってもおなじこと。ボブもイブ同様、暗号を間違って読んでしまうことになります。
そこで、アリスとボブはあらかじめスキームについての取り決めをしておく必要があります。たとえばアリスが冒頭の「|−−/|/\」をボブに送る場合、アリスはボブに電話をして「『縦横 縦横 縦横 斜め 縦横 斜め 斜め』で送ります」と伝えることになります。
しかし、この会話をもし意地悪なイブに盗聴されてしまったとしたら、ここまでやって来たことが徒労になってしまいます。さてどうしたものか……。つづく。
| - | 23:59 | comments(0) | -