はじめに、本願の各実施形態にて使用する演算子について説明する。
以降に示す式番号に示される式において、等号演算子「=」を用いられることがあるが、該等号演算子は、該等号演算子を用いて結合される式(値)が等価であることを表す。また、各式の途中に記載された「・・・」は、該途中に含まれる同様の演算が省略されていることを表す。たとえば、「1+・・・+N」は、1からNまでの整数値の総和演算を表す。また、たとえば、「X(1)+・・・+X(N)」は、1からNまでの整数Iに関して、X(I)を足し合わせる演算を表す。たとえば、「1,・・・,N」は、1からNまでの整数を表す。また、以降に示す式において、べき乗演算子「^」が用いられることがある。たとえば、Q^Rは、QのR乗を表す。
次に、理解を容易にするため、加法に関して準同型性を有する公開鍵暗号(加法準同型性暗号)について説明する。
公開鍵暗号は、公開鍵、及び、秘密鍵を生成するアルゴリズム(鍵生成アルゴリズム)、生成した公開鍵を用いて暗号化するアルゴリズム(暗号化アルゴリズム)、及び、生成した秘密鍵を用いて暗号化された暗号データを復号するアルゴリズム(復号アルゴリズム)を含む。
鍵生成アルゴリズムは、暗号の安全性を表す尺度であり、公開鍵や秘密鍵の長さを決定するパラメータであるセキュリティパラメータ1kに基づき、公開鍵pkと、秘密鍵skとが算出されるアルゴリズムである。
暗号化アルゴリズムは、公開鍵pkと、メッセージmとを受信し、受信した公開鍵pkを用いて、受信したメッセージmが暗号化された暗号文cが算出されるアルゴリズムである。
復号アルゴリズムは、秘密鍵skと暗号文cとを受信し、受信した秘密鍵skを用いて、暗号文cが復号された復号結果Mが算出されるアルゴリズムである。
説明の便宜上、公開鍵暗号に含まれるアルゴリズムは、以下に示す3つのアルゴリズムを含むとする。すなわち、
鍵生成アルゴリズムKeyGen:(1k)→(pk,sk)、
暗号化アルゴリズムEnc:(pk,M)→C、
復号アルゴリズムDec:(sk,C)→M、
ただし、1k(すなわち、1がkビット並んだビット列)は、セキュリティパラメータを表す。pkは、公開鍵を表す。skは、秘密鍵を表す。Mは、入力されたメッセージを表す。Cは、暗号文を表す。Encは、暗号化する処理を表す。Decは、復号する処理を表す。右向きの矢印によって示される演算子「→」の左側は、入力を表し、演算子「→」の右側は該入力の場合に算出される出力を表す。
公開鍵暗号は、式1に示す条件を満たす場合に、準同型性を有する。
Enc(pk,m1#m2)=Enc(pk,m1)@Enc(pk,m2)・・・(式1)、
ただし、#、及び、@は、それぞれ異なる、ある2項演算子を表す。また、m1、及び、m2は、それぞれ、メッセージを表す。
たとえば、Modified−Elgamal暗号は、式1における2項演算子「@」を乗算演算子、及び、式1における2項演算子「#」を加算(加法)演算子とする公開鍵暗号の一例である。すなわち、Modified−Elgamal暗号は、加法に関して準同型性を有する公開鍵暗号の一例である。Modified−Elgamal暗号において、暗号化アルゴリズムEncは、式2に示す関係を満たす。
Enc(pk,m1+m2)=Enc(pk,m1)×Enc(pk,m2)・・・(式2)、
ただし、m1、及び、m2は、それぞれ、メッセージを表す。
さらに、Modified−Elgamal暗号においては、式2を用いて、任意の定数iに対して、式3が成り立つ。
Enc(pk,i×m1)=Enc(pk,m1)i・・・(式3)。
式2に従えば、複数の平文に対して演算を適用し、その後、暗号化アルゴリズムを適用する演算順序を、該平文が暗号化された暗号文を作成し、その後、該暗号文に対して演算を適用する演算順序に変更することができる。たとえば、複数の平文に対する加算演算の後、暗号化アルゴリズムを適用する処理は、式2に従えば、該平文に対して、それぞれ、暗号化アルゴリズムを適用し、その結果、算出された暗号文に対して積を算出する処理と等価である。また、平文を定数倍した後、暗号化アルゴリズムを適用する処理は、式3に従えば、該平文に対して暗号化アルゴリズムを適用し、算出された暗号文をべき乗する演算と等価である。
尚、式2を満たす暗号化アルゴリズムを含む公開鍵暗号は、加法に関して準同型性を有する公開鍵暗号と呼ばれる。Modified−Elgamal暗号は、準同型性を有する暗号の一例である。
次に、本願明細書の以下の説明において便宜上用いる用語である、登録データ、及び、対象データについて説明する。登録データは、秘匿する対象を表すデータであるとする。対象データは、登録データと照合する対象を表すデータであるとする。登録データは、たとえば、生体認証においてクライアントを登録する場合に、該クライアントの生体情報に基づき作成された特徴量を表す。対象データは、たとえば、生体認証においてクライアントを認証する場合に、該クライアントの生体情報に基づき作成された特徴量を表す。たとえば、生体認証においては、認証するクライアントの生体情報に基づき作成された特徴量(すなわち、対象データ)と、登録されたクライアントの生体情報に基づき作成された特徴量(すなわち、登録データ)とが照合される。さらに生体認証においては、照合した結果に応じて、認証するクライアントを受理(受け入れ)可能か否かが判定される。
以下の説明において、「受理」は、たとえば、登録データと、対象データとが類似している(または、一致している)場合に、該対象データを受け入れ可能であることを表す。
以下の説明では、便宜上、本願の各実施形態において、「距離」という言葉を用いて、処理を説明する。距離は、たとえば、対象データを構成する要素と、登録データを構成する要素とを用いて算出されるユークリッド距離を表す。ただし、距離なる文言でなくともよく、他の指標(対象データと、登録データとが類似している程度を表す類似度)であってもよい。
<第1の実施形態>
図1を参照しながら、本発明の第1の実施形態に係る照合システム101が有する構成について詳細に説明する。図1は、本発明の第1の実施形態に係る照合システム101が有する構成を示すブロック図である。
第1の実施形態に係る照合システム101は、大別して、登録データ装置102と、照合要求装置112と、記憶装置104と、照合装置119と、検証装置124とを有する。
登録データ装置102は、暗号化部103を有する。
記憶装置104は、識別子管理部106と、登録データ情報記憶部105と、登録データ検索部107とを有する。
検証装置124は、鍵生成部108と、鍵記憶部109と、検証データ復号部110と、検証部111とを有する。
照合装置119は、照合登録情報要求部120と、照合準備部121と、検証データ生成部123と、判定部122とを有する。
照合要求装置112は、照合要求部113と、暗号化第2データ部114と、暗号化第2集合部115と、暗号化第2マスク部116と、検証マスク部117と、照合データ部118とを有する。
説明の便宜上、鍵記憶部109は、鍵生成部108、及び、検証データ復号部110のみが参照可能な記憶部であるとする。
登録データ装置102と、照合要求装置112と、記憶装置104と、照合装置119と、検証装置124とは、たとえば、通信ネットワークを介して、相互に通信することが可能であるとする。
尚、照合システム101においては、登録データ装置102と、照合要求装置112とをまとめて、「第1ノード」と表されてもよい。照合システム101においては、記憶装置104と、照合装置119とをまとめて、「第2ノード」と表されてもよい。また、照合システム101においては、検証装置124を、「第3ノード」と表されてもよい。すなわち、照合システム101は、図1に例示した様態に限定されない。
次に、本発明の第1の実施形態に係る照合システム101における処理について説明する。照合システム101における処理は、大別して、準備フェーズ、登録フェーズ、及び、照合フェーズを含む。まず、各フェーズにおける処理の概要について説明する。
準備フェーズにおいては、主として、受信したセキュリティパラメータを用いて、公開鍵、及び、秘密鍵が生成される。
登録フェーズにおいては、主として、生成された公開鍵を用いて、登録データが暗号化された暗号化登録情報が作成される。
照合フェーズにおいては、主として、登録データと、対象データとの間の距離を算出する場合に参照する暗号化第2データ(後述)が算出される。次に、該照合フェーズにおいては、対象データと、算出された暗号文とに基づき、暗号文が暗号化されたまま、対象データが受理可能であるか否かを検証する検証データが作成される。すなわち、検証データは、暗号化されている。さらに、該照合フェーズにおいては、準備フェーズにて作成された秘密鍵を用いて検証データが復号され、復号された結果に含まれる暗号化第2データを用いて距離が算出される。照合フェーズにおいては、算出された距離が、所定の条件を満たすか否かに応じて、対象データが受理可能であるか否かが判定される。
次に、照合システム101が、上述した各フェーズにて実行する処理について詳細に説明する。
図2を参照しながら、本実施形態に係る照合システム101が、準備フェーズにて実行する処理について説明する。図2は、準備フェーズにおいて、第1の実施形態に係る照合システム101が実行する処理の一例を示すフローチャートである。
検証装置124における鍵生成部108は、セキュリティパラメータを受信し、受信したセキュリティパラメータを用いて、たとえば、上述した鍵生成アルゴリズムに従い、公開鍵、及び、秘密鍵を生成する(ステップA1)。尚、生成される公開鍵、及び、秘密鍵は、該鍵生成アルゴリズムに従い生成されるので、加法に関して準同型性を有する公開鍵暗号に準拠する。鍵生成部108は、入力された値に対して、特定の値を算出するハッシュ関数を決定する(ステップA2)。たとえば、鍵生成部108は、所定のハッシュ関数から、あるハッシュ関数を選ぶことにより、ハッシュ関数を決定する。鍵生成部108は、該公開鍵と、該ハッシュ関数とを、照合システム101において公開する(ステップA3)。鍵生成部108は、該秘密鍵を、鍵記憶部109に格納する(ステップA4)。
尚、本実施形態に係る照合システム101が準備フェーズにて実行する処理は、図2に例示された様態に限定されない。
図3を参照しながら、本実施形態に係る照合システム101が、登録フェーズにて実行する処理について説明する。図3は、登録フェーズにおいて、第1の実施形態に係る照合システム101が実行する処理の一例を示すフローチャートである。
登録データ装置102における暗号化部103は、暗号化登録情報を作成する基となる登録データを受信する。暗号化部103は、受信した登録データに関して所定の演算を適用することによって、該登録データに関する特徴を表す第1指標を算出する。たとえば、所定の演算は、該登録データの長さ(大きさ)を算出する関数であり、この場合に、第1指標は、該登録データの長さ(大きさ)である。
次に、暗号化部103は、受信した該登録データに含まれている要素、及び、該第1指標を、公開鍵を用いて暗号化することによって、該要素が暗号化された暗号文、及び、該第1指標が暗号化された暗号化第1指標を算出する。暗号化部103は、算出した該暗号文、及び、算出した該暗号化第1指標が含まれている暗号化登録情報を作成する(ステップB1)。暗号化部103は、作成した暗号化登録情報を、照合装置119における識別子管理部106に送信する(ステップB2)。
記憶装置104における識別子管理部106は、暗号化部103が送信した暗号化登録情報を受信し、受信した暗号化登録情報を一意に識別可能な登録識別子を作成する(ステップB3)。識別子管理部106は、作成した登録識別子と、受信した暗号化登録情報とが関連付けされた登録データ情報を作成し、作成した該登録データ情報を、記憶装置104における登録データ情報記憶部105に格納する(ステップB4)。識別子管理部106は、作成した該登録識別子を、登録データ装置102に送信する(ステップB5)。
記憶装置104における登録データ装置102は、該登録識別子を受信し、たとえば、受信した該登録識別子を、ディスプレイ等のユーザインターフェース(UI)に表示する。あるいは、登録データ装置102は、社員証や、識別子カード等の、IC(integrated_circuit)カードに、該登録識別子を格納してもよい。あるいは、識別子管理部106が、作成した該登録識別子を、ディスプレイ等のユーザインターフェース(UI)に表示してもよい。
尚、本実施形態に係る照合システム101が登録フェーズにて実行する処理は、図3に例示された様態に限定されない。
図4A及び図4Bを参照しながら、本実施形態に係る照合システム101が、照合フェーズにて実行する処理について説明する。図4A及び図4Bは、照合フェーズにおいて、第1の実施形態に係る照合システム101が実行する処理の一例を示すフローチャートである。
照合要求装置112における照合要求部113は、照合する対象を表す対象データと、登録識別子とを受信する。照合要求部113は、受信した対象データと、受信した登録識別子に関連付けされた暗号化登録情報とを照合することを要求する照合要求を作成する(ステップC1)。照合要求部113は、作成した該照合要求を、照合装置119における照合登録情報要求部120に送信する(ステップC2)。照合要求は、たとえば、該登録識別子を含む。
照合装置119における照合登録情報要求部120は、照合要求部113が送信した照合要求を受信し、受信した該照合要求に含まれる登録識別子を読み取る。照合登録情報要求部120は、読み取った該登録識別子に関連付けされた暗号化登録情報を要求する登録データ要求を作成し(ステップC3)、作成した該登録データ要求を、記憶装置104における登録データ検索部107に送信する(ステップC4)。登録データ要求は、読み取った登録識別子を含む態様を用いて実現することができる。
記憶装置104における登録データ検索部107は、照合登録情報要求部120が送信した登録データ要求を受信する。登録データ検索部107は、登録データ情報(たとえば、登録データ情報記憶部105に格納されている)において、受信した登録データ要求に含まれている登録識別子に関連付けされた暗号化登録情報を特定する(ステップC5)。登録データ検索部107は、特定した暗号化登録情報を、照合装置119における照合準備部121に送信する(ステップC6)。
照合装置119における照合準備部121は、登録データ検索部107が送信した暗号化登録情報を受信する。照合準備部121は、たとえば、擬似乱数を生成する手順に従い、乱数を生成する。照合準備部121は、受信した暗号化登録情報における各要素が該乱数乗された暗号文と、該乱数が暗号化された暗号文(説明の便宜上、「暗号化乱数」と表す)とを算出する。尚、ステップB1に関する処理にて説明したように、暗号化登録情報が登録データに含まれている各要素の暗号文を含むので、照合準備部121は、該暗号文を算出する処理において、登録データに含まれている各要素が乱数倍された値の暗号文を算出する。すなわち、照合準備部121は、該登録データに含まれている各要素が、該乱数を用いて変換された値の暗号文を算出する。また、ステップB1に関する処理にて説明したように、暗号化登録情報が暗号化第1指標を含むので、照合準備部121は、該暗号文を算出する処理において、暗号化第1指標の基である第1指標が乱数倍された値(第1掛け算結果)の暗号文である暗号化第1データを算出する(ステップC7)。尚、照合準備部121が、第1算出部を有しており、該第1算出部が、ステップC7に示した処理と同様の処理を実行することにより、該暗号化第1データを算出する態様であってもよい。
照合準備部121は、算出した該値のうち、登録データが暗号化された値を表す要素と、該暗号化乱数とを含む照合登録情報を作成し(ステップC8)、作成した照合登録情報を、照合要求装置112における暗号化第2データ部114に送信する(ステップC9)。さらに、照合準備部121は、算出した該値に含まれる暗号化第1データを照合装置119における検証データ生成部123に送信する。
照合要求装置112における暗号化第2データ部114は、対象データ、及び、照合準備部121が送信した照合登録情報を受信する。暗号化第2データ部114は、図5に示す、ステップS101乃至ステップS104に示す処理を実行することによって、暗号化第2データを算出する。図5は、暗号化第2データ部114が暗号化第2データを算出する処理を示すフローチャートである。
・ステップS101:対象データに関して、所定の関数に従い値を算出する、
・ステップS102:照合登録情報に含まれている暗号化乱数を、「ステップS101にて算出された値」乗する、
・ステップS103:照合登録情報に含まれている「登録データに関する要素」を表す第I要素(ただし、Iは、要素番号を表す)に関して、「(−2)×対象データの第I要素」乗の値を算出する、
・ステップS104:ステップS102及びステップS103において算出された値を掛け算した値を算出する。
ステップS101乃至ステップS104に示す処理によって、暗号化第2データ部114は、対象データと登録データとが類似している程度を表す値から、登録データのサイズを引き算した値(第2指標)と、暗号化乱数の基である乱数とが掛け算された値(第2掛け算結果)が暗号化された暗号文を算出する。すなわち、暗号化第2データ部114は、第2指標が該乱数を用いて変換された値の暗号文を算出する。
暗号化第2データ部114は、算出した暗号化第2データと、照合登録情報における暗号化乱数とを含む暗号化第2情報を作成し(ステップC10)、作成した暗号化第2情報を、照合要求装置112における暗号化第2集合部115に送信する。
照合要求装置112における暗号化第2集合部115は、暗号化第2データ部114が送信した暗号化第2情報を受信する。暗号化第2集合部115は、対象データが受理可能であるか否かを判定する基準である閾値tを読み取り、読み取った閾値tに基づき設定される区間[−t,0](すなわち、−tから0までの区間)に含まれている、ある値を算出する。たとえば、ある値は、整数値である。ある値は、複数であってもよい。
以降、説明の便宜上、ある値は、L(ただし、Lは、自然数を表す)個の整数値であるとする。
暗号化第2集合部115は、受信した暗号化第2情報に含まれる暗号化乱数を、該整数値乗した値を算出し、算出した値と、該暗号化第2情報の中の暗号化第2データとを掛け算した値を算出する。暗号化第2集合部115は、算出した値と、受信した暗号化第2情報の中の暗号化第2データとを含む暗号化第2集合を作成する(ステップC11)。暗号化第2集合部115は、作成した暗号化第2集合を、照合要求装置112における暗号化第2マスク部116に送信する。
照合要求装置112における暗号化第2マスク部116は、暗号化第2集合部115が送信した暗号化第2集合を受信する。暗号化第2マスク部116は、たとえば、擬似乱数を算出する手順に従い、L個の乱数を算出し、該L個の乱数を含むマスク値集合(「乱数情報」とも表す)を作成し、作成したマスク値集合を、検証マスク部117に送信する。さらに、暗号化第2マスク部116は、受信した暗号化第2集合に含まれている各要素に関して、該要素と、マスク値集合に含まれている1つの要素とを掛け算した値を算出し、算出した値を含む暗号化第2マスク(「暗号化参照情報」とも表す)を作成する(ステップC12)。暗号化第2マスク部116は、作成した暗号化第2マスクを、照合要求装置112における照合データ部118に送信する。
尚、暗号化第2マスク部を、暗号化参照情報部とも表す。
照合要求装置112における検証マスク部117は、暗号化第2マスク部116が送信したマスク値集合を受信する。次に、検証マスク部117は、受信したマスク値集合を入力として、ハッシュ関数を適用することにより、ハッシュ値を算出する。検証マスク部117は、算出したハッシュ値を含む検証マスクを作成し(ステップC13)、作成した検証マスクを、照合要求装置112における照合データ部118に送信する。
以降、検証マスクを、「検証情報」と表すこともある。また、検証マスク部を、「検証情報部」と表すこともある。
照合要求装置112における照合データ部118は、暗号化第2マスク部116が送信した暗号化第2マスク、及び、検証マスク部117が送信した検証マスクを受信する。照合データ部118は、特定の手順に従い、受信した暗号化第2集合における要素順、及び、受信した検証マスクにおける要素順を並び替える。照合データ部118は、並び替え後の暗号化第2マスクにおける要素、及び、並び替え後の検証マスクにおける要素が関連付けされた照合データを作成する(ステップC14)。この場合に、暗号化第2マスクの第I(ただし、Iは、要素番号を表す)要素は、検証マスクの第I要素に関連付けされている。照合データ部118は、作成した照合データを、照合装置119における検証データ生成部123に送信する(ステップC15)。
照合装置119における検証データ生成部123は、照合準備部121が送信した暗号化第1データ、及び、照合データ部118が送信した照合データを受信する。検証データ生成部123は、受信した照合データに含まれる暗号化第2マスクの各要素に関して、該要素と、受信した暗号化第1データとを掛け算した値を算出する。検証データ生成部123は、暗号化第2マスクの第I要素に関して算出した値と、受信した照合データに含まれる検証マスクの第I要素とが関連付けされた検証データを作成し(ステップC16)、作成した検証データを、検証装置124における検証データ復号部110に送信する(ステップC17)。
検証装置124における検証データ復号部110は、検証データ生成部123が送信した検証データを受信し、さらに、鍵記憶部109から秘密鍵を読み取る。検証データ復号部110は、受信した検証データに含まれている暗号文を、読み取った秘密鍵を用いて復号することによって、該検証データが復号された復号後検証データを作成する(ステップC18)。検証データ復号部110は、作成した復号後検証データを、検証装置124における検証部111に送信する。
検証装置124における検証部111は、検証データ復号部110が送信した復号後検証データを受信する。検証部111は、受信した復号後検証データにおいて検証データ復号部110が復号した値にハッシュ関数を適用することによりハッシュ値を算出する。検証部111は、算出したハッシュ値と、受信した復号後検証データに含まれるハッシュ値とを比較し、関連付けされた要素と一致するか否かを判定する。検証部111は、一致している要素がある場合に、一致を表す検証結果を作成し、一致する要素がない場合に、一致しないことを表す検証結果を作成する(ステップC19)。検証部111は、算出した検証結果を、照合装置119における判定部122に送信する(ステップC20)。
照合装置119における判定部122は、検証部111が送信した検証結果を受信する。判定部122は、検証結果が「一致」である場合に、判定結果として「受理」を算出し、検証結果が「不一致」である場合に、判定結果として「不受理」を算出する(ステップC21)。判定部122は、算出した判定結果を出力する(ステップC22)。
尚、本実施形態に係る照合システム101が照合フェーズにて実行する処理は、図4A及び図4Bに例示された様態に限定されない。
次に、第1の実施形態に係る照合システム101に関する効果について説明する。
第1の実施形態に係る照合システム101によれば、照合対象である情報と、参照すべき情報との、より安全な照合処理が可能になる指標を算出することができる。この理由は、照合処理に際して参照する、暗号化第1データと、暗号化第2データとが、通信接続可能な、複数の異なる装置にて、別々に算出されるからである。言い換えれば、本実施形態に係る照合システム101によれば、登録データと、対象データとの間の距離を算出可能な、暗号化第1データ及び暗号化第2データが、複数の異なる主体にて算出される。この結果、暗号化第1データ及び暗号化第2データのうち、少なくとも一方が傍受されたとしても、距離を復元することは不可能であるので、該暗号化第1データ及び暗号化第2データに基づく照合処理において、情報が漏洩するリスクは軽減する。
さらに、第1の実施形態に係る照合システム101によれば、照合対象である情報と、参照すべき情報との、より一層安全な照合処理が可能である。この理由は、照合処理において、受理するか否かを判定する基準を表す閾値tに基づく範囲に含まれる第1値を、対象データ及び登録データ間の距離から引いた値が暗号化された第2値を、距離を復号することなく求めることができるからである。尚、これらの処理は、主として、ステップC10及びステップC11にて実行される。
本実施形態に係る照合システム101によれば、検証装置124のみが、暗号文を復号することができるので、照合システム101において、登録データ装置102、記憶装置104、照合要求装置112、及び、照合装置119は、復号された第2値を参照することができない。また、検証装置124が復号する値は第2値が乱数によってマスクされた値であるので、検証装置124も復号された第2値を参照することができない。この結果、復号された距離に基づきテンプレートを復元するヒルクライミング攻撃を受ける可能性は低下する。
さらに、第1の実施形態に係る照合システム101によれば、登録データが暗号化された暗号文を含む暗号化登録情報、または、各装置間において送受信される情報が漏洩しても、照合処理に際して、登録データとの距離が閾値以下である対象データを用いなければ受理されることがないという効果を奏する。さらに、第1の実施形態に係る照合システム101によれば、たとえ、照合要求装置112が対象データを繰り返し受信したとしても、該対象データと、登録データとの距離を秘匿することが可能であるという効果を奏する。
次に示すいずれの理由によっても、上述した効果を奏する。
・登録データ装置102における登録データ情報記憶部105には、暗号化部103が登録データを暗号化した暗号化登録情報が格納される。すなわち、記憶装置104は、暗号化登録情報を格納しているので、登録データを復元することができない。
・本実施形態に係る照合システム101においては、照合装置119が暗号化第1データを算出し、照合要求装置112が暗号化第2データを算出する分散処理の態様であるので、照合要求装置112、照合装置119、及び、記憶装置104が、距離を算出することはできない。
・検証装置124が算出するデータは、ハッシュ関数(ステップC13等における処理にて利用)や、乱数等(ステップC11、ステップC12等における処理にて利用)を用いて距離が隠ぺいされたデータである。したがって、第1の実施形態に係る照合システム101によれば、たとえ、このデータが傍受されたとしても、距離を推定することは難しい。
したがって、第1の実施形態に係る照合システム101によれば、より安全な照合処理が可能である。
<第2の実施形態>
次に、上述した第1の実施形態を基本とする本発明の第2の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第1の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
図6を参照しながら、本発明の第2の実施形態に係る照合システム201が有する構成について詳細に説明する。図6は、本発明の第2の実施形態に係る照合システム201が有する構成を示すブロック図である。
第2の実施形態に係る照合システム201は、大別して、登録データ装置102と、照合要求装置212と、記憶装置104と、照合装置219と、検証装置224とを有する。
登録データ装置102は、暗号化部103を有する。
記憶装置104は、識別子管理部106と、登録データ情報記憶部105と、登録データ検索部107とを有する。
検証装置224は、鍵生成部108と、鍵記憶部109と、検証データ復号部110と、検証部111と、検証データ生成部223とを有する。
照合装置219は、照合登録情報要求部220と、照合準備部221と、判定部222とを有する。
照合要求装置212は、照合要求部213と、暗号化第2データ部214と、暗号化第2集合部215と、暗号化第2マスク部216と、検証マスク部217と、照合データ部218とを有する。
登録データ装置102と、照合要求装置212と、記憶装置104と、照合装置219と、検証装置224とは、たとえば、通信ネットワークを介して、相互に通信することが可能であるとする。
尚、図6においては、照合システム201は、5つの装置を含む態様を例示したが、図6に例示された様態に限定されない。たとえば、登録データ装置102と、照合要求装置212とを含む第1ノード、記憶装置104と照合装置219とを含む第2ノードと、検証装置224を含む第3ノードとしてもよい。
次に、本発明の第2の実施形態に係る照合システム201における処理について詳細に説明する。照合システム201における処理は、大別して、準備フェーズ、登録フェーズ、及び、照合フェーズを含む。
照合システム201が、上述した各フェーズにて実行する処理について詳細に説明する。
本実施形態に係る照合システム201に関する準備フェーズにおける処理は、第1の実施形態に係る照合システム101に関する準備フェーズにおける処理と同様である。このため、本実施形態に係る照合システム201に関する準備フェーズにおける処理に関する説明を省略する。さらに、本実施形態に係る照合システム201に関する登録フェーズにおける処理は、第1の実施形態に係る照合システム101に関する登録フェーズにおける処理と同様である。このため、本実施形態に係る照合システム201に関する登録フェーズにおける処理に関する説明を省略する。
図7A及び図7Bを参照しながら、本実施形態に係る照合システム201が、照合フェーズにて実行する処理について説明する。図7A及び図7Bは、照合フェーズにおいて、第2の実施形態に係る照合システム201が実行する処理の一例を示すフローチャートである。
照合要求装置212における照合要求部213は、照合する対象を表す対象データと、登録識別子とを受信する。照合要求部213は、受信した対象データと、受信した登録識別子に関連付けされた暗号化登録情報とを照合することを要求する照合要求を作成する(ステップD1)。照合要求部213は、作成した該照合要求を、照合装置219における照合登録情報要求部220に送信する(ステップD2)。照合要求は、たとえば、該登録識別子を含む。
照合装置219における照合登録情報要求部220は、照合要求部213が送信した照合要求を受信し、受信した該照合要求に含まれる登録識別子を読み取る。照合登録情報要求部220は、読み取った該登録識別子に関連付けされた暗号化登録情報を要求する登録データ要求を作成し(ステップD3)、作成した該登録データ要求を、記憶装置104における登録データ検索部107に送信する(ステップD4)。登録データ要求は、読み取った登録識別子を含む態様を用いて実現することができる。
記憶装置104における登録データ検索部107は、照合登録情報要求部220が送信した登録データ要求を受信する。登録データ検索部107は、登録データ情報(たとえば、登録データ情報記憶部105に格納されている)において、受信した登録データ要求に含まれている登録識別子に関連付けされた暗号化登録情報を特定する(ステップD5)。登録データ検索部107は、特定した暗号化登録情報を、照合装置219における照合準備部221に送信する(ステップD6)。
照合装置219における照合準備部221は、登録データ検索部107が送信した暗号化登録情報を受信する。照合準備部221は、たとえば、擬似乱数を生成する手順に従い、乱数を生成する。照合準備部221は、受信した暗号化登録情報における各要素が該乱数乗された値と、該乱数が暗号化された暗号文(すなわち、「暗号化乱数」)とを算出する。尚、第1の実施形態に示したステップB1に関する処理にて説明したように、暗号化登録情報が登録データに含まれている各要素の暗号文を含むので、照合準備部221は、該暗号文を算出する処理において、登録データに含まれている各要素が乱数倍された値の暗号文を算出する。すなわち、照合準備部221は、該登録データに含まれている各要素が、該乱数を用いて変換された値の暗号文を算出する。また、ステップB1に関する処理にて説明したように、暗号化登録情報が暗号化第1指標を含むので、照合準備部221は、該暗号文を算出する処理において、暗号化第1指標の基である第1指標が乱数倍された値の暗号文である暗号化第1データを算出する(ステップD7)。照合準備部221は、算出した該値のうち、登録データが暗号化された値を表す要素と、該暗号化乱数とを含む照合登録情報を作成し(ステップD8)、作成した照合登録情報を、照合要求装置212における暗号化第2データ部214に送信する(ステップD9)。さらに、照合準備部221は、ステップD7にて算出された暗号化第1データを、検証装置224における検証データ生成部223に送信する(ステップD10)。
照合要求装置212における暗号化第2データ部214は、対象データ、及び、照合準備部221が送信した照合登録情報を受信する。暗号化第2データ部214は、上述したステップS101乃至ステップS104に示す処理を実行することによって、暗号化第2情報を作成する(ステップD11)。すなわち、暗号化第2情報は、暗号化乱数と、暗号化第2データとを含む。暗号化第2データ部214は、算出した暗号化第2情報を、照合要求装置212における暗号化第2集合部215に送信する。
照合要求装置212における暗号化第2集合部215は、暗号化第2データ部214が送信した暗号化第2情報を受信する。暗号化第2集合部215は、対象データが受理可能であるか否かを判定する基準を表す閾値tを読み取り、読み取った閾値tに基づき設定される区間[−t,0](すなわち、−tから0までの区間)における含まれている、ある値を算出する。たとえば、ある値は、整数値である。ある値は、複数であってもよい。
以降、説明の便宜上、ある値は、L(ただし、Lは、自然数を表す)個の整数値であるとする。
暗号化第2集合部215は、受信した暗号化第2情報に含まれる暗号化乱数を、該整数値乗した値を算出し、算出した値と、該暗号化第2情報の中の暗号化第2データとを掛け算した値を算出する。暗号化第2集合部215は、算出した値と、受信した暗号化第2情報の中の暗号化第2データとを含む暗号化第2集合を作成する(ステップD12)。暗号化第2集合部215は、作成した暗号化第2集合を、照合要求装置212における暗号化第2マスク部216に送信する。
照合要求装置212における暗号化第2マスク部216は、暗号化第2集合部215が送信した暗号化第2集合を受信する。暗号化第2マスク部216は、たとえば、擬似乱数を算出する手順に従い、L個の乱数を算出し、該L個の乱数を含むマスク値集合を作成し、作成したマスク値集合を、検証マスク部217に送信する。さらに、暗号化第2マスク部216は、受信した暗号化第2集合に含まれている各要素に関して、該要素と、マスク値集合に含まれている1つの要素とを掛け算した値を算出し、算出した値を含む暗号化第2マスクを作成する(ステップD13)。暗号化第2マスク部216は、作成した暗号化第2マスクを、照合要求装置212における照合データ部218に送信する。
照合要求装置212における検証マスク部217は、暗号化第2マスク部216が送信したマスク値集合を受信する。次に、検証マスク部217は、受信したマスク値集合を入力として、ハッシュ関数を適用することにより、ハッシュ値を算出する。検証マスク部217は、算出したハッシュ値を含む検証マスクを作成し(ステップD14)、作成した検証マスクを、照合要求装置212における照合データ部218に送信する。
照合要求装置212における照合データ部218は、暗号化第2マスク部216が送信した暗号化第2マスク、及び、検証マスク部217が送信した検証マスクを受信する。照合データ部218は、特定の手順に従い、受信した暗号化第2集合における要素順、及び、受信した検証マスクにおける要素順を並び替える。照合データ部218は、並び替え後の暗号化第2マスクにおける要素、及び、並び替え後の検証マスクにおける要素が関連付けされた照合データを作成する(ステップD15)。この場合に、暗号化第2マスクの第I(ただし、Iは、要素番号を表す)要素は、検証マスクの第I要素に関連付けされている。照合データ部218は、作成した照合データを、検証装置224における検証データ生成部223に送信する(ステップD16)。
検証装置224における検証データ生成部223は、照合準備部221が送信した暗号化第1データ、及び、照合データ部218が送信した照合データを受信する。検証データ生成部223は、受信した照合データに含まれる暗号化第2マスクの各要素に関して、該要素と、受信した暗号化第1データとを掛け算した値を算出する。検証データ生成部223は、暗号化第2マスクの第I要素に関して算出した値と、受信した照合データに含まれる検証マスクの第I要素とが関連付けされた検証データを作成し(ステップD17)、作成した検証データを、検証装置224における検証データ復号部110に送信する。
以降、ステップC18乃至ステップC22に示された処理と同様の処理が実行されるので、ステップD18乃至ステップD22に関する説明を省略する。
次に、第2の実施形態に係る照合システム201に関する効果について説明する。
第2の実施形態に係る照合システム201によれば、照合対象である情報と、参照すべき情報との、より安全な照合処理が可能になる指標を算出することができる。この理由は、照合処理に際して参照する、暗号化第1データと、暗号化第2データとが、通信接続可能な、複数の異なる装置にて、別々に算出されるからである。言い換えれば、本実施形態に係る照合システム201によれば、登録データと、対象データとの間の距離を算出可能な、暗号化第1データ及び暗号化第2データが異なる主体にて算出される。この結果、暗号化第1データ及び暗号化第2データのうち、少なくとも一方が傍受されたとしても、距離を復元することは不可能であるので、該暗号化第1データ及び暗号化第2データに基づく照合処理において、情報が漏洩するリスクは軽減する。
さらに、第2の実施形態に係る照合システム201によれば、照合対象である情報と、参照すべき情報との、より一層安全な照合処理を可能が可能である。この理由は、照合処理において、受理するか否かを判定する基準を表す閾値tに基づく範囲に含まれる第1値を、対象データ及び登録データ間の距離から引いた値が暗号化された第2値を、距離を復号することなく求めることができるからである。尚、これらの処理は、主として、ステップD11及びステップD12にて実行される。
検証装置224のみが、暗号文を復号することができるので、照合システム201において、登録データ装置102、記憶装置104、照合要求装置212、及び、照合装置219は、復号された第2値を参照することができない。また、検証装置224が復号する値は第2値が乱数によってマスクされた値であるので、検証装置224も復号された第2値を参照することができない。この結果、復号された距離に基づきテンプレートを復元するヒルクライミング攻撃を受ける可能性は低下する。
さらに、第2の実施形態に係る照合システム201によれば、登録データが暗号化された暗号文を含む暗号化登録情報、または、各装置間において送受信される情報が漏洩しても、照合処理に際して、登録データとの距離が閾値以下である対象データを用いなければ受理されることがないという効果を奏する。さらに、第2の実施形態に係る照合システム201によれば、たとえ、照合要求装置212が対象データを繰り返し受信したとしても、該対象データと、登録データとの距離を秘匿することが可能であるという効果を奏する。
次に示すいずれの理由によっても、上述した効果を奏する。
・登録データ装置102における登録データ情報記憶部105には、暗号化部103が登録データを暗号化した暗号化登録情報が格納される。すなわち、記憶装置104は、暗号化登録情報を格納しているので、登録データを復元することができない。
・本実施形態に係る照合システム201においては、照合装置219が暗号化第1データを算出し、照合要求装置212が暗号化第2データを算出する分散処理の態様であるので、照合要求装置212、照合装置219、及び、記憶装置104が、距離を算出することはできない。
・検証装置224が算出するデータは、ハッシュ関数(ステップD14等における処理にて利用)や、乱数等(ステップD13、ステップD14等における処理にて利用)を用いて距離が隠ぺいされたデータである。したがって、第2の実施形態に係る照合システム201によれば、たとえ、このデータが傍受されたとしても、距離を推定することは難しい。
したがって、第2の実施形態に係る照合システム201によれば、より安全な照合処理が可能である。
<第3の実施形態>
次に、上述した第1の実施形態を基本とする本発明の第3の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第1の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
図8を参照しながら、本発明の第3の実施形態に係る照合システム401が有する構成について詳細に説明する。図8は、本発明の第3の実施形態に係る照合システム401が有する構成を示すブロック図である。
第3の実施形態に係る照合システム401は、大別して、登録データ装置102と、照合要求装置412と、記憶装置104と、照合装置423と、検証装置422とを有する。
登録データ装置102は、暗号化部103を有する。
記憶装置104は、識別子管理部106と、登録データ情報記憶部105と、登録データ検索部107とを有する。
検証装置422は、鍵生成部108と、鍵記憶部109と、検証データ復号部110と、検証部111と、検証データ生成部411とを有する。
照合装置423は、照合登録情報要求部415と、照合準備部416と、判定部417と、暗号化第1集合部418と、暗号化第1マスク部419と、検証マスク部420と、照合データ部421とを有する。
照合要求装置412は、照合要求部413と、暗号化第2データ部414とを有する。
登録データ装置102と、照合要求装置412と、記憶装置104と、照合装置423と、検証装置422とは、たとえば、通信ネットワークを介して、相互に通信することが可能であるとする。
尚、図8においては、照合システム401は、5つの装置を含む態様を例示したが、図8に例示された様態に限定されない。たとえば、登録データ装置102と、照合要求装置412とを含む第1ノード、記憶装置104と照合装置423とを含む第2ノードと、検証装置422を含む第3ノードとしてもよい。
次に、本発明の第3の実施形態に係る照合システム401における処理について詳細に説明する。照合システム401における処理は、大別して、準備フェーズ、登録フェーズ、及び、照合フェーズを含む。
照合システム401が、上述した各フェーズにて実行する処理について詳細に説明する。
本実施形態に係る照合システム401に関する準備フェーズにおける処理は、第1の実施形態に係る照合システム101に関する準備フェーズにおける処理と同様である。このため、本実施形態に係る照合システム401に関する準備フェーズにおける処理に関する説明を省略する。さらに、本実施形態に係る照合システム401に関する登録フェーズにおける処理は、第1の実施形態に係る照合システム101に関する登録フェーズにおける処理と同様である。このため、本実施形態に係る照合システム401に関する準備フェーズにおける処理に関する説明を省略する。
図9A及び図9Bを参照しながら、本実施形態に係る照合システム401が、照合フェーズにて実行する処理について説明する。図9A及び図9Bは、照合フェーズにおいて、第3の実施形態に係る照合システム401が実行する処理の一例を示すフローチャートである。
照合要求装置412における照合要求部413は、照合する対象を表す対象データと、登録識別子とを受信する。照合要求部413は、受信した対象データと、受信した登録識別子に関連付けされた暗号化登録情報とを照合することを要求する照合要求を作成する(ステップF1)。照合要求部413は、作成した該照合要求を、照合装置423における照合登録情報要求部415に送信する(ステップF2)。照合要求は、たとえば、該登録識別子と、対象データとを含む。
照合装置423における照合登録情報要求部415は、照合要求部413が送信した照合要求を受信し、受信した該照合要求に含まれる登録識別子を読み取る。照合登録情報要求部415は、読み取った該登録識別子に関連付けされた暗号化登録情報を要求する登録データ要求を作成し(ステップF3)、作成した該登録データ要求を、記憶装置104における登録データ検索部107に送信する(ステップF4)。登録データ要求は、読み取った登録識別子を含む態様を用いて実現することができる。
記憶装置104における登録データ検索部107は、照合登録情報要求部415が送信した登録データ要求を受信する。登録データ検索部107は、登録データ情報(たとえば、登録データ情報記憶部105に格納されている)において、受信した登録データ要求に含まれている登録識別子に関連付けされた暗号化登録情報を特定する(ステップF5)。登録データ検索部107は、特定した暗号化登録情報を、照合装置423における照合準備部416に送信する(ステップF6)。
照合装置423における照合準備部416は、登録データ検索部107が送信した暗号化登録情報を受信する。照合準備部416は、たとえば、擬似乱数を算出する手順に従い、乱数を生成する。照合準備部416は、受信した暗号化登録情報における各要素が該乱数乗された値と、該乱数が暗号化された暗号文(すなわち、「暗号化乱数」)とを算出する。尚、ステップB1に関する処理にて説明したように、暗号化登録情報が登録データに含まれている各要素の暗号文を含むので、照合準備部416は、該暗号文を算出する処理において、登録データに含まれている各要素が乱数倍された値の暗号文を算出する。すなわち、照合準備部416は、該登録データに含まれている各要素が、該乱数を用いて変換された値の暗号文を算出する。また、ステップB1に関する処理にて説明したように、暗号化登録情報が暗号化第1指標を含むので、照合準備部416は、該暗号文を算出する処理において、暗号化第1指標の基である第1指標が乱数倍された値の暗号文である暗号化第1データを算出する(ステップF7)。照合準備部416は、算出した該値のうち、登録データが暗号化された値を表す要素と、該暗号化乱数とを含む照合登録情報を作成し(ステップF8)、作成した照合登録情報を、照合要求装置412における暗号化第2データ部414に送信する(ステップF9)。さらに、照合準備部416は、ステップF7にて算出された暗号化第1データと暗号化乱数とを含む暗号化第1データ情報を作成し、作成した暗号化第1データ情報を、照合装置423における暗号化第1集合部418に送信する。
照合要求装置412における暗号化第2データ部414は、対象データ、及び、照合準備部416が送信した照合登録情報を受信する。暗号化第2データ部414は、上述したステップS101乃至ステップS104に示す処理を実行することによって、暗号化第2データを算出する(ステップF10)。すなわち、暗号化第2情報は、暗号化第2データを含む。暗号化第2データ部414は、算出した暗号化第2データを、検証装置422における検証データ生成部411に送信する(ステップF11)。
次に、照合装置423における暗号化第1集合部418は、照合準備部416が送信した、暗号化第1データと暗号化乱数とを含む暗号化第1データ情報を受信する。暗号化第1集合部418は、対象データが受理可能であるか否かを判定する基準を表す閾値tを読み取り、読み取った閾値tに基づき設定される区間[−t,0]に含まれている、ある値を算出する。たとえば、ある値は、整数値である。ある値は、複数であってもよい。
以降、説明の便宜上、ある値は、L(ただし、Lは、自然数を表す)個の整数値であるとする。
暗号化第1集合部418は、受信した暗号化第1データ情報に含まれている暗号化乱数を、該整数値乗した値を算出し、算出した値と該暗号化第1データ情報に含まれている暗号化第1データとを掛け算した値を算出する。暗号化第1集合部418は、算出した値を含む暗号化第1集合を作成し(ステップF12)、作成した暗号化第1集合を、照合装置423における暗号化第1マスク部419に送信する。
照合装置423における暗号化第1マスク部419は、暗号化第1集合部418が送信した暗号化第1集合を受信する。暗号化第1マスク部419は、たとえば、擬似乱数を算出する手順に従い、L個の乱数を算出し、該L個の乱数を含むマスク値集合を作成し、作成したマスク値集合を、照合装置423における検証マスク部420に送信する。さらに、暗号化第1マスク部419は、受信した暗号化第1集合に含まれている各要素に関して、該要素と、マスク値集合に含まれている1つの要素とを掛け算した値を算出し、算出された値を含む暗号化第1マスクを作成する(ステップF13)。暗号化第1マスク部419は、作成した暗号化第1マスクを、照合装置423における照合データ部421に送信する。
次に、照合装置423における検証マスク部420は、暗号化第1マスク部419が送信したマスク値集合を受信する。検証マスク部420は、受信したマスク値集合を入力として、ハッシュ関数を適用することにより、ハッシュ値を算出する。検証マスク部420は、算出したハッシュ値を含む検証マスクを作成し(ステップF14)、作成した検証マスクを、照合装置423における照合データ部421に送信する。
次に、照合装置423における照合データ部421は、暗号化第1マスク部419が送信した暗号化第1マスク、及び、検証マスク部420が送信した検証マスクを受信する。照合データ部421は、特定の手順に従い、受信した暗号化第1マスクを並び替え、さらに、該特定の手順に従い受信した検証マスクを並び替える処理によって、並び替えられた結果を表す照合データを作成する(ステップF15)。照合データ部421は、作成した照合データを、検証装置422における検証データ生成部411に送信する(ステップF16)。
次に、検証装置422における検証データ生成部411は、照合データ部421が送信した照合データ、及び、暗号化第2データ部414が送信した暗号化第2データを受信する。検証データ生成部411は、受信した照合データに含まれる暗号化第1マスクの各要素と、受信した暗号化第2データとを掛け算した値を算出し、算出した値と受信した照合データに含まれる検証マスクとを含む検証データを作成する(ステップF17)。検証データ生成部411は、作成した検証データを、検証装置422における検証データ復号部110に送信する。
以降、ステップC18乃至ステップC22に示された処理と同様の処理が実行されるので、ステップF18乃至ステップF22に関する説明を省略する。
次に、第3の実施形態に係る照合システム401に関する効果について説明する。
第3の実施形態に係る照合システム401によれば、照合対象である情報と、参照すべき情報との、より安全な照合処理が可能になる指標を算出することができる。この理由は、照合処理に際して参照する、暗号化第1データと、暗号化第2データとが、通信接続可能な、複数の異なる装置にて、別々に算出されるからである。言い換えれば、本実施形態に係る照合システム401によれば、登録データと、対象データとの間の距離を算出可能な、暗号化第1データ及び暗号化第2データが異なる主体にて算出される。この結果、暗号化第1データ及び暗号化第2データのうち、少なくとも一方が傍受されたとしても、距離を復元することは不可能であるので、該暗号化第1データ及び暗号化第2データに基づく照合処理において、情報が漏洩するリスクは軽減する。
さらに、第3の実施形態に係る照合システム401によれば、照合対象である情報と、参照すべき情報との、より一層安全な照合処理を可能が可能である。この理由は、照合処理において、受理するか否かを判定する基準を表す閾値tに基づく範囲に含まれる第1値を、対象データ及び登録データ間の距離から引いた値が暗号化された第2値を、距離を復号することなく求めることができるからである。尚、これらの処理は、主として、ステップF17にて実行される。
検証装置422のみが、暗号文を復号することができるので、照合システム401において、登録データ装置102、記憶装置104、照合要求装置412、及び、照合装置423は、復号された第2値を参照することができない。また、検証装置422が復号する値は第2値が乱数によってマスクされた値であるので、検証装置422も復号された第2値を参照することができない。この結果、復号された距離に基づきテンプレートを復元するヒルクライミング攻撃を受ける可能性は低下する。
さらに、第3の実施形態に係る照合システム401によれば、登録データが暗号化された暗号文を含む暗号化登録情報、または、各装置間において送受信される情報が漏洩しても、照合処理に際して、登録データとの距離が閾値以下である対象データを用いなければ受理されることがないという効果を奏する。さらに、第3の実施形態に係る照合システム401によれば、たとえ、照合要求装置412が対象データを繰り返し受信したとしても、該対象データと、登録データとの距離を秘匿することが可能であるという効果を奏する。
次に示すいずれの理由によっても、上述した効果を奏する。
・登録データ装置102における登録データ情報記憶部105には、暗号化部103が登録データを暗号化した暗号化登録情報が格納される。すなわち、記憶装置104は、暗号化登録情報を格納しているので、登録データを復元することができない。
・本実施形態に係る照合システム401においては、照合装置423が暗号化第1データを算出し、照合要求装置412が暗号化第2データを算出する分散処理の態様であるので、照合要求装置412、照合装置423、及び、記憶装置104が、距離を算出することはできない、
・検証装置422が算出するデータは、ハッシュ関数(ステップF14等における処理にて利用)や、乱数等(ステップF13等における処理にて利用)を用いて距離が隠ぺいされたデータである。したがって、第3の実施形態に係る照合システム401によれば、たとえ、このデータが傍受されたとしても、距離を推定することは難しい。
したがって、第3の実施形態に係る照合システム401によれば、より安全な照合処理が可能である。
<第4の実施形態>
次に、上述した第1の実施形態を基本とする本発明の第4の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明する。
図10を参照しながら、本発明の第4の実施形態に係る照合システム501が有する構成について詳細に説明する。図10は、本発明の第4の実施形態に係る照合システム501が有する構成を示すブロック図である。
第4の実施形態に係る照合システム501は、大別して、登録データ装置502と、照合要求装置512と、記憶装置504と、照合装置519と、検証装置524とを有する。
登録データ装置502は、暗号化部503を有する。
記憶装置504は、識別子管理部506と、登録データ情報記憶部505と、登録データ検索部507とを有する。
検証装置524は、鍵生成部508と、鍵記憶部509と、検証データ復号部510と、検証部511とを有する。
照合装置519は、照合登録情報要求部520と、照合準備部521と、検証データ生成部523と、判定部522とを有する。
照合要求装置512は、照合要求部513と、暗号化第2データ部514と、暗号化第2集合部515と、暗号化第2マスク部516と、検証マスク部517と、照合データ部518とを有する。
登録データ装置502と、照合要求装置512と、記憶装置504と、照合装置519と、検証装置524とは、たとえば、通信ネットワークを介して、相互に通信することが可能であるとする。
尚、図10においては、照合システム501は、5つの装置を含む態様を例示したが、図10に例示された様態に限定されない。たとえば、登録データ装置502と、照合要求装置512とを含む第1ノード、記憶装置504と照合装置519とを含む第2ノードと、検証装置524を含む第3ノードとしてもよい。
本実施形態に係る照合システム501は、2つのデータ(たとえば、対象データと、登録データ)との距離を、n(ただし、nは、自然数)次元ユークリッド距離を用いて算出する。
データXが(x[1],x[2],・・・,x[n])と表され、データYが(y[1],y[2],・・・,y[n])と表される場合に、n次元ユークリッド距離Dは、式4に従い算出される値である。
D(X,Y)=(x[1]−y[1]){2}+(x[2]−y[2]){2}+・・・+(x[n]−y[n]){2}・・・(式4)、
ただし、x[i]、y[i](1≦i≦n)は整数を表す。
説明の便宜上、データXが対象データを表し、データYが登録データを表すとする。
照合システム501は、たとえば、式4に従い算出した距離Dが、対象データが受理可能であるか否かを判定する基準を表す閾値t以下である場合に、データXが受理可能であると判定する。これに対して、照合システム501は、式4に従い算出した距離Dが、該閾値tよりも大きい場合に、データXが受理不可能であると判定する。
本実施形態においては、加法に関して準同型性を有する公開鍵暗号としてModified−Elgamal暗号を用いる例を参照しながら、照合システム501における処理について説明する。しかし、Paillier暗号等の加法に関して準同型性を有する他の公開鍵暗号の場合であっても、本実施形態に係る照合システム501は、後述する説明と同様の処理を実行することによって、データXが受理可能であるか否かを判定することができる。
まず、Modified−Elgamal暗号について説明する。公開鍵暗号の一つであるModified−Elgamal暗号は、公開鍵、及び、秘密鍵を生成する鍵生成アルゴリズム、生成した公開鍵を用いて暗号化する暗号化アルゴリズム、及び、生成した秘密鍵を用いて暗号化された暗号データを復号する復号アルゴリズムを含む。
まず、該Modified−Elgamal暗号のアルゴリズムのうち、鍵生成アルゴリズムについて詳細に説明する。鍵生成アルゴリズムは、たとえば、ステップP1乃至ステップP5に示す処理によって実現することができる。
・ステップP1:生成する鍵の長さを表す値を含むセキュリティパラメータ1kを受信する、
・ステップP2:位数がkビットの素数pである群Gと、その生成元gとを生成する、
・ステップP3:集合Zpの中から、値xをランダムに選び、生成した生成元gのx乗を算出することによって、gx(=yと表す)を算出する、
・ステップP4:算出した群G、素数p、生成元g、及び、値yが関連付けされた公開鍵pkを算出する。公開鍵pkは、たとえば、(G,p,g,y)として表すことができる、
・ステップP5:算出した公開鍵pk、及び、値xが関連付けされた秘密鍵skを算出する。秘密鍵skは、たとえば、(pk,x)のように表すことができる。
ただし、1k(すなわち、1がkビット並んだビット列)は、セキュリティパラメータを表す、Zpは、1から(p−1)までの整数値の集合を表す。尚、ステップP2における処理に関しては、様々な方法があり、それらの方法は、本実施形態においても採用できる。ここでは、それらの方法に関する詳細な説明を省略する。
次に、該Modified−Elgamal暗号のアルゴリズムのうち、暗号化アルゴリズムについて詳細に説明する。暗号化アルゴリズムは、たとえば、ステップQ1乃至ステップQ7に示す処理によって実現することができる。
・ステップQ1:公開鍵pk、及び、メッセージmを受信する、
・ステップQ2:集合Zpの中から第8値rをランダムに選ぶ、
・ステップQ3:公開鍵pkに含まれている生成元gを読み取り、読み取った生成元gの乱数r乗を算出することによって、gr(=c[1]と表す)を算出する、
・ステップQ4:公開鍵pkに含まれている生成元gを読み取り、読み取った生成元gのm乗を算出することによって、gmを算出する、
・ステップQ5:公開鍵pkに含まれている値yを読み取り、読み取った値yのr乗を算出することによって、yrを算出する、
・ステップQ6:ステップQ4において算出した値、及び、ステップQ5において算出した値を掛け算することによって、yr×gm(=c[2]と表す)を算出する、
・ステップQ7:算出したc[1]、及び、c[2]が関連付けされた暗号文を算出する。
ステップQ1乃至ステップQ7に示された暗号化アルゴリズムに従い算出される暗号文cは、たとえば、暗号文(c[1],c[2])のように表すことができる。または、暗号化アルゴリズムを関数Encとして表す場合に、ステップQ1乃至ステップQ7に示す処理は、Enc(pk,m)=(c[1],c[2])のように表すことができる。尚、この場合に、(pk,m)は入力を表し、(c[1],c[2])は出力を表す。関数Encは、公開鍵pk、及び、メッセージmが入力された場合に、暗号文(c[1],c[2])を算出する。
該Modified−Elgamal暗号のアルゴリズムのうち、復号アルゴリズムについて詳細に説明する。復号アルゴリズムは、たとえば、ステップR1乃至ステップR3に示す処理によって実現することができる。
・ステップR1:秘密鍵sk、暗号文(c[1],c[2])を受信する、
・ステップR2:受信した暗号文において、c[1]、及び、c[2]を読み取り、受信した秘密鍵skにおいて値xを読み取る、
・ステップR3:読み取ったc[2]を、c[1]の値のx乗によって割り算することによって、復号結果Mを算出する。復号結果Mは、たとえば、c[2]/(c[1]x)に従い演算することによって算出することができる。
ただし、演算子「/」は、逆元を表すとする。たとえば、「1/QA」は、QAの逆元を表す。また。たとえば、「QA/QB」は、QAに、QBの逆元数を掛け算した値を表す。
復号アルゴリズムを関数Decとして表す場合に、ステップR1乃至ステップR3に示す処理は、Dec(sk,c)=Mのように表すことができる。すなわち、関数Decは、秘密鍵sk、及び、暗号文cが入力された場合に、暗号文cが復号された復号結果Mを算出する。
さらに、次のアルゴリズムによって暗号文を変形できる。
・ステップT1:暗号文(c[1],c[2])、変形パラメータxpを受信する、
・ステップT2:読み取ったc[1]を、c[1]の値xp乗に置き換える、
・ステップT3:変形結果(c[1]{xp},c[2])を算出する、
メッセージmに対する暗号文Enc(pk,m)=(c[1],c[2])にこの変形を加えた結果をTEnc(pk,xp,m)=(c[1]{xp},c[2])と表す。ある暗号文(c[1],c[2])および変形パラメータxpに対してこのアルゴリズムを実行した結果である(c[1]{xp},c[2])に対し,これと変形パラメータ1/xpに対してこのアルゴリズムを適用すると元の暗号文(c[1],c[2])が出力される。
本発明の各実施形態においては、上述したように関数を用いて処理を説明することもある。たとえば、関数を「F(X)=Y」と表す場合に、該関数は、入力Xに対して、関数Fが表す処理を適用することによって、出力Yを算出する処理を表す。
ここで、鍵生成アルゴリズム、暗号化アルゴリズム、及び、復号アルゴリズムに従えば、適切に暗号化処理、及び、復号処理が実行されることについて、式5を参照しながら説明する。尚、ここでは、適切に暗号化処理、及び、復号処理が実行されていることを示すために、暗号化アルゴリズムに従い算出されたメッセージmの暗号文を、復号アルゴリズムに従い復号することによって、gmが復元されることを示す。
上述した暗号化アルゴリズムに従えば、メッセージmに対して、暗号文(gr,yr×gm)が算出される。該暗号文に対して復号アルゴリズムに従い処理を実行すると、復号結果Mとしてc[2]/(c[1]x)が算出される。
c[2]/(c[1]x)
=yr×gm/((gr)x)
=((gx)r)×gm/((gr)x)
=gm・・・(式5)。
すなわち、メッセージmに対して、ステップQ1乃至ステップQ7に示された暗号化アルゴリズム、及び、ステップR1乃至ステップR3に示された復号アルゴリズムを適用することによって、gmが算出される。したがって、上述した鍵生成アルゴリズム、暗号化アルゴリズム、及び、復号アルゴリズムに従えば、適切に暗号化処理、及び、復号処理が実行される
Modified−Elgamal暗号の場合に、複数の平文に対する加算演算は、該平文が暗号化された暗号文を復号することなく、実行することができる。同様に、Modified−Elgamal暗号の場合に、平文を定数倍する演算は、該平文が暗号化された暗号文を復号することなく、実行することができる。これらの演算が可能である理由について、式6及び式7を参照しながら説明する。
まず、複数の平文に対する加算演算は、該平文が暗号化された暗号文を復号することなく、実行することができる理由について説明する。
公開鍵pkを(G,p,g,y)、メッセージをm、メッセージをmp、メッセージmが暗号化された暗号文をc、及び、メッセージmpが暗号化された暗号文をcpと表す。暗号化アルゴリズムに従えば、メッセージmに対して、式6に示す暗号文cが算出される。
c=Enc(pk,m)
=(c[1],c[2])
=(gr,yr×gm)・・・(式6)。
また、暗号化アルゴリズムに従えば、メッセージmpに対して、式7に示す暗号文が算出される。
cp=Enc(pk,mp)
=(cp[1],cp[2])
=(grp,yrp×gmp)・・・(式7)。
この場合に、式8によれば、複数の平文を加算した値が暗号化された値は、該平文が、それぞれ、暗号化された値を掛け算した値に等価である。
Enc(pk,m)*Enc(pk,mp)
=(c[1]×cp[1],c[2]×cp[2])
=(g{r+rp},y{r+rp}×g{m+mp})
=Enc(pk,m+mp)・・・(式8)。
ただし、rpは、メッセージmpに対する第8値を表す。また、演算子「*」は、各要素に対して掛け算した値を算出することを表す。
次に、平文を定数倍する演算は、該平文が暗号化された暗号文を復号することなく、実行することができる理由について説明する。
暗号化アルゴリズムに従い、メッセージmに対して、式6に示す暗号文が算出されるとする。この場合に、式8によれば、平文を定数倍した結果を暗号化する処理は、平文を暗号化した後に算出される値を、該定数乗する処理に等価である。
Enc(pk,m)i
=(c[1]i,c[2]i)
=(g{i×r},y{i×r}×g{i×m})
=Enc(pk,i×m)・・・(式9)、
ただし、暗号文に対する指数乗は、該暗号文に含まれる各要素に関して指数乗する演算を表す。
次に、本発明の第4の実施形態に係る照合システム501における処理について詳細に説明する。照合システム501における処理は、大別して、準備フェーズ、登録フェーズ、及び、照合フェーズを含む。
まず、図11を参照しながら、本実施形態に係る照合システム501が、準備フェーズにて実行する処理について説明する。図11は、準備フェーズにおいて、第4の実施形態に係る照合システム501が実行する処理の一例を示すシーケンス図(フローチャート)である。
検証装置524における鍵生成部508は、セキュリティパラメータ1kを受信する。鍵生成部508は、受信したセキュリティパラメータ1kを用いて、たとえば、ステップP1乃至ステップP5に示された鍵生成アルゴリズムに従い、公開鍵pk、及び、秘密鍵skを生成する(ステップSA1)。鍵生成部508は、入力された値に対して、特定の値を算出するハッシュ関数Hを決定する(ステップSA2)。鍵生成部508は、該公開鍵pkと、該ハッシュ関数Hとを、照合システム501において公開する(ステップSA3)。鍵生成部508は、該秘密鍵skを、鍵記憶部509に格納する(ステップSA4)。
たとえば、照合システム501における鍵生成アルゴリズムが、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号における鍵生成アルゴリズムである場合の例を参照しながら、照合システム501における処理について説明する。この場合に、鍵生成部508は、セキュリティパラメータ1kを受信する。鍵生成部508は、位数がkビットである素数pである群Gと、群Gに関する生成元gとを生成する。鍵生成部508は、所定の集合Zpの中から値xをランダムに選び、生成元gのx乗を算出する。すなわち、鍵生成部508は、gx(=y)を算出する。鍵生成部508は、群G、素数p、生成元g、及び、算出した値yが関連付けされた公開鍵pkを算出する。鍵生成部508は、公開鍵pk、及び、値xが関連付けされた秘密鍵をsk=(pk,x)を算出する。
図12を参照しながら、本実施形態に係る照合システム501が、登録フェーズにて実行する処理について説明する。図12は、登録フェーズにおいて、第4の実施形態に係る照合システム501が実行する処理の一例を示すシーケンス図である。
説明の便宜上、暗号化部503は、式10に示すように、複数の要素を含む登録データXを受信するとする。
X=(x[1],・・・,x[n])・・・(式10)。
ただし、nは、自然数を表す。x[i](1≦i≦n)は、実数(たとえば、整数)を表す。
暗号化部503は、式10に示すような登録データXを受信し、登録データXに含まれている要素の二乗和(式11)を算出することによって、第1指標を算出する。
x[1]{2}+・・・+x[n]{2}・・・(式11)。
次に、暗号化部503は、データXに含まれている要素x[i]を暗号化することによって、要素x[i]が暗号化された暗号文Enc(pk,x[i])を算出する。暗号化部503は、式11に従い算出した第1指標を暗号化することによって、該第1指標が暗号化された暗号化第1指標cc1を算出する。この場合に、暗号化部503が算出する暗号文は式12に示すように表すことができる。
Enc(pk,x[1])(=c1[1]と表す),
・・・、
Enc(pk,x[n])(=c1[n]と表す),
Enc(pk,x[1]{2}+・・・+x[n]{2})(すなわち、cc1)・・・(式12)。
次に、暗号化部503は、式12に従い算出された値が含まれている暗号化登録情報を作成する(ステップSB1)。暗号化登録情報は、式13として表すことができる。
(c1[1],・・・,c1[n],cc1)・・・(式13)。
暗号化部503は、作成した暗号化登録情報(式13)を、照合装置519における照合準備部521に送信する(ステップ(SB2−1))。
加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の場合の例を用いながら、ステップSB1における処理を説明する。この場合に、暗号化部503は、集合Zpの中から、複数の値(以降、説明の便宜上、「乱数」と表す)を選ぶ。暗号化部503が選んだ複数の乱数を、r1[1]、・・・、r1[n]、及び、rr1と表す。
暗号化部503は、データXを受信した場合に、式11に従い二乗和を算出する。次に、暗号化部503は、公開鍵pkから、生成元gと、値yとを読み取る。暗号化部503は、読み取った生成元gを乱数乗した値(「値7」と表す)を算出する。暗号化部503は、読み取った生成元yの該乱数乗と、読み取った生成元gを「データXに含まれる要素」乗した値とを掛け算した値を算出する(「値5」と表す)。さらに、暗号化部503は、読み取った生成元yの該乱数乗と、読み取った生成元gを「式11に従い算出した二乗和」乗した値とを掛け算した値(「値6」と表す)を算出する。次に、暗号化部503は、値6及び値7が関連付けされた暗号文(すなわち、二乗和に関する暗号文)を算出する。すなわち、暗号化部503は、式14に示された暗号文を算出する。すなわち、暗号化部503は、公開鍵pkを用いて、データXに関して、式14に示した暗号文を作成する。
(g{r1[1]},y{r1[1]}×g{x[1]})(すなわち、Enc(pk,x[1])である。説明の便宜上、c1[1]と表す),
・・・,
(g{r1[n]},y{r1[n]}×g{x[n]})(すなわち、Enc(pk,x[n])である。説明の便宜上、c1[n]と表す),
(g{rr1},y{rr1}×g{x[1]^{2}+・・・+x[n]^{2}})(すなわち、Enc(pk,x[1]{2}+・・・+x[n]{2})である。説明の便宜上、cc1と表す)・・・(式14)。
次に、暗号化部503は、式14に従い算出された値が含まれている暗号化登録情報を作成する(ステップSB1)。暗号化部503は、作成した暗号化登録情報(たとえば、式13)を、照合装置519における識別子管理部506に送信する(ステップ(SB2−1))。
記憶装置504における識別子管理部506は、暗号化部503が送信した暗号化登録情報を受信し(ステップ(SB2−2))、受信した暗号化登録情報を一意に識別可能な登録識別子を作成する(ステップSB3)。識別子管理部506は、作成した登録識別子と、受信した暗号化登録情報とが関連付けされた登録データ情報を作成し、作成した該登録データ情報を、記憶装置504における登録データ情報記憶部505に格納する(ステップSB4)。識別子管理部506は、作成した該登録識別子を、登録データ装置502に送信する(ステップ(SB5−1))。
記憶装置504における登録データ装置502は、該登録識別子を受信し(ステップ(SB5−2))、たとえば、受信した該登録識別子を、ディスプレイ等のユーザインターフェース(UI)に表示する(ステップSB6)。あるいは、登録データ装置502は、社員証や、識別子カード等の、IC(integrated_circuit)カードに、該登録識別子を格納してもよい。また、識別子管理部506が、作成した該登録識別子を表示してもよい。
尚、本実施形態に係る照合システム501が登録フェーズにて実行する処理は、図12に例示された様態に限定されない。
図13A及び図13Bを参照しながら、本実施形態に係る照合システム501が、照合フェーズにて実行する処理について説明する。図13A及び図13Bは、照合フェーズにおいて、第4の実施形態に係る照合システム501が実行する処理の一例を示すシーケンス図である。
照合要求装置512における照合要求部513は、照合する対象を表す対象データと、登録識別子とを受信する。照合要求部513は、受信した対象データと、受信した登録識別子に関連付けされた暗号化登録情報とを照合することを要求する照合要求を作成する(ステップSC1)。照合要求部513は、作成した該照合要求を、照合装置519における照合登録情報要求部520に送信する(ステップ(SC2−1))。照合要求は、たとえば、該登録識別子を含む。
照合装置519における照合登録情報要求部520は、照合要求部513が送信した照合要求を受信し(ステップ(SC2−2))、受信した該照合要求に含まれる登録識別子を読み取る。照合登録情報要求部520は、読み取った該登録識別子に関連付けされた暗号化登録情報を要求する登録データ要求を作成し(ステップSC3)、作成した該登録データ要求を、記憶装置504における登録データ検索部507に送信する(ステップ(SC4−1))。登録データ要求は、読み取った登録識別子を含む態様を用いて実現することができる。
記憶装置504における登録データ検索部507は、照合登録情報要求部520が送信した登録データ要求を受信する(ステップ(SC4−2))。登録データ検索部507は、登録データ情報(たとえば、登録データ情報記憶部505に格納されている)において、受信した登録データ要求に含まれている登録識別子に関連付けされた暗号化登録情報を特定する(ステップSC5)。登録データ検索部507は、特定した暗号化登録情報を、照合装置519における照合準備部521に送信する(ステップ(SC6−1))。
照合装置519における照合準備部521は、登録データ検索部507が送信した暗号化登録情報(式13)を受信する(ステップ(SC6−2))。次に、照合準備部521は、たとえば、擬似乱数を生成する手順に従い、値S(以降、乱数Sと表す)を算出し、公開鍵pkを用いて、乱数Sを暗号化した暗号文を算出する。さらに、照合準備部521は、暗号化登録情報に含まれている各要素の乱数S乗を算出する。すなわち、照合準備部521は、c1[i]{S}(ただし、1≦i≦n)、及び、暗号化第1データcc1{S}を算出する(ステップSC7)。
ステップSC7に示した処理によって、照合準備部521は、暗号化登録情報を算出した基であるデータXに含まれている要素、及び、データXに関して式11に従い算出された二乗和に関して、それぞれ、乱数S倍された値が、公開鍵pkを用いて暗号化された値(式15)を算出する。
Enc(pk,S)(c2[0]と表す),
Enc(pk,S×x[1])(c2[1]と表す),
・・・,
Enc(pk,S×x[n])(c2[n]と表す),
Enc(pk,S×(x[1]{2}+・・・+x[n]{2}))(cc2、または、「暗号化第1データ」と表す)・・・(式15)。
照合準備部521は、算出した値(式15)のうち、暗号化登録情報に関する要素と、乱数Sが暗号化された暗号文とを含む照合登録情報を作成する(ステップSC8)。照合登録情報は、式16に示す態様を用いて表すことができる。
(c2[0],c2[1],・・・,c2[n])・・・(式16)。
照合準備部521は、作成した照合登録情報を、照合要求装置512における暗号化第2データ部514に送信する(ステップ(SC9−1))。さらに、照合準備部521は、算出した該値に含まれる暗号化第1データを、照合装置519における検証データ生成部523に送信する。
たとえば、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の場合の例を用いながら、ステップSC7における処理について説明する。この場合に、照合準備部521は、集合Zpの中から、値(以降、説明の便宜上、「乱数」と表す。)を選ぶ。この処理にて照合準備部521が選んだ乱数を、r2[0]と表す。さらに、照合準備部521は、擬似乱数を生成する手順に従い、乱数Sを生成する。
照合準備部521は、公開鍵pkから、生成元gと、値yとを読み取る。照合準備部521は、集合Zpの中から、乱数xpを選ぶ。照合準備部521は、読み取った生成元gのr2[0]乗の値を算出する。照合準備部521は、読み取った生成元yの該r2[0]乗と、読み取った生成元gをS乗した値とを掛け算した値を算出する。照合準備部521は、算出した2つの値が関連付けされた暗号文を作成する。すなわち、照合準備部521は、これらの処理によって、乱数Sが公開鍵pkを用いて暗号化された値TEnc(pk,p,S)を算出する。
照合準備部521が算出する暗号文は、式17に示すように表すこともできる。
(g{xp×r2[0]},y{r2[0]}×g{S})
=TEnc(pk,xp,S)(すなわち、c2[0])・・・(式17)。
次に、照合準備部521は、式13に示された暗号文を含む暗号化登録情報に関して、該登録データに含まれる要素の値を乱数S乗した値を算出する。この処理によって、照合準備部521は、該登録データを算出した基であるデータXに含まれている要素、及び、データXに関して式11に従い算出された二乗和に関して、それぞれ、乱数S倍された値が、公開鍵pkおよびxpを用いて暗号化された値を算出する。
上記の処理によって照合準備部521が算出する値は、式18のように表すことができる。
(c1[1][1]{xp×S},c1[1][2]{S})(すなわち、TEnc(pk,xp,S×x[1])、c2[1]),
・・・,
(c1[n][1]{xp×S},c1[n][2]{S})(すなわち、TEnc(pk,xp,S×x[n])、c2[n]),
(cc1[1]{xp×S},cc1[2]{S})(すなわち、TEnc(pk,xp,S×(x[1]{2}+・・・+x[n]{2})、cc2)・・・(式18)。
ただし、暗号文c1[i]は、(c1[i][1],c1[i][2])である。iは、自然数を表す。
照合準備部521は、式15に従い算出した値を含む照合登録情報(c2[0],c2[1],・・・,c2[n])を作成する(ステップSC8)。照合準備部521は、作成した照合登録情報を、照合要求装置512における暗号化第2データ部514に送信する(ステップ(SC9−1))。さらに、照合準備部521は、算出した暗号化第1データ(Modified−Elgamal暗号を用いる場合は、暗号化第1データに乱数xpを追加する)を、照合装置519における検証データ生成部523に送信する。
照合要求装置512における暗号化第2データ部514は、照合する対象を表す対象データY、及び、照合準備部521が送信した照合登録情報(式16)を受信する(ステップ(SC9−2))。
説明の便宜上、対象データYは、上述した登録データと同様に、複数の要素(式19)を含むとする。さらに、登録データに含まれている要素と、対象データに含まれている要素とは、相互に比較可能に関連付けされているとする。たとえば、該関連付けに従えば、登録データにおける第I(ただし、Iは自然数)要素と、対象データにおける第I要素とが関連付けされている。
Y=(y[1],y[2],・・・,y[n])・・・(式19)。
尚、該関連付けは、必ずしも、上述した例に限定されない。
暗号化第2データ部514は、受信した対象データY、及び、受信した照合登録情報に基づき、該照合登録情報を算出した基であるデータXと、対象データYとの間の距離から、該データXの長さを引いた値(第2指標)が暗号化された暗号文(「暗号化第2指標」と表す)を算出する(ステップSC10)。
たとえば、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の場合の例を用いながら、ステップSC10における処理について説明する。
この場合に、暗号化第2データ部514は、たとえば、受信した対象データYに含まれている要素の2乗和を算出することにより、対象データYの長さを算出する。次に、暗号化第2データ部514は、式16に示された照合登録情報に含まれている第0要素(すなわち、乱数Sが暗号化された値)を読み取り、読み取った第0要素の値が「該長さ」乗された値を算出する。この場合に、暗号化第2データ部514が算出する値は、式20に示すように表すことができる。
(c2[0][1]{y[1]^{2}+・・・+y[n]^{2}},c2[0][2]{y[1]^{2}+・・・+y[n]^{2}})・・・(式20)。
ただし、暗号文c2[i]は、(c2[i][1],c2[i][2])である。iは、0以上の整数値を表す。
式20は、式15によれば、Enc(pk,S×{y[1]{2}+・・・+y[n]{2}})に等価である。
次に、暗号化第2データ部514は、照合登録情報に含まれている第i要素と、読み取り、対象データYに含まれている第i要素と読み取り、照合登録情報に含まれている第i要素が、「−2×対象データYに含まれている第i要素」乗された値を算出する。ただし、iは、自然数を表す。この場合に、暗号化第2データ部514が算出する値は、式21に示すように表すことができる。
(c2[i][1]{−2×y[i]},c2[i][2]{−2×y[i]})・・・(式21)。
式21は、式15によれば、Enc(pk,−2×S×x[i]×y[i])に等価である。
次に、暗号化第2データ部514は、式21に従い算出した値と、第0要素に関して算出した値とを掛け算した値(式22)を算出する。
(c2[0][1]{y[1]^{2}+・・・+y[n]^{2}}×c2[1][1]{−2×y[1]}×・・・×c2[n][1]{−2×y[n]},c2[0][2]{y[1]^{2}+・・・+y[n]^{2}}×c2[1][2]{−2×y[1]}×・・・×c2[n][2]{−2×y[n]})・・・(式22)。
式22は、
Enc(pk,S×{y[1]{2}+・・・+y[n]{2}})*Enc(pk,−2×S×x[1]×y[1])*・・・*Enc(pk,−2×S×x[n]×y[n])、
に等価である。すなわち、式22は、
Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2}))
に等価である。
説明の便宜上、式22に従い算出される暗号文を暗号化第2データ「cc3」と表す。
照合要求装置512における暗号化第2データ部514は、照合登録情報の中の乱数が暗号化された暗号文(すなわち、暗号化乱数)c2[0]と、算出した暗号化第2データcc3とを含む暗号化第2情報を作成し、作成した暗号化第2情報を、暗号化第2集合部515に送信する。暗号化第2情報は、たとえば、(c2[0],cc3)と表すことができる。
尚、以降の説明においては、説明の便宜上、「−2×(x[1]×y[1]+・・・+x[n]×y[n])+(y[1]{2}+・・・+y[n]{2})」を、D2(X,Y)と表すこともある。
照合要求装置512における暗号化第2集合部515は、暗号化第2データ部514が送信した暗号化第2情報を受信する。暗号化第2集合部515は、対象データが受理可能であるか否かを判定する基準を表す閾値tを読み取り、読み取った閾値tに基づき区画される区間に含まれる値を算出する。たとえば、暗号化第2集合部515は、「−t」から「−1」に至る整数値を算出する。次に、暗号化第2集合部515は、受信した暗号化第2情報に含まれる暗号化乱数c2[0]の該整数値乗を算出し、さらに、該暗号化第2情報に含まれる暗号化第2データcc3と掛け算した値を算出する。暗号化第2集合部515は、算出した値を含む暗号化第2集合を作成する。
暗号化第2集合は、対象データYとデータXとの間の距離から、対象データYの大きさを引いた値から、S×1からS×tに至る各(S×i)(ただし、iは、1からtまでの整数である)を引いた値が暗号化された値を含む。すなわち、暗号化第2集合は、式23に示す値を含む。
Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×1)(以降、cc4[1]と表す),
・・・,
Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×t)(以降、cc4[t]と表す)・・・(式23)。
また、暗号化第2集合部515は、さらに、暗号化第2集合に、暗号化第2情報の中の暗号化第2データcc3が追加された、新たな暗号化第2集合を作成する(ステップSC11)。
説明の便宜上、暗号化第2データcc3をcc4[0]と表す。この場合に、暗号化第2集合部515が算出する暗号化第2集合は、たとえば、式24に示す態様を用いて表すことができる。
(cc4[0],・・・,cc4[t])・・・(式24)。
暗号化第2集合部515は、作成した暗号化第2集合を、照合要求装置512における暗号化第2マスク部516に送信する。
たとえば、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の例を用いながら、ステップSC11における処理について説明する。この場合に、暗号化第2集合部515は、暗号化第2情報(c2[0],cc3)を受信する。次に、暗号化第2集合部515は、閾値tを読み取り、暗号化第2情報に含まれる暗号化乱数c2[0]に関して、「−t」から「−1」に至る各整数値のべき乗を表す値を算出する。次に、暗号化第2集合部515は、算出した値と、暗号化第2データcc3とを掛け算した値(すなわち、暗号文)を算出する。
暗号化第2集合部515が暗号文を算出する処理は、たとえば、式25として表すことができる。
(cc3[0]×c2[0][1]{−1},cc3[1]×c2[0][2]{−1}),
(cc3[0]×c2[0][1]{−2},cc3[1]×c2[0][2]{−2}),
・・・,
(cc3[0]×c2[0][1]{−t},cc3[1]×c2[0][2]{−t})・・・(式25)。
尚、式25は、式26と等価である。尚、uは、「−t」から「−1」までの整数値を表す。
(cc3[0]×c2[0][1]{−u},cc3[1]×c2[0][2]{−u})
=Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2}))×Enc(pk,S){−u}
=Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})×Enc(pk,−u×S)
=Enc(pk,−2×S×(x[1]y[1]+・・・+x[n]y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×u)・・・(式26)。
暗号化第2集合部515は、式25に示す処理によって算出された値を含む暗号化第2集合(式24)を作成し、作成した暗号化第2集合を、照合要求装置512における暗号化第2マスク部516に送信する。
照合要求装置512における暗号化第2マスク部516は、暗号化第2集合部515が送信した暗号化第2集合を受信する。次に、暗号化第2マスク部516は、たとえば、擬似乱数を算出する手順に従い、(t+1)個の乱数R[0]、・・・、R[t]を算出する。この場合に、暗号化第2マスク部516は、算出した乱数を含むマスク値集合(R[0],・・・,R[t])を作成してもよい。
次に、暗号化第2マスク部516は、算出した乱数R[i](ただし、0≦i≦t)を、公開鍵pkを用いて暗号化することにより、乱数R[i]が暗号化された暗号文Enc(pk,R[i])を作成する。暗号化第2マスク部516は、受信した暗号化第2集合に含まれている暗号文cc4[i]と、算出した暗号文Enc(pk,R[i])とを掛け算した値(式27)を算出する。
Enc(pk,R[i])*cc4[i]・・・(式27)。
尚、式27は式28に等価である。
Enc(pk,R[i])*cc4[i]
=Enc(pk,R[i])*Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×i)
=Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×i+R[i])・・・(式28)。
以降、式27に従い算出された値(暗号文)をcc5[i]と表す。
より具体的に、暗号化第2マスク部516は、式29に従い、値を算出する。
Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×0+R[0]),
・・・,
Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×t+R[t])・・・(式29)
暗号化第2マスク部516は、算出した値(式27)を含む暗号化第2マスクを作成する(ステップSC12)。
加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の例を用いて、ステップSC12における処理について説明する。
この例の場合に、暗号化第2マスク部516は、暗号化第2集合部515が送信した暗号化第2集合を受信する。次に、暗号化第2マスク部516は、たとえば、擬似乱数を生成する手順に従い、(t+1)個の乱数R[0]、・・・、R[t]を算出する。次に、暗号化第2マスク部516は、公開鍵pkから、生成元gを読み取り,生成元gを算出した乱数R[i]乗した値g{R[i]}(ただし、0≦i≦t)を算出する。次に、暗号化第2マスク部516は、受信した暗号化第2集合に含まれている暗号文cc4[i]の第2項と、算出した値とを掛け算した値(式31)を算出する。
(cc4[0][1],cc4[0][2]×g{R[0]}),
・・・,
(cc4[t][1],cc4[t][2]×g{R[t]})・・・(式31)。
尚、式31に示された(cc4[i][1],cc4[i][2]×g{R[i]})は、式32に示す式と等価である。
TEnc(pk,xp,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×i)*TEnc(pk,0,R[i])
=TEnc(pk,xp,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×i+R[i])・・・(式32)。
したがって、この場合に、式31に示された値の集合は、式33に示された値の集合と等価である。
(cc4[0][1],cc4[0][2]×g{R[0]})
=TEnc(pk,xp,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×0+R[0])
=cc5[0],
・・・,
(cc4[t][1],cc4[t][2]×g{R[t]})
=TEnc(pk,xp,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×t+R[t])
=cc5[t]・・・(式33)。
暗号化第2マスク部516は、式31に従い算出した値を含む暗号化第2マスク(cc5[1],・・・cc5[t])を作成し、作成した暗号化第2マスクを、照合要求装置512における照合データ部518に送信する。暗号化第2マスク部516は、マスク値集合(R[0],・・・,R[t])を検証マスク部517に送信する。
尚、式27を用いて算出された値を表すcc5[i]は、値D2(X,Y)を用いて式34として表すことができる。
cc5[i]
=Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×i+R[i])
=Enc(pk,S×D2(X,Y)−S×i+R[i])・・・(式34)。
検証マスク部517は、暗号化第2マスク部516が送信したマスク値集合(R[0],・・・,R[t])を受信する。検証マスク部517は、公開鍵pkに含まれている生成元gを読み取り、該マスク値集合に含まれている値(乱数R[i]と表す)に関して、それぞれ、読み取った生成元gがR[i]乗された値を算出する。ただし、0≦i≦tである。次に、検証マスク部517は、算出した値を入力として、ハッシュ関数Hを適用することにより、該値に対するハッシュ値H(g{R[i]})(以降、h1[i]と表す)を算出する。すなわち、検証マスク部517が算出するハッシュ値H(g{R[i]})は、式35としても記述することができる。
H(g{R[0]}),
・・・,
H(g{R[t]})・・・(式35)。
検証マスク部517は、算出したハッシュ値を含む検証マスクを作成する(ステップSC13)。たとえば、検証マスク部517が算出する検証マスクは、式36として表すことができる。
(h1[0],・・・,h1[t])・・・(式36)。
検証マスク部517は、作成した検証マスクを、照合要求装置512における照合データ部518に送信する。
照合要求装置512における照合データ部518は、暗号化第2集合部515が送信した暗号化第2マスク(cc5[0],・・・,cc5[t])、及び、検証マスク部517が送信した検証マスクを受信する。
照合データ部518は、0からtに至る値(以降、[0,t]と表す)に関する順列πをランダムに作成する。順列πは、すなわち、区間[0,t]に含まれる任意の整数iに対してπ(i)は[0,t]の要素である条件、及び、区間[0,t]に含まれる各整数iについてπ(i)に重複がない条件を満たす。
次に、照合データ部518は、作成した順列πに従い、受信した暗号化第2マスクに含まれている要素の順序を並び替え、さらに、作成した該順列πに従い、受信した検証マスクに含まれている要素の順序を並び替える。
説明の便宜上、作成した該順列πに従い、暗号化第2マスクに含まれている要素の順序を並び替える処理を、cc5[π(i)]と表す。作成した該順列πに従い、受信した検証マスクに含まれている要素の順序を並び替える処理を、h1[π(i)]と表す。また、cc5[π(i)]をcc6[i]と表し、h1[π(i)]をh2[i]と表す。
この場合に、式34によれば、cc6[i]は、値D2(X,Y)を用いて、式37として表すことができる。
Enc(pk,S×D2(X,Y)−S×π(i)+R[π(i)])・・・(式37)。
次に、照合データ部518は、算出したcc6[i]と、算出したh2[i]とを含む情報を作成し、さらに、区間[0,t]に含まれているiに関して、該情報を含む照合データを作成する(ステップSC14)。照合データ部518が作成する照合データは、たとえば、式38に示された態様を用いて表すことができる。
((cc6[0],h2[0]),・・・,(cc6[t],h2[t]))・・・(式38)。
照合データ部518は、作成した照合データ(たとえば、式38に示された値)を、照合装置519における検証データ生成部523に送信する(ステップ(SC15−1))。
照合装置519における検証データ生成部523は、照合準備部521が送信した暗号化第1データcc2(たとえば、式15)、及び、照合データ部518が送信した照合データ(たとえば、式38に示された値)を受信する(ステップ(SC15−2))。検証データ生成部523は、受信した照合データに含まれているcc6[i](ただし、0≦i≦t)を読み取り、読み取ったcc6[i]と、受信した暗号化第1データcc2とが掛け算された値(式39)を算出する。
Enc(pk,S×(x[1]{2}+・・・+x[n]{2}))*Enc(pk,S×D2(X,Y)−S×π(i)+R[π(i)])・・・(式39)。
検証データ生成部523が算出する値(式39)は、式40と等価である。
Enc(pk,S×(x[1]{2}+・・・+x[n]{2})+S×D2(X,Y)−S×π(i)+R[π(i)])
=Enc(pk,S×((x[1]{2}+・・・+x[n]{2})−2×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2}))−S×π(i)+R[π(i)])
=Enc(pk,S×((x[1]−y[1]){2}+・・・+(x[n]−y[n]){2})−S×π(i)+R[π(i)])・・・(式40)。
したがって、「(x[1]−y[1]){2}+・・・+(x[n]−y[n]){2})」をD(X,Y)と表すことによって、式40は、式41と等価である。
Enc(pk,S×D(X,Y)−S×π(i)+R[π(i)])・・・(式41)。
説明の便宜上、式39に示された値をcc7[i]と表す。
すなわち、0≦i≦tなるiに対して、検証データ生成部523は、式42に示す値を算出する。
Enc(pk,S×D(X,y)−S×π(0)+R[π(0)]),
・・・,
Enc(pk,S×D(X,y)−S×π(t)+R[π(t)])・・・(式42)。
検証データ生成部523は、算出したcc7[i]と、受信した照合データに含まれているh2[i]とが関連付けされた情報(cc7[i],h2[i])を作成する。検証データ生成部523は、0≦i≦tなるiに対して、作成した情報を含む検証データを作成する(ステップSC16)。たとえば、検証データ生成部523が作成する検証データは、式43に示す態様にて表すことができる。
((cc7[0],h2[0]),・・・,(cc7[t],h2[t]))・・・(式43)。
検証データ復号部510は、作成した検証データを、検証装置524における検証データ復号部510に送信する(ステップ(SC17−1))。
加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の例を用いながら、ステップSC16における処理について説明する。この場合に、検証データ生成部523は、照合準備部521から暗号化第1データcc2に加え,乱数xpを受信する。受信した照合データに含まれているcc6[i](ただし、0≦i≦t)を読み取り、読み取ったcc6[i]を変形パラメータ1/xpによって変形した値と、受信した暗号化第1データcc2とが掛け算された値(すなわち、TEnc(pk,1/xp,cc2)*cc6[i])を算出する。したがって、0≦i≦tなるiに対して、検証データ生成部523は、式44に示す値を算出する。
(cc2[1]{1/xp}×cc6[0][1]{1/xp},cc2[2]×cc6[0][2])(この値は、Enc(pk,S×D(X,y)−S×π(0)+R[π(0)])と等価である),
・・・,
(cc2[1]{1/xp}×cc6[t][1]{1/xp},cc2[2]×cc6[0][2])(この値は、Enc(pk,S×D(X,y)−S×π(t)+R[π(t)])と等価である)・・・(式44)。
検証データ生成部523は、算出したcc7[i]と、受信した照合データに含まれているh2[i]とが関連付けされた情報を作成する。検証データ生成部523は、0≦i≦tなるiに対して、作成した情報を含む検証データを作成する(ステップSC16)。検証データ生成部523は、作成した検証データ(たとえば、式43)を、検証装置524における検証データ復号部510に送信する(ステップ(SC17−1))。
検証装置524における検証データ復号部510は、検証データ生成部523が送信した検証データを受信し(ステップ(SC17−2))、さらに、鍵記憶部509から秘密鍵skを読み取る。次に、検証データ復号部510は、受信した検証データに含まれている暗号文cc7[i](ただし、0≦i≦t)を読み取り、読み取った暗号文cc7[i]を、秘密鍵skを用いて復号する。尚、検証データ復号部510が秘密鍵skを用いて、暗号文cc7[i]を復号する処理Decは、式45に示す態様にて表すことができる。
Dec(sk,cc7[i])・・・(式45)。
尚、説明の便宜上、式45に示された値をdd1[i]と表す。
すなわち、上述した処理によって、検証データ復号部510は、式46に示す値を算出する。
Dec(sk,cc7[0]),
・・・,
Dec(sk,cc7[t])・・・(式46)。
検証データ復号部510は、算出したdd1[i]と、検証データに含まれているh2[i]とが関連付けされた情報を作成する。次に、検証データ復号部510は、0≦i≦tなるiに関して作成した情報が含まれている復号後検証データを作成する(ステップSC18)。検証データ復号部510が作成する復号後検証データは、たとえば、式47に示す態様に従い表すことができる。
((dd1[0],h2[0]),・・・,(dd1[t],h2[t]))・・・(式47)。
たとえば、加法に関して準同型性を有する公開鍵暗号としてModified−Elgamal暗号の例を用いながら、ステップSC17における処理について説明する。検証データ復号部510は、秘密鍵skから読み取った値xを用いて、cc7[i]を復号する。すなわち、検証データ復号部510が処理する手順は、式48に示すように表すことができる。
cc7[0][2]/(cc7[0][1]{x}),
・・・,
cc7[t][2]/(cc7[t][1]{x})・・・(式48)。
検証データ復号部510は、作成した復号後検証データを、検証装置524における検証部511に送信する。
検証装置524における検証部511は、検証データ復号部510が送信した復号後検証データ(式47)を受信する。検証部511は、受信した復号後検証データから、0≦i≦tなるiに関して、dd1[i]を読み取り、読み取ったdd1[i]にハッシュ関数Hが適用された値H(dd1[i])を算出する。
次に、検証部511は、0≦i≦tなるiに関して、復号後検証データからh2[i]を読み取り、読み取ったh2[i]と算出したH(dd1[i])とが一致するか否かを判定する。
検証部511は、0≦i≦tなるiのうち、少なくとも1つ以上のiに関して、h2[i]とH(dd1[i])とが一致する場合に、「一致」を表す検証結果を作成する。さもなくば、検証部511は、「不一致」を表す検証結果を作成する(ステップSC19)。
検証部511は、算出した検証結果を、照合装置519における判定部522に送信する(ステップ(SC20−1))。
照合装置519における判定部522は、検証部511が送信した検証結果を受信する(ステップ(SC20−2))。判定部522は、検証結果が「一致」である場合に、判定結果として「受理」を算出し、検証結果が「不一致」である場合に、判定結果として「不受理」を算出する(ステップSC21)。判定部522は、算出した判定結果を出力してもよい(ステップSC22)。
次に、第4の実施形態に係る照合システム501に関する効果について説明する。
第4の実施形態に係る照合システム501によれば、照合対象である情報と、参照すべき情報との、より安全な照合処理が可能になる指標を算出することができる。さらに、第4の実施形態に係る照合システム501によれば、照合対象である情報と、参照すべき情報との、より一層安全な照合処理が可能である。この理由は、第4の実施形態に係る照合システム501が、第1の実施形態に係る照合システム101が有する構成を含むからである。
さらに、第4の実施形態に係る照合システム501によれば、登録データが暗号化された暗号文を含む暗号化登録情報、または、各装置間において送受信される情報が漏洩しても、照合処理に際して、登録データとの距離が閾値以下である対象データを用いなければ受理されることがないという効果も奏する。さらに、第4の実施形態に係る照合システム501によれば、たとえ、照合要求装置512が対象データを繰り返し受信したとしても、該対象データと、登録データとの距離を秘匿することが可能であるという効果も奏する。
この理由は、第4の実施形態に係る照合システム501が有する構成が、第1の実施形態に係る照合システム101が有する構成を含むからである。
さらに、第4の実施形態に係る照合システム501によれば、該照合システム501における処理負荷が少ないという効果を奏する。
この理由は、暗号化登録情報に含まれている情報量が、少ないからである。すなわち、暗号化登録情報は、登録データがn個の要素を含む場合に、該登録データに関する暗号化登録情報は、(n+1)個の要素が暗号化された暗号文であるからである。
尚、本実施形態においては、ユークリッド距離の例を挙げたが、他の距離(たとえば、ハミング距離、マハラノビス距離等)にも容易に適用可能である。
<第5の実施形態>
次に、上述した第2の実施形態を基本とする本発明の第5の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第2の実施形態、または、第4の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
図14を参照しながら、本発明の第5の実施形態に係る照合システム601が有する構成について詳細に説明する。図14は、本発明の第5の実施形態に係る照合システム601が有する構成を示すブロック図である。
第5の実施形態に係る照合システム601は、大別して、登録データ装置502と、照合要求装置612と、記憶装置504と、照合装置619と、検証装置624とを有する。
登録データ装置502は、暗号化部503を有する。
記憶装置504は、識別子管理部506と、登録データ情報記憶部505と、登録データ検索部507とを有する。
検証装置624は、鍵生成部508と、鍵記憶部509と、検証データ復号部510と、検証部511と、検証データ生成部623とを有する。
照合装置619は、照合登録情報要求部620と、照合準備部621と、判定部622とを有する。
照合要求装置612は、照合要求部613と、暗号化第2データ部614と、暗号化第2集合部615と、暗号化第2マスク部616と、検証マスク部617と、照合データ部618とを有する。
登録データ装置502と、照合要求装置612と、記憶装置504と、照合装置619と、検証装置624とは、たとえば、通信ネットワークを介して、相互に通信することが可能であるとする。
本実施形態においては、距離としてn次元ユークリッド距離の場合の例を参照しながら、本実施形態に係る照合システム601における処理について説明する。また、本実施形態では、加法に関して準同型性を有する公開鍵暗号としてModified−Elgamal暗号を用いる場合の例を参照しながら該処理について説明するが、Paillier暗号等の他の加法に関して準同型性を有する暗号を利用しても構わない。尚、本実施形態において、n次元ユークリッド距離およびModified−Elgamal暗号は、第4の実施形態におけるn次元ユークリッド距離、及び、Modified−Elgamal暗号と同様であるので、これらの説明については省略する。
次に、本発明の第5の実施形態に係る照合システム601における処理について詳細に説明する。照合システム601における処理は、大別して、準備フェーズ、登録フェーズ、及び、照合フェーズを含む。
まず、図15を参照しながら、本実施形態に係る照合システム601が、準備フェーズにて実行する処理について説明する。図15は、準備フェーズにおいて、第5の実施形態に係る照合システム601が実行する処理の一例を示すフローチャート(シーケンス図)である。
検証装置624における鍵生成部508は、セキュリティパラメータ1kを受信し、加法に関して準同型性を有する公開鍵暗号に従い、受信したセキュリティパラメータ1kを用いて公開鍵pk、及び、秘密鍵skを生成する(ステップTA1)。尚、生成される公開鍵、及び、秘密鍵は、該鍵生成アルゴリズムに従い生成されるので、加法に関して準同型性を有する公開鍵暗号に準拠する。さらに、鍵生成部508は、入力された値に対して、特定の値を算出するハッシュ関数Hを決定する(ステップTA2)。鍵生成部508は、照合システム601における各部に、作成したハッシュ関数H、及び、生成した公開鍵を公開する(ステップTA3)。鍵生成部508は、生成した秘密鍵を鍵記憶部509に格納する(ステップTA4)。
たとえば、鍵生成アルゴリズムが、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号における鍵生成アルゴリズムである場合の例を参照しながら、ステップTA1における処理について説明する。
鍵生成部508は、セキュリティパラメータ1kを受信する。次に、鍵生成部508は、受信したセキュリティパラメータ1kに基づき、位数がkビットである素数pである群Gと、群Gに関する生成元gとを生成する。鍵生成部508は、Zpの中から値xをランダムに選び、生成元gのx乗を算出する。すなわち、鍵生成部508は、gx(=y)を算出する。鍵生成部508は、群G、素数p、生成元g、及び、算出した値yが関連付けされた公開鍵pkを算出する(ステップTA1)。鍵生成部508は、公開鍵pk、及び、値xが関連付けされた(pk,x)を、秘密鍵skとして算出する(ステップTA1)。
次に、図16を参照しながら、本実施形態に係る照合システム601が、登録フェーズにて実行する処理について説明する。図16は、登録フェーズにおいて、第5の実施形態に係る照合システム601が実行する処理の一例を示すシーケンス図である。
登録データ装置502における暗号化部503は、式10に示すような複数の要素を含むデータXを受信する。暗号化部503は、受信したデータXに含まれている要素の二乗和(式11)を算出する。次に、暗号化部503は、データXに含まれている要素と、算出した二乗和とを、公開鍵pkを用いて暗号化する。次に、暗号化部503は、式12に従い算出された値が関連付けされた暗号化登録情報(式13)を作成する(ステップTB1)。
ステップTB1について、詳細に説明する。暗号化部503は、集合Zpの中から、複数の値(以降、説明の便宜上、「乱数」と表す)を選ぶ。暗号化部503が選んだ複数の乱数を、r1[1]、・・・、r1[n]、及び、rr1と表す。
暗号化部503は、データXを受信した場合に、式11に従い二乗和を算出する。次に、暗号化部503は、公開鍵pkから、生成元gと、値yとを読み取る。暗号化部503は、読み取った生成元gを乱数乗した値(「値7」と表す)を算出する。暗号化部503は、読み取った生成元yの該乱数乗と、読み取った生成元gを「データXに含まれる要素」乗した値とが掛け算された値を算出する(「値5」と表す)。さらに、暗号化部503は、読み取った生成元yの該乱数乗と、読み取った生成元gを「式11に従い算出した二乗和」乗した値とが掛け算された値(「値6」と表す)を算出する。次に、暗号化部503は、値5及び値7が関連付けされた暗号文(すなわち、二乗和に関する暗号文)を算出する。すなわち、暗号化部503は、式12に示された暗号文を算出する。暗号化部503は、該2つの暗号文を含む暗号化登録情報(式13)を作成する(ステップTB1)。暗号化部503は、作成した暗号化登録情報を、照合装置619における識別子管理部506に送信する(ステップ(TB2−1))。
記憶装置504における識別子管理部506は、暗号化部503が送信した暗号化登録情報を受信し(ステップ(TB2−2))、受信した暗号化登録情報を一意に識別可能な登録識別子を作成する(ステップTB3)。識別子管理部506は、作成した登録識別子と、受信した暗号化登録情報とが関連付けされた登録データ情報を作成し、作成した該登録データ情報を、記憶装置504における登録データ情報記憶部505に格納する(ステップTB4)。識別子管理部506は、作成した該登録識別子を、登録データ装置502に送信する(ステップ(TB5−1))。
記憶装置504における登録データ装置502は、該登録識別子を受信し(ステップ(TB5−2))、たとえば、受信した該登録識別子を、ディスプレイ等のユーザインターフェース(UI)に表示する(ステップTB6)。あるいは、登録データ装置502は、社員証や、識別子カード等の、IC(integrated_circuit)カードに、該登録識別子を格納してもよい。また、識別子管理部506が、作成した該登録識別子を表示してもよい。
尚、本実施形態に係る照合システム601が登録フェーズにて実行する処理は、図16に例示された様態に限定されない。
図17A及び図17Bを参照しながら、本実施形態に係る照合システム601が、照合フェーズにて実行する処理について説明する。図17A及び図17Bは、照合フェーズにおいて、第5の実施形態に係る照合システム601が実行する処理の一例を示すシーケンス図である。
照合要求装置612における照合要求部613は、照合する対象を表す対象データと、登録識別子とを受信する。照合要求部613は、受信した対象データと、受信した登録識別子に関連付けされた暗号化登録情報とを照合することを要求する照合要求を作成する(ステップSD1)。照合要求部613は、作成した該照合要求を、照合装置619における照合登録情報要求部620に送信する(ステップ(SD2−1))。照合要求は、たとえば、該登録識別子を含む。
照合装置619における照合登録情報要求部620は、照合要求部613が送信した照合要求を受信し(ステップ(SD2−2))、受信した該照合要求に含まれる登録識別子を読み取る。照合登録情報要求部620は、読み取った該登録識別子に関連付けされた暗号化登録情報を要求する登録データ要求を作成し(ステップSD3)、作成した該登録データ要求を、記憶装置504における登録データ検索部507に送信する(ステップ(SD4−1))。登録データ要求は、読み取った登録識別子を含む態様を用いて実現することができる。
記憶装置504における登録データ検索部507は、照合登録情報要求部620が送信した登録データ要求を受信する(ステップ(SD4−2))。登録データ検索部507は、登録データ情報(たとえば、登録データ情報記憶部505に格納されている)において、受信した登録データ要求に含まれている登録識別子に関連付けされた暗号化登録情報を特定する(ステップSD5)。登録データ検索部507は、特定した暗号化登録情報を、照合装置619における照合準備部621に送信する(ステップ(SD6−1))。
照合装置619における照合準備部621は、登録データ検索部507が送信した暗号化登録情報(式13)を受信する(ステップ(SD6−2))。照合準備部621は、たとえば、擬似乱数を生成する手順に従い、値S(以降、乱数Sと表す)を生成する。照合準備部621は、暗号化登録情報に含まれている各要素が値S乗された値と、該乱数が暗号化された暗号文(すなわち、「暗号化乱数」)とを算出する。この処理によって、照合準備部621は、該暗号化登録情報の基となった登録データが「値S」倍された値が暗号化された暗号文、及び、該登録データの大きさが「値S」倍された値が暗号化された暗号文(すなわち、「暗号化第1データ」)を算出する(ステップSD7)。照合準備部621は、算出した値のうち登録データの各値が「値S」倍された値の暗号文と、算出した該暗号化乱数とを含む照合登録情報を作成し(ステップSD8)、作成した照合登録情報を、照合要求装置612における暗号化第2データ部614に送信する(ステップ(SD9−1))。さらに、照合準備部621は、ステップSD7にて算出された値のうち登録データの大きさが「値S」倍された値の暗号文(すなわち、「暗号化第1データ」)を、検証装置624における検証データ生成部623に送信する(ステップ(SD10−1))。
たとえば、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の場合の例を参照しながら、ステップSD7、及び、ステップSD8について詳細に説明する。この場合に、照合準備部621は、集合Zpの中から、値(以降、説明の便宜上、「乱数」と表す)を選ぶ。この処理にて暗号化部503が選んだ複数の乱数を、r2[0]と表す。さらに、照合準備部621は、たとえば、擬似乱数を生成する手順に従い、乱数Sを生成する。
照合準備部621は、公開鍵pkから、生成元gと、値yとを読み取る。暗号化部503は、読み取った生成元gのr2[0]乗の値を算出する。照合準備部621は、読み取った生成元yの該r2[0]乗と、読み取った生成元gをS乗した値とが掛け算された値を算出する。照合準備部621は、算出した2つの値が関連付けされた暗号文を作成する。すなわち、照合準備部621は、これらの処理によって、乱数Sが公開鍵pkを用いて暗号化された暗号文Enc(pk,S)(式49、すなわち、暗号化乱数)を算出する。
(g{r2[0]},y{r2[0]}×g{S})
=Enc(pk,S)(すなわち、c2[0])・・・(式49)。
次に、照合準備部621は、式16に示された暗号文を含む照合登録情報に関して、該登録データに含まれる要素の値を乱数S乗した値(式50)を算出する。
(c1[1][1]{S},c1[1][2]{S})(すなわち、Enc(pk,S×x[1])、c2[1]),
・・・,
(c1[n][1]{S},c1[n][2]{S})(すなわち、Enc(pk,S×x[n])、c2[n]),
(cc1[1]{S},cc1[2]{S})(すなわち、Enc(pk,S×(x[1]{2}+・・・+x[n]{2})、cc2)・・・(式50)。
ただし、暗号文c1[i]は、(c1[i][1],c1[i][2])である。iは、自然数を表す。
この処理によって、照合準備部621は、該登録データを算出した基であるデータXに含まれている要素、及び、データXに関して式11に従い算出された二乗和に関して、それぞれ、乱数S倍された値が、公開鍵pkを用いて暗号化された値(式15)を算出する(ステップSD7)。照合準備部621は、算出した値(式15)を含む照合登録情報(式16)を作成する(ステップSD8)。ステップSD7によって、照合準備部621は、該二乗和がS倍された値が暗号化された暗号化第1データ(式15におけるcc2)も算出している。
照合要求装置612における暗号化第2データ部614は、対象データY、及び、照合準備部621が送信した照合登録情報を受信する(ステップ(SD9−2))。暗号化第2データ部614は、上述したステップS101乃至ステップS104に示す処理を実行することによって、暗号化第2情報(c2[0],cc3)を作成する(ステップSD11)。すなわち、暗号化第2情報は、暗号化乱数c2[0]と、暗号化第2データcc3とを含む。
たとえば、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の場合の例を参照しながら、ステップSD11に示した処理について説明する。
この場合に、暗号化第2データ部614は、たとえば、受信したデータY(式19)における各要素の2乗和を算出することにより、受信した対象データYの大きさを算出する。次に、暗号化第2データ部614は、式16に示された照合登録情報の中の暗号化乱数c2[0]を読み取り、読み取った暗号化乱数が該大きさ乗された値(式20)を算出する。
次に、暗号化第2データ部614は、照合登録情報に含まれている第i要素と、読み取り、対象データYに含まれている第i要素と読み取る。暗号化第2データ部614は、照合登録情報(式16)に含まれている第i要素が、「−2×対象データYに含まれている第i要素」乗された値(式21)を算出する。ただし、iは、自然数を表す。
暗号化第2データ部614は、暗号化乱数c2[0]と、算出した暗号化第2データcc3(式22)とを含む暗号化第2情報(c2[0],cc3)を作成する。暗号化第2データ部614は、作成した暗号化第2情報を、照合要求装置612における暗号化第2集合部615に送信する。
照合要求装置612における暗号化第2集合部615は、暗号化第2データ部614が送信した暗号化第2情報(c2[0],cc3)を受信する。暗号化第2集合部615は、閾値tを読み取り、「−t」から「−1」に至る整数値を算出する。次に、暗号化第2集合部615は、受信した暗号化第2情報の中の暗号化乱数c2[0]の該整数値乗を算出する。この処理よって、暗号化第2集合は、(S×(−t))から(S×(−1))に至る各値(S×i)(ただし、iは、−tから−1に至る整数)が暗号化した値が算出される。暗号化第2集合は、算出した各値と、暗号化第2データcc3と掛け算する(式23)。暗号化第2集合部615は、算出した各値を含む暗号化第2集合(式24)を作成する(ステップSD12)。暗号化第2マスク部616は、作成したマスク値集合、及び、作成した暗号化第2集合を、照合要求装置612における暗号化第2マスク部616に送信する。
たとえば、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の例を用いながら、ステップSD12における処理について説明する。この場合に、暗号化第2集合部615は、暗号化第2情報(c2[0],cc3)を受信する。次に、暗号化第2集合部615は、閾値tを読み取り、暗号化第2情報の中の暗号化乱数c2[0]に関して、「−t」から「−1」に至る各整数値のべき乗を表す値を算出する。次に、暗号化第2集合部615は、算出した値と、暗号化第2情報の中の暗号化第2データcc3とを掛け算した値を算出する(式25)。暗号化第2集合部615は、算出した値を含む暗号化第2集合(cc4[0],・・・,cc4[t])を作成する(ステップSD12)。暗号化第2集合部615は、作成した暗号化第2集合を、照合要求装置612における暗号化第2マスク部616に送信する。
照合要求装置612における暗号化第2マスク部616は、暗号化第2集合部615が送信した暗号化第2集合を受信する。暗号化第2マスク部616は、たとえば、擬似乱数を算出する手順に従い、(t+1)個の乱数R[0]、・・・、R[t]を算出する。この場合に、暗号化第2マスク部616は、算出した乱数が関連付けされたマスク値集合(R[0],・・・,R[t])を作成してもよい。次に、暗号化第2マスク部616は、算出した乱数R[i](ただし、0≦i≦t)を、公開鍵pkを用いて暗号化することにより、乱数R[i]が暗号化された暗号文Enc(pk,R[i])を作成する。次に、暗号化第2マスク部616は、受信した暗号化第2集合に含まれている要素cc4[i]と、算出した暗号文Enc(pk,R[i])とを掛け算した値(式27)を算出する。すなわち、暗号化第2マスク部616は、1≦i≦nなるiに関して、式27に従い、式29に示された値を算出する。暗号化第2マスク部616は、算出した値(式29)を含む暗号化第2マスク(cc5[0],・・・,cc5[t])を作成する(ステップSD13)。暗号化第2マスク部616は、作成した暗号化第2マスクを、照合要求装置612における照合データ部618に送信する。暗号化第2マスク部616は、マスク値集合(R[0],・・・,R[t])を検証マスク部617に送信する。
加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の例を用いて、ステップSD13における処理について説明する
この例の場合に、暗号化第2マスク部616は、暗号化第2集合部615が送信した暗号化第2集合を受信する。次に、暗号化第2マスク部616は、たとえば、擬似乱数を算出する手順に従い、(t+1)個の乱数R[0]、・・・、R[t]を算出する。次に、暗号化第2マスク部616は、算出した乱数R[i](ただし、0≦i≦t)を算出し、算出した値を、公開鍵pkを用いて暗号化することにより、乱数R[i]が暗号化されたEnc(pk,R[i])を作成する。すなわち、暗号化第2マスク部616は、公開鍵pkから、生成元gと、値yとを読み取り、集合Zpから第8値ru[i]を選ぶ。次に、暗号化第2マスク部616は、式51に従い、乱数R[i]が暗号化されたEnc(pk,R[i])を作成する。
(g{ru[i]},y{ru[i]}×g{R[i]})
=Enc(pk,R[i])・・・(式51)。
次に、暗号化第2マスク部616は、受信した暗号化第2集合に含まれている暗号文cc4[i]と、算出した暗号文Enc(pk,R[i])とを掛け算した値(式52)を算出する。
cc4[0]*Enc(pk,R[0]),
・・・,
cc4[t]*Enc(pk,R[t])・・・(式52)。
照合要求装置612における暗号化第2マスク部616は、算出した値を含む暗号化第2マスク(cc5[1],・・・cc5[t])を作成し(ステップSD13)、作成した暗号化第2マスクを、照合要求装置612における照合データ部618に送信する。暗号化第2マスク部616は、マスク値集合(R[0],・・・,R[t])を、照合要求装置612における検証マスク部617に送信する。
照合要求装置612における検証マスク部617は、暗号化第2マスク部616が送信したマスク値集合(R[0],・・・,R[t])を受信する。検証マスク部617は、公開鍵pkに含まれている生成元gを読み取り、該マスク値集合に含まれている値(乱数R[i]と表す)に関して、それぞれ、読み取った生成元gがR[i]乗された値を算出する。この処理によって、検証マスク部617は、乱数R[i]が暗号化された暗号文を算出する。ただし、0≦i≦tである。次に、検証マスク部617は、算出した暗号文を入力としてハッシュ関数Hを適用することにより、該値に対するハッシュ値H(g{R[i]})(=h1[i])を算出する。すなわち、検証マスク部617は、該暗号文に関するハッシュ値(式35)を算出する。検証マスク部617は、算出したハッシュ値を含む検証マスク(h1[0],・・・,h1[t])を作成する(ステップSD14)。検証マスク部617は、作成した検証マスクを、照合要求装置612における照合データ部618に送信する。
照合要求装置612における照合データ部618は、暗号化第2集合部615が送信した暗号化第2マスク(cc5[0],・・・,cc5[t])を受信する。照合データ部618は、さらに、検証マスク部617が送信した検証マスク(h1[0],・・・,h1[t])を受信する。
照合データ部618は、0からtに至る値(以降、[0,t]と表す)に関する順列πをランダムに作成する。次に、照合データ部618は、作成した順列πに従い、受信した暗号化第2集合に含まれている要素の順序を並び替え、作成した該順列πに従い、受信した検証マスクに含まれている要素の順序を並び替える。この処理によって、照合データ部618は、暗号化第2集合における順序が並び替えられた(cc6[0],・・・,cc6[t])、及び、検証マスクにおける順序が並び替えられた(h2[0],・・・,h2[t])を算出する。
次に、照合データ部618は、算出したcc6[i]と、算出したh2[i]とが関連付けされた情報を作成し、さらに、区間[0,t]に含まれているiに関して、該情報を含む照合データ(式38)を作成する(ステップSD15)。照合データ部618は、作成した照合データを、検証装置624における検証データ生成部623に送信する(ステップ(SD16−1))。
検証装置624における検証データ生成部623は、照合準備部621が送信した暗号化第1データcc2を受信し(ステップ(SD10−2))、さらに、照合データ部618が送信した照合データ(たとえば、式38に示された値)を受信する(ステップ(SD16−2))。検証データ生成部623は、たとえば、受信した照合データに含まれている値cc6[i](ただし、0≦i≦t)を読み取り、読み取った値cc6[i]と、受信した暗号化第1データcc2とが掛け算された値cc7[i](式39)を算出する。
検証データ生成部623は、算出した値cc7[i]と、受信した照合データに含まれているh2[i]とが関連付けされた情報(cc7[i],h2[i])を作成する。検証データ生成部623は、0≦i≦tなるiに対して、作成した情報を含む検証データ(式43)を作成する(ステップSD17)。
たとえば、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の例を用いながら、ステップSD17における処理について説明する。この場合に、検証データ生成部623は、受信した照合データに含まれている値cc6[i](ただし、0≦i≦t)を読み取り、読み取った値cc6[i]と、受信した暗号化第1データcc2とが掛け算された値(すなわち、cc2*cc6[i])を算出する。したがって、0≦i≦tなるiに対して、検証データ生成部623は、式39に示す値(すなわち、cc7[0]乃至cc7[t])を算出する。
検証データ生成部623は、算出したcc7[i]と、受信した照合データに含まれているh2[i]とが関連付けされた情報(cc7[i],h2[i])を作成する。検証データ生成部623は、0≦i≦tなるiに対して、作成した情報を含む検証データを作成する。検証データ生成部623は、作成した検証データ(たとえば、式43)を、検証装置624における検証データ復号部510に送信する。
検証装置624における検証データ復号部510は、検証データ生成部623が送信した検証データ(たとえば、式43)を受信し、鍵記憶部509から秘密鍵skを読み取る。次に、検証データ復号部510は、検証データに含まれている暗号文cc7[i](ただし、0≦i≦t)を読み取り、秘密鍵skを用いて読み取った暗号文cc7[i]を復号することによって、値dd1[i](式45)を算出する。
検証装置624における検証データ復号部510は、算出したdd1[i]と、検証データに含まれているh2[i]とが関連付けされた情報(dd1[i],h2[i])を作成する。次に、検証データ復号部510は、0≦i≦tなるiに関して作成した情報が含まれている復号後検証データ(式47)を作成する(ステップSD17)。検証データ生成部623は、作成した復号後検証データを、検証装置624における検証部511に送信する。
以降、ステップSC18乃至ステップSC22に示された処理と同様の処理が実行されるので、ステップSD18乃至ステップSD22に関する説明を省略する。
次に、第5の実施形態に係る照合システム601に関する効果について説明する。
第5の実施形態に係る照合システム601によれば、照合対象である情報と、参照すべき情報との、より安全な照合処理が可能になる指標を算出することができる。さらに、第5の実施形態に係る照合システム601によれば、照合対象である情報と、参照すべき情報との、より一層安全な照合処理が可能である。この理由は、第5の実施形態に係る照合システム601が、第2の実施形態に係る照合システム201が有する構成を含むからである。
さらに、第5の実施形態に係る照合システム601によれば、登録データが暗号化された暗号文を含む暗号化登録情報、または、各装置間において送受信される情報が漏洩しても、照合処理に際して、登録データとの距離が閾値以下である対象データを用いなければ受理されることがないという効果も奏する。さらに、第5の実施形態に係る照合システム601によれば、たとえ、照合要求装置612が対象データを繰り返し受信したとしても、該対象データと、登録データとの距離を秘匿することが可能であるという効果も奏する。
この理由は、第5の実施形態に係る照合システム601が有する構成が、第2の実施形態に係る照合システム201が有する構成を含むからである。
さらに、第5の実施形態に係る照合システム601によれば、該照合システム601における処理負荷が少ないという効果を奏する。
この理由は、暗号化登録情報に含まれている情報量が、少ないからである。すなわち、暗号化登録情報は、登録データがn個の要素を含む場合に、該登録データに関する暗号化登録情報は、(n+1)個の要素が暗号化された暗号文であるからである。
尚、本実施形態においては、ユークリッド距離の例を挙げたが、他の距離(たとえば、ハミング距離、マハラノビス距離等)にも容易に適用可能である。
<第6の実施形態>
次に、上述した第3の実施形態を基本とする本発明の第6の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第3の実施形態、または、第4の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
図18を参照しながら、本発明の第6の実施形態に係る照合システム801が有する構成について詳細に説明する。図18は、本発明の第6の実施形態に係る照合システム801が有する構成を示すブロック図である。
第6の実施形態に係る照合システム801は、大別して、登録データ装置502と、照合要求装置812と、記憶装置504と、照合装置823と、検証装置822とを有する。
登録データ装置502は、暗号化部503を有する。
記憶装置504は、識別子管理部506と、登録データ情報記憶部505と、登録データ検索部507とを有する。
検証装置822は、鍵生成部508と、鍵記憶部509と、検証データ復号部510と、検証部511と、検証データ生成部811とを有する。
照合装置823は、照合登録情報要求部815と、照合準備部816と、判定部817と、暗号化第1集合部818と、暗号化第1マスク部819と、検証マスク部820と、照合データ部821とを有する。
登録データ装置502と、照合要求装置812と、記憶装置504と、照合装置823と、検証装置822とは、たとえば、通信ネットワークを介して、相互に通信することが可能であるとする。
照合要求装置812は、照合要求部813と、暗号化第2データ部814とを有する。
本実施形態においては、距離としてn次元ユークリッド距離の場合の例を参照しながら、本実施形態に係る照合システム801における処理について説明する。また、本実施形態では、加法に関して準同型性を有する公開鍵暗号としてModified−Elgamal暗号を用いる場合の例を参照しながら該処理について説明するが、Paillier暗号等の他の加法に関して準同型性を有する暗号を利用しても構わない。尚、本実施形態において、n次元ユークリッド距離およびModified−Elgamal暗号は、第4の実施形態におけるn次元ユークリッド距離およびModified−Elgamal暗号と同様であるので、これらの説明については省略する。
次に、本発明の第6の実施形態に係る照合システム801における処理について詳細に説明する。照合システム801における処理は、大別して、準備フェーズ、登録フェーズ、及び、照合フェーズを含む。
本実施形態に係る照合システム801に関する準備フェーズにおける処理は、第4の実施形態に係る照合システム501に関する準備フェーズにおける処理と同様である。このため、本実施形態に係る照合システム801に関する準備フェーズにおける処理に関する説明を省略する。さらに、本実施形態に係る照合システム801に関する登録フェーズにおける処理は、第4の実施形態に係る照合システム501に関する登録フェーズにおける処理と同様である。このため、本実施形態に係る照合システム801に関する登録フェーズにおける処理に関する説明を省略する。
図19A及び図19Bを参照しながら、本実施形態に係る照合システム801が、照合フェーズにて実行する処理について説明する。図19A及び図19Bは、照合フェーズにおいて、第6の実施形態に係る照合システム801が実行する処理の一例を示すシーケンス図である。
照合要求装置812における照合要求部813は、照合する対象を表す対象データと、登録識別子とを受信する。照合要求部813は、受信した対象データと、受信した登録識別子に関連付けされた暗号化登録情報とを照合することを要求する照合要求を作成する(ステップSF1)。照合要求部813は、作成した該照合要求を、照合装置823における照合登録情報要求部815に送信する(ステップ(SF2−1))。照合要求は、たとえば、該登録識別子を含む。
照合装置823における照合登録情報要求部815は、照合要求部813が送信した照合要求を受信し(ステップ(SF2−2))、受信した該照合要求に含まれる登録識別子を読み取る。照合登録情報要求部815は、読み取った該登録識別子に関連付けされた暗号化登録情報を要求する登録データ要求を作成し(ステップSF3)、作成した該登録データ要求を、記憶装置504における登録データ検索部507に送信する(ステップ(SF4−1))。登録データ要求は、読み取った登録識別子を含む態様を用いて実現することができる。
記憶装置504における登録データ検索部507は、照合登録情報要求部815が送信した登録データ要求を受信する(ステップ(SF4−2))。登録データ検索部507は、登録データ情報(たとえば、登録データ情報記憶部505に格納されている)において、受信した登録データ要求に含まれている登録識別子に関連付けされた暗号化登録情報を特定する(ステップSF5)。登録データ検索部507は、特定した暗号化登録情報を、照合装置823における照合準備部816に送信する(ステップ(SF6−1))。
照合装置823における照合準備部816は、登録データ検索部507が送信した暗号化登録情報(c1[1],・・・,c1[n],cc1)を受信する(ステップ(SF6−2))。尚、cc1は、暗号化第1指標を表す。照合準備部816は、たとえば、擬似乱数を算出する手順に従い乱数Sを算出し、受信した暗号化登録情報における各要素が該乱数S乗された値を算出することによって、暗号文(c2[1],・・・,c2[n],cc2)を作成する。すなわち、照合準備部816は、各要素が該乱数乗された値を算出することによって、暗号化登録情報の基である登録データの各要素を乱数倍した値が暗号化された値、及び、該登録データに関する第1指標を乱数倍した値が暗号化された暗号化第1データcc2を算出する(ステップSF7)。
照合準備部816は、乱数Sを暗号化することによって算出される暗号化乱数c2[0]を作成する。照合準備部816は、暗号化登録情報の基である登録データの各要素が暗号化された値(c2[1],・・・,c2[n])と、作成した暗号化乱数c2[0]とを含む照合登録情報(c2[0],c2[1],・・・,c2[n])を作成する(ステップSF8)。照合準備部816は、作成した照合登録情報を照合要求装置812における暗号化第2データ部814に送信する(ステップ(SF9−1))。
照合準備部816は、算出した暗号化第1データcc2と、乱数Sが暗号化された暗号化乱数c2[0]とを含む暗号化第1データ情報(式56)を作成し、作成した暗号化第1データ情報を、照合装置823における暗号化第1集合部818に送信する。
たとえば、暗号化第1データ情報は、式56に示す態様によって表すことができる。
(c2[0],cc2)・・・(式56)。
照合要求装置812における暗号化第2データ部814は、対象データY、及び、照合準備部816が送信した照合登録情報(c2[0],c2[1],・・・,c2[n])を受信する(ステップ(SF9−2))。暗号化第2データ部814は、ステップS101乃至ステップS104に示した処理と同様の処理を実行することにより、暗号化第2データcc3を算出する(ステップSF10)。暗号化第2データ部814は、算出した暗号化第2データcc3を、照合装置823における検証データ生成部811に送信する(ステップ(SF11−1))。
次に、照合装置823における暗号化第1集合部818は、照合準備部816が送信した暗号化第1データ情報(c2[0],cc2)を受信する。暗号化第1集合部818は、受信した暗号化第1データ情報から、暗号化乱数c2[0]を読み取り、読み取った暗号化乱数c2[0]に関して、「−t」から「−1」に至る各整数値のべき乗を表す値を算出する。尚、tは、受理可能か否かを判定する基準を表す閾値tである。次に、暗号化第1集合部818は、たとえば、算出した値と、受信した暗号化第1データ情報に含まれている暗号化第1データcc2とを掛け算した値(式57、すなわち、暗号文)を算出する。
暗号化第1集合部818が暗号文を算出する処理は、たとえば、式57として表すことができる。
(cc2[0]×c2[0]{−1},cc2[1]×c2[1]{−1}),
(cc2[0]×c2[0]{−2},cc2[1]×c2[1]{−2}),
・・・,
(cc2[0]×c2[0]{−t},cc2[1]×c2[1]{−t})・・・(式57)。
uは、1からtまでの整数値のうち1つの整数値を表すとする。この場合に、式57における1つの値は、式58に等価である。
(cc2[0]×c2[0]{−u},cc2[1]×c2[1]{−u})
=Enc(pk,S×(x[1]{2}+・・・+x[n]{2})*Enc(pk,S){−u}
=Enc(pk,S×(x[1]{2}+・・・+x[n]{2})*Enc(pk,−S×u)
=Enc(pk,S×(x[1]{2}+・・・+x[n]{2}−S×u)・・・(式58)。
尚、説明の便宜上、式57に従い算出される値をff4[u]と表す。したがって、暗号化第1集合部818が算出する値は、式59に示す値である。
ff4[1](=Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×1)),
・・・,
ff4[t](=Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×t))・・・(式59)。
さらに、暗号化第1集合部818は、受信した暗号化第1データ情報に含まれている暗号化第1データcc2を、ff4[0]に設定する。
暗号化第1集合部818は、算出した値(すなわち、ff4[0]乃至ff4[t])を含む暗号化第1集合を作成する(ステップSF12)。たとえば、暗号化第1集合部818が作成する暗号化第1集合は、式60に示すような態様にて表すことができる。したがって、
(ff4[0],・・・,ff4[t])・・・(式60)。
暗号化第1集合部818は、作成した暗号化第1集合を、照合装置823における暗号化第1マスク部819に送信する。
照合装置823における暗号化第1マスク部819は、暗号化第1集合部818が送信した暗号化第1集合(たとえば、式60)を受信する。次に、暗号化第1マスク部819は、たとえば、擬似乱数を算出する手順に従い、(t+1)個の乱数R[0]、・・・、R[t]を算出する。この場合に、暗号化第1マスク部819は、算出した乱数を含むマスク値集合(R[0],・・・,R[t])を作成してもよい。
暗号化第1マスク部819は、算出した乱数R[i](ただし、0≦i≦t)を、公開鍵pkを用いて暗号化することにより、乱数R[i]が暗号化されたEnc(pk,R[i])を作成する。暗号化第1マスク部819は、受信した暗号化第1集合に含まれている暗号文ff4[i]と、算出した暗号文Enc(pk,R[i])とを掛け算した値(式61)を算出する。
Enc(pk,R[i])*ff4[i]・・・(式61)。
尚、式61は式62に等価である。
Enc(pk,R[i])*ff4[i]
=Enc(pk,R[i])*Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×i)
=Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×i+R[i])・・・(式62)。
以降、式62に従い算出された値(暗号文)をff5[i]と表す。
より具体的に、暗号化第1マスク部819は、1≦i≦tなるiに関して、式63に従い、値を算出する。すなわち、
Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×0+R[0]),
・・・,
Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×t+R[t])・・・(式63)。
暗号化第2マスク部は、算出した値(式63)を含む暗号化第1マスクを作成する(ステップSF13)。
加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の例を用いて、ステップSF13における処理について説明する。
この例の場合に、暗号化第1マスク部819は、暗号化第1集合部818が送信した暗号化第1集合を受信する。暗号化第1マスク部819は、たとえば、擬似乱数を算出する手順に従い、(t+1)個の乱数R[0]、・・・、R[t]を算出する。暗号化第1マスク部819は、算出した乱数R[i](ただし、0≦i≦t)を、公開鍵pkを用いて暗号化することにより、乱数R[i]が暗号化されたEnc(pk,R[i])を作成する。すなわち、暗号化第1マスク部819は、公開鍵pkから、生成元gと、値yとを読み取り、所定の集合Zpから第8値ru[i]を選ぶ。次に、暗号化第1マスク部819は、式64に従い、乱数R[i]が暗号化されたEnc(pk,R[i])を作成する、
(g{ru[i]},y{ru[i]}×gR[i])・・・(式64)。
次に、暗号化第1マスク部819は、受信した暗号化第1集合に含まれている暗号文ff4[i]と、算出した暗号文Enc(pk,R[i])とを掛け算した値(式65)を算出する。ステップSF13における処理は、受信した暗号化第1集合に含まれている暗号文ff4[i]と、算出した暗号文Enc(pk,R[i])とを掛け算した値(式65)を算出する処理とも表すことができる。
ff4[0]*Enc(pk,R[0]),
・・・,
ff4[t]*Enc(pk,R[t])・・・(式65)。
尚、式65に示されたff4[i]*Enc(pk,R[i])は、式66に示す式と等価である。
=Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×i)*Enc(pk,R[i])
=Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×i+R[i])・・・(式66)。
したがって、この場合に、式65に示された値の集合は、式67に示された値の集合と等価である。
ff4[0]*Enc(pk,R[0])
=Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×0+R[0])
=ff5[0],
・・・,
ff4[t]*Enc(pk,R[t])
=Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×t+R[t])
=ff5[t]・・・(式67)。
暗号化第1マスク部819は、式65に従い算出した値を含む暗号化第1マスク(ff5[0],・・・,ff5[t])を作成し(ステップSF13)、作成した暗号化第1マスクを、照合装置823における検証データ生成部811に送信する。暗号化第1マスク部819は、マスク値集合(R[0],・・・,R[t])を、照合装置823における検証マスク部820に送信する。
次に、照合装置823における検証マスク部820は、暗号化第1マスク部819が送信したマスク値集合(R[0],・・・,R[t])を受信する。検証マスク部820は、受信したマスク値集合から要素の値を読み取り、公開鍵に含まれる生成元gを「読み取った値」乗した値を算出する。ただし、0≦i≦tである。検証マスク部820は、算出した暗号文を入力として、ハッシュ関数を適用することにより、ハッシュ値H(gR[i])(=h1[i])を算出する。検証マスク部820は、算出したハッシュ値を含む検証マスク(h1[0],・・・,h1[t])を作成し(ステップSF14)、作成した検証マスクを、照合装置823における検証データ生成部811に送信する。
次に、照合装置823における照合データ部821は、検証マスク部820が送信した検証マスク(h1[0],・・・,h1[t])、及び、暗号化第1マスク部819が送信した暗号化第1マスク(ff5[0],・・・,ff5[t])を受信する。照合データ部821は、0からtに至る値(以降、[0,t]と表す)に関する順列πをランダムに作成する。ただし、tは、閾値を表す。照合データ部821は、作成した順列πに従い、受信した暗号化第1マスクに含まれている要素の順序を並び替え、作成した該順列πに従い、受信した検証マスクに含まれている要素の順序を並び替える。
説明の便宜上、作成した該順列πに従い、暗号化第1マスクに含まれている要素の順序を並び替える処理を、ff5[π(i)]と表す。作成した該順列πに従い、受信した検証マスクに含まれている要素の順序を並び替える処理を、h1[π(i)]と表す。また、ff5[π(i)]をff6[i]と表す。h1[π(i)]を、h2[i]と表す。
次に、照合データ部821は、算出したff6[i]と、算出したh2[i]とが関連付けされた情報(ff6[i],h2[i])を作成し、さらに、区間[0,t]に含まれているiに関して、該情報を含む照合データを作成する(ステップSF15)。照合データ部821が作成する照合データは、たとえば、式68に示された態様を用いて表すことができる。
((ff6[0],h2[0]),・・・,(ff6[t],h2[t]))・・・(式68)。
照合データ部821は、作成した照合データ(たとえば、式68に示された値)を、検証装置822における検証データ生成部811に送信する(ステップ(SF16−1))。
次に、検証装置822における検証データ生成部811は、照合データ部821が送信した照合データを受信し(ステップ(SF16−2))、及び、暗号化第2データ部814が送信した暗号化第2データcc3を受信する(ステップ(SF11−2))。検証データ生成部811は、受信した照合データに含まれている要素ff6[i](ただし、0≦i≦t)を読み取り、読み取ったff6[i]と、受信した暗号化第2データcc3とが掛け算された値(式69)を算出する。
Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−S×π(i)+R[π(i)])*Enc(pk,−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2}))・・・(式69)。
検証データ生成部811が算出する値(式69)は、以下の式70と等価である。
Enc(pk,S×(x[1]{2}+・・・+x[n]{2})−2×S×(x[1]×y[1]+・・・+x[n]×y[n])+S×(y[1]{2}+・・・+y[n]{2})−S×π(i)+R[π(i)])
=Enc(pk,S×((x[1]{2}+・・・+x[n]{2})−2×(x[1]×y[1]+・・・+x[n]×y[n])+(y[1]{2}+・・・+y[n]{2}))−S×π(i)+R[π(i)])
=Enc(pk,S×((x[1]−y[1]){2}+・・・+(x[n]−y[n]){2})−S×π(i)+R[π(i)])
=Enc(pk,S×D(X,Y)−S×π(i)+R[π(i)])・・・(式70)。
したがって、式70が式41と同じであるので、検証データ生成部811は、cc7[i]を算出する。
検証データ生成部811は、算出したcc7[i]と、受信した照合データに含まれているh2[i]とが関連付けされた情報(cc7[i],h2[i])を作成する。検証データ生成部811は、0≦i≦tなるiに対して、作成した情報を含む検証データを作成する(ステップSF17)。たとえば、検証データ生成部811が作成する検証データは、式43に示す態様にて表すことができる。
たとえば、加法に関して準同型性を有する公開鍵暗号の一つであるModified−Elgamal暗号の例を用いながら、ステップSF17における処理について説明する。
この場合に、検証データ生成部811は、受信した照合データに含まれているff6[i](ただし、0≦i≦t)を読み取り、読み取ったff6[i]と、受信した暗号化第2データcc3とが掛け算された値(すなわち、cc3*ff6[i])を算出する。したがって、0≦i≦tなるiに対して、検証データ生成部811は、式71に示す値を算出する。
cc3*ff6[0](この値は、Enc(pk,S×D(X,y)−S×π(0)+R[π(0)])と等価である),
・・・,
cc3*ff6[t](この値は、Enc(pk,S×D(X,y)−S×π(t)+R[π(t)])と等価である)・・・(式71)。
検証データ生成部811は、算出したcc7[i]と、受信した照合データに含まれているh2[i]とが関連付けされた情報(cc7[i],h2[i])を作成する。検証データ生成部811は、0≦i≦tなるiに対して、作成した情報を含む検証データを作成する。検証データ生成部811は、作成した検証データ(たとえば、式43)を、検証装置822における検証データ復号部510に送信する。
以降、ステップSC18乃至ステップSC22に示された処理と同様の処理が実行されるので、ステップSF18乃至ステップSF22に関する説明を省略する。
次に、第6の実施形態に係る照合システム801に関する効果について説明する。
第6の実施形態に係る照合システム801によれば、照合対象である情報と、参照すべき情報との、より安全な照合処理が可能になる指標を算出することができる。さらに、第6の実施形態に係る照合システム801によれば、照合対象である情報と、参照すべき情報との、より一層安全な照合処理が可能である。この理由は、第6の実施形態に係る照合システム801が、第3の実施形態に係る照合システム401が有する構成を含むからである。
さらに、第6の実施形態に係る照合システム801によれば、登録データが暗号化された暗号文を含む暗号化登録情報、または、各装置間において送受信される情報が漏洩しても、照合処理に際して、登録データとの距離が閾値以下である対象データを用いなければ受理されることがないという効果も奏する。さらに、第6の実施形態に係る照合システム801によれば、たとえ、照合要求装置812が対象データを繰り返し受信したとしても、該対象データと、登録データとの距離を秘匿することが可能であるという効果も奏する。
この理由は、第6の実施形態に係る照合システム801が有する構成が、第3の実施形態に係る照合システム401が有する構成を含むからである。
さらに、第6の実施形態に係る照合システム801によれば、該照合システム801における処理負荷が少ないという効果を奏する。
この理由は、暗号化登録情報に含まれている情報量が、少ないからである。すなわち、暗号化登録情報は、登録データがn個の要素を含む場合に、該登録データに関する暗号化登録情報は、(n+1)個の要素が暗号化された暗号文であるからである。
尚、本実施形態においては、ユークリッド距離の例を挙げたが、他の距離(たとえば、ハミング距離、マハラノビス距離等)にも容易に適用可能である。
<第7の実施形態>
図20、及び、図21を参照しながら、本発明の第7の実施形態に係る指標算出システム901が有する構成について詳細に説明する。図20は、本発明の第7の実施形態に係る指標算出システム901が有する構成を示すブロック図である。図21は、第7の実施形態に係る指標算出システム901における処理の流れを示すフローチャートである。
第7の実施形態に係る指標算出システム901は、第1指標算出部902と、第2指標算出部903とを有する。指標算出システム901は、さらに、記憶部904を有してもよい。
第1指標算出部902、及び、記憶部904は、たとえば、通信ネットワークを介して、相互に通信接続することができる。第2指標算出部903、及び、記憶部904は、たとえば、通信ネットワークを介して、相互に通信接続することができる。
第1指標算出部902、及び、第2指標算出部903は、通信ネットワークを介して、相互に通信接続可能であってもよい。
第1指標算出部902は、たとえば、外部等の装置から、複数の数値を含む第1数値列を受信し、受信した第1数値列に関する大きさを表すサイズ(説明の便宜上、「第1サイズ」と表す)を算出する(ステップS501)。第1指標算出部902は、受信した第1数値列に含まれている数値を、加法に関して準同型性を有する暗号方式に従い算出された暗号鍵を用いて暗号化することによって、第1数値列が暗号化された暗号化第1数値列を作成する(ステップS502)。第1指標算出部902は、算出した第1サイズを、該暗号鍵を用いて暗号化することにより、第1サイズが暗号化された暗号化第1指標を算出する(ステップS503)。第1指標算出部902は、作成した該暗号化第1数値列を記憶部904に格納する(ステップS504)。
第2指標算出部903は、第1指標算出部902が作成した該暗号化第1数値列を記憶部904から読み取る(ステップS505)。第2指標算出部903は、たとえば、外部等の装置から、複数の数値を含む第2数値列を受信し、受信した第2数値列に関する大きさを表すサイズ(説明の便宜上、「第2サイズ」と表す)を算出する(ステップS506)。第2指標算出部903は、加法に関して準同型性を有する暗号方式に従い、読み取った暗号化第1数値列と、受信した第2数値列とに基づいて演算する(ステップS507)。言い換えれば、第2指標算出部903は、加法に関して準同型性を有する暗号方式に従い、読み取った暗号化第1数値列に、受信した第2数値列に含まれている数値に基づく演算を適用することによって、値(以降、「算出値」と表す)を算出する。第2指標算出部903は、該算出値と、算出した第2サイズとに基づき、加法準同型性を利用して「第1数値列及び第2数値列が類似している程度を表す値から第1サイズを引き算した値(第2指標)」の暗号文を表す暗号化第2指標を算出する(ステップS508)。
本実施形態において、ステップS501及びステップS506にて算出されるサイズは、たとえば、式11等の式に従い算出される大きさ(長さ)を表す。また、ステップS507にて算出される算出値は、たとえば、式21等に示すように、暗号化第1数値列に含まれている第I(ただし、Iは、要素番号を表す)要素を、「−2×第2数値列に含まれる第I要素」乗することにより算出される値である。この場合に、第2指標算出部903が算出する暗号化第2指標は、「第1数値列及び第2数値列が類似している程度を表す値から第1サイズを引き算した値」が暗号化された暗号文を表す。この結果、第1指標算出部902が算出する暗号化第1指標と、第2指標算出部903が算出する暗号化第2指標と掛け算した値は、第1数値列と、第2数値列との間が類似している程度を表す類似度(たとえば、距離)が暗号化された値と等しい。
たとえば、第1指標算出部902は、本発明の各実施形態に示した登録データ装置等が有する機能を用いて実現することができる。また、第2指標算出部903は、本発明の各実施形態に示した暗号化第2データ部等が有する機能を用いて実現することができる。
次に、第7の実施形態に係る指標算出システム901が奏する効果について説明する。
第7の実施形態に係る指標算出システム901によれば、照合対象である情報と、参照すべき情報との、より安全な照合処理を可能にする指標を算出することができる。
このような効果を奏する理由について説明する。第1指標算出部902、及び、第2指標算出部903が、たとえば、通信ネットワークを介して、上述したような処理における通信を実行する場合に、暗号化第1指標と、暗号化第2指標とは、複数の異なる主体にて、別々に算出される。したがって、この場合に、本実施形態に係る指標算出システム901によれば、第1数値列と、第2数値列との間の類似度を算出可能な、暗号化第1指標及び暗号化第2指標は、複数の異なる主体にて算出される。この結果、暗号化第1指標及び暗号化第2指標のうち、少なくとも一方が傍受されたとしても、第1数値列、第2数値列、または、類似度を復元することは不可能であるので、該暗号化第1指標及び暗号化第2指標に基づく照合処理において、情報が漏洩するリスクは軽減する。
すなわち、第7の実施形態に係る指標算出システム901によれば、照合対象である情報と、参照すべき情報とのより安全な照合処理を可能になる指標を算出することができる。
(ハードウェア構成例)
上述した本発明の各実施形態における照合システム、または、指標算出システムを、1つの計算処理装置(情報処理装置、コンピュータ)を用いて実現するハードウェア資源の構成例について説明する。但し、係る指標算出システム(照合システム)は、物理的または機能的に少なくとも2つの計算処理装置を用いて実現してもよい。また、係る指標算出システム(照合システム)は、専用の装置として実現してもよい。
図22は、第1の実施形態乃至第6の実施形態に係る照合システム、または、第7の実施形態に係る指標算出システムを実現可能な計算処理装置のハードウェア構成例を概略的に示す図である。計算処理装置20は、中央処理演算装置(Central_Processing_Unit、以降「CPU」と表す)21、メモリ22、ディスク23、及び、不揮発性記録媒体24を有する。計算処理装置20は、通信インターフェース(以降、「通信IF」と表す)27を有する。計算処理装置20は、さらに、入力装置25、及び、出力装置26を有してもよい。計算処理装置20は、通信IF27を介して、他の計算処理装置、及び、通信装置と情報を送受信することができる。
不揮発性記録媒体24は、コンピュータが読み取り可能な、たとえば、コンパクトディスク(Compact_Disc)、デジタルバーサタイルディスク(Digital_Versatile_Disc)である。また、不揮発性記録媒体24は、ユニバーサルシリアルバスメモリ(USBメモリ)、ソリッドステートドライブ(Solid_State_Drive)等であってもよい。不揮発性記録媒体24は、電源を供給しなくても係るプログラムを保持し、持ち運びを可能にする。不揮発性記録媒体24は、上述した媒体に限定されない。また、不揮発性記録媒体24の代わりに、通信IF27を介して、通信ネットワークを介して係るプログラムを持ち運びしてもよい。
すなわち、CPU21は、ディスク23に記憶されているソフトウェア・プログラム(コンピュータ・プログラム:以下、単に「プログラム」と称する)を、実行する際にメモリ22にコピーし、演算処理を実行する。CPU21は、プログラム実行に必要なデータをメモリ22から読み取る。外部への出力が必要な場合には、CPU21は、出力装置26に出力結果を出力する。外部からプログラムを入力する場合、CPU21は、入力装置25からプログラムを読み取る。CPU21は、上述した図1、図6、図8、図10、図14、図18、または、図20に示す各部が表す機能(処理)に対応するところのメモリ22にある照合プログラム(図2、図3、図4A、図4B、図5、図7A、図7B、図9A、図9B、図11,図12、図13A、図13B、図15、図16、図17A、図17B、図19A、または、図19B)、または、指標算出プログラム(図21)を解釈し実行する。CPU21は、上述した本発明の各実施形態において説明した処理を順次実行する。
すなわち、このような場合、本発明は、係る照合プログラム、または、係る指標算出プログラムによっても成し得ると捉えることができる。さらに、係る照合プログラム、または、係る指標算出プログラムが記録されたコンピュータが読み取り可能な不揮発性の記録媒体によっても、本発明は成し得ると捉えることができる。
以上、上述した実施形態を模範的な例として本発明を説明した。しかし、本発明は、上述した実施形態には限定されない。すなわち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
尚、上述した各実施形態の一部又は全部は、以下の付記のようにも記載されうる。しかし、上述した各実施形態により例示的に説明した本発明は、以下には限られない。すなわち、
(付記1)
暗号鍵、及び、第1数値列に含まれる数値に基づいて、前記第1数値列に含まれる数値が前記暗号鍵を用いて暗号化された暗号化数値を含む暗号化第1数値列を作成し、作成した前記暗号化第1数値列を記憶手段に格納し、前記第1数値列の大きさを表す第1サイズが前記暗号鍵を用いて暗号化された値を表す暗号化第1指標を算出する第1指標算出手段と、
前記記憶手段に格納されている前記暗号化第1数値列に含まれている前記暗号化数値と、第2数値列とに基づき、前記第1数値列及び前記第2数値列が類似している程度を表す値から前記第1サイズを引き算した値を表す第2指標が、前記暗号鍵を用いて暗号化された値を表す暗号化第2指標を算出する第2指標算出手段と
を備える指標算出システム。
(付記2)
暗号鍵、及び、第1数値列に含まれる数値に基づいて、前記第1数値列に含まれる数値が第1乱数に基づいて変換された値が、前記暗号鍵を用いて暗号化された暗号化数値を含む暗号化第1数値列を作成し、前記第1乱数が暗号化された暗号化乱数を算出し、前記第1数値列の大きさを表す第1サイズが前記第1乱数に基づいて変換された値である第1データが、前記暗号鍵を用いて暗号化された値を表す暗号化第1データを算出する第1算出手段と、
第2数値列、前記暗号化乱数、及び、前記暗号化第1数値列に基づいて、前記第1数値列及び前記第2数値列が類似している程度を表す値及び前記第1サイズから算出される第2指標が第1乱数に基づいて変換された値である第2データが暗号化された暗号文を表す暗号化第2データを算出する暗号化第2データ手段と
を備える指標算出システム。
(付記3)
付記2に記載の指標算出システムであって、
複数の平文の演算結果が暗号化された暗号文を、各前記平文が暗号化された暗号文に基づいて算出可能な準同型性に従い、閾値に基づく数値の範囲に含まれている第1値と、前記暗号化乱数と、前記暗号化第1データとに基づき、前記第1値が前記第1乱数に基づいて変換された値と、前記第1データとの前記準同型性に従う演算結果である第2値が前記暗号鍵を用いて暗号化された暗号文を算出し、算出した前記第2値が暗号化された前記暗号文を含む暗号化集合を作成する暗号化集合手段
をさらに備え、
前記第2指標が、前記第1数値列及び前記第2数値列が類似している程度を表す値と、前記第1サイズとに基づき、前記準同型性に従い算出される演算結果を表す
指標算出システム。
(付記4)
付記2に記載の指標算出システムであって、
閾値に基づく数値の範囲に含まれている第1値に関して、前記暗号化乱数と、前記暗号化第2データとに基づき、前記準同型性に従い、前記第1値が前記第1乱数に基づいて変換された値と、前記第2データとの前記準同型性に従う演算結果である第2値が前記暗号鍵を用いて暗号化された暗号文を算出し、算出した前記第2値が暗号化された前記暗号文を含む暗号化集合を作成する暗号化集合手段
をさらに備え、
前記第2指標が、前記第1数値列及び前記第2数値列が類似している程度を表す値と、前記第1サイズとに基づき、前記準同型性に従い算出される演算結果を表す
指標算出システム。
(付記5)
第2乱数と前記第2値とに基づき、前記準同型性に従い算出される演算結果を表す第3値の暗号文を、前記第2乱数と、前記暗号化集合に含まれている前記暗号文とに基づき、前記準同型性に従い算出し、算出した前記暗号文を含む暗号化参照情報と、前記第2乱数を含む乱数情報とを作成する暗号化参照情報手段
をさらに備える付記3または付記4に記載の指標算出システム。
(付記6)
前記第3値と、前記第1データまたは前記第2データとに基づき、前記準同型性に従い算出される演算結果を表す第4値の暗号文を、前記暗号化参照情報に含まれている前記第3値に関する前記暗号文と、前記暗号化第1データとに基づき、前記準同型性に従い算出し、算出した前記第4値の暗号文を含む検証データを作成する検証データ生成手段
をさらに備える付記5に記載の指標算出システム。
(付記7)
前記乱数情報に含まれている前記第2乱数に、所定の関数を適用することによって値を算出し、算出した値を含む検証情報を作成する検証情報手段
をさらに備える付記6に記載の指標算出システム。
(付記8)
前記検証情報手段は、ある並び替え手順に従って、前記検証データに含まている前記第4値の暗号文を並び替え、前記ある並び替え手順に従って、前記検証情報に含まれている前記値を並び替える
付記7に記載の指標算出システム。
(付記9)
付記7または付記8に記載の指標算出システムと、
前記検証データに含まれている前記第4値の暗号文を復号し、算出された値に前記所定の関数を適用することによって算出される値と、前記検証情報に含まれている値とが一致するか否かに基づいて、前記第1数値列と前記第2数値列とが類似または一致しているか否かを判定する判定手段と
を備える照合システム。
(付記10)
暗号鍵、及び、第1数値列に含まれる数値に基づいて、前記第1数値列に含まれる数値が前記暗号鍵を用いて暗号化された暗号化数値を含む暗号化第1数値列を作成し、作成した前記暗号化第1数値列を記憶手段に格納し、前記第1数値列の大きさを表す第1サイズが前記暗号鍵を用いて暗号化された値を表す暗号化第1指標を算出し、前記記憶手段に格納されている前記暗号化第1数値列に含まれている前記暗号化数値と、第2数値列とに基づき、前記第1数値列及び前記第2数値列が類似している程度を表す値から前記第1サイズを引き算した値を表す第2指標が、前記暗号鍵を用いて暗号化された値を表す暗号化第2指標を算出する指標算出方法。
(付記11)
暗号鍵、及び、第1数値列に含まれる数値に基づいて、前記第1数値列に含まれる数値が前記暗号鍵を用いて暗号化された暗号化数値を含む暗号化第1数値列を作成し、作成した前記暗号化第1数値列を記憶手段に格納し、前記第1数値列の大きさを表す第1サイズが前記暗号鍵を用いて暗号化された値を表す暗号化第1指標を算出する第1指標算出機能と、
前記記憶手段に格納されている前記暗号化第1数値列に含まれている前記暗号化数値と、第2数値列とに基づき、前記第1数値列及び前記第2数値列が類似している程度を表す値から前記第1サイズを引き算した値を表す第2指標が、前記暗号鍵を用いて暗号化された値を表す暗号化第2指標を算出する第2指標算出機能と
をコンピュータに実現させる指標算出プログラム。