No185 量子暗号の方式BB84をやさしく解説してみる

前回は量子暗号と呼ばれる暗号方式が量子通信という方法に根差し
ていること、その量子通信の安全性は量子力学の原理にあるという
ことまでを解説しました。

今回は、量子力学の不確定性原理と量子通信の古典的な方式BB84に
ついて解説をします。

ただし、量子暗号のベースとなる量子力学について筆者はズブの
素人です。間違いや誤解などありましたら是非ご指摘をお願い
いたします。


1. 量子通信って量子力学?

はい。そうです。量子力学です。

わけがわからないことで有名なアレです。もちろん筆者もちっとも
理解できていません。

なんせ有名な物理学者のファインマン先生が「もし量子力学を理解
できたと思ったならば、それは量子力学が理解できていない証拠だ」
とおっしゃったくらいですから。

とはいえ、量子通信が盗聴できない理屈というのがこの量子力学に
よるものですから、何の説明もしないというわけにもいきません。


2. 量子は小さい

物質が元素でできていて、その中には電子と原子核があるということ
は皆さんご存知でしょう。
また原子核にある陽子や中性子をさらに分解すると素粒子となること
もご存知の方が多いでしょう。

量子というのはこの電子や素粒子のことを指します。
なので、量子というのは恐ろしく小さな粒子です。

原子(原子核+電子雲)の大きさは100フェムトメートル(1/10,000,
000,000,000メートル)くらいですが、量子の大きさを測る方法は
今のところ見つかっていません。そもそも大きさが本当にあるのか?
と言われるくらいのサイズなのだそうです。

そんな小さなものですから、測定するのも大変です。
中でもニュートリノと呼ばれる量子の測定は特に難しく地下深くに
センサーを山のように付けた巨大な水漕を用意しないと測定すら
できないだそうです。(この方面に興味のある方は「カミオカンデ」
あたりで検索してみてください)


3. 量子は測定が難しい

この測定の難しさも理由の一つなのですが、量子が持つ位置と運動
量という2つのパラメタを同時には測れないのです。

それどころか、どんなに測定技術が向上してもこの2つのパラメタ
を同時に測定することは不可能だということになっていて、これを
「量子の不確定性原理」と呼ぶそうです。

しかも、位置を測定すると運動量が変化し、運動量を測定すると
位置が変化してしまうそうです。

これは量子の状態を変化させる時も同様で、位置を変化させると
運動量がどうなるかはわからず、運動量を変化させると、位置が
どうなるかはわからない、わけです。

この理不尽にしか見えない理屈を利用したのが、量子通信です。
一口に量子通信といっても、いろいろな方式があるのですが、
ここでは一番シンプルな(古典的な)BB84という方式を紹介しま
しょう。


4. BB84という方式

BB84というのは、チャールズ・ベネットさんとギルス・ブラサード
さん(どちらも頭文字がB)のお二人が1984年に発表した量子通信
の方式です。

通信のやり方としては次の通りです。

今回もアリスとボブ、そしてイブに登場してもらいます。
いつものようにアリスは情報を送りたい人、ボブは受け取りたい人、
そしてイブはそれを盗聴したい人です。

そうそう、このメルマガでは今までチャーリーに盗聴者を割り当て
ていましたが、一般的にはイブ(Eve)が盗聴者(eavesdropper)の
役割だそうですので、今後はこのキャストでいきます。
ごめんねチャーリー、今まで汚れ役をやらせて。

話を戻します。

BB84では、上記の不確定性原理を利用して通信を行います。

まず、アリスとボブは2種類の回線を用意します。
1つは通常のネットワーク回線で、もう一つは量子通信用の回線
です。

通常のネットワーク回線は特別なものではなく、皆さんが日常的に
使う回線でOKです。

一方、量子通信用の回線は、アリス側もボブ側も専用の機器が必要
です。

送信をするアリス側は、送りたい情報を決めるために2つの機器を
用意します。
 ・量子1つの位置を決められる機器
 ・量子1つの運動量を決められる機器

受信者であるボブはその逆に受信した量子を調べる機器を用意
します。
 ・量子1つの位置を測定できる機器
 ・量子1つの運動量を測定できる機器

どの機器も1つの量子に1ビット(0か1か)の情報を乗せられる
ものとします。

1つの量子には1ビットの情報しか乗せることができません。

量子には位置と運動量の2つのパラメタがあるので、2ビット分の
情報を乗せられそうなものですが、不確定性原理により測定できる
のは1つだけなので、結果1ビット分しか使えないわけです。

BB84ではこの事実を巧みに利用することで、盗聴を防ぎます。


5. BB84の手順

これで機器の準備はできました。

次に送信手順です。

アリスは情報として「1」を送りたい場合、位置情報か運動量情報
のどちらかを1の状態して、その量子1つをボブに送ります。
この時、位置情報と運動量情報のどちらを1にしたのかはアリス
だけが知っていて、ボブには教えません。

ボブは位置情報か運動量情報のどちらかを測定しますが、ボブも
自分の好きな方を測定します。

具体例で、いきましょう。

アリスは次の8ビットを送りたいと思っています。
 ビット1:0
 ビット2:1
 ビット3:0
 ビット4:1
 ビット5:0
 ビット6:1
 ビット7:0
 ビット8:0

アリスは量子に情報を乗せる時、次のように値を決めるとします。
 ビット1:位(位置情報に乗せる、以下同様)
 ビット2:運(運動量情報に乗せる、以下同様)
 ビット3:運
 ビット4:運
 ビット5:位
 ビット6:位
 ビット7:運
 ビット8:位

ですから、最初のビット1を伝える量子は「位置情報に値0を
乗せた状態」でアリスから発信されます。この時運動量情報が
どんな状態になっているのかは不確定性原理のため、誰も
(アリスも)わかりません。

これをまとめて書くとこうなります。

 ビット1:位0運? ※?はわからない状態
 ビット2:位?運1
 ビット3:位?運0
 ビット4:位?運1
 ビット5:位0運?
 ビット6:位1運?
 ビット7:位?運0
 ビット8:位0運?

さて、ボブはボブで好きなように量子の状態を測定します。
ここでは、全て運動量情報を測定したものとしましょう。
ちなみに、セキュリティ的にはこんなことしちゃ全くダメダメです。
が、ここではわかりやすさを優先しています。

するとボブが測定できる値は次のようになります。

 ビット1:運?
 ビット2:運1
 ビット3:運0
 ビット4:運1
 ビット5:運?
 ビット6:運?
 ビット7:運0
 ビット8:運?

アリスが送った値のうちビット2~4と7の4つだけが正しく受信
できています。

ここでボブは通常のネットワーク回線を使って自分が位置情報と
運動量情報のどちらを受信したかをアリスに連絡します。

この場合なら、こうですね。
 ビット1:運
 ビット2:運
 ビット3:運
 ビット4:運
 ビット5:運
 ビット6:運
 ビット7:運
 ビット8:運

アリスはそれに対して、正解の(自分が送ったのとボブが受信した
のが一致している)ビット番号を通常のネットワーク回線を使って
返信します。

この場合ならこうです。
 ビット2
 ビット3
 ビット4
 ビット7

これで、アリスとボブは4ビットの情報の交換ができました。

以上がBB84での量子通信の手順です。


6. これって何になるの

自分で書きながらナンですが、以上の説明で「ほお、これはすごい。
これなら確かに盗聴もできないし素晴らしい!」なんて方はかなり
少数派なように思います。

むしろ、「こんだけ準備して、機器を用意して、送信にもすっごい
手間かけて、得られるのはこれだけ?」という方が普通に感じます。

そもそも、受信した内容の半分がエラーになる前提の通信手順って
決して効率が良いとは言えません。
また、量子通信と言いながら、結局既存の通信回線を使ってたり
して、あまりスマートにも思えません。

こんな面倒な手順を取るのにはもちろん理由があります。

前回から何度も書いている「原理的に盗聴が不可能」とするための
仕組みなのです。

また、この手順は1984年と、量子通信の方式としては最古参となり
ます。実用性よりも理論検証のための方式なので効率は二の次だと
いう事情もあります。

さて、この面倒な手順が盗聴できない理由につながるのですが、
ここまででもかなりの長さになってしまいましたので、今回はここ
までとします。

次回はBB84が盗聴できない理由について解説をします。
次回もお楽しみに。

このNoteは私が主宰するメルマガ「がんばりすぎないセキュリティ」からの転載です。
誰もが気になるセキュリティに関連するトピックを毎週月曜日の早朝に配信しています。
無料ですので、是非ご登録ください。
https://www.mag2.com/m/0001678731.html


この記事が気に入ったらサポートをしてみませんか?