以下、本発明の実施形態を図面を参照して説明する。以下の各実施形態では、本発明の認証システムが生体認証に適用される場合を例にして説明する。ただし、本発明の認証システムは、生体認証以外の認証に適用されてもよい。
まず、FIDOについてより具体的に説明する。
図1は、FIDOを適用したクライアントサーバシステムの例を示す模式図である。図1に例示するシステムは、クライアント801と、サーバ901とを備える。クライアント801は、照合部802と、署名生成部803とを備える。サーバ901は、チャレンジ送信部902と、検証部903とを備える。
照合部802は、クライアント801が予め保持するテンプレートを用いて、登録情報と、クライアント801に入力される照合情報とが合致するか否かを判定する。照合情報と登録情報とが合致しなければ、処理を終了する。照合情報と登録情報とが合致すると判定された場合、署名生成部803は、クライアント801が予め保持する署名鍵を用いて、チャレンジレスポンス方式のチャレンジに基づいて署名を生成する。なお、チャレンジは、チャレンジ送信部902によってクライアント801に送信される。
クライアント801は、生成された署名を、レスポンスとしてサーバ901に送信する。検証部903は、サーバ901が保持する検証鍵と、クライアント801に送信したメッセージと、クライアント801から受信した署名とを用いて、署名に対する検証を行う。具体的には、検証部903は、署名が、サーバ901が送信したメッセージに基づいて、サーバ901が保持する検証鍵と対になる署名鍵によって生成されたものであるか否かを判定する。以下、サーバが送信したメッセージに基づいて、サーバが保持する検証鍵と対になる署名鍵によって生成された署名を、正しい署名と記す。正しい署名に該当しない署名を、不正な署名と記す。検証部903は、署名が正しい署名であると判定した場合には、被認証者の認証に成功したと判定し、署名が不正な署名であると判定した場合には、被認証者の認証に失敗したと判定する。
上記のように、FIDOでは、クライアント801が照合情報と登録情報とが合致するか否かを判定する。そして、照合情報と登録情報とが合致と判定された場合、サーバ901が、クライアント801で生成された署名が正しい署名であるか否かを判定する。
図1に示すシステムには、以下の問題がある。図2は、図1に示すシステムの問題点を示す模式図である。図2に示すように、クライアント801には、マルウェア804(あるいは、不正なアプリケーションソフトウェア)が組み込まれる場合がある。照合部802が、照合情報と登録情報とが合致するか否かの判定を行っていなくても、マルウェア804が、照合情報と登録情報とが合致すると判定されたという情報を署名生成部803に与えると、署名生成部803が署名を生成し、サーバ901の検証部903が被認証者の認証に成功したと判定してしまうことが生じ得る。すなわち、クライアント801が実際には照合情報と登録情報とが合致するか否かの判定を行っていなくても、サーバ901が被認証者の認証に成功したと判定してしまうことが生じ得る。
本発明は、このような問題を解決するものである。以下、本発明の各実施形態を説明する。
実施形態1.
図3は、本発明の第1の実施形態の認証システムの構成例を示すブロック図である。認証システムは、クライアント10と、第1のサーバ30と、第2のサーバ40とを備える。図3では、1台のクライアント10を図示しているが、クライアント10は複数存在していてもよい。クライアント10と、第1のサーバ30と、第2のサーバ40とは、通信ネットワークを介して通信可能である。
クライアント10は、公開鍵記憶部11と、登録情報入力部12と、秘匿化部13と、秘匿化情報記憶部14と、照合情報入力部15と、秘匿化指標算出部16と、秘匿化指標送信部17と、結果受信部18と、メッセージ受信部19と、署名鍵記憶部20と、署名生成部21と、署名送信部22とを備える。
第1のサーバ30は、メッセージ送信部31と、署名受信部32と、第1の検証鍵記憶部33と、署名判定部34と、第2の検証鍵記憶部35と、証明書判定部36と、認証判定部37とを備える。
第2のサーバ40は、秘密鍵記憶部41と、秘匿化指標受信部42と、判定部43と、証明鍵記憶部44と、証明書生成部45と、結果送信部46とを備える。
公開鍵記憶部11は、第2のサーバ40によって生成され、第2のサーバ40から送信される公開鍵(pkと記す。)を記憶する記憶装置である。
図示を省略しているが、第2のサーバ40は、公開鍵pkおよび秘密鍵(skと記す。)とを生成する手段を備える。公開鍵pkで秘匿化されたデータについては、秘密鍵skによって秘匿化の解除が可能である。クライアント10は第2のサーバ40から公開鍵を受信し、公開鍵記憶部11に記憶させればよい。また、第2のサーバ40は、秘密鍵skを秘密鍵記憶部41に記憶させる。ただし、公開鍵pkおよび秘密鍵skは、第2のサーバ40以外の装置で生成されてもよい。
登録情報入力部12は、登録情報の入力を受け付ける。各実施形態では、登録情報として、被登録者の生体情報が登録情報入力部12に入力される。
なお、各実施形態では、登録情報、および、登録情報との照合のために入力される照合情報が、共通の次元のベクトルで表されている場合を例にして説明する。
登録情報入力部12は、登録情報に応じた入力デバイスであればよい。例えば、指紋から抽出される生体情報を登録情報とする場合、登録情報入力部12は、指紋を読み取り、その指紋から登録情報となるベクトルを抽出し、そのベクトルの入力を受け付ける入力デバイスであってもよい。また、登録情報入力部12は、登録情報となるベクトルが直接入力される入力デバイスであってもよい。
なお、生体情報は、指紋以外に、虹彩、網膜、顔、血管(静脈)、掌紋、声紋、またはこれらの組み合わせから抽出されてもよい。生体情報は、上述した例以外の、生体を識別可能な他の情報から抽出されてもよい。
登録情報入力部12に入力される被登録者の生体情報(登録情報)に該当するベクトルをXと記す。
秘匿化部13は、登録情報入力部12に入力された被登録者の生体情報Xを秘匿化し、生体情報Xを秘匿化した情報(秘匿化情報と記す。)を、秘匿化情報記憶部14に記憶させる。秘匿化情報記憶部14は、秘匿化情報を記憶する記憶装置である。
この秘匿化情報は、生体認証のために予め記憶される、被登録者の生体情報から生成されたデータである。従って、この秘匿化情報は、テンプレートである。なお、公開鍵記憶部11に記憶される公開鍵pkは、被登録者の生体情報から生成されたデータではないので、公開鍵pkはテンプレートではない。
本実施形態では、秘匿化の具体例として、暗号化を例にして説明する。すなわち、秘匿化部13は、登録情報入力部12に入力された被登録者の生体情報Xを前述の公開鍵pkによって暗号化し、暗号化された生体情報X(Enc(X)と記す。)を、秘匿化情報記憶部14に記憶させる。
また、各実施形態では、秘匿化部13が、加法準同型性を有する暗号方式によって、被登録者の生体情報Xを暗号化する場合を例にして説明する。すなわち、本例において、公開鍵pkは、加法準同型性を有する公開鍵暗号方式における公開鍵である。
以下、加法準同型性を有する暗号方式の性質について説明する。この説明では、平文mを公開鍵pkで暗号化することによって得られる暗号文を、Enc(pk,m)と記す。また、Enc(pk,m)をさらに別の記号(例えば、c)で表す場合には、Enc(pk,m)→cと記す。また、以下の説明では、x,yが平文の数値であり、zが平文の整数であるとする。
加法準同型性を有する暗号方式では、公開鍵pkによるxの暗号文c
1(すなわち、Enc(pk,x)→c
1)と、公開鍵pkによるyの暗号文c
2(すなわち、Enc(pk,y)→c
2)とから、x+yの暗号文Enc(pk,x+y)を計算可能である。以下、この演算を、
で表す。すなわち、以下に示す式(1)が成り立つ。
また、上記の演算を繰り返すことで、公開鍵pkによるxの暗号文c
1(すなわち、Enc(pk,x)→c
1)と、整数zから、x・zの暗号文(すなわち、Enc(pk,x・z))を計算可能であることが分かる。以下、この演算を、
で表す。すなわち、以下に示す式(2)が成り立つ。
加法準同型性を有する暗号方式の例として、例えば、ECElgamal暗号等がある。従って、本発明において、ECElgamal暗号を採用してもよい。ただし、ECElgamal暗号は一例であり、本発明では、加法準同型性を有する暗号方式を採用すればよい。
秘匿化情報記憶部14は、加法準同型性を有する公開鍵暗号方式における公開鍵pkによって、被登録者の生体情報Xを暗号化することで得られたEnc(X)を、テンプレートとして記憶する。
照合情報入力部15は、照合情報の入力を受け付ける。各実施形態では、照合情報として、被認証者の生体情報が照合情報入力部15に入力される。前述のように、登録情報および照合情報は、共通の次元のベクトルで表されている。
照合情報入力部15は、照合情報に応じた入力デバイスであればよい。例えば、指紋から抽出される生体情報を照合情報とする場合、照合情報入力部15は、指紋を読み取り、その指紋から照合情報となるベクトルを抽出し、そのベクトルの入力を受け付ける入力デバイスであってもよい。また、照合情報入力部15は、照合情報となるベクトルが直接入力される入力デバイスであってもよい。また、登録情報入力部12と照合情報入力部15とが共通の入力デバイスであってもよい。
照合情報入力部15に入力される被認証者の生体情報(照合情報)に該当するベクトルをYと記す。
秘匿化指標算出部16は、被認証者の生体情報Yと、テンプレート(すなわち、被登録者の生体情報Xを暗号化することで得られたEnc(X))とに基づいて、生体情報Xと生体情報Yとの近さを示す指標を暗号化したデータ(以下、秘匿化指標と記す。)を算出する。このとき、秘匿化指標算出部16は、テンプレートEnc(X)を復号することなく、秘匿化指標を算出する。
以下、生体情報Xと生体情報Yとの近さを示す指標として、XとYの内積を採用する場合を例にして説明する。ただし、内積は例示であり、上記の指標は、XとYの内積に限定されない。また、以下では、指標が内積である場合の処理の一例を示す。以下の説明では、生体情報Xおよび生体情報Yは、いずれもn次元のベクトルであるものとする。そして、Xの各要素は、X=(x1,・・・,xn)と表され、Yの各要素は、Y=(y1,・・・,yn)と表されるものとする。また、記号iで1,・・・,nを表すものとする。
生体情報Xと生体情報Yとの内積は、Σxi・yiである。
指標が内積である場合、秘匿化部13は、生体情報Xが入力されると、公開鍵pkでXの各要素x1~xnをそれぞれ暗号化する。そして、秘匿化部13は、暗号化した各データをテンプレートとして秘匿化情報記憶部14に記憶させる。xiを暗号化したデータをEnc(xi)と記す。すなわち、本例では、秘匿化部13は、Enc(x1),・・・,Enc(xn)を生成し、それらのデータを秘匿化情報記憶部14に記憶させる。本例では、このEnc(x1),・・・,Enc(xn)がテンプレートに該当する。
内積Σxi・yiを暗号化したデータは、Enc(Σxi・yi)と表される。次に、生体情報Yが入力された時に秘匿化指標算出部16がEnc(Σxi・yi)を算出する演算について説明する。
まず、生体情報Y=(y
1,・・・,y
n)が入力されると、秘匿化指標算出部16は、個々のi(i=1,・・・,n)について、テンプレートに含まれているEnc(x
i)と、y
iとを用いて、
を計算する。個々のiについてこの計算を行うので、n個の暗号文が得られる。
次に、秘匿化指標算出部16は、そのn個の暗号文を用いて、
を計算する。この計算の結果は、Enc(Σx
i・y
i)であり、生体情報Xと生体情報Yとの内積Σx
i・y
iを暗号化したデータ(秘匿化指標)である。
秘匿化指標送信部17は、秘匿化指標算出部16によって算出された秘匿化指標を第2のサーバ40に送信する。
生体情報Xと生体情報Yとの近さを示す指標として、XとYの内積ではなく、例えば、「XとYのハミング距離」や、「XとYのユークリッド距離の二乗」を採用してもよい。
説明を分かり易くするために、以下では、第2のサーバ40が備える要素について説明する。まだ、クライアント10の要素のうち、まだ説明していない要素については、後述する。
秘匿化指標受信部42は、クライアント10の秘匿化指標送信部17が送信した秘匿化指標を受信する。
秘密鍵記憶部41は、公開鍵pkと対になる秘密鍵skを記憶する記憶装置である。前述のように、図示を省略しているが、第2のサーバ40は、公開鍵pkおよび秘密鍵skを生成する手段を備え、秘密鍵記憶部41は、その秘密鍵skを記憶する。
判定部43は、秘密鍵記憶部41に記憶されている秘密鍵skによって、秘匿化指標受信部42が受信した秘匿化指標(指標を暗号化したデータ)から指標を復号する。なお、復号は、秘匿化の解除であると言うことができる。指標は数値であり、判定部43は、秘匿化指標から復号された指標が、予め定められた所定範囲内の値であるか否かを判定することによって、生体情報Xと生体情報Yとが合致するか否か(換言すれば、被登録者と被認証者とが合致するか否か)を判定する。すなわち、判定部43は、秘匿化指標から復号された指標が、所定範囲内の値であるならば、生体情報Xと生体情報Yとが合致すると判定する(換言すれば、被登録者と被認証者とが合致すると判定する)。また、判定部43は、秘匿化指標から復号された指標が、所定範囲内の値でないならば、生体情報Xと生体情報Yとが合致しないと判定する(換言すれば、被登録者と被認証者とが合致しないと判定する)。
上記のように、秘匿化指標から復号された指標が、所定範囲内の値であるか否かによって、生体情報Xと生体情報Yとが合致するか否かを判定する。従って、生体情報Xと生体情報Yとが完全に一致していなくても(問題にならない程度のずれが生じていても)、指標が所定範囲内の値であれば、生体情報Xと生体情報Yとが合致すると判定し得る。なお、所定範囲を用いる処理は、問題にならない程度のずれが生じていても生体情報Xと生体情報Yとが合致すると判定する処理の一例である。
証明鍵記憶部44は、生体情報Xと生体情報Yとが合致すると判定されたことを示す証明書の生成時に用いる証明鍵(sakと記す。)を記憶する記憶装置である。図示を省略しているが、第2のサーバ40は、証明鍵sakと、第2の検証鍵(pakと記す。)とを生成する手段を備える。第2の検証鍵pakによって、証明書が与えられたときに、その証明書が正しい証明書であるか否かを判定することができる。証明書が正しい証明書であるか否かの判定については、後述する。第2のサーバ40は、証明鍵sakおよび第2の検証鍵pakを予め生成し、証明鍵sakを証明鍵記憶部44に記憶させ、第2の検証鍵pakを第1のサーバ30に送信する。そして、第2の検証鍵pakは、第1のサーバ30の第2の検証鍵記憶部35に記憶される。ただし、証明鍵sakおよび第2の検証鍵pakは、第2のサーバ40以外の装置で生成されてもよい。
本例では、証明鍵sakは、公開鍵方式における秘密鍵であり、第2の検証鍵pakは、公開鍵方式における公開鍵であるものとする。
証明書生成部45は、生体情報Xと生体情報Yとが合致すると判定された場合に、そのことを示す証明書を、証明鍵sakを用いて生成する。本例では、証明書は、データと、そのデータに基づいて証明鍵sakによって生成された署名との組であるものとする。
証明書生成部45が証明書を生成するために用いるデータとして、例えば、クライアント10のID(IDentification)、第2のサーバ40のID、タイムスタンプ(例えば、クライアント10から秘匿化指標を受信した時刻のタイムスタンプ)、クライアント10が第1のサーバ30から受信するメッセージ、または、クライアント10と第2のサーバ40との間のセッションID等、あるいは、それらのデータから生成されたデータを用いることができる。すなわち、証明書生成部45は、例えば、上記のデータのうち1つまたは複数、あるいは、それらから生成されたデータと、証明鍵sakを用いてそのデータに基づいて生成した署名との組を、証明書とすればよい。
なお、クライアント10が第1のサーバ30から受信するメッセージとは、第1のサーバ30(具体的には、メッセージ送信部31)がチャレンジレスポンス方式におけるチャレンジとしてクライアント10に送信するメッセージである。このメッセージやクライアント10のIDを証明書生成時に用いる場合には、クライアント10の秘匿化指標送信部17が、秘匿化指標とともに、クライアント10のIDまたはメッセージを第2のサーバ40に送信すればよい。
なお、証明書を生成するために用いるデータは、上記の例に限定されない。
また、判定部43によって生体情報Xと生体情報Yとが合致しないと判定された場合には、証明書生成部45は証明書を生成しない。
結果送信部46は、判定部43の判定結果をクライアント10に送信する。さらに、結果送信部46は、生体情報Xと生体情報Yとが合致すると判定されたことによって、証明書生成部45によって証明書(生体情報Xと生体情報Yとが合致すると判定されたことを示す証明書)が生成された場合には、判定部43の判定結果とともにその証明書も、クライアント10に送信する。
以下、クライアント10の要素のうちまだ説明していない要素について、説明する。
結果受信部18は、結果送信部46が送信した判定部43の判定結果を受信し、結果送信部46が判定結果とともに証明書も送信した場合には、その証明書も受信する。
以下に説明するクライアント10の要素は、生体情報Xと生体情報Yとが合致すると判定された場合に関する要素である。従って、結果受信部18が、生体情報Xと生体情報Yとが合致するという判定結果、および、証明書を第2のサーバ40から受信したものとして説明する。
メッセージ受信部19は、第1のサーバ30(具体的には、メッセージ送信部31)が送信するメッセージを受信する。このメッセージは、チャレンジレスポンス方式におけるチャレンジに該当する。
署名鍵記憶部20は、メッセージ受信部19が受信したメッセージ(チャレンジ)に基づいて署名を生成する際に用いる署名鍵(sukと記す。)を記憶する記憶装置である。図示を省略しているが、クライアント10は、署名鍵sukと、第1の検証鍵(pukと記す。)とを生成する手段を備える。第1の検証鍵pukによって、署名とメッセージが与えられたときに、その署名が正しい署名であるか否かを判定することができる。クライアント10は、署名鍵sukおよび第1の検証鍵pukを予め生成し、署名鍵sukを署名鍵記憶部20に記憶させ、第1の検証鍵pukを第1のサーバ30に送信する。そして、第1の検証鍵pukは、第1のサーバ30の第1の検証鍵記憶部33に記憶される。ただし、署名鍵sukおよび第1の検証鍵pukは、クライアント10以外の装置で生成されてもよい。
本例では、署名鍵sukは、公開鍵方式における秘密鍵であり、第1の検証鍵pukは、公開鍵方式における公開鍵であるものとする。
署名生成部21は、結果受信部18が、生体情報Xと生体情報Yとが合致するという判定結果を第2のサーバ40から受信した場合に、署名を生成する。署名生成部21は、メッセージ受信部19が第1のサーバ30から受信したメッセージ(チャレンジ)に基づいて、署名鍵sukを用いて、署名を生成する。署名生成部21によって生成された署名は、チャレンジレスポンス方式におけるレスポンスに該当する。
なお、クライアント10がメッセージを第1のサーバ30から取得するタイミングは、署名生成前であればよい。例えば、予め、メッセージ送信部31がクライアント10にメッセージを送信し、メッセージ受信部19がそのメッセージを受信し、メッセージ受信部19が、署名生成時までそのメッセージを保持していてもよい。また、例えば、結果受信部18が第2のサーバ40から、生体情報Xと生体情報Yとが合致するという判定結果、および、証明書を受信した時点で、メッセージ受信部19が第1のサーバ30にメッセージの送信を要求し、その要求に応じてメッセージ送信部31が送信したメッセージを受信し、その後、署名生成部21が署名を生成してもよい。
署名送信部22は、署名生成部21が生成した署名と、結果受信部18が第2のサーバ40から受信した証明書とを、第1のサーバ30に送信する。
以下、第1のサーバ30が備える要素について説明する。
メッセージ送信部31は、チャレンジレスポンス方式におけるチャレンジに該当するメッセージを生成し、そのメッセージをクライアント10に送信する。このメッセージは、メッセージ受信部19によって受信される。
署名受信部32は、クライアント10の署名送信部22が送信した署名および証明書を受信する。
第1の検証鍵記憶部33は、クライアント10によって生成され、クライアント10から送信される第1の検証鍵pukを記憶する記憶装置である。前述のように、クライアント10は、署名鍵sukと第1の検証鍵pukとを生成する手段を備え、第1の検証鍵pukを予め第1のサーバ30に送信する。第1のサーバ30は、第1の検証鍵pukを受信し、第1の検証鍵pukを第1の検証鍵記憶部33に予め記憶させておく。
第2の検証鍵記憶部35は、第2のサーバ40によって生成され、第2のサーバ40から送信される第2の検証鍵pakを記憶する記憶装置である。前述のように、第2のサーバ40は、証明鍵sakと第2の検証鍵pakとを生成する手段を備え、第2の検証鍵pakを予め第1のサーバ30に送信する。第1のサーバ30は、第2の検証鍵pakを受信し、第2の検証鍵pakを第2の検証鍵記憶部35に予め記憶させておく。
署名判定部34は、第1の検証鍵pukと、メッセージ送信部31がクライアント10に送信したメッセージ(チャレンジに該当するメッセージ)と、署名受信部32がクライアント10から受信した署名とを用いて、署名が正しい署名であるか否かを判定する。換言すれば、署名判定部34は、受信した署名が、そのメッセージに基づいて、第1の検証鍵pukと対になる署名鍵sukを用いて生成された署名であるか否かを判定する。受信した署名が、そのメッセージに基づいて、第1の検証鍵pukと対になる署名鍵sukを用いて生成された署名であるならば、受信した署名は、正しい署名である。そうでなければ、受信した署名は、不正な署名である。
証明書判定部36は、第2の検証鍵pakと、署名受信部32がクライアント10から受信した証明書とを用いて、その証明書が正しい証明書であるか否かを判定する。前述のように、証明書はデータと署名との組である。証明書に含まれる署名が、その証明書に含まれるデータに基づいて、第2の検証鍵pakと対になる証明鍵sakを用いて生成された署名であるならば、その証明書は、正しい証明書である。そうでなければ、その証明書は、不正な証明書である。従って、証明書判定部36は、クライアント10から受信した証明書に含まれる署名が、その証明書に含まれるデータに基づいて、第2の検証鍵pakと対になる証明鍵sakを用いて生成された署名であるであるか否かを判定することによって、受信した証明書が正しい証明書であるか否かを判定すればよい。
認証判定部37は、署名判定部34の判定結果と、証明書判定部36の判定結果とに基づいて、被認証者の認証に成功したか失敗したかを判定する。具体的には、認証判定部37は、署名判定部34によって、署名が正しい署名であると判定され、かつ、証明書判定部36によって、証明書が正しい証明書であると判定された場合に、被認証者の認証に成功したと判定する(換言すれば、被認証者が被登録者であると確定する)。すなわち、署名が正しい署名であると判定されたという条件と、証明書が正しい証明書であると判定されたという条件の両方が満たされた場合に、認証判定部37は、被認証者の認証に成功したと判定する。
一方、上記の2つの条件のうちのいずれか一方、または、両方が満たされなかった場合には、認証判定部37は、被認証者の認証に失敗したと判定する(換言すれば、被認証者が被登録者でないと判定する)。
認証判定部37が被認証者の認証に成功したと判定した場合に、認証後の処理を実行すればよい。例えば、一例として、第1のサーバ30が被認証者の認証に成功した旨の情報をクライアント10に送信し、クライアント10はその情報を受信した場合に、認証後の処理を実行してもよい。ただし、認証後の処理を実行する装置は、クライアント10に限定されず、認証判定部37が被認証者の認証に成功したと判定したことを条件に、クライアント10以外の装置が認証後の処理を実行してもよい。
クライアント10において、秘匿化指標送信部17、結果受信部18、メッセージ受信部19および署名送信部22は、例えば、クライアント用プログラムに従って動作するコンピュータのCPU(Central Processing Unit )、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からクライアント用プログラムを読み込み、そのプログラムに従って、通信インタフェースを用いて、秘匿化指標送信部17、結果受信部18、メッセージ受信部19および署名送信部22として動作すればよい。また、秘匿化部13、秘匿化指標算出部16および署名生成部21は、例えば、クライアント用プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが上記のようにプログラム記録媒体からクライアント用プログラムを読み込み、そのプログラムに従って、秘匿化部13、秘匿化指標算出部16および署名生成部21として動作すればよい。また、公開鍵記憶部11、秘匿化情報記憶部14および署名鍵記憶部20は、例えば、クライアント10を実現するコンピュータが備える記憶装置によって実現される。
また、第2のサーバ40において、秘匿化指標受信部42および結果送信部46は、例えば、サーバ用プログラムに従って動作するコンピュータのCPU、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、通信インタフェースを用いて、秘匿化指標受信部42および結果送信部46として動作すればよい。また、判定部43および証明書生成部45は、例えば、サーバ用プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが上記のようにプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、判定部43および証明書生成部45として動作すればよい。また、秘密鍵記憶部41および証明鍵記憶部44は、例えば、第2のサーバ40を実現するコンピュータが備える記憶装置によって実現される。
また、第1のサーバ30において、メッセージ送信部31および署名受信部32は、例えば、サーバ用プログラムに従って動作するコンピュータのCPU、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、通信インタフェースを用いて、メッセージ送信部31および署名受信部32として動作すればよい。また、署名判定部34、証明書判定部36および認証判定部37は、例えば、サーバ用プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが上記のようにプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、署名判定部34、証明書判定部36および認証判定部37として動作すればよい。また、第1の検証鍵記憶部33および第2の検証鍵記憶部35は、例えば、第1のサーバ30を実現するコンピュータが備える記憶装置によって実現される。
本実施形態では、第1のサーバ30と第2のサーバ40は、別のサーバであるので、第1のサーバ30に搭載されるサーバ用プログラムと、第2のサーバ40に搭載されるサーバ用プログラムは別のプログラムである。
以下、第1の実施形態の処理経過について説明する。以下の説明では、既に、クライアント10が備える公開鍵記憶部11には公開鍵pkが記憶され、署名鍵記憶部20には署名鍵sukが記憶され、秘匿化情報記憶部14には、テンプレートEnc(X)(本例では、Enc(x1),・・・,Enc(xn))が記憶されているものとする。同様に、既に、第2のサーバ40が備える秘密鍵記憶部41には秘密鍵skが記憶され、証明鍵記憶部44には証明鍵sakが記憶されているものとする。同様に、既に、第1のサーバ30が備える第1の検証鍵記憶部33には第1の検証鍵pukが記憶され、第2の検証鍵記憶部35には第2の検証鍵pakが記憶されているものとする。また、以下に示す例では、クライアント10のメッセージ受信部19は、予め第1のサーバ30のメッセージ送信部31から、チャレンジに該当するメッセージを受信し、そのメッセージを保持しているものとする。
図4は、クライアント10に被認証者の生体情報Yが入力されてから、第2のサーバ40に生成された証明書をクライアント10が受信するまでの処理経過の例を示すフローチャートである。なお、既に説明した事項については、詳細な説明を省略する。
まず、被認証者の生体情報Yが照合情報入力部15に入力される(ステップS11)。
次に、秘匿化指標算出部16は、ステップS11で入力された生体情報Yと、秘匿化情報記憶部14に記憶されているテンプレート(Enc(X))とに基づいて、生体情報Xと生体情報Yとの近さを示す指標を暗号化したデータである秘匿化指標を算出する(ステップS12)。ステップS12において、秘匿化指標算出部16は、Enc(X)を復号することなく、秘匿化指標を算出する。
本例では、上記の指標として生体情報Xと生体情報Yの内積を採用する。すなわち、秘匿化指標算出部16は、生体情報Yとテンプレートとに基づいて、生体情報Xと生体情報Yの内積を暗号化したデータ(秘匿化指標)を算出する。この暗号化された内積の算出方法については、既に説明したので、ここでは説明を省略する。また、前述のように、指標は内積に限定されず、指標として、例えば、「XとYのハミング距離」や、「XとYのユークリッド距離の二乗」を採用してもよい。
次に、秘匿化指標送信部17は、ステップS12で算出された秘匿化指標を第2のサーバ40に送信する(ステップS13)。
そして、第2のサーバ40の秘匿化指標受信部42は、その秘匿化指標をクライアント10から受信する(ステップS14)。
次に、判定部43は、秘密鍵記憶部41に記憶されている秘密鍵skによって、秘匿化指標から指標を復号する(ステップS15)。さらに、判定部43は、秘匿化指標から復号された指標が、予め定められた所定範囲内の値であるか否かを判定することによって、生体情報Xと生体情報Yとが合致するか否かを判定する(ステップS16)。
図4では、ステップS16で、生体情報Xと生体情報Yとが合致すると判定された場合を示している。ステップS16で、生体情報Xと生体情報Yとが合致すると判定されると、証明書生成部45は、証明鍵記憶部44に記憶されている証明鍵sakを用いて、証明書を生成する(ステップS17)。
ステップS17の後、結果送信部46は、生体情報Xと生体情報Yとが合致するという判定結果、および、ステップS17で生成された証明書を、クライアント10に送信する(ステップS18)。
クライアント10の結果受信部18は、その判定結果および証明書を、第2のサーバ40から受信する(ステップS19)。
ステップS16で、生体情報Xと生体情報Yとが合致しないと判定された場合には、証明書生成部45は証明書を生成しない(すなわち、ステップS17は実行されない)。そして、ステップS18において、結果送信部46は、生体情報Xと生体情報Yとが合致しないという判定結果をクライアント10に送信する。この場合、証明書は生成されないので、結果送信部46は、証明書を送信しない。そして、クライアント10の結果受信部18は、生体情報Xと生体情報Yとが合致しないという判定結果を受信する。クライアント10の結果受信部18が生体情報Xと生体情報Yとが合致しないという判定結果を受信した場合、生体情報Yの入力に対する処理を終了する。
図5は、クライアント10が、生体情報Xと生体情報Yとが合致するという判定結果、および、証明書を、第2のサーバ40から受信した後の処理経過の例を示すフローチャートである。なお、既に説明した事項については、詳細な説明を省略する。
クライアント10の結果受信部18が、生体情報Xと生体情報Yとが合致するという判定結果、および、証明書を、第2のサーバ40から受信した場合、署名生成部21は、メッセージ受信部19が既に第1のサーバ30から受信しているメッセージ(チャレンジ)に基づいて、署名鍵sukを用いて署名を生成する(ステップS31)。前述のように、この署名は、チャレンジレスポンス方式におけるレスポンスに該当する。
なお、既に説明したように、結果受信部18が第2のサーバ40から、生体情報Xと生体情報Yとが合致するという判定結果、および、証明書を受信した時点で、メッセージ受信部19が第1のサーバ30にメッセージの送信を要求し、その要求に応じてメッセージ送信部31が送信したメッセージをメッセージ受信部19が受信し、その後、署名生成部21が署名を生成してもよい。
ステップS31の後、署名送信部22は、ステップS31で生成された署名と、結果受信部18が第2のサーバ40から受信した証明書とを、第1のサーバ30に送信する(ステップS32)。
第1のサーバ30の署名受信部32は、その署名および証明書をクライアント10から受信する(ステップS33)。
次に、署名判定部34は、第1の検証鍵pukと、メッセージ送信部31が事前にクライアント10に送信したメッセージと、ステップS33で署名受信部32がクライアント10から受信した署名とを用いて、その署名が正しい署名であるか否かを判定する(ステップS34)。
また、証明書判定部36は、第2の検証鍵pakと、ステップS33で署名受信部32がクライアント10から受信した証明書とを用いて、その証明書が正しい証明書であるか否かを判定する(ステップS35)。
ステップS34およびステップS35の順序は問わない。ステップS34およびステップS35が並列に実行されてもよい。
そして、認証判定部37は、署名判定部34の判定結果と、証明書判定部36の判定結果とに基づいて、被認証者の認証に成功したか失敗したかを判定する(ステップS36)。署名が正しい署名であると判定されたという条件と、証明書が正しい証明書であると判定されたという条件の両方が満たされた場合に、認証判定部37は、被認証者の認証に成功したと判定する。上記の2つの条件のうちのいずれか一方、または、両方が満たされなかった場合には、認証判定部37は、被認証者の認証に失敗したと判定する。
図4および図5を参照して説明した処理は、繰り返し実行されてよい。
本実施形態によれば、クライアント10が、秘匿化指標算出部16で算出した秘匿化指標を第2のサーバ40に送信する。そして、第2のサーバ40では、判定部43が、秘匿化指標から指標を復号し、復号によって得られた指標に基づいて、照合情報と登録情報とが合致するか否かを判定する。照合情報と登録情報とが合致すると判定した場合、証明書生成部45が、証明鍵sakを用いて、その旨を示す証明書を生成する。そして、第2のサーバ40は、照合情報と登録情報とが合致するという判定結果、および、証明書を、クライアント10に送信する。すると、クライアント10において、署名生成部21は、第1のサーバ30から取得したメッセージに基づいて、署名鍵sukを用いて署名を生成する。そして、クライアント10は、署名(メッセージに対するレスポンス)および証明書を第1のサーバ30に送信する。第1のサーバ30では、署名判定部34が、第1の検証鍵pukとメッセージと署名とを用いて、署名が正しい署名であるか否かを判定する。また、証明書判定部36が、第2の検証鍵pakと証明書とを用いて、証明書が正しい証明書であるか否かを判定する。そして、認証判定部37は、署名が正しい署名であると判定されたという条件と、証明書が正しい証明賞であると判定されたという条件の両方が満たされた場合に、被認証者の認証に成功したと判定する。
従って、クライアント10にマルウェアや不正なアプリケーションソフトウェアが組み込まれたとしても、マルウェアや不正なアプリケーションソフトウェアに起因して、認証に成功したと判定することを防止することができる。すなわち、実際には照合情報と登録情報とが合致するか否かの判定が行われていなくても、マルウェア等が、照合情報と登録情報とが合致するという偽の判定結果を署名生成部21に与えることによって、署名生成部21が、署名鍵sukを用いて、メッセージに基づいて署名を生成したとする。そして、その署名が第1のサーバ30に送信され、署名判定部34が、署名が正しい署名であると判定したとする。しかし、この場合、実際には照合情報と登録情報とが合致するか否かの判定が行われていないので、第2のサーバ40の証明書生成部45が証明書を生成しない。従って、第1のサーバ30において、証明書判定部36は、証明書が正しい証明書であるか否かを判定しない。その結果、認証判定部37が、被認証者の認証に成功したと判定することはない。さらに、クライアント10に組み込まれたマルウェア等が証明書を偽造して、その証明書を第1のサーバ30に送信したとしても、クライアント10やマルウェアは、第2の証明鍵pakと対になる証明鍵sakを持たないため、証明書判定部36は、偽造された証明書が正しい証明書であると判定することはない。このように、本実施形態では、2つの要素を利用した認証を行う場合において、照合情報と登録情報とが合致するか否かの判定を行っていないにも関わらず被認証者の認証に成功したと判定することを防止できるという効果が得られる。
次に、上記の実施形態の種々の変形例について説明する。
上記の実施形態では、クライアント10と第2のサーバ40とが、秘匿化指標を授受することによって、第2のサーバ40の判定部43が、生体情報Xと生体情報Yとが合致するか否かを判定する。判定部43が判定結果を導出する際のクライアント10と第2のサーバ40との通信において、チャレンジレスポンス方式を適用してもよい。
また、クライアント10の秘匿化部13はテンプレートを生成する際に乱数を用いてテンプレートを生成してもよい。この場合、クライアント10は、テンプレート生成後に、その乱数を第2のサーバ40に送信し、その後、その乱数を消去する。第2のサーバ40は、乱数を受信すると、クライアント10にIDを割り当て、そのIDをクライアント10に通知する。クライアント10の秘匿化指標送信部17は、秘匿化指標を第2のサーバ40に送信する際、そのIDも送信する。第2のサーバ40は、秘匿化指標から指標を復号する際、そのIDに対応する乱数も用いて指標を復号すればよい。
従って、生体情報Xと生体情報Yとが合致するか否かの判定のためにクライアント10から第2のサーバ40に送信されるデータは、上記の第1の実施形態で説明した秘匿化情報(XとYの内積を暗号化したデータ)に限定されない。
これらの点は、他の実施形態でも同様である。
また、上記の実施形態では、証明書は、第2のサーバ40からクライアント10を介して第1のサーバ30に送られる。第2のサーバ40が証明書を、通信ネットワークを介して直接、第1のサーバ30に送信してもよい。この場合、第2のサーバ40の結果送信部46は、生体情報Xと生体情報Yとが合致するという判定結果をクライアント10に送信するとともに、証明書を、通信ネットワークを介して直接、第1のサーバ30に送信すればよい。そして、第1のサーバ30において、例えば、署名受信部32が、その証明書を受信すればよい。
クライアント10において、結果受信部18がその判定結果を受信すると、署名生成部21が署名を生成し、署名送信部22がその署名を、第1のサーバ30に送信すればよい。そして、第1のサーバ30がその署名を受信すればよい。このように、第1のサーバ30が、第2のサーバ40から証明書を受信し、クライアント10から署名を受信した後、第1のサーバ30は、ステップS34(図5参照)以降の処理を行えばよい。
ここで、第1のサーバ30は、署名と証明書の対応付けを認識する必要がある。そのため、本変形例では、第1のサーバ30に送信される署名および証明書は、両者の対応が確認できるデータとともに第1のサーバ30に送信される。両者(署名および証明書)の対応が確認できるデータは、例えば、その両者に共通のデータであってもよい。以下、両者の対応が確認できるデータが、両者に共通のデータである場合を例にして説明する。この共通のデータとして、例えば、クライアント10と第2のサーバ40との間の通信のセッションIDや、第1のサーバ30がクライアント10に送信するメッセージ(チャレンジ)、これらの組合せ、または、これらの1つまたは複数、あるいは、それらから生成されたデータを用いることができる。ただし、これらのデータは例示であり、上記の共通のデータは、セッションIDやメッセージ等に限定されない。
共通のデータがセッションIDである場合における処理の一例を説明する。結果送信部46は、第1のサーバ30に証明書を送信するときに、クライアント10と第2のサーバ40との間の通信のセッションIDとともに証明書を第1のサーバ30に送信する。この場合、クライアント10の署名送信部22は、署名生成部21によって生成された署名を第1のサーバ30に送信するときに、そのセッションIDとともに署名を第1のサーバ30に送信する。そして、第1のサーバ30は、セッションIDが共通である署名および証明書に対して、ステップS34(図5参照)以降の処理を行えばよい。
共通のデータがメッセージ(チャレンジ)である場合における処理の一例を説明する。この場合、例えば、秘匿化指標送信部17が、秘匿化指標とともにメッセージを第2のサーバ40に送信すればよい。ただし、クライアント10から第2のサーバ40へのメッセージの送信態様は、上記の例に限定されない。結果送信部46は、第1のサーバ30に証明書を送信するときに、クライアント10から受信したメッセージとともに証明書を第1のサーバ30に送信する。この場合、クライアント10の署名送信部22は、署名生成部21によって生成された署名を第1のサーバ30に送信するときに、そのメッセージとともに署名を第1のサーバ30に送信する。そして、第1のサーバ30は、メッセージが共通である署名および証明書に対して、ステップS34(図5参照)以降の処理を行えばよい。
また、上記の実施形態では、証明鍵sakが、公開鍵方式における秘密鍵であり、第2の検証鍵pakが、公開鍵方式における公開鍵である場合を例にして説明した。証明鍵sakおよび第2の検証鍵pakが、共通鍵方式における共通鍵であってもよい。
さらに、証明鍵sakおよび第2の検証鍵pakが、共通鍵方式における共通鍵である場合、証明書生成部45が生成する証明書は、データと、メッセージ認証コード(Message Authentication Code :MAC)における、そのデータを用いて生成されるタグとの組であってもよい。メッセージ認証コードにおけるタグは、データと、タグ生成時に用いる鍵によって生成される。そして、データおよび鍵の組が共通であれば、生成されるタグも共通である。ここでは、タグ生成時に用いるデータが、タイムスタンプ(例えば、クライアント10から秘匿化指標を受信した時刻のタイムスタンプ)である場合を例にして説明する。ただし、タグ生成時に用いるデータは、タイムスタンプに限定されず、証明書を生成するために用いるデータとして例示した種々のデータ(クライアント10のID等の種々のデータ)であってもよい。
証明書生成部45は、証明鍵sakと、タイムスタンプとを用いて、メッセージ認証コードにおけるタグを生成する。そして、タイムスタンプと生成されたタグとの組が、証明書として第1のサーバ30に送られる。証明書が第2のサーバ40から第1のサーバ30に送られる態様は、クライアント10を介して第1のサーバ30に送られる態様であってもよく、あるいは、クライアント10を介さずに、第2のサーバ40から直接、第1のサーバ30に送られる態様であってもよい。前者の態様の場合、結果送信部46が、証明書をクライアント10に送信し、署名送信部22がその証明書と署名とを第1のサーバ30に送信すればよい。後者の場合、結果送信部46が、証明書を、通信ネットワークを介して直接第1のサーバ30に送信すればよい。
第1のサーバ30において、例えば、署名受信部32が証明書を受信すると、証明書判定部36は、証明書生成時(タグ生成時)に用いられた証明鍵が第2の検証鍵pakと対になる証明鍵sakであるか否かを判定することによって証明書が正しい証明書であるか否かを判定すればよい。すなわち、証明書判定部36は、第2の検証鍵pakと、取得した証明書に含まれるタイムスタンプとを用いて、メッセージ認証コードにおけるタグを生成する。証明書判定部36は、生成したタグと、取得した証明書に含まれるタグとが一致していれば、証明書生成時(タグ生成時)に用いられた証明鍵が第2の検証鍵pakと対になる証明鍵sakであると判定する。この場合、証明書判定部36は、受信した証明書が正しい証明書であると判定する。また、証明書判定部36は、生成したタグと、取得した証明書に含まれるタグとが一致していなければ、証明書生成時(タグ生成時)に用いられた証明鍵が第2の検証鍵pakと対になる証明鍵sakではないと判定する。この場合、証明書判定部36は、受信した証明書が不正な証明書であると判定する。
また、第1のサーバ30とクライアント10との間のチャレンジレスポンスの授受が複数回行われる毎に、ステップS34~S36の処理を実行する構成であってもよい。すなわち、第1のサーバ30がクライアント10にメッセージ(チャレンジ)を送信し、第1のサーバ30は、署名(レスポンス)および証明書を取得するが、このチャレンジレスポンスの授受が複数回行われる毎に、ステップS34~S36の処理を実行すればよい。換言すれば、ステップS34~S36の処理を毎回は行わない構成であってもよい。この場合、ステップS34~S36の処理を行わないときには、例えば、ステップS35の処理を省略してよい。そして、認証判定部37は、署名判定部34によって、署名が正しい署名であると判定されたならば、被認証者の認証に成功したと判定し、署名が不正な署名であると判定されたならば、被認証者の認証に失敗したと判定してもよい。この点は、他の実施形態でも同様である。
さらに、第1のサーバ30は、通常とは異なる事象を検出したとき、証明書の送信元が所定の送信元(例えば、攻撃者と認められる送信元)であるとき、あるいは、証明書の送信元が所定の送信元(ここでは、例えば、正規ユーザに該当する送信元)でないときに、ステップS34~S36の処理を実行し、その他の場合には、ステップS35の処理を省略する構成であってもよい。ステップS35の処理を省略する場合、上記のように、認証判定部37は、署名判定部34によって、署名が正しい署名であると判定されたならば、被認証者の認証に成功したと判定し、署名が不正な署名であると判定されたならば、被認証者の認証に失敗したと判定すればよい。この点は、他の実施形態でも同様である。
実施形態2.
図6は、本発明の第2の実施形態の認証システムの構成例を示すブロック図である。第1の実施形態と同様の要素については、図3と同一の符号を付し、第1の実施形態と同様の動作に関しては説明を省略する。
第2の実施形態の認証システムは、クライアント10と、サーバ50とを備える。クライアント10は複数存在していてもよい。クライアント10とサーバ50とは、通信ネットワークを介して通信可能である。
第2の実施形態におけるクライアント10が備える各要素は、第1の実施形態におけるクライアント10が備える各要素と同様である。
サーバ50は、メッセージ送信部31と、署名受信部32と、第1の検証鍵記憶部33と、署名判定部34と、認証判定部37と、秘密鍵記憶部41と、秘匿化指標受信部42と、判定部43と、結果送信部46とを備える。
以下の説明では、既に、クライアント10が備える公開鍵記憶部11には公開鍵pkが記憶され、署名鍵記憶部20には署名鍵sukが記憶されているものとする。また、既に、サーバ50が備える秘密鍵記憶部41には秘密鍵skが記憶され、第1の検証鍵記憶部33には第1の検証鍵pukが記憶されているものとする。
判定部43が生体情報Xと生体情報Yとが合致するか否かを判定するまでの動作は、第1の形態において、判定部43が生体情報Xと生体情報Yとが合致するか否かを判定するまでの動作と同様であるので、説明を省略する。
第2の実施形態では、判定部43は、生体情報Xと生体情報Yとが合致すると判定した場合に、その判定結果を、認証判定部37に送る。
生体情報Xと生体情報Yとが合致しないと判定した場合には、判定部43は、その判定結果を、認証判定部37に送らなくてよい。ただし、生体情報Xと生体情報Yとが合致しないと判定した場合においても、判定部43は、判定結果を認証判定部37に送ってもよい。以下では、生体情報Xと生体情報Yとが合致しないと判定した場合には、判定部43が、その判定結果を、認証判定部37に送らない場合を例にして説明する。
また、第2の実施形態では、結果送信部46は、判定結果によらず、判定部43の判定結果をクライアント10に送信する。
結果受信部18は、結果送信部46が送信した判定部43の判定結果を受信する。結果受信部18が、生体情報Xと生体情報Yとが合致しないという判定結果を受信した場合、生体情報Yの入力に対する処理を終了する。
以下、結果受信部18が、生体情報Xと生体情報Yとが合致するという判定結果を受信した場合について説明する。この場合、署名生成部21は、メッセージ受信部19がサーバ50(具体的には、メッセージ送信部31)から受信したメッセージ(チャレンジ)に基づいて、署名鍵sukを用いて署名(レスポンス)を生成する。
クライアント10がメッセージをサーバ50から取得するタイミングは、署名生成前であればよい。例えば、予め、メッセージ送信部31がクライアント10にメッセージを送信し、メッセージ受信部19がそのメッセージを受信し、メッセージ受信部19が、署名生成時までそのメッセージを保持していてもよい。また、例えば、結果受信部18がサーバ50から、生体情報Xと生体情報Yとが合致するという判定結果を受信した時点で、メッセージ受信部19がサーバ50にメッセージの送信を要求し、その要求に応じてメッセージ送信部31が送信したメッセージを受信し、その後、署名生成部21が署名を生成してもよい。これらの点は、第1の実施形態と同様である。
署名送信部22は、署名生成部21が生成した署名をサーバ50に送信する。また、サーバ50の署名受信部32は、その署名を受信する。
ここで、サーバ50は、署名と、判定部43が認証判定部37に送る判定結果との対応付けを認識する必要がある。そのため、第2の実施形態では、両者の対応が確認できるデータが、署名と、判定部43が認証判定部37に送る判定結果とに付加される。両者の対応が確認できるデータは、例えば、その両者に共通のデータであってもよい。以下、両者の対応が確認できるデータが、両者に共通のデータである場合を例にして説明する。この共通のデータとして、例えば、クライアント10とサーバ50との間のセッションIDや、サーバ50のメッセージ送信部31がクライアント10に送信するメッセージ(チャレンジ)、これらの組合せ、または、これらの1つまたは複数、あるいは、それらから生成されたデータを用いることができる。ただし、これらのデータは例示であり、上記の共通のデータは、セッションIDやメッセージ等に限定されない。
共通のデータがセッションIDである場合における処理の一例を説明する。判定部43は、認証判定部37に判定結果(生体情報Xと生体情報Yとが合致するという判定結果)を送るときに、クライアント10とサーバ50との間の通信のセッションIDを付加した判定結果を認証判定部37に送る。また、クライアント10の署名送信部22は、署名生成部21によって生成された署名をサーバ50に送信するときに、そのセッションIDを付加した署名をサーバ50に送信する。
認証判定部37は、署名に対する署名判定部34の判定結果と、その署名と共通のデータが付加された、判定部43から送られた判定結果とに基づいて、認証に成功したか失敗したかを判定する。
サーバ50において、秘匿化指標受信部42、結果送信部46、メッセージ送信部31および署名受信部32は、例えば、サーバ用プログラムに従って動作するコンピュータのCPU、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、通信インタフェースを用いて、秘匿化指標受信部42、結果送信部46、メッセージ送信部31および署名受信部32として動作すればよい。また、判定部43、署名判定部34および認証判定部37は、例えば、サーバ用プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが上記のようにプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、判定部43、署名判定部34および認証判定部37として動作すればよい。また、秘密鍵記憶部41および第1の検証鍵記憶部33は、コンピュータが備える記憶装置によって実現される。
以下、第2の実施形態の処理経過について説明する。前述のように、判定部43が生体情報Xと生体情報Yとが合致するか否かを判定するまでの動作は、第1の実施形態と同様であるので、説明を省略する。また、判定部43が、生体情報Xと生体情報Yとが合致しないと判定した場合、その判定結果が、結果送信部46から結果受信部18に送られ、処理を終了する。
以下の説明では、判定部43が生体情報Xと生体情報Yとが合致すると判定した後の処理経過を説明する。図7は、第2の実施形態において、判定部43が生体情報Xと生体情報Yとが合致すると判定した後の処理経過の例を示すフローチャートである。なお、既に説明した事項については、詳細な説明を省略する。
判定部43は、生体情報Xと生体情報Yとが合致すると判定すると、その判定結果と対応付けられる署名に付加されるデータと共通のデータ(例えば、クライアント10とサーバ50との通信のセッションID)を、その判定結果に付加し、その判定結果を認証判定部37に送る(ステップS42)。なお、セッションIDは、判定部43による判定結果および署名に付加されるデータの一例であり、判定部43による判定結果および署名には共通のデータが付加されればよい。
また、結果送信部46は、生体情報Xと生体情報Yとが合致するという判定結果をクライアント10に送信し(ステップS43)、クライアント10の結果受信部18は、その判定結果を受信する(ステップS44)。
結果受信部18が生体情報Xと生体情報Yとが合致するという判定結果を受信した場合、署名生成部21は、メッセージ受信部19が既にサーバ50から受信しているメッセージ(チャレンジ)に基づいて、署名鍵sukを用いて署名を生成する(ステップS45)。なお、メッセージ受信部19は、結果受信部18がサーバ50から、生体情報Xと生体情報Yとが合致するという判定結果を受信した時点で、サーバ50にメッセージの送信を要求し、サーバ50からメッセージを受信してもよい。
また、署名生成部21は、その署名と対応付けられる判定結果(判定部43による判定結果)に付加されるデータと共通のデータ(例えば、クライアント10とサーバ50との通信のセッションID)を署名に付加する。
そして、署名送信部22は、その署名をサーバ50に送信し(ステップS46)、サーバ50の署名受信部32は、その署名を受信する(ステップS47)。
次に、署名判定部34は、第1の検証鍵pukと、メッセージ送信部31が事前にクライアント10に送信したメッセージと、ステップS47で署名受信部32がクライアント10から受信した署名とを用いて、その署名が正しい署名であるか否かを判定する(ステップS48)。
そして、認証判定部37は、署名判定部34による判定結果と、署名判定部34が判定に用いた署名に付加されたデータと共通のデータが付加された判定部43による判定結果とに基づいて、被認証者の認証に成功したか失敗したかを判定する(ステップS50)。署名が正しい署名であると判定されたという条件と、判定部43から生体情報Xと生体情報Yとが合致するという判定結果が得られているという条件の両方が満たされた場合に、認証判定部37は、被認証者の認証に成功したと判定する。上記の2つの条件のうちのいずれか一方、または、両方が満たされなかった場合には、認証判定部37は、被認証者の認証に失敗したと判定する。
本実施形態では、上記のように、署名が正しい署名であると判定されたという条件と、判定部43から生体情報Xと生体情報Yとが合致するという判定結果が得られているという条件の両方が満たされた場合に、認証判定部37は、被認証者の認証に成功したと判定する。従って、第1の実施形態と同様の効果が得られる。すなわち、クライアント10にマルウェア等が組み込まれたとしても、照合情報と登録情報とが合致するか否かの判定を行っていないにも関わらず被認証者の認証に成功したと判定することを防止できる。
次に、第2の実施形態の変形例について説明する。なお、既に説明した事項についての説明は省略する。
サーバ50が、判定部43による判定結果をクライアント10に通知しなくてもよい。この場合、クライアント10の署名生成部21は、判定部43による判定結果が通知されない状態で、メッセージ受信部19が受信したメッセージに基づいて、署名鍵sukを用いて署名を生成する。
また、他の変形例として、判定部43が生体情報Xと生体情報Yとが合致すると判定した場合にのみ、メッセージ送信部31が、クライアント10にメッセージを送信してもよい。そして、クライアント10において、署名生成部21は、メッセージ受信部19がそのメッセージを受信したときに、そのメッセージに基づいて、署名鍵sukを用いて署名を生成する。そして、署名送信部22は、その署名をサーバ50に送信する。この変形例では、署名生成部21が署名を生成し、署名送信部22がその署名をサーバ50に送信するのは、生体情報Xと生体情報Yとが合致すると判定された場合のみである。従って、この変形例では、署名と、判定部43が認証判定部37に送る判定結果とを対応付けるためのデータは用いられなくてよい。また、この変形例では、生体情報Xと生体情報Yとが合致すると判定されたか否かによらず、サーバ50は、判定部43による判定結果をクライアント10に通知してもよく、あるいは、通知しなくてもよい。
また、他の変形例として、クライアント10が秘匿化指標をサーバ50に送信するときに、秘匿化指標送信部17(署名送信部22でもよい。)が、秘匿化指標と、署名生成部21が生成した署名とを一緒にサーバ50に送信してもよい。この変形例では、署名生成部21は、判定部43による判定結果を取得することなく(より具体的には、判定部43が判定処理を行う前に)、メッセージ受信部19が受信したメッセージに基づいて、署名鍵sukを用いて署名を生成する。この変形例では、サーバ50は、秘匿化指標と署名を一緒に受信する。従って、秘匿化指標に基づいて判定部43によって導出された判定結果と署名との対応付けをサーバ50は認識することができる。よって、本変形例では、署名と、判定部43が認証判定部37に送る判定結果とを対応付けるためのデータは用いられなくてよい。
また、第1の実施形態の種々の変形例は、適宜、第2の実施形態にも適用可能である。
実施形態3.
図8は、本発明の第3の実施形態の認証システムの構成例を示すブロック図である。第1の実施形態や第2の実施形態と同様の要素については、図3や図6と同一の符号を付す。また、第1の実施形態や第2の実施形態と同様の動作については、説明を省略する。
第3の実施形態の認証システムは、クライアント10と、第1のサーバ30と、第2のサーバ40とを備える。クライアント10は複数存在していてもよい。クライアント10と、第1のサーバ30と、第2のサーバ40とは、通信ネットワークを介して通信可能である。
第3の実施形態では、クライアント10は、公開鍵記憶部11と、登録情報入力部12と、秘匿化部13と、秘匿化情報記憶部14と、照合情報入力部15と、秘匿化指標算出部16と、秘匿化指標送信部17と、メッセージ受信部19と、署名鍵記憶部20と、署名生成部21とを備える。
公開鍵記憶部11、登録情報入力部12、秘匿化部13、秘匿化情報記憶部14、照合情報入力部15、秘匿化指標算出部16、メッセージ受信部19および署名鍵記憶部20は、第1の実施形態におけるそれらの各要素と同様である。
第3の実施形態では、署名生成部21は、生体情報Xと生体情報Yとが合致するか否かの判定結果を第2のサーバ40から受信することなく、署名を生成する。例えば、署名生成部21は、秘匿化指標送信部17が秘匿化指標を第2のサーバ40に送信するタイミングより前に署名を生成すればよい。ただし、署名生成部21が署名を生成するタイミングは上記の例に限定されない。
署名生成部21は、メッセージ受信部19が第1のサーバ30から受信したメッセージに基づいて、署名鍵sukを用いて署名を生成する。この点は、前述の各実施形態と同様である。メッセージ受信部19は、署名生成部21が署名を生成する時までに、第1のサーバ30からメッセージを受信すればよい。例えば、署名生成部21が署名を生成する際に、メッセージ受信部19がサーバ50にメッセージの送信を要求し、その要求に応じてメッセージ送信部31が送信したメッセージをメッセージ受信部19が受信してもよい。
第3の実施形態では、秘匿化指標送信部17は、秘匿化指標だけでなく、署名生成部21に生成された署名も、第2のサーバに送信する。以下では、秘匿化指標送信部17が秘匿化指標および署名を一緒に第2のサーバに送信する場合を例にする。
第3の実施形態では、第2のサーバ40は、秘密鍵記憶部41と、秘匿化指標受信部42と、判定部43と、署名送信部22とを備える。秘密鍵記憶部41および判定部43は、第1の実施形態におけるそれらの各要素と同様である。
第3の実施形態では、秘匿化指標受信部42は、秘匿化指標だけでなく、署名生成部21に生成された署名もクライアント10から受信する。本例では、秘匿化指標受信部42は、秘匿化指標および署名を一緒にクライアント10から受信する。
第2のサーバ40に備えられている署名送信部22は、判定部43によって生体情報Xと生体情報Yとが合致するという判定結果が得られたことを条件に、秘匿化指標受信部42がクライアント10から受信した署名(クライアント10の署名生成部21で生成された署名)を、第1のサーバ30に送信する。
第3の実施形態において、第1のサーバ30は、メッセージ送信部31と、署名受信部32と、第1の検証鍵記憶部33と、署名判定部34とを備える。メッセージ送信部31および第1の検証鍵記憶部33は、第1の実施形態におけるそれらの各要素と同様である。
第3の実施形態では、署名受信部31は、第2のサーバ40に備えられている署名送信部22が送信した署名を受信する。
また、署名判定部34は、第1の検証鍵pukと、メッセージ送信部31がクライアント10に送信したメッセージ(チャレンジに該当するメッセージ)と、署名受信部32が第2のサーバ40から受信した署名とを用いて、署名が正しい署名であるか否かを判定する。換言すれば、署名判定部34は、受信した署名が、そのメッセージに基づいて、第1の検証鍵pukと対になる署名鍵sukを用いて生成された署名であるか否かを判定する。この動作は、第1の実施形態における署名判定部34の動作と同様である。
さらに、署名判定部34は、署名が正しい署名であると判定されたという条件と、生体情報Xと生体情報Yとが合致するという判定結果が得られているという条件の両方が満たされた場合に、被認証者の認証に成功したと判定する。上記の2つの条件のうちのいずれか一方、または、両方が満たされなかった場合には、署名判定部34は、被認証者の認証に失敗したと判定する。すなわち、第3の実施形態では、署名判定部34は、第2の実施形態における認証判定部37を含んでいると言うことができる。
前述のように、署名送信部22は、判定部43によって生体情報Xと生体情報Yとが合致するという判定結果が得られたことを条件に、署名を第1のサーバ30に送信する。従って、署名受信部31が署名を受信したということは、生体情報Xと生体情報Yとが合致するという判定結果が得られていることを意味する。すなわち、署名受信部31が署名を受信したことによって、署名送信部22は、生体情報Xと生体情報Yとが合致するという判定結果が得られているという条件が満たされていると判定する。
クライアント10において、秘匿化指標送信部17およびメッセージ受信部19は、例えば、クライアント用プログラムに従って動作するコンピュータのCPU、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からクライアント用プログラムを読み込み、そのプログラムに従って、通信インタフェースを用いて、秘匿化指標送信部17およびメッセージ受信部19として動作すればよい。また、秘匿化部13、秘匿化指標算出部16および署名生成部21は、例えば、クライアント用プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが上記のようにプログラム記録媒体からクライアント用プログラムを読み込み、そのプログラムに従って、秘匿化部13、秘匿化指標算出部16および署名生成部21として動作すればよい。また、公開鍵記憶部11、秘匿化情報記憶部14および署名鍵記憶部20は、例えば、クライアント10を実現するコンピュータが備える記憶装置によって実現される。
第2のサーバ40において、秘匿化指標受信部42および署名送信部22は、例えば、サーバ用プログラムに従って動作するコンピュータのCPU、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、通信インタフェースを用いて、秘匿化指標受信部42および署名送信部22として動作すればよい。また、判定部43は、例えば、サーバ用プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが上記のようにプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、判定部43として動作すればよい。また、秘密鍵記憶部41は、例えば、第2のサーバ40を実現するコンピュータが備える記憶装置によって実現される。
第1のサーバ30において、メッセージ送信部31および署名受信部32は、例えば、サーバ用プログラムに従って動作するコンピュータのCPU、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、通信インタフェースを用いて、メッセージ送信部31および署名受信部32として動作すればよい。また、署名判定部34は、例えば、サーバ用プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが上記のようにプログラム記録媒体からサーバ用プログラムを読み込み、そのプログラムに従って、署名判定部34として動作すればよい。また、第1の検証鍵記憶部33は、例えば、第1のサーバ30を実現するコンピュータが備える記憶装置によって実現される。
本実施形態では、第1のサーバ30と第2のサーバ40は、別のサーバであるので、第1のサーバ30に搭載されるサーバ用プログラムと、第2のサーバ40に搭載されるサーバ用プログラムは別のプログラムである。
次に、処理経過について説明する。図9は、第3の実施形態の処理経過の例を示すフローチャートである。なお、既に説明した事項については、詳細な説明を省略する。なお、本例では、メッセージ受信部19は、既に、メッセージを受信し、そのメッセージを保持しているものとする。
まず、被認証者の生体情報Yが照合情報入力部15に入力される(ステップS61)。すると、秘匿化指標算出部16は、その生体情報Yと、秘匿化情報記憶部14に記憶されているテンプレートとに基づいて、生体情報Xと生体情報Yとの近さを示す指標を暗号化した秘匿化指標を算出する(ステップS62)。ステップS61,S62は、ステップS11,S12(図4参照)と同様である。
また、署名生成部21は、メッセージ受信部19が受信済みのメッセージに基づいて、署名鍵sukを用いて署名を生成する(ステップS63)。なお、ステップS63は、ステップS61やステップS62よりも前に実行されてもよい。
次に、秘匿化指標送信部17は、ステップS62で生成された秘匿化指標と、ステップS63で生成された署名を、第2のサーバ40に送信する(ステップS64)。
第2のサーバ40の秘匿化指標受信部42は、その秘匿化指標および署名を、クライアント10から受信する(ステップS65)。
次に、判定部43は、秘密鍵skによって、秘匿化指標から指標を復号する(ステップS66)。さらに、判定部43は、その指標が、予め定められた所定範囲内の値であるか否かを判定することによって、生体情報Xと生体情報Yとが合致するか否かを判定する(ステップS67)。ステップS66,S67は、ステップS15,S16(図4参照)と同様である。
そして、署名送信部22は、判定部43によって生体情報Xと生体情報Yとが合致するという判定結果が得られたことを条件に、ステップS65でクライアント10から受信した署名を、第1のサーバ30に送信する(ステップS68)。なお、ステップS67で、生体情報Xと生体情報Yとが合致しないという判定結果が得られた場合、ステップS68以降の処理は実行せずに、例えば、その時点で、生体情報Yに対する処理を終了する。その際、第2のサーバ40は、判定結果をクライアント10に通知してもよく、あるいは、通知しなくてもよい。
第1のサーバ30の署名受信部32は、ステップS68で送信された署名を受信する(ステップS69)。
次に、署名判定部34は、第1の検証鍵pukと、メッセージ送信部31がクライアント10に送信したメッセージと、署名受信部32が第2のサーバ40から受信した署名とを用いて、署名が正しい署名であるか否かを判定する(ステップS70)。
さらに、署名判定部34は、署名が正しい署名であると判定されたという条件と、生体情報Xと生体情報Yとが合致するという判定結果が得られているという条件の両方が満たされているか否かを判定することによって、認証に成功したか失敗したかを判定する(ステップS71)。既に説明したように、本実施形態では、署名受信部31が署名を受信したということは、生体情報Xと生体情報Yとが合致するという判定結果が得られていることを意味する。従って、署名判定部34は、ステップS69の完了を確認することで、生体情報Xと生体情報Yとが合致するという判定結果が得られているという条件が満たされていると判定してよい。よって、署名判定部34は、署名が正しい署名であると判定したならば、被認証者の認証に成功したと判定し、署名が不正な署名であると判定したならば、被認証者の認証に失敗したと判定すればよい。
本実施形態では、第2のサーバ40は、クライアント10で生成された署名を、生体情報Xと生体情報Yとが合致するという判定結果が得られたことを条件に、第1のサーバ30に送信する。従って、第1のサーバ30が、第2のサーバ40から署名を受信したということは、生体情報Xと生体情報Yとが合致するという判定結果が得られたことを意味する。そして、第1のサーバ30の署名判定部34は、受信した署名が正しい署名であると判定したならば、認証に成功したと判定し、受信した署名が不正な署名であると判定したならば、認証に失敗したと判定する。従って、署名が正しい署名であると判定されたという条件と、生体情報Xと生体情報Yとが合致するという判定結果が得られているという条件の両方が満たされている場合に、認証に成功したと判定しているということができる。従って、第1の実施形態や第2の実施形態と同様の効果が得られる。すなわち、クライアント10にマルウェア等が組み込まれたとしても、照合情報と登録情報とが合致するか否かの判定を行っていないにも関わらず被認証者の認証に成功したと判定することを防止できる。
また、第1の実施形態の種々の変形例は、適宜、第3の実施形態にも適用可能である。
また、上記の各実施形態において、秘匿化指標算出部16は、例えば、指紋、指の静脈等の複数種類の項目に応じた秘匿化情報を算出し、判定部43は、それらの個々の項目毎に、生体情報Xと生体情報Yとが合致するか否かを判定してもよい。例えば、第1の実施形態では、全ての項目について、XとYとが合致すると判定された場合、証明書生成部45は、それらの項目毎に、個別に証明書を生成してもよい。そして、証明書判定部36は、証明書毎に、証明書が正しい証明書であるか否かを判定してもよい。
図10は、上記の各実施形態やその変形例におけるクライアント10や種々のサーバ(第1の実施形態や第3の形態における第1のサーバ30および第2のサーバ40、並びに、第2の実施形態におけるサーバ50)に係るコンピュータの構成例を示す概略ブロック図である。以下、図10を参照して説明するが、クライアント10として用いられるコンピュータ、第1のサーバ30として用いられるコンピュータ、第2のサーバ40として用いられるコンピュータは、それぞれ別のコンピュータである。また、第2の実施形態においても、クライアント10として用いられるコンピュータと、サーバ50として用いられるコンピュータとは、別々のコンピュータである。
コンピュータ1000は、CPU1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004と、通信インタフェース1005とを備える。
本発明の各実施形態やその変形例におけるクライアント10、第1のサーバ30、第2のサーバ40、サーバ50は、コンピュータ1000で実現される。ただし、上記のように、クライアント10として用いられるコンピュータ、第1のサーバ30として用いられるコンピュータ、第2のサーバ40として用いられるコンピュータ、サーバ50として用いられるコンピュータは、それぞれ別のコンピュータである。
クライアント10を実現するコンピュータ1000の動作は、クライアント用プログラムの形式で補助記憶装置1003に記憶されている。CPU1001は、そのクライアント用プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、そのクライアント用プログラムに従って、上記の各実施形態で説明したクライアント10の動作を実行する。
第1のサーバ30を実現するコンピュータ1000の動作は、サーバ用プログラムの形式で補助記憶装置1003に記憶されている。CPU1001は、そのサーバ用プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、そのサーバ用プログラムに従って、上記の第1の実施形態および第3の実施形態で説明した第1のサーバ30の動作を実行する。
第2のサーバ40を実現するコンピュータ1000の動作は、サーバ用プログラムの形式で補助記憶装置1003に記憶されている。CPU1001は、そのサーバ用プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、そのサーバ用プログラムに従って、上記の第1の実施形態および第3の実施形態で説明した第2のサーバ40の動作を実行する。
サーバ50を実現するコンピュータ1000の動作は、サーバ用プログラムの形式で補助記憶装置1003に記憶されている。CPU1001は、そのサーバ用プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、そのサーバ用プログラムに従って、上記の第2の実施形態で説明したサーバ50の動作を実行する。
補助記憶装置1003は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリ等が挙げられる。また、プログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータ1000がそのプログラムを主記憶装置1002に展開し、そのプログラムに従って動作してもよい。
また、クライアント10の各構成要素の一部または全部は、汎用または専用の回路(circuitry )、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。この点は、第1のサーバ30、第2のサーバ40、サーバ50に関しても同様である。
次に、本発明の概要について説明する。図11は、本発明の認証システムの概要を示すブロック図である。本発明の認証システムは、判定部43と、メッセージ送信部31と、署名判定部34と、認証判定部37と、クライアント10とを備える。クライアント10は、秘匿化情報記憶部14と、秘匿化指標算出部16と、署名生成部21とを備える。
判定部43は、クライアント10によって算出された、登録情報と照合情報との近さを示す指標を秘匿化した秘匿化指標に基づいて、照合情報と登録情報とが合致するか否かを判定する。
メッセージ送信部31は、クライアント10にメッセージを送信する。
署名判定部34は、第1の検証鍵とそのメッセージとクライアント10に生成された署名とを用いて、署名が正しい署名であるか否かを判定する。
認証判定部37は、照合情報と登録情報とが合致すると判定され、かつ、署名が正しい署名であると判定された場合に、認証に成功したと判定する。
秘匿化情報記憶部14は、登録情報を秘匿化した秘匿化情報を記憶する。
秘匿化指標算出部16は、照合情報と、秘匿化情報とに基づいて、秘匿化指標を算出する。
署名生成部21は、署名鍵を用いて、メッセージに基づいて署名を生成する。
そのような構成よれば、照合情報と登録情報とが合致すると判定され、かつ、署名が正しい署名であると判定された場合に、認証に成功したと判定する。従って、2つの要素を利用した認証を行う場合において、照合情報と登録情報とが合致するか否かの判定を行っていないにも関わらず被認証者の認証に成功したと判定することを防止することができる。
上記の本発明の実施形態は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
(付記1)
クライアントを備える認証システムであって、
前記クライアントによって算出された、登録情報と照合情報との近さを示す指標を秘匿化した秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するか否かを判定する判定部と、
前記クライアントにメッセージを送信するメッセージ送信部と、
第1の検証鍵と前記メッセージと前記クライアントに生成された署名とを用いて、前記署名が正しい署名であるか否かを判定する署名判定部と、
前記照合情報と前記登録情報とが合致すると判定され、かつ、前記署名が正しい署名であると判定された場合に、認証に成功したと判定する認証判定部とを備え、
前記クライアントは、
前記登録情報を秘匿化した秘匿化情報を記憶する秘匿化情報記憶部と、
前記照合情報と、前記秘匿化情報とに基づいて、前記秘匿化指標を算出する秘匿化指標算出部と、
署名鍵を用いて、前記メッセージに基づいて前記署名を生成する署名生成部とを備える
ことを特徴とする認証システム。
(付記2)
前記照合情報と前記登録情報とが合致すると判定された場合に、証明鍵を用いて証明書を生成する証明書生成部と、
第2の検証鍵と前記証明書とを用いて、前記証明書が正しい証明書であるか否かを判定する証明書判定部とを備え、
前記署名生成手段は、
前記照合情報と前記登録情報とが合致すると判定された場合に、署名を生成し、
前記認証判定部は、
前記証明書が正しい証明書であると判定され、かつ、前記署名が正しい署名であると判定された場合に、認証に成功したと判定する
付記1に記載の認証システム。
(付記3)
メッセージ送信部、署名判定部、証明書判定部および認証判定部は、第1のサーバに設けられ、
判定部および証明書生成部は、第2のサーバに設けられる
付記2に記載の認証システム。
(付記4)
前記証明書判定部は、前記証明書生成部によって生成された証明書を、クライアントを介して取得する
付記2または付記3に記載の認証システム。
(付記5)
前記証明書判定部が設けられる第1のサーバは、前記証明書生成部によって生成された証明書を、前記証明書生成部が設けられる第2のサーバから、通信ネットワークを介して直接、取得する
付記3に記載の認証システム。
(付記6)
証明鍵および第2の検証鍵は、共通鍵方式における共通鍵である
付記2から付記5のうちのいずれかに記載の認証システム。
(付記7)
前記証明書生成部は、
証明書として、メッセージ認証コードにおけるタグと、前記タグを生成する際に用いたデータとの組を生成する
付記6に記載の認証システム。
(付記8)
証明鍵は、公開鍵方式における秘密鍵であり、第2の検証鍵は、公開鍵方式における公開鍵である
付記2から付記5のうちのいずれかに記載の認証システム。
(付記9)
判定部、メッセージ送信部、署名判定部および認証判定部は、1台のサーバに設けられ、
前記署名生成手段は、
前記照合情報と前記登録情報とが合致すると判定された場合に、署名を生成する
付記1に記載の認証システム。
(付記10)
メッセージ送信部、署名判定部および認証判定部は、第1のサーバに設けられ、
判定部は、第2のサーバに設けられ、
前記第2のサーバは、
前記照合情報と前記登録情報とが合致すると判定されたことを条件に、前記クライアントで生成された署名を前記第1のサーバに送信する署名送信部を備える
付記1に記載の認証システム。
(付記11)
登録情報を秘匿化した秘匿化情報を記憶する秘匿化情報記憶部と、
前記登録情報との照合のために入力される照合情報と、前記秘匿化情報とに基づいて、前記登録情報と前記照合情報との近さを示す指標を秘匿化した秘匿化指標を算出する秘匿化指標算出部と、
前記秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するとサーバに判定された場合に、署名鍵を用いて、与えられたメッセージに基づいて署名を生成する署名生成部と、
前記照合情報と前記登録情報とが合致すると前記サーバに判定された場合に前記サーバが生成する証明書と、前記署名とを出力する署名出力部とを備える
ことを特徴とするクライアント。
(付記12)
クライアントによって算出された、登録情報と照合情報との近さを示す指標を秘匿化した秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するか否かを判定する判定部と、
前記照合情報と前記登録情報とが合致すると判定された場合に、証明鍵を用いて証明書を生成する証明書生成部とを備える
ことを特徴とするサーバ。
(付記13)
クライアントにメッセージを送信するメッセージ送信部と、
照合情報と登録情報とが合致すると判定された場合に前記クライアントが署名鍵を用いて前記メッセージに基づいて生成した署名を取得し、第1の検証鍵と前記メッセージと前記署名とを用いて、前記署名が正しい署名であるか否かを判定する署名判定部と、
前記照合情報と前記登録情報とが合致すると判定された場合に証明鍵を用いて生成された証明書を取得し、第2の検証鍵と前記証明書とを用いて、前記証明書が正しい証明書であるか否かを判定する証明書判定部と、
前記証明書が正しい証明書であると判定され、かつ、前記署名が正しい署名であると判定された場合に、認証に成功したと判定する認証判定部とを備える
ことを特徴とするサーバ。
(付記14)
クライアントによって算出された、登録情報と照合情報との近さを示す指標を秘匿化した秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するか否かを判定する判定部と、
前記クライアントにメッセージを送信するメッセージ送信部と、
前記照合情報と前記登録情報とが合致すると判定された場合に前記クライアントが署名鍵を用いて前記メッセージに基づいて生成した署名を取得し、検証鍵と前記メッセージと前記署名とを用いて、前記署名が正しい署名であるか否かを判定する署名判定部と、
前記照合情報と前記登録情報とが合致すると判定され、かつ、前記署名が正しい署名であると判定された場合に、認証に成功したと判定する認証判定部とを備える
ことを特徴とするサーバ。
(付記15)
クライアントによって算出された、登録情報と照合情報との近さを示す指標を秘匿化した秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するか否かを判定する判定部と、
前記クライアントが所定のサーバから与えられたメッセージに基づいて生成した署名を、前記照合情報と前記登録情報とが合致すると判定されたことを条件に、前記所定のサーバに送信する署名送信部とを備える
ことを特徴とするサーバ。
(付記16)
登録情報を秘匿化した秘匿化情報を記憶する秘匿化情報記憶部を備えるクライアントが、
前記登録情報との照合のために入力される照合情報と、前記秘匿化情報とに基づいて、前記登録情報と前記照合情報との近さを示す指標を秘匿化した秘匿化指標を算出し、
所定のサーバが、
前記秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するか否かを判定し、
前記所定のサーバ、または、前記所定のサーバとは異なるサーバが、前記クライアントにメッセージを送信し、
前記クライアントが、
前記照合情報と前記登録情報とが合致すると判定された場合に、署名鍵を用いて、前記メッセージに基づいて署名を生成し、
前記所定のサーバ、または、前記所定のサーバとは異なるサーバが、
第1の検証鍵と前記メッセージと前記署名とを用いて、前記署名が正しい署名であるか否かを判定し、
前記照合情報と前記登録情報とが合致すると判定され、かつ、前記署名が正しい署名であると判定された場合に、認証に成功したと判定する
ことを特徴とする認証方法。
(付記17)
登録情報を秘匿化した秘匿化情報を記憶する秘匿化情報記憶部を備え、クライアントとして動作するコンピュータに搭載されるクライアント用プログラムであって、
前記コンピュータに、
前記登録情報との照合のために入力される照合情報と、前記秘匿化情報とに基づいて、前記登録情報と前記照合情報との近さを示す指標を秘匿化した秘匿化指標を算出する秘匿化指標算出処理、
前記秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するとサーバに判定された場合に、署名鍵を用いて、与えられたメッセージに基づいて署名を生成する署名生成処理、および、
前記照合情報と前記登録情報とが合致すると前記サーバに判定された場合に前記サーバが生成する証明書と、前記署名とを出力する署名出力処理
を実行させるためのクライアント用プログラム。
(付記18)
サーバとして動作するコンピュータに搭載されるサーバ用プログラムであって、
前記コンピュータに、
クライアントによって算出された、登録情報と照合情報との近さを示す指標を秘匿化した秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するか否かを判定する判定処理、および、
前記照合情報と前記登録情報とが合致すると判定された場合に、証明鍵を用いて証明書を生成する証明書生成処理
を実行させるためのサーバ用プログラム。
(付記19)
サーバとして動作するコンピュータに搭載されるサーバ用プログラムであって、
前記コンピュータに、
クライアントにメッセージを送信する送信処理、
照合情報と登録情報とが合致すると判定された場合に前記クライアントが署名鍵を用いて前記メッセージに基づいて生成した署名を取得し、第1の検証鍵と前記メッセージと前記署名とを用いて、前記署名が正しい署名であるか否かを判定する署名判定処理、
前記照合情報と前記登録情報とが合致すると判定された場合に証明鍵を用いて生成された証明書を取得し、第2の検証鍵と前記証明書とを用いて、前記証明書が正しい証明書であるか否かを判定する証明書判定処理、および、
前記証明書が正しい証明書であると判定され、かつ、前記署名が正しい署名であると判定された場合に、認証に成功したと判定する認証判定処理
を実行させるためのサーバ用プログラム。
(付記20)
サーバとして動作するコンピュータに搭載されるサーバ用プログラムであって、
前記コンピュータに、
クライアントによって算出された、登録情報と照合情報との近さを示す指標を秘匿化した秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するか否かを判定する判定処理、
前記クライアントにメッセージを送信するメッセージ送信処理、
前記照合情報と前記登録情報とが合致すると判定された場合に前記クライアントが署名鍵を用いて前記メッセージに基づいて生成した署名を取得し、検証鍵と前記メッセージと前記署名とを用いて、前記署名が正しい署名であるか否かを判定する署名判定処理、および、
前記照合情報と前記登録情報とが合致すると判定され、かつ、前記署名が正しい署名であると判定された場合に、認証に成功したと判定する認証判定処理
を実行させるためのサーバ用プログラム。
(付記21)
サーバとして動作するコンピュータに搭載されるサーバ用プログラムであって、
前記コンピュータに、
クライアントによって算出された、登録情報と照合情報との近さを示す指標を秘匿化した秘匿化指標に基づいて、前記照合情報と前記登録情報とが合致するか否かを判定する判定処理、および、
前記クライアントが所定のサーバから与えられたメッセージに基づいて生成した署名を、前記照合情報と前記登録情報とが合致すると判定されたことを条件に、前記所定のサーバに送信する署名送信処理
を実行させるためのサーバ用プログラム。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
産業上の利用の可能性
本発明は、認証システムに好適に適用される。