(57)【特許請求の範囲】
【請求項１】
認証サーバと、
端末装置とを備え、
前記端末装置および前記認証サーバは、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持しており、
前記端末装置および前記認証サーバは、前記通常認証モードで、前記ワンタイム認証子に基づく相互認証を実行し、
前記端末装置および前記認証サーバは、前記通常認証モードでの前記ワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、前記ワンタイム認証子に基づく相互認証を試み、前記再認証モードでの前記ワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、前記再認証用シードに基づいて前記通常認証用シードを生成し、前記通常認証モードでの前記ワンタイム認証子に基づく相互認証を復旧すること、
を特徴とするワンタイム認証システム。
【請求項２】
前記通常認証用シードは、クライアント側シードおよびサーバ側シードであり、
前記再認証用シードは、再認証クライアント側シードおよび再認証サーバ側シードであり、
前記端末装置は、前記通常認証モードにおいて、（ａ１）前記クライアント側シードを暗号化して前記認証サーバに送信するとともに、前記クライアント側シードおよび前記サーバ側シードからクライアント側ワンタイム認証子を生成し前記認証サーバへ送信し、（ａ２）前記認証サーバからサーバ側ワンタイム認証子を受信し、前記サーバ側ワンタイム認証子が正当なものであるか否かを判定し、（ａ３）新たに生成したシードで前記クライアント側シードを更新するとともに、前記認証サーバから受信した暗号化された前記サーバ側シードを受信して復号し、復号した前記サーバ側シードで、保持している前記サーバ側シードを更新し、
前記認証サーバは、前記通常認証モードにおいて、（ｂ１）前記クライアント側ワンタイム認証子を受信し、前記クライアント側ワンタイム認証子が正当なものであるか否かを判定し、（ｂ２）前記クライアント側ワンタイム認証子が正当なものである場合、前記クライアント側シードおよび前記サーバ側シードからサーバ側ワンタイム認証子を生成して前記端末装置へ送信し、（ｂ３）新たに生成したシードで前記サーバ側シードを更新するとともに、前記端末装置から受信した暗号化された前記クライアント側シードを受信して復号し、復号した前記クライアント側シードで、保持している前記クライアント側シードを更新し、
前記端末装置は、前記通常認証モードにおいて、前記クライアント側ワンタイム認証子の送信後、前記クライアント側ワンタイム認証子に対応する前記サーバ側ワンタイム認証子に基づく前記認証サーバの認証に失敗した場合、前記再認証モードにおいて、（ｃ１）前記再認証クライアント側シードを暗号化して前記認証サーバに送信するとともに、前記再認証クライアント側シードおよび前記再認証サーバ側シードから再認証クライアント側ワンタイム認証子を生成し前記認証サーバへ送信し、（ｃ２）前記認証サーバから再認証サーバ側ワンタイム認証子を受信し、前記再認証サーバ側ワンタイム認証子が正当なものであるか否かを判定し、（ｃ３）新たに生成したシードで前記再認証クライアント側シードを更新するとともに、前記認証サーバから受信した暗号化された前記再認証サーバ側シードを受信して復号し、復号した前記再認証サーバ側シードで、保持している前記再認証サーバ側シードを更新し、（ｃ４）、前記再認証サーバ側ワンタイム認証子が正当なものであると判定した場合、前記再認証クライアント側シードおよび前記再認証サーバ側シードの少なくとも一方に基づいて前記クライアント側シードを更新し、前記再認証クライアント側シードおよび前記再認証サーバ側シードの少なくとも一方に基づいて前記サーバ側シードを更新し、
前記認証サーバは、前記再認証モードにおいて、（ｄ１）前記再認証クライアント側ワンタイム認証子を受信し、前記再認証クライアント側ワンタイム認証子が正当なものであるか否かを判定し、（ｄ２）前記再認証クライアント側ワンタイム認証子が正当なものである場合、前記再認証クライアント側シードおよび前記再認証サーバ側シードから再認証サーバ側ワンタイム認証子を生成して前記端末装置へ送信し、（ｄ３）新たに生成したシードで前記再認証サーバ側シードを更新するとともに、前記端末装置から受信した暗号化された前記再認証クライアント側シードを受信して復号し、復号した前記再認証クライアント側シードで、保持している前記再認証クライアント側シードを更新し、（ｄ４）、前記再認証クライアント側ワンタイム認証子が正当なものであると判定した場合、前記再認証クライアント側シードおよび前記再認証サーバ側シードの少なくとも一方に基づいて前記クライアント側シードを、前記端末装置で更新された前記クライアント側シードと同一となるように更新し、前記再認証クライアント側シードおよび前記再認証サーバ側シードの少なくとも一方に基づいて前記サーバ側シードを、前記端末装置で更新された前記サーバ側シードと同一となるように更新すること、
を特徴とする請求項１記載のワンタイム認証システム。
【請求項３】
前記端末装置は、前記通常認証モードにおいて、共通暗号鍵で、前記クライアント側シードを暗号化し、前記共通暗号鍵で、暗号化された前記サーバ側シードを復号し、
前記認証サーバは、前記通常認証モードにおいて、前記共通暗号鍵で、暗号化された前記クライアント側シードを復号し、前記共通暗号鍵で、前記サーバ側シードを暗号化し、
前記端末装置は、前記再認証モードにおいて、前記共通暗号鍵とは異なる再認証共通暗号鍵で、前記再認証クライアント側シードを暗号化し、前記再認証共通暗号鍵で、暗号化された前記再認証サーバ側シードを復号し、
前記認証サーバは、前記再認証モードにおいて、前記再認証共通暗号鍵で、暗号化された前記再認証クライアント側シードを復号し、前記再認証共通暗号鍵で、前記再認証サーバ側シードを暗号化し、
前記端末装置および前記認証サーバは、それぞれ、前記通常認証モードにおいて、前記クライアント側シードおよび前記サーバ側シードに基づいて、前記共通暗号鍵を更新し、前記再認証モードにおいて、前記再認証クライアント側シードおよび前記再認証サーバ側シードに基づいて、前記再認証共通暗号鍵を更新すること、
を特徴とする請求項２記載のワンタイム認証システム。
【請求項４】
前記端末装置は、前記通常認証モードにおいて、前記クライアント側ワンタイム認証子を送信する際に、通信プロトコルで通信経路上での通信エラーを検出した場合、前記サーバ側ワンタイム認証子に基づく前記認証サーバの認証に失敗したと判定せずに、前記クライアント側ワンタイム認証子を再送信し、前記クライアント側ワンタイム認証子の送信完了後に前記サーバ側ワンタイム認証子が受信されない場合、前記サーバ側ワンタイム認証子に基づく前記認証サーバの認証に失敗したと判定することを特徴とする請求項２記載のワンタイム認証システム。
【請求項５】
認証サーバとの間でワンタイム認証子に基づく相互認証を行う端末装置内のコンピュータを、認証処理部として機能させ、
前記認証処理部は、（ａ）通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持しており、（ｂ）前記認証サーバとの間で、前記通常認証モードで、前記ワンタイム認証子に基づく相互認証を実行し、（ｃ）前記通常認証モードでの前記ワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、前記認証サーバとの間で前記ワンタイム認証子に基づく相互認証を試み、前記再認証モードでの前記ワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、前記再認証用シードに基づいて前記通常認証用シードを生成し、前記通常認証モードでの前記ワンタイム認証子に基づく相互認証を復旧すること、
を特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワンタイム認証システムに関するものである。
【背景技術】
【０００２】
クライアントおよびサーバのそれぞれにおいて乱数などのシードを認証に成功するたびに更新し、次回認証時に、それらのシードからワンタイムＩＤを生成し、クライアントとサーバとの間で相互にワンタイム認証を行うシステムがある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２８２２９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のシステムは、（ａ）サーバからクライアントへのワンタイムＩＤの通信経路上での通信エラーに起因するワンタイムＩＤの不達、（ｂ）サーバダウンに起因するシードの消失などが発生すると相互認証に失敗し、一旦、相互認証に失敗すると、その後、サーバとクライアントの両方でシードを初期化するまで相互認証ができなくなる。そのため、クライアントは、相互認証の失敗後、シードを配布され、配布されたシードでシードの初期化を行うまで、比較的長い時間、認証を受けることができなくなる。【０００５】
本発明は、上記の問題に鑑みてなされたものであり、相互認証に失敗した場合に、短時間で、相互認証可能にシードを回復するワンタイム認証システムを得ることを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るワンタイム認証システムは、認証サーバと、端末装置とを備える。端末装置および認証サーバは、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持している。端末装置および認証サーバは、通常認証モードで、ワンタイム認証子に基づく相互認証を実行する。さらに、端末装置および認証サーバは、通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、ワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。【０００７】
本発明に係るコンピュータプログラムは、認証サーバとの間でワンタイム認証子に基づく相互認証を行う端末装置内のコンピュータを、認証処理部として機能させる。そして、認証処理部は、（ａ）通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持しており、（ｂ）認証サーバとの間で、通常認証モードで、ワンタイム認証子に基づく相互認証を実行し、（ｃ）通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、認証サーバとの間でワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。
【発明の効果】
【０００８】
本発明によれば、相互認証に失敗した場合に、短時間で、相互認証可能にシードを回復するワンタイム認証システムが得られる。【０００９】
本発明の上記又は他の目的、特徴および優位性は、添付の図面とともに以下の詳細な説明から更に明らかになる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施の形態に係るワンタイム認証システムの構成を示すブロック図である。
【図２】図２は、図１における端末装置１の構成を示すブロック図である。
【図３】図３は、図２に示す端末装置１において実現される処理部を示すブロック図である。
【図４】図４は、図１における認証サーバ３の構成を示すブロック図である。
【図５】図５は、図２に示す認証サーバ３において実現される処理部を示すブロック図である。
【図６】図６は、図１に示すシステムにおいて実行される、通常認証モードでのワンタイム認証子に基づく相互認証について説明するシーケンス図である。
【図７】図７は、図１に示すシステムにおいて実行される、再認証モードでのワンタイム認証子に基づく相互認証について説明するシーケンス図である。
【図８】図８は、実施の形態２におけるシードテーブル７１の構造の一例を示す図である。
【図９】図９は、実施の形態２における認証子テーブル７２（通常認証テーブル７２ａ，再認証テーブル７２ｂ）の一例を示す図である。
【図１０】図１０は、実施の形態２における認証サーバ３によるデータ処理について説明するフローチャートである（１／２）。
【図１１】図１１は、実施の形態２における認証サーバ３によるデータ処理について説明するフローチャートである（２／２）。
【発明を実施するための形態】
【００１１】
以下、図に基づいて本発明の実施の形態を説明する。
【００１２】
実施の形態１．
【００１３】
図１は、本発明の実施の形態に係るワンタイム認証システムの構成を示すブロック図である。図１に示すシステムでは、クライアントとしての端末装置１は、インターネットなどのネットワーク２に接続されており、そのネットワーク２には認証サーバ３が接続されている。
【００１４】
端末装置１は、パーソナルコンピュータなどのコンピュータを内蔵した装置である。例えば、端末装置１は、ネットワーク２を介して、ネットワークサービスを享受する際に、認証サーバ３との間で相互認証を行い、相互認証が成功した後に、ネットワークサービスを享受する。
【００１５】
ネットワーク２は、有線および／または無線のＬＡＮ（Local Area Network）、および／またはインターネットなどのＷＡＮ（Wide Area Network）を含んでいる。
【００１６】
認証サーバ３は、所定のネットワークサービス（例えばネットバンキング、イーコマースなど）にログインする前に端末装置１の認証を行う認証サーバである。
【００１７】
認証サーバ３および端末装置１は、各相互認証セッションにおいて相互認証を行う。認証サーバ３および端末装置１は、それぞれシードを生成し、相手側装置の認証に成功するたびに自己のシードおよび暗号鍵を更新していき、その自己のシードを暗号化して相互に送受し、両者のシードからワンタイム認証子を生成し、両者のシードに基づいて、相手側装置のワンタイム認証子についての認証をそれぞれ行う。なお、以下では、ワンタイム認証子に基づく認証のことを、ワンタイム認証という。
【００１８】
なお、ここでは、ワンタイム認証子は、ワンタイムＩＤであるが、ワンタイムパスワードとしてもよい。その場合、ワンタイムパスワードとともに固定的な端末ＩＤが使用される。
【００１９】
さらに、端末装置１および認証サーバ３は、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持している。
【００２０】
端末装置１および認証サーバ３は、端末装置１のワンタイム認証が必要になるたびに、通常認証モードで、ワンタイム認証子に基づく相互認証を実行する。そして、端末装置１および認証サーバ３は、通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、ワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。
【００２１】
なお、図１では、端末装置１は、１台だけであるが、複数の端末装置１のそれぞれに異なるシードを保持させて、それぞれ異なるワンタイム認証子で認証を行うことも可能である。その場合、認証サーバ３は、複数の端末装置１のそれぞれとの間で独立してワンタイム認証子に基づく相互認証を行う。
【００２２】
以下、上記システムにおける各装置の構成および動作について説明する。
【００２３】
（１）各装置の構成
【００２４】
図２は、図１における端末装置１の構成を示すブロック図である。
【００２５】
図２に示すように、端末装置１は、ＣＰＵ（Central Processing Unit）１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３などを有するコンピュータを内蔵する。
【００２６】
ＣＰＵ１１は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ＲＯＭ１２は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、ＲＡＭ１３は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶する揮発性のメモリである。
【００２７】
また、インターフェイス１４は、記憶装置１５を接続可能なインターフェイス回路である。また、記憶装置１５は、インターフェイス１４に接続され、図示せぬオペレーティングシステム、ワンタイム認証プログラム３１、所定サービスを享受するためのアプリケーションプログラム、通常認証モードで使用される通常認証シード３２、再認証モードで使用される再認証シード３３などを格納する記録媒体を有する装置である。記憶装置１５としては、ハードディスクドライブ、ＳＳＤ（Solid State Disk）などが使用される。
【００２８】
また、インターフェイス１６は、通信装置１７を接続可能なインターフェイス回路である。通信装置１７は、ネットワークインターフェイス、モデムなどといったネットワーク２に接続可能な装置である。
【００２９】
また、インターフェイス１８は、ＩＥＥＥ１３９４、ＵＳＢ（Universal Serial Bus）などといった周辺機器インターフェイスである。また、インターフェイス２０は、入力装置２１を接続可能なインターフェイス回路である。入力装置２１は、キーボード、マウスなどといったユーザ操作を受け付けてそのユーザ操作に応じた信号を出力する装置である。また、画像処理回路２２は、画像データを書き込まれると、そのデータに対応する画像信号を出力する回路である。この画像処理回路２２には、その画像信号に基づいて画像を表示する表示装置２３が接続可能である。
【００３０】
ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、インターフェイス１４，１６，１８，２０および画像処理回路２２は、バスやコントローラチップによって相互にデータ通信可能に接続されている。
【００３１】
図３は、図２に示す端末装置１において実現される処理部を示すブロック図である。図３に示すように、端末装置１では、上述のプログラムが実行されることで、通信処理部４１、認証処理部４２、およびアプリケーション４３が実現される。
【００３２】
通信処理部４１は、通信装置１７を使用して、所定の通信プロトコルで認証サーバ３などとネットワーク２を介してデータ通信を行う。
【００３３】
認証処理部４２は、ＣＰＵ１１でワンタイム認証プログラム３１が実行されることにより実現され、通信処理部４１を使用して、認証サーバ３との間で、ワンタイム認証子に基づく相互認証を行う。そのとき、認証処理部４２は、相互認証におけるクライアント側の処理を実行する。
【００３４】
アプリケーション４３は、通信処理部４１を使用してデータ通信を実行し、所定のネットワークサービスを享受する。なお、相互認証が成功した後に、アプリケーション４３に対するネットワークサービスの提供が開始される。
【００３５】
図４は、図１における認証サーバ３の構成を示すブロック図である。
【００３６】
図４において、ＣＰＵ５１は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ＲＯＭ５２は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、ＲＡＭ５３は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶するメモリである。
【００３７】
また、インターフェイス５４は、記憶装置５５を接続可能なインターフェイス回路である。記憶装置５５は、インターフェイス５４に接続され、図示せぬオペレーティングシステム、ワンタイム認証プログラム６１、認証に使用されるデータなどを格納する記録媒体を有する装置である。記憶装置５５としては、ハードディスクドライブ、ＳＳＤなどが使用される。記憶装置５５には、認証に使用されるデータとして、シードテーブル７１、認証子テーブル７２、および端末属性テーブル７３が保持されている。
シードテーブル７１は、最後の相互認証時に更新された、次回認証用シードおよび次回認証用共通暗号鍵を有する。次回認証用シードおよび次回認証用共通暗号鍵は、１または複数の端末装置１のそれぞれについて別々に保持される。
【００３８】
シードテーブル７１は、通常認証モードでの次回認証用シードおよび次回認証用共通暗号鍵と、再認証モードでの次回認証用シードおよび次回認証用共通暗号鍵とを備える。
【００３９】
認証子テーブル７２は、最後の認証時に更新された次回認証用のクライアント側ワンタイム認証子を有する。認証子テーブル７２は、通常認証テーブル７２ａと再認証テーブル７２ｂとを含む。通常認証テーブル７２ａは、通常認証モードの次回認証用のクライアント側ワンタイム認証子を有し、再認証テーブル７２ｂは、再認証モードの次回認証用のクライアント側ワンタイム認証子を有する。次回認証用のクライアント側ワンタイム認証子は、１または複数の端末装置１のそれぞれについて別々に保持される。
【００４０】
端末属性テーブル７３は、各端末装置１について、ワンタイム認証子がワンタイムＩＤである場合、ワンタイムＩＤに関連付けられている固有の端末ＩＤ、およびその端末ＩＤに関連付けられている属性情報（所有者情報など）を有するテーブルである。なお、この端末ＩＤは、認証サーバ３において使用されるだけであって、外部へ送信されない。端末属性テーブル７３は、ワンタイム認証子がワンタイムパスワードであるときに、端末装置１からワンタイム認証子とともに受信される端末ＩＤの正当性を判定する際に参照される。
【００４１】
また、インターフェイス５６は、通信装置５７を接続可能なインターフェイス回路である。通信装置５７は、ネットワークインターフェイス、モデムなどといったネットワーク２に接続可能な装置である。
【００４２】
ＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、およびインターフェイス５４，５６は、バスやコントローラチップによって相互にデータ通信可能に接続されている。
【００４３】
図５は、図２に示す認証サーバ３において実現される処理部を示すブロック図である。図５に示すように、この認証サーバ３において、通信処理部８１、およびサーバ側認証処理部８２が実現される。
【００４４】
通信処理部８１は、通信装置５７を使用して、所定の通信プロトコルで端末装置１、サービスサーバ４などとネットワーク２を介してデータ通信を行う。
【００４５】
サーバ側認証処理部８２は、ＣＰＵ５１でワンタイム認証プログラム６１が実行されることにより実現され、通信処理部８１を使用して、１または複数の端末装置１との間でワンタイム認証子に基づく相互認証におけるサーバ側の処理を実行する。
【００４６】
（２）各装置の動作
【００４７】
端末装置１は、通常認証モードでのシードＲ（ｎ−１），Ｑ（ｎ−１）および共通暗号鍵Ｋ（ｎ−１）を保持している。また、認証サーバ３も、通常認証モードでの同一のシードＲ（ｎ−１），Ｑ（ｎ−１）および共通暗号鍵Ｋ（ｎ−１）を保持している。なお、ｎは、通常認証モードでの相互認証セッションの回数を示している。
【００４８】
ここで、シードＲ（ｎ−１）は、今回（ｎ−１）の通常認証モードでの相互認証セッションにおけるクライアント側シードである。シードＱ（ｎ−１）は、今回（ｎ−１）の通常認証モードでの相互認証セッションにおけるサーバ側シードである。共通暗号鍵Ｋ（ｎ−１）は、今回（ｎ−１）の通常認証モードでの相互認証セッションにおいて、通常認証モードでの次回認証用のクライアント側シードＲ（ｎ）を端末装置１から認証サーバ３へ送信する際に、そのＲ（ｎ）を暗号化するための共通暗号鍵である。また、共通暗号鍵Ｋ（ｎ−１）は、今回（ｎ−１）の通常認証モードでの相互認証セッションにおいて、通常認証モードでの次回認証用のサーバ側シードＱ（ｎ）を認証サーバ３から端末装置１へ送信する際に、そのＱ（ｎ）を暗号化するための共通暗号鍵である。
【００４９】
また、端末装置１は、再認証モードでのシードＲｘ（ｍ−１），Ｑｘ（ｍ−１）および共通暗号鍵Ｋｘ（ｍ−１）を保持している。また、認証サーバ３も、再認証モードでの同一のシードＲｘ（ｍ−１），Ｑｘ（ｍ−１）および共通暗号鍵Ｋｘ（ｍ−１）を保持している。なお、ｍは、再認証モードでの相互認証セッションの回数を示している。
【００５０】
通常認証モードでのシードＲ（ｎ−１），Ｑ（ｎ−１）および共通暗号鍵Ｋ（ｎ−１）は、通常認証モードでの相互認証セッションが実行され相互認証に成功するたびに更新される。なお、通常認証モードでの相互認証セッションが実行されても、再認証モードでのシードＲｘ（ｍ−１），Ｑｘ（ｍ−１）および共通暗号鍵Ｋｘ（ｍ−１）は更新されない。
【００５１】
また、再認証モードでの相互認証セッションは、通常認証モードでの相互認証に失敗したときに実行され、再認証モードでのシードＲｘ（ｍ−１），Ｑｘ（ｍ−１）および共通暗号鍵Ｋｘ（ｍ−１）は、再認証モードでの相互認証セッションが実行され相互認証に成功するたびに更新される。再認証モードでの相互認証セッションにおいて相互認証に成功すると、端末装置１と認証サーバ３との間で相互にネットワーク２を介して通常認証モードでの新たなシードを送受することなく、端末装置１および認証サーバ３のそれぞれにおいて、再認証モードでの更新後のシードＲｘ（ｍ），Ｑｘ（ｍ）に基づいて、通常認証モードでのシードＲ（ｎ），Ｑ（ｎ）および共通暗号鍵Ｋ（ｎ）が新たにセットされる。
【００５２】
ここで、シードＲｘ（ｍ−１）は、今回（ｍ−１）の再認証モードでの相互認証セッションにおけるクライアント側シードである。シードＱｘ（ｍ−１）は、今回（ｍ−１）の再認証モードでの相互認証セッションにおけるサーバ側シードである。共通暗号鍵Ｋｘ（ｍ−１）は、今回（ｍ−１）の再認証モードでの相互認証セッションにおいて、再認証モードでの次回認証用のクライアント側シードＲｘ（ｍ）を端末装置１から認証サーバ３へ送信する際に、そのＲｘ（ｍ）を暗号化するための共通暗号鍵である。また、共通暗号鍵Ｋｘ（ｍ−１）は、今回（ｍ−１）の再認証モードでの相互認証セッションにおいて、再認証モードでの次回認証用のサーバ側シードＱｘ（ｍ）を認証サーバ３から端末装置１へ送信する際に、そのＱｘ（ｍ）を暗号化するための共通暗号鍵である。
【００５３】
なお、初期状態において、通常認証モードでのシードの初期値Ｒ（０），Ｑ（０）および共通暗号鍵の初期値Ｋ（０）がセットされた後、ただちに、通常認証モードでのワンタイム認証子に基づく相互認証を所定回数（１回以上）実行することで、通常認証モードでのシードＲ（ｉ），Ｑ（ｉ）および共通暗号鍵Ｋ（ｉ）が、初期値から更新される。
【００５４】
また、初期状態において、再認証モードでのシードの初期値Ｒｘ（０），Ｑｘ（０）および共通暗号鍵の初期値Ｋｘ（０）がセットされた後、ただちに、再認証モードでのワンタイム認証子に基づく相互認証を所定回数（１回以上）実行することで、再認証モードでのシードＲｘ（ｉ），Ｑｘ（ｉ）および共通暗号鍵Ｋｘ（ｉ）が、初期値から更新される。この場合、再認証モードでのシードＲｘ（ｉ），Ｑｘ（ｉ）に基づいて、通常認証モードでのシードＲ（ｉ），Ｑ（ｉ）および共通暗号鍵Ｋ（ｉ）をセットしなくてもよい。
【００５５】
（２ａ）通常認証モードでのワンタイム認証子に基づく相互認証
【００５６】
図６は、図１に示すシステムにおいて実行される、通常認証モードでのワンタイム認証子に基づく相互認証について説明するシーケンス図である。
【００５７】
通常認証モードでのワンタイム認証子に基づく相互認証セッション（ステップＳ１）において、まず、端末装置１の認証処理部４２は、乱数Ｒを生成し、その乱数Ｒを、次回認証用のクライアント側シードＲ（ｎ）にセットする（ステップＳ２１）。
【００５８】
そして、認証処理部４２は、今回の相互認証セッションにおいてのみ使用するクライアント側ワンタイム認証子Ｃ（ｎ−１）を生成する（ステップＳ２２）。
【００５９】
ワンタイム認証子Ｃ（ｎ−１）は、一方向性関数で計算される。この一方向性関数は、２つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｃである。
【００６０】
ワンタイム認証子Ｃ（ｎ−１）は、次式に従って計算される。
【００６１】
Ｃ（ｎ−１）＝ｈｃ（Ｒ（ｎ−１），Ｑ（ｎ−１））
【００６２】
ここで、ハッシュ関数ｈｃの第１引数には、Ｒ（ｎ−１）が使用され、第２引数には、Ｑ（ｎ−１）が使用される。
【００６３】
また、認証処理部４２は、所定の暗号化方式に従って、共通暗号鍵Ｋ（ｎ−１）で、Ｒ（ｎ）を暗号化する。なお、共通暗号鍵Ｋ（ｎ−１）での暗号化後のＲ（ｎ）を、Ｋ（ｎ−１）＊Ｒ（ｎ）と表現する。
【００６４】
そして、認証処理部４２は、通信処理部４１を使用して、ワンタイム認証子Ｃ（ｎ−１）およびＫ（ｎ−１）＊Ｒ（ｎ）を認証サーバ３へ送信する（ステップＳ２３）。このとき、通信処理部４１は、ワンタイム認証子Ｃ（ｎ−１）およびＫ（ｎ−１）＊Ｒ（ｎ）を１つのメッセージとして送信する。
【００６５】
認証サーバ３では、サーバ側認証処理部８２は、通信処理部８１を使用して、そのメッセージを受信し、そのメッセージからワンタイム認証子Ｃ（ｎ−１）およびＫ（ｎ−１）＊Ｒ（ｎ）を抽出し、受信したワンタイム認証子Ｃ（ｎ−１）が、保持している通常認証モードでのクライアント側ワンタイム認証子に一致するか否かを判定する（ステップＳ２４）。
【００６６】
なお、端末装置１から認証サーバ３へのメッセージのデータフォーマット（ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置）は、通常認証モードと再認証モードとで同一である。
【００６７】
また、通常認証モードでのクライアント側ワンタイム認証子と再認証モードでのクライアント側ワンタイム認証子は同一のデータフォーマット（つまり、同一データ長）を有し、暗号化後の通常認証モードでのクライアント側シードと、暗号化後の再認証モードでのクライアント側シードとは同一のデータフォーマット（つまり、同一データ長）を有するため、受信データのみからでは、通常認証モードでのワンタイム認証子か再認証モードでのワンタイム認証子かの区別がつかない。このため、サーバ側認証処理部８２は、受信したワンタイム認証子が、通常認証テーブル７２ａに保持されているワンタイム認証子に一致するか否か、および受信したワンタイム認証子が、再認証テーブル７２ｂに保持されているワンタイム認証子に一致するか否かを判定し、受信したワンタイム認証子が、通常認証モードでの正当なワンタイム認証子、再認証モードでの正当なワンタイム認証子、および不正なワンタイム認証子のいずれかであるかを判定する。
【００６８】
したがって、受信したワンタイム認証子Ｃ（ｎ−１）が、不正なワンタイム認証子であると判定した場合、サーバ側認証処理部８２は、認証失敗と判定し、処理を終了する。
【００６９】
受信したワンタイム認証子Ｃ（ｎ−１）が、通常認証テーブル７２ａに保持している通常認証モードでのクライアント側ワンタイム認証子に一致した場合、サーバ側認証処理部８２は、認証成功と判定し、まず、乱数Ｑを生成し、その乱数Ｑを、通常認証モードでの、次回認証用サーバ側シードＱ（ｎ）にセットする（ステップＳ２５）。
【００７０】
また、サーバ側認証処理部８２は、Ｋ（ｎ−１）＊Ｒ（ｎ）を、シードテーブル７１に保持している共通暗号鍵Ｋ（ｎ−１）で、Ｒ（ｎ）へ復号する。そして、サーバ側認証処理部８２は、サーバ側ワンタイム認証子Ｓ（ｎ−１）を生成する（ステップＳ２６）。
【００７１】
ワンタイム認証子Ｓ１（ｎ−１）は、一方向性関数で計算される。この一方向性関数は、２つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｓである。
【００７２】
ワンタイム認証子Ｓ（ｎ−１）は、次式に従って計算される。
【００７３】
Ｓ（ｎ−１）＝ｈｓ（Ｒ（ｎ），Ｑ（ｎ−１））
【００７４】
ここで、ハッシュ関数ｈｓの第１引数には、Ｒ（ｎ）が使用され、第２引数には、Ｑ（ｎ−１）が使用される。なお、ハッシュ関数ｈｓは、ハッシュ関数ｈｃと同一の関数でもよいし、異なる関数でもよい。
【００７５】
また、サーバ側認証処理部８２は、所定の暗号化方式に従って、共通暗号鍵Ｋ（ｎ−１）で、Ｑ（ｎ）を暗号化する。なお、共通暗号鍵Ｋ（ｎ−１）での暗号化後のＱ（ｎ）を、Ｋ（ｎ−１）＊Ｑ（ｎ）と表現する。
【００７６】
そして、サーバ側認証処理部８２は、通信処理部８１を使用して、ワンタイム認証子Ｓ（ｎ−１）およびＫ（ｎ−１）＊Ｑ（ｎ）を端末装置１へ送信する（ステップＳ２７）。このとき、通信処理部８１は、ワンタイム認証子Ｓ（ｎ−１）およびＫ（ｎ−１）＊Ｑ（ｎ）を１つのメッセージとして送信する。
【００７７】
なお、認証サーバ３から端末装置１へのメッセージのデータフォーマット（ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置）は、通常認証モードと再認証モードとで同一である。また、通常認証モードでのサーバ側ワンタイム認証子と再認証モードでのサーバ側ワンタイム認証子は、同一のデータフォーマット（つまり、同一データ長）を有し、暗号化後の通常認証モードでのサーバ側シードと暗号化後の再認証モードでのサーバ側シードは、同一のデータフォーマット（つまり、同一データ長）を有する。
【００７８】
認証サーバ３における端末装置１のワンタイム認証に成功すると、端末装置１では、ワンタイム認証子Ｓ（ｎ−１）およびＫ（ｎ−１）＊Ｑ（ｎ）を含む上述のメッセージが受信される。端末装置１では、認証処理部４２は、通信処理部４１を使用して、そのメッセージを受信し、そのメッセージから、ワンタイム認証子Ｓ（ｎ−１）およびＫ（ｎ−１）＊Ｑ（ｎ）を抽出する。そして、認証処理部４２は、通常認証モードでのＲ（ｎ）およびＱ（ｎ−１）に基づいて、上述の式に従って正当なワンタイム認証子Ｓ（ｎ−１）の値を計算し、受信したワンタイム認証子Ｓ（ｎ−１）が、計算した値に一致するか否かを判定する（ステップＳ２８）。
【００７９】
このとき、受信したワンタイム認証子Ｓ（ｎ−１）が、計算した値に一致しない場合、認証処理部４２は、認証失敗と判定し、処理を終了する。
【００８０】
受信したワンタイム認証子Ｓ（ｎ−１）が、計算した値に一致した場合、認証処理部４２は、認証成功と判定する。つまり、認証処理部４２は、相互認証セッション（ステップＳ１）における相互認証に成功したと判定する。
【００８１】
相互認証セッション（ステップＳ１）における相互認証に成功したと判定すると、認証処理部４２は、まず、Ｋ（ｎ−１）＊Ｑ（ｎ）を、保持している共通暗号鍵Ｋ（ｎ−１）で、Ｑ（ｎ）へ復号し、この値を、通常認証モードでの次回認証用サーバ側シードにセットする。
【００８２】
そして、認証処理部４２は、通常認証モードでの共通暗号鍵Ｋ（ｎ−１）を次式に従って更新する（ステップＳ２９）。
【００８３】
Ｋ（ｎ）＝ｈｋ（Ｋ（ｎ−１），Ｒ（ｎ），Ｑ（ｎ））
【００８４】
ここで、ｈｋは、一方向性関数であって、かつハッシュ関数である。
【００８５】
このようにして、通常認証でのワンタイム認証子に基づく相互認証に成功した後、認証処理部４２は、端末装置１において保持しているシードおよび共通暗号鍵を、Ｒ（ｎ）およびＱ（ｎ）、並びにＫ（ｎ）で更新する。
【００８６】
一方、サーバ側認証処理部８２は、通常認証モードでの次回のワンタイム認証時に使用するクライアント側ワンタイム認証子Ｃ（ｎ）を、Ｒ（ｎ）およびＱ（ｎ）から、上述の式に従って計算する。そして、サーバ側認証処理部８２は、Ｒ（ｎ）、Ｑ（ｎ）およびＫ（ｎ）で、シードテーブル７１における、端末装置１についての通常認証モードでのデータを更新し、Ｃ（ｎ）で、通常認証テーブル７２ａにおける、端末装置１についてのワンタイム認証子を更新する。これにより、これらの値が、通常認証モードの次回の相互認証セッションまで保持される。
【００８７】
さらに、認証サーバ３においても、ワンタイム認証子Ｓ（ｎ−１）の送信後、サーバ側認証処理部８２は、通常認証モードでの共通暗号鍵Ｋ（ｎ−１）を上述の式に従って同様に更新する（ステップＳ３０）。
【００８８】
このようにして、通常認証モードでの相互認証セッションが実行される。通常認証モードでの相互認証に失敗しなければ、再認証モードでの相互認証セッションは実行されず、通常認証モードでの相互認証セッションが繰り返し実行される。
【００８９】
（２ｂ）再認証モードでのワンタイム認証子に基づく相互認証
【００９０】
図７は、図１に示すシステムにおいて実行される、再認証モードでのワンタイム認証子に基づく相互認証について説明するシーケンス図である。
【００９１】
例えば、通常認証モードにおいて、認証サーバ３のワンタイム認証子Ｓ（ｎ−１）が送信されたが通信障害で正しく端末装置１によって受信されなかった場合、または、認証サーバ３のサーバダウンによって、端末装置１に保持されているシードと認証サーバ３に保持されているシードとが互いに一致しなくなった場合、次回の端末装置１のワンタイム認証に失敗する。
【００９２】
通常認証モードにおいて、認証サーバ３における端末装置１のワンタイム認証に失敗した場合には、認証サーバ３から端末装置１へ、ワンタイム認証子を含むメッセージは送信されない。そのため、端末装置１は、このメッセージを受信しない場合には、認証サーバ３における端末装置１のワンタイム認証に失敗したと判定する。つまり、この場合、端末装置１は、認証サーバ３のワンタイム認証子Ｓ（ｎ−１）が受信されないことに基づいて、通常認証モードでの相互認証に失敗したと判定する（ステップＳ４１）。通常認証モードでの相互認証に失敗したと判定した場合、端末装置１は、後述のように、再認証モードの相互認証セッション（ステップＳ５１）を実行し、端末装置１に保持されているシードと認証サーバ３に保持されているシードとを互いに一致させ、通常認証モードのシードを復旧する。
【００９３】
再認証モードの相互認証セッション（ステップＳ５１）では、まず、端末装置１の認証処理部４２は、乱数Ｒを生成し、その乱数Ｒを、次回認証用のクライアント側シードＲｘ（ｍ）にセットする（ステップＳ６１）。
【００９４】
そして、認証処理部４２は、今回の相互認証セッションにおいてのみ使用するクライアント側ワンタイム認証子Ｃｘ（ｍ−１）を生成する（ステップＳ６２）。
【００９５】
ワンタイム認証子Ｃｘ（ｍ−１）は、一方向性関数で計算される。この一方向性関数は、２つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｃｘである。
【００９６】
ワンタイム認証子Ｃｘ（ｍ−１）は、次式に従って計算される。
【００９７】
Ｃｘ（ｍ−１）＝ｈｃｘ（Ｒｘ（ｍ−１），Ｑｘ（ｍ−１））
【００９８】
ここで、ハッシュ関数ｈｃｘの第１引数には、Ｒｘ（ｍ−１）が使用され、第２引数には、Ｑｘ（ｍ−１）が使用される。なお、ハッシュ関数ｈｃｘは、上述のハッシュ関数ｈｃ，ｈｓのいずれかと同一のものでもよいし、いずれとも異なるものでもよい。
【００９９】
また、認証処理部４２は、所定の暗号化方式に従って、共通暗号鍵Ｋｘ（ｍ−１）で、Ｒ（ｍ）を暗号化する。なお、共通暗号鍵Ｋｘ（ｍ−１）での暗号化後のＲｘ（ｍ）を、Ｋｘ（ｍ−１）＊Ｒｘ（ｍ）と表現する。
【０１００】
そして、認証処理部４２は、通信処理部４１を使用して、ワンタイム認証子Ｃｘ（ｍ−１）およびＫｘ（ｍ−１）＊Ｒｘ（ｍ）を認証サーバ３へ送信する（ステップＳ６３）。このとき、通信処理部４１は、ワンタイム認証子Ｃｘ（ｍ−１）およびＫｘ（ｍ−１）＊Ｒｘ（ｍ）を１つのメッセージとして送信する。
【０１０１】
認証サーバ３では、サーバ側認証処理部８２は、通信処理部８１を使用して、そのメッセージを受信し、そのメッセージからワンタイム認証子Ｃｘ（ｍ−１）およびＫｘ（ｍ−１）＊Ｒｘ（ｍ）を抽出する。
【０１０２】
サーバ側認証処理部８２は、まず、受信したワンタイム認証子Ｃｘ（ｍ−１）が、保持している通常認証モードでのクライアント側ワンタイム認証子に一致するか否かを判定する。このとき、受信したワンタイム認証子Ｃｘ（ｍ−１）が、通常認証モードでのクライアント側ワンタイム認証子には一致しない。次に、サーバ側認証処理部８２は、受信したワンタイム認証子Ｃｘ（ｍ−１）が、保持している再認証モードでのクライアント側ワンタイム認証子に一致するか否かを判定する（ステップＳ６４）。
【０１０３】
受信したワンタイム認証子Ｃｘ（ｍ−１）が、再認証テーブル７２ｂに保持している再認証モードでのクライアント側ワンタイム認証子に一致した場合、サーバ側認証処理部８２は、認証成功と判定し、まず、乱数Ｑを生成し、その乱数Ｑを、再認証モードでの、次回認証用サーバ側シードＱｘ（ｍ）にセットする（ステップＳ６５）。
【０１０４】
また、サーバ側認証処理部８２は、Ｋｘ（ｍ−１）＊Ｒｘ（ｍ）を、シードテーブル７１に保持している共通暗号鍵Ｋｘ（ｍ−１）で、Ｒｘ（ｍ）へ復号する。そして、サーバ側認証処理部８２は、サーバ側ワンタイム認証子Ｓｘ（ｍ−１）を生成する（ステップＳ６６）。
【０１０５】
ワンタイム認証子Ｓｘ（ｍ−１）は、一方向性関数で計算される。この一方向性関数は、２つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｓｘである。
【０１０６】
ワンタイム認証子Ｓｘ（ｍ−１）は、次式に従って計算される。
【０１０７】
Ｓｘ（ｍ−１）＝ｈｓｘ（Ｒｘ（ｍ），Ｑｘ（ｍ−１））
【０１０８】
ここで、ハッシュ関数ｈｓｘの第１引数には、Ｒｘ（ｍ）が使用され、第２引数には、Ｑｘ（ｍ−１）が使用される。なお、ハッシュ関数ｈｓｘは、ハッシュ関数ｈｃ，ｈｓ，ｈｃｘのいずれかと同一の関数でもよいし、いずれとも異なる関数でもよい。
【０１０９】
また、サーバ側認証処理部８２は、所定の暗号化方式に従って、共通暗号鍵Ｋｘ（ｍ−１）で、Ｑｘ（ｍ）を暗号化する。なお、共通暗号鍵Ｋｘ（ｍ−１）での暗号化後のＱｘ（ｍ）を、Ｋｘ（ｍ−１）＊Ｑ（ｍ）と表現する。
【０１１０】
そして、サーバ側認証処理部８２は、通信処理部８１を使用して、ワンタイム認証子Ｓｘ（ｍ−１）およびＫｘ（ｍ−１）＊Ｑｘ（ｍ）を端末装置１へ送信する（ステップＳ６７）。このとき、通信処理部８１は、ワンタイム認証子Ｓｘ（ｍ−１）およびＫｘ（ｍ−１）＊Ｑｘ（ｍ）を１つのメッセージとして送信する。
【０１１１】
認証サーバ３における端末装置１のワンタイム認証に成功すると、端末装置１では、ワンタイム認証子Ｓｘ（ｍ−１）およびＫｘ（ｍ−１）＊Ｑｘ（ｍ）を含む上述のメッセージが受信される。端末装置１では、認証処理部４２は、通信処理部４１を使用して、そのメッセージを受信し、そのメッセージから、ワンタイム認証子Ｓｘ（ｍ−１）およびＫｘ（ｍ−１）＊Ｑｘ（ｍ）を抽出する。そして、認証処理部４２は、通常認証モードでのＲｘ（ｍ）およびＱｘ（ｍ−１）に基づいて、上述の式に従って正当なワンタイム認証子Ｓｘ（ｍ−１）の値を計算し、受信したワンタイム認証子Ｓｘ（ｍ−１）が、計算した値に一致するか否かを判定する（ステップＳ６８）。
【０１１２】
このとき、受信したワンタイム認証子Ｓｘ（ｍ−１）が、計算した値に一致しない場合、認証処理部４２は、認証失敗と判定し、処理を終了する。
【０１１３】
受信したワンタイム認証子Ｓｘ（ｍ−１）が、計算した値に一致した場合、認証処理部４２は、認証成功と判定する。つまり、認証処理部４２は、相互認証セッション（ステップＳ５１）における相互認証に成功したと判定する。
【０１１４】
相互認証セッション（ステップＳ５１）における相互認証に成功したと判定すると、認証処理部４２は、まず、Ｋｘ（ｍ−１）＊Ｑｘ（ｍ）を、保持している共通暗号鍵Ｋｘ（ｍ−１）で、Ｑｘ（ｍ）へ復号し、この値を、再認証モードでの次回認証用サーバ側シードにセットする（ステップＳ６９）。
【０１１５】
そして、認証処理部４２は、再認証モードでの共通暗号鍵Ｋｘ（ｍ−１）を次式に従って更新する（ステップＳ７０）。
【０１１６】
Ｋｘ（ｍ）＝ｈｋｘ（Ｋｘ（ｍ−１），Ｒｘ（ｍ），Ｑｘ（ｍ））
【０１１７】
ここで、ｈｋｘは、一方向性関数であって、かつハッシュ関数である。
【０１１８】
このようにして、再認証でのワンタイム認証子に基づく相互認証に成功した後、認証処理部４２は、端末装置１において保持しているシードおよび共通暗号鍵を、Ｒｘ（ｍ）およびＱｘ（ｍ）、並びにＫｘ（ｍ）で更新する。
【０１１９】
一方、サーバ側認証処理部８２は、再認証モードでの次回のワンタイム認証時に使用するクライアント側ワンタイム認証子Ｃｘ（ｍ）を、Ｒｘ（ｍ）およびＱｘ（ｍ）から、上述の式に従って計算する。そして、サーバ側認証処理部８２は、Ｒｘ（ｍ）、Ｑｘ（ｍ）およびＫｘ（ｍ）で、シードテーブル７１における、端末装置１についての再認証モードでのデータを更新し、Ｃｘ（ｍ）で、再認証テーブル７２ｂにおける、端末装置１についてのワンタイム認証子を更新する（ステップＳ７１）。これにより、これらの値が、再認証モードの次回の相互認証セッションまで保持される。
【０１２０】
また、認証サーバ３においても、ワンタイム認証子Ｓｘ（ｍ−１）の送信後、サーバ側認証処理部８２は、再認証モードでの共通暗号鍵Ｋｘ（ｍ−１）を上述の式に従って同様に更新する（ステップＳ７２）。
【０１２１】
また、端末装置１では、認証処理部４２は、再認証モードでの更新後のシードＲｘ（ｍ），Ｑｘ（ｍ）から、通常認証モードでの次回認証用のシードＲ（ｎ），Ｑ（ｎ）および共通暗号鍵Ｋ（ｎ）を生成し、セットする（ステップＳ７３）。
【０１２２】
例えば、再認証モードでの更新後のシードＱｘ（ｍ）が、通常認証モードでの次回認証用のシードＲ（ｎ）とされ、再認証モードでの更新後のシードＲｘ（ｍ）が、通常認証モードでの次回認証用のシードＱ（ｎ）とされる。あるいは、所定の関数で、シードＲｘ（ｍ），Ｑｘ（ｍ）から、シードＲ（ｎ），Ｑ（ｎ）を生成するようにしてもよい。
【０１２３】
また、通常認証モードでの次回認証用の共通暗号鍵Ｋ（ｎ）は、例えば次式のように、シードＲ（ｎ），Ｑ（ｎ）および共通暗号鍵Ｋｘ（ｍ）またはＫｘ（ｍ−１）から得られる。
【０１２４】
Ｋ（ｎ）＝ｈｘ（Ｒ（ｎ），Ｑ（ｎ），Ｋｘ（ｍ））
【０１２５】
または、Ｋ（ｎ）＝ｈｘ（Ｒ（ｎ），Ｑ（ｎ），Ｋｘ（ｍ−１））
【０１２６】
ここで、ｈｘは、ハッシュ関数である。
【０１２７】
一方、認証サーバ３では、サーバ側認証処理部８２は、認証処理部４２と同様にして、再認証モードでの更新後のシードＲｘ（ｍ），Ｑｘ（ｍ）から、通常認証モードでの次回認証用のシードＲ（ｎ），Ｑ（ｎ）および共通暗号鍵Ｋ（ｎ）を生成し、シードテーブル７１にセットする（ステップＳ７４）。さらに、サーバ側認証処理部８２は、これらのシードＲ（ｎ），Ｑ（ｎ）から次回認証用のワンタイム認証子Ｃ（ｎ）を生成し、通常認証テーブル７２ａにセットする。
【０１２８】
以上のように、上記実施の形態１によれば、端末装置１および認証サーバ３は、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持している。端末装置１および認証サーバ３は、通常認証モードで、ワンタイム認証子に基づく相互認証を実行する。さらに、端末装置１および認証サーバ３は、通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、ワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。
【０１２９】
これにより、通常認証モードでの相互認証に失敗した場合に、再認証モードで相互認証を行うことで、短時間で、相互認証可能に、通常認証モードのシードが回復される。
【０１３０】
実施の形態２．
【０１３１】
本発明の実施の形態２では、実施の形態１における認証サーバ３内のデータ構造およびそのデータ構造に沿ったデータ処理の一例について説明する。なお、システムの基本的な構成および動作は、実施の形態１と同様であるので、その説明は省略する。なお、この実施の形態２において、ワンタイム認証子はワンタイムＩＤである。
【０１３２】
まず、データ構造について説明する。
【０１３３】
実施の形態２では、認証サーバ３において、端末装置１と同様の、１または複数の端末装置のそれぞれに対して固有の管理番号（端末ＩＤ）が割り当てられ、その管理番号に関連付けて、（ａ）通常認証モードでの次回認証用クライアント側ワンタイム認証子Ｃ（ｎ）、（ｂ）再認証モードでの次回認証用クライアント側ワンタイム認証子Ｃｘ（ｍ）、（ｃ）通常認証モードでの現時点（ｎ−１）のシードＲ（ｎ−１），Ｑ（ｎ−１）および共通暗号鍵Ｋ（ｎ−１）並びに次回認証用のシードＲ（ｎ），Ｑ（ｎ）および共通暗号鍵Ｋ（ｎ）、並びに（ｄ）再認証モードでの現時点（ｎ−１）のシードＲｘ（ｍ−１），Ｑｘ（ｍ−１）および共通暗号鍵Ｋｘ（ｍ−１）並びに次回認証用のシードＲｘ（ｍ），Ｑｘ（ｍ）および共通暗号鍵Ｋｘ（ｍ）が保持される。
【０１３４】
つまり、通常認証テーブル７２ａにおいて、管理番号に関連付けて、（ａ）次回認証用クライアント側ワンタイム認証子Ｃ（ｎ）が保持される。また、再認証テーブル７２ｂにおいて、管理番号に関連付けて、（ｂ）次回認証用クライアント側ワンタイム認証子Ｃｘ（ｍ）が保持される。また、シードテーブル７１において、管理番号に関連付けて、（ｃ）通常認証モードでの現時点（ｎ−１）のシードＲ（ｎ−１），Ｑ（ｎ−１）および共通暗号鍵Ｋ（ｎ−１）並びに次回認証用のシードＲ（ｎ），Ｑ（ｎ）および共通暗号鍵Ｋ（ｎ）、並びに（ｄ）再認証モードでの現時点（ｍ−１）のシードＲｘ（ｍ−１），Ｑｘ（ｍ−１）および共通暗号鍵Ｋｘ（ｍ−１）並びに次回認証用のシードＲｘ（ｍ），Ｑｘ（ｍ）および共通暗号鍵Ｋｘ（ｍ）が保持される。
【０１３５】
図８は、実施の形態２におけるシードテーブル７１の構造の一例を示す図である。図９は、実施の形態２における認証子テーブル７２（通常認証テーブル７２ａ，再認証テーブル７２ｂ）の一例を示す図である。
【０１３６】
図８における通常認証アドレスは、通常認証テーブル７２ａ内で、当該通常認証アドレスに関連付けられている管理番号と同一の管理番号を有するレコードの位置を示すデータである。同様に、図８における再認証アドレスは、再認証テーブル７２ｂ内で、当該再認証アドレスに関連付けられている管理番号と同一の管理番号を有するレコードの位置を示すデータである。
【０１３７】
また、図９において、サーバ側認証処理部８２により、通常認証テーブル７２ａ内のレコード（ワンタイム認証子と管理番号の組）は、ワンタイム認証子の値について昇順にソートされる。同様に、再認証テーブル７２ｂ内のレコード（ワンタイム認証子と管理番号の組）は、ワンタイム認証子の値について昇順にソートされる。これにより、ワンタイム認証時に迅速に、クライアントから受信したワンタイム認証子がテーブル７２ａ，７２ｂに登録されているか否かを判定することができる。
【０１３８】
なお、シードテーブル７１、通常認証テーブル７２ａ、および再認証テーブル７２ｂは、予め、所定数（つまり、端末装置の数）のレコードを有しており、レコード内の管理番号以外のフィールドには初期値がセットされる。
【０１３９】
次に、データ処理について説明する。
【０１４０】
図１０および図１１は、実施の形態２における認証サーバ３によるデータ処理について説明するフローチャートである。
【０１４１】
認証サーバ３では、サーバ側認証処理部８２は、端末装置１から、ワンタイム認証子Ｃ（通常認証モードでのワンタイム認証子または再認証モードでのワンタイム認証子）を含むメッセージを受信すると、そのワンタイム認証子Ｃが通常認証テーブル７２ａに登録されているクライアント側ワンタイム認証子Ｃ（ｎ−１）のいずれかであるか否かを判定する（ステップＳ１０１）。
【０１４２】
受信したワンタイム認証子Ｃが通常認証テーブル７２ａに登録されているクライアント側ワンタイム認証子Ｃ（ｎ−１）のいずれかである場合、サーバ側認証処理部８２は、通常認証テーブル７２ａにおいて、受信したワンタイム認証子Ｃに関連付けられている管理番号を特定する（ステップＳ１０２）。この場合、通常認証モードでのワンタイム認証が実行される。
【０１４３】
サーバ側認証処理部８２は、特定した管理番号に関連付けられているＱ（ｎ−１）およびＫ（ｎ−１）をシードテーブル７１から読み出す（ステップＳ１０３）。
【０１４４】
そして、サーバ側認証処理部８２は、受信したＫ（ｎ−１）＊Ｒ（ｎ）からＲ（ｎ）を、読み出したＫ（ｎ−１）で復号し、そのＲ（ｎ）を、その管理番号に関連付けてシードテーブル７１に書き込む（ステップＳ１０４）。
【０１４５】
次に、サーバ側認証処理部８２は、次回認証用サーバ側シードの生成を行う。まず、サーバ側認証処理部８２は、乱数Ｑを生成し、この乱数Ｑを次回認証用サーバ側シードに使用した場合に、次回認証用のクライアント側ワンタイム認証子が、別の端末装置１のクライアント側ワンタイム認証子のいずれかに一致するか否かを判定する（ステップＳ１０６）。つまり、生成した乱数Ｑを使用した場合のクライアント側ワンタイム認証子の一意性（つまり、同値の別のワンタイム認証子が存在しないこと）が確保されるか否かが判定される。
【０１４６】
このとき、サーバ側認証処理部８２は、次式に従って、この乱数Ｑを次回認証用サーバ側シードに使用した場合の次回認証用クライアント側ワンタイム認証子Ｘ１を計算し、このワンタイム認証子Ｘ１が通常認証テーブル７２ａまたは再認証テーブル７２ｂに登録されているか否かを判定する。
【０１４７】
Ｘ１＝ｈｃ（Ｒ（ｎ），Ｑ）
【０１４８】
そして、生成した乱数Ｑで一意性が確保されないと判定した場合、サーバ側認証処理部８２は、一意性が確保されるまで、乱数Ｑを再生成する。
【０１４９】
一方、生成した乱数Ｑでは一意性が確保されると判定した場合、サーバ側認証処理部８２は、乱数Ｑを、次回認証用サーバ側シードＱ（ｎ）にセットし、そのシードＱ（ｎ）を、その管理番号に関連付けてシードテーブル７１に書き込む（ステップＳ１０７）。
【０１５０】
そして、サーバ側認証処理部８２は、サーバ側ワンタイム認証子Ｓ（ｎ−１）および暗号化後の次回認証用サーバ側シードＫ（ｎ−１）＊Ｑ（ｎ）を生成し、端末装置１へ送信する（ステップＳ１０８）。
【０１５１】
また、サーバ側認証処理部８２は、ステップＳ１０６での判定時に計算したＸ１を、次回認証用クライアント側ワンタイム識別子Ｃ（ｎ）とし、そのＣ（ｎ）で、通常認証テーブル７２ａにおいてその管理番号に関連付けられているワンタイム識別子を更新する（ステップＳ１０９）。このとき、サーバ側認証処理部８２は、その管理番号に関連付けられている通常認証アドレスをシードテーブル７１から読み出し、その通常認証アドレスで、通常認証テーブル７２ａにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム識別子を更新する。
【０１５２】
その後、サーバ側認証処理部８２は、通常認証テーブル７２ａ内のレコードを、ワンタイム識別子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル７１においてそのレコードの管理番号に関連付けられている通常認証アドレスを更新する（ステップＳ１１０）。
【０１５３】
そして、サーバ側認証処理部８２は、次回認証用共通暗号鍵Ｋ（ｎ）を生成し、その管理番号に関連付けてシードテーブル７１に書き込む（ステップＳ１１１）。
【０１５４】
さらに、サーバ側認証処理部８２は、シードテーブル７１において、その管理番号の次回認証用のシードおよび共通暗号鍵Ｒ（ｎ），Ｑ（ｎ），Ｋ（ｎ）で、今回認証用のシードおよび共通暗号鍵Ｒ（ｎ−１），Ｑ（ｎ−１），Ｋ（ｎ−１）を更新する（ステップＳ１１２）。
【０１５５】
このようにして、通常認証モードでのワンタイム認証についてのデータ処理が実行される。
【０１５６】
一方、ステップＳ１０１において、受信したワンタイム認証子Ｃが通常認証テーブル７２ａに登録されていないと判定した場合、サーバ側認証処理部８２は、受信したワンタイム認証子Ｃが、再認証テーブル７２ｂに登録されているクライアント側ワンタイム認証子Ｃｘ（ｍ−１）のいずれかであるか否かを判定する（ステップＳ１２１）。
【０１５７】
受信したワンタイム認証子Ｃが再認証テーブル７２ｂに登録されているクライアント側ワンタイム認証子Ｃｘ（ｍ−１）のいずれかである場合、サーバ側認証処理部８２は、再認証テーブル７２ｂにおいて、受信したワンタイム認証子Ｃに関連付けられている管理番号を特定する（ステップＳ１２２）。この場合、再認証モードでのワンタイム認証が実行される。
【０１５８】
サーバ側認証処理部８２は、特定した管理番号に関連付けられているＱｘ（ｍ−１）およびＫｘ（ｍ−１）をシードテーブル７１から読み出す（ステップＳ１２３）。
【０１５９】
そして、サーバ側認証処理部８２は、受信したＫｘ（ｍ−１）＊Ｒｘ（ｍ）からＲｘ（ｍ）を、読み出したＫｘ（ｍ−１）で復号し、そのＲｘ（ｍ）を、その管理番号に関連付けてシードテーブル７１に書き込む（ステップＳ１２４）。
【０１６０】
次に、サーバ側認証処理部８２は、次回認証用サーバ側シードの生成を行う。まず、サーバ側認証処理部８２は、乱数Ｑを生成し、この乱数Ｑを次回認証用サーバ側シードに使用した場合に、次回認証用のクライアント側ワンタイム認証子が、通常認証モードまたは再認証モードでの別のクライアント側ワンタイム認証子のいずれかに一致するか否かを判定する（ステップＳ１２６）。つまり、生成した乱数Ｑを使用した場合のクライアント側ワンタイム認証子の一意性（つまり、同値の別のワンタイム認証子が存在しないこと）が確保されるか否かが判定される。
【０１６１】
このとき、サーバ側認証処理部８２は、次式に従って、この乱数Ｑを次回認証用サーバ側シードに使用した場合の次回認証用のクライアント側ワンタイム認証子Ｘ２を計算し、これらのワンタイム認証子Ｘ２が通常認証テーブル７２ａまたは再認証テーブル７２ｂに登録されているか否かを判定する。
【０１６２】
Ｘ２＝ｈｃｘ（Ｒｘ（ｍ），Ｑ）
【０１６３】
そして、生成した乱数Ｑでは一意性が確保されないと判定した場合、サーバ側認証処理部８２は、一意性が確保されるまで、乱数Ｑを再生成する。
【０１６４】
一方、生成した乱数Ｑでは一意性が確保されると判定した場合、サーバ側認証処理部８２は、乱数Ｑを、次回認証用サーバ側シードＱｘ（ｍ）にセットし、そのシードＱｘ（ｍ）を、その管理番号に関連付けてシードテーブル７１に書き込む（ステップＳ１２７）。
【０１６５】
そして、サーバ側認証処理部８２は、サーバ側ワンタイム認証子Ｓｘ（ｍ−１）および暗号化後の次回認証用サーバ側シードＫｘ（ｍ−１）＊Ｑｘ（ｍ）を生成し、端末装置１へ送信する（ステップＳ１２８）。
【０１６６】
また、サーバ側認証処理部８２は、ステップＳ１２６での判定時に計算したＸ２を、次回認証用クライアント側ワンタイム識別子Ｃｘ（ｍ）とし、そのＣｘ（ｍ）で、再認証テーブル７２ｂにおいてその管理番号に関連付けられているワンタイム識別子を更新する（ステップＳ１２９）。このとき、サーバ側認証処理部８２は、その管理番号に関連付けられている再認証アドレスをシードテーブル７１から読み出し、その再認証アドレスで、再認証テーブル７２ｂにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム識別子を更新する。
【０１６７】
その後、サーバ側認証処理部８２は、再認証テーブル７２ｂ内のレコードを、ワンタイム識別子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル７１においてそのレコードの管理番号に関連付けられている再認証アドレスを更新する（ステップＳ１３０）。
【０１６８】
そして、サーバ側認証処理部８２は、次回認証用共通暗号鍵Ｋｘ（ｍ）を生成し、その管理番号に関連付けてシードテーブル７１に書き込む（ステップＳ１３１）。
【０１６９】
さらに、サーバ側認証処理部８２は、シードテーブル７１において、その管理番号の次回認証用のシードおよび共通暗号鍵Ｒｘ（ｍ），Ｑｘ（ｍ），Ｋｘ（ｍ）で、今回認証用のシードおよび共通暗号鍵Ｒｘ（ｍ−１），Ｑｘ（ｍ−１），Ｋｘ（ｍ−１）を更新する（ステップＳ１３２）。
【０１７０】
そして、サーバ側認証処理部８２は、再認証モードのシードおよび共通暗号鍵Ｒｘ（ｍ），Ｑｘ（ｍ），Ｋｘ（ｍ）から、通常認証モードでの次回認証用のシードおよび共通暗号鍵Ｒ（ｎ），Ｑ（ｎ），Ｋ（ｎ）を生成し、そのシードおよび共通暗号鍵Ｒ（ｎ），Ｑ（ｎ），Ｋ（ｎ）を、その管理番号に関連付けてシードテーブル７１に書き込む（ステップＳ１３３）。
【０１７１】
このようにして、再認証モードでのワンタイム認証についてのデータ処理が実行される。
【０１７２】
以上のように、上記実施の形態２によれば、管理番号で複数の端末装置１を管理し、端末装置１についてそれぞれ独立してワンタイム認証を行うことができる。
【０１７３】
なお、上述の実施の形態に対する様々な変更および修正については、当業者には明らかである。そのような変更および修正は、その主題の趣旨および範囲から離れることなく、かつ、意図された利点を弱めることなく行われてもよい。つまり、そのような変更および修正が請求の範囲に含まれることを意図している。
【０１７４】
例えば、上記実施の形態１，２において、再認証モードでの相互認証で通常認証モードでの相互認証のシードを復旧したようにして、再認証モードでの相互認証に失敗したときに、再々認証モードでの相互認証で再認証モードでの相互認証のシードを復旧するようにしてもよい。
【０１７５】
また、上記実施の形態１，２において、認証サーバ３において、サーバ側認証処理部８２は、認証サーバ３の起動時に、シードテーブル７１および認証子テーブル７２を記憶装置５５からＲＡＭ５３へ読み出し、ワンタイム認証子に基づく相互認証を、ＲＡＭ５３上のシードテーブル７１および認証子テーブル７２に基づいて実行し、認証サーバ３のシャットダウン時に、ＲＡＭ５３上のシードテーブル７１および認証子テーブル７２で、記憶装置５５上のシードテーブル７１および認証子テーブル７２を更新するようにしてもよい。
【０１７６】
また、上記実施の形態１，２において、認証サーバ３のサーバ側認証処理部８２は、バックアップのために、シードテーブル７１における再認証モードのシードＣｘ（ｉ），Ｑｘ（ｉ）を外部の不揮発性記憶装置に別途格納しておき、認証サーバ３がサーバダウン後に復旧した場合、その外部の不揮発性記憶装置に格納されているシードＣｘ（ｉ），Ｑｘ（ｉ）で、記憶装置５５内のシードテーブル７１における再認証モードのシードＣｘ（ｉ），Ｑｘ（ｉ）を上書きして復旧するようにしてもよい。
【産業上の利用可能性】
【０１７７】
本発明は、例えば、クライアントを認証するネットワークシステムに適用可能である。
【要約】
端末装置１および認証サーバ３は、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持している。端末装置１および認証サーバ３は、通常認証モードで、ワンタイム認証子に基づく相互認証を実行する。さらに、端末装置１および認証サーバ３は、通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、ワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。【図１】
0005963382.tif 000002
【図２】
0005963382.tif 000003
【図３】
0005963382.tif 000004
【図４】
0005963382.tif 000005
【図５】
0005963382.tif 000006
【図６】
0005963382.tif 000007
【図７】
0005963382.tif 000008
【図８】
0005963382.tif 000009
【図９】
0005963382.tif 000010
【図１０】
0005963382.tif 000011
【図１１】
0005963382.tif 000012