量子暗号

現実寄りの厳しめの視点で書いてみました。

[
前の記事へ]  [量子力学の目次へ]  [次の記事へ]


量子通信の困難

 前回説明した具合に量子テレポーテーションができるのなら、これを使って秘密の通信ができるのではないだろうか?前回は送るべき情報を任意の重ね合わせ状態にある量子ビットだということにしておいたが、\( \ket{0} \)\( \ket{1} \)のどちらかにはっきりさせたものを送ってもいいのである。

 あらかじめ共有しておく双子の粒子には何の情報も載っていない。そして後から古典的な手段で送る情報も 00 と 01 と 10 と 11 のいずれかであり、それらは送る内容に関係なく同じ確率でランダムに得られるものだから、これを盗み見されても何の情報もばれない。

 とは言うものの、この方法では 1 ビットの情報を秘密で送るために 3 ビットを送ることを必要としている。あらかじめ送る量子ビットが 1 つと、後から送る古典的な 2 ビットで、合計 3 ビットだ。1 つの量子ビットが持つ情報量というのは、結局は測定した時に 1 ビットの情報をもたらすだけなので、やはり 1 ビットだと考えるのが妥当である。

 通常の 3 倍の通信をする必要があるのは秘密を守る代償として受け入れたとしよう。それ以外に大きな問題がある。双子の粒子を大量に準備して状態を壊さないように送り届けるのは大変にコストがかかることなのだ。

 現在のインターネットでの個人的なデータのやり取りは数十Mbpsというレベルである。つまり 1 秒に数十メガビットである。情報は光信号に変換されて光ファイバーを通って世界をめぐる。途中で信号がかなり減衰したとしても相手側で受信できるように強力なレーザーパルスにして送る。信号が弱くなれば途中の装置で増幅して中継する。古典的な信号は途中で読み放題、コピーし放題だからそういうことが可能だ。
 光信号をあまり強くすると光ファイバーの中心軸部分が焼き切れるという現象(ファイバーヒューズ)が起きる。 理論的にはもっと出力を上げてもガラスは熱に耐えられるはずなのだが、 不純物や微小欠陥などの部分にエネルギーが集中してしまい、 一箇所が焼けるとそれが燃え広がる形で光ファイバーのコアが内部で連鎖的に溶けてしまう。 このようなことはたまに起きるようで、レーザーの出力はもう結構ギリギリまで強くしているのである。 今後、光ファイバーに流す情報量の密度が増えるほどこのような問題に向き合わねばならず、苦労しているようである。

 この話をもう少し補足しておこう。 ある程度太い光ファイバーなら1012 W/m2くらいまでのエネルギー伝送に耐えられるそうだ。 通信に使われる光ファイバーのコアの直径は 10 μm くらいなのでそのまま比例計算をしてやれば 数十Wくらいまでは耐えられそうである。 しかし実際は先ほども話した不純物などの問題や、 多数のファイバーを密集させることによる放熱の難しさの問題で1Wくらいが限界であり、現状では数百mWくらいで使っている。
 一方で量子通信は 1 ビットをたった一つの光子に託す。強い信号にして送れるわけではない。たった一粒だけ。途中で弱くなるわけでもない。受け取れるか受け取れないかの勝負だ。数百 km の光ファイバーを通過するうちに通常の光信号が 1/10000 程度にまで減衰するのだとしたら、エンタングル状態にした一つの貴重な光子を同じ経路に通した時、相手側で無事に受信できる確率は 10000 回に 1 回だ。
 現在の光ファイバーの信号減衰率は約 0.16 dB/km であり、1 km で 96% までしか下がらないという驚異の透明度である。 しかし 100 km なら 0.96100 ≒ 0.016 となり、約 1/60 にまで減衰する。 200 km なら 1/3600、300 km も離れれば約 20 万分の 1 というわけである。
 運良くたまに届く光子がどれとペアであるかを区別するためには、十分な時間間隔をあけて送り出して、到着したタイミングによって判断しなければならない。それで、現在の技術ではせいぜい数十bpsなのである。書き間違いではないことを示すために言い直そう。かなりがんばってみても 1 秒間に届けられるのは数十個。アルファベットを送るなら数文字分だ。遅すぎる。全ての通信を量子テレポーテーションに頼って行うのは無理がある。

 量子テレポーテーションを使って宇宙の果ての別の惑星まで人間をまるごと一瞬で転送できるのでは?などという夢のある記事を見かけることがあるが、かなり無謀なことを話していることが分かるだろう。
 私の個人的な予想に過ぎないが、 人間の意識というのは量子現象によるのではなく、 脳神経の精妙なつながりによって実現しているようなものだと最近の私は強く信じるようになってきている。 つまり物質の量子状態までそっくりコピーしなくても、 物質の配置や、それを真似た構造を再現するだけで人間の意識はコピー可能なのではないかと思っている。 そうだった場合、人間の意識を遠い星にまで転送するのにわざわざ量子テレポーテーションを使う必要はまったくない。 本当に必要なのは通信技術などではなく原子レベルでの物体の組み立て技術である。


量子鍵配送

 では秘密の通信を行うための他のいい方法はあるだろうか?

 古典的な暗号通信でも使われている共通鍵だけを量子通信を利用して送ればいいのである。秘密の鍵さえ安全に共有できてしまえば、あとは古典的な通信を使って勢いよく暗号通信ができる。あまり同じ鍵ばかりを長い間使っているとだんだんと解読のためのヒントが増えていくので、たびたび新しい鍵に変えながら通信すればいいのである。

 現在、古典的な通信で広く使われているのは公開鍵暗号というもので、これは一方が鍵を公開してしまう方式である。誰もが鍵を知ることになるのだが、それを使って暗号化したものを解読するのは誰にでもできるわけではない。鍵を公開した側だけが別の秘密の鍵を持っていて、それを使うことでのみ解読ができるのである。これは秘密の鍵を持っていない者が無理に解読しようとしても計算時間が非常に長く掛かるというので安全が保たれている。ただし量子コンピュータが実現すればそれをすぐに解いてしまえる可能性があるというので、量子コンピュータでも簡単には解けないような数学を利用した新方式を探しているところである。

 さて、量子通信を使って秘密で送ろうとしている鍵は、今話した公開鍵暗号方式とは別のものである。公開しないような鍵を送って当事者だけで共有するのである。ごっちゃにならないように公開鍵暗号のことは忘れよう。
 量子公開鍵暗号というものもあるようだが、これは量子コンピュータを使った公開鍵暗号方式のことらしいのでちょっと別の話ということで良さそうだ。
 量子テレポーテーションを使ってもいいのだが、量子テレポーテーションが発案される1993年以前に、もっと単純な方法が1984年に発案されている。これは発案者であるベネットとブラザールの頭文字を取って「BB84プロトコル」と呼ばれている。量子ビットを長距離まで無事に送るという点では量子テレポーテーションと同じ困難があるが、わざわざエンタングル状態を作る必要はないのである。

 このプロトコルは単純だが、どう説明すれば簡単だろうか。普通は光子の偏光で説明されることが多い。そのほうが具体的でイメージしやすいからだ。まずはそれで説明してみよう。

 送り手をアリス、受け手をボブと呼ぶことにしよう。アリスは 1 と 0 をランダムに選んで、これを光子の偏光の違いとしてボブに送る。ただし偏光にも色々とあって、縦偏光と横偏光だけだと盗み見されて通信内容がバレるので、右回り円偏光と左回り円偏光も混ぜる。つまり 1 ビットごとに、直線偏光で送るか、円偏光で送るかをランダムに決めて送ってやる。ボブもどちらの方法で送られてくるかを知らないので 1 ビットごとにランダムに決めてイチかバチかで受信する。偶然にもアリスと同じ方式で受信した場合には正しく 1 か 0 の情報が受け取れるが、違ってしまった場合には半々の確率で 1 か 0 が得られることになる。

 なぜなら、円偏光というのは、縦偏光と横偏光を半々に重ね合わせたものであって、重ね合わせの位相の違いによって右回りになったり左回りになったりしているものだからである。逆も言えて、直線偏光というのは右回りと左回りを半々に重ね合わせたもので、位相の違いによって縦偏光になったり横偏光になったりするものである。

 全てを送り終えたら次は答え合わせである。ボブは古典通信を使ってどの光子を無事に受け取ったか、どの方法で受信したかをアリスに教える。アリスはボブが何番目の光子の情報を正しく受け取れたかが分かるので、ボブにも何番目の測定結果が正しいのかを教えてやる。こうして、実際に 0 だったのか 1 だったのかを外部に漏らすことなく、お互いだけが 0 と 1 がランダムに並んだ値の情報を共有できるのである。

 暗号に使う鍵だから、それが意味のないデータ列であってもこうして共有できれば十分なのだ。


盗聴が防げる理由

 この通信を盗聴しようとする者をイブと呼ぶことにしよう。もしこの光子のやり取りが直線偏光のみ、あるいは円偏光のみで行われていれば簡単である。イブは偏光板を入れてやって通過するかしないかで内容を読み取り、代わりの同じ内容の光子を送り出してやればいい。円偏光でも同様のことができる。

 ところがイブはアリスがどちらの方式で送り出しているかを知ることもできないし、ボブがどちらの方式で読み取ろうとするかも知ることはできない。せめてボブがどちらの方式で読み取るかを知っていればその真似をしてやればいいし、途中で読み取ったそのままをボブに送ってやってもボブにばれないだろう。だが、そのどちらもイブには知ることは出来ないので、イブもランダムで読み出すしかない。

 イブがたまたま合っていればいいのだがそんな幸運は続かない。もしイブが外してしまっても、ボブも外してくれればイブの悪行はばれない。問題はイブが外してしまったのに、ボブが当ててしまった場合だ。ボブはちゃんとアリスと同じ方法で読んだはずなのに 1/2 の確率でおかしなデータを受け取るだろう。アリスとボブはそれぞれ違った鍵を所持することになり、暗号通信が成り立たなくなる。

 こうなると、通信システムが壊れているか、盗聴者がいることになる。盗聴者が入り込んでいる事自体が通信システムの異常の一つではある。情報は少しも漏れてはいないけれども、念の為に即刻この通信を中断して調査することで盗聴者を見つけることもできるのである。
 盗聴者が完全にアリスやボブになりすまして間に割り込むようなセキュリティ破りを「中間者攻撃」と呼ぶ。 ここまでやられると盗聴は防げないわけだが、そのためには通信システム自体を大改造することになるので バレずに行うのは難しいだろう。
 とは言うものの、上の説明に出て来た盗聴の試みでさえ同じくらいのシステムの大改造が必要になる話である。 盗聴の試みの例としてこんなことを許すような説明をしているので 「でも中間者攻撃をやられたらおしまいじゃないか」と言いたくもなるのである。


量子ビットで考える

 上では光の偏光で考えてみたが、光ファイバーで何百 km も伸ばした先でどの方向が偏光の縦か横かを判定するのは大変である。一対一で行う実験ならともかく、将来的には各家庭にまで普及させるつもりがあるのだろう。そのときには途中経路の光ファイバーのねじれなどを気にしてはいられないはずだ。というわけで実用化のためには偏光の方向よりも位相のずれなどを積極的に利用することになるはずである。
 実は普通の光ファイバーは経路途中のねじれによって偏光方向が簡単に変わってしまうという弱点を抱えている。 実験では数十分程度で調整すればいいくらいのゆっくりした変動なので今のところはそれほど問題はないらしい。

 実用化のことをあれこれ言うなら、相手までつながっている光ファイバーの配線の距離を知らない状況で、 どのタイミングで相手に着いた光子がいつ送信した光子と同一であるかを判断するのも難しそうだ。 単一光子だけではなく強力な光パルスをたまに間に挟んで送ることでタイミングを取るという方法もなくはないだろう。
 今のところは光を使った通信が一番現実的だが、ずっと未来の世界でも光を使っているとは限らないし、量子ビットに置き換えた一般的な話にして考えてみよう。

 縦偏光と横偏光をそれぞれ\( \ket{0} \)\( \ket{1} \)に相当すると考えてみよう。円偏光はこれらの位相を ±90°ずらして同じ割合で重ね合わせたものなので、\( \frac{1}{\sqrt{2}}(\ket{0}+ i\, \ket{1}) \)\( \frac{1}{\sqrt{2}}(\ket{0}- i\,\ket{1}) \)に相当する。これら二つの円偏光を重ね合わせれば\( \ket{0} \)になったり、一方の位相を反転させて重ね合わせれば\( \ket{1} \)になることも分かるだろう。例えば円偏光を\( \ket{R} \)\( \ket{L} \)という記号で表したとする。
\[ \begin{align*} \ket{R} \ &=\ \frac{1}{\sqrt{2}} \Big(\ket{0} + i\, \ket{1} \Big) \\ \ket{L} \ &=\ \frac{1}{\sqrt{2}} \Big(\ket{0} - i\, \ket{1} \Big) \end{align*} \]
 すると、次のような関係になっていて、お互いを半々の重ね合わせ状態で表せるという意味で直線偏光も円偏光も対等なわけである。
\[ \begin{align*} \ket{0} \ &=\ \frac{1}{\sqrt{2}} \Big(\ket{R} + \ket{L} \Big) \\ \ket{1} \ &=\ \frac{-i}{\sqrt{2}} \Big(\ket{R} - \ket{L} \Big) \end{align*} \]
 こういうのを見ていると次のようなもっと単純な状態をまだ使っていないことに気付く。
\[ \begin{align*} \ket{+} \ &=\ \frac{1}{\sqrt{2}} \Big(\ket{0} + \ket{1} \Big) \\ \ket{-} \ &=\ \frac{1}{\sqrt{2}} \Big(\ket{0} - \ket{1} \Big) \end{align*} \]
 光にたとえるなら縦偏光と横偏光を位相を変えずにそのまま重ね合わせたものと、一方の位相を反転させて重ね合わせたものであって、これらは縦偏光と横偏光をそれぞれ 45°傾けた直線偏光に相当する。

 あちこちの量子暗号の解説を読んでいると、円偏光を使って解説しているものと、45°傾けた直線偏光を使って説明しているものがあるが、理論的にはこのような構造になっているのでどれを使ってもいいのである。

 すでに量子ゲートの働きなどを説明してあるので、このような状態をうまく操作して 0 や 1 を取り出す方法を説明する必要はないだろう。


B92プロトコル

 その後も色々な暗号通信の方法が提案されているのだが、ベネットが1992年に発表した改良版のプロトコル「B92プロトコル」が面白いのでついでに紹介しておこう。

 B92プロトコルは改良にはなっておらず、すでに盗聴する方法が見つかっているというご指摘がありました。調査中です。 ご迷惑をおかけしております。お気を付け下さい。

 BB84ではアリスの方だけでランダムに 0 か 1 を決めて、その一部でも正しく送れればいいという考え方をしていた。しかしこの改良版ではアリスとボブがそれぞれにランダムに 0 か 1 を毎回決めておいて、一致した場合だけそれを使うことにする。ただし盗聴されてはいけないから、巧妙な方法で情報を送る。

 アリスが 0 を選んだ時は\( \ket{0} \)を送り、アリスが 1 を選んだ時は\( \ket{+} \)を送るのである。これを盗聴すると 0 が出る場合の方が多いだろうが、どれがどちらの方法で送られたものなのか区別が付かない。ボブは 0 を選んだときには\( \ket{+} \)\( \ket{-} \)のどちらかであるかを決める装置で測定をし、1 を選んだときには普通に\( \ket{0} \)\( \ket{1} \)かを決める装置で測定をする。要するに、前者の場合にはアダマールゲートを通してから測定するわけである。アダマールゲートを通すと\( \ket{+} \)\( \ket{0} \)になるし、\( \ket{-} \)\( \ket{1} \)になる。ボブは測定結果が 0 だったならアリスに「不採用!」と伝え、1 だったなら「採用!」と伝える。それを繰り返すだけでいい。

 なぜそれでうまく行くのかじっくり考えてみよう。もしアリスとボブがともに 0 を選んだら\( \ket{0} \)で送られたものをアダマールゲートを通してから測定するので 0 か 1 かが半々で出る。アリスもボブも一致しているのだから採用にすればいいのだが、ボブは半分の確率でこれを不採用にすることになる。

 もしアリスが 0 でボブが 1 だったとしよう。これは二人が一致していないので不採用にしなければいけないはずだ。本当にそうなるだろうか。アリスが\( \ket{0} \)を送り、ボブは普通に測定するのだから 0 を得て、ボブは「不採用!」と判断する。うまく行っている。

 もしアリスが 1 でボブが 0 だったら、これも不採用にしなければならない。アリスは\( \ket{+} \)を送り、ボブはアダマールゲートを通して受け取るので 0 が出る。「不採用!」だ。

 もしアリスが 1 でボブも 1 だったら、これは採用すべきだ。実際はどうなるだろう?アリスは\( \ket{+} \)を送り、ボブはそのまま測定するので半々の確率で 0 か 1 が出る。半分の確率で採用し、半分の確率で捨てることになり、アリスにもそれを伝える。

 不一致を確実に防ぐことが出来る。しかし一致しているのに捨てる場合があって効率が悪そうだ。これのどこが改良版だというのだろう?

 一番重要なところは、もし盗聴しているイブがいたとしても、イブは自分のイチかバチかの測定が合っていたのか間違っていたのかの情報を一切得ることができないというところだ。これはBB84よりも優れていると言えるだろう。

 弱点は、せっかく送った量子ビットの 1/4 しか採用にならないというところだ。BB84なら 1/2 の確率で採用される。つまり倍の量子ビットを送ることが必要である。

 しかしアリスとボブが古典情報を互いに送り合って答え合わせをする必要がない。古典通信はボブからアリスへの一方通行だけで済むわけだ。