(57)【要約】【課題】通常認証に失敗した場合に、再認証を行い、該再認証に成功すると、次回通常認証用シードが設定されるワンタイム相互認証システムを提供すること。【解決手段】通常認証に失敗した場合に、クライアント側装置は、再認証用シードに基づいて、再認証クライアント側ワンタイム認証子ＸＣ１（ｍ−１）および通常認証と再認証の次回認証用クライアント側シードを生成し、サーバ装置へ送信する。サーバ装置が、再認証クライアント側ワンタイム認証子の認証に成功すると、サーバ装置は、再認証サーバ側ワンタイム認証子ＸＳ１（ｍ−１）および通常認証と再認証の次回認証用サーバ側シードを生成し、サーバ装置へ送信する。クライアント側装置において、再認証サーバ側ワンタイム認証子の認証に成功すれば、クライアント側装置とサーバ装置の双方において、次回通常認証シードおよび次回再認証用シードが設定済みの状態となる。【選択図】図１３
2018037876.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置と、
クライアント装置とを備え、
前記サーバ装置および前記クライアント装置は、それぞれ通常認証シードおよび再認証シードからなる認証シードを生成し、前記認証シードを暗号化して相互に送信し、前記認証シードからワンタイム認証子を生成して送信し、前記サーバ装置により生成された前記認証シードと前記クライアント装置により生成された前記認証シードとに基づいて互いにワンタイム認証子についての認証を行い、前記認証に成功するたびに次回認証用シードで前記認証シードを更新して行き保持し、
前記クライアント装置は、通常認証またはヘルスチェック認証において、前記認証シードの前記通常認証シードを読み出し、読み出したシードに基づいてワンタイム認証子を生成して前記サーバ装置へ送信し、前記サーバ装置へ送信した前記ワンタイム認証子および前記サーバ装置から受信した前記ワンタイム認証子についての認証に成功すると、前記通常認証またはヘルスチェック認証の前記次回認証用シードを更新し、前記ワンタイム認証子についての認証に失敗すると、再認証において、前記認証シードの前記再認証用シードを読み出し、読み出した前記再認証用シードに基づいてワンタイム認証子を生成して前記サーバ装置へ送信し、前記サーバ装置へ送信した前記ワンタイム認証子および前記サーバ装置から受信した前記ワンタイム認証子についての認証に成功すると、前記再認証の前記次回認証用シードを更新し、前記通常認証の前記次回認証用シードを更新し、
前記サーバ装置は、通常認証またはヘルスチェック認証において、前記クライアント装置より受信した前記ワンタイム認証子についての認証に成功すると、前記通常認証の前記次回認証用シードを更新し、次回の通常認証またはヘルスチェック認証での認証時まで保持し、前記再認証において、前記クライアント装置より受信した前記ワンタイム認証子についての認証に成功すると、前記再認証の前記次回認証用シードを更新し、次回の再認証での認証時まで保持し、前記通常認証用シードを生成して前記通常認証の前記シードを更新し、次回の通常認証まで保持すること、
を特徴とするワンタイム認証システム。
【請求項２】
記憶装置および前記サーバ装置が、前記認証シードとして、通常認証クライアント側シード、通常認証サーバ側シード、再認証クライアント側シードおよび再認証サーバ側シードを保持し、
前記クライアント装置は、
（ａ１）前記記憶装置から前記通常認証クライアント側シード、前記通常認証サーバ側シード、前記再認証クライアント側シードおよび前記再認証サーバ側シードを読み出し、
（ａ２）前記通常認証クライアント側シードおよび前記通常認証サーバ側シードから、通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子を生成し、
（ａ３）次回認証用通常認証クライアント側シードを生成し、
（ａ４）前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子、および暗号化後の前記次回認証用通常認証クライアント側シードを前記サーバ装置へ送信し、
（ａ５）前記サーバ装置から通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子、および暗号化後の次回認証用通常認証サーバ側シードを受信し、
（ａ６）前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子についての認証に成功すると、前記次回認証用通常認証クライアント側シードおよび前記次回認証用通常認証サーバ側シードを更新し、
（ａ７）前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子について認証に失敗すると、前記再認証クライアント側シードおよび前記再認証サーバ側シードから再認証クライアント側ワンタイム認証子を生成し、
（ａ８）次回認証用再認証クライアント側シードおよび次回認証用通常認証クライアント側シードを生成し、
（ａ９）前記再認証クライアント側ワンタイム認証子、暗号化後の前記次回認証用再認証クライアント側シードおよび暗号化後の前記次回認証用通常認証クライアント側シードを前記サーバ装置へ送信し、
（ａ１０）前記サーバ装置から再認証サーバ側ワンタイム認証子、暗号化後の次回認証用再認証サーバ側シードおよび暗号化後の次回認証用通常認証サーバ側シードを受信し、
（ａ１１）前記再認証サーバ側ワンタイム認証子について認証に成功すると、前記次回認証用再認証クライアント側シード、前記次回認証用再認証サーバ側シード、前記次回認証用通常認証クライアント側シードおよび前記次回認証用通常認証サーバ側シードを更新し、
前記サーバ装置は、
（ｂ１）前記クライアント装置から前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子および暗号化後の前記次回認証用通常認証クライアント側シードを受信し、
（ｂ２）前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子について認証に成功すると、次回認証用通常認証サーバ側シードを生成し、
（ｂ３）前記通常認証クライアント側シードおよび通常認証サーバ側シードから通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子を生成し、
（ｂ４）前記クライアント装置へ前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子および暗号化後の前記次回認証用通常認証サーバ側シードを送信し、
（ｂ５）前記クライアント装置から前記再認証クライアント側ワンタイム認証子、暗号化後の前記次回認証用再認証クライアント側シードおよび暗号化後の前記次回認証用通常認証初期値クライアント側シードを受信し、
（ｂ６）前記再認証クライアント側ワンタイム認証子について認証に成功すると、次回認証用再認証サーバ側シードおよび次回認証用通常認証初期値サーバ側シードを生成し、
（ｂ７）前記再認証クライアント側シードおよび再認証サーバ側シードから再認証サーバ側ワンタイム認証子を生成し、
（ｂ８）前記クライアント装置へ前記再認証サーバ側ワンタイム認証子、暗号化後の前記次回認証用再認証サーバ側シードおよび暗号化後の前記次回認証用通常認証初期値サーバ側シードを送信すること、
を特徴とする請求項１記載のワンタイム認証システム。
【請求項３】
前記通常認証クライアント側ワンタイム認証子、ヘルスチェック認証クライアント側ワンタイム認証子および前記再認証クライアント側ワンタイム認証子は、同一の一方向性関数で計算され、
前記一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数であって、
前記通常認証クライアント側ワンタイム認証子およびヘルスチェック認証クライアント側ワンタイム認証子の場合、３つの引数は、前記通常認証クライアント隠蔽固定値乱数、前記通常認証クライアント側シード１、および前記通常認証サーバ側シード２であり、
前記再認証クライアント側ワンタイム認証子の場合、３つの引数は、前記再認証クライアント隠蔽固定値乱数、前記再認証クライアント側シード１、および前記再認証サーバ側シード２であること、
を特徴とする請求項２記載のワンタイム認証システム。
【請求項４】
前記通常認証サーバ側ワンタイム認証子、ヘルスチェック認証サーバ側ワンタイム認証子および再認証サーバ側ワンタイム認証子は、同一の一方向性関数で計算され、
前記一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数であって、
前記通常認証サーバ側ワンタイム認証子およびヘルスチェック認証サーバ側ワンタイム認証子の場合、３つの引数は、前記通常認証サーバ隠蔽固定値乱数、前記通常認証サーバ側シード１、および前記通常認証クライアント側シード２であり、
前記再認証サーバ側ワンタイム認証子の場合、３つの引数は、前記再認証サーバ隠蔽固定値乱数、前記再認証サーバ側シード１、および前記再認証クライアント側シード２であること、
を特徴とする請求項２または請求項３記載のワンタイム認証システム。
【請求項５】
前記クライアント装置は、前記次回認証用通常認証クライアント側シード、前記次回認証用通常認証サーバ側シード、前記次回認証用再認証クライアント側シードおよび前記次回認証用再認証サーバ側シードを前記記憶装置に書き込むまでメモリに保持し、前記次回認証用通常認証クライアント側シード、前記次回認証用通常認証サーバ側シード、前記次回認証用再認証クライアント側シードおよび前記次回認証用再認証サーバ側シードを、前記記憶装置に書き込んだ後、前記メモリから消去することを特徴とする請求項２記載のワンタイム認証システム。
【請求項６】
前記クライアント装置および前記サーバ装置は、通常認証共通暗号鍵および再認証共通暗号鍵を保持し、
前記クライアント装置は、前記通常認証共通暗号鍵を読み出し、前記通常認証共通暗号鍵で、前記次回認証用通常認証クライアント側シードを暗号化し、前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子についての認証に成功すると、前記通常認証共通暗号鍵を更新し、
前記クライアント装置は、前記再認証共通暗号鍵を読み出し、前記再認証共通暗号鍵で、前記次回認証用再認証クライアント側シードを暗号化し、前記再認証サーバ側ワンタイム認証子についての認証に成功すると、前記再認証共通暗号鍵および通常認証共通暗号鍵を更新し、
前記サーバ装置は、前記通常認証共通暗号鍵で、前記次回認証用通常認証サーバ側シードを暗号化し、前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子についての認証に成功すると、前記通常認証共通暗号鍵を更新し、更新後の前記通常認証共通暗号鍵を次回の通常認証または次回のヘルスチェック認証での認証時まで保持し、前記再認証共通暗号鍵で、前記次回認証用再認証サーバ側シードを暗号化し、前記再認証クライアント側ワンタイム認証子についての認証に成功すると、前記再認証共通暗号鍵および通常認証共通暗号鍵を更新し、更新後の前記再認証共通暗号鍵および通常認証共通暗号鍵を次回の再認証での認証時または通常認証までの認証時まで保持すること、
を特徴とする請求項２記載のワンタイム認証システム。
【請求項７】
前記クライアント装置は、前記更新後の通常認証共通暗号鍵および前記更新後の再認証暗号鍵を前記記憶装置に書き込むまでメモリに保持し、前記更新後の通常認証共通暗号鍵および前記更新後の再認証暗号鍵を、前記記憶装置に書き込んだ後、前記メモリから消去することを特徴とする請求項６記載のワンタイム認証システム。
【請求項８】
記憶装置および前記サーバ装置が、前記認証シードとして、通常認証クライアント側シード、通常認証サーバ側シード、再認証クライアント側シードおよび再認証サーバ側シードを保持し、
前記クライアント装置は、  
（ａ１）前記記憶装置から前記通常認証クライアント側シード、前記通常認証サーバ側シード、前記再認証クライアント側シードおよび前記再認証サーバ側シードを読み出し、
（ａ２）前記通常認証クライアント側シードおよび前記通常認証サーバ側シードから通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子を生成し、
（ａ３）前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子を前記サーバ装置へ送信し、
（ａ４）前記サーバ装置から通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子、暗号化後の次回認証用通常認証サーバ側シードおよび次回認証用通常認証クライアント側シードを受信し、
（ａ５）前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子についての認証に成功すると、前記次回認証用通常認証クライアント側シードおよび前記次回認証用通常認証サーバ側シードを更新し、
（ａ６）前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子について認証に失敗すると、前記再認証クライアント側シードおよび前記再認証サーバ側シードから再認証クライアント側ワンタイム認証子を生成し、
（ａ７）前記再認証クライアント側ワンタイム認証子を前記サーバ装置へ送信し、
（ａ８）前記サーバ装置から再認証サーバ側ワンタイム認証子、暗号化後の次回認証用再認証サーバ側シード、暗号化後の次回認証用通常認証初期値サーバ側シード、暗号化後の次回認証用再認証クライアント側シードおよび暗号化後の次回認証用通常認証初期値クライアント側シードを受信し、
（ａ９）前記再認証サーバ側ワンタイム認証子について認証に成功すると、前記次回認証用再認証クライアント側シード、前記次回認証用再認証サーバ側シード、前記次回認証用通常認証クライアント側シードおよび前記次回認証用通常認証サーバ側シードを更新し、
前記サーバ装置は、
（ｂ１）前記クライアント装置から前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子を受信し、
（ｂ２）前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子について認証に成功すると、次回認証用通常認証サーバ側シードおよび次回認証用通常認証クライアント側シードを生成し、
（ｂ３）前記通常認証クライアント側シードおよび通常認証サーバ側シードから通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子を生成し、
（ｂ４）前記クライアント装置へ前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子、暗号化後の前記次回認証用通常認証サーバ側シードおよび暗号化後の次回認証用通常認証クライアント側シードを送信し、
（ｂ５）前記クライアント装置から前記再認証クライアント側ワンタイム認証子を受信し、
（ｂ６）前記再認証クライアント側ワンタイム認証子について認証に成功すると、次回認証用再認証サーバ側シード、次回認証用通常認証初期値サーバ側シード、次回認証用再認証クライアント側シードおよび次回認証用通常認証初期値クライアント側シードを生成し、
（ｂ７）前記再認証クライアント側シードおよび再認証サーバ側シードから再認証サーバ側ワンタイム認証子を生成し、
（ｂ８）前記クライアント装置へ前記再認証サーバ側ワンタイム認証子、暗号化後の前記次回認証用再認証サーバ側シード、暗号化後の前記次回認証用通常認証初期値サーバ側シード、暗号化後の前記次回認証用再認証クライアント側シードおよび暗号化後の前記次回認証用通常認証初期値クライアント側シードを送信すること、
を特徴とする請求項１記載のワンタイム認証システム。
【請求項９】
サーバ装置とのワンタイム相互認証に使用されるクライアント装置であって、
前記サーバ装置および前記クライアント装置は、それぞれ通常認証シードおよび再認証シードからなる認証シードを生成し、前記認証シードを暗号化して相互に送信し、前記認証シードからワンタイム認証子を生成して送信し、前記サーバ装置により生成された前記認証シードと前記クライアント装置により生成された前記認証シードとに基づいて互いにワンタイム認証子についての認証を行い、前記認証に成功するたびに次回認証用シードで前記認証シードを更新して行き保持し、
通常認証またはヘルスチェック認証において、前記認証シードの前記通常認証シードを読み出し、読み出したシードに基づいてワンタイム認証子を生成して前記サーバ装置へ送信し、前記サーバ装置へ送信した前記ワンタイム認証子および前記サーバ装置から受信した前記ワンタイム認証子についての認証に成功すると、前記通常認証またはヘルスチェック認証の前記次回認証用シードを更新し、前記ワンタイム認証子についての認証に失敗すると、再認証において、前記認証シードの前記再認証用シードを読み出し、読み出した前記再認証用シードに基づいてワンタイム認証子を生成して前記サーバ装置へ送信し、前記サーバ装置へ送信した前記ワンタイム認証子および前記サーバ装置から受信した前記ワンタイム認証子についての認証に成功すると、前記再認証の前記次回認証用シードを更新し、前記通常認証の前記次回認証用シードを更新すること、
を特徴とするクライアント装置。
【請求項１０】
クライアント装置とのワンタイム相互認証に使用されるサーバ装置であって、
前記サーバ装置および前記クライアント装置は、それぞれ通常認証シードおよび再認証シードからなる認証シードを生成し、前記認証シードを暗号化して相互に送信し、前記認証シードからワンタイム認証子を生成して送信し、前記サーバ装置により生成された前記認証シードと前記クライアント装置により生成された前記認証シードとに基づいて互いにワンタイム認証子についての認証を行い、前記認証に成功するたびに次回認証用シードで前記認証シードを更新して行き保持し、
通常認証またはヘルスチェック認証において、前記クライアント装置より受信した前記ワンタイム認証子についての認証に成功すると、前記通常認証の前記次回認証用シードを更新し、次回の通常認証またはヘルスチェック認証での認証時まで保持し、前記再認証において、前記クライアント装置より受信した前記ワンタイム認証子についての認証に成功すると、前記再認証の前記次回認証用シードを更新し、次回の再認証での認証時まで保持し、前記通常認証用シードを生成して前記通常認証の前記シードを更新し、次回の通常認証まで保持すること、
を特徴とするサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワンタイム認証システムに関するものである。
【背景技術】
【０００２】
クライアントおよびサーバのそれぞれにおいて乱数などのシードを認証に成功するたびに更新し、次回認証時に、それらのシードからワンタイムＩＤを生成し、クライアントとサーバとの間で相互に認証を行うシステムがある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−０３４２９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のようなシステムにおいて、クライアント認証子とサーバ認証子の生成要素のサーバ乱数が重複する。（具体的には、Ｑ１（ｎ−１）が重複している。）したがって、クライアント認証子とサーバ認証子よりクライアント今回認証用乱数とクライアント次回認証用乱数を求めることができる可能性がある。クライアント次回認証用乱数を求めたならば、共通暗号鍵を導出することが可能となり、次回認証において、クライアントまたはサーバに成りすますことが可能となる。
【０００５】
しかし、クライアント装置とサーバ装置間認証においての重複情報を無くし、装置間が認証時に交換することのない隠蔽固定情報を追加する認証方式とすることによりセキュリティを強化することができる。
【０００６】
更に、共通暗号鍵をクライアント装置とサーバ装置で１つであったものを、クライアント装置送信用共通暗号鍵とサーバ装置送信用共通暗号鍵の２つとすることによりセキュリティの一層強化を実現することができる。
【０００７】
また、クライアント装置の認証が失敗となった場合は、以後の認証が行えなくなるために、通常認証と再認証の認証モードを設け、通常認証と再認証それぞれに通常認証シードと再認証シードを用意する。
【０００８】
通常認証が失敗となった場合は、再認証のための再認証シードにより実施を行い、再認証成功時に通常認証シードを再構成することにより、以後は通常認証を行うことを可能とするが、再認証においても通常認証同様のセキュリティ強度を保証する。
【０００９】
本発明は、上記の問題に鑑みてなされたものであり、重複する認証情報要素を持つことなく、通常の認証が失敗となった場合は、再認証により通常認証の認証シードを生成し、その後、継続的に認証を繰り返し行うことができるワンタイム認証システム、並びにそのシステムに生体認証を組み込むことにより本人認証を可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明では、以下のような解決手段を提供する。
【００１１】
（１）サーバ装置と、
クライアント装置とを備え、
前記サーバ装置および前記クライアント装置は、それぞれ通常認証シードおよび再認証シードからなる認証シードを生成し、前記認証シードを暗号化して相互に送信し、前記認証シードからワンタイム認証子を生成して送信し、前記サーバ装置により生成された前記認証シードと前記クライアント装置により生成された前記認証シードとに基づいて互いにワンタイム認証子についての認証を行い、前記認証に成功するたびに次回認証用シードで前記認証シードを更新して行き保持し、
前記クライアント装置は、通常認証またはヘルスチェック認証において、前記認証シードの前記通常認証シードを読み出し、読み出したシードに基づいてワンタイム認証子を生成して前記サーバ装置へ送信し、前記サーバ装置へ送信した前記ワンタイム認証子および前記サーバ装置から受信した前記ワンタイム認証子についての認証に成功すると、前記通常認証またはヘルスチェック認証の前記次回認証用シードを更新し、前記ワンタイム認証子についての認証に失敗すると、再認証において、前記認証シードの前記再認証用シードを読み出し、読み出した前記再認証用シードに基づいてワンタイム認証子を生成して前記サーバ装置へ送信し、前記サーバ装置へ送信した前記ワンタイム認証子および前記サーバ装置から受信した前記ワンタイム認証子についての認証に成功すると、前記再認証の前記次回認証用シードを更新し、前記通常認証の前記次回認証用シードを更新し、
前記サーバ装置は、通常認証またはヘルスチェック認証において、前記クライアント装置より受信した前記ワンタイム認証子についての認証に成功すると、前記通常認証の前記次回認証用シードを更新し、次回の通常認証またはヘルスチェック認証での認証時まで保持し、前記再認証において、前記クライアント装置より受信した前記ワンタイム認証子についての認証に成功すると、前記再認証の前記次回認証用シードを更新し、次回の再認証での認証時まで保持し、前記通常認証用シードを生成して前記通常認証の前記シードを更新し、次回の通常認証まで保持すること、
を特徴とするワンタイム認証システム。
【００１２】
（１）の構成によれば、通常のワンタイム認証に失敗すると、再認証のワンタイム認証が実行され、再認証のワンタイム認証に成功すれば、クライアント装置とサーバ装置の双方において、通常認証の次回認証用シードが更新されるので、次回、通常認証を行うことが可能となる。
また、通常認証以外にセッション中にヘルスチェック認証を行い、通常認証の次回認証用シードを更新しているので、耐タンパ性が向上する。
【００１３】
（２）記憶装置および前記サーバ装置が、前記認証シードとして、通常認証クライアント側シード、通常認証サーバ側シード、再認証クライアント側シードおよび再認証サーバ側シードを保持し、
前記クライアント装置は、
（ａ１）前記記憶装置から前記通常認証クライアント側シード、前記通常認証サーバ側シード、前記再認証クライアント側シードおよび前記再認証サーバ側シードを読み出し、
（ａ２）前記通常認証クライアント側シードおよび前記通常認証サーバ側シードから、通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子を生成し、
（ａ３）次回認証用通常認証クライアント側シードを生成し、
（ａ４）前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子、および暗号化後の前記次回認証用通常認証クライアント側シードを前記サーバ装置へ送信し、
（ａ５）前記サーバ装置から通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子、および暗号化後の次回認証用通常認証サーバ側シードを受信し、
（ａ６）前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子についての認証に成功すると、前記次回認証用通常認証クライアント側シードおよび前記次回認証用通常認証サーバ側シードを更新し、
（ａ７）前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子について認証に失敗すると、前記再認証クライアント側シードおよび前記再認証サーバ側シードから再認証クライアント側ワンタイム認証子を生成し、
（ａ８）次回認証用再認証クライアント側シードおよび次回認証用通常認証クライアント側シードを生成し、
（ａ９）前記再認証クライアント側ワンタイム認証子、暗号化後の前記次回認証用再認証クライアント側シードおよび暗号化後の前記次回認証用通常認証クライアント側シードを前記サーバ装置へ送信し、
（ａ１０）前記サーバ装置から再認証サーバ側ワンタイム認証子、暗号化後の次回認証用再認証サーバ側シードおよび暗号化後の次回認証用通常認証サーバ側シードを受信し、
（ａ１１）前記再認証サーバ側ワンタイム認証子について認証に成功すると、前記次回認証用再認証クライアント側シード、前記次回認証用再認証サーバ側シード、前記次回認証用通常認証クライアント側シードおよび前記次回認証用通常認証サーバ側シードを更新し、
前記サーバ装置は、
（ｂ１）前記クライアント装置から前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子および暗号化後の前記次回認証用通常認証クライアント側シードを受信し、
（ｂ２）前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子について認証に成功すると、次回認証用通常認証サーバ側シードを生成し、
（ｂ３）前記通常認証クライアント側シードおよび通常認証サーバ側シードから通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子を生成し、
（ｂ４）前記クライアント装置へ前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子および暗号化後の前記次回認証用通常認証サーバ側シードを送信し、
（ｂ５）前記クライアント装置から前記再認証クライアント側ワンタイム認証子、暗号化後の前記次回認証用再認証クライアント側シードおよび暗号化後の前記次回認証用通常認証初期値クライアント側シードを受信し、
（ｂ６）前記再認証クライアント側ワンタイム認証子について認証に成功すると、次回認証用再認証サーバ側シードおよび次回認証用通常認証初期値サーバ側シードを生成し、
（ｂ７）前記再認証クライアント側シードおよび再認証サーバ側シードから再認証サーバ側ワンタイム認証子を生成し、
（ｂ８）前記クライアント装置へ前記再認証サーバ側ワンタイム認証子、暗号化後の前記次回認証用再認証サーバ側シードおよび暗号化後の前記次回認証用通常認証初期値サーバ側シードを送信すること、
を特徴とする（１）に記載のワンタイム認証システム。
【００１４】
（２）の構成によれば、次回認証用シードを装置間で伝送する際に、暗号化して伝送しているので、認証シードについての安全性が保たれる。
【００１５】
（３）前記通常認証クライアント側ワンタイム認証子、ヘルスチェック認証クライアント側ワンタイム認証子および前記再認証クライアント側ワンタイム認証子は、同一の一方向性関数で計算され、
前記一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数であって、
前記通常認証クライアント側ワンタイム認証子およびヘルスチェック認証クライアント側ワンタイム認証子の場合、３つの引数は、前記通常認証クライアント隠蔽固定値乱数、前記通常認証クライアント側シード１、および前記通常認証サーバ側シード２であり、
前記再認証クライアント側ワンタイム認証子の場合、３つの引数は、前記再認証クライアント隠蔽固定値乱数、前記再認証クライアント側シード１、および前記再認証サーバ側シード２であること、
を特徴とする（２）に記載のワンタイム認証システム。
【００１６】
（３）の構成によれば、通常認証クライアント側ワンタイム認証子、ヘルスチェック認証クライアント側ワンタイム認証子および再認証クライアント側ワンタイム認証子を計算する関数の引数に隠蔽固定値乱数が使用されており、隠蔽固定値乱数は装置間で認証時に交換されることがないので、セキュリティが強化される。
【００１７】
（４）前記通常認証サーバ側ワンタイム認証子、ヘルスチェック認証サーバ側ワンタイム認証子および再認証サーバ側ワンタイム認証子は、同一の一方向性関数で計算され、
前記一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数であって、
前記通常認証サーバ側ワンタイム認証子およびヘルスチェック認証サーバ側ワンタイム認証子の場合、３つの引数は、前記通常認証サーバ隠蔽固定値乱数、前記通常認証サーバ側シード１、および前記通常認証クライアント側シード２であり、
前記再認証サーバ側ワンタイム認証子の場合、３つの引数は、前記再認証サーバ隠蔽固定値乱数、前記再認証サーバ側シード１、および前記再認証クライアント側シード２であること、
を特徴とする（２）または（３）に記載のワンタイム認証システム。
【００１８】
（４）の構成によれば、通常認証サーバ側ワンタイム認証子、ヘルスチェック認証サーバ側ワンタイム認証子および再認証サーバ側ワンタイム認証子を計算する関数の引数に隠蔽固定値乱数が使用されており、隠蔽固定値乱数は装置間で認証時に交換されることがないので、セキュリティが強化される。
【００１９】
（５）前記クライアント装置は、前記次回認証用通常認証クライアント側シード、前記次回認証用通常認証サーバ側シード、前記次回認証用再認証クライアント側シードおよび前記次回認証用再認証サーバ側シードを前記記憶装置に書き込むまでメモリに保持し、前記次回認証用通常認証クライアント側シード、前記次回認証用通常認証サーバ側シード、前記次回認証用再認証クライアント側シードおよび前記次回認証用再認証サーバ側シードを、前記記憶装置に書き込んだ後、前記メモリから消去することを特徴とする（２）に記載のワンタイム認証システム。
【００２０】
（５）の構成によれば、次回認証用通常認証クライアント側シード、次回認証用通常認証サーバ側シード、前記次回認証用再認証クライアント側シードおよび前記次回認証用再認証サーバ側シードを、記憶装置に書き込んだ後、メモリから消去するので、次回認証用通常認証シードをクライアント装置のメモリから不正に入手することが困難になる。
【００２１】
（６）前記クライアント装置および前記サーバ装置は、通常認証共通暗号鍵および再認証共通暗号鍵を保持し、
前記クライアント装置は、前記通常認証共通暗号鍵を読み出し、前記通常認証共通暗号鍵で、前記次回認証用通常認証クライアント側シードを暗号化し、前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子についての認証に成功すると、前記通常認証共通暗号鍵を更新し、
前記クライアント装置は、前記再認証共通暗号鍵を読み出し、前記再認証共通暗号鍵で、前記次回認証用再認証クライアント側シードを暗号化し、前記再認証サーバ側ワンタイム認証子についての認証に成功すると、前記再認証共通暗号鍵および通常認証共通暗号鍵を更新し、
前記サーバ装置は、前記通常認証共通暗号鍵で、前記次回認証用通常認証サーバ側シードを暗号化し、前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子についての認証に成功すると、前記通常認証共通暗号鍵を更新し、更新後の前記通常認証共通暗号鍵を次回の通常認証または次回のヘルスチェック認証での認証時まで保持し、前記再認証共通暗号鍵で、前記次回認証用再認証サーバ側シードを暗号化し、前記再認証クライアント側ワンタイム認証子についての認証に成功すると、前記再認証共通暗号鍵および通常認証共通暗号鍵を更新し、更新後の前記再認証共通暗号鍵および通常認証共通暗号鍵を次回の再認証での認証時または通常認証での認証時まで保持すること、
を特徴とする請求項２記載のワンタイム認証システム。
【００２２】
（６）の構成によれば、通常認証時の共通暗号鍵と、再認証時の共通暗号鍵とを別々に設け、再認証に成功すると、再認証共通暗号鍵と通常認証共通暗号鍵の両方を更新しているので、耐タンパ性が向上する。
【００２３】
（７）前記クライアント装置は、前記更新後の通常認証共通暗号鍵および前記更新後の再認証暗号鍵を前記記憶装置に書き込むまでメモリに保持し、前記更新後の通常認証共通暗号鍵および前記更新後の再認証暗号鍵を、前記記憶装置に書き込んだ後、前記メモリから消去することを特徴とする（６）に記載のワンタイム認証システム。
【００２４】
（７）の構成によれば、更新後の通常認証共通暗号鍵および更新後の再認証暗号鍵を、記憶装置に書き込んだ後、メモリから消去するので、更新後の共通暗号鍵をクライアント装置のメモリから不正に入手することが困難になる。
【００２５】
（８）記憶装置および前記サーバ装置が、前記認証シードとして、通常認証クライアント側シード、通常認証サーバ側シード、再認証クライアント側シードおよび再認証サーバ側シードを保持し、
前記クライアント装置は、
（ａ１）前記記憶装置から前記通常認証クライアント側シード、前記通常認証サーバ側シード、前記再認証クライアント側シードおよび前記再認証サーバ側シードを読み出し、
（ａ２）前記通常認証クライアント側シードおよび前記通常認証サーバ側シードから通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子を生成し、
（ａ３）前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子を前記サーバ装置へ送信し、
（ａ４）前記サーバ装置から通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子、暗号化後の次回認証用通常認証サーバ側シードおよび次回認証用通常認証クライアント側シードを受信し、
（ａ５）前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子についての認証に成功すると、前記次回認証用通常認証クライアント側シードおよび前記次回認証用通常認証サーバ側シードを更新し、
（ａ６）前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子について認証に失敗すると、前記再認証クライアント側シードおよび前記再認証サーバ側シードから再認証クライアント側ワンタイム認証子を生成し、
（ａ７）前記再認証クライアント側ワンタイム認証子を前記サーバ装置へ送信し、
（ａ８）前記サーバ装置から再認証サーバ側ワンタイム認証子、暗号化後の次回認証用再認証サーバ側シード、暗号化後の次回認証用通常認証初期値サーバ側シード、暗号化後の次回認証用再認証クライアント側シードおよび暗号化後の次回認証用通常認証初期値クライアント側シードを受信し、
（ａ９）前記再認証サーバ側ワンタイム認証子について認証に成功すると、前記次回認証用再認証クライアント側シード、前記次回認証用再認証サーバ側シード、前記次回認証用通常認証クライアント側シードおよび前記次回認証用通常認証サーバ側シードを更新し、
前記サーバ装置は、
（ｂ１）前記クライアント装置から前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子を受信し、
（ｂ２）前記通常認証クライアント側ワンタイム認証子またはヘルスチェック認証クライアント側ワンタイム認証子について認証に成功すると、次回認証用通常認証サーバ側シードおよび次回認証用通常認証クライアント側シードを生成し、
（ｂ３）前記通常認証クライアント側シードおよび通常認証サーバ側シードから通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子を生成し、
（ｂ４）前記クライアント装置へ前記通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子、暗号化後の前記次回認証用通常認証サーバ側シードおよび暗号化後の次回認証用通常認証クライアント側シードを送信し、
（ｂ５）前記クライアント装置から前記再認証クライアント側ワンタイム認証子を受信し、
（ｂ６）前記再認証クライアント側ワンタイム認証子について認証に成功すると、次回認証用再認証サーバ側シード、次回認証用通常認証初期値サーバ側シード、次回認証用再認証クライアント側シードおよび次回認証用通常認証初期値クライアント側シードを生成し、
（ｂ７）前記再認証クライアント側シードおよび再認証サーバ側シードから再認証サーバ側ワンタイム認証子を生成し、
（ｂ８）前記クライアント装置へ前記再認証サーバ側ワンタイム認証子、暗号化後の前記次回認証用再認証サーバ側シード、暗号化後の前記次回認証用通常認証初期値サーバ側シード、暗号化後の前記次回認証用再認証クライアント側シードおよび暗号化後の前記次回認証用通常認証初期値クライアント側シードを送信すること、
を特徴とする（１）のワンタイム認証システム。
【００２６】
（８）の構成によれば、クライアント装置を調べても乱数発生の仕組みを知ることができないので、耐タンパ性が向上する。
【発明の効果】
【００２７】
本発明によれば、クライアント装置とサーバ装置間の盗聴に対する耐タンパ性が強化され、認証が失敗した後の再認証の耐タンパ性も強化されたワンタイム認証システムが得られる。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態に係るワンタイム認証システムの構成を示すブロック図である。
【図２】本発明の一実施形態に係るワンタイム認証システムの端末装置の構成を示すブロック図である。
【図３】本発明の一実施形態に係るワンタイム認証システムの端末装置において実現される処理部を示すブロック図である。
【図４】本発明の一実施形態に係るワンタイム認証システムのサーバ装置の構成を示すブロック図である。
【図５】本発明の一実施形態に係るワンタイム認証システムのサーバ装置において実現される処理部を示すブロック図である。
【図６】本発明の一実施形態に係るワンタイム認証システムにおいて実行されるワンタイム認証子を使用して繰り返し行われる認証について説明するシーケンス図である。
【図７】本発明の一実施形態に係るワンタイム認証システムにおける通常認証の詳細について説明するシーケンス図である。
【図８】本発明の一実施形態に係るワンタイム認証システムにおけるシードテーブルの構造の一例を示す図である。
【図９】本発明の一実施形態に係るワンタイム認証システムにおける認証子テーブルの一例を示す図である。
【図１０】本発明の一実施形態に係るワンタイム認証システムにおけるサーバ装置によるデータ処理の詳細について説明するフローチャートである。
【図１１】本発明の一実施形態に係るワンタイム認証システムにおけるサーバ装置によるデータ処理の詳細について説明するフローチャートである。
【図１２】本発明の一実施形態に係るワンタイム認証システムにおけるヘルスチェック認証の詳細について説明するシーケンス図である。
【図１３】本発明の一実施形態に係るワンタイム認証システムにおける再認証の詳細について説明するシーケンス図である。
【図１４】本発明の一実施形態に係るワンタイム認証システムにおける再認証時のサーバ装置によるデータ処理の詳細について説明するシーケンス図である。
【図１５】本発明の一実施形態に係るワンタイム認証システムにおける再認証時のサーバ装置によるデータ処理の詳細について説明するシーケンス図である。
【図１６】本発明の一実施形態に係るワンタイム認証システムの変形例２について説明するシーケンス図である。
【図１７】本発明の一実施形態に係るワンタイム認証システムの変形例２におけるサーバ装置によるデータ処理の詳細について説明するフローチャートである。
【発明を実施するための形態】
【００２９】
以下、図に基づいて本発明の実施の形態を説明する。
【００３０】
実施の形態１．
【００３１】
図１は、本発明の実施の形態に係るワンタイム認証システムの構成を示すブロック図である。
【００３２】
図１に示すシステムでは、クライアント装置としての端末装置１が、ネットワーク３に接続されており、そのネットワーク３にはサーバ装置４が接続されている。端末装置１は、例えば、スマートフォンである。ネットワーク３は、有線および／または無線のＬＡＮ（Local Area Network）、および／またはインターネットなどのＷＡＮ（Wide Area Network）、および／または公衆無線通信網を含んでいる。
【００３３】
本発明の実施の形態に係るワンタイム認証システムでは、クライアント側においてシードおよび共通暗号鍵を記憶するための記憶装置２が使用される。
記憶装置２の態様としては、少なくとも次の３種類の態様を取ることができる。
（Ａ）端末装置１であるスマートフォンが備えている記憶部。
（Ｂ）端末装置１であるスマートフォンに対して着脱可能なＳＤカードなどの記憶媒体。
（Ｃ）端末装置１であるスマートフォンに対して近接通信が可能な装置が備えている記憶部。
【００３４】
シードは、ワンタイム認証子を生成するために使用されるデータであって、この実施の形態では、乱数が使用される。ワンタイム認証子は、認証時に１度だけ使用可能なＩＤ（ワンタイムＩＤ）またはパスワード（ワンタイムパスワード）である。この実施の形態では、ワンタイム認証子は、ワンタイムＩＤとされる。
【００３５】
サーバ装置４および端末装置１は、それぞれシードを生成し、認証に成功するたびにシードを更新していき、そのシードを暗号化して相互に送受し、両者のシードからワンタイム認証子を生成し、シードに基づいて、互いにワンタイム認証子についての認証を行う。
したがって、サーバ装置４は、サーバ装置４のシードと端末装置１のシードの両方を保持している。また、端末装置１側も、サーバ装置４のシードと端末装置１のシードの両方を、記憶装置２に記憶している。
なお、以下では、ワンタイム認証子についての認証のことを、ワンタイム認証という。
【００３６】
サーバ装置４および端末装置１は、通常認証、ヘルスチェック認証、および再認証のワンタイム認証を行う。通常認証は、通常時のワンタイム認証を行うモードであり、ヘルスチェック認証は、通常認証後の成りすましを防止かつ検出するモードであり、再認証は、通常認証に失敗した場合に実行される認証モードである。
【００３７】
通常認証を行うか、ヘルスチェック認証を行うかは、端末装置１のワンタイム認証プログラムによる。その判断は、ワンタイム認証プログラム上位層より引き渡される要求コードRQSTが０か０以外によりなされ、０以外であれば通常認証とし、０であればヘルスチェック認証を行う。なお、再認証の場合は、要求コードRQSTを０とする。
【００３８】
通常認証において、端末装置１は、記憶装置２から両者のシードを読み出し、そのシードに基づいてワンタイム認証子を生成してサーバ装置４へ送信し、ワンタイム認証子について認証に成功すると、次回認証用シードを記憶装置２に書き込む。
【００３９】
一方、サーバ装置４は、通常認証の次回認証用シードを、次回の通常認証またはヘルチェック認証での認証時まで保持する。
【００４０】
以下、上記システムにおける各装置の構成および動作について説明する。
【００４１】
（１）各装置の構成
【００４２】
図２は、図１における端末装置１の構成を示すブロック図である。
【００４３】
図２に示すように、端末装置１は、表示部２０１，操作部２０２、記憶部２０３、電源部２０４、制御部２０５、ＲＯＭ（Read Only Memory）２０６、ＲＡＭ（Random Access Memory）２０７、ＮＦＣ（Near Field Communication）通信部２０８，無線ＬＡＮ通信部２０９、公衆無線通信部２１０を備える。
【００４４】
表示部２０１は、例えばＬＣＤやＬＥＤにより構成され、ユーザが視覚で認知可能な情報を出力する機能を有している。操作部２０２は、ユーザが各種入力などを行い、通信装置を操作するための機能を有する。なお、表示部２０１と操作部２０２とをタッチパネルなどによって一体として構成してもよい。
【００４５】
記憶部２０３は、例えば、ＨＤＤ、フラッシュメモリなどの記憶媒体により構成され、無線通信ネットワーク情報、データ送受信情報、アプリケーションなどの各種データを記憶し、管理する。図２では、記憶部２０３の中に、記憶装置２があり、その記憶装置２の中にシード１０１が記憶されている例を示している。
電源部２０４は、例えばバッテリであり、装置全体を動作させるための電源を保持し、各ハードウェアに電力を供給する。  
【００４６】
制御部２０５は、例えばＣＰＵ（Central Processing Unit）であり、端末装置１全体の動作を制御する。ＲＯＭ２０６は、制御命令つまりプログラムを格納する。後述するワンタイム認証の動作は、ＲＯＭ２０６に記憶されたワンタイム認証プログラム３１を制御部２０５が実行することにより実現される。ＲＡＭ２０７は、プログラムを実行する際のワークメモリやデータの一時保存などに利用される。
【００４７】
ＮＦＣ通信部２０８は、ＮＦＣ規格に準拠したＮＦＣ通信を行う。また、ＮＦＣ通信部２０８は、通信範囲内に通信可能な装置を検出すると、自動的にＮＦＣ通信を確立する。無線ＬＡＮ通信部２０９は、ＩＥＥＥ８０２．１１シリーズおよびＢｌｕｅｔｏｏｔｈ（登録商標）に準拠した無線通信を行う。公衆無線通信部２１０は、３ＧＰＰ（Ｔｈｉｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔ）で規格が定められたＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）などの通信方式に準拠した無線通信を行う。
【００４８】
図３は、図２に示す端末装置１において実現される処理部を示すブロック図である。図３に示すように、この端末装置１において、通信処理部４２、および認証処理部４３が実現される。
【００４９】
通信処理部４２は、無線ＬＡＮ通信部２０９または公衆無線通信部２１０を使用して、所定の通信プロトコルでサーバ装置４とネットワーク３を介してデータ通信を行う。
【００５０】
認証処理部４３は、制御部２０５がワンタイム認証プログラム３１を実行することにより実現され、通信処理部４２を使用して、サーバ装置４との相互認証におけるクライアント側の処理を実行する。
【００５１】
図４は、図１におけるサーバ装置４の構成を示すブロック図である。
【００５２】
図４において、ＣＰＵ５１は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ＲＯＭ５２は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、ＲＡＭ５３は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶するメモリである。
【００５３】
記憶装置５５は、インタフェース５４に接続され、図示せぬオペレーティングシステム、ワンタイム認証プログラム６１、認証に使用されるデータなどを格納する記録媒体を有する装置である。記憶装置５５としては、ハードディスクドライブ、ＳＳＤなどが使用される。記憶装置５５には、認証に使用されるデータとして、シードテーブル７１、および認証子テーブル７２が保持されている。
【００５４】
シードテーブル７１は、最後の認証時に更新された、通常認証、ヘルスチェック認証および再認証のそれぞれについての次回認証用シードおよび次回認証用共通暗号鍵を有する。ただし、ヘルスチェック認証の次回認証用シードおよび次回認証用共通暗号鍵については、通常認証の次回認証用シードおよび次回認証用共通暗号鍵を流用する。
【００５５】
認証子テーブル７２は、最後の認証時に更新された、通常認証またはヘルスチェック認証および再認証のそれぞれについての次回認証用のクライアント側ワンタイム認証子を有する。認証子テーブル７２は、通常認証テーブル７２ａと再認証テーブル７２ｂとを含む。通常認証テーブル７２ａは、通常認証またはヘルスチェック認証についての次回認証用のクライアント側ワンタイム認証子を有し、再認証テーブル７２ｂは、再認証についての次回認証用のクライアント側ワンタイム認証子を有する。
【００５６】
また、インタフェース５６は、通信装置５７を接続可能なインタフェース回路である。通信装置５７は、ネットワークインタフェースカード、モデムなどといったネットワーク３に接続可能な装置である。
【００５７】
ＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、およびインタフェース５４，５６は、バスやコントローラチップによって相互にデータ通信可能に接続されている。
【００５８】
図５は、図２に示すサーバ装置４において実現される処理部を示すブロック図である。図５に示すように、このサーバ装置４において、通信処理部８１、およびサーバ側認証処理部８２が実現される。
【００５９】
通信処理部８１は、通信装置５７を使用して、所定の通信プロトコルで端末装置１とネットワーク３を介してデータ通信を行う。
【００６０】
サーバ側認証処理部８２は、ＣＰＵ５１がワンタイム認証プログラム６１を実行することにより実現され、通信処理部８１を使用して、１または複数のクライアント装置（端末装置１など）との相互認証におけるサーバ側の処理を実行する。
【００６１】
（２）各装置の動作
【００６２】
図６は、図１に示すシステムにおいて実行されるワンタイム認証子を使用して繰り返し行われる認証について説明するシーケンス図である。
【００６３】
ステップＳ１において、認証処理部４３は、モードフラグMに、通常認証を示す値（ここでは１）をセットする。モードフラグMは、認証のモードを示すデータである。モードフラグMの値から、現時点のモードが識別され、ひいては、通常認証からヘルスチェック認証、または通常認証から再認証、またはヘルスチェック認証から再認証へ移行したことも判定される。
【００６４】
ステップＳ２において、端末装置１の認証処理部４３とサーバ装置４のサーバ側認証処理部８２との間で、通常認証でのワンタイム認証が実行される。このとき、認証処理部４３は、読み込んだシードからワンタイム認証子を生成し、また、次回認証用シードを生成して暗号化し、ワンタイム認証子および暗号化された次回認証用シードおよび暗号化された要求コードをサーバ装置４へ送信する。サーバ側認証処理部８２は、そのワンタイム認証子および暗号化された次回認証用シードおよび暗号化された要求コードを受信し、そのワンタイム認証子が正当なものであるか否かを判定する。サーバ側認証処理部８２は、そのワンタイム認証子が正当なものであれば、クライアント側の次回認証用シードを復号して保持する。
【００６５】
なお、通常認証のクライアント側シードの初期値、サーバ側シードの初期値、および共通暗号鍵の初期値は、記憶装置２とサーバ装置４に予めセットされる。サーバ装置４には、記憶装置２に関連付けて、それらの初期値がセットされる。
【００６６】
サーバ装置４では、シードテーブル７１に記憶装置２のシード１０１と同一のシードが保持されており、また、通常認証の次回認証用クライアント側ワンタイム認証子および再認証の次回認証用クライアント側ワンタイム認証子が、認証子テーブル７２に保持されている。通常認証の次回認証用クライアント側ワンタイム認証子および再認証の次回認証用クライアント側ワンタイム認証子は、前回の認証時に生成され、認証子テーブル７２に書き込まれたものである。この通常認証の次回認証用クライアント側ワンタイム認証子および再認証の次回認証用クライアント側ワンタイム認証子は、端末装置１から送信されてくるワンタイム認証子の正当性判定に使用される。つまり、端末装置１から送信されてきたワンタイム認証子が、認証子テーブル７２に保持されているワンタイム認証子と一致すると、そのワンタイム認証子は正当なものであると判定される。
【００６７】
なお、通常認証シードの初期値および再認証シードの初期値は、予め記憶装置２およびサーバ装置４にセットされる。通常認証が成功するたびに、通常認証のシードの値が更新されていく。また、ヘルスチェック認証が成功した場合も、通常認証のシードの値が更新されていく。また、再認証が成功するたびに、通常認証のシードの値および再認証のシードの値が更新されていく。
【００６８】
通常認証またはヘルスチェック認証でのワンタイム認証が成功すると、サーバ装置４では、サーバ側認証処理部８２は、次回認証用シードからクライアント側ワンタイム認証子を生成し、通常認証テーブル７２ａにおいて、記憶装置２についての通常認証の次回認証用クライアント側ワンタイム認証子を更新する。
端末装置１の認証処理部４３は、次回認証用シードに基づいて、記憶装置２内のシード１０１を更新する。
【００６９】
再認証でのワンタイム認証が成功すると、サーバ装置４では、サーバ側認証処理部８２は、再認証の次回認証用シードから再認証の次回認証用クライアント側ワンタイム認証子を生成し、また、通常認証の次回認証用シードから通常認証の次回認証用クライアント側ワンタイム認証子を生成し、認証子テーブル７２において、記憶装置２についての再認証の次回認証用クライアント側ワンタイム認証子および通常認証の次回認証用クライアント側ワンタイム認証子を更新する。
端末装置１の認証処理部４３は、次回認証用シードに基づいて、記憶装置２内のシード１０１を更新する。
【００７０】
ここで、通常認証でのワンタイム認証（ステップＳ２）の詳細について説明する。図７は、図６における通常認証でのワンタイム認証（ステップＳ２）の詳細について説明するシーケンス図である。なお、以下において、通常認証の説明中のｎとヘルスチェック認証の説明中のｎとは無関係である。
【００７１】
記憶装置２には、シード１０１の他に、通常認証用の共通暗号鍵および再認証用の共通暗号鍵も保持されている。また、サーバ装置４にも、シードの他に、同一の共通暗号鍵が通常認証用の共通暗号鍵および再認証用の共通暗号鍵として保持されている。つまり、通常認証用の共通暗号鍵の初期値および再認証用の共通暗号鍵の初期値は、予め記憶装置２およびサーバ装置４にセットされている。そして、後述のように、通常認証またはヘルスチェック認証用の認証が成功するたびに、通常認証の共通暗号鍵の値は更新され、再認証の認証が成功するたびに、再認証の共通暗号鍵および通常認証の共通暗号鍵の値は更新されていく。
なお、ヘルスチェック認証は、必ず通常認証から移行するので、「ヘルスチェック認証の共通暗号鍵の初期値」というものは存在しない。
【００７２】
ステップＳ２１およびステップＳ２２において、認証処理部４３が、記憶装置２から、通常認証クライアント側シードCR1（ｎ−１）およびCQ1（ｎ−１）、通常認証クライアント側暗号鍵CK1（ｎ−１）、通常認証クライアント側隠蔽固定情報CZ1、通常認証サーバ側シードSR1（ｎ−１）およびSQ1（ｎ−１）、通常認証サーバ側暗号鍵SK1（ｎ−１）、通常認証サーバ側隠蔽固定情報SZ1、および再認証クライアント側シードXCR1（ｍ−１）およびXCQ1（ｍ−１）、再認証クライアント側暗号鍵XCK1（ｍ−１）、再認証クライアント側隠蔽固定情報XCZ1、再認証サーバ側シードXSR1（ｍ−１）およびXSQ1（ｍ−１）、再認証サーバ側暗号鍵XSK1（ｍ−１）、再認証サーバ側隠蔽固定情報XSZ1を読み込み、ＲＡＭ２０７上に保持する。
【００７３】
なお、再認証クライアント側隠蔽固定情報XCZ1は、通常認証クライアント側隠蔽固定情報CZ1と異なっていてもよいし、同一であってもよい。また、再認証サーバ側隠蔽固定情報XSZ1は、通常認証サーバ側隠蔽固定情報SZ1と異なっていてもよいし、同一であってもよい。
【００７４】
シードCR1（ｎ−１）およびCQ1（ｎ−１）は、今回（ｎ−１）のワンタイム通常認証についてのクライアント側シードである。シードSR1（ｎ−１）およびSQ1（ｎ−１）は、今回（ｎ−１）のワンタイム通常認証についてのサーバ側シードである。クライアント共側通暗号鍵CK1（ｎ−１）は、今回（ｎ−１）のワンタイム通常認証時に、次回認証用のクライアント側シードCR1（ｎ）およびCQ1（ｎ）をサーバ装置４へ送信する際に、そのCR1（ｎ）およびCQ1（ｎ）を暗号化するためのクライアント側暗号鍵である。サーバ共側通暗号鍵SK1（ｎ−１）は、今回（ｎ−１）のワンタイム通常認証時に、次回認証用のサーバ側シードSR1（ｎ）およびSQ1（ｎ）を端末装置１へ送信する際に、そのSR1（ｎ）およびSQ1（ｎ）を暗号化するためのサーバ側暗号鍵である。
【００７５】
ステップＳ２３において、認証処理部４３は、乱数CRおよびCQを生成し、その乱数CRおよびCQを、次回認証用のクライアント側シードCR1（ｎ）およびCQ1(ｎ)にセットする。
【００７６】
ステップＳ２４において、認証処理部４３は、今回のワンタイム認証についての、クライアント側ワンタイム認証子C1（ｎ−１）を生成する。
【００７７】
ワンタイム認証子C1（ｎ−１）は、一方向性関数で計算される。この一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｃである。
【００７８】
ワンタイム認証子C1（ｎ−１）は、次式に従って計算される。
【００７９】
C1（ｎ−１）＝ｈｃ（CZ1，CR1（ｎ−１），SQ1（ｎ−１））
【００８０】
ここで、ハッシュ関数ｈｃの第１引数には、CZ1が使用され、第２引数には、CR1（ｎ−１）が使用され、第３引数には、SQ1（ｎ−１）が使用される。
【００８１】
また、認証処理部４３は、所定の暗号化方式に従って、クライアント暗号鍵CK1（ｎ−１）で、CR1（ｎ）、CQ1（ｎ）およびRQST（ｎ）を暗号化する。なお、クライアント暗号鍵CK1（ｎ−１）での暗号化後のCR1（ｎ）、CQ1（ｎ）およびRQST（ｎ）を、CK1（ｎ−１）＊CR1（ｎ）、CK1（ｎ−１）＊CQ1（ｎ）およびCK1（ｎ−１）＊RQST（ｎ）と表現する。
【００８２】
ステップＳ２５において、認証処理部４３は、通信処理部４２を使用して、ワンタイム認証子C1（ｎ−１）、CK1（ｎ−１）＊CR1（ｎ）、CK1（ｎ−１）＊CQ1（ｎ）およびCK1（ｎ−１）＊RQST（ｎ）をサーバ装置４へ送信する。このとき、通信処理部４２は、ワンタイム認証子C1（ｎ−１）、CK1（ｎ−１）＊CR1（ｎ）、CK1（ｎ−１）＊CQ1（ｎ）およびCK1（ｎ−１）＊RQST（ｎ）を１つのメッセージとして送信する。
【００８３】
ステップＳ２６において、サーバ装置４のサーバ側認証処理部８２は、通信処理部８１を使用して、そのメッセージを受信し、そのメッセージからワンタイム認証子C1（ｎ−１）、CK1（ｎ−１）＊CR1（ｎ）およびCK1（ｎ−１）＊CQ1（ｎ）を抽出し、受信したワンタイム認証子C1（ｎ−１）が、保持している通常認証のクライアント側ワンタイム認証子に一致するか否かを判定する。
【００８４】
なお、端末装置１からサーバ装置４へのメッセージのデータフォーマット（ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置、およびサービス番号のサイズと位置）は、通常認証またはヘルスチェック認証と再認証で異なる。
【００８５】
また、通常認証またはヘルスチェック認証のクライアント側ワンタイム認証子と再認証クライアント側ワンタイム認証子は異なるデータフォーマット（つまり、同一データ長ではない）ではあるが、受信ワンタイム認証子のみからでは、通常認証またはヘルスチェック認証のワンタイム認証子か再認証のワンタイム認証子かの区別がつかない。このため、サーバ側認証処理部８２は、受信したワンタイム認証子が、通常認証テーブル７２ａに保持されているワンタイム認証子に一致するか否か、および受信したワンタイム認証子が、再認証テーブル７２ｂに保持されているワンタイム認証子に一致するか否かを判定し、受信したワンタイム認証子が、
（１）通常認証またはヘルスチェック認証の正当なワンタイム認証子、
（２）再認証の正当なワンタイム認証子、および
（３）不正なワンタイム認証子
のいずれかであるかを判定する。
【００８６】
受信したワンタイム認証子C1（ｎ−１）が、不正なワンタイム認証子であると判定した場合、サーバ側認証処理部８２は、認証失敗と判定し、処理を終了する。
【００８７】
受信したワンタイム認証子C1（ｎ−１）が、通常認証テーブル７２ａに保持している通常認証用のクライアント側ワンタイム認証子に一致した場合、サーバ側認証処理部８２は、認証成功と判定する。
【００８８】
ステップＳ２７において、サーバ側認証処理部８２は、乱数SRおよびSQを生成し、その乱数SRおよびSQを、次回認証用サーバ側通常認証シードSR1（ｎ）およびSQ1（ｎ）にセットする。
【００８９】
ステップＳ２８において、サーバ側認証処理部８２は、シードテーブル７１に保持しているクライアント暗号鍵CK1（ｎ−１）を用いて、CK1（ｎ−１）＊CR1（ｎ）およびCK1（ｎ−１）＊CQ1（ｎ）を、CR1（ｎ）およびCQ1（ｎ）へ復号する。そして、サーバ側認証処理部８２は、今回（ｎ−１）のワンタイム認証用の通常認証サーバ側ワンタイム認証子S1（ｎ−１）を生成する。
【００９０】
ワンタイム認証子S1（ｎ−１）は、一方向性関数で計算される。この一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｓである。
【００９１】
ワンタイム認証子S1（ｎ−１）は、次式に従って計算される。
【００９２】
S1（ｎ−１）＝ｈｓ（SZ1，SR1（ｎ−１），CQ1（ｎ−１））
【００９３】
ここで、ハッシュ関数ｈｓの第１引数には、SZ1が使用され、第２引数には、SR1（ｎ−１）が使用され、第３引数には、CQ1（ｎ−１）が使用される。なお、ハッシュ関数ｈｓは、ハッシュ関数ｈｃと同一の関数でもよいし、異なる関数でもよい。
【００９４】
また、サーバ側認証処理部８２は、所定の暗号化方式に従って、サーバ側共通暗号鍵SK1（ｎ−１）で、SR1（ｎ）およびSQ1（ｎ）を暗号化する。なお、サーバ側共通暗号鍵SK1（ｎ−１）での暗号化後のSR1（ｎ）およびSQ1（ｎ）を、SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ）と表現する。
【００９５】
ステップＳ２９において、サーバ側認証処理部８２は、通信処理部８１を使用して、ワンタイム認証子S1（ｎ−１）、SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ）を端末装置１へ送信する。このとき、通信処理部８１は、ワンタイム認証子S1（ｎ−１）、SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ）を１つのメッセージとして送信する。
【００９６】
なお、サーバ装置４から端末装置１へのメッセージのデータフォーマット（ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置）は、通常認証またはヘルスチェック認証と再認証とで異なる。
【００９７】
また、通常認証サーバ側ワンタイム認証子と再認証サーバ側ワンタイム認証子は、同一のデータフォーマット（つまり、同一データ長）ではないが、端末装置１の認証処理部４３は、モードフラグＭの値で通常認証かヘルスチェック認証か再認証かのモードを特定し、受信したワンタイム認証子を、特定したモードのワンタイム認証子として取り扱う。
【００９８】
ステップＳ３０において、端末装置１の認証処理部４３は、通信処理部４２を使用して、そのメッセージを受信し、ワンタイム認証子S1（ｎ−１）、SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ−１）を抽出する。そして、認証処理部４３は、モードフラグMの値に基づいて、受信したワンタイム認証子が通常認証のワンタイム認証子であることを特定する。
【００９９】
次に、認証処理部４３は、SZ1、SR1（ｎ−１）およびCQ1（ｎ−１）に基づいて、上述の式に従って正当なワンタイム認証子S1（ｎ−１）の値を計算し、受信したワンタイム認証子S1（ｎ−１）が、計算した値に一致するか否かを判定する。
【０１００】
このとき、受信したワンタイム認証子S1（ｎ−１）が、計算した値に一致しない場合、認証処理部４３は、認証失敗と判定し、処理を終了する。この場合、シード１０１の通常認証シードと通常認証クライアント暗号鍵および通常認証サーバ暗号鍵は更新せず、再認証を実行する。
【０１０１】
受信したワンタイム認証子S1（ｎ−１）が、計算した値に一致した場合、認証処理部４３は、認証成功と判定し、まず、SK1（ｎ−１）＊SQ1（ｎ）およびSK1（ｎ−１）＊SR1（ｎ）を、保持している共通暗号鍵SK1（ｎ−１）で、SR1（ｎ）およびSQ1（ｎ）へ復号し、この値を、次回認証用サーバ側通常認証シードにセットする。
【０１０２】
ステップＳ３１において、認証処理部４３は、次回認証用クライアント通常認証暗号鍵CK1（ｎ）および次回認証用サーバ通常認証暗号鍵SK1（ｎ）を次式に従って計算し、通常認証クライアント暗号鍵および通常認証サーバ暗号鍵を更新する。
【０１０３】
CK1（ｎ）＝ｈｋ（CR1（ｎ），CQ1（ｎ），CK1（ｎ−１））
SK1（ｎ）＝ｈｋ（SR1（ｎ），SQ1（ｎ），SK1（ｎ−１））
【０１０４】
ここで、ｈｋは、一方向性関数であって、かつハッシュ関数である。
【０１０５】
ステップＳ３２において、認証処理部４３は、記憶装置２内のシード１０１およびクライアント暗号鍵およびサーバ暗号鍵を、CR1（ｎ）、CQ1（ｎ）、SR1（ｎ）、およびSQ1（ｎ）、並びにCK1（ｎ）およびSK1（ｎ）で更新する。
【０１０６】
ステップＳ３３において、サーバ装置４のサーバ側認証処理部８２は、次回認証用クライアント通常認証暗号鍵CK1（ｎ）および次回認証用サーバ通常認証暗号鍵SK1（ｎ）を上述の式に従って計算し、通常認証クライアント暗号鍵および通常認証サーバ暗号鍵を更新する。
【０１０７】
ステップＳ３４において、サーバ側認証処理部８２は、通常認証またはヘルスチェック認証の次回のワンタイム認証時に使用するクライアント側ワンタイム認証子C1（ｎ）を、CZ1およびCR1（ｎ）およびSQ1（ｎ）から、上述の式に従って計算する。そして、サーバ側認証処理部８２は、CR1（ｎ）、CQ1（ｎ）、SR1（ｎ）、SQ1（ｎ）、CK1（ｎ）およびSK1（ｎ）で、シードテーブル７１における、記憶装置２についての通常認証のデータを更新し、C1（ｎ）で、通常認証テーブル７２ａにおける、ワンタイム認証子を更新する。これにより、これらの値が、次回のセッション（つまり、次回の通常認証またはヘルスチェック認証）まで保持される。
【０１０８】
このようにして、通常認証でのワンタイム認証が実行される。
【０１０９】
図８は、実施の形態１におけるシードテーブル７１の構造の一例を示す図である。
図９（ａ）は、実施の形態１における通常認証テーブル７２ａの構造の一例を示す図である。
図９（ｂ）は、実施の形態１における再認証テーブル７２ｂの構造の一例を示す図である。
【０１１０】
図８における通常認証アドレスは、通常認証テーブル７２ａ内の、当該通常認証アドレスに関連付けられている管理番号と同一の管理番号を有するレコードの位置を示すデータである。
【０１１１】
図８における再認証アドレスは、再認証テーブル７２ｂ内の、当該再認証アドレスに関連付けられている管理番号と同一の管理番号を有するレコードの位置を示すデータである。
【０１１２】
また、図９（ａ）において、サーバ側認証処理部８２により、通常認証テーブル７２ａ内のレコードは、ワンタイム認証子の値について昇順にソートされる。これにより、ワンタイム認証時に迅速に、クライアントから受信したワンタイム認証子が、通常認証テーブル７２ａに登録されているか否かを判定することができる。
【０１１３】
また、図９（ｂ）において、サーバ側認証処理部８２により、再認証テーブル７２ｂ内のレコードは、ワンタイム認証子の値について昇順にソートされる。これにより、ワンタイム認証時に迅速に、クライアントから受信したワンタイム認証子が、再認証テーブル７２ｂに登録されているか否かを判定することができる。
【０１１４】
なお、シードテーブル７１、通常認証テーブル７２ａ、再認証テーブル７２ｂは、予め所定数のレコードを有しており、レコード内の管理番号以外のフィールドには初期値がセトされる。
【０１１５】
次にステップＳ２６の詳細について説明する。
ステップＳ２６では、サーバ側認証処理部８２は、クライアント側から受信したクライアント側ワンタイム認証子Ｃ（サーバ側認証処理部８２では、受信したクライアント側ワンタイム認証子が、通常認証ワンタイム認証子であるのか、ヘルスチェック認証ワンタイム認証子であるのか、それとも再認証ワンタイム認証子であるのか、まだ不明なため、取りあえずクライアント側ワンタイム認証子Ｃとしておく。）が、通常認証テーブル７２ａに登録されているクライアント側ワンタイム認証子のいずれかであるか否かを判定する。
【０１１６】
クライアント側から受信したクライアント側ワンタイム認証子Ｃが、通常認証テーブル７２ａに登録されているクライアント側ワンタイム認証子のいずれかである場合、今回の認証は通常認証またはヘルスチェック認証であったということになり、認証成功である。
【０１１７】
サーバ側認証処理部８２は、通常認証テーブル７２ａにおいて、受信したクライアント側ワンタイム認証子Ｃに関連付けられている管理番号を特定する。そして、サーバ側認証処理部８２は、特定された管理番号に対応するシードテーブル７１中のレコードを用いてステップＳ２７以降の処理を進める。
【０１１８】
クライアント側から受信したクライアント側ワンタイム認証子Ｃが、通常認証テーブル７２ａに登録されているクライアント側ワンタイム認証子のいずれかでなかった場合、サーバ側認証処理部８２は、クライアント側から受信したクライアント側ワンタイム認証子Ｃが、再認証テーブル７２ｂに登録されているクライアント側ワンタイム認証子のいずれかであるか否かを判定する。
【０１１９】
クライアント側から受信したクライアント側ワンタイム認証子Ｃが、再認証テーブル７２ｂに登録されているクライアント側ワンタイム認証子のいずれかである場合、今回の認証は再認証であったということになり、認証成功である。
【０１２０】
サーバ側認証処理部８２は、再認証テーブル７２ｂにおいて、受信したクライアント側ワンタイム認証子Ｃに関連付けられている管理番号を特定する。そして、サーバ側認証処理部８２は、特定された管理番号に対応するシードテーブル７１中のレコードを用いて、後述する再認証時の処理を進める。
【０１２１】
クライアント側から受信したクライアント側ワンタイム認証子Ｃが、再認証テーブル７２ｂに登録されているクライアント側ワンタイム認証子のいずれでもなかった場合、認証は失敗したことになる。
【０１２２】
次にステップＳ２７の詳細について説明する。
図１０は、ステップＳ２７の詳細を説明するフローチャートである。
【０１２３】
ステップＳ１０１において、サーバ装置４では、サーバ側認証処理部８２は、乱数SRを生成し、次回認証用サーバ側シードSR1（ｎ）にセットする。
【０１２４】
ステップＳ１０２において、サーバ側認証処理部８２は、乱数SQを作成する。
【０１２５】
ステップＳ１０３において、この乱数SQを次回認証用サーバ側シードに使用した場合に、次回認証用クライアント側ワンタイム認証子が、通常認証テーブル７２ａに登録されているクライアント側ワンタイム認証子に一致するか否かを判定する。つまり、生成した乱数SQを使用した場合のクライアント側ワンタイム認証子の一意性（つまり、同じ値のクライアント側ワンタイム認証子が存在しないこと）が確保されるか否かが判定される。
この時、サーバ側認証処理部８２は、次式に従って、この乱数SQを次回認証用サーバ側シードに使用した場合の、次回認証用クライアント側認証子Ｘ１を計算し、このワンタイム認証子が、通常認証テーブル７２ａに登録されているか否かを判定する。
Ｘ１＝ｈａｓｈ１｛CZ1，CR1（ｎ），SQ｝
ステップＳ１０４において、乱数ＳＱを次回認証用サーバ側シードに使用した場合に、次回認証用クライアント側ワンタイム認証子が、再認証テーブル７２ｂに登録されているクライアント側ワンタイム認証子に一致するか否かを判定する。
【０１２６】
そして、生成した乱数SQで一意性が確保されないと判定した場合、サーバ側認証処理部８２は、一意性が確保されるまで、ステップＳ１０２へ戻って乱数SQを再生成する。一方、生成した乱数SQで一意性が確保されると判定した場合、ステップＳ１０５へ移る。
【０１２７】
ステップＳ１０５において、サーバ側認証処理部８２は、乱数SQを、次回認証用サーバ側シードSQ1（ｎ）にセットする。
【０１２８】
次に、ステップＳ３４の詳細について説明する。
図１１は、ステップＳ３４の詳細を説明するフローチャートである。
【０１２９】
ステップＳ１１１において、サーバ側認証処理部８２は、シードテーブル７１に、その管理番号の次回認証用のシードCR1（ｎ）、CQ1（ｎ）、SR1（ｎ）、SQ1（ｎ）、CK1（ｎ）、SK1（ｎ）を書き込む。
【０１３０】
ステップＳ１１２において、ステップＳ１０３、Ｓ１０４での判定時に計算したＸ１を、次回認証用クライアント側ワンタイム認証子C1（ｎ）とし、そのC1（ｎ）で、認証子テーブル７２において、その管理番号に関連付けられているワンタイム認証子を更新する。
すなわち、サーバ側認証処理部８２は、その管理番号に関連付けられている通常認証アドレスをシードテーブル７１から読み出し、その通常認証アドレスで、通常認証テーブル７２ａにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム認証子を更新する。
【０１３１】
ステップＳ１１３において、サーバ側認証処理部８２は、通常認証テーブル７２ａ内のレコードをワンタイム認証子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル７１においてそのレコードの管理番号に関連付けられている通常認証アドレスを更新する。
【０１３２】
次に、ここで、ヘルスチェック認証でのワンタイム認証（ステップＳ４）の詳細について説明する。図１２は、図６におけるヘルスチェック認証でのワンタイム認証（ステップＳ４）の詳細について説明するシーケンス図である。なお、以下において、通常認証の説明中のｎとヘルスチェック認証の説明中のｎとは無関係である。
【０１３３】
記憶装置２には、シード１０１の他に、通常認証用の共通暗号鍵が保持されている。また、サーバ装置４にも、シードの他に、同一の通常認証用の共通暗号鍵として保持されている。つまり、通常認証の共通暗号鍵の初期値は、予め記憶装置２およびサーバ装置４にセットされている。そして、後述のように、通常認証またはヘルスチェック認証が成功するたびに、通常認証の共通暗号鍵の値は更新され、再認証の認証が成功するたびに、再認証の共通暗号鍵および通常認証の共通暗号鍵の値は更新されていく。
【０１３４】
ステップＳ２１において、認証処理部４３が、記憶装置２から、通常認証クライアント側シードCR1（ｎ−１）およびCQ1（ｎ−１）、通常認証クライアント側共通暗号鍵CK1（ｎ−１）、通常認証クライアント側隠蔽固定情報CZ１、通常認証サーバ側シードSR1（ｎ−１）およびSQ1（ｎ−１）、通常認証サーバ側共通暗号鍵SK1（ｎ−１）、通常認証サーバ側隠蔽固定情報SZ1を読み込み、ＲＡＭ２０７上に保持する。
【０１３５】
実施の形態１のヘルスチェック認証では、通常認証のためのシードや共通暗号鍵や隠蔽固定情報が使用される。そして、ヘルスチェック認証に成功すると、通常認証に成功したときと同様に、通常認証のためのシードや共通暗号鍵が更新される。ヘルスチェック認証では、要求コードRQSTの値が０であり、要求コードRQSTが暗号化されずに端末装置１からサーバ装置４へ送信される点が、通常認証と異なっている。
【０１３６】
シードCR1（ｎ−１）およびCQ1（ｎ−１）は、今回（ｎ−１）のワンタイムヘルスチェック認証についてのクライアント側シードである。シードSR1（ｎ−１）およびSQ1（ｎ−１）は、今回（ｎ−１）のワンタイムヘルスチェック認証についてのサーバ側シードである。クライアント側共通暗号鍵CK1（ｎ−１）は、今回（ｎ−１）のワンタイムヘルスチェック認証時に、次回認証用のクライアント側シードCR1（ｎ）およびCQ1（ｎ）をサーバ装置４へ送信する際に、そのCR1（ｎ）およびCQ1（ｎ）を暗号化するためのクライアント暗号鍵である。サーバ側共通暗号鍵SK1（ｎ−１）は、今回（ｎ−１）のワンタイムヘルスチェック認証時に、次回認証用のサーバ側シードSR1（ｎ）およびSQ1（ｎ）を端末装置１へ送信する際に、そのSR1（ｎ）およびSQ1（ｎ）を暗号化するためのサーバ側暗号鍵である。
【０１３７】
ステップＳ２３において、認証処理部４３は、乱数CRおよびCQを生成し、その乱数CRおよびCQを、次回認証用のクライアント側シードCR1（ｎ）およびCQ1（ｎ）にセットする。
【０１３８】
ステップＳ２４において、認証処理部４３は、今回のワンタイム認証についての、クライアント側ワンタイム認証子C1（ｎ−１）を生成する。
【０１３９】
ワンタイム認証子C1（ｎ−１）は、一方向性関数で計算される。この一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｃである。
【０１４０】
ワンタイム認証子C1（ｎ−１）は、次式に従って計算される。
【０１４１】
C1（ｎ−１）＝ｈｃ（CZ1，CR1（ｎ−１），SQ1（ｎ−１））
【０１４２】
ここで、ハッシュ関数ｈｃの第１引数には、CZ1が使用され、第2引数には、CR1（ｎ−１）が使用され、第３引数には、SQ1（ｎ−１）が使用される。
【０１４３】
また、認証処理部４３は、所定の暗号化方式に従って、クライアント暗号鍵CK1（ｎ−１）を用いて、CR1（ｎ）およびCQ1（ｎ）を暗号化する。なお、クライアント暗号鍵CK1（ｎ−１）で暗号化した後のCR1（ｎ）およびCQ1（ｎ）を、CK1（ｎ−１）＊CR1（ｎ）およびCK1（ｎ−１）＊CQ1（ｎ）と表現する。
【０１４４】
ステップＳ４０において、認証処理部４３は、通信処理部４２を使用して、ワンタイム認証子C1（ｎ−１）、CK1（ｎ−１）＊CR1（ｎ）、CK1（ｎ−１）＊CQ1（ｎ）、および値が０の要求コードRQST（０）をサーバ装置４へ送信する。このとき、通信処理部４２は、ワンタイム認証子C1（ｎ−１）、CK1（ｎ−１）＊CR1（ｎ）、CK1（ｎ−１）＊CQ1（ｎ）および要求コードRQST（０）を１つのメッセージとして送信する。
【０１４５】
ステップＳ２６において、サーバ側認証処理部８２は、通信処理部８１を使用して、そのメッセージを受信し、そのメッセージからワンタイム認証子C1（ｎ−１）、CK1（ｎ−１）＊CR1（ｎ）、CK1（ｎ−１）＊CQ1（ｎ）を抽出し、受信したワンタイム認証子C1（ｎ−１）が、保持している通常認証のクライアント側ワンタイム認証子に一致するか否かを判定する。
【０１４６】
なお、端末装置１からサーバ装置４へのメッセージのデータフォーマット（暗号化されたシードのサイズと位置、およびサービス番号のサイズと位置）は、ヘルスチェック認証と再認証で異なる。
【０１４７】
また、通常認証またはヘルスチェック認証クライアント側ワンタイム認証子と再認証クライアント側ワンタイム認証子は、異なるデータフォーマット（つまり、通常認証とヘルスチェック認証は同一データ長であるが、再認証のデータ長は異なる）であり、受信ワンタイム認証子のみからでは、通常認証またはヘルスチェック認証のワンタイム認証子かの区別がつかない。
【０１４８】
しかし、受信したワンタイム認証子が、通常認証テーブル７２ａに保持されているワンタイム認証子に一致すれば、受信したワンタイム認証子が、通常認証またはヘルスチェック認証のワンタイム認証子であると判定できる。
また、受信したワンタイム認証子が、再認証テーブル７２ｂに保持されているワンタイム認証子に一致すれば、受信したワンタイム認証子が、再認証のワンタイム認証子であると判定できる。
【０１４９】
また、受信したワンタイム認証子が、通常認証テーブル７２ａに保持されているワンタイム認証子にも一致せず、再認証テーブル７２ｂに保持されているワンタイム認証子に一致しなければ、不正なワンタイム認証子であると判定できる。
受信したワンタイム認証子が、通常認証テーブル７２ａに保持されているワンタイム認証子に一致した場合、要求コードＲＱＳＴが０以外であれば、通常認証のワンタイム認証子であると判断できる。そして、要求コードＲＱＳＴが０であれば、ヘルスチェック認証のワンタイム認証子であると判定できる。
【０１５０】
受信したワンタイム認証子C1（ｎ−１）が、不正なヘルスチェック認証のワンタイム認証子であると判定した場合、サーバ側認証処理部８２は、認証失敗と判定し、処理を終了する。
【０１５１】
受信したワンタイム認証子C1（ｎ−１）が、通常認証テーブル７２ａに保持しているクライアント側ワンタイム認証子に一致した場合、サーバ側認証処理部８２は、認証成功と判定する。
ステップＳ２７において、サーバ側認証処理部８２は、乱数SRおよびSQを生成し、その乱数SRおよびSQを、次回認証用サーバ側通常認証兼ヘルスチェック認証シードSR1（ｎ）およびSQ1（ｎ）にセットする。
【０１５２】
ステップＳ２８で、サーバ側認証処理部８２は、シードテーブル７１に保持しているクライアント暗号鍵CK1（ｎ−１）を用いて、CK1（ｎ−１）＊CR1（ｎ）およびCK1（ｎ−１）＊CQ1（ｎ）を、CR1（ｎ）およびCQ1（ｎ）へ復号する。そして、サーバ側認証処理部８２は、今回（ｎ−１）のワンタイム認証用のヘルスチェック認証サーバ側ワンタイム認証子S1（ｎ−１）を生成する。
【０１５３】
ワンタイム認証子S1（ｎ−１）は、一方向性関数で計算される。この一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｓである。
【０１５４】
ワンタイム認証子S1（ｎ−１）は、次式に従って計算される。
【０１５５】
S1（ｎ−１）＝ｈｓ（SZ1，SR1（ｎ−１），CQ1（ｎ−１））
【０１５６】
ここで、ハッシュ関数ｈｓの第１引数には、SZが使用され、第2引数には、SR1（ｎ−１）が使用され、第３引数には、CQ1（ｎ−１）が使用される。なお、ハッシュ関数ｈｓは、ハッシュ関数ｈｃと同一の関数でもよいし、異なる関数でもよい。
【０１５７】
また、サーバ側認証処理部８２は、所定の暗号化方式に従って、サーバ側暗号鍵SK1（ｎ−１）で、SR1（ｎ）およびSQ1（ｎ）を暗号化する。なお、サーバ側暗号鍵SK1（ｎ−１）で暗号化した後のSR1（ｎ）およびSQ1（ｎ）を、SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ）と表現する。
【０１５８】
ステップＳ２９において、サーバ側認証処理部８２は、通信処理部８１を使用して、ワンタイム認証子S1（ｎ−１）、SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ）を端末装置１へ送信する。このとき、通信処理部８１は、ワンタイム認証子S1（ｎ−１）、SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ）を１つのメッセージとして送信する。
【０１５９】
なお、サーバ装置４から端末装置１へのメッセージのデータフォーマット（暗号化されたシードのサイズと位置）は、通常認証およびヘルスチェック認証と再認証とで異なる。
【０１６０】
また、通常認証およびヘルスチェック認証のサーバ側ワンタイム認証子と再認証サーバ側ワンタイム認証子は、同一のデータフォーマット（つまり、同一データ長）ではないが、端末装置１の認証処理部４３は、モードフラグMの値で通常認証かヘルスチェック認証か再認証かのモードを特定し、受信したワンタイム認証子を、特定したモードのワンタイム認証子として取り扱う。
【０１６１】
ステップＳ３０において、端末装置１の認証処理部４３は、通信処理部４２を使用して、そのメッセージを受信し、ワンタイム認証子S1（ｎ−１）、SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ−１）を抽出する。そして、認証処理部４３は、モードフラグMの値に基づいて、受信したワンタイム認証子がヘルスチェック認証のワンタイム認証子であることを特定する。
【０１６２】
次に、認証処理部４３は、SZ1、SR1（ｎ−１）およびCQ1（ｎ−１）に基づいて、上述の式に従って正当なワンタイム認証子S1（ｎ−１）の値を計算し、受信したワンタイム認証子S1（ｎ−１）が、計算した値に一致するか否かを判定する。
【０１６３】
このとき、受信したワンタイム認証子S1（ｎ−１）が、計算した値に一致しない場合、認証処理部４３は、認証失敗と判定し、処理を終了する。この場合、シード１０１の通常認証兼ヘルスチェックシードと通常認証兼ヘルスチェック認証クライアント暗号鍵および通常認証兼ヘルスチェック認証サーバ暗号鍵は更新せず、再認証を実行する。
【０１６４】
受信したワンタイム認証子S1（ｎ−１）が、計算した値に一致した場合、認証処理部４３は、認証成功と判定し、まず、SK1（ｎ−１）＊SQ1（ｎ）およびSK1（ｎ−１）＊SR1（ｎ）を、保持している共通暗号鍵SK1（ｎ−１）で、SR1（ｎ）およびSQ1（ｎ）へ復号し、この値を、次回認証用サーバ側通常認証シードにセットする。
【０１６５】
ステップＳ３１において、認証処理部４３は、次回認証用クライアント通常認証暗号鍵CK1（ｎ）および次回認証用サーバ通常認証暗号鍵SK1（ｎ）を次式に従って計算し、通常認証クライアント暗号鍵および通常認証サーバ暗号鍵を更新する。
【０１６６】
CK1（ｎ）＝ｈｋ（CR1（ｎ），CQ1（ｎ），CK1（ｎ−１））
SK1（ｎ）＝ｈｋ（SR1（ｎ），SQ1（ｎ），SK1（ｎ−１））
【０１６７】
ここで、ｈｋは、一方向性関数であって、かつハッシュ関数である。
【０１６８】
ステップＳ３２において、ヘルスチェック認証のワンタイム認証に成功した後、認証処理部４３は、記憶装置２内のシード１０１およびクライアント側暗号鍵およびサーバ側暗号鍵を、CR1（ｎ）、CQ1（ｎ）、SR1（ｎ）およびSQ1（ｎ）、並びにCK1（ｎ）およびSK1（ｎ）で更新する。
【０１６９】
ステップＳ３３において、サーバ側認証処理部８２は、次回認証用クライアント側通常認証暗号鍵CK1（ｎ）および次回認証用サーバ側通常認証暗号鍵SK1（ｎ）を上述の式に従って計算し、通常認証クライアント側暗号鍵および通常認証サーバ側暗号鍵を更新する。
【０１７０】
ステップＳ３４において、サーバ側認証処理部８２は、通常認証の次回のワンタイム認証時に使用するクライアント側ワンタイム認証子C1（ｎ）を、CZ１およびCR1（ｎ）およびSQ1（ｎ）から、上述の式に従って計算する。そして、サーバ側認証処理部８２は、CR1（ｎ）、CQ1（ｎ）、SR1（ｎ）、SQ1（ｎ）、CK1（ｎ）およびSK1（ｎ）で、シードテーブル７１における、記憶装置２についての通常認証のデータを更新し、C1（ｎ）で、通常認証テーブル７２ａにおける、ワンタイム認証子を更新する。これにより、これらの値が、次回のセッション（つまり、次回の通常認証またはヘルスチェック認証）まで保持される。
【０１７１】
このようにして、ヘルスチェック認証でのワンタイム認証が実行される。
【０１７２】
なお、サーバ装置のステップＳ２６、Ｓ２７およびＳ３４の処理の詳細は、通常認証で説明したとおりであるので、省略する。
【０１７３】
次に、ここで、再認証でのワンタイム認証（ステップＳ７）の詳細について説明する。図１３は、図６における再認証でのワンタイム認証（ステップＳ７）の詳細について説明するシーケンス図である。
【０１７４】
ステップＳ２２において、認証処理部４３は、通常認証のシードおよび暗号鍵の読み込み時に、再認証のためのシードおよび暗号鍵の初期値も、同時に読み込み、ＲＡＭ２０７上に保持している。  
【０１７５】
シードXCR1（ｍ−１）およびXCQ1（ｍ−１）は、今回（ｍ−１）のワンタイム再認証についてのクライアント側シードである。シードXSR1（ｍ−１）およびXSQ1（ｍ−１）は、今回（ｍ−１）のワンタイム再認証についてのサーバ側シードである。クライアント側共通暗号鍵XCK1（ｍ−１）は、今回（ｍ−１）のワンタイム再認証時に、次回認証用のクライアント側シードXCR1（ｍ）およびXCQ1（ｍ）をサーバ装置４へ送信する際に、そのXCR1（ｍ）およびXCQ1（ｍ）を暗号化するためのクライアント側暗号鍵である。サーバ側共通暗号鍵XSK1（ｍ−１）は、今回（ｍ−１）のワンタイム再認証時に、次回認証用のサーバ側シードXSR1（ｍ）およびXSQ1（ｍ）をサーバ装置４へ送信する際に、そのXSR1（ｍ）およびXSQ1（ｍ）を暗号化するためのサーバ側暗号鍵である。
【０１７６】
ステップＳ７１において、認証処理部４３は、再認証乱数XCRおよびXCQおよび通常認証初期乱数CRおよびCQを生成し、その乱数XCR、XCQ、CRおよびCQを、次回再認証用のクライアント側シードXCR1（ｍ）およびXCQ1（ｍ）、並びに次回通常認証用のクライアント側シードCR1（０）およびCQ1（０）にセットする。
【０１７７】
ステップＳ７２において、認証処理部４３は、今回のワンタイム認証についての、クライアント側ワンタイム認証子XC1（ｍ−１）を生成する。
【０１７８】
ワンタイム認証子XC1（ｍ−１）は、一方向性関数で計算される。この一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｃである。
【０１７９】
ワンタイム認証子XC1（ｍ−１）は、次式に従って計算される
【０１８０】
XC1（ｍ−１）＝ｈｃ（XCZ1，XCR1（ｍ−１），XSQ1（ｍ−１））
【０１８１】
ここで、ハッシュ関数ｈｃの第１引数には、XCZ1が使用され、第2引数には、XCR1（ｍ−１）が使用され、第３引数には、XSQ1（ｍ−１）が使用される。
【０１８２】
また、認証処理部４３は、所定の暗号化方式に従って、再認証クライアント側共通暗号鍵XCK1（ｍ−１）で、XCR1（ｍ）、XCQ1（ｍ）、CR1（０）およびCQ1（０）を暗号化する。なお、再認証クライアント側共通暗号鍵XCK1（ｍ−１）で暗号化した後のXCR1（ｍ）、XCQ1（ｍ）、CR1（０）およびCQ1（０）を、XCK1（ｍ−１）＊XCR1（ｍ）、XCK1（ｍ−１）＊XCQ1（ｍ）、XCK1（ｍ−１）＊CR1（０）およびXCK1（ｍ−１）＊CQ1（０）と表現する。
【０１８３】
ステップＳ７３において、認証処理部４３は、通信処理部４２を使用して、再認証クライアント側ワンタイム認証子XC1（ｍ−１）、XCK1（ｍ−１）＊XCR1（ｍ）、XCK1（ｍ−１）＊XCQ1（ｍ）、XCK1（ｍ−１）＊CR1（０）、XCK1（ｍ−１）＊CQ1（０）および値が０の要求コードRQST（０）をサーバ装置４へ送信する。このとき、通信処理部４２は、ワンタイム認証子XC1（ｍ−１）、XCK1（ｍ−１）＊XCR1（ｍ）、XCK1（ｍ−１）＊XCQ1（ｍ）、XCK1（ｍ−１）＊CR1（０）、XCK1（ｍ−１）＊CQ1（０）および値が０の要求コードRQST（０）を１つのメッセージとして送信する。
【０１８４】
ステップＳ７４において、サーバ装置４では、サーバ側認証処理部８２は、通信処理部８１を使用して、そのメッセージを受信し、そのメッセージから再認証クライアント側ワンタイム認証子XC1（ｍ−１）、XCK1（ｍ−１）＊XCR1（ｍ）、XCK1（ｍ−１）＊XCQ1（ｍ）、XCK1（ｍ−１）＊CR1（０）、XCK1（ｍ−１）＊CQ1（０）を抽出し、受信した再認証ワンタイム認証子XC1（ｍ−１）が、保持している再認証のクライアント側ワンタイム認証子に一致するか否かを判定する。
【０１８５】
なお、端末装置１からサーバ装置４へのメッセージのデータフォーマット（ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置、およびサービス番号のサイズと位置）は、通常認証またはヘルスチェック認証と再認証で異なる。
【０１８６】
また、通常認証またはヘルスチェック認証クライアント側ワンタイム認証子と再認証クライアント側ワンタイム認証子は異なるデータフォーマット（つまり、同一データ長ではない）ではあるが、受信ワンタイム認証子のみからでは、通常認証またはヘルスチェック認証のワンタイム認証子か再認証のワンタイム認証子かの区別がつかない。
しかし、受信したワンタイム認証子が、通常認証テーブル７２ａに保持されているワンタイム認証子に一致すれば、受信したワンタイム認証子が、通常認証またはヘルスチェック認証のワンタイム認証子であると判定できる。
【０１８７】
また、受信したワンタイム認証子が、再認証テーブル７２ｂに保持されているワンタイム認証子に一致すれば、受信したワンタイム認証子が、再認証のワンタイム認証子であると判定できる。
前述の通常認証のフローのステップＳ２６において、受信したワンタイム認証子が再認証テーブル７２ｂに保持されているワンタイム認証子に一致すれば、その後の処理は、このステップＳ７５に継続されることになる。
【０１８８】
また、受信したワンタイム認証子が、通常認証テーブル７２ａに保持されているワンタイム認証子にも一致せず、再認証テーブル７２ｂに保持されているワンタイム認証子に一致しなければ、不正なワンタイム認証子であると判定できる。
受信したワンタイム認証子が、通常認証テーブル７２ａに保持されているワンタイム認証子に一致した場合、要求コードRQSTが０以外であれば、通常認証のワンタイム認証子であると判断できる。そして、要求コードRQSTが０であれば、ヘルスチェック認証のワンタイム認証子であると判定できる。
【０１８９】
受信したワンタイム認証子XC1（ｍ−１）が、不正な再認証のワンタイム認証子であると判定した場合、サーバ側認証処理部８２は、認証失敗と判定し、処理を終了する。
【０１９０】
ステップＳ７４において、サーバ側認証処理部８２は、受信したワンタイム認証子XC1（ｍ−１）が、再認証テーブル７２ａに保持している再認証用のクライアント側ワンタイム認証子に一致した場合、今回のワンタイム認証は再認証であり、認証成功と判定する。
【０１９１】
ステップＳ７５において、サーバ側認証処理部８２は、再認証サーバ側乱数XSRおよびXSQ並びに通常認証サーバ側乱数SRおよびSQを生成し、その再認証乱数XSRおよびXSQを、次回認証用サーバ側再認証シードXSR1（ｍ）およびXSQ1（ｍ）に、その通常認証乱数SRおよびSQを、次回認証用サーバ側通常認証シードSR1（０）およびSQ1（０）に、セットする。
【０１９２】
ステップＳ７６において、サーバ側認証処理部８２は、シードテーブル７１に保持しているクライアント側暗号鍵XCK1（ｍ−１）を用いて、XCK1（ｍ−１）＊XCR1（ｍ）、XCK1（ｍ−１）＊XCQ1（ｍ）、XCK1（ｍ−１）＊CR1（０）、およびXCK1（ｍ−１）＊CQ1（０）を、XCR1（ｍ）、XCQ1（ｍ）、CR1（０）およびCQ1（０）へ復号する。そして、サーバ側認証処理部８２は、今回（ｍ−１）のワンタイム認証用の再認証サーバ側ワンタイム認証子XS1（ｍ−１）を生成する。
【０１９３】
ワンタイム認証子XS1（ｍ−１）は、一方向性関数で計算される。この一方向性関数は、３つの引数をとり、引数の順序によって関数値の異なる関数である。この実施の形態では、この一方向性関数は、ハッシュ関数ｈｓである。
【０１９４】
ワンタイム認証子XS1（ｍ−１）は、次式に従って計算される。
【０１９５】
XS1（ｍ−１）＝ｈｓ（XSZ1，XSR1（ｍ−１），XCQ1（ｍ−１））
【０１９６】
ここで、ハッシュ関数ｈｓの第１引数には、XSZ1が使用され、第２引数には、XSR1（ｍ−１）が使用され、第３引数には、XCQ1（ｍ−１）が使用される。なお、ハッシュ関数ｈｓは、ハッシュ関数ｈｃと同一の関数でもよいし、異なる関数でもよい。
【０１９７】
また、サーバ側認証処理部８２は、所定の暗号化方式に従って、サーバ暗号鍵XSK1（ｍ−１）で、XSR1（ｍ）、XSQ1（ｍ）、SR1（０）およびSQ1（０）を暗号化する。なお、サーバ暗号鍵XSK1（ｍ−１）での暗号化後のXSR1（ｍ）、XSQ1（ｍ）、SR1（０）およびSQ1（０）を、XSK1（ｍ−１）＊XSR1（ｍ）、XSK1（ｍ−１）＊XSQ1（ｍ）、XSK1（ｍ−１）＊SR1（０）およびXSK1（ｍ−１）＊SQ1（０）と表現する。
【０１９８】
ステップＳ７７において、サーバ側認証処理部８２は、通信処理部８１を使用して、再認証サーバ側ワンタイム認証子XS1（ｍ−１）、XSK1（ｍ−１）＊XSR1（ｍ）、XSK1（ｍ−１）＊XSQ1（ｍ）、XSK1（ｍ−１）＊SR1（０）およびXSK1（ｍ−１）＊SQ1（０）を端末装置１へ送信する。このとき、通信処理部８１は、再認証サーバ側ワンタイム認証子XS1（ｍ−１）、XSK1（ｍ−１）＊XSR1（ｍ）、XSK1（ｍ−１）＊XSQ1（ｍ）、XSK1（ｍ−１）＊SR1（０）およびXSK1（ｍ−１）＊SQ1（０）を１つのメッセージとして送信する。
【０１９９】
なお、サーバ装置４から端末装置１へのメッセージのデータフォーマット（ワンタイム認証子のサイズと位置、および暗号化されたシードのサイズと位置）は、通常認証またはヘルスチェック認証と再認証とで異なる。
【０２００】
また、通常認証サーバ側ワンタイム認証子またはヘルスチェック認証サーバ側ワンタイム認証子と再認証サーバ側ワンタイム認証子は、同一のデータフォーマット（つまり、同一データ長）ではないが、端末装置１の認証処理部４３は、モードフラグMの値で通常認証かヘルスチェック認証か再認証かのモードを特定し、受信したワンタイム認証子を、特定したモードのワンタイム認証子として取り扱う。
【０２０１】
ステップＳ７８において、端末装置１の認証処理部４３は、通信処理部４２を使用して、そのメッセージを受信し、再認証サーバ側ワンタイム認証子XS1（ｍ−１）、XSK1（ｍ−１）＊XSR1（ｍ）、XSK1（ｍ−１）＊XSQ1（ｍ−１）、XSK1（ｍ−１）＊SR1（０）およびXSK1（ｍ−１）＊SQ1（０）を抽出する。そして、認証処理部４３は、モードフラグMの値に基づいて、受信したワンタイム認証子が再認証のワンタイム認証子であることを特定する。
【０２０２】
次に、認証処理部４３は、XSZ1、XSR1（ｍ−１）、XCQ1（ｍ−１）に基づいて、上述の式に従って正当な再認証ワンタイム認証子XS1（ｍ−１）の値を計算し、受信した再認証ワンタイム認証子XS1（ｍ−１）が、計算した値に一致するか否かを判定する。
【０２０３】
このとき、受信したワンタイム認証子XS1（ｍ−１）が、計算した値に一致しない場合、認証処理部４３は、認証失敗と判定し、処理を終了する。この場合、記憶装置２のシード１０１とクライアント暗号鍵およびサーバ暗号鍵は更新しない。
【０２０４】
受信したワンタイム認証子XS1（ｍ−１）が、計算した値に一致した場合、認証処理部４３は、認証成功と判定し、保持しているサーバ再認証暗号鍵XSK1（ｍ−１）で、XSK1（ｍ−１）＊XSR1（ｍ）およびXSK1（ｍ−１）＊XSQ1（ｍ）を、XSR1（ｍ）およびXSQ1（ｍ）へ復号し、この値を次回認証用サーバ側再認証シードにセットし、保持しているサーバ再認証暗号鍵XSK1（ｍ−１）で、XSK1（ｍ−１）＊SR1（０）およびXSK1（ｍ−１）＊SQ1（０）を、SR1（０）およびSQ1（０）へ復号し、この値を、次回認証用サーバ側通常認証シードにセットする。  
【０２０５】
ステップＳ７９において、認証処理部４３は、次回認証用クライアント側再認証共通暗号鍵XCK1（ｍ）および次回認証用サーバ側再認証共通暗号鍵XSK1（ｍ）を次式に従って計算し、クライアント側再認証共通暗号鍵およびサーバ側再認証共通暗号鍵を更新し、次回認証用クライアント側通常認証共通暗号鍵CK1（０）および次回認証用サーバ側通常認証共通暗号鍵SK1（０）を次式に従って計算し、クライアント側通常認証共通暗号鍵およびサーバ側通常認証共通暗号鍵を更新する。  
【０２０６】
XCK1（ｍ）＝ｈｋ（XCR1（ｍ），XCQ1（ｍ），XCK1（ｍ−１））
XSK1（ｍ）＝ｈｋ（XSR1（ｍ），XSQ1（ｍ），XSK1（ｍ−１））
CK1（０）＝ｈｋ（CR1（０），CQ1（０），XCK1（ｍ−１））
SK1（０）＝ｈｋ（SR1（０），SQ1（０），XSK1（ｍ−１））
【０２０７】
ここで、ｈｋは、一方向性関数であって、かつハッシュ関数である。
ステップＳ８０において、認証処理部４３は、記憶装置２の再認証シードおよび通常認証シードを含むシード１０１、および再認証のクライアント側およびサーバ側共通暗号鍵並びに通常認証のクライアント側およびサーバ側共通暗号鍵を更新する。
【０２０８】
ステップＳ８１において、サーバ装置４のサーバ側認証処理部８２は、再認証次回認証用クライアント側共通暗号鍵XCK1（ｍ）および再認証次回認証用サーバ側共通暗号鍵XSK1（ｍ）および通常認証次回認証用クライアント側共通暗号鍵CK1（０）および通常認証次回認証用サーバ暗号鍵SK1（０）を上述の式に従って計算し、再認証クライアント側共通暗号鍵および再認証サーバ側共通暗号鍵および通常認証クライアント側共通暗号鍵および通常認証サーバ側共通暗号鍵を更新する。
【０２０９】
ステップＳ８２において、サーバ装置４のサーバ側認証処理部８２は、再認証の次回のワンタイム認証時に使用するクライアント側ワンタイム認証子XC1（ｍ）を、XCZ1、XCR1（ｍ）およびXSQ1（ｍ）から、上述の式に従って計算する。そして、サーバ側認証処理部８２は、XCR1（ｍ）、XCQ1（ｍ）、XSR1（ｍ）、XSQ1（ｍ）、XCK1（ｍ）およびXSK1（ｍ）で、シードテーブル７１における、再認証のデータを更新する。そして、サーバ側認証処理部８２は、通常認証の次回のワンタイム認証時に使用するクライアント側ワンタイム認証子C1（０）を、CZ1およびCR1（０）およびSQ1（０）から、通常認証の次回のワンタイム認証子を上述の式に従って計算する。そして、サーバ側認証処理部８２は、CR1（０）、CQ1（０）、SR1（０）、SQ1（０）、CK1（０）およびSK1（０）で、シードテーブル７１における、通常認証のデータを更新する。これにより、これらの値が、次回のセッション（つまり、次回の通常認証）まで保持される。
【０２１０】
このようにして、再認証でのワンタイム認証が実行され、通常認証シードの初期設定が実行される。
【０２１１】
次に、ステップＳ７５の詳細について説明する。
図１４は、ステップＳ７５の詳細を説明するフローチャートである。
【０２１２】
ステップＳ１５１において、サーバ装置４では、サーバ側認証処理部８２は、再認証乱数ＸＳＲを生成し、次回認証用サーバ側シードXSR1（ｍ）にセットする。
【０２１３】
ステップＳ１５２において、サーバ側認証処理部８２は、再認証乱数XSQを作成する。
【０２１４】
ステップＳ１５３において、サーバ側認証処理部８２は、この再認証乱数XSQを次回再認証サーバ側シードに使用した場合に、次回再認証クライアント側ワンタイム認証子が、通常認証テーブル７２ａに登録されているクライアント側ワンタイム認証子に一致するか否かを判定する。つまり、生成した再認証乱数XSQを使用した場合のクライアント側ワンタイム認証子の一意性（つまり、同じ値のクライアント側ワンタイム認証子が存在しないこと）が確保されるか否かが判定される。
この時、サーバ側認証処理部８２は、次式に従って、この再認証乱数XSQを次回再認証サーバ側シードに使用した場合の、次回再認証クライアント側認証子Ｘ１を計算し、このワンタイム認証子が、通常認証テーブル７２ａに登録されているか否かを判定する。
Ｘ１＝ｈａｓｈ１｛XCZ1，XCR1（ｍ），XSQ｝
ステップＳ１５４において、サーバ側認証処理部８２は、この再認証乱数XSQを次回再認証サーバ側シードに使用した場合に、次回再認証クライアント側ワンタイム認証子が、再認証テーブル７２ｂに登録されているクライアント側ワンタイム認証子に一致するか否かを判定する。
【０２１５】
そして、生成した再認証乱数XSQで一意性が確保されないと判定した場合、サーバ側認証処理部８２は、一意性が確保されるまで、再認証乱数XSQを再生成する。一方、生成した再認証乱数XSQで一意性が確保されると判定した場合、ステップＳ１５５へ移る。
【０２１６】
ステップＳ１５５において、サーバ側認証処理部８２は、再認証乱数XSQを、次回再認証用サーバ側シードXSQ1（ｍ）にセットする。
【０２１７】
ステップＳ１５６において、サーバ装置４では、サーバ側認証処理部８２は、乱数ＳＲを生成し、次回認証用サーバ側シードSR1（０）にセットする。
【０２１８】
ステップＳ１５７において、サーバ側認証処理部８２は、乱数SQを作成する。
【０２１９】
ステップＳ１５８において、サーバ側認証処理部８２は、この乱数SQを次回通常認証サーバ側シードに使用した場合に、次回通常認証クライアント側ワンタイム認証子が、通常認証テーブル７２ａに登録されているクライアント側ワンタイム認証子に一致するか否かを判定する。つまり、生成した乱数SQを使用した場合のクライアント側ワンタイム認証子の一意性（つまり、同じ値のクライアント側ワンタイム認証子が存在しないこと）が確保されるか否かが判定される。
この時、サーバ側認証処理部８２は、次式に従って、この乱数ＳＱを次回通常認証サーバ側シードに使用した場合の、次回通常認証クライアント側認証子Ｘ２を計算し、このワンタイム認証子が、通常認証テーブル７２ａに登録されているか否かを判定する。
Ｘ２＝ｈａｓｈ１｛CZ1，CR1（０），SQ｝
ステップＳ１５９において、サーバ側認証処理部８２は、この乱数SQを次回通常認証サーバ側シードに使用した場合に、次回通常認証クライアント側ワンタイム認証子が、再証テーブル７２ｂに登録されているクライアント側ワンタイム認証子に一致するか否かを判定する。
【０２２０】
そして、生成した乱数SQで一意性が確保されないと判定した場合、サーバ側認証処理部８２は、一意性が確保されるまで、乱数ＳＱを再生成する。一方、生成した乱数SQで一意性が確保されると判定した場合、ステップＳ１６０へ移る。
【０２２１】
ステップＳ１６０において、サーバ側認証処理部８２は、乱数SQを、次回通常認証用サーバ側シードSQ1（０）にセットする。
【０２２２】
次に、ステップＳ８２の詳細について説明する。
図１５は、ステップＳ８２の詳細を説明するフローチャートである。
【０２２３】
ステップＳ１７１において、サーバ側認証処理部８２は、シードテーブル７１に、その管理番号の次回認証用のシードおよび共通暗号鍵XCR1（ｍ），XCQ1（ｍ），XSR1（ｍ），XSQ1（ｍ），XCK1（ｍ），XSK1（ｍ），CR1（０），CQ1（０），SR1（０），SQ1（０），CK1（０），およびSK1（０）を書き込む。
【０２２４】
ステップＳ１７２において、ステップＳ１５３、Ｓ１５４での判定時に計算したＸ１を、次回再認証クライアント側ワンタイム認証子XC1（ｍ）とし、そのXC1（ｍ）で、再認証テーブル７２ｂにおいて、その管理番号に関連付けられているワンタイム認証子を更新する。
すなわち、サーバ側認証処理部８２は、その管理番号に関連付けられている再認証アドレスをシードテーブル７１から読み出し、その再認証アドレスで、再認証テーブル７２ｂにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム認証子を更新する。
【０２２５】
ステップＳ１７３において、サーバ側認証処理部８２は、再認証テーブル７２ｂ内のレコードをワンタイム認証子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル７１においてそのレコードの管理番号に関連付けられている再認証アドレスを更新する。
【０２２６】
ステップＳ１７４において、ステップＳ１５８、Ｓ１５９での判定時に計算したＸ２を、次回通常認証クライアント側ワンタイム認証子C1（０）とし、そのC1（０）で、通常認証テーブル７２ａにおいて、その管理番号に関連付けられているワンタイム認証子を更新する。
すなわち、サーバ側認証処理部８２は、その管理番号に関連付けられている通常認証アドレスをシードテーブル７１から読み出し、その通常認証アドレスで、通常認証テーブル７２ａにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム認証子を更新する。
【０２２７】
ステップＳ１７５において、サーバ側認証処理部８２は、通常認証テーブル７２ａ内のレコードをワンタイム認証子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル７１においてそのレコードの管理番号に関連付けられている通常認証アドレスを更新する。
【０２２８】
［実施の形態1の変形例１］
今回のクライアント側ワンタイム認証子は、次式で得られる。
C1（ｎ−１）＝ｈａｓｈ１｛CZ1，CR1（ｎ−１）、SQ1（ｎ−１）｝
【０２２９】
３つの引数の内、CZ1は、隠蔽固定情報であり、CR1（ｎ−１）とSQ1（ｎ−１）は、前回のワンタイム認証の終了時にシード１０１に書き込まれた値であるから、C1（ｎ−１）は、前回のワンタイム認証の終了時に決まっている値である。したがって、前回のワンタイム認証の終了時に、今回のクライアント側ワンタイム認証子C1（ｎ−１）の値を求めてシード１０１に書き込んでおくように、実施の形態1を変形することが可能である。この変形例によれば、今回の認証処理の冒頭のステップＳ２４において、ハッシュ回路を使ってクライアント側ワンタイム認証子を計算するステップを省くことができるから、今回の認証に要する時間を短縮することができる。
【０２３０】
［実施の形態1の変形例２］
実施の形態1では、クライアント側の乱数CR，CQは端末装置１で発生させていた。これらの乱数もサーバ側で発生するように変更すれば、仮に、悪意ある第三者に端末装置１を調べられても、乱数発生の仕組みを知られることがなくなる。
【０２３１】
図１６は、このように全ての乱数をサーバ装置側で発生させるようにした場合の通常認証のフローを示す図である。
図７と比較して変更のあるステップのみを説明する。
【０２３２】
ステップＳ１８１では、クライアント側ワンタイム認証子C1（ｎ−１）と、暗号化された要求コードCK1（ｎ−１）＊RQST（ｎ）をサーバ装置４へ送信する。
【０２３３】
ステップＳ１８２では、サーバ側認証処理部８２は、乱数CR，CQ，SRおよびSQを生成する。そして、乱数CRおよびCQを、次回認証用クライアント側通常認証シードCR1（ｎ）およびCQ1（ｎ）にセットする。また乱数SRおよびSQを、次回認証用サーバ側通常認証シードSR1（ｎ）およびSQ1（ｎ）にセットする。
【０２３４】
ステップＳ１８３では、サーバ側認証処理部８２は、通信処理部８１を使用して、ワンタイム認証子S1（ｎ−１）、SK1（ｎ−１）＊CR1（ｎ），SK1（ｎ−１）＊CQ1（ｎ），SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ）を端末装置１へ送信する。このとき、通信処理部８１は、ワンタイム認証子S1（ｎ−１）、SK1（ｎ−１）＊CR1（ｎ），SK1（ｎ−１）＊CQ1（ｎ），SK1（ｎ−１）＊SR1（ｎ）およびSK1（ｎ−１）＊SQ1（ｎ）を１つのメッセージとして送信する。
【０２３５】
図１７にステップＳ１８２の詳細を示す。図１０と比較して変更のあるステップのみを説明する。
【０２３６】
ステップＳ１９１では、サーバ側認証処理部８２は、乱数CR，CQ，SRを生成し、次回認証用クライアント側シードCR1（ｎ），CQ1（ｎ），および次回認証用サーバ側シードSR1（ｎ）にセットする。
【０２３７】
ヘルスチェック認証および再認証のフローについても、同様に、全ての乱数をサーバ装置側で発生させるように変形することができる。
【０２３８】
上述の実施の形態に対する様々な変更および修正については、その主題の趣旨および範囲から離れることなく、かつ意図された利点を弱めることなく行われてもよい。つまり、そのような変更および修正が特許請求の範囲に含まれることを意図している。
【０２３９】
例えば、上記実施の形態１において、再認証での相互認証で通常認証のシードを復旧したように、再認証での相互認証に失敗したときに、再々認証モードでの相互認証で、再認証のシードを復旧するようにしてもよい。
【０２４０】
また、上記実施の形態１において、サーバ装置４のサーバ側認証処理部８２は、サーバ装置４の起動時に、シードテーブル７１および認証子テーンブル７２を記憶装置５５からＲＡＭ５３へ読み出し、ワンタイム認証子に基づく相互認証を、ＲＡＭ５３上のシードテーブル７１および認証子テーブル７２に基づいて実行し、サーバ装置４のシャットダウン時に、ＲＡＭ５３上のシードテーブル７１および認証子テーブル７２で、記憶装置５５上のシードテーブル７１および認証子テーブル７２を更新するようにしてもよい。
【符号の説明】
【０２４１】
１      端末装置
２      記憶装置
３      ネットワーク
４      サーバ装置
３１    ワンタイム認証プログラム
４２    通信処理部
４３    認証処理部
５１    ＣＰＵ
５２    ＲＯＭ
５３    ＲＡＭ
５４    Ｉ／Ｆ
５５    記憶装置
５６    Ｉ／Ｆ
５７    通信装置
６１    ワンタイム認証プログラム
７１    シードテーブル
７２    認証子テーブル
７２ａ  通常認証テーブル
７２ｂ  再認証テーブル
８１    通信処理部
８２    サーバ側認証処理部
１０１  シード
２０１  表示部
２０２  操作部
２０３  記憶部
２０４  電源部
２０５  制御部
２０６  ＲＯＭ
２０７  ＲＡＭ
２０８  ＮＦＣ通信部
２０９  無線ＬＡＮ通信部
２１０  公衆無線通信部
【図１】
2018037876.tif 000003
【図２】
2018037876.tif 000004
【図３】
2018037876.tif 000005
【図４】
2018037876.tif 000006
【図５】
2018037876.tif 000007
【図６】
2018037876.tif 000008
【図７】
2018037876.tif 000009
【図８】
2018037876.tif 000010
【図９】
2018037876.tif 000011
【図１０】
2018037876.tif 000012
【図１１】
2018037876.tif 000013
【図１２】
2018037876.tif 000014
【図１３】
2018037876.tif 000015
【図１４】
2018037876.tif 000016
【図１５】
2018037876.tif 000017
【図１６】
2018037876.tif 000018
【図１７】
2018037876.tif 000019