(57)【要約】【課題】制限されたリソース下で、鍵の安全性を維持しつつ、生成速度をより向上させる。【解決手段】実施形態の情報処理装置は、計算部と決定部と生成部とを備える。計算部は、鍵長を計算する。決定部は、鍵生成処理の処理単位であるブロックサイズと、前記鍵生成処理によって出力可能な鍵のサイズを示す出力可能サイズとを決定する。生成部は、前記ブロックサイズと、前記出力可能サイズとにより定まるサイズの行列を使用したハッシュ演算によって、前記鍵長の鍵を生成する。【選択図】図１
2020048069.tif 000002
【特許請求の範囲】
【請求項１】
鍵長を計算する計算部と、
鍵生成処理の処理単位であるブロックサイズと、前記鍵生成処理によって出力可能な鍵のサイズを示す出力可能サイズとを決定する決定部と、
前記ブロックサイズと、前記出力可能サイズとにより定まるサイズの行列を使用したハッシュ演算によって、前記鍵長の鍵を生成する生成部と、
を備える鍵生成装置。
【請求項２】
前記決定部は、前記鍵生成装置のリソース、通信路のエラーレート、及び、前記通信路を介して受信されたパルスの統計情報の少なくとも１つに基づいて、前記ブロックサイズを決定する、
請求項１に記載の鍵生成装置。
【請求項３】
前記決定部は、前記ブロックサイズを決定し、前記鍵生成装置のリソースと前記ブロックサイズとに基づいて前記出力可能サイズを決定する、
請求項１に記載の鍵生成装置。
【請求項４】
前記決定部は、前記出力可能サイズを決定し、前記鍵生成装置のリソースと前記出力可能サイズとに基づいて前記ブロックサイズを決定する、
請求項１に記載の鍵生成装置。
【請求項５】
前記決定部は、前記出力可能サイズが前記鍵長と等しくなるように前記ブロックサイズを決定する、
請求項４に記載の鍵生成装置。
【請求項６】
前記決定部は、所定の時間間隔で、前記鍵長のフィードバックを受け付け、フィードバックされた鍵長と、前記出力可能サイズとを比較して、前記出力可能サイズが前記鍵長と等しくなるように、前記ブロックサイズを決定する、
請求項４に記載の鍵生成装置。
【請求項７】
前記決定部は、前記鍵長が計算される度に、前記鍵長のフィードバックを受け付け、フィードバックされた鍵長と、前記出力可能サイズとを比較して、前記出力可能サイズが前記鍵長と等しくなるように、前記ブロックサイズを動的に決定する、
請求項４に記載の鍵生成装置。
【請求項８】
前記決定部は、前記鍵長の履歴を収集し、前記鍵長の平均又は最大値よりも、前記出力可能サイズが大きくなるように、前記ブロックサイズを決定する、
請求項４に記載の鍵生成装置。
【請求項９】
前記決定部は、所定の時間間隔で、前記鍵長と、前記鍵長が算出されたときの出力可能サイズとを監視し、前記鍵長と前記出力可能サイズとが近づくように、前記ブロックサイズを決定する、
請求項４に記載の鍵生成装置。
【請求項１０】
鍵長を計算するステップと、
鍵生成処理の処理単位であるブロックサイズと、前記鍵生成処理によって出力可能な鍵のサイズを示す出力可能サイズとを決定するステップと、
前記ブロックサイズと、前記出力可能サイズとにより定まるサイズの行列を使用したハッシュ演算によって、前記鍵長の鍵を生成するステップと、
を含む鍵生成方法。
【請求項１１】
コンピュータを、
鍵長を計算する計算部と、
鍵生成処理の処理単位であるブロックサイズと、前記鍵生成処理によって出力可能な鍵のサイズを示す出力可能サイズとを決定する決定部と、
前記ブロックサイズと、前記出力可能サイズとにより定まるサイズの行列を使用したハッシュ演算によって、前記鍵長の鍵を生成する生成部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は鍵生成装置、鍵生成方法及びプログラムに関する。
【背景技術】
【０００２】
光ファイバーにより接続された送信装置と受信装置との間で連続的に送信された単一光子を利用して、安全に暗号鍵を共有する量子鍵配送（ＱＫＤ：Ｑｕａｎｔｕｍ  Ｋｅｙ  Ｄｉｓｔｒｉｂｕｔｉｏｎ）技術が従来から知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】英国特許第２５０３０４５号明細書
【非特許文献】
【０００４】
【非特許文献１】Ｅｆｆｉｃｉｅｎｔ  ｄｅｃｏｙ−ｓｔａｔｅ  ｑｕａｎｔｕｍ  ｋｅｙ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｗｉｔｈ  ｑｕａｎｔｉｆｉｅｄ  ｓｅｃｕｒｉｔｙ，  Ｍ．  Ｌｕｃａｍａｒｉｎｉ  ｅｔ  ａｌ．，  Ｏｐｔｉｃｓ  Ｅｘｐｒｅｓｓ，  Ｖｏｌ．  ２１，  Ｉｓｓｕｅ  ２１，  ｐｐ．  ２４５５０−２４５６５  （２０１３）．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、制限されたリソース下で、鍵の安全性を維持しながら、生成速度を向上させることが難しかった。
【課題を解決するための手段】
【０００６】
実施形態の鍵生成装置は、計算部と決定部と生成部とを備える。計算部は、鍵長を計算する。決定部は、鍵生成処理の処理単位であるブロックサイズと、前記鍵生成処理によって出力可能な鍵のサイズを示す出力可能サイズとを決定する。生成部は、前記ブロックサイズと、前記出力可能サイズとにより定まるサイズの行列を使用したハッシュ演算によって、前記鍵長の鍵を生成する。
【図面の簡単な説明】
【０００７】
【図１】鍵蒸留処理の例を示すフローチャート。
【図２】ブロックサイズ、出力可能サイズ及び鍵長の関係を示す図。
【図３】実施形態の鍵生成装置の機能構成の例を示す図。
【図４】実施形態のブロックサイズ及び出力可能サイズの例１を示す図。
【図５】実施形態のブロックサイズ及び出力可能サイズの例２を示す図。
【図６】実施形態の鍵生成装置１０の効果を説明するための図。
【図７】実施形態の鍵生成装置のハードウェア構成の例を示す図。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、鍵生成装置、鍵生成方法及びプログラムの実施形態を詳細に説明する。
【０００９】
（ＱＫＤ概要）
はじめに、量子暗号通信システムについて説明する。量子暗号通信システムは、送信機と受信機とによって構成される。送信機が光子を光ファイバーリンク上で送信し、受信機がこれを検出する。その後、送信機と受信機とが相互に制御情報を交換することによって、送信機と受信機との間で暗号鍵情報を共有する。この処理をシフティング処理（Ｓｉｆｔｉｎｇ）と称する。次に、共有された暗号鍵情報をもとに、誤り訂正処理（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ，ＥＣ）によって、送信機と受信機との間で生じた暗号鍵情報の誤りを修正する。さらに、暗号鍵情報のうち、盗聴者によって盗聴されたかもしれない情報を打ち消すための情報圧縮に相当する秘匿性増強処理（Ｐｒｉｖａｃｙ  Ａｍｐｌｉｆｉｃａｔｉｏｎ，ＰＡ）を実施する。以上の処理によって、最終的に、送信機及び受信機は盗聴されていないことが保証された暗号鍵を共有することができる。
【００１０】
以上の技術は一般に量子鍵配送（Ｑｕａｎｔｕｍ  Ｋｅｙ  Ｄｉｓｔｒｉｂｕｔｉｏｎ，ＱＫＤ）と呼ばれる技術により実現できる。共有された暗号鍵は、送信機と受信機との間、あるいは、それぞれの装置に接続されたアプリケーション間でデータの暗号通信を行う際に利用される。
【００１１】
ＱＫＤでは、暗号鍵を共有するために利用される量子は、観測されることで状態が変化する、量子力学の基本原理の一つである不確定原理を持っている。この性質により、送信機が送信した暗号鍵情報を含む量子を量子通信路上で盗聴者が観測すると、量子の状態が変化し、量子を受け取った受信機は、盗聴者に量子を観測されたことを知ることができる。その際、量子状態の変化は送信機と受信機間のリンクの量子ビットエラーレート（Ｑｕａｎｔｕｍ  Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ、ＱＢＥＲ）として現れる。盗聴者が量子を盗聴しようとすると、量子の状態が変化し、ＱＢＥＲが大きくなるため、受信機と送信機は盗聴者の存在を知ることができる。
【００１２】
（性能・セキュアキーレート）
共有する暗号鍵の単位時間あたりの量は、セキュアキーレートと呼ばれ、量子暗号システムの動作速度性能に相当する。沢山の暗号鍵を利用できる方が、より高速、かつ、安全な暗号通信ができるため、セキュアキーレートが大きいほど、より高性能な量子暗号通信システムであると言える。
【００１３】
（安全性・有限長効果）
ＱＫＤでは、盗聴者に盗聴された情報量を正確に知ることは難しいため、盗聴された情報量を推定して、推定値から安全な暗号鍵の長さの計算を行うことがある。盗聴者に漏れた情報量を取り除いた暗号鍵を出力するために、ＱＢＥＲなどのＱＫＤを行ったときの測定値から、盗聴者に漏れた情報量を推定して、安全性の確保された暗号鍵の長さを算出する。
【００１４】
ＱＢＥＲなどのＱＫＤの測定値は、盗聴者の存在だけでなく、温度やファイバーへの外的要因などの環境要因によっても変動するが、ＱＫＤシステムではこれらの違いを判別することはできない。そこで、一般的には安全側に倒して考えて、環境要因によるＱＫＤの測定値の変動もすべて盗聴者の存在によるもの、盗聴者に情報が漏れたと考えて暗号鍵の長さを算出する。
【００１５】
理想的なＱＫＤシステムにおいては、ＱＢＥＲから生成された暗号鍵、及び、暗号鍵が生成される過程の処理での暗号鍵情報など、ＱＫＤの動作中のすべてのＱＫＤの測定値から盗聴者に漏れた情報量を決定し、誤差なく暗号鍵の長さを算出することが理想である。しかし、現実的には無限の長さである、すべてのＱＫＤの測定値を収集して盗聴者に漏れた情報量を決定することは不可能であり、ある程度の長さのブロックに区切るなどして有限の長さのＱＫＤの測定値を収集して、盗聴者に漏れた情報量をその範囲で推定しなければならない。この盗聴者に漏れた情報量の推定を行うときに、推定をより精度良く行うために、ＱＫＤの測定値の収集量を多くして変動をできるだけ抑え、推定誤差をできるだけ少なくすることが望ましいと考えられている。推定によって生じた誤差に関しても、安全側に倒して考え、盗聴者に漏れた情報量が多い方の推定値を採用して、暗号鍵の長さを算出する。そのため、理想的に無限の長さから盗聴者に漏れた情報量を決定する場合に比べて、現実的には盗聴者に漏れた情報量を多めに推定するので、算出される暗号鍵の長さは小さくなる。この理想的なシステムと実際のシステムとの乖離による暗号鍵の長さの減少を有限長効果（ｆｉｎｉｔｅ  ｓｉｚｅ  ｅｆｆｅｃｔ）と呼んだりする。有限長効果による暗号鍵の長さの減少を抑えるためには、ＱＫＤの測定値を収集する範囲を大きくするなど、ＱＫＤシステムでの処理の単位をできるだけ大きくすることが望ましいと考えられている。この処理の単位のことをブロックサイズと呼ぶ。
【００１６】
（ＰＡのステップ）
図１は鍵蒸留処理の例を示すフローチャートである。鍵蒸留処理は、シフティング処理、誤り訂正処理及び秘匿性増強処理を含む。
【００１７】
シフティング処理（Ｓｉｆｔｉｎｇ）では、光子のパルスと基底の情報とに基づいて、量子通信で検出した光子から鍵ビット列を抽出し、さらに、鍵長を計算するために利用するパルスの統計情報データを作成する。
【００１８】
誤り訂正処理（ＥＣ）では、シフティング処理により生成された鍵ビット列を入力として、送受信者で共有したビット列の誤り訂正を行い、誤りビット数から量子通信路のエラーレートを算出し、ＥＣ後の鍵ビット列を出力する。
【００１９】
秘匿性増強処理（ＰＡ）では、量子通信路のエラーレートとパルスの統計情報データとに応じて、最終的な暗号鍵の長さを算出し、鍵長に応じたサイズの行列を用意する。そして、当該行列と、ＥＣ後の鍵ビット列とのハッシュを計算する。
【００２０】
具体的には、ＰＡは、鍵長計算のステップとハッシュ計算のステップとの２つに分けられる。鍵長計算のステップでは、量子通信路のエラーレートとパルスの統計情報とに応じて、最終的な暗号鍵の長さを算出する。量子通信路のエラーレートが高いほど、盗聴者に洩れた情報量を多く見積もり、安全な鍵とするために暗号鍵の長さは小さくする。最終的な暗号鍵の長さの計算を行う際に、盗聴者に漏洩した情報量を見積もるために、パルスや基底の組合せのエラーレートを計算する。そのため、Ｓｉｆｔｉｎｇで生成されたパルスの統計情報から、複数のデータのカウント数とビット誤りの数とを計算する。さらに、鍵長計算のステップでは、ＥＣから、量子通信路のエラーレートと誤り訂正の処理で古典通信路上を通信したビット数を受け付け、パラメータ推定に利用し、最終的な暗号鍵の長さの計算を行う。
【００２１】
また、前述（安全性・有限長効果）のように盗聴者に漏洩した情報量の推定での誤差を小さくするために、暗号鍵の長さ、及び、一連の処理を行うデータセットのサイズ（ブロックサイズ）をできるだけ大きくする。ブロックサイズが大きいほど、推定誤差が小さくなり、計算される暗号鍵の長さは大きくなる。
【００２２】
ハッシュ計算のステップでは、鍵長計算のステップで計算された暗号鍵の長さと、鍵長計算で利用したブロックサイズとに応じたサイズの行列を用意する。そして、当該行列を使用して、ＥＣで出力されたブロックサイズ分の鍵ビット列とのハッシュ演算を計算して、最終的に鍵長計算のステップで計算された暗号鍵の長さ分の暗号鍵ビット列を出力する。ハッシュ計算は、行列とベクトルの積になるため、単純に実装すると大きなメモリが必要になってしまう。
【００２３】
（ＰＡのハッシュ計算の説明）
ＰＡのハッシュ計算は、盗聴者に漏れた情報を取り除く処理である。量子通信路でのエラーレートなどＱＫＤの測定値の変動は盗聴者によるものかもしれないという考え、及び、古典通信路で通信するデータはすべて盗聴者に盗聴されているかもしれないという考えの上で最終的に安全な暗号鍵を生成する。処理としては、例えばハッシュ関数として、Ｔｏｅｐｌｉｔｚ行列と呼ばれる、左から右の各対角線に沿って要素が一定であるような対角一定行列を、入力されるビット列にかけることにより、ビット列を安全な範囲まで圧縮する。その際、量子通信路のエラーレートなどのＱＫＤの測定値の変動に応じて安全性を考慮して、最終的に出力すべき暗号鍵のビット列の長さを変える。
【００２４】
図２はブロックサイズｎ、出力可能サイズｍ及び鍵長ｓの関係を示す図である。図２を使用して、処理の順序について説明する。
【００２５】
（１）ＥＣ処理がされたブロックサイズｎ分の入力ビット列を受け付ける。
（２）量子通信路のエラーレートなどから暗号鍵の鍵長ｓが計算される。
（３）ｎ×ｓのハッシュ行列が乱数を使用して構成される。
（４）入力ビット列とハッシュ行列との行列積を計算し、出力された鍵長ｓのビット列を暗号鍵とする。
【００２６】
ＰＡでは、処理速度及び安全性（有限長効果）の観点から、できるだけ大きなサイズのハッシュ行列を利用することが理想とされているが、ハッシュ計算に割り当てられるリソース（メモリのサイズ）によってＰＡで扱うハッシュ行列のサイズが制限される。
【００２７】
ＰＡに入力するビット列のサイズ（ブロックサイズｎ）を大きくすればするほど、効率的に暗号鍵を生成できるが、ハッシュを実装するメモリサイズ等の実装の制約がある。以下、実装の制約がある状況で、安全性及び高速性を考慮して、暗号鍵を生成する方法について説明する。
【００２８】
［機能構成の例］
図３は実施形態の鍵生成装置１０の機能構成の例を示す図である。実施形態の鍵生成装置１０は、共有部１、記憶部２、シフティング処理部３、誤り訂正処理部４及び秘匿性増強処理部５を備える。
【００２９】
実施形態の説明では、鍵生成装置１０が受信装置に備えられている場合を例にして説明する。
【００３０】
共有部１は、送信装置との間で光子情報のやりとりを行い、当該光子情報から取り出した量子鍵ビット列、当該量子鍵ビット列を取り出す際に選択された基底の情報、及び、送信装置が光子の送信に利用したパルスの情報などを記憶部２に記憶する。
【００３１】
記憶部２は情報を記憶する。記憶部２は、例えば各機能ブロックにより得られた情報（ビット列等）を記憶する。なお、記憶部２に記憶される情報は、当該記憶部２を経由して、他の構成ブロックで利用してもよいし、構成ブロック間で直接やりとりしてもよい。
【００３２】
シフティング処理部３は、記憶部２から、量子鍵ビット列を読み出し、上述のシフティング処理を行って、送信装置と共有する共有鍵ビット列を生成し、当該共有鍵ビット列を記憶部２に記憶する。
【００３３】
誤り訂正処理部４は、記憶部２から共有鍵ビット列を読み出し、上述の誤り訂正処理を行って、共有鍵ビット列の誤りを訂正し、訂正後の共有鍵ビット列を記憶部２に記憶する。
【００３４】
秘匿性増強処理部５は、記憶部２から、訂正後の共有鍵ビット列を読み出し、上述の秘匿性増強処理を行って、暗号鍵を生成し、当該暗号鍵を記憶部２に記憶する。誤り訂正処理で送信装置との間で行われた通信は、盗聴者に漏れていると考えて、秘匿性増強処理で、盗聴された可能性のある情報の量に基づいて、訂正後の共有鍵ビット列から暗号鍵が生成される。盗聴された可能性のある情報の量が多いほど、秘匿性増強処理で削減される情報の量が多くなる。
【００３５】
具体的には、秘匿性増強処理部５は、計算部５１、決定部５２及び生成部５３を備える。
【００３６】
計算部５１は、暗号鍵の鍵長を計算する。具体的には、計算部５１は、統計情報をもとに、最終的な暗号鍵の長さを計算する。例えば、統計情報は、誤り訂正処理部４から受け取ったエラーレートなどである。また例えば、統計情報は、シフティング処理部３から受け取ったパルス（例えばデコイパルス及び真空パルス等）の統計情報（カウント数及び誤り数など）である。また例えば、統計情報は、誤り訂正処理部の処理で、古典通信を介して通信されたデータのビット数である。
【００３７】
決定部５２は、鍵生成処理の処理単位であるブロックサイズｎと、当該鍵生成処理によって出力可能な鍵のサイズを示す出力可能サイズｍとを決定する。ブロックサイズｎは、例えば暗号鍵の鍵長を計算する計算式に基づいて、決定される。また例えば、ブロックサイズｎは、フィードバックされた鍵長に基づいて、ブロックサイズｎを改善していくなどして決定（更新）される。
【００３８】
ＰＡにおいては、処理速度及び安全性の観点から、より大きなブロックサイズｎ（行数ｎ）のハッシュ行列を利用することが理想とされているが、ハッシュ行列を保持するメモリサイズの制約により、入力であるブロックサイズｎを大きくすると、出力可能サイズｍが制限され、さらには、出力である最終的な暗号鍵のサイズ（鍵長ｓ）が制限される。そこで、決定部５２が、鍵長計算で得られた鍵長ｓに応じたブロックサイズｎを決定する。
【００３９】
ブロックサイズｎを決定するための具体的な方式の例について説明する。
【００４０】
（方式／最適値導出）
決定部５２は、鍵生成装置１０のリソース、量子通信路のエラーレート、及び、パルスの統計情報の少なくとも１つに基づいて、ブロックサイズｎを決定する。具体的には、決定部５２は、例えば鍵長計算で算出される鍵長ｓが出力可能サイズｍと等しくなるようにブロックサイズｎを決定する。例えば、ｆ（ｎ）＝ｍという方程式を解くことで、最適なｎを得る。ここで、関数ｆは鍵長計算の式であり、ブロックサイズｎに依存することを表している。また、関数ｆには、例えば通信路（量子通信路）のエラーレート等の変数が含まれる。変数Ｘを鍵生成装置のリソースによるハッシュ行列の行数と列数の和の上限を表す定数としたとき、出力可能サイズｍはブロックサイズｎとリソースＸから、ｍ＝Ｘ−ｎと表せるので、ｆ（ｎ）＝Ｘ−ｎとなる。また、鍵長ｓは鍵長計算の式から算出されるのでｓ＝ｆ（ｎ）でもある。
【００４１】
（方式／比較）
決定部５２は、鍵長計算で算出される鍵長ｓと出力可能サイズｍの正負の関係からブロックサイズｎを処理ごとに決定（更新）する。決定部５２は、ｍ＝Ｘ−ｎであるので、ｓ＞ｍならば、より出力可能サイズｍを大きくするために、ブロックサイズｎを小さくする。一方、決定部５２は、ｓ＜ｍならば、出力可能サイズｍを絞ってブロックサイズｎを大きくする。
【００４２】
（方式／履歴参照）
決定部５２は、これまでの鍵長計算で算出される鍵長ｓの履歴を収集してブロックサイズｎを決定（更新）する。決定部５２は、例えば、これまでの鍵長ｓの履歴の平均ｓ＿ａｖｇを参照して、ｓ＿ａｖｇよりも大きな出力可能サイズｍとなるように、ブロックサイズｎをｎ＝Ｘ−ｍとして決定する。また例えば、決定部５２は、これまでの鍵長ｓの履歴の最大のｓ＿ｍａｘを参照して、ｓ＿ｍａｘよりも大きな出力可能サイズｍとなるように、ブロックサイズｎを決定する。
【００４３】
（方式／監視）
決定部５２は、所定の時間間隔で、鍵長計算で算出される鍵長ｓと、鍵長ｓが算出されたときの出力可能サイズｍと、を監視し、鍵長ｓ（の値）と出力可能サイズｍ（の値）とが近づくように、ブロックサイズｎを最適な値に決定（更新）する。
【００４４】
（方式／リアルタイム制御）
決定部５２は、鍵長計算で算出される鍵長ｓの結果をもとに、ＰＡの処理の内部で、リアルタイムに出力可能サイズｍと比較しながら、最適なブロックサイズｎを探し、適用する。具体的には、決定部５２は、例えば鍵長ｓが計算される度に、鍵長ｓのフィードバックを受け付け、フィードバックされた鍵長ｓと、出力可能サイズｍとを比較して、出力可能サイズｍが鍵長ｓと等しくなるように、ブロックサイズｎを動的に決定する。なお、決定部５２は、所定の時間間隔で、鍵長ｓのフィードバックを受け付け、フィードバックされた鍵長ｓと、出力可能サイズｍとを比較して、出力可能サイズｍが鍵長ｓと等しくなるように、ブロックサイズｎを決定してもよい。
【００４５】
なお、秘匿性増強処理の単位となるブロックサイズｎは、他の統計情報から盗聴者に漏れている情報量を推定するときの推定誤差に影響する。そのため、ブロックサイズｎも上述の統計情報に含めてもよい。
【００４６】
生成部５３は、ブロックサイズｎと、出力可能サイズｍとにより定まるサイズの行列を使用したハッシュ演算によって、計算部５１により計算された鍵長の鍵を生成する。生成部５３は、例えばブロックサイズｎと同じ行数と、出力可能サイズｍと同じ列数とを有する行列（ハッシュ行列）を使用したハッシュ演算によって、計算部５１により計算された鍵長の鍵を生成する。具体的には、生成部５３は、記憶部２に記憶された訂正後の共有鍵ビット列をブロックサイズ分取り出し、送信装置と共通のブロックサイズと出力可能サイズとからなるハッシュ行列を使用してハッシュ計算を行う。ハッシュ後の鍵ビット列は、暗号鍵として出力しても良いし、ハッシュ後の鍵ビット列を記憶部２に記憶してから、暗号鍵として出力しても良い。
【００４７】
なお、生成部５３は、ブロックサイズｎと同じ列数と、出力可能サイズｍと同じ行数とを有する行列を使用したハッシュ演算によって、計算部５１により計算された鍵長の鍵を生成してもよい。
【００４８】
［動作方法の例］
上述の図１のように、ＰＡとは、前段のＥＣからの入力を受けて、暗号鍵を算出する処理である。ＥＣでは、さらに前段の処理であるシフティング処理から受け取った鍵ビット列の誤りを訂正して、訂正後の鍵ビット列をＰＡに入力する。さらに、ＥＣでは、鍵ビット列に含まれる誤りからエラーレートを計算し、ＱＫＤを行う量子通信路のエラーレートとして、ＰＡに入力する。
【００４９】
ＰＡの内部の処理は、鍵長計算とハッシュ計算とに分けられる。
【００５０】
ＰＡの鍵長計算では、ＥＣで算出した量子通信路のエラーレート、ＱＫＤのパラメータ（パルスの統計情報など）、及び、処理を行う鍵ビット列のサイズ（ブロックサイズ）に応じて、最終的な暗号鍵の長さを算出する。最終的な暗号鍵長の計算を行うための盗聴者に漏洩した情報量を見積もるために、パルス及び基底の組合せでエラーレートを計算することがある。そのため、計算部５１は、シフティングで生成されたパルスの統計情報から、複数のデータのカウント数及びビット誤りの数を計算する。さらに、計算部５１は、ＥＣから量子通信路のエラーレートと、誤り訂正で漏洩したビット数（古典通信路上の通信ビット数）とを受け付ける。計算部５１は、複数のデータのカウント数、ビット誤りの数、量子通信路のエラーレート、及び、誤り訂正で漏洩したビット数をパラメータ推定に利用し、最終的な暗号鍵長である鍵長ｓを計算する。
【００５１】
計算部５１は、量子通信路のエラーレートが高いほど、盗聴者に洩れた情報量が多いと考えて、盗聴者に洩れた情報量を取り除いて、安全な鍵とするために鍵長ｓを小さくする。一方、計算部５１は、量子通信路のエラーレートが低いほど、盗聴者に洩れた情報量が少ないと考えて、鍵長ｓを大きくする。
【００５２】
また、ブロックサイズｎによって、盗聴者に漏洩した情報量の見積りの精度が変わる。そのため、ブロックサイズｎは、最終的な暗号鍵長である鍵長ｓに影響する。
【００５３】
ブロックサイズｎが大きければ、ＱＫＤのパラメータから推定される盗聴者に漏洩した情報量の推定誤差が減り、鍵長ｓは大きくなり、ブロックサイズｎが小さければ、ＱＫＤのパラメータから推定される盗聴者に漏洩した情報量の推定誤差が大きくなり、鍵長ｓは小さくなる。安全性の評価においては、一般的に安全側に倒して考えるので、実際に盗聴された情報量は盗聴者に漏洩した情報量の推定値の最悪のケースを想定する。そのため、推定された値の範囲の中で最も大きい値を盗聴者に漏洩した情報量とする。したがって、推定誤差を小さくすることは、漏洩した情報量の推定の上限値を小さくすることにつながり、実際に近い推定ができ、実際よりも余分に多く盗聴される情報量を推定して最終的な鍵の長さを小さくすることを避けることにつながる。
【００５４】
ＰＡのハッシュ計算では、鍵長計算で算出された暗号鍵の長さに応じたサイズの行列を用意して、ＥＣで出力されたブロックサイズ分の鍵ビット列との行列積を計算して、最終的な暗号鍵ビット列を出力する。ＰＡでは、例えば、ハッシュ行列としてＴｏｅｐｌｉｔｚ行列という特殊な対角一定行列を利用する。これを実現する場合においては、行数と列数の和がメモリサイズによって制限される。行数は入力ブロックサイズと等しく、安全性の観点からできる限り大きいことが理想である。列数は出力する暗号鍵ビット列のサイズと等しく、高速化の観点から大きいことが望まれる。
【００５５】
ハッシュ計算で利用するハッシュ関数では、上述の図２のようにブロックサイズｎと出力可能サイズｍが、行列の行数及び列数に対応する。ブロックサイズｎは安全性の観点から無限に大きくするのが理想である。出力可能サイズｍもできる限り大きくして、最終的に鍵長計算で算出される鍵長ｓをできるだけそのまま暗号鍵として出力したい。しかし、鍵生成装置のリソースによるハッシュ行列のサイズの制約Ｘがあるため、行列の行数と列数とがトレードオフの関係になり、両方の値をともに大きくすることが難しくなる。
【００５６】
ここで、鍵長ｓは、鍵長計算において、量子通信路のエラーレートなどの変動値とブロックサイズｎによって安全性を考慮して決められる。出力可能サイズｍを大きくしても、安全性を考慮した鍵長計算で算出された鍵長ｓしか出力することはできないし、鍵長ｓが出力可能サイズｍよりも小さくなる可能性はある。そこで、決定部５２が、鍵長計算で算出される鍵長ｓが出力可能サイズｍと等しくなるようにブロックサイズｎを決定することで、鍵生成装置のリソースを有効に活用しながら、安全性を維持しつつ、処理速度を向上させる。
【００５７】
（メモリサイズとハッシュ計算サイズの関係）
ハッシュ行列を用いたハッシュ計算においては、ハッシュ行列を保持するメモリサイズによって利用できる処理サイズの上限が抑えられる。例えば、数論変換（ＮＴＴ：Ｎｕｍｂｅｒ  Ｔｈｅｏｒｅｔｉｃａｌ  Ｔｒａｎｓｆｏｒｍ）を用いて、高速にＴｏｅｐｌｉｔｚ行列を用いたハッシュ計算を実行しようとした場合、ハッシュの行数と列数との和である処理サイズに応じて、ＮＴＴの実装において必要なメモリが大きくなることがわかっている。
【００５８】
つまり、無限の長さのＱＫＤの測定値を用いて、ＥＣのビット列に対してハッシュ計算を行えないにしても、できるだけ大きな長さのハッシュ計算を行おうとした場合に、ハッシュ行列を保持するためのメモリのサイズが制約となってくる。
【００５９】
（ＰＡのハッシュ行列のサイズと出力サイズの関係）
例として、ＰＡでＴｏｅｐｌｉｔｚ行列などを利用した場合、実装においては、行数と列数との和がメモリサイズによって制限される。行数は、入力されるビット列のサイズ（ブロックサイズｎ）と等しく、安全性と処理速度の観点から無限に大きいことが理想である。列数は出力する暗号鍵の長さと等しく、高速化の観点から大きいことが望まれる。
【００６０】
Ｔｏｅｐｌｉｔｚ行列を用いたハッシュ計算ではハッシュ行列を保持するメモリサイズによってハッシュ関数の構成にも制約があることは前述のとおりである。このハッシュ関数の特徴の制約として、例えばハッシュ行列の行数に対応するブロックサイズｎと、列数に対応する出力可能サイズｍはトレードオフの関係になる。すなわち、（ブロックサイズｎ）＋（出力可能サイズｍ）＜（ハッシュ関数の処理サイズ（行数及び列数の和））という関係が成り立つ。ここで、前述のとおり、安全性及び処理速度の観点から、ブロックサイズｎは無限に大きくすることが理想であり、出力可能サイズｍは鍵長計算で算出される暗号鍵の長さｓをカバーできるくらい大きくする必要がある。暗号鍵の長さｓはエラーレートなどの変動値とブロックサイズｎによって安全性を考慮して決められるもので、処理速度の観点からはできるだけ大きくしたい。ただし、出力可能サイズｍを大きくしても、鍵長ｓはそれ以下になる可能性もある。
【００６１】
具体的には、ブロックサイズｎと出力可能サイズｍとの関係は、例えば図４及び図５のようになる。
【００６２】
図４は実施形態のブロックサイズ及び出力可能サイズの例１を示す図である。例えば、ブロックサイズｎを１００Ｍｂｉｔと大きくすると、メモリの制約によりハッシュ行列の処理サイズが決まり、出力可能サイズｍは２８Ｍｂｉｔと小さくせざるを得なくなる。生成部５３は、鍵長計算で算出される鍵長ｓが、２８Ｍｂｉｔよりも大きい場合は、出力可能サイズｍで暗号鍵を生成する。
【００６３】
図５は実施形態のブロックサイズ及び出力可能サイズの例２を示す図である。また例えば、ブロックサイズｎを８０Ｍｂｉｔと小さくすると、出力可能サイズｍは４８Ｍｂｉｔまで大きくできるため、生成部５３で、鍵長計算で算出される鍵長ｓが４８Ｍｂｉｔとなっても鍵をすべて出力できるが、鍵長計算で算出される暗号鍵の長さｓもブロックサイズｎによる有限長効果によって小さくなる。
【００６４】
図４及び図５で示されるように、決定部５２が、出力可能サイズｍと鍵長ｓとのバランスを考慮して、ブロックサイズｎを決定することが、効率的なＰＡの計算には不可欠である。
【００６５】
（効果の説明）
図６は実施形態の鍵生成装置１０の効果を説明するための図である。従来は、鍵長計算で計算された暗号鍵の鍵長ｓにかかわらず、ハッシュ行列のブロックサイズｎを固定して利用していた。しかし、例えば図４で説明したように、ハッシュ関数の処理サイズ（行数及び列数の和）が１２８Ｍｂｉｔ、ブロックサイズｎが１００Ｍｂｉｔのとき、暗号鍵の出力可能サイズｍは２８Ｍｂｉｔ以下に抑えられてしまう。鍵長計算で算出される暗号鍵の鍵長ｓが３５Ｍｂｉｔとなったとき、２８Ｍｂｉｔよりも大きい超過分７Ｍｂｉｔは処理しきれずに切り捨てられることになり、最終的なセキュアキーレートが律速されることがあった。
【００６６】
実施形態の鍵生成装置１０では、決定部５２が、鍵長計算で計算される鍵長ｓから最適なブロックサイズｎを決定し適用することで、出力可能サイズｍと鍵長計算で算出される暗号鍵の鍵長ｓを等しい値にすることができる。例えばハッシュ関数の処理サイズが１２８Ｍｂｉｔ、ブロックサイズｎが９６Ｍｂｉｔとしたときに、暗号鍵の出力可能サイズｍは３２Ｍｂｉｔ以下に抑えられる。実施形態の鍵生成装置１０では、鍵長計算で算出される暗号鍵の鍵長ｓが３２Ｍｂｉｔであることを、あらかじめフィードバックをかけたり、上述の方程式ｆ（ｎ）＝ｍを解いたりするなどして特定する。これにより、ブロックサイズが９６Ｍｂｉｔで出力可能サイズが３２Ｍｂｉｔ、鍵長が３２Ｍｂｉｔとなり、鍵生成装置のリソースを有効に利用しながら、処理しきれずに切り捨てられる鍵ビット列をなくすことができる。例えば上述の図４の例では、従来は７Ｍｂｉｔの切り捨てによる処理速度の低下があったが、実施形態の鍵生成装置１０では、この切り捨てはなくなり、３２Ｍｂｉｔの暗号鍵ビット列を出力することができ、処理速度を向上させることができる。
【００６７】
以上、説明したように実施形態の鍵生成装置１０では、計算部５１が、鍵長ｓを計算する。決定部５２が、鍵生成処理の処理単位であるブロックサイズｎと、前記鍵生成処理によって出力可能な鍵のサイズを示す出力可能サイズｍとを決定する。そして、生成部５３が、ブロックサイズｎと、出力可能サイズｍとにより定まるサイズの行列を使用したハッシュ演算によって、鍵長ｓの鍵を生成する。
【００６８】
これにより実施形態の鍵生成装置１０によれば、制限されたリソース下で、鍵の安全性を維持しつつ、生成速度をより向上させることができる。具体的には、実施形態の鍵生成装置１０によれば、ハッシュ行列を保持するメモリのサイズの制約を考慮しつつ、鍵長計算で計算される鍵長ｓに対する最適なブロックサイズｎを適用できるので、安全性を維持しつつ、セキュアキーレートを改善させることができる。
【００６９】
従来は、ブロックサイズが固定されていたため、最終的に算出される暗号鍵の鍵長ｓがブロックサイズｎから導出される出力可能サイズｍを超えていた場合に、実際に出力できるのは鍵長ｓではなく、出力可能サイズｍとなってしまい、鍵を切り捨てていた。一方、実施形態の鍵生成装置１０では、最適なブロックサイズｎを適用するため、ブロックサイズｎから導出される出力可能サイズｍと、計算部５１で計算される鍵長ｓが限りなく近くなり、鍵の切り捨てが起きることを避けることができる。こうすることで、リソースによる制約がある状況で、最大のセキュアキーレートを得ることができる。
【００７０】
最後に、実施形態の鍵生成装置１０のハードウェア構成の例について説明する。
【００７１】
［ハードウェア構成の例］
図７は実施形態の鍵生成装置１０のハードウェア構成の例を示す図である。実施形態の鍵生成装置１０は、制御装置３０１、主記憶装置３０２、補助記憶装置３０３、表示装置３０４、入力装置３０５、量子通信ＩＦ（Ｉｎｔｅｒｆａｃｅ）３０６及び古典通信ＩＦ３０７を備える。  
【００７２】
制御装置３０１、主記憶装置３０２、補助記憶装置３０３、表示装置３０４、入力装置３０５、量子通信ＩＦ３０６及び古典通信ＩＦ３０７は、バス３１０を介して接続されている。
【００７３】
制御装置３０１は、補助記憶装置３０３から主記憶装置３０２に読み出されたプログラムを実行する。主記憶装置３０２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリである。補助記憶装置３０３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びメモリカード等である。
【００７４】
表示装置３０４は、鍵生成装置１０の状態等を表示する。入力装置３０５はユーザからの入力を受け付ける。
【００７５】
量子通信ＩＦ３０６は、量子通信路に接続するためのインターフェースである。古典通信ＩＦ３０７は、古典通信路に接続するためのインターフェースである。
【００７６】
実施形態の鍵生成装置１０で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ、及び、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
【００７７】
また実施形態の鍵生成装置１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。
【００７８】
また実施形態の鍵生成装置１０が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【００７９】
また実施形態の鍵生成装置１０で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００８０】
実施形態の鍵生成装置１０で実行されるプログラムは、実施形態の鍵生成装置１０の機能構成のうち、プログラムにより実現可能な機能を含むモジュール構成となっている。  
【００８１】
プログラムにより実現される機能は、制御装置３０１が補助記憶装置３０３等の記憶媒体からプログラムを読み出して実行することにより、主記憶装置３０２にロードされる。すなわちプログラムにより実現される機能は、主記憶装置３０２上に生成される。
【００８２】
なお実施形態の鍵生成装置１０の機能の一部又は全部を、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアにより実現してもよい。ＩＣは、例えば専用の処理を実行するプロセッサである。
【００８３】
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち１つを実現してもよいし、各機能のうち２つ以上を実現してもよい。
【００８４】
また実施形態の鍵生成装置１０の動作形態は任意でよい。実施形態の鍵生成装置１０を、例えばネットワーク上のクラウドシステムを構成する装置として動作させてもよい。
【００８５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８６】
１  取得部
２  決定部
３  通知制御部
４  記憶部
５  通知部
２０  管理装置
１００  情報処理システム
３０１  制御装置
３０２  主記憶装置
３０３  補助記憶装置
３０４  表示装置
３０５  入力装置
３０６  通信装置
３１０  バス
【図１】
2020048069.tif 000003
【図２】
2020048069.tif 000004
【図３】
2020048069.tif 000005
【図４】
2020048069.tif 000006
【図５】
2020048069.tif 000007
【図６】
2020048069.tif 000008
【図７】
2020048069.tif 000009