(57)【特許請求の範囲】
【請求項１】
格子次元である２冪の整数n、法とする素数ｑ、及び、前記素数ｑよりも小さい整数ｔを鍵生成パラメータとして用いて生成される準同型暗号の暗号鍵のうちの公開鍵を用いて、０より大きい整数であって前記整数ｔよりも小さい第１の乱数を成分としてゼロベクトルに付加した第１のベクトルに対応する第１の多項式を準同型暗号により暗号化して、第１の暗号化多項式を生成する生成部と、
前記第１の暗号化多項式を表す第１の暗号情報を端末装置に送信する送信部と、
前記第１の暗号化多項式と０より大きい整数であって前記整数ｔよりも小さい第２の乱数との乗算結果に対して、第２のベクトルに０を成分として付加した第３のベクトルに対応する第２の多項式を加算した第２の暗号化多項式と、前記公開鍵を用いて第４のベクトルに０を成分として付加した第５のベクトルに対応する第３の多項式を準同型暗号により暗号化した第３の暗号化多項式とから算出される、前記第５のベクトルと前記第２のベクトルに前記第１の乱数と前記第２の乱数との乗算結果を成分として付加した第６のベクトルとの第１の演算結果を含む第４の暗号化多項式を表す第２の暗号情報を計算装置から受信するとともに、前記公開鍵を用いて前記第２の乱数についての前記整数ｔを法とする逆元を準同型暗号により暗号化して得られる暗号化逆元を表す第３の暗号情報を前記計算装置から受信する受信部と、
前記暗号鍵のうちの秘密鍵を用いて前記第２の暗号情報および前記第３の暗号情報を復号する復号部と、
前記第２の暗号情報の復号結果と前記第３の暗号情報の復号結果とに基づいて、前記第２のベクトルと前記第４のベクトルとの第２の演算結果を生成する処理部と、
を備える暗号処理装置。
【請求項２】
前記第１の演算結果は、前記第５のベクトルと前記第６のベクトルとのハミング距離を表し、
前記第２の演算結果は、前記第２ベクトルと前記第４のベクトルとのハミング距離を表すことを特徴とする請求項１記載の暗号処理装置。
【請求項３】
前記処理部は、前記第３の暗号情報の復号結果である前記第２の乱数の逆元から前記第２の乱数を算出し、前記第１の演算結果から前記第１の乱数と前記第２の乱数との前記乗算結果を減算することで前記第２の演算結果を算出することを特徴とする請求項１又は２記載の暗号処理装置。
【請求項４】
格子次元である２冪の整数n、法とする素数ｑ、及び、前記素数ｑよりも小さい整数ｔを鍵生成パラメータとして用いて生成される準同型暗号の暗号鍵のうちの公開鍵を用いて、０より大きい整数であって前記整数ｔよりも小さい第１の乱数を成分としてゼロベクトルに付加した第１のベクトルに対応する第１の多項式を準同型暗号により暗号化して、第１の暗号化多項式を生成し、
前記第１の暗号化多項式を表す第１の暗号情報を端末装置に送信し、
前記第１の暗号化多項式と０より大きい整数であって前記整数ｔよりも小さい第２の乱数との乗算結果に対して、第２のベクトルに０を成分として付加した第３のベクトルに対応する第２の多項式を加算した第２の暗号化多項式と、前記公開鍵を用いて第４のベクトルに０を成分として付加した第５のベクトルに対応する第３の多項式を準同型暗号により暗号化した第３の暗号化多項式とから算出される、前記第５のベクトルと前記第２のベクトルに前記第１の乱数と前記第２の乱数との乗算結果を成分として付加した第６のベクトルとの第１の演算結果を含む第４の暗号化多項式を表す第２の暗号情報を計算装置から受信するとともに、前記公開鍵を用いて前記第２の乱数についての前記整数ｔを法とする逆元を準同型暗号により暗号化して得られる暗号化逆元を表す第３の暗号情報を前記計算装置から受信し、
前記暗号鍵のうちの秘密鍵を用いて前記第２の暗号情報および前記第３の暗号情報を復号し、
前記第２の暗号情報の復号結果と前記第３の暗号情報の復号結果とに基づいて、前記第２のベクトルと前記第４のベクトルとの第２の演算結果を生成する、
処理を暗号処理装置が実行することを特徴とする暗号処理方法。
【請求項５】
コンピュータに、
格子次元である２冪の整数n、法とする素数ｑ、及び、前記素数ｑよりも小さい整数ｔを鍵生成パラメータとして用いて生成される準同型暗号の暗号鍵のうちの公開鍵を用いて、０より大きい整数であって前記整数ｔよりも小さい第１の乱数を成分としてゼロベクトルに付加した第１のベクトルに対応する第１の多項式を準同型暗号により暗号化して、第１の暗号化多項式を生成し、
前記第１の暗号化多項式を表す第１の暗号情報を端末装置に送信し、
前記第１の暗号化多項式と０より大きい整数であって前記整数ｔよりも小さい第２の乱数との乗算結果に対して、第２のベクトルに０を成分として付加した第３のベクトルに対応する第２の多項式を加算した第２の暗号化多項式と、前記公開鍵を用いて第４のベクトルに０を成分として付加した第５のベクトルに対応する第３の多項式を準同型暗号により暗号化した第３の暗号化多項式とから算出される、前記第５のベクトルと前記第２のベクトルに前記第１の乱数と前記第２の乱数との乗算結果を成分として付加した第６のベクトルとの第１の演算結果を含む第４の暗号化多項式を表す第２の暗号情報を計算装置から受信するとともに、前記公開鍵を用いて前記第２の乱数についての前記整数ｔを法とする逆元を準同型暗号により暗号化して得られる暗号化逆元を表す第３の暗号情報を前記計算装置から受信し、
前記暗号鍵のうちの秘密鍵を用いて前記第２の暗号情報および前記第３の暗号情報を復号し、
前記第２の暗号情報の復号結果と前記第３の暗号情報の復号結果とに基づいて、前記第２のベクトルと前記第４のベクトルとの第２の演算結果を生成する、
処理を実行させる暗号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置、暗号処理方法、および暗号処理プログラムに関する。
【背景技術】
【０００２】
現在、個人情報及び機密情報を保護する規制が強化される一方で、それらの情報を利用したサービスの市場が拡大しつつある。このようなサービスとしては、例えば、スマートフォンから取得できる個人ユーザの位置情報等を活用したサービスが挙げられる。
【０００３】
そこで、個人情報又は機密情報を保護したままで、情報の利活用ができる秘匿化技術が注目されている。秘匿化技術の中には、データ種別又はサービス要件に応じて暗号技術又は統計技術を用いる方法がある。
【０００４】
暗号技術を用いた秘匿化技術として、準同型暗号技術が知られている。準同型暗号技術は、暗号化と復号とで一対の異なる鍵を用いる公開鍵暗号方式の１つであり、暗号化したままでデータ操作が可能となる機能を有する。例えば、加算及び乗算に関する準同型暗号の暗号化関数Ｅは、平文ｍ１及び平文ｍ２に対して、次式のような性質を持つ。
【０００５】
Ｅ（ｍ１）＋Ｅ（ｍ２）＝Ｅ（ｍ１＋ｍ２）      （１）
Ｅ（ｍ１）＊Ｅ（ｍ２）＝Ｅ（ｍ１＊ｍ２）      （２）
【０００６】
式（１）は、加算に対して準同型であることを表し、式（２）は、乗算に対して準同型であることを表す。このように、準同型暗号技術によれば、２つ以上の暗号文を対象に加算、乗算等に対応する操作を行うことで、暗号文を復号することなく、元の平文同士に対して加算、乗算等を行った演算結果の暗号文を得ることができる。
【０００７】
このような準同型暗号の性質は、電子投票、電子現金等の分野、及び近年ではクラウド・コンピューティングの分野において利用されることが期待されている。加算又は乗算に関する準同型暗号としては、乗算のみ可能なRivest Shamir Adleman（ＲＳＡ）暗号、加算のみ可能なAdditive ElGamal暗号等が知られている。
【０００８】
また、２００９年には、式（１）及び式（２）を満たす、加算と乗算の両方が可能な準同型暗号が提案されている（例えば、非特許文献１を参照）。非特許文献１では、準同型暗号の理論的な実現方法のみしか示されておらず、実用的な構成法は明らかにされていない。しかし、近年では、加算と乗算の両方が可能な準同型暗号の実用的な構成法も提案されている（例えば、非特許文献２を参照）。
【０００９】
準同型暗号を利用した秘匿距離計算において、暗号ベクトルデータのサイズと秘匿距離計算の時間の両方を削減する暗号処理装置も知られている（例えば、特許文献１を参照）。この暗号処理装置は、第１のベクトルから第１の変換多項式を用いて第１の多項式を得るとともに、第２のベクトルから第２の変換多項式を用いて第２の多項式を得る。次に、暗号処理装置は、第１のベクトルの秘匿距離に関する第１の重みと、第２のベクトルの秘匿距離に関する第２の重みとを得る。
【００１０】
次に、暗号処理装置は、第１の多項式、第２の多項式、第１の重み、及び第２の重みのそれぞれを準同型暗号方式を用いて暗号化し、第１の暗号化多項式、第２の暗号化多項式、第１の暗号化重み、及び第２の暗号化重みを得る。そして、暗号処理装置は、第１の暗号化多項式、第２の暗号化多項式、第１の暗号化重み、及び第２の暗号化重みから、第１のベクトルと第２のベクトルの秘匿距離の暗号化に対応する暗号化秘匿距離を得る。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１４−１２６８６５号公報
【非特許文献】
【００１２】
【非特許文献１】C. Gentry, “Fully Homomorphic Encryption Using Ideal Lattices”, STOC 2009, pp. 169-178, 2009.
【非特許文献２】K. Lauter, M. Naehrig, V. Vaikuntanathan, “Can Homomorphic Encryption be Practical?”, In ACM workshop on Cloud Computing Security Workshop-CCSW 2011, ACM, pp. 113-124, 2011.
【発明の概要】
【発明が解決しようとする課題】
【００１３】
特許文献１の暗号処理装置を適用することで、ユーザの生体情報を保護したままで個人認証を行う個人認証システムを実現することができる。しかしながら、個人認証システムにおいては、悪意のあるユーザが暗号情報を盗聴することで再送攻撃（Replay攻撃）を行って、正規のユーザに成りすますことが可能である。
【００１４】
なお、かかる問題は、暗号化秘匿距離に基づく個人認証システムに限らず、暗号化多項式を用いた暗号演算処理に基づく他の認証システムにおいても生ずるものである。
【００１５】
１つの側面において、本発明は、暗号化多項式を用いた暗号演算処理において、暗号情報の盗聴に対する耐性を向上させることを目的とする。
【課題を解決するための手段】
【００１６】
実施の形態の暗号処理装置は、生成部、送信部、受信部、復号部、および処理部を備える。
【００１７】
前記生成部は、格子次元である２冪の整数n、法とする素数ｑ、及び、前記素数ｑよりも小さい整数ｔを鍵生成パラメータとして用いて生成される準同型暗号の暗号鍵のうちの公開鍵を用いて、０より大きい整数であって前記整数ｔよりも小さい第１の乱数を成分としてゼロベクトルに付加した第１のベクトルに対応する第１の多項式を準同型暗号により暗号化して、第１の暗号化多項式を生成する。
【００１８】
前記送信部は、前記第１の暗号化多項式を表す第１の暗号情報を端末装置に送信する。
前記受信部は、前記第１の暗号化多項式と０より大きい整数であって前記整数ｔよりも小さい第２の乱数との乗算結果に対して、第２のベクトルに０を成分として付加した第３のベクトルに対応する第２の多項式を加算した第２の暗号化多項式と、前記公開鍵を用いて第４のベクトルに０を成分として付加した第５のベクトルに対応する第３の多項式を準同型暗号により暗号化した第３の暗号化多項式とから算出される、前記第５のベクトルと前記第２のベクトルに前記第１の乱数と前記第２の乱数との乗算結果を成分として付加した第６のベクトルとの第１の演算結果を含む第４の暗号化多項式を表す第２の暗号情報を計算装置から受信するとともに、前記公開鍵を用いて前記第２の乱数についての前記整数ｔを法とする逆元を準同型暗号により暗号化して得られる暗号化逆元を表す第３の暗号情報を前記計算装置から受信する。
【００１９】
前記復号部は、前記暗号鍵のうちの秘密鍵を用いて前記第２の暗号情報および前記第３の暗号情報を復号する。
前記処理部は、前記第２の暗号情報の復号結果と前記第３の暗号情報の復号結果とに基づいて、前記第２のベクトルと前記第４のベクトルとの第２の演算結果を生成する。
【発明の効果】
【００２０】
実施の形態の暗号処理装置によれば、暗号化多項式を用いた暗号演算処理において、暗号情報の盗聴に対する耐性を向上させることができる。
【図面の簡単な説明】
【００２１】
【図１】暗号化多項式を用いた生体認証システムの構成図である。
【図２】実施の形態に係る生体認証システムの構成図である。
【図３】実施の形態に係る暗号処理のフローチャートである。
【図４】情報処理装置（コンピュータ）の構成図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照しながら、実施の形態を詳細に説明する。
非特許文献２の３．２節には、準同型暗号の実用的な構成法について記載されている。この構成法では、まず、暗号鍵生成において、主に３つの鍵生成パラメータ（ｎ，ｑ，ｔ）が用いられる。ｎは２冪の整数であり、格子次元と呼ばれる。ｑは素数であり、ｔは素数ｑよりも小さい整数である。
【００２３】
暗号鍵生成の手順として、まず、秘密鍵として各係数が非常に小さいｎ−１次多項式ｓｋがランダムに生成される。各係数の大きさは、あるパラメータσにより制限される。次に、各係数がｑより小さいｎ−１次多項式ａ１と、各係数が非常に小さいｎ−１次多項式ｅとがランダムに生成される。そして、次式の多項式ａ０が計算され、多項式の組（ａ０，ａ１）が公開鍵ｐｋとして定義される。
【００２４】
ａ０＝−（ａ１＊ｓｋ＋ｔ＊ｅ）      （１１）
【００２５】
ただし、多項式ａ０の計算では、ｎ次以上の多項式に対してｘn＝−１，ｘn+1＝−ｘ，．．．を適用することで、絶えずｎ次より小さい次数の多項式が計算される。さらに、多項式に含まれる各項の係数としては、その係数を素数ｑで除算したときの剰余が用いられる。このような多項式演算を行う空間は、学術的にはＲq：＝Ｆq［ｘ］／（ｘn＋１）と表されることが多い。
【００２６】
次に、各係数がｔより小さいｎ−１次多項式で表される平文データｍと公開鍵ｐｋとに対して、各係数が非常に小さい３つのｎ−１次多項式ｕ、ｆ、及びｇがランダムに生成され、平文データｍの暗号データＥｎｃ（ｍ，ｐｋ）が次式により定義される。
【００２７】
Ｅｎｃ（ｍ，ｐｋ）＝（ｃ０，ｃ１）      （１２）
ｃ０＝ａ０＊ｕ＋ｔ＊ｇ＋ｍ      （１３）
ｃ１＝ａ１＊ｕ＋ｔ＊ｆ      （１４）
【００２８】
多項式ｃ０及び多項式ｃ１の計算においても、空間Ｒq上の多項式演算が用いられる。このとき、暗号データＥｎｃ（ｍ１，ｐｋ）＝（ｃ０，ｃ１）と暗号データＥｎｃ（ｍ２，ｐｋ）＝（ｄ０，ｄ１）とに対する暗号加算は、次式により計算される。
【００２９】
Ｅｎｃ（ｍ１，ｐｋ）＋Ｅｎｃ（ｍ２，ｐｋ）
＝（ｃ０＋ｄ０，ｃ１＋ｄ１）                    （１５）
【００３０】
また、暗号データＥｎｃ（ｍ１，ｐｋ）と暗号データＥｎｃ（ｍ２，ｐｋ）とに対する暗号乗算は、次式により計算される。
【００３１】
Ｅｎｃ（ｍ１，ｐｋ）＊Ｅｎｃ（ｍ２，ｐｋ）
＝（ｃ０＊ｄ０，ｃ０＊ｄ１＋ｃ１＊ｄ０，ｃ１＊ｄ１）      （１６）
【００３２】
式（１６）の暗号乗算を行うと、暗号データが２次元ベクトルから３次元ベクトルに変化する。暗号乗算を複数回繰り返すと、乗算結果の暗号データの要素はさらに増加する。
【００３３】
次に、復号処理について説明する。複数回の暗号乗算等の操作により要素が増加した暗号データｃ＝（ｃ０，ｃ１，ｃ２，．．．）に対して、秘密鍵ｓｋを用いて次式の復号結果Ｄｅｃ（ｃ，ｓｋ）を計算することで、暗号データｃが復号される。
【００３４】
Ｄｅｃ（ｃ，ｓｋ）
＝［ｃ０＋ｃ１＊ｓｋ＋ｃ２＊ｓｋ2＋・・・］q  ｍｏｄ  ｔ      （１７）
【００３５】
式（１７）において、［ｆ（ｘ）］q  ｍｏｄ  ｔは、多項式ｆ（ｘ）の各係数ｚiを［ｚi］ｑ  ｍｏｄ  ｔに置き換えた多項式を表す。整数ｚに対する［ｚ］qの値は、ｚをｑで除算したときの剰余ｗを用いて、次式により定義される。
【００３６】
［ｚ］q＝ｗ      （ｗ＜ｑ／２の場合）      （１８）
［ｚ］q＝ｗ−ｑ  （ｗ≧ｑ／２の場合）      （１９）
【００３７】
したがって、［ｚ］qの値域は［−ｑ／２，ｑ／２）となる。また、ａ  ｍｏｄ  ｔは、整数ａをｔで除算したときの剰余を表す。
【００３８】
例えば、（ｎ，ｑ，ｔ）＝（４，１０３３，２０）の場合、秘密鍵ｓｋ、公開鍵ｐｋ、及び暗号データＥｎｃ（ｍ，ｐｋ）の簡単な例として、以下のような多項式が挙げられる。
【００３９】
ｓｋ＝Ｍｏｄ（Ｍｏｄ（４，１０３３）＊ｘ3＋Ｍｏｄ（４，１０３３）＊ｘ2
＋Ｍｏｄ（１，１０３３）＊ｘ，ｘ4＋１）                      （２０）
ｐｋ＝（ａ０，ａ１）                      （２１）
ａ０＝Ｍｏｄ（Ｍｏｄ（８８５，１０３３）＊ｘ3
＋Ｍｏｄ（５１９，１０３３）＊ｘ2＋Ｍｏｄ（６２１，１０３３）＊ｘ
＋Ｍｏｄ（３２７，１０３３），ｘ4＋１）                      （２２）
ａ１＝Ｍｏｄ（Ｍｏｄ（６６１，１０３３）＊ｘ3
＋Ｍｏｄ（６２５，１０３３）＊ｘ2＋Ｍｏｄ（８６１，１０３３）＊ｘ
＋Ｍｏｄ（３１１，１０３３），ｘ4＋１）                      （２３）
Ｅｎｃ（ｍ，ｐｋ）＝（ｃ０，ｃ１）                      （２４）
ｍ＝３＋２ｘ＋２ｘ2＋２ｘ3                      （２５）
ｃ０＝Ｍｏｄ（Ｍｏｄ（８２２，１０３３）＊ｘ3
＋Ｍｏｄ（１０１６，１０３３）＊ｘ2＋Ｍｏｄ（２９２，１０３３）＊ｘ
＋Ｍｏｄ（２４３，１０３３），ｘ4＋１）                      （２６）
ｃ１＝Ｍｏｄ（Ｍｏｄ（８４０，１０３３）＊ｘ3
＋Ｍｏｄ（２７５，１０３３）＊ｘ2＋Ｍｏｄ（６２８，１０３３）＊ｘ
＋Ｍｏｄ（９１１，１０３３），ｘ4＋１）                      （２７）
【００４０】
式（２０）〜式（２７）において、Ｍｏｄ（ａ，ｑ）は、整数ａを素数ｑで除算したときの剰余を表し、Ｍｏｄ（ｆ（ｘ），ｘ4＋１）は、多項式ｆ（ｘ）を多項式ｘ4＋１で除算したときの剰余（多項式）を表す。例えば、ｆ（ｘ）＝ｘ4に対するＭｏｄ（ｆ（ｘ），ｘ4＋１）は、ｆ（ｘ）＝−１に対するＭｏｄ（ｆ（ｘ），ｘ4＋１）と等しく、ｆ（ｘ）＝ｘ5に対するＭｏｄ（ｆ（ｘ），ｘ4＋１）は、ｆ（ｘ）＝−ｘに対するＭｏｄ（ｆ（ｘ），ｘ4＋１）と等しい。
【００４１】
ｎ−１次以下の２つの多項式ｆ（ｘ）及びｇ（ｘ）に対する２つの暗号データＥｎｃ（ｆ（ｘ），ｐｋ）及びＥｎｃ（ｇ（ｘ），ｐｋ）は、加算及び乗算に関して、次式のような性質を持つ。
【００４２】
Ｅｎｃ（ｆ（ｘ），ｐｋ）＋Ｅｎｃ（ｇ（ｘ），ｐｋ）
＝Ｅｎｃ（ｆ（ｘ）＋ｇ（ｘ），ｐｋ）                    （３１）
Ｅｎｃ（ｆ（ｘ），ｐｋ）＊Ｅｎｃ（ｇ（ｘ），ｐｋ）
＝Ｅｎｃ（ｆ（ｘ）＊ｇ（ｘ），ｐｋ）                    （３２）
【００４３】
さらに、特許文献１の暗号処理装置によれば、ベクトルデータを多項式変換により１つの多項式で表現し、その多項式を準同型暗号により暗号化することで、処理時間や暗号データのサイズが大幅に改善される。
【００４４】
この暗号処理装置では、例えば、次のような２つのｎ次元ベクトルが入力データとして用いられる。
【００４５】
Ａ＝（ａ0，ａ1，．．．，ａn-1）      （４１）
Ｂ＝（ｂ0，ｂ1，．．．，ｂn-1）      （４２）
【００４６】
２つのベクトルを暗号化したままで２つのベクトルの間の内積又は距離を高速に計算するために、例えば、次のような昇順変換と降順変換の２種類の多項式変換が用いられる。
［昇順変換］
【００４７】
【数１】
0006459658.tif 000002
【００４８】
［降順変換］
【００４９】
【数２】
0006459658.tif 000003
【００５０】
多項式ｐｍ１（Ａ）及び多項式ｐｍ２（Ｂ）を準同型暗号により暗号化すると、暗号化多項式Ｅ（ｐｍ１（Ａ））及び暗号化多項式Ｅ（ｐｍ２（Ｂ））が生成される。
【００５１】
Ｅ（ｐｍ１（Ａ））＝Ｅｎｃ（ｐｍ１（Ａ），ｐｋ）      （４５）
Ｅ（ｐｍ２（Ｂ））＝Ｅｎｃ（ｐｍ２（Ｂ），ｐｋ）      （４６）
【００５２】
暗号化多項式Ｅ（ｐｍ１（Ａ））及び暗号化多項式Ｅ（ｐｍ２（Ｂ））を乗算すると、暗号化したままで乗算ｐｍ１（Ａ）＊ｐｍ２（Ｂ）が行われる。そして、乗算結果Ｅ（ｐｍ１（Ａ））＊Ｅ（ｐｍ２（Ｂ））を復号すると、復号結果の多項式に含まれる定数項は、次式のような値になる。
【００５３】
【数３】
0006459658.tif 000004
【００５４】
式（４７）は、ベクトルＡとベクトルＢの内積を表している。この方法によれば、ベクトルＡとベクトルＢの各要素を暗号化して乗算する方法よりも効率的に、内積を計算することができる。さらに、この内積計算を応用することで、ハミング距離、Ｌ２ノルム等を暗号化したままで高速に計算することもできる。
【００５５】
図１は、特許文献１の暗号処理装置を適用した生体認証システムの構成例を示している。図１の生体認証システムは、生体情報を利用した個人認証システムであり、端末装置１０１、計算装置１０２、及び認証装置１０３を含む。計算装置１０２と、端末装置１０１及び認証装置１０３とは、通信ネットワークにより接続されている。端末装置１０１は、例えば、クライアント端末のようなユーザの装置であり、計算装置１０２及び認証装置１０３は、例えば、サーバである。端末装置１０１は、準同型暗号の公開鍵を持ち、認証装置１０３は、準同型暗号の秘密鍵を持つ。
【００５６】
生体認証システムは、ユーザがパスワード等の複雑な情報を覚える必要がないため、利用しやすい個人認証システムである反面、生体情報はユーザにとって終生不変な機密情報であるため、生体情報の漏洩等に対する強力な保護が望まれる。そこで、図１の生体認証システムでは、準同型暗号によりユーザの生体情報を保護している。
【００５７】
生体情報の登録時に、端末装置１０１は、登録者であるユーザの生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式（４１）のようなベクトルＡに変換し、暗号化処理１１１−１を行う。センサにより取得される生体情報としては、指紋、顔、静脈、虹彩等の画像情報又は声等の音声情報を用いることができる。
【００５８】
暗号化処理１１１−１において、端末装置１０１は、ベクトルＡを式（４３）のような多項式ｐｍ１（Ａ）に変換し、多項式ｐｍ１（Ａ）を準同型暗号により暗号化して暗号化多項式Ｅ（ｐｍ１（Ａ））を生成する。そして、端末装置１０１は、暗号化多項式Ｅ（ｐｍ１（Ａ））を表す暗号情報を計算装置１０２へ送信する。計算装置１０２は、端末装置１０１から受信した暗号情報を、登録生体情報を表すテンプレート１１２として、データベースに登録する。
【００５９】
生体情報の認証時に、端末装置１０１は、認証対象者であるユーザの生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式（４２）のようなベクトルＢに変換し、暗号化処理１１１−２を行う。
【００６０】
暗号化処理１１１−２において、端末装置１０１は、ベクトルＢを式（４４）のような多項式ｐｍ２（Ｂ）に変換し、多項式ｐｍ２（Ｂ）を準同型暗号により暗号化して暗号化多項式Ｅ（ｐｍ２（Ｂ））を生成する。そして、端末装置１０１は、暗号化多項式Ｅ（ｐｍ２（Ｂ））を表す暗号情報を計算装置１０２へ送信する。
【００６１】
計算装置１０２は、テンプレート１１２が表す暗号化多項式Ｅ（ｐｍ１（Ａ））と、端末装置１０１から受信した暗号情報が表す暗号化多項式Ｅ（ｐｍ２（Ｂ））とを用いて暗号演算処理を行い、暗号演算結果を表す暗号情報を認証装置１０３へ送信する。
【００６２】
認証装置１０３は、暗号処理装置１０１から受信した暗号情報に基づいて、認証対象者を認証する認証処理１１４を行う。認証処理１１４において、認証装置１０３は、受信した暗号情報を復号してベクトルＡとベクトルＢの演算結果を生成し、生成した演算結果に基づいて認証を行う。
【００６３】
ベクトルＡとベクトルＢの演算結果としては、例えば、ベクトルＡとベクトルＢとの間の距離（ハミング距離等）が用いられる。この場合、計算装置１０２は、２つのベクトルを暗号化したままの状態で、ベクトルＡとベクトルＢとの間の距離を計算することができ、認証装置１０３は、距離を閾値と比較して、認証の成否を判定することができる。距離が閾値より小さければ、認証対象者の認証が成功したと判定され、距離が閾値以上であれば、認証が失敗したと判定される。
【００６４】
このような生体認証システムによれば、端末装置１０１から計算装置１０２へは暗号化された情報のみが送信され、計算装置１０２は秘密鍵を持たないため、計算装置１０２がユーザの生体情報を表すベクトルを知ることはない。また、計算装置１０２から認証装置１０３へは暗号演算結果のみが送信され、認証装置１０３は、復号によりベクトルＡとベクトルＢの演算結果のみを生成するため、認証装置１０３がユーザの生体情報を表すベクトルを知ることもない。
【００６５】
したがって、計算装置１０２と認証装置１０３とが結託しない限り、ベクトルＡ又はベクトルＢが生成されることはなく、ユーザの生体情報を保護したままで個人認証サービスが提供される。
【００６６】
しかしながら、図１の生体認証システムにおいては、悪意のあるユーザが再送攻撃を行って、正規のユーザに成りすますことが可能である。再送攻撃は、認証システムにおける代表的な成りすまし攻撃の１つであり、具体的には、攻撃者が端末装置１０１と計算装置１０２との間の通信路を盗聴することで、正規のユーザが送信する暗号化多項式の暗号情報を不正に取得する。攻撃者は、正規のユーザに成りすまして、取得した暗号情報を計算装置１０２へ再送することで、認証装置１０３による認証を成功させることができる。
【００６７】
このような再送攻撃に対する対策として、チャレンジ・レスポンス認証方式が有効である。この認証方式では、認証側の装置がチャレンジと呼ばれる乱数を生成して、端末装置へ送信する。端末装置は、受信したチャレンジと認証対象の情報とを基にレスポンスと呼ばれるデータを生成し、認証側の装置へ返信する。そして、認証側の装置は、チャレンジと受信したレスポンスとを用いて認証処理を行う。チャレンジ・レスポンス認証方式によれば、チャレンジが生成される度にレスポンスが毎回変化するため、レスポンスを盗聴して再送しても認証に失敗してしまう。
【００６８】
そこで、図１の生体認証システムにおける再送攻撃対策として、チャレンジ・レスポンス認証の仕組みを導入することが考えられる。
【００６９】
実施の形態の生体認証システムの説明の前に、準同型暗号による暗号演算処理に関する性質について述べる。
【００７０】
式（３１）及び式（３２）に示したように、準同型暗号による暗号演算処理において、２つの多項式ｆ（ｘ）及びｇ（ｘ）に対する加算及び乗算は、次式のような性質を持つ。
【００７１】
Ｅ（ｆ（ｘ））＋Ｅ（ｇ（ｘ））＝Ｅ（ｆ（ｘ）＋ｇ（ｘ））      （５１）
Ｅ（ｆ（ｘ））＊Ｅ（ｇ（ｘ））＝Ｅ（ｆ（ｘ）＊ｇ（ｘ））      （５２）
【００７２】
さらに、非特許文献２の実用的な構成法を用いた場合、これらの加算及び乗算の性質を次式のように書き換えることができる。
【００７３】
ｆ（ｘ）＋Ｅ（ｇ（ｘ））＝Ｅ（ｆ（ｘ）＋ｇ（ｘ））      （５３）
ｆ（ｘ）＊Ｅ（ｇ（ｘ））＝Ｅ（ｆ（ｘ）＊ｇ（ｘ））      （５４）
【００７４】
式（５３）又は式（５４）は、ｆ（ｘ）を暗号化せずにＥ（ｇ（ｘ））と加算又は乗算しても、得られた演算結果を復号すれば、Ｅ（ｆ（ｘ）＋ｇ（ｘ））又はＥ（ｆ（ｘ）＊ｇ（ｘ））の復号結果と一致することを表している。このような暗号演算処理によれば、ｆ（ｘ）の暗号化処理を省略することができるため、処理が効率化される。そこで、以下の暗号演算処理では、式（５３）及び式（５４）の性質を用いることがある。
【００７５】
図２は、実施の形態に係る生体認証システムの構成図である。
生体認証システム２００は、端末装置２０１、計算装置３０１、および認証装置４０１を備える。端末装置２０１、計算装置３０１、および認証装置４０１は、通信ネットワークにより接続されており、互いに通信可能である。
【００７６】
端末装置２０１は、例えば、クライアント端末のようなユーザの装置であり、計算装置３０１および認証装置４０１は、例えば、サーバである。端末装置２０１および認証装置４０１は、準同型暗号の公開鍵を持ち、認証装置４０１は、公開鍵に対応する準同型暗号の秘密鍵を持つ。また、端末装置２０１および認証装置４０１は、公開鍵の生成時に用いられた鍵パラメータｔを持つ。認証装置４０１は、暗号処理装置の一例である。
【００７７】
端末装置２０１は、生体情報の登録時に、登録者の生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式（４１）のようなベクトルＡに変換する。次に、端末装置２０１は、ベクトルＡに最終成分（要素）として０を付加したベクトルＡ’を生成する。尚、ベクトルＡ’はベクトル（Ａ||０）と表記する場合もある。ベクトルＡ’は、下式（６１）のようになる。
【００７８】
Ａ’＝（Ａ||０）＝（ａ0，ａ1，．．．，ａn-1，０）
＝（ａ0，ａ1，．．．，ａn-1，ａn），ただしａn＝０      （６１）
【００７９】
端末装置２０１は、ベクトルＡ’を下式（６３）のような多項式ｐｍ１（Ａ’）に変換し、多項式ｐｍ１（Ａ’）を準同型暗号により暗号化して暗号化多項式Ｅ（ｐｍ１（Ａ’））を生成する。そして、端末装置２０１は、暗号化多項式Ｅ（ｐｍ１（Ａ’））を表す暗号情報を計算装置３０１へ送信する。
【００８０】
【数４】
0006459658.tif 000005
【００８１】
端末装置２０１は、認証装置４０１からチャレンジを受信し、乱数ｒを生成する。端末装置２０１は、乱数ｒとチャレンジを用いてレスポンスを生成し、レスポンスを計算装置３０１に送信する。
【００８２】
計算装置３０１は、受信部３１１、記憶部３２１、算出部３３１、および送信部３４１を備える。
【００８３】
受信部３１１は、端末装置２０１から暗号情報を受信する。また、受信部３１１は、端末装置２１からレスポンスを受信する。
【００８４】
記憶部３２１は、計算装置３０１で使用されるプログラムやデータ等を記憶する記憶装置である。記憶部３２１は、暗号化多項式を格納する。詳細には、記憶部３２１は、端末装置２０１から受信した暗号化多項式Ｅ（ｐｍ１（Ａ’））を示す暗号情報を登録暗号情報３２２として格納する。暗号化多項式を表す暗号情報としては、例えば、暗号化多項式の各項が有する係数を用いることができる。また、記憶部３２１は、公開鍵および鍵パラメータｔを格納する。
【００８５】
算出部３３１は、端末装置２０１から受信したレスポンスと登録暗号情報３２２から暗号演算を行う。
【００８６】
送信部３４１は、算出部３３１による暗号演算結果を表す暗号情報と乱数ｒを表す暗号情報を認証装置４０１に送信する。
【００８７】
認証装置４０１は、生成部４１１、送信部４２１、受信部４３１、復号部４４１、認証処理部４５１、および記憶部４６１を備える。
【００８８】
生成部４１１は、乱数ｐを生成し、乱数ｐを用いてチャレンジを生成する。
送信部４２１は、生成されたチャレンジを端末装置２０１に送信する。
【００８９】
受信部４３１は、計算装置３０１から受信した暗号情報を受信する。
復号部４４１は、受信した暗号情報を復号する。
【００９０】
認証処理部４５１は、復号結果に基づいて、認証処理を行う。
記憶部４６１は、認証装置４０１で使用されるプログラムやデータ等を記憶する記憶装置である。記憶部４６１は、生成した乱数ｐ、公開鍵、秘密鍵、および鍵パラメータｔを格納する。
【００９１】
図３は、実施の形態に係る暗号処理のフローチャートである。
ステップ５０１において、端末装置２０１は、認証要求を認証装置４０１へ送信する。
【００９２】
ステップ５０２において、受信部４３１は、認証要求を受信する。そして、生成部４１１は、乱数ｐを生成する。乱数ｐは、０より大きい整数であり、鍵生成パラメータｔよりも小さい。生成部４１１は、ゼロベクトルに乱数ｒを成分として付加したベクトルＰ’を生成する。詳細には、生成部４１１は、乱数ｐを最終成分とし、最終成分以外のｎ個の成分を０とするベクトルＰ’を生成する。尚、ベクトルＰ’はベクトル（０・・・０||ｐ）と表記する場合もある。ベクトルＰ’は、下式（７１）のようになる。
【００９３】
Ｐ’＝（０・・・０||ｐ）＝（０，０，．．．，０，p）
＝（ｐ0，ｐ1，．．．，ｐn-1，ｐn），ただしｐ0〜ｐn-1＝０，ｐn＝ｐ（７１）
【００９４】
ステップ５０３において、生成部４１１は、ベクトルＰ’を降順多項式変換により式（７２）のような多項式ｐｍ２（Ｐ’）に変換する。
【００９５】
【数５】
0006459658.tif 000006
【００９６】
生成部４１１は、多項式ｐｍ２（Ｐ’）を準同型暗号により暗号化してチャレンジ暗号データｃｈｌ＝Ｅ（ｐｍ２（Ｐ’））を生成する。
【００９７】
ステップ５０４において、送信部４２１は、チャレンジ暗号データｃｈｌを表す暗号情報をチャレンジとして端末装置２０１に送信する。
【００９８】
ステップ５０５において、端末装置２０１は、認証装置４０１からチャレンジ暗号データｃｈｌを受信する。詳細には、端末装置２０１は、チャレンジ暗号データｃｈｌを表す暗号情報を受信する。端末装置２０１は、認証対象者の生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式（４２）のようなベクトルＢに変換する。尚、実施の形態において、ベクトルＡおよびベクトルＢは、２値ベクトルである。すなわち、ベクトルＡの要素ａ0〜要素ａn-1のすべてが０又は１であり、ベクトルＢの要素ｂ0〜要素ｂn-1のすべてが０又は１である。
【００９９】
ステップ５０６において、端末装置２０１は、ベクトルＢに最終成分（要素）として０を付加したベクトルＢ’を生成する。尚、ベクトルＢ’はベクトル（Ｂ||０）と表記する場合もある。ベクトルＢ’は、下式（７３）のようになる。
【０１００】
Ｂ’＝（Ｂ||０）＝（ｂ0，ｂ1，．．．，ｂn-1，０）
＝（ｂ0，ｂ1，．．．，ｂn-1，ｂn），ただしｂn＝０      （７３）
【０１０１】
端末装置２０１は、ベクトルＢ’を降順多項式変換により下式（７４）のような多項式ｐｍ２（Ｂ’）に変換する。
【０１０２】
【数６】
0006459658.tif 000007
【０１０３】
ステップ５０７において、端末装置２０１は、乱数ｒを生成する。そして、端末装置２０１は、ｔを法とする乱数ｒの逆元ｒ−１を算出する。尚、乱数ｒは、０より大きい整数であり、鍵パラメータｔよりも小さい。
【０１０４】
ステップ５０８において、端末装置２０１は、チャレンジ暗号データｃｈｌと乱数ｒとを乗算し、乗算結果に多項式ｐｍ２（Ｂ’）を加算して、レスポンス暗号データｒｅｓを算出する。暗号化多項式であるレスポンス暗号データｒｅｓは、式（５３）、（５４）で示される性質を用いることにより、下式（７５）のようになる。
【０１０５】
ｒｅｓ＝ｐｍ２（Ｂ’）＋ｃｈｌ＊ｒ
＝ｐｍ２（Ｂ||０）＋Ｅ（ｐｍ２（０・・・０||ｐ））＊ｒ
＝ｐｍ２（Ｂ||０）＋Ｅ（ｐｍ２（０・・・０||ｒｐ））
＝Ｅ（ｐｍ２（Ｂ||ｒｐ））      （７５）
【０１０６】
尚、ベクトル（Ｂ||ｒｐ）＝（ｂ0，ｂ1，．．．，ｂn-1，ｒｐ）である。
【０１０７】
さらに、端末装置２０１は、逆元ｒ−１を準同型暗号により暗号化して暗号化逆元Ｅ（ｒ−１）を生成する。
【０１０８】
ステップ５０９において、端末装置２０１は、レスポンス暗号データｒｅｓと暗号化逆元Ｅ（ｒ−１）をそれぞれ表す暗号情報をレスポンスとして計算装置３０１に送信する。暗号化逆元Ｅ（ｒ−１）から暗号化乱数Ｅ（ｒ）を算出するのは困難なので、攻撃者がチャレンジ暗号データｃｈｌとレスポンス暗号データｒｅｓとを盗聴した場合でも、それらの情報から暗号化多項式Ｅ（ｐｍ２(Ｂ||０)が算出されることを防止でき、セキュリティが向上する。
【０１０９】
ステップ５１０において、受信部３１１は、端末装置２０１からレスポンスを受信する。算出部３３１は、記憶部３２１に格納されている登録暗号情報３２２（すなわち、暗号化多項式Ｅ（ｐｍ１（Ａ’）））と、レスポンス暗号データｒｅｓ（すなわち、暗号化多項式Ｅ（ｐｍ２（Ｂ||ｒｐ）））とを用いて暗号演算処理を行い、暗号演算結果を生成する。
【０１１０】
詳細には、算出部は、Ｅ（ｐｍ１（Ａ’））とＥ（ｐｍ２（Ｂ||ｒｐ））の暗号演算結果として、下式（７６）によりベクトルＡ’とベクトル（Ｂ||ｒｐ）の暗号化ハミング距離Ｅ（ＤH）を計算する。
【０１１１】
Ｅ（ＤH）＝Ｅ（ｐｍ１（Ａ’））＊Ｃ１＋Ｅ（ｐｍ２（Ｂ||ｒｐ））＊Ｃ２
−２＊Ｅ（ｐｍ１（Ａ’））＊Ｅ（ｐｍ２（Ｂ||ｒｐ））      （７６）
ここで、多項式Ｃ１及び多項式Ｃ２は、下式により与えられる。
【０１１２】
【数７】
0006459658.tif 000008
【０１１３】
ステップ５１１において、送信部３４１は、暗号化ハミング距離Ｅ（ＤH）と暗号化逆元Ｅ（ｒ−１）をそれぞれ表す暗号情報を認証装置４０１へ送信する。暗号化逆元Ｅ（ｒ−１）を表す暗号情報は、乱数ｒを表す暗号情報の一例である。
【０１１４】
ステップ５１２において、受信部４３１は、暗号化ハミング距離Ｅ（ＤH）と暗号化逆元Ｅ（ｒ−１）をそれぞれ表す暗号情報を受信する。
【０１１５】
復号部４４１は、受信した暗号情報が表す暗号化ハミング距離Ｅ（ＤH）を復号して、復号結果である多項式ＤHを生成する。この多項式ＤHは、下式（７９）により計算される多項式と等価である。
【０１１６】
ｐｍ１（Ａ’）＊Ｃ１＋ｐｍ２（Ｂ||ｒｐ）＊Ｃ２
−２＊ｐｍ１（Ａ’）＊ｐｍ２（Ｂ||ｒｐ）                    （７９）
【０１１７】
さらに、復号部４４１は、受信した暗号情報が表す暗号化逆元を復号して逆元ｒ−１を算出する。
【０１１８】
ステップ５１３において、認証処理部４５１は、逆元ｒ−１から乱数ｒを算出する。認証処理部４５１は、乱数ｒと乱数ｐを乗算して乗算結果ｒｐを算出する。認証処理部４５１は、多項式ＤHに含まれる定数項から、下式（８０）で表されるベクトルＡ’とベクトル（Ｂ||ｒｐ）のハミング距離ＨＤを算出する。
【０１１９】
ＨＤ＝ａ0＋ａ1＋・・・＋ａn-1＋ａn＋ｂ0＋ｂ1＋・・・＋ｂn-1＋ｂn
−２（ａ0ｂ0＋ａ1ｂ1＋・・・＋ａn-1ｂn-1＋ａnｂn），
ただし、ａn＝０，ｂn＝ｒｐ          （８０）
【０１２０】
認証処理部４５１は、ハミング距離ＨＤから乗算結果ｒｐを減算して、演算結果を算出する。上式（８０）で表されるベクトルＡ’とベクトル（Ｂ||ｒｐ）のハミング距離ＨＤは、ベクトルＡとベクトルＢのハミング距離ＨＤＡＢに乗算結果ｒｐを加算した値と等しい。したがって、ハミング距離ＨＤから乗算結果ｒｐを減算することにより、演算結果として、ベクトルＡとベクトルＢのハミング距離ＨＤＡＢが得られる。
【０１２１】
認証処理部４５１は、演算結果（ハミング距離ＨＤＡＢ）に基づいて認証対象者の認証を行い、認証結果を出力する。詳細には、認証処理部４５１は、演算結果（ハミング距離ＨＤＡＢ）を閾値と比較して、認証の成否を判定する。この場合、演算結果（ハミング距離ＨＤＡＢ）が閾値より小さければ、認証対象者の認証が成功したと判定され、演算結果（ハミング距離ＨＤＡＢ）が閾値以上であれば、認証が失敗したと判定される。
【０１２２】
実施の形態の生体認証システムによれば、認証装置がチャレンジ暗号データを生成する度にレスポンス暗号データが変化するため、攻撃者がレスポンス暗号データを盗聴して再送しても認証に失敗する。したがって、再送攻撃による成りすましを防ぐことができる。
【０１２３】
また、実施の形態の生体認証システムによれば、攻撃者が計算装置のデータを見ることが可能な場合（例えば、攻撃者が計算装置の管理者の場合）でも、端末装置と認証装置で生成された乱数を用いてレスポンス暗号データを生成するので、再送攻撃による成りすましを防ぐことができる。
【０１２４】
図２の生体認証システムの構成は一例に過ぎず、計算装置３０１および認証装置４０１の用途や条件に応じて一部の構成要素を省略又は変更してもよい。例えば、図２の生体認証システムにおいて、認証対象者は、端末装置２０１とは異なる端末装置を用いて、生体情報の認証のための処理を行ってもよい。複数のユーザが生体情報の登録及び認証のための処理を行ってもよく、複数のユーザのための複数の端末装置２０１を設けてもよい。
【０１２５】
さらに、図２の計算装置３０１および認証装置４０１は、ベクトルＡとベクトルＢの演算結果を利用する、生体認証システム以外の認証システムにも適用できる。例えば、生体情報以外の画像情報、音声情報等をベクトルに変換して、個人認証を行うことも可能である。
【０１２６】
図３のフローチャートは一例に過ぎず、計算装置３０１、認証装置４０１、又は生体認証システムの構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、図３の暗号処理において、認証装置４０１の外部の装置が乱数を生成する場合は、ステップ５０２の乱数ｐを生成する処理を省略することができる。同様に、端末装置２０１の外部の装置が乱数を生成する場合は、ステップ５０７の乱数ｒを生成する処理を省略することができる。
【０１２７】
式（１）〜式（８０）は一例に過ぎず、他の定式化を用いてもよい。例えば、式（６３）の昇順変換をベクトルＡ’に対して適用し、式（７２）の降順変換をベクトルＰ’に適用し、式（７４）の降順変換をベクトルＢ’に対して適用する代わりに、昇順変換をベクトルＰ’およびベクトルＢ’に対して適用し、降順変換をベクトルＡ’に対して適用してもよい。
【０１２８】
上述のベクトルＡ’，Ｂ’，Ｐ’は一例に過ぎず、ベクトルＡ，Ｂに成分として付加する０の位置とベクトルＰ’の乱数ｐの位置が同じであれば、ベクトルＡ’，Ｂ’の０の位置とベクトルＰ’の乱数ｐの位置は任意の位置でよい。例えば、ベクトルＡに先頭成分として０を付加したベクトルをベクトルＡ’とし、乱数ｐを先頭成分として、先頭成分以外のｎ個の成分を０とするベクトルをベクトルＰ’とし、ベクトルＢに先頭成分として０を付加したベクトルをベクトルＢ’としてもよい。
【０１２９】
準同型暗号による暗号演算処理において、２つの多項式ｆ（ｘ）及びｇ（ｘ）に対する加算及び乗算を、式（５３）及び式（５４）に基づいて行う代わりに、式（５１）及び式（５２）に基づいて行ってもよい。
【０１３０】
端末装置２０１が暗号化逆元Ｅ（ｒ−１）を示す暗号情報を送信する代わりに暗号化乱数Ｅ（ｒ）を示す暗号情報を送信しても良い。その場合、計算装置３０１の送信部４３１は、暗号化逆元Ｅ（ｒ−１）を示す暗号情報を送信する代わりに暗号化乱数Ｅ（ｒ）を示す暗号情報を送信する。認証装置４０１の復号部４４１は、受信した暗号情報を復号して乱数ｒを算出し、認証処理部４５１は、復号部４４１により得られた乱数ｒを利用する。
【０１３１】
式（７９）の多項式ＤHに含まれる定数項の代わりに、他の項の係数にハミング距離ＨＤが現れるような定式化を用いてもよい。
【０１３２】
図２の端末装置２０１、計算装置３０１、および認証装置４０１は、例えば、ハードウェア回路として実装することができる。この場合、計算装置３０１および認証装置４０１の各構成要素を個別の回路として実装してもよく、複数の構成要素を１つの集積回路として実装してもよい。
【０１３３】
図４は、情報処理装置（コンピュータ）の構成図である。
端末装置２０１、計算装置３０１、および認証装置４０１は、図４に示すような情報処理装置（コンピュータ）を用いて実現することも可能である。
【０１３４】
図４の情報処理装置は、Central Processing Unit（ＣＰＵ）７０１、メモリ７０２、入力装置７０３、出力装置７０４、補助記憶装置７０５、媒体駆動装置７０６、及びネットワーク接続装置７０７を含む。これらの構成要素はバス７０８により互いに接続されている。
【０１３５】
メモリ７０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリである。メモリ７０２は、端末装置２０１、計算装置３０１、または認証装置４０１が行う処理のためのプログラム及びデータを格納する。メモリ７０２は、記憶部３２１、４６１として用いることができる。
【０１３６】
情報処理装置が端末装置２０１である場合、ＣＰＵ７０１は、例えば、メモリ７０２を利用してプログラムを実行することにより、端末装置２０１の処理を行う。
【０１３７】
情報処理装置が計算装置３０１である場合、ＣＰＵ７０１は、例えば、メモリ７０２を利用してプログラムを実行することにより、算出部３３１として動作し、暗号処理を行う。
【０１３８】
情報処理装置が認証装置４０１である場合、ＣＰＵ７０１は、例えば、メモリ７０２を利用してプログラムを実行することにより、生成部４２１、復号部４４１、および認証処理部４５１として動作し、暗号処理を行う。
【０１３９】
入力装置７０３は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示や情報の入力に用いられる。出力装置７０４は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザ又はオペレータへの問い合わせや処理結果の出力に用いられる。処理結果は、認証装置４０１による認証処理の結果であってもよい。
【０１４０】
補助記憶装置７０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置７０５は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置７０５にプログラム及びデータを格納しておき、それらをメモリ７０２にロードして使用することができる。補助記憶装置７０５は、記憶部３２１、４６１として用いることができる。
【０１４１】
媒体駆動装置７０６は、可搬型記録媒体７０９を駆動し、その記録内容にアクセスする。可搬型記録媒体７０９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体７０９は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等であってもよい。ユーザ又はオペレータは、この可搬型記録媒体７０９にプログラム及びデータを格納しておき、それらをメモリ７０２にロードして使用することができる。
【０１４２】
このように、プログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ７０２、補助記憶装置７０５、及び可搬型記録媒体７０９のような、物理的な（非一時的な）記録媒体である。
【０１４３】
ネットワーク接続装置７０７は、Local Area Network（ＬＡＮ）、インターネット等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、ネットワーク接続装置７０７を介して外部の装置からプログラム及びデータを受信し、それらをメモリ７０２にロードして使用することができる。ネットワーク接続装置７０７は、受信部３１１、４３１または送信部３４１、４２１として用いることができる。
【０１４４】
なお、情報処理装置が図４のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、ユーザ又はオペレータからの指示や情報の入力を行わない場合は、入力装置７０３を省略してもよく、ユーザ又はオペレータへの問い合わせや処理結果の出力を行わない場合は、出力装置７０４を省略してもよい。情報処理装置が可搬型記録媒体７０９にアクセスしない場合は、媒体駆動装置７０６を省略してもよい。
【０１４５】
以上の実施の形態に関し、さらに以下の付記を開示する。
（付記１）
ゼロベクトルに第１の乱数を成分として付加した第１のベクトルに対応する第１の多項式を暗号化して、第１の暗号化多項式を生成する生成部と、
前記第１の暗号化多項式を表す第１の暗号情報を端末装置に送信する送信部と、
前記第１の暗号化多項式と第２の乱数との乗算結果に対して、第２のベクトルに０を成分として付加した第３のベクトルに対応する第２の多項式を加算した第２の暗号化多項式と、第４のベクトルに０を成分として付加した第５のベクトルに対応する第３の多項式を暗号化した第３の暗号化多項式とから算出される、前記第５のベクトルと前記第２のベクトルに前記第１の乱数と前記第２の乱数との乗算結果を成分として付加した第６のベクトルとの第１の演算結果を含む第４の暗号化多項式を表す第２の暗号情報を計算装置から受信するとともに、前記第２の乱数を表す第３の暗号情報を前記計算装置から受信する受信部と、
前記第２の暗号情報および前記第３の暗号情報を復号する復号部と、
前記第２の暗号情報の復号結果と前記第３の暗号情報の復号結果とに基づいて、前記第２のベクトルと前記第４のベクトルとの第２の演算結果を生成する処理部と、
を備える暗号処理装置。
（付記２)
前記第１の演算結果は、前記第５のベクトルと前記第６のベクトルとのハミング距離を表し、
前記第２の演算結果は、前記第２ベクトルと前記第４のベクトルとのハミング距離を表すことを特徴とする付記１記載の暗号処理装置。
（付記３）
前記第３の暗号情報は、前記第２の乱数の逆元を暗号化した暗号化逆元を表し、
前記処理部は、前記第３の暗号情報の復号結果である前記第２の乱数の逆元から前記第２の乱数を算出し、前記第１の演算結果から前記第１の乱数と前記第２の乱数との前記乗算結果を減算することで前記第２の演算結果を算出することを特徴とする付記１又は２記載の暗号処理装置。
（付記４）
ゼロベクトルに第１の乱数を成分として付加した第１のベクトルに対応する第１の多項式を暗号化して、第１の暗号化多項式を生成し、
前記第１の暗号化多項式を表す第１の暗号情報を端末装置に送信し、
前記第１の暗号化多項式と第２の乱数との乗算結果に対して、第２のベクトルに０を成分として付加した第３のベクトルに対応する第２の多項式を加算した第２の暗号化多項式と、第４のベクトルに０を成分として付加した第５のベクトルに対応する第３の多項式を暗号化した第３の暗号化多項式とから算出される、前記第５のベクトルと前記第２のベクトルに前記第１の乱数と前記第２の乱数との乗算結果を成分として付加した第６のベクトルとの第１の演算結果を含む第４の暗号化多項式を表す第２の暗号情報を計算装置から受信するとともに、前記第２の乱数を表す第３の暗号情報を前記計算装置から受信し、
前記第２の暗号情報および前記第３の暗号情報を復号し、
前記第２の暗号情報の復号結果と前記第３の暗号情報の復号結果とに基づいて、前記第２のベクトルと前記第４のベクトルとの第２の演算結果を生成する、
処理を暗号処理装置が実行することを特徴とする暗号処理方法。
（付記５）
前記第１の演算結果は、前記第５のベクトルと前記第６のベクトルとのハミング距離を表し、
前記第２の演算結果は、前記第２ベクトルと前記第４のベクトルとのハミング距離を表すことを特徴とする付記４記載の暗号処理方法。
（付記６）
前記第３の暗号情報は、前記第２の乱数の逆元を暗号化した暗号化逆元を表し、
前記第２の演算結果を生成する処理は、前記第３の暗号情報の復号結果である前記第２の乱数の逆元から前記第２の乱数を算出し、前記第１の演算結果から前記第１の乱数と前記第２の乱数との前記乗算結果を減算することで前記第２の演算結果を算出することを特徴とする付記４又は５記載の暗号処理方法。
（付記７）
コンピュータに、
ゼロベクトルに第１の乱数を成分として付加した第１のベクトルに対応する第１の多項式を暗号化して、第１の暗号化多項式を生成し、
前記第１の暗号化多項式を表す第１の暗号情報を端末装置に送信し、
前記第１の暗号化多項式と第２の乱数との乗算結果に対して、第２のベクトルに０を成分として付加した第３のベクトルに対応する第２の多項式を加算した第２の暗号化多項式と、第４のベクトルに０を成分として付加した第５のベクトルに対応する第３の多項式を暗号化した第３の暗号化多項式とから算出される、前記第５のベクトルと前記第２のベクトルに前記第１の乱数と前記第２の乱数との乗算結果を成分として付加した第６のベクトルとの第１の演算結果を含む第４の暗号化多項式を表す第２の暗号情報を計算装置から受信するとともに、前記第２の乱数を表す第３の暗号情報を前記計算装置から受信し、
前記第２の暗号情報および前記第３の暗号情報を復号し、
前記第２の暗号情報の復号結果と前記第３の暗号情報の復号結果とに基づいて、前記第２のベクトルと前記第４のベクトルとの第２の演算結果を生成する、
処理を実行させる暗号処理プログラム。
（付記８）
前記第１の演算結果は、前記第５のベクトルと前記第６のベクトルとのハミング距離を表し、
前記第２の演算結果は、前記第２ベクトルと前記第４のベクトルとのハミング距離を表すことを特徴とする付記７記載の暗号処理プログラム。
（付記９）
前記第３の暗号情報は、前記第２の乱数の逆元を暗号化した暗号化逆元を表し、
前記第２の演算結果を生成する処理は、前記第３の暗号情報の復号結果である前記第２の乱数の逆元から前記第２の乱数を算出し、前記第１の演算結果から前記第１の乱数と前記第２の乱数との前記乗算結果を減算することで前記第２の演算結果を算出することを特徴とする付記７又は８記載の暗号処理プログラム。
【符号の説明】
【０１４６】
１０１    端末装置
１０２    計算装置
１０３    認証装置
２００    生体認証システム
２０１    端末装置
３０１    計算装置
３１１    受信部
３２１    記憶部
３３１    算出部
３４１    送信部
４０１    認証装置
４１１    生成部
４２１    送信部
４３１    受信部
４４１    復号部
４５１    認証処理部
【図１】
0006459658.tif 000009
【図２】
0006459658.tif 000010
【図３】
0006459658.tif 000011
【図４】
0006459658.tif 000012