Notice: Undefined variable: fterm_desc_sub in /mnt/www/biblio_conv.php on line 353
ワンタイム認証システム
説明

ワンタイム認証システム

【課題】ワンタイム認証システムにおいて、セッション開始後短時間で、シードを保持する携帯型記憶装置を離脱可能とし、携帯型記憶装置が離脱しても、その後、継続的にワンタイム認証を繰り返し行うことができるようにする。
【解決手段】サーバ装置4およびクライアント装置1は、フェーズ1およびフェーズ2のワンタイム認証を行う。クライアント装置1は、フェーズ1において、携帯型記憶装置5からシードを読み出し、シードに基づいてワンタイム認証子を生成してサーバ装置4へ送信し、ワンタイム認証子について認証に成功すると、次回認証用シードを携帯型記憶装置5に書き込み、フェーズ2において、フェーズ1の次回認証用シードから当該フェーズ2の初回認証用シードを導出し、初回認証用シードからワンタイム認証子を生成し、以後、フェーズ2での認証を繰り返し行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ワンタイム認証システムに関するものである。
【背景技術】
【0002】
クライアントおよびサーバのそれぞれにおいて乱数などのシードを認証に成功するたびに更新し、次回認証時に、それらのシードからワンタイムIDを生成し、クライアントとサーバとの間で相互に認証を行うシステムがある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−282295号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述のようなシステムにおいて、次回認証用のクライアント側のシードは、クライアント側の装置に記憶される。このため、通常、ワンタイムIDによる認証を受けるために使用可能なクライアント側の装置は、シードが記憶されている装置に限定される。
【0005】
しかし、ワンタイムIDによる認証を受けるために使用可能なクライアント側の装置が限定されないようにするために、ICカードなどの書換可能な携帯型記憶装置にクライアント側のシードを記憶させてユーザがその携帯型記憶装置を携帯することが考えられる。そのようにすることで、ユーザが選択した装置に内蔵または接続されているリーダライタにより携帯型記憶装置からシードを読み取らせ、その装置にてワンタイムIDによる認証を受けることができる。
【0006】
このような認証は、セッション内で複数回、繰り返し実行され、認証に成功するたびにシード、ひいてはワンタイムIDが更新される。
【0007】
しかし、ICカードなどに内蔵される不揮発性メモリには書込可能回数に上限(つまり寿命)があり、書込回数を減らしたいことから、携帯型記憶装置に次セッション用のシードを記憶させる場合、クライアント側の装置は、セッション内においてシードが更新されても携帯型記憶装置に記憶させずにRAMに保持しておき、セッション終了時(またはセッション終了後)に次回認証用のシードを携帯型記憶装置に書き込むことになる。
【0008】
したがって、少なくともセッション終了時まで、携帯型記憶装置をリーダライタによる書込可能な位置に配置させておく必要があり、利便性がよくない。また、セッション途中で携帯型記憶装置をリーダライタから離脱させてしまうと、次セッション時に、シードが携帯型記憶装置にないため、正規ユーザであっても、次セッションの初回認証時に、ワンタイムIDによる認証を受けることができなくなってしまう。
【0009】
本発明は、上記の問題に鑑みてなされたものであり、セッション開始後短時間で、シードを保持する携帯型記憶装置を離脱可能とし、携帯型記憶装置が離脱しても、その後、継続的に認証を繰り返し行うことができるワンタイム認証システム、並びにそのシステムで使用可能な端末装置およびクライアントコンピュータプログラムを得ることを目的とする。
【課題を解決するための手段】
【0010】
上記の課題を解決するために、本発明では以下のようにした。
【0011】
本発明に係るワンタイム認証システムは、サーバ装置と、クライアント装置と、所定の位置に配置されるとクライアント装置によるデータ読み書きが可能になる携帯型記憶装置とを備える。サーバ装置およびクライアント装置は、それぞれシードを生成し、シードを暗号化して相互に送信し、シードからワンタイム認証子を生成して送信し、シードに基づいて互いにワンタイム認証子についての認証を行い、認証に成功するたびに次回認証用シードを生成してシードを更新していく。携帯型記憶装置は、サーバ装置およびクライアント装置のシードを保持する。クライアント装置は、フェーズ1において、携帯型記憶装置からシードを読み出し、読み出したシードに基づいてワンタイム認証子を生成して送信し、ワンタイム認証子について認証に成功すると、フェーズ1の次回認証用シードを携帯型記憶装置に書き込み、フェーズ1の後のフェーズ2において、フェーズ1の次回認証用シードから当該フェーズ2の初回認証用シードを導出し、初回認証用シードからワンタイム認証子を生成し、ワンタイム認証子について認証に成功すると、フェーズ2での次回認証用シードを生成してシードを更新する。サーバ装置は、フェーズ1の次回認証用シードを次回のフェーズ1での認証時まで保持するとともに、その次回認証用シードからフェーズ2の初回認証用シードを導出し、フェーズ2においてワンタイム認証子について認証に成功すると、フェーズ2での次回認証用シードを生成してシードを更新する。
【0012】
これにより、フェーズ1での認証用のシードとフェーズ2での認証用のシードとを別々に設け、携帯型記憶装置に格納されているシードを使用してフェーズ1での認証を実行し、携帯型記憶装置に格納されているシードを更新し、その後は、フェーズ2での認証を繰り返し行っていく。このため、フェーズ1での認証が完了すれば、ユーザは、携帯型記憶装置を、端末装置やリーダから離脱することができる。したがって、セッション開始後短時間で、シードを保持する携帯型記憶装置を離脱可能とし、携帯型記憶装置が離脱しても、その後、継続的に認証を繰り返し行うことができる。
【0013】
また、本発明に係るワンタイム認証システムは、上記のワンタイム認証システムに加え、次のようにしてもよい。この場合、携帯型記憶装置およびサーバ装置は、シードとして、フェーズ1クライアント側シードおよびフェーズ1サーバ側シードを保持する。クライアント装置は、
(a1)携帯型記憶装置からフェーズ1クライアント側シードおよびフェーズ1サーバ側シードを読み出し、
(a2)フェーズ1クライアント側シードおよびフェーズ1サーバ側シードからフェーズ1クライアント側ワンタイム認証子を生成し、
(a3)次回認証用フェーズ1クライアント側シードを生成し、
(a4)フェーズ1クライアント側ワンタイム認証子および暗号化後の次回認証用フェーズ1クライアント側シードをサーバ装置へ送信し、
(a5)サーバ装置からフェーズ1サーバ側ワンタイム認証子および暗号化後の次回認証用フェーズ1サーバ側シードを受信し、
(a6)フェーズ1サーバ側ワンタイム認証子について認証に成功すると、次回認証用フェーズ1クライアント側シードおよび次回認証用フェーズ1サーバ側シードを携帯型記憶装置に書き込み、
(a7)フェーズ1サーバ側ワンタイム認証子について認証に成功すると、次回認証用フェーズ1クライアント側シードおよび次回認証用フェーズ1サーバ側シードから初回認証用フェーズ2クライアント側シードおよび初回認証用フェーズ2サーバ側シードを導出し、
(a8)初回認証用フェーズ2クライアント側シードおよび初回認証用フェーズ2サーバ側シードから初回認証用フェーズ2クライアント側ワンタイム認証子を生成し、
(a9)次回認証用フェーズ2クライアント側シードを生成し、
(a10)初回認証用フェーズ2クライアント側ワンタイム認証子および暗号化後の次回認証用フェーズ2クライアント側シードをサーバ装置へ送信し、
(a11)サーバ装置からフェーズ2サーバ側ワンタイム認証子および暗号化後の次回認証用フェーズ2サーバ側シードを受信し、
(a12)フェーズ2サーバ側ワンタイム認証子について認証に成功すると、次回認証用フェーズ2クライアント側シードおよび次回認証用フェーズ2サーバ側シードから次回認証用フェーズ2クライアント側ワンタイム認証子を生成する。
また、サーバ装置は、
(b1)クライアント装置からフェーズ1クライアント側ワンタイム認証子および暗号化後の次回認証用フェーズ1クライアント側シードを受信し、
(b2)フェーズ1クライアント側ワンタイム認証子について認証に成功すると、次回認証用フェーズ1サーバ側シードを生成し、
(b3)次回認証用フェーズ1クライアント側シードおよびフェーズ1サーバ側シードからフェーズ1サーバ側ワンタイム認証子を生成し、
(b4)クライアント装置へフェーズ1サーバ側ワンタイム認証子および暗号化後の次回認証用フェーズ1サーバ側シードを送信し、
(b5)次回認証用フェーズ1クライアント側シードおよび次回認証用フェーズ1サーバ側シードから初回認証用フェーズ2クライアント側シードおよび初回認証用フェーズ2サーバ側シードを導出し、
(b6)クライアント装置からフェーズ2クライアント側ワンタイム認証子および暗号化後の次回認証用フェーズ2クライアント側シードを受信し、
(b7)初回認証用フェーズ2クライアント側シードおよび初回認証用フェーズ2サーバ側シードに基づき、初回認証用フェーズ2クライアント側ワンタイム認証子について認証に成功すると、次回認証用フェーズ2サーバ側シードを生成し、
(b8)次回認証用フェーズ2クライアント側シードおよび初回認証用フェーズ2サーバ側シードから初回認証用フェーズ2サーバ側ワンタイム認証子を生成し、
(b9)クライアント装置へ初回認証用フェーズ2サーバ側ワンタイム認証子および暗号化後の次回認証用フェーズ2サーバ側シードを送信する。
【0014】
また、本発明に係るワンタイム認証システムは、上記のワンタイム認証システムのいずれかに加え、次のようにしてもよい。この場合、フェーズ1クライアント側ワンタイム認証子およびフェーズ2クライアント側ワンタイム認証子は、同一の一方向性関数で計算され、その一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。そして、フェーズ1クライアント側ワンタイム認証子についての引数の順序が、フェーズ1クライアント側シード、フェーズ1サーバ側シードの順序である場合、フェーズ2クライアント側ワンタイム認証子についての引数の順序が、フェーズ2サーバ側シード、フェーズ2クライアント側シードの順序である。一方、フェーズ1クライアント側ワンタイム認証子についての引数の順序が、フェーズ1サーバ側シード、フェーズ1クライアント側シードの順序である場合、フェーズ2クライアント側ワンタイム認証子についての引数の順序が、フェーズ2クライアント側シード、フェーズ2サーバ側シードの順序である。
【0015】
これにより、フェーズ1クライアント側ワンタイム認証子およびフェーズ2クライアント側ワンタイム認証子に使用する関数値のデータフォーマットが同一になる。このため、盗聴してもフェーズ1のワンタイム認証子かフェーズ2のワンタイム認証子かがデータフォーマットから判別できない。また、引数の順序を変えているため、フェーズ1のワンタイム認証子とフェーズ2の初回のワンタイム認証子とが一致しにくい。したがって、耐タンパ性が向上する。
【0016】
また、本発明に係るワンタイム認証システムは、上記のワンタイム認証システムのいずれかに加え、次のようにしてもよい。フェーズ1サーバ側ワンタイム認証子およびフェーズ2サーバ側ワンタイム認証子は、同一の一方向性関数で計算され、その一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。そして、フェーズ1サーバ側ワンタイム認証子についての引数の順序が、次回認証用フェーズ1クライアント側シード、フェーズ1サーバ側シードの順序である場合、フェーズ2サーバ側ワンタイム認証子についての引数の順序が、フェーズ2サーバ側シード、次回認証用フェーズ2クライアント側シードの順序である。一方、フェーズ1サーバ側ワンタイム認証子についての引数の順序が、フェーズ1サーバ側シード、次回認証用フェーズ1クライアント側シードの順序である場合、フェーズ2サーバ側ワンタイム認証子についての引数の順序が、次回認証用フェーズ2クライアント側シード、フェーズ2サーバ側シードの順序である。
【0017】
これにより、フェーズ1サーバ側ワンタイム認証子およびフェーズ2サーバ側ワンタイム認証子に使用する関数値のデータフォーマットが同一になる。このため、盗聴してもフェーズ1のワンタイム認証子かフェーズ2のワンタイム認証子かがデータフォーマットから判別できない。また、引数の順序を変えているため、フェーズ1のワンタイム認証子とフェーズ2の初回のワンタイム認証子とが一致しにくい。したがって、耐タンパ性が向上する。
【0018】
また、本発明に係るワンタイム認証システムは、上記のワンタイム認証システムのいずれかに加え、次のようにしてもよい。この場合、クライアント装置は、次回認証用フェーズ1クライアント側シードおよび次回認証用フェーズ1サーバ側シードを携帯型記憶装置に書き込むまでメモリで保持し、次回認証用フェーズ1クライアント側シードおよび次回認証用フェーズ1サーバ側シードを、携帯型記憶装置に書き込んだ後、メモリから消去する。
【0019】
これにより、フェーズ1のシードがクライアント装置に残らないため、フェーズ1の認証が完了した後に、次回、フェーズ1で使用するシードをクライアント装置から不正に入手することが困難になる。
【0020】
また、本発明に係るワンタイム認証システムは、上記のワンタイム認証システムのいずれかに加え、次のようにしてもよい。この場合、携帯型記憶装置およびサーバ装置は、フェーズ1共通暗号鍵を保持する。クライアント装置は、携帯型記憶装置からフェーズ1共通暗号鍵を読み出し、フェーズ1共通暗号鍵で、次回認証用フェーズ1クライアント側シードを暗号化し、フェーズ1サーバ側ワンタイム認証子について認証に成功すると、フェーズ1共通暗号鍵を更新し、更新後のフェーズ1共通暗号鍵を携帯型記憶装置に書き込み、更新後のフェーズ1共通暗号鍵からフェーズ2共通暗号鍵の初期値を導出し、フェーズ2共通暗号鍵で、次回認証用フェーズ2クライアント側シードを暗号化し、フェーズ2サーバ側ワンタイム認証子について認証に成功すると、フェーズ2共通暗号鍵を更新する。一方、サーバ装置は、フェーズ1共通暗号鍵で、次回認証用フェーズ1サーバ側シードを暗号化し、フェーズ1クライアント側ワンタイム認証子について認証に成功すると、フェーズ1共通暗号鍵を更新し、更新後のフェーズ1共通暗号鍵を次回のフェーズ1での認証時まで保持するとともに、更新後のフェーズ1共通暗号鍵からフェーズ2共通暗号鍵の初期値を導出し、フェーズ2共通暗号鍵で、次回認証用フェーズ2サーバ側シードを暗号化し、フェーズ2クライアント側ワンタイム認証子について認証に成功すると、フェーズ2共通暗号鍵を更新する。
【0021】
これにより、フェーズ1で使用される共通暗号鍵とフェーズ2で使用される共通暗号鍵とを別々に設け、携帯型記憶装置に格納されているフェーズ1共通暗号鍵を使用して暗号化されたシードの送受を行い、フェーズ1での認証が成功すると、携帯型記憶装置に格納されているフェーズ1共通暗号鍵を更新し、また、フェーズ2での認証が成功するたびに、フェーズ2共通暗号鍵を更新していく。このため、フェーズ1とフェーズ2と別々に共通暗号鍵が更新されていき、耐タンパ性が向上する。
【0022】
また、本発明に係るワンタイム認証システムは、上記のワンタイム認証システムのいずれかに加え、次のようにしてもよい。この場合、クライアント装置は、更新後のフェーズ1共通暗号鍵を携帯型記憶装置に書き込むまでメモリで保持し、更新後のフェーズ1共通暗号鍵を、携帯型記憶装置に書き込んだ後、メモリから消去する。
【0023】
これにより、フェーズ1で使用する共通暗号鍵がクライアント装置に残らないため、フェーズ1の認証が完了した後に、次回、フェーズ1で使用する共通暗号鍵をクライアント装置から不正に入手することが困難になる。
【0024】
本発明に係る端末装置は、ネットワークを介してサーバ装置と通信する通信処理部と、シードを生成するとともに通信処理部を使用してサーバ装置からサーバ装置のシードを受信し、生成したシードと受信したシードからワンタイム認証子を生成して通信処理部を使用して送信し、シードに基づいて、サーバ装置から受信されたワンタイム認証子についての認証を行い、認証に成功するたびに次回認証用シードを生成してシードを更新していく認証処理部とを備える。そして、認証処理部は、フェーズ1において、所定の位置に配置されると当該端末装置によるデータ読み書きが可能になる携帯型記憶装置からサーバ装置側および当該端末装置側のシードを読み出し、読み出したシードに基づいてワンタイム認証子を生成して送信し、ワンタイム認証子について認証に成功すると、サーバ装置側および当該端末装置側についてのフェーズ1の次回認証用シードを携帯型記憶装置に書き込み、フェーズ1の後のフェーズ2において、フェーズ1の次回認証用シードから当該フェーズ2の初回認証用シードを導出し、初回認証用シードからワンタイム認証子を生成し、ワンタイム認証子について認証に成功すると、フェーズ2での次回認証用シードを生成してシードを更新する。
【0025】
本発明に係るクライアントコンピュータプログラムは、端末装置内のコンピュータを、シードを生成するとともにサーバ装置からサーバ装置のシードを受信し、生成したシードと受信したシードからワンタイム認証子を生成して送信し、シードに基づいて、サーバ装置から受信されたワンタイム認証子についての認証を行い、認証に成功するたびに次回認証用シードを生成してシードを更新していく認証処理部として機能させるためのクライアントコンピュータプログラムである。そして、その認証処理部は、フェーズ1において、所定の位置に配置されると端末装置によるデータ読み書きが可能になる携帯型記憶装置からサーバ装置側および端末装置側のシードを読み出し、読み出したシードに基づいてワンタイム認証子を生成して送信し、ワンタイム認証子について認証に成功すると、サーバ装置側および当該端末装置側についてのフェーズ1の次回認証用シードを携帯型記憶装置に書き込み、フェーズ1の後のフェーズ2において、フェーズ1の次回認証用シードから当該フェーズ2の初回認証用シードを導出し、初回認証用シードからワンタイム認証子を生成し、ワンタイム認証子について認証に成功すると、フェーズ2での次回認証用シードを生成してシードを更新する。
【発明の効果】
【0026】
本発明によれば、セッション開始後短時間で、シードを保持する携帯型記憶装置を離脱可能とし、携帯型記憶装置が離脱しても、その後、継続的に認証を繰り返し行うことができるワンタイム認証システムが得られる。
【図面の簡単な説明】
【0027】
【図1】図1は、本発明の実施の形態に係るワンタイム認証システムの構成を示すブロック図である。
【図2】図2は、図1における端末装置の構成を示すブロック図である。
【図3】図3は、図2に示す端末装置において実現される処理部を示すブロック図である。
【図4】図4は、図1におけるサーバ装置の構成を示すブロック図である。
【図5】図5は、図2に示すサーバ装置において実現される処理部を示すブロック図である。
【図6】図6は、図1におけるICカードの構成を示すブロック図である。
【図7】図7は、図1に示すシステムにおいて実行されるワンタイム認証子を使用して繰り返し行われる認証について説明するシーケンス図である。
【図8】図8は、図7におけるフェーズ1でのワンタイム認証(ステップS4)の詳細について説明するシーケンス図である。
【図9】図9は、図7におけるフェーズ2での初回のワンタイム認証(ステップS7a)の詳細について説明するシーケンス図である。
【図10】図10は、図7におけるフェーズ2での2回目以降のワンタイム認証(ステップS7)の詳細について説明するシーケンス図である。
【図11】図11は、実施の形態2におけるシードテーブルの構造の一例を示す図である。
【図12】図12は、実施の形態2における認証子テーブルの一例を示す図である。
【図13】図13は、実施の形態2におけるサーバ装置によるデータ処理について説明するフローチャートである。
【図14】図14は、実施の形態2におけるサーバ装置によるデータ処理について説明するフローチャートである。
【発明を実施するための形態】
【0028】
以下、図に基づいて本発明の実施の形態を説明する。
【0029】
実施の形態1.
【0030】
図1は、本発明の実施の形態に係るワンタイム認証システムの構成を示すブロック図である。
【0031】
図1に示すシステムでは、クライアント装置としての端末装置1にICカード用リーダライタ2が接続されており、また、端末装置1は、ネットワーク3に接続されており、そのネットワーク3にはサーバ装置4が接続されている。端末装置1は、ICカード5が所定の位置(例えばリーダライタ2の上)に配置されている時に、リーダライタ2を使用して、ICカード5に対してデータの読み書きを行うことができるとともに、サーバ装置4との間でデータ通信を行うことができる。
【0032】
端末装置1は、パーソナルコンピュータなどの装置である。ネットワーク3は、有線および/または無線のLAN(Local Area Network)、および/またはインターネットなどのWAN(Wide Area Network)を含んでいる。ICカード5は、Ferica(登録商標)などといった、データ読み書き可能な不揮発性メモリ領域を有するカードである。この実施の形態1では、ICカード5は、携帯型記憶装置として使用される。
【0033】
ICカード5は、シードを保持する。シードは、ワンタイム認証子を生成するために使用されるデータであって、この実施の形態では、乱数が使用される。ワンタイム認証子は、認証時に1度だけ使用可能なID(ワンタイムID)またはパスワード(ワンタイムパスワード)である。この実施の形態では、ワンタイム認証子は、ワンタイムIDとされる。
【0034】
サーバ装置4および端末装置1は、それぞれシードを生成し、認証に成功するたびにシードを更新していき、そのシードを暗号化して相互に送受し、両者のシードからワンタイム認証子を生成し、シードに基づいて、互いにワンタイム認証子についての認証を行う。なお、以下では、ワンタイム認証子についての認証のことを、ワンタイム認証という。
【0035】
サーバ装置4および端末装置1は、フェーズ1およびフェーズ2のワンタイム認証を行う。フェーズ1は、セッション開始後の初回のワンタイム認証を行うフェーズであり、フェーズ2は、フェーズ1に続くフェーズである。
【0036】
フェーズ1において、端末装置1は、ICカード5から両者のシードを読み出し、そのシードに基づいてワンタイム認証子を生成してサーバ装置4へ送信し、ワンタイム認証子について認証に成功すると、次回認証用シードをICカード5に書き込む。
【0037】
フェーズ1の後のフェーズ2において、端末装置1は、フェーズ1の次回認証用シードから当該フェーズ2の初回認証用シードを導出し、初回認証用シードからワンタイム認証子を生成し、ワンタイム認証子について認証に成功すると、フェーズ2での次回認証用シードを生成し次回認証用シードに基づいてワンタイム認証子を生成する。
【0038】
一方、サーバ装置4は、フェーズ1の次回認証用シードを次回のフェーズ1での認証時まで保持するとともに、その次回認証用シードからフェーズ2の初回認証用シードを導出し、ワンタイム認証子について認証に成功すると、フェーズ2での次回認証用シードを生成し次回認証用シードに基づいてワンタイム認証子を生成する。
【0039】
なお、図1では、ICカード5は、1枚だけであるが、2枚以上のICカード5のそれぞれに異なるシードを保持させて、それぞれ異なるワンタイム認証子で認証を行うことも可能である。また、図1では、端末装置1およびリーダライタ2も1組のみであるが、同様のものが複数組、ネットワーク3に接続されていてもよい。
【0040】
以下、上記システムにおける各装置の構成および動作について説明する。
【0041】
(1)各装置の構成
【0042】
図2は、図1における端末装置1の構成を示すブロック図である。
【0043】
図2に示すように、端末装置1は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13などを有するコンピュータを内蔵する。
【0044】
CPU11は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ROM12は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、RAM13は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶する揮発性のメモリである。
【0045】
また、インタフェース14は、記憶装置15を接続可能なインタフェース回路であり、SCSI(Small Computer System Interface )、IDE(Integrated Device Electronics )互換のものなどである。
【0046】
また、記憶装置15は、インタフェース14に接続され、図示せぬオペレーティングシステム、ワンタイム認証プログラム31、アプリケーションプログラムなどを格納する記録媒体を有する装置である。記憶装置15としては、ハードディスクドライブ、SSD(Solid State Disk)などが使用される。
【0047】
また、インタフェース16は、通信装置17を接続可能なインタフェース回路である。通信装置17は、ネットワークインタフェースカード、モデムなどといったネットワーク3に接続可能な装置である。
【0048】
また、インタフェース18は、IEEE1394、USB(Universal Serial Bus)などといった周辺機器インタフェースであって、リーダライタ2を接続可能なインタフェース回路である。
【0049】
また、インタフェース20は、入力装置21を接続可能なインタフェース回路である。入力装置21は、キーボード、マウスなどといったユーザ操作を受け付けてそのユーザ操作に応じた信号を出力する装置である。
【0050】
また、画像処理回路22は、画像データを書き込まれると、そのデータに対応する画像信号を出力する回路である。この画像処理回路22には、その画像信号に基づいて画像を表示する表示装置23が接続可能である。
【0051】
CPU11、ROM12、RAM13、インタフェース14,16,18,20および画像処理回路22は、バスやコントローラチップによって相互にデータ通信可能に接続されている。
【0052】
図3は、図2に示す端末装置1において実現される処理部を示すブロック図である。図3に示すように、この端末装置1において、リーダライタ制御部41、通信処理部42、および認証処理部43が実現される。
【0053】
リーダライタ制御部41は、リーダライタ2を制御するドライバであって、ICカード5に対するデータの読み書きを実行する。
【0054】
通信処理部42は、通信装置17を使用して、所定の通信プロトコルでサーバ装置4とネットワーク3を介してデータ通信を行う。
【0055】
認証処理部43は、CPU11でワンタイム認証プログラム31が実行されることにより実現され、リーダライタ制御部41および通信処理部42を使用して、サーバ装置4との相互認証におけるクライアント側の処理を実行する。
【0056】
図4は、図1におけるサーバ装置4の構成を示すブロック図である。
【0057】
図4において、CPU51は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ROM52は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、RAM53は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶するメモリである。
【0058】
また、インタフェース54は、記憶装置55を接続可能なインタフェース回路であり、SCSI、IDE互換のものなどである。記憶装置55は、インタフェース54に接続され、図示せぬオペレーティングシステム、ワンタイム認証プログラム61、認証に使用されるデータなどを格納する記録媒体を有する装置である。記憶装置55としては、ハードディスクドライブ、SSDなどが使用される。記憶装置55には、認証に使用されるデータとして、シードテーブル71、認証子テーブル72、およびカード属性テーブル73が保持されている。
【0059】
シードテーブル71は、最後の認証時に更新された、フェーズ1およびフェーズ2のそれぞれについての次回認証用シードおよび次回認証用共通暗号鍵を有する。次回認証用シードおよび次回認証用共通暗号鍵は、1または複数のICカードのそれぞれについて別々に保持される。
【0060】
認証子テーブル72は、最後の認証時に更新された、フェーズ1およびフェーズ2のそれぞれについての次回認証用のクライアント側ワンタイム認証子を有する。認証子テーブル72は、フェーズ1テーブル72aとフェーズ2テーブル72bとを含む。フェーズ1テーブル72aは、フェーズ1についての次回認証用のクライアント側ワンタイム認証子を有し、とフェーズ2テーブル72bは、フェーズ2についての次回認証用のクライアント側ワンタイム認証子を有する。次回認証用のクライアント側ワンタイム認証子は、1または複数のICカードのそれぞれについて別々に保持される。
【0061】
カード属性テーブル73は、ICカード5のカードID、およびそのカードIDに関連付けられている属性情報(カード所有者情報など)を有するテーブルである。カード属性テーブル73は、ワンタイム認証子がワンタイムパスワードであるときに、端末装置1からワンタイム認証子とともに受信されるカードIDの正当性を判定する際に参照される。
【0062】
また、インタフェース56は、通信装置57を接続可能なインタフェース回路である。通信装置57は、ネットワークインタフェースカード、モデムなどといったネットワーク3に接続可能な装置である。
【0063】
CPU51、ROM52、RAM53、およびインタフェース54,56は、バスやコントローラチップによって相互にデータ通信可能に接続されている。
【0064】
図5は、図2に示すサーバ装置4において実現される処理部を示すブロック図である。図5に示すように、このサーバ装置4において、通信処理部81、およびサーバ側認証処理部82が実現される。
【0065】
通信処理部81は、通信装置57を使用して、所定の通信プロトコルで端末装置1とネットワーク3を介してデータ通信を行う。
【0066】
サーバ側認証処理部82は、CPU51でワンタイム認証プログラム61が実行されることにより実現され、通信処理部81を使用して、1または複数のクライアント装置(端末装置1など)との相互認証におけるサーバ側の処理を実行する。
【0067】
図6は、図1におけるICカード5の構成を示すブロック図である。
【0068】
ICカード5は、通信部91、不揮発性メモリ92、および制御部93を有する。通信部91は、リーダライタ2との通信のためのアンテナや通信回路を有する。不揮発性メモリ92は、フラッシュメモリなどであって、ユーザが書換可能なユーザ領域と、ユーザが書換可能ではない非ユーザ領域とを有する。ICカードに固有なカードID101は、予め非ユーザ領域に保持されており、シード102は、ユーザ領域に保持される。制御部93は、リーダライタ2から受信されるコマンドに従って、不揮発性メモリ92に対するデータの読み書きを行う回路である。
【0069】
(2)各装置の動作
【0070】
図7は、図1に示すシステムにおいて実行されるワンタイム認証子を使用して繰り返し行われる認証について説明するシーケンス図である。
【0071】
まず、セッション開始時(ステップS1)に、ユーザは、ICカード5をリーダライタ2に載置しておく。
【0072】
端末装置1では、認証処理部43は、リーダライタ制御部41を使用してリーダライタ2を制御し、ICカード5からシード102などを読み込む(ステップS2)。
【0073】
そして、認証処理部43は、フェーズフラグPに、フェーズ1を示す値(ここでは1)をセットする(ステップS3)。フェーズフラグPは、認証のフェーズを示すデータである。フェーズフラグPの値から、現時点のフェーズが識別され、ひいては、フェーズ1からフェーズ2へ移行したことも判定される。
【0074】
次に、端末装置1の認証処理部43とサーバ装置4のサーバ側認証処理部82との間で、フェーズ1でのワンタイム認証が実行される(ステップS4)。このとき、認証処理部43は、読み込んだシードからワンタイム認証子を生成し、また、次回認証用シードを生成して暗号化し、ワンタイム認証子および暗号化された次回認証用シードをサーバ装置4へ送信する。サーバ側認証処理部82は、そのワンタイム認証子および暗号化された次回認証用シードを受信し、そのワンタイム認証子が正当なものであるか否かを判定する。サーバ側認証処理部82は、そのワンタイム認証子が正当なものであれば、クライアントの次回認証用シードを復号して保持する。
【0075】
なお、フェーズ1のクライアント側シードの初期値、サーバ側シードの初期値、および共通暗号鍵の初期値は、ICカード5とサーバ装置4に予めセットされる。サーバ装置4には、ICカード5に関連付けて、それらの初期値がセットされる。
【0076】
サーバ装置4では、シードテーブル71にICカード5のシード102と同一のシードが保持されており、また、フェーズ1の次回認証用クライアント側ワンタイム認証子が、認証子テーブル72に保持されている。次回認証用クライアント側ワンタイム認証子は、前回の認証時に生成され、認証子テーブル72に書き込まれたものである。この次回認証用クライアント側ワンタイム認証子は、端末装置1から送信されてくるワンタイム認証子の正当性判定に使用される。つまり、端末装置1から送信されてきたワンタイム認証子が、認証子テーブル72に保持されているワンタイム認証子と一致すると、そのワンタイム認証子は正当なものであると判定される。
【0077】
なお、フェーズ1のシードの初期値は、予めICカード5およびサーバ装置4にセットされ、フェーズ1の認証が成功するたびに、フェーズ1のシードの値は更新されていく。
【0078】
フェーズ1でのワンタイム認証が成功すると、サーバ装置4では、サーバ側認証処理部82は、次回認証用シードからクライアント側ワンタイム認証子を生成し、認証子テーブル72において、ICカード5についてのフェーズ1の次回認証用クライアント側ワンタイム認証子を更新する。一方、端末装置1の認証処理部43は、次回認証用シードに基づいて、ICカード5内のシード102を更新する(ステップS5)。
【0079】
この時点で、ICカード5をリーダライタ2から離脱させることが可能となる。このため、認証処理部43は、オーディオ出力やビデオ出力を使用して、ICカード5をリーダライタ2から離脱させることが可能となったことを、ユーザに報知するようにしてもよい。
【0080】
そして、認証処理部43は、フェーズフラグPに、フェーズ2を示す値(ここでは2)をセットする(ステップS6)。
【0081】
次に、認証が必要なタイミングでフェーズ2における初回の認証が実行される(ステップS7a)。
【0082】
フェーズ2における初回の認証では、フェーズ1での認証で更新されたシード(つまり、フェーズ1の次回認証用シード)からフェーズ2用のシードの初期値が導出される。この実施の形態1では、フェーズ1での認証で更新されたシードの値が、フェーズ2用のシードの初期値とされる。
【0083】
その後、端末装置1の認証処理部43とサーバ装置4のサーバ側認証処理部82との間で、フェーズ2でのワンタイム認証が実行される。
【0084】
フェーズ2の初回のワンタイム認証(ステップS7a)では、認証処理部43は、その初期値を有するシードからワンタイム認証子を生成し、また、フェーズ2の次回認証用シードを生成して暗号化し、ワンタイム認証子と暗号化された次回認証用シードをサーバ装置4へ送信する。
【0085】
一方、サーバ側認証処理部82は、フェーズ1の次回認証用シードからフェーズ2のシードの初期値を計算し、その初期値からICカード5についてのフェーズ2の初回のワンタイム認証子を計算する。そして、フェーズ2の初回のワンタイム認証(ステップS7a)において、サーバ側認証処理部82は、端末装置1からワンタイム認証子および暗号化された次回認証用シードを受信すると、受信したワンタイム認証子が正当なものであるか否かを、計算したワンタイム認証子に基づいて判定する。サーバ側認証処理部82は、そのワンタイム認証子が正当なものであれば、次回認証用シードを復号し保持する。
【0086】
フェーズ2の初回のワンタイム認証に成功すると、フェーズ2の2回目以降のワンタイム認証(ステップS7)において、端末装置1の認証処理部43は、シードを生成し、同様にシードから生成したワンタイム認証子と、暗号化された次回認証用シードとをサーバ装置4へ送信する。
【0087】
一方、フェーズ2の2回目以降のワンタイム認証(ステップS7)において、サーバ側認証処理部82は、前回の認証時に送信されてきた次回認証用シードからワンタイム認証子を計算し、その後、端末装置1からワンタイム認証子および暗号化された次回認証用シードを受信すると、受信したワンタイム認証子が正当なものであるか否かを、計算したワンタイム認証子に基づいて判定する。サーバ側認証処理部82は、そのワンタイム認証子が正当なものであれば、次回認証用シードを復号し保持する(つまり、フェーズ2の次回認証用シードを更新する)。
【0088】
以後、セッション終了(ステップS8)まで、認証が必要なタイミングでフェーズ2における認証が実行される(ステップS7)。
【0089】
ここで、フェーズ1でのワンタイム認証(ステップS4)の詳細について説明する。図8は、図7におけるフェーズ1でのワンタイム認証(ステップS4)の詳細について説明するシーケンス図である。なお、以下において、フェーズ1の説明中のnとフェーズ2の説明中のnとは無関係である。
【0090】
ICカード5には、シード102の他に、フェーズ1用の共通暗号鍵も保持されている。また、サーバ装置4にも、シードの他に、同一の共通暗号鍵がフェーズ1用の共通暗号鍵として保持されている。つまり、フェーズ1の共通暗号鍵の初期値は、予めICカード5およびサーバ装置4にセットされている。そして、後述のように、フェーズ1の認証が成功するたびに、フェーズ1の共通暗号鍵の値は更新されていく。
【0091】
端末装置1では、認証処理部43が、ICカード5から、シードR1(n−1)、シードQ1(n−1)、共通暗号鍵K1(n−1)を読み込み、RAM13上に保持する(ステップS2)。
【0092】
シードR1(n−1)は、今回(n−1)のワンタイム認証についてのフェーズ1クライアント側シードである。シードQ1(n−1)は、今回(n−1)のワンタイム認証についてのフェーズ1サーバ側シードである。共通暗号鍵K1(n−1)は、今回(n−1)のワンタイム認証時に、次回認証用のフェーズ1クライアント側シードR1(n)をサーバ装置4へ送信する際に、そのR1(n)を暗号化するためのフェーズ1共通暗号鍵である。
【0093】
そして、まず、認証処理部43は、乱数Rを生成し、その乱数Rを、次回認証用のフェーズ1クライアント側シードR1(n)にセットする(ステップS21)。
【0094】
そして、認証処理部43は、今回のワンタイム認証についての、フェーズ1クライアント側ワンタイム認証子C1(n−1)を生成する(ステップS22)。
【0095】
ワンタイム認証子C1(n−1)は、一方向性関数で計算される。この一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数hcである。
【0096】
ワンタイム認証子C1(n−1)は、次式に従って計算される。
【0097】
C1(n−1)=hc(R1(n−1),Q1(n−1))
【0098】
ここで、ハッシュ関数hcの第1引数には、R1(n−1)が使用され、第2引数には、Q1(n−1)が使用される。
【0099】
また、認証処理部43は、所定の暗号化方式に従って、共通暗号鍵K1(n−1)で、R1(n)を暗号化する。なお、共通暗号鍵K1(n−1)での暗号化後のR1(n)を、K1(n−1)*R1(n)と表現する。
【0100】
そして、認証処理部43は、通信処理部42を使用して、ワンタイム認証子C1(n−1)およびK1(n−1)*R1(n)をサーバ装置4へ送信する(ステップS23)。このとき、通信処理部42は、ワンタイム認証子C1(n−1)およびK1(n−1)*R1(n)を1つのメッセージとして送信する。
【0101】
サーバ装置4では、サーバ側認証処理部82は、通信処理部81を使用して、そのメッセージを受信し、そのメッセージからワンタイム認証子C1(n−1)およびK1(n−1)*R1(n)を抽出し、受信したワンタイム認証子C1(n−1)が、保持しているフェーズ1用のクライアント側ワンタイム認証子に一致するか否かを判定する(ステップS24)。
【0102】
なお、端末装置1からサーバ装置4へのメッセージのデータフォーマット(ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置)は、フェーズ1とフェーズ2で同一である。
【0103】
また、フェーズ1クライアント側ワンタイム認証子とフェーズ2クライアント側ワンタイム認証子は同一のデータフォーマット(つまり、同一データ長)を有し、暗号化後のフェーズ1クライアント側シードと、暗号化後のフェーズ2クライアント側シードとは同一のデータフォーマット(つまり、同一データ長)を有するため、受信データのみからでは、フェーズ1のワンタイム認証子かフェーズ2のワンタイム認証子かの区別がつかない。このため、サーバ側認証処理部82は、受信したワンタイム認証子が、フェーズ1テーブル72aに保持されているワンタイム認証子に一致するか否か、および受信したワンタイム認証子が、フェーズ2テーブル72bに保持されているワンタイム認証子に一致するか否かを判定し、受信したワンタイム認証子が、フェーズ1の正当なワンタイム認証子、フェーズ2の正当なワンタイム認証子、および不正なワンタイム認証子のいずれかであるかを判定する。
【0104】
したがって、受信したワンタイム認証子C1(n−1)が、不正なワンタイム認証子であると判定した場合、サーバ側認証処理部82は、認証失敗と判定し、処理を終了する。
【0105】
受信したワンタイム認証子C1(n−1)が、フェーズ1テーブル72aに保持しているフェーズ1用のクライアント側ワンタイム認証子に一致した場合、サーバ側認証処理部82は、認証成功と判定し、まず、乱数Qを生成し、その乱数Qを、次回認証用フェーズ1サーバ側シードQ1(n)にセットする(ステップS25)。
【0106】
また、サーバ側認証処理部82は、K1(n−1)*R1(n)を、シードテーブル71に保持している共通暗号鍵K1(n−1)で、R1(n)へ復号する。そして、サーバ側認証処理部82は、今回(n−1)のワンタイム認証用のフェーズ1サーバ側ワンタイム認証子S1(n−1)を生成する(ステップS26)。
【0107】
ワンタイム認証子S1(n−1)は、一方向性関数で計算される。この一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数hsである。
【0108】
ワンタイム認証子S1(n−1)は、次式に従って計算される。
【0109】
S1(n−1)=hs(R1(n),Q1(n−1))
【0110】
ここで、ハッシュ関数hsの第1引数には、R1(n)が使用され、第2引数には、Q1(n−1)が使用される。なお、ハッシュ関数hsは、ハッシュ関数hcと同一の関数でもよいし、異なる関数でもよい。
【0111】
また、サーバ側認証処理部82は、所定の暗号化方式に従って、共通暗号鍵K1(n−1)で、Q1(n)を暗号化する。なお、共通暗号鍵K1(n−1)での暗号化後のQ1(n)を、K1(n−1)*Q1(n)と表現する。
【0112】
そして、サーバ側認証処理部82は、通信処理部81を使用して、ワンタイム認証子S1(n−1)およびK1(n−1)*Q1(n)を端末装置1へ送信する(ステップS27)。このとき、通信処理部81は、ワンタイム認証子S1(n−1)およびK1(n−1)*Q1(n)を1つのメッセージとして送信する。
【0113】
なお、サーバ装置4から端末装置1へのメッセージのデータフォーマット(ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置)は、フェーズ1とフェーズ2とで同一である。
【0114】
また、フェーズ1サーバ側ワンタイム認証子とフェーズ2サーバ側ワンタイム認証子は、同一のデータフォーマット(つまり、同一データ長)を有し、暗号化後のフェーズ1サーバ側シードと暗号化後のフェーズ2サーバ側シードは、同一のデータフォー待つ(つまり、同一データ長)を有するため、受信データのみからでは、フェーズ1のワンタイム認証子か、フェーズ2のワンタイム認証子がの区別がつかない。このため、端末装置1の認証処理部43は、フェーズフラグPの値でフェーズを特定し、受信したワンタイム認証子を、特定したフェーズのワンタイム認証子として取り扱う。
【0115】
端末装置1では、認証処理部43は、通信処理部42を使用して、そのメッセージを受信し、ワンタイム認証子S1(n−1)およびK1(n−1)*Q1(n)を抽出する。そして、認証処理部43は、フェーズフラグPの値に基づいて、受信したワンタイム認証子がフェーズ1のワンタイム認証子であることを特定する(ステップS28)。
【0116】
そして、認証処理部43は、R1(n)およびQ1(n−1)に基づいて、上述の式に従って正当なワンタイム認証子S1(n−1)の値を計算し、受信したワンタイム認証子S1(n−1)が、計算した値に一致するか否かを判定する(ステップS29)。
【0117】
このとき、受信したワンタイム認証子S1(n−1)が、計算した値に一致しない場合、認証処理部43は、認証失敗と判定し、処理を終了する。この場合、ICカード5用のシード102と共通暗号鍵は更新されず、次回のセッションで使用される。
【0118】
受信したワンタイム認証子S1(n−1)が、計算した値に一致した場合、認証処理部43は、認証成功と判定し、まず、K1(n−1)*Q1(n)を、保持している共通暗号鍵K1(n−1)で、Q1(n)へ復号し、この値を、次回認証用フェーズ1サーバ側シードにセットする。
【0119】
そして、認証処理部43は、次回認証用フェーズ1共通暗号鍵K1(n)を次式に従って計算し、フェーズ1共通暗号鍵を更新する(ステップS30)。
【0120】
K1(n)=hk(K1(n−1),R1(n),Q1(n))
【0121】
ここで、hkは、一方向性関数であって、かつハッシュ関数である。
【0122】
このようにして、フェーズ1のワンタイム認証に成功した後、認証処理部43は、ICカード5内のシード102および共通暗号鍵を、R1(n)およびQ1(n)、並びにK1(n)で更新する(ステップS5)。
【0123】
一方、サーバ装置4においても、ワンタイム認証子S1(n−1)の送信後、サーバ側認証処理部82は、次回認証用フェーズ1共通暗号鍵K1(n)を上述の式に従って計算し、フェーズ1共通暗号鍵を更新する(ステップS31)。
【0124】
そして、サーバ側認証処理部82は、フェーズ1のシードR1(n),Q1(n)の値を、初期値として、フェーズ2のクライアント側シードR2(0)およびサーバ側シードQ2(0)にセットし(ステップS32)、フェーズ1の共通暗号鍵K1(n)の値を、初期値として、フェーズ2の共通暗号鍵K2(0)にセットする(ステップS33)。また、このとき、サーバ側認証処理部82は、R2(0)およびQ2(0)から後述の式に従って、フェーズ2の初回のクライアント側ワンタイム認証子C2(0)を計算し、フェーズ2テーブル72bに書き込んで保持する。
【0125】
さらに、サーバ側認証処理部82は、フェーズ1の次回のワンタイム認証時に使用するクライアント側ワンタイム認証子C1(n)を、R1(n)およびQ1(n)から、上述の式に従って計算する。そして、サーバ側認証処理部82は、R1(n)、Q1(n)およびK1(n)で、シードテーブル71における、ICカード5についてのフェーズ1のデータを更新し、C1(n)で、フェーズ1テーブル72aにおける、ICカード5についてのワンタイム認証子を更新する。これにより、これらの値が、次回のセッション(つまり、次回のフェーズ1認証)まで保持される。
【0126】
このようにして、フェーズ1でのワンタイム認証が実行される。
【0127】
次に、ここで、フェーズ2でのワンタイム認証(ステップS7a)の詳細について説明する。図9は、図7におけるフェーズ2での初回のワンタイム認証(ステップS7a)の詳細について説明するシーケンス図である。図10は、図7におけるフェーズ2での2回目以降のワンタイム認証(ステップS7)の詳細について説明するシーケンス図である。
【0128】
フェーズ2でのワンタイム認証では、初回のみ、シードおよび共通暗号鍵の初期値がフェーズ1でのシードおよび共通暗号鍵から導出される(図9におけるステップS41,S42)。
【0129】
初回のみ、端末装置1の認証処理部43は、まず、フェーズ1のシードR1(n),Q1(n)の値を、初期値として、フェーズ2のクライアント側シードR2(0)およびサーバ側シードQ2(0)にセットし(ステップS41)、フェーズ1の共通暗号鍵K1(n)の値を、初期値として、フェーズ2の共通暗号鍵K2(0)にセットする(ステップS42)。なお、フェーズ2のクライアント側シードR1、サーバ側シードQ2、および共通暗号鍵K2は、RAM13に保持され、ICカード5や記憶装置15には保持されない。この時点で、認証処理部43は、フェーズ1のシードR1(n),Q1(n)および共通暗号鍵K1(n)をRAM13から消去する。以後、フェーズ2のシードR2(0),Q2(0)および共通暗号鍵K2(0)が更新されると、次回使用されるフェーズ1のシードおよび共通暗号鍵の値は、端末装置1から完全に消える。
【0130】
そして、認証処理部43は、乱数Rを生成し、次回認証用フェーズ2クライアント側シードR2(n)(初回の場合、n=1)にセットする(ステップS43)。
【0131】
次に、認証処理部43は、今回のワンタイム認証についての、フェーズ2クライアント側ワンタイム認証子C2(n−1)を生成する(ステップS44)。
【0132】
ワンタイム認証子C2(n−1)は、一方向性関数で計算される。この一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、上述のハッシュ関数hcである。
【0133】
ワンタイム認証子C2(n−1)は、次式に従って計算される。
【0134】
C2(n−1)=hc(Q2(n−1),R2(n−1))
【0135】
ここで、ハッシュ関数hcの第1引数には、Q2(n−1)が使用され、第2引数には、R2(n−1)が使用される。
【0136】
また、認証処理部43は、所定の暗号化方式に従って、共通暗号鍵K2(n−1)で、R2(n)を暗号化する。なお、共通暗号鍵K2(n−1)での暗号化後のR2(n)を、K2(n−1)*R2(n)と表現する。
【0137】
そして、認証処理部43は、通信処理部42を使用して、ワンタイム認証子C2(n−1)およびK2(n−1)*R2(n)をサーバ装置4へ送信する(ステップS45)。このとき、通信処理部42は、ワンタイム認証子C2(n−1)およびK2(n−1)*R2(n)を1つのメッセージとして送信する。
【0138】
サーバ装置4では、サーバ側認証処理部82は、通信処理部81を使用して、そのメッセージを受信し、ワンタイム認証子C2(n−1)およびK2(n−1)*R2(n)を抽出し、受信したワンタイム認証子C2(n−1)が、フェーズ2テーブル72bに保持しているフェーズ2用のクライアント側ワンタイム認証子に一致するか否かを判定する(ステップS46)。
【0139】
このとき、受信したワンタイム認証子C2(n−1)が、保持しているフェーズ2用のクライアント側ワンタイム認証子に一致しない場合、サーバ側認証処理部82は、上述のように、受信したワンタイム認証子C2(n−1)がフェーズ1のワンタイム認証子でもなければ、認証失敗と判定し、処理を終了する。
【0140】
受信したワンタイム認証子C2(n−1)が、保持しているフェーズ2用のクライアント側ワンタイム認証子に一致した場合、サーバ側認証処理部82は、認証成功と判定し、まず、乱数Qを生成し、その乱数Qを、次回認証用フェーズ2サーバ側シードQ2(n)にセットする(ステップS47)。
【0141】
また、サーバ側認証処理部82は、K2(n−1)*R2(n)を、保持している共通暗号鍵K2(n−1)で、R2(n)へ復号する。そして、サーバ側認証処理部82は、今回(n−1)のワンタイム認証用のフェーズ2サーバ側ワンタイム認証子S2(n−1)を生成する(ステップS48)。
【0142】
ワンタイム認証子S2(n−1)は、一方向性関数で計算される。この一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、上述のハッシュ関数hsである。
【0143】
ワンタイム認証子S2(n−1)は、次式に従って計算される。
【0144】
S2(n−1)=hs(Q2(n−1),R2(n))
【0145】
ここで、ハッシュ関数hsの第1引数には、Q2(n−1)が使用され、第2引数には、R2(n)が使用される。
【0146】
また、サーバ側認証処理部82は、所定の暗号化方式に従って、共通暗号鍵K2(n−1)で、Q2(n)を暗号化する。なお、共通暗号鍵K2(n−1)での暗号化後のQ2(n)を、K2(n−1)*Q2(n)と表現する。
【0147】
そして、サーバ側認証処理部82は、通信処理部81を使用して、ワンタイム認証子S2(n−1)およびK2(n−1)*Q2(n)を端末装置1へ送信する(ステップS49)。このとき、通信処理部81は、ワンタイム認証子S2(n−1)およびK2(n−1)*Q2(n)を1つのメッセージとして送信する。
【0148】
端末装置1では、認証処理部43は、通信処理部42を使用して、そのメッセージを受信し、ワンタイム認証子S2(n−1)およびK2(n−1)*Q2(n)を抽出する。そして、認証処理部43は、フェーズフラグPの値に基づいて、受信したワンタイム認証子がフェーズ2のワンタイム認証子であることを特定する(ステップS50)。
【0149】
認証処理部43は、R2(n)およびQ2(n−1)に基づいて、上述の式に従って正当なワンタイム認証子S2(n−1)の値を計算し、受信したワンタイム認証子S2(n−1)が、計算した値に一致するか否かを判定する(ステップS51)。
【0150】
このとき、受信したワンタイム認証子S2(n−1)が、計算した値に一致しない場合、認証処理部43は、認証失敗と判定し、処理を終了する。
【0151】
受信したワンタイム認証子S2(n−1)が、計算した値に一致した場合、認証処理部43は、認証成功と判定し、まず、K2(n−1)*Q2(n)を、保持している共通暗号鍵K2(n−1)で、Q2(n)へ復号し、この値を、次回認証用フェーズ2サーバ側シードにセットする。
【0152】
そして、認証処理部43は、次回認証用フェーズ2共通暗号鍵K2(n)を次式に従って計算し、フェーズ2共通暗号鍵を更新する(ステップS52)。
【0153】
K2(n)=hk(K2(n−1),R2(n),Q2(n))
【0154】
ここで、hkは、一方向性関数であって、かつハッシュ関数である。
【0155】
このようにして、フェーズ2のワンタイム認証に成功した後、認証処理部43は、RAM13上に、次のフェーズ2のワンタイム認証まで、R2(n)、Q2(n)、およびK2(n)を保持する。
【0156】
一方、サーバ装置4においても、ワンタイム認証子S2(n−1)の送信後、サーバ側認証処理部82は、次回認証用フェーズ2共通暗号鍵K2(n)を上述の式に従って計算し、フェーズ2共通暗号鍵を更新する(ステップS53)。
【0157】
さらに、サーバ側認証処理部82は、R2(n)およびQ2(n)から後述の式に従って、フェーズ2の次回認証用クライアント側ワンタイム認証子C2(n)を計算する。そして、サーバ側認証処理部82は、R2(n)、Q2(n)およびK2(n)で、シードテーブル71における、ICカード5についてのフェーズ2のデータを更新し、C2(n)で、フェーズ2テーブル72bにおける、ICカード5についてのワンタイム認証子を更新する。これにより、今回のシードR2(n−1),Q2(n−1)および共通暗号鍵K2(n−1)は消去され、次回のシードR2(n),Q2(n)および共通暗号鍵K2(n)が、次回のフェーズ2認証まで保持される。次回のフェーズ2のワンタイム認証では、上述の初期値の代わりに次回のシードR2(n),Q2(n)および共通暗号鍵K2(n)が使用される。
【0158】
このようにして、フェーズ2でのワンタイム認証が実行される。
【0159】
以上のように、上記実施の形態1によれば、フェーズ1での認証用のシードとフェーズ2での認証用のシードとを別々に設け、ICカード5に格納されているシード102を使用してフェーズ1での認証を実行し、ICカード5に格納されているシード102を更新し、その後は、フェーズ2での認証を繰り返し行っていく。このため、フェーズ1での認証が完了すれば、ユーザは、ICカード5を、端末装置1やリーダライタ2から離脱することができる。したがって、セッション開始後短時間で、シード102を保持するICカード5を離脱可能とし、ICカード5が離脱しても、その後、継続的にワンタイム認証を繰り返し行うことができる。
【0160】
また、上記実施の形態1によれば、フェーズ1とフェーズ2において同一のハッシュ関数hcを使用し、ハッシュ関数hcの引数におけるクライアント側シードとサーバ側シードの順序を、フェーズ1とフェーズ2とで逆にしている。
【0161】
これにより、フェーズ1クライアント側ワンタイム認証子およびフェーズ2クライアント側ワンタイム認証子に使用する関数値のデータフォーマットが同一になる。このため、盗聴してもフェーズ1のワンタイム認証子かフェーズ2のワンタイム認証子かがデータフォーマットから判別できない。また、引数の順序を変えているため、フェーズ1のワンタイム認証子とフェーズ2の初回のワンタイム認証子とが一致しない。したがって、耐タンパ性が向上する。
【0162】
また、上記実施の形態1によれば、フェーズ1とフェーズ2において同一のハッシュ関数hsを使用し、ハッシュ関数hsの引数におけるクライアント側シードとサーバ側シードの順序を、フェーズ1とフェーズ2とで逆にしている。
【0163】
これにより、フェーズ1サーバ側ワンタイム認証子およびフェーズ2サーバ側ワンタイム認証子に使用する関数値のデータフォーマットが同一になる。このため、盗聴してもフェーズ1のワンタイム認証子かフェーズ2のワンタイム認証子かがデータフォーマットから判別できない。また、引数の順序を変えているため、フェーズ1のワンタイム認証子とフェーズ2の初回のワンタイム認証子とが一致しない。したがって、耐タンパ性が向上する。
【0164】
また、上記実施の形態1によれば、フェーズ1で使用される共通暗号鍵とフェーズ2で使用される共通暗号鍵とを別々に設け、ICカード5に格納されているフェーズ1共通暗号鍵を使用して暗号化されたシードの送受を行い、フェーズ1での認証が成功すると、ICカード5に格納されているフェーズ1共通暗号鍵を更新し、また、フェーズ2での認証が成功するたびに、フェーズ2共通暗号鍵を更新していく。このため、フェーズ1とフェーズ2と別々に共通暗号鍵が更新されていき、耐タンパ性が向上する。
【0165】
実施の形態2.
【0166】
本発明の実施の形態2では、実施の形態1におけるサーバ装置4内のデータ構造およびそのデータ構造に沿ったデータ処理の一例について説明する。なお、システムの基本的な構成および動作は、実施の形態1と同様であるので、その説明は省略する。なお、この実施の形態2において、ワンタイム認証子はワンタイムIDである。
【0167】
まず、データ構造について説明する。
【0168】
実施の形態2では、サーバ装置4において、ICカード5と同様の、1または複数のICカードのそれぞれに対して固有の管理番号が割り当てられ、その管理番号に関連付けて、(a)次回認証用のフェーズ1クライアント側ワンタイム認証子C1(n)、(b)次回認証用のフェーズ2クライアント側ワンタイム認証子C2(n)、(c)フェーズ1についての現時点(n−1)でのシードR1(n−1),Q1(n−1)および共通暗号鍵K1(n−1)並びに次回認証用のシードR1(n),Q1(n)および共通暗号鍵K1(n)、並びに(d)フェーズ2についての現時点(n−1)でのシードR2(n−1),Q2(n−1)および共通暗号鍵K2(n−1)並びに次回認証用のシードR2(n),Q2(n)および共通暗号鍵K2(n)が保持される。
【0169】
つまり、フェーズ1テーブル72aにおいて、管理番号に関連付けて、(a)次回認証用のフェーズ1クライアント側ワンタイム認証子C1(n)が保持される。また、フェーズ2テーブル72bにおいて、管理番号に関連付けて、(b)次回認証用のフェーズ2クライアント側ワンタイム認証子C2(n)が保持される。また、シードテーブル71において、管理番号に関連付けて、(c)フェーズ1についての現時点(n−1)でのシードR1(n−1),Q1(n−1)および共通暗号鍵K1(n−1)並びに次回認証用のシードR1(n),Q1(n)および共通暗号鍵K1(n)、並びに(d)フェーズ2についての現時点(n−1)でのシードR2(n−1),Q2(n−1)および共通暗号鍵K2(n−1)並びに次回認証用のシードR2(n),Q2(n)および共通暗号鍵K2(n)が保持される。
【0170】
図11は、実施の形態2におけるシードテーブル71の構造の一例を示す図である。図12は、実施の形態2における認証子テーブル72の一例を示す図である。図12(A)は、フェーズ1テーブル72aの一例を示し、図12(B)は、フェーズ2テーブル72bの一例を示す。
【0171】
図11におけるフェーズ1アドレスは、フェーズ1テーブル72a内で、当該フェーズ1アドレスに関連付けられている管理番号と同一の管理番号を有するレコードの位置を示すデータである。同様に、図11におけるフェーズ2アドレスは、フェーズ2テーブル72b内で、当該フェーズ2アドレスに関連付けられている管理番号と同一の管理番号を有するレコードの位置を示すデータである。
【0172】
また、図12において、サーバ側認証処理部82により、フェーズ1テーブル72a内のレコード(ワンタイム認証子と管理番号の組)は、ワンタイム認証子の値について昇順にソートされる。同様に、フェーズ2テーブル72b内のレコード(ワンタイム認証子と管理番号の組)は、ワンタイム認証子の値について昇順にソートされる。これにより、ワンタイム認証時に迅速に、クライアントから受信したワンタイム認証子がテーブル72a,72bに登録されているか否かを判定することができる。
【0173】
なお、シードテーブル71、フェーズ1テーブル72a、およびフェーズ2テーブル72bは、予め、所定のユーザ数(ICカード数)のレコードを有しており、レコード内の管理番号以外のフィールドには初期値がセットされる。
【0174】
次に、データ処理について説明する。
【0175】
図13および図14は、実施の形態2におけるサーバ装置4によるデータ処理について説明するフローチャートである。
【0176】
サーバ装置4では、サーバ側認証処理部82は、端末装置1から、ワンタイム認証子C(フェーズ1またはフェーズ2のワンタイム認証子)を含むメッセージを受信すると、そのワンタイム認証子Cがフェーズ1テーブル72aに登録されているフェーズ1クライアント側ワンタイム認証子C1(n−1)のいずれかであるか否かを判定する(ステップS101)。
【0177】
受信したワンタイム認証子Cがフェーズ1テーブル72aに登録されているフェーズ1クライアント側ワンタイム認証子C1(n−1)のいずれかである場合、サーバ側認証処理部82は、フェーズ1テーブル72aにおいて、受信したワンタイム認証子Cに関連付けられている管理番号を特定する(ステップS102)。この場合、フェーズ1のワンタイム認証が実行される。
【0178】
サーバ側認証処理部82は、特定した管理番号に関連付けられているQ1(n−1)およびK1(n−1)をシードテーブル71から読み出す(ステップS103)。
【0179】
そして、サーバ側認証処理部82は、受信したK1(n−1)*R1(n)からR1(n)を、読み出したK1(n−1)で復号し、そのR1(n)を、その管理番号に関連付けてシードテーブル71に書き込む(ステップS104)。
【0180】
次に、サーバ側認証処理部82は、次回認証用サーバ側シードの生成を行う。まず、サーバ側認証処理部82は、乱数Qを生成し、この乱数Qを次回認証用サーバ側シードに使用した場合に、次回認証用のフェーズ1クライアント側ワンタイム認証子が、別のフェーズ1クライアント側ワンタイム認証子およびフェーズ2クライアント側ワンタイム認証子のいずれかに一致するか否かを判定するとともに(ステップS106)、初回のフェーズ2クライアント側ワンタイム認証子が、別のフェーズ2クライアント側ワンタイム認証子およびフェーズ1クライアント側ワンタイム認証子のいずれかに一致するか否かを判定する(ステップS107)。つまり、生成した乱数Qを使用した場合のクライアント側ワンタイム認証子の一意性(つまり、同値の別のワンタイム認証子が存在しないこと)が確保されるか否かが判定される。
【0181】
このとき、サーバ側認証処理部82は、次式に従って、この乱数Qを次回認証用サーバ側シードに使用した場合の次回認証用のフェーズ1クライアント側ワンタイム認証子X1および初回のフェーズ2クライアント側ワンタイム認証子X2を計算し、これらのワンタイム認証子X1,X2がフェーズ1テーブル72aおよびフェーズ2テーブル72bに登録されているか否かを判定する。
【0182】
X1=hc(R1(n),Q)
【0183】
X2=hc(Q,R2(0)),R2(0)=R1(n)
【0184】
そして、生成した乱数Qで一意性が確保されないと判定した場合、サーバ側認証処理部82は、一意性が確保されるまで、乱数Qを再生成する。
【0185】
一方、生成した乱数Qでは一意性が確保されると判定した場合、サーバ側認証処理部82は、乱数Qを、次回認証用フェーズ1サーバ側シードQ1(n)にセットし、そのシードQ1(n)を、その管理番号に関連付けてシードテーブル71に書き込む(ステップS108)。
【0186】
そして、サーバ側認証処理部82は、フェーズ1サーバ側ワンタイム認証子S1(n−1)および暗号化後の次回認証用フェーズ1サーバ側シードK1(n−1)*Q1(n)を生成し、端末装置1へ送信する(ステップS109)。
【0187】
また、サーバ側認証処理部82は、ステップS106での判定時に計算したX1を、次回認証用フェーズ1クライアント側ワンタイム識別子C1(n)とし、そのC1(n)で、フェーズ1テーブル72aにおいてその管理番号に関連付けられているワンタイム識別子を更新する(ステップS110)。このとき、サーバ側認証処理部82は、その管理番号に関連付けられているフェーズ1アドレスをシードテーブル71から読み出し、そのフェーズ1アドレスで、フェーズ1テーブル72aにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム識別子を更新する。
【0188】
その後、サーバ側認証処理部82は、フェーズ1テーブル72a内のレコードを、ワンタイム識別子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル71においてそのレコードの管理番号に関連付けられているフェーズ1アドレスを更新する(ステップS111)。
【0189】
また、サーバ側認証処理部82は、ステップS107での判定時に計算したX2を、初回認証用フェーズ2クライアント側ワンタイム識別子C2(0)とし、そのC2(0)で、フェーズ2テーブル72bにおいてその管理番号に関連付けられているワンタイム識別子を更新する(ステップS112)。このとき、サーバ側認証処理部82は、その管理番号に関連付けられているフェーズ2アドレスをシードテーブル71から読み出し、そのフェーズ2アドレスで、フェーズ2テーブル72bにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム識別子を更新する。
【0190】
その後、サーバ側認証処理部82は、フェーズ2テーブル72b内のレコードを、ワンタイム識別子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル71においてそのレコードの管理番号に関連付けられているフェーズ2アドレスを更新する(ステップS113)。
【0191】
そして、サーバ側認証処理部82は、次回認証用のフェーズ1共通暗号鍵K1(n)を生成し、その管理番号に関連付けてシードテーブル71に書き込む(ステップS114)。
【0192】
さらに、サーバ側認証処理部82は、シードテーブル71において、その管理番号の次回認証用のシードおよび共通暗号鍵R1(n),Q1(n),K1(n)で、今回認証用のシードおよび共通暗号鍵R1(n−1),Q1(n−1),K1(n−1)を更新する(ステップS115)。
【0193】
このようにして、フェーズ1のワンタイム認証についてのデータ処理が実行される。
【0194】
一方、ステップS101において、受信したワンタイム認証子Cがフェーズ1テーブル72aに登録されていないと判定した場合、サーバ側認証処理部82は、受信したワンタイム認証子Cが、フェーズ2テーブル72bに登録されているフェーズ2クライアント側ワンタイム認証子C2(n−1)のいずれかであるか否かを判定する(ステップS121)。
【0195】
受信したワンタイム認証子Cがフェーズ2テーブル72bに登録されているフェーズ2クライアント側ワンタイム認証子C2(n−1)のいずれかである場合、サーバ側認証処理部82は、フェーズ2テーブル72bにおいて、受信したワンタイム認証子Cに関連付けられている管理番号を特定する(ステップS122)。この場合、フェーズ2のワンタイム認証が実行される。
【0196】
サーバ側認証処理部82は、特定した管理番号に関連付けられているQ2(n−1)およびK2(n−1)をシードテーブル71から読み出す(ステップS123)。
【0197】
そして、サーバ側認証処理部82は、受信したK2(n−1)*R2(n)からR2(n)を、読み出したK2(n−1)で復号し、そのR2(n)を、その管理番号に関連付けてシードテーブル71に書き込む(ステップS124)。
【0198】
次に、サーバ側認証処理部82は、次回認証用サーバ側シードの生成を行う。まず、サーバ側認証処理部82は、乱数Qを生成し、この乱数Qを次回認証用サーバ側シードに使用した場合に、次回認証用のフェーズ2クライアント側ワンタイム認証子が、別のフェーズ2クライアント側ワンタイム認証子およびフェーズ1クライアント側ワンタイム認証子のいずれかに一致するか否かを判定する(ステップS126)。つまり、生成した乱数Qを使用した場合のクライアント側ワンタイム認証子の一意性(つまり、同値の別のワンタイム認証子が存在しないこと)が確保されるか否かが判定される。
【0199】
このとき、サーバ側認証処理部82は、次式に従って、この乱数Qを次回認証用サーバ側シードに使用した場合の次回認証用のフェーズ2クライアント側ワンタイム認証子X2を計算し、このワンタイム認証子X2がフェーズ2テーブル72bに登録されているか否かを判定する。
【0200】
X2=hc(Q,R2(n))
【0201】
そして、生成した乱数Qでは一意性が確保されないと判定した場合、サーバ側認証処理部82は、一意性が確保されるまで、乱数Qを再生成する。
【0202】
一方、生成した乱数Qでは一意性が確保されると判定した場合、サーバ側認証処理部82は、乱数Qを、次回認証用フェーズ2サーバ側シードQ2(n)にセットし、そのシードQ2(n)を、その管理番号に関連付けてシードテーブル71に書き込む(ステップS127)。
【0203】
そして、サーバ側認証処理部82は、フェーズ2サーバ側ワンタイム認証子S2(n−1)および暗号化後の次回認証用フェーズ2サーバ側シードK2(n−1)*Q2(n)を生成し、端末装置1へ送信する(ステップS128)。
【0204】
また、サーバ側認証処理部82は、ステップS126での判定時に計算したX2を、次回認証用フェーズ2クライアント側ワンタイム識別子C2(n)とし、そのC2(n)で、フェーズ2テーブル72bにおいてその管理番号に関連付けられているワンタイム識別子を更新する(ステップS129)。このとき、サーバ側認証処理部82は、その管理番号に関連付けられているフェーズ2アドレスをシードテーブル71から読み出し、そのフェーズ2アドレスで、フェーズ2テーブル72bにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム識別子を更新する。
【0205】
その後、サーバ側認証処理部82は、フェーズ2テーブル72b内のレコードを、ワンタイム識別子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル71においてそのレコードの管理番号に関連付けられているフェーズ2アドレスを更新する(ステップS130)。
【0206】
そして、サーバ側認証処理部82は、次回認証用のフェーズ2共通暗号鍵K2(n)を生成し、その管理番号に関連付けてシードテーブル71に書き込む(ステップS131)。
【0207】
さらに、サーバ側認証処理部82は、シードテーブル71において、その管理番号の次回認証用のシードおよび共通暗号鍵R2(n),Q2(n),K2(n)で、今回認証用のシードおよび共通暗号鍵R2(n−1),Q2(n−1),K2(n−1)を更新する(ステップS132)。
【0208】
このようにして、フェーズ2のワンタイム認証についてのデータ処理が実行される。
【0209】
以上のように、上記実施の形態2によれば、管理番号で複数のICカードを管理し、ICカードについてそれぞれ独立してワンタイム認証を行うことができる。
【0210】
なお、上述の各実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【0211】
例えば、上記実施の形態1,2において、携帯型記憶装置として、ICカード5の代わりに、ICカード機能を有する携帯電話機などといった電子機器を使用してもよい。
【0212】
また、上記実施の形態1,2において、リーダライタ2は、端末装置1に内蔵されていてもよい。
【0213】
また、上記実施の形態1,2において、携帯型記憶装置は、USBメモリのように、リーダライタ2を使用せずに、端末装置1に直接接続できるようなものであってもよい。
【0214】
また、上記実施の形態1,2において、フェーズ1のシードおよび共通暗号鍵をそのままフェーズ2のシードおよび共通暗号鍵の初期値としているが、その代わりに、所定の関数(例えば、ハッシュ関数や一方向性関数)で、端末装置1およびサーバ装置4のそれぞれにおいて、フェーズ1のシードおよび共通暗号鍵から、フェーズ2のシードおよび共通暗号鍵の初期値を導出するようにしてもよい。
【0215】
また、上記実施の形態1,2において、ワンタイム認証子をワンタイムパスワードとしてもよい。ワンタイム認証子がワンタイムパスワードである場合、クライアント側ワンタイム認証子の一意性についての判定(ステップS106、S107,S126)は不要であり、また、その場合、端末装置1は、ICカード5からカードID101を読み出し、ワンタイム認証子とともにそのカードID101をサーバ装置4へを送信し、サーバ装置4は、カード属性テーブル73を参照し、そのカードID101に基づいてICカード5を特定する。
【0216】
また、上記実施の形態1,2において、フェーズフラグPに2をセットするタイミングは、フェーズ1のワンタイム認証終了後であって、フェーズ2の初回のサーバ側ワンタイム認証子S2(0)を受信する前であれば、どのタイミングでもよい。
【産業上の利用可能性】
【0217】
本発明は、例えば、ネットワークサービスにおけるユーザ認証に適用可能である。
【符号の説明】
【0218】
1 端末装置(クライアント装置の一例)
3 ネットワーク
4 サーバ装置
5 ICカード(携帯型記憶装置の一例)
13 RAM(メモリの一例)
31 ワンタイム認証プログラム(クライアントコンピュータプログラムの一例)
42 通信処理部
43 認証処理部
102 シード

【特許請求の範囲】
【請求項1】
サーバ装置と、
クライアント装置と、
所定の位置に配置されると前記クライアント装置によるデータ読み書きが可能になる携帯型記憶装置とを備え、
前記サーバ装置および前記クライアント装置は、それぞれシードを生成し、前記シードを暗号化して相互に送信し、前記シードからワンタイム認証子を生成して送信し、前記シードに基づいて互いにワンタイム認証子についての認証を行い、前記認証に成功するたびに次回認証用シードを生成して前記シードを更新していき、
前記携帯型記憶装置は、前記サーバ装置および前記クライアント装置の前記シードを保持し、
前記クライアント装置は、フェーズ1において、前記携帯型記憶装置から前記シードを読み出し、読み出したシードに基づいてワンタイム認証子を生成して送信し、前記ワンタイム認証子について認証に成功すると、前記フェーズ1の前記次回認証用シードを前記携帯型記憶装置に書き込み、前記フェーズ1の後のフェーズ2において、前記フェーズ1の前記次回認証用シードから当該フェーズ2の初回認証用シードを導出し、前記初回認証用シードからワンタイム認証子を生成し、前記ワンタイム認証子について認証に成功すると、前記フェーズ2での次回認証用シードを生成して前記シードを更新し、
前記サーバ装置は、前記フェーズ1の前記次回認証用シードを次回のフェーズ1での認証時まで保持するとともに、その次回認証用シードから前記フェーズ2の初回認証用シードを導出し、フェーズ2において前記ワンタイム認証子について認証に成功すると、前記フェーズ2での次回認証用シードを生成して前記シードを更新すること、
を特徴とするワンタイム認証システム。
【請求項2】
前記携帯型記憶装置および前記サーバ装置は、前記シードとして、フェーズ1クライアント側シードおよびフェーズ1サーバ側シードを保持し、
前記クライアント装置は、
(a1)前記携帯型記憶装置から前記フェーズ1クライアント側シードおよび前記フェーズ1サーバ側シードを読み出し、
(a2)前記フェーズ1クライアント側シードおよび前記フェーズ1サーバ側シードからフェーズ1クライアント側ワンタイム認証子を生成し、
(a3)次回認証用フェーズ1クライアント側シードを生成し、
(a4)前記フェーズ1クライアント側ワンタイム認証子および暗号化後の前記次回認証用フェーズ1クライアント側シードを前記サーバ装置へ送信し、
(a5)前記サーバ装置からフェーズ1サーバ側ワンタイム認証子および暗号化後の次回認証用フェーズ1サーバ側シードを受信し、
(a6)前記フェーズ1サーバ側ワンタイム認証子について認証に成功すると、前記次回認証用フェーズ1クライアント側シードおよび前記次回認証用フェーズ1サーバ側シードを前記携帯型記憶装置に書き込み、
(a7)前記フェーズ1サーバ側ワンタイム認証子について認証に成功すると、前記次回認証用フェーズ1クライアント側シードおよび前記次回認証用フェーズ1サーバ側シードから初回認証用フェーズ2クライアント側シードおよび初回認証用フェーズ2サーバ側シードを導出し、
(a8)前記初回認証用フェーズ2クライアント側シードおよび前記初回認証用フェーズ2サーバ側シードから初回認証用フェーズ2クライアント側ワンタイム認証子を生成し、
(a9)次回認証用フェーズ2クライアント側シードを生成し、
(a10)前記初回認証用フェーズ2クライアント側ワンタイム認証子および暗号化後の前記次回認証用フェーズ2クライアント側シードを前記サーバ装置へ送信し、
(a11)前記サーバ装置からフェーズ2サーバ側ワンタイム認証子および暗号化後の次回認証用フェーズ2サーバ側シードを受信し、
(a12)前記フェーズ2サーバ側ワンタイム認証子について認証に成功すると、前記次回認証用フェーズ2クライアント側シードおよび前記次回認証用フェーズ2サーバ側シードから次回認証用フェーズ2クライアント側ワンタイム認証子を生成し、
前記サーバ装置は、
(b1)前記クライアント装置から前記フェーズ1クライアント側ワンタイム認証子および暗号化後の前記次回認証用フェーズ1クライアント側シードを受信し、
(b2)前記フェーズ1クライアント側ワンタイム認証子について認証に成功すると、次回認証用フェーズ1サーバ側シードを生成し、
(b3)前記次回認証用フェーズ1クライアント側シードおよびフェーズ1サーバ側シードからフェーズ1サーバ側ワンタイム認証子を生成し、
(b4)前記クライアント装置へ前記フェーズ1サーバ側ワンタイム認証子および暗号化後の前記次回認証用フェーズ1サーバ側シードを送信し、
(b5)前記次回認証用フェーズ1クライアント側シードおよび前記次回認証用フェーズ1サーバ側シードから初回認証用フェーズ2クライアント側シードおよび初回認証用フェーズ2サーバ側シードを導出し、
(b6)前記クライアント装置から前記フェーズ2クライアント側ワンタイム認証子および暗号化後の前記次回認証用フェーズ2クライアント側シードを受信し、
(b7)前記初回認証用フェーズ2クライアント側シードおよび前記初回認証用フェーズ2サーバ側シードに基づき、前記初回認証用フェーズ2クライアント側ワンタイム認証子について認証に成功すると、次回認証用フェーズ2サーバ側シードを生成し、
(b8)前記次回認証用フェーズ2クライアント側シードおよび前記初回認証用フェーズ2サーバ側シードから初回認証用フェーズ2サーバ側ワンタイム認証子を生成し、
(b9)前記クライアント装置へ前記初回認証用フェーズ2サーバ側ワンタイム認証子および暗号化後の前記次回認証用フェーズ2サーバ側シードを送信すること、
を特徴とする請求項1記載のワンタイム認証システム。
【請求項3】
前記フェーズ1クライアント側ワンタイム認証子および前記フェーズ2クライアント側ワンタイム認証子は、同一の一方向性関数で計算され、
前記一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数であって、
前記フェーズ1クライアント側ワンタイム認証子についての引数の順序が、前記フェーズ1クライアント側シード、前記フェーズ1サーバ側シードの順序である場合、前記フェーズ2クライアント側ワンタイム認証子についての引数の順序が、前記フェーズ2サーバ側シード、前記フェーズ2クライアント側シードの順序であり、
前記フェーズ1クライアント側ワンタイム認証子についての引数の順序が、前記フェーズ1サーバ側シード、前記フェーズ1クライアント側シードの順序である場合、前記フェーズ2クライアント側ワンタイム認証子についての引数の順序が、前記フェーズ2クライアント側シード、前記フェーズ2サーバ側シードの順序であること、
を特徴とする請求項2記載のワンタイム認証システム。
【請求項4】
前記フェーズ1サーバ側ワンタイム認証子および前記フェーズ2サーバ側ワンタイム認証子は、同一の一方向性関数で計算され、
前記一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数であって、
前記フェーズ1サーバ側ワンタイム認証子についての引数の順序が、前記次回認証用フェーズ1クライアント側シード、前記フェーズ1サーバ側シードの順序である場合、前記フェーズ2サーバ側ワンタイム認証子についての引数の順序が、前記フェーズ2サーバ側シード、前記次回認証用フェーズ2クライアント側シードの順序であり、
前記フェーズ1サーバ側ワンタイム認証子についての引数の順序が、前記フェーズ1サーバ側シード、前記次回認証用フェーズ1クライアント側シードの順序である場合、前記フェーズ2サーバ側ワンタイム認証子についての引数の順序が、前記次回認証用フェーズ2クライアント側シード、前記フェーズ2サーバ側シードの順序であること、
を特徴とする請求項2または請求項3記載のワンタイム認証システム。
【請求項5】
前記クライアント装置は、前記次回認証用フェーズ1クライアント側シードおよび前記次回認証用フェーズ1サーバ側シードを前記携帯型記憶装置に書き込むまでメモリで保持し、前記次回認証用フェーズ1クライアント側シードおよび前記次回認証用フェーズ1サーバ側シードを、前記携帯型記憶装置に書き込んだ後、前記メモリから消去することを特徴とする請求項2記載のワンタイム認証システム。
【請求項6】
前記携帯型記憶装置および前記サーバ装置は、フェーズ1共通暗号鍵を保持し、
前記クライアント装置は、前記携帯型記憶装置から前記フェーズ1共通暗号鍵を読み出し、前記フェーズ1共通暗号鍵で、前記次回認証用フェーズ1クライアント側シードを暗号化し、前記フェーズ1サーバ側ワンタイム認証子について認証に成功すると、前記フェーズ1共通暗号鍵を更新し、更新後の前記フェーズ1共通暗号鍵を前記携帯型記憶装置に書き込み、更新後の前記フェーズ1共通暗号鍵からフェーズ2共通暗号鍵の初期値を導出し、前記フェーズ2共通暗号鍵で、前記次回認証用フェーズ2クライアント側シードを暗号化し、前記フェーズ2サーバ側ワンタイム認証子について認証に成功すると、前記フェーズ2共通暗号鍵を更新し、
前記サーバ装置は、前記フェーズ1共通暗号鍵で、前記次回認証用フェーズ1サーバ側シードを暗号化し、前記フェーズ1クライアント側ワンタイム認証子について認証に成功すると、前記フェーズ1共通暗号鍵を更新し、更新後の前記フェーズ1共通暗号鍵を次回のフェーズ1での認証時まで保持するとともに、更新後の前記フェーズ1共通暗号鍵からフェーズ2共通暗号鍵の初期値を導出し、前記フェーズ2共通暗号鍵で、前記次回認証用フェーズ2サーバ側シードを暗号化し、前記フェーズ2クライアント側ワンタイム認証子について認証に成功すると、前記フェーズ2共通暗号鍵を更新すること、
を特徴とする請求項2記載のワンタイム認証システム。
【請求項7】
前記クライアント装置は、前記更新後のフェーズ1共通暗号鍵を前記携帯型記憶装置に書き込むまでメモリで保持し、前記更新後のフェーズ1共通暗号鍵を、前記携帯型記憶装置に書き込んだ後、前記メモリから消去することを特徴とする請求項6記載のワンタイム認証システム。
【請求項8】
ネットワークを介してサーバ装置と通信する通信処理部と、
シードを生成するとともに前記通信処理部を使用して前記サーバ装置から前記サーバ装置のシードを受信し、生成したシードと受信したシードからワンタイム認証子を生成して前記通信処理部を使用して送信し、前記シードに基づいて、前記サーバ装置から受信されたワンタイム認証子についての認証を行い、前記認証に成功するたびに次回認証用シードを生成して前記シードを更新していく認証処理部とを備え、
前記認証処理部は、フェーズ1において、所定の位置に配置されると当該端末装置によるデータ読み書きが可能になる携帯型記憶装置から前記サーバ装置側および当該端末装置側の前記シードを読み出し、読み出したシードに基づいてワンタイム認証子を生成して送信し、前記ワンタイム認証子について認証に成功すると、前記サーバ装置側および当該端末装置側についての前記フェーズ1の前記次回認証用シードを前記携帯型記憶装置に書き込み、前記フェーズ1の後のフェーズ2において、前記フェーズ1の前記次回認証用シードから当該フェーズ2の初回認証用シードを導出し、前記初回認証用シードからワンタイム認証子を生成し、前記ワンタイム認証子について認証に成功すると、前記フェーズ2での次回認証用シードを生成して前記シードを更新すること、
を特徴とする端末装置。
【請求項9】
端末装置内のコンピュータを、
シードを生成するとともにサーバ装置から前記サーバ装置のシードを受信し、生成したシードと受信したシードからワンタイム認証子を生成して送信し、前記シードに基づいて、前記サーバ装置から受信されたワンタイム認証子についての認証を行い、前記認証に成功するたびに次回認証用シードを生成して前記シードを更新していく認証処理部として機能させるためのクライアントコンピュータプログラムであって、
前記認証処理部は、フェーズ1において、所定の位置に配置されると前記端末装置によるデータ読み書きが可能になる携帯型記憶装置から前記サーバ装置側および前記端末装置側の前記シードを読み出し、読み出したシードに基づいてワンタイム認証子を生成して送信し、前記ワンタイム認証子について認証に成功すると、前記サーバ装置側および当該端末装置側についての前記フェーズ1の前記次回認証用シードを前記携帯型記憶装置に書き込み、前記フェーズ1の後のフェーズ2において、前記フェーズ1の前記次回認証用シードから当該フェーズ2の初回認証用シードを導出し、前記初回認証用シードからワンタイム認証子を生成し、前記ワンタイム認証子について認証に成功すると、前記フェーズ2での次回認証用シードを生成して前記シードを更新すること、
を特徴とするクライアントコンピュータプログラム。

【図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


【公開番号】特開2012−34292(P2012−34292A)
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願番号】特願2010−173920(P2010−173920)
【出願日】平成22年8月2日(2010.8.2)
【出願人】(510210689)
【Fターム(参考)】