(57)【特許請求の範囲】
【請求項１】
コンピュータが、
多次元の判定対象ベクトル内の複数の要素それぞれの値を準同型暗号文に暗号化した複数の暗号化要素を含む判定対象暗号文から、一部の暗号化要素を取得し、
取得した前記一部の暗号化要素を復号し、
前記一部の暗号化要素を復号して得られた値の少なくとも１つが０または１以外の値である場合、前記判定対象ベクトルの値が不正であると判定する、
暗号処理方法。
【請求項２】
前記コンピュータが、さらに、
特定の人の生体情報の特徴が０または１の値の複数の要素で表された比較対象ベクトルに対応する比較対象暗号文であり、該複数の要素それぞれを準同型暗号文に暗号化した複数の暗号化要素を含む前記比較対象暗号文を記憶し、
前記判定対象暗号文を含む認証要求が入力されると、前記判定対象暗号文と前記比較対象暗号文とに基づいて、前記判定対象ベクトルと前記比較対象ベクトルとの距離を暗号化した暗号化距離を生成し、
前記暗号化距離を復号して前記距離を示す値を生成し、
前記距離を示す値が閾値未満であり、かつ、前記一部の暗号化要素を復号して得られた値のすべてが０または１の場合、認証成功と判定し、
前記距離を示す値が閾値以上であるか、あるいは、前記判定対象の暗号化要素を復号して得られた値の少なくとも１つが０または１以外の値の場合、認証失敗と判定する、
請求項１記載の暗号処理方法。
【請求項３】
前記取得では、４つの暗号化要素を取得する、
請求項１または２記載の暗号処理方法。
【請求項４】
前記多次元のベクトルの要素数がＤ（Ｄは１以上の整数）であり、前記閾値がθ（θは正の実数）のとき、
前記取得では、（４θ−Ｄ）／３より大きい最小の整数に対応する個数の暗号化要素を取得する、
請求項１または２記載の暗号処理方法。
【請求項５】
多次元の判定対象ベクトル内の複数の要素それぞれの値を暗号化した複数の暗号化要素を含む判定対象暗号文から、一部の暗号化要素を取得し、取得した前記一部の暗号化要素を復号し、前記一部の暗号化要素を復号して得られた値の少なくとも１つが０または１以外の値である場合、前記判定対象ベクトルの値が不正であると判定する演算部、
を有する暗号処理装置。
【請求項６】
コンピュータに、
多次元の判定対象ベクトル内の複数の要素それぞれの値を暗号化した複数の暗号化要素を含む判定対象暗号文から、一部の暗号化要素を取得し、
取得した前記一部の暗号化要素を復号し、
前記一部の暗号化要素を復号して得られた値の少なくとも１つが０または１以外の値である場合、前記判定対象ベクトルの値が不正であると判定する、
処理を実行させる暗号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
暗号処理方法、暗号処理装置、および暗号処理プログラムに関する。
【背景技術】
【０００２】
近年、計算機やネットワークに関する技術の進展と普及に伴い、個人の属性や行動に関するデータ（パーソナルデータ）や企業などの組織の機密データの重要性が増している。パーソナルデータや機密データを演算あるいは分析などして利用することでこれまでにない新たな知見を得たり、新たな機能を実現したりできる。一方で、個人のプライバシーや組織の秘密が侵される危険が問題視されている。そこで、個人データや機密データを保護したまま利用することを可能にする秘匿化技術が注目されている。このうち、暗号技術を用いた秘匿化技術として、準同型暗号技術がある。準同型暗号技術は、暗号化と復号で一対の異なる鍵を用いる公開鍵暗号方式の一つであり、暗号化したままデータ操作が可能である。
【０００３】
一般に準同型暗号方式では、二つ以上の暗号文を対象に加算や乗算などに対応する操作を行うことで、暗号文を復号することなく、元の平文同士に対して加算や乗算を行った演算結果の暗号文を得ることができる。例えば、加算と乗算を何度でも行える完全準同型暗号方式が提唱されている。完全準同型暗号方式は、排他的論理和、論理積、否定といった操作が実現できるため、あらゆる論理回路による演算を実現可能である。その一方、完全準同型暗号方式は、暗号化・復号や秘匿演算といった処理にかかる時間や暗号文のサイズは膨大であり、現在のところ、性能的に実用的ではない。そこで、乗算の回数を制限することで実用的な性能を実現した準完全準同型暗号技術が提案されている。
【０００４】
準同型暗号の用途の１つに生体認証がある。生体認証は、ユーザの生体情報を用いてユーザ本人であることの認証を行うものであり、パスワード認証と比べると、ユーザがパスワードを記憶せずに済むというメリットがある。一方、ユーザの生体情報は終生不変であり、変更・破棄ができない。そのため、生体情報の漏洩に対する保護が課題となっている。そこで、生体認証に準同型暗号を用い、平文の特徴ベクトルを用いることなく類似度を導出でき、平文の窃取の可能性の低い安全な本人認証を実現する技術が考えられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開２０１１／０５２０５６号
【非特許文献】
【０００６】
【非特許文献１】C. Gentry, "Fully Homomorphic encryption using ideal Lattices", STOC '09 Proceedings of the forty-first annual ACM symposium on Theory of computing, 2009-05-31, pp. 169-178
【非特許文献２】D. Boneh, E-J. Goh, and K. Nissim, "Evaluating 2-DNF Formulas on Ciphertexts", Theory of Cryptography, Volume 3378 of the series Lecture Notes in Computer Science, February 2005, pp.325-341
【非特許文献３】T. Okamoto, and K. Takashima, "Homomorphic Encryption and Signatures from Vector Decomposition", Pairing 2008, LNCS 5209,Springer-Verlag, September 2008, pp.57-74
【非特許文献４】T. Hirano, M. Hattori, T. Ito, and N. Matsuda, "Cryptographically-Secure and Efficient Remote Cancelable Biometrics Based on Public-Key Homomorphic Encryption", IWSEC 2013, LNCS 8231, Springer-Verlag, November 2013, pp.183-200
【発明の概要】
【発明が解決しようとする課題】
【０００７】
生体認証では、ユーザの生体情報に基づいて特徴ベクトルが生成され、その特徴ベクトルが準同型暗号化方式で暗号化される。準同型暗号化方式で暗号化された暗号データは、テンプレートとして、計算サーバに登録される。その後、ユーザ認証を実施する際に、計算サーバは、そのユーザの生体情報に基づいて生成された特徴ベクトルの暗号データとテンプレートとの間で、暗号データのまま、例えばユークリッド二乗距離を計算する。計算結果は認証サーバに送られる。認証サーバは、計算結果を復号し、復号によって得られた距離に基づいて認証の成否を判定する。
【０００８】
なお、生体認証では、生体情報を読み取る際の環境や読み取る位置の違いが誤差となって特徴ベクトルに含まれる。そのため、たとえ本人であっても、登録用の特徴ベクトルと照合用の特徴ベクトルは、完全に一致するものではない。そこで、判定時には、ある程度の誤差が許容される。例えばユークリッド二乗距離で表された誤差が閾値未満であれば、認証成功と判定される。
【０００９】
このような生体認証において、特徴ベクトルとして、二値符号（０または１）を用いる場合がある。特徴ベクトルとして二値符号を用いた場合に、任意のユーザに対し、秘密鍵を使用することなく、暗号化特徴ベクトルからオリジナルの特徴ベクトルを復元する攻撃が可能であるという問題がある。
【００１０】
例えば特徴ベクトルの要素数をＤ（Ｄは４以上の整数）とすると、生体認証のための距離の閾値はＤ／４より大きいことが多い。例えば、Ｄが４で割り切れる場合に、悪意のあるユーザが、すべての要素の値を１／２とした照合用の特徴ベクトルを入力すると、テンプレートの要素の値に関係なく、ユークリッド二乗距離は常にＤ／４（＝（１／２）2×Ｄ）となる。この場合、距離が閾値よりも小さくなり、認証に成功する。このような任意のユーザに対するなりすましが可能となるデータは、ウルフと呼ばれる。
【００１１】
しかも、なりすましが可能な場合、なりすまし用の特徴ベクトル内の所定数の要素の値を「１／２」以外の値に設定し、ユークリッド二乗距離を任意に調整すると、認証結果に基づいて、テンプレート登録時に用いた特徴ベクトルの特定の要素の値を判別できる。テンプレート登録時に用いた特徴ベクトルのすべての要素の値が判別されると、その特徴ベクトルが再現されてしまう。
【００１２】
このように、準同型暗号化を用いた従来の生体認証技術は、悪意のあるユーザからの攻撃に対する安全性が不十分である。
１つの側面では、本件は、不正行為に対する安全性を向上させることを目的とする。
【課題を解決するための手段】
【００１３】
１つの案では、コンピュータが、多次元の判定対象ベクトル内の複数の要素それぞれの値を準同型暗号文に暗号化した複数の暗号化要素を含む判定対象暗号文から、一部の暗号化要素を取得し、取得した一部の暗号化要素を復号し、一部の暗号化要素を復号して得られた値の少なくとも１つが０または１以外の値である場合、判定対象ベクトルの値が不正であると判定する、暗号処理方法が提供される。
【発明の効果】
【００１４】
１態様によれば、不正行為に対する安全性が向上する。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係る装置の機能構成例を示す図である。
【図２】第２の実施の形態の認証システムの構成例を示す図である。
【図３】認証サーバのハードウェアの一構成例を示す図である。
【図４】準同型暗号化を用いた生体認証の一例を示す図である。
【図５】なりすまし攻撃の一例を示す図である。
【図６】特徴ベクトル復元攻撃の一例を示す図である。
【図７】各装置が有する機能を示すブロック図である。
【図８】特徴ベクトルの復元を目的とした認証要求に対する認証処理の一例を示す図である。
【図９】通常の認証処理を示す図である。
【図１０】計算サーバにおける認証処理の手順の一例を示すフローチャートである。
【図１１】認証サーバの処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず、第１の実施の形態について説明する。第１の実施の形態は、準同型暗号化方式を用いた生体認証において、不正な準同型暗号文の入力による攻撃を防御するものである。
【００１７】
図１は、第１の実施の形態に係る装置の機能構成例を示す図である。第１の実施の形態では、暗号処理装置１０が生体認証を実施する。暗号処理装置１０は、記憶部１１と演算部１２とを有する。
【００１８】
記憶部１１は、認証用のテンプレート１１ａとして記憶する。テンプレート１１ａは、特定の人の生体情報の特徴が０または１の値の複数の要素で表された特徴ベクトル２（比較対象ベクトル）の暗号文（比較対象暗号文）であり、複数の要素それぞれを準同型暗号文に暗号化した複数の暗号化要素を含む。例えばユーザの手のひら１の静脈パターン１の特徴を表す特徴ベクトル２内の各要素が、そのユーザの公開鍵３で準同型暗号文に暗号化され、暗号化された暗号化要素を含む暗号ベクトル（準同型暗号ベクトル）がテンプレート１１ａとして記憶部１１に格納される。
【００１９】
演算部１２は、暗号文（判定対象暗号文）を含む認証要求が入力されると、テンプレート１１ａと比較してユーザ認証を行う。例えば正当なユーザが手のひら１の静脈パターンから生成した特徴ベクトル２ａ（判定対象ベクトル）の各要素を準同型暗号文に暗号化した暗号文を含む認証要求が入力される。
【００２０】
演算部１２は、暗号文を含む認証要求が入力されると、その暗号文から一部の暗号化要素を取得する。例えば演算部１２は、複数の暗号化要素の中から所定数の暗号化要素をランダムに選択し、選択した暗号化要素を取得する。そして演算部１２は、取得した一部の暗号化要素を復号する。
【００２１】
演算部１２は、一部の暗号化要素を復号して得られた値の少なくとも１つが０または１以外の値である場合、入力された暗号文の生成に使用された特徴ベクトル２ａ，２ｂの値が不正であると判定する。
【００２２】
また演算部１２は、暗号文を含む認証要求が入力されると、その暗号文とテンプレート１１ａとに基づいて、暗号化距離を生成する。暗号化距離は、照合用の暗号文の生成に使用された特徴ベクトル２ａ，２ｂと、テンプレート１１ａの生成に使用された特徴ベクトル２との距離の暗号文である。距離は、例えばユークリッド二乗距離である。演算部１２は、距離の暗号文を復号して距離を示す値を生成する。
【００２３】
そして演算部１２は、距離を示す値が閾値θ未満であり、かつ、一部の暗号化要素を復号して得られた値のすべてが０または１の場合、入力された暗号文の生成に用いた特徴ベクトルが、正当なユーザの生体情報の特徴を表していると判定する。すなわち、演算部１２は、認証を成功させる。
【００２４】
例えば正当なユーザの手のひら１の静脈パターンの特徴を示す特徴ベクトル２ａから生成した暗号文Ｅ（ｘ’）であれば、高い確率で距離ｄは閾値θ未満となる。また暗号文Ｅ（ｘ’）から抽出した暗号化要素を復号して得られる値は、「０」または「１」の二値である。その結果、演算部１２において認証成功と判定される。
【００２５】
また演算部１２は、距離を示す値が閾値θ以上であるか、あるいは、判定対象の暗号化要素を復号して得られた値の少なくとも１つが１または０以外の値の場合、入力された暗号文の生成に用いた特徴ベクトルが、正当なユーザの生体情報の特徴と異なると判定する。すなわち、演算部１２は、認証を失敗させる。
【００２６】
例えば、なりすまし目的で、すべての要素の値を「１／２」とする特徴ベクトル２ｂが入力される場合がある。要素数がＤ（Ｄは１以上の整数）のとき、すべての要素の値が「１／２」の特徴ベクトル２ｂの、テンプレート１１ａとの間のユークリッド二乗距離は「Ｄ／４」であり、合否判定の閾値θが「Ｄ／４」より大きければ、距離ｄ’が常に閾値θ未満となる。しかし演算部１２が特徴ベクトル２ｂを用いて生成した暗号文Ｅ（ｙ’）の任意の暗号化要素を復号すると、値「１／２」が得られる。その結果、演算部１２において認証失敗と判定される。
【００２７】
このようにして、暗号処理装置１０は、攻撃者５による不正な特徴ベクトル２ｂを用いた攻撃を防御できる。その結果、不正行為に対する安全性が向上する。
なお、閾値θの値によっては、なりすましを目的とする特徴ベクトル２ｂに二値の要素が含まれていても、距離が閾値θ未満となることがある。なりすましを確実に抑止するには、閾値θの値に応じた数の暗号化要素を復号し、値が二値か否かを判定すればよい。この場合、演算部１２は、なりすましを目的とする特徴ベクトルに含めることができる２値の要素の最大数よりも１つ多い数の暗号化要素を復号する。例えば演算部１２は、多次元のベクトルの要素数がＤ（Ｄは１以上の整数）のとき、閾値θの値に応じ、（４θ−Ｄ）／３より大きい最小の整数に対応する個数の暗号化要素を取得し、復号する。これにより、なりすまし攻撃をより確実に防ぐことができる。
【００２８】
また、認証システムへの攻撃には、なりすまし以外に、テンプレート１１ａの生成に用いた特徴ベクトル２の復元を目的とする攻撃がある。例えば、１つの要素（復元対象要素）の値を「１」より大きな値とし、３つの要素の値を「０」とし、その他の要素の値を「１／２」とした特徴ベクトルに基づく暗号文を、暗号処理装置１０に入力する攻撃が考えられる。このとき特徴ベクトル２の復元対象要素に対応する要素の値により、認証の成否が分かれる。すると、認証に成功したか否かにより、特徴ベクトル２の復元対象要素に対応する要素の値が判別可能となる。特徴ベクトル内のすべての要素を順番に復元対象要素として攻撃を繰り返すと、テンプレート１１ａの生成に用いられた特徴ベクトル２全体の復元が可能となる。このような攻撃を防止する場合、演算部１２は、入力された暗号文から４つの暗号化要素を取得し、復号する。そして演算部１２は、復号された要素の値に、少なくとも１つでも二値以外の値が含まれていれば、不正が行われたものと判断し、認証を失敗とする。これにより、特徴ベクトル２が復元されることを抑止できる。
【００２９】
なお、準同型暗号を用いた認証システムに対する攻撃の方法、およびその攻撃に対する防御のために復号する暗号化要素の数については、第２の実施の形態において詳細に説明する。
【００３０】
また、演算部１２は、例えば暗号処理装置１０が有するプロセッサにより実現することができる。記憶部１１は、例えば暗号処理装置１０が有するメモリまたはストレージ装置により実現することができる。
【００３１】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、ユーザの生体情報に対応するテンプレートと秘密鍵とを別の装置で管理し、安全性を高めたものである。
【００３２】
図２は、第２の実施の形態の認証システムの構成例を示す図である。ネットワーク２０を介して、複数の端末装置３１０，３２０、計算サーバ２００、および認証サーバ１００が接続されている。
【００３３】
複数の端末装置３１０，３２０は、自身の公開鍵を知っているユーザが利用コンピュータである。複数の端末装置３１０，３２０は、それぞれ生体認証用のセンサ３１１，３２１を有している。センサ３１１，３２１は、例えば手のひらの静脈パターンを撮像するセンサである。センサ３１１，３２１は、例えばセンサ３１１，３２１の上にかざされた手のひらに向けて近赤外線を照射し、反射した近赤外線を受光する。反射した近赤外線を受光して得られる映像上で、静脈パターンが暗く映し出される。静脈パターンは人によって異なるため、静脈パターンの照合により本人の同定が可能である。なお、生体情報は、手のひら静脈以外の情報であってもよい。例えば、指静脈、指紋、虹彩、音声など、さまざまな生体情報が、生体認証に利用可能である。
【００３４】
各端末装置３１０，３２０は、センサ３１１，３２１を用いてユーザの生体情報を読み取り、生体情報の特徴を表す特徴ベクトルに変換する。次に端末装置３１０，３２０は、特徴ベクトルの各要素を準同型暗号文に暗号化する。そして端末装置３１０，３２０は、準同型暗号文を要素とする準同型暗号ベクトルを計算サーバ２００に送信する。生体情報に基づく暗号データは、テンプレート登録時と、本人かどうかの照合時とに送信される。端末装置３１０，３２０は、生体情報に基づく暗号データを計算サーバ２００に送信することで、ユーザがテンプレートを登録した本人であることの認証を受けることができる。認証を受けた端末装置３１０，３２０は、計算サーバ２００に対してデータ処理の実行要求を送信し、データ処理サービスの提供を受けることができる。
【００３５】
計算サーバ２００は、ユーザの生体情報に応じた特徴ベクトルを暗号化した状態で管理し、そのユーザが使用する端末装置３１０，３２０からの処理要求に応じた処理を実行するコンピュータである。計算サーバ２００は認証サーバ１００と連携し、端末装置３１０，３２０を使用するユーザの生体情報による本人確認を行い、本人であると認められたユーザが使用する端末装置からの処理要求のみを受け付ける。例えば計算サーバ２００は、端末装置３１０から提出されたテンプレート登録用の特徴ベクトルの暗号文を、テンプレートとして保持する。また計算サーバ２００は、認証時に、テンプレートの生成に使用した特徴ベクトルと、照合用に提出された特徴ベクトルとの距離を、暗号状態のまま計算する。また計算サーバ２００は、照合用の特徴ベクトルにおける暗号化要素を複数個ランダムに選択する。
【００３６】
認証サーバ１００は、各ユーザに対応する秘密鍵を保持しており、その秘密鍵で準同型暗号文を復号することで、生体認証の成否を判断するコンピュータである。例えば認証サーバ１００は、計算サーバ２００からの認証要求に応じて、認証サービスを実行する。例えば、認証サーバ１００は、計算サーバ２００から受け取った暗号化要素を、秘密鍵を用いて復号する。次に認証サーバ１００は、その復号結果が「０」あるいは「１」かどうかを確認し、「０」あるいは「１」である場合は、暗号状態の距離（秘匿距離）を復号する。そして認証サーバ１００は、距離が閾値より小さい場合は認証成功、閾値以上の場合は認証失敗と判定する。一方、認証サーバ１００は、暗号化要素の復号結果が「０」と「１」以外の場合は、攻撃されたと判定し、認証失敗と判定する。
【００３７】
このようなシステムにより、生体認証により本人確認を行った上で、データ処理サービスが提供される。
図３は、認証サーバのハードウェアの一構成例を示す図である。認証サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３８】
メモリ１０２は、認証サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３９】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００４０】
ストレージ装置１０３は、内蔵した記憶媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００４１】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４２】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４３】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４４】
機器接続インタフェース１０７は、認証サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４５】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４６】
以上のようなハードウェア構成によって、第２の実施の形態の認証サーバ１００の処理機能を実現することができる。計算サーバ２００や端末装置３１０，３２０も、認証サーバ１００と同様のハードウェアにより実現できる。また、第１の実施の形態に示した装置も、図３に示した認証サーバ１００と同様のハードウェアにより実現することができる。
【００４７】
認証サーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。認証サーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、認証サーバ１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また認証サーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４８】
計算サーバ２００についても、認証サーバ１００と同様に、プログラムに基づいて、第２の実施の形態に係る機能を実現できる。
第２の実施の形態では、準同型暗号化を用いて生体認証を行う。準同型暗号化を用いれば、各ユーザの生体情報に対応する特徴ベクトルを、暗号データで保持しておくと共に、復号せずに２つの特徴ベクトル間の距離計算を実施することができる。以下、第２の実施の形態に適用する準同型暗号化技術について詳細に説明する。
【００４９】
準完全準同型暗号の構成法としては、例えば非特許文献２に記載の方式を適用することができる。以下では、非特許文献２に記載の方式を、提案者らの名前からＢＧＮ方式と呼ぶこととする。
【００５０】
ＢＧＮ方式の説明を行う前準備として、記号の定義を行う。以下では、自然数の集合をＮ、整数の集合をＺとする。素数ｐ、ｑ∈Ｎに対して、ｎ＝ｐ×ｑ∈Ｎと定義するとき、ｎで割った余りによって生成される加法群をＺ／ｎＺ、その既約剰余類群を（Ｚ／ｎＺ）×と表記する。また、群Ｇ、ＧTを位数ｎの乗法的巡回群とし、ｇ∈Ｇを群Ｇの生成元とする。群ＧまたはＧTの要素ｘ、ｙに対し、ｘを底とする離散対数値を計算する関数をＤＬ（ｘ，ｙ）と表す。写像ｅ：Ｇ×Ｇ→ＧTは非退化な双線形写像を満たすものとする。つまり（ｉ）任意のａ，ｂ∈Ｚに対し、ｅ（ｇa，ｇb）＝ｅ（ｇ，ｇ）ab、（ｉｉ）ｅ（ｇ，ｇ）≠１GTかつＧT＝〈ｅ（ｇ，ｇ）〉を満たす。なお、１GTをＧTにおける単位元とする。このとき、群Ｇの位数ｐの部分郡の任意の要素ｇpと位数ｑの部分郡の任意の要素ｇqに対してｅ（ｇp，ｇq）＝１GTとなる。また、集合Ａから要素ａをある確率分布に従って抽出することをａ←Ａ、特に一様分布に従って抽出することをａ←uＡと表記し、変数ｘに値ｙを代入することをｘ ←ｙと表記する。
【００５１】
ＢＧＮ方式は、鍵生成アルゴリズム（GenBGN）、暗号化アルゴリズム（EncBGN）、復号アルゴリズム（DecBGN）の３つのアルゴリズムから構成される。
＜鍵生成アルゴリズム GenBGN＞
入力： セキュリティパラメータλ∈Ｎ
出力：公開鍵（ｎ，Ｇ，ＧT，ｇ，ｈ，ｅ）, 秘密鍵（ｐ，ｑ）
１．λビットの素数ｐ，ｑを生成、ｎ←ｐ×ｑ
２．ｇ←uＧ，ｈ'←uＧ，ｈ←（ｈ'）q
＜暗号化アルゴリズム EncBGN＞
入力：平文ｍ∈｛０，１，．．．，Ｓ｝（Ｓ＜ｑ），乱数ｒ∈Ｚ／ｎＺ，公開鍵（ｎ，Ｇ，ＧT，ｇ，ｈ，ｅ）
出力：暗号文 ｃ＝ｇmｈr∈Ｇ
＜復号アルゴリズム DecBGN＞
入力：暗号文ｃ、秘密鍵（ｐ，ｑ）
出力：平文ｍ＝ＤＬ（ｇp，ｃp）
ここで、ＤＬ（Ａ，Ｂ）はＡを底とするＢの離散対数問題を解く関数である。復号アルゴリズムでは、群Ｇにおける離散対数問題を解く必要がある。最良の解法である平方根法が必要とする計算量はＯ（Ｓ1/2）であるため、この計算が可能となるようにパラメータＳを設定する必要がある。
【００５２】
ここで、ＢＧＮ方式において暗号化したまま加算（暗号加算）、乗算（暗号乗算）が可能であることを示す。
まず、暗号加算が成立することを示す。２つの平文ｍ１，ｍ２∈Ｚとする。これらを加算し、暗号化すると次式が得られる。ここで、簡易的に暗号化をＥと表記する。
Ｅ（ｍ１＋ｍ２）＝ｇm1+m2ｈr
一方、暗号加算は群Ｇ上の演算を実行することで実現される。２つの平文をそれぞれ暗号化し、演算すると次式が得られる。なお、暗号加算の記号を、円で囲まれた「＋」で表記する。
【００５３】
【数１】
0006504013.tif 000002
【００５４】
ここで、式（１）を復号すると、ｍ１＋ｍ２が得られ、次式を満たすため、暗号加算が成立する。
【００５５】
【数２】
0006504013.tif 000003
【００５６】
次に、暗号乗算が成立することを示す。暗号乗算は双線形写像を活用することで、実現される。暗号乗算を＊、ｇ１＝ｅ（ｇ，ｇ）、ｈ１＝ｅ（ｇ，ｈ）∈ＧTとし、２つの平文ｍ１，ｍ２∈Ｚに対する暗号文Ｅ（ｍ１）、Ｅ（ｍ２）に対して、双線形写像により演算すると次式が得られる。
Ｅ（ｍ１）＊Ｅ（ｍ２）＝ｅ（Ｅ（ｍ１），Ｅ（ｍ２））
＝ｅ（ｇm1ｈr1，ｇm2ｈr2）＝ｇ１m1m2・ｈ１m1r2+r1m2+r1r2
ここで、復号として、ＤＬ（ｇ１p，Ｅ（ｍ１）＊Ｅ（ｍ１））を計算すると、平文の積ｍ１ｍ２が得られ、次式を満たすため、暗号乗算が成立する。
Ｅ（ｍ１ｍ２）＝Ｅ（ｍ１）＊Ｅ（ｍ２）
このように、暗号加算と暗号乗算とが可能な準同型暗号化により、生体情報の特徴を示す特徴ベクトルを暗号化することで、照合時に、暗号データのままユークリッド二乗距離を計算することができる。
【００５７】
ここで比較例として、なりすましなどの攻撃に対する特別な対策を採らない場合の、準同型暗号化を用いた生体認証方式について説明する。
図４は、準同型暗号化を用いた生体認証の一例を示す図である。生体認証を実施するには、まず計算サーバ２００に生体情報に基づくテンプレート３３を登録する。生体情報として手のひらの静脈パターンを用いる場合、ユーザは、自身の手のひら３１をセンサ３１１にかざし、端末装置３１０に手のひら３１の静脈パターンを読み取らせる。端末装置３１０は、読み取った静脈パターンに基づいて特徴ベクトル３２を生成する。特徴ベクトル３２は、「ｘ＝（０１０１０・・・）」というように、各値は「０」または「１」のいずれかである。端末装置３１０は、生成した特徴ベクトル３２を、公開鍵３６を用いて準同型暗号ベクトルＥ（ｘ）に暗号化する。
【００５８】
暗号化は、特徴ベクトル３２の要素ごとに行われる。そのため、要素数をＤ（Ｄは１以上の整数）とし、特徴ベクトル３２の各要素の値を「ｘ1，ｘ2，・・・，ｘD」としたとき、準同型暗号ベクトルＥ（ｘ）は、「Ｅ（ｘ）＝（Ｅ（ｘ1），Ｅ（ｘ2），・・・，Ｅ（ｘD））」と表すことができる。暗号化によって得られた準同型暗号ベクトルＥ（ｘ）は、計算サーバ２００に送られ、例えばユーザのＩＤに対応付けてテンプレート３３として保持される。
【００５９】
照合時にも、ユーザの手のひら３１の静脈パターンが読み取られ、端末装置３１０で特徴ベクトル３４が生成される。なお、読み取り時の手のひら３１の位置の違いなどの影響により、照合時に生成した特徴ベクトル３４は、登録時に生成した特徴ベクトル３２と同一とはならず、例えば「ｘ’＝（０１１１０・・・）」となる。端末装置３１０は、特徴ベクトル３４に対して、公開鍵３６を用いて要素ごとに準同型暗号化を行い、準同型暗号ベクトル「Ｅ（ｘ’）＝（Ｅ（ｘ’1），Ｅ（ｘ’2），・・・，Ｅ（ｘ’D））」を生成する。生成された準同型暗号ベクトルＥ（ｘ’）は、サンプル３５として計算サーバに送信される。
【００６０】
計算サーバ２００は、テンプレート３３とサンプル３５とのユークリッド二乗距離を、暗号状態のまま計算し、計算結果を認証サーバ１００に送信する。認証サーバ１００は、暗号化された状態の距離（暗号化距離）を、秘密鍵３７を用いて復号し、平文でのユークリッド二乗距離Σ（xi−yi）2を得る。そして認証サーバ１００は、距離を閾値
と比較し、距離が閾値未満であれば、認証成功と判定する。また認証サーバ１００は、距離が閾値を超えていれば、認証失敗と判定する。
【００６１】
図４に示すように、準同型暗号化を用いた生体認証において、特徴ベクトルとして二値符号を用いた場合、ウルフと呼ばれるデータによりなりすましが可能である。
生体認証では、ある程度大きな値を閾値とすることで、テンプレートとサンプルとのある程度の誤差が許容される。生体認証システムでは、任意の特徴ベクトルとのユークリッド二乗距離が常に閾値未満になるようなベクトル（ウルフ）が存在し、これを利用することで特徴ベクトルを復元することが可能である。
【００６２】
以下に、生体認証システムに対するウルフによるなりすまし攻撃の詳細と、ウルフを活用した特徴ベクトル復元攻撃について説明する。
ウルフによるなりすまし攻撃は、以下の条件を満たす場合に成立する。
１．攻撃者は、なりすましのターゲットユーザの公開鍵を入手できている。
２．攻撃者は、指定したベクトルを使用した認証要求を送信できる。
３．特徴ベクトルが二値符号である。
４．閾値が分かっており、特徴ベクトル次元数がＤのとき、閾値がＤ／４より大きい。
５．次元数Ｄは４で割り切れる。
６．ベクトル間のユークリッド二乗距離と閾値の比較により、認証の成否を判定する。
【００６３】
条件３，４については、虹彩や掌紋などの生体情報を二値符号で表現する符号化手法が一般に利用されており、閾値をＤ／４より大きい値としても、その誤り率は０．３〜０．４になることが報告されている。そのため、条件３，４は、現実的な条件である。
【００６４】
ウルフによるなりすまし攻撃では、認証システムにとって想定外のベクトルが特徴ベクトルとして利用される。具体的には、すべての要素が１／２のベクトル（１／２，・・・，１／２）を特徴ベクトルとして利用し、通常の手順通り暗号化を行ってから、計算サーバ２００に認証要求を行うことで、なりすましが可能である。
【００６５】
図５は、なりすまし攻撃の一例を示す図である。図５には、端末装置３２０を使用する攻撃者４０が、端末装置３１０を使用するユーザになりすます場合の例を示している。
端末装置３２０を使用する攻撃者４０は、自身の手のひらの静脈パターンの読み込みに代えて、所定の値の特徴ベクトル４１を端末装置３２０に設定する。特徴ベクトル４１は、例えばすべての要素の値が「１／２」のベクトルである。この特徴ベクトル４１内の各要素が準同型暗号文に暗号化され、準同型暗号ベクトル「Ｅ（ｙ）＝（Ｅ（ｙ1），Ｅ（ｙ2），・・・，Ｅ（ｙD））」が生成される。そして、準同型暗号ベクトルＥ（ｙ）が、端末装置３１０を使用するユーザについての照合用のサンプル４３として計算サーバ２００に送信される。
【００６６】
計算サーバ２００では、端末装置３１０を使用するユーザの認証用のテンプレート３３と、なりすましのために入力されたサンプル４３との間の距離（暗号化距離）が、暗号のままで計算される。そして、暗号化距離が認証サーバ１００で復号され、平文の距離が算出される。
【００６７】
なお、なりすまし用の特徴ベクトル４１の各要素の値「１／２」とは、群Ｚ／ｎＺ上の２の逆元のことである。ａ∈｛０，１｝の場合、ａが「０」であっても「１」であってもａと１／２の差分の二乗（ａ−１／２）2は、１／４となる。要素数がＤであれば、特徴ベクトル３２と特徴ベクトル４１との間のユークリッド二乗距離は常にＤ／４となる。閾値がＤ／４より大きければ、ユークリッド二乗距離は閾値未満となり、常になりすましに成功する。なお、システムが二値ベクトルを想定していたとしても、準同型暗号方式としては、群Ｚ／ｎＺ上の元が平文となるため、０，１以外の値であっても通常通り暗号化を実行できる。
【００６８】
このように他人のなりすましが可能なベクトル（ウルフ）が存在すると、そのベクトルを用いて、秘密鍵を使用することなく、暗号化特徴ベクトルからオリジナルの特徴ベクトルを復元する攻撃が可能となる。
【００６９】
次に、ウルフを活用した特徴ベクトル復元攻撃について説明する。この攻撃は、先述したウルフを利用した場合に、距離がＤ／４となることを利用し、攻撃対象の要素の値が「０」か「１」かによって認証結果が変わるような仕組みを使っている。
【００７０】
図６は、特徴ベクトル復元攻撃の一例を示す図である。ここでは、例として、次元数Ｄ＝２０４８、閾値θ＝８００の場合に、攻撃対象ユーザの登録用特徴ベクトルにおける１つ目の要素の復元方法を示す。
【００７１】
この場合、攻撃者は、次式のようなベクトルを作成する。
ｙ'＝（ａ，０，０，０，１／２，１／２，・・・，１／２）
復元対象の要素に対応する要素にα＝１７を設定し、他の３つの要素に「０」を、それ以外の要素に「１／２」を設定する。このベクトルを使用して認証処理を行うと、攻撃対象要素ｘ0＝０の場合に「認証失敗」となり、ｘ0＝１の場合に「認証成功」となる。すなわち、認証に成功したか否かにより、攻撃対象要素ｘ0の値が判明する。
【００７２】
なお、認証の判定結果は、特徴ベクトル３２の攻撃対象要素ｘ0の値にのみ依存し、ｘ2，ｘ3，ｘ4の値の影響は受けない。以下、特徴ベクトル復元攻撃を受けた場合の、特徴ベクトル３２の先頭から４つの要素の値に応じたユークリッド二乗距離を示す。
（１）ｘ0＝０の場合のユークリッド二乗距離
１．ｘ2＋ｘ3＋ｘ4＝０の場合
ｄ＝Σ（ｘi−ｙi’）2
＝Σ｛（α−０）2＋（ｘ2−０）2＋（ｘ3−０）2＋（ｘ4−０）2＋（ｘ5−１
／２）2＋・・・＋（ｘ2048−１／２）2｝＝１７2＋（２０４８−４）／４＝８００（認証失敗）
２．ｘ2＋ｘ3＋ｘ4＝１の場合
ｄ＝Σ（ｘi−ｙi’）2
＝Σ｛（α−０）2＋（ｘ2−０）2＋（ｘ3−０）2＋（ｘ4−０）2＋（ｘ5−１
／２）2＋・・・＋（ｘ2048−１／２）2｝＝１７2＋１＋（２０４８−４）／４＝８０１（認証失敗）
３．ｘ2＋ｘ3＋ｘ4＝２の場合
ｄ＝Σ（ｘi−ｙi’）2
＝Σ｛（α−０）2＋（ｘ2−０）2＋（ｘ3−０）2＋（ｘ4−０）2＋（ｘ5−１
／２）2＋・・・＋（ｘ2048−１／２）2｝＝１７2＋２＋（２０４８−４）／４＝８０２（認証失敗）
４．ｘ2＋ｘ3＋ｘ4＝３の場合
ｄ＝Σ（ｘi−ｙi’）2
＝Σ｛（α−０）2＋（ｘ2−０）2＋（ｘ3−０）2＋（ｘ4−０）2＋（ｘ5−１
／２）2＋・・・＋（ｘ2048−１／２）2｝＝１７2＋３＋（２０４８−４）／４＝８０３（認証失敗）
（２）ｘ0＝１の場合のユークリッド二乗距離
１．ｘ2＋ｘ3＋ｘ4＝０の場合
ｄ＝Σ（ｘi−ｙi’）2
＝Σ｛（α−０）2＋（ｘ2−０）2＋（ｘ3−０）2＋（ｘ4−０）2＋（ｘ5−１
／２）2＋・・・＋（ｘ2048−１／２）2｝＝１６2＋（２０４８−４）／４＝７６７（認証成功）
２．ｘ2＋ｘ3＋ｘ4＝１の場合
ｄ＝Σ（ｘi−ｙi’）2
＝Σ｛（α−０）2＋（ｘ2−０）2＋（ｘ3−０）2＋（ｘ4−０）2＋（ｘ5−１
／２）2＋・・・＋（ｘ2048−１／２）2｝＝１６2＋１＋（２０４８−４）／４＝７６８（認証成功）
３．ｘ2＋ｘ3＋ｘ4＝２の場合
ｄ＝Σ（ｘi−ｙi’）2
＝Σ｛（α−０）2＋（ｘ2−０）2＋（ｘ3−０）2＋（ｘ4−０）2＋（ｘ5−１
／２）2＋・・・＋（ｘ2048−１／２）2｝＝１６2＋２＋（２０４８−４）／４＝７６９（認証成功）
４．ｘ2＋ｘ3＋ｘ4＝３の場合
ｄ＝Σ（ｘi−ｙi’）2
＝Σ｛（α−０）2＋（ｘ2−０）2＋（ｘ3−０）2＋（ｘ4−０）2＋（ｘ5−１
／２）2＋・・・＋（ｘ2048−１／２）2｝＝１６2＋３＋（２０４８−４）／４＝７７０（認証成功）
以上のように、ｘ2，ｘ3，ｘ4の値に関わらず、ｘ0＝０の場合は「認証失敗」、ｘ0＝１の場合は「認証成功」となる。
【００７３】
この例では、ｘ0の復元のみであったが、αを設定する位置を順番に変更して認証要求を行うことで、得られた認証結果から、登録時に用いた特徴ベクトル３２のすべての要素を復元可能である。
【００７４】
ここではα＝１７の例を示しているが、αは汎用的には閾値θと次元数Ｄからなる下記条件を満たす値である。
（θ−（Ｄ−４）／４）1/2≦α＜（θ−（Ｄ−４）／４）1/2＋１
このようななりすましや特徴ベクトル復元攻撃は、要素に「０」，「１」以外の値を設定した特徴ベクトルを用いることを利用し、第２の実施の形態では、サンプルの一部の要素を復号し、値が「０」あるいは「１」であるかどうかを確認する。値が「０」あるいは「１」の要素が少なくとも１つでもあれば、不正な攻撃であると判断できる。
【００７５】
以下、攻撃の検知機能を含む認証システムの機能について説明する。
図７は、各装置が有する機能を示すブロック図である。端末装置３１０は、公開鍵記憶部３１２、生体情報読み込み部３１３、特徴ベクトル生成部３１４、準同型暗号化部３１５、暗号データ送信部３１６、認証結果取得部３１７、および処理要求部３１８を有する。
【００７６】
公開鍵記憶部３１２は、端末装置３１０のユーザ用に生成された公開鍵を記憶する。
生体情報読み込み部３１３は、センサ３１１を介して生体情報を読み込む。例えば生体情報読み込み部３１３は、手のひらの静脈パターンが映し出された画像を読み込む。
【００７７】
特徴ベクトル生成部３１４は、生地情報の特徴を特徴ベクトルに変換する。特徴ベクトルの要素の値、二値符号である。
準同型暗号化部３１５は、公開鍵記憶部３１２に格納された公開鍵を用いて、特徴ベクトルを暗号化する。この際、準同型暗号化部３１５は、特徴ベクトル内の要素ごとに暗号化を行う。
【００７８】
暗号データ送信部３１６は、特徴ベクトルに基づく準同型暗号ベクトルを含む要求を、計算サーバ２００に送信する。テンプレートの登録時であれば、暗号データ送信部３１６は、例えば、端末装置３１０を使用しているユーザのユーザＩＤと準同型暗号ベクトルとを含む、テンプレートの登録要求を、計算サーバ２００に送信する。またサンプルの照合時であれば、暗号データ送信部３１６は、例えば、端末装置３１０を使用しているユーザのユーザＩＤと準同型暗号ベクトルとを含む認証要求を、計算サーバ２００に送信する。
【００７９】
認証結果取得部３１７は、計算サーバ２００から認証結果を受信する。認証結果取得部３１７は、認証に成功していれば、その旨を処理要求部３１８に通知する。
処理要求部３１８は、認証に成功した場合、ユーザからの入力に応じて、計算サーバ２００にデータ処理の要求を送信する。
【００８０】
計算サーバ２００は、暗号データ取得部２１０、テンプレート記憶部２２０、要素選択部２３０、距離計算部２４０、成否判定要求部２５０、認証結果管理部２６０、およびデータ処理部２７０を有する。
【００８１】
暗号データ取得部２１０は、端末装置３１０から準同型暗号ベクトルを含む要求を取得する。例えば暗号データ取得部２１０は、ユーザのテンプレートの登録要求を受信した場合、そのユーザのユーザＩＤに関連付けて、登録要求に含まれる準同型暗号ベクトルを、テンプレートとしてテンプレート記憶部２２０に格納する。また暗号データ取得部２１０は、認証要求を受信した場合、認証要求に含まれる準同型暗号ベクトルを、要素選択部２３０と距離計算部２４０とに送信する。
【００８２】
要素選択部２３０は、暗号データ取得部２１０から受信した準同型暗号ベクトルから、所定数の要素を選択する。例えば要素選択部２３０は、４つの要素を選択する。要素選択部２３０は、選択した要素（被選択要素）を、成否判定要求部２５０に送信する。
【００８３】
距離計算部２４０は、暗号データ取得部２１０から受信した準同型暗号ベクトルをサンプルとし、テンプレート記憶部２２０に格納されているテンプレートとサンプルの間の、暗号状態でのユークリッド二乗距離（暗号化距離）を計算する。距離計算部２４０は、計算した暗号化距離を、成否判定要求部２５０に送信する。
【００８４】
成否判定要求部２５０は、要素選択部２３０から受信した複数の被選択要素と、距離計算部２４０から受信した暗号化距離とを含む成否判定要求を、認証サーバ１００に送信する。成否判定要求には、例えば、認証要求を送信した端末装置３１０を使用しているユーザのユーザＩＤが含まれる。
【００８５】
認証サーバ１００は、秘密鍵記憶部１１０、復号部１２０、攻撃判定部１３０、距離判定部１４０、および認証適否判定部１５０を有する。
秘密鍵記憶部１１０は、ユーザごとの秘密鍵を記憶する。
【００８６】
復号部１２０は、秘密鍵記憶部１１０に記憶された秘密鍵を用いて、計算サーバ２００から送られた成否判定要求に含まれる、暗号化距離と複数の被選択要素とを、復号する。復号部１２０は、暗号化距離を復号して得られた距離の値を、距離判定部１４０に送信する。また復号部１２０は、被選択要素を復号して得られた要素の値を、攻撃判定部１３０に送信する。
【００８７】
攻撃判定部１３０は、復号された各要素の値に基づいて、端末装置３１０から送信された認証要求が、攻撃を目的としているか否かを判定する。例えば攻撃判定部１３０は、複数の要素のうち、値が「０」または「１」以外の要素が少なくとも１つでもあれば、攻撃目的の認証要求であると判定する。攻撃判定部１３０は、判定結果を、認証適否判定部１５０に送信する。
【００８８】
距離判定部１４０は、復号された距離の値を、予め設定されている閾値と比較し、距離が閾値未満か否かを判定する。距離判定部１４０は、距離の判定結果を、認証適否判定部１５０に送信する。
【００８９】
認証適否判定部１５０は、距離の値が閾値未満であり、かつ攻撃目的の認証要求ではない場合、認証成功と判定する。また認証適否判定部１５０は、距離の値が閾値以上であるか、または攻撃目的の認証要求である場合、認証失敗と反映する。認証適否判定部１５０は、認証適否の判定結果を、計算サーバ２００に送信する。
【００９０】
なお、図７に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図７に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００９１】
図７に示したような機能を認証サーバ１００と計算サーバ２００とが有していることにより、悪意のあるユーザ（攻撃者４０）からの攻撃に対して、認証することを抑止できる。
【００９２】
図８は、特徴ベクトルの復元を目的とした認証要求に対する認証処理の一例を示す図である。攻撃者４０が、テンプレート３３の作成に用いた特徴ベクトル３２の復元を目的とした特徴ベクトル４１を端末装置３２０に入力したものとする。特徴ベクトル４１内の３つの要素の値は「０」である。１つの要素の値「α」は、１より大きい整数である。その他の要素の値は、「１／２」である。端末装置３２０では、公開鍵３６を用いて、特徴ベクトル４１が準同型暗号ベクトルＥ（ｙ）に暗号化される。準同型暗号ベクトルＥ（ｙ）は、認証要求と共に計算サーバ２００に送信される。
【００９３】
計算サーバ２００は、準同型暗号ベクトルＥ（ｙ）を、照合用のサンプル４３として保持する。次に計算サーバ２００は、サンプル４３から４つの要素を選択する。例えば計算サーバ２００は、サンプル４３に含まれる要素から、ランダムに４つの要素を選択する。また計算サーバ２００は、サンプル４３とテンプレート３３との暗号化距離を計算する。そして、計算サーバ２００は、暗号化距離と選択された被選択要素とを、成否判定要求と共に認証サーバ１００に送信する。
【００９４】
認証サーバ１００では、まず４つの被選択要素それぞれが、秘密鍵３７を用いて復号される。認証サーバ１００は、復号して得られた値の中に、二値（「０」または「１」）以外の値が少なくとも１つあれば、不正な攻撃を受けていると判断し、認証結果を失敗と決定する。
【００９５】
すなわち、入力された特徴ベクトル４１が特徴ベクトル３２の復元を目的としている場合、特徴ベクトル４１内の要素のうち、値が「０」の要素は３つだけである。そのため、復号した４つの要素のうち少なくとも１つの要素の値は二値以外となり、認証は失敗する。これにより、不正な特徴ベクトル４１を入力する攻撃を退けることができる。
【００９６】
他方、正当なユーザが、自身の生体情報に基づく特徴ベクトルを入力すれば、不正とは判断されずに、認証処理が続行される。
図９は、通常の認証処理を示す図である。例えばユーザが、手のひら３１の静脈パターンを端末装置３１０に読み取らせると、端末装置３１０において、静脈パターンの特徴を示す特徴ベクトル３４が生成される。特徴ベクトル３４の各要素の値は、「０」または「１」の２値である。特徴ベクトル３４は、公開鍵３６を用いて準同型暗号ベクトルＥ（ｘ’）に暗号化される。準同型暗号ベクトルＥ（ｘ’）は認証要求と共に計算サーバ２００に送信される。計算サーバ２００では、準同型暗号ベクトルＥ（ｘ’）がサンプル３５として保持される。そして計算サーバ２００は、サンプル３５とテンプレート３３との暗号化距離を計算すると共に、サンプル３５内の４つの要素を選択する。そして計算サーバ２００は、暗号化距離と、選択された被選択要素とを、成否判定要求と共に認証サーバ１００に送信する。
【００９７】
認証サーバ１００では、まず４つの被選択要素それぞれが、秘密鍵３７を用いて復号される。特徴ベクトル３４内のすべての要素は、値が「０」または「１」であり、復号した結果も「０」または「１」となる。次に認証サーバ１００は、暗号化距離を復号し、平文の距離を得る。そして認証サーバ１００は、得られた距離と閾値とを比較する。距離が閾値未満であれば、認証サーバ１００は、テンプレート３３とサンプル３５とは、共に同一人物の静脈パターンから生成されているものと判断し、認証成功と決定する。なお、距離が閾値以上であれば、認証サーバ１００は、テンプレート３３とサンプル３５とが、別人の静脈パターンから生成されているものと判断し、認証失敗と決定する。
【００９８】
このようにして、不正行為を排除し、準同型暗号化を用いた生体認証を安全に実施することができる。
次に、計算サーバ２００と認証サーバ１００とにおける処理手順を詳細に説明する。
【００９９】
図１０は、計算サーバにおける認証処理の手順の一例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
［ステップＳ１０１］暗号データ取得部２１０は、準同型暗号ベクトルが付与された要求を、端末装置３１０，３２０から取得する。
【０１００】
［ステップＳ１０２］暗号データ取得部２１０は、取得した要求が、登録要求か認証要求かを判断する。登録要求であれば、処理がステップＳ１０３に進められる。認証要求であれば、処理がステップＳ１０５に進められる。
【０１０１】
［ステップＳ１０３］暗号データ取得部２１０は、登録要求に含まれる準同型暗号ベクトルをテンプレートとして、登録要求送信元の端末装置を使用しているユーザのユーザＩＤに対応付けてテンプレート記憶部２２０に格納する。
【０１０２】
［ステップＳ１０４］暗号データ取得部２１０は、登録完了応答を、登録要求の送信元である端末装置に送信する。その後、処理が終了する。
［ステップＳ１０５］要素選択部２３０は、認証要求に含まれている準同型暗号ベクトルから４つの要素を選択する。要素選択部２３０は、選択した要素（被選択要素）を成否判定要求部２５０に送信する。
【０１０３】
［ステップＳ１０６］距離計算部２４０は、認証要求に含まれている準同型暗号ベクトルを照合対象のサンプルとし、テンプレート記憶部２２０内のテンプレートとの間の暗号化距離を計算する。例えば距離計算部２４０は、テンプレート記憶部２２０から、認証要求に示されるユーザＩＤに対応するテンプレートを読み出す。そして距離計算部２４０は、サンプルとテンプレートとを暗号化された状態のままで距離を求める演算を行い、暗号化距離を生成する。距離計算部２４０は、生成した暗号化距離を成否判定要求部２５０に送信する。
【０１０４】
［ステップＳ１０７］成否判定要求部２５０は、暗号化距離と被選択要素とを含む成否判定要求を、認証サーバ１００に送信する。
［ステップＳ１０８］認証結果管理部２６０は、認証サーバ１００から認証結果を受信したか否かを判断する。認証結果を受信した場合、処理がステップＳ１０９に進められる。認証結果を受信していなければ、ステップＳ１０８の処理が繰り返される。
【０１０５】
［ステップＳ１０９］認証結果管理部２６０は、受信した認証結果が成功であれば、処理をステップＳ１１０に進める。また認証結果管理部２６０は、認証結果が失敗であれば、処理をステップＳ１１１に進める。
【０１０６】
［ステップＳ１１０］認証結果管理部２６０は、データ処理部２７０に対して、認証要求を出力したユーザからの処理要求の受け付けを許可する。以後、データ処理部２７０は、該当ユーザからのデータ処理要求を取得すると、そのデータ処理要求に従ったデータ処理を実行する。
【０１０７】
［ステップＳ１１１］認証結果管理部２６０は、認証要求の送信元である端末装置に認証結果を送信する。例えば端末装置３１０に認証成功を示す認証結果が送信された場合、端末装置３１０の認証結果取得部３１７がその認証結果を受信し、処理要求部３１８に認証成功を通知する。処理要求部３１８は、認証に成功したことを確認すると、ユーザからのデータ処理の指示を受け付け、指示に応じたデータ処理要求を計算サーバ２００に送信する。すると、計算サーバ２００のデータ処理部２７０により、データ処理が実行される。
【０１０８】
次に、認証サーバ１００における処理手順について詳細に説明する。
図１１は、認証サーバの処理手順の一例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。なお、以下の例では、選択された被選択要素数がｍ（ｍは１以上の整数）であるものとする。被選択要素Ｅ（ｚi）とする（ｉ＝１，２，・・・，ｍ）。被選択要素Ｅ（ｚi）を復号して得られる値がｚiである。
【０１０９】
［ステップＳ１２１］復号部１２０は、計算サーバから成否判定要求を受信すると、結果フラグｒに「０」を設定する。結果フラグは、認証結果の成否を示すフラグである。認証結果が成功であれば、結果フラグｒに「１」が設定される。認証結果が失敗であれば、結果フラグｒの値は「０」のまま維持される。
【０１１０】
［ステップＳ１２２］復号部１２０は、要素の復号回数を示す変数ｉに、初期値「１」を設定する。
［ステップＳ１２３］復号部１２０は、変数ｉの値が選択された要素数ｍ以下か否かを判断する。変数ｉの値が要素数ｍ以下であれば、処理がステップＳ１２４に進められる。変数ｉの値が要素数ｍを超えていれば、処理がステップＳ１２７に進められる。
【０１１１】
［ステップＳ１２４］復号部１２０は、ｉ番目の被選択要素を復号する。例えば復号部１２０は、秘密鍵記憶部１１０から秘密鍵を取得し、取得した秘密鍵を用いて復号する。復号部１２０は、復号して得られた値を、攻撃判定部１３０に送信する。
【０１１２】
［ステップＳ１２５］攻撃判定部１３０は、復号して得られた値ｚiが、「１」または「０」か否かを判断する。「１」と「０」のいずれかであれば、処理がステップＳ１２６に進められる。「１」または「０」のいずれでもなければ、処理がステップＳ１３０に進められる。
【０１１３】
［ステップＳ１２６］復号部１２０は、変数ｉの値をインクリメントし、処理をステップＳ１２３に進める。
［ステップＳ１２７］復号部１２０は、被選択要素をすべて復号した結果、すべての値が「１」または「０」の場合、暗号化距離Ｅ（ｄ）を復号する。復号部１２０は、復号した結果得られる距離ｄを、距離判定部１４０に送信する。
【０１１４】
［ステップＳ１２８］距離判定部１４０は、距離ｄが閾値θ未満か否かを判断する。距離ｄが閾値θ未満であれば、処理がステップＳ１２９に進められる。距離ｄが閾値θ以上であれば、処理がステップＳ１３０に進められる。
【０１１５】
［ステップＳ１２９］認証適否判定部１５０は、結果フラグｒに「１」を設定する。
［ステップＳ１３０］認証適否判定部１５０は、結果フラグｒの値が「１」か否かを判断する。結果フラグｒの値が「１」であれば、処理がステップＳ１３１に進められる。結果フラグｒの値が「０」であれば、処理がステップＳ１３２に進められる。
【０１１６】
［ステップＳ１３１］認証適否判定部１５０は、認証結果として、認証成功を計算サーバ２００に通知する。その後、処理が終了する。
［ステップＳ１３２］認証適否判定部１５０は、認証結果として、認証失敗を計算サーバ２００に通知する。その後、処理が終了する。
【０１１７】
以上のように、準同型暗号文に暗号化された要素のうちの４つの要素を復号して２値か否かを判断することで、テンプレートの生成元である特徴ベクトルの復元を目的とする攻撃を検知し、防御することができる。
【０１１８】
なお、二値以外の値を含む特徴ベクトルを用いた攻撃を、ユークリッド二乗距離の計算過程で検出する方法も考えられる。例えば、ユークリッド二乗距離ｄの計算式「ｄ＝Σ（ｘi−ｙi）2」を、以下の式に置き換える。
ｄ’＝Σ（（ｘi−ｙi）2＋（θ＋１）・ｙi・（ｙi−１））
この式によれば、要素の値ｙiが二値であれば「（θ＋１）・ｙi・（ｙi−１）」の値は「０」であるが、要素の値ｙiが二値以外であれば「（θ＋１）・ｙi・（ｙi−１）」が「０」以外の値となり、Σで加算される。その結果、距離ｄ’が閾値θ以上となり、認証に失敗させることができる。
【０１１９】
ただし、このような距離計算を、準同型暗号文の状態で実行すると、以下のような計算を行うこととなる。
【０１２０】
【数３】
0006504013.tif 000004
【０１２１】
式（３）における「ｅ」は、ペアリングと呼ばれる計算であり、計算コストが非常に高い。ｇk，ｈkはユーザｋの公開鍵、ｃx, iは、暗号化されたテンプレートのｉ番目の要素である。ｃy,iは、暗号化されたサンプルのｉ番目の要素である。ｔ1，ｔ2は乱数である。
【０１２２】
式（３）では、Π内の最後の項「ｅ（ｃy,i，ｇk）-(θ+1)」が、攻撃に対する防御のために増加する計算を示している。式（３）によれば、計算コストが非常に高いペアリングの計算が次元数Ｄ回増加することとなり、暗号化距離計算コストの増加が非常に大きい。
【０１２３】
それに対して、第２の実施の形態では、計算サーバ２００の処理の増加は、所定数の暗号化要素の選択、および選択した暗号化要素の認証サーバ１００への送信だけで済む。その結果、計算サーバ２００の処理負荷の増加が抑止されている。また認証サーバ１００では、数個の暗号化要素の復号処理をする処理が追加されるが、次元数分のペアリング計算に比べれば、計算量の増加は低く抑えられる。その結果、二値以外の値を含む特徴ベクトルを用いた攻撃を、効率的に防御することが可能である。
【０１２４】
なお、距離の閾値によっては、値が「０」の要素を４つ以上含む特徴ベクトルを用いて、不正に認証を受けることが可能な場合もある。なりすましを完全に防ぐために復号する暗号化要素の数は、以下のようにして計算できる。例えば、計算サーバ２００が、閾値θに基づいて、チェックすべき暗号化要素の数を導出する。
【０１２５】
ここで、特徴ベクトルの次元数をＤ、閾値をθとした場合、攻撃者がなりすましのために特徴ベクトルに０，１を挿入できる要素数をｍ（ｍは、１以上、Ｄ以下の整数）とする。この場合、ｍは以下のように導出できる。
【０１２６】
特徴ベクトルのうち（Ｄ−ｍ）個の要素に１／２を、ｍ個の要素に０または１を設定した場合、ユークリッド二乗距離の最大値ｄは下記のようになる。
ｄ＝（Ｄ−ｍ）／４＋ｍ
攻撃が成功するためには、ｄが閾値より小さく、かつ（Ｄ−ｍ）が４で割り切れることが求められる。これらの条件から、ｍは以下のようになる。
（Ｄ−ｍ）／４＋ｍ＜θ
３ｍ＜４θ−Ｄ
ｍ＜（４θ−Ｄ）／３
従って、なりすましを行う攻撃者は上の式を満たし、かつ、（Ｄ−ｍ）が４で割り切れるｍ個の要素について、０，１を挿入した特徴ベクトルを用いた攻撃を行うこととなる。そこで、認証サーバ１００において（ｍ＋１）個の要素の値をチェックすれば、攻撃用の特徴ベクトルからは、０，１以外の暗号文が１つは発見でき、攻撃を検知できる。
【０１２７】
以下に、具体的例を示す。
・Ｄ＝２０４８，θ＝６００の場合（Ｄ＝４ｎの場合）
この場合、（４θ−Ｄ）／３＝１１７．３である。なりすましのためには、ｍが１１７．３より小さく、かつ、（Ｄ−ｍ）が４で割り切れる整数であるという条件があるため、ｍ＝１１６となる。このとき、ユークリッド二乗距離は最大５９９となり、距離のみで認証の成否判定を行うと、なりすまし成功となる。
【０１２８】
これに対し、１１７個の要素について、「０」または「１」かどうかをチェックすることで、なりすまし検知可能となる。
・Ｄ＝２０４９，θ＝６００の場合（Ｄ＝４ｎ＋１の場合）
この場合、（４θ−Ｄ）／３＝１１７である。なりすましのためには、ｍが１１７より小さく、かつ、（Ｄ−ｍ）が４で割り切れる整数であるという条件があるため、ｍ＝１１３となる。このとき、ハミング距離は最大５９７となり、距離のみで認証の成否判定を行うと、なりすまし成功となる。
【０１２９】
これに対し、１１４個の要素について、「０」または「１」かどうかをチェックすることで、なりすまし検知可能となる。
・Ｄ＝２０５０，θ＝６００の場合（Ｄ＝４ｎ＋２の場合）
この場合、（４θ−Ｄ）／３＝１１６．６である。なりすましのためには、ｍが１１６．６より小さく、かつ、（Ｄ−ｍ）が４で割り切れる整数であるという条件があるため、ｍ＝１１４となる。このとき、ユークリッド二乗距離は最大５９８となり、距離のみで認証の成否判定を行うと、なりすまし成功となる。
【０１３０】
これに対し、１１５個の要素について、「０」または「１」かどうかをチェックすることで、なりすまし検知可能となる。
・Ｄ＝２０５１，θ＝６００の場合（Ｄ＝４ｎ＋３の場合）
この場合、（４θ−Ｄ）／３＝１１６．３である。なりすましのためには、ｍが１１６．３より小さく、かつ、（Ｄ−ｍ）が４で割り切れる整数であるという条件があるため、ｍ＝１１５となる。このとき、ユークリッド二乗距離は最大５９８となり、距離のみで認証の成否判定を行うと、なりすまし成功となる。
【０１３１】
これに対し、１１６個の要素について、「０」または「１」かどうかをチェックすることで、なりすまし検知可能となる。
このように、第２の実施の形態では、準同型暗号ベクトル内の適切な個数の暗号化要素を復号して、二値か否かを判定することで、ウルフなどの不正なベクトルを利用した、なりすまし攻撃や特徴ベクトルに対する復元攻撃を回避することが可能となる。しかも攻撃を回避するための最小限の個数の暗号化要素のみを復号することで、防御のための処理の増加を最小限に抑えることができる。
【０１３２】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１３３】
１  手のひら
２，２ａ，２ｂ  特徴ベクトル
３  公開鍵
４  秘密鍵
５  攻撃者
１０  暗号処理装置
１１  記憶部
１１ａ  テンプレート
１２  演算部
【図１】
0006504013.tif 000005
【図２】
0006504013.tif 000006
【図３】
0006504013.tif 000007
【図４】
0006504013.tif 000008
【図５】
0006504013.tif 000009
【図６】
0006504013.tif 000010
【図７】
0006504013.tif 000011
【図８】
0006504013.tif 000012
【図９】
0006504013.tif 000013
【図１０】
0006504013.tif 000014
【図１１】
0006504013.tif 000015