【文献】
Toshiyuki Isshiki et al.,New security definitions for biometric authentication with template protection: Toward covering more,Proceedings of the 12th International Conference of the Biometrics Special Interest Group (BIOSIG 2013),2003年 9月
(58)【調査した分野】(Int.Cl.,DB名)
入力データを暗号化して記憶装置に登録される第1の暗号文と、照合対象の入力データを暗号化した第2の暗号文とに対して、平文のハミング距離を用いて照合を検証するための第1、第2の補助データをそれぞれ生成する手段と、
前記第2の補助データの少なくとも一部を一方向性変換し、前記第1の暗号文と前記第2の暗号文との差分と、前記第1の補助データとに基づき生成される途中データを一方向性変換し、前記途中データを一方向性変換した結果と、一方向性変換した前記第2の補助データとを用いて、前記第1の暗号文と前記第2の暗号文の前記差分に対応する平文のハミング距離が予め定められた所定値以下であるか否か判定する手段と、
を含む、暗号文照合システム。
前記第1、第2の暗号化部が、前記鍵と、前記入力データの平文に対して、前記鍵を、線形性を有する誤り訂正符号で符号化し、誤り訂正符号化結果である符号語と、前記平文とのベクトル上の和を計算した結果を、前記暗号文として出力する、請求項3又は4記載の暗号文照合システム。
【発明を実施するための形態】
【0024】
本発明の実施形態について説明する。はじめに本発明の基本概念について説明する。本発明の1つの側面によれば、照合対象の入力データを暗号化し、該入力データの照合を行うための登録データが暗号化されており、暗号化した入力データと登録暗号データの照合(一致)の判定(検証)の指標(曖昧さの指標)として平文のハミング距離を用いる。このように、登録暗号データだけでなく、照合のための入力データも秘匿強度の高い暗号方式により暗号化される。また、同じ入力データを用いて複数回の照合を行った場合でも、照合を行うたびに、当該入力データの秘匿に用いる鍵情報を変える。このため、照合を多数回行った場合でも、平文に関する情報が漏洩する可能性を低く抑えることができる。この結果、本発明によれば、攻撃耐性を高め、セキュリティの向上に寄与する。
【0025】
図6を参照すると、本発明の1つの側面に係る暗号文照合システム10(装置)は、暗号文から補助データ(暗号文に対して、平文のハミング距離を用いて照合を検証するための補助データ)を生成する補助データ生成手段(ユニット)(14)と、暗号文と補助データから、暗号化した入力データと登録暗号データの照合の判定を行う照合判定手段(ユニット)(15)を少なくとも備えている。
【0026】
補助データ生成手段(ユニット)(14)は、入力データを暗号化手段(ユニット)(11)で暗号化して記憶装置(13)に登録される暗号文1と、照合対象の入力データを暗号化手段(ユニット)(12)で暗号化した暗号文2に対して、平文のハミング距離を用いて照合を検証する(例えば、前記暗号文1と前記暗号文2との間の平文のハミング距離が、予め定められた所定値以下であることを検証する)ために必要とされる補助データ1と補助データ2をそれぞれ生成する。
【0027】
補助データ2の少なくとも一部を前記一方向性変換手段(14h)で一方向性変換する。また、前記暗号文1と前記暗号文2との差分と、前記補助データ1とに基づき生成される途中データを前記一方向性変換手段(15h)で一方向性変換する。
【0028】
前記照合判定手段(ユニット)(15)は、前記途中データを前記一方向性変換手段(15h)で一方向性変換した結果と、前記一方向性変換手段(14h)で少なくとも一部を一方向性変換した前記補助データ2と、を用いて、前記暗号文1と前記暗号文2との前記差分に対応する平文のハミング距離が前記予め定められた所定値以下であるか否かを判定する。暗号文照合システム10(装置)の各手段は、暗号文照合システム10(装置)を構成するコンピュータ上で実行されるプログラムでその処理・機能を実現するようにしてもよい。
【0029】
本発明によれば、前記入力データの平文に対して暗号化する鍵を、線形性を有する誤り訂正符号で符号化した符号語と前記平文との排他的論理和を、前記暗号文とする。前記記憶装置に登録された前記暗号文と前記照合対象の入力データの前記暗号文に関する前記第1及び第2の補助データを、それぞれ、前記鍵と定数との内積と、前記暗号文、乱数に対して施す暗号学的ハッシュ関数との排他的論理和に基づき算出するようにしてもよい。暗号学的ハッシュ関数は、ハッシュ値hが与えられたとき、h=hash(m)となる元の文字列mを求めることが困難であるという原像計算困難性という特性(一方向性圧縮関数)を持つ。
【0030】
また、本発明によれば、上記非特許文献1では実現が不可能であった、暗号化されたデータ同士での照合処理を可能とするために、照合結果を判定するためのハッシュ関数に関して、二つのデータのハッシュ値からそれらのデータの和のハッシュ値を計算可能とすることを保証している。
【0031】
上記のとおり、本発明によれば、暗号文同士の照合処理時に、照合を行うユーザが送出するデータについても、例えば照合処理の操作等を行うデータベース管理者等に知られることのない暗号化鍵によって暗号化される。このため、照合処理を複数回行った場合や、照合処理の操作等を行うデータベース管理者等に悪意がある場合でも、照合処理時に、元の平文に関する情報の漏洩を防止することができる。以下、例示的ないくつかの実施形態について説明する。
【0032】
<実施形態1>
図1を参照すると、本発明の実施形態1のシステムは、登録データ生成装置100、記憶装置200、データ秘匿装置300、指定データ照合装置400を備えている。なお、これらの各装置は、1つのサイト等にまとめて1つの装置とした構成としてもよいし、あるいは分散配置し通信手段を介して相互接続する構成としてもよい。
【0033】
登録データ生成装置100は、暗号化部101と、鍵生成部102と、登録補助データ生成部103とを備えている。
【0034】
暗号化部101は、
・秘匿の対象となる入力データと、
・入力データの秘匿を行う鍵と、
を入力とし、
該入力データを、鍵を用いて秘匿処理を施した暗号データを出力する。暗号化部101から出力された暗号データは、登録補助データ生成部103に入力されるとともに、記憶装置200(暗号文記憶部202)に記憶される。
【0035】
鍵生成部102は、暗号化部101が入力データの秘匿を行うための鍵を生成し、生成した鍵を暗号化部101と登録補助データ生成部103に出力する。
【0036】
登録補助データ生成部103は、
・入力データ(秘匿の対象となる入力データ)と、
・暗号化部101が出力した暗号データと、
・鍵生成部102が出力した鍵と、
を入力とする。
登録補助データ生成部103は、データ秘匿装置300の暗号化部301が出力する暗号データに対応する入力データ(照合対象の入力データ)が、暗号化部101に入力された入力データと、ハミング距離が予め定められた所定値以下(一定数以内)であることを判断するための補助データ(登録補助データ)を出力する。
【0037】
ここで、登録データ生成装置100の暗号化部101によって出力される暗号文は、
入力データm1を鍵k1で暗号化した暗号文をc1、
入力データm2を鍵k2で暗号化した暗号文をc2、
とした時、c1とc2の和c1+c2は、入力データm1+m2を鍵k1+k2で暗号化した暗号文となる。
【0038】
記憶装置200は、識別子管理部201と、暗号文記憶部202と、補助データ記憶部203とを備えている。
【0039】
暗号文記憶部202と、補助データ記憶部203は、登録データ生成装置100が出力した暗号データ、及び、登録補助データをそれぞれ受け取り記憶する。暗号文記憶部202と補助データ記憶部203はデータベースとして構成してもよい(あるいは、ファイル構成であってもよい)。
【0040】
暗号文記憶部202と、補助データ記憶部203は、識別子管理部201の制御のもと、暗号データの照合時に、指定データ照合装置400から入力される識別子に対応する暗号データ及び補助データを指定データ照合装置400に出力する。
【0041】
記憶装置200の識別子管理部201は、登録データ生成装置100から入力される暗号データ、及び補助データを一意に特定する識別子を管理する。
【0042】
識別子管理部201は、指定データ照合装置400から識別子が入力された際に、入力された識別子に対応する暗号データ、及び補助データをそれぞれ出力することを指示する命令を、暗号文記憶部202と、補助データ記憶部203に対して出力する。
【0043】
暗号文記憶部202は、登録データ生成装置100の暗号化部101が出力した暗号データを記憶し、識別子管理部201から暗号データ出力の命令が入力された際には、対応する暗号データを出力する。
【0044】
補助データ記憶部203は、登録データ生成装置100の登録補助データ生成部103が出力した補助データを記憶し、識別子管理部201から暗号データ出力の命令が入力された際に、対応する補助データを出力する。
【0045】
データ秘匿装置300は、暗号化部301と、鍵生成部302と、補助データ生成部303と、一方向性変換部304を備えている。
【0046】
暗号化部301は、
・秘匿の対象となる入力データ(照合対象の入力データ)と、
・該入力データの秘匿を行う鍵と、
を入力とし、
該入力データに対して鍵を用いて秘匿処理を施した暗号データを出力する。暗号化部301から出力された暗号データは、補助データ生成部303と、指定データ照合装置400(暗号文減算部402)に入力される。
【0047】
鍵生成部302は、暗号化部101が入力データの秘匿を行うための鍵を生成し、生成した鍵を、暗号化部301と、補助データ生成部303に出力する。
【0048】
補助データ生成部303は、
・該入力データ(照合対象の入力データ)と、
・暗号化部301が出力した暗号データと、
・鍵生成部302が暗号化部301に対して出力した鍵と、
を入力とする。補助データ生成部303は、登録データ生成装置100の暗号化部101が出力する暗号データ(登録暗号データ)に対応する入力データ(平文)と、暗号化部301に入力された照合対象の入力データ(平文)との間のハミング距離が予め定められた所定値以下(一定数以内)であることを判断するための補助データを出力する。補助データ生成部303から出力される補助データは、指定データ照合装置400(一致判定部403)に入力される。
【0049】
一方向性変換部304は、補助データ生成部303が生成したデータ(補助データ)の一部又は全部を一方向性変換した結果を出力する。この補助データは、登録暗号データに対応する入力データ(平文)と、暗号化部301に入力された照合対象の入力データ(平文)との間のハミング距離が、所定値以下(あるいは所定値未満)であれば、照合(一致)すると判定し、前記所定値を超えた(あるいは所定値以上の)場合には、照合しない(不一致)と判定するために用いられる補助情報である。一方向性変換部304で一方向性変換した結果は、補助データ生成部303に入力される。
【0050】
データ秘匿装置300の暗号化部301によって出力される暗号文は、暗号化部101と同じ方法によって計算される。すなわち、
入力データm1を鍵k1で暗号化した暗号文をc1、
入力データm2を鍵k2で暗号化した暗号文をc2、
とした時、c1とc2の和c1+c2は、入力データm1+m2を鍵k1+k2で暗号化した暗号文となる。
【0051】
指定データ照合装置400は、識別子保持部401と、暗号文減算部402と、一致判定部403と、制御部404と、一方向性変換部405とを備えている。
【0052】
識別子保持部401は、識別子を入力として、記憶装置200に入力された識別子に対応する暗号文データと補助データを出力するように、記憶装置200の識別子管理部201に対して、命令を出力する。
【0053】
暗号文減算部402は、
・記憶装置200の暗号文記憶部202に格納された暗号データ(登録暗号データ)の一つと、
・データ秘匿装置300の暗号化部301から出力される暗号データと
を入力とし、入力された二つの暗号データc1とc2の差c1-c2を出力する。
【0054】
このとき、暗号化部101、及び暗号化部301の性質により、
c1を入力データm1を鍵k1で暗号化した暗号文、
c2を入力データm2を鍵k2で暗号化した暗号文、
とした時、二つの暗号文c1、c2の差c1-c2は、入力データm1-m2を、鍵k1-k2で暗号化した暗号文となっている。
【0055】
一致判定部403は、
・記憶装置200の補助データ記憶部203に格納された補助データと、
・データ秘匿装置300の補助データ生成部303から出力される補助データと、
・暗号文減算部402から出力される二つの暗号データの差分と
を入力とする。
【0056】
一致判定部403は、
・記憶装置200の補助データ記憶部203に格納された補助データと、
・暗号文減算部402から出力される二つの暗号データの差分と、
を少なくとも含むデータから生成される途中データを、一方向性変換部405に送付する。
【0057】
一方向性変換部405は、該途中データを一方向性変換したデータを一致判定部403に返す。
【0058】
一致判定部403は、
・一方向性変換部405が途中データに応じて生成した一方向性変換後データと、
・データ秘匿装置300の補助データ生成部303から出力される、一方向性変換された補助データの一つと
から、暗号文減算部402に入力された二つの暗号データc1とc2にそれぞれ対応する平文m1とm2のハミング距離が予め定められた所定値以下であるか否かを判定結果として出力する。
【0059】
制御部404は、データ秘匿装置300と、指定データ照合装置400とがデータをやり取りする際の通信等を制御する。
【0060】
次に、実施形態1の動作について
図2の流れ図を参照して説明する。実施形態1の暗号文照合システムの動作は、データ登録フェイズと、暗号文照合フェイズの二つのフェイズに大別される。
【0061】
データ登録フェイズは、登録データ生成装置100に入力データを入力し、入力データを暗号化し、補助データとともに、記憶装置200に登録するフェイズである(
図2(A))。
【0062】
暗号文照合フェイズは、データ秘匿装置300に入力された入力データを暗号化し、その際に生成された暗号データ、及び補助データが、別途入力される識別子で指定される記憶装置内の暗号データ、及び補助データと近い(ハミング距離が予め定められた所定値以下の)平文となるものであるか否かを判定するフェイズである(
図2(B))。
【0063】
データ登録フェイズにおいては、はじめに、登録データ生成装置100の暗号化部101に秘匿対象となる入力データが入力される(
図2(A)のステップA1)。
【0064】
次に、登録データ生成装置100の鍵生成部102が、入力データの秘匿に用いる鍵を生成し、暗号化部101及び登録補助データ生成部103に出力する(
図2(A)のステップA2)。
【0065】
次に、登録データ生成装置100の暗号化部101は、入力された入力データと、鍵とから、入力データを暗号化した暗号データを計算し、暗号文記憶部202に格納する(
図2(A)のステップA3)。
【0066】
次に、ステップA1で入力された入力データと、ステップA2で生成された鍵と、ステップA3で生成された暗号データとを登録補助データ生成部103に入力し、登録補助データ生成部103にて補助データ(登録補助データ)を作成する(
図2(A)のステップA4)。
【0067】
登録補助データ生成部103は、作成した補助データ(登録補助データ)を、記憶装置200の補助データ記憶部203に格納する(
図2(A)のステップA5)。
【0068】
以上の処理により、記憶装置200に入力されたデータには、識別子管理部201で一意な識別子が割り振られ、後に、割り振られた識別子での呼び出し(読み出し)が可能となる。
【0069】
暗号文照合フェイズにおいては、はじめに、指定データ照合装置400の識別子保持部401に識別子が入力され、入力された識別子に対応する暗号データ(登録暗号データ)が記憶装置200の暗号文記憶部202から暗号文減算部402に入力される。また、入力された識別子に対応する補助データが補助データ記憶部203から一致判定部403に入力される(
図2(B)のステップB1)。
【0070】
次に、入力データ(照合対象のデータ)がデータ秘匿装置300の暗号化部301に入力される(
図2(B)のステップB2)。
【0071】
次に、データ秘匿装置300の鍵生成部302が、入力データの秘匿に用いる鍵を生成し、作成した鍵を暗号化部301及び補助データ生成部303に出力する(
図2(B)のステップB3)。
【0072】
次に、データ秘匿装置300の暗号化部301は、ステップB2で入力された入力データと、ステップB3で入力された鍵とから、入力データを暗号化した暗号データを計算し、指定データ照合装置400の暗号文減算部402に入力する(
図2(B)のステップB4)。
【0073】
データ秘匿装置300の補助データ生成部303では、暗号化部301の暗号データ、及び鍵生成部302からの鍵に基づき、補助データを作成する。その際、少なくとも一部のデータを一方向性変換部304で一方向性変換し、補助データを生成する(
図2(B)のステップB5)。
【0074】
記憶装置200の暗号文記憶部202からの暗号データと、データ秘匿装置300の暗号化部301からの暗号データとを入力した指定データ照合装置400の暗号文減算部402は、入力された二つの暗号データの差を、一致判定部403に出力する(
図2(B)のステップB6)。また、制御部404によって制御される、記憶装置200の補助データ記憶部203と、データ秘匿装置300の補助データ生成部303とが、協調して通信を行うことにより、補助データ記憶部203と、補助データ生成部303とから、それぞれ補助データが一致判定部403に入力される。
【0075】
上記ステップB6で指定データ照合装置400の暗号文減算部402から二つの暗号データの差を入力し、補助データ記憶部203から変換後補助データと、補助データ生成部303から補助データを入力した指定データ照合装置400の一致判定部403は、前記二つの暗号データの差と、補助データとから途中データを生成し、指定データ照合装置400の一方向性変換部405に出力する(
図2(B)のステップB7)。
【0076】
指定データ照合装置400の一方向性変換部405は、途中データを一方向性変換した変換後途中データを作成し、一致判定部403に出力する(
図2(B)のステップB8)。
【0077】
指定データ照合装置400の一致判定部403は、前記変換後途中データと、前記補助データから、
・ステップB1で記憶装置200から暗号文減算部402に入力された登録暗号データの平文と、
・ステップB4で暗号文減算部402に入力された暗号データの平文と、
のハミング距離が予め定められた所定値以下となるか否かを判定し、その判定結果を出力する(
図2(B)のステップB9)。
【0078】
なお、
図1の各装置100、200、300、400を一つのコンピュータシステム上に実装してもよいし、あるいは各装置を単体として構成してもよい。あるいは、各装置100、200、300、400内の各部をそれぞれ1つの単体装置で構成してもよい。
図1の各装置の各部の処理を、コンピュータで実行されるプログラムによって実現するようにしてもよい。本発明によれば、該プログラムを記録した記録媒体(半導体メモリ、磁気/光ディスク)が提供される。
【0079】
実施形態1では、照合対象入力データに関連する補助データに対して一方向性変換を施すことで、照合入力データの漏洩を防止可能としている。
【0080】
<実施形態2>
次に、本発明の実施の形態2について説明する。前述した実施の形態1における暗号文照合システムでは、入力データと識別子がシステムに入力され、識別子に対応する暗号データの平文と入力データの照合が行われるのに対して、本実施の形態は、入力データのみがシステムに入力され、入力データと照合する暗号データの識別子が出力される。
【0081】
図3を参照すると、実施形態2のシステムは、登録データ生成装置100、記憶装置200、データ秘匿装置300、データ照合装置500から構成される。登録データ生成装置100、記憶装置200、データ秘匿装置300は、前記実施形態1と同様の構成とされ、データ照合装置500の構成が前記実施形態1と相違している。以下では、実施形態2について、前記実施形態1と同一部分の説明は適宜省略し、相違点を中心に説明する。
【0082】
データ照合装置500は、全データ要求部501と、暗号文減算部502と、一致判定部503と、制御部504と、識別子出力部505と、一方向性変換部506とを備えている。
【0083】
全データ要求部501は、識別子出力部505からの命令により、記憶装置200内に格納されている全てのデータを逐次的に読み出す命令を、識別子管理部201に入力する。
【0084】
暗号文減算部502は、記憶装置200の暗号文記憶部202に格納された暗号データの一つと、データ秘匿装置300の暗号化部から出力される暗号データとを入力とし、入力された二つの暗号データc1、c2の差c1−c2を出力する。
【0085】
このとき、暗号化部101、及び暗号化部301の性質により、
c1を入力データm1を鍵k1で暗号化した暗号文、
c2を入力データm2を鍵k2で暗号化した暗号文
とした時、二つの暗号文c1、C2の差c1-c2は、入力データm1-m2を、鍵k1-k2で暗号化した暗号文となっている。
【0086】
一致判定部503は、
・記憶装置200の補助データ記憶部203に格納された補助データと、
・データ秘匿装置300の補助データ生成部303から出力される補助データと、
・暗号文減算部502から出力される二つの暗号データの差分と
を入力とする。
【0087】
一致判定部503は、
・暗号文減算部502から出力される二つの暗号データの差分と、
・記憶装置200の補助データ記憶部203に格納された補助データと、
を少なくとも含むデータから生成される途中データを一方向性変換部506に送付する。
【0088】
一致判定部503は、
・一方向性変換部506が途中データに応じて生成した一方向性変換後データと、
・データ秘匿装置300の補助データ生成部303から出力される、一方向性変換された補助データの一つと、
から、暗号文減算部502に入力された二つの暗号データc1とc2にそれぞれ対応する平文m1とm2のハミング距離が予め定められた所定値以下であるか否かを出力する。
【0089】
制御部504は、データ秘匿装置300と、データ照合装置500とがデータをやり取りする際の通信を制御する。
【0090】
識別子出力部505は、
・識別子管理部201が暗号文記憶部202、及び補助データ記憶部203にデータ出力命令を出した識別子と、
・一致判定部503が出力した照合結果と、
を入力とし、
一致判定部503が照合(一致)したと判定した場合には、識別子管理部201から入力された識別子を出力する。
【0091】
次に、
図4の流れ図を参照して、実施形態2の動作について説明する。データ登録フェイズと、暗号文照合フェイズの二つのフェイズに大別される。ここで、データ登録フェイズは、登録データ生成装置100に入力データを入力し、入力データを暗号化し、補助データとともに記憶装置200に登録するフェイズであり、暗号文照合フェイズは、データ秘匿装置300に入力された入力データを暗号化し、その際に生成された暗号データ、及び補助データと近い(ハミング距離の小さい)平文となる記憶装置200内の暗号データに対応する識別子を出力するフェイズである。
【0092】
データ登録フェイズは、
図2(A)を参照して説明した実施形態1の動作と同じであるため、その説明は省略する。
【0093】
暗号文照合フェイズにおいては、はじめに入力データがデータ秘匿装置300の暗号化部に入力される(
図4のステップC1)。
【0094】
次に、データ秘匿装置300の鍵生成部302が、入力データの秘匿に用いる鍵を生成し、暗号化部301及び補助データ生成部303に出力する(
図4のステップC2)。
【0095】
次に、データ秘匿装置300の暗号化部301は、ステップC1で入力された入力データと、ステップC2で入力された鍵とから、入力データを暗号化した暗号データを計算し、データ照合装置500の暗号文減算部502に入力する(
図4のステップC3)。
【0096】
次に、データ秘匿装置300の補助データ生成部303は、補助データ(暗号データ)の一部を一方向性変換部304に入力する(
図4のステップC4)。
【0097】
次に、データ照合装置500の全データ要求部501から識別子管理部201に識別子が入力される。入力された識別子に対応する暗号データが、記憶装置200の暗号文記憶部202から、データ照合装置500の暗号文減算部502に入力される。また、入力された識別子に対応する補助データが補助データ記憶部203から、データ照合装置500の一致判定部503に入力される(
図4のステップC5)。
【0098】
記憶装置200の暗号文記憶部202と、データ秘匿装置300の暗号化部301とから暗号文を入力されたデータ照合装置500の暗号文減算部502は、入力された二つの暗号データの差を、一致判定部503に出力する(
図4のステップC5)。
【0099】
次に、データ照合装置500の制御部504によって制御された、記憶装置200の補助データ記憶部203と、データ秘匿装置300の補助データ生成部303とが、協調して通信を行うことにより、補助データ記憶部203と、補助データ生成部303とから、それぞれ補助データが一致判定部503に入力される(
図4のステップC6)。
【0100】
ステップC5で、データ照合装置500の暗号文減算部502から二つの暗号データの差を入力し、ステップC6で、記憶装置200の補助データ記憶部203から変換後補助データと、データ秘匿装置300の補助データ生成部303から補助データを入力したデータ照合装置500の一致判定部503は、前記二つの暗号データの差と、補助データとから途中データを生成し、一方向性変換部506に出力する(
図4のステップC7)。
【0101】
データ照合装置500の一方向性変換部506は、途中データを一方向性変換した変換後途中データを生成し、データ照合装置500の一致判定部503に出力する(
図4のステップC8)。
【0102】
データ照合装置500の一致判定部503は、
・前記変換後途中データと、
・前記補助データと、
から、ステップC1でデータ照合装置500の暗号文減算部502に入力された暗号データの平文と、ステップC4でデータ照合装置500の暗号文減算部502に入力された暗号データの平文とのハミング距離が予め定められた所定値以下となるか否かを判定し、その判定結果を出力する(
図4のステップC9)。
【0103】
ステップC9の結果が照合と判断された場合には、データ照合装置500の識別子出力部505は、ステップC4で、記憶装置200の識別子管理部201に入力された識別子を出力する(
図4のステップC10)。
【0104】
ステップC4からステップC10の処理は、記憶装置200の識別子管理部201で管理される、記憶装置200に格納された、全ての識別子(暗号データ、補助データ)に関して繰り返される。
【0105】
なお、
図3の各装置100、200、300、500を一つのコンピュータシステム上に実装してもよいし、あるいは各装置を単体として構成してもよい。あるいは、各装置100、200、300、500内の各部をそれぞれ1つの単体装置で構成してもよい。
図3の各装置の各部の処理を、コンピュータで実行されるプログラムによって実現するようにしてもよい。本発明によれば、該プログラムを記録した記録媒体(半導体メモリ、磁気/光ディスク)が提供される。以下、より具体的な実施例に即して説明する。
【0106】
<実施例1>
次に、本発明の実施例1について
図1を参照して詳細に説明する。実施例1は、前記実施形態1の一具体例に対応する。
【0107】
データ登録フェイズでは、まず入力データとして、Nビットのバイナリ列Zが登録データ生成装置100の暗号化部101に入力される。
【0108】
次に、登録データ生成装置100の鍵生成部102が、鍵(Kビットの乱数)Sを生成し、暗号化部101及び登録補助データ生成部103に出力する。
【0109】
次に、暗号化部101は、入力されたKビットの鍵Sを二元BCH符号で符号化したNビットの符号語Cと、Nビットの入力データZとの排他的論理和をとったNビットの暗号データW1を計算し(次式(1))、記憶装置200の暗号文記憶部202に格納する。
【0110】
W1 = C (+) Z ・・・(1)
【0111】
但し、(+)はビット毎の排他的論理和(bitwise exclusive OR)を表す。ここで用いる二元BCH符号は、Kビットデータを入力しNビットデータ(N>K)を出力する符号であり、任意の相異なる符号語は、少なくともd以上のハミング距離を有することが保証されるものとする。
【0112】
次に、入力データZと、鍵Sと、暗号データW1とを登録補助データ生成部103に入力し、登録補助データ生成部103は、次式(2)に従って補助データW2を計算する。
【0113】
W2 = (c, S) (+) h(W1, R) ・・・(2)
【0114】
但し、上式(2)において、
cは、Kビットの定数である。
Rは、Nビットの乱数(繰り返し利用される可能性の低いデータ)である。
(c, S)は内積を表す。すなわち、(A, B)は、二つのK = (m*k)ビットデータA及びBをkビットごとに分割したベクトルとみなした時の、AとBの内積である(演算はガロア拡大体GF(2
k)上で行うものとする)。
(+)はビット毎の排他的論理和を表す。
hは、出力がkビットとなる暗号学的ハッシュ関数(例えばSHA-256等)とする。
【0115】
ここで、H(x, y, z)を、次式(3)で表される関数として定義する。
【0116】
H(x, y, z) = (c, x) (+) h(y, z) ・・・(3)
【0117】
H(x, y, z)は次式(4)を満足する。
【0118】
H(a1, b1, c1) (+) H(a2, b2, c2) = H(a1 (+) a2, b1, c1) (+) h(b2, c2) ・・・(4)
【0119】
また、ビット(K-k)の乱数rに対して、
h(W1, N) ‖ r ・・・(5)
をBCH符号で誤り訂正符号化した符号語データをC3とし(但し、‖は、ビットの連結(concatenation)を表す演算記号である)、登録補助データ生成部103は、C3とNビットの入力データZから、補助データW3を次式(6)に従って計算する。
【0120】
W3 = C3 (+) Z ・・・(6)
【0121】
登録補助データ生成部103は、上式(2)、(6)で求めた(W2, W3)の組を補助データとして、補助データ記憶部203に登録する。
【0122】
以上の処理で、記憶装置200に入力されたデータには、識別子管理部201で一意な識別子が割り振られ、後に、割り振られた識別子での呼び出しが可能となる。
【0123】
以降、識別子iと関連付けられた暗号データW1と、補助データW2とW3をそれぞれW1[i]、W2[i]、W3[i]と表す。
【0124】
暗号文照合フェイズにおいては、はじめに指定データ照合装置400の識別子保持部401に識別子iが入力される。入力された識別子iに対応する暗号データW1[i]が、記憶装置200の暗号文記憶部202から読み出され、指定データ照合装置400の暗号文減算部402に入力される。また、入力された識別子iに対応する補助データW2[i]、W3[i]が、記憶装置200の補助データ記憶部203から読み出され、指定データ照合装置400の一致判定部403に入力される。
【0125】
次に、Nビットのバイナリ列入力データZ'(照合するデータ)がデータ秘匿装置300の暗号化部301に入力される。
【0126】
次に、データ秘匿装置300の鍵生成部302は、入力データZ'の秘匿に用いる鍵(Kビットの乱数)S'を生成し、暗号化部301及び補助データ生成部303に出力する。
【0127】
データ秘匿装置300の暗号化部301は、鍵生成部302から入力された鍵S'を二元BCH符号で誤り訂正符号化した符号語C'と、入力データZ'との排他的論理和をとった暗号データW1'を計算する(次式(7)参照)。
【0128】
W1' = C' (+) Z' ・・・(7)
【0129】
データ秘匿装置300の暗号化部301は、暗号データW1'を指定データ照合装置400の暗号文減算部402に入力する。
【0130】
指定データ照合装置400の暗号文減算部402は、データ秘匿装置300の暗号化部301からの暗号データW1'と、記憶装置200の暗号文記憶部202からの識別子iに対応する暗号データW1[i]を入力し、入力した二つの暗号データW1'とW1[i]の差(排他的論理和)を計算する(次式(8)参照)。
【0131】
W1' (+) W[i] ・・・(8)
【0132】
指定データ照合装置400の暗号文減算部402は、暗号データの差W1' (+) W[i] を一致判定部403に供給する。
【0133】
次に、指定データ照合装置400の制御部404が乱数nsと、予め定められた群Gの要素(生成元)gに対して
g_s = g**ns ・・・(9)
を計算する。
式(9)において、g**nsは、群G上でのgのns乗を表すものとする(**は冪乗演算子)。なお、群とは、
1.結合則 (∀a, b, c∈Gに対して(a・b)・c=a・(b・c)、
2.単位元の存在 (∃e∈G,∀a∈Gに対してa・e=e・a=a),
3.逆元の存在 (∀a∈Gに対して∃b∈G、a・b=b・a=e)
の規則を満たす2項演算・を持った集合をいう。ここで、群Gは乗法に関して巡回群となり、pを素数として、位数pの乗法群Zp(=Z/pZ)からなり、g**nsの値は素数pを法(modulo)とする剰余(mod p)で与えられる。
【0134】
指定データ照合装置400の制御部404は、W3[i]とg_sを、データ秘匿装置300の補助データ生成部303に出力する。
【0135】
次に、データ秘匿装置300の補助データ生成部303は、W3[i]と入力データZ'の排他的論理和をとった値(次式(10))に、二元BCH符号の復号処理を適用し、復号結果であるh'を得る。
【0136】
W3[i] (+) Z' ・・・ (10)
【0137】
データ秘匿装置300の補助データ生成部303は、鍵S'、暗号データW1'、復号結果h'、式(9)のg、g_s、乱数ncから、次式(11a)、(11b)に基づいて、一方向性変換部304と協力してW2'とg_cを計算し、指定データ照合装置400の一致判定部403に出力する。
【0138】
W2' = h(H(S', W1', g_s**nc) (+) h') ・・・(11a)
【0139】
g_c = g**nc ・・・(11b)
【0140】
次に、指定データ照合装置400の一致判定部403は入力した二つの暗号データW1'とW[i]の差(次式(12))に二元BCH符号の復号処理を適用し、二つの暗号データW1'とW[i]の差の復号結果であるTを計算する。
【0141】
W1' (+) W[i] ・・・(12)
【0142】
指定データ照合装置400において、一方向性変換部405は、一致判定部403で計算された二つの暗号データW1'とW[i]の差の復号結果Tと、W1'(式(7))と、g_c**ns(g_cは式(11b),nsは式(9)の乱数)を用いて式(3)のHを計算した結果H(T, W1', g_c**ns)と、補助データ記憶部203から読み出されたW2[i]との排他的論理和演算結果
H(T, W1', g_c**ns) (+) W2[i]
に対して、式(13)の暗号学的ハッシュ関数hを計算する。
【0143】
h(H(T, W1', g_c**ns) (+) W2[i])・・・(13)
【0144】
次に、指定データ照合装置400の一致判定部403が、上式(13)で計算したハッシュ値と、データ秘匿装置300の補助データ生成部303から入力された補助データW2'とが等しいか否か、すなわち、次の等式(14)が成り立つか否かをチェックする。
【0145】
W2’ = h(H(T, W1, g_c**ns) (+) W2[i]) ・・・(14)
【0146】
指定データ照合装置400の一致判定部403は、等式(14)が成立する場合には、W1[i]の元の入力データ(平文)Zと、照合対象の入力データ(平文)Z'のハミング距離がd以下であると判定し、等式(14)が成立しない場合には、W1[i]の元の入力データ(平文)Zと照合対象の入力データ(平文)Z'のハミング距離がdを超えると判定し、判定結果を出力する。なお、上記BCH符号化は、任意の相異なる符号語のハミング距離が少なくともdを超える値とされている。
【0147】
データ秘匿装置300の補助データ生成部303で生成する補助データW2' = h(H(S', W1', g_s**nc) (+) h')におけるg_s**nc(=(g**ns)**nc)(=R')と、指定データ照合装置400の一致判定部403でのg_c**ns(=(g**nc)**ns)を、例えば公知のDiffie-Hellman鍵共有法によって、指定データ照合装置400の一致判定部403と、データ秘匿装置300の補助データ生成部303との双方で生成されるようにしてもよい。
【0148】
<実施例2>
次に、実施例2について
図3を参照して詳細に説明する。実施例2は、前記実施形態2の一具体例である。
【0149】
データ登録フェイズでは、まず入力データとして、Nビットのバイナリ列Zが登録データ生成装置100の暗号化部101に入力される。
【0150】
次に、登録データ生成装置100の鍵生成部102が、Kビットの乱数Sを生成し、暗号化部101及び登録補助データ生成部103に出力する。
【0151】
次に、暗号化部101は、入力された鍵Sを二元BCH符号で符号化した符号語Cと、入力データZとの排他的論理和を取った暗号データW1を計算し、暗号文記憶部202に格納する。ここで用いる二元BCH符号は、Kビットデータを入力し、Nビットデータを出力する符号であり、任意の相異なる符号語は、少なくともd以上のハミング距離を有することが保証されるものとする。
【0152】
次に、入力データZと、鍵Sと、暗号データW1とを登録補助データ生成部103に入力する。登録補助データ生成部103は、次式(15)に従ってW2を計算する。
【0153】
W2 = (c, S) (+) h(W1, R) ・・・(15)
【0154】
但し、上式(15)において、
cは、Kビットの定数である。
Rは、乱数(繰り返し利用される可能性の低いデータ)である。
(A,B)は、二つのK=(m*k)ビットデータA及びBをkビットごとに分割したベクトルとみなした時の、AとBの内積である(演算はガロア拡大体GF(2
k)上で行うものとする)。
(+)はビット毎の排他的論理和を表す。
hは、出力がkビットとなる暗号学的ハッシュ関数(例えばSHA-256等)とする。
【0155】
また、H(x, y, z) を式(16)で表される関数として定義する(上式(3)と同一)。
【0156】
H(x, y, z) = (c, x) (+) h(y, z) ・・・(16)
【0157】
K-kビットの乱数rに対し
h(W1, N) ‖r ・・・(17)
をBCH符号で符号化した符号語データをC3とし(但し、‖は、ビットの連結を表す記号である)、C3とZから、登録補助データ生成部103は、W3を、
W3 = C3 (+) Z ・・・(18)
により計算する。
【0158】
登録補助データ生成部103は、以上によって生成した(W2、W3)の組を補助データとして補助データ記憶部203に登録する。
【0159】
以上の処理で、記憶装置200に入力されたデータには識別子管理部201で一意な識別子が割り振られ、後に振り振られた識別子での呼び出しが可能となる。以降、識別子iと関連付けられたW1、W2、W3をそれぞれW1[i]、W2[i]、W3[i]と表す。
【0160】
暗号文照合フェイズにおいては、はじめに入力データZ'(照合対象のデータ)がデータ秘匿装置300の暗号化部301に入力される。
【0161】
次に、データ秘匿装置300の鍵生成部302が、入力データZ'の秘匿に用いる鍵S'(Kビットの乱数)を生成し、暗号化部301及び補助データ生成部303に出力する。
【0162】
データ秘匿装置300の暗号化部301は、入力された鍵S'を二元BCH符号で符号化した符号語C'と、入力データZ'との排他的論理和をとった暗号データW1'(次式(19))を計算し、データ照合装置500の暗号文減算部502に入力する。
【0163】
W1' = C' (+) Z' ・・・(19)
【0164】
次に、データ照合装置500の全データ要求部501から記憶装置200の識別子管理部201に、識別子iが入力される。記憶装置200の暗号文記憶部202から、識別子iに対応する暗号データW1[i]が読み出され、データ照合装置500の暗号文減算部502に入力される。また、識別子iに対応する補助データW2[i]、W3[i]が記憶装置200の補助データ記憶部203から読み出され、データ照合装置500の一致判定部503に入力される。
【0165】
データ照合装置500の暗号文減算部502は、
・記憶装置200の暗号文記憶部202からの暗号データW1[i]と、
・データ秘匿装置300からの暗号データW1'とを入力し、入力した二つの暗号データW1'とW1[i]の差(排他的論理和)(次式(20))を、一致判定部503に出力する。
【0166】
W1' (+) W1[i] ・・・(20)
【0167】
次に、データ照合装置500の制御部504が乱数nsと予め定められた群Gの要素gに対して
g_s = g**ns ・・・(21)
を計算し、補助データ生成部303に出力する。
【0168】
次に、データ秘匿装置300の補助データ生成部303は、
S'=S1' (+) S2' ・・・(22)
を満たすS1'とS2'をランダムに選ぶ。
【0169】
データ秘匿装置300の補助データ生成部303は、次式(23a)、(23b)に基づいて、一方向性変換部304と協力して、W2'と、g_cを計算する。
【0170】
W2' = h(H(S1', W1', g_s**nc)) ・・・(23a)
【0171】
g_c = g**nc ・・・(23b)
【0172】
次に、データ秘匿装置300の補助データ生成部303は、内積(c,S2')と乱数r'をビット連結したデータである
(c, S2') ‖ r' ・・・(24)
を二元BCH誤訂正符号化したC3とZ'からW3'を、
W3' = C3 (+) Z' ・・・(25)
により計算し、W1'、W2'、W3'、g_cをデータ照合装置500の一致判定部503に出力する。
【0173】
次に、データ照合装置500の一致判定部503は、入力された暗号データの差
W1' (+) W1[i] ・・・(26)
に二元BCH符号の復号処理を適用し、二つの暗号データW1'、W1[i]の差の復号結果であるTを計算する。
【0174】
さらに、データ照合装置500の一致判定部503は、W3[i]とW3'の排他的論理和
W3[i] (+) W3' ・・・(27)
に二元BCH符号の復号処理を適用し、W3[i](+)W3'の復号結果であるw3を計算する。
【0175】
データ照合装置500の一致判定部503は、二つの暗号データの差の復号結果TとW1'、g_c**nsとを用いて式(16)を計算した結果H(T, W1', g_c**ns)と、W2[i]とw3を、一方向性変換部506に出力する。
【0176】
データ照合装置500の一方向性変換部506は、二つの暗号データの差の復号結果TとW1'、g_c**nsとを用いて計算したH(T, W1’, g_c**ns)を計算し、次式(28)にしたがい、H(T, W1’, g_c**ns)とW2[i]とw3のビット毎の排他的論理和演算結果
H(T, W1’, g_c**ns)(+)W2[i](+)w3
のハッシュ値を計算する(次式(28))。
【0177】
h(H(T, W1’, g_c**ns)(+)W2[i](+)w3) ・・・(28)
【0178】
データ照合装置500の一致判定部503は、一方向性変換部506が上式(28)で計算したハッシュ値が、W2’(式(23a))と等しいか否か、すなわち、等式(29)が成立するか否かをチェックする。
【0179】
W2’ = h(H(T, W1’, g_c**ns) (+) W2[i] (+) w3) ・・・(29)
【0180】
上式(29)が成立する場合に、データ照合装置500識別子出力部505は、W1[i]の元のデータとZ’のハミング距離がd以下であると判定し、識別子iを出力する。上式(29)が成立しない場合、データ照合装置500識別子出力部505は、ハミング距離はdを超えるもの判定し、識別子iは出力しない。
【0181】
以上の操作を、記憶装置が管理している全ての識別子iに対して実行し、入力データZ’とのハミング距離がd以下となるような元データを有する全ての識別子を出力する。
【0182】
実施例2においても、実施例1と同様、データ秘匿装置300の補助データ生成部303で生成する補助データW2’= h(H(S1’, W1’, g_s**nc)) のg_s**nc(=(g**ns)**nc)と、データ照合装置500の一致判定部503でのg_c**ns(=(g**nc)**ns)を例えば公知のDiffie-Hellman鍵共有法によって、データ照合装置500の一致判定部503と、データ秘匿装置300の補助データ生成部303との双方で生成されるようにしてもよい。
【0183】
実施例1、2の適用例として、生体情報を保護した認証が挙げられる。以下その概略を説明する。
【0184】
データ登録フェイズにおける入力データと、暗号文照合フェイズにおける入力データを、指紋や静脈等から取得した生体情報としてもよい。この場合、生体情報を秘匿(暗号化)したまま、記憶装置に格納された暗号化された生体データと、データ秘匿装置から送出された暗号化された生体データとが同一人物から採取したものであるか否かを、二つの入力データのハミング距離が予め定められた所定値以下となるか否かにより判定することが可能となり、認証を行うことが可能となる。生体情報は、常に安定して同一のデータが取得できるわけではない。しかしながら、同じ人物から取得されるデータが類似している(ハミング距離が小さいデータが取得できる)と仮定できる。このため、本発明は、例えば生体認証に適用して好適とされる(ただし、適用対象は生体認証に制限されない)。
【0185】
なお、上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。