(57)【要約】この認証システムでは、複数のクライアント装置が、クライアント乱数Ｒ（ｉ）およびサーバ乱数Ｑ（ｉ）から生成されたワンタイムＩＤによりサーバ装置により認証を受ける。サーバ装置は、次の通信単位についてのクライアント装置のワンタイムＩＤ：Ｃ（ｉ＋１）の生成に使用されるサーバ装置のサーバ乱数Ｑ（ｉ＋１）を生成する際に、複数のうちのいずれかのクライアント装置に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数Ｑ（ｉ＋１）を生成しクライアント装置２へ送信する。
2008035450.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアント装置または前記クライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証サーバ装置により認証する認証システムであって、
前記クライアント装置は、
内蔵記憶媒体または前記データ格納機器に格納された現通信単位の前記認証サーバ装置のサーバ乱数と前記クライアント装置または前記データ格納機器のクライアント乱数とを読み出しそれらの乱数を引数としたハッシュ関数の値に基づいて当該クライアント装置または前記データ格納機器のワンタイムＩＤを生成する第１のワンタイムＩＤ生成手段と、
前記所定の通信単位ごとにクライアント乱数を生成する第１の乱数生成手段と、
前記第１のワンタイムＩＤ生成手段による現通信単位のワンタイムＩＤおよび前記第１の乱数生成手段による次の通信単位のクライアント乱数を前記認証サーバ装置に送信する第１の送信手段と、
前記認証サーバ装置から、現通信単位の前記認証サーバ装置のワンタイムＩＤおよび次の通信単位のサーバ乱数を受信する第１の受信手段と、
前記第１の受信手段により受信されたワンタイムＩＤとに基づいて前記認証サーバ装置の正当性を判断する第１の認証手段とを備え、
前記認証サーバ装置は、
各クライアント装置または各データ格納機器のワンタイムＩＤを格納する記憶手段と、
前記所定の通信単位ごとに前記サーバ乱数を生成する第２の乱数生成手段と、
前記クライアント装置の現通信単位のワンタイムＩＤおよび次の通信単位のクライアント乱数を前記クライアント装置から受信する第２の受信手段と、
前記記憶手段におけるワンタイムＩＤと前記第２の受信手段により受信されたワンタイムＩＤとに基づき前記クライアント装置または前記データ格納機器の正当性を判断する第２の認証手段と、
前記第２の乱数生成手段による次の通信単位のサーバ乱数と前記第２の受信手段により受信された次の通信単位のクライアント乱数とを引数としたハッシュ関数の値に基づいて前記クライアント装置または前記データ格納機器の次の通信単位のワンタイムＩＤを生成し、このワンタイムＩＤが、前記記憶手段に格納されている複数のワンタイムＩＤのいずれかと同一である場合には、前記第２の乱数生成手段により再度生成されたサーバ乱数と前記第２の受信手段により受信されたクライアント乱数とを引数としたハッシュ関数の値に基づいて前記ワンタイムＩＤを再度生成し、このワンタイムＩＤが、前記記憶手段に格納されている複数のワンタイムＩＤのいずれとも同一ではない場合には、そのワンタイムＩＤで前記記憶手段における前記クライアント装置またはデータ格納機器のワンタイムＩＤを更新するクライアントワンタイムＩＤ生成手段と、
現通信単位の前記サーバ乱数と前記第２の受信手段により受信された前記次の通信単位のクライアント乱数とを引数としたハッシュ関数の値に基づいて現通信単位の前記認証サーバ装置のワンタイムＩＤを生成する第２のワンタイムＩＤ生成手段と、
現通信単位の前記認証サーバ装置のワンタイムＩＤおよび前記次の通信単位のサーバ乱数を前記クライアント装置へ送信する第２の送信手段とを備えること、
を特徴とする認証システム。
【請求項２】
複数のクライアント装置または前記クライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証する認証サーバ装置であって、
いずれかの前記クライアント装置により生成されたクライアント乱数を受信する受信手段と、
サーバ乱数を生成する乱数生成手段と、
前記所定の通信単位ごとに更新される前記クライアント乱数と前記サーバ乱数とを引数とした一方向性関数で前記クライアント装置または前記データ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、前記乱数生成手段によりサーバ乱数を再生成させ再生成されたサーバ乱数を使用して前記次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成手段と、
前記次の通信単位のワンタイムＩＤの生成に使用された前記サーバ乱数を前記クライアント装置に送信する送信手段と、
次の通信単位で、前記クライアントワンタイムＩＤ生成手段により生成された前記ワンタイムＩＤに基づいて前記クライアント装置または前記データ格納機器の正当性を判断する認証手段と、
を備えることを特徴とする認証サーバ装置。
【請求項３】
各クライアント装置または各データ格納機器のワンタイムＩＤを格納する記憶手段を備え、
前記受信手段は、現通信単位についての前記クライアント乱数および前記サーバ乱数から生成された前記ワンタイムＩＤと次の通信単位の前記クライアント乱数とを前記クライアント装置から受信し、
前記認証手段は、前記受信手段により受信された前記ワンタイムＩＤと前記記憶手段における前記ワンタイムＩＤとに基づき前記クライアント装置またはデータ格納機器の正当性を判断し、
前記クライアントワンタイムＩＤ生成手段は、前記認証手段により前記クライアント装置またはデータ格納機器が正当なものであると判断された後に、前記次の通信単位のサーバ乱数と前記次の通信単位のクライアント乱数とを引数とした一方向性関数の値に基づいて前記クライアント装置または前記データ格納機器についての次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤが、前記記憶手段に格納されている複数のワンタイムＩＤのいずれかと同一である場合には、前記乱数生成手段により再生成された前記次の通信単位のサーバ乱数と前記次の通信単位のクライアント乱数とを引数とした一方向性関数の値に基づいて前記ワンタイムＩＤを再度生成し、生成したワンタイムＩＤが、前記記憶手段に格納されている複数のワンタイムＩＤのいずれとも同一ではない場合には、生成したワンタイムＩＤで、前記記憶手段における前記クライアント装置または前記データ格納機器のワンタイムＩＤを更新すること、
を特徴とする請求項２記載の認証サーバ装置。
【請求項４】
前記サーバ乱数を暗号化する暗号化手段を備え、
前記乱数生成手段は、前記クライアント乱数および前記サーバ乱数が消失した場合に、前記サーバ乱数の初期値を新たに生成し、
前記クライアントワンタイムＩＤ生成手段は、前記サーバ乱数の初期値を使用して前記ワンタイムＩＤを生成し、
前記暗号化手段は、前記クライアント装置から認証要求とともに受信したワンタイムＩＤに基づいて生成された暗号鍵で前記サーバ乱数の初期値を暗号化し、
前記送信手段は、前記クライアント乱数および前記サーバ乱数が消失したことを通知するデータ、並びに暗号化された前記サーバ乱数の初期値を、前記クライアント装置に送信すること、
を特徴とする請求項２記載の認証サーバ装置。
【請求項５】
前記記憶手段は、前記クライアント装置または前記データ格納機器のそれぞれについて、連続する２つの通信単位のワンタイムＩＤを格納し、
前記認証手段は、当該認証サーバ装置からの前記次の通信単位のサーバ乱数が前記クライアント装置により受信されず受信エラーが発生した場合には、前記受信手段により受信された前記ワンタイムＩＤと前記記憶手段における２つのワンタイムＩＤのうちの古いワンタイムＩＤとに基づき前記クライアント装置またはデータ格納機器の正当性を判断し、前記クライアント装置からのワンタイムＩＤが前記受信手段により受信されず受信エラーが発生した場合には、前記受信手段により受信された前記ワンタイムＩＤと前記記憶手段における２つのワンタイムＩＤのうちの新しいワンタイムＩＤとに基づき前記クライアント装置またはデータ格納機器の正当性を判断し、
前記クライアントワンタイムＩＤ生成手段は、前記ワンタイムＩＤを生成する際に、生成したワンタイムＩＤが、前記記憶手段に格納されているすべてのワンタイムＩＤのいずれかと同一である場合には、前記乱数生成手段により再生成された前記次の通信単位のサーバ乱数と前記次の通信単位のクライアント乱数とを引数とした一方向性関数の値に基づいて前記ワンタイムＩＤを再度生成すること、
を特徴とする請求項３記載の認証サーバ装置。
【請求項６】
前記送信手段は、前記クライアントワンタイムＩＤ生成手段により生成された前記次の通信単位のワンタイムＩＤを前記クライアント装置に送信せずに、前記クライアント装置において次の通信単位のワンタイムＩＤが生成される際に使用される前記次の通信単位のサーバ乱数を送信することを特徴とする請求項２記載の認証サーバ装置。
【請求項７】
前記クライアントワンタイムＩＤ生成手段は、前記クライアント装置のそれぞれまたは前記データ格納機器のそれぞれについて生成されたサーバ乱数を使用して、前記クライアント装置のそれぞれまたは前記データ格納機器のそれぞれについての前記ワンタイムＩＤを生成することを特徴とする請求項２記載の認証サーバ装置。
【請求項８】
前記クライアントワンタイムＩＤ生成手段は、通信プロトコルおよびポート番号のいずれかごとにワンタイムＩＤを生成し、
前記認証手段は、前記クライアント装置と前記受信手段との通信に使用される通信プロトコルおよびポート番号のいずれかに応じたワンタイムＩＤで前記クライアント装置の正当性を判断すること、
を特徴とする請求項２記載の認証サーバ装置。
【請求項９】
現通信単位のサーバ乱数、および前記受信手段により受信された次の通信単位のクライアント乱数を引数とした一方向性関数の値に基づいて当該認証サーバ装置のワンタイムＩＤを生成するワンタイムＩＤ生成手段を備え、
前記送信手段は、前記次の通信単位のサーバ乱数とともに、当該認証サーバ装置のワンタイムＩＤを送信すること、
を特徴とする請求項３記載の認証サーバ装置。
【請求項１０】
通信単位ごとに更新される可変共通鍵で復号をする復号手段と、
前記可変共通鍵で暗号化をする暗号化手段とを備え、
前記受信手段は、前記可変共通鍵で暗号化された前記次の通信単位のクライアント乱数を前記クライアント装置から受信し、
前記復号手段は、前記認証手段により前記クライアント装置または前記データ格納機器が正当なものであると判断された後に、前記受信手段により受信された前記次の通信単位のクライアント乱数を復号し、
前記暗号化手段は、前記次の通信単位のサーバ乱数を前記可変共通鍵で暗号化し、
前記送信手段は、暗号化された前記次の通信単位のサーバ乱数とともに、当該認証サーバ装置のワンタイムＩＤを送信すること、
を特徴とする請求項９記載の認証サーバ装置。
【請求項１１】
現通信単位の前記可変共通鍵と次の通信単位の前記クライアント乱数と次の通信単位の前記サーバ乱数とを引数とした一方向性関数の値に基づき次の通信単位の前記可変共通鍵を生成し、前記可変共通鍵を更新する共通鍵更新手段を備えることを特徴とする請求項１０記載の認証サーバ装置。
【請求項１２】
前記一方向性関数は、暗号鍵を使用せずにダイジェストを生成するハッシュ関数であることを特徴とする請求項２記載の認証サーバ装置。
【請求項１３】
複数のクライアント装置または前記クライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証する認証サーバ装置としてコンピュータを機能させるコンピュータプログラムであって、
サーバ乱数を生成する乱数生成手段、
前記サーバ乱数と前記クライアント装置により生成され前記所定の通信単位ごとに更新される前記クライアント乱数とを引数とした一方向性関数で前記クライアント装置または前記データ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、前記乱数生成手段によりサーバ乱数を再生成させ再生成されたサーバ乱数を使用して前記次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成手段、並びに
次の通信単位で、前記クライアントワンタイムＩＤ生成手段により生成された前記ワンタイムＩＤに基づいて前記クライアント装置または前記データ格納機器の正当性を判断する認証手段、
としてコンピュータを機能させるコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１４】
複数のクライアント装置または前記クライアント装置から直接読み書き可能な複数のデータ格納機器に割り当てられる所定の通信単位ごとに変化するワンタイムＩＤを認証サーバ装置で管理するワンタイムＩＤ管理方法であって、
いずれかの前記クライアント装置により生成されたクライアント乱数を受信する受信ステップと、
サーバ乱数を生成する乱数生成ステップと、
前記サーバ乱数と前記所定の通信単位ごとに更新される前記クライアント乱数とを引数とした一方向性関数で前記クライアント装置または前記データ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、前記乱数生成ステップにてサーバ乱数を再生成し再生成したサーバ乱数を使用して前記次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成ステップと、
前記次の通信単位のワンタイムＩＤの生成に使用された前記サーバ乱数を前記クライアント装置に送信する送信ステップと、
次の通信単位で、前記クライアントワンタイムＩＤ生成ステップにて生成された前記ワンタイムＩＤに基づいて前記クライアント装置または前記データ格納機器の正当性を判断する認証ステップと、
を備えることを特徴とするワンタイムＩＤ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、ワンタイムＩＤによる認証に関するものである。
【背景技術】
【０００２】  耐タンパ性を向上させるためにセッションごとにパスワードを変更して認証処理を行う技術としてワンタイムパスワードがある。ワンタイムパスワードを使用する場合でも、認証を受けるユーザまたは機器を特定するために固有ＩＤ（識別情報）が必要になる。【０００３】  固有ＩＤとワンタイムパスワードを認証に使用する場合、固有ＩＤは、認証を行うセッションごとに変更されず一定のものとされる。したがって、固有ＩＤを盗聴することで、認証を受けるユーザまたは機器が特定される可能性がある。【０００４】  そこで、定期的にまたはセッション毎にＩＤを変更するワンタイムＩＤという技術が提案されている（例えば、文献１参照）。【０００５】  文献１：国際公開公報ＷＯ２００４／０１９５５３
【発明の開示】
【発明が解決しようとする課題】
【０００６】  しかしながら、上記文献１では、ワンタイムＩＤの生成に擬似乱数関数が使用されており、擬似乱数関数の値に衝突が発生すると、同一のＩＤが複数のユーザまたは機器に割り当てられる可能性がある。同一のＩＤが複数のユーザまたは機器に割り当てられた場合、ユーザまたは機器を一意に特定できないという問題がある。また、衝突が発生せず一意性を確保できる関数を使用する場合、演算量が増えたり、関数値から引数値が推測されやすくなる可能性がある。【０００７】  そこで、本発明は、固有ＩＤを使用せずに、高い耐タンパ性を維持しつつ、一方向性関数の値に基づくワンタイムＩＤで、機器を短時間で一意に特定可能な認証を行うことを目的とする。
【課題を解決するための手段】
【０００８】  上記の課題を解決するために、本発明では以下のようにした。【０００９】  本発明に係る認証システムは、複数のクライアント装置またはクライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証サーバ装置により認証する。クライアント装置は、第１のワンタイムＩＤ生成手段と、第１の乱数生成手段と、第１の送信手段と、第１の受信手段と、第１の認証手段とを備える。第１のワンタイムＩＤ生成手段は、内蔵記憶媒体またはデータ格納機器に格納された現通信単位の認証サーバ装置のサーバ乱数とクライアント装置またはデータ格納機器のクライアント乱数とを読み出しそれらの乱数を引数としたハッシュ関数の値に基づいて当該クライアント装置またはデータ格納機器のワンタイムＩＤを生成する。第１の乱数生成手段は、所定の通信単位ごとにクライアント乱数を生成する。第１の送信手段は、第１のワンタイムＩＤ生成手段による現通信単位のワンタイムＩＤおよび第１の乱数生成手段による次の通信単位のクライアント乱数を認証サーバ装置に送信する。第１の受信手段は、認証サーバ装置から、現通信単位の認証サーバ装置のワンタイムＩＤおよび次の通信単位のサーバ乱数を受信する。第１の認証手段は、第１の受信手段により受信されたワンタイムＩＤとに基づいて認証サーバ装置の正当性を判断する。【００１０】  また、認証サーバ装置は、記憶手段と、第２の乱数生成手段と、第２の受信手段と、第２の認証手段と、クライアントワンタイムＩＤ生成手段と、第２のワンタイムＩＤ生成手段と、第２の送信手段とを備える。記憶手段は、各クライアント装置または各データ格納機器のワンタイムＩＤを格納する。第２の乱数生成手段は、所定の通信単位ごとにサーバ乱数を生成する。第２の受信手段は、クライアント装置の現通信単位のワンタイムＩＤおよび次の通信単位のクライアント乱数をクライアント装置から受信する。第２の認証手段は、記憶手段におけるワンタイムＩＤと第２の受信手段により受信されたワンタイムＩＤとに基づきクライアント装置またはデータ格納機器の正当性を判断する。クライアントワンタイムＩＤ生成手段は、第２の乱数生成手段による次の通信単位のサーバ乱数と第２の受信手段により受信された次の通信単位のクライアント乱数とを引数としたハッシュ関数の値に基づいてクライアント装置またはデータ格納機器の次の通信単位のワンタイムＩＤを生成し、このワンタイムＩＤが、記憶手段に格納されている複数のワンタイムＩＤのいずれかと同一である場合には、第２の乱数生成手段により再度生成されたサーバ乱数と第２の受信手段により受信されたクライアント乱数とを引数としたハッシュ関数の値に基づいてワンタイムＩＤを再度生成し、そうでない場合には、そのワンタイムＩＤで記憶手段におけるクライアント装置またはデータ格納機器のワンタイムＩＤを更新する。第２のワンタイムＩＤ生成手段は、現通信単位のサーバ乱数と第２の受信手段により受信された次の通信単位のクライアント乱数とを引数としたハッシュ関数の値に基づいて現通信単位の認証サーバ装置のワンタイムＩＤを生成する。第２の送信手段は、現通信単位の認証サーバ装置のワンタイムＩＤおよび次の通信単位のサーバ乱数をクライアント装置へ送信する。【００１１】  これによれば、クライアント装置のワンタイムＩＤの生成に使用されるサーバ装置のサーバ乱数が生成される際に、いずれかのクライアント装置に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数を生成している。また、ハッシュ関数により短時間でワンタイムＩＤが生成される。これにより、高い耐タンパ性を維持しつつ、固有ＩＤを送受しなくても、一方向性関数の値に基づくワンタイムＩＤで、クライアント装置またはデータ格納機器を短時間で一意に特定することが可能になる。【００１２】  本発明に係る認証サーバ装置は、複数のクライアント装置またはクライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証する。この認証サーバ装置は、受信手段と、乱数生成手段と、クライアントワンタイムＩＤ生成手段と、送信手段と、認証手段とを備える。受信手段は、いずれかのクライアント装置により生成されたクライアント乱数を受信する。乱数生成手段は、サーバ乱数を生成する。クライアントワンタイムＩＤ生成手段は、通信単位ごとに更新されるクライアント乱数とサーバ乱数とを引数とした一方向性関数でクライアント装置またはデータ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、乱数生成手段によりサーバ乱数を再生成させ再生成されたサーバ乱数を使用して次の通信単位のワンタイムＩＤを再度生成する。送信手段は、次の通信単位のワンタイムＩＤの生成に使用されたサーバ乱数をクライアント装置に送信する。認証手段は、次の通信単位で、クライアントワンタイムＩＤ生成手段により生成されたワンタイムＩＤに基づいてクライアント装置またはデータ格納機器の正当性を判断する。【００１３】  これによれば、クライアント装置のワンタイムＩＤの生成に使用される認証サーバ装置のサーバ乱数が生成される際に、いずれかのクライアント装置に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数を生成している。これにより、高い耐タンパ性を維持しつつ、固有ＩＤを送受しなくても、一方向性関数の値に基づくワンタイムＩＤで、クライアント装置またはデータ格納機器を短時間で一意に特定することが可能になる。【００１４】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置に加え、次のようにしてもよい。この場合、認証サーバ装置は、各クライアント装置または各データ格納機器のワンタイムＩＤを格納する記憶手段を備える。そして、受信手段は、現通信単位についてのクライアント乱数およびサーバ乱数から生成されたワンタイムＩＤと次の通信単位のクライアント乱数とをクライアント装置から受信し、認証手段は、受信手段により受信されたワンタイムＩＤと記憶手段におけるワンタイムＩＤとに基づきクライアント装置またはデータ格納機器の正当性を判断する。クライアントワンタイムＩＤ生成手段は、認証手段によりクライアント装置またはデータ格納機器が正当なものであ���と判断された後に、次の通信単位のサーバ乱数と次の通信単位のクライアント乱数とを引数とした一方向性関数の値に基づいてクライアント装置またはデータ格納機器についての次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤが、記憶手段に格納されている複数のワンタイムＩＤのいずれかと同一である場合には、乱数生成手段により再生成された次の通信単位のサーバ乱数と次の通信単位のクライアント乱数とを引数とした一方向性関数の値に基づいてワンタイムＩＤを再度生成し、生成したワンタイムＩＤが、記憶手段に格納されている複数のワンタイムＩＤのいずれとも同一ではない場合には、生成したワンタイムＩＤで、記憶手段におけるクライアント装置またはデータ格納機器のワンタイムＩＤを更新する。【００１５】  これによれば、現通信単位のワンタイムＩＤに基づきクライアント装置またはデータ格納機器が正当なものであると判断された後に、直ちに同一の通信単位内で、そのクライアント装置またはデータ格納機器の次の通信単位のワンタイムＩＤが生成され、記憶手段におけるそのクライアント装置またはデータ格納機器のワンタイムＩＤが更新される。これにより、ワンタイムＩＤを盗聴した第三者がそのワンタイムＩＤを使用した場合でもその第三者の機器が正当なクライアント装置またはデータ格納機器と特定されることを防止できる。つまり、ワンタイムＩＤが盗聴された場合でも、正当な機器を一意に特定することができる。【００１６】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置のいずれかに加え、次のようにしてもよい。この場合、認証サーバ装置は前記サーバ乱数を暗号化する暗号化手段を備える。そして、乱数生成手段は、クライアント乱数およびサーバ乱数が消失した場合に、サーバ乱数の初期値を新たに生成する。クライアントワンタイムＩＤ生成手段は、サーバ乱数の初期値を使用してワンタイムＩＤを生成する。暗号化手段は、クライアント装置から認証要求とともに受信したワンタイムＩＤに基づいて生成された暗号鍵でサーバ乱数の初期値を暗号化する。送信手段は、クライアント乱数およびサーバ乱数が消失したことを通知するデータ、並びに暗号化されたサーバ乱数の初期値を、クライアント装置に送信する。【００１７】  これによれば、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合、クライアント装置からの認証要求が発生すると、サーバ装置により新たに生成されたサーバ乱数の初期値を、認証要求とともに送信されてきたワンタイムＩＤを使用して暗号化した上でそのクライアント装置へ供給する。これにより、認証要求を送信したクライアント装置のみがそのサーバ乱数の初期値を取得することができるため、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合でも、耐タンパ性を維持しつつ、クライアント装置の認証を継続して行うことができる。また、そのような場合でも、正当なクライアント装置を一意に特定することができる。【００１８】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置のいずれかに加え、次のようにしてもよい。この場合、記憶手段は、クライアント装置またはデータ格納機器のそれぞれについて、連続する２つ��通信単位のワンタイムＩＤを格納する。認証手段は、サーバ装置からの次の通信単位のサーバ乱数がクライアント装置により受信されず受信エラーが発生した場合には、受信手段により受信されたワンタイムＩＤと記憶手段における２つのワンタイムＩＤのうちの古いワンタイムＩＤとに基づきクライアント装置またはデータ格納機器の正当性を判断し、クライアント装置からのワンタイムＩＤが受信手段により受信されず受信エラーが発生した場合には、受信手段により受信されたワンタイムＩＤと記憶手段における２つのワンタイムＩＤのうちの新しいワンタイムＩＤとに基づきクライアント装置またはデータ格納機器の正当性を判断する。クライアントワンタイムＩＤ生成手段は、ワンタイムＩＤを生成する際に、生成したワンタイムＩＤが、記憶手段に格納されている２つの通信単位のすべてのワンタイムＩＤのいずれかと同一である場合には、乱数生成手段により再生成された次の通信単位のサーバ乱数と次の通信単位のクライアント乱数とを引数とした一方向性関数の値に基づいてワンタイムＩＤを再度生成する。【００１９】  これにより、クライアント装置・サーバ装置間の通信障害に起因してクライアント装置  に受信エラーが発生した場合でも、耐タンパ性を維持しつつ、クライアント装置の認証を継続して行うことができる。また、そのような場合でも、正当なクライアント装置を一意に特定することができる。【００２０】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置のいずれかに加え、次のようにしてもよい。この場合、送信手段は、クライアントワンタイムＩＤ生成手段により生成された次の通信単位のワンタイムＩＤをクライアント装置に送信せずに、クライアント装置において次の通信単位のワンタイムＩＤが生成される際に使用される次の通信単位のサーバ乱数を送信する。【００２１】  これによれば、クライアント装置は、次の通信単位のワンタイムＩＤを、サーバ装置から受信せず、サーバ装置から受信したサーバ乱数および自己の生成するクライアント乱数から生成する。このようにして、次回使用予定のワンタイムＩＤが盗聴されることがなく、かつ、上記のようにサーバ乱数を生成することで、サーバ装置においてクライアント装置またはデータ格納機器をワンタイムＩＤにより一意に特定することができる。【００２２】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置のいずれかに加え、次のようにしてもよい。この場合、クライアントワンタイムＩＤ生成手段は、クライアント装置のそれぞれまたはデータ格納機器のそれぞれについて生成されたサーバ乱数を使用して、クライアント装置のそれぞれまたはデータ格納機器のそれぞれについてのワンタイムＩＤを生成する。【００２３】  これにより、正当なクライアント装置が、自己についてのサーバ乱数を取得したとしても、他のクライアント装置についてのサーバ乱数とは異なるため、他のクライアント装置のワンタイムＩＤが推測しにくい。【００２４】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置のいずれかに加え、次のようにしてもよい。この場合、クライアントワンタイムＩＤ生成手段は、通信プロトコルおよびポート番号のいずれかごとにワンタイムＩＤを生成する。認証手段は、クライアント装置と受信手段との通信に使用される通信プロトコルおよびポート番号のいずれかに応じたワンタイムＩＤでクライアント装置の正当性を判断する。【００２５】  これによれば、通信プロトコルまたはポート番号ごとに、複数のクライアント装置のワンタイムＩＤが管理される。したがって、１つのクライアント装置で複数の通信プロトコルまたはポートが使用される場合には、１つのクライアント装置に対して複数のワンタイムＩＤが生成され、通信プロトコルまたはポート番号ごとに、認証サーバ装置により認証を受ける。これにより、通信プロトコルまたはポート番号ごとに、クライアント装置またはデータ格納機器を一意に特定することが可能になる。【００２６】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置のいずれかに加え、次のようにしてもよい。この場合、認証サーバ装置は、現通信単位のサーバ乱数、および受信手段により受信された次の通信単位のクライアント乱数を引数とした一方向性関数の値に基づいて当該認証サーバ装置のワンタイムＩＤを生成するワンタイムＩＤ生成手段を備える。そして、送信手段は、次の通信単位のサーバ乱数とともに、当該認証サーバ装置のワンタイムＩＤを送信する。【００２７】  これによれば、ワンタイムＩＤを送信してきたクライアント装置においても、認証サーバ装置のワンタイムＩＤに基づいて認証サーバ装置の正当性を判断することができる。つまり、これによれば、相互認証が可能となる。【００２８】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置のいずれかに加え、次のようにしてもよい。この場合、認証サーバ装置は、通信単位ごとに更新される可変共通鍵で復号をする復号手段と、可変共通鍵で暗号化をする暗号化手段とを備える。そして、受信手段は、可変共通鍵で暗号化された次の通信単位のクライアント乱数をクライアント装置から受信し、復号手段は、認証手段によりクライアント装置またはデータ格納機器が正当なものであると判断された後に、受信手段により受信された次の通信単位のクライアント乱数を復号する。暗号化手段は、次の通信単位のサーバ乱数を可変共通鍵で暗号化し、送信手段は、暗号化された次の通信単位のサーバ乱数とともに、当該認証サーバ装置のワンタイムＩＤを送信する。【００２９】  これにより、クライアント装置が正当なものである場合にのみ復号処理が実行されるため、不正クライアントからの認証要求に対する処理を短時間で行うことができる。このため、不正クライアントからの大量の認証要求によるＤｏＳ（Ｄｅｎｉａｌ  ｏｆ  Ｓｅｒｖｉｃｅ）攻撃に対する耐性が向上する。【００３０】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置のいずれかに加え、次のようにしてもよい。この場合、認証サーバ装置は、現通信単位の可変共通鍵と次の通信単位のクライアント乱数と次の通信単位のサーバ乱数とを引数とした一方向性関数の値に基づき次の通信単位の可変共通鍵を生成し、可変共通鍵を更新する共通鍵更新手段を備える。【００３１】  これにより、クライアント装置と認証サーバ装置との間で全く送受されない可変共通鍵を用いて次の通信単位の可変共通鍵を生成するため、可変共通鍵を解読しにくくすることができる。【００３２】  また、本発明に係る認証サーバ装置は、上記の認証サーバ装置のいずれかに加え、次のようにしてもよい。この場合、一方向性関数には、暗号鍵を使用せずにダイジェストを生成するハッシュ関数が使用される。【００３３】  これにより、衝突が発生しうるが計算量の比較的少ないハッシュ関数を一方向性関数として使用することができる。計算量の比較的少ないハッシュ関数を使用することで認証処理の時間を短くすることができる。【００３４】  本発明に係る記録媒体は、複数のクライアント装置またはクライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証する認証サーバ装置としてコンピュータを機能させるコンピュータプログラムを格納する。このコンピュータプログラムは、サーバ乱数を生成する乱数生成手段、サーバ乱数とクライアント装置により生成され通信単位ごとに更新されるクライアント乱数とを引数とした一方向性関数でクライアント装置またはデータ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、乱数生成手段によりサーバ乱数を再生成させ再生成されたサーバ乱数を使用して次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成手段、並びに、次の通信単位で、クライアントワンタイムＩＤ生成手段により生成されたワンタイムＩＤに基づいてクライアント装置またはデータ格納機器の正当性を判断する認証手段としてコンピュータを機能させる。【００３５】  これによれば、クライアント装置のワンタイムＩＤの生成に使用される認証サーバ装置のサーバ乱数が生成される際に、いずれかのクライアント装置に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数を生成している。これにより、高い耐タンパ性を維持しつつ、固有ＩＤを送受しなくても、一方向性関数の値に基づくワンタイムＩＤで、短時間でクライアント装置またはデータ格納機器を一意に特定することが可能になる。【００３６】  本発明に係るワンタイムＩＤ管理方法は、複数のクライアント装置またはクライアント装置から直接読み書き可能な複数のデータ格納機器に割り当てられる所定の通信単位ごとに変化するワンタイムＩＤを認証サーバ装置で管理する方法である。この方法は、いずれかのクライアント装置により生成されたクライアント乱数を受信する受信ステップと、サーバ乱数を生成する乱数生成ステップと、通信単位ごとに更新されるクライアント乱数とサーバ乱数とを引数とした一方向性関数でクライアント装置またはデータ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、乱数生成ステップにてサーバ乱数を再生成し再生成したサーバ乱数を使用して次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成ステップと、次の通信単位のワンタイムＩＤの生成に使用されたサーバ乱数をクライアント装置に送信する送信ス��ップと、次の通信単位で、クライアントワンタイムＩＤ生成ステップにて生成されたワンタイムＩＤに基づいてクライアント装置またはデータ格納機器の正当性を判断する認証ステップとを備える。【００３７】  これによれば、クライアント装置のワンタイムＩＤの生成に使用される認証サーバ装置のサーバ乱数が生成される際に、いずれかのクライアント装置に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数を生成している。これにより、高い耐タンパ性を維持しつつ、固有ＩＤを送受しなくても、一方向性関数の値に基づくワンタイムＩＤで、クライアント装置またはデータ格納機器を一意に特定することが可能になる。
【発明の効果】
【００３８】  本発明によれば、高い耐タンパ性を維持しつつ、固有ＩＤを使用せずに、一方向性関数の値に基づくワンタイムＩＤで、機器を短時間で一意に特定可能な認証を行うことができる。
【図面の簡単な説明】
【００３９】
【図１】図１は、本発明の実施の形態１に係る認証システムの構成を示すブロック図である。
【図２】図２は、実施の形態１において、サーバ装置の認証サーバプログラムおよびクライアント装置の認証処理プログラムを実行することにより実現される処理部を説明するブロック図である。
【図３】図３は、実施の形態１におけるクライアント装置・サーバ装置間の認証手順を説明するフローチャートである。
【図４】図４は、図３のステップＳ３７の詳細を説明するフローチャートである。
【図５】図５は、図３のステップＳ４０の詳細を説明するフローチャートである。
【図６】図６は、実施の形態１におけるクライアントテーブルの一例を示す図である。
【図７】図７は、実施の形態２におけるクライアント装置・サーバ装置間の認証手順を説明するフローチャートである。
【図８】図８は、実施の形態３におけるクライアント装置・サーバ装置間の認証手順を説明するフローチャートである。
【図９】図９は、実施の形態３におけるクライアントテーブルの一例を示す図である。
【図１０】図１０は、図８のステップＳ２４５の詳細を説明するフローチャートである。
【図１１】図１１は、本発明の実施の形態４に係る認証システムの構成を示すブロック図である。
【符号の説明】
【００４０】  １，１０１  サーバ装置（認証サーバ装置の一例）
２，１０２  クライアント装置
１４  ＨＤＤ（記憶手段の一例，記録媒体の一例）
１４ａ  認証サーバプログラム（コンピュータプログラムの一例）
３４  ＨＤＤ（内蔵記憶媒体の一例）
５１  乱数生成部（第２の乱数生成手段の一例，乱数生成手段の一例）
５２  ワンタイムＩＤ生成部（クライアントワンタイムＩＤ生成手段の一例，ワンタイムＩＤ生成手段の一例）
５３  暗号処理部（復号手段の一例，暗号化手段の一例）
５４  共通鍵更新部（共通鍵更新手段の一例）
５５  通信処理部（第２の受信手段の一例，第２の送信手段の一例，受信手段の一例，送信手段の一例）
５６  データ管理部（第２の認証手段の一例，認証手段の一例）
７１  乱数生成部（第１の乱数生成手段の一例）
７２  ワンタイムＩＤ生成部（第１のワンタイムＩＤ生成手段の一例）
７５  通信処理部（第１の送信手段の一例，第１の受信手段の一例）
７６  データ管理部（第１の認証手段の一例）
【発明を実施するための最良の形態】
【００４１】  以下、図に基づいて本発明の実施の形態を説明する。【００４２】実施の形態１．
図１は、本発明の実施の形態１に係る認証システムの構成を示すブロック図である。【００４３】  図１において、サーバ装置１は、本発明の認証サーバ装置の一実施の形態である装置である。クライアント装置２は、サーバ装置１により認証を受ける装置である。通信ネットワーク３は、サーバ装置１およびクライアント装置２が接続される有線および／または無線の通信路である。なお、図１では、クライアント装置２は１つであるが、通信ネットワーク３には複数のクライアント装置２が接続されていてもよい。【００４４】  このシステムでは、クライアント装置２で生成されるクライアント乱数、サーバ装置１で生成されるサーバ乱数、および、クライアント乱数、サーバ乱数などから生成される共通秘密鍵が、クライアント装置２およびサーバ装置１により共有される。そして、クライアント乱数、サーバ乱数および共通秘密鍵は、認証セッションごとに更新される。ワンタイムＩＤは、クライアント乱数およびサーバ乱数から認証セッションごとに生成され更新される。また、クライアント装置２とサーバ装置１との間では、ワンタイムＩＤとともに、自己の生成したクライアント乱数またはサーバ乱数が共通暗号鍵で暗号化された上で通信相手に送信される。これにより、認証のために送受されるデータは、すべて認証セッションごとに更新されるとともに、共通秘密鍵も認証セッションごとに更新されるため、高い耐タンパ性が実現される。【００４５】  サーバ装置１は、ＨＤＤ１４および通信装置１５を内蔵し、認証サーバプログラム１４ａをインストールされたコンピュータである。【００４６】  ＣＰＵ１１は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ＲＯＭ１２は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、ＲＡＭ１３は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶するメモリである。【００４７】  また、ＨＤＤ１４は、図示せぬオペレーティングシステム、認証サーバプログラム１４ａといったアプリケーションプログラム、認証処理に必要なデータ１４ｂ，１４ｃなどを格納する記録媒体としてのハードディスク駆動装置である。認証サーバプログラム１４ａは、以下に説明する認証処理のうちのサーバ側の処理を記述されたコンピュータプログラムである。認証データ１４ｂは、複数のクライアント装置２のそれぞれについて所定の通信単位ごとに更新されるクライアント乱数Ｒ、サーバ乱数Ｑおよび可変共通鍵Ｋである。クライアント乱数Ｒは、通信単位ごとに１つのクライアント装置２において生成される乱数である。サーバ乱数Ｑは、通信単位ごとにサーバ装置１において生成される乱数である。可変共通鍵Ｋは、通信単位ごとに更新され、１つのクライアント装置２とサーバ装置１とで共有される秘密鍵である。なお、可変共通鍵Ｋは、機器間で送受されず、クライアント装置２およびサーバ装置１のそれぞれにおいて生成される。クライアント乱数Ｒ、サーバ乱数Ｑおよび可変共通鍵Ｋは、１つのクライアント装置２とサーバ装置１との間で１組ずつ生成される。クライアント装置２がＮ台ある場合には、Ｎ組のクライアント乱数Ｒ、サーバ乱数Ｑおよび可変共通鍵Ｋが生成��れる。クライアントテーブル１４ｃは、各クライアント装置２のワンタイムＩＤおよびそのクライアント装置２に関するクライアント情報を関連づけて有するテーブルである。クライアント情報は、クライアント装置２の固有ＩＤ、アカウント情報、属性情報などとされる。実施の形態１では、クライアントテーブル１４ｃは、ワンタイムＩＤとして、各クライアント装置２が次セッションで使用するワンタイムＩＤのみを有する。つまり、使用されたワンタイムＩＤはクライアントテーブル１４ｃから削除される。【００４８】  また、通信装置１５は、ネットワークインタフェースカード、モデムなどといった通信ネットワーク３を介してクライアント装置２と通信可能な装置である。【００４９】  また、インタフェース１６は、キーボード、マウスなどといった入力装置１７を接続可能なインタフェース回路である。画像処理回路１８は、画像データを書き込まれると、そのデータに対応する画像信号を出力する回路である。この画像処理回路１８には、その画像信号に基づいて画像を表示する表示装置１９が接続可能である。【００５０】  バス２０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ＨＤＤ１４、通信装置１５、インターフェース１６および画像処理回路１８を相互に接続する信号路である。バス２０としては、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）などといった規格のバスが使用される。また、ブリッジコントローラにより複数のバスが接続される形態としてもよい。【００５１】  一方、クライアント装置２は、ＨＤＤ３４および通信装置３５を内蔵し、認証処理プログラム３４ａをインストールされたコンピュータ端末である。なお、クライアント装置２は、携帯型のパーソナルコンピュータ、携帯電話機などとしてもよい。【００５２】  ＣＰＵ３１は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ＲＯＭ３２は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、ＲＡＭ３３は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶するメモリである。【００５３】  また、ＨＤＤ３４は、図示せぬオペレーティングシステム、認証処理プログラム３４ａといったアプリケーションプログラム、認証処理に必要なデータ３４ｂ，３４ｃなどを格納する記録媒体としてのハードディスク駆動装置である。認証処理プログラム３４ａは、以下に説明する認証処理のうちのクライアント側の処理を記述されたコンピュータプログラムである。認証データ３４ｂは、所定の通信単位ごとに更新されるクライアント乱数Ｒ、サーバ乱数Ｑおよび可変共通鍵Ｋである。クライアント乱数Ｒ、サーバ乱数Ｑおよび可変共通鍵Ｋは、サーバ装置１に格納されている、このクライアント装置２についてクライアント乱数Ｒ、サーバ乱数Ｑおよび可変共通鍵Ｋと同一の値のものである。サーバデータ３４ｃは、サーバ装置１のワンタイムＩＤおよびそのサーバ装置１に関する情報を関連づけて有するテーブルである。【００５４】  また、通信装置３５は、ネットワークインタフェースカード、モデムなどといった通信ネットワーク３を介してサーバ装置１と通信可能な装置である。【００５５��  また、インタフェース３６は、キーボード、マウスなどといった入力装置３７を接続可能なインタフェース回路である。画像処理回路３８は、画像データを書き込まれると、そのデータに対応する画像信号を出力する回路である。この画像処理回路３８には、その画像信号に基づいて画像を表示する表示装置３９が接続可能である。【００５６】  バス４０は、ＣＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、ＨＤＤ３４、通信装置３５、インターフェース３６および画像処理回路３８を相互に接続する信号路である。バス４０としては、ＰＣＩなどといった規格のバスが使用される。また、ブリッジコントローラにより複数のバスが接続される形態としてもよい。【００５７】  図２は、実施の形態１において、サーバ装置１の認証サーバプログラム１４ａおよびクライアント装置２の認証処理プログラム３４ａを実行することにより実現される処理部を説明するブロック図である。【００５８】  サーバ装置１では、認証サーバプログラム１４ａがＣＰＵ１１により実行されることで、乱数生成部５１、ワンタイムＩＤ生成部５２、暗号処理部５３、共通鍵更新部５４、通信処理部５５およびデータ管理部５６が生成される。【００５９】  乱数生成部５１は、演算により擬似乱数を生成する処理部である。ワンタイムＩＤ生成部５２は、クライアント乱数およびサーバ乱数を引数とした一方向性関数の値に基づきワンタイムＩＤを生成する処理部である。この実施の形態１では、一方向性関数として、暗号鍵を使用せずにダイジェストを生成するＭＤ５などのハッシュ関数が使用される。暗号処理部５３は、可変共通鍵で暗号化および復号を行う処理部である。共通鍵更新部５４は、可変共通鍵、クライアント乱数およびサーバ乱数を引数とした一方向性関数の値に基づき可変共通鍵を更新する処理部である。この実施の形態１では、一方向性関数として、暗号鍵を使用せずにダイジェストを生成するＭＤ５などのハッシュ関数が使用される。通信処理部５５は、通信装置１５を制御して、クライアント装置２との間で各種データを送受する処理部である。データ管理部５６は、ＨＤＤ１４およびＲＡＭ１３にアクセスして、認証処理に係る一時データの読み書き、認証データ１４ａおよびクライアントテーブル１４ｃの更新を行う処理部である。【００６０】  一方、クライアント装置２では、認証処理プログラム３４ａがＣＰＵ３１により実行されることで、乱数生成部７１、ワンタイムＩＤ生成部７２、暗号処理部７３、共通鍵更新部７４、通信処理部７５およびデータ管理部７６が生成される。【００６１】  乱数生成部７１は、演算により擬似乱数を生成する処理部である。ワンタイムＩＤ生成部７２は、クライアント乱数およびサーバ乱数を引数とした一方向性関数の値に基づきワンタイムＩＤを生成する処理部である。この一方向性関数は、サーバ装置１のワンタイムＩＤ生成部５２と同一の関数とされる。暗号処理部７３は、可変共通鍵で暗号化および復号を行う処理部である。共通鍵更新部７４は、可変共通鍵、クライアント乱数およびサーバ乱数を引数とした一方向性関数の値に基づき可変共通鍵を更新する処理部である。この一方向性関数は、サーバ装置１の共通鍵更新部５４と同一の関数とされる。通信処理部７５は、通信装置３５を制御して、サーバ装置１との間で各種データを送受する処理部である。データ管理部７６は、ＨＤＤ３４およびＲＡＭ３３にアクセスして、認証処理に係る一時データの読み書き、認証データ３４ｂおよびサーバデータ３４ｃの更新を行う処理部である。【００６２】  次に、上記装置の動作について説明する。図３は、実施の形態１におけるクライアント装置２・サーバ装置１間の認証手順を説明するフローチャートである。【００６３】  まず、サーバ装置１およびクライアント装置２は、初期値として、クライアント乱数Ｒ（０）、サーバ乱数Ｑ（０）および可変共通鍵Ｋ（０）を共有している。サーバ装置１では、クライアント乱数Ｒ（０）、サーバ乱数Ｑ（０）および可変共通鍵Ｋ（０）は、ＨＤＤ１４における認証データ１４ｂとして予め格納される。クライアント装置２では、クライアント乱数Ｒ（０）、サーバ乱数Ｑ（０）および可変共通鍵Ｋ（０）は、ＨＤＤ３４における認証データ３４ｂとして予め格納される。なお、最初の可変共通鍵Ｋ（０）は、クライアント装置２およびサーバ装置１により、後述の式（５）に基づき生成されるようにしてもよい。その場合、前セッションの可変共通鍵の代わりに、真性乱数Ｚが使用される。この真性乱数Ｚは、初期状態にて、サーバ装置１およびクライアント装置２により共有される。【００６４】  そして、１回の認証セッションごとに、サーバ装置１およびクライアント装置２に保持されているクライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）が更新されていく。【００６５】  したがって、ｎ回の認証セッションが完了した後には、クライアント乱数Ｒ（ｎ）、サーバ乱数Ｑ（ｎ）および可変共通鍵Ｋ（ｎ）が共有されている状態となる。【００６６】  ここで、ｉ回の認証セッションが完了した後のクライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）が共有されている状態から、（ｉ＋１）回目の認証セッションが発生し完了するまでの処理について図３を参照して説明する。【００６７】  サーバ装置１では、認証サーバプログラム１４ａがＣＰＵ１１により実行され、図２に示す各処理部５１〜５６が実現される。また、クライアント装置２では、認証処理プログラム３４ａがＣＰＵ３１により実行され、図２に示す各処理部７１〜７６が実現される。なお、認証サーバプログラム１４ａおよび認証処理プログラム３４ａは、装置起動時に実行され、その後常駐しているようにしてもよい。【００６８】  この状態では、クライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）が共有されている（ステップＳ１１，Ｓ３１）。【００６９】  クライアント装置２においてサーバ装置１による認証を受ける要求が発生した場合、まず、ワンタイムＩＤ生成部７２は、式（１）に従って、現セッションｉについての、クライアント装置２のワンタイムＩＤ：Ｃ（ｉ）を生成する（ステップＳ１２）。ワンタイムＩＤ：Ｃ（ｉ）はデータ管理部７６により一時的にＲＡＭ３３に記憶される。【００７０】  Ｃ（ｉ）＝ｈａｓｈ（Ｒ（ｉ），Ｑ（ｉ））  ・・・（１）【００７１】  ただし、ｈａｓｈは、ＭＤ５などのハッシュ関数である。このハッシュ関数としては、暗号鍵を��用せずにダイジェストを生成するハッシュ関数が使用される。このハッシュ関数には、多少の衝突が発生してもよく、計算量があまり多くないものが選択される。【００７２】  次に、乱数生成部７１は、次セッション（ｉ＋１）についてのクライアント乱数Ｒ（ｉ＋１）を発生する（ステップＳ１３）。このクライアント乱数Ｒ（ｉ＋１）は、データ管理部７６によりＲＡＭ３３に一時的に記憶される。また、このクライアント乱数Ｒ（ｉ＋１）は、次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）およびサーバ装置１の現セッションのワンタイムＩＤ：Ｓ（ｉ）の生成に使用される。【００７３】  そして、データ管理部７６は、可変共通鍵Ｋ（ｉ）をＨＤＤ３４から読み出し、クライアント乱数Ｒ（ｉ＋１）とともに暗号処理部７３に供給する。暗号処理部７３は、所定の暗号化関数Ｆｃに従って、可変共通鍵Ｋ（ｉ）でクライアント乱数Ｒ（ｉ＋１）を暗号化する（ステップＳ１４）。暗号化されたクライアント乱数Ａｃは、データ管理部７６によりＲＡＭ３３に一時的に記憶される。【００７４】  そして、データ管理部７６は、ＲＡＭ３３から、ワンタイムＩＤ：Ｃ（ｉ）および暗号化されたクライアント乱数Ａｃを読み出し通信処理部７５に供給する。通信処理部７５は、ワンタイムＩＤ：Ｃ（ｉ）および暗号化されたクライアント乱数Ａｃを、認証要求とともに、サーバ装置１へ送信する（ステップＳ１５）。【００７５】  サーバ装置１では、通信処理部５５が、サーバ装置１宛の通信データを受信する。このため、認証要求、ワンタイムＩＤ：Ｃ（ｉ）および暗号化されたクライアント乱数Ａｃは、通信処理部５５により受信される（ステップＳ３２）。【００７６】  サーバ装置１の通信処理部５５が認証要求を受信すると、データ管理部５６は、ＨＤＤ１４のクライアントテーブル１４ｃを参照し、受信されたワンタイムＩＤ：Ｃ（ｉ）と同一のワンタイムＩＤがクライアントテーブル１４ｃに登録されているか否かを判定する（ステップＳ３３）。【００７７】  データ管理部５６は、受信されたワンタイムＩＤ：Ｃ（ｉ）がクライアントテーブル１４ｃに登録されていない場合には、認証処理を中止する（ステップＳ３４）。【００７８】  一方、データ管理部５６は、受信されたワンタイムＩＤ：Ｃ（ｉ）がクライアントテーブル１４ｃに登録されている場合、認証要求を送信したクライアント装置２が正当なクライアントであると判断するとともに、クライアント装置２を特定する。【００７９】  クライアント装置２が正当なクライアントであると判断された後、データ管理部５６は、特定されたクライアント装置２の可変共通鍵Ｋ（ｉ）をＨＤＤ１４から読み出し、クライアント乱数Ａｃとともに、暗号処理部５３に供給する。暗号処理部５３は、所定の復号関数Ｆｄに従って、暗号化されているクライアント乱数Ａｃを可変共通鍵Ｋ（ｉ）で復号し、平文のクライアント乱数Ｒ（ｉ＋１）を取得する（ステップＳ３５）。なお、復号関数Ｆｄは、クライアント装置２における暗号処理部７３の暗号化関数Ｆｃにより暗号化された暗号文を平文に変換する関数である。クライアント乱数Ｒ（ｉ＋１）はデータ管理部５６により一時的にＲＡＭ１３に記憶される。【００８０】  次に、サーバ装置１のデ��タ管理部５６は、ＨＤＤ１４からサーバ乱数Ｑ（ｉ）を読み出し、クライアント乱数Ｒ（ｉ＋１）とともに、ワンタイムＩＤ生成部５２に供給する。ワンタイムＩＤ生成部５２は、現セッションについてのサーバ装置１のワンタイムＩＤ：Ｓ（ｉ）を式（２）に従って生成する（ステップＳ３６）。ワンタイムＩＤ：Ｓ（ｉ）はデータ管理部５６により一時的にＲＡＭ１３に記憶される。【００８１】  Ｓ（ｉ）＝ｈａｓｈ（Ｒ（ｉ＋１），Ｑ（ｉ））  ・・・（２）【００８２】  ただし、ｈａｓｈは、ＭＤ５などのハッシュ関数である。式（２）の関数ｈａｓｈは、式（１）の関数ｈａｓｈと同一であってもよい。【００８３】  また、クライアント装置２が正当なクライアントであると判断された後、乱数生成部５１は、特定されたクライアント装置２との間で使用される次セッションのサーバ乱数Ｑ（ｉ＋１）を生成する（ステップＳ３７）。サーバ乱数Ｑ（ｉ＋１）はデータ管理部５６により一時的にＲＡＭ１３に記憶される。このサーバ乱数Ｑ（ｉ＋１）は、次セッションのワンタイムＩＤ：Ｃ（ｉ＋１），Ｓ（ｉ＋１）の生成に使用される。【００８４】  その際、乱数生成部５１は、次セッションについてのクライアント装置２のワンタイムＩＤ：Ｃ（ｉ＋１）がクライアントテーブル１４ｃに登録済みで未使用のワンタイムと重複しないようにサーバ乱数Ｑ（ｉ＋１）を生成する。【００８５】  図４は、図３のステップＳ３７の詳細を説明するフローチャートである。【００８６】  まず、乱数生成部５１は、乱数Ｑｔを生成する（ステップＳ６１）。乱数Ｑｔは、サーバ乱数Ｑ（ｉ＋１）の候補である。【００８７】  そして、データ管理部５６は、この乱数Ｑｔと、次セッションのクライアント乱数Ｒ（ｉ＋１）とをワンタイムＩＤ生成部５２に供給する。ワンタイムＩＤ生成部５２は、式（３）に従って、乱数Ｑｔがサーバ乱数Ｑ（ｉ＋１）とされた場合の、次セッションについてのクライアント装置２のワンタイムＩＤ：ＣＣを生成する（ステップＳ６２）。【００８８】  ＣＣ＝ｈａｓｈ（Ｒ（ｉ＋１），Ｑｔ）  ・・・（３）【００８９】  ただし、ｈａｓｈは、式（１）の関数ｈａｓｈと同一なハッシュ関数である。【００９０】  次に、データ管理部５６は、クライアントテーブル１４ｃに登録されている各ワンタイムＩＤと、生成されたワンタイムＩＤ：ＣＣとを比較する（ステップＳ６３）。【００９１】  クライアントテーブル１４ｃに登録されているいずれかのワンタイムＩＤと、生成されたワンタイムＩＤ：ＣＣとが同一である場合には、乱数生成部５１は、別の乱数Ｑｔを生成し（ステップＳ６４）、ワンタイムＩＤ生成部５２は、その別の乱数Ｑｔに基づいてワンタイムＩＤ：ＣＣを生成する（ステップＳ６２）。そして、生成されたワンタイムＩＤ：ＣＣは、クライアントテーブル１４ｃに登録されている各ワンタイムＩＤと比較される。【００９２】  そして、生成されたワンタイムＩＤ：ＣＣが、クライアントテーブル１４ｃに登録されているいずれのワンタイムＩＤとも同一ではない場合には、データ管理部５６は、この乱数Ｑｔを次セッションについてのサーバ乱数Ｑ（ｉ＋１）とし、一時的にＲＡＭ１３に記憶する（ステップＳ６５）。【００９３】  このように、サーバ装��１では、クライアント装置２においてワンタイムＩＤを生成する関数ｈａｓｈと同一の関数を使用して、複数のクライアント装置２のワンタイムＩＤに衝突が生じないサーバ乱数が予め選択される。【００９４】  特定されたクライアント装置２について次セッションのサーバ乱数Ｑ（ｉ＋１）が生成されると、図３に戻り、データ管理部５６は、そのサーバ乱数Ｑ（ｉ＋１）をＲＡＭ１３から読み出し、可変共通鍵Ｋ（ｉ）をＨＤＤ１４から読み出し、それらを暗号処理部５３に供給する。暗号処理部５３は、所定の暗号化関数Ｆｃに従って、可変共通鍵Ｋ（ｉ）でサーバ乱数Ｑ（ｉ＋１）を暗号化する（ステップＳ３８）。暗号化されたクライアント乱数Ａｓは、データ管理部５６によりＲＡＭ１３に一時的に記憶される。なお、この暗号化関数Ｆｃは、クライアント装置２における暗号処理部５３の暗号化関数と同一でもよいし、別のものでもよい。【００９５】  そして、データ管理部５６は、ＲＡＭ１３から、ワンタイムＩＤ：Ｓ（ｉ）および暗号化されたクライアント乱数Ａｓを読み出し通信処理部５５に供給する。通信処理部５５は、認証されたことを示す返答、並びにワンタイムＩＤ：Ｓ（ｉ）および暗号化されたサーバ乱数Ａｓを、認証要求の送信元のクライアント装置２へ送信する（ステップＳ３９）。【００９６】  このように、サーバ装置１は、次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）をクライアント装置２に送信せずに、クライアント装置２において次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）が生成される際に使用される次セッションのサーバ乱数Ｑ（ｉ＋１）を送信する。【００９７】  認証されたことを示す返答、並びにワンタイムＩＤ：Ｓ（ｉ）および暗号化されたサーバ乱数Ａｓを送信した後、サーバ装置１のデータ管理部５６は、今回認証を行ったクライアント装置２の次セッションについてのワンタイムＩＤ：Ｃ（ｉ＋１）をクライアントテーブル１４ｃに登録する（ステップＳ４０）。その際、今回認証を行ったクライアント装置２の現セッションについてのワンタイムＩＤ：Ｃ（ｉ）が、次セッションについてのワンタイムＩＤ：Ｃ（ｉ＋１）で上書きされ更新される。また、次セッションについてのワンタイムＩＤ：Ｃ（ｉ＋１）は、サーバ乱数Ｑ（ｉ＋１）を生成する際に計算したもの（ステップＳ６２）としてもよいし、ワンタイムＩＤ生成部５２により式（４）に従って生成されたものとしてもよい。【００９８】  Ｃ（ｉ＋１）＝ｈａｓｈ（Ｒ（ｉ＋１），Ｑ（ｉ＋１））  ・・・（４）【００９９】  ただし、ｈａｓｈは、式（１）と同一なハッシュ関数である。【０１００】  ここで、クライアントテーブル１４ｃの更新処理について説明する。図５は、図３のステップＳ４０の詳細を説明するフローチャートである。図６は、実施の形態１におけるクライアントテーブル１４ｃの一例を示す図である。【０１０１】  図６に示すように、実施の形態１では、クライアントテーブル１４ｃには、複数ｍのレコードが確保されている。各レコードは、１つのクライアント装置２についてのワンタイムＩＤおよびクライアント情報を有する。また、各レコードには、連続するインデックスが付されており、インデックスの値を指定することで所望の１つのレコードが読み��される。実施の形態１では、インデックスの値は、ワンタイムＩＤを所定の整数Ｎで除算した際の剰余とされ、レコード数ｍは、Ｎの１０〜２０倍程度の数とされる。ただし、インデックスの値が衝突した場合には、インデックスの値を１ずつ増加させる。例えば、図６では、インデックス値が１であるレコードに、あるクライアント装置のワンタイムＩＤ：Ｃ２およびそのクライアント装置の情報が格納されている。【０１０２】  まず、データ管理部５６は、現セッションのワンタイムＩＤ：Ｃ（ｉ）からインデックスの値を計算する（ステップＳ８１）。ワンタイムＩＤを所定の整数Ｎで除算した際の剰余が計算され、その剰余の値をインデックスの値とする。【０１０３】  次に、データ管理部５６は、クライアントテーブル１４ｃにおけるそのインデックス値のレコードを読み出す（ステップＳ８２）。【０１０４】  そして、データ管理部５６は、読み出したレコード内のワンタイムＩＤがワンタイムＩＤ：Ｃ（ｉ）と同一であるか否かを判断する（ステップＳ８３）。【０１０５】  データ管理部５６は、読み出したレコード内のワンタイムＩＤがワンタイムＩＤ：Ｃ（ｉ）と同一ではない場合、インデックス値を１だけ増加させ（ステップＳ８４）、そのインデックス値のレコードを読み出し（ステップＳ８２）、ワンタイムＩＤが同一であるか否かを判断する（ステップＳ８３）。【０１０６】  そして、読み出したレコード内のワンタイムＩＤがワンタイムＩＤ：Ｃ（ｉ）と同一である場合、データ管理部５６は、次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）からインデックスの値を計算する（ステップＳ８５）。ワンタイムＩＤを所定の整数Ｎで除算した際の剰余が計算され、その剰余の値をインデックスの値とする。【０１０７】  次に、データ管理部５６は、そのインデックス値のレコードが空きか否かを判断する（ステップＳ８６）。【０１０８】  データ管理部５６は、そのインデックス値のレコードが空きではない場合、インデックス値を１だけ増加させ（ステップＳ８７）、そのインデックス値のレコードが空きか否かを判断する（ステップＳ８６）。【０１０９】  そして、データ管理部５６は、インデックス値のレコードが空きである場合、そのインデックス値のレコードに、次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）、および現セッションのワンタイムＩＤ：Ｃ（ｉ）のレコードにおけるクライアント情報を格納する（ステップＳ８８）。【０１１０】  次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）を登録した後、データ管理部５６は、現セッションのワンタイムＩＤ：Ｃ（ｉ）のレコードをクライアントテーブル１４ｃから削除する（ステップＳ８９）。【０１１１】  このようにして、クライアントテーブル１４ｃ内のワンタイムＩＤが更新される。【０１１２】  図３に戻り、その後、データ管理部５６は、特定されたクライアント装置２についての次セッションのクライアント乱数Ｒ（ｉ＋１）およびサーバ乱数Ｑ（ｉ＋１）をＲＡＭ１３から読み出し、可変共通鍵Ｋ（ｉ）をＨＤＤ１４から読み出し、それらを共通鍵更新部５４に供給する。共通鍵更新部５４は、クライアント乱数Ｒ（ｉ＋１）、サーバ乱数Ｑ（ｉ＋１）および現セッションの可変共通鍵Ｋ（ｉ）から次セッシ���ンの可変共通鍵Ｋ（ｉ＋１）を式（５）に従って生成する（ステップＳ４１）。次セッションの可変共通鍵Ｋ（ｉ＋１）は、データ管理部５６により一時的にＲＡＭ１３に記憶される。【０１１３】  Ｋ（ｉ＋１）＝ｈａｓｈ２（Ｋ（ｉ），Ｒ（ｉ＋１），Ｑ（ｉ＋１））・・・（５）【０１１４】  ただし、ｈａｓｈ２は、ハッシュ関数である。【０１１５】  そして、データ管理部５６は、ＲＡＭ１３から次セッションのクライアント乱数Ｒ（ｉ＋１）、サーバ乱数Ｑ（ｉ＋１）および可変共通鍵Ｋ（ｉ＋１）を読み出し、ＨＤＤ１４の認証データ１４ｂとして格納されているクライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）を次セッションのクライアント乱数Ｒ（ｉ＋１）、サーバ乱数Ｑ（ｉ＋１）および可変共通鍵Ｋ（ｉ＋１）へ更新する（ステップＳ４２）。【０１１６】  一方、クライアント装置２では、通信処理部７５が、クライアント装置２宛の通信データを受信する。このため、返答、ワンタイムＩＤ：Ｓ（ｉ）および暗号化されたサーバ乱数Ａｓは、通信処理部７５により受信される（ステップＳ１６）。【０１１７】  クライアント装置２のデータ管理部７６は、返答が受信されると、サーバ装置１の真正なワンタイムＩＤ：Ｙと、受信されたワンタイムＩＤ：Ｓ（ｉ）とを比較してサーバ装置１の正当性を判断する（ステップＳ１７，Ｓ１８）。なお、サーバ装置１の真正なワンタイムＩＤ：Ｙは、ワンタイムＩＤ生成部７２により式（６）に従って生成される。【０１１８】  Ｙ＝ｈａｓｈ（Ｒ（ｉ＋１），Ｑ（ｉ））  ・・・（６）【０１１９】  ただし、ｈａｓｈは、式（２）と同一なハッシュ関数である。【０１２０】  データ管理部７６は、受信されたワンタイムＩＤ：Ｓ（ｉ）が真正なワンタイムＩＤ：Ｙと同一ではない場合、返答したサーバ装置１を不正サーバと判断し、認証処理を中止する（ステップＳ１９）。【０１２１】  一方、データ管理部７６は、受信されたワンタイムＩＤ：Ｓ（ｉ）が真正なワンタイムＩＤ：Ｙと同一である場合、返答したサーバ装置１が正当なサーバであると判断するとともに、サーバ装置１を特定する。【０１２２】  サーバ装置１が正当なサーバであると判断された後、データ管理部７６は、可変共通鍵Ｋ（ｉ）をＨＤＤ３４から読み出し、サーバ乱数Ａｓとともに、暗号処理部７３に供給する。暗号処理部７３は、所定の復号関数Ｆｄに従って、暗号化されているクライアント乱数Ａｓを可変共通鍵Ｋ（ｉ）で復号し、平文のサーバ乱数Ｑ（ｉ＋１）を取得する（ステップＳ２０）。なお、復号関数Ｆｄは、サーバ装置１における暗号処理部５３の暗号化関数Ｆｃにより暗号化された暗号文を平文に変換する関数である。サーバ乱数Ｑ（ｉ＋１）はデータ管理部７６により一時的にＲＡＭ３３に記憶される。【０１２３】  データ管理部７６は、次セッションのクライアント乱数Ｒ（ｉ＋１）およびサーバ乱数Ｑ（ｉ＋１）をＲＡＭ３３から読み出し、可変共通鍵Ｋ（ｉ）をＨＤＤ３４から読み出し、それらを共通鍵更新部７４に供給する。共通鍵更新部７４は、クライアント乱数Ｒ（ｉ＋１）、サーバ乱数Ｑ（ｉ＋１）および現セッションの可変共通鍵Ｋ（ｉ）から次セッションの可変共通鍵Ｋ（ｉ＋１）を式（５）に従って生成���る（ステップＳ２１）。次セッションの可変共通鍵Ｋ（ｉ＋１）は、データ管理部７６により一時的にＲＡＭ３３に記憶される。【０１２４】  そして、データ管理部７６は、ＲＡＭ３３から次セッションのクライアント乱数Ｒ（ｉ＋１）、サーバ乱数Ｑ（ｉ＋１）および可変共通鍵Ｋ（ｉ＋１）を読み出し、ＨＤＤ３４の認証データ３４ｂとして格納されているクライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）を次セッションのクライアント乱数Ｒ（ｉ＋１）、サーバ乱数Ｑ（ｉ＋１）および可変共通鍵Ｋ（ｉ＋１）へ更新する（ステップＳ２２）。【０１２５】  このようにして、１認証セッションにおいて、ワンタイムＩＤ：Ｃ（ｉ），Ｓ（ｉ）によりクライアント装置２およびサーバ装置１が相互に認証を行うとともに、共有している情報であるクライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）がクライアント装置２およびサーバ装置１のそれぞれにおいて更新される。【０１２６】  そして、上述のようにして、１回の認証セッションが完了し相互に認証が完了した後、クライアント装置２とサーバ装置１との間で、各種アプリケーションのデータ通信が開始される。なお、各種アプリケーションのデータ通信は、複数回の認証セッションを行った後に開始するようにしてもよい。【０１２７】  以上のように、上記実施の形態１によれば、サーバ装置１は、複数のクライアント装置２を、所定の通信単位（認証セッション）ごとに変化するワンタイムＩＤで認証サーバ装置により認証する。【０１２８】  クライアント装置２では、ワンタイムＩＤ生成部７２は、現セッションのサーバ乱数Ｑ（ｉ）とクライアント乱数Ｒ（ｉ）とを引数としたハッシュ関数の値でクライアント装置２のワンタイムＩＤ：Ｃ（ｉ）を生成する。通信処理部７５は、そのワンタイムＩＤ：Ｃ（ｉ）およびクライアント乱数Ｒ（ｉ＋１）をサーバ装置１に送信する。ただし、クライアント乱数Ｒ（ｉ＋１）は暗号化された状態で送信される。サーバ装置１では、データ管理部５６は、クライアントテーブル１４ｃにおけるワンタイムＩＤと受信されたワンタイムＩＤとに基づきクライアント装置２の正当性を判断する。【０１２９】  クライアント装置２が正当なものであると判断された後、ワンタイムＩＤ生成部５２は、次セッションのサーバ乱数Ｑ（ｉ＋１）と受信された次セッションのクライアント乱数Ｒ（ｉ＋１）とを引数としたハッシュ関数の値に基づいてクライアント装置２の次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）を生成し、このワンタイムＩＤ：Ｃ（ｉ＋１）が、クライアントテーブル１４ｃに格納されている複数のワンタイムＩＤのいずれかと同一である場合には、再度生成されたサーバ乱数Ｑ（ｉ＋１）と受信されたクライアント乱数Ｒ（ｉ＋１）とからワンタイムＩＤ：Ｃ（ｉ＋１）を再度生成し、そのワンタイムＩＤでクライアントテーブル１４ｃにおけるそのクライアント装置２のワンタイムＩＤ：Ｃ（ｉ）を更新する。そして、通信処理部５５は、次セッションのワンタイムＩＤ：Ｃ（ｉ）の生成に使用されたサーバ乱数Ｑ（ｉ＋１）をクライアント装置２に送信する。ただし、サーバ乱数Ｑ（ｉ＋１）は暗号化された状態で送信される。【０１３０】  ��して、クライアント装置２では、次セッションにおいて、そのサーバ乱数Ｑ（ｉ＋１）と既に生成されているクライアント乱数Ｒ（ｉ＋１）から次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）が生成される。【０１３１】  これによれば、クライアント装置２のワンタイムＩＤ：Ｃ（ｉ＋１）の生成に使用されるサーバ装置１のサーバ乱数Ｑ（ｉ＋１）が生成される際に、複数のうちのいずれかのクライアント装置２に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数Ｑ（ｉ＋１）を生成している。これにより、固有ＩＤを送受しなくても、一方向性関数の値に基づくワンタイムＩＤで、クライアント装置２を常に一意に特定することが可能になる。【０１３２】  また、サーバ装置１において、現セッションのワンタイムＩＤ：Ｃ（ｉ）に基づきクライアント装置２が正当なものであると判断された後に、直ちに同一のセッション内で、そのクライアント装置２の次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）が生成され更新される。これにより、さらに、ワンタイムＩＤ：Ｃ（ｉ）を盗聴した第三者がそのワンタイムＩＤ：Ｃ（ｉ）を使用した場合でもその第三者の機器が正当なクライアント装置２と特定されてしまうことを防止できる。つまり、ワンタイムＩＤが盗聴された場合でも、正当な機器を一意に特定することができる。【０１３３】  また、クライアント装置２からサーバ装置１へのワンタイムＩＤ：Ｃ（ｉ）などの送信、およびサーバ装置１からクライアント装置２へのワンタイムＩＤ：Ｓ（ｉ）などの送信という２回の通信のみで相互認証を行うことができる。このため、相互認証に要する時間が短くて済む。【０１３４】  また、実施の形態１によれば、サーバ装置１で生成された次セッションについてのクライアント装置２のワンタイムＩＤ：Ｃ（ｉ＋１）がクライアント装置２に送信されず、その代わりに、クライアント装置２においてワンタイムＩＤ：Ｃ（ｉ＋１）が生成される際に使用される次セッションのサーバ乱数Ｑ（ｉ＋１）が送信される。したがって、クライアント装置２は、次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）を、サーバ装置１から受信せず、サーバ装置１から受信したサーバ乱数Ｑ（ｉ＋１）および自己の生成するクライアント乱数Ｒ（ｉ＋１）から生成する。このようにして、次回使用されるワンタイムＩＤ：Ｃ（ｉ＋１）が盗聴されることがない。【０１３５】  また、実施の形態１によれば、クライアント装置２は、固有ＩＤなどの固定的な識別情報を全く送信しない。したがって、クライアント装置２からサーバ装置１へ送信されるデータが盗聴され解析されたとしても、盗聴者がクライアント装置２の固定的な識別情報を取得することはできない。【０１３６】  また、実施の形態１によれば、サーバ装置１は、複数のクライアント装置２のそれぞれについて生成されたサーバ乱数Ｑ（ｉ）を使用して、複数のクライアント装置２のそれぞれについてのワンタイムＩＤ：Ｃ（ｉ）を生成する。これにより、正当なクライアント装置２が、自己についてのサーバ乱数を取得しても、他のクライアント装置２についてのサーバ乱数とは異なるため、他のクライアント装置２のワンタイムＩＤが推測しにくい。【０１３７】  また、上記実施の形態１によれば、サーバ装置１は、現セッションについてのサーバ装置１のワンタイムＩＤ：Ｓ（ｉ）を生成しクライアント装置２へ送信する。これによれば、ワンタイムＩＤ：Ｃ（ｉ）を送信してきたクライアント装置２においても、サーバ装置１のワンタイムＩＤ：Ｓ（ｉ）に基づいてサーバ装置１の正当性を判断することができる。これにより、相互認証が可能となる。【０１３８】  また、上記実施の形態１によれば、サーバ装置１は、可変共通鍵で暗号化された次セッションのクライアント乱数Ａｃをクライアント装置２から受信し、そのクライアント装置２が正当なものであると判断された後に、そのクライアント乱数Ａｃを復号する。これにより、クライアント装置２が正当なものである場合にのみ復号処理が実行されるため、不正クライアントからの認証要求に対する処理を短時間で行うことができる。このため、不正クライアントからの大量の認証要求によるＤｏＳ攻撃に対する耐性が向上する。【０１３９】  また、上記実施の形態１によれば、サーバ装置１は、現セッションの可変共通鍵Ｋ（ｉ）を使用して次セッションの可変共通鍵Ｋ（ｉ＋１）を生成し、可変共通鍵Ｋ（ｉ＋１）を更新する。これにより、クライアント装置２とサーバ装置１との間で全く送受されない可変共通鍵を用いて次セッションの可変共通鍵Ｋ（ｉ＋１）を生成するため、可変共通鍵Ｋ（ｉ＋１）を解読しにくくすることができる。【０１４０】  また、上記実施の形態１によれば、ワンタイムＩＤ：Ｃ（ｉ）を生成するための一方向性関数に、暗号鍵を使用せずにダイジェストを生成するハッシュ関数が使用される。これにより、衝突が発生しうるが計算量の比較的少ないハッシュ関数を一方向性関数として使用することができる。計算量の比較的少ないハッシュ関数を使用することで認証処理の時間を短くすることができる。【０１４１】実施の形態２．
本発明の実施の形態２に係る認証システムでは、サーバ装置１で保持されていた認証データ１４ｂが消失した場合に、正当なクライアント装置２のみが確実に認証されるようにサーバ装置１がクライアント装置２とともに復旧処理を行う。このようなサーバリセット事象の原因としては、誤操作によるデータ削除、ＨＤＤ１４の故障などがありうる。また、認証データ１４ｂがＲＡＭ１３などの揮発性メモリに格納されている場合には、サーバ装置１の再起動、停電なども原因となる。【０１４２】  実施の形態２に係る認証システムの構成は、原則として実施の形態１のものと同一である。ただし、実施の形態２におけるサーバ装置１およびクライアント装置２は、クライアント乱数の初期値Ｒ（０）、固定の秘密鍵Ｋｆおよび真性乱数Ｚを共有してＨＤＤ１４，３４などに保持する。また、実施の形態２におけるサーバ装置１およびクライアント装置２は、以下のように動作する。【０１４３】  図７は、実施の形態２におけるクライアント装置２・サーバ装置１間の認証手順を説明するフローチャートである。【０１４４】  サーバリセット事象が検出された後（ステップＳ１３１）、サーバ装置１は、サーバリセット事象に起因して認証処理を通常どおり行うことができないため、以下の処理を行う。サーバ装置１では、通信処理部５５により認証要求、ワンタイムＩＤ：Ｃ（ｉ）およびクライアント乱数Ａｃが受信されると（ステップＳ１３２）、乱数生成部５１は、サーバ乱数Ｑｘを生成する（ステップＳ１３３）。なお、その際、実施の形態１のステップＳ３７と同様に、サーバ乱数Ｑｘとクライアント乱数Ｒ（０）から生成されるワンタイムＩＤ：Ｃ（０）が、その時点でクライアントテーブル１４ｃに登録されている他のワンタイムＩＤと一致しないように、サーバ乱数Ｑｘは生成される。【０１４５】  次に、乱数生成部５１は、リセット乱数Ｖを生成する（ステップＳ１３４）。リセット乱数Ｖは、擬似乱数か真性乱数とされる。【０１４６】  そして、式（７）に従って、図示せぬリセット秘密鍵生成部により、リセット乱数Ｖ、受信されたワンタイムＩＤ：Ｃ（ｉ）および固定秘密鍵Ｋｆからリセット秘密鍵Ｋｒが生成される（ステップＳ１３５）。【０１４７】  Ｋｒ＝ｈａｓｈ３（Ｖ，Ｃ（ｉ），Ｋｆ）  ・・・（７）【０１４８】  ただし、ｈａｓｈ３は、ハッシュ関数である。【０１４９】  そして、暗号処理部５３によりサーバ乱数Ｑｘがリセット秘密鍵Ｋｒで暗号化され（ステップＳ１３６）、暗号化されたサーバ乱数Ａｘが、通信処理部５５により、リセット乱数Ｖおよびリセット発生情報とともに、クライアント装置２へ送信される（ステップＳ１３７）。リセット発生情報は、サーバリセット事象が発生したことをクライアント装置２に通知するためのフラグ値などといったデータである。【０１５０】  その後、サーバ装置１では、共通鍵更新部５４により、真性乱数Ｚ、クライアント乱数の初期値Ｒ（０）およびサーバ乱数Ｑｘから式（８）に従って可変秘密鍵Ｋｘが生成される（ステップＳ１３８）。【０１５１】  Ｋｘ＝ｈａｓｈ２（Ｚ，Ｒ（０），Ｑｘ）  ・・・（８）【０１５２】  ただし、ｈａｓｈ２は、式（５）の関数ｈａｓｈ２と同一のものである。【０１５３】  また、ワ��タイムＩＤ生成部５２により、クライアント乱数Ｒ（０）およびサーバ乱数Ｑｘから、クライアント装置２のワンタイムＩＤ：Ｃ（０）が生成され、実施の形態１のステップＳ４０の処理と同様にして、クライアントテーブル１４ｃに登録される。【０１５４】  そして、サーバ装置１では、サーバリセット後の認証データ１４ｂの初期値として、クライアント乱数Ｒ（０）、サーバ乱数Ｑｘおよび共通鍵ＫｘがＨＤＤ１４に格納される（ステップＳ１４０）。【０１５５】  一方、クライアント装置２では、通信処理部７５により、リセット発生情報、リセット乱数Ｖおよびサーバ乱数Ａｘが受信されると（ステップＳ１１１）、リセット乱数Ｖ、ステップＳ１５で送信したワンタイムＩＤ：Ｃ（ｉ）および固定暗号鍵Ｋｆから式（７）に従って、リセット秘密鍵Ｋｒが生成される（ステップＳ１１２）。そして、そのリセット秘密鍵Ｋｒにより、サーバ乱数Ａｘが復号され、平文のサーバ乱数Ｑｘが取得される（ステップＳ１１３）。【０１５６】  次に、クライアント装置２では、共通鍵更新部７４により、真性乱数Ｚ、クライアント乱数の初期値Ｒ（０）およびサーバ乱数Ｑｘから式（８）に従って可変秘密鍵Ｋｘが生成される（ステップＳ１１４）。【０１５７】  そして、クライアント装置２では、サーバリセット後の認証データ１４ｂの初期値として、クライアント乱数Ｒ（０）、サーバ乱数Ｑｘおよび共通鍵ＫｘがＨＤＤ３４に格納される（ステップＳ１１５）。【０１５８】  このように、まず、クライアント装置２とサーバ装置１とにより、クライアント乱数Ｒ（０）、サーバ乱数Ｑｘおよび共通鍵Ｋｘが、サーバリセット後の認証データ１４ｂの初期値として共有される。【０１５９】  その後、クライアント装置２とサーバ装置１は、実施の形態１と同様にして認証セッションを１回実行してクライアント乱数、サーバ乱数および可変共通鍵を更新する（ステップＳ１２〜Ｓ２２，Ｓ３２〜Ｓ４２）。【０１６０】  これにより、サーバ装置１において、このクライアント装置２についての認証データ１４ｂおよびクライアントテーブル１４ｃ内のワンタイムＩＤが復旧される。【０１６１】  それ以降、サーバリセット事象が発生しなければ、実施の形態１と同様にして認証セッションが必要に応じて適宜実行される。【０１６２】  以上のように、上記実施の形態２によれば、サーバ装置１では、認証データ１４ｂ（クライアント乱数、サーバ乱数など）が消失した場合に、乱数生成部５１が、サーバ乱数の初期値Ｑｘを新たに生成する。そして、ワンタイムＩＤ生成部５２は、そのサーバ乱数の初期値Ｑｘを使用して、クライアント装置２が次回使用するワンタイムＩＤ：Ｃ（０）を生成する。暗号処理部５３は、認証要求とともに受信したクライアント装置２のワンタイムＩＤ：Ｃ（ｉ）から生成された暗号鍵Ｋｒでサーバ乱数の初期値Ｑｘを暗号化する。通信処理部５５は、サーバリセット発生情報、および暗号化されたサーバ乱数の初期値Ａｘを、クライアント装置２に送信する。【０１６３】  これにより、認証要求を送信したクライアント装置２のみがそのサーバ乱数の初期値Ｑｘを復号して取得することができるため、サーバ装置１におけるクライアント乱数およびサーバ乱数が消失した場合、耐タンパ性を維持しつつ、クライアント装置２の認証を継続して行うことができる。【０１６４】実施の形態３．
本発明の実施の形態３に係る認証システムでは、サーバ装置１は、連続する２セッション分の認証データ１４ｂおよびクライアントテーブル１４ｃを保持し、クライアント装置２・サーバ装置１間の通信障害で認証に失敗した場合でも再度認証処理を行うことができる。【０１６５】  クライアント装置２・サーバ装置１間の通信障害に起因する事象としては、クライアント装置２から送信されたワンタイムＩＤ：Ｃ（ｉ）およびクライアント乱数Ａｃがサーバ装置１へ到達しない（事象＃１）、サーバ装置１から送信されたワンタイムＩＤ：Ｓ（ｉ）およびサーバ乱数Ａｓがクライアント装置２へ到達しない（事象＃２）、の２つがある。【０１６６】  実施の形態３に係る認証システムの構成は、原則として実施の形態１または２のものと同一である。ただし、実施の形態３におけるサーバ装置１およびクライアント装置２は、以下のように動作する。【０１６７】  図８は、実施の形態３におけるクライアント装置２・サーバ装置１間の認証手順を説明するフローチャートである。【０１６８】  実施の形態３では、サーバ装置１には、２セッション分の認証データ１４ｂが保持される。つまり、現セッション開始時には、前セッション時に使用されたクライアント乱数Ｒ（ｉ−１）、サーバ乱数Ｑ（ｉ−１）および可変共通鍵Ｋ（ｉ−１）、並びに現セッションについてのクライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）が保持されている（ステップＳ２３１）。【０１６９】  図９は、実施の形態３におけるクライアントテーブル１４ｃの一例を示す図である。図９に示すように、実施の形態３では、クライアントテーブル１４ｃは、現セッションのクライアントテーブル１４ｃ１と前セッションのクライアントテーブル１４ｃ２とを有する。【０１７０】  クライアント装置２の通信処理部７５は、実施の形態１と同様にして、認証要求、ワンタイムＩＤ：Ｃ（ｉ）、および暗号化されたクライアント乱数Ａｃをサーバ装置１へ送信する。そして、通信処理部７５は、所定時間（例えば６０秒）以内にサーバ装置１から返答がない場合には、通信障害が発生したと判断する（ステップＳ２１１）。【０１７１】  通信障害が発生した場合、通信処理部７５は、受信エラー情報を付して、認証要求、ワンタイムＩＤ：Ｃ（ｉ）およびクライアント乱数Ａｃをサーバ装置１へ再送信する（ステップＳ２１２）。受信エラー情報は、受信エラーが発生したことをサーバ装置１へ通知するためのフラグ値などといったデータである。【０１７２】  サーバ装置１の通信処理部５５は、認証要求を受信し（ステップＳ２３２）、認証要求に付されている受信エラー情報を検出すると、通常処理とは異なるリカバリ処理を開始する（ステップＳ２３３）。なお、受信エラー情報が検出されない場合、サーバ装置１は、実施の形態１の場合と同様の処理を行う。【０１７３】  リカバリ処理では、まず、データ管理部５６により、受信されたワンタイムＩＤ：Ｃ（ｉ）が前セッションのクライアントテーブル１４ｃ２に登録されているか否かが判断される（ステップＳ２３４）。【０１７４】  事象＃２に起因して認証が失敗した場合、クライアント装置２の現セッションとサーバ装置１の前セッションとが同一のセ���ションとなる。したがって、正当なクライアント装置２による認証が事象＃２に起因して失敗した場合には、受信されたワンタイムＩＤ：Ｃ（ｉ）は前セッションのクライアントテーブル１４ｃ２に登録されている。【０１７５】  この場合、サーバ装置１の現セッションについてのクライアント乱数Ｒ（ｉ）および前セッションについてのサーバ乱数Ｑ（ｉ−１）が読み出され、ワンタイムＩＤ生成部５２により、式（７）に従って、サーバ装置１のワンタイムＩＤ：Ｓ（ｉ−１）が生成される（ステップＳ２３５）。また、暗号処理部５２により、所定の暗号化関数Ｆｃに従って、前セッションの可変共通鍵Ｋ（ｉ−１）で現セッションのサーバ乱数Ｑ（ｉ）が暗号化される（ステップＳ２３６）。そして、通信処理部５５により、このワンタイムＩＤ：Ｓ（ｉ−１）および暗号化されたサーバ乱数Ａｓが、認証要求を送信したクライアント装置２へ送信される（ステップＳ２３７）。【０１７６】  Ｓ（ｉ−１）＝ｈａｓｈ（Ｒ（ｉ），Ｑ（ｉ−１））・・・（７）【０１７７】  ただし、ｈａｓｈは、式（２）と同一なハッシュ関数である。【０１７８】  一方、受信されたワンタイムＩＤ：Ｃ（ｉ）が前セッションのクライアントテーブルに登録されていない場合、データ管理部５６により、受信されたワンタイムＩＤ：Ｃ（ｉ）が現セッションのクライアントテーブル１４ｃ１に登録されている否かが判断される（ステップＳ２３８）。【０１７９】  事象＃１に起因して認証が失敗した場合、クライアント装置２の現セッションとサーバ装置１の現セッションとが同一のセッションとなる。したがって、正当なクライアント装置２による認証が事象＃１に起因して失敗した場合には、受信されたワンタイムＩＤ：Ｃ（ｉ）は現セッションのクライアントテーブル１４ｃ１に登録されている。【０１８０】  この場合、実施の形態１と同様にクライアント乱数Ａｃが復号され次セッションについての平文のクライアント乱数Ｒ（ｉ＋１）が取得される（ステップＳ２３９）。【０１８１】  次に、実施の形態１と同様にワンタイムＩＤ：Ｓ（ｉ）およびサーバ乱数Ｑ（ｉ＋１）が生成される（ステップＳ２４０，Ｓ２４１）。ただし、サーバ乱数Ｑ（ｉ＋１）を生成するとき、次セッションについてのクライアント装置２のワンタイムＩＤ：ＣＣがクライアントテーブル１４ｃにおける現セッションおよび前セッションのテーブルにおけるいずれのワンタイムＩＤとも一致しないようなサーバ乱数Ｑ（ｉ＋１）が生成される。また、実施の形態１と同様にサーバ乱数Ｑ（ｉ＋１）が暗号化される（ステップＳ２４２）。【０１８２】  そして、通信処理部５５により、このワンタイムＩＤ：Ｓ（ｉ）および暗号化されたサーバ乱数Ａｓが、認証要求を送信したクライアント装置２へ送信される（ステップＳ２４３）。【０１８３】  なお、受信されたワンタイムＩＤ：Ｃ（ｉ）が、前セッションおよび現セッションのいずれのクライアントテーブル１４ｃ１，１４ｃ２にも登録されていない場合には、認証要求を送信したクライアント装置２は、不正クライアントと判断される（ステップＳ２４４）。【０１８４】  その後、事象＃１に起因して認証が失敗した場合には、次セッションについてのクライアント装置２のワンタ��ムＩＤ：Ｃ（ｉ＋１）がクライアントテーブル１４ｃに登録される（ステップＳ２４５）。図１０は、図８のステップＳ２４５の詳細を説明するフローチャートである。【０１８５】  実施の形態３では、サーバ装置１のデータ管理部５６は、現セッションのクライアントテーブル１４ｃ１から現セッションのワンタイムＩＤ：Ｃ（ｉ）のレコードを読み出す（ステップＳ２５１）。その際、データ管理部５６は、ワンタイムＩＤ：Ｃ（ｉ）を所定の整数Ｎで除算した際の剰余をインデックス値として計算しそのインデックス値のレコードを読み出し、そのレコード内のワンタイムＩＤがワンタイムＩＤ：Ｃ（ｉ）と一致するか否かを判断する。一致する場合には、データ管理部５６は、そのレコードがワンタイムＩＤ：Ｃ（ｉ）のレコードであると判断する。一方、そのレコード内のワンタイムＩＤがワンタイムＩＤ：Ｃ（ｉ）と一致しない場合には、データ管理部５６は、インデックス値を１だけ増加させてそのインデックス値のレコードを読み出し、そのレコード内のワンタイムＩＤがワンタイムＩＤ：Ｃ（ｉ）と一致するか否かを判断する。このようにして、データ管理部５６は、ワンタイムＩＤ：Ｃ（ｉ）のレコードが発見されるまで、インデックス値を１ずつ増加させてレコードを読み出していく。【０１８６】  次に、データ管理部５６は、読み出したワンタイムＩＤ：Ｃ（ｉ）のレコードからクライアント情報を抽出し、ワンタイムＩＤ：Ｃ（ｉ）およびそのクライアント情報を、前セッションのクライアントテーブル１４ｃ２に格納する（ステップＳ２５２）。その際、データ管理部５６は、ワンタイムＩＤ：Ｃ（ｉ）を所定の整数Ｎで除算した際の剰余をインデックス値としそのインデックス値のレコードが空きであるか否かを判断する。空きである場合には、データ管理部５６は、そのレコードにワンタイムＩＤ：Ｃ（ｉ）とクライアント情報を格納する。一方、そのレコードが空きではない場合には、データ管理部５６は、インデックス値を１ずつ増加させていき、そのインデックス値のレコードが空きであるか否かを判断し、空きのレコードに、ワンタイムＩＤ：Ｃ（ｉ）とクライアント情報を格納する。【０１８７】  また、データ管理部５６は、読み出したワンタイムＩＤ：Ｃ（ｉ）のレコードにおけるクライアント情報と次セッションのワンタイムＩＤ：Ｃ（ｉ＋１）を、現セッションのクライアントテーブル１４ｃ１に格納する（ステップＳ２５３）。その際、データ管理部５６は、ワンタイムＩＤ：Ｃ（ｉ＋１）を所定の整数Ｎで除算した際の剰余をインデックス値として計算しそのインデックス値のレコードが空きであるか否かを判断する。空きである場合には、データ管理部５６は、そのレコードにワンタイムＩＤ：Ｃ（ｉ＋１）とクライアント情報を格納する。一方、そのレコードが空きではない場合には、データ管理部５６は、インデックス値を１ずつ増加させていき、そのインデックス値のレコードが空きであるか否かを判断し、空きのレコードに、ワンタイムＩＤ：Ｃ（ｉ＋１）とクライアント情報を格納する。【０１８８】  そして、データ管理部５６は、現セッションのクライアントテーブル１４ｃ１における現セッションのワンタイムＩＤ：Ｃ（ｉ）のレコードを特定し、そのレコードの内容を削除する（ステップＳ２５４）。その際、データ管理部５６は、ステップＳ２５１で特定した現セッションのクライアントテーブルにおけるワンタイムＩＤ：Ｃ（ｉ）のレコードのインデックス値をＲＡＭ１３に記憶しておき、ステップＳ２５４でそのインデックス値のレコードの内容を削除する。【０１８９】  また、データ管理部５６は、前セッションのクライアントテーブル１４ｃ２における前セッションのワンタイムＩＤ：Ｃ（ｉ−１）のレコードを特定し、そのレコードの内容を削除する（ステップＳ２５５）。その際、ワンタイムＩＤ生成部５２は、前セッションのクライアント乱数Ｒ（ｉ−１）およびサーバ乱数Ｑ（ｉ−１）から前セッションのワンタイムＩＤ：Ｃ（ｉ−１）を生成し、データ管理部５６は、そのワンタイムＩＤ：Ｃ（ｉ−１）を所定の整数Ｎで除算した際の剰余をインデックス値として計算しそのインデックス値のレコードを読み出し、そのレコード内のワンタイムＩＤがワンタイムＩＤ：Ｃ（ｉ−１）と一致するか否かを判断する。一致する場合には、データ管理部５６は、そのレコードがワンタイムＩＤ：Ｃ（ｉ−１）のレコードであると判断する。一方、そのレコード内のワンタイムＩＤがワンタイムＩＤ：Ｃ（ｉ）と一致しない場合には、データ管理部５６は、インデックス値を１ずつ増加させていき、そのインデックス値のレコードを読み出し、そのレコード内のワンタイムＩＤがワンタイムＩＤ：Ｃ（ｉ）と一致する場合に、そのレコードがワンタイムＩＤ：Ｃ（ｉ−１）のレコードであると判断する。【０１９０】  このようにして、次セッションについてのクライアント装置２のワンタイムＩＤ：Ｃ（ｉ＋１）がクライアントテーブル１４ｃに登録されるとともに、現セッションについてのクライアント装置２のワンタイムＩＤ：Ｃ（ｉ）もクライアントテーブル１４ｃに保持される。なお、前セッションについてのワンタイムＩＤ：Ｃ（ｉ−１）はクライアントテーブル１４ｃから削除される。つまり、あるセッションで、現セッションのクライアントテーブル１４ｃ１に格納されたワンタイムＩＤは、次のセッションで、前セッションのクライアントテーブル１４ｃ２に移動し、さらにその次のセッションで、クライアントテーブル１４ｃから削除される。【０１９１】  図８に戻り、事象＃１に起因して認証が失敗した場合には、実施の形態１と同様にして、可変共通鍵Ｋ（ｉ）が更新される（ステップＳ２４６）。【０１９２】  そして、データ管理部５６は、ＨＤＤ１４に認証データ１４ｂとして格納されているクライアント乱数Ｒ（ｉ−１）、サーバ乱数Ｑ（ｉ−１）および可変共通鍵Ｋ（ｉ−１）並びにクライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）を、クライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）並びにクライアント乱数Ｒ（ｉ＋１）、サーバ乱数Ｑ（ｉ＋１）および可変共通鍵Ｋ（ｉ＋１）へ更新する（ステップＳ２４７）。【０１９３】  なお、事象＃２に起因して認証が失敗した場合には、既に認証データ１４ｂおよびクライアントテーブル１４ｃが更新されているため、ステップＳ２４５，Ｓ２４６の処理は必要ない。また、事象＃２に起因して認証が失敗した場合には、その際��、既に、クライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および共通鍵Ｋ（ｉ）、並びにクライアント乱数Ｒ（ｉ＋１）、サーバ乱数Ｑ（ｉ＋１）および共通鍵Ｋ（ｉ＋１）への更新が行われているため、サーバ装置１は、それらの数値をそのまま保持する（ステップＳ２４７）。【０１９４】  他方、クライアント装置２は、ステップＳ２１２においてワンタイムＩＤおよびクライアント乱数Ａｃを再送した後、実施の形態１のステップＳ１６〜Ｓ２２の処理を同様に行う。事象＃１および事象＃２のいずれで認証に失敗したかをサーバ装置１が検出しそれに応じた処理を実行するため、クライアント装置２は、ワンタイムＩＤおよびクライアント乱数Ａｃを再送した後は、通常通りの処理を行う。【０１９５】  以上のように、上記実施の形態３によれば、サーバ装置１のＨＤＤ１４は、各クライアント装置２について、連続する２つのセッションのワンタイムＩＤを格納する。事象＃２による受信エラーが発生した場合には、データ管理部５６は、クライアント装置２から受信されたワンタイムＩＤと前セッションのクライアントテーブル１４ｃ２内のワンタイムＩＤとに基づきクライアント装置２の正当性を判断し、事象＃１による受信エラーが発生した場合には、データ管理部５６は、クライアント装置２から受信されたワンタイムＩＤと現セッションのクライアントテーブル１４ｃ１内のワンタイムＩＤとに基づきクライアント装置２の正当性を判断する。ただし、最終的には正当性は、この後に通常の認証セッションを実行し、その認証セッションにて判断される。【０１９６】  また、事象＃１による受信エラーが発生した場合、ワンタイムＩＤ生成部５２は、ワンタイムＩＤ：Ｃ（ｉ＋１）を生成する際に、そのワンタイムＩＤ：Ｃ（ｉ＋１）が、クライアントテーブル１４ｃ１，１４ｃ２に登録されているワンタイムＩＤのいずれかと同一である場合には、再生成されたサーバ乱数Ｑ（ｉ＋１）とクライアント乱数Ｒ（ｉ＋１）からワンタイムＩＤを再度生成する。【０１９７】  これにより、クライアント装置２・サーバ装置１間の通信障害に起因してクライアント装置２に受信エラーが発生しても、クライアント装置２が、同じワンタイムＩＤ：Ｃ（ｉ）を使用して、サーバ装置１による認証を受けることができ、サーバ装置１は、１つ前の古いワンタイムＩＤに基づき、そのクライアント装置２を一意に特定することができる。【０１９８】  なお、実施の形態３では、認証失敗後のワンタイムＩＤ送信時に受信エラー情報を付加しているが、受信エラー情報を付加しなくてもよい。ただし、その場合には、最初に、実施の形態１と同様に、現セッションのクライアントテーブルを参照し、受信したワンタイムＩＤがそのテーブルに登録されている場合には、ステップＳ２３９以降の処理を行う。一方、受信したワンタイムＩＤがそのテーブルに登録されていない場合には、前セッションのクライアントテーブルを参照し、受信したワンタイムＩＤがそのテーブルに登録されている場合には、ステップＳ２３５以降の処理を行う。受信したワンタイムＩＤがいずれのクライアントテーブルにも登録されていない場合には、処理を中止する。つまり、前セッションのクライアントテーブルにワンタイムＩＤが登���されていれば、受信エラーが発生したものとして復旧処理（ステップＳ２３５〜Ｓ２３７）を行う。【０１９９】実施の形態４．
本発明の実施の形態４に係る認証システムは、１つのプロトコルによる通信セッションに１つのワンタイムＩＤ：Ｃ（ｉ），Ｓ（ｉ）を割り当てるようにしたものである。【０２００】  図１１は、本発明の実施の形態４に係る認証システムの構成を示すブロック図である。【０２０１】  図１１において、サーバ装置１０１は、図１のサーバ装置１と同様の装置である。ただし、サーバ装置１０１は、１または複数のプロトコルに応じて１または複数のサーバプログラムを格納している。そして、１つのサーバプログラムがＣＰＵにより実行されることで、１つのサーバ処理部１１１が実現される。このようなサーバプログラムとしては、ＰＯＰ３（Ｐｏｓｔ  Ｏｆｆｉｃｅ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ３）などのメール配信サーバプログラム、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバプログラムなどがある。また、サーバ装置１０１は、各プロトコルのセッションについてワンタイムＩＤにて認証処理を行う認証処理部１１２を有する。認証処理部１１２は、図２の処理部５１〜５６と同様の機能を有し、図示せぬＨＤＤおよびＲＡＭにおける認証データ、クライアントテーブルなどにアクセスしつつ、プロトコルごとに、ワンタイムＩＤ：Ｃ（ｉ），Ｓ（ｉ）により通信セッションの正当性を確保する。【０２０２】  また、クライアント装置１０２は、図１のクライアント装置２と同様の装置である。ただし、クライアント装置１０２は、１または複数のプロトコルに応じて１または複数のアプリケーションプログラムを格納している。そして、１つのアプリケーションプログラムがＣＰＵにより実行されることで、１つのアプリケーション処理部１２１が実現される。このようなアプリケーションプログラムとしては、メールクライアントプログラム、ウェブブラウザプログラムなどがある。また、クライアント装置１０２は、各プロトコルのセッションについてワンタイムＩＤにて認証処理を行う認証処理部１２２を有する。認証処理部１２２は、図２の処理部７１〜７６と同様の機能を有し、図示せぬＨＤＤおよびＲＡＭにおける認証データ、サーバデータなどにアクセスしつつ、プロトコルごとに、ワンタイムＩＤ：Ｃ（ｉ），Ｓ（ｉ）により通信セッションの正当性を確保する。【０２０３】  なお、クライアント装置１０２およびサーバ装置１０１は、図示せぬ通信ネットワークを介して通信を行う。また、図１１ではクライアント装置１０２は１台であるが、複数台存在してもよい。【０２０４】  次に、上記装置の動作について説明する。【０２０５】  クライアント装置１０２のアプリケーション処理部１２１は、所定のプロトコルに従ってサーバ装置１１２のサーバ処理部１２２とデータ通信を行う。つまり、認証処理部１１２，１２２の有無に拘わらず、アプリケーション処理部１２１とサーバ処理部１２２は、同一手順でデータ１３１を送受する。【０２０６】  そして、クライアント装置１０２の認証処理部１２２は、アプリケーション処理部１２１からサーバ処理部１２２へのデータ１３１に認証データ１３２を付加し、サーバ装置１０１の認証処理部１１２は、アプリケーション処理部１２１からサーバ処理部１２２へのデータ１３１に付加された認���データ１３２を受信し、そのデータ１３１から認証データ１３２を削除する。この場合の認証データ１３２は、クライアント側のワンタイムＩＤ：Ｃ（ｉ）および暗号化されたクライアント乱数Ａｃである。【０２０７】  一方、サーバ装置１０１の認証処理部１１２は、サーバ処理部１１１からクライアント処理部１２１へのデータ１３１に認証データ１３２を付加し、クライアント装置１０２の認証処理部１２２は、サーバ処理部１２２からアプリケーション処理部１２１へのデータ１３１に付加された認証データ１３２を受信し、そのデータ１３１から認証データ１３２を削除する。この場合の認証データ１３２は、サーバ側のワンタイムＩＤ：Ｓ（ｉ）および暗号化されたサーバ乱数Ａｓである。【０２０８】  このように、認証処理部１１２，１２２は、プロトコルごとに、クライアント側のワンタイムＩＤおよびクライアント乱数、並びにサーバ側のワンタイムＩＤおよびクライアント乱数を送受して、各プロトコルの通信セッションを認証する。なお、各認証処理部１１２，１２２での認証処理については、実施の形態１〜３のいずれかと同様に行われる。【０２０９】  認証処理部１１２から認証処理部１２２への認証データ１３２の伝送は、アプリケーション処理部１２１とサーバ処理部１１１との通信セッション開始時のみとしてもよいし、定期的に行うようにしてもよい。認証処理部１２２から認証処理部１１２への認証データ１３２の伝送は、認証処理部１１２から認証処理部１２２へ認証データ１３２が伝送された場合に行われる。また、認証処理部１２２から認証処理部１１２へ認証データ１３２が伝送された後、直ちに、認証処理部１１２から認証処理部１２２へ認証データ１３２を伝送するようにして、通信セッションが存在する期間中、継続的に認証を行うようにしてもよい。【０２１０】  以上のように、上記実施の形態４によれば、サーバ装置１０１の認証処理部１１２は、通信プロトコルごとにワンタイムＩＤ：Ｃ（ｉ）を生成し、クライアント装置１０２との通信に使用される通信プロトコルに応じたワンタイムＩＤ：Ｃ（ｉ）でクライアント装置１０２の正当性を判断する。【０２１１】  これによれば、通信プロトコルごとに、複数のクライアント装置１０２のワンタイムＩＤが管理される。したがって、１つのクライアント装置１０２で複数の通信プロトコルまたはポートが使用される場合には、１つのクライアント装置１０２に対して複数のワンタイムＩＤが生成され、通信プロトコルごとに、サーバ装置１０１により認証を受ける。これにより、通信プロトコルごとに、クライアント装置１０２を一意に特定することが可能になる。【０２１２】  なお、上述の各実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。【０２１３】  例えば、上記各実施の形態において、ＨＤＤ１４，３４に格納されている認証データ１４ｂ，３４ｂは、装置１，２の起動時にＲＡＭ１３，３３に読み出し、以後、データ管理部５６，７６は、ＲＡＭ１３，３３内の認証データ１４ｂ，３４ｂにアクセスするようにしてもよい。その場合、装置１，２のシャットダウン時、認証サーバ��ログラム１４ａおよび認証処理プログラム３４ａの実行終了時に、ＲＡＭ１３，３３内の認証データ１４ｂ，３４ｂをＨＤＤ１４，３４へ反映すればよい。【０２１４】  また、上記各実施の形態では、認証データ３４ｂは、クライアント装置２に内蔵される記憶媒体において保持されているが、その代わりに、クライアント装置２から直接読み書き可能なデータ格納機器に認証データ３４ｂが格納されるようにしてもよい。その場合、データ管理部７６は、図示せぬインタフェースまたはリーダライタを介してそのデータ格納機器にアクセスし、認証データ３４ｂを読み書きする。そのようなデータ格納機器としては、ＵＳＢメモリ、ＳＤメモリ（商標）、メモリースティック（商標）などの携帯型不揮発性半導体メモリ、ＩＣカード、記憶領域を有するＲＦＩＤタグなどが使用される。その場合、クライアント装置２ではなくデータ格納機器がワンタイムＩＤにより認証されることになる。【０２１５】  また、上記各実施の形態では、クライアント装置２およびサーバ装置１が、ワンタイムＩＤ：Ｃ（ｉ），Ｓ（ｉ）で相互に認証を行っているが、クライアント装置２のみが、サーバ装置１によりワンタイムＩＤ：Ｃ（ｉ）で認証を受けるようにしてもよい。その場合、サーバ装置１によるワンタイムＩＤ：Ｓ（ｉ）の生成、クライアント装置２へのワンタイムＩＤ：Ｓ（ｉ）の送信、およびクライアント装置２による正当性判断処理（ステップＳ１７〜Ｓ１９）は省略される。【０２１６】  また、上記各実施の形態では、クライアント装置２は、ワンタイムＩＤ：Ｓ（ｉ）を受信した際に、真正なワンタイムＩＤ：Ｙを生成しているが、その代わりに、真正なワンタイムＩＤ：Ｙを予め生成してサーバデータ３４ｃとしてＨＤＤ３４に格納しておき、ワンタイムＩＤ：Ｓ（ｉ）を受信した際に、サーバデータ３４ｃを真正なワンタイムＩＤ：Ｙとして読み出すようにしてもよい。その場合、例えば、認証データ３４ｂとして、クライアント乱数Ｒ（ｉ）、サーバ乱数Ｑ（ｉ）および可変共通鍵Ｋ（ｉ）がＨＤＤ１４に格納される際に、ワンタイムＩＤ生成部７２により真正なワンタイムＩＤ：Ｙが予め生成され、サーバデータ３４ｃとして格納される。このようにした場合、認証処理中に真正なワンタイムＩＤ：Ｙを生成せずに済むため、認証処理の時間が短くなる。【０２１７】  また、上記実施の形態４ではプロトコルごとにワンタイムＩＤを生成しているが、その代わりに、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のポートごとにワンタイムＩＤを生成するようにしてもよい。また、上記実施の形態４において、認証データ１３２を、ＩＰパケット、ＴＣＰパケットなどのペイロードの所定の領域に含めるようにしてもよい。【０２１８】  また、上記各実施の形態において、サーバ乱数Ｑ（ｉ＋１）を生成する際に、認証データ１４ｂに登録されている複数のクライアント装置についてのサーバ乱数Ｑ（ｉ）（またはＱ（ｉ）およびＱ（ｉ−１））のいずれとも同一ではないサーバ乱数Ｑ（ｉ＋１）を生成するようにしてもよい。【０２１９】  また、上記各実施の形態において、サーバ装置１は、認証のみを行い、認証後に、クライアント装置２と他のサーバ装置とがアプリケーシ���ンのデータ通信を行うようにしてもよい。その場合には、クライアント装置２の認証後に、サーバ装置１がその他のサーバ装置へ、認証結果、そのクライアント装置２の識別情報などを送信する。【０２２０】  また、上記各実施の形態において、クライアント装置２，１０２・サーバ装置１，１０１間で送受されるワンタイムＩＤ、クライアント乱数およびサーバ乱数に、チェックサムなどの改ざん検出用データを付すようにしてもよい。これにより、受信側にて、通信の途中で、ワンタイムＩＤ、クライアント乱数およびサーバ乱数が改ざんされたか否かを検出することができる。【０２２１】  また、上記各実施の形態において、真性乱数や認証データ１４ｂの初期値を、クライアント装置２，１０２およびサーバ装置１，１０１にて共有する方法としては、サーバ装置１，１０１が生成しクライアント装置２，１０２へ送信する方法、第三者の認証機関データがサーバ装置１，１０１およびクライアント装置２，１０２へ提供する方法、ＩＣカード、ＣＤ−ＲＯＭなどの記録媒体や、印刷物などを配布する方法などが考えられる。【０２２２】  また、上記各実施の形態において、認証サーバプログラム１４ａは、可搬性のある記録媒体、インターネットなどの通信媒体により提供されるようにしてもよい。【０２２３】  また、上記実施の形態３において、サーバ装置１の通信処理部５５は、ワンタイムＩＤ：Ｓ（ｉ）またはＳ（ｉ−１）に再認証要求を付して送信するようにしてもよい（ステップＳ２３７，Ｓ２４３）。その場合、クライアント装置２は、再認証要求を受信すると、図８に示す処理が完了した後に、受信エラー情報を付さずにワンタイムＩＤ等を送信しサーバ装置１による認証を受ける。
【産業上の利用可能性】
【０２２４】  本発明は、例えば、クライアント端末、携帯型記憶媒体などの機器認証に適用可能である。
【図１】
2008035450.tif 000003
【図２】
2008035450.tif 000004
【図３】
2008035450.tif 000005
【図４】
2008035450.tif 000006
【図５】
2008035450.tif 000007
【図６】
2008035450.tif 000008
【図７】
2008035450.tif 000009
【図８】
2008035450.tif 000010
【図９】
2008035450.tif 000011
【図１０】
2008035450.tif 000012
【図１１】
2008035450.tif 000013
【手続補正書】
【提出日】平成20年7月4日(2008.7.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のクライアント装置または前記クライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証サーバ装置により認証する認証システムであって、
前記クライアント装置は、
内蔵記憶媒体または前記データ格納機器に格納された現通信単位の前記認証サーバ装置のサーバ乱数と前記クライアント装置または前記データ格納機器のクライアント乱数とを読み出しそれらの乱数を引数としたハッシュ関数の値に基づいて当該クライアント装置または前記データ格納機器のワンタイムＩＤを生成する第１のワンタイムＩＤ生成手段と、
前記所定の通信単位ごとにクライアント乱数を生成する第１の乱数生成手段と、
前記第１のワンタイムＩＤ生成手段による現通信単位のワンタイムＩＤおよび前記第１の乱数生成手段による次の通信単位のクライアント乱数を前記認証サーバ装置に送信する第１の送信手段と、
前記認証サーバ装置から、現通信単位の前記認証サーバ装置のワンタイムＩＤおよび次の通信単位のサーバ乱数を受信する第１の受信手段と、
前記第１の受信手段により受信されたワンタイムＩＤに基づいて前記認証サーバ装置の正当性を判断する第１の認証手段とを備え、
前記認証サーバ装置は、
各クライアント装置または各データ格納機器のワンタイムＩＤを格納する記憶手段と、
前記所定の通信単位ごとに前記サーバ乱数を生成する第２の乱数生成手段と、
前記クライアント装置の現通信単位のワンタイムＩＤおよび次の通信単位のクライアント乱数を前記クライアント装置から受信する第２の受信手段と、
前記記憶手段におけるワンタイムＩＤと前記第２の受信手段により受信されたワンタイムＩＤとに基づき前記クライアント装置または前記データ格納機器の正当性を判断する第２の認証手段と、
前記第２の乱数生成手段による次の通信単位のサーバ乱数と前記第２の受信手段により受信された次の通信単位のクライアント乱数とを引数としたハッシュ関数の値に基づいて前記クライアント装置または前記データ格納機器の次の通信単位のワンタイムＩＤを生成し、このワンタイムＩＤが、前記記憶手段に格納されている複数のワンタイムＩＤのいずれかと同一である場合には、前記第２の乱数生成手段により再度生成されたサーバ乱数と前記第２の受信手段により受信されたクライアント乱数とを引数としたハッシュ関数の値に基づいて前記ワンタイムＩＤを再度生成し、このワンタイムＩＤが、前記記憶手段に格納されている複数のワンタイムＩＤのいずれとも同一ではない場合には、そのワンタイムＩＤで前記記憶手段における前記クライアント装置またはデータ格納機器のワンタイムＩＤを更新するクライアントワンタイムＩＤ生成手段と、
現通信単位の前記サーバ乱数と前記第２の受信手段により受信された前記次の通信単位のクライアント乱数とを引数としたハッシュ関数の値に基づいて現通信単位の前記認証サーバ装置のワンタイムＩＤを生成する第２のワンタイムＩＤ生成手段と、
現通信単位の前記認証サーバ装置のワンタイムＩＤおよび前記次の通信単位のサーバ乱数を前記クライアント装置へ送信する第２の送信手段と、
前記サーバ乱数を暗号化する暗号化手段とを備え、
前記第２の乱数生成手段は、当該認証サーバ装置における前記クライアント乱数および前記サーバ乱数が消失した場合には、前記サーバ乱数の初期値を新たに生成し、
前記クライアントワンタイムＩＤ生成手段は、当該認証サーバ装置における前記クライアント乱数および前記サーバ乱数が消失した場合には、新たに生成された前記サーバ乱数の初期値を使用して前記ワンタイムＩＤを生成し、
前記暗号化手段は、当該認証サーバ装置における前記クライアント乱数および前記サーバ乱数が消失した場合には、前記クライアント装置から認証要求とともに受信したワンタイムＩＤを引数に含む一方向性関数で生成された暗号鍵で、新たに生成された前記サーバ乱数の初期値を暗号化し、
前記第２の送信手段は、当該認証サーバ装置における前記クライアント乱数および前記サーバ乱数が消失した場合には、前記クライアント乱数および前記サーバ乱数が消失したことを通知するデータ、並びに新たに生成され暗号化された前記サーバ乱数の初期値を、前記クライアント装置に送信すること、
を特徴とする認証システム。
【請求項２】
複数のクライアント装置または前記クライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証する認証サーバ装置であって、
いずれかの前記クライアント装置により生成されたクライアント乱数を受信する受信手段と、
サーバ乱数を生成する乱数生成手段と、
前記所定の通信単位ごとに更新される前記クライアント乱数と前記サーバ乱数とを引数とした一方向性関数で前記クライアント装置または前記データ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、前記乱数生成手段によりサーバ乱数を再生成させ再生成されたサーバ乱数を使用して前記次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成手段と、
前記次の通信単位のワンタイムＩＤの生成に使用された前記サーバ乱数を前記クライアント装置に送信する送信手段と、
次の通信単位で、前記クライアントワンタイムＩＤ生成手段により生成された前記ワンタイムＩＤに基づいて前記クライアント装置または前記データ格納機器の正当性を判断する認証手段と、
前記サーバ乱数を暗号化する暗号化手段とを備え、
前記乱数生成手段は、前記クライアント乱数および前記サーバ乱数が消失した場合には、前記サーバ乱数の初期値を新たに生成し、
前記クライアントワンタイムＩＤ生成手段は、前記クライアント乱数および前記サーバ乱数が消失した場合には、新たに生成された前記サーバ乱数の初期値を使用して前記ワンタイムＩＤを生成し、
前記暗号化手段は、前記クライアント乱数および前記サーバ乱数が消失した場合には、前記クライアント装置から認証要求とともに受信したワンタイムＩＤを引数に含む一方向性関数で生成された暗号鍵で、新たに生成された前記サーバ乱数の初期値を暗号化し、
前記送信手段は、前記クライアント乱数および前記サーバ乱数が消失した場合には、前記クライアント乱数および前記サーバ乱数が消失したことを通知するデータ、並びに新たに生成され暗号化された前記サーバ乱数の初期値を、前記クライアント装置に送信すること、
を特徴とする認証サーバ装置。
【請求項３】
各クライアント装置または各データ格納機器のワンタイムＩＤを格納する記憶手段を備え、
前記受信手段は、現通信単位についての前記クライアント乱数および前記サーバ乱数から生成された前記ワンタイムＩＤと次の通信単位の前記クライアント乱数とを前記クライアント装置から受信し、
前記認証手段は、前記受信手段により受信された前記ワンタイムＩＤと前記記憶手段における前記ワンタイムＩＤとに基づき前記クライアント装置またはデータ格納機器の正当性を判断し、
前記クライアントワンタイムＩＤ生成手段は、前記認証手段により前記クライアント装置またはデータ格納機器が正当なものであると判断された後に、前記次の通信単位のサーバ乱数と前記次の通信単位のクライアント乱数とを引数とした一方向性関数の値に基づいて前記クライアント装置または前記データ格納機器についての次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤが、前記記憶手段に格納されている複数のワンタイムＩＤのいずれかと同一である場合には、前記乱数生成手段により再生成された前記次の通信単位のサーバ乱数と前記次の通信単位のクライアント乱数とを引数とした一方向性関数の値に基づいて前記ワンタイムＩＤを再度生成し、生成したワンタイムＩＤが、前記記憶手段に格納されている複数のワンタイムＩＤのいずれとも同一ではない場合には、生成したワンタイムＩＤで、前記記憶手段における前記クライアント装置または前記データ格納機器のワンタイムＩＤを更新すること、
を特徴とする請求項２記載の認証サーバ装置。
【請求項４】
前記記憶手段は、前記クライアント装置または前記データ格納機器のそれぞれについて、連続する２つの通信単位のワンタイムＩＤを格納し、
前記認証手段は、当該認証サーバ装置からの前記次の通信単位のサーバ乱数が前記クライアント装置により受信されず受信エラーが発生した場合には、前記受信手段により受信された前記ワンタイムＩＤと前記記憶手段における２つのワンタイムＩＤのうちの古いワンタイムＩＤとに基づき前記クライアント装置またはデータ格納機器の正当性を判断し、前記クライアント装置からのワンタイムＩＤが前記受信手段により受信されず受信エラーが発生した場合には、前記受信手段により受信された前記ワンタイムＩＤと前記記憶手段における２つのワンタイムＩＤのうちの新しいワンタイムＩＤとに基づき前記クライアント装置またはデータ格納機器の正当性を判断し、
前記クライアントワンタイムＩＤ生成手段は、前記ワンタイムＩＤを生成する際に、生成したワンタイムＩＤが、前記記憶手段に格納されているすべてのワンタイムＩＤのいずれかと同一である場合には、前記乱数生成手段により再生成された前記次の通信単位のサーバ乱数と前記次の通信単位のクライアント乱数とを引数とした一方向性関数の値に基づいて前記ワンタイムＩＤを再度生成すること、
を特徴とする請求項３記載の認証サーバ装置。
【請求項５】
前記送信手段は、前記クライアントワンタイムＩＤ生成手段により生成された前記次の通信単位のワンタイムＩＤを前記クライアント装置に送信せずに、前記クライアント装置において次の通信単位のワンタイムＩＤが生成される際に使用される前記次の通信単位のサーバ乱数を送信することを特徴とする請求項２記載の認証サーバ装置。
【請求項６】
前記クライアントワンタイムＩＤ生成手段は、前記クライアント装置のそれぞれまたは前記データ格納機器のそれぞれについて生成されたサーバ乱数を使用して、前記クライアント装置のそれぞれまたは前記データ格納機器のそれぞれについての前記ワンタイムＩＤを生成することを特徴とする請求項２記載の認証サーバ装置。
【請求項７】
前記クライアントワンタイムＩＤ生成手段は、通信プロトコルおよびポート番号のいずれかごとにワンタイムＩＤを生成し、
前記認証手段は、前記クライアント装置と前記受信手段との通信に使用される通信プロトコルおよびポート番号のいずれかに応じたワンタイムＩＤで前記クライアント装置の正当性を判断すること、
を特徴とする請求項２記載の認証サーバ装置。
【請求項８】
現通信単位のサーバ乱数、および前記受信手段により受信された次の通信単位のクライアント乱数を引数とした一方向性関数の値に基づいて当該認証サーバ装置のワンタイムＩＤを生成するワンタイムＩＤ生成手段を備え、
前記送信手段は、前記次の通信単位のサーバ乱数とともに、当該認証サーバ装置のワンタイムＩＤを送信すること、
を特徴とする請求項３記載の認証サーバ装置。
【請求項９】
通信単位ごとに更新される可変共通鍵で復号をする復号手段を備え、
前記受信手段は、前記可変共通鍵で暗号化された前記次の通信単位のクライアント乱数を前記クライアント装置から受信し、
前記復号手段は、前記認証手段により前記クライアント装置または前記データ格納機器が正当なものであると判断された後に、前記受信手段により受信された前記次の通信単位のクライアント乱数を復号し、
前記暗号化手段は、前記次の通信単位のサーバ乱数を前記可変共通鍵で暗号化し、
前記送信手段は、暗号化された前記次の通信単位のサーバ乱数とともに、当該認証サーバ装置のワンタイムＩＤを送信すること、
を特徴とする請求項８記載の認証サーバ装置。
【請求項１０】
現通信単位の前記可変共通鍵と次の通信単位の前記クライアント乱数と次の通信単位の前記サーバ乱数とを引数とした一方向性関数の値に基づき次の通信単位の前記可変共通鍵を生成し、前記可変共通鍵を更新する共通鍵更新手段を備えることを特徴とする請求項９記載の認証サーバ装置。
【請求項１１】
前記クライアントワンタイムＩＤ生成手段の前記一方向性関数は、暗号鍵を使用せずにダイジェストを生成するハッシュ関数であることを特徴とする請求項２記載の認証サーバ装置。
【請求項１２】
複数のクライアント装置または前記クライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証する認証サーバ装置としてコンピュータを機能させるコンピュータプログラムであって、
サーバ乱数を生成する乱数生成手段、
前記サーバ乱数と前記クライアント装置により生成され前記所定の通信単位ごとに更新される前記クライアント乱数とを引数とした一方向性関数で前記クライアント装置または前記データ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、前記乱数生成手段によりサーバ乱数を再生成させ再生成されたサーバ乱数を使用して前記次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成手段、
次の通信単位で、前記クライアントワンタイムＩＤ生成手段により生成された前記ワンタイムＩＤに基づいて前記クライアント装置または前記データ格納機器の正当性を判断する認証手段、並びに
前記サーバ乱数を暗号化する暗号化手段
としてコンピュータを機能させ、
前記乱数生成手段は、前記クライアント乱数および前記サーバ乱数が消失した場合には、前記サーバ乱数の初期値を新たに生成し、
前記クライアントワンタイムＩＤ生成手段は、前記クライアント乱数および前記サーバ乱数が消失した場合には、新たに生成された前記サーバ乱数の初期値を使用して前記ワンタイムＩＤを生成し、
前記暗号化手段は、前記クライアント乱数および前記サーバ乱数が消失した場合には、前記クライアント装置から認証要求とともに受信したワンタイムＩＤを引数に含む一方向性関数で生成された暗号鍵で、新たに生成された前記サーバ乱数の初期値を暗号化し、
前記送信手段は、前記クライアント乱数および前記サーバ乱数が消失した場合には、前記クライアント乱数および前記サーバ乱数が消失したことを通知するデータ、並びに新たに生成され暗号化された前記サーバ乱数の初期値を、前記クライアント装置に送信すること、
を特徴とするコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１３】
複数のクライアント装置または前記クライアント装置から直接読み書き可能な複数のデータ格納機器に割り当てられる所定の通信単位ごとに変化するワンタイムＩＤを認証サーバ装置で管理するワンタイムＩＤ管理方法であって、  
いずれかの前記クライアント装置により生成されたクライアント乱数を受信する受信ステップと、
サーバ乱数を生成する乱数生成ステップと、
前記サーバ乱数と前記所定の通信単位ごとに更新される前記クライアント乱数とを引数とした一方向性関数で前記クライアント装置または前記データ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、前記乱数生成ステップにてサーバ乱数を再生成し再生成したサーバ乱数を使用して前記次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成ステップと、
前記次の通信単位のワンタイムＩＤの生成に使用された前記サーバ乱数を前記クライアント装置に送信する送信ステップと、
次の通信単位で、前記クライアントワンタイムＩＤ生成ステップにて生成された前記ワンタイムＩＤに基づいて前記クライアント装置または前記データ格納機器の正当性を判断する認証ステップと、
を備え、
前記クライアント乱数および前記サーバ乱数が消失した場合には、前記サーバ乱数の初期値を新たに生成し、新たに生成された前記サーバ乱数の初期値を使用して前記ワンタイムＩＤを生成し、前記クライアント装置から認証要求とともに受信したワンタイムＩＤを引数に含む一方向性関数で生成された暗号鍵で、新たに生成された前記サーバ乱数の初期値を暗号化し、前記クライアント乱数および前記サーバ乱数が消失したことを通知するデータ、並びに新たに生成され暗号化された前記サーバ乱数の初期値を前記クライアント装置に送信すること、
を特徴とするワンタイムＩＤ管理方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
また、認証サーバ装置は、記憶手段と、第２の乱数生成手段と、第２の受信手段と、第２の認証手段と、クライアントワンタイムＩＤ生成手段と、第２のワンタイムＩＤ生成手段と、第２の送信手段とを備える。記憶手段は、各クライアント装置または各データ格納機器のワンタイムＩＤを格納する。第２の乱数生成手段は、所定の通信単位ごとにサーバ乱数を生成する。第２の受信手段は、クライアント装置の現通信単位のワンタイムＩＤおよび次の通信単位のクライアント乱数をクライアント装置から受信する。第２の認証手段は、記憶手段におけるワンタイムＩＤと第２の受信手段により受信されたワンタイムＩＤとに基づきクライアント装置またはデータ格納機器の正当性を判断する。クライアントワンタイムＩＤ生成手段は、第２の乱数生成手段による次の通信単位のサーバ乱数と第２の受信手段により受信された次の通信単位のクライアント乱数とを引数としたハッシュ関数の値に基づいてクライアント装置またはデータ格納機器の次の通信単位のワンタイムＩＤを生成し、このワンタイムＩＤが、記憶手段に格納されている複数のワンタイムＩＤのいずれかと同一である場合には、第２の乱数生成手段により再度生成されたサーバ乱数と第２の受信手段により受信されたクライアント乱数とを引数としたハッシュ関数の値に基づいてワンタイムＩＤを再度生成し、そうでない場合には、そのワンタイムＩＤで記憶手段におけるクライアント装置またはデータ格納機器のワンタイムＩＤを更新する。第２のワンタイムＩＤ生成手段は、現通信単位のサーバ乱数と第２の受信手段により受信された次の通信単位のクライアント乱数とを引数としたハッシュ関数の値に基づいて現通信単位の認証サーバ装置のワンタイムＩＤを生成する。第２の送信手段は、現通信単位の認証サーバ装置のワンタイムＩＤおよび次の通信単位のサーバ乱数をクライアント装置へ送信する。
さらに、認証サーバ装置は、サーバ乱数を暗号化する暗号化手段とを備える。そして、第２の乱数生成手段は、当該認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合には、サーバ乱数の初期値を新たに生成し、クライアントワンタイムＩＤ生成手段は、当該認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合には、新たに生成されたサーバ乱数の初期値を使用してワンタイムＩＤを生成し、暗号化手段は、当該認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合には、クライアント装置から認証要求とともに受信したワンタイムＩＤを引数に含む一方向性関数で生成された暗号鍵で、新たに生成されたサーバ乱数の初期値を暗号化し、第２の送信手段は、当該認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合には、クライアント乱数およびサーバ乱数が消失したことを通知するデータ、並びに新たに生成され暗号化されたサーバ乱数の初期値を、クライアント装置に送信する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
これによれば、クライアント装置のワンタイムＩＤの生成に使用されるサーバ装置のサーバ乱数が生成される際に、いずれかのクライアント装置に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数を生成している。また、ハッシュ関数により短時間でワンタイムＩＤが生成される。これにより、高い耐タンパ性を維持しつつ、固有ＩＤを送受しなくても、一方向性関数の値に基づくワンタイムＩＤで、クライアント装置またはデータ格納機器を短時間で一意に特定することが可能になる。
さらに、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合、クライアント装置からの認証要求が発生すると、認証サーバ装置により新たに生成されたサーバ乱数の初期値を、認証要求とともに送信されてきたワンタイムＩＤを使用して暗号化した上でそのクライアント装置へ供給する。これにより、認証要求を送信したクライアント装置のみがそのサーバ乱数の初期値を取得することができるため、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合でも、耐タンパ性を維持しつつ、クライアント装置の認証を継続して行うことができる。また、そのような場合でも、正当なクライアント装置を一意に特定することができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
本発明に係る認証サーバ装置は、複数のクライアント装置またはクライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証する。この認証サーバ装置は、受信手段と、乱数生成手段と、クライアントワンタイムＩＤ生成手段と、送信手段と、認証手段とを備える。受信手段は、いずれかのクライアント装置により生成されたクライアント乱数を受信する。乱数生成手段は、サーバ乱数を生成する。クライアントワンタイムＩＤ生成手段は、通信単位ごとに更新されるクライアント乱数とサーバ乱数とを引数とした一方向性関数でクライアント装置またはデータ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、乱数生成手段によりサーバ乱数を再生成させ再生成されたサーバ乱数を使用して次の通信単位のワンタイムＩＤを再度生成する。送信手段は、次の通信単位のワンタイムＩＤの生成に使用されたサーバ乱数をクライアント装置に送信する。認証手段は、次の通信単位で、クライアントワンタイムＩＤ生成手段により生成されたワンタイムＩＤに基づいてクライアント装置またはデータ格納機器の正当性を判断する。
さらに、認証サーバ装置は、サーバ乱数を暗号化する暗号化手段とを備える。そして、乱数生成手段は、クライアント乱数およびサーバ乱数が消失した場合には、サーバ乱数の初期値を新たに生成し、クライアントワンタイムＩＤ生成手段は、クライアント乱数およびサーバ乱数が消失した場合には、新たに生成されたサーバ乱数の初期値を使用してワンタイムＩＤを生成し、暗号化手段は、クライアント乱数およびサーバ乱数が消失した場合には、クライアント装置から認証要求とともに受信したワンタイムＩＤを引数に含む一方向性関数で生成された暗号鍵で、新たに生成されたサーバ乱数の初期値を暗号化し、送信手段は、クライアント乱数およびサーバ乱数が消失した場合には、クライアント乱数およびサーバ乱数が消失したことを通知するデータ、並びに新たに生成され暗号化されたサーバ乱数の初期値を、クライアント装置に送信する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
これによれば、クライアント装置のワンタイムＩＤの生成に使用される認証サーバ装置のサーバ乱数が生成される際に、いずれかのクライアント装置に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数を生成している。これにより、高い耐タンパ性を維持しつつ、固有ＩＤを送受しなくても、一方向性関数の値に基づくワンタイムＩＤで、クライアント装置またはデータ格納機器を短時間で一意に特定することが可能になる。
さらに、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合、クライアント装置からの認証要求が発生すると、認証サーバ装置により新たに生成されたサーバ乱数の初期値を、認証要求とともに送信されてきたワンタイムＩＤを使用して暗号化した上でそのクライアント装置へ供給する。これにより、認証要求を送信したクライアント装置のみがそのサーバ乱数の初期値を取得することができるため、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合でも、耐タンパ性を維持しつつ、クライアント装置の認証を継続して行うことができる。また、そのような場合でも、正当なクライアント装置を一意に特定することができる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】削除
【補正の内容】
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００３４
【補正方法】変更
【補正の内容】
【００３４】
本発明に係る記録媒体は、複数のクライアント装置またはクライアント装置から直接読み書き可能な複数のデータ格納機器を、所定の通信単位ごとに変化するワンタイムＩＤで認証する認証サーバ装置としてコンピュータを機能させるコンピュータプログラムを格納する。このコンピュータプログラムは、サーバ乱数を生成する乱数生成手段、サーバ乱数とクライアント装置により生成され通信単位ごとに更新されるクライアント乱数とを引数とした一方向性関数でクライアント装置またはデータ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、乱数生成手段によりサーバ乱数を再生成させ再生成されたサーバ乱数を使用して次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成手段、次の通信単位で、クライアントワンタイムＩＤ生成手段により生成されたワンタイムＩＤに基づいてクライアント装置またはデータ格納機器の正当性を判断する認証手段、並びに、サーバ乱数を暗号化する暗号化手段としてコンピュータを機能させる。
さらに、乱数生成手段は、クライアント乱数およびサーバ乱数が消失した場合には、サーバ乱数の初期値を新たに生成し、クライアントワンタイムＩＤ生成手段は、クライアント乱数およびサーバ乱数が消失した場合には、新たに生成されたサーバ乱数の初期値を使用してワンタイムＩＤを生成し、暗号化手段は、クライアント乱数およびサーバ乱数が消失した場合には、クライアント装置から認証要求とともに受信したワンタイムＩＤを引数に含む一方向性関数で生成された暗号鍵で、新たに生成されたサーバ乱数の初期値を暗号化し、送信手段は、クライアント乱数およびサーバ乱数が消失した場合には、クライアント乱数およびサーバ乱数が消失したことを通知するデータ、並びに新たに生成され暗号化されたサーバ乱数の初期値を、クライアント装置に送信する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
これによれば、クライアント装置のワンタイムＩＤの生成に使用される認証サーバ装置のサーバ乱数が生成される際に、いずれかのクライアント装置に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数を生成している。これにより、高い耐タンパ性を維持しつつ、固有ＩＤを送受しなくても、一方向性関数の値に基づくワンタイムＩＤで、クライアント装置またはデータ格納機器を短時間で一意に特定することが可能になる。
さらに、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合、クライアント装置からの認証要求が発生すると、認証サーバ装置により新たに生成されたサーバ乱数の初期値を、認証要求とともに送信されてきたワンタイムＩＤを使用して暗号化した上でそのクライアント装置へ供給する。これにより、認証要求を送信したクライアント装置のみがそのサーバ乱数の初期値を取得することができるため、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合でも、耐タンパ性を維持しつつ、クライアント装置の認証を継続して行うことができる。また、そのような場合でも、正当なクライアント装置を一意に特定することができる。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
本発明に係るワンタイムＩＤ管理方法は、複数のクライアント装置またはクライアント装置から直接読み書き可能な複数のデータ格納機器に割り当てられる所定の通信単位ごとに変化するワンタイムＩＤを認証サーバ装置で管理する方法である。この方法は、いずれかのクライアント装置により生成されたクライアント乱数を受信する受信ステップと、サーバ乱数を生成する乱数生成ステップと、通信単位ごとに更新されるクライアント乱数とサーバ乱数とを引数とした一方向性関数でクライアント装置またはデータ格納機器の次の通信単位のワンタイムＩＤを生成し、生成したワンタイムＩＤがいずれかのクライアント装置またはデータ格納機器に割り当てられているワンタイムＩＤと同一である場合、乱数生成ステップにてサーバ乱数を再生成し再生成したサーバ乱数を使用して次の通信単位のワンタイムＩＤを再度生成するクライアントワンタイムＩＤ生成ステップと、次の通信単位のワンタイムＩＤの生成に使用されたサーバ乱数をクライアント装置に送信する送信ステップと、次の通信単位で、クライアントワンタイムＩＤ生成ステップにて生成されたワンタイムＩＤに基づいてクライアント装置またはデータ格納機器の正当性を判断する認証ステップとを備える。
さらに、クライアント乱数およびサーバ乱数が消失した場合には、サーバ乱数の初期値を新たに生成し、新たに生成されたサーバ乱数の初期値を使用してワンタイムＩＤを生成し、クライアント装置から認証要求とともに受信したワンタイムＩＤを引数に含む一方向性関数で生成された暗号鍵で、新たに生成されたサーバ乱数の初期値を暗号化し、クライアント乱数および前記サーバ乱数が消失したことを通知するデータ、並びに新たに生成され暗号化されたサーバ乱数の初期値をクライアント装置に送信する。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
これによれば、クライアント装置のワンタイムＩＤの生成に使用される認証サーバ装置のサーバ乱数が生成される際に、いずれかのクライアント装置に現在既に割り当てられているワンタイムＩＤと同一にならないように検証した上でサーバ乱数を生成している。これにより、高い耐タンパ性を維持しつつ、固有ＩＤを送受しなくても、一方向性関数の値に基づくワンタイムＩＤで、クライアント装置またはデータ格納機器を短時間で一意に特定することが可能になる。
さらに、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合、クライアント装置からの認証要求が発生すると、認証サーバ装置により新たに生成されたサーバ乱数の初期値を、認証要求とともに送信されてきたワンタイムＩＤを使用して暗号化した上でそのクライアント装置へ供給する。これにより、認証要求を送信したクライアント装置のみがそのサーバ乱数の初期値を取得することができるため、認証サーバ装置におけるクライアント乱数およびサーバ乱数が消失した場合でも、耐タンパ性を維持しつつ、クライアント装置の認証を継続して行うことができる。また、そのような場合でも、正当なクライアント装置を一意に特定することができる。
【国際調査報告】
2008035450.tif 000014
2008035450.tif 000015
2008035450.tif 000016