(57)【特許請求の範囲】
【請求項１】
他の通信装置と、量子通信路で接続され、暗号鍵を共有する通信装置であって、
前記量子通信路を介した光子の光子送受信処理により光子列を取得し、生成した基底情報に基づいて前記光子列に対応するビット情報である光子ビット列を取得する光子通信手段と、
前記光子ビット列から、前記基底情報を用いたシフティング処理により共有ビット列を生成するシフティング手段と、
前記共有ビット列に含まれる誤りを誤り訂正処理により訂正し、訂正後ビット列を生成する誤り訂正手段と、
前記暗号鍵の長さを計算する第１計算手段と、
前記誤り訂正処理で生成された前記訂正後ビット列に対してハッシュ演算をするための特定のサイズの第１情報を用いて前記ハッシュ演算を行い、ハッシュ後ビット列を生成する第２計算手段と、
前記ハッシュ後ビット列から、前記第１計算手段により計算された前記暗号鍵の長さ分のビット列を該暗号鍵として抽出する抽出手段と、
を備え、
少なくとも、前記第１計算手段による処理の一部と、前記第２計算手段による処理の一部とが並列に実行される通信装置。
【請求項２】
前記第２計算手段は、所定数の前記訂正後ビット列の長さに基づいて規定されたサイズの前記第１情報を用いて前記ハッシュ演算を行う請求項１に記載の通信装置。
【請求項３】
前記誤り訂正手段は、前記誤り訂正処理において、前記共有ビット列の誤りビット数から前記量子通信路のエラーレートを算出し、
前記第１計算手段は、前記誤り訂正処理後、前記シフティング処理で発生した、光子に対応するレーザパルスに関する第２情報、および、前記誤り訂正処理で算出された前記エラーレートを用いて、前記暗号鍵の長さを計算する請求項１に記載の通信装置。
【請求項４】
前記第１計算手段は、前記シフティング処理で発生した、光子に対応するレーザパルスに関する第２情報を受け取った場合に、前記第２情報を用いた前記暗号鍵の長さの計算を開始する請求項１に記載の通信装置。
【請求項５】
前記誤り訂正手段は、前記誤り訂正処理において、前記共有ビット列の誤りビット数から前記量子通信路のエラーレートを算出し、
前記第１計算手段は、さらに前記エラーレートを用いて前記暗号鍵の長さを計算する請求項４に記載の通信装置。
【請求項６】
前記誤り訂正手段は、前記誤り訂正処理において、前記他の通信装置と通信した制御情報に基づいて、漏洩ビット数を算出し、
前記第１計算手段は、さらに前記漏洩ビット数を用いて前記暗号鍵の長さを計算する請求項３または５に記載の通信装置。
【請求項７】
複数の通信装置が、量子通信路で接続され、暗号鍵を共有する量子鍵配送システムであって、
前記複数の通信装置のうち少なくともいずれか１つの通信装置は、
前記量子通信路を介した光子の光子送受信処理により光子列を取得し、生成した基底情報に基づいて前記光子列に対応するビット情報である光子ビット列を取得する光子通信手段と、
前記光子ビット列から、前記基底情報を用いたシフティング処理により共有ビット列を生成するシフティング手段と、
前記共有ビット列に含まれる誤りを誤り訂正処理により訂正し、訂正後ビット列を生成する誤り訂正手段と、
前記暗号鍵の長さを計算する第１計算手段と、
前記誤り訂正処理で生成された前記訂正後ビット列に対してハッシュ演算をするための特定のサイズの第１情報を用いて前記ハッシュ演算を行い、ハッシュ後ビット列を生成する第２計算手段と、
前記ハッシュ後ビット列から、前記第１計算手段により計算された前記暗号鍵の長さ分のビット列を該暗号鍵として抽出する抽出手段と、
を備え、
少なくとも、前記第１計算手段による処理の一部と、前記第２計算手段による処理の一部とが並列に実行される量子鍵配送システム。
【請求項８】
他の通信装置と、量子通信路で接続され、暗号鍵を共有する通信装置の量子鍵配送方法であって、
前記量子通信路を介した光子の光子送受信処理により光子列を取得し、生成した基底情報に基づいて前記光子列に対応するビット情報である光子ビット列を取得する光子通信ステップと、
前記光子ビット列から、前記基底情報を用いたシフティング処理により共有ビット列を生成するシフティングステップと、
前記共有ビット列に含まれる誤りを誤り訂正処理により訂正し、訂正後ビット列を生成する誤り訂正ステップと、
前記暗号鍵の長さを計算する第１計算ステップと、
前記誤り訂正処理で生成された前記訂正後ビット列に対してハッシュ演算をするための特定のサイズのハッシュ用情報を用いて前記ハッシュ演算を行い、ハッシュ後ビット列を生成する第２計算ステップと、
前記ハッシュ後ビット列から、前記第１計算ステップで計算された前記暗号鍵の長さ分のビット列を該暗号鍵として抽出する抽出ステップと、
を有し、
少なくとも、前記第１計算ステップにおける処理の一部と、前記第２計算ステップにおける処理の一部とが並列に実行される量子鍵配送方法。
【請求項９】
他の通信装置と、量子通信路で接続され、暗号鍵を共有するコンピュータを、
前記量子通信路を介した光子の光子送受信処理により光子列を取得し、生成した基底情報に基づいて前記光子列に対応するビット情報である光子ビット列を取得する光子通信手段により取得された該光子ビット列から、前記基底情報を用いたシフティング処理により共有ビット列を生成するシフティング手段と、
前記共有ビット列に含まれる誤りを誤り訂正処理により訂正し、訂正後ビット列を生成する誤り訂正手段と、
前記暗号鍵の長さを計算する第１計算手段と、
前記誤り訂正処理で生成された前記訂正後ビット列に対してハッシュ演算をするための特定のサイズのハッシュ用情報を用いて前記ハッシュ演算を行い、ハッシュ後ビット列を生成する第２計算手段と、
前記ハッシュ後ビット列から、前記第１計算手段により計算された前記暗号鍵の長さ分のビット列を該暗号鍵として抽出する抽出手段と、
して機能させ、
少なくとも、前記第１計算手段による処理の一部と、前記第２計算手段による処理の一部とを並列に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置、量子鍵配送システム、量子鍵配送方法およびプログラムに関する。
【背景技術】
【０００２】
量子鍵配送システムは、送信機、受信機と、それを接続する光ファイバリンクとを含んで構成される。送信機は、光ファイバの通信路である光ファイバリンク（量子通信路）を介して、単一光子を連続的に受信機に送信する。その後、送信機と受信機が相互に制御情報を交換することによって、送信機と受信機との間で安全に暗号鍵を共有する。この技術は一般に量子鍵配送(ＱＫＤ：Ｑｕａｎｔｕｍ  Ｋｅｙ  Ｄｉｓｔｒｉｂｕｔｉｏｎ)と呼ばれる技術により実現される。
【０００３】
また、量子鍵配送では、暗号鍵を共有するために利用される光子は、観測されることで物理的な状態が変化するという量子力学の基本原理の一つである不確定性原理を有する。この原理により、送信機が送信した暗号鍵の情報を含む光子を量子通信路上で盗聴者が観測すると、光子の物理的な状態が変化し、光子を受け取った受信機は、盗聴者に光子を観測されたことを検出することができる。この結果、送信機で得られた光子列、および受信機で検出された光子列を基にして、送信機と受信機との相互間で制御情報を交換することにより、安全な暗号鍵が得られる。
【０００４】
量子鍵配送により送信機と受信機との間で暗号鍵を共有するためには、送信機および受信機それぞれにおいて鍵蒸留処理を実行する必要がある。鍵蒸留処理は、シフティング処理、誤り訂正処理、および秘匿性増強処理によって構成される。シフティング処理によって、送信機および受信機の基底が一致するビット列を抜き出し、誤り訂正処理によって、送信機と受信機との間で生じたビット列の誤りを修正し、さらに、秘匿性増強処理によって、盗聴者により盗聴されたかもしれない情報を打ち消すためにビット列を圧縮して、最終的に、送信機および受信機は、盗聴されてないことが保証された安全な暗号鍵を共有する。共有された暗号鍵は、送信機と受信機との間、または、それぞれの装置に接続されたアプリケーション間で暗号データ通信を行う際に利用される。
【０００５】
量子鍵配送では、上述のように、量子力学の基本原理により、送信機が送信した光子を量子通信路上で盗聴者が観測すると、光子の物理的な状態が変化し、この変化は送信機と受信機との間のリンクの量子ビット誤り率（Ｑｕａｎｔｕｍ  Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ、ＱＢＥＲ）として現れる。盗聴者が光子を盗聴しようとすると、光子の物理的な状態が変化し、ＱＢＥＲが大きくなるため、受信機および送信機は盗聴者の存在を知ることができる。
【０００６】
また、量子鍵配送システムとして、デコイ方式のプロトコルと、光子の偏光を観測する基底の選択確率に偏りを持たせたプロトコルと、を利用して、盗聴者に漏れた情報量を取り除いた安全性の高い暗号鍵を、効率的に生成するシステムが提案されている。量子鍵配送を行ったときの測定値から、計算に必要なパラメータを推定し、現実のシステムにおける実装に対応していながら、十分な安全性を持つ暗号鍵の鍵長計算のための計算式を導入している。
【０００７】
また、単位時間に共有される暗号鍵の生成量をセキュアキーレートという。多くの暗号鍵を利用できる方が、より高速かつ安全な暗号データ通信が可能となるため、セキュアキーレートが高いほど高性能な量子鍵配送システムであると言える。
【０００８】
このような量子鍵配送システムの上述の秘匿性増強処理においては、最終的な暗号鍵の長さを求める鍵長計算を行い、次に、求められた暗号鍵の長さに応じたハッシュを利用した行列演算であるハッシュ計算を行うが、これらの計算処理は負荷が重く、秘匿性増強処理の処理時間がかかるため、量子鍵配送全体としての処理時間も長くなりセキュアキーレートの低下を招来するという問題があった。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】英国特許出願公開第２５０３０４５号明細書
【非特許文献】
【００１０】
【非特許文献１】Ｅｆｆｉｃｉｅｎｔ  ｄｅｃｏｙ−ｓｔａｔｅ  ｑｕａｎｔｕｍ  ｋｅｙ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｗｉｔｈ  ｑｕａｎｔｉｆｉｅｄ  ｓｅｃｕｒｉｔｙ,  Ｍ．  Ｌｕｃａｍａｒｉｎｉ  ｅｔ  ａｌ．，  Ｏｐｔｉｃｓ  Ｅｘｐｒｅｓｓ，  Ｖｏｌ．  ２１，  Ｉｓｓｕｅ  ２１，  ｐｐ.  ２４５５０−２４５６５  （２０１３）.
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、上記に鑑みてなされたものであって、量子鍵配送の処理速度を向上させる通信装置、量子鍵配送システム、量子鍵配送方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
実施形態の通信装置は、他の通信装置と、量子通信路で接続され、暗号鍵を共有する通信装置であって、光子通信手段と、シフティング手段と、誤り訂正手段と、第１計算手段と、第２計算手段と、抽出手段と、を備える。光子通信手段は、量子通信路を介した光子の光子送受信処理により光子列を取得し、生成した基底情報に基づいて光子列に対応するビット情報である光子ビット列を取得する。シフティング手段は、光子ビット列から、基底情報を用いたシフティング処理により共有ビット列を生成する。誤り訂正手段は、共有ビット列に含まれる誤りを誤り訂正処理により訂正し、訂正後ビット列を生成する。第１計算手段は、暗号鍵の長さを計算する。第２計算手段は、誤り訂正処理で生成された訂正後ビット列に対してハッシュ演算をするための特定のサイズの第１情報を用いてハッシュ演算を行い、ハッシュ後ビット列を生成する。抽出手段は、ハッシュ後ビット列から、第１計算手段により計算された暗号鍵の長さ分のビット列を暗号鍵として抽出する。少なくとも、第１計算手段による処理の一部と、第２計算手段による処理の一部とが並列に実行される。
【図面の簡単な説明】
【００１３】
【図１】量子鍵配送システムの全体構成の一例を示す図である。
【図２】送信機および受信機のハードウェア構成の一例を示す図である。
【図３】第１の実施形態の量子鍵配送システムの機能ブロックの構成を示す図である。
【図４】従来の鍵蒸留処理の動作の一例を示すフローチャートである。
【図５】従来のハッシュ計算を説明するための図である。
【図６】第１の実施形態の受信機の鍵蒸留処理の動作を示すフローチャートである。
【図７】第１の実施形態の受信機のハッシュ計算を説明するための図である。
【図８】従来の量子鍵配送の動作の一例を示すシーケンス図である。
【図９】第１の実施形態の受信機の量子鍵配送の動作を示すシーケンス図である。
【図１０】第２の実施形態の受信機の量子鍵配送の動作を示すシーケンス図である。
【図１１】第３の実施形態の量子鍵配送システムの機能ブロックの構成を示す図である。
【図１２】第３の実施形態の受信機の量子鍵配送の動作を示すシーケンス図である。
【発明を実施するための形態】
【００１４】
以下に、図面を参照しながら、本発明の実施形態に係る通信装置、量子鍵配送システム、量子鍵配送方法およびプログラムを詳細に説明する。また、以下の図面において、同一の部分には同一の符号が付してある。ただし、図面は模式的なものであるため、具体的な構成は以下の説明を参酌して判断すべきものである。
【００１５】
（第１の実施形態）
図１は、量子鍵配送システムの構成の一例を示す図である。図１を参照しながら、量子鍵配送システム１００の構成について説明する。
【００１６】
図１に示すように、量子鍵配送システム１００は、送信機１と、受信機２と、光ファイバリンク３と、通信ケーブル４と、を含んで構成されている。なお、以下においては、図１に示すように、送信機１と受信機２とがそれぞれ１つで構成された量子鍵配送システム１００について説明するが、例えば、受信機２が１台で、光学機器を介して複数の送信機１が接続された、いわゆる量子アクセスネットワーク（ＱＡＮ：Ｑｕａｎｔｕｍ  Ａｃｃｅｓｓ  Ｎｅｔｗｏｒｋ）が量子鍵配送システムに適用された構成であってもよい。また、受信機２が複数の光ファイバ通信のインターフェースを有し、それらのインターフェースを介して、複数の送信機１が接続された量子鍵配送システムであってもよい。また、これらのシステムにおいて、送信機１と受信機２とが逆となっている構成でもよい。
【００１７】
送信機１は、レーザのパルスにより発生させた、暗号鍵を生成する基となる単一光子から構成される光子列を、光ファイバリンク３を介して、受信機２へ送信する装置である。送信機１は、送信した光子列を基に、後述する鍵蒸留処理（シフティング処理、誤り訂正処理および秘匿性増強処理）等を実行して、暗号鍵を生成する。また、送信機１は、光ファイバリンク３により実現される量子通信路以外の、Ｅｔｈｅｒｎｅｔ（登録商標）ケーブル等の通信ケーブル４で実現される古典通信路を介して、受信機２との間でデータ通信を行う。古典通信路を介して通信されるデータとしては、上述の鍵蒸留処理で必要な制御データ（以下、「鍵蒸留処理データ」と称する場合がある）であってもよく、これ以外の一般的なデータであってもよい。
【００１８】
受信機２は、暗号鍵を生成する基となる単一光子から構成される光子列を、光ファイバリンク３を介して、送信機１から受信する装置である。受信機２は、受信した光子列を基に、後述する鍵蒸留処理（シフティング処理、誤り訂正処理および秘匿性増強処理）等を実行して、送信機１が生成した暗号鍵と同一の暗号鍵を生成する。すなわち、送信機１および受信機２は、次々に暗号鍵を生成して同じ暗号鍵を共有することになる。また、受信機２は、光ファイバリンク３により実現される量子通信路以外の、通信ケーブル４で実現される古典通信路を介して、送信機１との間でデータ通信を行う。古典通信路を介して通信されるデータとしては、上述の鍵蒸留処理で必要な鍵蒸留処理データであってもよく、これ以外の一般的なデータであってもよい。
【００１９】
光ファイバリンク３は、送信機１が出力した単一光子の送信路となる量子通信路として機能する光ファイバケーブルである。通信ケーブル４は、送信機１と受信機２との間で、鍵蒸留処理データの他、プリケーション等の通信データを通信するために古典通信路として機能するケーブルである。
【００２０】
なお、通信ケーブル４は、古典通信路として機能するものとしたが、これに限定されるものではなく、古典通信路は、無線通信によって形成される構成であってもよい。
【００２１】
また、光ファイバリンク３が量子通信路として機能し、通信ケーブル４が古典通信路として機能するものとしたが、これに限定されるものではない。例えば、光ファイバリンク３は、ＷＤＭ（Ｗａｖｅｌｅｎｇｔｈ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅｘ：光波長多重化）技術等によって、光子の送受信をするための光子通信チャネルと、光データ通信を行うための光データ通信チャネルとが形成されるものとしてもよい。すなわち、この場合、光ファイバリンク３の光子通信チャネルが量子通信路として機能し、光データ通信チャネルが古典通信路として機能する。
【００２２】
このような送信機１と受信機２とを含む量子鍵配送システム１００によって、送信機１が送信した光子列を光ファイバリンク３上で盗聴者が観測すると、光子の物理的状態が変化し、光子を受信した受信機２は、盗聴者に光子を観測されたことを認識することができる。
【００２３】
図２は、送信機および受信機のハードウェア構成の一例を示す図である。図２を参照しながら、送信機１および受信機２のハードウェア構成について説明する。
【００２４】
図２に示すように、送信機１（受信機２）は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５３と、通信Ｉ／Ｆ５４と、補助記憶装置５５と、光学処理装置５６と、を備えている。
【００２５】
ＣＰＵ５１は、送信機１（受信機２）全体の動作を制御する演算装置である。ＲＯＭ５２は、ＣＰＵ５１が各機能を制御するために実行するＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）またはファームウェア等のプログラムを記憶する不揮発性記憶装置である。ＲＡＭ５３は、ＣＰＵ５１のワークメモリ等として機能する揮発性記憶装置である。
【００２６】
通信Ｉ／Ｆ５４は、古典通信路（通信ケーブル４等）を介してデータ通信を行うためのインターフェースである。通信Ｉ／Ｆ５４は、例えば、１０Ｂａｓｅ−Ｔ、１００Ｂａｓｅ−ＴＸもしくは１０００Ｂａｓｅ−Ｔ等のＥｔｈｅｒｎｅｔに対応したインターフェースであってもよく、または、光ファイバ用インターフェースであってもよい。
【００２７】
補助記憶装置５５は、ＣＰＵ５１で実行される各種プログラム、鍵蒸留処理の過程で生成したデータ、および鍵蒸留処理により生成された暗号鍵等を記憶して蓄積する不揮発性記憶装置である。補助記憶装置５５は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、フラッシュメモリまたは光ディスク等の電気的、磁気的または光学的に記憶可能な不揮発性記憶装置である。
【００２８】
光学処理装置５６は、量子通信路を介して、単一光子を送信または受信（検出）する光学装置である。送信機１の光学処理装置５６は、例えば、乱数によって発生させたビット情報であるビット列（光子ビット列）に対して、所定の基準により選択した基底により生成した基底情報（送信基底）に基づく位相状態または偏光状態となるように生成した単一光子から構成される光子列を、量子通信路（図１に示す光ファイバリンク３）を介して、受信機２の光学処理装置５６に送信する。すなわち、送信機１の光学処理装置５６により発生された光子列の各光子は、「０」から「１」かの１ビットの情報を有する。受信機２の光学処理装置５６は、量子通信路を介して、送信機１の光学処理装置５６から光子列を受信し、受信した光子列を、所定の基準により選択した基底により生成した基底情報（受信基底）に基づいて読み取ることによってビット情報である光子ビット列を得る。
【００２９】
なお、上述の基底情報を生成するための所定の基準により選択した基底とは、例えば、ランダムに選択した基底としてもよく、偏りを有する選択確率によって選択した基底であってもよい。
【００３０】
上述のＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、通信Ｉ／Ｆ５４、補助記憶装置５５、および光学処理装置５６は、アドレスバスおよびデータバス等のバス５７によって互いに通信可能に接続されている。
【００３１】
図３は、第１の実施形態に係る量子鍵配送システムの機能ブロックの構成の一例を示す図である。図３を参照しながら、量子鍵配送システム１００の送信機１および受信機２の機能ブロックの構成および動作について説明する。
【００３２】
図３に示すように、送信機１は、光子送信部１０１と、シフティング処理部１０２と、誤り訂正処理部１０３と、秘匿性増強処理部１０４と、蓄積部１０５と、鍵管理部１０６と、を有する。
【００３３】
光子送信部１０１は、例えば、乱数によって発生させたビット情報である光子ビット列に対して、所定の基準により選択した基底により生成した基底情報（送信基底）に基づく位相状態または偏光状態に対応するように生成した単一光子から構成される光子列を、量子通信路を介して、後述する受信機２の光子検出部２０１に送信する光子送信処理を行う機能部である。すなわち、光子送信部１０１は、上述の光子列を構成する単一光子を連続して送信する。
【００３４】
光子送信部１０１による光子送信処理は、例えば、単一光子の発生源として通常のレーザ光源を減衰させたものを用いる。通常のレーザ光源を用いる場合、光子送信部１０１で送信基底および光子ビット列からエンコードする際、厳密には単一光子ではなく、複数の光子が送出されてしまう場合がある。このような場合を排除し、量子鍵配送の安全性を保証するため、上述のデコイ方式のプロトコルに基づく方法を用いてもよい。デコイ方式のプロトコルでは、出力されるレーザの強度を、常に一定とするのではなく、ある一定の確率で、通常のビットを送信する際とは異なる強度のレーザ（パルス）で送信する。光子送信処理では、光子ビット列の各ビットは、それに対応する送信基底により定まる光の位相状態または偏光状態に対応するように、単一光子にエンコードされる。
【００３５】
光子送信部１０１は、生成した光子ビット列および送信基底を蓄積部１０５に記憶させ、シフティング処理部１０２に送る。光子送信部１０１は、図２に示す光学処理装置５６によって実現される。
【００３６】
シフティング処理部１０２は、受信機２のシフティング処理部２０２から古典通信路を介して受信した基底情報（受信基底）と、光子送信部１０１が生成した基底情報（送信基底)とを比較して、一致する部分に対応するビットを光子ビット列から抽出して、共有ビット列を生成するシフティング処理を実行する機能部である。なお、シフティング処理部１０２が用いる光子ビット列は、光子送信部１０１により蓄積部１０５に記憶された光子ビット列を読み出したものでもよく、光子送信部１０１から直接受け取った光子ビット列であってもよい。
【００３７】
シフティング処理部１０２は、生成した共有ビット列を蓄積部１０５に記憶させ、誤り訂正処理部１０３に送る。また、シフティング処理部１０２は、基底情報（送信基底）を、古典通信路を介して、受信機２のシフティング処理部２０２に送信する。
【００３８】
また、シフティング処理部１０２は、例えば、デコイ方式のプロトコルに基づいて動作する場合、光子検出部２０１による光子ビット列の各ビットがどのパルスに対応するのかについての認識結果から、共有ビット列の各ビットがどのパルスに対応するかを示す統計情報（以下、「パルス統計情報」と称する場合がある）（第２情報、パルス情報）を生成する。シフティング処理部１０２は、生成したパルス統計情報を、古典通信路を介して、受信機２のシフティング処理部２０２に送信すると共に、蓄積部１０５に記憶させる。なお、ここで説明したシフティング処理は一例であり、これ以外の方法であってもよい。
【００３９】
誤り訂正処理部１０３は、古典通信路を介して、後述する受信機２の誤り訂正処理部２０３と制御データ（ＥＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ）情報）を交換することにより、共有ビット列のビット誤りを訂正して訂正後ビット列を生成する誤り訂正処理を実行する機能部である。なお、誤り訂正処理部１０３が用いる共有ビット列は、シフティング処理部１０２により蓄積部１０５に記憶された共有ビット列を読み出したものでもよく、シフティング処理部１０２から直接受け取った共有ビット列であってもよい。
【００４０】
誤り訂正処理部１０３は、生成した訂正後ビット列を蓄積部１０５に記憶させ、秘匿性増強処理部１０４に送る。誤り訂正処理に成功した場合、この誤り訂正処理部１０３が生成した訂正後ビット列は、後述する受信機２の誤り訂正処理部２０３が、共有ビット列を訂正して生成した訂正後ビット列と一致する。また、訂正後ビット列は、共有ビット列のビット誤りを訂正したビット列なので、共有ビット列および訂正後ビット列の長さは同一である。
【００４１】
秘匿性増強処理部１０４は、古典通信路を介して、後述する受信機２の秘匿性増強処理部２０４から制御情報（ＰＡ（Ｐｒｉｖａｃｙ  Ａｍｐｌｉｆｉｃａｔｉｏｎ：秘匿性増強）情報）（例えば、秘匿性増強処理部２０４により計算された暗号鍵のサイズ等）を受信して、このＰＡ情報に基づいて、訂正後ビット列に対して、光子送信処理、シフティング処理、および誤り訂正処理で理論上、漏洩して盗聴者により盗聴された可能性のあるビットを打ち消すための秘匿性増強処理を行って暗号鍵を生成する機能部である。秘匿性増強処理部１０４は、生成した暗号鍵を蓄積部１０５に記憶して蓄積させる。なお、秘匿性増強処理部１０４が用いる訂正後ビット列は、誤り訂正処理部１０３により蓄積部１０５に記憶された訂正後ビット列を読み出したものでもよく、誤り訂正処理部１０３から直接受け取った訂正後ビット列であってもよい。
【００４２】
秘匿性増強処理に成功した場合、秘匿性増強処理部１０４により生成された暗号鍵は、受信機２の秘匿性増強処理部２０４により生成された暗号鍵と一致するものであり、同一の暗号鍵を共有することになる。これらの共有された暗号鍵は、送信機１と受信機２との間、または、それぞれの装置に接続されたアプリケーション間で暗号データ通信を行う際に利用される。
【００４３】
蓄積部１０５は、秘匿性増強処理部１０４により生成された暗号鍵を記憶して蓄積する機能部である。蓄積部１０５は、その他、光子送信部１０１により生成された光子ビット列および送信基底、シフティング処理部１０２により生成された共有ビット列、ならびに、誤り訂正処理部１０３により生成された訂正後ビット列等を記憶する。蓄積部１０５は、図２に示す補助記憶装置５５によって実現される。
【００４４】
鍵管理部１０６は、蓄積部１０５に記憶（蓄積）された暗号鍵の管理（鍵管理）を行う機能部である。例えば、鍵管理部１０６は、蓄積部１０５に記憶された暗号鍵を、暗号データ通信を行うアプリケーション等へ提供する。
【００４５】
上述の光子送信部１０１、シフティング処理部１０２、誤り訂正処理部１０３、秘匿性増強処理部１０４、および鍵管理部１０６は、図２に示すＣＰＵ５１が補助記憶装置５５等に記憶されたプログラムをＲＡＭ５３に読み出して実行することにより実現される。なお、光子送信部１０１、シフティング処理部１０２、誤り訂正処理部１０３、秘匿性増強処理部１０４、および鍵管理部１０６のすべてがプログラムの実行により実現されることに限定されるものではなく、少なくともいずれかが、例えば、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）またはその他の集積回路等のハードウェア回路によって実現されるものとしてもよい。
【００４６】
なお、図３に示す光子送信部１０１、シフティング処理部１０２、誤り訂正処理部１０３、秘匿性増強処理部１０４、蓄積部１０５、および鍵管理部１０６は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図３に示す送信機１で、独立した機能部として図示した複数の機能部を、１つの機能部として構成してもよい。一方、図３に示す送信機１で、１つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
【００４７】
また、上述の送信機１が有する各機能部のうち、鍵管理部１０６はないものとしてもよい。
【００４８】
図３に示すように、受信機２は、光子検出部２０１（光子通信手段の一例）と、シフティング処理部２０２（シフティング手段）と、誤り訂正処理部２０３（誤り訂正手段）と、秘匿性増強処理部２０４と、蓄積部２０５と、鍵管理部２０６と、を有する。
【００４９】
光子検出部２０１は、量子通信路を介して、送信機１の光子送信部１０１から送信された光子列を検出し、検出した光子列を、所定の基準により選択した基底により生成した基底情報（受信基底）に基づいて読み取ることによってビット情報である光子ビット列を得る光子検出処理を行う機能部である。光子検出部２０１は、生成した光子ビット列および受信基底を蓄積部２０５に記憶させ、シフティング処理部２０２に送る。光子検出部２０１は、図２に示す光学処理装置５６によって実現される。なお、上述の光子送信部１０１の光子送信処理、および光子検出部２０１の光子検出処理のうちいずれか一方を示す場合、または、双方を示す場合、「光子送受信処理」という場合がある。
【００５０】
シフティング処理部２０２は、送信機１のシフティング処理部１０２から古典通信路を介して受信した基底情報（送信基底）と、光子検出部２０１が生成した基底情報（受信基底）とを比較して、一致する部分に対応するビットを光子ビット列から抽出して、共有ビット列を生成するシフティング処理を実行する機能部である。なお、シフティング処理部２０２が用いる光子ビット列は、光子検出部２０１により蓄積部２０５に記憶された光子ビット列を読み出したものでもよく、光子検出部２０１から直接受け取った光子ビット列であってもよい。
【００５１】
シフティング処理部２０２は、生成した共有ビット列を蓄積部２０５に記憶させ、誤り訂正処理部２０３に送る。また、シフティング処理部２０２は、基底情報（送信基底）を、古典通信路を介して、送信機１のシフティング処理部１０２に送信する。また、シフティング処理部２０２は、送信機１のシフティング処理部１０２から古典通信路を介して、パルス統計情報を受信し、蓄積部２０５に記憶させる。なお、ここで説明したシフティング処理は一例であり、これ以外の方法であってもよい。
【００５２】
誤り訂正処理部２０３は、古典通信路を介して、送信機１の誤り訂正処理部１０３と制御データ（ＥＣ情報）を交換することにより、共有ビット列のビット誤りを訂正して訂正後ビット列を生成する誤り訂正処理を実行する機能部である。なお、誤り訂正処理部２０３が用いる共有ビット列は、シフティング処理部２０２により蓄積部２０５に記憶された共有ビット列を読み出したものでもよく、シフティング処理部２０２から直接受け取った共有ビット列であってもよい。
【００５３】
誤り訂正処理部２０３は、生成した訂正後ビット列を蓄積部２０５に記憶させ、秘匿性増強処理部２０４へ送る。誤り訂正処理に成功した場合、この誤り訂正処理部２０３が生成した訂正後ビット列は、送信機１の誤り訂正処理部１０３が、共有ビット列を訂正して生成した訂正後ビット列と一致する。また、訂正後ビット列は、共有ビット列のビット誤りを訂正したビット列なので、共有ビット列および訂正後ビット列の長さは同一である。
【００５４】
また、誤り訂正処理部２０３は、誤り訂正処理における共有ビット列の誤りビット数から量子通信路のエラーレート（上述のＱＢＥＲ）を算出し、蓄積部２０５に記憶させる。さらに、誤り訂正処理部２０３は、共有ビット列のビット誤りを訂正して訂正後ビット列を生成するために、誤り訂正処理部１０３と交換したＥＣ情報の情報量に基づいて、漏洩ビット数を算出し、蓄積部２０５に記憶させる。交換したＥＣ情報はすべて盗聴者に漏れていると考え、この漏洩ビット数が大きいほど、盗聴の可能性が高くなり、また、盗聴された情報量も大きいことを示す。
【００５５】
秘匿性増強処理部２０４は、制御情報（ＰＡ情報）を生成して、古典通信路を介して、送信機１の秘匿性増強処理部１０４に送信し、このＰＡ情報に基づいて、訂正後ビット列に対して、光子送信処理、シフティング処理、および誤り訂正処理で理論上、漏洩して盗聴者により盗聴された可能性のあるビットを打ち消すための秘匿性増強処理を行って暗号鍵を生成する機能部である。なお、秘匿性増強処理部２０４が用いる訂正後ビット列は、誤り訂正処理部２０３により蓄積部２０５に記憶された訂正後ビット列を読み出したものでもよく、誤り訂正処理部２０３から直接受け取った訂正後ビット列であってもよい。秘匿性増強処理部２０４は、鍵長計算部２１１（第１計算手段）と、ハッシュ計算部２１２（第２計算手段）と、鍵抽出部２１３（抽出手段）と、を有する。
【００５６】
鍵長計算部２１１は、シフティング処理部２０２が受信したパルス統計情報（パルスごとのカウント数および誤り数等を含む）、ならびに、誤り訂正処理部２０３により算出されたエラーレートおよび漏洩ビット数に基づいて、送信機１と受信機２との通信で盗聴者により盗聴された可能性がある情報量を除いた長さとなるように、秘匿性増強処理で最終的に得る暗号鍵の長さを計算する鍵長計算を行う機能部である。鍵長計算部２１１は、計算した暗号鍵の長さを、鍵抽出部２１３に送る。なお、鍵長計算部２１１が用いるパルス統計情報、エラーレートおよび漏洩ビット数は、蓄積部２０５に記憶されたパルス統計情報、エラーレートおよび漏洩ビット数を読み出したものでもよく、シフティング処理部２０２および誤り訂正処理部２０３から直接受け取った情報であってもよい。
【００５７】
ハッシュ計算部２１２は、誤り訂正処理部２０３により生成された訂正後ビット列に対して、所定の大きさで、送信機１および受信機２で共通のハッシュ行列（第１情報の一例、ハッシュ用情報の一例）を用いてハッシュ演算を行い、ハッシュ演算後のビット列（以下、「ハッシュ後ビット列」と称する場合がある）を生成する機能部である。本実施形態で用いるハッシュ行列の大きさについての詳細は、図７で後述する。ハッシュ計算部２１２は、生成したハッシュ後ビット列を蓄積部２０５に記憶させ、鍵抽出部２１３へ送る。なお、ハッシュ行列は、必ずしも行列形式の情報である必要はなく、訂正後ビット列に対してハッシュ演算が可能な形式であればよい。
【００５８】
鍵抽出部２１３は、ハッシュ計算部２１２により生成されたハッシュ後ビット列から、鍵長計算部２１１により計算された暗号鍵の長さ分のビット列を抽出する機能部である。鍵抽出部２１３は、抽出したビット列を最終的な暗号鍵とし、蓄積部２０５に記憶（蓄積）させる。なお、鍵抽出部２１３が用いるハッシュ後ビット列は、ハッシュ計算部２１２により蓄積部１０５に記憶されたハッシュ後ビット列を読み出したものでもよく、ハッシュ計算部２１２から直接受け取ったハッシュ後ビット列であってもよい。
【００５９】
秘匿性増強処理に成功した場合、秘匿性増強処理部２０４により生成された暗号鍵、すなわち、鍵抽出部２１３により抽出された暗号鍵は、送信機１の秘匿性増強処理部１０４により生成された暗号鍵と一致するものであり、同一の暗号鍵を共有することになる。これらの共有された暗号鍵は、送信機１と受信機２との間、または、それぞれの装置に接続されたアプリケーション間で暗号データ通信を行う際に利用される。
【００６０】
蓄積部２０５は、秘匿性増強処理部２０４により生成された暗号鍵を記憶して蓄積する機能部である。蓄積部２０５は、その他、光子検出部２０１により取得した光子ビット列および受信基底、シフティング処理部２０２により生成された共有ビット列、誤り訂正処理部２０３により生成された訂正後ビット列、ハッシュ計算部２１２により生成されたハッシュ後ビット列等を記憶する。蓄積部２０５は、図２に示す補助記憶装置５５によって実現される。
【００６１】
鍵管理部２０６は、蓄積部２０５に記憶（蓄積）された暗号鍵の管理（鍵管理）を行う機能部である。例えば、鍵管理部２０６は、蓄積部２０５に記憶された暗号鍵を、暗号データ通信を行うアプリケーション等へ提供する。
【００６２】
上述の光子送信部２０１、シフティング処理部２０２、誤り訂正処理部２０３、秘匿性増強処理部２０４の鍵長計算部２１１、ハッシュ計算部２１２および鍵抽出部２１３、ならびに鍵管理部２０６は、図２に示すＣＰＵ５１が補助記憶装置５５等に記憶されたプログラムをＲＡＭ５３に読み出して実行することにより実現される。なお、光子送信部２０１、シフティング処理部２０２、誤り訂正処理部２０３、秘匿性増強処理部２０４の鍵長計算部２１１、ハッシュ計算部２１２および鍵抽出部２１３、ならびに鍵管理部２０６のすべてがプログラムの実行により実現されることに限定されるものではなく、少なくともいずれかが、例えば、ＡＳＩＣ、ＦＰＧＡまたはその他の集積回路等のハードウェア回路によって実現されるものとしてもよい。
【００６３】
なお、図３に示す光子送信部２０１、シフティング処理部２０２、誤り訂正処理部２０３、秘匿性増強処理部２０４の鍵長計算部２１１、ハッシュ計算部２１２および鍵抽出部２１３、蓄積部２０５、ならびに鍵管理部２０６は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図３に示す受信機２で、独立した機能部として図示した複数の機能部を、１つの機能部として構成してもよい。一方、図３に示す受信機２で、１つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
【００６４】
また、上述の受信機２が有する各機能部のうち、鍵管理部２０６はないものとしてもよい。
【００６５】
図４は、従来の鍵蒸留処理の動作の一例を示すフローチャートである。図５は、従来のハッシュ計算を説明するための図である。図４および５を参照しながら、従来の鍵蒸留処理の動作について説明する。
【００６６】
＜ステップＳ１０１＞
受信機のシフティング処理部は、送信機のシフティング処理部から古典通信路を介して受信した基底情報（送信基底）と、受信機の光子検出部が生成した基底情報（受信基底）とを比較して、一致する部分に対応するビットを光子ビット列から抽出して、共有ビット列を生成するシフティング処理を実行する。また、シフティング処理部は、送信機のシフティング処理部から古典通信路を介して、パルス統計情報を受信する。そして、ステップＳ１０２へ移行する。
【００６７】
＜ステップＳ１０２＞
受信機の誤り訂正処理部は、古典通信路を介して、送信機の誤り訂正処理部と制御データ（ＥＣ情報）を交換することにより、共有ビット列のビット誤りを訂正して訂正後ビット列を生成する誤り訂正処理を実行する。また、受信機の誤り訂正処理部は、誤り訂正処理における共有ビット列の誤りビット数から量子通信路のエラーレートを算出する。さらに、受信機の誤り訂正処理部は、共有ビット列のビット誤りを訂正して訂正後ビット列を生成するために、送信機の誤り訂正処理部と交換したＥＣ情報の情報量に基づいて、漏洩ビット数を算出する。そして、ステップＳ１０３へ移行する。
【００６８】
＜ステップＳ１０３＞
受信機の秘匿性増強処理部は、鍵長計算部と、ハッシュ計算部と、を有する。受信機の鍵長計算部は、受信機のシフティング処理部が送信機から受信したパルス統計情報（パルスごとのカウント数および誤り数等を含む）、ならびに、受信機の誤り訂正処理部により算出されたエラーレートおよび漏洩ビット数に基づいて、送信機と受信機との通信で盗聴者により盗聴された可能性がある情報量を除いた長さとなるように、秘匿性増強処理で最終的に得る暗号鍵の長さＫを計算する。鍵長計算部は、計算した暗号鍵の長さＫを、ハッシュ計算部に送る。そして、ステップＳ１０４へ移行する。
【００６９】
＜ステップＳ１０４＞
ハッシュ計算部は、図５に示すように、鍵長計算部により算出された暗号鍵の長さＫおよび既定サイズＮの大きさであって、送信機および受信機で共通のハッシュ行列を生成し、受信機の誤り訂正処理部により生成された訂正後ビット列に対して、生成したハッシュ行列を用いてハッシュ演算を行い、長さＫの暗号鍵を生成する。すなわち、従来の鍵蒸留処理の秘匿性増強処理では、ハッシュ演算を行う前のハッシュ行列を生成する段階で、ハッシュ行列のサイズを規定する暗号鍵の長さＫが定まっている必要がある。すなわち、鍵長計算とハッシュ演算とを同時に行うことはできず、鍵長計算により暗号鍵の長さＫを計算した後に、ハッシュ演算を行う必要がある。
【００７０】
なお、図５に示すように、既定サイズＮは、訂正後ビット列の長さとしているが、これに限定されるものではない。例えば、図５に示すように、誤り訂正処理部により生成された１つの訂正後ビット列を対象にハッシュ演算を行う場合だけでなく、複数の訂正後ビット列をまとめて１つのハッシュ行列によりハッシュ演算を行う場合もある。この場合のハッシュ行列は、既定サイズＮとして、複数の訂正後ビット列の長さの合計の長さとする必要がある。そして、ステップＳ１０５へ移行する。
【００７１】
＜ステップＳ１０５＞
ハッシュ計算部は、生成した暗号鍵を、受信機の蓄積部に記憶（蓄積）させる。
【００７２】
以上のステップＳ１０１〜Ｓ１０５の流れによって、従来の鍵蒸留処理が行われる。鍵長計算部による鍵長計算は、エラーレートが高いほど、盗聴者に洩れた情報量が多いと考えて、安全な暗号鍵を生成するために、暗号鍵の長さを小さくする。このような最終的な暗号鍵の長さを計算するには、盗聴者に漏洩した情報量を見積もるために、パルスおよび基底の組合せのエラーレートを計算し、シフティング処理で生成したパルス統計情報からカウント数と誤り数とを計算し、さらに、誤り訂正処理で古典通信路において漏洩したビット数(漏洩ビット数)を求め、これらの情報を利用して最終的な暗号鍵の長さの計算を行う。そのため、鍵長計算は、処理時間が長く、かつ、並列化による高速化が困難であるという性質を有するため、セキュアキーレートの低下につながる要素となる。
【００７３】
また、ハッシュ計算部によるハッシュ演算は、訂正後ビット列とハッシュ行列との行列演算となるため、並列処理は可能であるものの、単純に実装した場合には処理時間が長くなるという性質を有するため、セキュアキーレートの低下につながる要素となる。
【００７４】
さらに、上述のように、ハッシュ演算は、鍵長計算により計算された暗号鍵の長さを用いてハッシュ行列のサイズを決定するため、鍵長計算に先行して実行することはできない。そのため、従来の鍵蒸留処理では、処理の重い鍵長計算およびハッシュ演算を、逐次的に実行させているため、処理時間がより長くなり、セキュアキーレートをより低下させてしまうことになる。
【００７５】
図６は、第１の実施形態に係る受信機の鍵蒸留処理の動作の一例を示すフローチャートである。図７は、第１の実施形態に係る受信機のハッシュ計算を説明するための図である。図６および７を参照しながら、本実施形態に係る鍵蒸留処理の動作を、図４および５で上述した従来の鍵蒸留処理と比較して説明する。
【００７６】
＜ステップＳ１１＞
シフティング処理部２０２は、送信機１のシフティング処理部１０２から古典通信路を介して受信した基底情報（送信基底）と、光子検出部２０１が生成した基底情報（受信基底）とを比較して、一致する部分に対応するビットを光子ビット列から抽出して、共有ビット列を生成するシフティング処理を実行する。また、シフティング処理部２０２は、送信機１のシフティング処理部１０２から古典通信路を介して、パルス統計情報を受信する。そして、ステップＳ１２へ移行する。
【００７７】
＜ステップＳ１２＞
誤り訂正処理部２０３は、古典通信路を介して、送信機１の誤り訂正処理部１０３と制御データ（ＥＣ情報）を交換することにより、共有ビット列のビット誤りを訂正して訂正後ビット列を生成する誤り訂正処理を実行する。また、誤り訂正処理部２０３は、誤り訂正処理における共有ビット列の誤りビット数から量子通信路のエラーレートを算出する。さらに、誤り訂正処理部２０３は、共有ビット列のビット誤りを訂正して訂正後ビット列を生成するために、誤り訂正処理部１０３と交換したＥＣ情報の情報量に基づいて、漏洩ビット数を算出する。そして、ステップＳ１３およびＳ１４へ移行する。すなわち、ハッシュ計算部２１２によるハッシュ演算と、鍵長計算部２１１による鍵長計算とを並列に実行する。
【００７８】
＜ステップＳ１３＞
ハッシュ計算部２１２は、誤り訂正処理部２０３により生成された訂正後ビット列に対して、所定の大きさで、送信機１および受信機２で共通のハッシュ行列を用いてハッシュ演算を行い、ハッシュ演算後のビット列（ハッシュ後ビット列）を生成する。
【００７９】
ここで、図７に示すハッシュ行列のサイズを規定するサイズＭは、盗聴の可能性を考慮した場合、最終的な暗号鍵の長さが、訂正後ビット列の長さよりも大きくなることはないので、最大のサイズとして訂正後ビット列のサイズ（図７ではＮ）を想定すればよい。すなわち、ハッシュ計算部２１２は、サイズＭ＝Ｎとし、訂正後ビット列に対して、Ｎ×Ｎのハッシュ行列を用いたハッシュ演算を行えばよい。一般的に、ハッシュ演算において、ハッシュ行列とベクトルとの行列演算をそのまま計算すると、サイズがＮのハッシュ行列についてはＯ（ｎ２）の計算量となるため、ハッシュ行列のサイズが大きくなることによって処理時間の増加を招くが、数論変換（ＮＴＴ：Ｎｕｍｂｅｒ−Ｔｈｅｏｒｅｔｉｃａｌ  Ｔｒａｎｓｆｏｒｍ）を利用することにより、Ｏ（ｎｌｏｇｎ）の計算量に抑えられるため、行列のサイズが大きくなることによる処理時間の増加を抑制することができる。
【００８０】
なお、必ずしもサイズＭをサイズＮとする必要はなく、サイズＭをサイズＮよりも大きくしてもよいし、小さくしてもよい。ただし、サイズＭは、ハッシュ後ビット列の長さとなるので、長さＫの最終的な暗号鍵を得るためには、Ｍ＞Ｋである必要がある。
【００８１】
また、図７に示すように、既定サイズＮは、訂正後ビット列の長さとしているが、これに限定されるものではない。例えば、図７に示すように、誤り訂正処理部２０３により生成された１つの訂正後ビット列を対象にハッシュ演算を行う場合だけでなく、複数の訂正後ビット列をまとめて１つのハッシュ行列によりハッシュ演算を行う場合もある。この場合のハッシュ行列は、既定サイズＮとして、複数の訂正後ビット列の長さの合計の長さとする必要がある。
【００８２】
ハッシュ計算部２１２は、生成したハッシュ後ビット列を鍵抽出部２１３へ送る。そして、ステップＳ１５へ移行する。
【００８３】
＜ステップＳ１４＞
鍵長計算部２１１は、シフティング処理部２０２が受信したパルス統計情報（パルスごとのカウント数および誤り数等を含む）、ならびに、誤り訂正処理部２０３により算出されたエラーレートおよび漏洩ビット数に基づいて、送信機１と受信機２との通信で盗聴者により盗聴された可能性がある情報量を除いた長さとなるように、秘匿性増強処理で最終的に得る暗号鍵の長さ（図７に示す暗号鍵の長さＫ）を計算する鍵長計算を行う。そして、ステップＳ１５へ移行する。
【００８４】
＜ステップＳ１５＞
鍵抽出部２１３は、ハッシュ計算部２１２により生成されたハッシュ後ビット列から、鍵長計算部２１１により計算された暗号鍵の長さＫ分のビット列を抽出し、最終的な暗号鍵とする。
【００８５】
ここで、図５に示したハッシュ行列と、図７に示したハッシュ行列とで利用されるハッシュ行列を構成する乱数は同じであるので、図５に示したハッシュ行列は、本実施形態の図７に示したハッシュ行列の部分行列となるように包含される構成となる。したがって、鍵抽出部２１３によって、長さがサイズＭであるハッシュ後ビット列のうちの先頭からＫビットを抽出すると仮定すれば、最終的に得られる暗号鍵は、従来の鍵蒸留処理で得られる暗号鍵と同一となる。ただし、鍵抽出部２１３によりハッシュ後ビット列の先頭からＫビットを抽出することに限定されるものではなく、長さがサイズＭであるハッシュ後ビット列の後ろからＫビットを抽出してもよく、または、ランダムにＫビットを抽出してもよい。いずれの抽出方法においても、最終的に得られる長さＫの暗号鍵の安全性には関係しない。そして、ステップＳ１６へ移行する。
【００８６】
＜ステップＳ１６＞
鍵抽出部２１３は、抽出したビット列である最終的な暗号鍵を、蓄積部２０５に記憶（蓄積）させる。
【００８７】
以上のステップＳ１１〜Ｓ１６の流れによって、本実施形態の鍵蒸留処理が行われる。本実施形態の鍵蒸留処理においては、誤り訂正処理部２０３による誤り訂正処理で算出したエラーレートおよび漏洩ビット数と、パルス統計情報とを用いて、最終的な暗号鍵の長さを算出する鍵長計算を実行しながら、それと並列に、所定サイズのハッシュ行列を用意して、訂正後ビット列とのハッシュ演算を実行する。その後、鍵抽出部２１３は、鍵長計算で算出した暗号鍵の長さ、および、ハッシュ演算で生成されたハッシュ後ビット列を用いて、ハッシュ後ビット列から、暗号鍵を生成するために必要なサイズのビットを抽出して、最終的な暗号鍵を得る。このように、処理が重く、かつ並列処理が困難な鍵長計算と、処理が重いハッシュ演算とを並列に実行することによって、量子鍵配送システム１００の量子鍵配送でボトルネックとなる秘匿性増強処理の処理速度を向上させることができ、これによってセキュアキーレートを向上させることができる。
【００８８】
また、鍵抽出部２１３による抽出処理の時間は、上述のように処理の重い鍵長計算およびハッシュ演算の処理時間と比べて小さい。そのため、従来の鍵蒸留処理のように、鍵長計算の次にハッシュ演算を行うというように直列に処理を行って、鍵抽出部２１３による抽出処理を省略するよりも、本実施形態のように、鍵抽出部２１３による抽出処理を有するものとしても、鍵長計算とハッシュ演算とを並列に処理する場合の秘匿性増強処理全体の処理時間の削減効果は大きい。
【００８９】
図８は、従来の量子鍵配送の動作の一例を示すシーケンス図である。図８を参照しながら、従来の量子鍵配送の動作の詳細を説明する。
【００９０】
図８に示すように、従来の量子鍵配送システムの受信機は、光子検出部５０１と、シフティング処理部５０２と、誤り訂正処理部５０３と、秘匿性増強処理部５０４と、蓄積部５０５と、を有するものとする。また、秘匿性増強処理部５０４は、鍵長計算部５１１と、ハッシュ計算部５１２と、を有するものとする。
【００９１】
＜ステップＳ１１１＞
光子検出部５０１は、量子通信路を介して、送信機の光子送信部から光子列を検出し、検出した光子列を、所定の基準により選択した基底により生成した基底情報（受信基底）に基づいて読み取ることによってビット情報である光子ビット列を得る光子検出処理を行う。光子検出部５０１は、生成した光子ビット列および受信基底を蓄積部５０５に記憶させる。
【００９２】
＜ステップＳ１１２＞
光子検出部５０１は、光子検出処理を終了すると、シフティング処理を開始させるためのシフティング開始要求、および、生成した光子ビット列を、シフティング処理部５０２に送る。
【００９３】
＜ステップＳ１１３＞
シフティング処理部５０２は、シフティング開始要求を受け取ると、送信機のシフティング処理部から古典通信路を介して受信した基底情報（送信基底）と、光子検出部５０１が生成した基底情報（受信基底）とを比較して、一致する部分に対応するビットを光子ビット列から抽出して、共有ビット列を生成するシフティング処理を実行する。シフティング処理部５０２は、生成した共有ビット列を蓄積部５０５に記憶させる。
【００９４】
また、シフティング処理部５０２は、基底情報（送信基底）を、古典通信路を介して、送信機のシフティング処理部に送信する。また、シフティング処理部５０２は、送信機のシフティング処理部から古典通信路を介して、パルス統計情報を受信し、蓄積部５０５に記憶させる。
【００９５】
＜ステップＳ１１４＞
シフティング処理部５０２は、シフティング処理を終了すると、誤り訂正処理を開始させるための誤り訂正開始要求、および、生成した共有ビット列を、誤り訂正処理部５０３に送る。
【００９６】
＜ステップＳ１１５＞
誤り訂正処理部５０３は、誤り訂正開始要求を受け取ると、古典通信路を介して、送信機の誤り訂正処理部と制御データ（ＥＣ情報）を交換することにより、共有ビット列のビット誤りを訂正して訂正後ビット列を生成する誤り訂正処理を実行する。誤り訂正処理部５０３は、生成した訂正後ビット列を蓄積部２０５に記憶させる。
【００９７】
また、誤り訂正処理部５０３は、誤り訂正処理における共有ビット列の誤りビット数から量子通信路のエラーレートを算出し、蓄積部５０５に記憶させる。さらに、誤り訂正処理部５０３は、共有ビット列のビット誤りを訂正して訂正後ビット列を生成するために、送信機の誤り訂正処理部と交換したＥＣ情報の情報量に基づいて、漏洩ビット数を算出し、蓄積部５０５に記憶させる。
【００９８】
＜ステップＳ１１６＞
誤り訂正処理部５０３は、誤り訂正処理を終了すると、鍵長計算を開始させるための鍵長計算開始要求、および、算出したエラーレートおよび漏洩ビット数を、秘匿性増強処理部５０４の鍵長計算部５１１に送る。
【００９９】
＜ステップＳ１１７＞
シフティング処理部５０２は、パルス統計情報を鍵長計算部５１１に送る。
【０１００】
＜ステップＳ１１８＞
鍵長計算部５１１は、鍵長計算開始要求を受け取ると、シフティング処理部５０２から受け取ったパルス統計情報（パルスごとのカウント数および誤り数等を含む）、ならびに、誤り訂正処理部５０３から受け取ったエラーレートおよび漏洩ビット数に基づいて、送信機と受信機との通信で盗聴者により盗聴された可能性がある情報量を除いた長さとなるように、秘匿性増強処理で最終的に得る暗号鍵の長さ（図５に示した暗号鍵の長さＫ）を計算する鍵長計算を行う。
【０１０１】
＜ステップＳ１１９＞
鍵長計算部５１１は、鍵長計算を終了すると、ハッシュ演算を開始させるためのハッシ演算開始要求、および、計算した暗号鍵の長さを、秘匿性増強処理部５０４のハッシュ計算部５１２に送る。
【０１０２】
＜ステップＳ１２０＞
誤り訂正処理部５０３は、生成した訂正後ビット列をハッシュ計算部５１２に送る。
【０１０３】
＜ステップＳ１２１＞
ハッシュ計算部５１２は、ハッシュ演算開始要求を受け取ると、上述の図５に示すように、鍵長計算部５１１により算出された暗号鍵の長さＫおよび既定サイズＮの大きさであって、送信機および受信機で共通のハッシュ行列を生成し、誤り訂正処理部５０３から受け取った訂正後ビット列に対して、生成したハッシュ行列を用いてハッシュ演算を行い、長さＫの暗号鍵を生成する。
【０１０４】
＜ステップＳ１２２＞
ハッシュ計算部５１２は、生成した暗号鍵を、蓄積部５０５に記憶（蓄積）させる。
【０１０５】
以上のステップＳ１１１〜Ｓ１２２の処理によって、従来の量子鍵配送の動作が行われる。上述のように、鍵長計算およびハッシュ演算は重い処理であり、また、ハッシュ演算は、鍵長計算により計算された暗号鍵の長さを用いてハッシュ行列のサイズを決定するため、鍵長計算に先行して実行することはできない。そのため、従来の鍵蒸留処理では、処理の重い鍵長計算およびハッシュ演算を、直列に実行させているため、処理時間がより長くなり、セキュアキーレートをより低下させてしまうことになる。
【０１０６】
図９は、第１の実施形態に係る受信機の量子鍵配送の動作の一例を示すシーケンス図である。図９を参照しながら、本実施形態の量子鍵配送の動作の詳細を説明する。
【０１０７】
＜ステップＳ２１＞
光子検出部２０１は、量子通信路を介して、送信機１の光子送信部１０１から光子列を検出し、検出した光子列を、所定の基準により選択した基底により生成した基底情報（受信基底）に基づいて読み取ることによってビット情報である光子ビット列を得る光子検出処理を行う。光子検出部２０１は、生成した光子ビット列および受信基底を蓄積部２０５に記憶させる。
【０１０８】
＜ステップＳ２２＞
光子検出部２０１は、光子検出処理を終了すると、シフティング処理を開始させるためのシフティング開始要求、および、生成した光子ビット列を、シフティング処理部２０２に送る。
【０１０９】
＜ステップＳ２３＞
シフティング処理部２０２は、シフティング開始要求を受け取ると、送信機１のシフティング処理部１０２から古典通信路を介して受信した基底情報（送信基底）と、光子検出部２０１が生成した基底情報（受信基底）とを比較して、一致する部分に対応するビットを光子ビット列から抽出して、共有ビット列を生成するシフティング処理を実行する。シフティング処理部２０２は、生成した共有ビット列を蓄積部２０５に記憶させる。
【０１１０】
また、シフティング処理部２０２は、基底情報（送信基底）を、古典通信路を介して、送信機１のシフティング処理部１０２に送信する。また、シフティング処理部２０２は、送信機１のシフティング処理部１０２から古典通信路を介して、パルス統計情報を受信し、蓄積部２０５に記憶させる。
【０１１１】
＜ステップＳ２４＞
シフティング処理部２０２は、シフティング処理を終了すると、誤り訂正処理を開始させるための誤り訂正開始要求、および、生成した共有ビット列を、誤り訂正処理部２０３に送る。
【０１１２】
＜ステップＳ２５＞
誤り訂正処理部２０３は、誤り訂正開始要求を受け取ると、古典通信路を介して、送信機１の誤り訂正処理部１０３と制御データ（ＥＣ情報）を交換することにより、共有ビット列のビット誤りを訂正して訂正後ビット列を生成する誤り訂正処理を実行する。誤り訂正処理部２０３は、生成した訂正後ビット列を蓄積部２０５に記憶させる。
【０１１３】
また、誤り訂正処理部２０３は、誤り訂正処理における共有ビット列の誤りビット数から量子通信路のエラーレートを算出し、蓄積部２０５に記憶させる。さらに、誤り訂正処理部２０３は、共有ビット列のビット誤りを訂正して訂正後ビット列を生成するために、誤り訂正処理部１０３と交換したＥＣ情報の情報量に基づいて、漏洩ビット数を算出し、蓄積部２０５に記憶させる。
【０１１４】
＜ステップＳ２６＞
誤り訂正処理部２０３は、誤り訂正処理を終了すると、鍵長計算を開始させるための鍵長計算開始要求、および、算出したエラーレートおよび漏洩ビット数を、秘匿性増強処理部２０４の鍵長計算部２１１に送る。
【０１１５】
＜ステップＳ２７＞
誤り訂正処理部２０３は、生成した訂正後ビット列を秘匿性増強処理部２０４のハッシュ計算部２１２に送る。
【０１１６】
＜ステップＳ２８＞
鍵長計算部２１１は、鍵長計算開始要求を受け取ると、さらに、ハッシュ演算を開始させるためのハッシュ演算開始要求をハッシュ計算部２１２に送る。これによって、鍵長計算部２１１による鍵長演算と、ハッシュ計算部２１２によるハッシュ演算とが並列して実行されることになる。
【０１１７】
＜ステップＳ２９＞
シフティング処理部２０２は、パルス統計情報を鍵長計算部２１１に送る。
【０１１８】
＜ステップＳ３０＞
鍵長計算部２１１は、鍵長計算開始要求を受け取ると、シフティング処理部２０２から受け取ったパルス統計情報（パルスごとのカウント数および誤り数等を含む）、ならびに、誤り訂正処理部２０３から受け取ったエラーレートおよび漏洩ビット数に基づいて、送信機１と受信機２との通信で盗聴者により盗聴された可能性がある情報量を除いた長さとなるように、秘匿性増強処理で最終的に得る暗号鍵の長さ（図７に示した暗号鍵の長さＫ）を計算する鍵長計算を行う。
【０１１９】
＜ステップＳ３１＞
ハッシュ計算部２１２は、ハッシュ演算開始要求を受け取ると、上述の図７に示すように、サイズＭおよび既定サイズＮで規定される大きさであって、送信機１および受信機２で共通のハッシュ行列を生成し、誤り訂正処理部２０３から受け取った訂正後ビット列に対して、生成したハッシュ行列を用いてハッシュ演算を行い、ハッシュ後ビット列を生成する。
【０１２０】
＜ステップＳ３２＞
ハッシュ計算部２１２は、ハッシュ演算を終了すると、鍵抽出を開始させるための鍵抽出開始要求、および、生成したハッシュ後ビット列を秘匿性増強処理部２０４の鍵抽出部２１３へ送る。
【０１２１】
＜ステップＳ３３＞
鍵長計算部２１１は、鍵長計算を終了すると、計算した暗号鍵の長さＫを鍵抽出部２１３に送る。
【０１２２】
＜ステップＳ３４＞
鍵抽出部２１３は、ハッシュ計算部２１２から受け取ったハッシュ後ビット列から、鍵長計算部２１１から受け取った暗号鍵の長さＫ分のビット列を抽出し、最終的な暗号鍵とする。
【０１２３】
＜ステップＳ３５＞
鍵抽出部２１３は、抽出したビット列である暗号鍵を、蓄積部２０５に記憶（蓄積）させる。
【０１２４】
以上のステップＳ２１〜Ｓ３５の処理によって、本実施形態の量子鍵配送の動作が行われる。本実施形態の量子鍵配送においては、誤り訂正処理部２０３による誤り訂正処理で算出したエラーレートおよび漏洩ビット数と、パルス統計情報とを用いて、最終的な暗号鍵の長さを算出する鍵長計算を実行しながら、それと並列に、所定サイズのハッシュ行列を用意して、訂正後ビット列とのハッシュ演算を実行する。すなわち、ハッシュ計算部２１２は、所定サイズのハッシュ行列を利用することで、鍵長計算部２１１の鍵長計算の終了を待たずにハッシュ演算が可能となる。その後、鍵抽出部２１３は、鍵長計算で算出した暗号鍵の長さ、および、ハッシュ演算で生成されたハッシュ後ビット列を用いて、ハッシュ後ビット列から、暗号鍵を生成するために必要なサイズのビットを抽出して、最終的な暗号鍵を得る。このように、処理が重く、かつ並列処理が困難な鍵長計算と、処理が重いハッシュ演算とを並列に実行することによって、量子鍵配送システム１００の量子鍵配送でボトルネックとなる秘匿性増強処理の処理速度を向上させることができ、これによって量子鍵配送全体の処理速度を向上させ、セキュアキーレートを向上させることができる。
【０１２５】
なお、図９に示すように、各動作の開始要求は、処理を開始するためのトリガとして明示的に記載しているが、実際に処理が開始するタイミングはこれに限定されるものではない。
【０１２６】
（第２の実施形態）
第２の実施形態に係る量子鍵配送システムについて、第１の実施形態に係る量子鍵配送システム１００と相違する点を中心に説明する。なお、本実施形態に係る量子暗号通信システムの構成、送信機および受信機のハードウェア構成、ならびに送信機の機能ブロックの構成は、第１の実施形態と同様である。
【０１２７】
図１０は、第２の実施形態に係る受信機の量子鍵配送の動作の一例を示すシーケンス図である。図１０を参照しながら、本実施形態の量子鍵配送の動作の詳細を説明する。
【０１２８】
図１０に示すように、本実施形態の量子鍵配送システムの受信機は、光子検出部２０１と、シフティング処理部２０２ａと、誤り訂正処理部２０３と、秘匿性増強処理部２０４ａと、蓄積部２０５と、を有する。また、秘匿性増強処理部２０４ａは、鍵長計算部２１１ａと、ハッシュ計算部２１２ａと、鍵抽出部２１３と、を有する。
【０１２９】
＜ステップＳ４１＞
光子検出部２０１は、量子通信路を介して、送信機１の光子送信部１０１から光子列を検出し、検出した光子列を、所定の基準により選択した基底により生成した基底情報（受信基底）に基づいて読み取ることによってビット情報である光子ビット列を得る光子検出処理を行う。光子検出部２０１は、生成した光子ビット列および受信基底を蓄積部２０５に記憶させる。
【０１３０】
＜ステップＳ４２＞
光子検出部２０１は、光子検出処理を終了すると、シフティング処理を開始させるためのシフティング開始要求、および、生成した光子ビット列を、シフティング処理部２０２ａに送る。
【０１３１】
＜ステップＳ４３＞
シフティング処理部２０２ａは、シフティング開始要求を受け取ると、さらに、鍵長計算を開始させるための鍵長計算開始要求を秘匿性増強処理部２０４ａの鍵長計算部２１１ａに送る。
【０１３２】
＜ステップＳ４４＞
シフティング処理部２０２ａは、シフティング開始要求を受け取ると、送信機１のシフティング処理部１０２から古典通信路を介して受信した基底情報（送信基底）と、光子検出部２０１が生成した基底情報（受信基底）とを比較して、一致する部分に対応するビットを光子ビット列から抽出して、共有ビット列を生成するシフティング処理を実行する。シフティング処理部２０２ａは、生成した共有ビット列を蓄積部２０５に記憶させる。
【０１３３】
また、シフティング処理部２０２ａは、基底情報（送信基底）を、古典通信路を介して、送信機１のシフティング処理部１０２に送信する。また、シフティング処理部２０２ａは、送信機１のシフティング処理部１０２から古典通信路を介して、パルス統計情報を受信し、蓄積部２０５に記憶させる。
【０１３４】
＜ステップＳ４５＞
鍵長計算部２１１ａは、鍵長計算開始要求を受け取ると、送信機１と受信機２との通信で盗聴者により盗聴された可能性がある情報量を除いた長さとなるように、秘匿性増強処理で最終的に得る暗号鍵の長さ（図７に示した暗号鍵の長さＫ）を計算する鍵長計算を開始する。すなわち、本実施形態では、第１の実施形態と異なり、鍵長計算部２１１ａによる鍵長計算のプロセスを、誤り訂正処理部２０３による誤り訂正処理の終了を待たずに開始させる。そして、鍵長計算部２１１ａは、後述するステップＳ４６でパルス統計情報を受け取り、そして、ステップＳ４９でエラーレートおよび漏洩ビット数を受け取りながら、順次、鍵長計算の処理を進める。
【０１３５】
＜ステップＳ４６＞
シフティング処理部２０２ａは、シフティング処理において、送信機１のシフティング処理部１０２から古典通信路を介してパルス統計情報を受信した場合に、そのパルス統計情報を鍵長計算部２１１ａに送る。
【０１３６】
＜ステップＳ４７＞
シフティング処理部２０２ａは、シフティング処理を終了すると、誤り訂正処理を開始させるための誤り訂正開始要求、および、生成した共有ビット列を、誤り訂正処理部２０３に送る。
【０１３７】
＜ステップＳ４８＞
誤り訂正処理部２０３は、誤り訂正開始要求を受け取ると、古典通信路を介して、送信機１の誤り訂正処理部１０３と制御データ（ＥＣ情報）を交換することにより、共有ビット列のビット誤りを訂正して訂正後ビット列を生成する誤り訂正処理を実行する。誤り訂正処理部２０３は、生成した訂正後ビット列を蓄積部２０５に記憶させる。
【０１３８】
また、誤り訂正処理部２０３は、誤り訂正処理における共有ビット列の誤りビット数から量子通信路のエラーレートを算出し、蓄積部２０５に記憶させる。さらに、誤り訂正処理部２０３は、共有ビット列のビット誤りを訂正して訂正後ビット列を生成するために、誤り訂正処理部１０３と交換したＥＣ情報の情報量に基づいて、漏洩ビット数を算出し、蓄積部２０５に記憶させる。
【０１３９】
＜ステップＳ４９＞
誤り訂正処理部２０３は、誤り訂正処理を終了すると、算出したエラーレートおよび漏洩ビット数を、鍵長計算部２１１ａに送る。ここで、鍵長計算部２１１ａは、シフティング処理部２０２ａからのパルス統計情報（パルスごとのカウント数および誤り数等を含む）、ならびに、誤り訂正処理部２０３からのエラーレートおよび漏洩ビット数が揃うことにより、暗号鍵の長さを計算する鍵長計算を完了できる。
【０１４０】
＜ステップＳ５０＞
鍵長計算部２１１ａは、誤り訂正処理部２０３からエラーレートおよび漏洩ビット数を受け取ると、ハッシュ演算を開始させるためのハッシュ演算開始要求を、秘匿性増強処理部２０４ａのハッシュ計算部２１２ａに送る。
【０１４１】
＜ステップＳ５１＞
誤り訂正処理部２０３は、誤り訂正処理を終了すると、生成した訂正後ビット列をハッシュ計算部２１２ａに送る。
【０１４２】
＜ステップＳ５２＞
ハッシュ計算部２１２ａは、ハッシュ演算開始要求を受け取ると、上述の図７に示すように、サイズＭおよび既定サイズＮで規定される大きさであって、送信機および受信機で共通のハッシュ行列を生成し、誤り訂正処理部２０３から受け取った訂正後ビット列に対して、生成したハッシュ行列を用いてハッシュ演算を行い、ハッシュ後ビット列を生成する。
【０１４３】
＜ステップＳ５３＞
ハッシュ計算部２１２ａは、ハッシュ演算を終了すると、鍵抽出を開始させるための鍵抽出開始要求、および、生成したハッシュ後ビット列を秘匿性増強処理部２０４ａの鍵抽出部２１３へ送る。
【０１４４】
＜ステップＳ５４＞
鍵長計算部２１１ａは、鍵長計算を終了すると、計算した暗号鍵の長さＫを鍵抽出部２１３に送る。
【０１４５】
＜ステップＳ５５＞
鍵抽出部２１３は、ハッシュ計算部２１２ａから受け取ったハッシュ後ビット列から、鍵長計算部２１１ａから受け取った暗号鍵の長さＫ分のビット列を抽出し、最終的な暗号鍵とする。
【０１４６】
＜ステップＳ５６＞
鍵抽出部２１３は、抽出したビット列である暗号鍵を、蓄積部２０５に記憶（蓄積）させる。
【０１４７】
以上のステップＳ４１〜Ｓ５６の流れによって、本実施形態の量子鍵配送の動作が行われる。本実施形態では、第１の実施形態と同様に、鍵長計算およびハッシュ演算を並列に実行させるものとしているが、さらに、鍵長計算のプロセスを、誤り訂正処理部２０３の誤り訂正処理の終了を待たずに開始（具体的には、シフティング処理部２０２ａによるシフティング処理の開始のタイミングで開始）させている。そして、鍵長計算部２１１ａは、シフティング処理部２０２ａからパルス統計情報を受け取り、そして、誤り訂正処理部２０３からエラーレートおよび漏洩ビット数を受け取りながら、順次、鍵長計算の処理を進めるものとしている。これによって、鍵長計算部２１１ａによる鍵長計算の開始のタイミングが、第１の実施形態と比較して早い分、量子鍵配送での秘匿性増強処理の処理速度をさらに向上させることができ、これによって量子鍵配送全体の処理速度を向上させ、セキュアキーレートを向上させることができる。
【０１４８】
なお、図１０に示すように、各動作の開始要求は、処理を開始するためのトリガとして明示的に記載しているが、実際に処理が開始するタイミングはこれに限定されるものではない。
【０１４９】
（第３の実施形態）
第３の実施形態に係る量子鍵配送システムについて、第１の実施形態に係る量子鍵配送システム１００と相違する点を中心に説明する。なお、本実施形態に係る量子暗号通信システムの構成、ならびに、送信機および受信機のハードウェア構成は、第１の実施形態と同様である。
【０１５０】
図１１は、第３の実施形態に係る量子鍵配送システムの機能ブロックの構成の一例を示す図である。図１１を参照しながら、量子鍵配送システム１００ｂの送信機１ｂおよび受信機２ｂの機能ブロックの構成および動作について説明する。
【０１５１】
図１１に示すように、送信機１ｂは、光子送信部１０１と、シフティング処理部１０２と、誤り訂正処理部１０３と、秘匿性増強処理部１０４と、蓄積部１０５と、鍵管理部１０６とを有する。これらの各機能部の動作は、それぞれ第１の実施形態の送信機１の機能部の動作と同様である。
【０１５２】
図１１に示すように、受信機２ｂは、光子検出部２０１と、シフティング処理部２０２ｂと、誤り訂正処理部２０３と、秘匿性増強処理部２０４ｂと、蓄積部２０５と、鍵管理部２０６と、有する。このうち、光子検出部２０１、誤り訂正処理部２０３、蓄積部２０５および鍵管理部２０６の動作は、それぞれ第１の実施形態の送信機１の光子検出部２０１、誤り訂正処理部２０３、蓄積部２０５および鍵管理部２０６の動作と同様である。
【０１５３】
シフティング処理部２０２ｂは、送信機１ｂのシフティング処理部１０２から古典通信路を介して受信した基底情報（送信基底）と、光子検出部２０１が生成した基底情報（受信基底）とを比較して、一致する部分に対応するビットを光子ビット列から抽出して、共有ビット列を生成するシフティング処理を実行する機能部である。また、シフティング処理部２０２ｂは、第２の実施形態のシフティング処理部２０２ａと同様に、シフティング開始要求を受け取ると、さらに、鍵長計算を開始させるための鍵長計算開始要求を、後述する秘匿性増強処理部２０４ｂの鍵長計算部２１１ｂに送る。なお、シフティング処理部２０２ｂが用いる光子ビット列は、光子検出部２０１により蓄積部２０５に記憶された光子ビット列を読み出したものでもよく、光子検出部２０１から直接受け取った光子ビット列であってもよい。
【０１５４】
シフティング処理部２０２ｂは、生成した共有ビット列を蓄積部２０５に記憶させ、誤り訂正処理部２０３に送る。また、シフティング処理部２０２ｂは、基底情報（送信基底）を、古典通信路を介して、送信機１ｂのシフティング処理部１０２に送信する。また、シフティング処理部２０２ｂは、送信機１ｂのシフティング処理部１０２から古典通信路を介して、パルス統計情報を受信し、蓄積部２０５に記憶させる。なお、ここで説明したシフティング処理は一例であり、これ以外の方法であってもよい。
【０１５５】
秘匿性増強処理部２０４ｂは、制御情報（ＰＡ情報）を生成して、古典通信路を介して、送信機１ｂの秘匿性増強処理部１０４に送信し、このＰＡ情報に基づいて、訂正後ビット列に対して、光子送信処理、シフティング処理、および誤り訂正処理で理論上、漏洩して盗聴者により盗聴された可能性のあるビットを打ち消すための秘匿性増強処理を行って暗号鍵を生成する機能部である。なお、秘匿性増強処理部２０４ｂが用いる訂正後ビット列は、誤り訂正処理部２０３により蓄積部２０５に記憶された訂正後ビット列を読み出したものでもよく、誤り訂正処理部２０３から直接受け取った訂正後ビット列であってもよい。秘匿性増強処理部２０４ｂは、鍵長計算部２１１ｂと、ハッシュ計算部２１２ｂと、を有する。すなわち、第１の実施形態の秘匿性増強処理部２０４と異なり、鍵抽出部２１３に相当する機能部を有さない。
【０１５６】
鍵長計算部２１１ｂは、シフティング処理部２０２が受信したパルス統計情報（パルスごとのカウント数および誤り数等を含む）、ならびに、誤り訂正処理部２０３により算出されたエラーレートおよび漏洩ビット数に基づいて、送信機１ｂと受信機２ｂとの通信で盗聴者により盗聴された可能性がある情報量を除いた長さとなるように、秘匿性増強処理で最終的に得る暗号鍵の長さを計算する鍵長計算を行う機能部である。また、鍵長計算部２１１ｂによる鍵長計算のプロセスは、第２の実施形態と同様に、シフティング処理部２０２から鍵長計算開始要求を受け取ったタイミング、すなわち、シフティング処理部２０２によるシフティング処理が開始されたタイミングで開始される。鍵長計算部２１１ｂは、計算した暗号鍵の長さを、ハッシュ計算部２１２ｂに送る。
【０１５７】
なお、鍵長計算部２１１ｂが用いるパルス統計情報、エラーレートおよび漏洩ビット数は、蓄積部２０５に記憶されたパルス統計情報、エラーレートおよび漏洩ビット数を読み出したものでもよく、シフティング処理部２０２および誤り訂正処理部２０３から直接受け取った情報であってもよい。
【０１５８】
ハッシュ計算部２１２ｂは、鍵長計算部２１１ｂで算出された暗号鍵の長さＫおよび既定サイズＮの大きさであって、送信機１ｂおよび受信機２ｂで共通のハッシュ行列を生成し、受信機２ｂの誤り訂正処理部２０３により生成された訂正後ビット列に対して、生成したハッシュ行列を用いてハッシュ演算を行い、長さＫの暗号鍵を生成する機能部である。ハッシュ計算部２１２ｂは、生成した暗号鍵を蓄積部２０５に記憶（蓄積）させる。
【０１５９】
上述の光子送信部２０１、シフティング処理部２０２、誤り訂正処理部２０３、秘匿性増強処理部２０４ｂの鍵長計算部２１１ｂおよびハッシュ計算部２１２ｂ、ならびに鍵管理部２０６は、図２に示すＣＰＵ５１が補助記憶装置５５等に記憶されたプログラムをＲＡＭ５３に読み出して実行することにより実現される。なお、光子送信部２０１、シフティング処理部２０２、誤り訂正処理部２０３、秘匿性増強処理部２０４ｂの鍵長計算部２１１ｂおよびハッシュ計算部２１２ｂ、ならびに鍵管理部２０６のすべてがプログラムの実行により実現されることに限定されるものではなく、少なくともいずれかが、例えば、ＡＳＩＣ、ＦＰＧＡまたはその他の集積回路等のハードウェア回路によって実現されるものとしてもよい。
【０１６０】
なお、図１１に示す光子送信部２０１、シフティング処理部２０２、誤り訂正処理部２０３、秘匿性増強処理部２０４ｂの鍵長計算部２１１ｂおよびハッシュ計算部２１２ｂ、蓄積部２０５、ならびに鍵管理部２０６は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図１１に示す受信機２ｂで、独立した機能部として図示した複数の機能部を、１つの機能部として構成してもよい。一方、図１１に示す受信機２ｂで、１つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
【０１６１】
図１２は、第３の実施形態に係る受信機の量子鍵配送の動作の一例を示すシーケンス図である。図１２を参照しながら、本実施形態の量子鍵配送の動作の詳細を説明する。
【０１６２】
＜ステップＳ６１＞
光子検出部２０１は、量子通信路を介して、送信機１の光子送信部１０１から光子列を検出し、検出した光子列を、所定の基準により選択した基底により生成した基底情報（受信基底）に基づいて読み取ることによってビット情報である光子ビット列を得る光子検出処理を行う。光子検出部２０１は、生成した光子ビット列および受信基底を蓄積部２０５に記憶させる。
【０１６３】
＜ステップＳ６２＞
光子検出部２０１は、光子検出処理を終了すると、シフティング処理を開始させるためのシフティング開始要求、および、生成した光子ビット列を、シフティング処理部２０２ａに送る。
【０１６４】
＜ステップＳ６３＞
シフティング処理部２０２ｂは、シフティング開始要求を受け取ると、さらに、鍵長計算を開始させるための鍵長計算開始要求を秘匿性増強処理部２０４ｂの鍵長計算部２１１ｂに送る。
【０１６５】
＜ステップＳ６４＞
シフティング処理部２０２ｂは、シフティング開始要求を受け取ると、送信機１ｂのシフティング処理部１０２から古典通信路を介して受信した基底情報（送信基底）と、光子検出部２０１が生成した基底情報（受信基底）とを比較して、一致する部分に対応するビットを光子ビット列から抽出して、共有ビット列を生成するシフティング処理を実行する。シフティング処理部２０２ｂは、生成した共有ビット列を蓄積部２０５に記憶させる。
【０１６６】
また、シフティング処理部２０２ｂは、基底情報（送信基底）を、古典通信路を介して、送信機１ｂのシフティング処理部１０２に送信する。また、シフティング処理部２０２ｂは、送信機１ｂのシフティング処理部１０２から古典通信路を介して、パルス統計情報を受信し、蓄積部２０５に記憶させる。
【０１６７】
＜ステップＳ６５＞
鍵長計算部２１１ｂは、鍵長計算開始要求を受け取ると、送信機１ｂと受信機２ｂとの通信で盗聴者により盗聴された可能性がある情報量を除いた長さとなるように、秘匿性増強処理で最終的に得る暗号鍵の長さ（図７に示した暗号鍵の長さＫ）を計算する鍵長計算を開始する。すなわち、本実施形態では、第２の実施形態と同様に、鍵長計算部２１１ｂによる鍵長計算のプロセスを、誤り訂正処理部２０３による誤り訂正処理の終了を待たずに開始させる。そして、鍵長計算部２１１ｂは、後述するステップＳ６６でパルス統計情報を受け取り、そして、ステップＳ６９でエラーレートおよび漏洩ビット数を受け取りながら、順次、鍵長計算の処理を進める。
【０１６８】
＜ステップＳ６６＞
シフティング処理部２０２ｂは、シフティング処理において、送信機１ｂのシフティング処理部１０２から古典通信路を介してパルス統計情報を受信した場合に、そのパルス統計情報を鍵長計算部２１１ｂに送る。
【０１６９】
＜ステップＳ６７＞
シフティング処理部２０２ｂは、シフティング処理を終了すると、誤り訂正処理を開始させるための誤り訂正開始要求、および、生成した共有ビット列を、誤り訂正処理部２０３に送る。
【０１７０】
＜ステップＳ６８＞
誤り訂正処理部２０３は、誤り訂正開始要求を受け取ると、古典通信路を介して、送信機１ｂの誤り訂正処理部１０３と制御データ（ＥＣ情報）を交換することにより、共有ビット列のビット誤りを訂正して訂正後ビット列を生成する誤り訂正処理を実行する。誤り訂正処理部２０３は、生成した訂正後ビット列を蓄積部２０５に記憶させる。
【０１７１】
また、誤り訂正処理部２０３は、誤り訂正処理における共有ビット列の誤りビット数から量子通信路のエラーレートを算出し、蓄積部２０５に記憶させる。さらに、誤り訂正処理部２０３は、共有ビット列のビット誤りを訂正して訂正後ビット列を生成するために、誤り訂正処理部１０３と交換したＥＣ情報の情報量に基づいて、漏洩ビット数を算出し、蓄積部２０５に記憶させる。
【０１７２】
＜ステップＳ６９＞
誤り訂正処理部２０３は、誤り訂正処理を終了すると、算出したエラーレートおよび漏洩ビット数を、鍵長計算部２１１ｂに送る。ここで、鍵長計算部２１１ｂは、シフティング処理部２０２ｂからのパルス統計情報（パルスごとのカウント数および誤り数等を含む）、ならびに、誤り訂正処理部２０３からのエラーレートおよび漏洩ビット数が揃うことにより、暗号鍵の長さを計算する鍵長計算を完了できる。
【０１７３】
＜ステップＳ７０＞
鍵長計算部２１１ｂは、鍵長計算を終了すると、ハッシュ演算を開始させるためのハッシ演算開始要求、および、計算した暗号鍵の長さを、秘匿性増強処理部２０４ｂのハッシュ計算部２１２ｂに送る。
【０１７４】
＜ステップＳ７１＞
誤り訂正処理部２０３は、生成した訂正後ビット列をハッシュ計算部２１２ｂに送る。
【０１７５】
＜ステップＳ７２＞
ハッシュ計算部２１２ｂは、ハッシュ演算開始要求を受け取ると、鍵長計算部５１１により算出された暗号鍵の長さＫおよび既定サイズＮの大きさであって、送信機１ｂおよび受信機２ｂで共通のハッシュ行列を生成し、誤り訂正処理部２０３から受け取った訂正後ビット列に対して、生成したハッシュ行列を用いてハッシュ演算を行い、長さＫの暗号鍵を生成する。
【０１７６】
＜ステップＳ７３＞
ハッシュ計算部２１２ｂは、生成した暗号鍵を、蓄積部２０５に記憶（蓄積）させる。
【０１７７】
以上のステップＳ６１〜Ｓ７３の流れによって、本実施形態の量子鍵配送の動作が行われる。本実施形態では、秘匿性増強処理部２０４ｂによる秘匿性増強処理は、従来の量子鍵配送における秘匿性増強処理と同様に、ハッシュ演算では、鍵長計算により計算された暗号鍵の長さを用いてハッシュ行列のサイズを決定し、ハッシュ演算を行っている。すなわち、鍵長計算とハッシュ演算とを直列に実行させるものとし、鍵抽出の処理は省略している。ただし、本実施形態の秘匿性増強処理部２０４ｂによる秘匿性増強処理では、従来の量子鍵配送と異なり、秘匿性増強処理の鍵長計算のプロセスを、誤り訂正処理部２０３の誤り訂正処理の終了を待たずに開始（具体的には、シフティング処理部２０２ｂによるシフティング処理の開始のタイミングで開始）させている。そして、鍵長計算部２１１ｂは、シフティング処理部２０２ｂからパルス統計情報を受け取り、そして、誤り訂正処理部２０３からエラーレートおよび漏洩ビット数を受け取りながら、順次、鍵長計算の処理を進めるものとしている。これによって、従来の量子鍵配送と比較して、処理の重い秘匿性増強処理の開始のタイミング、すなわち、鍵長計算部２１１ｂによる鍵長計算の開始のタイミングを早めることができるので、量子鍵配送全体の処理速度を向上させ、セキュアキーレートを向上させることができる。
【０１７８】
なお、図１２に示すように、各動作の開始要求は、処理を開始するためのトリガとして明示的に記載しているが、実際に処理が開始するタイミングはこれに限定されるものではない。
【０１７９】
また、上述の各実施形態において、シフティング処理部２０２（２０２ａ、２０２ｂ）は、送信機のシフティング処理部１０２により生成されたパルス統計情報を受信するものとしているが、これに限定されるものではない。すなわち、シフティング処理部２０２（２０２ａ、２０２ｂ）は、送信機のシフティング処理部１０２から光子ビット列の各ビットがどのパルスに対応するのかを示す情報を受信し、その情報を用いて、自身でパルス統計情報を生成するものとしてもよい。
【０１８０】
また、上述の各実施形態において、秘匿性増強処理部２０４（２０４ａ、２０４ｂ）の構成は受信機が有するものとしたが、これに限定されるものではなく、送信機が備えるものとしてもよい。この場合、送信機の秘匿性増強処理部で計算した暗号鍵のサイズ等をＰＡ情報として、受信機に送信する必要がある。または、秘匿性増強処理部２０４（２０４ａ、２０４ｂ）と同様の構成を、受信機および送信機がそれぞれ有するものとしてもよい。
【０１８１】
また、上述の各実施形態に係る送信機および受信機で実行されるプログラムは、例えば、ＲＯＭ５２等に予め組み込まれて提供される。
【０１８２】
なお、上述の各実施形態に係る送信機および受信機で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【０１８３】
さらに、上述の各実施形態に係る送信機および受信機で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述の各実施形態に係る送信機および受信機で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１８４】
また、上述の各実施形態に係る送信機および受信機で実行されるプログラムは、コンピュータを上述した送信機および受信機の各機能部として機能させ得る。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【０１８５】
本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、および変更を行うことができる。これらの実施形態は、発明の範囲および要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８６】
１、１ｂ  送信機
２、２ｂ  受信機
３  光ファイバリンク
４  通信ケーブル
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５４  通信Ｉ／Ｆ
５５  補助記憶装置
５６  光学処理装置
５７  バス
１００、１００ｂ  量子鍵配送システム
１０１  光子送信部
１０２  シフティング処理部
１０３  誤り訂正処理部
１０４  秘匿性増強処理部
１０５  蓄積部
２０１  光子検出部
２０２、２０２ａ、２０２ｂ  シフティング処理部
２０３  誤り訂正処理部
２０４、２０４ａ、２０４ｂ  秘匿性増強処理部
２０５  蓄積部
２１１、２１１ａ、２１１ｂ  鍵長計算部
２１２、２１２ａ、２１２ｂ  ハッシュ計算部
２１３  鍵抽出部
５０１  光子検出部
５０２  シフティング処理部
５０３  誤り訂正処理部
５０４  秘匿性増強処理部
５０５  蓄積部
５１１  鍵長計算部
５１２  ハッシュ計算部
【図１】
0006490613.tif 000002
【図２】
0006490613.tif 000003
【図３】
0006490613.tif 000004
【図４】
0006490613.tif 000005
【図５】
0006490613.tif 000006
【図６】
0006490613.tif 000007
【図７】
0006490613.tif 000008
【図８】
0006490613.tif 000009
【図９】
0006490613.tif 000010
【図１０】
0006490613.tif 000011
【図１１】
0006490613.tif 000012
【図１２】
0006490613.tif 000013