【文献】
肥後春菜, 他,認証時の情報開示の少ない秘匿生体認証方式,2016年暗号と情報セキュリティシンポジウム(SCIS2016),2016年 1月22日,3C2-3,pp. 1-8
(58)【調査した分野】(Int.Cl.,DB名)
前記データ照合装置が生成する複数のチャレンジのうち一部のチャレンジは、第一乱数によりマスクされ、別の一部のチャレンジは第二乱数及び第三乱数によりマスクされ、前記第一乱数と前記第三乱数の乗算結果は前記第二乱数に一致する、請求項1乃至4のいずれか一項に記載の暗号文照合システム。
【発明を実施するための形態】
【0028】
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
【0029】
一実施形態に係る暗号文照合システムは、登録データ生成装置101と、照合要求装置102と、データ照合装置103と、照合補助装置104と、を含む(
図1参照)。登録データ生成装置101は、登録データの暗号文を生成する。照合要求装置102は、登録データと照合対象データの照合を要求する。データ照合装置103は、登録データと照合対象データ間の第一距離が乱数により秘匿された、第一距離に関する暗号文を生成する。照合補助装置104は、公開鍵及び秘密鍵を生成し、登録データ生成装置101、データ照合装置103及び照合要求装置102に対し生成した公開鍵を送付する。データ照合装置103は、第一距離に関する暗号文を照合補助装置104に送付する。照合補助装置104は、第一距離に関する暗号文を秘密鍵により復号することで得られる第一距離が、登録データと照合対象データが一致するものとして許容される第二距離の集合に含まれるか否かに関する判断を行い、当該判断結果をデータ照合装置103に送付する。
【0030】
上記一実施形態に係る暗号文照合システムでは、登録データと照合対象データ間の距離を秘匿することで安全性が確保され、且つ、照合処理の大部分が許容される曖昧さのパラメータに依存しないので照合時の計算時間を短縮できる。即ち、データ間の実際の距離は秘匿され、距離に関する情報が漏えいしないことを保証でき、かつ、照合処理の大部分は許容される曖昧さのパラメータに依存しないシステムが提供される。
【0031】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。
【0032】
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
【0033】
図2は、第1の実施形態に係る暗号文照合システムの全体構成の一例を示す図である。
図2を参照すると、暗号文照合システムには、登録データ生成装置10と、照合要求装置20と、記憶装置30と、データ照合装置40と、照合補助装置50と、を含んで構成される。
【0034】
登録データ生成装置10は、登録データの暗号文を生成する装置である。照合要求装置20は、データ照合装置40に対し、登録データと照合対象データの照合を要求する装置である。
【0035】
記憶装置30は、登録データを記憶するための装置である。
【0036】
データ照合装置40は、照合要求装置20からのデータ照合要求を処理する装置である。その際、データ照合装置40は、登録データと照合対象データ間の距離(第一距離)が乱数により秘匿された、第一距離に関する暗号文を生成し、データ照合に利用する。なお、当該暗号文等の詳細は後述する。
【0037】
照合補助装置50は、データ照合装置40によるデータ照合処理を補助する装置である。例えば、照合補助装置50は、公開鍵及び秘密鍵を生成し、登録データ生成装置10、データ照合装置40及び照合要求装置20に対し生成した公開鍵を送付する。
【0038】
図2に示す各装置の詳細な機能を説明する前に、各装置のハードウェア構成について説明する。
図3は、第1の実施形態に係る登録データ生成装置10のハードウェア構成の一例を示すブロック図である。登録データ生成装置10は、所謂、情報処理装置(コンピュータ)により構成可能であり、
図3に例示する構成を備える。例えば、登録データ生成装置10は、内部バスにより相互に接続される、CPU(Central Processing Unit)111、メモリ112、入出力インターフェイス113及び通信手段であるNIC(Network Interface Card)114等を備える。
【0039】
なお、
図3に示す構成は、登録データ生成装置10のハードウェア構成を限定する趣旨ではない。登録データ生成装置10は、図示しないハードウェアを含んでもよい。あるいは、登録データ生成装置10に含まれるCPU等の数も
図3の例示に限定する趣旨ではなく、例えば、複数のCPUが登録データ生成装置10に含まれていてもよい。
【0040】
メモリ112は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)である。
【0041】
入出力インターフェイス113は、図示しない表示装置や入力装置のインターフェイスとなる手段である。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
【0042】
登録データ生成装置10の機能は後述する処理モジュールにより実現される。また、当該処理モジュールは、例えば、メモリ112に格納されたプログラムをCPU111が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能を何らかのハードウェア、及び/又は、ソフトウェアで実行する手段があればよい。
【0043】
なお、暗号文照合システムに含まれる他の装置のハードウェア構成は、登録データ生成装置10と同様とすることができるので、説明を省略する。
【0044】
続いて、暗号文照合システムを構成する各装置の処理(処理モジュール)について説明する。
【0045】
図4は、登録データ生成装置10の処理構成の一例を示す図である。
図4を参照すると、登録データ生成装置10は、第一テンプレート生成部11と、第二テンプレート生成部12と、を含んで構成される。
【0046】
第一テンプレート生成部11は、ユーザが入力した登録したいデータ(登録データ)と、後述する照合補助装置50が生成した公開鍵を用いて第一テンプレートを生成する手段である。
【0047】
第二テンプレート生成部12は、ユーザが入力した登録したいデータと、後述する照合補助装置50が生成した公開鍵を用いて第二テンプレートを生成し、第一テンプレートと第二テンプレートの組を記憶装置30に送付する手段である。
【0048】
図5は、照合要求装置20の処理構成の一例を示す図である。
図5を参照すると、照合要求装置20は、照合要求部21と、第一レスポンス生成部22と、第二レスポンス生成部23と、第三レスポンス生成部24と、第四レスポンス生成部25と、を含んで構成される。
【0049】
照合要求部21は、ユーザが入力した照合したいデータ(照合対象データ)と、後述する記憶装置30によって発行された識別子とを入力とし、データ照合装置40に照合要求を送付する手段である。
【0050】
第一レスポンス生成部22から第四レスポンス生成部25それぞれの生成部は、上記照合要求部21による照合要求に対してデータ照合装置40から送付された第一〜第三のチャレンジと、照合補助装置50から送付された公開鍵とを用いて、それぞれ第一レスポンス、第二レスポンス、第三レスポンス、第四レスポンスを生成し、データ照合装置40に送付する手段である。
【0051】
図6は、記憶装置30の処理構成の一例を示す図である。
図6を参照すると、記憶装置30は、識別子生成部31と、テンプレート記憶部32と、を含んで構成される。
【0052】
識別子生成部31は、登録データ生成装置10から送付された(第一テンプレート、第二テンプレート)に対して固有の識別子を発行し、(識別子、(第一テンプレート、第二テンプレート))をテンプレート記憶部32に記憶する手段である。
【0053】
図7は、データ照合装置40の処理構成の一例を示す図である。
図7を参照すると、データ照合装置40は、対象テンプレート受信部41と、第一チャレンジ生成部42と、第二チャレンジ生成部43と、第三チャレンジ生成部44と、第一照合補助要求生成部45と、第二照合補助要求生成部46と、判定部47と、を含んで構成される。
【0054】
対象テンプレート受信部41は、照合要求装置20から送付された照合要求に対して、照合対象となるテンプレートを記憶装置30のテンプレート記憶部32から受信する手段である。
【0055】
第一チャレンジ生成部42から第三チャレンジ生成部44の各生成部は、受け取った照合対象のテンプレートと照合補助装置50が生成した公開鍵とから、それぞれ第一チャレンジ、第二チャレンジ、第三チャレンジを生成し、これらのチャレンジ(第一チャレンジ、第二チャレンジ、第三チャレンジ)を照合要求装置20に送付する手段である。
【0056】
第一照合補助要求生成部45と第二照合補助要求生成部46は、上述のチャレンジ(第一チャレンジ、第二チャレンジ、第三チャレンジ)に対して照合要求装置20が生成し送付した(第一レスポンス、第二レスポンス、第三レスポンス、第四レスポンス)と照合補助装置50が生成した公開鍵とから、それぞれ第一照合補助要求、第二照合補助要求を生成し、これらの補助要求(第一照合補助要求、第二照合補助要求)を照合補助装置50に送付する手段である。
【0057】
判定部47は、上述の補助要求(第一照合補助要求、第二照合補助要求)に対して照合補助装置50が生成した照合補助結果を受信し、判定結果を生成する手段である。
【0058】
図8は、照合補助装置50の処理構成の一例を示す図である。
図8を参照すると、照合補助装置50は、鍵生成部51と、鍵記憶部52と、照合補助部53と、を含んで構成される。
【0059】
鍵生成部51は、鍵のサイズ等を指定するセキュリティパラメータを入力とし、秘密鍵と公開鍵を生成する手段である。鍵生成部51は、生成した秘密鍵を鍵記憶部52に記憶し、生成した公開鍵を登録データ生成装置10、照合要求装置20、データ照合装置40に送付する。
【0060】
照合補助部53は、データ照合装置40から送付された補助要求(第一照合補助要求、第二照合補助要求)を受信し、鍵記憶部52に記憶された秘密鍵を用いて、照合補助結果を生成し、データ照合装置40に送付する手段である。
【0061】
[システム動作の説明]
次に、第1の実施形態に係る暗号文照合システムの動作を詳細に説明する。
【0062】
第1の実施形態に係る暗号文照合システムの動作は、セットアップフェイズと、データ登録フェイズと、暗号文照合フェイズの3つのフェイズに大別される。
【0063】
セットアップフェイズは、照合補助装置50にセキュリティパラメータを入力し、加法準同型暗号の公開鍵と秘密鍵を生成するフェイズである。
【0064】
データ登録フェイズは、登録データ生成装置10に登録したいデータを入力し、テンプレートを生成し、記憶装置30に登録するフェイズである。
【0065】
暗号文照合フェイズは、照合要求装置20に入力された照合したいデータを秘匿しながら、照合したいデータが、記憶装置30に記憶されている登録済みデータと近い(ある種の距離が小さい)ものであるかを判定するフェイズである。
【0066】
以下、図面を参照しつつ、各フェイズにおける動作の詳細を説明する。
【0067】
[セットアップフェイズ]
図9は、セットアップフェイズにおける暗号文照合システムの動作の一例を示すフローチャートである。
【0068】
初めに、セキュリティパラメータが、システム管理者等により照合補助装置50に入力される(ステップS01)。
【0069】
セキュリティパラメータを入力した照合補助装置50の鍵生成部51は、加法準同型暗号の公開鍵および秘密鍵を生成する(ステップS02)。
【0070】
その後、鍵生成部51は、公開鍵を登録データ生成装置10、照合要求装置20、データ照合装置40に送付する(ステップS03)。
【0071】
また、鍵生成部51は、生成した秘密鍵を鍵記憶部52に記憶する(ステップS04)。
【0072】
[データ登録フェイズ]
図10は、データ登録フェイズにおける暗号文照合システムの動作の一例を示すシーケンス図である。
【0073】
初めに、登録データ生成装置10は、登録対象となる登録データと上記照合補助装置50からの公開鍵を入力する(ステップS11)。
【0074】
次に、上記登録データと公開鍵を入力として、第一テンプレート生成部11が第一テンプレートを生成する(ステップS12)。同様に、上記登録データと公開鍵を入力として、第二テンプレート生成部12が第二テンプレートを生成する(ステップS13)。登録データ生成装置10は、各生成された(第一テンプレート、第二テンプレート)を、記憶装置30に送付する(ステップS14)。
【0075】
その後、記憶装置30の識別子生成部31は、上記テンプレート(第一テンプレート、第二テンプレート)を入力として、当該テンプレートに対して固有の識別子を付与する(ステップS15)。また、識別子生成部31は、上記テンプレートと識別子の組をテンプレート記憶部32に記憶する(ステップS16)。
【0076】
[暗号文照合フェイズ]
図11は、暗号文照合フェイズにおける暗号文照合システムの動作の一例を示すシーケンス図である。
【0077】
初めに、照合要求装置20の照合要求部21は、照合対象のデータと、公開鍵と、入力データ(照合対象データ)と照合を行いたいテンプレートの識別子と、を入力する(ステップS21)。その後、照合要求部21は、入力したデータを用いて、照合要求を生成し、当該照合要求をデータ照合装置40に出力する(ステップS22)。
【0078】
次に、照合要求を受信したデータ照合装置40の対象テンプレート受信部41は、要求された識別子に対応したテンプレートを記憶装置30から受信する(ステップS23)。
【0079】
その後、当該テンプレートを入力として、第一チャレンジ生成部42、第二チャレンジ生成部43、第三チャレンジ生成部44はそれぞれ、第一チャレンジ、第二チャレンジ、第三チャレンジを生成し、当該生成したチャレンジを照合要求装置20に出力する(ステップS24)。なお、以降の説明では、(第一チャレンジ、第二チャレンジ、第三チャレンジ)をまとめて「チャレンジデータ」と表記する。
【0080】
チャレンジデータを受信した照合要求装置20の第一レスポンス生成部22、第二レスポンス生成部23、第三レスポンス生成部24、第四レスポンス生成部25は、チャレンジデータと公開鍵を入力として、それぞれ第一レスポンス、第二レスポンス、第三レスポンス、第四レスポンスを生成し、当該生成したレスポンスをデータ照合装置40に出力する(ステップS25)。なお、以降の説明では、(第一レスポンス、第二レスポンス、第三レスポンス、第四レスポンス)をまとめて「レスポンスデータ」と表記する。
【0081】
照合用データ(レスポンスデータ)を受信したデータ照合装置40の第一照合補助要求生成部45と第二照合補助要求生成部46は、それぞれ第一照合補助要求と第二照合補助要求を生成し、当該補助要求を照合補助装置50に送付する(ステップS26)。なお、以降の説明では、(第一照合補助要求、第二照合補助要求)をまとめて「照合補助要求データ」と表記する。
【0082】
照合補助要求データを受信した照合補助装置50の照合補助部53は、鍵記憶部52から秘密鍵を受信し、照合補助結果を生成し、データ照合装置40に送付する(ステップS27)。
【0083】
照合補助結果を受信したデータ照合装置40の判定部47は、判定結果を生成し、出力する(ステップS28)。
【0084】
[具体例]
次に、第1の実施形態の具体例を説明する。
【0085】
本具体例では、距離としてn次元ユークリッド距離を扱う場合を説明する。すなわち、2つのn次元ベクトルX=(x[1]、x[2]、...、x[n])とY=(y[1]、y[2]、...、y[n])に対して、XとYの距離d(X、Y)はd(X、Y)=√((x[1]−y[1])^{2}+(x[2]−y[2])^{2}+...+(x[n]−y[n])^{2})と定義する。
【0086】
d(X、Y)が閾値t以下である場合に、XとYは近い(類似)と判定され、閾値tよりも大きい場合は遠い(非類似)と判定するものとする。ただし、d(X、Y)≦tのとき、0≦{d(X、Y)}^2≦t^2であることを利用する。すなわち、{d(X、Y)}^2が閾値t^2=T以下である場合に、XとYは近いと判定し、Tよりも大きい場合は遠いと判定するものとする。
【0087】
本具体例では、XとYが近い場合はマッチしたと判定し、遠い場合はマッチしなかったと判定する。また、本具体例では、加法凖同型暗号(例えば、modified楕円Elgamal(エルガマル)暗号など)を利用する。以降、本具体例では、加法準同型暗号としてmodified楕円Elgamal暗号を用いた場合を説明するが、加法Elgamal暗号やPaillier暗号など、他の加法準同型暗号を利用しても構わない。
【0088】
初めに、modified楕円Elgamal暗号について説明する。modified楕円Elgamal暗号は、楕円Elgamal暗号に加法準同型性を付与するために変形した公開鍵暗号である。modified楕円Elgamal暗号は、鍵生成、暗号化、復号の3つのアルゴリズムからなる。以下にそれぞれを説明する。
【0089】
[鍵生成アルゴリズム]
(1)セキュリティパラメータ1^kを受け取る。
(2)kビットの素数pに対して、楕円曲線上から位数がpとなる群Gをランダムに選ぶ。Gの生成元(楕円曲線上の点)をgとする。
(3)xを1以上p−1以下の値からランダムに選び、h=[x]gとする。ここで[x]gは楕円曲線上の点gをx倍した結果を意味する。Hも楕円曲線上の点である。
(4)公開鍵pk=((g、G)、p、g、h)、秘密鍵sk=(x)を出力する。
なお、以降簡単のため、特に断りがない限り(g、G)、pは各エンティティに共有されているものとし、公開鍵pkを単にpk=(g、h)と表記する。
【0090】
[暗号化アルゴリズム]
(1)pk=(g、h)、メッセージm∈Z*_pを入力として受け取る。ここで、Z*_pは集合{1、2、...、p−1}を意味する。
(2)M=[m]gとする。
(3)r∈Z*_pをランダムに選ぶ。
(4)C[0]=[r]g、C[1]=M+[r]hとする。
(5)暗号文(C[0]、C[1])を出力する。
以下、公開鍵pkを用いてメッセージmを暗号化する処理を、Enc(pk、m)と表記する。
【0091】
[復号アルゴリズム]
(1)sk=(x)、暗号文(C[0]、C[1])を入力として受け取る。
(2)C[1]−[x]C[0]=M+[r]h−[x]([r]g)=Mとする。
以下、秘密鍵skを用いて暗号文C=(C[0]、C[1])を復号する処理を、Dec(sk、C)と表記する。
【0092】
暗号化アルゴリズムのステップ(2)より、復号結果Mは[m]gである。ここから、mを求めるためには楕円曲線上の離散対数問題を解く必要がある。本来の復号アルゴリズムはmを求めるものであるが、本願開示ではMを求められれば十分であるため、復号アルゴリズムを上記のように改変したものを modified楕円Elgamal暗号と称する。
【0093】
上記modified楕円Elgamal暗号は、加法準同型性を満たす。すなわち、2つの暗号文(C[0]=[r_1]g、C[1]=[m_1]g+[r_1]h)と(C’[0]=[r_2]g、C’[1]=[m_2]g+[r_2]h)に対して、(C’’[0]=C[0]+C’[0]=[r_1+r_2]g、C’’[1]=C[1]+C’[1]=[m_1+m_2]g+[r_1+r_2]h)である。同様に暗号化したまま定数倍も以下の通り計算できる。(C[0]=[r_1]g、C[1]=[m_1]g+[r_1]h)、a∈Z*_pに対して、(C’[0]=[a]C[0]=[a・r_1]g、C’[1]=[a]C[1]=[a・m_1]g+[a・r_1]h)。
【0094】
以下、本願開示の各フェイズにおける動作に関して詳細に説明する。
【0095】
[セットアップフェイズ]
暗号の復号鍵の長さを指定するセキュリティパラメータ1^{k}や閾値Tを含むパラメータparamを入力とした照合補助装置50の鍵生成部51は、modified楕円Elgamal暗号の鍵生成を実行し、公開鍵pk、秘密鍵skを生成する。鍵生成部51は、(param、pk)を登録データ生成装置10と、照合要求装置20と、データ照合装置40に送付し、秘密鍵skを鍵記憶部52に記憶する。上記照合補助装置50による動作は、
図9のステップS01〜S04に相当する。
【0096】
[データ登録フェイズ]
初めに、登録データ生成装置10に、秘匿対象となる登録データX=(x[1]、x[2]、...、x[n])と、上記公開鍵pkが入力される(
図10のステップS11)。
【0097】
次に、上記登録データXと公開鍵pkを入力として、第一テンプレート生成部11は、以下の手順により第一テンプレートを生成し、出力する(
図10のステップS12)。
(1)i=1、...、nに対してEnc(pk、x[i])を計算する。
(2)上記(1)の結果の集合{Enc(pk、x[i])}を第一テンプレートとして出力する。
【0098】
次に、第二テンプレート生成部12は、第二テンプレートを生成する(
図10のステップS13)。具体的には、以下の(1)を計算し、第二テンプレートを得る。
(1)Enc(pk、Σ_{i=1、...、n}(x_i)^2)
2つのテンプレート(第一テンプレート、第二テンプレート)は、記憶装置30に送付される(
図10のステップS14)。
【0099】
その後、当該テンプレートを入力として、記憶装置30の識別子生成部31は、テンプレートに対して固有の識別子IDを付与(
図10のステップS15)し、テンプレートと識別子の組(ID、テンプレート)をテンプレート記憶部32に記憶(ステップS16)する。
【0100】
[暗号文照合フェイズ]
初めに、照合要求装置20の照合要求部21に、照合対象のデータY=(y[1]、y[2]、...、y[n])と、公開鍵pkと、入力データと照合を行いたいテンプレートの識別子IDと、が入力され、照合要求requestが出力される(
図11のステップS21、S22)。ここで、照合要求requestには識別子IDあるいは識別子IDに関する情報が含まれるものとする。
【0101】
次に、照合要求requestを受信したデータ照合装置40の対象テンプレート受信部41は、要求された識別子IDに対応したテンプレート(ID、(第一テンプレート、第二テンプレート))を記憶装置30から受信する(ステップS23)。
【0102】
上記テンプレート(第一テンプレート、第二テンプレート)と公開鍵pkを入力として、第一チャレンジ生成部42は、以下の手順により第一チャレンジを生成、出力する(
図11のステップS24)。
(1)Z*_pから乱数R_1、R_2、R_3、R_4を選ぶ。ただし、R_2=R_1・R_3 mod p である。R_1は第二チャレンジ生成部43に、R_2、R_3、R_4は第三チャレンジ生成部44に、R_3^{−1}は第一照合補助要求生成部45に、それぞれ送付される。
(2)[R_1]g を計算し、第一チャレンジとして出力する。
【0103】
次に、上記テンプレート(第一テンプレート、第二テンプレート)と公開鍵pkと、乱数R_1を入力として、第二チャレンジ生成部43は、以下の(1)の計算により第二チャレンジを生成し、出力する(
図11のステップS24)。
(1)i=1、...、nに対して{Enc(pk、R_1・x[i])}を計算し、第二チャレンジとして出力する。
【0104】
次に、上記テンプレート(第一テンプレート、第二テンプレート)と公開鍵pkと、乱数R_2、R_3、R_4を入力として、第三チャレンジ生成部44は、以下の手順により第三チャレンジを生成し、チャレンジデータを出力する(
図11のステップS24)。
(1)Enc(pk、R_2・Σ_{i=1、...、n} (x_i)^2+R_3・R_4)を計算し、第三チャレンジとする。
(2)(第一チャレンジ、第二チャレンジ、第三チャレンジ)をチャレンジデータとして、照合要求装置20に送付する。
【0105】
このように、データ照合装置40は、登録データの暗号文(2つのテンプレート)と照合補助装置50から送付された公開鍵を用いて複数のチャレンジを生成し、生成された複数のチャレンジを照合要求装置20に送付する。また、データ照合装置40が生成する複数のチャレンジのうち一部のチャレンジ(第二チャレンジ)は、乱数R_1によりマスク(秘匿)され、別の一部のチャレンジ(第三チャレンジ)は乱数R_2及び乱数R_3によりマスクされ、乱数R_1と乱数R_3の乗算結果は乱数R_2に一致する。
【0106】
上記チャレンジデータを受信し、公開鍵pkを入力として、照合要求装置20の第一レスポンス生成部22は、以下の手順により第一レスポンスを生成し、出力する(
図11のステップS25)。
(1)R_C∈Z*_pをランダムに選ぶ。ランダムに選択されたR_Cは、第二レスポンス生成部23、第三レスポンス生成部24に送付される。
(2)[R_C]gを計算し、第一レスポンスとして出力する。
【0107】
チャレンジデータと、公開鍵pkと、乱数R_Cを入力として、第二レスポンス生成部23は、以下の手順により第二レスポンスを生成し、出力する(
図11のステップS25)。
(1)第一チャレンジ([R_1]g)から、[R_C・R_1]gを計算し、乱数r_1∈Z*_pをランダムに選び、([r_1]g、[R_C・R_1]g+[r_1]h)を計算する。これは平文R_C・R_1の暗号文であるため、以降は簡単のため、Enc(pk、R_C・R_1)と表記する。準同型定数倍を使ってEnc(pk、R_C・R_1・Σ_{i=1、...、n} (y_i)^2)を計算する。
(2)第二チャレンジ{Enc(pk、R_1・ x_i)}に対して、Enc(pk、R_1・x_i)を準同型定数倍を使って−2R_C・y_i倍することにより、Enc(pk、−2R_C・R_1・x_i・y_i)を計算する。すべてを準同型加算することにより、Enc(pk、−2R_C・R_1Σ_{i=1、...、n}(x_i・y_i))を計算する。
(3)R∈Z*_pをランダムに選び、第四レスポンス生成部25に送付する。
(4)準同型加算を利用して、Enc(pk、R_C・R_1(Σ_{i=1、...、n} (y_i)^2−2Σ_{i=1、...、n}x_i・y_i)+R)を計算する。+R部分はRを暗号化してから準同型加算すれば計算できる。計算結果は第二レスポンスとして出力される。
【0108】
チャレンジデータと、公開鍵pkと、乱数R_Cを入力として、第三レスポンス生成部24は、以下の(1)により第三レスポンスを生成し、出力する(
図11のステップS25)。
(1)第三チャレンジEnc(pk、R_2・Σ_{i=1、...、n} (x_i)^2+R_3・R_4)に対して、準同型定数倍を用いてR_C倍し、Enc(pk、R_C(R_2・Σ_{i=1,...,n} (x_i)^2+R_3・R_4))を生成する。計算結果は、第三レスポンスとして出力される。
【0109】
なお、第一〜第三レスポンスは、データ照合装置40が、登録データ(登録された平文データ)と照合対象データ(照合したい平文データ)の距離に関する暗号文を生成するための情報として用いられる。
【0110】
公開鍵pkと、閾値Tを含むパラメータと、乱数Rと、第一レスポンスと、第二レスポンスと、第三レスポンスを入力として、第四レスポンス生成部25は、以下の手順により第四レスポンスを生成する(
図11のステップS25)。
(1)[R]g を計算する。
(2)ハッシュ関数Hを用いて、i=0、...、Tに対して、H([R]g+[i・R_C・R_1]g)を計算する。ここで[i・R_C・R_1]gは第一レスポンスを利用すれば計算できる。
(3){H([R+i・R_C・R_1]g)}_{i=0、...、T}を第四レスポンスとする。
(4)(第一レスポンス、第二レスポンス、第三レスポンス、第四レスポンス)はレスポンスデータとして、データ照合装置40に送付される。
【0111】
なお、第四レスポンスは、登録データと照合対象データの間の距離が、登録データと照合対象データ間が一致するものとして許容される閾値以内であるときに取り得る値のハッシュ値の集合を示す。
【0112】
このように、照合要求装置20は、データ照合装置40から送付された複数のチャレンジ、照合補助装置50から送付された公開鍵及び乱数を用いて複数のレスポンスを生成し、当該複数のレスポンスをデータ照合装置40に送付する。
【0113】
レスポンスデータと乱数R_3^{−1}、R_4を受信したデータ照合装置40の第一照合補助要求生成部45は、以下の手順により第一照合補助要求を生成し、出力する(
図11のステップS26)。
(1)準同型定数倍を用いて、第三レスポンスEnc(pk、R_C(R_2・Σ_{i=1、...、n} (x_i)^2+R_3・R_4))のR_3^{−1}倍Enc(pk、R_3^{−1}・R_C(R_2・Σ_{i=1、...、n} (x_i)^2+R_3・R_4))を計算する。ここで乱数の作り方から、R_2・R_3^{−1}=R_1、R_3・R_3^{−1}=1であるため、結果はEnc(pk、R_C(R_1・Σ_{i=1、...、n} (x_i)^2+R_4))となる。
(2)第一レスポンス[R_C]gと乱数R_4から、準同型加算を用いて、Enc(pk、R_3^{−1}・R_C・R_1・Σ_{i=1、...、n} (x_i)^2)を計算する。
(3)第二レスポンスEnc(pk、R_C・R_1(Σ_{i=1、...、n} (y_i)^2−2Σ_{i=1、...、n}x_i・y_i)+R)と上記(2)の結果を準同型加算することにより、Enc(pk、R_C・R_1 d(X、Y)^2 +R)が得られる。当該計算結果が、第一照合補助要求として出力される。
【0114】
なお、上記第一照合補助要求は、登録データと照合対象データの距離に関する暗号文に相当する。即ち、第一照合補助要求には、Enc(pk、R_C・R_1 d(X、Y)^2 +R)なる情報が含まれ、当該情報は、登録データ(登録された平文データ)と照合対象データ(照合したい平文データ)の間のユークリッド距離の二乗に乱数R_Cと乱数R_1を乗じた値に乱数Rを加算した値の暗号文に等しい。このように、データ照合装置40は、登録データと照合対象データ間の距離に関する暗号文を第一照合補助要求として照合補助装置50に送付する。
【0115】
レスポンスデータを入力として、第二照合補助要求生成部46は、第四レスポンスを第二照合補助要求とする。つまり、データ照合装置40は、第四レスポンスを第二照合補助要求として照合補助装置50に送付する。このように、照合補助要求データ(第一照合補助要求、第二照合補助要求)は、照合補助装置50に送付される(
図11のステップS26)。
【0116】
照合補助要求データを受信した照合補助装置50の照合補助部53は、鍵記憶部52から秘密鍵skを受信し、第一照合補助要求を復号して、[R_C・R_1 d(X、Y)^2 +R]gを得る。また、照合補助部53は、H([R_C・R_1 d(X、Y)^2 +R]g)を計算する。その後、照合補助部53は、計算結果(計算したハッシュ値)が第二照合補助要求に含まれていたらOK(成功)を、含まれていなかったらNG(失敗)を照合補助結果としてデータ照合装置40に送付する(
図11のステップS27)。
【0117】
このように、照合補助装置50は、第一照合補助要求の暗号文を鍵記憶部52に格納された秘密鍵により復号することで、乱数により秘匿された距離(登録データと照合対象データ間の距離)を取得する。さらに、照合補助装置50は、取得した当該距離のハッシュ値を計算する。その後、照合補助装置50は、当該計算された距離のハッシュ値が、第二照合補助要求に含まれるか否かを判断し、判断結果をデータ照合装置40に送付する。
【0118】
照合補助結果を受信したデータ照合装置40の判定部47は、結果がOKであればマッチを、NGであればマッチしないを判定結果として出力する(
図11のステップS28)。つまり、データ照合装置40は、照合補助装置50からの判断結果に応じて、登録データと照合対象データが一致するか否かの判定結果を出力する。
【0119】
以上のように、第1の実施形態に係る暗号文照合システムでは、データ照合装置40が、登録データと照合対象データ間の距離に関する暗号文を照合補助装置50に送付する。照合補助装置50は、当該距離に関する暗号文を秘密鍵により復号することで得られる距離が、登録データと照合対象データが一致するものとして許容される距離の集合に含まれるか否かに関する判断を行い、判断結果を前記データ照合装置に送付する。
【0120】
その結果、データ間の実際の距離は秘匿され、距離に関する情報が漏えいしないことを保証でき、かつ、照合処理の大部分は許容される曖昧さのパラメータに依存しないシステムが提供される。即ち、登録データと照合対象データ間の距離を秘匿することで安全性が確保され、且つ、照合処理の大部分が許容される曖昧さのパラメータに依存しないので照合時の計算時間が短い暗号文照合システムが提供できる。
【0121】
なお、上記実施形態や具体例にて説明した暗号文照合システムの構成及び動作は例示であって、種々の変形が可能である。また、上述の説明で用いた複数のフローチャートでは、複数の工程(処理)が順番に記載されているが、上記実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。
【0122】
上記の説明により、本発明の産業上の利用可能性は明らかであるが、本発明は、特徴量として多値ベクトルを用いる生体認証などに好適に適用可能である。データ登録フェイズにおける入力データと、暗号文照合フェイズにおける入力データを、指紋や静脈などから取得した生体情報から得られた特徴量(特徴ベクトル)とすることで、生体情報を秘匿したまま、記憶装置に格納された暗号化された生体データと、照合要求装置から創出された暗号化された生体データが同一人物から採取されたものであるか否かを、2つの入力データの距離が一定数以下となるかどうかにより判定することが可能となる。特に、生体情報は、常に安定して同一のデータが取得できるわけではないことが知られており、同じ人物から取得されるデータが類似している(各要素の距離が小さいデータが取得できる)と仮定できるため、本発明の生体認証への活用は有効である。
【0123】
上記の実施形態の一部又は全部は、以下のようにも記載され得るが、以下には限られない。
[形態1]
上述の第1の視点に係る暗号文照合システムのとおりである。
[形態2]
前記データ照合装置は、前記登録データの暗号文と前記送付された公開鍵を用いて複数のチャレンジを生成し、前記生成された複数のチャレンジを前記照合要求装置に送付し、
前記照合要求装置は、前記送付された複数のチャレンジ、前記送付された公開鍵及び乱数を用いて生成された複数のレスポンスを、前記データ照合装置に送付する、形態1の暗号文照合システム。
[形態3]
前記照合要求装置は、
第一乃至第三のレスポンスにより、前記データ照合装置が前記第一距離に関する暗号文を生成するための情報を送付し、
第四のレスポンスにより、前記第一距離が前記登録データと前記照合対象データ間が一致するものとして許容される閾値以内であるときに取り得る値のハッシュ値の集合を前記データ照合装置に送付する、形態2の暗号文照合システム。
[形態4]
前記データ照合装置は、
前記第一距離に関する暗号文を第一照合補助要求として前記照合補助装置に送付し、前記第四のレスポンスを第二照合補助要求として前記照合補助装置に送付する、形態3の暗号文照合システム。
[形態5]
前記照合補助装置は、
前記第一照合補助要求の暗号文を前記秘密鍵により復号することで、乱数により秘匿された前記第一距離を取得すると共に、前記取得した第一距離のハッシュ値を計算し、
前記計算された第一距離のハッシュ値が、前記第二照合補助要求に含まれるか否かを判断すると共に、当該判断結果を前記データ照合装置に送付する、形態4の暗号文照合システム。
[形態6]
前記データ照合装置は、前記判断結果に応じて、前記登録データと前記照合対象データが一致するか否かの判定結果を出力する、形態5の暗号文照合システム。
[形態7]
前記データ照合装置が生成する複数のチャレンジのうち一部のチャレンジは、第一乱数によりマスクされ、別の一部のチャレンジは第二乱数及び第三乱数によりマスクされ、前記第一乱数と前記第三乱数の乗算結果は前記第二乱数に一致する、形態2乃至6のいずれか一に記載の暗号文照合システム。
[形態8]
前記照合要求装置は、前記複数のレスポンスを生成する際に第四乱数と第五乱数を使用し、
前記データ照合装置は、前記登録データと前記照合対象データの間のユークリッド距離の二乗に第四乱数と第一乱数を乗じた値に第五乱数を加算した値の暗号文を生成する、形態7の暗号文照合システム。
[形態9]
前記照合補助装置は、加法準同型暗号として楕円エルガマル暗号を用いる、形態1乃至8のいずれか一に記載の暗号文照合システム。
[形態10]
上述の第2の視点に係る暗号文照合方法のとおりである。
[形態11]
登録データと照合対象データ間の第一距離が乱数により秘匿された、前記第一距離に関する暗号文を受信する処理と、
前記第一距離に関する暗号文を復号することで得られる前記第一距離が、前記登録データと前記照合対象データが一致するものとして許容される第二距離の集合に含まれるか否かに関する判断を行う処理と、
をコンピュータに実行させるプログラム。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
[形態12]
登録データ生成装置と、記憶装置と、照合要求装置と、データ照合装置と、照合補助装置とを備える暗号文照合システムであって、
前記登録データ生成装置は、
秘匿の対象となる入力データと、照合補助装置が公開している公開鍵とを入力とし、前記公開鍵を用いて入力データの各要素を秘匿した暗号データを出力する第一テンプレート生成部と、
秘匿の対象となる入力データと、照合補助装置が公開している公開鍵とを入力とし、前記公開鍵を用いて入力データに関する情報を秘匿した暗号データを出力する第二テンプレート生成部と、
を備え、
前記記憶装置は、
前記登録データ生成装置から送付された暗号データに対して固有の識別子を付与する識別子生成部と、
前記登録データ生成装置から送付された暗号データおよび前記識別子の組を記憶するテンプレート記憶部とを備え、
前記照合要求装置は、
照合したいデータと識別子とを入力とし、照合要求を生成する照合要求部と、
前記照合したいデータと、データ照合装置から送付されたチャレンジと、前記照合補助装置が公開している公開鍵とを入力として、レスポンスを生成する第一から第四レスポンス生成部とを備え、
前記データ照合装置は、
前記照合要求装置から送付された照合要求を入力とし、照合要求に含まれる識別子と対応するテンプレートを記憶装置から受信する対象テンプレート受信部と、
前記受信したテンプレートと、照合補助装置が公開している公開鍵とを入力とし、チャレンジを生成する第一から第三チャレンジ生成部と、
照合要求装置からレスポンスを受信し、照合補助依頼データを生成する第一と第二照合補助要求生成部と、
前記照合補助依頼データに対して、前記照合補助装置が生成した照合補助結果を受信し、照合結果を生成する判定部と、を備え、
前記照合補助装置は、
セキュリティパラメータを入力とし、加法準同型暗号の公開鍵と秘密鍵を生成し、公開鍵を公開し、秘密鍵を鍵記憶部に記憶する鍵生成部と、
前記鍵生成部が生成した秘密鍵を記憶する鍵記憶部と、
データ照合装置から受信した照合補助依頼データと、鍵記憶部から受信した秘密鍵を入力として、照合補助結果を生成する照合補助部と、を備える、
ことを特徴とした暗号文照合システム。
なお、形態10及び形態11は、形態1と同様に、形態2〜形態9に展開することが可能である。
【0124】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。