著作一覧 |
須藤さんが作った知らない話を聞く会の第1回目として量子暗号について聞く会に参加。西新宿でひっそりと開催。
(以下、ほとんど覚え書き。そもそも聞いた話は20%しか覚えていないということだし、そこからさらに1晩たっているのでさらに減衰しているはずだ。というわけで、とんちんかんなことを書いているかも知れない)
最初に量子とは何かについて。量子というのは、原子とか光子とかいったある特定のものの種類を示す言葉ではなく、それらの種類の中での単位となるものを示す用語だ、という説明を受ける。そういう存在があるのだと思っていたので、まずそこでおもしろがるおれたち。
最初にいわゆる暗号についての説明。普段使うAESやRSAを数理暗号と呼ぶ。数理暗号の問題点は、総当たりを有意な時間内に行うことができれば解けることにある。そのためには秘密キーの場合はビット数を長くすることが解決策となる。次の問題は通信のピア同士の鍵の交換となる。一方の公開鍵暗号化については2つの十分に長い素数についてのやはり計算量に頼った方法での秘匿を利用している。それに対して物理暗号がある。量子暗号は物理暗号のうち量子を利用したものだ。OSI7階層にマップすると、物理層とデータリンク層での暗号化を意味する。そうだったのか、とおもしろがるおれたち。
現在、量子暗号には2種類ある。
1つは日本の国家プロジェクトにもなっていてすでに予算もたくさん注ぎ込んでいるワンタイムパッドを実現するための量子鍵配送(QKD)に関するもので、ベネットとブラッサードが1984年に(原理を)考案したBB84。
もう1つがユーエンが2000年に考案したY-00で、日本では玉川大学の広田先生が実用化をやっている。Y-00ってこの論文かな?。
ユーエンというのは超天才のたぐいの変な人なので、何を言っているのかわからない。変な人なので敵も多い。しかしこちらはUSではDARPAの支持を取り付けて実用化しつつあるらしい(DARPAがらみなのが理由なのか多少謎めきらしい)。
世界に冠たる超天才として認められている人を、まったく知らない(業界が違うってことはそういうことだよな)ことをおもしろがるおれたち。
まずはBB84の説明。
それぞれの光子は「偏光」と呼ばれる向き(以下角度で示す)を持っている(案の定すっとんきょうなことを書いていたようでした。修正ました)。光子が持つ偏光は直交していれば識別できる。縦スリットを通り抜ける光子と横スリットを通り抜ける光子の違いは、偏光の違いだ。今0度と90度の2種類を想定し、それぞれビット0とビット1を示すことにする。
それに対して別の直交関係の光子をおく。45度と135度で、それぞれビット0とビット1を示すことにする。
ここで直交していなければ識別できないという性質に着目する。もし、0度と135度の2つの光子が来た場合、その2つは識別できない。正しくは0-1というビット列だが、0-0、1-1、1-0と誤判定可能で、それぞれの確率は1/4となる。
むちゃくちゃおもしろいと興奮するおれたち。
まあ、むちゃくちゃおもしろいので、みんなBB84に飛びついたってことですが、と続く。
さて、アリスがボブに情報1001001を送ることを考える。このとき、すべての光子を直交させるのではなく、送信時に乱数発生器を利用して0-90ペアと45-135ペアをランダムに配置するとする。結果として以下の光子を送ったとする。90-0-45-135-0-0-135。
ボブはこのビット列を受け取るためには、それがどの角度か見極めなければならない。が、それは不可能だ。同じく乱数発生器を利用して読み取ることにする。たまたますべての乱数発生器が0-90を選択したとすると受け取るのは90-0-?-?-0-0-?となる。?は0または90のいずれかと誤判定される。
その後アリスは乱数発生器の選択について0/90-0/90-45/135-45/135-0/90-0/90-45/135だったと公開する。ボブは答え合わせをして1-0-?-?-0-0-?を得たことがわかる。わかった情報は秘匿したまま0/90-...0/90を選択したことを公開する。
アリスとボブは送れなかった情報と送れた情報をお互いに知る。
判定器の不一致の確立は1/2なので1024ビットのキーを配送するには2048ビット(ビット数=光子数)を送れば良い。お互いに乱数発生器の選択を知ったので一致したものを利用して秘密キー1000を得る。
ここにイブが介入したことを想定する。
イブはアリスとボブの通信の間に読み取り器を挿入する。イブも同じく判定器を使わないとビットを判定できない。判定しないとボブへ送ることはできない。
そこで乱数発生器を利用する。たまたま乱数発生器がアリスと同じ選択をした場合は、イブは盗聴に成功する。その可能性は1/2をビット数分乗じたものとなりビット列が十分に長ければあり得ないことになる。逆にすべての乱数発生器がボブと同じ選択をした場合もイブは盗聴に成功する。
ここではたまたまボブと逆にすべての乱数発生器が45-135判定器を選択したことを想定する。
するとイブが送信するのは?-?-0-1-1-?-?-1となる。ボブが受信するのは?-?-?-?-?-?-?-?となる。
イブの介在を知らないアリスとボブは秘密キーをそれぞれ求める。アリスは1000を利用する。ボブは????を利用する。
キーが不一致となり、ボブはイブが盗聴していたことを検出する。あぶない!
一方イブはアリスの公開情報から自分が得たビット列は0111とわかる。しかしボブの公開情報からアリスは秘密キーとして0111を利用しないことがわかる。結局、秘密キーを得ることはできないため、後にアリスが送った暗号文を解読することはできない。
すげぇおもしろい。
が、世の中は理論と物理では異なる。まずノイズの問題がある。今0-90と45-135を送ることができると仮定したが、30-120になったらどうだろうか? もちろん判定できない。減衰もある。途中で光子が行方不明になったらシーケンスが成立しない。途中にリピータを噛ませて減衰に対抗することもできない。それはイブの盗聴と同じ結果となるからだ。
というわけで、200億円以上の予算と国内の大企業が超優秀な研究者と技術者を動員して頑張った結果、現在の成果として200km離れた地点を結ぶ特殊な光ファイバーを使って秒あたり12光子を送ることができるようになった。
12光子ということは秒速12ビット?
そう。というわけで、BB84の連中に対して、彼らの最も偉大な発明はmbpsという単位の発明と呼ぶことがある。ミリビットパーセカンドを使うと12000mbpsというそれなりの速度っぽく見せることができるので成果発表のときに胸を張れる。
一方、ユーエンは全然異なる発想をした。
そもそも量子は光子だけを意味するのではない。
(続く)
ジェズイットを見習え |