(57)【要約】【課題】不正な照合情報を容易に検知する。【解決手段】実施形態の情報処理方法は、コンピュータが、暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化されたユーザの登録情報を、当該登録情報と暗号アルゴリズムを用いて暗号化された照合情報との間のハミング距離の計算結果に照合情報とユーザとのハミング距離および照合情報とユーザとは異なる他人とのハミング距離が含まれるように変換する。また、情報処理方法は、コンピュータが、入力された照合情報と、変換された登録情報とのハミング距離を計算する。また、情報処理方法は、コンピュータが、計算されたハミング距離に含まれる、照合情報とユーザとのハミング距離および照合情報とユーザとは異なる他人とのハミング距離と予め設定された閾値との比較結果に基づいて入力された照合情報が不正なものか否かを判定する。【選択図】図１
2016131335.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化されたユーザの登録情報を、当該登録情報と前記暗号アルゴリズムを用いて暗号化された照合情報との間のハミング距離の計算結果に前記照合情報と前記ユーザとのハミング距離および前記照合情報と前記ユーザとは異なる他人とのハミング距離が含まれるように変換し、
入力された前記照合情報と、前記変換された登録情報とのハミング距離を計算し、
前記計算されたハミング距離に含まれる、前記照合情報と前記ユーザとのハミング距離および前記照合情報と前記ユーザとは異なる他人とのハミング距離と予め設定された閾値との比較結果に基づいて前記入力された照合情報が不正なものか否かを判定する
処理を実行することを特徴とする情報処理方法。
【請求項２】
前記照合情報と前記複数人とのハミング距離の中で前記閾値以内である個数が所定値を超える場合に、前記入力された照合情報を不正なものと判定する
ことを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記変換する処理は、前記登録情報に含まれる要素と、前記照合情報に含まれる要素との多項式計算によるハミング距離の計算結果において、当該多項式の所定の項に前記照合情報と前記ユーザとのハミング距離および前記照合情報と前記ユーザとは異なる他人とのハミング距離が現れるように、元の登録情報に新たな要素を追加して前記登録情報を変換する
ことを特徴とする請求項１又は２に記載の情報処理方法。
【請求項４】
コンピュータに、
暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化されたユーザの登録情報を、当該登録情報と前記暗号アルゴリズムを用いて暗号化された照合情報との間のハミング距離の計算結果に前記照合情報と前記ユーザとのハミング距離および前記照合情報と前記ユーザとは異なる他人とのハミング距離が含まれるように変換し、
入力された前記照合情報と、前記変換された登録情報とのハミング距離を計算し、
前記計算されたハミング距離に含まれる、前記照合情報と前記ユーザとのハミング距離および前記照合情報と前記ユーザとは異なる他人とのハミング距離と予め設定された閾値との比較結果に基づいて前記入力された照合情報が不正なものか否かを判定する
処理を実行させることを特徴とする情報処理プログラム。
【請求項５】
暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化されたユーザの登録情報を、当該登録情報と前記暗号アルゴリズムを用いて暗号化された照合情報との間のハミング距離の計算結果に前記照合情報と前記ユーザとのハミング距離および前記照合情報と前記ユーザとは異なる他人とのハミング距離が含まれるように変換する変換部と、
入力された前記照合情報と、前記変換された登録情報とのハミング距離を計算する計算部と、
前記計算されたハミング距離に含まれる、前記照合情報と前記ユーザとのハミング距離および前記照合情報と前記ユーザとは異なる他人とのハミング距離と予め設定された閾値との比較結果に基づいて前記入力された照合情報が不正なものか否かを判定する判定部と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理方法、情報処理プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
近年、計算機やネットワークに関する技術の進展と普及に伴い、個人の属性や行動に関するデータ（パーソナルデータ）や企業等の組織の機密データの重要性が増している。パーソナルデータや機密データを演算あるいは分析などして利用することで、これまでにない新たな知見を得たり新たな機能を実現したりできる一方で、個人のプライバシーや組織の秘密が侵される危険がある。このため、個人データや機密データを保護（暗号化）したまま利用することを可能にする秘匿化技術が注目されている。この暗号化したまま利用することを可能とする秘匿化技術として、準同型暗号方式がある。準同型暗号方式は、暗号化と復号で一対の異なる鍵を用いる公開鍵暗号方式の一つで、暗号化したままデータ操作が可能となる機能を備えた暗号である。
【０００３】
この準同型暗号方式では、二つ以上の暗号文を対象に加算や乗算などに対応する操作を行うことで、暗号文を復号することなく、元の平文同士に対して加算や乗算を行った演算結果の暗号文を得ることができる。また、準同型暗号方式には加算と乗算を何度でも行える完全準同型暗号方式がある。この完全準同型暗号方式では、排他的論理和、論理積、否定といった操作が実現できるため多様な論理回路による演算を実現可能としている。しかしながら、完全準同型暗号方式では、暗号化・復号や秘匿演算といった処理にかかる時間や暗号文のサイズが膨大であり、これらの性能面で実用的でない場合がある。このため、より実用的な準完全準同型暗号方式がある。
【０００４】
この準完全準同型暗号方式により、ベクトルデータに対する秘匿内積計算や秘匿距離計算が改善前の方式より高速かつ省サイズで実現できる。このため、生体から導出したデータを比較する生体認証や、多くのタグの中から両者に共通して存在するものを見つけ出すタグ検索システムなどに活用できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１２６８６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、暗号化したままハミング距離計算が可能な準同型暗号方式では、成りすまし攻撃を容易に検知できないという問題がある。
【０００７】
具体的には、準完全準同型暗号方式を例示して説明する。まず、暗号鍵生成について、主に３つの鍵生成パラメータ（ｎ，ｑ，ｔ）を用意する。ｎは２冪の整数で格子次元と呼ばれ、ｑは素数、ｔは素数ｑよりも小さい整数とする。暗号鍵生成の手順として、まず秘密鍵として各係数が非常に小さいｎ次元の多項式ｓｋをランダムに生成する（各係数の小ささはあるパラメータσで制限される）。次に、各係数がｑより小さいｎ次元多項式ａ１と各係数が非常に小さいｎ次元多項式ｅをランダムに生成する。
【０００８】
そこで、ａ０＝−（ａ１＊ｓｋ＋ｔ＊ｅ）を計算し、組（ａ０，ａ１）を公開鍵ｐｋと定義する。ただし、ａ０の多項式計算時において、ｎ次以上の多項式に対してｘｎ＝−１，ｘｎ＋１＝−ｘ，．．．と計算することで、絶えずｎ次より小さい多項式を計算する。さらに、多項式の係数については、素数ｑで割った余りを出力する。このような演算を行う空間を、学術的にはＲｑ：＝Ｆｑ［ｘ］／（ｘｎ＋１）と表すことが多い。
【０００９】
次に、各係数がｔより小さいｎ次多項式で表される平文データｍと公開鍵ｐｋ＝（ａ０，ａ１）に対して、まず各係数が非常に小さい３つのｎ次元多項式ｕ，ｆ，ｇをランダムに生成し、平文データｍの暗号データＥｎｃ（ｍ，ｐｋ）＝（ｃ０，ｃ１）を次のように定義する。（ｃ０，ｃ１）については、ｃ０＝ａ０＊ｕ＋ｔ＊ｇ＋ｍ，ｃ１＝ａ１＊ｕ＋ｔ＊ｆと計算する。なお、これらの計算も空間Ｒｑ上の演算を用いる。
【００１０】
次に、２つの暗号文Ｅｎｃ（ｍ１，ｐｋ）＝（ｃ０，ｃ１）と、Ｅｎｃ（ｍ２，ｐｋ）＝（ｄ０，ｄ１）に対して、暗号加算Ｅｎｃ（ｍ１，ｐｋ）＋Ｅｎｃ（ｍ２，ｐｋ）を（ｃ０＋ｄ０，ｃ１＋ｄ１）と計算し、暗号乗算Ｅｎｃ（ｍ１，ｐｋ）＊Ｅｎｃ（ｍ２，ｐｋ）を（ｃ０＊ｄ０，ｃ０＊ｄ１＋ｃ１＊ｄ０，ｃ１＊ｄ１）と計算する。このように暗号乗算を行うと、暗号文のデータサイズが２成分ベクトルから３成分ベクトルになることに注意する。
【００１１】
また、復号処理であるが、暗号文ｃ＝（ｃ０，ｃ１，ｃ２，．．．）に対して（ここでは複数の暗号乗算などの暗号操作などにより暗号文データの成分が増大したと仮定している）、秘密鍵ｓｋを用いてＤｅｃ（ｃ，ｓｋ）＝［ｃ０＋ｃ１＊ｓｋ＋ｃ２＊ｓｋ２＋・・・］ｑ  ｍｏｄ  ｔを計算することで、復号する。ここで、多項式ｆ（ｘ）に対する［ｆ（ｘ）］ｑ  ｍｏｄ  ｔは、ｆ（ｘ）の各係数ｚｉを［ｚｉ］ｑ  ｍｏｄ  ｔに置き換えた多項式を意味する。また、整数ｚに対して［ｚ］ｑの値は、整数ｚをｑで割った余りをｗとして、ｗ＜ｑ／２ならばｗ、ｗ≧ｑ／２の場合にはｗ−ｑとする。つまり、［ｚ］ｑの値は［−ｑ／２，ｑ／２）の値域を取る。さらに、ａ  ｍｏｄ  ｔは、整数ａをｔで割った余りを意味する。
【００１２】
以下、分かりやすくするために数値例を示しておく。
秘密鍵ｓｋ＝Mod(Mod(4,1033)*x3+Mod(4,1033)*x2+Mod(1,1033)*x,x4+1)
公開鍵ｐｋ＝(a0,a1)
ａ０＝
Mod(Mod(885,1033)*x3+Mod(519,1033)*x2+Mod(621,1033)*x+Mod(327,1033),x4+1)
ａ１＝
Mod(Mod(661,1033)*x3+Mod(625,1033)*x2+Mod(861,1033)*x+Mod(311,1033),x4+1)
Ｅｎｃ（ｍ，ｐｋ）＝(c0,c1)
平文データｍ＝3+2x+2x2+2x3に対する暗号文、
ｃ０＝
Mod(Mod(822,1033)*x3+Mod(1016,1033)*x2+Mod(292,1033)*x+Mod(243,1033),x4+1)、
ｃ１＝
Mod(Mod(840,1033)*x3+Mod(275,1033)*x2+Mod(628,1033)*x+Mod(911,1033),x4+1)
【００１３】
なお、上記の数値において、鍵生成パラメータは（ｎ，ｑ，ｔ）＝（４，１０３３，２０）と設定した。さらに、Mod(a,q)は整数aを素数qで割った余りを意味し、Mod(f(x),x4+1)は多項式f(x)を多項式x4+1で割った余りの多項式を意味する。また、f(x)=x4とf(x)=-1の組、あるいはf(x)=x5とf(x)=-xの組、...のそれぞれの組についてMod(f(x),x4+1)が等しいことを意味する。
【００１４】
上述した準完全準同型暗号方式は、完全準同型暗号方式に比べて上述した性能面で優れているが、ベクトルデータ（複数のデータの列）を一度に処理しなければならない場合には依然として多大な処理時間と、暗号文サイズとを要し、実用的に十分な性能を発揮できない場合がある。
【００１５】
ベクトルデータを一度に処理しなければならない場合に対応するため、ベクトルデータを多項式変換により一つの値で表現し、その値を準同型暗号化することで、処理時間や暗号文サイズといった性能面において大幅に改善された準完全準同型暗号方式がある。
【００１６】
この準完全準同型暗号方式では、２つのｄ次元のベクトルデータＡ＝(a1,a2,...,ad)，Ｂ＝(b1,b2,...,bd)を入力データとする。そして、２つのベクトルデータの間の距離を暗号化したまま高速に計算するために、昇順変換と降順変換の２種類の多項式変換を用いる。
【００１７】
具体的には、昇順変換と、降順変換とは次のとおりとなる。
[昇順変換]Ａ＝(a1,a2,...,ad)⇒pm1(A)=a1+a2x+a3x2+...+adxd-1
[降順変換]Ｂ＝(b1,b2,...,bd)⇒pm2(B)=b1xd+b2xd-1+...+bdx
【００１８】
これらのＡ、Ｂに対して準同型暗号Ｅで暗号化処理を行ったものをそれぞれ次のように示す。
E1(A)=E(pm1(A))
E2(B)=E(pm2(B))
【００１９】
この２つの暗号文に対して準同型暗号の性質を用いれば、準同型暗号乗算処理E(D)=E(pm1(A))×E(pm2(B))により、ベクトルＡとＢの内積の計算を高速に実現できる。すなわち、秘密鍵を持つ復号者が秘匿計算結果E(D)を復号すると、復号して得られるDはpm1(A)×pm2(B)で得られる多項式と等価なので、そのxdの項の係数からＡとＢの内積値a1b1+a2b2+...+adbdが得られる。
【００２０】
たとえば、ＡとＢが二値ベクトル（すなわち要素ai,bjのすべてが０または１であるベクトル）である場合、上記の性質を用いて、次のようにしてＡとＢのハミング距離DHを準同型暗号化したまま実施できる。
E(DH)=E1(A)×E2(C)+E1(C)×E2(B)-2*E1(A)×E2(B)
ここでベクトルＣはすべての要素が１のベクトル、すなわちＣ＝(1,1,…,1)とする。
【００２１】
なお、この準同型演算は、ｉｄｅａｌ  ｌａｔｔｉｃｅｓ，ｒｉｎｇ−ＬＷＥベースの二種類の準同型暗号方式のいずれを用いてもよい。また、セキュリティ要件として、秘密鍵を持つ復号者がもしＡやＢの値をすべて知っていても構わないのであれば、ＡやＢの値を直接使って内積や距離を計算すればよいので、復号者はＡとＢを使った計算結果を知ってもよいがＡやＢの値そのものを知ってはいけない、という要件が要求される場合がある。
【００２２】
上述した準同型暗号方式では、任意のユーザに対して高い確率で成りすましが可能なデータであり、一般的にウルフと呼ばれるデータによる成りすまし攻撃が可能である。生体認証では、生体情報を読み取る際の環境や読み取る位置の違いが誤差となって生体情報に含まれる。このため、たとえ本人であっても、登録用の生体情報（テンプレート）と、認証用の生体情報とは完全に一致しない。よって、認証時にはある程度の誤差を許容する仕組みとなっている。
【００２３】
このように誤差を許容する仕組みにより、生体認証では、誤差が許容範囲内であれば、本人ではないにも関わらず、他人の生体情報であっても認証成功してしまう現象（他人受け入れ）が起きることがある。ウルフとは、この他人受け入れという現象を高い確率で故意に引き起こすデータのことである。
【００２４】
例えば、生体認証システムにおいて、生体情報として二値のベクトルを利用する場合に、成りすましを目的とする攻撃者は、照合用のベクトルとして、想定外のベクトル（例えば二値のベクトルでない）を利用する。この想定外のベクトルを照合用として利用することで、攻撃者は、初回の試行で１／２の確率で成りすましに成功し、最大で２回の試行で成りすましに成功することとなる。
【００２５】
ここで、攻撃者の攻撃方法を具体的に説明する。まず、登録用のベクトルをＡ＝(a1,a2,...,ad)とする。ただし、aiは０または１である。攻撃者は、攻撃用のベクトルとして、Ｂ＝(b1,b2,...,bd)=(α,0,0,...,0)を作成する。
【００２６】
なお、αは、１番目の要素に限らず、Ｂの要素のうちのいずれか１つに格納し、それ以外の要素は０とする。ここでは、１番目の要素b1にαを格納した場合を例に、説明する。
【００２７】
攻撃者は１回目の試行時に、α=(d/2−θ+1)を設定する。ここで、θは閾値である。攻撃者は、ユーザの公開鍵を用いてE2(B)を作成し、テンプレートとの照合を行う計算者に送信する。ここで、生体認証システムとしては、生体情報として二値のベクトルを利用しており、暗号方式としてはa1の値として0,1,…,t-1の値が許容されるため、攻撃者は暗号化の処理を実行できることとなる。
【００２８】
計算者は、E2(B)と、予め登録されているE1(A)とを用いて秘匿距離E(DH)を計算する。ここでは、攻撃方法の理解を簡単にするために、DH内の係数のうち、最終的に判定に利用されるxdの係数(AとBのハミング距離)に着目する。そして、その係数をＤと表記すると、次式で計算される。
D=Σai+Σbi−2Σai×bi
【００２９】
また、Ｂ＝(α,0,0,...,0)を代入すると以下のようになる。
D=Σai+(d/2−θ+1)(1−2a1)
【００３０】
ここで、一般的に、二値ベクトルで表される生体情報のハミング重み(値が１となる要素数)は、二項分布に従い、極めて高い確率でハミング重みがd/2程度となる。そのため、ここではΣai=d/2と仮定すると、Ｄは以下のように計算される。
a1=1の場合…Ｄ=θ−１
a1=0の場合…Ｄ=d−θ+１
【００３１】
上記の式から、a1=1の場合、Ｄは常に閾値よりも小さくなるため、攻撃者はなりすましに成功する。一方、a1=0の場合、Ｄが閾値よりも小さくなるためには、θ>(d+1)/2を満たす必要がある。
【００３２】
先述したように、生体認証では、予め登録された生体情報（テンプレート）と、照合時に読み取る生体情報（照合データ）との間で、ある程度の誤差を許容する仕組みとなっている。しかし、その誤差を許容するための指標である閾値が小さすぎると、たとえ本人であっても認証失敗となる現象（本人拒否）を引き起こし、閾値が大きくなると他人受け入れを引き起こすこととなる。そのため、適切な閾値として、これらの現象が起きる確率が等しくなる閾値が利用される。例えば、虹彩の生体情報であるIrisCodeでは、閾値は0.3d〜0.4dとなることが報告されている。この事実から、θ>(d+1)/2という条件は満たされないため、a1=1の場合は成りすまし失敗となる。
【００３３】
攻撃者は、なりすましに失敗した場合に、次の試行（２回目）として、α=−(d/2−θ＋1)を設定して、１回目の試行と同様の処理を行う。この２回目の試行では、D=θ−1となり、閾値よりも小さくなるため、なりすましに成功することとなる。以上のように、攻撃者は、想定外のベクトルを利用することで、最大２回の試行でなりすましに成功する。
【００３４】
この時、計算者側は、想定外のベクトルとして攻撃者から送信される照合用のベクトルが準同型暗号化されていることから、不正なデータであることを検知することは容易なことではない。
【００３５】
１つの側面では、認証にかかる照合情報について、不正な照合情報を容易に検知可能とする情報処理方法、情報処理プログラムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００３６】
第１の案では、情報処理方法は、コンピュータが、暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化されたユーザの登録情報を、当該登録情報と暗号アルゴリズムを用いて暗号化された照合情報との間のハミング距離の計算結果に照合情報とユーザとのハミング距離および照合情報とユーザとは異なる他人とのハミング距離が含まれるように変換する。また、情報処理方法は、コンピュータが、入力された照合情報と、変換された登録情報とのハミング距離を計算する。また、情報処理方法は、コンピュータが、計算されたハミング距離に含まれる、照合情報とユーザとのハミング距離および照合情報とユーザとは異なる他人とのハミング距離と予め設定された閾値との比較結果に基づいて入力された照合情報が不正なものか否かを判定する。
【発明の効果】
【００３７】
本発明の１実施態様によれば、不正な照合情報を容易に検知できる。
【図面の簡単な説明】
【００３８】
【図１】図１は、実施形態にかかる認証システムの概要を説明する説明図である。
【図２】図２は、実施形態にかかる認証システムの構成の一例を示すブロック図である。
【図３】図３は、実施形態にかかる認証システムの動作例を示すラダーチャートである。
【図４】図４は、復号・判定の処理の一例を示すフローチャートである。
【図５】図５は、情報処理プログラムを実行するコンピュータの一例を示す説明図である。
【発明を実施するための形態】
【００３９】
以下、図面を参照して、実施形態にかかる情報処理方法、情報処理プログラムおよび情報処理装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する情報処理方法、情報処理プログラムおよび情報処理装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【００４０】
先ず、生体情報について暗号化したままハミング距離計算を行って生体認証を行う認証システムの概要を説明する。図１は、実施形態にかかる認証システム１の概要を説明する説明図である。図１に示すように、認証システム１は、端末装置１０と、計算サーバ１００と、認証サーバ２００とを有する。端末装置１０、計算サーバ１００および認証サーバ２００は、相互に通信可能に接続されている。
【００４１】
端末装置１０は、ＰＣ（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）と対応付けて記憶する。
【００６４】
制御部１３０は、例えば、ＣＰＵやＭＰＵ等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、例えば、ＡＳＩＣやＦＰＧＡ等の集積回路により実現されるようにしてもよい。制御部１３０は、変換部１３１、算出部１３２および送信部１３３を有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図２に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００６５】
変換部１３１は、登録情報記憶部１２１に登録されたユーザの登録情報であるデータＥ（ｐｍ１（Ａ））を、ハミング距離の計算結果において、登録したユーザのハミング距離およびユーザとは異なる他人のハミング距離を含むように、データＥ（ｐｍ１（Ａ’））に変換する。
【００６６】
ここで、変換部１３１が行うデータＥ（ｐｍ１（Ａ））の変換について詳細に説明する。なお、以下の説明では、Ｅ（ｐｍ１（Ａ））をＥ１（Ａ）、Ｅ（ｐｍ２（Ｂ））をＥ２（Ｂ）として、簡易に表記する。
【００６７】
変換部１３１は、Ｅ１（Ａ）と、Ｅ２（Ｂ）との間のハミング距離を計算する多項式計算において、多項式の所定の項に登録したユーザのハミング距離およびユーザとは異なる他人のハミング距離が現れるように、Ｅ１（Ａ）を次の式（１）のように変換する。
【００６８】
【数１】
2016131335.tif 000003
【００６９】
この式（１）におけるＥ１（Ａ’）は、具体的には次の式（２）のように、元のＥ１（Ａ）にＥ１（Ａ）・ｘｄを加えた形となる。
【００７０】
【数２】
2016131335.tif 000004
【００７１】
このＥ１（Ａ’）と、Ｅ２（Ｂ）との内積計算を行うと、次の式（３）に示す結果が得られる。ここでは、一例として、ｄ＝４、ｎ＝８としている。
【００７２】
【数３】
2016131335.tif 000005
【００７３】
式（３）に示すように、Ａと、Ｂとの内積結果は、ｘ４の係数として現れる。ここで、Ａをｉ回ローテートする処理をＡ＜＜ｉと表記する。例えば、Ａ＝（ａ１，ａ２，ａ３，ａ４）のＡ＜＜１は、Ａ＜＜１＝（ａ２，ａ３，ａ４，ａ１）である。この表記法を利用すると、Ｅ１（Ａ’）とＥ２（Ｂ）の乗算結果を次の式（４）のように整理することができる。
【００７４】
【数４】
2016131335.tif 000006
【００７５】
この結果（式（４））より、ｘ５、ｘ６、ｘ７の係数には、ＢとＡを左ローテートしたベクトルとの内積結果が格納されていることが分かる。
【００７６】
さらに、次の式（５）を用いてハミング距離ＤＨの計算を実行すると、ｘ５、ｘ６、ｘ７の係数にＡを左ローテートしたベクトルとＢとの距離が得られる。なお、Ｃ＝（１，１，１，１）、Ｃ’＝（１，１，１，１，１，１，１，１）とする。
【００７７】
【数５】
2016131335.tif 000007
【００７８】
ここで、式（５）を用いたハミング距離の計算によって、ｘ５、ｘ６、ｘ７の係数にＡを左ローテートしたベクトルとＢとの距離が得られていることを検証する。ただし、暗号化の表記を省略する。
【００７９】
まず、Ｅ１（Ａ’）×Ｅ２（Ｃ）は次の式（６）のとおりである。
【００８０】
【数６】
2016131335.tif 000008
【００８１】
また、Ｅ１（Ｃ’）×Ｅ２（Ｂ）は次の式（７）のとおりである。
【００８２】
【数７】
2016131335.tif 000009
【００８３】
式（４）、式（６）、式（７）の結果から、Ｅ（ＤＨ）は次の式（８）のとおりとなる。なお、ＡとＢのハミング距離をＤ（Ａ，Ｂ）と表記する。
【００８４】
【数８】
2016131335.tif 000010
【００８５】
式（８）に示すように、ｘ４の係数からは、ＡとＢのハミング距離の計算結果が得られる。また、ｘ５、ｘ６、ｘ７の係数からは、それぞれＡを左にローテートしたベクトルとＢとのハミング距離の計算結果が得られる。
【００８６】
Ａを左ローテートしたベクトルは、Ａとは異なる他人のデータと捉えることができる。このため、ｘ５、ｘ６、ｘ７の係数には、Ａとして登録されたユーザとは異なる他人のデータと、Ｂとのハミング距離が格納されていると考えることができる。以上のように、変換部１３１により変換されたデータＥ（ｐｍ１（Ａ’））とのハミング距離の計算結果には、登録したユーザのハミング距離およびユーザとは異なる他人のハミング距離が含まれる。
【００８７】
算出部１３２は、ユーザの生体情報に基づく特徴情報の照合時に端末装置１０より受信したデータＥ（ｐｍ２（Ｂ））と、変換部１３１により変換されたデータＥ（ｐｍ１（Ａ’））とのハミング距離（秘匿距離Ｅ（Ｄ（Ａ，Ｂ）））を計算する。
【００８８】
送信部１３３は、変換部１３１により算出された秘匿距離Ｅ（Ｄ（Ａ，Ｂ））を、通信部１１０を介して認証サーバ２００へ送信する。
【００８９】
認証サーバ２００は、通信部２１０と、記憶部２２０と、制御部２３０とを有する。なお、認証サーバ２００は、図２に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能部を有することとしてもかまわない。
【００９０】
通信部２１０は、例えば、ＮＩＣ等によって実現される。通信部２１０は、ネットワークＮを介して端末装置１０および計算サーバ１００と有線または無線で接続され、端末装置１０および計算サーバ１００との間で情報の通信を司る通信インタフェースである。通信部２１０は、計算サーバ１００からハミング距離（秘匿距離Ｅ（Ｄ（Ａ，Ｂ））を受信する。通信部２１０は、受信したハミング距離を制御部２３０に出力する。また、通信部２１０は、制御部２３０から照合結果が入力されると、その照合結果を端末装置１０に送信する。
【００９１】
記憶部２２０は、例えば、ＲＡＭ、フラッシュメモリ等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部２２０は、制御部２３０での処理に用いる情報を記憶する。
【００９２】
制御部２３０は、例えば、ＣＰＵやＭＰＵ等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部２３０は、例えば、ＡＳＩＣやＦＰＧＡ等の集積回路により実現されるようにしてもよい。制御部２３０は、判定部２３１および不正検知部２３２を有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部２３０の内部構成は、図２に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部２３０は、準同型暗号の公開鍵および秘密鍵を管理し、公開鍵を通信部２１０を介して認証システム１に属する端末装置１０に配信する。
【００９３】
判定部２３１は、計算サーバ１００から受信した秘匿距離から得られるハミング距離（秘匿距離Ｅ（Ｄ（Ａ，Ｂ））が予め設定された閾値未満であるか否かを判定する。具体的には、判定部２３１は、通信部２１０から秘匿距離が入力されると、入力された秘匿距離を準同型暗号の秘密鍵で復号する。判定部２３１は、復号された平文のハミング距離が閾値未満であるか否かを判定する。
【００９４】
具体的には、判定部２３１は、平文となったハミング距離の中からユーザのハミング距離およびユーザとは異なる他人のハミング距離を予め設定された閾値と比較する。この比較において、判定部２３１は、ユーザのハミング距離が閾値以上である場合に、照合結果としてＮＧ、つまり認証不可とする。また、ユーザのハミング距離が閾値未満である場合、判定部２３１は、照合結果としてＯＫとする。ただし、判定部２３１は、ユーザのハミング距離およびユーザとは異なる他人のハミング距離が閾値未満である場合には、照合結果としてＮＧであり、ウルフによる成りすましが行われた不正なものと判定する。
【００９５】
判定部２３１は、閾値として、概ねハミング距離のビット列の３割程度、例えば、ハミング距離が２０４８次元のビット列であるときには、約６８０ビットとすることができる。また、認証可否の判定については、（ハミング距離）＞２０４８−（閾値）であるか否かを判定し、（ハミング距離）＞２０４８−（閾値）である場合に認証可（ＯＫ）としてもよい。判定部２３１は、判定内容を照合結果として、通信部２１０を介して端末装置１０に送信する。
【００９６】
不正検知部２３２は、判定部２３１の判定結果をもとに、照合時に送信されたデータＥ（ｐｍ２（Ｂ））が不正なものであるか否か（正当性）を検知する。具体的には、不正検知部２３２は、ユーザのハミング距離およびユーザとは異なる他人のハミング距離が閾値未満であると判定部２３１により判定された場合、照合時に送信された情報がウルフによる成りすましが行われた不正なものとする。不正検知部２３２は、ディスプレイなどの表示装置（図示しない）への表示や、予め設定された管理者のアドレス宛への通知によって、不正の検知結果を出力する。
【００９７】
ウルフによる成りすまし攻撃では、ユーザの登録情報だけでなく、ユーザとは異なる他人の情報に対しても高い確率で認証に成功する。すなわち、ウルフによる成りすまし攻撃で送信されたデータによる認証では、ユーザのハミング距離およびユーザとは異なる他人のハミング距離が閾値未満となる。したがって、ユーザのハミング距離およびユーザとは異なる他人のハミング距離が閾値未満であることを検知することで、ウルフによる成りすまし攻撃を容易に検知できる。
【００９８】
図３は、実施形態にかかる認証システム１の動作例を示すラダーチャートであり、より具体的には、ユーザ認証を行う際の動作を例示する図である。図３に示すように、端末装置１０は、取得した生体情報をもとに準同型暗号化を行い（Ｓ１）、暗号化した照合データ（データＥ（ｐｍ２（Ｂ）））を計算サーバ１００へ送信する（Ｓ２）。
【００９９】
計算サーバ１００では、暗号化した照合データ（データＥ（ｐｍ２（Ｂ）））を受信する。次いで、変換部１３１は、ユーザの登録情報である準同型暗号化登録情報Ｄ１（データＥ（ｐｍ１（Ａ）））を登録情報記憶部１２１より読み出して変換（データＥ（ｐｍ１（Ａ’））へ）する（Ｓ３）。
【０１００】
次いで、算出部１３２は、変換部１３１により変換されたデータ（データＥ（ｐｍ１（Ａ’）））と、暗号化した照合データ（データＥ（ｐｍ２（Ｂ）））とのハミング距離（秘匿距離Ｅ（Ｄ（Ａ’，Ｂ）））を計算する（Ｓ４）。次いで、送信部１３３は、算出部１３２により算出された秘匿距離Ｅ（Ｄ（Ａ’，Ｂ））を認証サーバ２００へ送信する（Ｓ５）。
【０１０１】
認証サーバ２００では、秘匿距離Ｅ（Ｄ（Ａ’，Ｂ））を受信し、判定部２３１は、受信した秘匿距離を準同型暗号の秘密鍵で復号・判定する（Ｓ６）。
【０１０２】
ここで、認証サーバ２００における復号・判定の処理の詳細を説明する。図４は、復号・判定の処理の一例を示すフローチャートである。
【０１０３】
図４に示すように、制御部２３０は、秘匿距離Ｅ（Ｄ（Ａ’，Ｂ））を計算サーバ１００より受信し（Ｓ１０１）、秘密鍵を用いて平文の距離情報（ハミング距離）を復号する（Ｓ１０２）。次いで、判定部２３１は、復号された距離情報からＤ（Ａ，Ｂ）の項の係数（ＤＨ）を取り出す（Ｓ１０３）。具体的には、前述した式（８）のｘ４の係数が取り出される。
【０１０４】
次いで、判定部２３１は、ＤＨが予め設定された閾値（θ）未満であるか否か、すなわちユーザのハミング距離が閾値未満であるか否かを判定する（Ｓ１０４）。ＤＨが予め設定された閾値（θ）未満でない場合（Ｓ１０４：ＮＯ）、判定部２３１は、照合結果としてＮＧとして、Ｓ１１３へ処理を進める。
【０１０５】
ＤＨが予め設定された閾値（θ）未満である場合（Ｓ１０４：ＹＥＳ）、判定部２３１は、カウンター（Ｃｏｕｎｔ）を初期化（Ｃｏｕｎｔ＝０）する（Ｓ１０５）。次いで、判定部２３１は、ｉ＝１からｉ＝２ｄ−１までのループ処理を行い（Ｓ１０６〜Ｓ１１０）、復号された距離情報からユーザとは異なる複数人のハミング距離を順次取り出して閾値（θ）未満の個数をカウントする。
【０１０６】
具体的には、判定部２３１は、復号された距離情報からｉの項の係数（Ｄｉ）を取り出す（Ｓ１０７）。具体的には、前述した式（８）のｘ５、ｘ６、ｘ７の係数が取り出される。
【０１０７】
次いで、判定部２３１は、Ｄｉが予め設定された閾値（θ）未満であるか否か、すなわちユーザとは異なる他人のハミング距離が閾値未満であるか否かを判定する（Ｓ１０８）。Ｄｉが予め設定された閾値（θ）未満でない場合（Ｓ１０８：ＮＯ）、判定部２３１は、カウンター（Ｃｏｕｎｔ）をカウントアップせずに、Ｓ１１０へ処理を進める。Ｄｉが予め設定された閾値（θ）未満である場合（Ｓ１０８：ＹＥＳ）、判定部２３１は、カウンター（Ｃｏｕｎｔ）をカウントアップして、Ｓ１１０へ処理を進める。
【０１０８】
ループ処理（Ｓ１０６〜Ｓ１１０）に次いで、判定部２３１は、カウンター（Ｃｏｕｎｔ）が予め設定された設定値（δ）未満であるか否かを判定する（Ｓ１１１）。この設定値（δ）は、（他人受け入れ率×次元数）としてメモリに予め設定される。判定部２３１は、カウンター（Ｃｏｕｎｔ）として計数された個数が他人受け入れ率未満である場合（Ｓ１１１：ＹＥＳ）、照合結果ＯＫとして、Ｓ１１２へ処理を進める。また、判定部２３１は、カウンター（Ｃｏｕｎｔ）として計数された個数が他人受け入れ率を上回る場合（Ｓ１１１：ＮＯ）、照合結果ＮＧとして、Ｓ１１３へ処理を進める。
【０１０９】
ウルフによる成りすまし攻撃では、他人の登録情報に対しても他人受け入れ率以上の高い確率で認証に成功する。このため、認証サーバ２００では、他人のハミング距離が閾値未満であると判定された回数をカウントすると、ウルフによる成りすまし攻撃の場合、カウントした回数が他人受け入れ率を上回ることとなる。したがって、他人のハミング距離が閾値未満であると判定された回数をカウントして判定することで、ウルフによる成りすまし攻撃をより正確に検知できる。
【０１１０】
Ｓ１１２において、制御部２３０は認証成功を端末装置１０へ送信し、端末装置１０は、認証成功をユーザに通知する。また、Ｓ１１３において、制御部２３０は認証失敗をユーザに送信し、端末装置１０は、認証失敗をユーザに通知する。これにより、認証システム１は、ウルフによる成りすまし攻撃が行われた場合であっても、認証失敗としてユーザに通知でき、攻撃を回避できる。
【０１１１】
以上のように、認証システム１は、変換部１３１において、暗号化した状態でハミング距離を算出可能な暗号アルゴリズムを用いて暗号化されたユーザの登録情報を、ハミング距離の計算結果にユーザのハミング距離およびユーザとは異なる他人のハミング距離を含むように変換する。また、認証システム１は、算出部１３２において、照合情報の入力を受け付けて、その入力された照合情報と、変換部１３１により変換された登録情報とのハミング距離を計算する。また、認証システム１は、判定部２３１において、計算されたハミング距離に含まれる、ユーザのハミング距離と、ユーザとは異なる他人のハミング距離とが予め設定された閾値以内である場合に、入力された照合情報を不正なものと判定する。
【０１１２】
したがって、認証システム１は、認証にかかる照合情報について、成りすましを目的とする攻撃者により不正に作成された照合情報を容易に検出できる。具体的には、ハミング距離の計算結果にユーザのハミング距離およびユーザとは異なる他人のハミング距離を含むようにユーザの登録情報を変換していることから、ハミング距離の計算を１回行うことで、ユーザのハミング距離に加えて他人のハミング距離も得ることができ、計算コストを抑えることができる。また、計算サーバ１００から認証サーバ２００へは、ハミング距離の計算を１回行った計算結果を通知することで、ユーザのハミング距離に加えて他人のハミング距離も通知できる。よって、ユーザと他人の２回分の計算結果を通知する場合と比べて、通信量の増加を抑えることができる。
【０１１３】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、上記の実施形態の変換部１３１、算出部１３２、送信部１３３などのそれぞれを統合してもよい。
【０１１４】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【０１１５】
ところで、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図５は、情報処理プログラムを実行するコンピュータの一例を示す説明図である。
【０１１６】
図５が示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、データ入力を受け付ける入力装置３０２と、モニタ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る媒体読取装置３０４と、各種装置と接続するためのインタフェース装置３０５と、他の装置と有線または無線により接続するための通信装置３０６とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０７と、ハードディスク装置３０８とを有する。また、各装置３０１〜３０８は、バス３０９に接続される。
【０１１７】
ハードディスク装置３０８には、上記の実施形態で説明した各処理部と同様の機能を有する情報処理プログラムが記憶される。また、ハードディスク装置３０８には、情報処理プログラムを実現するための各種データが記憶される。入力装置３０２は、例えばユーザからパスワードの入力を受け付ける、またはコンピュータ３００の管理者から管理情報の入力を受け付ける。モニタ３０３は、例えば認証のためのパスワード入力画面を表示する、またはコンピュータ３００の管理者がメンテナンス等を行う場合に各種情報を表示する。インタフェース装置３０５は、例えば印刷装置等が接続される。通信装置３０６は、例えばネットワークＮに接続される。
【０１１８】
ＣＰＵ３０１は、ハードディスク装置３０８に記憶された各プログラムを読み出して、ＲＡＭ３０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ３００を上記の実施形態で説明した各処理部と同様に機能させることができる。具体的には、計算サーバ１００における変換部１３１、算出部１３２および送信部１３３や、認証サーバ２００における判定部２３１および不正検知部２３２と同様に機能させることができる。
【０１１９】
なお、上記の情報処理プログラムは、必ずしもハードディスク装置３０８に記憶されている必要はない。例えば、コンピュータ３００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ３００が読み出して実行するようにしてもよい。コンピュータ３００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこの情報処理プログラムを記憶させておき、コンピュータ３００がこれらから情報処理プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１２０】
１…認証システム
１０…端末装置
１００…計算サーバ
１３１…変換部
１３２…算出部
１３３…送信部
２００…認証サーバ
２３１…判定部
２３２…不正検知部
３００…コンピュータ
Ｄ１…準同型暗号化登録情報
【図１】
2016131335.tif 000011
【図２】
2016131335.tif 000012
【図３】
2016131335.tif 000013
【図４】
2016131335.tif 000014
【図５】
2016131335.tif 000015