はじめに
この記事では、量子鍵配送プロトコルの一つである BB84 プロトコルについての簡単な説明をします。
できる限り専門的な用語を避けて説明をするので、厳密性に欠ける部分があるかもしれませんが、プロトコルの考え方を理解する上ではおそらく問題ないはずです。
BB84 プロトコルとは
BB84 プロトコルは、Charles Henry Bennett と Gilles Brassard によって 1984 年に提案された、量子通信を利用する鍵配送プロトコルです。
Benett と Brassard が 1984 年に提案したので、BB84 プロトコルと呼ばれています。
このプロトコルは、光子の量子的な特性を利用することによって、盗聴されることなく、鍵 (秘密情報) を安全に共有することを目的にしています。
鍵配送の方法について
ビット値と光子の状態の対応
BB84 プロトコルでは、光子の4つの状態を使って、鍵配送を行います。
これらは光子でなくても、ある条件を満たしていればよいので、この記事では光子の代わりに、以下の4つの記号を使います。
\ket{0}, \ket{1}, \ket{+}, \ket{-}
これらは、それぞれ1ビットの情報に対応しており、次のようにビット値と関連づけられています。
- $\ket{0}$ と $\ket{+}$ は、ビット
0
に対応 - $\ket{1}$ と $\ket{-}$ は、ビット
1
に対応
光子を測定する際のルール
受け取った光子の状態を調べるためには、測定が必要になります。
この測定には2つの方法があります。
- 測定方法 $Z$: $\ket{0}$ と $\ket{1}$ のどちらであるかを調べる測定
- 測定方法 $X$: $\ket{+}$ と $\ket{-}$ のどちらであるかを調べる測定
また、この測定には特別なルールがあります。
正しい測定方法を選べば、送られてきた状態をそのまま観測できますが、
間違った測定方法を選ぶと、結果はランダムになってしまうというものです。
測定方法\状態 | $\ket{0}$ | $\ket{1}$ | $\ket{+}$ | $\ket{-}$ |
---|---|---|---|---|
$Z$ | $\ket{0}$ として観測 | $\ket{1}$ として観測 | $\ket{0}$ か $\ket{1}$ を等確率で観測 | $\ket{0}$ か $\ket{1}$ を等確率で観測 |
$X$ | $\ket{+}$ か $\ket{-}$ を等確率で観測 | $\ket{+}$ か $\ket{-}$ を等確率で観測 | $\ket{+}$ として観測 | $\ket{-}$ として観測 |
そして、測定にはもう一つ重要な性質があります。
それは、測定をすることによって状態が変化してしまうということです。
例えば、測定前の状態が $\ket{+}$ で、測定方法 $Z$ で測定した場合、測定後の状態は $\ket{0}$ か $\ket{1}$ のどちらかになります。
このとき、一度 $\ket{0}$ や $\ket{1}$ となった状態を、元の $\ket{+}$ に戻すことはできません。
この、測定による状態の変化が、BB84 プロトコルで盗聴を検知するための最も重要な原理です。
BB84 プロトコルのステップ
さて、これらを使って、Alice と Bob が安全に鍵を共有するまでのステップを説明していきます。
- Alice がランダムに
0
か1
のビット値を決め、それに対応する状態を Bob に送信する
0
の場合: $\ket{0}$ か $\ket{+}$ のどちらかをランダムに選択し、Bob に送信する
1
の場合: $\ket{1}$ か $\ket{-}$ のどちらかをランダムに選択し、Bob に送信する - Bob は測定方法 $Z$ と $X$ のうちどちらかをランダムに選び、Alice から受信したものを測定する
- Bob は自分が使用した測定方法を Alice に送信する
- Alice が送信した状態と Bob が利用した測定方法が対応しているかどうかを Bob に伝える
測定方法が対応している場合は、そのビットを共通鍵の要素として利用する - 1. ~ 4. のステップを繰り返して、必要な分の長さのビット列を Alice と Bob の間で共有する
1. と 2. 以外の Bob と Alice のやりとりでは、量子通信を利用する必要はありません。
つまり、3. と 4. では、改竄が発生しない経路であれば、盗聴されていても問題なく、一般的な通信路を用いればよいです。
シーケンス図
実線が量子通信路で、点線が古典通信路です。
盗聴者が居た場合について
上記のやりとりでは、単にランダムなビット列を送信しているだけなので、プロトコルが知られていたとしても盗聴さえなければ、鍵の情報が部分的にでも漏れてしまうということはないです。
では、盗聴があった場合はどうなるでしょうか。
Alice と Bob の間で通信を盗聴しようとする盗聴者 Eve が居た場合を考えてみます。
盗聴によるエラーの発生
例えば、Alice がビット 0
を伝えるために $\ket{+}$ の状態を送ったとします。
- Eve が間違った測定方法 $Z$ を選び、測定する
- $\ket{+}$ が、$\ket{0}$ か $\ket{1}$ に等確率で変化する
- 変化した状態が Bob に送られる
- Bob は正しい測定方法 $X$ を選び、測定する
- Alice によって $\ket{0}$ か $\ket{1}$ になっているので、測定によって $\ket{+}$ か $\ket{-}$ に等確率で変化する
したがって、ビット 0
かビット 1
を観測する確率は、それぞれ 50% になります。
Alice はビット 0
を表す状態 $\ket{+}$ を送り、Bob も正しい測定方法 $X$ を使ったにもかかわらず、Bob の測定結果は 50% の確率で ビット 1
となってしまいます。
これは、途中で Eve が間違った測定を行ったことによって発生したエラーです。
盗聴の検知確率について
しかし、これでは Eve がたまたま正しい測定方法を選んでしまった場合に、盗聴を検知することができません。
これでも盗聴に対しても問題が無いといえるのでしょうか。
ここで、先程の盗聴の例を改めて考えると、以下のことが分かります。
- 盗聴者 Eve が測定の際に間違った測定方法を選ぶ確率は 50%
- 間違った測定方法を選んだ際に、エラーが発生する確率は 50%
したがって、一回のやりとりで Eve の盗聴によってエラーが発生する確率は、25% です。
一回のやりとりで 25% ということなので、鍵を構成するビットの数が増えるほど、エラーが発生する確率は高くなります。
例えば、16 ビットの鍵を共有する場合、
1 - \left(\frac{3}{4}\right)^{16} \simeq 0.99
となるので、約 99% の確率で盗聴を検知できます。
このようにして、盗聴が検知できた場合、Alice と Bob は下記の共有をやり直すことで、安全性を確保できます。
実際の量子通信路では、環境等によるエラーが多発してしまうため、たった一回のエラーを盗聴であるとみなすと、鍵共有が完了しません。
そのため、エラー率がしきい値を超えた際に盗聴とみなすというようなプロトコルに変更されることが多いです。
おわりに
BB84 プロトコルは「測定によって状態が変化する」という量子の性質を巧みに利用することで、盗聴を検知する仕組みを作り上げています。
このプロトコルは、量子鍵配送の中でも基本となるものです。
他にも、B92 プロトコルや E91 プロトコルといった量子鍵配送のプロトコルがあるので、興味があればぜひ調べてみてください。