一般社団法人日本量子コンピューティング協会様が量子エンジニア(ゲート式)アドバンスコースの第2回の教材を上げていただいているので、勝手ながら解説してみます。第2回は(量子暗号(通信)と呼ばれることも多い)量子鍵配送がテーマです。量子鍵配送の代表例にはBB84とE91がありますが、本記事はE91を取り上げます。BB84はこちらです。例によってJupyter notebookを https://github.com/sin-gee/ImageOfQuantumBit/ImageOfE91.ipynb に置いておきますのでよろしければ試してみてください。
量子鍵配送のやろうとしていることは、0/1のビット列を2者間で安全に共有することです。それ自体はDiffie-Hellmanといった今日も存在するアルゴリズムと同じですが、それを量子でやろう、というものです。「じゃ、Diffie-Hellmanでいいじゃん」と思われそうですが、Diffie-Hellmanでは鍵の長さは有限長で、かつ量子コンピュータに対する耐性がありません。量子鍵配送では鍵長は無限長を目指します。また、Diffie-Hellmanは「盗聴されてもOK」なのに対し量子鍵配送では「盗聴されれば絶対バレる」を実現するという違いがあります。
E91の量子回路は次のとおりです。
左側はこちらで示したとおり、つまりE91は量子もつれを利用しています。図の右側で示した「?」ですが次の4とおりが可能です。
量子ビットをAlice/Bobで何個か(何百個か)測定したのち、Hを使用したか/しなかったを(古典チャネル=盗聴されたり書き換えられたりしてもかまわない通信路で)教えあいます。上2つだった場合は成功であるため測定結果を記録し、下2つだった場合は測定結果を破棄します。その上で、成功した測定結果の一部をAlice/Bobで教えあいます。成功した場合は100%同じになるハズですが、盗聴され量子ビットを書き換えられている場合はそうなりません。教えあった結果が同じかどうかで盗聴されているかどうかを判断します。
一方、Eveはどうやって盗聴しようとするでしょうか? こちらで示したように量子複製不可能定理があるため、Eveは量子を途中で抜き取っても複製して戻すことはできません。量子の状態を知るには測定するしかEveには手がありません。といって何等か量子を送らないと量子が来ないのでBobは異変に気付きます。Eveが適当に量子を作って送るにしても、それはAliceが受け取る量子とはもつれを起こしていないものとなります。また、Eveは抜き取った量子を測定するにも基底をどうする(Hゲートを使用する/しない)かを決めなければなりません。しかし、Alice/Bobがどちらの基底を選ぶのか、Eveは知りようがありませんから、(Alice/Bobが使用する基底と一致したうちで、)Eveの選んだ基底が一致する確率は50%になります。つまり何もわからない、ということになります。
このため、Alice/Bobで(Hを使う/使わないが一致しても)100%一致することはありません。
ところで、Aliceに送られる量子はCXゲートの前後とはいえHゲートを2回作用させる場合が出てきます。$q_0$はもともと$\lvert 0 \rangle$でしたから$\lvert 0 \rangle$に戻るのではないかと思った方はいらっしゃいませんか?
でも戻らないのです。実際、「C」がついていないXゲートの場合は、$\lvert 0 \rangle$に戻ります。
この現象はこちらの「位相キックバック」と同様の現象です。「制御ビット」なのに他の量子ビットを制御することによって影響を受けてしまう...。個人的には量子アルゴリズムの、あるいは量子もつれの最も不可解にして魅力的なところと思っていますが、どうでしょうか。