量子暗号の現在までの進展を少しだけ調べる

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$
##量子技術と通信
量子技術というとたくさんの企業が活発に開発を進めている量子コンピュータが注目を浴びていますが、量子暗号や量子ネットワーク、最近では量子機械学習等アルゴリズム以外にもできることが増えてきて、ますます活気づいてきました。<a href="https://ja.wikipedia.org/wiki/%E9%87%8F%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF">ショアのアルゴリズム</a>が発見され、量子コンピュータを特定の暗号を高速で解くことに利用できるというのが証明されて以来量子情報技術は急速に成長し続けています。

量子暗号を勉強していた時期が過去にあり、ふと現在の進展が気になったので少しだけ調べることにしました。
結論からいうと<a href="https://arxiv.org/pdf/1510.06120.pdf">量子鍵配送を超える量子暗号</a>という文献や<a href="https://arxiv.org/pdf/1906.01645.pdf">量子暗号の進捗</a>という文献を見つけましたが、結局現在も量子鍵配送が広く使われているという印象を受けました。
なのでこの記事では元祖量子暗号であるBB84をおさらいし、少しだけ量子暗号について発見したことを書くことにします。

#量子暗号とは
暗号は日常生活でもよく使われていて、暗号化された文章は鍵を知らないと元の文章に直すことが出来ず、読むことが出来ません。暗号鍵は数学や物理現象を使って生成することができ、大抵の暗号はとてつもなく強いコンピュータでないと解くことが出来ません。鍵の安全性については触れませんが、簡単に予測できるような鍵は基本的に使用してはいけません。
量子技術を使って文章を暗号化することも可能で、そういったものの総称を量子暗号(Quantum Cryptography)とひとまとめにされています。ですが、紐を解いてみると実際に量子技術を使われているのはごく一部で、暗号文を作り送信するために量子技術が使われているのではなく、暗号文を作るための鍵の生成に量子技術が使われてきました。したがって、量子暗号というのは少し語弊があって、厳密には量子鍵配送のことを指すことが多いです。ここでの量子技術は鍵を安全に一方から他方に送ることが出来るという点で重宝します。

##量子鍵配送
量子鍵配送(Quantum Key Distribution: QKD)は名の通り量子技術を使って平文を暗号化する鍵を一方から他方に配送することです。量子暗号と出てくる場合たいてい量子鍵配送のことを指します。量子暗号と呼ばれてはいますが、古典暗号を使うために量子技術を使って鍵を配送します。よく使われている量子鍵配送は<a href="https://arxiv.org/abs/2003.06557">BB84</a>と呼ばれていてBBはBennettとBrassardの頭文字で1984年に提案されました。
この論文では鍵配送をするのに単一光子の偏光の利用を提案しています。厳密には違いますが簡単にいうと、目に見えないくらい弱めたレーザー光が単一光子にあたります。光には偏光というものがあり、飛んでくる光と水平になる偏光板があればその光を完全に遮断できます。

<div align="center"> 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64828/71b906b4-078a-d64a-e720-5c0d670f578f.png" width=50%>
</div>
<a href="https://kotobank.jp/word/%E5%81%8F%E5%85%89-131151">図引用元</a>
画像ではこの電磁波（光）の偏光は水平方向です。波長板というものを使うと光の強度を失うことなく偏光を変えることが出来ます。偏光板は決められた偏光のみを通すものなのでもしも入ってくる光と選ばれた偏光板の軸が違う場合強度を失います。
単一光子ですから光が偏光板を通るか通らないかでビットを作ることが出来そうです。ビットの送信ができるということはレーザーを使ってメッセージを送ることが可能になります。

例えば、ねこ&rarr;neko&rarr;110 101 107 111 &rarr;1101110 1100101 1101011 1101111のようにASCIIコードを利用すればひらがなを2進数に直すことが出来ます。この2進数を偏光を使い送信することが出来ますが、これは平文で暗号化されていないため誰にでも読むことが出来るので安全であるとは言えません。

##BB84プロトコル
####BB84の流れ
1.アリスがボブに偏光$(水平、垂直、斜め、斜め逆)=({H,V,D,A})$のいずれかのうち一つを選びボブに送る。
2.ボブも $({H,V,D,A})$ いずれかに設定された偏光板をランダムに利用して光子を観測する。
3.アリスとボブはその後お互いの偏光がHVかDAだったかのみをシェアし、その結果によりボブはアリスが何を送ってきたのか推測できるためその結果を鍵にすることが出来る。
4.アリスとボブの間で偏光がずれている場合はお互いその結果は捨てる。
5.アリスは平文をボブに送った鍵を利用してワンタイムパッドで暗号化
6.ボブはアリスから光子を介して鍵を受け取っているのでその鍵で復号化しもとの文を読むことが出来る。
※盗聴者イブの存在が怖いが、複製禁止定理もしくは結果の食い違い等でアリスとボブはイブの存在を恐れる必要はない

BB84プロトコルでは相互不偏基底(Mutually unbiased bases: MUB)と呼ばれる基底が使われます。MUBを使うと盗聴者がいる場合にもうまいように鍵配送ができます。量子情報でよく使われるブラケット記法を使用しますが、ビット0,1を量子力学的に表現するのに使われ、qubitと呼ばれます。通常のビットと違うのは二つのビットが重なり合っている状態が作れることです。よくある例ではコインの表と裏が重なっている状態で、測定されて初めて表か裏かがわかります。光子の例では斜め偏向は水平偏光と垂直偏光の重ね合わせです。
基底セット1（水平と垂直偏光)と基底セット2（斜めと逆斜め偏光)を用いて測定を行った際に確率が一定になる場合それらの基底はMUBとなります。ここでは水平垂直偏光(水平HorizontalのH,垂直VerticalのV)と斜め方向偏光(ななめDiagonalのD,逆のななめAnti-diagonalのA)が当てはまります。厳密には円偏光もあるのでMUBは3つあります。

```math
\begin{equation}
\mbox{MUB1:} \ket{H} = \ket{0},\ket{V} = \ket{1}.
\end{equation}
```

```math
\begin{equation}
\mbox{MUB2:} \ket{D}=\frac{1}{\sqrt{2}}(\ket{H}+\ket{V})= \frac{1}{\sqrt{2}}(\ket{0}+\ket{1}),\ket{A}=\frac{1}{\sqrt{2}}(\ket{H}-\ket{V})= \frac{1}{\sqrt{2}}(\ket{0}-\ket{1}).
\end{equation}
```
例えばMUB1からHを、MUB2からDを選んでくるとこれらを掛け合わせたときの確率は1/2となり、MUB1からVを、MUB2からAを選んだ場合にも1/2となります。このようにどれを選んでも1/2となる場合にMUBとなります(二次元の場合)。

```math
\begin{equation}
|\braket{H}D|^2 = \left|{\frac{1}{\sqrt{2}}(\braket{0}0-\braket{0}1)}\right|^2 = \frac{1}{2}.
\end{equation}
```

今回はHVとDA偏光を使うと量子鍵配送を行うことができます。アリスとボブの二者間の通信を考えます。

<div align="center"> 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64828/cd28892c-0982-d3c8-0e70-75f0ffe69217.png" width=100%>
</div>
<a href="https://thesai.org/Publications/ViewPaper?Volume=9&Issue=3&Code=ijacsa&SerialNo=54
">図引用元</a>

アリスは好きな偏光の光子をボブに送ります。ボブはHV基底またはDA基底を使いアリスから来た光子を測定します。ボブはその結果を記録しておき、その後アリスとボブはHVかDAどちらの基底を使ったかのみ各光子答え合わせをします。

一つ目のアリスの光子が$\ket{D}$で、ボブがHV基底で計測をした場合、基底が合わないため、正確なビットを取り出せません。1/2の確率でHかVになります。この場合、ボブは結果を捨てます。
二つ目のアリスの光子は $\ket{V}$ でボブはHVを使いました。後で答え合わせをするのでボブはとりあえず光子を失わず計測することが出来たと記録します。ここで注意したいのは、答え合わせではアリスとボブは基底がHVかDAのどちらかであったかを確認するだけであり、偏光Vを教えるわけではありません。
アリスが $\ket{H}$ でボブがVを使った場合光子が届きません、ですが答え合わせでの基底がそろっているのでボブはアリスがHを送ったのだと推測できます。この場合のビットを0とします。アリスがVを送った場合も同様にボブは基底が合っていれば推測できます。この場合のビットは1です。アリスが $\ket{D}$ を送った場合もボブがD,A基底を使えば推測できます。アリスが送った光子が $\ket{D}$ の場合は1、 $\ket{A}$ の場合は0です。二人が使った基底が合わなかった場合のみ結果を捨てます。

この作業を繰り返すことで、アリスとボブはビットからなる鍵を生成することが出来ます。鍵自体は測定により生成されたビットでありqubitではありません。なので鍵を生成した後の作業は量子技術を使用しません。

この作業だけを見ると第三者イブ（Eavesdropping:盗聴が起源です）が光子をひそかに盗んで同じものを送り、アリスとボブの答え合わせはオープンですから、この会話も盗み聞きすれば鍵を複製できてしまうのではと思うかもしれませんがそれは複製禁止定理により不可能とされています。

###複製禁止定理: No-Cloning Theorem
量子情報では、任意の量子状態は複製できないというのが証明されています。なので、事前に複製したい状態にある光子とまっさらな光子をもってきてそれにコピーしようと思ってもすることはできません。イブはアリスから飛んできた光子1 $(\ket{\psi}_1)$を盗み、自分が持っている光子2 $(\ket{0}_2)$にコピーをしたい。その後光子1 $(\ket{\psi}_1)$をボブに流せばアリスとボブに気づかれることなくイブも鍵を作り出すことが出来ます。

```math
\begin{equation}
\ket{\psi}_1\ket{0}_2 \rightarrow \ket{\psi}_1\ket{\psi}_2
\end{equation}
```
上記の式のような変換が望まれますが、量子の世界ではこれは出来ないのでイブは光子を盗み鍵を複製することはできません。



#ワンタイムパッドによる暗号化
ワンタイムパッド（バーナム暗号とも呼ばれる）でこの鍵を使うと絶対に復号化されることのない暗号文を作ることができます。この鍵は使いまわすことが出来ないので一度使うたびに捨てる必要があります。
平文と鍵のXORを計算すると暗号がすることができ、暗号化されたものはそのままボブに送ることが出来ます。

```math
\begin{equation}
\mbox{平文} \oplus \mbox{暗号鍵} = 0 \oplus 1 = 1
\end{equation}
```

復号したい場合は

```math
\begin{equation}
\mbox{暗号文} \oplus \mbox{暗号鍵} = 1 \oplus 1 = 0
\end{equation}
```
のように鍵を暗号文に足し合わせることでもとに戻すことが出来ます。
ねこを送りたい場合1101110 1100101 1101011 1101111にBB84で生成された鍵でXORをとれば安全に送ることが出来ます。暗号化されたものを無理やり復号化しようとした場合、運よく日本語として意味が通る文章を復号できるかもしれませんが、その直された平文が正しいか正しくないかを見極めることは出来ません。そのためこの暗号は正しい鍵でしか復号できません。例えば、暗号化されたものを適当な鍵で復号しようとした場合、運よく同じ2文字である「いぬ」が現れました。しかしこれはねこではないので正しく復号できていませんが盗聴者はこれが正しいと思い込んでしまうかもしれません。


##量子鍵配送だと鍵を作るのが遅いかもしれない
今も量子鍵配送が使われているということは通信速度が改善されたのでしょうか？
現代では大きなデータのやり取りを要求されることが多いので、わざわざ2進数に直してちまちま1ビットずつ鍵を渡していては時間がとてもかかります。しかも量子鍵配送を行うための施設を作るのにお金がとてもかかることを考えるとコストに見合わないことが多くなりそうです。
1980年代では容量の大きな小さい記憶デバイスは存在しなかったが今であれば1TB以上のものが片手サイズで手に入ってしまうため、そこに鍵を事前に入れておいて安全な配送を行ってくれるエージェントを雇い、記憶デバイスを届けることで安全な通信を確立させてしまうこともできます。容量がたくさんあればしばらく持つのでわざわざ光を使って鍵配送を行う必要はありません。（エージェントお金をたくさん受け取ったため鍵のコピー、流出をしないと仮定します。）
通信速度が改善される、または効率のいい鍵配送プロトコルがあるのであれば上記は解決できそうです。実際量子鍵配送の遅さ＋配送距離の短さがネックになりことが多いようで、それを解決する方法が模索されているようです。

#量子鍵配送以外のプロトコル
鍵配送以外には量子技術を使ってなにが行われているのでしょうか？Wikipedia英語版を見てみるといくつか載っていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64828/9452957f-a6b3-4d84-27bb-53d3212054cd.png)
<a href="https://en.wikipedia.org/wiki/Quantum_cryptography#Quantum_cryptography_beyond_key_distribution
">引用元</a>
ぱっと調べて出てくるなんてことはなく、深く調べないとわかりやすい情報は出てきませんでした。Bit commitmentという技術を量子化できるかもしれないという盛り上がりを一時期見せていたようですが、不可能性等論文がいくつか出されていたようなので、利用価値の真偽を探るのは難しいのかもしれません。そのほかにもデジタル署名に触れている記事も複数ありました。

#現在の量子暗号の状況
現在では先ほども述べたように、量子鍵配送を行うことが出来る距離を伸ばし、鍵生成レートも上げようという動きがみられます。最近では東芝が<a href="https://www.global.toshiba/jp/technology/corporate/rdc/rd/topics/21/2106-02.html">600km以上の鍵配送を可能にした</a>などの記事を出しています。この記事ではTwin-Field QKDというアリスとボブ両方が光子を送り、中間地点に干渉計を置いて鍵をシェアするというものを使用しているみたいです。<a href="https://arxiv.org/ftp/arxiv/papers/1707/1707.00542.pdf">サテライトを使ったQKD</a>も行われており、かなりアクティブにQKDの実験検証を行っているようです。

#まとめ
量子鍵配送は古くから研究されており、ベースとなるプロトコルBB84はいまだに使われています。実用化するにはそのままのプロトコルではダメで、安全性の向上、配送距離の増加、鍵生成速度の向上すべてが大事です。これらの課題を解決すべく、たくさんのプロトコルが今も発明そして実証実験されています。光ファイバーが流通したように、今後いたるところで改良されたBB84が使われる時代がくるかもしれません。