(57)【要約】【課題】セキュアキーレートを落とさずに高速に量子鍵配送を行う。【解決手段】鍵共有装置は、複数の個別処理部を備える。個別処理部は、他の鍵共有装置との間で量子鍵配送により共有する暗号鍵を生成する処理に含まれる複数の個別処理のうちいずれかをそれぞれ実行する。個別処理部は、制御部を備える。制御部は、個別処理の結果、および、結果を識別する識別情報の少なくとも一方である結果情報を記憶する記憶部の空き状況に応じて、対応する個別処理の実行を制御する。【選択図】図２
2018148544.tif 000002
【特許請求の範囲】
【請求項１】
他の鍵共有装置との間で量子鍵配送により共有する暗号鍵を生成する処理に含まれる複数の個別処理のうちいずれかをそれぞれ実行する複数の個別処理部を備え、
前記個別処理部は、
前記個別処理の結果、および、前記結果を識別する識別情報の少なくとも一方である結果情報を記憶する記憶部の空き状況に応じて、対応する前記個別処理の実行を制御する制御部を備える、
鍵共有装置。
【請求項２】
前記制御部は、前記記憶部の空き容量が第１閾値より小さい場合に、前記結果を破棄する、
請求項１に記載の鍵共有装置。
【請求項３】
前記制御部は、優先度を付して前記結果情報を前記記憶部に記憶し、
前記記憶部の空き容量が第１閾値より小さく、かつ、前記結果情報の優先度が前記記憶部に記憶された優先度より小さい場合に、前記結果情報を破棄し、前記記憶部の空き容量が前記第１閾値より小さく、かつ、前記結果情報の優先度が前記記憶部に記憶された優先度より大きい場合に、前記優先度が他の結果情報より小さい結果情報を前記記憶部から削除し、前記結果情報に優先度を付して前記記憶部に記憶する、
請求項１に記載の鍵共有装置。
【請求項４】
前記制御部は、優先度を付して前記結果情報を前記記憶部に記憶し、
複数の前記個別処理部に含まれる第１個別処理部は、複数の前記個別処理部に含まれる第２個別処理部の結果情報のうち、前記優先度が他の結果情報より大きい結果情報を前記記憶部から読み出し、読み出した結果情報を用いて、対応する前記個別処理を実行する、
請求項１に記載の鍵共有装置。
【請求項５】
前記制御部は、前記結果情報の優先度が、前記記憶部の空き容量に応じて変更される第２閾値より大きい場合に、前記優先度を付して前記結果情報を前記記憶部に記憶し、前記優先度が前記第２閾値以下の場合に、前記結果情報を破棄する、
請求項１に記載の鍵共有装置。
【請求項６】
前記制御部は、複数の記憶部のうち、前記結果情報の優先度に応じて定められる記憶部に、前記結果情報を記憶する、
請求項１に記載の鍵共有装置。
【請求項７】
前記制御部は、前記結果情報の優先度の順に並び替えて、前記結果情報を前記記憶部に記憶する、
請求項１に記載の鍵共有装置。
【請求項８】
前記優先度は、通信路のエラーレート、通信路の処理速度、前記暗号鍵の単位時間当たりの生成量の推定値、および、前記個別処理の処理速度のうち１以上に応じて定められる、
請求項３から７のいずれか１項に記載の鍵共有装置。
【請求項９】
前記制御部は、前記記憶部の空き容量が第１閾値より小さい場合に、前記個別処理の実行を開始せず、前記記憶部の空き容量が前記第１閾値以上の場合に、前記個別処理の実行を開始する、
請求項１に記載の鍵共有装置。
【請求項１０】
複数の前記個別処理部は、
前記他の鍵共有装置との間で、量子通信路を介して光子を送受信する量子通信部と、
前記光子の情報からふるい鍵を生成するシフティング部と、
前記ふるい鍵の誤りを訂正して訂正鍵を生成する誤り訂正部と、
前記訂正鍵の安全性を高めた暗号鍵を生成する秘匿性増強部と、
のうち少なくとも１つを含む、
請求項１に記載の鍵共有装置。
【請求項１１】
第１鍵共有装置と、第２鍵共有装置と、を備え、
前記第１鍵共有装置は、
前記第２鍵共有装置との間で量子鍵配送により共有する暗号鍵を生成する処理に含まれる複数の個別処理のうちいずれかをそれぞれ実行する複数の個別処理部を備え、
前記個別処理部は、
前記個別処理の結果、および、前記結果を識別する識別情報の少なくとも一方である結果情報を記憶する記憶部の空き状況に応じて、対応する前記個別処理の実行を制御する制御部を備える、
鍵共有システム。
【請求項１２】
他の鍵共有装置との間で量子鍵配送により共有する暗号鍵を生成する処理に含まれる複数の個別処理のうちいずれかをそれぞれ実行する複数の個別処理ステップを含み、
前記個別処理ステップは、
前記個別処理の結果、および、前記結果を識別する識別情報の少なくとも一方である結果情報を記憶する記憶部の空き状況に応じて、対応する前記個別処理の実行を制御する制御ステップを含む、
鍵共有方法。
【請求項１３】
コンピュータを、
他の鍵共有装置との間で量子鍵配送により共有する暗号鍵を生成する処理に含まれる複数の個別処理のうちいずれかをそれぞれ実行する複数の個別処理部として機能させ、
前記個別処理部は、
前記個別処理の結果、および、前記結果を識別する識別情報の少なくとも一方である結果情報を記憶する記憶部の空き状況に応じて、対応する前記個別処理の実行を制御する制御部を備える、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、鍵共有装置、鍵共有システム、鍵共有方法およびプログラムに関する。
【背景技術】
【０００２】
光ファイバーにより接続された送信装置と、受信装置と、の間で連続的に送信された単一光子を利用して、安全に暗号鍵を共有する量子鍵配送（ＱＫＤ：Quantum  Key  Distribution）技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４０１５３８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
共有する暗号鍵の単位時間あたりの量は、セキュアキーレートと呼ばれ、量子暗号通信システムの動作速度性能に相当する。多くの暗号鍵を利用できる方が、より高速、かつ、安全な暗号データ通信ができる。このため、セキュアキーレートがより大きい、すなわち、より高性能な量子暗号通信システムが求められている。
【課題を解決するための手段】
【０００５】
実施形態の鍵共有装置は、複数の個別処理部を備える。個別処理部は、他の鍵共有装置との間で量子鍵配送により共有する暗号鍵を生成する処理に含まれる複数の個別処理のうちいずれかをそれぞれ実行する。個別処理部は、制御部を備える。制御部は、個別処理の結果、および、結果を識別する識別情報の少なくとも一方である結果情報を記憶する記憶部の空き状況に応じて、対応する個別処理の実行を制御する。
【図面の簡単な説明】
【０００６】
【図１】ＱＫＤに含まれる各プロセスの例を示す図。
【図２】第１の実施形態にかかる鍵共有システムのブロック図。
【図３】第１の実施形態の個別処理部のブロック図。
【図４】第１の実施形態におけるフロー制御処理のフローチャート。
【図５】プロセス間でのデータ共有方法の一例を示す図。
【図６】第２の実施形態にかかる鍵共有装置のブロック図。
【図７】第２の実施形態の個別処理部のブロック図。
【図８】第２の実施形態におけるフロー制御処理のフローチャート。
【図９】第２の実施形態でのデータの破棄方法の一例を示す図。
【図１０】エラーレートとセキュアキーレートの関係の一例を示す図。
【図１１】変形例１によるフロー制御を説明するための図。
【図１２】変形例２によるフロー制御を説明するための図。
【図１３】変形例３によるフロー制御を説明するための図。
【図１４】第３の実施形態にかかる鍵共有装置のブロック図。
【図１５】第３の実施形態の個別処理部のブロック図。
【図１６】第３の実施形態におけるフロー制御処理のフローチャート。
【図１７】変形例５によるデータ記憶方法の一例を示す図。
【図１８】変形例６によるデータ記憶方法の一例を示す図。
【図１９】第１〜第３の実施形態にかかる鍵共有装置のハードウェア構成図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、この発明にかかる鍵共有装置の好適な実施形態を詳細に説明する。
【０００８】
（ＱＫＤ概要）
最初に、量子暗号通信システムの概要について説明する。量子暗号通信システムは、送信装置および受信装置によって構成される。送信装置は光ファイバーリンク上で光子を送信し、受信装置はこの光子を受信して検出する。この処理を量子通信と称する。その後、送信装置と受信装置が相互に制御情報を交換することによって、送信装置と受信装置との間で暗号鍵が共有される。この処理をシフティング処理と称する。
【０００９】
共有された暗号鍵情報をもとに、誤り訂正処理（ＥＣ、Error  Correction）によって、送信装置と受信装置との間で生じた暗号鍵情報の誤りが修正される。さらに、暗号鍵情報のうち、盗聴者によって盗聴されたかもしれない情報を打ち消すための情報圧縮に相当する秘匿性増強処理（ＰＡ、Privacy  Amplification）が実行される。これにより、最終的に、送信装置と受信装置は盗聴されていないことが保証された暗号鍵を共有することができる。
【００１０】
以上のような技術が、ＱＫＤにより実現できる。共有された暗号鍵は、送信装置と受信装置との間、または、それぞれの装置に接続されたアプリケーション間で暗号データ通信を行う際に利用される。
【００１１】
ＱＫＤでは、暗号鍵を共有するために利用される量子は、観測されることで状態が変化する、量子力学の基本原理の一つである不確定原理を持っている。この性質により、送信装置が送信した暗号鍵の情報を含む量子を量子通信路上で盗聴者が観測すると、量子の状態が変化し、量子を受け取った受信装置は、盗聴者に量子を観測されたことを知ることができる。その際、量子状態の変化は送信装置と受信装置との間のリンクの量子ビット誤り率（ＱＢＥＲ、Quantum  Bit  Error  Rate）として現れる。盗聴者が量子を盗聴しようとすると、量子の状態が変化し、ＱＢＥＲが大きくなるため、受信装置と送信装置は盗聴者の存在を知ることができる。
【００１２】
（性能、セキュアキーレート）
上記のように、共有する暗号鍵の単位時間あたりの量は、セキュアキーレートと呼ばれる。キュアキーレートが大きい方がより高性能な量子暗号通信システムであると言える。セキュアキーレートは、量子通信や古典通信のときに盗聴者に与えた情報量を差し引いて算出される。例えば、量子通信路で生じたエラーは、ノイズによるエラーであっても盗聴者による盗聴とみなされ、そのエラーを示す情報量（量子通信路のエラーレートなど）がセキュアキーレートから差し引かれる。その他にも、誤り訂正処理でふるい（篩）鍵の誤りビットを訂正するときに古典通信路で送信装置と受信装置の間で送受信する情報の通信量も、盗聴者に盗み取られているとみなされ、セキュアキーレートから差し引かれる。
【００１３】
このように、量子暗号通信システムの性能はセキュアキーレートで評価できる。セキュアキーレートは、量子通信路のエラーレートや誤り訂正処理の通信量などから算出される。
【００１４】
（フロー制御）
図１は、ＱＫＤに含まれる各プロセスの例を示す図である。図１に示すように、ＱＫＤでは、量子通信処理、シフティング処理、誤り訂正処理（ＥＣ）、秘匿性増強処理（ＰＡ）、および、暗号通信処理が実行される。
【００１５】
量子通信処理では、例えば、乱数によって発生させたビット情報である光子ビット列を基に、ランダムに選択した基底により生成した基底情報（送信基底）に基づく偏光状態となるように生成した単一光子から構成される光子列が、量子通信路を介して、他の鍵共有装置に送信される。他の鍵共有装置は、ＱＫＤにより暗号鍵を共有する相手となる装置である。光子情報は、例えば、光子ビット列および送信基底などである。
【００１６】
ＱＫＤでは、例えば、量子状態をエンコードした後のビットをシフティング処理、ＥＣ、および、ＰＡの順に処理することで、暗号データ通信に利用する最終的な暗号鍵が生成される。
【００１７】
このとき暗号鍵を生成するためのデータを各プロセスで受け渡しながら暗号通信に利用する最終的な暗号鍵が生成される。各プロセスがデータを処理する順番やインターフェースが異なると、送信者と受信者の間の鍵が一致しない恐れがある。そこで、例えば各プロセスの間で受け渡すデータを蓄積する記憶部（記憶領域）を用意してＦＩＦＯ（First  In  First  Out）を利用する方法が考えられる。
【００１８】
ＦＩＦＯを利用する場合の例について説明する。ＦＩＦＯとは先入れ先出し方式とも言われ、先に入ったデータを先に出して、後に入ったデータは先に入ったデータより後に出す方法であり、データを出し入れする順序を定めたものである。シフティング処理で処理されたふるい鍵は、ＦＩＦＯ方式に従う記憶部（ＦＩＦＯメモリ）に挿入される。シフティング処理は、次のふるい鍵の生成のための処理に移る。シフティング処理によってふるい鍵が挿入されたＦＩＦＯメモリは、後段のプロセスであるＥＣからも参照できる。ＥＣでは、シフティング処理によりＦＩＦＯメモリに挿入されたふるい鍵が読み取られ、読み取られたふるい鍵を用いて訂正鍵が生成される。訂正鍵は、さらに別のＦＩＦＯメモリに挿入される。ＥＣは、次のふるい鍵を読み取って次の訂正鍵を生成するための処理に移る。訂正鍵が挿入されたＦＩＦＯメモリは、後段のプロセスであるＰＡからも参照できる。ＰＡでは、ＥＣによりＦＩＦＯメモリに挿入された訂正鍵が読み取られ、読み取られた訂正鍵を用いて暗号鍵が生成される。このようにして、シフティング処理、ＥＣ、および、ＰＡの各プロセスの間に順序を守る中間バッファ（ＦＩＦＯメモリ）が用意され、各プロセスが順次処理される。
【００１９】
シフティング処理、ＥＣ、および、ＰＡの処理速度が異なる場合、各プロセスでビットデータが生成できたときに順次渡していく方法では、いずれかのプロセスの処理速度が遅いと、このプロセスが全体の暗号鍵の生成速度を律速し、セキュアキーレートの低下につながる。また、各プロセスの間にデータ蓄積用の記憶領域を用意した場合であっても、各プロセスの処理速度が異なる場合は、記憶領域の上限を超えるなどのおそれがある。記憶領域の上限の監視も、送信装置と受信装置で同じように制御しなければ、同期を正確に取ることは難しい。このため、暗号鍵が送信装置と受信装置で異なったり、最終的に暗号鍵が生成されなかったりする問題が発生し、セキュアキーレートの低下につながる。このように、ＱＫＤの各プロセスで処理されるデータを、効率を下げずにプロセス間で受け渡す方法が必要となる。
【００２０】
ＱＫＤの処理速度が遅く、暗号鍵が不足する場合を考慮した技術は存在するが、この技術では、ＱＫＤの処理速度が速く、生成した鍵を保存できなくなる状況については考慮されていない。そこで以下の実施形態では、中間鍵を保存する記憶領域の空きがなくなったときにも、システムの性能、すなわち、セキュアキーレートを落とさずに高速にＱＫＤを行えるようなフロー制御を可能とする。
【００２１】
実施形態の鍵共有装置は、他の鍵共有装置との間で共有する暗号鍵を生成する処理に含まれる複数の個別処理のうちいずれかをそれぞれ実行する複数の個別処理部を備える。例えば、図１に示す量子通信処理、シフティング処理、誤り訂正処理（ＥＣ）、秘匿性増強処理（ＰＡ）、および、暗号通信処理が、それぞれ個別処理に相当する。各個別処理部は、対応する個別処理の結果であるデータ（結果情報）を識別する識別情報を記憶する記憶部の空き容量に応じて、対応する個別処理の実行を制御する。
【００２２】
複数の個別処理のうち少なくとも一部でフロー制御を実行すればよい。以下では、シフティング処理および誤り訂正処理でフロー制御を実行する場合を例に説明する。以下、各実施形態での処理の制御の詳細について説明する。
【００２３】
（第１の実施形態）
第１の実施形態にかかる鍵共有装置は、ＱＫＤの各プロセスの間に用意した記憶領域に空きがない状態となったときに、新たに保存しようとするデータ（結果情報）を破棄する。新たに保存しようとするデータ（結果情報）を破棄することで、記憶領域の上限を超えることを避け、送信装置と受信装置の同期がずれることも避けられる。
【００２４】
図２は、第１の実施形態にかかる鍵共有システムの構成の一例を示すブロック図である。図２に示すように、第１の実施形態にかかる鍵共有システムは、鍵共有装置１００と、鍵共有装置２００と、を備えている。鍵共有装置１００と、鍵共有装置２００とは、量子通信路３０１および古典通信路３０２により接続される。
【００２５】
量子通信路３０１は、０または１を示す単一光子から構成される光子列を送信する。量子通信路３０１は、例えば光ファイバーリンクである。古典通信路３０２はデータを送信する。古典通信路３０２は、例えば、シフティング処理、誤り訂正処理および秘匿性増強処理の制御データを送信する。古典通信路３０２は、有線でも無線でもよいし、有線と無線とを組み合わせて実現されていてもよい。古典通信路３０２は、例えばイーサネット（登録商標）である。
【００２６】
以下では、鍵共有装置１００が送信装置として機能し、鍵共有装置２００が受信装置として機能する場合を例に説明する。鍵共有装置１００および鍵共有装置２００が送信装置および受信装置の両方の機能を備えるように構成してもよい。
【００２７】
鍵共有装置１００は、量子通信部１０１と、シフティング部１０２と、誤り訂正部１０３と、秘匿性増強部１０４と、記憶部１３１、１３２と、ビット列記憶部１２１と、を備えている。
【００２８】
量子通信部１０１は、量子通信処理を実行する。例えば量子通信部１０１は、鍵共有装置２００との間で光子情報を送受信し、光子から取り出したビットデータ、選択した基底の情報、および、光子の送信に利用したパルスの情報などを、ビット列記憶部１２１に保存する。
【００２９】
シフティング部１０２は、シフティング処理を実行する。例えばシフティング部１０２は、ビット列記憶部１２１に記憶されたビット列の情報や基底の情報などを取り出し、基底の情報をもとにビット列の情報をふるいにかけて、鍵共有装置１００と鍵共有装置２００との間で同じビット列を得るためのシフティング処理を行う。シフティング部１０２は、抽出されたビット列（鍵ビット列）をビット列記憶部１２１に記憶する。
【００３０】
誤り訂正部１０３は、誤り訂正処理を実行する。例えば誤り訂正部１０３は、ビット列記憶部１２１に記憶された、シフティング処理後の共有ビット列の情報を取り出し、共有ビット列に含まれる誤りを訂正する。誤り訂正部１０３は、ビット列記憶部１２１に訂正後のビット列を記憶する。
【００３１】
秘匿性増強部１０４は、秘匿性増強処理を実行する。例えば秘匿性増強部１０４は、ビット列記憶部１２１に蓄積された誤り訂正処理後の共有ビット列の情報を取り出し、鍵共有装置２００との間で秘匿性増強処理を行う。秘匿性増強部１０４は、ビット列記憶部１２１に処理後のビット列を記憶する。
【００３２】
記憶部１３１は、シフティング部１０２と誤り訂正部１０３の間に設置される。記憶部１３２は、誤り訂正部１０３と秘匿性増強部１０４の間に設置される。記憶部１３１、１３２は、ＱＫＤを行う際の鍵データを受け渡すフロー制御を行うために、鍵データを記憶する。他の個別処理部でフロー制御を行う場合は、その個別処理部と、後段の処理部との間に、鍵データを記憶する記憶部を設置すればよい。
【００３３】
記憶部１３１、１３２は、ビット列記憶部１２１に保存される鍵データのファイルなどを、鍵データを識別する識別情報（ＩＤ）とともにビット列記憶部１２１の代わりに保存してもよいし、ビット列記憶部１２１に保存された鍵データの実体を識別する識別情報だけを保存してもよい。すなわち、記憶部１３１、１３２が記憶する結果情報は、鍵データのＩＤのみでもよいし、鍵データのＩＤと鍵データの実体の両方であってもよい。記憶部１３１、１３２に保存された、鍵データの実体、または、識別情報をもとにＱＫＤを行う際のフロー制御が行われる。
【００３４】
ビット列記憶部１２１は、量子通信部１０１により得られるビット列などの、鍵共有装置２００との間の各処理で取得および生成した情報を記憶する。これらの情報は、ビット列記憶部１２１を経由して他の構成要素（他の個別処理部など）で利用してもよいし、構成要素間で直接情報を受け渡してもよい。
【００３５】
上記各部（量子通信部１０１、シフティング部１０２、誤り訂正部１０３、および、秘匿性増強部１０４）は、例えば、１または複数のプロセッサにより実現される。例えば上記各部は、ＣＰＵ（Central  Processing  Unit）などのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のＩＣ（Integrated  Circuit）などのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち１つを実現してもよいし、各部のうち２以上を実現してもよい。
【００３６】
各記憶部（記憶部１３１、１３２、および、ビット列記憶部１２１）は、ＨＤＤ（Hard  Disk  Drive）、光ディスク、メモリカード、ＲＡＭ（Random  Access  Memory）などの一般的に利用されているあらゆる記憶媒体により構成することができる。各記憶部は、物理的に異なる記憶媒体としてもよいし、物理的に同一の記憶媒体の異なる記憶領域として実現してもよい。さらに記憶部のそれぞれは、物理的に異なる複数の記憶媒体により実現してもよい。
【００３７】
次に、受信装置として機能する鍵共有装置２００の構成例について説明する。図２に示すように、鍵共有装置２００は、量子通信部２０１と、シフティング部２０２と、誤り訂正部２０３と、秘匿性増強部２０４と、ビット列記憶部２２１と、を備えている。
【００３８】
鍵共有装置２００は、鍵共有装置１００の各部と通信し、ＱＫＤの各プロセス（個別処理）を実行する。すなわち、量子通信部２０１、シフティング部２０２、誤り訂正部２０３、および、秘匿性増強部２０４は、それぞれ鍵共有装置１００の量子通信部１０１、シフティング部１０２、誤り訂正部１０３、および、秘匿性増強部１０４に対応する個別処理を実行する。ビット列記憶部２２１は、鍵共有装置１００との間の各処理で取得および生成した情報を記憶する。
【００３９】
次に、個別処理部の詳細について説明する。図３は、第１の実施形態の個別処理部５００の機能構成例を示すブロック図である。本実施形態では、シフティング部１０２および誤り訂正部１０３が個別処理部５００に相当する。シフティング部１０２および誤り訂正部１０３は、それぞれ図３に示すような機能を備えている。図３に示すように、個別処理部５００は、監視部５０１と、制御部５０２と、を備えている。
【００４０】
監視部５０１は、後段の処理部との間に設置される記憶部（記憶部１３１または記憶部１３２）に保存される鍵データの実体、または、識別情報を監視する。監視部５０１は、ＱＫＤを行う際の鍵データを受け渡すフロー制御を行うために、記憶部に保存される鍵データの実体、識別情報が保存されていない状態か、および、記憶領域に空きがない状態か、などを監視する。監視部５０１は、前段の処理部との間に設置される記憶部をさらに監視してもよい。
【００４１】
制御部５０２は、監視部５０１で監視している記憶部の状態に応じて必要な制御を行う。例えば制御部５０２は、後段の処理部との間に設置される記憶部に空きがある場合は、新たに保存しようとするデータ（結果情報）をこの記憶部に保存する。前段の処理部との間に設置される記憶部に保存される鍵データの実体、または、識別情報が空である場合は、制御部５０２は、前段の個別処理がデータ（結果情報）を保存するのを待つようにフロー制御を行う。また制御部５０２は、後段の処理部との間に設置される記憶部に保存される鍵データの実体、または、識別情報が上限まで記憶されている場合は、個別処理によって得られたデータ（結果情報）を破棄するようにフロー制御を行う。データ（結果情報）が上限まで記憶されているかは、例えば、記憶部の空き容量が閾値（第１閾値）より小さいかによって判定されてもよい。
【００４２】
次に、このように構成された第１の実施形態にかかる鍵共有装置１００によるフロー制御処理について図４を用いて説明する。図４は、第１の実施形態におけるフロー制御処理の一例を示すフローチャートである。なお図４は、誤り訂正処理でのフロー制御を例に説明する。他の個別処理についても同様の手順を適用できる。
【００４３】
誤り訂正部１０３は、誤り訂正処理を実行する（ステップＳ１０１）。誤り訂正部１０３の監視部５０１は、記憶部１３２に空き領域があるか否かを判定する（ステップＳ１０２）。空き領域がある場合（ステップＳ１０２：Ｙｅｓ）、制御部５０２は、誤り訂正処理が完了した鍵データの識別情報（ＩＤ）を記憶部１３２に記憶する（ステップＳ１０３）。制御部５０２は、ＩＤ以外のデータ（関連するパラメータ、エラーレートなど）をＩＤとともに記憶部１３２に記憶してもよい。
【００４４】
空き領域がない場合（ステップＳ１０２：Ｎｏ）、制御部５０２は、誤り訂正処理により得られたデータ（結果情報）を破棄する（ステップＳ１０４）。
【００４５】
図５は、プロセス間でのデータ共有方法の一例を示す図である。例として、ＥＣとＰＡの間でデータ（結果情報）を共有することを考える。誤り訂正部１０３は、例えばＥＣを繰り返し行うモジュールを含み、そのモジュールがＥＣを完了すると、訂正鍵のファイルを出力する。訂正鍵のファイルは、例えばビット列記憶部１２１に記憶される。
【００４６】
誤り訂正部１０３はファイルを出力するとともに、処理を完了したファイルのＩＤと関連するパラメータやデータ（エラーレートなど）を記憶部１３２に保存する。このとき、記憶部１３２の記憶領域に空きがなければ、誤り訂正部１０３（制御部５０２）は、そのデータ（結果情報）を破棄する。記憶領域に空きがある場合に、誤り訂正部１０３（制御部５０２）は、ＩＤなどを記憶領域に書き込む。
【００４７】
後段の秘匿性増強部１０４は、同様にＰＡを繰り返し行うモジュールを含む。このモジュールは常に記憶部１３２の記憶領域を監視する。秘匿性増強部１０４は、記憶領域が空ならば、ＥＣが完了したＩＤが記憶されるのを待つ。秘匿性増強部１０４は、記憶領域にデータ（結果情報）があれば、ＩＤを取り出してＰＡを行う。このとき、誤り訂正部１０３は、処理が完了した順序で記憶領域にＩＤを保存する。秘匿性増強部１０４は、例えば記憶領域に保存された順序でＩＤを取り出し、そのＩＤの訂正鍵のファイルを読み込んで処理を行い、最終的に暗号鍵を生成する。
【００４８】
このように、秘匿性増強部１０４が秘匿性増強処理を行うために記憶部１３２からデータ（結果情報）を取り出すときには、ＦＩＦＯの特徴を活かして、先に挿入されたデータ（結果情報）から処理してもよい。図５の例では、秘匿性増強部１０４は、先に挿入された［ＩＤ：００１］のデータ（結果情報）を取り出して秘匿性増強処理を行う。
【００４９】
このようにして、各プロセスの間で記憶領域を用いてデータ（結果情報）が受け渡される。記憶領域に空きがないことを検知することで、記憶領域の上限を超えることを避け、鍵共有装置２００との間の同期がずれて暗号鍵が一致しないことを避けられる。なお、ＩＤだけでなくエラーレートなどのデータも記憶されるが、本実施形態では、このようなデータを参照してフロー制御を実行する必要はない。
【００５０】
従来技術では、各処理部の間でデータのフロー制御を行うような機能がないため、各処理部が各々の処理速度で処理を行って記憶部に鍵データを保存していた。また従来技術では、記憶部の記憶領域に空きがなくなったときの処理については考慮されていない。このため、送信装置と受信装置の間での同期が取られず、保存している鍵データのうち古い鍵データに上書きしたり、鍵データを破棄したりして、正しく暗号鍵ができなかったり、セキュアキーレートが劣化したりする場合があった。
【００５１】
第１の実施形態にかかる鍵共有装置１００は、記憶部１３１、１３２、監視部５０１、および、制御部５０２などを用いることにより、ＱＫＤを行う際の鍵データを受け渡すフロー制御を行う。鍵共有装置１００は、記憶部１３１、１３２に空きがなくなったこと、および、データ（結果情報）が空になったことなどを監視し、記憶部１３１、１３２に空きがないときには、新たに保存しようとするデータ（結果情報）を破棄する。これにより、記憶領域の上限を超えることに起因する同期のずれなどを回避することが可能となる。
【００５２】
（第２の実施形態）
新たに保存しようとするデータ（結果情報）を破棄すると、そのデータ（結果情報）の分だけ、最終的に生成される暗号鍵も減り、セキュアキーレートが落ちる可能性がある。そこで第２の実施形態では、新たに保存しようとするデータ（結果情報）を破棄するのではなく、暗号鍵を生成するのによい条件のデータ（結果情報）を優先的に保存し、悪い条件のデータ（結果情報）を破棄するように制御する。暗号鍵を生成するのによい条件であるかは、例えばエラーレートなどのパラメータによって判定される。
【００５３】
例えば、保存しているデータ（結果情報）と新たに保存しようとするデータ（結果情報）の間でエラーレートなどのパラメータが比較される。記憶領域に既に保存されているデータ（結果情報）が、新たに保存しようとするデータ（結果情報）よりも悪いパラメータを有する場合は、悪いパラメータを有するデータ（結果情報）が削除され、空いた領域に新たに保存しようとするデータ（結果情報）が保存される。新たに保存しようとするデータ（結果情報）のパラメータが、既に保存されているデータ（結果情報）のパラメータよりも悪い場合は、新たに保存しようとするデータ（結果情報）が破棄され、記憶領域は更新されない。
【００５４】
このような構成により、鍵共有装置間の同期がずれることによるセキュアキーレートの劣化を抑えつつ、セキュアキーレートに関連するパラメータがよいデータ（結果情報）を優先的に保存することでセキュアキーレートをより向上させることができる。
【００５５】
図６は、第２の実施形態にかかる鍵共有装置１００−２の構成の一例を示すブロック図である。図６に示すように、鍵共有装置１００−２は、量子通信部１０１と、シフティング部１０２−２と、誤り訂正部１０３−２と、秘匿性増強部１０４−２と、記憶部１３１−２、１３２−２と、ビット列記憶部１２１と、を備えている。
【００５６】
図７は、第２の実施形態の個別処理部５００−２の機能構成例を示すブロック図である。本実施形態では、シフティング部１０２−２および誤り訂正部１０３−２が個別処理部５００−２に相当する。シフティング部１０２−２および誤り訂正部１０３−２は、それぞれ図７に示すような機能を備えている。図７に示すように、個別処理部５００−２は、監視部５０１と、制御部５０２−２と、を備えている。
【００５７】
第２の実施形態では、個別処理部５００−２（シフティング部１０２−２、誤り訂正部１０３−２）に含まれる制御部５０２−２、秘匿性増強部１０４−２、および、記憶部１３１−２、１３２−２の機能が第１の実施形態と異なっている。その他の構成および機能は、第１の実施形態にかかる鍵共有装置１００のブロック図である図２と同様であるので、同一符号を付し、ここでの説明は省略する。
【００５８】
記憶部１３１−２、１３２−２は、条件を判定するためのデータ（優先度）をさらに記憶する点が、第１の実施形態の記憶部１３１、１３２と異なっている。
【００５９】
制御部５０２−２は、優先度も考慮してフロー制御を行う点が、第１の実施形態の制御部５０２と異なっている。例えば制御部５０２−２は、個別処理で得られたデータ（識別情報などの結果情報）に優先度を付して記憶部に記憶する。また制御部５０２−２は、記憶部に空きがない（記憶部の空き容量が閾値より小さい）場合に、優先度が他のデータ（結果情報）より小さいデータ（結果情報）を記憶部から削除する。また、前段の処理部との間の記憶部に優先度が付されたデータ（結果情報）が記憶されている場合は、制御部５０２−２は、前段の処理部の結果得られるデータ（結果情報）のうち、優先度が他のデータ（結果情報）より大きいデータ（結果情報）を記憶部から読み出し、読み出したデータ（結果情報）を用いて、対応する個別処理を実行する。
【００６０】
秘匿性増強部１０４−２は、優先度を考慮して処理対象とするデータ（結果情報）を記憶部１３２−２から読み出す点が、第１の実施形態の秘匿性増強部１０４と異なっている。
【００６１】
次に、このように構成された第２の実施形態にかかる鍵共有装置１００−２によるフロー制御処理について図８を用いて説明する。図８は、第２の実施形態におけるフロー制御処理の一例を示すフローチャートである。なお図８は、誤り訂正処理でのフロー制御を例に説明する。他の個別処理についても同様の手順を適用できる。
【００６２】
誤り訂正部１０３−２は、誤り訂正処理を実行する（ステップＳ２０１）。誤り訂正部１０３−２の監視部５０１は、記憶部１３２−２に空き領域があるか否かを判定する（ステップＳ２０２）。空き領域がある場合（ステップＳ２０２：Ｙｅｓ）、制御部５０２−２は、誤り訂正処理が完了した鍵データの識別情報（ＩＤ）に優先度を付して記憶部１３２−２に記憶する（ステップＳ２０３）。
【００６３】
空き領域がない場合（ステップＳ２０２：Ｎｏ）、制御部５０２−２は、記憶部１３２−２に記憶されているデータ（結果情報）、および、新たに保存しようとするデータ（結果情報）のうち、優先度が低いデータ（結果情報）を破棄（削除）する（ステップＳ２０４）。記憶部１３２−２に記憶されているデータ（結果情報）を削除した場合は、制御部５０２−２は、削除により確保される記憶部１３２−２の空き領域に、新たに保存しようとするデータ（結果情報）を記憶する（ステップＳ２０３）。なお、新たに保存しようとするデータ（結果情報）を破棄する場合は、制御部５０２−２は、記憶部１３２−２にデータ（結果情報）を保存しない。
【００６４】
図９は、本実施形態でのデータ（結果情報）の破棄方法の一例を示す図である。図９は、誤り訂正部１０３−２と秘匿性増強部１０４−２の間でデータ（結果情報）を共有する例を示す。
【００６５】
誤り訂正部１０３−２は、誤り訂正処理を完了すると訂正鍵のファイルを出力する。このとき誤り訂正部１０３−２は、ファイルを例えばビット列記憶部１２１に記憶するとともに、ファイルのＩＤ、関連するパラメータ、および、データ（エラーレートなど）を記憶部１３２−２に保存する。誤り訂正部１０３−２は、例えばエラーレートなどに応じた優先度を付けて記憶部１３２−２にデータ（結果情報）を保存する。後段の処理部である秘匿性増強部１０４−２は、付与された優先度が高いデータ（結果情報）を優先して記憶部１３２−２からデータ（結果情報）を取り出す。
【００６６】
誤り訂正部１０３−２は、記憶部１３２−２に空きがないときには、優先度の低いデータ（結果情報）を破棄する。図９に示すように、誤り訂正部１０３−２からデータ（結果情報）を受け取り、秘匿性増強部１０４−２がデータ（結果情報）を取り出す記憶部１３２−２を例に説明する。記憶部１３２−２には、既に誤り訂正処理が完了した以下のデータ（結果情報）が保存され、記憶領域に空きがないと仮定する。
・［ＩＤ：０、エラーレート：５％］
・［ＩＤ：１、エラーレート：２％］
・［ＩＤ：２、エラーレート：４％］
・［ＩＤ：３、エラーレート：２％］
・［ＩＤ：４、エラーレート：３％］
・［ＩＤ：５、エラーレート：５％］
・［ＩＤ：６、エラーレート：６％］
・［ＩＤ：７、エラーレート：２％］
【００６７】
これらのデータ（結果情報）の優先度は、例えばエラーレートに応じて決定される。エラーレートの値が悪いほどシステムの性能であるセキュアキーレートは低くなるため、優先度は低く設定される。エラーレートの値がよいほどセキュアキーレートは高くなるため、優先度は高く設定される。例えば優先度をエラーレートの値と同じと定めると、［ＩＤ：０］はエラーレート５％なので優先度は５番目となり、［ＩＤ：１］はエラーレート２％なので優先度は２番目となり、［ＩＤ：２］はエラーレート４％なので優先度は４番目となり、［ＩＤ：３］はエラーレート２％なので優先度は２番目となり、［ＩＤ：４］はエラーレート３％なので優先度は３となり、［ＩＤ：５］はエラーレート５％なので優先度は５番目となり、［ＩＤ：６］はエラーレート６％なので優先度は６番目となり、［ＩＤ：７］はエラーレート２％なので優先度は２番目となる。
【００６８】
新たに誤り訂正部１０３−２が処理を完了し、［ＩＤ：８、エラーレート：３％］のデータ（結果情報）、すなわち、優先度３のデータ（結果情報）を記憶部１３２−２に保存しようとする場合を考える。既に記憶部１３２−２の記憶領域に空きがないため、誤り訂正部１０３−２（制御部５０２−２）は、最も低い優先度６を有する［ＩＤ：６］のデータ（結果情報）を記憶部１３２−２から破棄（削除）して空き領域を確保する。その後誤り訂正部１０３−２は、［ＩＤ：８］のデータ（結果情報）を記憶部１３２−２に保存する。
【００６９】
記憶部１３２−２に空きがないときに新たにデータ（結果情報）を挿入するとき、新たに挿入されるデータ（結果情報）の優先度が記憶部１３２−２に保存されているすべてのデータ（結果情報）の優先度よりも低い場合には、制御部５０２−２は、新たに挿入されるデータ（結果情報）を破棄する。一方、新たに挿入されるデータ（結果情報）が記憶部１３２−２に保存されているいずれかのデータ（結果情報）の優先度よりも高い場合には、制御部５０２−２は、優先度の低いデータ（結果情報）を記憶部１３２−２から破棄して、新たに挿入されるデータ（結果情報）を記憶部１３２−２に保存する。このようにして制御部５０２−２は、記憶部１３２−２に保存されているデータ（結果情報）として優先度が高いデータ（結果情報）が残るように制御する。
【００７０】
秘匿性増強部１０４−２は、秘匿性増強処理を行うために記憶部１３２−２からデータ（結果情報）を取り出すときには、例えば付与された優先度の高いデータ（結果情報）から取り出す。図９の例では、秘匿性増強部１０４−２は、最も優先度が高い［ＩＤ：１、エラーレート：２％］のデータ（結果情報）を取り出して秘匿性増強処理を実行する。
【００７１】
優先度が同じデータ（結果情報）に関しては、先に挿入されたデータ（結果情報）を選択してもよいし、後に挿入されたデータ（結果情報）を選択してもよいし、他のパラメータを考慮した上で選択してもよい。優先度の高いデータ（結果情報）から先に秘匿性増強処理を実行する場合、記憶部１３２−２に保存されたデータ（結果情報）の中でエラーレートが低いデータ（結果情報）から順番に処理がされ、エラーレートが高いデータ（結果情報）は記憶領域に残ったり、破棄されるデータ（結果情報）の候補になったりする。エラーレートが低いデータ（結果情報）が優先的に処理されるので、算出されるセキュアキーレートが高くなるデータ（結果情報）から処理されることになり、システム全体としての動作としてセキュアキーレートを高くすることが可能となる。
【００７２】
以下、セキュアキーレートの改善の具体例について説明する。図１０は、エラーレートとセキュアキーレートの関係の一例を示す図である。
【００７３】
例えば、図９と同じデータ（結果情報）が記憶部１３２−２に保存されており、各エラーレートから推定されるセキュアキーレートが図１０に示す値であると仮定する。このとき誤り訂正部１０３−２が、優先度を考慮せずに、新たに挿入しようとするデータ（結果情報）［ＩＤ：８、エラーレート：３％］を破棄するとする。この場合、対応するセキュアキーレートの４０ｋｂ／ｓのセキュアキーレートを破棄することになる。
【００７４】
一方、本実施形態のように、優先度を考慮して［ＩＤ：６、エラーレート：６％］のデータ（結果情報）を破棄すれば、破棄するセキュアキーレートは２０ｋｂ／ｓとなり、セキュアキーレートの劣化を２０（＝４０−２０）ｋｂ／ｓも抑えることができる。このようにして、エラーレートに応じた優先度を付けることでセキュアキーレートの劣化を抑えられる。
【００７５】
これまでは、パラメータとしてエラーレートを例に説明したが、優先度を決める指標は他のパラメータで合ってもよいし、それらの組み合わせであってもよい。暗号鍵を生成するのによい条件のデータ（結果情報）に対して値が大きくなるような指標を優先度としてもよい。例えば、通信状況に応じて値が変化する指標、または、暗号鍵の共有処理の信頼性が高い場合に値が大きくなる指標などを利用できる。優先度は、各通信路のエラーレート、各通信路の処理速度、暗号鍵の単位時間当たりの生成量の推定値、および、個別処理の処理速度のうち１以上に応じて決定されてもよい。以下に、個別処理部ごとに使用可能なパラメータの例を示す。
・量子通信部１０１：光子情報、量子通信の処理速度
・シフティング部１０２−２：光子情報、推定エラーレート、シフティング処理の処理速度
・誤り訂正部１０３−２：エラーレート、漏洩ビット数、誤り訂正処理の処理速度
・各部共通：推定されるセキュアキーレート
【００７６】
データ（結果情報）の保存方法および取り出し方法は上記に限られるものではない。他の方法について以下に説明する。
【００７７】
（変形例１）
変形例１では、記憶領域の空き具合によって、データ（結果情報）を破棄するか保存するかを判定するための閾値を変化させる。例えば制御部５０２−２は、記憶部１３２−２の空き容量に応じて変更される閾値（第２閾値）より優先度が大きい場合に、優先度を付してデータ（結果情報）を記憶部１３２−２に記憶し、優先度が閾値以下の場合にデータ（結果情報）を破棄する。
【００７８】
図１１は、変形例１によるフロー制御を説明するための図である。例えば制御部５０２−２は、記憶部１３２−２の空き容量の割合がＸ％以上の場合はエラーレートがＹ％より小さい、言い換えると、優先度が閾値（第２閾値）より大きい中間データ（結果情報）を記憶部１３２−２に保存する。また制御部５０２−２は、エラーレートがＹ％以上、言い換えると、優先度が閾値（第２閾値）以下の中間データ（結果情報）は破棄する。
【００７９】
制御部５０２−２は、記憶部１３２−２の空き容量の割合がＸ％未満の場合は、エラーレートと比較する閾値をＹ％より小さいＺ％に変更して同様に判定する。これにより、記憶領域に空きがない状態になることを避けつつ、エラーレートなどのパラメータも考慮することができる。
【００８０】
図１１を用いて、Ｘ＝７５、Ｙ＝５、Ｚ＝３が設定される場合を例に説明する。記憶部１３２−２の空き容量が７５（＝Ｘ）％あるときは、記憶領域に空きがない状態になる可能性が小さいため、データ（結果情報）をできるだけ保存するようにする。このため閾値Ｙ＝５％が用いられ、誤り訂正部１０３−２から新たに生成される［ＩＤ：９、エラーレート：４％］のデータ（結果情報）は記憶部１３２−２に保存される。一方、空き容量が１２．５（＜７５＝Ｘ）％となったときは、記憶領域に空きがない状態になる可能性が大きいため、データ（結果情報）をできるだけ破棄するようにする。このため閾値Ｚ＝３％が用いられ、誤り訂正部１０３−２から新たに生成される［ＩＤ：９、エラーレート：４％］のデータ（結果情報）は破棄される。
【００８１】
なお、記憶部１３２−２の空き容量に応じた閾値（第２閾値）の変更方法は上記に限られるものではない。空き容量が大きいほど、できるだけデータ（結果情報）を保存するように閾値を設定する方法であればどのような方法であってもよい。例えば、空き容量に応じて段階的に閾値を変更する方法、および、空き容量の値から算出式により閾値を算出する方法などを用いてもよい。
【００８２】
（変形例２）
変形例２では、複数の記憶領域（記憶部）を用意し、パラメータの値（優先度）に応じてデータ（結果情報）を各記憶領域に割り振る。複数の記憶領域は、物理的に異なる記憶部であってもよいし、物理的に同一の記憶部の異なる領域であってもよい。例えば制御部５０２−２は、複数の記憶領域（記憶部）のうち、優先度に応じて定められる記憶領域（記憶部）にデータ（結果情報）を記憶する。
【００８３】
図１２は、変形例２によるフロー制御を説明するための図である。例えば誤り訂正部１０３−２（制御部５０２−２）は、エラーレートが４％未満のデータ（結果情報）は記憶領域１２０１ａに保存し、エラーレートが４％以上のデータ（結果情報）は記憶領域１２０１ｂに保存する。図１２の例では、誤り訂正部１０３−２は、［ＩＤ：８、エラーレート：３％］のデータ（結果情報）を記憶領域１２０１ａに保存する。記憶領域の個数は２に限られず、３以上の記憶領域を用いてもよい。
【００８４】
このようにパラメータの値によって記憶領域を分けることで、後段の処理が、取り出すデータ（結果情報）を選択することが容易になる。例えば秘匿性増強部１０４−２は、記憶領域１２０１ａからデータ（結果情報）を優先的に取り出し、記憶領域１２０１ａのデータ（結果情報）がなくなった場合は、記憶領域１２０１ｂのデータ（結果情報）を取り出し、その後、記憶領域１２０１ａにデータ（結果情報）が挿入された場合は、再度、記憶領域１２０１ａからデータ（結果情報）を取り出す、といった方法を採用可能となる。
【００８５】
（変形例３）
変形例３では、パラメータの値（優先度）のよい順序にデータ（結果情報）をソートして記憶部１３２−２に保存し、後段の処理部は、先頭のデータ（結果情報）から順に取り出す。例えば制御部５０２−２は、データ（結果情報）を優先度の順に並び替えて記憶部１３２−２に記憶する。
【００８６】
図１３は、変形例３によるフロー制御を説明するための図である。制御部５０２−２は、生成されたデータ（結果情報）を、パラメータに応じてソートして記憶部１３２−２内で保存する。例えば、誤り訂正部１０３−２（制御部５０２−２）は、［ＩＤ：８、エラーレート：３％］のデータ（結果情報）を挿入するとき、エラーレートに応じてデータ（結果情報）をソートし、先頭から４番目となる位置に記憶する。ソート後のデータ（結果情報）はパラメータがよい順番に並んでいるので、秘匿性増強部１０４−２は先頭からデータ（結果情報）を取り出せばよい。
【００８７】
変形例１〜３（図１１〜図１３）では、パラメータの値自体が優先度として用いられているとも解釈できるが、パラメータの値自体ではない、パラメータの値に応じて決定される優先度を用いるように構成してもよい。
【００８８】
（変形例４）
制御部５０２−２が優先度に応じたデータ（結果情報）の破棄を行わず、前段の処理部による処理結果（結果情報）を優先度に応じて取得する処理のみを実行するように構成してもよい。例えば記憶部１３１−２、１３２−２の記憶容量が十分に大きく、データ（結果情報）を保存できなくなる状況が生じなければ、本変形例のような構成であっても、セキュアキーレートに関連するパラメータがよいデータ（結果情報）を優先的に保存することでセキュアキーレートを向上させることが可能となる。
【００８９】
以上のように、第２の実施形態にかかる鍵共有装置では、エラーレートなどのパラメータに応じた優先度を用いて、優先度が低い（パラメータが悪い）データ（結果情報）を優先して破棄し、優先度が高い（パラメータがよい）データ（結果情報）を優先して保存することができる。また、記憶部の空き容量の割合に応じて保存するデータ（結果情報）のパラメータの閾値を変更することができる。これにより、送信装置と受信装置の間で処理の同期がとれ、さらに、優先度が低いデータ（結果情報）を優先的に破棄することで、セキュアキーレートの劣化を防ぎ、ＱＫＤの鍵生成速度の高速化につなげることが可能となる。すなわち、優先度を考慮せずに破棄したときよりも、効率的に暗号鍵の共有を実現することができ、信頼性を保ちながら安全にプロセス間のデータ（結果情報）の共有を行うことが可能となる。
【００９０】
（第３の実施形態）
上記実施形態では、個別処理部が処理を行った後で、記憶領域に空きがないかどうかを判定し、記憶領域に空きがないときはそれまでに処理したデータ（結果情報）を破棄していた。このような方法では、データ（結果情報）を破棄することによりそれまでの処理が無駄になるとともに、破棄のための処理時間が余計にかかり、セキュアキーレートが低下する可能性がある。
【００９１】
そこで、第３の実施形態の鍵共有装置は、個別処理部が処理を開始する前に記憶領域に空きがないかどうかを確認し、記憶領域に空きがないときは処理を開始せずに、一定時間だけ待って再度、記憶領域を確認する。そして本実施形態の鍵共有装置は、記憶領域に空きがあるときに個別処理を実行し、処理したデータ（結果情報）のファイルを記憶部に保存する。このように構成することで、記憶領域に空きがないときに無駄に処理を行うことを避けることができる。余計な処理時間を掛けずに済むので、セキュアキーレートの劣化を抑えることも可能となる。
【００９２】
図１４は、第３の実施形態にかかる鍵共有装置１００−３の構成の一例を示すブロック図である。図１４に示すように、鍵共有装置１００−３は、量子通信部１０１と、シフティング部１０２−３と、誤り訂正部１０３−３と、秘匿性増強部１０４と、記憶部１３１、１３２と、ビット列記憶部１２１と、を備えている。
【００９３】
図１５は、第３の実施形態の個別処理部５００−３の機能構成例を示すブロック図である。本実施形態では、シフティング部１０２−３および誤り訂正部１０３−３が個別処理部５００−３に相当する。シフティング部１０２−３および誤り訂正部１０３−３は、それぞれ図１５に示すような機能を備えている。図１５に示すように、個別処理部５００−３は、監視部５０１と、制御部５０２−３と、を備えている。
【００９４】
第３の実施形態では、個別処理部５００−３（シフティング部１０２−３、誤り訂正部１０３−３）に含まれる制御部５０２−３の機能が第１の実施形態と異なっている。その他の構成および機能は、第１の実施形態にかかる鍵共有装置１００のブロック図である図２と同様であるので、同一符号を付し、ここでの説明は省略する。
【００９５】
制御部５０２−３は、記憶部１３１、１３２の空き容量が閾値（第１閾値）より小さい場合に個別処理の実行を開始せず、記憶部１３１、１３２の空き容量が閾値以上の場合に個別処理の実行を開始する。
【００９６】
次に、このように構成された第３の実施形態にかかる鍵共有装置１００−３によるフロー制御処理について図１６を用いて説明する。図１６は、第３の実施形態におけるフロー制御処理の一例を示すフローチャートである。なお図１６は、誤り訂正処理でのフロー制御を例に説明する。他の個別処理についても同様の手順を適用できる。
【００９７】
誤り訂正部１０３−３の制御部５０２−３は、記憶部１３２に空き領域があるか否かを判定する（ステップＳ３０１）。空き領域がない場合（ステップＳ３０１：Ｎｏ）、制御部５０２−３は、空き領域が発生するまでステップＳ３０１に戻り処理を繰り返す。制御部５０２−３は、一定時間待機した後にステップＳ３０１の判定処理を実行するように構成してもよい。
【００９８】
空き領域がある場合（ステップＳ３０１：Ｙｅｓ）、制御部５０２−３は、誤り訂正処理を実行する（ステップＳ３０２）。制御部５０２−３は、誤り訂正処理が完了した鍵データの識別情報（ＩＤ）を記憶部１３２に記憶する（ステップＳ３０３）。制御部５０２−３は、ＩＤ以外のデータ（関連するパラメータ、エラーレートなど）をＩＤとともに記憶部１３２に記憶してもよい。記憶部１３１、１３２は、ビット列記憶部１２１に保存される鍵データのファイルなどを、鍵データを識別する識別情報（ＩＤ）とともにビット列記憶部１２１の代わりに保存してもよいし、ビット列記憶部１２１に保存された鍵データの実体を識別する識別情報だけを保存してもよい。
【００９９】
なお後段の秘匿性増強部１０４は、記憶部１３２が空である場合は、誤り訂正部１０３−３により処理が完了したＩＤが蓄積するのを待つ。記憶部１３２にデータ（結果情報）が保存されている場合は、秘匿性増強部１０４は、記憶部１３２からＩＤを取り出し、取り出したＩＤの訂正鍵のファイルを読み込んで秘匿性増強処理を行い、最終的な暗号鍵を生成する。
【０１００】
このように、第３の実施形態にかかる鍵共有装置では、個別処理（誤り訂正処理など）を開始する前に記憶領域に空きがないかどうかを確認し、空きがない場合は個別処理を開始しないように制御する。これにより、個別処理を行ったが記憶領域に保存できないので破棄するということを避け、セキュアキーレートの劣化を防ぐことが可能となる。
【０１０１】
（変形例５）
上述のように、フロー制御に用いられる記憶部（記憶部１３１、１３２など）は、鍵データのＩＤのみを保存してもよいし、鍵データの実体と鍵データのＩＤとを保存してもよい。すなわち、個別処理の処理結果として記憶部に記憶する情報（結果情報）は、鍵データのＩＤのみでもよいし、鍵データのＩＤと鍵データの実体の両方であってもよい。変形例５では、鍵データの実体と鍵データのＩＤとを共に保存する例を説明する。なお本変形例では、第２の実施形態を変形した場合を例に説明するが、他の実施形態に対しても同様の変形を適用できる。
【０１０２】
図１７は、変形例５によるデータ記憶方法の一例を示す図である。図１７に示すように、本変形例では、誤り訂正部１０３−２は、鍵データのＩＤとともに、訂正処理が終了した鍵データ（訂正鍵データ）を結果情報として記憶部１３２−２に記憶する。秘匿性増強部１０４−２は、ＩＤと鍵データを記憶部１３２−２から取り出してＰＡを行う。
【０１０３】
（変形例６）
フロー制御に用いられる記憶部には、鍵データの実体のみを結果情報として記憶してもよい。図１８は、このように構成された変形例６によるデータ記憶方法の一例を示す図である。本変形例では、第２の実施形態を変形した場合を例に説明するが、他の実施形態に対しても同様の変形を適用できる。
【０１０４】
図１８に示すように、本変形例では、誤り訂正部１０３−２は、訂正処理が終了した鍵データ（訂正鍵データ）を結果情報として記憶部１３２−２に記憶する。このとき、鍵データのＩＤは記憶部１３２−２に記憶する必要はない。秘匿性増強部１０４−２は、鍵データを記憶部１３２−２から取り出してＰＡを行う。
【０１０５】
（変形例７）
上記実施形態では、各個別処理部は、個別処理の結果である結果情報（鍵データおよび鍵データのＩＤの少なくとも一方）を記憶する記憶部の空き容量に応じて、対応する個別処理の実行を制御した。記憶部の空き状況を示す情報であれば、空き容量以外の情報に応じて個別処理の実行を制御してもよい。例えば制御部５０２（５０２−２、５０２−３）は、記憶部に対する結果情報の入出力の履歴、または、記憶部のデータの更新頻度に基づいて記憶部の空き状況を監視し、空き状況に応じて結果情報の保持および破棄を決定する。制御部５０２（５０２−２、５０２−３）は、例えば結果情報の入出力または更新頻度が多いことにより記憶部の空きが少ない状況と判断される場合、誤り訂正処理により得られた結果情報の破棄（第１の実施形態）、または、優先度が低い結果情報の破棄（第２の実施形態）などを実行する。
【０１０６】
以上説明したとおり、第１〜第３の実施形態によれば、中間鍵を保存する記憶領域の空きがなくなったときにも、システムの性能を落とさずに高速にＱＫＤを行えるようなフロー制御が可能となる。
【０１０７】
次に、第１〜第３の実施形態にかかる鍵共有装置のハードウェア構成について図１９を用いて説明する。図１９は、第１〜第３の実施形態にかかる鍵共有装置のハードウェア構成例を示す説明図である。
【０１０８】
第１〜第３の実施形態にかかる鍵共有装置は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（Random  Access  Memory）５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、各部を接続するバス６１を備えている。
【０１０９】
第１〜第３の実施形態にかかる鍵共有装置で実行されるプログラムは、ＲＯＭ５２等に予め組み込まれて提供される。
【０１１０】
第１〜第３の実施形態にかかる鍵共有装置で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【０１１１】
さらに、第１〜第３の実施形態にかかる鍵共有装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１〜第３の実施形態にかかる鍵共有装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１１２】
第１〜第３の実施形態にかかる鍵共有装置で実行されるプログラムは、コンピュータを上述した鍵共有装置の各部として機能させうる。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【０１１３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１４】
１００、１００−２、１００−３、２００  鍵共有装置
１０１、２０１  量子通信部
１０２、１０２−２、１０２−３、２０２  シフティング部
１０３、１０３−２、１０３−３、２０３  誤り訂正部
１０４、１０４−２、２０４  秘匿性増強部
１２１、２２１  ビット列記憶部
１３１、１３１−２、１３２、１３２−２  記憶部
３０１  量子通信路
３０２  古典通信路
５００、５００−２、５００−３  個別処理部
５０１  監視部
５０２、５０２−２、５０２−３  制御部
【図１】
2018148544.tif 000003
【図２】
2018148544.tif 000004
【図３】
2018148544.tif 000005
【図４】
2018148544.tif 000006
【図５】
2018148544.tif 000007
【図６】
2018148544.tif 000008
【図７】
2018148544.tif 000009
【図８】
2018148544.tif 000010
【図９】
2018148544.tif 000011
【図１０】
2018148544.tif 000012
【図１１】
2018148544.tif 000013
【図１２】
2018148544.tif 000014
【図１３】
2018148544.tif 000015
【図１４】
2018148544.tif 000016
【図１５】
2018148544.tif 000017
【図１６】
2018148544.tif 000018
【図１７】
2018148544.tif 000019
【図１８】
2018148544.tif 000020
【図１９】
2018148544.tif 000021