(57)【特許請求の範囲】
【請求項１】
端末装置と暗号処理装置とを備えるシステムであって、
前記暗号処理装置は、第１のベクトルに対応する第１の多項式を準同型暗号により暗号化した暗号化多項式を表す第１の暗号情報を記憶する記憶部、受信部、生成部、及び出力部を含み、
前記端末装置は、乱数を用いて生成される単項式を前記準同型暗号により暗号化した暗号化単項式を表す第２の暗号情報を用いて、第２のベクトルに対応する第２の多項式と前記単項式との乗算結果を前記準同型暗号により暗号化した暗号化結果を生成し、生成した暗号化結果を表す第３の暗号情報を前記暗号処理装置へ送信し、
前記受信部は、前記端末装置から前記第３の暗号情報を受信し、
前記生成部は、前記第１の暗号情報と、前記第３の暗号情報と、前記単項式を表す情報とを用いて、前記第１のベクトルと前記第２のベクトルとの演算結果を前記準同型暗号により暗号化した暗号化結果を含む暗号化多項式を生成し、
前記出力部は、前記生成部が生成した暗号化多項式を表す第４の暗号情報を出力する、
ことを特徴とするシステム。
【請求項２】
前記システムは、前記第４の暗号情報を復号して前記演算結果に基づく認証処理を行う認証装置をさらに備え、
前記暗号処理装置は、前記第２の暗号情報を生成して前記端末装置へ送信し、
前記演算結果は、前記第１のベクトルと前記第２のベクトルとの乗算結果であり、
前記生成部は、前記第３の暗号情報が表す前記暗号化結果と前記単項式の逆数とを乗算して、前記第２の多項式を前記準同型暗号により暗号化した暗号化多項式を生成し、前記第１の多項式を前記準同型暗号により暗号化した前記暗号化多項式と前記第２の多項式を前記準同型暗号により暗号化した前記暗号化多項式とを乗算して、前記演算結果を前記準同型暗号により暗号化した暗号化結果を含む前記暗号化多項式を生成し、前記出力部は、前記第４の暗号情報を前記認証装置へ出力することを特徴とする請求項１記載のシステム。
【請求項３】
前記システムは、前記第４の暗号情報を復号して前記演算結果に基づく認証処理を行う認証装置をさらに備え、
前記認証装置は、前記第２の暗号情報を生成して前記端末装置へ送信し、
前記受信部は、前記端末装置から前記第２の暗号情報をさらに受信し、前記生成部は、前記第２の暗号情報を前記単項式を表す前記情報として用い、前記第１の多項式を前記準同型暗号により暗号化した前記暗号化多項式と前記第２の暗号情報が表す前記暗号化単項式とを乗算した結果、及び、前記第１の多項式を前記準同型暗号により暗号化した前記暗号化多項式と前記第３の暗号情報が表す前記暗号化結果とを乗算した結果を用いて、前記演算結果を前記準同型暗号により暗号化した暗号化結果を含む前記暗号化多項式を生成し、前記出力部は、前記第４の暗号情報を前記認証装置へ出力することを特徴とする請求項１記載のシステム。
【請求項４】
第１のベクトルに対応する第１の多項式を準同型暗号により暗号化した暗号化多項式を表す第１の暗号情報を記憶する暗号処理装置と端末装置とによって実行される暗号処理方法であって、
前記端末装置が、乱数を用いて生成される単項式を前記準同型暗号により暗号化した暗号化単項式を表す第２の暗号情報を用いて、第２のベクトルに対応する第２の多項式と前記単項式との乗算結果を前記準同型暗号により暗号化した暗号化結果を生成し、
前記端末装置が、生成した暗号化結果を表す第３の暗号情報を前記暗号処理装置へ送信し、
前記暗号処理装置が、前記端末装置から前記第３の暗号情報を受信し、
前記暗号処理装置が、前記第１の暗号情報と、前記第３の暗号情報と、前記単項式を表す情報とを用いて、前記第１のベクトルと前記第２のベクトルとの演算結果を前記準同型暗号により暗号化した暗号化結果を含む暗号化多項式を生成し、
前記暗号処理装置が、生成した暗号化多項式を表す第４の暗号情報を出力する、
ことを特徴とする暗号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置、暗号処理方法、及び暗号処理プログラムに関する。
【背景技術】
【０００２】
現在、個人情報及び機密情報を保護する規制が強化される一方で、それらの情報を利用したサービスの市場が拡大しつつある。このようなサービスとしては、例えば、スマートフォンから取得できる個人ユーザの位置情報等を活用したサービスが挙げられる。
【０００３】
そこで、個人情報又は機密情報を保護したままで、情報の利活用ができる秘匿化技術が注目されている。秘匿化技術の中には、データ種別又はサービス要件に応じて暗号技術又は統計技術を用いる方法がある。
【０００４】
暗号技術を用いた秘匿化技術として、準同型暗号技術が知られている。準同型暗号技術は、暗号化と復号とで一対の異なる鍵を用いる公開鍵暗号方式の１つであり、暗号化したままでデータ操作が可能となる機能を有する。例えば、加算及び乗算に関する準同型暗号の暗号化関数Ｅは、平文ｍ１及び平文ｍ２に対して、次式のような性質を持つ。
【０００５】
Ｅ（ｍ１）＋Ｅ（ｍ２）＝Ｅ（ｍ１＋ｍ２）      （１）
Ｅ（ｍ１）＊Ｅ（ｍ２）＝Ｅ（ｍ１＊ｍ２）      （２）
【０００６】
式（１）は、加算に対して準同型であることを表し、式（２）は、乗算に対して準同型であることを表す。このように、準同型暗号技術によれば、２つ以上の暗号文を対象に加算、乗算等に対応する操作を行うことで、暗号文を復号することなく、元の平文同士に対して加算、乗算等を行った演算結果の暗号文を得ることができる。
【０００７】
このような準同型暗号の性質は、電子投票、電子現金等の分野、及び近年ではクラウド・コンピューティングの分野において利用されることが期待されている。加算又は乗算に関する準同型暗号としては、乗算のみ可能な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+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，ａ2，．．．，ａn-1）      （４１）
Ｂ＝（ｂ0，ｂ2，．．．，ｂn-1）      （４２）
【００４４】
２つのベクトルを暗号化したままで２つのベクトルの間の内積又は距離を高速に計算するために、例えば、次のような昇順変換と降順変換の２種類の多項式変換が用いられる。
【００４５】
［昇順変換］
【数１】
0006421576.tif 000002
【００４６】
［降順変換］
【数２】
0006421576.tif 000003
【００４７】
多項式ｐｍ１（Ａ）及び多項式ｐｍ２（Ｂ）を準同型暗号により暗号化すると、暗号化多項式Ｅ（ｐｍ１（Ａ））及び暗号化多項式Ｅ（ｐｍ２（Ｂ））が生成される。
【００４８】
Ｅ（ｐｍ１（Ａ））＝Ｅｎｃ（ｐｍ１（Ａ），ｐｋ）      （４５）
Ｅ（ｐｍ２（Ｂ））＝Ｅｎｃ（ｐｍ２（Ｂ），ｐｋ）      （４６）
【００４９】
暗号化多項式Ｅ（ｐｍ１（Ａ））及び暗号化多項式Ｅ（ｐｍ２（Ｂ））を乗算すると、暗号化したままで乗算ｐｍ１（Ａ）＊ｐｍ２（Ｂ）が行われる。そして、乗算結果Ｅ（ｐｍ１（Ａ））＊Ｅ（ｐｍ２（Ｂ））を復号すると、復号結果の多項式に含まれる定数項は、次式のような値になる。
【００５０】
【数３】
0006421576.tif 000004
【００５１】
式（４７）は、ベクトルＡとベクトルＢの内積を表している。この方法によれば、ベクトルＡとベクトルＢの各要素を暗号化して乗算する方法よりも効率的に、内積を計算することができる。さらに、この内積計算を応用することで、ハミング距離、Ｌ２ノルム等を暗号化したままで高速に計算することもできる。
【００５２】
図１は、特許文献１の暗号処理装置を適用した生体認証システムの構成例を示している。図１の生体認証システムは、生体情報を利用した個人認証システムであり、端末装置１０１、暗号処理装置１０２、及び認証装置１０３を含む。暗号処理装置１０２と、端末装置１０１及び認証装置１０３とは、通信ネットワークにより接続されている。端末装置１０１は、例えば、クライアント端末のようなユーザの装置であり、暗号処理装置１０２及び認証装置１０３は、例えば、サーバである。端末装置１０１は、準同型暗号の公開鍵を持ち、認証装置１０３は、準同型暗号の秘密鍵を持つ。
【００５３】
生体認証システムは、ユーザがパスワード等の複雑な情報を覚える必要がないため、利用しやすい個人認証システムである反面、生体情報はユーザにとって終生不変な機密情報であるため、生体情報の漏洩等に対する強力な保護が望まれる。そこで、図１の生体認証システムでは、準同型暗号によりユーザの生体情報を保護している。
【００５４】
生体情報の登録時に、端末装置１０１は、登録者であるユーザの生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式（４１）のようなベクトルＡに変換し、暗号化処理１１１−１を行う。センサにより取得される生体情報としては、指紋、顔、静脈、虹彩等の画像情報又は声等の音声情報を用いることができる。
【００５５】
暗号化処理１１１−１において、端末装置１０１は、ベクトルＡを式（４３）のような多項式ｐｍ１（Ａ）に変換し、多項式ｐｍ１（Ａ）を準同型暗号により暗号化して暗号化多項式Ｅ（ｐｍ１（Ａ））を生成する。そして、端末装置１０１は、暗号化多項式Ｅ（ｐｍ１（Ａ））を表す暗号情報を暗号処理装置１０２へ送信する。暗号処理装置１０２は、端末装置１０１から受信した暗号情報を、登録生体情報を表すテンプレート１１２として、データベースに登録する。
【００５６】
生体情報の認証時に、端末装置１０１は、認証対象者であるユーザの生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式（４２）のようなベクトルＢに変換し、暗号化処理１１１−２を行う。
【００５７】
暗号化処理１１１−２において、端末装置１０１は、ベクトルＢを式（４４）のような多項式ｐｍ２（Ｂ）に変換し、多項式ｐｍ２（Ｂ）を準同型暗号により暗号化して暗号化多項式Ｅ（ｐｍ２（Ｂ））を生成する。そして、端末装置１０１は、暗号化多項式Ｅ（ｐｍ２（Ｂ））を表す暗号情報を暗号処理装置１０２へ送信する。
【００５８】
暗号処理装置１０２は、テンプレート１１２が表す暗号化多項式Ｅ（ｐｍ１（Ａ））と、端末装置１０１から受信した暗号情報が表す暗号化多項式Ｅ（ｐｍ２（Ｂ））とを用いて暗号演算処理を行い、暗号演算結果を表す暗号情報を認証装置１０３へ送信する。
【００５９】
認証装置１０３は、暗号処理装置１０１から受信した暗号情報に基づいて、認証対象者を認証する認証処理１１４を行う。認証処理１１４において、認証装置１０３は、受信した暗号情報を復号してベクトルＡとベクトルＢの演算結果を生成し、生成した演算結果に基づいて認証を行う。
【００６０】
ベクトルＡとベクトルＢの演算結果としては、例えば、ベクトルＡとベクトルＢとの間の距離（ハミング距離等）が用いられる。この場合、暗号処理装置１０２は、２つのベクトルを暗号化したままの状態で、ベクトルＡとベクトルＢとの間の距離を計算することができ、認証装置１０３は、距離を閾値と比較して、認証の成否を判定することができる。距離が閾値より小さければ、認証対象者の認証が成功したと判定され、距離が閾値以上であれば、認証が失敗したと判定される。
【００６１】
このような生体認証システムによれば、端末装置１０１から暗号処理装置１０２へは暗号化された情報のみが送信され、暗号処理装置１０２は秘密鍵を持たないため、暗号処理装置１０２がユーザの生体情報を表すベクトルを知ることはない。また、暗号処理装置１０２から認証装置１０３へは暗号演算結果のみが送信され、認証装置１０３は、復号によりベクトルＡとベクトルＢの演算結果のみを生成するため、認証装置１０３がユーザの生体情報を表すベクトルを知ることもない。
【００６２】
したがって、暗号処理装置１０２と認証装置１０３とが結託しない限り、ベクトルＡ又はベクトルＢが生成されることはなく、ユーザの生体情報を保護したままで個人認証サービスが提供される。
【００６３】
しかしながら、図１の生体認証システムにおいては、悪意のあるユーザが再送攻撃を行って、正規のユーザに成りすますことが可能である。再送攻撃は、認証システムにおける代表的な成りすまし攻撃の１つであり、具体的には、攻撃者が端末装置１０１と暗号処理装置１０２との間の通信路を盗聴することで、正規のユーザが送信する暗号化多項式の暗号情報を不正に取得する。攻撃者は、正規のユーザに成りすまして、取得した暗号情報を暗号処理装置１０２へ再送することで、認証装置１０３による認証を成功させることができる。
【００６４】
このような再送攻撃に対する対策として、チャレンジ・レスポンス認証方式が有効である。この認証方式では、認証側の装置がチャレンジと呼ばれる乱数を生成して、端末装置へ送信する。端末装置は、受信したチャレンジと認証対象の情報とを基にレスポンスと呼ばれるデータを生成し、認証側の装置へ返信する。そして、認証側の装置は、チャレンジと受信したレスポンスとを用いて認証処理を行う。チャレンジ・レスポンス認証方式によれば、チャレンジが生成される度にレスポンスが毎回変化するため、レスポンスを盗聴して再送しても認証に失敗してしまう。
【００６５】
そこで、図１の生体認証システムにおける再送攻撃対策として、チャレンジ・レスポンス認証の仕組みを導入することが考えられる。
【００６６】
図２は、実施形態の暗号処理装置の機能的構成例を示している。図２の暗号処理装置２０１は、記憶部２１１、受信部２１２、生成部２１３、及び出力部２１４を含む。記憶部２１１は、第１のベクトルに対応する第１の多項式を暗号化した第１の暗号化多項式を表す第１の暗号情報を記憶する。受信部２１２は、乱数を用いて生成される単項式を暗号化した暗号化単項式を表す第２の暗号情報を受信する端末装置から、第３の暗号情報を受信する。生成部２１３は、第１の暗号情報及び第３の暗号情報を用いて暗号処理を行い、出力部２１４は、暗号処理の結果を出力する。
【００６７】
図３は、図２の暗号処理装置２０１が行う暗号処理の例を示すフローチャートである。まず、受信部２１２は、端末装置から、第２のベクトルに対応する第２の多項式と単項式との乗算結果を暗号化した暗号化結果を表す第３の暗号情報を受信する（ステップ３０１）。
【００６８】
次に、生成部は、第１の暗号情報と、第３の暗号情報と、単項式を表す情報とを用いて、第１のベクトルと第２のベクトルとの演算結果を含む暗号化多項式を生成する（ステップ３０２）。そして、出力部２１４は、生成部２１３が生成した暗号化多項式を表す第４の暗号情報を出力する（ステップ３０３）。
【００６９】
このような暗号処理装置２０１によれば、暗号化多項式を用いた暗号演算処理において、暗号情報の盗聴に対する耐性を向上させることができる。
【００７０】
式（３１）及び式（３２）に示したように、準同型暗号による暗号演算処理において、２つの多項式ｆ（ｘ）及びｇ（ｘ）に対する加算及び乗算は、次式のような性質を持つ。
【００７１】
Ｅ（ｆ（ｘ））＋Ｅ（ｇ（ｘ））＝Ｅ（ｆ（ｘ）＋ｇ（ｘ））      （５１）
Ｅ（ｆ（ｘ））＊Ｅ（ｇ（ｘ））＝Ｅ（ｆ（ｘ）＊ｇ（ｘ））      （５２）
【００７２】
さらに、非特許文献２の実用的な構成法を用いた場合、これらの加算及び乗算の性質を次式のように書き換えることができる。
【００７３】
ｆ（ｘ）＋Ｅ（ｇ（ｘ））＝Ｅ（ｆ（ｘ）＋ｇ（ｘ））      （５３）
ｆ（ｘ）＊Ｅ（ｇ（ｘ））＝Ｅ（ｆ（ｘ）＊ｇ（ｘ））      （５４）
【００７４】
式（５３）又は式（５４）は、ｆ（ｘ）を暗号化せずにＥ（ｇ（ｘ））と加算又は乗算しても、得られた演算結果を復号すれば、Ｅ（ｆ（ｘ）＋ｇ（ｘ））又はＥ（ｆ（ｘ）＊ｇ（ｘ））の復号結果と一致することを表している。このような暗号演算処理によれば、ｆ（ｘ）の暗号化処理を省略することができるため、処理が効率化される。そこで、以下の暗号演算処理では、式（５３）及び式（５４）の性質を用いることがある。
【００７５】
図４は、図２の暗号処理装置２０１を含む生体認証システムの構成例を示している。図４の認証システムは、暗号処理装置２０１、端末装置４０１、及び認証装置４０２を含む。暗号処理装置２０１は、記憶部２１１、生成部２１３、通信部４１１、及び通信部４１２を含む。通信部４１１及び通信部４１２は、図２の受信部２１２及び出力部２１４にそれぞれ対応する。
【００７６】
暗号処理装置２０１と、端末装置４０１及び認証装置４０２とは、通信ネットワークにより接続されており、通信部４１１は、端末装置４０１と通信し、通信部４１２は、認証装置４０２と通信する。
【００７７】
生体情報の登録時に、端末装置４０１は、登録者の生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式（４１）のようなベクトルＡに変換する。次に、端末装置４０１は、ベクトルＡを式（４３）のような多項式ｐｍ１（Ａ）に変換し、多項式ｐｍ１（Ａ）を準同型暗号により暗号化して暗号化多項式Ｅ（ｐｍ１（Ａ））を生成する。そして、端末装置４０１は、暗号化多項式Ｅ（ｐｍ１（Ａ））を表す暗号情報を暗号処理装置２０１へ送信する。
【００７８】
暗号処理装置２０１は、端末装置４０１から受信した暗号情報を、登録暗号情報４１３として記憶部２１１に格納する。暗号化多項式を表す暗号情報としては、例えば、暗号化多項式の各項が有する係数を用いることができる。
【００７９】
図５は、生体情報の認証時に図４の生体認証システムが行う暗号処理の第１の具体例を示すフローチャートである。まず、端末装置４０１は、認証要求を暗号処理装置２０１へ送信する（ステップ５０１）。
【００８０】
次に、暗号処理装置２０１の生成部２１３は、端末装置４０１から受信した認証要求に応じて、２つの乱数ｒ及びｋを生成し、ｒ及びｋを用いて単項式ｒｘ＾ｋを生成する（ステップ５０２）。乱数ｒは、０以上の整数であり、鍵生成パラメータｔよりも小さい。乱数ｋは、０以上の整数であり、格子次元ｎよりも小さい。
【００８１】
生成部２１３は、単項式ｒｘ＾ｋを準同型暗号により暗号化して、チャレンジ暗号データｃｈｌ＝Ｅ（ｒｘ＾ｋ）を生成し（ステップ５０３）、通信部４１１は、チャレンジ暗号データｃｈｌを表す暗号情報を端末装置４０１へ送信する（ステップ５０４）。チャレンジ暗号データｃｈｌは、暗号化単項式に対応する。
【００８２】
次に、端末装置４０１は、認証対象者の生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式（４２）のようなベクトルＢに変換し（ステップ５０５）、ベクトルＢを式（４４）のような多項式ｐｍ２（Ｂ）に変換する（ステップ５０６）。
【００８３】
次に、端末装置４０１は、多項式ｐｍ２（Ｂ）と、暗号処理装置２０１から受信したチャレンジ暗号データｃｈｌとを乗算して、ｐｍ２（Ｂ）＊ｃｈｌを求める（ステップ５０７）。そして、端末装置４０１は、ｐｍ２（Ｂ）＊ｃｈｌと０の暗号データＥ（０）とを加算して、レスポンス暗号データｒｅｓを生成する。
【００８４】
ｒｅｓ＝ｐｍ２（Ｂ）＊ｃｈｌ＋Ｅ（０）
＝Ｅ（ｐｍ２（Ｂ）＊ｒｘ＾ｋ）      （６１）
【００８５】
次に、端末装置４０１は、レスポンス暗号データｒｅｓを表す暗号情報を暗号処理装置２０１へ送信する（ステップ５０８）。このレスポンス暗号データｒｅｓは、多項式ｐｍ２（Ｂ）と単項式ｒｘ＾ｋとの乗算結果を準同型暗号により暗号化した暗号化結果を表している。ｐｍ２（Ｂ）＊ｃｈｌに対してＥ（０）を加算することで、攻撃者がチャレンジ暗号データｃｈｌとレスポンス暗号データｒｅｓとを盗聴した場合でも、それらの情報からベクトルＢが復元されることを防止できる。
【００８６】
次に、暗号処理装置２０１の生成部２１３は、チャレンジ暗号データｃｈｌの生成時に生成した乱数ｒ及びｋを用いて、単項式ｒｘ＾ｋの逆数ｒ＾（−１）ｘ＾（−ｋ）を生成する（ステップ５０９）。そして、生成部２１３は、端末装置４０１から受信したレスポンス暗号データｒｅｓにｒ＾（−１）ｘ＾（−ｋ）を乗算して、暗号化多項式Ｅ（ｐｍ２（Ｂ））を求める。
【００８７】
ｒ＾（−１）ｘ＾（−ｋ）＊ｒｅｓ
＝ｒ＾（−１）ｘ＾（−ｋ）＊Ｅ（ｐｍ２（Ｂ）＊ｒｘ＾ｋ）
＝Ｅ（ｐｍ２（Ｂ））                                        （６２）
【００８８】
次に、生成部２１３は、記憶部２１１に格納されている暗号化多項式Ｅ（ｐｍ１（Ａ））と、暗号化多項式Ｅ（ｐｍ２（Ｂ））とを用いて暗号演算処理を行い、暗号演算結果を生成する（ステップ５１０）。そして、通信部４１２は、暗号演算結果を表す暗号情報を認証装置４０２へ送信する（ステップ５１１）。
【００８９】
認証装置４０２は、暗号処理装置２０１から受信した暗号情報を復号し、ベクトルＡとベクトルＢの演算結果を生成する（ステップ５１２）。そして、認証装置４０２は、生成した演算結果に基づいて認証対象者の認証を行い、認証結果を出力する。
【００９０】
ベクトルＡとベクトルＢの演算結果は、ベクトルＡとベクトルＢの内積であってもよく、内積に基づく類似度（例えば、コサイン類似度）であってもよく、内積に基づく相違度（例えば、ハミング距離、ユークリッド距離等）であってもよい。
【００９１】
例えば、演算結果がベクトルＡとベクトルＢの内積に基づく類似度である場合、認証装置４０２は、類似度を閾値と比較して、認証の成否を判定することができる。この場合、類似度が閾値より大きれば、認証対象者の認証が成功したと判定され、類似度が閾値以下であれば、認証が失敗したと判定される。
【００９２】
演算結果がベクトルＡとベクトルＢの内積に基づく相違度である場合、認証装置４０２は、相違度を閾値と比較して、認証の成否を判定することができる。この場合、相違度が閾値より小さければ、認証対象者の認証が成功したと判定され、相違度が閾値以上であれば、認証が失敗したと判定される。
【００９３】
例えば、ベクトルＡ及びベクトルＢが２値ベクトルである場合、ベクトルＡの要素ａ0〜要素ａn-1のすべてが０又は１であり、ベクトルＢの要素ｂ0〜要素ｂn-1のすべてが０又は１である。この場合、生成部２１３は、Ｅ（ｐｍ１（Ａ））とＥ（ｐｍ２（Ｂ））の暗号演算結果として、次式によりベクトルＡとベクトルＢの暗号化ハミング距離Ｅ（ＤH）を計算することができる。
【００９４】
Ｅ（ＤH）＝Ｅ（ｐｍ１（Ａ））＊Ｃ１＋Ｅ（ｐｍ２（Ｂ））＊Ｃ２
−２＊Ｅ（ｐｍ１（Ａ））＊Ｅ（ｐｍ２（Ｂ））          （６３）
【００９５】
ここで、多項式Ｃ１及び多項式Ｃ２は、次式により与えられる。
【００９６】
【数４】
0006421576.tif 000005
【００９７】
通信部４１２は、暗号化ハミング距離Ｅ（ＤH）を表す暗号情報を認証装置４０２へ送信し、認証装置４０２は、受信した暗号情報が表す暗号化ハミング距離Ｅ（ＤH）を復号して、復号結果である多項式ＤHを生成する。この多項式ＤHは、次式により計算される多項式と等価である。
【００９８】
ｐｍ１（Ａ）＊Ｃ１＋ｐｍ２（Ｂ）＊Ｃ２
−２＊ｐｍ１（Ａ）＊ｐｍ２（Ｂ）                    （６６）
【００９９】
そこで、認証装置４０２は、多項式ＤHに含まれる定数項から、ベクトルＡとベクトルＢのハミング距離ＨＤを求めることができる。
【０１００】
ＨＤ＝ａ0＋ａ1＋・・・＋ａn-1＋ｂ0＋ｂ1＋・・・＋ｂn-1
−２（ａ0ｂ0＋ａ1ｂ1＋・・・＋ａn-1ｂn-1）            （６７）
【０１０１】
図５の暗号処理によれば、暗号処理装置２０１がチャレンジ暗号データを生成する度にレスポンス暗号データが変化するため、攻撃者がレスポンス暗号データを盗聴して再送しても認証に失敗する。したがって、再送攻撃による成りすましを防ぐことができる。
【０１０２】
図６は、生体情報の認証時に図４の生体認証システムが行う暗号処理の第２の具体例を示すフローチャートである。図６の暗号処理では、暗号処理装置２０１の代わりに、認証装置４０２がチャレンジ暗号データを生成する。まず、端末装置４０１は、認証要求を認証装置４０２へ送信する（ステップ６０１）。
【０１０３】
次に、認証装置４０２は、端末装置４０１から受信した認証要求に応じて、２つの乱数ｒ及びｋを生成し、ｒ及びｋを用いて単項式ｒｘ＾ｋを生成する（ステップ６０２）。そして、認証装置４０２は、単項式ｒｘ＾ｋを準同型暗号により暗号化して、チャレンジ暗号データｃｈｌ＝Ｅ（ｒｘ＾ｋ）を生成し（ステップ６０３）、チャレンジ暗号データｃｈｌを表す暗号情報を端末装置４０１へ送信する（ステップ６０４）。
【０１０４】
次に、端末装置４０１は、認証対象者の生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式（４２）のようなベクトルＢに変換し（ステップ６０５）、ベクトルＢを式（４４）のような多項式ｐｍ２（Ｂ）に変換する（ステップ６０６）。
【０１０５】
次に、端末装置４０１は、多項式ｐｍ２（Ｂ）と、認証装置４０２から受信したチャレンジ暗号データｃｈｌとを用いて、式（６１）によりレスポンス暗号データｒｅｓを生成する（ステップ６０７）。そして、端末装置４０１は、チャレンジ暗号データｃｈｌを表す暗号情報と、レスポンス暗号データｒｅｓを表す暗号情報とを、暗号処理装置２０１へ送信する（ステップ６０８）。
【０１０６】
次に、暗号処理装置２０１の生成部２１３は、記憶部２１１に格納されている暗号化多項式Ｅ（ｐｍ１（Ａ））と、チャレンジ暗号データｃｈｌと、レスポンス暗号データｒｅｓとを用いて、次式のような暗号演算処理を行う（ステップ６０９）。
【０１０７】
Ｅ（ＤX）＝Ｅ（ｐｍ１（Ａ））＊Ｃ１＊ｃｈｌ＋ｒｅｓ＊Ｃ２
−２Ｅ（ｐｍ１（Ａ））＊ｒｅｓ                    （７１）
【０１０８】
そして、通信部４１２は、式（７１）の暗号演算結果Ｅ（ＤX）を表す暗号情報を認証装置４０２へ送信する（ステップ６１０）。
【０１０９】
認証装置４０２は、暗号処理装置２０１から受信した暗号情報が表す暗号演算結果Ｅ（ＤX）を復号し、復号結果ＤXを生成する（ステップ６１１）。この復号結果ＤXは、次式により計算される多項式と等価である。
【０１１０】
ｐｍ１（Ａ）＊Ｃ１＊ｒｘ＾ｋ＋ｐｍ２（Ｂ）＊ｒｘ＾ｋ＊Ｃ２
−２＊ｐｍ１（Ａ）＊ｐｍ２（Ｂ）＊ｒｘ＾ｋ
＝ｒｘ＾ｋ＊（ｐｍ１（Ａ）＊Ｃ１＋ｐｍ２（Ｂ）＊Ｃ２
−２ｐｍ１（Ａ）＊ｐｍ２（Ｂ））                              （７２）
【０１１１】
式（７２）の右辺のｐｍ１（Ａ）＊Ｃ１＋ｐｍ２（Ｂ）＊Ｃ２−２ｐｍ１（Ａ）＊ｐｍ２（Ｂ）は、式（６６）の多項式と一致する。つまり、式（７１）の暗号演算結果Ｅ（ＤX）は、暗号化したままでｒｘ＾ｋ＊ＤHを計算した結果を表しており、認証装置４０２は、暗号演算結果Ｅ（ＤX）を復号することで、ＤX＝ｒｘ＾ｋ＊ＤHを得ることができる。
【０１１２】
次に、認証装置４０２は、チャレンジ暗号データｃｈｌの生成時に生成した乱数ｒ及びｋを用いて、単項式ｒｘ＾ｋの逆数ｒ＾（−１）ｘ＾（−ｋ）を生成する。そして、認証装置４０２は、復号結果ＤXにｒ＾（−１）ｘ＾（−ｋ）を乗算して多項式ＤHを求め、多項式ＤHに含まれる定数項から、ベクトルＡとベクトルＢのハミング距離ＨＤを求める。
【０１１３】
そして、認証装置４０２は、ハミング距離ＨＤを閾値と比較して、認証対象者の認証を行い、認証結果を出力する。この場合、ハミング距離ＨＤが閾値より小さければ、認証対象者の認証が成功したと判定され、ハミング距離ＨＤが閾値以上であれば、認証が失敗したと判定される。
【０１１４】
図６の暗号処理によれば、認証装置４０２がチャレンジ暗号データを生成する度にレスポンス暗号データが変化するため、攻撃者がレスポンス暗号データを盗聴して再送しても認証に失敗する。したがって、再送攻撃による成りすましを防ぐことができる。
【０１１５】
図２の暗号処理装置２０１及び図４の生体認証システムの構成は一例に過ぎず、暗号処理装置２０１の用途や条件に応じて一部の構成要素を省略又は変更してもよい。例えば、図４の生体認証システムにおいて、認証対象者は、端末装置４０１とは異なる端末装置を用いて、生体情報の認証のための処理を行ってもよい。複数のユーザが生体情報の登録及び認証のための処理を行ってもよく、複数のユーザのための複数の端末装置４０１を設けてもよい。
【０１１６】
さらに、図２の暗号処理装置２０１は、ベクトルＡとベクトルＢの演算結果を利用する、生体認証システム以外の認証システムにも適用できる。例えば、生体情報以外の画像情報、音声情報等をベクトルに変換して、個人認証を行うことも可能である。
【０１１７】
図３、図５、及び図６のフローチャートは一例に過ぎず、暗号処理装置２０１又は生体認証システムの構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、図５の暗号処理において、暗号処理装置２０１の外部の装置が乱数を生成する場合は、ステップ５０２の処理を省略することができる。同様に、図６の暗号処理において、認証装置４０２の外部の装置が乱数を生成する場合は、ステップ６０２の処理を省略することができる。
【０１１８】
図６の暗号処理において、ベクトルＡとベクトルＢのハミング距離の代わりに、ベクトルＡとベクトルＢの類似度又は相違度を表す他の演算結果を用いてもよい。
【０１１９】
式（１）〜式（７２）は一例に過ぎず、他の定式化を用いてもよい。例えば、式（４３）の昇順変換を登録者のベクトルＡに対して適用し、式（４４）の降順変換を認証対象者のベクトルＢに対して適用する代わりに、昇順変換をベクトルＢに対して適用し、降順変換をベクトルＡに対して適用してもよい。
【０１２０】
準同型暗号による暗号演算処理において、２つの多項式ｆ（ｘ）及びｇ（ｘ）に対する加算及び乗算を、式（５３）及び式（５４）に基づいて行う代わりに、式（５１）及び式（５２）に基づいて行ってもよい。
【０１２１】
端末装置４０１がレスポンス暗号データｒｅｓを生成する際、式（６１）の右辺における暗号データＥ（０）の加算を省略してもよい。式（６６）の多項式ＤHに含まれる定数項の代わりに、他の項の係数にハミング距離ＨＤが現れるような定式化を用いてもよい。
【０１２２】
図２及び図４の暗号処理装置２０１、端末装置４０１、及び認証装置４０２は、例えば、ハードウェア回路として実装することができる。この場合、暗号処理装置２０１の各構成要素を個別の回路として実装してもよく、複数の構成要素を１つの集積回路として実装してもよい。
【０１２３】
暗号処理装置２０１、端末装置４０１、及び認証装置４０２は、図７に示すような情報処理装置（コンピュータ）を用いて実現することも可能である。
【０１２４】
図７の情報処理装置は、Central Processing Unit（ＣＰＵ）７０１、メモリ７０２、入力装置７０３、出力装置７０４、補助記憶装置７０５、媒体駆動装置７０６、及びネットワーク接続装置７０７を含む。これらの構成要素はバス７０８により互いに接続されている。
【０１２５】
メモリ７０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリである。メモリ７０２は、暗号処理装置２０１、端末装置４０１、又は認証装置４０２が行う処理のためのプログラム及びデータを格納する。メモリ７０２は、記憶部２１１として用いることができる。
【０１２６】
情報処理装置が暗号処理装置２０１である場合、ＣＰＵ７０１は、例えば、メモリ７０２を利用してプログラムを実行することにより、生成部２１３として動作し、暗号処理を行う。
【０１２７】
情報処理装置が端末装置４０１又は認証装置４０２である場合、ＣＰＵ７０１は、例えば、メモリ７０２を利用してプログラムを実行することにより、端末装置４０１又は認証装置４０２の処理を行う。
【０１２８】
入力装置７０３は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示や情報の入力に用いられる。出力装置７０４は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザ又はオペレータへの問い合わせや処理結果の出力に用いられる。処理結果は、認証装置４０２による認証処理の結果であってもよい。
【０１２９】
補助記憶装置７０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置７０５は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置７０５にプログラム及びデータを格納しておき、それらをメモリ７０２にロードして使用することができる。補助記憶装置７０５は、記憶部２１１として用いることができる。
【０１３０】
媒体駆動装置７０６は、可搬型記録媒体７０９を駆動し、その記録内容にアクセスする。可搬型記録媒体７０９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体７０９は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等であってもよい。ユーザ又はオペレータは、この可搬型記録媒体７０９にプログラム及びデータを格納しておき、それらをメモリ７０２にロードして使用することができる。
【０１３１】
このように、プログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ７０２、補助記憶装置７０５、及び可搬型記録媒体７０９のような、物理的な（非一時的な）記録媒体である。
【０１３２】
ネットワーク接続装置７０７は、Local Area Network（ＬＡＮ）、インターネット等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、ネットワーク接続装置７０７を介して外部の装置からプログラム及びデータを受信し、それらをメモリ７０２にロードして使用することができる。ネットワーク接続装置７０７は、受信部２１２、出力部２１４、通信部４１１、又は通信部４１２として用いることができる。
【０１３３】
なお、情報処理装置が図７のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、ユーザ又はオペレータからの指示や情報の入力を行わない場合は、入力装置７０３を省略してもよく、ユーザ又はオペレータへの問い合わせや処理結果の出力を行わない場合は、出力装置７０４を省略してもよい。情報処理装置が可搬型記録媒体７０９にアクセスしない場合は、媒体駆動装置７０６を省略してもよい。
【０１３４】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１３５】
図１乃至図７を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
第１のベクトルに対応する第１の多項式を暗号化した暗号化多項式を表す第１の暗号情報を記憶する記憶部と、
乱数を用いて生成される単項式を暗号化した暗号化単項式を表す第２の暗号情報を受信する端末装置から、第２のベクトルに対応する第２の多項式と前記単項式との乗算結果を暗号化した暗号化結果を表す第３の暗号情報を受信する受信部と、
前記第１の暗号情報と、前記第３の暗号情報と、前記単項式を表す情報とを用いて、前記第１のベクトルと前記第２のベクトルとの演算結果を含む暗号化多項式を生成する生成部と、
前記演算結果を含む前記暗号化多項式を表す第４の暗号情報を出力する出力部と、
を備えることを特徴とする暗号処理装置。
（付記２）
前記第２の暗号情報を前記端末装置へ送信する送信部をさらに備え、
前記生成部は、前記第３の暗号情報が表す前記暗号化結果と前記単項式の逆数とを乗算して、前記第２の多項式を暗号化した暗号化多項式を生成し、前記第１の多項式を暗号化した前記暗号化多項式と前記第２の多項式を暗号化した前記暗号化多項式とを乗算して、前記演算結果を含む前記暗号化多項式を生成し、前記出力部は、前記第４の暗号情報を復号して前記演算結果に基づく認証処理を行う認証装置へ、前記第４の暗号情報を出力することを特徴とする付記１記載の暗号処理装置。
（付記３）
前記端末装置は、前記第４の暗号情報を復号して前記演算結果に基づく認証処理を行う認証装置から、前記第２の暗号情報を受信し、前記受信部は、前記端末装置から前記第２の暗号情報をさらに受信し、前記生成部は、前記第２の暗号情報を前記単項式を表す前記情報として用い、前記第１の多項式を暗号化した前記暗号化多項式と、前記第３の暗号情報が表す前記暗号化結果と、前記第２の暗号情報が表す前記暗号化単項式とを用いた所定の演算を行って、前記演算結果を含む前記暗号化多項式を生成し、前記出力部は、前記第４の暗号情報を前記認証装置へ出力することを特徴とする付記１記載の暗号処理装置。
（付記４）
前記演算結果は、前記第１のベクトルと前記第２のベクトルの相違度又は類似度を表すことを特徴とする付記１乃至３のいずれか１項に記載の暗号処理装置。
（付記５）
第１のベクトルに対応する第１の多項式を暗号化した暗号化多項式を表す第１の暗号情報を記憶するコンピュータが、
乱数を用いて生成される単項式を暗号化した暗号化単項式を表す第２の暗号情報を受信する端末装置から、第２のベクトルに対応する第２の多項式と前記単項式との乗算結果を暗号化した暗号化結果を表す第３の暗号情報を受信し、
前記第１の暗号情報と、前記第３の暗号情報と、前記単項式を表す情報とを用いて、前記第１のベクトルと前記第２のベクトルとの演算結果を含む暗号化多項式を生成し、
前記演算結果を含む前記暗号化多項式を表す第４の暗号情報を出力する、
ことを特徴とする暗号処理方法。
（付記６）
前記コンピュータは、前記第２の暗号情報を前記端末装置へ送信し、前記第３の暗号情報が表す前記暗号化結果と前記単項式の逆数とを乗算して、前記第２の多項式を暗号化した暗号化多項式を生成し、前記第１の多項式を暗号化した前記暗号化多項式と前記第２の多項式を暗号化した前記暗号化多項式とを乗算して、前記演算結果を含む前記暗号化多項式を生成し、前記第４の暗号情報を復号して前記演算結果に基づく認証処理を行う認証装置へ、前記第４の暗号情報を出力することを特徴とする付記５記載の暗号処理方法。
（付記７）
前記端末装置は、前記第４の暗号情報を復号して前記演算結果に基づく認証処理を行う認証装置から、前記第２の暗号情報を受信し、前記コンピュータは、前記端末装置から前記第２の暗号情報をさらに受信し、前記第２の暗号情報を前記単項式を表す前記情報として用い、前記第１の多項式を暗号化した前記暗号化多項式と、前記第３の暗号情報が表す前記暗号化結果と、前記第２の暗号情報が表す前記暗号化単項式とを用いた所定の演算を行って、前記演算結果を含む前記暗号化多項式を生成し、前記第４の暗号情報を前記認証装置へ出力することを特徴とする付記５記載の暗号処理方法。
（付記８）
前記演算結果は、前記第１のベクトルと前記第２のベクトルの相違度又は類似度を表すことを特徴とする付記５乃至７のいずれか１項に記載の暗号処理方法。
（付記９）
第１のベクトルに対応する第１の多項式を暗号化した暗号化多項式を表す第１の暗号情報を記憶するコンピュータに、
乱数を用いて生成される単項式を暗号化した暗号化単項式を表す第２の暗号情報を受信する端末装置から、第２のベクトルに対応する第２の多項式と前記単項式との乗算結果を暗号化した暗号化結果を表す第３の暗号情報を受信し、
前記第１の暗号情報と、前記第３の暗号情報と、前記単項式を表す情報とを用いて、前記第１のベクトルと前記第２のベクトルとの演算結果を含む暗号化多項式を生成し、
前記演算結果を含む前記暗号化多項式を表す第４の暗号情報を出力する、
処理を実行させる暗号処理プログラム。
（付記１０）
前記コンピュータは、前記第２の暗号情報を前記端末装置へ送信し、前記第３の暗号情報が表す前記暗号化結果と前記単項式の逆数とを乗算して、前記第２の多項式を暗号化した暗号化多項式を生成し、前記第１の多項式を暗号化した前記暗号化多項式と前記第２の多項式を暗号化した前記暗号化多項式とを乗算して、前記演算結果を含む前記暗号化多項式を生成し、前記第４の暗号情報を復号して前記演算結果に基づく認証処理を行う認証装置へ、前記第４の暗号情報を出力することを特徴とする付記９記載の暗号処理プログラム。
（付記１１）
前記端末装置は、前記第４の暗号情報を復号して前記演算結果に基づく認証処理を行う認証装置から、前記第２の暗号情報を受信し、前記コンピュータは、前記端末装置から前記第２の暗号情報をさらに受信し、前記第２の暗号情報を前記単項式を表す前記情報として用い、前記第１の多項式を暗号化した前記暗号化多項式と、前記第３の暗号情報が表す前記暗号化結果と、前記第２の暗号情報が表す前記暗号化単項式とを用いた所定の演算を行って、前記演算結果を含む前記暗号化多項式を生成し、前記第４の暗号情報を前記認証装置へ出力することを特徴とする付記９記載の暗号処理プログラム。
（付記１２）
前記演算結果は、前記第１のベクトルと前記第２のベクトルの相違度又は類似度を表すことを特徴とする付記９乃至１１のいずれか１項に記載の暗号処理プログラム。
【符号の説明】
【０１３６】
１０１、４０１  端末装置
１０２、２０１  暗号処理装置
１０３、４０３  認証装置
１１１−１、１１１−２  暗号化処理
１１２  テンプレート
１１３−１、１１３−２  暗号化多項式
１１４  認証処理
２１１  記憶部
２１２  受信部
２１３  生成部
２１４  出力部
４１１、４１２  通信部
４１３  登録暗号情報
７０１  ＣＰＵ
７０２  メモリ
７０３  入力装置
７０４  出力装置
７０５  補助記憶装置
７０６  媒体駆動装置
７０７  ネットワーク接続装置
７０８  バス
７０９  可搬型記録媒体
【図１】
0006421576.tif 000006
【図２】
0006421576.tif 000007
【図３】
0006421576.tif 000008
【図４】
0006421576.tif 000009
【図５】
0006421576.tif 000010
【図６】
0006421576.tif 000011
【図７】
0006421576.tif 000012