(57)【特許請求の範囲】
【請求項１】
コンピュータが、
暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化された照合情報の入力を受け付けて、前記入力された照合情報と、前記暗号アルゴリズムを用いて暗号化されたユーザの登録情報とは異なる登録情報との第１のハミング距離を計算し、
前記計算された第１のハミング距離が前記ユーザとは異なる他人と照合した場合の距離分布に入るか否かをもとに、前記照合情報の正当性を判別する
処理を実行することを特徴とする情報処理方法。
【請求項２】
前記判別する処理は、前記計算された第１のハミング距離が前記他人と照合した場合の距離分布に入らずに本人と照合した場合の距離分布に入る場合に、前記照合情報が不正であると判別する
ことを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記計算する処理は、前記入力された照合情報と、前記ユーザの登録情報との第２のハミング距離を計算し、
前記判別する処理は、前記計算された第１のハミング距離が前記他人と照合した場合の距離分布に入り、前記計算された第２のハミング距離が前記ユーザと照合した場合の距離分布に入る場合に、前記照合情報のユーザを前記登録情報のユーザと判別する
ことを特徴とする請求項１又は２に記載の情報処理方法。
【請求項４】
前記暗号アルゴリズムは準同型暗号である
ことを特徴とする請求項１乃至３のいずれか一項に記載の情報処理方法。
【請求項５】
前記計算する処理は、前記登録情報に乱数を掛けあわせて前記異なる登録情報を生成する
ことを特徴とする請求項４に記載の情報処理方法。
【請求項６】
コンピュータに、
暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化された照合情報の入力を受け付けて、前記入力された照合情報と、前記暗号アルゴリズムを用いて暗号化されたユーザの登録情報とは異なる登録情報との第１のハミング距離を計算し、
前記計算された第１のハミング距離が前記ユーザとは異なる他人と照合した場合の距離分布に入るか否かをもとに、前記照合情報の正当性を判別する
処理を実行させることを特徴とする情報処理プログラム。
【請求項７】
暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化された照合情報の入力を受け付けて、前記入力された照合情報と、前記暗号アルゴリズムを用いて暗号化されたユーザの登録情報とは異なる登録情報との第１のハミング距離を計算する計算部と、
前記計算された第１のハミング距離が前記ユーザとは異なる他人と照合した場合の距離分布に入るか否かをもとに、前記照合情報の正当性を判別する判別部と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理方法、情報処理プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
現在、個人情報や機密情報を保護する規制が強化される一方で、それらの情報を利用したサービスの市場が拡大しつつある。また、個人情報や機密情報を保護したままデータの利活用ができる秘匿化技術が利用されている。秘匿化技術の中には、データ種別やサービス要件に応じて、暗号技術や統計技術を使った技術がある。
【０００３】
暗号技術を用いた秘匿化技術として準同型暗号技術が知られている。準同型暗号技術は、暗号化と復号とで一対の異なる鍵を用いる公開鍵暗号方式の１つであり、暗号化したままデータを操作できる暗号技術である。例えば、平文ｍ１及びｍ２に対して、加算又は乗法に関する準同型暗号方式の暗号化関数をＥとすると、以下の式（１）又は（２）の性質が成り立つ。
（１）Ｅ（ｍ１）＋Ｅ（ｍ２）＝Ｅ（ｍ１＋ｍ２）
（２）Ｅ（ｍ１）＊Ｅ（ｍ２）＝Ｅ（ｍ１＊ｍ２）
（１）式が成り立つものを加算について準同型と呼び、（２）式が成り立つものを乗算について準同型と呼ぶ。
【０００４】
準同型暗号方式を用いれば、暗号文の加算や乗算により、暗号文を復号することなく、加算や乗算を行った演算結果の暗号文を得ることができる。この準同型暗号の性質は、電子投票や電子現金などの分野やクラウドコンピューティング分野において利用される。なお、準同型暗号方式としては、乗算に利用されるＲＳＡ（Rivest  Shamir  Adleman）暗号方式や加算に利用されるAdditive  ElGamal暗号方式が代表的である。
【０００５】
近年では、加算と乗算の両方に利用することができる準同型暗号方式が知られており、加算と乗算の両方に利用でき、かつ、処理性能と暗号データサイズの両面で実用的な準同型暗号方式も知られている。
【０００６】
ここで、一例として準同型暗号方式について説明する。まず、暗号鍵生成について、主に３つの鍵生成パラメータ（ｎ，ｑ，ｔ）を用意する。ｎは２冪の整数で格子次元と呼ばれ、ｑは素数、ｔは素数ｑよりも小さい整数とする。暗号鍵生成の手順としては、まず秘密鍵として各係数が非常に小さいｎ次元の多項式ｓｋをランダムに生成する。なお、各係数の小ささは、あるパラメータσで制限される。次に、各係数がｑより小さいｎ次元多項式ａ１と各係数が非常に小さいｎ次元多項式ｅをランダムに生成する。
【０００７】
そこで、ａ０＝−（ａ１＊ｓｋ＋ｔ＊ｅ）を計算し、組（ａ０，ａ１）を公開鍵ｐｋと定義する。但し、ａ０の多項式計算時において、ｎ次以上の多項式に対してｘｎ＝−１，ｘｎ＋１＝−ｘ，．．．と計算することで、絶えずｎ次より小さい多項式を計算する。さらに、多項式の係数については、素数ｑで割った余りを出力する。なお、このような演算を行う空間を、学術的にはＲｑ：＝Ｆｑ［ｘ］／（ｘｎ＋１）と表すことが多い。
【０００８】
次に、各係数がｔより小さいｎ次多項式で表される平文データｍと公開鍵ｐｋ＝（ａ０，ａ１）に対して、各係数が非常に小さい３つのｎ次元多項式ｕ，ｆ，ｇをランダムに生成し、平文データｍの暗号データＥｎｃ（ｍ，ｐｋ）＝（ｃ０，ｃ１）を次のように定義する。（ｃ０，ｃ１）については、ｃ０＝ａ０＊ｕ＋ｔ＊ｇ＋ｍ、ｃ１＝ａ１＊ｕ＋ｔ＊ｆと計算する。なお、これらの計算も空間Ｒｑ上での演算を行う。
【０００９】
次に、２つの暗号文Ｅｎｃ（ｍ１，ｐｋ）＝（ｃ０，ｃ１）と、Ｅｎｃ（ｍ２，ｐｋ）＝（ｄ０，ｄ１）に対して、暗号加算Ｅｎｃ（ｍ１，ｐｋ）＋Ｅｎｃ（ｍ２，ｐｋ）を（ｃ０＋ｄ０，ｃ１＋ｄ１）と計算し、暗号乗算Ｅｎｃ（ｍ１，ｐｋ）＊Ｅｎｃ（ｍ２，ｐｋ）を（ｃ０＋ｄ０，ｃ０＊ｄ１＋ｃ１＊ｄ０，ｃ１＊ｄ１）と計算する。このように暗号乗算を行うと、暗号文のデータサイズが２成分ベクトルから３成分ベクトルになることに注意する。
【００１０】
また、復号処理であるが、暗号文ｃ＝（ｃ０，ｃ１，ｃ２，．．．）に対して（ここでは複数の暗号乗算などの暗号操作により暗号文データの成分が増大したと仮定している）、秘密鍵ｓｋを用いてＤｅｃ（ｃ，ｓｋ）＝［ｃ０＋ｃ１＊ｓｋ＋ｃ２＊ｓｋ2＋・・・］ｑ  ｍｏｄ  ｔを計算することで、復号する。ここで、［ｚ］ｑの値は、整数ｚをｑで割った余りｗを計算し、ｗ＜ｑならば［ｚ］ｑ＝ｗを出力し、ｗ≧ｑの場合には［ｚ］ｑ＝ｗ−ｑを出力する。さらに、ａ  ｍｏｄ  ｔは整数ａをｔで割った余りを意味する。
【００１１】
以下、分かりやすくするために数値例を示しておく。
秘密鍵ｓｋ＝Mod（Mod（4，1033）＊ｘ3＋Mod（4，1033）＊ｘ2＋Mod（1，1033）*ｘ，ｘ4＋１）
公開鍵ｐｋ＝（ａ０，ａ１）
ａ０＝Mod（Mod（885，1033）＊ｘ3＋Mod（519，1033）＊ｘ2＋Mod（621，1033）＊ｘ＋Mod（327，1033），ｘ4＋１）
ａ１＝Mod（Mod（661，1033）＊ｘ3＋Mod（625，1033）＊ｘ2＋Mod（861，1033）＊ｘ＋Mod（311，1033），ｘ4＋１）
Ｅｎｃ（ｍ，ｐｋ）＝（ｃ０，ｃ１）
平文データｍ＝３＋２ｘ＋２ｘ2＋２ｘ3とする。
ｃ０＝Mod（Mod（822，1033）＊ｘ3＋Mod（1016，1033）＊ｘ2＋Mod（292，1033）＊ｘ＋Mod（243，1033），ｘ4＋１）
ｃ１＝Mod（Mod（840，1033）＊ｘ3＋Mod（275，1033）＊ｘ2＋Mod（628，1033）＊ｘ＋Mod（911，1033），ｘ4＋１）
【００１２】
なお、上記値において、鍵生成パラメータ（ｎ，ｑ，ｔ）については、（４，１０３３，２０）と設定した。さらに、Mod（ａ，ｑ）は整数ａを素数ｑで割った余りを意味し、Mod（ｆ（ｘ），ｘ４＋１）は多項式ｆ（ｘ）を多項式ｘ4＋１で割った余りの多項式を意味する。但し、ｘ４＝−１、ｘ５＝ｘ，．．．などを意味するものとする。
【００１３】
また、準同型暗号を利用した秘匿距離計算の高速化手法がある。ここで、その高速化手法を説明する。この手法では、上述した暗号方式が持つ多項式演算が可能な性質を利用する。具体的には、２つのｎ次より小さい多項式ｆ（ｘ），ｇ（ｘ）に対する２つの暗号文Ｅｎｃ（ｆ（ｘ），ｐｋ），Ｅｎｃ（ｇ（ｘ），ｐｋ）が与えられたとき、暗号化したまま多項式上の加算Ｅｎｃ（ｆ（ｘ），ｐｋ）＋Ｅｎｃ（ｇ（ｘ），ｐｋ）＝Ｅｎｃ（ｆ（ｘ）＋ｇ（ｘ），ｐｋ）を行うことができる性質がある。また、暗号化したまま多項式上の乗算Ｅｎｃ（ｆ（ｘ），ｐｋ）＊Ｅｎｃ（ｇ（ｘ），ｐｋ）＝Ｅｎｃ（ｆ（ｘ）＊ｇ（ｘ），ｐｋ）を行うことができる性質がある。
【００１４】
そこで、高速化手法では、２つのベクトルＡ＝（ａ０，ａ１，．．．），Ｂ＝（ｂ０，ｂ１，．．．）が与えられたとき、Ａ，Ｂを暗号化したまま高速に内積値Σａｉ＊ｂｉを計算する。具体的には、ベクトルＡに対して昇順の多項式ｐｍ１（Ａ）＝Σａｉｘ＾ｉ、ベクトルＢに対してはマイナス付きの降順の多項式ｐｍ２（Ｂ）＝−Σｂｉｘ＾（ｎ−ｉ）を生成したのち、それらの多項式を準同型暗号化Ｅｎｃ（ｐｍ１（Ａ），ｐｋ），Ｅｎｃ（ｐｍ２（Ｂ），ｐｋ）する。
【００１５】
この２つの暗号文を乗算すると、暗号化したまま多項式の乗算ｐｍ１（Ａ）＊ｐｍ２（Ｂ）が行われ、その定数項が内積値Σａｉ＊ｂｉとなる。つまり、暗号化乗算の復号結果の定数項がちょうど内積値Σａｉ＊ｂｉとなる。この手法を用いることで、Ａ，Ｂの各成分を暗号化して内積計算を求めるよりも、非常に効率的に計算することが可能となる。さらに、この高速内積計算を応用することで、暗号化したままハミング距離計算やＬ２ノルム計算などを高速に計算することが可能である。
【００１６】
上述した準同型暗号方式と、暗号化したままハミング距離計算やＬ２ノルム計算などを高速に計算する手法とを用いた一例として、指紋や静脈などの生体情報を認証に用いる生体認証システムがある。この生体認証システムでは、生体情報を準同型暗号で保護しつつ、暗号化したままハミング距離計算を行うことで、生体情報の機密性を高めることができる。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特表２００８−５２１０２５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、生体情報について暗号化したままハミング距離計算を行って生体認証を行う生体認証システムでは、不正な照合データを検知することが困難であるという問題がある。
【００１９】
例えば、生体認証システムにおける不正認証を目的とした成りすまし攻撃としては、通信路の盗聴による再送攻撃、グミ指や印刷物などの人工物を用いた入力による成りすまし、不正な（偽の）照合データの送信による成りすまし等が代表的である。
【００２０】
このうちの一つの不正な照合データの送信による成りすましでは、具体的には、予め登録された生体情報（テンプレート）に対して、ハミング距離計算時において認証を成功させるための閾値よりも小さい距離を出力させる不正な照合データをシステムに送信する。例えば、テンプレートとして登録されている任意のバイナリ登録データＡ＝（ａ０，ａ１，…，ａ２０４７）に対し、偽の照合データとしてＢ＝（ｂ０，ｂ１，．．．，ｂ２０４７）＝（１，０，１，０，．．．，１，ｅ）を送信する。
【００２１】
ただし、Ｂの最終成分はバイナリデータではなく、絶対値が１０２４−θとなる整数値ｅを選ぶ。なお、θは、テンプレートとのハミング距離を計算して認証の可否を判別するための閾値である。つまり、２つの生体特徴ベクトル（生体情報）Ａ，Ｂの距離ｄ（Ａ，Ｂ）が閾値θよりも小さい場合認証に成功する。
【００２２】
ここで、正規のテンプレートＡと不正な照合データＢとの距離ｄ（Ａ，Ｂ）はΣ（ａｉ＋ｂｉ-２ａｉ＊ｂｉ）であるため、ｅの取り方によりこの距離の値は確率５０％で閾値θより小さくなり、認証に成功してしまう。この時、照合データは準同型暗号化されていることから、不正な照合データであることを検知することは困難である。
【００２３】
１つの側面では、認証にかかる照合情報について、不正な照合情報を検知可能とする情報処理方法、情報処理プログラムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００２４】
第１の案では、情報処理方法は、コンピュータが、暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化された照合情報の入力を受け付ける処理を実行する。また、情報処理方法は、コンピュータが、入力された照合情報と、暗号アルゴリズムを用いて暗号化されたユーザの登録情報とは異なる登録情報との第１のハミング距離を計算する処理を実行する。また、情報処理方法は、コンピュータが、計算された第１のハミング距離がユーザとは異なる他人と照合した場合の距離分布に入るか否かをもとに、照合情報の正当性を判別する処理を実行する。
【発明の効果】
【００２５】
本発明の１実施態様によれば、認証にかかる照合情報について、不正な照合情報を検知できる。
【図面の簡単な説明】
【００２６】
【図１】図１は、認証システムの概要を説明する説明図である。
【図２】図２は、実施形態にかかる認証システムの構成の一例を示すブロック図である。
【図３】図３は、実施形態にかかる認証システムの動作例を示すラダーチャートである。
【図４】図４は、照合分布を説明する説明図である。
【図５】図５は、実施形態にかかる認証システムの動作例を示すラダーチャートである。
【図６】図６は、情報処理プログラムを実行するコンピュータの一例を示す説明図である。
【発明を実施するための形態】
【００２７】
以下、図面を参照して、実施形態にかかる情報処理方法、情報処理プログラムおよび情報処理装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する情報処理方法、情報処理プログラムおよび情報処理装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【００２８】
先ず、生体情報について暗号化したままハミング距離計算を行って生体認証を行う認証システムの概要を説明する。図１は、認証システム１の概要を説明する説明図である。図１に示すように、認証システム１は、端末装置１０と、計算サーバ１００と、認証サーバ２００とを有する。端末装置１０、計算サーバ１００および認証サーバ２００は、相互に通信可能に接続されている。
【００２９】
端末装置１０は、ＰＣ（Personal  Computer）、スマートフォン等であり、認証システム１において、ユーザの生体情報の登録および照合を行う端末装置である。端末装置１０は、生体情報の登録および照合を行う場合に、ユーザの生体情報を取得して、取得した生体情報を準同型暗号で暗号化して計算サーバ１００に送信する。本実施形態ではユーザの生体情報として手の静脈を取得する場合を例示するが、生体情報は、指紋などであってもよく、特に限定しない。
【００３０】
生体情報の登録時は、例えば、端末装置１０の図示しないセンサによりユーザの生体情報を取得し、取得した生体情報に基づいて、特徴情報として特徴ベクトルＡを生成する（Ｓ２０）。次いで、端末装置１０は、生成した特徴ベクトルＡについて、昇順の多項式（Ｐｍ１（Ａ））を生成（変換）する。次いで、端末装置１０は、生成した多項式Ｐｍ１（Ａ）を暗号化した状態でハミング距離（秘匿距離）を算出可能なアルゴリズム、例えば、準同型暗号の公開鍵を用いて準同型暗号化する（Ｓ２１）。
【００３１】
次いで、端末装置１０は、準同型暗号化されたデータＥ（Ｐｍ１（Ａ））を計算サーバ１００へ送信する。計算サーバ１００は、準同型暗号化されたデータＥ（Ｐｍ１（Ａ））を端末装置１０から受信すると、このデータＥ（Ｐｍ１（Ａ））をユーザの登録情報としてデータベース等に記憶する（Ｓ２２）。このユーザの登録情報は、生体認証分野においてテンプレートと呼ばれる場合がある。
【００３２】
また、生体情報の照合時において、端末装置１０は、登録時と同様に取得した生体情報に基づいて、特徴情報として特徴ベクトルＢを生成する（Ｓ３０）。次いで、端末装置１０は、生成した特徴ベクトルＢについて、降順の多項式（Ｐｍ２（Ｂ））を生成（変換）する。次いで、端末装置１０は、生成した多項式Ｐｍ２（Ｂ）を暗号化した状態でハミング距離（秘匿距離）を算出可能なアルゴリズム、例えば、準同型暗号の公開鍵を用いて準同型暗号化する（Ｓ３１）。
【００３３】
次いで、端末装置１０は、準同型暗号化されたデータＥ（Ｐｍ２（Ｂ））を計算サーバ１００へ送信する。計算サーバ１００は、端末装置１０からデータＥ（Ｐｍ２（Ｂ））を受信すると、このデータＥ（Ｐｍ２（Ｂ））と、登録時に登録情報として記憶されたデータＥ（Ｐｍ１（Ａ））との間で暗号化された状態でハミング距離を算出する（Ｓ３２）。このハミング距離の計算結果は、準同型暗号の秘密鍵を持つ認証サーバ２００に送信される。
【００３４】
認証サーバ２００は、計算サーバ１００からハミング距離の計算結果を受信すると、準同型暗号の秘密鍵を用いて復号し、平文となったハミング距離を予め設定された閾値と比較する。この比較において、平文となったハミング距離が閾値未満である場合、認証サーバ２００は、照合結果としてＯＫ、つまり認証可とする照合結果を端末装置１０に送信する。また、認証サーバ２００は、平文となったハミング距離が閾値以上である場合に、照合結果としてＮＧ、つまり認証不可とする照合結果を端末装置１０に送信する（Ｓ３３）。
【００３５】
このとき、認証システム１では、計算サーバ１００には準同型暗号で暗号化した特徴情報を送信し、計算サーバ１００は秘密鍵を持たない。よって、計算サーバ１００側ではユーザの特徴情報を知ることは困難である。また、認証サーバ２００側も、ハミング距離の計算結果を受信し、秘密鍵で復号するので、ユーザの特徴情報を知ることは困難である。したがって、秘密鍵を持つ認証サーバ２００と、計算サーバ１００とが結託しない限り、ユーザの特徴情報を保護（暗号化により秘匿）した状態で認証サービスを受けることができる。
【００３６】
図２は、実施形態にかかる認証システム１の構成の一例を示すブロック図である。図２に示すように、認証システム１は、端末装置１０と、計算サーバ１００と、認証サーバ２００とを有し、ネットワークＮを介して相互に通信可能に接続されている。
【００３７】
なお、図示例では、認証システム１が１つの端末装置１０を有する場合を示したが、端末装置１０の数は限定されず、認証システム１は、任意の数の端末装置１０を有してもよい。また、ネットワークＮには、有線または無線を問わず、インターネット（Internet）を始め、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。
【００３８】
端末装置１０は、通信部１１と、記憶部１２と、取得部１３と、制御部１４とを有する。なお、端末装置１０は、図２に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能部を有することとしてもかまわない。
【００３９】
通信部１１は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。通信部１１は、ネットワークＮを介して計算サーバ１００および認証サーバ２００と有線または無線で接続され、計算サーバ１００および認証サーバ２００との間で情報の通信を司る通信インタフェースである。通信部１１は、ユーザの生体情報に基づく特徴情報の登録時に、制御部１４から入力された準同型暗号化されたデータＥ（Ｐｍ１（Ａ））を計算サーバ１００に送信する。また、通信部１１は、ユーザの生体情報に基づく特徴情報の照合時に、制御部１４から入力された準同型暗号化されたデータＥ（Ｐｍ２（Ｂ））を計算サーバ１００に送信し、認証サーバ２００から照合結果を受信する。通信部１１は、受信した照合結果を制御部１４に出力する。
【００４０】
記憶部１２は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２は、制御部１４での処理に用いる情報を記憶する。
【００４１】
取得部１３は、ユーザの生体情報を取得する。取得部１３は、例えば、撮像センサ等によって指紋、網膜、虹彩、顔、血管等の画像を撮像し、撮像した画像の画像データを、生体情報として制御部１４に出力する。なお、取得部１３は、生体情報として画像データを取得することに限られず、音声、筆跡等を生体情報として取得するようにしてもよい。
【００４２】
制御部１４は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１４は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。
【００４３】
制御部１４は、生成部１５と、算出部１６と、暗号化部１７とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１４の内部構成は、図２に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部１４は、通信部１１から照合結果が入力されると、照合結果に応じた処理を実行する。さらに、制御部１４は、特徴情報の登録時および照合時と、登録時と、照合時とのうち、いずれかの場合に、暗号化部１７の暗号化する処理を実行するかを制御する処理を実行するようにしてもよい。
【００４４】
生成部１５は、取得部１３からユーザの生体情報が入力されると、生体情報から特徴を抽出して特徴情報を生成する。特徴情報は、例えば血管画像であれば、血管の詰まり具合（密度）、色の濃さ等に基づく情報とすることができる。また、特徴情報は、例えば指紋画像であれば、紋の分岐点等を特徴点として抽出した情報とすることができる。なお、特徴情報は、以下の説明では特徴ベクトルともいう。生成部１５は、例えば、特徴情報の登録時の特徴ベクトルを特徴ベクトルＡとし、特徴情報の照合時の特徴ベクトルを特徴ベクトルＢとして、算出部１６に出力する。この特徴ベクトルＢは、照合に用いるための照合データ（照合情報）である。なお、この照合データについては、ユーザが登録した登録情報との照合に用いるためのデータであれば、特徴ベクトルに限定しない。
【００４５】
算出部１６は、特徴ベクトルＡ、Ｂについて、昇順の多項式（Ｐｍ１（Ａ））または降順の多項式（Ｐｍ２（Ｂ））を計算し、計算結果を暗号化部１７へ出力する。具体的には、登録時の特徴ベクトルＡについて、昇順の多項式（Ｐｍ１（Ａ））を計算する。また、照合時の特徴ベクトルＢについて、降順の多項式（Ｐｍ２（Ｂ））を計算する。
【００４６】
暗号化部１７は、算出部１６により計算されたＰｍ１（Ａ）またはＰｍ２（Ｂ）について、暗号化した状態でハミング距離（秘匿距離）を算出可能なアルゴリズム、例えば、準同型暗号の公開鍵を用いて準同型暗号化する。暗号化を行うアルゴリズムとして、例えば、Ｉｄｅａｌ  ｌａｔｔｉｃｅｓ、Ｒｉｎｇ−ＬＷＥ（Learning  With  Errors）等の格子ベース準同型暗号を用いることができる。なお、準同型暗号の公開鍵は、予め認証サーバ２００から配信された公開鍵を用いる。
【００４７】
暗号化部１７は、暗号化されたＰｍ１（Ａ）のデータＥ（Ｐｍ１（Ａ））を、通信部１１を介して計算サーバ１００へ送信する。また、暗号化部１７は、暗号化されたＰｍ２（Ｂ）のデータＥ（Ｐｍ２（Ｂ））を、通信部１１を介して計算サーバ１００へ送信する。
【００４８】
計算サーバ１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、計算サーバ１００は、図２に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能部を有することとしてもかまわない。
【００４９】
通信部１１０は、例えば、ＮＩＣ等によって実現される。通信部１１０は、ネットワークＮを介して端末装置１０および認証サーバ２００と有線または無線で接続され、端末装置１０および認証サーバ２００との間で情報の通信を司る通信インタフェースである。通信部１１０は、端末装置１０から準同型暗号化されたデータＥ（Ｐｍ１（Ａ））またはデータＥ（Ｐｍ２（Ｂ））を受信する。通信部１１０は、例えば、ユーザの生体情報に基づく特徴情報の登録時には、データＥ（Ｐｍ１（Ａ））を受信する。また、通信部１１０は、例えば、ユーザの生体情報に基づく特徴情報の照合時には、データＥ（Ｐｍ２（Ｂ））を受信する。通信部１１０は、受信したデータＥ（Ｐｍ１（Ａ））またはデータＥ（Ｐｍ２（Ｂ））を制御部１３０に出力する。また、通信部１１０は、制御部１３０からハミング距離の計算結果が入力されると、その計算結果を認証サーバ２００に送信する。
【００５０】
記憶部１２０は、例えば、ＲＡＭ、フラッシュメモリ等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２０は、登録情報記憶部１２１を有する。また、記憶部１２０は、制御部１３０での処理に用いる情報を記憶する。
【００５１】
登録情報記憶部１２１は、端末装置１０から受信したユーザの登録情報であり、準同型暗号化されたデータＥ（Ｐｍ１（Ａ））を、各ユーザが識別可能なように、例えば、ユーザＩＤ（IDentifier）と対応付けて記憶する。
【００５２】
制御部１３０は、例えば、ＣＰＵやＭＰＵ等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、例えば、ＡＳＩＣやＦＰＧＡ等の集積回路により実現されるようにしてもよい。制御部１３０は、算出部１３１および送信部１３２を有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図２に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００５３】
算出部１３１は、ユーザの生体情報に基づく特徴情報の照合時に端末装置１０より受信したデータＥ（Ｐｍ２（Ｂ））と、ユーザの登録情報（データＥ（Ｐｍ１（Ａ）））とのハミング距離（秘匿距離Ｅ（ｄ（Ａ，Ｂ）））を計算する。
【００５４】
また、算出部１３１は、データＥ（Ｐｍ１（Ａ））とは異なるランダムなバイナリベクトルＴを生成する。ユーザの登録情報（データＥ（Ｐｍ１（Ａ）））を生体認証におけるテンプレートとすると、ランダムなバイナリベクトルＴは、テンプレートとは異なった、ダミーテンプレート（偽のテンプレート）と呼ぶことができる。算出部１３１は、生成したバイナリベクトルＴと、端末装置１０より受信したデータＥ（Ｐｍ２（Ｂ））とのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））を計算する。
【００５５】
送信部１３２は、算出部１３１により算出された２つの秘匿距離Ｅ（ｄ（Ａ，Ｂ））およびＥ（ｄ（Ｂ，Ｔ））を、通信部１１０を介して認証サーバ２００へ送信する。
【００５６】
認証サーバ２００は、通信部２１０と、記憶部２２０と、制御部２３０とを有する。なお、認証サーバ２００は、図２に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能部を有することとしてもかまわない。
【００５７】
通信部２１０は、例えば、ＮＩＣ等によって実現される。通信部２１０は、ネットワークＮを介して端末装置１０および計算サーバ１００と有線または無線で接続され、端末装置１０および計算サーバ１００との間で情報の通信を司る通信インタフェースである。通信部２１０は、計算サーバ１００からハミング距離（秘匿距離Ｅ（ｄ（Ａ，Ｂ））およびＥ（ｄ（Ｂ，Ｔ）））を受信する。通信部２１０は、受信したハミング距離を制御部２３０に出力する。また、通信部２１０は、制御部２３０から照合結果が入力されると、その照合結果を端末装置１０に送信する。
【００５８】
記憶部２２０は、例えば、ＲＡＭ、フラッシュメモリ等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部２２０は、制御部２３０での処理に用いる情報を記憶する。
【００５９】
制御部２３０は、例えば、ＣＰＵやＭＰＵ等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部２３０は、例えば、ＡＳＩＣやＦＰＧＡ等の集積回路により実現されるようにしてもよい。制御部２３０は、判定部２３１および不正検知部２３２を有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部２３０の内部構成は、図２に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部２３０は、準同型暗号の公開鍵および秘密鍵を管理し、公開鍵を通信部２１０を介して認証システム１に属する端末装置１０に配信する。
【００６０】
判定部２３１は、計算サーバ１００から受信したハミング距離（秘匿距離Ｅ（ｄ（Ａ，Ｂ））およびＥ（ｄ（Ｂ，Ｔ）））が予め設定された閾値未満であるか否かを判定する。具体的には、判定部２３１は、通信部２１０からハミング距離が入力されると、入力されたハミング距離を準同型暗号の秘密鍵で復号する。判定部２３１は、復号された平文のハミング距離が閾値未満であるか否かを判定する。
【００６１】
判定部２３１は、ユーザの登録情報とのハミング距離（秘匿距離Ｅ（ｄ（Ａ，Ｂ）））について、復号された平文のハミング距離が閾値未満である場合には、認証可（ＯＫ）と判定する。また、判定部２３１は、ユーザの登録情報とのハミング距離（秘匿距離Ｅ（ｄ（Ａ，Ｂ）））について、復号された平文のハミング距離が閾値以上である場合には、認証不可（ＮＧ）と判定する。判定部２３１は、閾値として、概ねハミング距離のビット列の半分程度、例えば、ハミング距離が２０４８次元のビット列であるときには、１０２４ビットとすることができる。また、認証可否の判定については、（ハミング距離）＞２０４８−（閾値）であるか否かを判定し、（ハミング距離）＞２０４８−（閾値）である場合に認証可（ＯＫ）としてもよい。判定部２３１は、判定内容を照合結果として、通信部２１０を介して端末装置１０に送信する。
【００６２】
判定部２３１は、ダミーテンプレートとのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））について、復号された平文のハミング距離が閾値未満であるか否かの判定結果を不正検知部２３２へ出力する。
【００６３】
不正検知部２３２は、ダミーテンプレートとのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））が閾値未満であるか否かの判定結果をもとに、照合時に送信されたデータＥ（Ｐｍ２（Ｂ））が不正なものであるか否か（正当性）を検知する。不正検知部２３２は、ディスプレイなどの表示装置（図示しない）への表示や、予め設定された管理者のアドレス宛への通知によって、不正の検知結果を出力する。
【００６４】
この不正検知部２３２が検知する不正とは、例えば、前述した整数値ｅを適宜調整することで、ハミング距離計算時において認証を成功させるための閾値よりも小さい距離を出力させるように生成されたデータＥ（Ｐｍ２（Ｂ））の不正である。
【００６５】
データＥ（Ｐｍ２（Ｂ））について、不正がない正規のものである場合は、ダミーテンプレートとのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））は、他人との照合となるため、他人と照合した場合の距離分布に入る。また、データＥ（Ｐｍ２（Ｂ））が不正なものである場合は、任意のテンプレートに対して本人と照合した場合の距離分布に入るように、例えば、整数値ｅが適宜調整されている。よって、ダミーテンプレートとのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））は、本人と照合した場合の距離分布に入る。
【００６６】
したがって、不正検知部２３２は、ダミーテンプレートとのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））が閾値未満である場合に、照合時に送信されたデータＥ（Ｐｍ２（Ｂ））の不正を検知する。なお、不正検知部２３２は、閾値として、概ねハミング距離のビット列の半分程度、例えば、ハミング距離が２０４８次元のビット列であるときには、１０２４ビットとすることができる。また、不正検知の判定については、（ハミング距離）＞２０４８−（閾値）であるか否かを判定し、（ハミング距離）＞２０４８−（閾値）である場合にデータＥ（Ｐｍ２（Ｂ））の不正を検知してもよい。
【００６７】
図３は、実施形態にかかる認証システム１の動作例を示すラダーチャートであり、より具体的には、ユーザ認証を行う際の動作を例示する図である。図３に示すように、端末装置１０は、取得した生体情報をもとに準同型暗号化を行い（Ｓ１）、暗号化した照合データ（データＥ（Ｐｍ２（Ｂ）））を計算サーバ１００へ送信する（Ｓ２）。
【００６８】
計算サーバ１００では、暗号化した照合データ（データＥ（Ｐｍ２（Ｂ）））を受信し、算出部１３１は、ユーザの登録情報である準同型暗号化登録情報Ｄ１（データＥ（Ｐｍ１（Ａ）））とは異なるランダムなバイナリベクトルＴ（ダミーテンプレート）を生成する。次いで、算出部１３１は、生成したバイナリベクトルＴと、暗号化した照合データ（データＥ（Ｐｍ２（Ｂ）））とのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））を計算する（Ｓ３）。
【００６９】
次いで、算出部１３１は、暗号化した照合データ（データＥ（Ｐｍ２（Ｂ）））と、ユーザの登録情報である準同型暗号化登録情報Ｄ１（データＥ（Ｐｍ１（Ａ）））とのハミング距離（秘匿距離Ｅ（ｄ（Ａ，Ｂ）））を計算する（Ｓ４）。
【００７０】
次いで、送信部１３２は、算出部１３１により算出された２つの秘匿距離Ｅ（ｄ（Ａ，Ｂ））およびＥ（ｄ（Ｂ，Ｔ））を認証サーバ２００へ送信する（Ｓ５）。
【００７１】
認証サーバ２００では、２つの秘匿距離Ｅ（ｄ（Ａ，Ｂ））およびＥ（ｄ（Ｂ，Ｔ））を受信し、判定部２３１は、２つの秘匿距離を準同型暗号の秘密鍵で復号する（Ｓ６）。
【００７２】
次いで、判定部２３１は、ランダムなバイナリベクトルＴと、暗号化した照合データ（データＥ（Ｐｍ２（Ｂ）））とのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））が他人との照合分布の適切値内かを判定する（Ｓ７）。
【００７３】
図４は、照合分布を説明する説明図であり、２つの特徴ベクトルのハミング距離（スコア）についての出現頻度を示している。図４に示すように、本人同士の特徴ベクトルの場合には高いスコア（つまり距離が小さい）の分布ＤＩＳ２を出力する。また、他人の特徴ベクトルの場合には低いスコア（つまり距離が高い）の分布ＤＩＳ１を出力する。生体認証分野では、このような距離分布から、ＦＡＲ（他人受入率）とＦＲＲ（本人拒否率）の分布のバランスを取るように、認証のための閾値ＴＨを決定する。
【００７４】
不正な照合データの送信による成りすまし攻撃では、任意のテンプレートに対して本人と照合した場合の分布ＤＩＳ２に入るような、偽の照合データを送信してくる。この攻撃を検知するため、判定部２３１では、ダミーテンプレート（ランダムなバイナリベクトルＴ）との距離値（ハミング距離）が本人同士の分布ＤＩＳ２に入るか否かによって、照合データの不正を検知する。
【００７５】
例えば、正規の照合データと、ダミーテンプレートとの距離値は、他人との照合となるため、分布ＤＩＳ１に入る。しかしながら、不正な照合データは、任意のテンプレートに対しても分布ＤＩＳ２に入るため、ダミーテンプレートとの距離値も分布ＤＩＳ２に入る。このような不正な照合データの性質を利用して不正検知を行う。
【００７６】
具体的には、前述したように、判定部２３１はランダムなバイナリベクトルＴとのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））が閾値未満であるか否かを判定し、不正検知部２３２はその判定結果をもとに不正を検知する。ランダムなバイナリベクトルＴとのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））が閾値未満であり、他人と照合した分布ＤＩＳ１に入らない場合（Ｓ７：ＮＯ）、不正検知部２３２は暗号化した照合データの不正を検知する（Ｓ８）。
【００７７】
ランダムなバイナリベクトルＴとのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））が閾値未満でなく、他人と照合した分布ＤＩＳ１に入る場合（Ｓ７：ＹＥＳ）、不正検知部２３２は、暗号化した照合データは正常なものとする。次いで、判定部２３１は、ユーザの登録情報とのハミング距離（秘匿距離Ｅ（ｄ（Ａ，Ｂ）））が閾値以下であるか否かを判定し、認証可（ＯＫ）または認証不可（ＮＧ）を判定する（Ｓ９）。
【００７８】
以上のように、計算サーバ１００では、暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化されたデータＥ（Ｐｍ２（Ｂ））の入力を受け付けつける。ついで、計算サーバ１００では、入力されたデータＥ（Ｐｍ２（Ｂ））と、暗号アルゴリズムを用いて暗号化されたユーザの準同型暗号化登録情報Ｄ１とは異なるダミーテンプレートとの秘匿距離Ｅ（ｄ（Ｂ，Ｔ））を計算する。認証サーバ２００では、計算サーバ１００で計算された秘匿距離Ｅ（ｄ（Ｂ，Ｔ））がユーザとは異なる他人と照合した場合の距離分布に入るか否かをもとに、データＥ（Ｐｍ２（Ｂ））の正当性を判別する。したがって、認証システム１では、認証にかかる照合データであるデータＥ（Ｐｍ２（Ｂ））について、不正なものを検知できる。
【００７９】
（変形例）
図５は、変形例にかかる認証システム１の動作例を示すラダーチャートである。図５に示すように、変形例では、計算サーバ１００におけるダミーテンプレートの作成方法（Ｓ３ａ）が上述した実施形態とは異なっている。変形例では、計算サーバ１００は、登録情報記憶部１２１に記憶されている正規のテンプレートからダミーテンプレートを生成する。
【００８０】
具体的には、算出部１３１は、乱数ｋを選び、単多項式ｘｋと、ユーザの登録情報である準同型暗号化登録情報Ｄ１（データＥ（Ｐｍ１（Ａ）））との暗号乗算からランダムなバイナリベクトルＴ（ダミーベクトル）を生成する。次いで、算出部１３１は、生成したバイナリベクトルＴと、暗号化した照合データ（データＥ（Ｐｍ２（Ｂ）））とのハミング距離（秘匿距離Ｅ（ｄ（Ｂ，Ｔ）））を計算する（Ｓ３ａ）。
【００８１】
この暗号乗算は、多項式演算が可能な準同型暗号方式の利用により、例えば、ｘｋ＊Ｅ（Ｐｍ１（Ａ））として行う。ただし、テンプレートＡ（ａ０,ａ１，…）に対して、暗号乗算後のテンプレートＡ’は成分をｋ個ずらしたベクトルとなり、その成分は（ａｋ−１，ａｋ−２，…）となる。変形例では、暗号化したままのＥ（Ｐｍ１（Ａ））を用いて、Ｅ（Ｐｍ１（Ａ））とは異なるダミーテンプレートを作成できるため、プライバシー性を保ちつつ不正検知を行うことができる。
【００８２】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、上記の実施形態の算出部１３１、送信部１３２などのそれぞれを統合してもよい。
【００８３】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【００８４】
ところで、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図６は、情報処理プログラムを実行するコンピュータの一例を示す説明図である。
【００８５】
図６が示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、データ入力を受け付ける入力装置３０２と、モニタ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る媒体読取装置３０４と、各種装置と接続するためのインタフェース装置３０５と、他の装置と有線または無線により接続するための通信装置３０６とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０７と、ハードディスク装置３０８とを有する。また、各装置３０１〜３０８は、バス３０９に接続される。
【００８６】
ハードディスク装置３０８には、上記の実施形態で説明した各処理部と同様の機能を有する情報処理プログラムが記憶される。また、ハードディスク装置３０８には、情報処理プログラムを実現するための各種データが記憶される。入力装置３０２は、例えばユーザからパスワードの入力を受け付ける、またはコンピュータ３００の管理者から管理情報の入力を受け付ける。モニタ３０３は、例えば認証のためのパスワード入力画面を表示する、またはコンピュータ３００の管理者がメンテナンス等を行う場合に各種情報を表示する。インタフェース装置３０５は、例えば印刷装置等が接続される。通信装置３０６は、例えばネットワークＮに接続される。
【００８７】
ＣＰＵ３０１は、ハードディスク装置３０８に記憶された各プログラムを読み出して、ＲＡＭ３０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ３００を上記の実施形態で説明した各処理部と同様に機能させることができる。
【００８８】
なお、上記の情報処理プログラムは、必ずしもハードディスク装置３０８に記憶されている必要はない。例えば、コンピュータ３００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ３００が読み出して実行するようにしてもよい。コンピュータ３００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこの情報処理プログラムを記憶させておき、コンピュータ３００がこれらから情報処理プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００８９】
１…認証システム
１０…端末装置
１００…計算サーバ
１３１…算出部
１３２…送信部
２００…認証サーバ
２３１…判定部
２３２…不正検知部
３００…コンピュータ
Ｄ１…準同型暗号化登録情報
ＤＩＳ１…分布
ＤＩＳ２…分布
【図１】
0006384314.tif 000002
【図２】
0006384314.tif 000003
【図３】
0006384314.tif 000004
【図４】
0006384314.tif 000005
【図５】
0006384314.tif 000006
【図６】
0006384314.tif 000007