特許第5963382号(P5963382)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社PIPSの特許一覧

<>
  • 特許5963382-ワンタイム認証システム 図000002
  • 特許5963382-ワンタイム認証システム 図000003
  • 特許5963382-ワンタイム認証システム 図000004
  • 特許5963382-ワンタイム認証システム 図000005
  • 特許5963382-ワンタイム認証システム 図000006
  • 特許5963382-ワンタイム認証システム 図000007
  • 特許5963382-ワンタイム認証システム 図000008
  • 特許5963382-ワンタイム認証システム 図000009
  • 特許5963382-ワンタイム認証システム 図000010
  • 特許5963382-ワンタイム認証システム 図000011
  • 特許5963382-ワンタイム認証システム 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】5963382
(24)【登録日】2016年7月8日
(45)【発行日】2016年8月3日
(54)【発明の名称】ワンタイム認証システム
(51)【国際特許分類】
   G06F 21/44 20130101AFI20160721BHJP
   H04L 9/32 20060101ALI20160721BHJP
【FI】
   G06F21/44 350
   H04L9/00 673A
   H04L9/00 673C
【請求項の数】5
【全頁数】24
(21)【出願番号】特願2016-502829(P2016-502829)
(86)(22)【出願日】2015年10月2日
(86)【国際出願番号】JP2015078125
【審査請求日】2016年1月21日
【早期審査対象出願】
(73)【特許権者】
【識別番号】515301111
【氏名又は名称】株式会社PIPS
(74)【代理人】
【識別番号】100114971
【弁理士】
【氏名又は名称】青木 修
(72)【発明者】
【氏名】大河 克好
【審査官】 青木 重徳
(56)【参考文献】
【文献】 特開2010−244191(JP,A)
【文献】 特開2014−212420(JP,A)
【文献】 特開2012−34292(JP,A)
【文献】 特開2005−65237(JP,A)
【文献】 中原知也,SAS-2認証方式の同期問題に関する検討,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2005年 3月 4日,第104巻, 第714号,p.83-87
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/44
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
認証サーバと、
端末装置とを備え、
前記端末装置および前記認証サーバは、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持しており、
前記端末装置および前記認証サーバは、前記通常認証モードで、前記ワンタイム認証子に基づく相互認証を実行し、
前記端末装置および前記認証サーバは、前記通常認証モードでの前記ワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、前記ワンタイム認証子に基づく相互認証を試み、前記再認証モードでの前記ワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、前記再認証用シードに基づいて前記通常認証用シードを生成し、前記通常認証モードでの前記ワンタイム認証子に基づく相互認証を復旧すること、
を特徴とするワンタイム認証システム。
【請求項2】
前記通常認証用シードは、クライアント側シードおよびサーバ側シードであり、
前記再認証用シードは、再認証クライアント側シードおよび再認証サーバ側シードであり、
前記端末装置は、前記通常認証モードにおいて、(a1)前記クライアント側シードを暗号化して前記認証サーバに送信するとともに、前記クライアント側シードおよび前記サーバ側シードからクライアント側ワンタイム認証子を生成し前記認証サーバへ送信し、(a2)前記認証サーバからサーバ側ワンタイム認証子を受信し、前記サーバ側ワンタイム認証子が正当なものであるか否かを判定し、(a3)新たに生成したシードで前記クライアント側シードを更新するとともに、前記認証サーバから受信した暗号化された前記サーバ側シードを受信して復号し、復号した前記サーバ側シードで、保持している前記サーバ側シードを更新し、
前記認証サーバは、前記通常認証モードにおいて、(b1)前記クライアント側ワンタイム認証子を受信し、前記クライアント側ワンタイム認証子が正当なものであるか否かを判定し、(b2)前記クライアント側ワンタイム認証子が正当なものである場合、前記クライアント側シードおよび前記サーバ側シードからサーバ側ワンタイム認証子を生成して前記端末装置へ送信し、(b3)新たに生成したシードで前記サーバ側シードを更新するとともに、前記端末装置から受信した暗号化された前記クライアント側シードを受信して復号し、復号した前記クライアント側シードで、保持している前記クライアント側シードを更新し、
前記端末装置は、前記通常認証モードにおいて、前記クライアント側ワンタイム認証子の送信後、前記クライアント側ワンタイム認証子に対応する前記サーバ側ワンタイム認証子に基づく前記認証サーバの認証に失敗した場合、前記再認証モードにおいて、(c1)前記再認証クライアント側シードを暗号化して前記認証サーバに送信するとともに、前記再認証クライアント側シードおよび前記再認証サーバ側シードから再認証クライアント側ワンタイム認証子を生成し前記認証サーバへ送信し、(c2)前記認証サーバから再認証サーバ側ワンタイム認証子を受信し、前記再認証サーバ側ワンタイム認証子が正当なものであるか否かを判定し、(c3)新たに生成したシードで前記再認証クライアント側シードを更新するとともに、前記認証サーバから受信した暗号化された前記再認証サーバ側シードを受信して復号し、復号した前記再認証サーバ側シードで、保持している前記再認証サーバ側シードを更新し、(c4)、前記再認証サーバ側ワンタイム認証子が正当なものであると判定した場合、前記再認証クライアント側シードおよび前記再認証サーバ側シードの少なくとも一方に基づいて前記クライアント側シードを更新し、前記再認証クライアント側シードおよび前記再認証サーバ側シードの少なくとも一方に基づいて前記サーバ側シードを更新し、
前記認証サーバは、前記再認証モードにおいて、(d1)前記再認証クライアント側ワンタイム認証子を受信し、前記再認証クライアント側ワンタイム認証子が正当なものであるか否かを判定し、(d2)前記再認証クライアント側ワンタイム認証子が正当なものである場合、前記再認証クライアント側シードおよび前記再認証サーバ側シードから再認証サーバ側ワンタイム認証子を生成して前記端末装置へ送信し、(d3)新たに生成したシードで前記再認証サーバ側シードを更新するとともに、前記端末装置から受信した暗号化された前記再認証クライアント側シードを受信して復号し、復号した前記再認証クライアント側シードで、保持している前記再認証クライアント側シードを更新し、(d4)、前記再認証クライアント側ワンタイム認証子が正当なものであると判定した場合、前記再認証クライアント側シードおよび前記再認証サーバ側シードの少なくとも一方に基づいて前記クライアント側シードを、前記端末装置で更新された前記クライアント側シードと同一となるように更新し、前記再認証クライアント側シードおよび前記再認証サーバ側シードの少なくとも一方に基づいて前記サーバ側シードを、前記端末装置で更新された前記サーバ側シードと同一となるように更新すること、
を特徴とする請求項1記載のワンタイム認証システム。
【請求項3】
前記端末装置は、前記通常認証モードにおいて、共通暗号鍵で、前記クライアント側シードを暗号化し、前記共通暗号鍵で、暗号化された前記サーバ側シードを復号し、
前記認証サーバは、前記通常認証モードにおいて、前記共通暗号鍵で、暗号化された前記クライアント側シードを復号し、前記共通暗号鍵で、前記サーバ側シードを暗号化し、
前記端末装置は、前記再認証モードにおいて、前記共通暗号鍵とは異なる再認証共通暗号鍵で、前記再認証クライアント側シードを暗号化し、前記再認証共通暗号鍵で、暗号化された前記再認証サーバ側シードを復号し、
前記認証サーバは、前記再認証モードにおいて、前記再認証共通暗号鍵で、暗号化された前記再認証クライアント側シードを復号し、前記再認証共通暗号鍵で、前記再認証サーバ側シードを暗号化し、
前記端末装置および前記認証サーバは、それぞれ、前記通常認証モードにおいて、前記クライアント側シードおよび前記サーバ側シードに基づいて、前記共通暗号鍵を更新し、前記再認証モードにおいて、前記再認証クライアント側シードおよび前記再認証サーバ側シードに基づいて、前記再認証共通暗号鍵を更新すること、
を特徴とする請求項2記載のワンタイム認証システム。
【請求項4】
前記端末装置は、前記通常認証モードにおいて、前記クライアント側ワンタイム認証子を送信する際に、通信プロトコルで通信経路上での通信エラーを検出した場合、前記サーバ側ワンタイム認証子に基づく前記認証サーバの認証に失敗したと判定せずに、前記クライアント側ワンタイム認証子を再送信し、前記クライアント側ワンタイム認証子の送信完了後に前記サーバ側ワンタイム認証子が受信されない場合、前記サーバ側ワンタイム認証子に基づく前記認証サーバの認証に失敗したと判定することを特徴とする請求項2記載のワンタイム認証システム。
【請求項5】
認証サーバとの間でワンタイム認証子に基づく相互認証を行う端末装置内のコンピュータを、認証処理部として機能させ、
前記認証処理部は、(a)通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持しており、(b)前記認証サーバとの間で、前記通常認証モードで、前記ワンタイム認証子に基づく相互認証を実行し、(c)前記通常認証モードでの前記ワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、前記認証サーバとの間で前記ワンタイム認証子に基づく相互認証を試み、前記再認証モードでの前記ワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、前記再認証用シードに基づいて前記通常認証用シードを生成し、前記通常認証モードでの前記ワンタイム認証子に基づく相互認証を復旧すること、
を特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ワンタイム認証システムに関するものである。
【背景技術】
【0002】
クライアントおよびサーバのそれぞれにおいて乱数などのシードを認証に成功するたびに更新し、次回認証時に、それらのシードからワンタイムIDを生成し、クライアントとサーバとの間で相互にワンタイム認証を行うシステムがある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−282295号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述のシステムは、(a)サーバからクライアントへのワンタイムIDの通信経路上での通信エラーに起因するワンタイムIDの不達、(b)サーバダウンに起因するシードの消失などが発生すると相互認証に失敗し、一旦、相互認証に失敗すると、その後、サーバとクライアントの両方でシードを初期化するまで相互認証ができなくなる。そのため、クライアントは、相互認証の失敗後、シードを配布され、配布されたシードでシードの初期化を行うまで、比較的長い時間、認証を受けることができなくなる。
【0005】
本発明は、上記の問題に鑑みてなされたものであり、相互認証に失敗した場合に、短時間で、相互認証可能にシードを回復するワンタイム認証システムを得ることを目的とする。
【課題を解決するための手段】
【0006】
本発明に係るワンタイム認証システムは、認証サーバと、端末装置とを備える。端末装置および認証サーバは、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持している。端末装置および認証サーバは、通常認証モードで、ワンタイム認証子に基づく相互認証を実行する。さらに、端末装置および認証サーバは、通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、ワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。
【0007】
本発明に係るコンピュータプログラムは、認証サーバとの間でワンタイム認証子に基づく相互認証を行う端末装置内のコンピュータを、認証処理部として機能させる。そして、認証処理部は、(a)通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持しており、(b)認証サーバとの間で、通常認証モードで、ワンタイム認証子に基づく相互認証を実行し、(c)通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、認証サーバとの間でワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。
【発明の効果】
【0008】
本発明によれば、相互認証に失敗した場合に、短時間で、相互認証可能にシードを回復するワンタイム認証システムが得られる。
【0009】
本発明の上記又は他の目的、特徴および優位性は、添付の図面とともに以下の詳細な説明から更に明らかになる。
【図面の簡単な説明】
【0010】
図1図1は、本発明の実施の形態に係るワンタイム認証システムの構成を示すブロック図である。
図2図2は、図1における端末装置1の構成を示すブロック図である。
図3図3は、図2に示す端末装置1において実現される処理部を示すブロック図である。
図4図4は、図1における認証サーバ3の構成を示すブロック図である。
図5図5は、図2に示す認証サーバ3において実現される処理部を示すブロック図である。
図6図6は、図1に示すシステムにおいて実行される、通常認証モードでのワンタイム認証子に基づく相互認証について説明するシーケンス図である。
図7図7は、図1に示すシステムにおいて実行される、再認証モードでのワンタイム認証子に基づく相互認証について説明するシーケンス図である。
図8図8は、実施の形態2におけるシードテーブル71の構造の一例を示す図である。
図9図9は、実施の形態2における認証子テーブル72(通常認証テーブル72a,再認証テーブル72b)の一例を示す図である。
図10図10は、実施の形態2における認証サーバ3によるデータ処理について説明するフローチャートである(1/2)。
図11図11は、実施の形態2における認証サーバ3によるデータ処理について説明するフローチャートである(2/2)。
【発明を実施するための形態】
【0011】
以下、図に基づいて本発明の実施の形態を説明する。
【0012】
実施の形態1.
【0013】
図1は、本発明の実施の形態に係るワンタイム認証システムの構成を示すブロック図である。図1に示すシステムでは、クライアントとしての端末装置1は、インターネットなどのネットワーク2に接続されており、そのネットワーク2には認証サーバ3が接続されている。
【0014】
端末装置1は、パーソナルコンピュータなどのコンピュータを内蔵した装置である。例えば、端末装置1は、ネットワーク2を介して、ネットワークサービスを享受する際に、認証サーバ3との間で相互認証を行い、相互認証が成功した後に、ネットワークサービスを享受する。
【0015】
ネットワーク2は、有線および/または無線のLAN(Local Area Network)、および/またはインターネットなどのWAN(Wide Area Network)を含んでいる。
【0016】
認証サーバ3は、所定のネットワークサービス(例えばネットバンキング、イーコマースなど)にログインする前に端末装置1の認証を行う認証サーバである。
【0017】
認証サーバ3および端末装置1は、各相互認証セッションにおいて相互認証を行う。認証サーバ3および端末装置1は、それぞれシードを生成し、相手側装置の認証に成功するたびに自己のシードおよび暗号鍵を更新していき、その自己のシードを暗号化して相互に送受し、両者のシードからワンタイム認証子を生成し、両者のシードに基づいて、相手側装置のワンタイム認証子についての認証をそれぞれ行う。なお、以下では、ワンタイム認証子に基づく認証のことを、ワンタイム認証という。
【0018】
なお、ここでは、ワンタイム認証子は、ワンタイムIDであるが、ワンタイムパスワードとしてもよい。その場合、ワンタイムパスワードとともに固定的な端末IDが使用される。
【0019】
さらに、端末装置1および認証サーバ3は、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持している。
【0020】
端末装置1および認証サーバ3は、端末装置1のワンタイム認証が必要になるたびに、通常認証モードで、ワンタイム認証子に基づく相互認証を実行する。そして、端末装置1および認証サーバ3は、通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、ワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。
【0021】
なお、図1では、端末装置1は、1台だけであるが、複数の端末装置1のそれぞれに異なるシードを保持させて、それぞれ異なるワンタイム認証子で認証を行うことも可能である。その場合、認証サーバ3は、複数の端末装置1のそれぞれとの間で独立してワンタイム認証子に基づく相互認証を行う。
【0022】
以下、上記システムにおける各装置の構成および動作について説明する。
【0023】
(1)各装置の構成
【0024】
図2は、図1における端末装置1の構成を示すブロック図である。
【0025】
図2に示すように、端末装置1は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13などを有するコンピュータを内蔵する。
【0026】
CPU11は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ROM12は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、RAM13は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶する揮発性のメモリである。
【0027】
また、インターフェイス14は、記憶装置15を接続可能なインターフェイス回路である。また、記憶装置15は、インターフェイス14に接続され、図示せぬオペレーティングシステム、ワンタイム認証プログラム31、所定サービスを享受するためのアプリケーションプログラム、通常認証モードで使用される通常認証シード32、再認証モードで使用される再認証シード33などを格納する記録媒体を有する装置である。記憶装置15としては、ハードディスクドライブ、SSD(Solid State Disk)などが使用される。
【0028】
また、インターフェイス16は、通信装置17を接続可能なインターフェイス回路である。通信装置17は、ネットワークインターフェイス、モデムなどといったネットワーク2に接続可能な装置である。
【0029】
また、インターフェイス18は、IEEE1394、USB(Universal Serial Bus)などといった周辺機器インターフェイスである。また、インターフェイス20は、入力装置21を接続可能なインターフェイス回路である。入力装置21は、キーボード、マウスなどといったユーザ操作を受け付けてそのユーザ操作に応じた信号を出力する装置である。また、画像処理回路22は、画像データを書き込まれると、そのデータに対応する画像信号を出力する回路である。この画像処理回路22には、その画像信号に基づいて画像を表示する表示装置23が接続可能である。
【0030】
CPU11、ROM12、RAM13、インターフェイス14,16,18,20および画像処理回路22は、バスやコントローラチップによって相互にデータ通信可能に接続されている。
【0031】
図3は、図2に示す端末装置1において実現される処理部を示すブロック図である。図3に示すように、端末装置1では、上述のプログラムが実行されることで、通信処理部41、認証処理部42、およびアプリケーション43が実現される。
【0032】
通信処理部41は、通信装置17を使用して、所定の通信プロトコルで認証サーバ3などとネットワーク2を介してデータ通信を行う。
【0033】
認証処理部42は、CPU11でワンタイム認証プログラム31が実行されることにより実現され、通信処理部41を使用して、認証サーバ3との間で、ワンタイム認証子に基づく相互認証を行う。そのとき、認証処理部42は、相互認証におけるクライアント側の処理を実行する。
【0034】
アプリケーション43は、通信処理部41を使用してデータ通信を実行し、所定のネットワークサービスを享受する。なお、相互認証が成功した後に、アプリケーション43に対するネットワークサービスの提供が開始される。
【0035】
図4は、図1における認証サーバ3の構成を示すブロック図である。
【0036】
図4において、CPU51は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ROM52は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、RAM53は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶するメモリである。
【0037】
また、インターフェイス54は、記憶装置55を接続可能なインターフェイス回路である。記憶装置55は、インターフェイス54に接続され、図示せぬオペレーティングシステム、ワンタイム認証プログラム61、認証に使用されるデータなどを格納する記録媒体を有する装置である。記憶装置55としては、ハードディスクドライブ、SSDなどが使用される。記憶装置55には、認証に使用されるデータとして、シードテーブル71、認証子テーブル72、および端末属性テーブル73が保持されている。

シードテーブル71は、最後の相互認証時に更新された、次回認証用シードおよび次回認証用共通暗号鍵を有する。次回認証用シードおよび次回認証用共通暗号鍵は、1または複数の端末装置1のそれぞれについて別々に保持される。
【0038】
シードテーブル71は、通常認証モードでの次回認証用シードおよび次回認証用共通暗号鍵と、再認証モードでの次回認証用シードおよび次回認証用共通暗号鍵とを備える。
【0039】
認証子テーブル72は、最後の認証時に更新された次回認証用のクライアント側ワンタイム認証子を有する。認証子テーブル72は、通常認証テーブル72aと再認証テーブル72bとを含む。通常認証テーブル72aは、通常認証モードの次回認証用のクライアント側ワンタイム認証子を有し、再認証テーブル72bは、再認証モードの次回認証用のクライアント側ワンタイム認証子を有する。次回認証用のクライアント側ワンタイム認証子は、1または複数の端末装置1のそれぞれについて別々に保持される。
【0040】
端末属性テーブル73は、各端末装置1について、ワンタイム認証子がワンタイムIDである場合、ワンタイムIDに関連付けられている固有の端末ID、およびその端末IDに関連付けられている属性情報(所有者情報など)を有するテーブルである。なお、この端末IDは、認証サーバ3において使用されるだけであって、外部へ送信されない。端末属性テーブル73は、ワンタイム認証子がワンタイムパスワードであるときに、端末装置1からワンタイム認証子とともに受信される端末IDの正当性を判定する際に参照される。
【0041】
また、インターフェイス56は、通信装置57を接続可能なインターフェイス回路である。通信装置57は、ネットワークインターフェイス、モデムなどといったネットワーク2に接続可能な装置である。
【0042】
CPU51、ROM52、RAM53、およびインターフェイス54,56は、バスやコントローラチップによって相互にデータ通信可能に接続されている。
【0043】
図5は、図2に示す認証サーバ3において実現される処理部を示すブロック図である。図5に示すように、この認証サーバ3において、通信処理部81、およびサーバ側認証処理部82が実現される。
【0044】
通信処理部81は、通信装置57を使用して、所定の通信プロトコルで端末装置1、サービスサーバ4などとネットワーク2を介してデータ通信を行う。
【0045】
サーバ側認証処理部82は、CPU51でワンタイム認証プログラム61が実行されることにより実現され、通信処理部81を使用して、1または複数の端末装置1との間でワンタイム認証子に基づく相互認証におけるサーバ側の処理を実行する。
【0046】
(2)各装置の動作
【0047】
端末装置1は、通常認証モードでのシードR(n−1),Q(n−1)および共通暗号鍵K(n−1)を保持している。また、認証サーバ3も、通常認証モードでの同一のシードR(n−1),Q(n−1)および共通暗号鍵K(n−1)を保持している。なお、nは、通常認証モードでの相互認証セッションの回数を示している。
【0048】
ここで、シードR(n−1)は、今回(n−1)の通常認証モードでの相互認証セッションにおけるクライアント側シードである。シードQ(n−1)は、今回(n−1)の通常認証モードでの相互認証セッションにおけるサーバ側シードである。共通暗号鍵K(n−1)は、今回(n−1)の通常認証モードでの相互認証セッションにおいて、通常認証モードでの次回認証用のクライアント側シードR(n)を端末装置1から認証サーバ3へ送信する際に、そのR(n)を暗号化するための共通暗号鍵である。また、共通暗号鍵K(n−1)は、今回(n−1)の通常認証モードでの相互認証セッションにおいて、通常認証モードでの次回認証用のサーバ側シードQ(n)を認証サーバ3から端末装置1へ送信する際に、そのQ(n)を暗号化するための共通暗号鍵である。
【0049】
また、端末装置1は、再認証モードでのシードRx(m−1),Qx(m−1)および共通暗号鍵Kx(m−1)を保持している。また、認証サーバ3も、再認証モードでの同一のシードRx(m−1),Qx(m−1)および共通暗号鍵Kx(m−1)を保持している。なお、mは、再認証モードでの相互認証セッションの回数を示している。
【0050】
通常認証モードでのシードR(n−1),Q(n−1)および共通暗号鍵K(n−1)は、通常認証モードでの相互認証セッションが実行され相互認証に成功するたびに更新される。なお、通常認証モードでの相互認証セッションが実行されても、再認証モードでのシードRx(m−1),Qx(m−1)および共通暗号鍵Kx(m−1)は更新されない。
【0051】
また、再認証モードでの相互認証セッションは、通常認証モードでの相互認証に失敗したときに実行され、再認証モードでのシードRx(m−1),Qx(m−1)および共通暗号鍵Kx(m−1)は、再認証モードでの相互認証セッションが実行され相互認証に成功するたびに更新される。再認証モードでの相互認証セッションにおいて相互認証に成功すると、端末装置1と認証サーバ3との間で相互にネットワーク2を介して通常認証モードでの新たなシードを送受することなく、端末装置1および認証サーバ3のそれぞれにおいて、再認証モードでの更新後のシードRx(m),Qx(m)に基づいて、通常認証モードでのシードR(n),Q(n)および共通暗号鍵K(n)が新たにセットされる。
【0052】
ここで、シードRx(m−1)は、今回(m−1)の再認証モードでの相互認証セッションにおけるクライアント側シードである。シードQx(m−1)は、今回(m−1)の再認証モードでの相互認証セッションにおけるサーバ側シードである。共通暗号鍵Kx(m−1)は、今回(m−1)の再認証モードでの相互認証セッションにおいて、再認証モードでの次回認証用のクライアント側シードRx(m)を端末装置1から認証サーバ3へ送信する際に、そのRx(m)を暗号化するための共通暗号鍵である。また、共通暗号鍵Kx(m−1)は、今回(m−1)の再認証モードでの相互認証セッションにおいて、再認証モードでの次回認証用のサーバ側シードQx(m)を認証サーバ3から端末装置1へ送信する際に、そのQx(m)を暗号化するための共通暗号鍵である。
【0053】
なお、初期状態において、通常認証モードでのシードの初期値R(0),Q(0)および共通暗号鍵の初期値K(0)がセットされた後、ただちに、通常認証モードでのワンタイム認証子に基づく相互認証を所定回数(1回以上)実行することで、通常認証モードでのシードR(i),Q(i)および共通暗号鍵K(i)が、初期値から更新される。
【0054】
また、初期状態において、再認証モードでのシードの初期値Rx(0),Qx(0)および共通暗号鍵の初期値Kx(0)がセットされた後、ただちに、再認証モードでのワンタイム認証子に基づく相互認証を所定回数(1回以上)実行することで、再認証モードでのシードRx(i),Qx(i)および共通暗号鍵Kx(i)が、初期値から更新される。この場合、再認証モードでのシードRx(i),Qx(i)に基づいて、通常認証モードでのシードR(i),Q(i)および共通暗号鍵K(i)をセットしなくてもよい。
【0055】
(2a)通常認証モードでのワンタイム認証子に基づく相互認証
【0056】
図6は、図1に示すシステムにおいて実行される、通常認証モードでのワンタイム認証子に基づく相互認証について説明するシーケンス図である。
【0057】
通常認証モードでのワンタイム認証子に基づく相互認証セッション(ステップS1)において、まず、端末装置1の認証処理部42は、乱数Rを生成し、その乱数Rを、次回認証用のクライアント側シードR(n)にセットする(ステップS21)。
【0058】
そして、認証処理部42は、今回の相互認証セッションにおいてのみ使用するクライアント側ワンタイム認証子C(n−1)を生成する(ステップS22)。
【0059】
ワンタイム認証子C(n−1)は、一方向性関数で計算される。この一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数hcである。
【0060】
ワンタイム認証子C(n−1)は、次式に従って計算される。
【0061】
C(n−1)=hc(R(n−1),Q(n−1))
【0062】
ここで、ハッシュ関数hcの第1引数には、R(n−1)が使用され、第2引数には、Q(n−1)が使用される。
【0063】
また、認証処理部42は、所定の暗号化方式に従って、共通暗号鍵K(n−1)で、R(n)を暗号化する。なお、共通暗号鍵K(n−1)での暗号化後のR(n)を、K(n−1)*R(n)と表現する。
【0064】
そして、認証処理部42は、通信処理部41を使用して、ワンタイム認証子C(n−1)およびK(n−1)*R(n)を認証サーバ3へ送信する(ステップS23)。このとき、通信処理部41は、ワンタイム認証子C(n−1)およびK(n−1)*R(n)を1つのメッセージとして送信する。
【0065】
認証サーバ3では、サーバ側認証処理部82は、通信処理部81を使用して、そのメッセージを受信し、そのメッセージからワンタイム認証子C(n−1)およびK(n−1)*R(n)を抽出し、受信したワンタイム認証子C(n−1)が、保持している通常認証モードでのクライアント側ワンタイム認証子に一致するか否かを判定する(ステップS24)。
【0066】
なお、端末装置1から認証サーバ3へのメッセージのデータフォーマット(ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置)は、通常認証モードと再認証モードとで同一である。
【0067】
また、通常認証モードでのクライアント側ワンタイム認証子と再認証モードでのクライアント側ワンタイム認証子は同一のデータフォーマット(つまり、同一データ長)を有し、暗号化後の通常認証モードでのクライアント側シードと、暗号化後の再認証モードでのクライアント側シードとは同一のデータフォーマット(つまり、同一データ長)を有するため、受信データのみからでは、通常認証モードでのワンタイム認証子か再認証モードでのワンタイム認証子かの区別がつかない。このため、サーバ側認証処理部82は、受信したワンタイム認証子が、通常認証テーブル72aに保持されているワンタイム認証子に一致するか否か、および受信したワンタイム認証子が、再認証テーブル72bに保持されているワンタイム認証子に一致するか否かを判定し、受信したワンタイム認証子が、通常認証モードでの正当なワンタイム認証子、再認証モードでの正当なワンタイム認証子、および不正なワンタイム認証子のいずれかであるかを判定する。
【0068】
したがって、受信したワンタイム認証子C(n−1)が、不正なワンタイム認証子であると判定した場合、サーバ側認証処理部82は、認証失敗と判定し、処理を終了する。
【0069】
受信したワンタイム認証子C(n−1)が、通常認証テーブル72aに保持している通常認証モードでのクライアント側ワンタイム認証子に一致した場合、サーバ側認証処理部82は、認証成功と判定し、まず、乱数Qを生成し、その乱数Qを、通常認証モードでの、次回認証用サーバ側シードQ(n)にセットする(ステップS25)。
【0070】
また、サーバ側認証処理部82は、K(n−1)*R(n)を、シードテーブル71に保持している共通暗号鍵K(n−1)で、R(n)へ復号する。そして、サーバ側認証処理部82は、サーバ側ワンタイム認証子S(n−1)を生成する(ステップS26)。
【0071】
ワンタイム認証子S1(n−1)は、一方向性関数で計算される。この一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数hsである。
【0072】
ワンタイム認証子S(n−1)は、次式に従って計算される。
【0073】
S(n−1)=hs(R(n),Q(n−1))
【0074】
ここで、ハッシュ関数hsの第1引数には、R(n)が使用され、第2引数には、Q(n−1)が使用される。なお、ハッシュ関数hsは、ハッシュ関数hcと同一の関数でもよいし、異なる関数でもよい。
【0075】
また、サーバ側認証処理部82は、所定の暗号化方式に従って、共通暗号鍵K(n−1)で、Q(n)を暗号化する。なお、共通暗号鍵K(n−1)での暗号化後のQ(n)を、K(n−1)*Q(n)と表現する。
【0076】
そして、サーバ側認証処理部82は、通信処理部81を使用して、ワンタイム認証子S(n−1)およびK(n−1)*Q(n)を端末装置1へ送信する(ステップS27)。このとき、通信処理部81は、ワンタイム認証子S(n−1)およびK(n−1)*Q(n)を1つのメッセージとして送信する。
【0077】
なお、認証サーバ3から端末装置1へのメッセージのデータフォーマット(ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置)は、通常認証モードと再認証モードとで同一である。また、通常認証モードでのサーバ側ワンタイム認証子と再認証モードでのサーバ側ワンタイム認証子は、同一のデータフォーマット(つまり、同一データ長)を有し、暗号化後の通常認証モードでのサーバ側シードと暗号化後の再認証モードでのサーバ側シードは、同一のデータフォーマット(つまり、同一データ長)を有する。
【0078】
認証サーバ3における端末装置1のワンタイム認証に成功すると、端末装置1では、ワンタイム認証子S(n−1)およびK(n−1)*Q(n)を含む上述のメッセージが受信される。端末装置1では、認証処理部42は、通信処理部41を使用して、そのメッセージを受信し、そのメッセージから、ワンタイム認証子S(n−1)およびK(n−1)*Q(n)を抽出する。そして、認証処理部42は、通常認証モードでのR(n)およびQ(n−1)に基づいて、上述の式に従って正当なワンタイム認証子S(n−1)の値を計算し、受信したワンタイム認証子S(n−1)が、計算した値に一致するか否かを判定する(ステップS28)。
【0079】
このとき、受信したワンタイム認証子S(n−1)が、計算した値に一致しない場合、認証処理部42は、認証失敗と判定し、処理を終了する。
【0080】
受信したワンタイム認証子S(n−1)が、計算した値に一致した場合、認証処理部42は、認証成功と判定する。つまり、認証処理部42は、相互認証セッション(ステップS1)における相互認証に成功したと判定する。
【0081】
相互認証セッション(ステップS1)における相互認証に成功したと判定すると、認証処理部42は、まず、K(n−1)*Q(n)を、保持している共通暗号鍵K(n−1)で、Q(n)へ復号し、この値を、通常認証モードでの次回認証用サーバ側シードにセットする。
【0082】
そして、認証処理部42は、通常認証モードでの共通暗号鍵K(n−1)を次式に従って更新する(ステップS29)。
【0083】
K(n)=hk(K(n−1),R(n),Q(n))
【0084】
ここで、hkは、一方向性関数であって、かつハッシュ関数である。
【0085】
このようにして、通常認証でのワンタイム認証子に基づく相互認証に成功した後、認証処理部42は、端末装置1において保持しているシードおよび共通暗号鍵を、R(n)およびQ(n)、並びにK(n)で更新する。
【0086】
一方、サーバ側認証処理部82は、通常認証モードでの次回のワンタイム認証時に使用するクライアント側ワンタイム認証子C(n)を、R(n)およびQ(n)から、上述の式に従って計算する。そして、サーバ側認証処理部82は、R(n)、Q(n)およびK(n)で、シードテーブル71における、端末装置1についての通常認証モードでのデータを更新し、C(n)で、通常認証テーブル72aにおける、端末装置1についてのワンタイム認証子を更新する。これにより、これらの値が、通常認証モードの次回の相互認証セッションまで保持される。
【0087】
さらに、認証サーバ3においても、ワンタイム認証子S(n−1)の送信後、サーバ側認証処理部82は、通常認証モードでの共通暗号鍵K(n−1)を上述の式に従って同様に更新する(ステップS30)。
【0088】
このようにして、通常認証モードでの相互認証セッションが実行される。通常認証モードでの相互認証に失敗しなければ、再認証モードでの相互認証セッションは実行されず、通常認証モードでの相互認証セッションが繰り返し実行される。
【0089】
(2b)再認証モードでのワンタイム認証子に基づく相互認証
【0090】
図7は、図1に示すシステムにおいて実行される、再認証モードでのワンタイム認証子に基づく相互認証について説明するシーケンス図である。
【0091】
例えば、通常認証モードにおいて、認証サーバ3のワンタイム認証子S(n−1)が送信されたが通信障害で正しく端末装置1によって受信されなかった場合、または、認証サーバ3のサーバダウンによって、端末装置1に保持されているシードと認証サーバ3に保持されているシードとが互いに一致しなくなった場合、次回の端末装置1のワンタイム認証に失敗する。
【0092】
通常認証モードにおいて、認証サーバ3における端末装置1のワンタイム認証に失敗した場合には、認証サーバ3から端末装置1へ、ワンタイム認証子を含むメッセージは送信されない。そのため、端末装置1は、このメッセージを受信しない場合には、認証サーバ3における端末装置1のワンタイム認証に失敗したと判定する。つまり、この場合、端末装置1は、認証サーバ3のワンタイム認証子S(n−1)が受信されないことに基づいて、通常認証モードでの相互認証に失敗したと判定する(ステップS41)。通常認証モードでの相互認証に失敗したと判定した場合、端末装置1は、後述のように、再認証モードの相互認証セッション(ステップS51)を実行し、端末装置1に保持されているシードと認証サーバ3に保持されているシードとを互いに一致させ、通常認証モードのシードを復旧する。
【0093】
再認証モードの相互認証セッション(ステップS51)では、まず、端末装置1の認証処理部42は、乱数Rを生成し、その乱数Rを、次回認証用のクライアント側シードRx(m)にセットする(ステップS61)。
【0094】
そして、認証処理部42は、今回の相互認証セッションにおいてのみ使用するクライアント側ワンタイム認証子Cx(m−1)を生成する(ステップS62)。
【0095】
ワンタイム認証子Cx(m−1)は、一方向性関数で計算される。この一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数hcxである。
【0096】
ワンタイム認証子Cx(m−1)は、次式に従って計算される。
【0097】
Cx(m−1)=hcx(Rx(m−1),Qx(m−1))
【0098】
ここで、ハッシュ関数hcxの第1引数には、Rx(m−1)が使用され、第2引数には、Qx(m−1)が使用される。なお、ハッシュ関数hcxは、上述のハッシュ関数hc,hsのいずれかと同一のものでもよいし、いずれとも異なるものでもよい。
【0099】
また、認証処理部42は、所定の暗号化方式に従って、共通暗号鍵Kx(m−1)で、R(m)を暗号化する。なお、共通暗号鍵Kx(m−1)での暗号化後のRx(m)を、Kx(m−1)*Rx(m)と表現する。
【0100】
そして、認証処理部42は、通信処理部41を使用して、ワンタイム認証子Cx(m−1)およびKx(m−1)*Rx(m)を認証サーバ3へ送信する(ステップS63)。このとき、通信処理部41は、ワンタイム認証子Cx(m−1)およびKx(m−1)*Rx(m)を1つのメッセージとして送信する。
【0101】
認証サーバ3では、サーバ側認証処理部82は、通信処理部81を使用して、そのメッセージを受信し、そのメッセージからワンタイム認証子Cx(m−1)およびKx(m−1)*Rx(m)を抽出する。
【0102】
サーバ側認証処理部82は、まず、受信したワンタイム認証子Cx(m−1)が、保持している通常認証モードでのクライアント側ワンタイム認証子に一致するか否かを判定する。このとき、受信したワンタイム認証子Cx(m−1)が、通常認証モードでのクライアント側ワンタイム認証子には一致しない。次に、サーバ側認証処理部82は、受信したワンタイム認証子Cx(m−1)が、保持している再認証モードでのクライアント側ワンタイム認証子に一致するか否かを判定する(ステップS64)。
【0103】
受信したワンタイム認証子Cx(m−1)が、再認証テーブル72bに保持している再認証モードでのクライアント側ワンタイム認証子に一致した場合、サーバ側認証処理部82は、認証成功と判定し、まず、乱数Qを生成し、その乱数Qを、再認証モードでの、次回認証用サーバ側シードQx(m)にセットする(ステップS65)。
【0104】
また、サーバ側認証処理部82は、Kx(m−1)*Rx(m)を、シードテーブル71に保持している共通暗号鍵Kx(m−1)で、Rx(m)へ復号する。そして、サーバ側認証処理部82は、サーバ側ワンタイム認証子Sx(m−1)を生成する(ステップS66)。
【0105】
ワンタイム認証子Sx(m−1)は、一方向性関数で計算される。この一方向性関数は、2つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数hsxである。
【0106】
ワンタイム認証子Sx(m−1)は、次式に従って計算される。
【0107】
Sx(m−1)=hsx(Rx(m),Qx(m−1))
【0108】
ここで、ハッシュ関数hsxの第1引数には、Rx(m)が使用され、第2引数には、Qx(m−1)が使用される。なお、ハッシュ関数hsxは、ハッシュ関数hc,hs,hcxのいずれかと同一の関数でもよいし、いずれとも異なる関数でもよい。
【0109】
また、サーバ側認証処理部82は、所定の暗号化方式に従って、共通暗号鍵Kx(m−1)で、Qx(m)を暗号化する。なお、共通暗号鍵Kx(m−1)での暗号化後のQx(m)を、Kx(m−1)*Q(m)と表現する。
【0110】
そして、サーバ側認証処理部82は、通信処理部81を使用して、ワンタイム認証子Sx(m−1)およびKx(m−1)*Qx(m)を端末装置1へ送信する(ステップS67)。このとき、通信処理部81は、ワンタイム認証子Sx(m−1)およびKx(m−1)*Qx(m)を1つのメッセージとして送信する。
【0111】
認証サーバ3における端末装置1のワンタイム認証に成功すると、端末装置1では、ワンタイム認証子Sx(m−1)およびKx(m−1)*Qx(m)を含む上述のメッセージが受信される。端末装置1では、認証処理部42は、通信処理部41を使用して、そのメッセージを受信し、そのメッセージから、ワンタイム認証子Sx(m−1)およびKx(m−1)*Qx(m)を抽出する。そして、認証処理部42は、通常認証モードでのRx(m)およびQx(m−1)に基づいて、上述の式に従って正当なワンタイム認証子Sx(m−1)の値を計算し、受信したワンタイム認証子Sx(m−1)が、計算した値に一致するか否かを判定する(ステップS68)。
【0112】
このとき、受信したワンタイム認証子Sx(m−1)が、計算した値に一致しない場合、認証処理部42は、認証失敗と判定し、処理を終了する。
【0113】
受信したワンタイム認証子Sx(m−1)が、計算した値に一致した場合、認証処理部42は、認証成功と判定する。つまり、認証処理部42は、相互認証セッション(ステップS51)における相互認証に成功したと判定する。
【0114】
相互認証セッション(ステップS51)における相互認証に成功したと判定すると、認証処理部42は、まず、Kx(m−1)*Qx(m)を、保持している共通暗号鍵Kx(m−1)で、Qx(m)へ復号し、この値を、再認証モードでの次回認証用サーバ側シードにセットする(ステップS69)。
【0115】
そして、認証処理部42は、再認証モードでの共通暗号鍵Kx(m−1)を次式に従って更新する(ステップS70)。
【0116】
Kx(m)=hkx(Kx(m−1),Rx(m),Qx(m))
【0117】
ここで、hkxは、一方向性関数であって、かつハッシュ関数である。
【0118】
このようにして、再認証でのワンタイム認証子に基づく相互認証に成功した後、認証処理部42は、端末装置1において保持しているシードおよび共通暗号鍵を、Rx(m)およびQx(m)、並びにKx(m)で更新する。
【0119】
一方、サーバ側認証処理部82は、再認証モードでの次回のワンタイム認証時に使用するクライアント側ワンタイム認証子Cx(m)を、Rx(m)およびQx(m)から、上述の式に従って計算する。そして、サーバ側認証処理部82は、Rx(m)、Qx(m)およびKx(m)で、シードテーブル71における、端末装置1についての再認証モードでのデータを更新し、Cx(m)で、再認証テーブル72bにおける、端末装置1についてのワンタイム認証子を更新する(ステップS71)。これにより、これらの値が、再認証モードの次回の相互認証セッションまで保持される。
【0120】
また、認証サーバ3においても、ワンタイム認証子Sx(m−1)の送信後、サーバ側認証処理部82は、再認証モードでの共通暗号鍵Kx(m−1)を上述の式に従って同様に更新する(ステップS72)。
【0121】
また、端末装置1では、認証処理部42は、再認証モードでの更新後のシードRx(m),Qx(m)から、通常認証モードでの次回認証用のシードR(n),Q(n)および共通暗号鍵K(n)を生成し、セットする(ステップS73)。
【0122】
例えば、再認証モードでの更新後のシードQx(m)が、通常認証モードでの次回認証用のシードR(n)とされ、再認証モードでの更新後のシードRx(m)が、通常認証モードでの次回認証用のシードQ(n)とされる。あるいは、所定の関数で、シードRx(m),Qx(m)から、シードR(n),Q(n)を生成するようにしてもよい。
【0123】
また、通常認証モードでの次回認証用の共通暗号鍵K(n)は、例えば次式のように、シードR(n),Q(n)および共通暗号鍵Kx(m)またはKx(m−1)から得られる。
【0124】
K(n)=hx(R(n),Q(n),Kx(m))
【0125】
または、K(n)=hx(R(n),Q(n),Kx(m−1))
【0126】
ここで、hxは、ハッシュ関数である。
【0127】
一方、認証サーバ3では、サーバ側認証処理部82は、認証処理部42と同様にして、再認証モードでの更新後のシードRx(m),Qx(m)から、通常認証モードでの次回認証用のシードR(n),Q(n)および共通暗号鍵K(n)を生成し、シードテーブル71にセットする(ステップS74)。さらに、サーバ側認証処理部82は、これらのシードR(n),Q(n)から次回認証用のワンタイム認証子C(n)を生成し、通常認証テーブル72aにセットする。
【0128】
以上のように、上記実施の形態1によれば、端末装置1および認証サーバ3は、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持している。端末装置1および認証サーバ3は、通常認証モードで、ワンタイム認証子に基づく相互認証を実行する。さらに、端末装置1および認証サーバ3は、通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、ワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。
【0129】
これにより、通常認証モードでの相互認証に失敗した場合に、再認証モードで相互認証を行うことで、短時間で、相互認証可能に、通常認証モードのシードが回復される。
【0130】
実施の形態2.
【0131】
本発明の実施の形態2では、実施の形態1における認証サーバ3内のデータ構造およびそのデータ構造に沿ったデータ処理の一例について説明する。なお、システムの基本的な構成および動作は、実施の形態1と同様であるので、その説明は省略する。なお、この実施の形態2において、ワンタイム認証子はワンタイムIDである。
【0132】
まず、データ構造について説明する。
【0133】
実施の形態2では、認証サーバ3において、端末装置1と同様の、1または複数の端末装置のそれぞれに対して固有の管理番号(端末ID)が割り当てられ、その管理番号に関連付けて、(a)通常認証モードでの次回認証用クライアント側ワンタイム認証子C(n)、(b)再認証モードでの次回認証用クライアント側ワンタイム認証子Cx(m)、(c)通常認証モードでの現時点(n−1)のシードR(n−1),Q(n−1)および共通暗号鍵K(n−1)並びに次回認証用のシードR(n),Q(n)および共通暗号鍵K(n)、並びに(d)再認証モードでの現時点(n−1)のシードRx(m−1),Qx(m−1)および共通暗号鍵Kx(m−1)並びに次回認証用のシードRx(m),Qx(m)および共通暗号鍵Kx(m)が保持される。
【0134】
つまり、通常認証テーブル72aにおいて、管理番号に関連付けて、(a)次回認証用クライアント側ワンタイム認証子C(n)が保持される。また、再認証テーブル72bにおいて、管理番号に関連付けて、(b)次回認証用クライアント側ワンタイム認証子Cx(m)が保持される。また、シードテーブル71において、管理番号に関連付けて、(c)通常認証モードでの現時点(n−1)のシードR(n−1),Q(n−1)および共通暗号鍵K(n−1)並びに次回認証用のシードR(n),Q(n)および共通暗号鍵K(n)、並びに(d)再認証モードでの現時点(m−1)のシードRx(m−1),Qx(m−1)および共通暗号鍵Kx(m−1)並びに次回認証用のシードRx(m),Qx(m)および共通暗号鍵Kx(m)が保持される。
【0135】
図8は、実施の形態2におけるシードテーブル71の構造の一例を示す図である。図9は、実施の形態2における認証子テーブル72(通常認証テーブル72a,再認証テーブル72b)の一例を示す図である。
【0136】
図8における通常認証アドレスは、通常認証テーブル72a内で、当該通常認証アドレスに関連付けられている管理番号と同一の管理番号を有するレコードの位置を示すデータである。同様に、図8における再認証アドレスは、再認証テーブル72b内で、当該再認証アドレスに関連付けられている管理番号と同一の管理番号を有するレコードの位置を示すデータである。
【0137】
また、図9において、サーバ側認証処理部82により、通常認証テーブル72a内のレコード(ワンタイム認証子と管理番号の組)は、ワンタイム認証子の値について昇順にソートされる。同様に、再認証テーブル72b内のレコード(ワンタイム認証子と管理番号の組)は、ワンタイム認証子の値について昇順にソートされる。これにより、ワンタイム認証時に迅速に、クライアントから受信したワンタイム認証子がテーブル72a,72bに登録されているか否かを判定することができる。
【0138】
なお、シードテーブル71、通常認証テーブル72a、および再認証テーブル72bは、予め、所定数(つまり、端末装置の数)のレコードを有しており、レコード内の管理番号以外のフィールドには初期値がセットされる。
【0139】
次に、データ処理について説明する。
【0140】
図10および図11は、実施の形態2における認証サーバ3によるデータ処理について説明するフローチャートである。
【0141】
認証サーバ3では、サーバ側認証処理部82は、端末装置1から、ワンタイム認証子C(通常認証モードでのワンタイム認証子または再認証モードでのワンタイム認証子)を含むメッセージを受信すると、そのワンタイム認証子Cが通常認証テーブル72aに登録されているクライアント側ワンタイム認証子C(n−1)のいずれかであるか否かを判定する(ステップS101)。
【0142】
受信したワンタイム認証子Cが通常認証テーブル72aに登録されているクライアント側ワンタイム認証子C(n−1)のいずれかである場合、サーバ側認証処理部82は、通常認証テーブル72aにおいて、受信したワンタイム認証子Cに関連付けられている管理番号を特定する(ステップS102)。この場合、通常認証モードでのワンタイム認証が実行される。
【0143】
サーバ側認証処理部82は、特定した管理番号に関連付けられているQ(n−1)およびK(n−1)をシードテーブル71から読み出す(ステップS103)。
【0144】
そして、サーバ側認証処理部82は、受信したK(n−1)*R(n)からR(n)を、読み出したK(n−1)で復号し、そのR(n)を、その管理番号に関連付けてシードテーブル71に書き込む(ステップS104)。
【0145】
次に、サーバ側認証処理部82は、次回認証用サーバ側シードの生成を行う。まず、サーバ側認証処理部82は、乱数Qを生成し、この乱数Qを次回認証用サーバ側シードに使用した場合に、次回認証用のクライアント側ワンタイム認証子が、別の端末装置1のクライアント側ワンタイム認証子のいずれかに一致するか否かを判定する(ステップS106)。つまり、生成した乱数Qを使用した場合のクライアント側ワンタイム認証子の一意性(つまり、同値の別のワンタイム認証子が存在しないこと)が確保されるか否かが判定される。
【0146】
このとき、サーバ側認証処理部82は、次式に従って、この乱数Qを次回認証用サーバ側シードに使用した場合の次回認証用クライアント側ワンタイム認証子X1を計算し、このワンタイム認証子X1が通常認証テーブル72aまたは再認証テーブル72bに登録されているか否かを判定する。
【0147】
X1=hc(R(n),Q)
【0148】
そして、生成した乱数Qで一意性が確保されないと判定した場合、サーバ側認証処理部82は、一意性が確保されるまで、乱数Qを再生成する。
【0149】
一方、生成した乱数Qでは一意性が確保されると判定した場合、サーバ側認証処理部82は、乱数Qを、次回認証用サーバ側シードQ(n)にセットし、そのシードQ(n)を、その管理番号に関連付けてシードテーブル71に書き込む(ステップS107)。
【0150】
そして、サーバ側認証処理部82は、サーバ側ワンタイム認証子S(n−1)および暗号化後の次回認証用サーバ側シードK(n−1)*Q(n)を生成し、端末装置1へ送信する(ステップS108)。
【0151】
また、サーバ側認証処理部82は、ステップS106での判定時に計算したX1を、次回認証用クライアント側ワンタイム識別子C(n)とし、そのC(n)で、通常認証テーブル72aにおいてその管理番号に関連付けられているワンタイム識別子を更新する(ステップS109)。このとき、サーバ側認証処理部82は、その管理番号に関連付けられている通常認証アドレスをシードテーブル71から読み出し、その通常認証アドレスで、通常認証テーブル72aにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム識別子を更新する。
【0152】
その後、サーバ側認証処理部82は、通常認証テーブル72a内のレコードを、ワンタイム識別子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル71においてそのレコードの管理番号に関連付けられている通常認証アドレスを更新する(ステップS110)。
【0153】
そして、サーバ側認証処理部82は、次回認証用共通暗号鍵K(n)を生成し、その管理番号に関連付けてシードテーブル71に書き込む(ステップS111)。
【0154】
さらに、サーバ側認証処理部82は、シードテーブル71において、その管理番号の次回認証用のシードおよび共通暗号鍵R(n),Q(n),K(n)で、今回認証用のシードおよび共通暗号鍵R(n−1),Q(n−1),K(n−1)を更新する(ステップS112)。
【0155】
このようにして、通常認証モードでのワンタイム認証についてのデータ処理が実行される。
【0156】
一方、ステップS101において、受信したワンタイム認証子Cが通常認証テーブル72aに登録されていないと判定した場合、サーバ側認証処理部82は、受信したワンタイム認証子Cが、再認証テーブル72bに登録されているクライアント側ワンタイム認証子Cx(m−1)のいずれかであるか否かを判定する(ステップS121)。
【0157】
受信したワンタイム認証子Cが再認証テーブル72bに登録されているクライアント側ワンタイム認証子Cx(m−1)のいずれかである場合、サーバ側認証処理部82は、再認証テーブル72bにおいて、受信したワンタイム認証子Cに関連付けられている管理番号を特定する(ステップS122)。この場合、再認証モードでのワンタイム認証が実行される。
【0158】
サーバ側認証処理部82は、特定した管理番号に関連付けられているQx(m−1)およびKx(m−1)をシードテーブル71から読み出す(ステップS123)。
【0159】
そして、サーバ側認証処理部82は、受信したKx(m−1)*Rx(m)からRx(m)を、読み出したKx(m−1)で復号し、そのRx(m)を、その管理番号に関連付けてシードテーブル71に書き込む(ステップS124)。
【0160】
次に、サーバ側認証処理部82は、次回認証用サーバ側シードの生成を行う。まず、サーバ側認証処理部82は、乱数Qを生成し、この乱数Qを次回認証用サーバ側シードに使用した場合に、次回認証用のクライアント側ワンタイム認証子が、通常認証モードまたは再認証モードでの別のクライアント側ワンタイム認証子のいずれかに一致するか否かを判定する(ステップS126)。つまり、生成した乱数Qを使用した場合のクライアント側ワンタイム認証子の一意性(つまり、同値の別のワンタイム認証子が存在しないこと)が確保されるか否かが判定される。
【0161】
このとき、サーバ側認証処理部82は、次式に従って、この乱数Qを次回認証用サーバ側シードに使用した場合の次回認証用のクライアント側ワンタイム認証子X2を計算し、これらのワンタイム認証子X2が通常認証テーブル72aまたは再認証テーブル72bに登録されているか否かを判定する。
【0162】
X2=hcx(Rx(m),Q)
【0163】
そして、生成した乱数Qでは一意性が確保されないと判定した場合、サーバ側認証処理部82は、一意性が確保されるまで、乱数Qを再生成する。
【0164】
一方、生成した乱数Qでは一意性が確保されると判定した場合、サーバ側認証処理部82は、乱数Qを、次回認証用サーバ側シードQx(m)にセットし、そのシードQx(m)を、その管理番号に関連付けてシードテーブル71に書き込む(ステップS127)。
【0165】
そして、サーバ側認証処理部82は、サーバ側ワンタイム認証子Sx(m−1)および暗号化後の次回認証用サーバ側シードKx(m−1)*Qx(m)を生成し、端末装置1へ送信する(ステップS128)。
【0166】
また、サーバ側認証処理部82は、ステップS126での判定時に計算したX2を、次回認証用クライアント側ワンタイム識別子Cx(m)とし、そのCx(m)で、再認証テーブル72bにおいてその管理番号に関連付けられているワンタイム識別子を更新する(ステップS129)。このとき、サーバ側認証処理部82は、その管理番号に関連付けられている再認証アドレスをシードテーブル71から読み出し、その再認証アドレスで、再認証テーブル72bにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム識別子を更新する。
【0167】
その後、サーバ側認証処理部82は、再認証テーブル72b内のレコードを、ワンタイム識別子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル71においてそのレコードの管理番号に関連付けられている再認証アドレスを更新する(ステップS130)。
【0168】
そして、サーバ側認証処理部82は、次回認証用共通暗号鍵Kx(m)を生成し、その管理番号に関連付けてシードテーブル71に書き込む(ステップS131)。
【0169】
さらに、サーバ側認証処理部82は、シードテーブル71において、その管理番号の次回認証用のシードおよび共通暗号鍵Rx(m),Qx(m),Kx(m)で、今回認証用のシードおよび共通暗号鍵Rx(m−1),Qx(m−1),Kx(m−1)を更新する(ステップS132)。
【0170】
そして、サーバ側認証処理部82は、再認証モードのシードおよび共通暗号鍵Rx(m),Qx(m),Kx(m)から、通常認証モードでの次回認証用のシードおよび共通暗号鍵R(n),Q(n),K(n)を生成し、そのシードおよび共通暗号鍵R(n),Q(n),K(n)を、その管理番号に関連付けてシードテーブル71に書き込む(ステップS133)。
【0171】
このようにして、再認証モードでのワンタイム認証についてのデータ処理が実行される。
【0172】
以上のように、上記実施の形態2によれば、管理番号で複数の端末装置1を管理し、端末装置1についてそれぞれ独立してワンタイム認証を行うことができる。
【0173】
なお、上述の実施の形態に対する様々な変更および修正については、当業者には明らかである。そのような変更および修正は、その主題の趣旨および範囲から離れることなく、かつ、意図された利点を弱めることなく行われてもよい。つまり、そのような変更および修正が請求の範囲に含まれることを意図している。
【0174】
例えば、上記実施の形態1,2において、再認証モードでの相互認証で通常認証モードでの相互認証のシードを復旧したようにして、再認証モードでの相互認証に失敗したときに、再々認証モードでの相互認証で再認証モードでの相互認証のシードを復旧するようにしてもよい。
【0175】
また、上記実施の形態1,2において、認証サーバ3において、サーバ側認証処理部82は、認証サーバ3の起動時に、シードテーブル71および認証子テーブル72を記憶装置55からRAM53へ読み出し、ワンタイム認証子に基づく相互認証を、RAM53上のシードテーブル71および認証子テーブル72に基づいて実行し、認証サーバ3のシャットダウン時に、RAM53上のシードテーブル71および認証子テーブル72で、記憶装置55上のシードテーブル71および認証子テーブル72を更新するようにしてもよい。
【0176】
また、上記実施の形態1,2において、認証サーバ3のサーバ側認証処理部82は、バックアップのために、シードテーブル71における再認証モードのシードCx(i),Qx(i)を外部の不揮発性記憶装置に別途格納しておき、認証サーバ3がサーバダウン後に復旧した場合、その外部の不揮発性記憶装置に格納されているシードCx(i),Qx(i)で、記憶装置55内のシードテーブル71における再認証モードのシードCx(i),Qx(i)を上書きして復旧するようにしてもよい。
【産業上の利用可能性】
【0177】
本発明は、例えば、クライアントを認証するネットワークシステムに適用可能である。
【要約】
端末装置1および認証サーバ3は、それぞれ、通常認証モードにおいてワンタイム認証子の生成および検証に使用するための通常認証用シードと、再認証モードにおいてワンタイム認証子の生成および検証に使用するための再認証用シードとを保持している。端末装置1および認証サーバ3は、通常認証モードで、ワンタイム認証子に基づく相互認証を実行する。さらに、端末装置1および認証サーバ3は、通常認証モードでのワンタイム認証子に基づく相互認証に失敗した場合、再認証モードで、ワンタイム認証子に基づく相互認証を試み、再認証モードでのワンタイム認証子に基づく相互認証に成功した場合、それぞれにおいて、再認証用シードに基づいて通常認証用シードを生成し、通常認証モードでのワンタイム認証子に基づく相互認証を復旧する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11