(57)【要約】      （修正有）【課題】暗号鍵の漏洩リスクを低減する鍵生成装置を提供する。【解決手段】鍵生成装置１０は、生成回路１１と秘匿処理部１２と暗号処理部１３を有する。生成回路１１は複製が困難であり、ハードウェアに依存したＰＵＦ（Ｐｈｙｓｉｃａｌ  Ｕｎｃｌｏｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ）値を生成する。秘匿処理部１２は、秘匿化暗号鍵１４を取得すると、生成回路１１によって生成された値を用いて秘匿化暗号鍵１４に対してマスク処理を行って第１のデータを生成し、第１のデータを第１の誤り訂正復号方法によって復号して第２のデータを生成し、第２のデータを第２の誤り訂正復号方法によって復号して暗号鍵１５を生成する。暗号処理部１３は、秘匿化暗号鍵１４と平文１６または暗号文１７とを取得すると、秘匿化暗号鍵１４に対応する暗号鍵１５を秘匿処理部１２から取得し、暗号鍵１５を用いて平文１６の暗号化または暗号文１７の復号を行う。【選択図】図１
2018148434.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアに依存した値を生成する生成回路と、
秘匿化暗号鍵を取得すると、前記生成回路によって生成された値を用いて前記秘匿化暗号鍵に対してマスク処理を行って第１のデータを生成し、前記第１のデータを第１の誤り訂正復号方法によって復号して第２のデータを生成し、前記第２のデータを第２の誤り訂正復号方法によって復号して暗号鍵を生成する秘匿処理部と、
前記秘匿化暗号鍵と平文または暗号文とを取得すると、前記秘匿化暗号鍵に対応する前記暗号鍵を前記秘匿処理部から取得し、前記暗号鍵を用いて前記平文の暗号化または前記暗号文の復号を行う暗号処理部と、
を有する鍵生成装置。
【請求項２】
前記秘匿処理部は、前記暗号鍵を取得すると、前記暗号鍵を前記第２の誤り訂正復号方法に対応する第２の誤り訂正符号化方法によって符号化して第３のデータを生成し、乱数を用いて前記第３のデータに対してマスク処理を行って第４のデータを生成し、前記第４のデータを前記第１の誤り訂正復号方法に対応する第１の誤り訂正符号化方法によって符号化して第５のデータを生成し、前記生成回路によって生成された値を用いて前記第５のデータに対してマスク処理を行って前記秘匿化暗号鍵を生成する、
請求項１記載の鍵生成装置。
【請求項３】
前記生成回路によって生成される値のハミング重みは、前記第１の誤り訂正復号方法の誤り訂正能力より大きく、前記乱数のハミング重みは、前記第２の誤り訂正復号方法の誤り訂正能力以下である、
請求項２記載の鍵生成装置。
【請求項４】
前記暗号処理部は、前記秘匿化暗号鍵と他の秘匿化暗号鍵と前記暗号文とを取得すると、前記秘匿化暗号鍵に対応する前記暗号鍵を前記秘匿処理部から取得し、前記暗号鍵を用いて前記暗号文を復号し、前記他の秘匿化暗号鍵に対応する他の暗号鍵を前記秘匿処理部から取得し、前記他の暗号鍵を用いて前記暗号文の復号結果を再暗号化する、
請求項１記載の鍵生成装置。
【請求項５】
鍵生成装置が実行する鍵生成方法であって、
秘匿化暗号鍵と平文または暗号文とを取得し、
前記鍵生成装置が有する生成回路が生成するハードウェアに依存した値を用いて、前記秘匿化暗号鍵に対してマスク処理を行って第１のデータを生成し、前記第１のデータを第１の誤り訂正復号方法によって復号して第２のデータを生成し、前記第２のデータを第２の誤り訂正復号方法によって復号して暗号鍵を生成し、
前記暗号鍵を用いて前記平文の暗号化または前記暗号文の復号を行う、
鍵生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は鍵生成装置および鍵生成方法に関する。
【背景技術】
【０００２】
所定のアクセス権のあるユーザからはデータを閲覧可能とし、アクセス権のないユーザからはデータを閲覧不可とするために、データを暗号化して保存しておくことがある。例えば、組織外部に対して開示したくない業務上の秘密データを、標的型攻撃や内部犯行などのセキュリティ攻撃から保護するため、暗号化して保存しておくことがある。しかし、共通鍵暗号方式の共通鍵など暗号処理に使用する暗号鍵を適切に管理しないと、本来アクセス権のないユーザによって暗号鍵が窃取され、暗号化されたデータが不正に復号されて漏洩してしまうというセキュリティリスクがある。
【０００３】
なお、暗号処理技術に関して、指紋・静脈・虹彩などの身体的特徴または筆跡などの行動的特徴に基づいてデータ処理を行う生体認証技術がある。生体認証技術の一形態としてファジーコミットメント（Fuzzy Commitment）が提案されている。ファジーコミットメントでは、パスワードなどの秘密情報に基づいて登録用の生体情報をマスクし、マスクデータと秘密情報のハッシュ値とをデータベースに登録しておく。その後、照合用の生体情報とデータベースに登録されたマスクデータを用いて秘密情報を復元し、復元した秘密情報のハッシュ値とデータベースに登録されたハッシュ値とを比較して認証成否を判定する。
【０００４】
生体認証技術に関しては、ユーザから受け付けた入力パターンに基づいてファジーコミットメントを生成するファジーコミットメント方法が提案されている。また、データベースに登録された生体認証用のテンプレートを保護することができる認証装置が提案されている。また、テンプレートと鍵情報とが漏洩してもなりすまし攻撃を抑制することができる生体認証システムが提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第００／５１２４４号
【特許文献２】国際公開第２００６／０９３２３８号
【特許文献３】国際公開第２０１２／０４２７７５号
【非特許文献】
【０００６】
【非特許文献１】Ari Juels and Martin Wattenberg, "A fuzzy commitment scheme", Proc. of the 6th ACM (Association for Computing Machinery) conference on Computer and Communications Security, pp. 28-36, 1999
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、暗号鍵の漏洩リスクを低減する方法としては、別の暗号鍵を用いて暗号鍵自体を暗号化して保存しておくなど、別の情報を使って暗号鍵を秘匿化して保存しておく方法が考えられる。しかし、暗号鍵の秘匿化に用いる情報が十分に保護されていないと、結局、暗号鍵の秘匿化が不正に解除されてしまうリスクがある。また、暗号鍵を使用するために、ユーザの端末装置など様々な装置上で暗号鍵の秘匿化が一時的に解除されることになる場合、秘匿化が解除されたときに暗号鍵が漏洩するリスクがある。
【０００８】
１つの側面では、本発明は、暗号鍵の保護を強化することができる鍵生成装置および鍵生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、生成回路と秘匿処理部と暗号処理部とを有する鍵生成装置が提供される。生成回路は、ハードウェアに依存した値を生成する。秘匿処理部は、秘匿化暗号鍵を取得すると、生成回路によって生成された値を用いて秘匿化暗号鍵に対してマスク処理を行って第１のデータを生成し、第１のデータを第１の誤り訂正復号方法によって復号して第２のデータを生成し、第２のデータを第２の誤り訂正復号方法によって復号して暗号鍵を生成する。暗号処理部は、秘匿化暗号鍵と平文または暗号文とを取得すると、秘匿化暗号鍵に対応する暗号鍵を秘匿処理部から取得し、暗号鍵を用いて平文の暗号化または暗号文の復号を行う。
【００１０】
また、１つの態様では、鍵生成装置が実行する鍵生成方法が提供される。
【発明の効果】
【００１１】
１つの側面では、暗号鍵の保護を強化することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の鍵生成装置の例を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】暗号処理サーバのハードウェア例を示すブロック図である。
【図４】暗号鍵管理装置のハードウェア例を示すブロック図である。
【図５】ＰＵＦ回路の例を示す図である。
【図６】クライアントと暗号処理サーバの機能例を示すブロック図である。
【図７】暗号鍵秘匿化の手順例を示すフローチャートである。
【図８】暗号化の手順例を示すフローチャートである。
【図９】復号の手順例を示すフローチャートである。
【図１０】再暗号化の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１４】
図１は、第１の実施の形態の鍵生成装置の例を示す図である。
第１の実施の形態の鍵生成装置１０は、暗号鍵の漏洩リスクを低減するセキュリティ装置である。鍵生成装置１０は、コンピュータに搭載されてもよい。また、鍵生成装置１０は、クライアント装置に搭載されてもよいしサーバ装置に搭載されてもよい。鍵生成装置１０は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの電子回路を用いて実装される。
【００１５】
鍵生成装置１０は、生成回路１１、秘匿処理部１２および暗号処理部１３を有する。
生成回路１１は、生成回路１１のハードウェアに依存した値を生成する。例えば、生成回路１１は、不純物の密度など製造上の個体差に応じて値が変わるＰＵＦ（Physical Unclonable Function）値を生成する。ＰＵＦ値の違いは、入力信号の変化に対して出力信号が変わるタイミングの微差や、電源投入直後のメモリ上の初期値の違いなどによって生じることがある。よって、生成回路１１の複製は困難であり、鍵生成装置１０と同種の鍵生成装置を製造しても、他の鍵生成装置の生成回路は鍵生成装置１０の生成回路１１とは異なる値を生成する。生成回路１１が生成する値の桁数（例えば、二進数のビット数）を大きくすることで、他の鍵生成装置の生成回路とは大きく異なる値を生成できる。
【００１６】
生成回路１１は、概ね安定的に生成回路１１に固有の値を生成する。ただし、生成回路１１が生成する値は、製造上の微差を利用しているため、常に同一の値になるとは限らず一定の範囲で揺らぐ可能性がある。例えば、生成回路１１が生成する値は、鍵生成装置１０の周囲の外気温度など鍵生成装置１０の動作環境に応じて多少変化する可能性がある。生成される値の変化は、十分少ない桁（例えば、十分少ないビット）について発生し、他の鍵生成装置の生成回路が生成する値とは区別可能な範囲に収まることが想定される。
【００１７】
生成回路１１が生成する値は、秘匿処理部１２など鍵生成装置１０の内部からは読み出し可能である一方、鍵生成装置１０の外部からは読み出し困難となっている。すなわち、生成回路１１が生成する値は物理的に保護されており漏洩リスクは小さい。なお、生成回路１１は秘匿処理部１２に含まれていてもよい。
【００１８】
秘匿処理部１２は、暗号処理部１３から秘匿化暗号鍵１４を取得する。秘匿化暗号鍵１４は、暗号鍵１５を秘匿化したものである。生成回路１１が生成する値を使わずに秘匿化暗号鍵１４から暗号鍵１５を復元することは困難である。秘匿化暗号鍵１４の生成方法は後述する。秘匿処理部１２は、秘匿化暗号鍵１４を取得すると、生成回路１１が生成した値を生成回路１１から取得する。秘匿処理部１２は、以下のようにして、生成回路１１が生成した値と秘匿化暗号鍵１４とから暗号鍵１５を復元する。
【００１９】
まず、秘匿処理部１２は、生成回路１１が生成した値を用いて秘匿化暗号鍵１４に対してマスク処理を行い、マスク処理の結果として第１のデータを生成する。このマスク処理は、例えば、生成回路１１が生成した値と秘匿化暗号鍵１４との間でビット毎の排他的論理和を求める論理演算である。次に、秘匿処理部１２は、第１の誤り訂正復号方法によって第１のデータを誤り訂正復号し、第１の誤り訂正復号方法の結果として第２のデータを生成する。そして、秘匿処理部１２は、第２の誤り訂正復号方法によって第２のデータを誤り訂正復号し、第２の誤り訂正復号方法の結果として暗号鍵１５を生成する。秘匿処理部１２は、復元した暗号鍵１５を外部には出力せずに暗号処理部１３に提供する。
【００２０】
秘匿化暗号鍵１４は生成回路１１が生成する値に依存しているため、鍵生成装置１０以外の装置では暗号鍵１５を正しく復元することができない。秘匿化暗号鍵１４は、例えば、秘匿処理部１２によって以下のようにして生成される。
【００２１】
まず、秘匿処理部１２は、暗号鍵１５を取得すると、第２の誤り訂正符号化方法によって暗号鍵１５を誤り訂正符号化し、第２の誤り訂正符号化方法の結果として第３のデータを生成する。第２の誤り訂正符号化方法は、前述の第２の誤り訂正復号方法に対応する。次に、秘匿処理部１２は、乱数を生成し、生成した乱数を用いて第３のデータに対してマスク処理を行い、マスク処理の結果として第４のデータを生成する。このマスク処理は、例えば、乱数と第３のデータとの間でビット毎の排他的論理和を求める論理演算である。
【００２２】
次に、秘匿処理部１２は、第１の誤り訂正符号化方法によって第４のデータを誤り訂正符号化し、第１の誤り訂正符号化方法の結果として第５のデータを生成する。第１の誤り訂正符号化方法は、前述の第１の誤り訂正復号方法に対応する。そして、秘匿処理部１２は、生成回路１１が生成した値を用いて第５のデータに対してマスク処理を行い、マスク処理の結果として秘匿化暗号鍵１４を生成する。このマスク処理は、例えば、生成回路１１が生成した値と第５のデータとの間でビット毎の排他的論理和を求める論理演算である。秘匿処理部１２は、生成した秘匿化暗号鍵１４を外部に出力する。
【００２３】
第１の誤り訂正符号化方法と第２の誤り訂正符号化方法は、同じ符号化アルゴリズムであってもよいし異なる符号化アルゴリズムであってもよい。同様に、第１の誤り訂正復号方法と第２の誤り訂正復号方法は、同じ復号アルゴリズムであってもよいし異なる復号アルゴリズムであってもよい。上記の乱数のハミング重みは、好ましくは、第２の誤り訂正復号方法の誤り訂正能力以下である。生成回路１１が生成する値のハミング重みは、好ましくは、第１の誤り訂正復号方法の誤り訂正能力を超える。
【００２４】
秘匿化暗号鍵１４を生成した際に生成回路１１が生成した値と暗号鍵１５を復元した際に生成回路１１が生成した値の差、すなわち、生成回路１１が生成する値の変化のハミング重みは、好ましくは、第１の誤り訂正復号方法の誤り訂正能力以下である。ハミング重みは、二進数の「１」のビット数など「０」以外の値をとる桁の数である。誤り訂正能力は、訂正可能ビット数や訂正可能桁数と言うこともできる。
【００２５】
この場合、秘匿化暗号鍵１４は生成回路１１が生成する値を用いてマスク処理がなされており、生成回路１１が生成する値は鍵生成装置１０の外部から読み出し困難である。よって、鍵生成装置１０以外の装置によって秘匿化暗号鍵１４から暗号鍵１５を復元することは困難となる。また、秘匿化暗号鍵１４は乱数を用いてマスク処理がなされているため、仮に暗号鍵１５が漏洩しても生成回路１１が生成する値を推測することは困難となる。また、第１の誤り訂正復号方法によって、生成回路１１が生成する値の揺らぎが除去され、第２の誤り訂正復号方法によって乱数が除去され、暗号鍵１５が正しく復元される。
【００２６】
暗号処理部１３は、秘匿化暗号鍵１４と、平文１６または暗号文１７とを取得する。すると、暗号処理部１３は、秘匿化暗号鍵１４を秘匿処理部１２に提供して暗号鍵１５を秘匿処理部１２から取得する。暗号処理部１３は、暗号鍵１５を用いて平文１６を暗号化して暗号文１７を生成し、暗号文１７を外部に出力する。または、暗号処理部１３は、暗号鍵１５を用いて暗号文１７を復号して平文１６を生成し、平文１６を外部に出力する。暗号化や復号などの暗号処理が終了すると、暗号処理部１３は暗号鍵１５を破棄することが好ましい。すなわち、暗号処理毎に秘匿化暗号鍵１４が外部から入力され、暗号処理毎に暗号鍵１５が鍵生成装置１０の内部で一時的に復元される。
【００２７】
暗号鍵１５としては、例えば、共通鍵暗号方式の共通鍵が用いられる。暗号処理部１３は、ＡＥＳ（Advanced Encryption Standard）などの所定の共通鍵暗号方式によって平文１６の暗号化または暗号文１７の復号を行う。ただし、公開鍵暗号方式の秘密鍵を上記の方法によって保護することも考えられる。その場合、暗号処理部１３は、暗号鍵１５としての秘密鍵を用いて、所定の公開鍵暗号方式によって暗号文１７を復号する。
【００２８】
第１の実施の形態の鍵生成装置１０によれば、外部から読み出しが困難な生成回路１１が生成する値を用いて秘匿化暗号鍵１４が生成され、暗号処理の際には鍵生成装置１０の内部で秘匿化暗号鍵１４から暗号鍵１５が一時的に復元される。よって、暗号鍵１５が漏洩するリスクを低減でき暗号鍵１５の保護を強化できる。その結果、暗号鍵１５を用いて復号可能な暗号文１７のセキュリティを強化でき、平文１６の漏洩リスクを低減できる。
【００２９】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の情報処理システムの例を示す図である。
【００３０】
第２の実施の形態の情報処理システムは、暗号鍵の保護や平文の暗号化や暗号文の復号などの暗号処理を特定のサーバ装置によって集中的に行い、情報セキュリティを向上させるシステムである。この情報処理システムは、暗号処理サーバ１００およびクライアント２００，２００ａ，２００ｂを含む。暗号処理サーバ１００およびクライアント２００，２００ａ，２００ｂは、ネットワーク３０に接続されている。ネットワーク３０は、例えば、ＬＡＮ（Local Area Network）などの組織内ネットワークである。
【００３１】
暗号処理サーバ１００は、暗号処理を行うサーバコンピュータである。暗号処理サーバ１００は、クライアント２００，２００ａ，２００ｂから暗号鍵を受信し、受信した暗号鍵を秘匿化して秘匿化暗号鍵を返信する。また、暗号処理サーバ１００は、クライアント２００，２００ａ，２００ｂから平文と秘匿化暗号鍵を受信し、受信した秘匿化暗号鍵から暗号鍵を復元し、復元した暗号鍵を用いて平文を暗号化して暗号文を返信する。
【００３２】
また、暗号処理サーバ１００は、クライアント２００，２００ａ，２００ｂから暗号文と秘匿化暗号鍵を受信し、受信した秘匿化暗号鍵から暗号鍵を復元し、復元した暗号鍵を用いて暗号文を復号して平文を返信する。また、暗号処理サーバ１００は、クライアント２００，２００ａ，２００ｂから旧暗号文と旧秘匿化暗号鍵と新秘匿化暗号鍵を受信し、旧秘匿化暗号鍵に基づいて旧暗号文を復号し、新秘匿化暗号鍵に基づいて平文を再暗号化して新暗号文を返信する。暗号処理サーバ１００の内部で一時的に復元された暗号鍵は、クライアント２００，２００ａ，２００ｂに提供されない。
【００３３】
クライアント２００，２００ａ，２００ｂは、ユーザが操作する端末装置としてのクライアントコンピュータである。暗号処理サーバ１００とクライアント２００，２００ａ，２００ｂとは、ＷｅｂＡＰＩ（Application Programming Interface）を用いて通信する。クライアント２００，２００ａ，２００ｂは、暗号鍵を暗号処理サーバ１００に送信し、秘匿化暗号鍵を暗号処理サーバ１００から受信する。クライアント２００，２００ａ，２００ｂは、秘匿化暗号鍵を保持し元の暗号鍵は保持しないことが好ましい。
【００３４】
また、クライアント２００，２００ａ，２００ｂは、データを暗号化して保存したいとき、平文（暗号化されていないデータ）と秘匿化暗号鍵を暗号処理サーバ１００に送信し、平文に対応する暗号文（暗号化されたデータ）を暗号処理サーバ１００から受信する。クライアント２００，２００ａ，２００ｂは、暗号文を保持し平文は保持しないことが好ましい。また、クライアント２００，２００ａ，２００ｂは、暗号化されたデータを参照したいとき、暗号文と秘匿化暗号鍵を暗号処理サーバ１００に送信し、暗号文に対応する平文を暗号処理サーバ１００から受信する。
【００３５】
なお、暗号鍵を秘匿化するとき、ネットワーク３０を介して暗号鍵を暗号処理サーバ１００に送信する代わりに、オフラインで暗号鍵を暗号処理サーバ１００に読み込ませてもよい。例えば、暗号鍵を可搬記録媒体に記録し、その可搬記録媒体を暗号処理サーバ１００に読み込ませてもよい。また、入力デバイスを用いてユーザが暗号処理サーバ１００に対して暗号鍵を入力してもよい。同様に、ネットワーク３０を介して秘匿化暗号鍵をクライアント２００，２００ａ，２００ｂに送信する代わりに、オフラインで秘匿化暗号鍵をクライアント２００，２００ａ，２００ｂに読み込ませてもよい。
【００３６】
図３は、暗号処理サーバのハードウェア例を示すブロック図である。
暗号処理サーバ１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＡＭ（Random Access Memory）１０２、ＨＤＤ（Hard Disk Drive）１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。また、暗号処理サーバ１００は、暗号鍵管理装置１２０を有する。暗号鍵管理装置１２０は、第１の実施の形態の鍵生成装置１０に対応する。これらのユニットはバスに接続されている。クライアント２００，２００ａ，２００ｂも、暗号処理サーバ１００と同様のハードウェアを用いて実装できる。ただし、クライアント２００，２００ａ，２００ｂは暗号鍵管理装置１２０を有しなくてよい。
【００３７】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、暗号処理サーバ１００は複数のプロセッサを備えてもよく、以下の処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と呼ぶことがある。
【００３８】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、暗号処理サーバ１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００３９】
ＨＤＤ１０３は、ＯＳ（Operating System）やアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、暗号処理サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４０】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、暗号処理サーバ１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを用いることができる。
【００４１】
入力信号処理部１０５は、暗号処理サーバ１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、暗号処理サーバ１００に複数の種類の入力デバイスが接続されていてもよい。
【００４２】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００４３】
媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００４４】
通信インタフェース１０７は、ネットワーク３０に接続され、ネットワーク３０を介して他の装置と通信を行うインタフェースである。通信インタフェース１０７は、例えば、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースである。ただし、基地局と無線リンクで接続される無線通信インタフェースであってもよい。
【００４５】
暗号鍵管理装置１２０は、暗号鍵の秘匿化、平文の暗号化、暗号文の復号および暗号文の再暗号化を行うハードウェアセキュリティモジュールである。暗号化や復号の際に暗号鍵が暗号鍵管理装置１２０の外部に流出しないようにすることで暗号鍵が保護される。暗号鍵管理装置１２０は、ＡＳＩＣやＦＰＧＡなどの電子回路として実装される。
【００４６】
図４は、暗号鍵管理装置のハードウェア例を示すブロック図である。
暗号鍵管理装置１２０は、入出力インタフェース１２１、制御部１２２、秘匿処理部１２３、暗号化部１２４および復号部１２５を有する。なお、秘匿処理部１２３は、第１の実施の形態の秘匿処理部１２に対応する。暗号化部１２４および復号部１２５は、第１の実施の形態の暗号処理部１３に対応する。
【００４７】
入出力インタフェース１２１は、ＣＰＵ１０１から暗号処理コマンドを受け付け、暗号処理結果をＣＰＵ１０１に提供する。暗号処理コマンドの種類として、暗号鍵秘匿化コマンド、暗号化コマンド、復号コマンドおよび再暗号化コマンドが挙げられる。暗号鍵秘匿化コマンドには秘匿化前の暗号鍵が付加される。暗号化コマンドには秘匿化暗号鍵と平文が付加される。復号コマンドには秘匿化暗号鍵と暗号文が付加される。再暗号化コマンドには旧暗号文と旧秘匿化暗号鍵と新秘匿化暗号鍵が付加される。
【００４８】
制御部１２２は、入出力インタフェース１２１から暗号処理コマンドを取得し、秘匿処理部１２３、暗号化部１２４および復号部１２５を利用して暗号処理を実行し、暗号処理結果を入出力インタフェース１２１に出力する。
【００４９】
暗号鍵秘匿化コマンドに対しては、制御部１２２は、暗号鍵を秘匿処理部１２３に入力して秘匿化暗号鍵を秘匿処理部１２３から取得する。暗号化コマンドに対しては、制御部１２２は、秘匿化暗号鍵を秘匿処理部１２３に入力して暗号鍵を秘匿処理部１２３から取得し、暗号鍵と平文を暗号化部１２４に入力して暗号文を暗号化部１２４から取得する。
【００５０】
復号コマンドに対しては、制御部１２２は、秘匿化暗号鍵を秘匿処理部１２３に入力して暗号鍵を秘匿処理部１２３から取得し、暗号鍵と暗号文を復号部１２５に入力して平文を復号部１２５から取得する。再暗号化コマンドに対しては、制御部１２２は、旧秘匿化暗号鍵を秘匿処理部１２３に入力して旧暗号鍵を秘匿処理部１２３から取得し、旧暗号鍵と旧暗号文を復号部１２５に入力して平文を復号部１２５から取得する。制御部１２２は、新秘匿化暗号鍵を秘匿処理部１２３に入力して新暗号鍵を秘匿処理部１２３から取得し、新暗号鍵と平文を暗号化部１２４に入力して新暗号文を暗号化部１２４から取得する。
【００５１】
秘匿処理部１２３は、制御部１２２から暗号鍵を取得すると、暗号鍵を秘匿化して秘匿化暗号鍵を制御部１２２に出力する。また、秘匿処理部１２３は、制御部１２２から秘匿化暗号鍵を取得すると、暗号鍵の秘匿化を解除して暗号鍵を制御部１２２に出力する。秘匿化を解除した暗号鍵は暗号鍵管理装置１２０の外部には出力されない。暗号鍵管理装置１２０で生成された秘匿化暗号鍵からは、以下に説明するように他の装置で暗号鍵を復元することはできない。また、他の装置で生成された秘匿化暗号鍵からは、以下に説明するように暗号鍵管理装置１２０で暗号鍵を復元することはできない。
【００５２】
秘匿処理部１２３は、論理演算部１３１、ＰＵＦ回路１３２、誤り訂正符号化部１３３，１３４、誤り訂正復号部１３５，１３６および乱数生成部１３７を有する。なお、ＰＵＦ回路１３２は、第１の実施の形態の生成回路１１に対応する。
【００５３】
論理演算部１３１は、秘匿化暗号鍵の生成および暗号鍵の復元に用いられる。論理演算部１３１は、データに対するマスク処理を行う。具体的には、論理演算部１３１は、２つのビット列の間でビット毎に排他的論理和を算出する論理演算を実行する。
【００５４】
ＰＵＦ回路１３２は、ＰＵＦを利用してハードウェア固有の値であるＰＵＦコードを生成する電子回路である。ＰＵＦ回路１３２は、秘匿化暗号鍵の生成および暗号鍵の復元に用いられる。ＰＵＦコードは、不純物の密度など製造上不可避的に発生するハードウェアの個体差に依存する。このため、同じＰＵＦコードを生成するようにＰＵＦ回路１３２を複製することは困難であり、ＰＵＦ回路１３２が生成するＰＵＦコードは他の暗号鍵管理装置のＰＵＦコードとは十分に異なっている。ＰＵＦ回路１３２が生成するＰＵＦコードは、大きく変化しないものの、常に同一の値になるとは限らず一定の範囲で揺らぐことがある。ＰＵＦコードの変化は、ＰＵＦコードの長さ（全ビット数）と比べて十分少ないビットについて発生する。ＰＵＦコードは、暗号鍵管理装置１２０の外部から読み出すことは困難であり、漏洩リスクが小さく物理的に保護されている。
【００５５】
誤り訂正符号化部１３３，１３４は、それぞれ所定の誤り訂正符号化方式に従ってデータを符号化する。誤り訂正符号化部１３３，１３４は、秘匿化暗号鍵の生成に用いられる。誤り訂正符号化部１３３，１３４が使用する誤り訂正符号化方式は、同一でもよいし異なってもよい。誤り訂正符号化部１３３は線形符号を用いてもよい。例えば、誤り訂正符号化部１３３は（ｎ，ｋ1，２ｄ1＋１）の線形符号を用いる。「ｎ」は符号化後のビット長、「ｋ1」は符号化前のビット長、「ｄ1」は訂正可能ビット数を表す。また、例えば、誤り訂正符号化部１３４は（ｋ2，ｐ，２ｄ2＋１）の線形符号または非線形符号を用いる。「ｋ2」は符号化後のビット長、「ｐ」は符号化前のビット長、「ｄ2」は訂正可能ビット数を示す。ｋ2はｋ1と同じかｋ1より小さい。
【００５６】
線形符号の例として、ハミング符号、ＢＣＨ（Bose Chaudhuri Hocquenghem）符号、リードソロモン符号、ターボ符号、ＬＤＰＣ（Low Density Parity Check）符号、畳み込み符号などを挙げることができる。非線形符号の例として、ＮＲ符号、ナドラ符号、グリーン符号などを挙げることができる。誤り訂正符号化部１３３，１３４が共にリードソロモン符号を用いる場合、ｎ＝２０４７，ｋ1＝１０２３，ｋ2＝５１１，ｐ＝３５１の実装例が考えられる。また、誤り訂正符号化部１３３，１３４が共にＢＣＨ符号を用いる場合、ｎ＝８１９１，ｋ1＝１５３５，ｋ2＝１０２３，ｐ＝２２３の実装例が考えられる。
【００５７】
誤り訂正復号部１３５，１３６は、それぞれ所定の誤り訂正符号化方式に従って誤り訂正符号を復号する。誤り訂正復号部１３５，１３６は、暗号鍵の復元に用いられる。誤り訂正復号部１３５は誤り訂正符号化部１３３に対応し、誤り訂正復号部１３６は誤り訂正符号化部１３４に対応する。すなわち、誤り訂正復号部１３５は、誤り訂正符号化部１３３を用いて生成された誤り訂正符号を復号できる。誤り訂正復号部１３６は、誤り訂正符号化部１３４を用いて生成された誤り訂正符号を復号できる。
【００５８】
乱数生成部１３７は、所定条件を満たす乱数を生成する。乱数生成部１３７は、秘匿化暗号鍵の生成に用いられる。乱数生成部１３７が生成する乱数のハミング重み、すなわち、「１」のビット数は、誤り訂正復号部１３６の誤り訂正能力（訂正可能ビット数）以下になるようにする。なお、ＰＵＦ回路１３２が生成するＰＵＦコードのハミング重みは、誤り訂正復号部１３５の誤り訂正能力（訂正可能ビット数）を超えるようにする。また、ＰＵＦ回路１３２が異なるタイミングで生成した２つのＰＵＦコードの排他的論理和のハミング重みは、誤り訂正復号部１３５の誤り訂正能力以下になるようにする。すなわち、ＰＵＦコードの揺らぎは誤り訂正復号部１３５の誤り訂正能力を超えない。
【００５９】
暗号化部１２４は、制御部１２２から暗号鍵と平文を取得し、取得した暗号鍵を用いて平文を暗号化して暗号文を制御部１２２に出力する。暗号化部１２４は、暗号方式としてＡＥＳなどの所定の共通鍵暗号方式を用いる。制御部１２２から取得する暗号鍵は、ＡＥＳの共通鍵など所定の共通鍵暗号方式の共通鍵である。暗号化部１２４は、暗号化が終わった後は、制御部１２２から取得した暗号鍵や平文を内部に保持せず破棄する。
【００６０】
復号部１２５は、制御部１２２から暗号鍵と暗号文を取得し、取得した暗号鍵を用いて暗号文を復号して平文を制御部１２２に出力する。復号部１２５は、暗号化部１２４と同じ所定の共通鍵暗号方式を用いる。復号部１２５は、復号が終わった後は、制御部１２２から取得した暗号鍵や生成した平文を内部に保持せず破棄する。
【００６１】
図５は、ＰＵＦ回路の例を示す図である。
ＰＵＦ回路１３２の実装方法としてラッチ回路を利用する方法が考えられる。一例として、ＰＵＦ回路１３２は、ｎ個（ｎはＰＵＦコードのビット数を示す非負整数）のラッチ回路であるラッチ回路１３８−１，１３８−２，…，１３８−ｎを含む。ｎ個のラッチ回路はＰＵＦコードのｎビットに対応する。ラッチ回路１３８−１はＰＵＦコードの最下位ビットの値を出力する。ラッチ回路１３８−２はＰＵＦコードの下位から２番目のビットの値を出力する。ラッチ回路１３８−ｎはＰＵＦコードの最上位ビットの値を出力する。
【００６２】
ラッチ回路１３８−１，１３８−２，…，１３８−ｎは同じ構造を有する。各ラッチ回路は２つのＮＡＮＤ回路（第１のＮＡＮＤ回路と第２のＮＡＮＤ回路）を含む。第１のＮＡＮＤ回路は、ラッチ回路外部からの入力信号が入力される第１の入力端と、第２のＮＡＮＤ回路の出力信号がフィードバックされる第２の入力端とを有する。また、第１のＮＡＮＤ回路は、出力信号が出力される出力端を有する。第１のＮＡＮＤ回路の出力信号は、ラッチ回路外部への出力信号となる。第２のＮＡＮＤ回路は、第１のＮＡＮＤ回路と同じラッチ回路外部からの入力信号が入力される第１の入力端と、第１のＮＡＮＤ回路の出力信号がフィードバックされる第２の入力端とを有する。また、第２のＮＡＮＤ回路は、出力信号が出力される出力端を有する。
【００６３】
このようなラッチ回路１３８−１，１３８−２，…，１３８−ｎに対して所定の入力値（例えば、「１」）を入力すると、論理的には、各ラッチ回路の出力値は不定になる。しかし、不純物の密度など各ラッチ回路の物理的特徴から、特定の出力値が出力されやすいという傾向（「１」の出力されやすさと「０」の出力されやすさ）がラッチ回路毎に決まる。よって、ラッチ回路１３８−１，１３８−２，…，１３８−ｎを用いて生成されるｎビットのＰＵＦコードは、概ねＰＵＦ回路１３２固有の値をとる。ただし、論理的には各ラッチ回路の出力値は不定であり常に同じ値が出力されることは保証されない。よって、ＰＵＦコードは大きく変化しないものの一定範囲で揺らぐことがある。
【００６４】
図６は、クライアントと暗号処理サーバの機能例を示すブロック図である。
暗号処理サーバ１００は、アプリケーション部１４１、Ｗｅｂ通信部１４２およびデバイスドライバ１４３を有する。アプリケーション部１４１、Ｗｅｂ通信部１４２およびデバイスドライバ１４３は、例えば、プログラムモジュールを用いて実装される。
【００６５】
アプリケーション部１４１は、クライアント２００，２００ａ，２００ｂに対して暗号処理サービスを提供するアプリケーションソフトウェアである。アプリケーション部１４１は、Ｗｅｂ通信部１４２を介してクライアント２００，２００ａ，２００ｂからリクエストメッセージを受信する。すると、アプリケーション部１４１は、リクエストメッセージの内容に応じてデバイスドライバ１４３に暗号処理を要求し、デバイスドライバ１４３から暗号処理結果を取得する。アプリケーション部１４１は、暗号処理結果からレスポンスメッセージを生成し、Ｗｅｂ通信部１４２を介してクライアント２００，２００ａ，２００ｂにレスポンスメッセージを送信する。
【００６６】
Ｗｅｂ通信部１４２は、通信インタフェース１０７およびネットワーク３０を介してクライアント２００，２００ａ，２００ｂと通信する。Ｗｅｂ通信部１４２は、通信プロトコルとしてＨＴＴＰ（Hypertext Transfer Protocol）やＩＰ（Internet Protocol）を用いる。Ｗｅｂ通信部１４２は、ＨＴＴＰリクエストメッセージをクライアント２００，２００ａ，２００ｂから受信してアプリケーション部１４１に転送する。また、Ｗｅｂ通信部１４２は、ＨＴＴＰレスポンスメッセージをアプリケーション部１４１から取得してクライアント２００，２００ａ，２００ｂに転送する。
【００６７】
デバイスドライバ１４３は、暗号鍵管理装置１２０にアクセスするミドルウェアである。デバイスドライバ１４３は、アプリケーション部１４１からの要求に応じて暗号鍵管理装置１２０に対して暗号処理コマンドを入力する。デバイスドライバ１４３は、暗号処理コマンドに対するレスポンスとして暗号処理結果を暗号鍵管理装置１２０から取得し、暗号処理結果をアプリケーション部１４１に出力する。デバイスドライバ１４３は、暗号鍵秘匿化コマンドに対するレスポンスとして秘匿化暗号鍵を取得する。また、デバイスドライバ１４３は、暗号化コマンドに対するレスポンスとして暗号文を取得する。また、デバイスドライバ１４３は、復号コマンドに対するレスポンスとして平文を取得する。デバイスドライバ１４３は、再暗号化コマンドに対するレスポンスとして新暗号文を取得する。
【００６８】
クライアント２００は、アプリケーション部２４１、Ｗｅｂ通信部２４２、秘匿化暗号鍵記憶部２４３および暗号文記憶部２４４を有する。アプリケーション部２４１およびＷｅｂ通信部２４２は、例えば、プログラムモジュールを用いて実装される。秘匿化暗号鍵記憶部２４３および暗号文記憶部２４４は、例えば、ＲＡＭまたはＨＤＤに確保した記憶領域を用いて実装される。クライアント２００ａ，２００ｂも、クライアント２００と同様のモジュール構成によって実装することができる。
【００６９】
アプリケーション部２４１は、暗号処理サーバ１００が提供する暗号処理サービスを利用するアプリケーションソフトウェアである。アプリケーション部２４１は、クライアント２００を使用するユーザの操作に応じて暗号処理を要求するリクエストメッセージを生成し、Ｗｅｂ通信部２４２を介して暗号処理サーバ１００にリクエストメッセージを送信する。そして、アプリケーション部２４１は、暗号処理結果を含むレスポンスメッセージをＷｅｂ通信部２４２を介して暗号処理サーバ１００から受信する。
【００７０】
例えば、アプリケーション部２４１は、新たな暗号鍵が用意されると、暗号鍵秘匿化の要求を示すリクエストメッセージを生成する。このリクエストメッセージは秘匿化前の暗号鍵を含む。暗号鍵は、クライアント２００が所定のアルゴリズムに従って生成してもよいし、他の装置が所定のアルゴリズムに従って生成してもよい。また、暗号鍵は、可搬記録媒体に記録されて可搬記録媒体からクライアント２００に読み込まれてもよいし、ユーザがクライアント２００に対して入力してもよい。アプリケーション部２４１は、暗号鍵秘匿化の要求に対して秘匿化暗号鍵を含むレスポンスメッセージを受信する。アプリケーション部２４１は、秘匿化暗号鍵を秘匿化暗号鍵記憶部２４３に格納する。ただし、秘匿化暗号鍵を可搬記録媒体に記録してもよいし他の装置に転送してもよい。アプリケーション部２４１は、秘匿化後は元の暗号鍵を保持せず破棄することが好ましい。なお、前述のように、暗号鍵をオフラインで暗号処理サーバ１００に提供することもできる。
【００７１】
また、アプリケーション部２４１は、あるデータを暗号化することを示すユーザ操作を受け付けると、暗号化の要求を示すリクエストメッセージを生成する。このリクエストメッセージは秘匿化暗号鍵と平文を含む。アプリケーション部２４１は、暗号化の要求に対して暗号文を含むレスポンスメッセージを受信する。アプリケーション部２４１は、暗号文を暗号文記憶部２４４に格納する。ただし、アプリケーション部２４１は、暗号文を可搬記録媒体に記録してもよいし他の装置に転送してもよい。アプリケーション部２４１は、暗号化されていない平文を保持せず破棄することが好ましい。
【００７２】
また、アプリケーション部２４１は、暗号文記憶部２４４に格納された暗号文を閲覧するユーザ操作を受け付けると、復号の要求を示すリクエストメッセージを生成する。このリクエストメッセージは秘匿化暗号鍵と暗号文を含む。アプリケーション部２４１は、復号の要求に対して平文を含むレスポンスメッセージを受信する。アプリケーション部２４１は、例えば、クライアント２００が有するディスプレイに平文を表示する。アプリケーション部２４１は、閲覧が終わった後は平文を保持せず破棄することが好ましい。
【００７３】
また、アプリケーション部２４１は、暗号文の暗号鍵を変更するユーザ操作を受け付けると、再暗号化の要求を示すリクエストメッセージを生成する。このリクエストメッセージは、変更前の旧秘匿化暗号鍵と変更後の新秘匿化暗号鍵と旧暗号鍵で暗号化された旧暗号文を含む。新秘匿化暗号鍵は、上記の暗号鍵秘匿化の要求に従って予め暗号処理サーバ１００から入手しておく。暗号化されたデータを長期間保存しておく場合、定期的に暗号鍵を変更することで情報セキュリティを向上させることができる。アプリケーション部２４１は、再暗号化の要求に対して新暗号鍵で暗号化された新暗号文を含むレスポンスメッセージを受信する。アプリケーション部２４１は、新暗号文を暗号文記憶部２４４に格納する。再暗号化では、クライアント２００に平文は提供されない。
【００７４】
Ｗｅｂ通信部２４２は、ネットワーク３０を介して暗号処理サーバ１００と通信する。Ｗｅｂ通信部２４２は、通信プロトコルとしてＨＴＴＰやＩＰを用いる。Ｗｅｂ通信部２４２は、ＨＴＴＰリクエストメッセージをアプリケーション部２４１から取得して暗号処理サーバ１００に転送する。また、Ｗｅｂ通信部２４２は、ＨＴＴＰレスポンスメッセージを暗号処理サーバ１００から受信してアプリケーション部２４１に転送する。
【００７５】
秘匿化暗号鍵記憶部２４３は、暗号処理サーバ１００によって提供された秘匿化暗号鍵を記憶する。秘匿化暗号鍵はＰＵＦ回路１３２が生成するＰＵＦコードを用いて秘匿化されているため、暗号鍵管理装置１２０以外の装置では秘匿化暗号鍵から元の暗号鍵は復元されない。暗号文記憶部２４４は、暗号処理サーバ１００によって暗号化された暗号文を記憶する。この暗号文は、秘匿化暗号鍵記憶部２４３に記憶された秘匿化暗号鍵に対応する暗号鍵で暗号化されている。暗号文記憶部２４４に記憶された暗号文は、暗号鍵管理装置１２０以外の装置では復号されない。
【００７６】
次に、暗号鍵管理装置１２０の処理手順について説明する。
図７は、暗号鍵秘匿化の手順例を示すフローチャートである。
（Ｓ１０）入出力インタフェース１２１は、暗号鍵秘匿化コマンドを受信する。制御部１２２は、暗号鍵秘匿化コマンドに付加された暗号鍵ｗを取得する。制御部１２２は、暗号鍵ｗを秘匿処理部１２３に入力する。
【００７７】
（Ｓ１１）誤り訂正符号化部１３４は、暗号鍵ｗを符号化してＥ２（ｗ）を生成する。
（Ｓ１２）乱数生成部１３７は、乱数ｓを生成する。
（Ｓ１３）論理演算部１３１は、ステップＳ１１の誤り訂正符号Ｅ２（ｗ）とステップＳ１２の乱数ｓの排他的論理和を算出してＥ２（ｗ）＋ｓを生成する。
【００７８】
（Ｓ１４）誤り訂正符号化部１３３は、ステップＳ１３の排他的論理和の演算結果を符号化してＥ１（Ｅ２（ｗ）＋ｓ）を生成する。
（Ｓ１５）論理演算部１３１は、ＰＵＦ回路１３２からＰＵＦコードｘを取得する。
【００７９】
（Ｓ１６）論理演算部１３１は、ステップＳ１４の誤り訂正符号とステップＳ１５のＰＵＦコードｘの排他的論理和を算出してｘ＋Ｅ１（Ｅ２（ｗ）＋ｓ）を生成する。
（Ｓ１７）制御部１２２は、ステップＳ１６の排他的論理和の演算結果を秘匿化暗号鍵ｓｗとして秘匿処理部１２３から取得する。入出力インタフェース１２１は、制御部１２２から秘匿化暗号鍵ｓｗを取得して暗号鍵管理装置１２０の外部に送信する。
【００８０】
図８は、暗号化の手順例を示すフローチャートである。
（Ｓ２０）入出力インタフェース１２１は、暗号化コマンドを受信する。制御部１２２は、暗号化コマンドに付加された秘匿化暗号鍵ｓｗと平文Ｐを取得する。制御部１２２は、秘匿化暗号鍵ｓｗを秘匿処理部１２３に入力する。
【００８１】
（Ｓ２１）論理演算部１３１は、ＰＵＦ回路１３２からＰＵＦコードｙを取得する。ここで取得されるＰＵＦコードｙは、秘匿化暗号鍵ｓｗを生成するときに使用したＰＵＦコードｘと十分に近似するものの完全に一致するとは限らない。
【００８２】
（Ｓ２２）論理演算部１３１は、ステップＳ２０の秘匿化暗号鍵ｓｗとステップＳ２１のＰＵＦコードｙの排他的論理和を算出してｓｗ＋ｙを生成する。秘匿化暗号鍵ｓｗが秘匿処理部１２３によって生成された正当な秘匿化暗号鍵である場合、排他的論理和の演算結果はｓｗ＋ｙ＝ｘ＋ｙ＋Ｅ１（Ｅ２（ｗ）＋ｓ）となる。
【００８３】
（Ｓ２３）誤り訂正復号部１３５は、ステップＳ２２の排他的論理和の演算結果を復号してＤ１（ｓｗ＋ｙ）を生成する。秘匿化暗号鍵ｓｗが秘匿処理部１２３によって生成された正当な秘匿化暗号鍵である場合、ＰＵＦコードｘとＰＵＦコードｙは十分に近似するため、ｘ＋ｙのハミング重みは誤り訂正復号部１３５の訂正可能ビット数以下となる。よって、復号結果はＤ１（ｓｗ＋ｙ）＝Ｅ２（ｗ）＋ｓとなる。
【００８４】
（Ｓ２４）誤り訂正復号部１３６は、ステップＳ２３の復号結果を更に復号してＤ２（Ｅ２（ｗ）＋ｓ）を生成する。乱数ｓのハミング重みは誤り訂正復号部１３６の訂正可能ビット数以下であるため、復号結果はＤ２（Ｅ２（ｗ）＋ｓ）＝ｗとなる。
【００８５】
（Ｓ２５）制御部１２２は、ステップＳ２４で復元された暗号鍵ｗを秘匿処理部１２３から取得し、暗号鍵ｗとステップＳ２０の平文Ｐを暗号化部１２４に入力する。暗号化部１２４は、暗号鍵ｗを用いて平文Ｐを暗号化して暗号文Ｃを生成する。
【００８６】
（Ｓ２６）制御部１２２は、ステップＳ２５で生成された暗号文Ｃを暗号化部１２４から取得する。入出力インタフェース１２１は、制御部１２２から暗号文Ｃを取得して暗号鍵管理装置１２０の外部に送信する。
【００８７】
なお、秘匿化暗号鍵ｓｗが秘匿処理部１２３によって生成された正当な秘匿化暗号鍵でない場合、暗号鍵ｗが正しく復元されない。ステップＳ２４の復号結果が所定の共通鍵暗号方式の暗号鍵に該当しないことを判定できる場合、秘匿処理部１２３は制御部１２２に対してエラーを通知してもよい。その場合、制御部１２２は平文Ｐの暗号化をスキップしてもよく、入出力インタフェース１２１はエラーを外部に通知してもよい。
【００８８】
図９は、復号の手順例を示すフローチャートである。
（Ｓ３０）入出力インタフェース１２１は、復号コマンドを受信する。制御部１２２は、復号コマンドに付加された秘匿化暗号鍵ｓｗと暗号文Ｃを取得する。制御部１２２は、秘匿化暗号鍵ｓｗを秘匿処理部１２３に入力する。
【００８９】
（Ｓ３１〜Ｓ３４）秘匿処理部１２３が秘匿化暗号鍵ｓｗから暗号鍵ｗを復元する処理は、前述のステップＳ２１〜Ｓ２４と同様であるため説明を省略する。
（Ｓ３５）制御部１２２は、ステップＳ３４で復元された暗号鍵ｗを秘匿処理部１２３から取得し、暗号鍵ｗとステップＳ３０の暗号文Ｃを復号部１２５に入力する。復号部１２５は、暗号鍵ｗを用いて暗号文Ｃを復号して平文Ｐを生成する。
【００９０】
（Ｓ３６）制御部１２２は、ステップＳ３５で生成された平文Ｐを復号部１２５から取得する。入出力インタフェース１２１は、制御部１２２から平文Ｐを取得して暗号鍵管理装置１２０の外部に送信する。
【００９１】
なお、秘匿化暗号鍵ｓｗが秘匿処理部１２３によって生成された正当な秘匿化暗号鍵でない場合、暗号鍵ｗが正しく復元されない。ステップＳ３４の復号結果が所定の共通鍵暗号方式の暗号鍵に該当しないことを判定できる場合、秘匿処理部１２３は制御部１２２に対してエラーを通知してもよい。その場合、制御部１２２は暗号文Ｃの復号をスキップしてもよく、入出力インタフェース１２１はエラーを外部に通知してもよい。また、暗号文Ｃが正当な暗号鍵ｗによって暗号化されていない場合、暗号文Ｃから平文Ｐが正しく復元されない。ステップＳ３５の復号結果が正しい平文でないことを判定できる場合、復号部１２５は制御部１２２に対してエラーを通知してもよい。その場合、入出力インタフェース１２１はエラーを外部に通知してもよい。
【００９２】
図１０は、再暗号化の手順例を示すフローチャートである。
（Ｓ４０）入出力インタフェース１２１は、再暗号化コマンドを受信する。制御部１２２は、再暗号化コマンドに付加された秘匿化暗号鍵ｓｗ１，ｓｗ２と暗号文Ｃ１を取得する。秘匿化暗号鍵ｓｗ１は旧秘匿化暗号鍵であり、秘匿化暗号鍵ｓｗ２は新秘匿化暗号鍵である。制御部１２２は、秘匿化暗号鍵ｓｗ１を秘匿処理部１２３に入力する。
【００９３】
（Ｓ４１）論理演算部１３１は、ＰＵＦ回路１３２からＰＵＦコードｙ１を取得する。ここで取得されるＰＵＦコードｙ１は、秘匿化暗号鍵ｓｗ１を生成するときに使用したＰＵＦコードｘ１と十分に近似するものの完全に一致するとは限らない。
【００９４】
（Ｓ４２）論理演算部１３１は、ステップＳ４０の秘匿化暗号鍵ｓｗ１とステップＳ４１のＰＵＦコードｙ１の排他的論理和を算出してｓｗ１＋ｙ１を生成する。秘匿化暗号鍵ｓｗ１が秘匿処理部１２３によって生成された正当な秘匿化暗号鍵である場合、排他的論理和の演算結果はｓｗ１＋ｙ１＝ｘ１＋ｙ１＋Ｅ１（Ｅ２（ｗ１）＋ｓ１）となる。なお、ＰＵＦコードｘ１は秘匿化暗号鍵ｓｗ１を生成したときのＰＵＦコードであり、暗号鍵ｗ１は旧暗号鍵であり、乱数ｓ１は秘匿化暗号鍵ｓｗ１を生成したときの乱数である。
【００９５】
（Ｓ４３）誤り訂正復号部１３５は、ステップＳ４２の排他的論理和の演算結果を復号してＤ１（ｓｗ１＋ｙ１）を生成する。秘匿化暗号鍵ｓｗ１が秘匿処理部１２３によって生成された正当な秘匿化暗号鍵である場合、ＰＵＦコードｘ１とＰＵＦコードｙ１は十分に近似するため、ｘ１＋ｙ１のハミング重みは誤り訂正復号部１３５の訂正可能ビット数以下となる。よって、復号結果はＤ１（ｓｗ１＋ｙ１）＝Ｅ２（ｗ１）＋ｓ１となる。
【００９６】
（Ｓ４４）誤り訂正復号部１３６は、ステップＳ４３の復号結果を更に復号してＤ２（Ｅ２（ｗ１）＋ｓ１）を生成する。乱数ｓ１のハミング重みは誤り訂正復号部１３６の訂正可能ビット数以下であるため、復号結果はＤ２（Ｅ２（ｗ１）＋ｓ１）＝ｗ１となる。
【００９７】
（Ｓ４５）制御部１２２は、ステップＳ４４で復元された暗号鍵ｗ１を秘匿処理部１２３から取得し、暗号鍵ｗ１とステップＳ４０の暗号文Ｃ１を復号部１２５に入力する。復号部１２５は、暗号鍵ｗ１を用いて暗号文Ｃ１を復号して平文Ｐを生成する。また、制御部１２２は、秘匿化暗号鍵ｓｗ２を秘匿処理部１２３に入力する。
【００９８】
（Ｓ４６）論理演算部１３１は、ＰＵＦ回路１３２からＰＵＦコードｙ２を取得する。ここで取得されるＰＵＦコードｙ２は、秘匿化暗号鍵ｓｗ２を生成するときに使用したＰＵＦコードｘ２と十分に近似するものの完全に一致するとは限らない。
【００９９】
（Ｓ４７）論理演算部１３１は、ステップＳ４０の秘匿化暗号鍵ｓｗ２とステップＳ４６のＰＵＦコードｙ２の排他的論理和を算出してｓｗ２＋ｙ２を生成する。秘匿化暗号鍵ｓｗ２が秘匿処理部１２３によって生成された正当な秘匿化暗号鍵である場合、排他的論理和の演算結果はｓｗ２＋ｙ２＝ｘ２＋ｙ２＋Ｅ１（Ｅ２（ｗ２）＋ｓ２）となる。なお、ＰＵＦコードｘ２は秘匿化暗号鍵ｓｗ２を生成したときのＰＵＦコードであり、暗号鍵ｗ２は新暗号鍵であり、乱数ｓ２は秘匿化暗号鍵ｓｗ２を生成したときの乱数である。
【０１００】
（Ｓ４８）誤り訂正復号部１３５は、ステップＳ４７の排他的論理和の演算結果を復号してＤ１（ｓｗ２＋ｙ２）を生成する。秘匿化暗号鍵ｓｗ２が秘匿処理部１２３によって生成された正当な秘匿化暗号鍵である場合、ＰＵＦコードｘ２とＰＵＦコードｙ２は十分に近似するため、ｘ２＋ｙ２のハミング重みは誤り訂正復号部１３５の訂正可能ビット数以下となる。よって、復号結果はＤ１（ｓｗ２＋ｙ２）＝Ｅ２（ｗ２）＋ｓ２となる。
【０１０１】
（Ｓ４９）誤り訂正復号部１３６は、ステップＳ４８の復号結果を更に復号してＤ２（Ｅ２（ｗ２）＋ｓ２）を生成する。乱数ｓ２のハミング重みは誤り訂正復号部１３６の訂正可能ビット数以下であるため、復号結果はＤ２（Ｅ２（ｗ２）＋ｓ２）＝ｗ２となる。
【０１０２】
（Ｓ５０）制御部１２２は、ステップＳ４９で復元された暗号鍵ｗ２を秘匿処理部１２３から取得し、暗号鍵ｗ２とステップＳ４５の平文Ｐを暗号化部１２４に入力する。暗号化部１２４は、暗号鍵ｗ２を用いて平文Ｐを暗号化して暗号文Ｃ２を生成する。
【０１０３】
（Ｓ５１）制御部１２２は、ステップＳ５０で生成された暗号文Ｃ２を暗号化部１２４から取得する。入出力インタフェース１２１は、制御部１２２から暗号文Ｃ２を取得して暗号鍵管理装置１２０の外部に送信する。
【０１０４】
第２の実施の形態の暗号鍵管理装置１２０によれば、外部から読み出しが困難なＰＵＦ回路１３２が生成するＰＵＦコードを用いて秘匿化暗号鍵が生成され、暗号処理の際には暗号鍵管理装置１２０の内部で秘匿化暗号鍵から暗号鍵が一時的に復元される。よって、暗号鍵が漏洩するリスクを低減でき暗号鍵の保護を強化できる。その結果、暗号鍵を用いて復号可能な暗号文の情報セキュリティを強化でき、平文の漏洩リスクを低減できる。また、暗号鍵を変更する際には、暗号鍵管理装置１２０の外部に平文が出力されないように暗号文の復号と再暗号化が行われる。よって、暗号鍵の変更が容易となり、長期的に保存するデータの情報セキュリティを強化することができる。
【０１０５】
また、秘匿化暗号鍵はハードウェア依存のＰＵＦコードを用いてマスク処理がなされているため、暗号鍵管理装置１２０以外の装置で秘匿化暗号鍵から暗号鍵を復元することが困難となる。また、秘匿化暗号鍵はその生成時に選択される乱数を用いてマスク処理がなされているため、管理不備などが原因で仮に暗号鍵が漏洩しても、秘匿化暗号鍵と元の暗号鍵から暗号鍵管理装置１２０のＰＵＦコードを推測することは困難となる。よって、暗号鍵管理装置１２０を安定的に運用することが可能となる。
【符号の説明】
【０１０６】
１０  鍵生成装置
１１  生成回路
１２  秘匿処理部
１３  暗号処理部
１４  秘匿化暗号鍵
１５  暗号鍵
１６  平文
１７  暗号文
【図１】
2018148434.tif 000003
【図２】
2018148434.tif 000004
【図３】
2018148434.tif 000005
【図４】
2018148434.tif 000006
【図５】
2018148434.tif 000007
【図６】
2018148434.tif 000008
【図７】
2018148434.tif 000009
【図８】
2018148434.tif 000010
【図９】
2018148434.tif 000011
【図１０】
2018148434.tif 000012