説明

二要素認証システム

【課題】“Replacement”攻撃と“KCI”攻撃に対して安全性を十分に保証できる二要素認証システムを提供する。
【解決手段】二要素認証システムは、ユーザから入力された短い系列とユーザの端末装置およびサーバの認証装置の格納装置に記録されている記録情報の秘密情報を用いて、ユーザの端末装置とサーバの認証装置との間に相互認証しながらセッション鍵を確立する。初期化処理により短い系列に基づいて記録情報を作成してユーザの端末装置およびサーバの認証装置の格納装置に記録し、ユーザの端末装置は短い系列と格納装置に記録した記録情報を用いて、サーバの認証装置は格納装置に記録した記録情報を用いて認証プロトコルを実行する。更に、セッション鍵を生成するたびに秘密値更新器により記録情報を変更する。これにより、安全性を十分に保証できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パスワードなどの短い系列とユーザの端末装置およびサーバの認証装置に記録された記録情報を使って安全に認証を行う二要素認証システムに関するものである。
【背景技術】
【0002】
従来から、ネットワークを介して様々なサービスを利用するシステムにおいては、正当な利用者を認証するための認証システムが組み込まれる。多くはパスワードを用いる認証システムであるが、パスワード認証だけでは、十分なセキュリティの確保が困難である場合には、別の認証システムの仕組みを併用または追加するようなシステムとされる。
【0003】
例えば、特許文献1に記載の認証システムでは、パスワードによる認証と、生態情報による認証システムを併用する。認証者はまずパスワードを入力し、入力されたパスワードが照合用パスワードと一致すれば、認証者は生体情報である指紋が入力できる。入力された指紋が照合用指紋データと一致すれば認証処理用の長い暗号パスワードが生成され、その暗号パスワードを用いて認証を行う。しかしながら、照合用パスワードと指紋データが漏洩すると、それを得た攻撃者は、暗号パスワードが生成でき、認証に成功する。
【0004】
また、特許文献2に記載されている「二重要素認証されたキー交換方法」による認証システムにおいては、ユーザはパスワードを覚え、クライアントにトークンが保存され、認証サーバはユーザのパスワードとトークンと公開鍵のペアーになっている秘密鍵を保存している。ここでは、クライアントは認証サーバの公開鍵に安全にアクセスできると仮定しており、クライアントと認証サーバは、パスワードとトークンとサーバの公開鍵(サーバは秘密鍵)を使って相互認証し、セッション鍵を生成する。
【0005】
しかし、サーバの情報が漏洩すると、攻撃者は以前クライアントと認証サーバの間に共有されたすべてのセッション鍵を求めることができ、後述するように、クライアントに保存されているRSA公開鍵を書き換える“Replacement”攻撃とサーバの記録情報を用いる“KCI(Key Compromise Impersonation)”攻撃に対して、脆弱性がある。
【0006】
また、特許文献3に記載されているワールド・ワイド・ウェッブ用のコンピュータ・セキュリティの技術では、その認証システムは、ユーザがウェップサイトにウェップページを要求すると、ユーザに識別可能なcustomization情報が提供されて、ユーザはこのウェップサイトを認証し、クライアントに記録されたクッキーにより、ウェップサイトはユーザを認証するシステムとなっている。
【特許文献1】特開2006−139471号公報
【特許文献2】特表2007−520909号公報
【特許文献3】特表2006−525563号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
従来から、パスワードなどの短い系列と記録情報を使って認証を行う二要素認証システムの一つとして、「情報漏洩に強い認証付き鍵共有方式」による認証システムの提案がある。この方式の認証システムでは、ネットワーク上のあらゆる攻撃だけではなく、情報漏洩があったとしても安全性を保障することができる。
【0008】
しかし、RSA公開鍵暗号方式を使った認証システムは、次に説明するように、“Replacement”攻撃と“KCI(Key Compromise Impersonation)”攻撃に対して脆弱性があり、DH(Diffie Hellman)鍵共有方式を使った認証システムは、“KCI(Key Compromise Impersonation)”攻撃に対して脆弱性があるという問題がある。
【0009】
“Replacement”攻撃は、攻撃者がクライアントに記録されているユーザの秘密情報を得て、かつ、それを任意の情報に書き換える形態の攻撃である。ユーザがその書き換えられた情報を使って通信を行うと、攻撃者はその通信を含むすべての通信を盗聴したり、サーバの成りすましをすることができ、そのユーザのパスワードやそのユーザのいずれかのセッション鍵を得ようとする攻撃が可能である。これに対して、従来の技術では、十分な安全性が保証されない。
【0010】
KCI(Key Compromise Impersonation)攻撃は、攻撃者がサーバに記録されているユーザの秘密情報を得て、かつ、それを使って攻撃者がクライアントの成りすましをすることにより、そのユーザのパスワードやそのユーザのいずれかのセッション鍵も得ようとする攻撃である。もちろん、攻撃者がサーバに記録されている秘密情報を得た後には、攻撃者はそのサーバになりすますことが可能ではあるが、その場合においても、ユーザが正しいサーバと最初に通信すれば(RSA公開鍵暗号方式を使った方式で、かつ、その通信が盗聴されなければ)、攻撃者は、それ以降サーバに成りすましてクライアントと相互認証を行うことはできなくなる。
【0011】
このような認証システムでは、通常は、秘密情報が見られたり、書き換えられたりしないように、耐タンパモジュールなどが用いられるが、そのような特殊なデバイスを利用せずに、ネットワーク上のあらゆる攻撃と“Replacement”攻撃や“KCI”攻撃を含む情報漏洩を用いる攻撃まで防ぐことができる認証システムが所望される。
【0012】
本発明は、このような従来における問題点を解決するためになされたものであり、本発明の目的は、パスワードの短い系列とユーザの端末装置およびサーバの認証装置に記録された記録情報を使って認証を行う二要素認証システムにおいて、“Replacement”攻撃と“KCI”攻撃に対して、安全性を十分に保証できる二要素認証システムを提供することにある。
【課題を解決するための手段】
【0013】
上記のような目的を達成するため、本発明による二要素認証システムは、基本的な構成として、ユーザから入力された短い系列(パスワードなど)とユーザの端末装置およびサーバの認証装置の格納装置に記録されている記録情報の秘密情報を用いて、ユーザの端末装置とサーバの認証装置との間に相互認証しながらセッション鍵を確立する二要素認証システムにおいて、初期化処理により短い系列に基づいて記録情報を作成してユーザの端末装置およびサーバの認証装置の格納装置に記録し、ユーザの端末装置は短い系列と格納装置に記録した記録情報を用いて、サーバの認証装置は格納装置に記録した記録情報を用いて認証プロトコルを実行する。更に、セッション鍵を生成するたびに秘密値更新器により記録情報を変更する。
【0014】
具体的には、本発明の二要素認証システムは、入力された短い系列とユーザの端末装置およびサーバの認証装置にそれぞれ保存されている記録情報を用いて、ユーザの端末装置とサーバの認証装置との間で相互認証しながらセッション鍵を確立する二要素認証システムであって、ユーザの端末装置とサーバの認証装置においてそれぞれに前記短い系列に基づいて作成された記録情報を記録する格納装置と、ユーザの端末装置とサーバの認証装置においてそれぞれに前記格納装置に記録された記録情報を用いて認証プロトコルの実行を行い、ユーザの端末装置とサーバの認証装置との間で相互認証しながらセッション鍵を確立する処理を行う認証処理部と、前記セッション鍵を生成するたびに格納装置に記録されている記録情報を変更する秘密値更新器とを備えることを特徴とするシステムである。
【0015】
本発明の二要素認証システムにおいては、前記格納装置に記録された記録情報には、乱数が含まれており、認証処理部は、乱数の値に基づいて認証プロトコルの実行を行うように構成される。
【0016】
本発明の二要素認証システムにおいては、更に、ユーザの端末装置とサーバの認証装置においてそれぞれに前記短い系列に基づいて記録情報を作成する初期化処理部を備えており、前記格納装置は前記初期化処理部により作成された記録情報を初期値として記録するように構成される。
【0017】
本発明の二要素認証システムにおいては、前記格納装置に記録された記録情報には、カウント値が含まれており、秘密値更新器は、前記カウント値に基づいて格納装置に記録する記録情報の更新を管理するように構成される。
【0018】
本発明の二要素認証システムのひとつの態様として、認証処理部は、ユーザの端末装置とサーバの認証装置との間で相互認証し、セッション鍵を確立する処理を、RSA公開鍵に基づく認証プロトコルの処理により行うようにし、または、認証処理部は、ユーザの端末装置とサーバの認証装置との間で相互認証し、セッション鍵を確立する処理は、DH鍵共有プロトコルに基づく認証処理により行うように構成される。
【0019】
また、本発明の二要素認証システムは、別の態様として、入力された短い系列とユーザの端末装置およびサーバの認証装置にそれぞれ保存されている記録情報を用いて、ユーザの端末装置とサーバの認証装置との間で相互認証しながらセッション鍵を確立する二要素認証システムであって、ユーザの端末装置において記録情報を記録する第1格納装置と、サーバの認証装置において記録情報を記録する第2格納装置と、ユーザの端末装置において第1格納装置に記録された記録情報を用いて認証プロトコルの実行を行い、サーバの認証装置との間で相互認証しながらセッション鍵を確立する処理を行う第1認証処理部と、サーバの認証装置において前記第2格納装置に記録された記録情報を用いて認証プロトコルの実行を行い、ユーザの端末装置との間で相互認証しながらセッション鍵を確立する処理を行う第2認証処理部と、ユーザの端末装置において前記セッション鍵を生成するたびに第1格納装置に記録されている記録情報を変更する第1秘密値更新器と、サーバの認証装置において前記セッション鍵を生成するたびに第2格納装置に記録されている記録情報を変更する第2秘密値更新器とを備えるように構成されても良い。この場合に、ユーザの端末装置の第1格納装置に格納する記録情報は、乱数、カウント値、及び公開鍵であり、サーバの認証装置の第2格納装置に格納する記録情報は、カウント値、認証データ、及び秘密鍵である。
【0020】
また、本発明は、更に別の態様として、ユーザの端末装置に短い系列を入力して、ユーザの端末装置とサーバの認証装置の間において相互に認証子を生成して送信し、相互の認証子に基づく相互認証を行い、認証結果によりユーザの端末装置とサーバの認証装置の間でセッション鍵の確立を行い、セッション鍵が生成されるごとに秘密値更新器により、前記記録情報を更新する二要素認証方法として利用されても良い。
【発明の効果】
【0021】
このような特徴を有する本発明の二要素認証システムによれば、耐タンパモジュールのような特殊なデバイスを利用しなくても、ネットワーク上のあらゆる攻撃と“Replacement”攻撃や“KCI”攻撃を含む情報漏洩を用いる攻撃に対して安全性を保障することができる。
【発明を実施するための最良の形態】
【0022】
以下、図面を参照しつつ、本発明の好適な実施例について説明する。ただし、本発明は以下の各実施例に限定されるものではなく、例えばこれら実施例の構成要素同士を適宜組み合わせてもよい。
【0023】
図1は、本発明の二要素認証システムの全体の構成を説明する図である。図2は、短い系列と記録情報を用いた二要素認証システムにおける初期化処理を説明する図であり、図3は、短い系列と記録情報を用いた二要素認証システムにおけるj番目プロトコル実行の構成を示す図である。
【0024】
図1において、100は二要素認証システム、101はインターネットなどの通信路、200はユーザの端末装置、201は記録情報の格納装置、202は認証処理部、203は秘密更新器、300はサーバの認証装置、301は記録情報の格納装置、302は認証処理部、303は秘密更新器である。
【0025】
二要素認証システム100は、ユーザの端末装置200とサーバの認証装置300との間をインターネットなどの通信路101により結合してデータ通信を行う場合に、その間で相互に認証処理を行う認証システムである。システム要素として、ユーザの端末装置200には、入力されたパスワードに基づいて初期化処理により作成された記録情報を記録する格納装置201と、サーバの認証装置300との間で認証処理を行う認証処理部202と、格納装置201に格納された記録情報CSjを所定の演算式により更新する秘密値更新器203が設けられる。また、サーバの認証装置300は、初期化処理により作成された記録情報を記録する格納装置301と、ユーザの端末装置200との間で認証処理を行う認証処理部302と、格納装置301に格納された記録情報SSjを所定の演算式により更新する秘密値更新器303が設けられる。
【0026】
図2に示すように、ユーザの端末装置200に入力されたパスワードに基づいて、安全な通信路110により初期化処理を行い、ユーザの端末装置200とサーバの認証装置300とにおいて、それぞれに記録情報CS1および記録情報SS1を生成する。次に、図3に示すように、初期化処理の後に、jをカウント値とすると、j番目の認証プロトコルを実行する。ユーザの端末装置200とサーバの認証装置300において、認証処理部202,302がそれぞれの格納装置201,301に記録されている記録情報(CSj,SSj)を用いて、認証プロトコルの実行を行い、ユーザの端末装置200とサーバの認証装置300との間で相互認証しながらセッション鍵120,130を確立する処理を行う。セッション鍵120、130が確立されると、秘密値更新器203,303は、次回の認証処理のために、格納装置201,301に記録されている記録情報(CSj,SSj)を変更する。
【0027】
二要素認証システムにおいて、カウンタ値jはj≧1になるような整数である。二要素認証システム100におけるj番目プロトコル実行では、ユーザの端末装置200は入力された短い系列(例えば、パスワードなど)と、ユーザの端末装置200の格納装置201で保持された記録情報CSjに基づいて認証処理を実行し、また、サーバの認証装置300が、格納装置301に保持されている記録情報SSjにより認証処理を実行し、ユーザの端末装置200の認証処理部202と、サーバの認証装置300の認証処理部302との間で相互認証して、その相互認証が成功した時、同じセッション鍵120,130を確保する。セッション鍵を生成するたびに、ユーザの端末装置200およびサーバの認証装置300においては、それぞれの秘密値更新器202,302により格納装置201,301に保持された記録情報が変更される。
【0028】
<第1実施例>
次に、第1実施例として、RSA公開鍵暗号方式を使った二要素認証システムの実施例を説明するが、その前に、いくつかの背景知識、及び以下の説明において用いる記号について説明しておく。
【0029】
公開鍵暗号方式では、公開鍵(PubK)および秘密鍵(PriK)の対(PubK,PriK)が設定されている。公開鍵は秘密ではなく、誰でも入手できるように公開される。それに対して、秘密鍵は所有者のみが有している秘密の状態とされる。暗号化は、公開鍵(PubK)を用いて、暗号化関数Encによりメッセージmを、C=EncPubK(m)となるような暗号文Cを生成することである。暗号文Cは、秘密鍵(PriK)を用いてのみ、復号化関数Decによって、m=DecPriK(C)の演算により、メッセージmが復号できる。暗号文Cは、公開鍵(PubK)を用いては復号できない。
【0030】
公開鍵署名方式では、検証鍵(VK)および署名鍵(SK)の対(VK,SK)が設定されている。公開鍵暗号方式の公開鍵と同じように、検証鍵は秘密ではなく、誰でも入手できるように公開される。それに対して、署名鍵は所有者(署名者)のみが有している秘密の状態とされる。署名化は、署名鍵(SK)を用いて署名化関数Signにより、メッセージmを、s=SignSK(m)となるようにして、署名文(m,s)を生成することである。署名文の検証は、検証鍵(VK)を用いて、検証化関数Verによって、VerVK(m,s)を求めることで検証できる。検証できた場合は、その署名文(m,s)が、正当な署名者により生成されたことを意味し、そうではない場合は、(m,s)が正しい署名文ではないことになる。
【0031】
周知のRSA公開鍵方式においては、公開鍵および秘密鍵の生成には素数が用いられる。例えば、公開鍵は(e,N)であり、秘密鍵は(d,N)である。この場合のNは、2つのランダムに選択された大きな素数pと素数qの積であり(すなわち、N=p・q)、eは、eと(p−1)・(q−1)の最大公約数が1であるような任意の数(例えば、e=3あるいはe=216+1)である。また、dは、「e−1 mod ((p−1)・(q−1))」である。安全性を最大化するには、素数pと素数qを同じ長さにする。
【0032】
一般に、暗号システムでは、その安全性のレベルを記述するセキュリティパラメータkが用いられる。セキュリティパラメータkに基づいて公開鍵などの数値が定められて、システムが設計される。RSA公開鍵暗号化方式において、例えば、セキュリティパラメータkをLにすると、2L−1<N<2の整数Nを用いる。メッセージm(m∈Z)に対して、暗号化関数Encは、「EncPubK(m)=m mod N」であり、復号化関数Decは、「DecPriK(C)=C mod N」である。この場合、暗号文Cと公開鍵(e,N)が与えられた時、メッセージmを求めることが計算量的に困難であることから安全性を確保している。つまり、RSA公開鍵暗号方式は、大きな数Nの素因数分解が難しいことから安全性を得ている。
【0033】
次に説明する実施例の二要素認証システムでは、ハッシュ関数Hのセキュリティパラメータをkとする。1/2は無視できるほど小さいと仮定する。また、集合{0,1}は、有限の2進数のストリングの集合を示し、集合{0,1}は長さkの2進数のストリングの集合を示す。ハッシュ関数Hは集合{0,1}の入力から集合{0,1}の出力を得る安全な一方向関数であり、ハッシュ関数のFDH(Full−Domain Hash)関数Gは集合{0,1}の入力から、Z\{1}の出力を出す安全な一方向関数である。また、乱数発生器から発生される乱数は、乱数t(t∈Z)を無作為に生成する。‖は値を連結(concatenation)するという意味である。また、CとSはそれぞれユーザとサーバを表すIDである。
【0034】
二要素認証システムの初期化の処理では、図2に示したように、ユーザの端末装置200はユーザから入力されたパスワードpwに基づいて、サーバの認証装置300と安全な通信路110を用いて(例えば、直接に登録したり、郵便で送付したり、あるいは電話で知らせるなどして)初期化処理を行い、ユーザの端末装置200は、内部にあるメモリまたは格納装置に第1番目の認証プロトコル実行のための記録情報「CS1」140を保存し、また、サーバの認証装置300は、内部にあるメモリあるいはデータベースの格納装置に第1番目の認証プロトコル実行のための記録情報「SS1」150を保存する。
【0035】
二要素認証システムの認証処理では、図3に示すように、jをj≧1になるような整数として、パスワードなどの入力された短い系列とユーザの端末装置およびサーバの認証装置にそれぞれ保存されている記録情報「CSj」、記録情報「SSj」を用いて、第j番目の認証プロトコルの実行を行い、ユーザの端末装置とサーバの認証装置との間で相互認証しながらセッション鍵(120,130)を確立する。そして、セッション鍵が確立した場合において、更に、次の認証プロトコル実行のために、図1に示すように、秘密値更新器(203,303)により格納装置(201,301)に記録されている記録情報(CSj,SSj)を変更する。秘密値更新器(203,303)による記録情報(CSj,SSj)の更新は、セッション鍵(120,130)を生成するたびに格納装置(201,301)に記録されている記録情報(CSj,SSj)が変更される。これにより、十分な安全性が保証される。
【0036】
具体的に第1実施例のRSA公開鍵暗号方式を使った二要素認証システムのシステム構成の一例について、(1)二要素認証システム1、(2)二要素認証システム2、および(3)二要素認証システム3の3つのシステム構成の例について説明する。
【0037】
(1)二要素認証システム1:
図4は、二要素認証システム1の初期化処理を説明する図である。図4には、二要素認証システム1において、初期化処理で用いられるユーザの端末装置200及びサーバの認証装置300におけるシステム要素が示されている。図4を参照して、ユーザの端末装置200とサーバの認証装置300との間の二要素認証システムの初期化動作を説明する。
【0038】
ユーザの端末装置200における初期化処理では、認証データ生成器211が、乱数発生器210によって、ランダムに発生させた乱数si1(si1∈{0,1})と、ユーザから入力されたパスワードpwとを入力して、これに基づいて認証データvi1を計算して生成する。認証データの計算はハッシュ関数Hを用いて「vi1=si1+H(4‖C‖Si‖pw)」により計算する。計算により生成された認証データvi1は、サーバの認証装置300に送信する。このとき、ユーザの端末装置200では、カウンタ(カウント値)1と、乱数発生器210により発生させた乱数si1と、サーバの認証装置300から受信したRSA公開鍵(e,N)を出力し、格納装置201に記録情報「CS1」141として保存する。この場合に、ユーザの端末装置200の内部にあるメモリまたは格納装置201には、記録情報「CS1」141とするデータ「1,si1,(e,N)」が保存される。
【0039】
サーバの認証装置300においては、初期化の処理として、図4の右側に示されるように、RSA鍵生成器310が、セキュリティパラメータLに基づき、所定の演算式によって公開鍵(e,N)と秘密鍵(d,N)を生成して出力する。ここで生成された公開鍵(e,N)は、ユーザの端末装置200に送信される。公開鍵(e,N)のeは80ビット以上の素数である。サーバの認証装置300は、カウンタ(カウント値)1と、ユーザの端末装置200から受信した認証データvi1と、RSA鍵生成器310により生成された秘密鍵(d,N)とを共に、記録情報「SS1」151として保存する。すなわち、この場合には、サーバの認証装置300の内部にあるメモリあるいはデータベースの格納装置301に、記録情報「SS1」151として、データ「1,vi1,(d,N)」が保存される。
【0040】
図5および図6は、二要素認証システム1の認証プロトコルの実行処理を説明する図である。図5には、二要素認証システム1のユーザの端末装置におけるj番目プロトコル実行のシステム要素が示されており、図6には、二要素認証システム1のサーバの認証装置におけるj番目プロトコル実行のシステム要素が示されている。図5および図6において、jはj≧1になるような整数である。二要素認証システム1のj番目プロトコル実行では、ユーザの端末装置200はユーザから入力されたパスワードpwと保持された記録情報CSjに基づいて、記録情報SSjを保持しているサーバの認証装置と安全ではない通信路(例えば、インタネットなど)を用いてお互いに相互認証し、その相互認証が成功した時、同じセッション鍵SKjを確保する。
【0041】
まず、図5を参照する。前述した初期化を行った後(j=1の時)あるいは二要素認証システムのj−1番目プロトコル実行を行った後(すなわち、CSj=(j,sij,(e,N),[SK])と、SSj=(j,vij,(d,N),[VK])の時)、ユーザの端末装置200とサーバの認証装置300との間で二要素認証システム1のj番目プロトコル実行を行う動作を説明する。
【0042】
図5は、二要素認証システム1のシステム例のユーザの端末装置200のシステム要素を示している。二要素認証システム1のj番目プロトコル実行の動作について説明する。初期化処理の後は、ユーザの端末装置200は記録情報「CSj」141として、データ「j,sij,(e,N)」を内部にあるメモリに保持している。
【0043】
認証データ生成器211は、ユーザから入力されたパスワードpwと、メモリ212から読み出した乱数sijを入力として、認証データvijを計算して出力する。認証データvijの計算では、ハッシュ関数Hを用いて、計算式「vij=sij+H(4‖C‖S‖pw)」を計算して出力する。マスク生成器213は、認証データ生成器211から生成された認証データvijとメモリ212から読み出したカウンタ(カウント値)jを入力として、マスクW=G(j,vij)を計算して出力する。RSA暗号演算器215は、乱数発生器210によりランダムに発生させた乱数x,x(x,x∈Z)と、メモリ212から読み出した公開鍵(e,N)を入力として、暗号文「y=x mod N」と、暗号文「y=x mod N」を計算して出力する。結合器214は、マスク生成器213から生成されたマスクWと、乱数発生器210により発生させた乱数xと、RSA暗号演算器215から出力された暗号文「y」を入力として、マスクされた暗号文「z=y・x・W mod N」を計算して出力する。ユーザの端末装置200は、クライアントIDの情報であるCと、メモリから読み出したカウンタ(カウント値)jと、結合器214により出力されたマスク暗号文zと、RSA暗号演算器215により出力された暗号文「y」の各データ「C,j,z、y」をサーバの認証装置300へ送信する。
【0044】
続いて、認証結果判断部216の判断のデータ処理により、サーバの認証装置300から受信したデータ「VSi」が正しく生成された値であるかどうかを確認する。認証結果判断部216は、メモリ212から読み出したカウンタ(カウント値)jと、結合器214により出力されたマスクされた暗号文zと、RSA暗号演算器215により出力された暗号文「y」と、認証データ生成器211から生成された認証データvijと、乱数発生器210により発生させた乱数x,xとを入力として、ハッシュ関数H(1‖C‖S‖j‖z‖y‖vij‖x‖x)を計算して、サーバの認証装置300から受信したデータ「VSi」と比較する。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。認証結果判断部216の判断処理において、データ「VSi」と計算したハッシュ関数H(1‖C‖S‖j‖z‖y‖vij‖x‖x)が一致しないことを判断した場合には、認証結果判断部216は、エラーメッセージ発生器219に対して、一致しないことを通知する。
【0045】
これを受けて、エラーメッセージ発生器219はエラーメッセージを生成して処理を中断する。一方、認証結果判断部216において。データ「VSi」とハッシュ関数H(1‖C‖S‖j‖z‖y‖vij‖x‖x)が一致した場合は、サーバの認証装置300を正当な装置として認証して、認証結果判断部216から「InputMsg」を出力する。ここでの「InputMsg」のデータは、計算式「C‖S‖j‖z‖y‖vij‖x‖x」の出力データである。認証子生成器217は、認証結果判断部216から出力されて入力された「InputMsg」から、認証子Vを計算式「V=H(2‖InputMsg)」により計算して出力する。ユーザの端末装置200は、認証子生成器216により出力された認証子Vを、サーバの認証装置300へ送信する。セッション鍵生成器218は、認証結果判断部216から出力された「InputMsg」を入力として、セッション鍵SKijを計算式「SKij=H(3‖InputMsg)」の演算により計算して生成し、生成されたセッション鍵SKijを出力する。秘密値更新器203は、メモリ212から読み出した乱数sijと、認証結果判断部216から出力された「InputMsg」を入力として、j+1番目の乱数si(j+1)を、演算式「si(j+1)=sij+H(4‖InputMsg)」の計算により生成し、カウンタ(カウント値)j+1とともに出力する。ユーザの端末装置200においては、メモリ212に保持している記録情報の一部のデータの現在のカウンタ(カウント値)と乱数の組である「j,sij」を、秘密値更新器203により出力された次のカウンタ(カウント値)と乱数の組である「j+1,si(j+1)」に書き換えて、機密値である記録情報を更新する。
【0046】
図6は、二要素認証システム1のシステム例のサーバの認証装置300のシステム要素を示している。二要素認証システム1のj番目プロトコル実行の動作について説明する。この時、サーバの認証装置300は、認証プロトコル実行のための記録情報SSjのデータ「j,vij,(d,N)」を格納装置301の内部にあるメモリあるいはデータベース313に保持している。
【0047】
サーバの認証装置300において、カウンタ正確性判断部311は、ユーザの端末装置200から受信したカウンタ(カウント値)jの正確性を確認する。カウンタ正確性判断部311は、データベース313から読み出したカウンタ(カウント値)jを、ユーザの端末装置200から受信したカウンタ(カウント値)jと比較して一致しない場合、エラーメッセージ発生器312に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器312はエラーメッセージを生成して処理を中断する。一方、カウンタ正確性判断部311の判断処理において、データベース313から読み出したカウンタ(カウント値)jをユーザの端末装置200から受信したカウンタ(カウント値)jと比較して一致した場合は、続けて次の処理を行う。
【0048】
マスク生成器315は、データベース313から読み出したカウンタ(カウント値)jと認証データvijを入力として、マスクW=G(j,vij)を計算して出力する。RSA復号演算器314は、ユーザの端末装置200から受信した暗号文yとデータベース313から読み出したRSA秘密鍵(d,N)を入力として、乱数xを、計算式「x=y mod N」により計算して出力する。分離器316は、ユーザの端末装置200から受信したマスクした暗号文zと、RSA復号演算器314により出力された乱数xと、マスク生成器315により生成されたマスクWを入力として、暗号文yを、計算式「y=z/(x・W) mod N」により計算して出力する。再び、RSA復号演算器314は、分離器316により出力された暗号文yと、データベース313から読み出したRSA秘密鍵(d,N)を入力として、乱数xを、計算式「x=y mod N」により計算して、乱数xと共に出力する。認証子生成器317は、ユーザの端末装置200から受信したデータ「j,z,y」とデータベース313から読み出した認証データvijと、RSA復号演算器314により出力された乱数x,xを入力として、認証子VSiを、計算式「VSi=H(1‖C‖S‖j‖z‖y‖vij‖x‖x)」により計算して、「InputMsg」と共に出力する。ここでの「InputMsg」は、計算式「C‖S‖j‖z‖y‖vij‖x‖x」により計算されたデータである。サーバの認証装置300は、認証子生成器317により計算して得られた認証データVSiとサーバのIDの情報である「S」をユーザの端末装置200へ送信する。
【0049】
認証結果判断部318は、認証子生成器317から出力された「InputMsg」を入力として、ハッシュ関数H(2‖InputMsg)を計算して、ユーザの端末装置200から受信した認証子Vと比較する。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。認証結果判断部318において認証子Vと、計算したハッシュ関数H(2‖InputMsg)とが一致しない場合、認証結果判断部318は、エラーメッセージ発生器320に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器320はエラーメッセージを生成して処理を中断する。
【0050】
一方、認証結果判断部318において、認証子Vと計算したハッシュ関数H(2‖InputMsg)が一致した場合は、ユーザの端末装置200を正当な装置として認証する。セッション鍵生成器319は、認証子生成器317から出力された「InputMsg」を入力として、セッション鍵SKijを、計算式「SKij=H(3‖InputMsg)」の計算により生成して出力する。秘密値更新器303は、データベース313から読み出した認証データvijと、認証子生成器317から入力された「InputMsg」を入力として、j+1番目の認証データvi(j+1)を、計算式「vi(j+1)=vij+H(4‖InputMsg)」により計算して、カウンタ(カウント値)j+1と共に出力する。サーバの認証装置300は、データベース313に保持している現在のカウンタ(カウント値)と認証データの組である「j,vij」を、秘密値更新器303により出力された次のカウンタ(カウント値)と認証データの組である「j+1,vi(j+1)」に書き換える。
【0051】
(2)二要素認証システム2:
次に、二要素認証システム2のシステム例について説明する。図7および図8は、二要素認証システム2の初期化処理を説明する図である。図7に初期化処理で用いられるユーザの端末装置200のシステム要素が示されており、図8に初期化処理で用いられるサーバの認証装置300システム要素が示されている。図7および図8を参照して、ユーザの端末装置200とサーバの認証装置300との間の二要素認証システムの初期化動作を説明する。
【0052】
二要素認証システム2におけるユーザの端末装置200の初期化の動作について説明する。図7に示すように、ユーザの端末装置200の認証データ生成器221は、乱数発生器220によりランダムに発生させた乱数si1(si1∈{0,1})と、ユーザから入力されたパスワードpwとを入力して、認証データvi1を計算して出力する。認証データvi1の計算は、ハッシュ関数を用いて計算式「vi1=si1+H(4‖C‖S‖pw)」により計算する。署名鍵生成器222は、セキュリティパラメータに基づいて、検証鍵VKと署名鍵SKの対(VK,SK)を生成して出力する。ユーザの端末装置200からサーバの認証装置300へは、認証データ生成器221から生成された認証データvi1と署名鍵生成器222から生成された検証鍵VKを、サーバの認証装置300における記録情報生成のために送信する。ユーザの端末装置200においては、カウンタ(カウント値)1と、乱数発生器220により発生させた乱数si1と、サーバの認証装置300から受信したRSA公開鍵(e,N)と、署名鍵生成器222から生成された署名鍵SKとを、記録情報「CS1」142として保存する。この場合に、ユーザの端末装置200の内部メモリの格納装置201には、記録情報「CS1」142としてデータ「1,si1,(e,N),SK」が保存される。
【0053】
次に、二要素認証システム2におけるサーバの認証装置300の初期化の動作について説明する。図8に示すように、サーバの認証装置300においては、RSA鍵生成器321が、セキュリティパラメータLに基づいて、公開鍵(e,N)と秘密鍵(d,N)を生成して出力する。公開鍵(e,N)はユーザの端末装置200へ送信する。サーバの認証装置300は、カウンタ(カウント値)1と、ユーザの端末装置200から受信した認証データvi1および検証鍵VKと、RSA鍵生成器321により生成された秘密鍵(d,N)とを、記録情報「SS1」152として保存する。この場合に、サーバの認証装置300の内部メモリあるいはデータベースの格納装置301には、記録情報「SS1」152として、データ「1,vi1,(d,N),VK」が保存される。
【0054】
図9および図10は、二要素認証システム2の認証プロトコルの実行処理を説明する図である。図9には、二要素認証システム2のユーザの端末装置におけるj番目プロトコル実行のシステム要素が示されており、図10には、二要素認証システム2のサーバの認証装置におけるj番目プロトコル実行のシステム要素が示されている。図9および図10において、jはj≧1になるような整数である。二要素認証システムのj番目プロトコル実行では、ユーザの端末装置200はユーザから入力されたパスワードpwと保持された記録情報CSjに基づいて、記録情報SSjを保持しているサーバの認証装置と安全ではない通信路を用いてお互いに相互認証し、その相互認証が成功した時、同じセッション鍵SKを確保する。
【0055】
図9を参照して、二要素認証システム2のユーザの端末装置200のj番目プロトコル実行の動作について説明する。初期化処理の後は、ユーザの端末装置200は記録情報CSjとして、データ「j,sij,(e,N),SK」を内部にあるメモリに保持している。
【0056】
認証データ生成器221は、ユーザから入力されたパスワードpwと、メモリ204から読み出した乱数sijを入力として、認証データvijを計算式「vij=sij+H(4‖C‖S‖pw)」により計算して出力する。マスク生成器223は、認証データ生成器221から生成された認証データvijと、メモリ204から読み出したカウンタ(カウント値)jを入力として、マスクW=G(j,vij)を計算して出力する。そして、RSA暗号演算器225は、乱数発生器220によって、ランダムに発生させた乱数x(x∈Z)と、メモリ204から読み出した公開鍵(e,N)を入力として、暗号文yを計算式「y=x mod N」により計算して出力する。結合器224は、マスク生成器223から生成されたマスクWと、RSA暗号演算器225から出力された暗号文yを入力として、マスクされた暗号文zを計算式「Z=y・W mod N」により計算して出力する。ユーザの端末装置200は、クライアントIDの情報であるCと、メモリ204から読み出したカウンタ(カウント値)jと、結合器224により出力されたマスクされた暗号文zをサーバの認証装置300へ送信する。
【0057】
続いて、認証結果判断部226は、サーバの認証装置300から受信した認証子VSiが正しく生成された値であるかどうかを確認する。認証結果判断部226は、メモリ204から読み出したカウンタ(カウント値)jと、結合器224により出力されたマスクされた暗号文zと、認証データ生成器221から生成された認証データvijと、乱数発生器220により発生させた乱数xを入力して、ハッシュ関数H(1‖C‖S‖j‖z‖vij‖x)を計算して、サーバの認証装置300から受信した認証子VSiと比較する。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。認証結果判断部226において、認証子VSiとハッシュ関数H(1‖C‖S‖j‖z‖vij‖x)が一致しない場合、認証結果判断部226は、エラーメッセージ発生器229に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器229はエラーメッセージを生成して、処理を中断する。
【0058】
一方、認証結果判断部226の判断処理において、認証子VSiとハッシュ関数H(1‖C‖S‖j‖z‖vij‖x)が一致した場合は、サーバの認証装置300を正当な装置として認証して、「InputMsg」を出力する。ここでの「InputMsg」のデータは、計算式「1‖C‖S‖j‖z‖vij‖x」の出力データである。署名生成器227は、メモリ204から読み出した署名鍵SKと、認証結果判断部226から入力された「InputMsg」から署名文Vを、計算式「V=SignSK(m)」により計算して出力する。ここで、メッセージmはハッシュ関数H(2‖InputMsg)である。ユーザの端末装置200は、署名生成器227により出力された署名文Vをサーバの認証装置300へ送信する。セッション鍵生成器228は、認証結果判断部226から入力された「InputMsg」を入力として、セッション鍵SKijを計算式「SKij=H(3‖InputMsg)」の計算により生成して出力する。秘密値更新器203は、メモリ204から読み出した乱数sijと、認証結果判断部226から入力された「InputMsg」を入力として、j+1番目の乱数si(j+1)を、計算式「si(j+1)=sij+H(4‖InputMsg)」により計算し、カウンタ(カウント値)j+1とともに出力する。ユーザの端末装置200は、メモリ204に保持している現在のカウンタ(カウント値)と乱数の組である「j,sij」を、秘密値更新器203により出力された次のカウンタ(カウント値)と乱数の組である「j+1,si(j+1)」に書き換える。
【0059】
図10は、二要素認証システム2のサーバの認証装置300のj番目プロトコル実行のシステム要素を示している。図10を参照して、二要素認証システム2のj番目プロトコル実行の動作について説明する。この時、サーバの認証装置300は、認証プロトコル実行のための記録情報SSjのデータ「j,vij,(d,N),VK」を格納装置301の内部にあるメモリあるいはデータベース323に保持している。
【0060】
サーバの認証装置300において、カウンタ正確性判断部322は、ユーザの端末装置200から受信したカウンタ(カウント値)jの正確性を確認する。カウンタ正確性判断部322は、データベース323から読み出したカウンタ(カウント値)jを、ユーザの端末装置200から受信したカウンタ(カウント値)jと比較して一致しない場合、エラーメッセージ発生器330に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器330はエラーメッセージを生成して処理を中断する。
【0061】
一方、カウンタ正確性判断部322の判断処理において、データベース323から読み出したカウンタ(カウント値)jをユーザの端末装置から受信したカウンタ(カウント値)jと比較して、一致した場合は、続けて次の処理を行う。
【0062】
マスク生成器325は、データベース323から読み出したカウンタ(カウント値)jと認証データvijを入力として、マスクW=G(j,vij)を計算して出力する。分離器326は、ユーザの端末装置200から受信したマスクした暗号文zと、マスク生成器325により生成されたマスクWを入力として、暗号文yを、計算式「y=z/W mod N」により計算して出力する。RSA復号演算器324は、分離器326により出力された暗号文yと、データベース323から読み出したRSA秘密鍵(d,N)を入力として、乱数xを、計算式「x=y mod N」により計算して出力する。認証子生成器327は、ユーザの端末装置200から受信した認証用のデータ「j,z」と、データベース323から読み出した認証データvijと、RSA復号演算器324により出力された乱数xを入力として、認証子VSiを、ハッシュ関数による計算式「VSi=H(1‖C‖S‖j‖z‖vij‖x)」により計算して「InputMsg」と共に出力する。ここで、「InputMsg」は、計算式「C‖S‖j‖z‖vij‖x」により計算されたデータである。サーバの認証装置300は、認証子生成器327により計算して得られた認証子VSiとサーバのIDの情報であるSを、ユーザの端末装置200へ送信する。
【0063】
続いて、署名検証結果判断部328は、ユーザの端末装置200から受信した署名文Vと、認証子生成器327から出力された「InputMsg」と、データベース323から読み出した検証鍵VKを入力として、関数VerVK(m,V)を計算して、署名文Vの検証を行う。ここで、メッセージmはハッシュ関数H(2‖InputMsg)であり、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。署名検証結果判断部328において、署名文(m,V)が検証できない場合、署名検証結果判断部328は、エラーメッセージ発生器331に対して、検証できないことを通知する。これを受けて、エラーメッセージ発生器331はエラーメッセージを生成して処理を中断する。
【0064】
一方、署名検証結果判断部328の判断処理において、署名文(m,V)が検証できた場合には、ユーザの端末装置を正当な装置として認証する。セッション鍵生成器329は、認証子生成器327から出力された「InputMsg」を入力として、セッション鍵SKijを、計算式「SKij=H(3‖InputMsg)」の計算により、生成して出力する。秘密値更新器303は、データベース323から読み出した認証データvijと、認証子生成器327から入力された「InputMsg」を入力として、j+1番目の認証データvi(j+1)を、計算式「vi(j+1)=vij+H(4‖InputMsg)」により計算して、カウンタ(カウント値)j+1と共に出力する。サーバの認証装置300は、データベース323に保持している現在のカウンタ(カウント値)と認証データの組である「j,vij」を、秘密値更新器303により出力された次のカウンタ(カウント値)と認証データの組である「j+1,vi(j+1)」に書き換える。
【0065】
(3)二要素認証システム3:
次に、二要素認証システム3のシステム例について説明する。図11および図12は、二要素認証システム3の初期化処理を説明する図である。図11に初期化処理で用いられるユーザの端末装置200のシステム要素が示されており、図12には、初期化処理で用いられるサーバの認証装置300システム要素が示されている。図11および図12を参照して、ユーザの端末装置200とサーバの認証装置300との間の二要素認証システムの初期化処理を説明する。
【0066】
二要素認証システム3におけるユーザの端末装置200の初期化の動作について説明する。図11に示すように、ユーザの端末装置200の認証データ生成器231は、乱数発生器230によりランダムに発生させた乱数si1(si1∈{0,1})と、ユーザから入力されたパスワードpwとを入力して、認証データvi1を計算して出力する。認証データvi1の計算は、ハッシュ関数を用いて計算式「vi1=si1+H(4‖C‖S‖pw)」により計算する。署名鍵生成器254は、セキュリティパラメータに基づいて、検証鍵VKと署名鍵SKの対(VK,SK)を生成して出力する。ユーザの端末装置200からサーバの認証装置300へは、認証データ生成器231から生成された認証データvi1と署名鍵生成器254から生成された検証鍵VKを、サーバの認証装置300における記録情報生成のために送信する。ユーザの端末装置200においては、カウンタ(カウント値)1と、乱数発生器230により発生させた乱数si1と、サーバの認証装置300から受信したRSA公開鍵(e,N)と、署名鍵生成器254から生成された署名鍵SKとを、記録情報「CS1」143として保存する。この場合に、ユーザの端末装置200の内部メモリの格納装置201には、記録情報「CS1」143としてデータ「1,si1,(e,N),SK」が保存される。
【0067】
サーバの認証装置300の初期化の動作については、図12に示すように、サーバの認証装置300のRSA鍵生成器333が、セキュリティパラメータに基づき、公開鍵(e,N)と秘密鍵(d,N)を生成して出力する。公開鍵(e,N)は、ユーザの端末装置200へ送信される。公開鍵(e,N)のeは80ビット以上の素数である。サーバの認証装置300は、カウンタ(カウント値)1と、ユーザの端末装置200から受信した認証データvi1および検証鍵VKと、RSA鍵生成器333により生成された秘密鍵(d,N)とを、記録情報「SS1」153として保存する。この場合、サーバの認証装置300の内部にあるメモリあるいはデータベースの格納装置301には、記録情報「SS1」153として、データ「1,vi1,(d,N),VK」が保存される。
【0068】
図13および図14は、二要素認証システム3の認証プロトコルの実行処理を説明する図である。図13には、二要素認証システム3のユーザの端末装置におけるj番目プロトコル実行のシステム要素が示されており、図14には、二要素認証システム3のサーバの認証装置におけるj番目プロトコル実行のシステム要素が示されている。図13および図14において、jはj≧1になるような整数である。二要素認証システム3のj番目プロトコル実行では、ユーザの端末装置200はユーザから入力されたパスワードpwと保持された記録情報CSjに基づいて、記録情報SSjを保持しているサーバの認証装置と安全ではない通信路を用いてお互いに相互認証し、その相互認証が成功した時、同じセッション鍵SKを確保する。
【0069】
図13を参照して、二要素認証システム3のユーザの端末装置200のj番目プロトコル実行の動作について説明する。初期化処理の後は、ユーザの端末装置200は記録情報CSjとして、データ「j,sij,(e,N),SK」を内部にあるメモリに保持している。
【0070】
認証データ生成器231は、ユーザから入力されたパスワードpwと、メモリ232から読み出した乱数sijを入力として、認証データvijを計算式「vij=sij+H(4‖C‖S‖pw)」により計算して出力する。マスク生成器233は、認証データ生成器231から生成された認証データvijと、メモリ232から読み出したカウンタ(カウント値)jを入力として、マスクW=G(j,vij)を計算して出力する。RSA暗号演算器235は、乱数発生器230によって、ランダムに発生させた乱数x,x(x,x∈Z)と、メモリ232から読み出した公開鍵(e,N)を入力として、暗号文「y=x mod N」と、暗号文「y=x mod N」を計算して出力する。結合器234は、マスク生成器233から生成されたマスクWと、乱数発生器230により発生させた乱数xと、RSA暗号演算器235から出力された暗号文yを入力として、マスクされた暗号文zを計算式「z=y・x・W mod N」によりを計算して出力する。ユーザの端末装置200は、クライアントIDの情報であるCと、メモリ232から読み出したカウンタ(カウント値)jと、結合器234により出力されたマスクされた暗号文zと、RSA暗号演算器235により出力された暗号文yをサーバの認証装置300へ送信する。
【0071】
続いて、認証結果判断部236は、サーバの認証装置300から受信した認証子VSiが正しく生成された値であるかどうかを確認する。認証結果判断部236は、メモリ232から読み出したカウンタ(カウント値)jと、結合器234により出力されたマスクされた暗号文zと、RSA暗号演算器235により出力された暗号文yと、認証データ生成器231から生成された認証データvijと、乱数発生器230により発生させた乱数x,xを入力として、ハッシュ関数H(1‖C‖S‖j‖z‖y‖vij‖x‖x)を計算して、サーバの認証装置300から受信した認証子VSiと比較する。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。認証結果判断部236において、認証子VSiとハッシュ関数H(1‖C‖S‖j‖z‖y‖vij‖x‖x)が一致しない場合には、認証結果判断部236は、エラーメッセージ発生器239に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器239はエラーメッセージを生成して処理を中断する。一方、認証結果判断部236の判断処理において、認証子VSiとハッシュ関数H(1‖C‖S‖j‖z‖y‖vij‖x‖x)が一致した場合は、サーバの認証装置300を正当な装置として認証して、「InputMsg」のデータを出力する。ここで、「InputMsg」のデータは、計算式「C‖S‖j‖z‖y‖vij‖x‖x」の出力データである。署名生成器237は、メモリ232から読み出した署名鍵SKと、認証結果判断部236から入力された「InputMsg」から署名文Vを、署名関数「V=SignSK(m)」により計算して出力する。ここで、メッセージmは、ハッシュ関数H(2‖InputMsg)である。ユーザの端末装置200は、署名生成器237により出力された署名文Vをサーバの認証装置300へ送信する。セッション鍵生成器238は、認証結果判断部236から入力された「InputMsg」のデータを入力として、セッション鍵SKijを、計算式「SKij=H(3‖InputMsg)」の計算により生成して出力する。秘密値更新器203は、メモリ232から読み出した乱数sijと、認証結果判断部236から入力された「InputMsg」を入力として、j+1番目の乱数si(j+1)を、計算式「si(j+1)=sij+H(4‖InputMsg)」により計算し、カウンタ(カウント値)j+1と共に出力する。ユーザの端末装置200は、メモリ232に保持している現在のカウンタ(カウント値)と乱数の組である「j,sij」を、秘密値更新器203により出力された次のカウンタ(カウント値)と乱数の組である「j+1,si(j+1)」に書き換える。
【0072】
図14は、二要素認証システム3のサーバの認証装置300のj番目プロトコル実行を行うシステム要素を示している。図14を参照して、二要素認証システム3のj番目プロトコル実行の動作について説明する。この時、サーバの認証装置300は、認証プロトコル実行のための記録情報SSjのデータ「j,vij,(d,N),VK」を格納装置301の内部にあるメモリあるいはデータベース339に保持している。
【0073】
サーバの認証装置300において、カウンタ正確性判断部334は、ユーザの端末装置200から受信したカウンタ(カウント値)jの正確性を確認する。カウンタ正確性判断部334は、データベース339から読み出したカウンタ(カウント値)jを、ユーザの端末装置200から受信したカウンタ(カウント値)jと比較して一致しない場合、エラーメッセージ発生器342に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器342はエラーメッセージを生成して処理を中断する。
【0074】
一方、カウンタ正確性判断部334の判断処理において、データベース339から読み出したカウンタ(カウント値)jをユーザの端末装置から受信したカウンタ(カウント値)jと比較して、一致した場合は続けて次の処理を行う。
【0075】
マスク生成器340は、データベース339から読み出したカウンタ(カウント値)jと認証データvijを入力として、マスクW=G(j,vij)を計算して出力する。RSA復号演算器335は、ユーザの端末装置200から受信した暗号文yと、データベース339から読み出したRSA秘密鍵(d,N)を入力として、乱数xを計算式「x=y mod N」により計算して出力する。分離器336は、ユーザの端末装置200から受信したマスクされた暗号文zと、RSA復号演算器335により出力された乱数xと、マスク生成器340により生成されたマスクWを入力として、暗号文yを計算式「y=z/(x・W) mod N」により計算して出力する。再び、RSA復号演算器335は、分離器336により出力された暗号文yと、データベース339から読み出したRSA秘密鍵(d,N)を入力として、乱数xを計算式「x=y mod N」により計算して、先に計算した乱数xと共に出力する。認証子生成器337は、ユーザの端末装置200から受信した認証用のデータ「j,z,y」と、データベース339から読み出した認証データvijと、RSA復号演算器335により出力された乱数xおよび乱数xを入力として、認証子VSiを、計算式「VSi=H(1‖C‖S‖j‖z‖y‖vij‖x‖x)」により計算して、「InputMsg」のデータと共に出力する。ここで、「InputMsg」のデータは、計算式「C‖S‖j‖z‖y‖vij‖x‖x」の出力データである。サーバの認証装置300は、認証子生成器337により計算して得られた認証子VSiと、サーバのID情報であるSをユーザの端末装置200へ送信する。
【0076】
続いて、署名検証結果判断部338は、ユーザの端末装置200から受信した署名文Vと認証子生成器337から出力された「InputMsg」と、データベース339から読み出した検証鍵VKを入力として、関数VerVK(m,V)を計算して、署名文Vの検証を行う。ここで、メッセージmはハッシュ関数H(2‖InputMsg)であり、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。署名検証結果判断部338において、署名文(m,V)が検証できない場合、署名検証結果判断部338は、エラーメッセージ発生器343に対して、検証できないことを通知する。これを受けて、エラーメッセージ発生器343はエラーメッセージを生成して処理を中断する。
【0077】
署名検証結果判断部338の判断処理において、署名文(m,V)が検証できた場合には、ユーザの端末装置を正当な装置として認証する。セッション鍵生成器341は、認証子生成器337から出力された「InputMsg」のデータを入力として、セッション鍵SKijを、計算式「SKij=H(3‖InputMsg)」により、生成して出力する。秘密値更新器303は、データベース339から読み出した認証データvijと、認証子生成器337から入力された「InputMsg」を入力として、j+1番目の認証データvi(j+1)を、計算式「vi(j+1)=vij+H(4‖InputMsg)」により計算して、カウンタ(カウント値)j+1と共に出力する。サーバの認証装置300は、データベース339に保持している現在のカウンタ(カウント値)と認証データの組である「j,vij」を、秘密値更新器303により出力された次のカウンタ(カウント値)と認証データの組である「j+1,vi(j+1)」に書き換える。
【0078】
<第2実施例>
次に、第2実施例として、DH鍵共有プロトコルを使った二要素認証システムの実施例を、二要素認証システム4のシステム例として説明する。ここで、DH鍵共有プロトコルを使った実施例を説明する前に、以下の説明において用いる整数論と記号について説明しておく。
【0079】
p,qは素数であり、q|p−1という関係がある。q|p−1の表記は、qはp−1を割りきることのできる値であることを意味する。また、gは「mod p」上の位数qの有限体(群)G={g mod p: 0≦j<q}の生成元である(楕円曲線上の群でも同じように構成できる)。ここで、“g mod p”は、法指数演算であり、gをj乗した値をpで割った残り(Remainder)という意味である。また、gは(1<g<p−1,g=1 mod p,g≠1 mod p(0<j<q))である。つまり、p,qは演算体系(素体の標数)を示す。例えば、X=g mod p(0<x<q)で、xは秘密情報であり、Xが与えられた時、x=logXを求めるのは数学的に難しい問題(Xの生成元gに対する離散対数問題という)である。
【0080】
ハッシュ関数Hのセキュリティパラメータをkとする。ただし、1/2は無視できるほど小さいと仮定する。また、{0,1}は有限の2進数のストリングの集合を、{0,1}は長さkの2進数のストリングの集合を示す。ハッシュ関数Hは{0,1}の入力から{0,1}の出力を出す安全な一方向関数であり、FDH(Full−Domain Hash)関数Gは{0,1}の入力から(Z/qZ)の出力を出す安全な一方向関数である。ここで、(Z/qZ)は{1,2,…,q}の集合を示す。また、乱数発生器から発生される乱数はR∈(Z/qZ)を無作為に生成する。また、‖は値を連結(concatenation)するという意味である。また、CとSはそれぞれユーザとサーバを表すIDである。
【0081】
(4)二要素認証システム4:
図15および図16は、二要素認証システム4の初期化処理を説明する図である。図15に、二要素認証システムの初期化処理のシステム要素が示されている。二要素認証システム4の初期化処理では、ユーザの端末装置200は、ユーザから入力されたパスワードに基づいて、サーバの認証装置300と安全な通信路(例えば、直接に登録したり、郵便で送付したり、あるいは電話で知らせるなど)を用いて初期化処理を行い、ユーザの端末装置は200の内部にあるメモリへ記録情報としてCS1を保存し、サーバの認証装置300は内部にあるメモリあるいはデータベースへ記録情報としてSS1を保存する。
【0082】
図15および図16を参照して、ユーザの端末装置とサーバの認証装置との間で二要素認証システム4の初期化を行う動作を説明する。
【0083】
図15に示すように、二要素認証システム4のユーザの端末装置200における初期化処理では、認証データ結合器242は、乱数発生器241によりランダムに発生させた乱数si1(si1∈(Z/qZ))と、ユーザから入力されたパスワードpwを入力として、結合値vi1を「vi1=si1+G(1‖C‖S‖pw) mod q」の計算式により計算して出力する。認証データ生成器243は、認証データ結合器242により出力された結合値vi1を入力として、認証データWi1を計算式「Wi1=hvi1 mod p」と「Zi1=gvi1 mod p」により計算して出力し、認証データ「Wi1,Zi1」をサーバの認証装置300へ送信する。ユーザの端末装置200は、カウンタ(カウント値)1と乱数発生器241により発生させた乱数si1を、ユーザの端末装置の内部にあるメモリへ記録情報「CS1」154として「1,si1」を保存する。
【0084】
二要素認証システム4のサーバの認証装置300における初期化処理では、図16に示すように、サーバの認証装置300は、カウンタ(カウント値)1と、ユーザの端末装置200から受信した認証データ「Wi1,Zi1」とを、サーバの認証装置300の内部にあるメモリあるいはデータベースへ記録情報「SS1」155として「1,Wi1,Zi1」を保存する。
【0085】
図17および図18は、二要素認証システム4の認証プロトコルの実行処理を説明する図である。図17には、二要素認証システム4のユーザの端末装置200におけるj番目プロトコル実行のシステム要素が示されており、図18には、二要素認証システム4のサーバの認証装置300におけるj番目プロトコル実行のシステム要素が示されている。図17および図18において、jはj≧1になるような整数である。二要素認証システム4のj番目プロトコル実行では、ユーザの端末装置200はユーザから入力されたパスワードpwと保持された記録情報CSjに基づいて、記録情報SSjを保持しているサーバの認証装置300と安全ではない通信路(例えば、インターネットなど)を用いてお互いに相互認証し、その相互認証が成功した時、同じセッション鍵を確保する。
【0086】
前述した初期化を行った後(j=1の時)、あるいは二要素認証システム4のj−1番目プロトコル実行を行った後(すなわち、CSj=(j,sij)とSSj=(j,Wij,Zij)の時)、ユーザの端末装置200とサーバの認証装置300との間で二要素認証システム4においてのj番目プロトコル実行を行う。
【0087】
まず、図17を参照して、ユーザの端末装置200におけるj番目プロトコル実行の処理について説明する。初期化処理の後、j番目のプロトコル実行の前には、ユーザの端末装置200は、記録情報「CSj」として「j,sij」を内部にあるメモリ244に保持している。
【0088】
まず、認証データ結合器242は、ユーザから入力されたパスワードpwとメモリから読み出した乱数sijを入力として、結合値vijを計算式「vij=sij+G(1‖C‖S‖pw) mod q」により計算して出力する。認証データ生成器243は、認証データ結合器242により出力された結合値vijを入力として、認証データWijとZijを計算式「Wij=hvij mod p」と「Zij=gvij mod p」により計算して出力する。DH値演算器245は、乱数発生器241によりランダムに発生させた乱数x(x∈(Z/qZ))を入力として、DH値を計算式「g mod p」によりを計算して出力する。結合器246は、認証データ生成器243から生成された認証データWijとZijと、DH値演算器245により出力されたDH値gを入力として、マスクされたDH値Xを「X=g・Wij mod p」により計算して出力する。
【0089】
ユーザの端末装置200は、図示しない通信処理部を介して、サーバの認証装置300に対して、クライアントIDであるCと、メモリ244から読み出したカウンタ(カウント値)jと、結合器246により出力されたXを送信する。サーバの認証装置300からは、認証データ「S,Y,Vsi」が送られてくるので、DH鍵演算器247は、サーバの認証装置300から受信したDH値Yと、乱数発生器241によりランダムに発生させた乱数xと、DH値演算器245により出力されたDH値gと、認証データ結合器242により出力された結合値vijを入力として、DH鍵Kを、計算式「K=Y(x+r・vij) mod p」により計算して出力する。ここで、rはG(2‖g‖Y)である。
【0090】
続いて、認証結果判断部248は、サーバの認証装置300から受信した認証データのVSiが正しく生成された値であるかどうかを確認する。認証結果判断部248は、メモリ244から読み出したカウンタ(カウント値)jと、結合器246により出力されたマスクされたDH値Xと、サーバの認証装置300から受信したDH値Yと、認証データ生成器243から生成された認証データ「Wij,Zij」と、DH鍵演算器247により出力さらたDH鍵Kを入力として、ハッシュ関数H(1‖C‖S‖j‖X‖Y‖Wij‖Zij‖K)を計算して、サーバの認証装置300から受信した認証データ「VSi」と比較する。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。認証結果判断部248の判断処理において、認証データ「VSi」とハッシュ関数H(1‖C‖S‖j‖X‖Y‖Wij‖Zij‖K)が一致しない場合、認証結果判断部248は、エラーメッセージ発生器249に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器249はエラーメッセージを生成して処理を中断する。
【0091】
一方、認証結果判断部248の判断処理において、認証データ「VSi」とハッシュ関数H(1‖C‖S‖j‖X‖Y‖Wij‖Zij‖K)が一致したことを判断した場合は、サーバの認証装置300が正当な装置として認証して、データ「InputMsg」を出力する。ここで、データ「InputMsg」は、「C‖S‖j‖X‖Y‖Wij‖Zij‖K」である。認証子生成器250は、認証結果判断部248から入力されたデータ「InputMsg」に基づいて、認証子Vを、計算式「V=H(2‖InputMsg)」により計算して出力する。ユーザの端末装置200は、認証子生成器250により出力された認証子Vをサーバの認証装置300へ送信する。セッション鍵生成器251は、認証結果判断部248から入力されたデータ「InputMsg」を入力として、セッション鍵SKijを、計算式「SKij=H(3‖InputMsg)」により計算して、計算結果からセッション鍵SKijを生成して出力する。秘密値更新器252は、メモリ244から読み出した乱数sijと、認証結果判断部248から出力されて入力された「InputMsg」とを入力として、j+1番目の乱数si(j+1)を、計算式「si(j+1)=sij+G(1‖InputMsg)」により計算して、カウンタ(カウント値)j+1とともに出力する。ユーザの端末装置200は、メモリ244に保持している現在のカウンタ(カウント値)と乱数との組である「j,sij」を、秘密値更新器252により出力された次のカウンタ(カウント値)と乱数の組である「j+1,si(j+1)」に書き換える。
【0092】
図18は、二要素認証システム4のサーバの認証装置300のj番目プロトコル実行を行うシステム要素を示している。図18を参照して、二要素認証システム4のj番目プロトコル実行の動作について説明する。この時、サーバの認証装置300は、認証プロトコル実行のための記録情報SSjのデータ「j,Wij,Zij」を格納装置の内部にあるメモリあるいはデータベース353に保持している。
【0093】
まず、カウンタ正確性判断部351は、ユーザの端末装置200から受信したカウンタ(カウント値)jの正確性を確認する。カウンタ正確性判断部351は、データベース353から読み出したカウンタ(カウント値)jを、ユーザの端末装置200から受信したカウンタ(カウント値)jと比較して一致しない場合、エラーメッセージ発生器352に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器352はエラーメッセージを生成して処理を中断する。
【0094】
一方、カウンタ正確性判断部351の判断処理において、データベースから読み出したカウンタ(カウント値)jをユーザの端末装置から受信したカウンタ(カウント値)jと比較して、一致した場合には、続けて次の処理を行う。DH値演算器357は、乱数発生器356によりランダムに発生させた乱数y(y∈(Z/qZ))を入力として、DH値Yを計算式「Y=g mod p」により計算して出力する。分離器354は、ユーザの端末装置200から受信したデータ「X」と、データベース353から読み出した認証データWijを入力として、DH値gを計算式「g=X/Wij mod p」により計算して出力する。DH鍵演算器358は、分離器354により出力されたDH値gと、データベース353から読み出した認証データZijと、DH値演算器357により出力されたDH値Yと、乱数発生器356によりランダムに発生させた乱数yを入力として、DH鍵Kを、計算式「K=(g・Zij mod p」により計算して出力する。ここで、rはG(2‖g‖Y)である。認証子生成器360は、ユーザの端末装置200から受信したデータ「j,X」と、DH値演算器357により出力されたDH値Yと、データベース353から読み出した認証データ「Wij,Zij」と、DH鍵演算器358により出力されたDH鍵Kを入力として、認証子VSiを、計算式「VSi=H(1‖C‖S‖j‖X‖Y‖Wij‖Zij‖K)」により計算して、データ「InputMsg」とともに出力する。ここでデータ「InputMsg」は、「C‖S‖j‖X‖Y‖Wij‖Zij‖K」である。サーバの認証装置300は、認証子生成器360により計算して得られたVSiと、DH値演算器により出力されたDH値Yと、サーバのIDである「S」をユーザの端末装置へ送信する。
【0095】
続いて、認証結果判断部361は、認証子生成器360から出力されたデータ「InputMsg」を入力として、ハッシュ関数H(2‖InputMsg)を計算して、ユーザの端末装置200から受信した認証子Vと比較する。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。認証結果判断部361の判断処理において、認証子Vとハッシュ関数H(2‖InputMsg)が一致しない場合、認証結果判断部361は、エラーメッセージ発生器363に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器363はエラーメッセージを生成して処理を中断する。
【0096】
一方、認証結果判断部361の判断処理において、認証子Vとハッシュ関数H(2‖InputMsg)が一致した場合は、ユーザの端末装置200が正当な装置として認証する。セッション鍵生成器362は、認証子生成器360から出力されたデータ「InputMsg」を入力として、セッション鍵SKijの生成のために、計算式「SKij=H(3‖InputMsg)」を計算して、セッション鍵SKijを生成して出力する。秘密値更新器359は、データベース353から読み出した認証データの「Wij,Zij」と、認証子生成器360から入力されたデータ「InputMsg」を入力として、j+1番目の認証データ「Wi(j+1),Zi(j+1)」を、計算式「Wi(j+1)=Wij・hG(1‖InputMsg) mod p」と「Zi(j+1)=Zij・gG(1‖InputMsg) mod p」により計算して、カウンタ(カウント値)j+1とともに出力する。サーバの認証装置300は、データベース353に保持している現在のカウンタ(カウント値)と認証データの組である「j,Wij,Zij」を、秘密値更新器359により出力された次のカウンタ(カウント値)と認証データの組である「j+1,Wi(j+1),Zi(j+1)」に書き換える。
【産業上の利用可能性】
【0097】
本発明の二要素認証システムは、基本的にユーザやサーバ認証を必要とするサービスやアプリケーションで利用できる。現在、ユーザ認証やサーバ認証は、電子商取引、サーバやネットワークへのログイン、入退室管理、公的交通機関への搭乗など、リアル、サイバーを問わず至るところで必要とされており、その応用先は広い。また、本発明はユーザの端末に特殊なモジュールを必要としないため、ユビキタス環境での認証方式としても適している。もちろん、ユーザの端末に耐タンパモジュールを用いることで、本発明の安全性をますます高めることが可能になる。
【図面の簡単な説明】
【0098】
【図1】本発明の二要素認証システムの全体の構成を説明する図である。
【図2】短い系列と記録情報を用いた二要素認証システムにおける初期化処理を説明する図である。
【図3】短い系列と記録情報を用いた二要素認証システムにおけるj番目プロトコル実行の構成を示す図である。
【図4】二要素認証システム1の初期化処理を説明する図である。
【図5】二要素認証システム1のユーザの端末装置におけるj番目プロトコル実行のシステム要素を示す図である。
【図6】二要素認証システム1のサーバの認証装置におけるj番目プロトコル実行のシステム要素を示す図である。
【図7】二要素認証システム2の初期化処理で用いられるユーザの端末装置200のシステム要素を示す図である。
【図8】二要素認証システム2の初期化処理で用いられるサーバの認証装置300システム要素を示す図である。
【図9】二要素認証システム2のユーザの端末装置におけるj番目プロトコル実行のシステム要素を示す図である。
【図10】二要素認証システム2のサーバの認証装置におけるj番目プロトコル実行のシステム要素を示す図である。
【図11】二要素認証システム3の初期化処理で用いられるユーザの端末装置200のシステム要素を示す図である。
【図12】二要素認証システム3の初期化処理で用いられるサーバの認証装置300システム要素を示す図である。
【図13】二要素認証システム3のユーザの端末装置におけるj番目プロトコル実行のシステム要素を示す図である。
【図14】二要素認証システム3のサーバの認証装置におけるj番目プロトコル実行のシステム要素を示す図である。
【図15】二要素認証システム4の初期化処理で用いられるユーザの端末装置200のシステム要素を示す図である。
【図16】二要素認証システム4の初期化処理で用いられるサーバの認証装置300システム要素を示す図である。
【図17】二要素認証システム4のユーザの端末装置におけるj番目プロトコル実行のシステム要素を示す図である。
【図18】二要素認証システム4のサーバの認証装置におけるj番目プロトコル実行のシステム要素を示す図である。
【符号の説明】
【0099】
100 二要素認証システム
101 通信路
200 ユーザの端末装置
201 記録情報の格納装置
202 認証処理部
203 秘密更新器
300 サーバの認証装置
301 記録情報の格納装置
302 認証処理部
303 秘密更新器

【特許請求の範囲】
【請求項1】
入力された短い系列とユーザの端末装置およびサーバの認証装置にそれぞれ保存されている記録情報を用いて、ユーザの端末装置とサーバの認証装置との間で相互認証しながらセッション鍵を確立する二要素認証システムであって、
ユーザの端末装置とサーバの認証装置においてそれぞれに前記短い系列に基づいて作成された記録情報を記録する格納装置と、
ユーザの端末装置とサーバの認証装置においてそれぞれに前記格納装置に記録された記録情報を用いて認証プロトコルの実行を行い、ユーザの端末装置とサーバの認証装置との間で相互認証しながらセッション鍵を確立する処理を行う認証処理部と、
前記セッション鍵を生成するたびに格納装置に記録されている記録情報を変更する秘密値更新器と
を備えることを特徴とする二要素認証システム。
【請求項2】
前記請求項1に記載された二要素認証システムにおいて、
前記格納装置に記録された記録情報には、乱数が含まれており、
認証処理部は、乱数の値に基づいて認証プロトコルの実行を行う
ことを特徴とする二要素認証システム。
【請求項3】
前記請求項1に記載された二要素認証システムにおいて、更に、
ユーザの端末装置とサーバの認証装置においてそれぞれに前記短い系列に基づいて記録情報を作成する初期化処理部を備え、
前記格納装置は前記初期化処理部により作成された記録情報を初期値として記録する
ことを特徴とする二要素認証システム。
【請求項4】
前記請求項1に記載された二要素認証システムにおいて、
前記格納装置に記録された記録情報には、カウント値が含まれており、
秘密値更新器は、前記カウント値に基づいて格納装置に記録する記録情報の更新を管理する
ことを特徴とする二要素認証システム。
【請求項5】
前記請求項1に記載された二要素認証システムにおいて、
認証処理部は、ユーザの端末装置とサーバの認証装置との間で相互認証し、セッション鍵を確立する処理は、RSA公開鍵に基づく認証プロトコルの処理により行う
ことを特徴とする二要素認証システム。
【請求項6】
前記請求項1に記載された二要素認証システムにおいて、
認証処理部は、ユーザの端末装置とサーバの認証装置との間で相互認証し、セッション鍵を確立する処理は、DH鍵共有プロトコルに基づく認証処理により行う
ことを特徴とする二要素認証システム。
【請求項7】
入力された短い系列とユーザの端末装置およびサーバの認証装置にそれぞれ保存されている記録情報を用いて、ユーザの端末装置とサーバの認証装置との間で相互認証しながらセッション鍵を確立する二要素認証システムであって、
ユーザの端末装置において記録情報を記録する第1格納装置と、
サーバの認証装置において記録情報を記録する第2格納装置と、
ユーザの端末装置において第1格納装置に記録された記録情報を用いて認証プロトコルの実行を行い、サーバの認証装置との間で相互認証しながらセッション鍵を確立する処理を行う第1認証処理部と、
サーバの認証装置において前記第2格納装置に記録された記録情報を用いて認証プロトコルの実行を行い、ユーザの端末装置との間で相互認証しながらセッション鍵を確立する処理を行う第2認証処理部と、
ユーザの端末装置において前記セッション鍵を生成するたびに第1格納装置に記録されている記録情報を変更する第1秘密値更新器と
サーバの認証装置において前記セッション鍵を生成するたびに第2格納装置に記録されている記録情報を変更する第2秘密値更新器と
を備えることを特徴とする二要素認証システム。
【請求項8】
請求項7に記載の二要素認証システムにおいて、
ユーザの端末装置の第1格納装置に格納する記録情報は、乱数、カウント値、及び公開鍵であり、
サーバの認証装置の第2格納装置に格納する記録情報は、カウント値、認証データ、及び秘密鍵である
ことを特徴とする二要素認証システム。
【請求項9】
ユーザの端末装置に短い系列を入力して、ユーザの端末装置とサーバの認証装置の間において相互に認証子を生成して送信し、相互の認証子に基づく相互認証を行い、認証結果によりユーザの端末装置とサーバの認証装置の間でセッション鍵の確立を行い、セッション鍵が生成されるごとに秘密値更新器により、前記記録情報を更新する
ことを特徴とする二要素認証方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2009−271581(P2009−271581A)
【公開日】平成21年11月19日(2009.11.19)
【国際特許分類】
【出願番号】特願2008−118729(P2008−118729)
【出願日】平成20年4月30日(2008.4.30)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成19年度経済産業省「新世代情報セキュリティ研究開発事業/ユビキタスネットワーク向けセキュアアセットコントロール技術の研究開発及び情報漏えいに堅牢な認証・データ管理方式とそのソフトウェアによる安全な実装・検証手法に関する研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(301021533)独立行政法人産業技術総合研究所 (6,529)
【Fターム(参考)】