量子暗号
前回
量子暗号ー量子系(quantum system)を用いて構築される暗号。
Quantum key discribution (QKD)
量子学が正しい限り完全にセキュアな暗号で、量子コンピュータでなくても動く。
秘密鍵の必要な状況
花子から太郎へメッセージを送ることを考える。しかし、そのメッセージは第三者が盗聴できるとする。
n-bitのランダムな秘密鍵を2人で共有していれば、元のメッセージと鍵の配列との排他的論理和を取って、花子は太郎へメッセージを送り、太郎は送られてきたメッセージに再度鍵を排他的論理和をかけることでもとのXを復元することができる。
花子X⊕K--→ 太郎X=X⊕K⊕K
X:メッセージの内容
K: Key 秘密鍵
⊕:排他的論理和
では、その鍵をどのように共有すればいいか?というのがQKDの役に立つところ。
量子ビットの復習
|+⟩と |-⟩を |0⟩、|1⟩と同様にビットと考えることもできる。.
|+⟩と |-⟩をビットとして扱うとき、
|0 ̅ ⟩≔|+⟩ and |1 ̅ ⟩≔|-⟩
と定義する。
量子ビットは、|0⟩|1⟩の基底なのか、|0 ̅ ⟩|1 ̅ ⟩の基底なのかをしらなければビット値を観測することができない。
量子配送プロトコル(Quantum key discribution)で鍵を送る
メッセージを送る花子は {|0⟩,|1⟩} か {|0 ̅ ⟩,|1 ̅ ⟩}をランダムに選んで作ったビット列でメッセージをエンコードすれば、盗聴者はどちらでビット列を観測すればいいかわからないし、もし量子ビットが第三者に観測されたら、量子状態が変わってしまうので、盗聴されていることが分かる。
太郎にどの基底で量子ビットを測定したか知らないといけないが、太郎は先にランダムな基底で量子配列を測定する。その後で、花子が測定した基底を太郎に教える。異なる基底で測定された量子ビットをお互いに削除すると、結果として同じ鍵を2人の間で生成できることになる。
最後に答え合わせとして、花子と太郎で生成された鍵からランダムに文字を取り出し、送りあってあっているか確かめる。ランダムに抜き出した文字列が一致していれば他の文字も一致しているとみなす。一致しなければ、盗聴されていたとしてその鍵は使わない。
BB84ー最も実用的でシンプルなQKDのプロトコル
もし、量子ビットを盗聴者がコピーすることができれば盗聴が可能になるが、量子力学にはクローン禁止定理(non-cloning theorem)が成立するため、それはできない。
しかし、それはノイズがなければの話。現実の世界はノイズが発生し、量子ビットは壊れやすい。ある確率で|0⟩ が |1⟩ になったり |1⟩ が |0⟩になったりする。そうすると花子と太郎の秘密鍵は一致しないという問題が起きてくる。
その問題の解決としてまず、エラー訂正符号を用いたエラー訂正(Error correction)を行う。そして、さらに盗聴者が取得している可能性のある情報を無効化するために、鍵の長さを短くして盗聴者から知られてない鍵を作る。