BB84プロトコルによる乱数列の安全な共有
いまアリスがN個のビットを、毎回ランダムなコーディング方向を用いて量子状態として送り、ボブがこれもランダムなデコーディング法でN個のビットを解釈すると考えます。デコーディングが終わった時点で、アリスとボブは公開回線で通信し、各回に用いたコーディング法を確認して、双方の方向が偶然一致したM回のビットだけを比較するとします。もし途中になにも無ければ、勿論このM回分のビットに関してはアリスとボブで100%一致するはずです。しかしもし、間でイヴが盗聴していれば、上の文節で見た通り、このM回のうちでもある確率でアリスのビットはボブに間違って伝わります。
これを要するに
(1)あるビット列をアリスが「上下コーディング」と「左右コーディング」をランダムに交ぜて状態を送る
(2)ボブも「上下デコーディング」と「左右デコーディング」をランダムに交ぜてビット列を再生する
(3)両者のコーディング/デコーディング法を事後に比較して、一致した部分だけのビットを並べたビット列を、アリス、ボブがそれぞれ作る。
(4)盗聴者なければ両者は100%一致しているはずなので、ランダムなビット列が共有されたことになる。
(5)両者にもし齟齬があれば盗聴者イヴの存在を示している。
という訳です。
結局、公開回線で通信して(5)を確認する期間と、盗聴者の無いことを仮定して(4)としてランダムなビット列を共有する期間を適宜取り混ぜれば、盗聴にたいして安全なランダム列の共有ができるわけです。この乱数列を暗号の秘密鍵として用いれば、決して解読不可能な暗号ができます。1984年にこれを考案したのがアメリカのIBMという会社の研究所にいたべネットとブラサールで、それにちなんでこの量子状態通信のやり方を「BB84プロトコル」と呼びます。
|