(57)【特許請求の範囲】
【請求項１】
端末装置と、アイシーカードとを有する認証システムにおいて、
上記端末装置は、
利用者の操作を入力する操作入力装置と、
データを処理する端末処理装置と、
上記アイシーカードと通信する端末通信装置と、
上記操作入力装置を用いて、上記利用者を認証する利用者認証データを入力する利用者認証入力部と、
上記端末通信装置を用いて、上記アイシーカードが送信したカード認証データを受信するカード認証受信部と、
上記端末処理装置を用いて、上記アイシーカードと共有する共有鍵を生成する端末共有鍵生成部と、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証するカード認証部と、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データに基づいて、上記アイシーカードに対して上記利用者の認証を要求する利用者認証コマンドを生成する利用者認証生成部と、
上記端末処理装置を用いて、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成する利用者認証暗号化部と、
上記端末通信装置を用いて、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信する暗号化認証送信部とを有し、
上記アイシーカードは、
データを記憶するカード記憶装置と、
データを処理するカード処理装置と、
上記端末装置と通信するカード通信装置と、
上記カード記憶装置を用いて、利用者を認証する利用者認証データを記憶する利用者認証記憶部と、
上記カード処理装置を用いて、上記端末装置と共有する共有鍵を生成するカード共有鍵生成部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成するカード認証生成部と、
上記カード通信装置を用いて、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信するカード認証送信部と、
上記カード通信装置を用いて、上記端末装置が送信した暗号化認証コマンドを受信する暗号化認証受信部と、
上記カード処理装置を用いて、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成する利用者認証復号部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証する利用者認証部とを有することを特徴とする認証システム。
【請求項２】
上記端末装置は、更に、
上記カード認証部が上記アイシーカードの認証に失敗した場合に、上記端末処理装置を用いて、ダミーの利用者認証データをランダムに生成するダミー認証生成部を有し、
上記利用者認証生成部は、上記カード認証部が上記アイシーカードの認証に失敗した場合に、上記端末処理装置を用いて、上記ダミー認証生成部が生成した利用者認証データに基づいて、上記利用者認証コマンドを生成することを特徴とする請求項１に記載の認証システム。
【請求項３】
上記端末装置は、
上記端末処理装置を用いて、乱数を生成する端末乱数生成部と、
上記端末処理装置を用いて、上記端末乱数生成部が生成した乱数に基づいて、上記共有鍵のもととなる鍵要素を生成する端末鍵要素生成部と、
上記端末通信装置を用いて、上記端末鍵要素生成部が生成した鍵要素を、上記アイシーカードに対して送信する端末鍵要素送信部と、
上記端末通信装置を用いて、上記アイシーカードが送信した鍵要素を受信するカード鍵要素受信部とを有し、
上記端末共有鍵生成部は、上記端末処理装置を用いて、上記端末乱数生成部が生成した乱数と、上記カード鍵要素受信部が受信した鍵要素とに基づいて、上記共有鍵を生成し、
上記アイシーカードは、
上記カード通信装置を用いて、上記端末装置が送信した鍵要素を受信する端末鍵要素受信部と、
上記カード処理装置を用いて、乱数を生成するカード乱数生成部と、
上記カード処理装置を用いて、上記カード乱数生成部が生成した乱数に基づいて、上記共有鍵のもととなる鍵要素を生成するカード鍵要素生成部と、
上記カード通信装置を用いて、上記カード鍵要素生成部が生成した鍵要素を上記端末装置に対して送信するカード鍵要素送信部とを有し、
上記カード共有鍵生成部は、上記カード処理装置を用いて、上記端末鍵要素受信部が受信した鍵要素と、上記カード乱数生成部が生成した乱数とに基づいて、上記共有鍵を生成することを特徴とする請求項１または請求項２に記載の認証システム。
【請求項４】
上記アイシーカードは、上記カード認証送信部が送信するカード認証データと、上記カード鍵要素送信部が送信する鍵要素とを、１つのメッセージとして送信することを特徴とする請求項３に記載の認証システム。
【請求項５】
上記カード認証生成部は、上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと上記カード共有鍵生成部が生成した共有鍵とを所定の一方向性関数の入力とし、上記カード認証データとして、上記一方向性関数の値を算出し、
上記端末装置は、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと上記端末共有鍵生成部が生成した共有鍵とを上記一方向性関数の入力とし、カード検証データとして、上記一方向性関数の値を算出する端末認証生成部を有し、
上記カード認証部は、上記端末処理装置を用いて、上記端末認証生成部が生成したカード検証データと、上記カード認証受信部が受信したカード認証データとを比較して、一致する場合に、上記アイシーカードの認証に成功したと判定することを特徴とする請求項１乃至請求項４のいずれかに記載の認証システム。
【請求項６】
利用者の操作を入力する操作入力装置と、
データを処理する端末処理装置と、
アイシーカードと通信する端末通信装置と、
上記操作入力装置を用いて、上記利用者を認証する利用者認証データを入力する利用者認証入力部と、
上記端末通信装置を用いて、上記アイシーカードが送信したカード認証データを受信するカード認証受信部と、
上記端末処理装置を用いて、上記アイシーカードと共有する共有鍵を生成する端末共有鍵生成部と、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証するカード認証部と、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データに基づいて、上記アイシーカードに対して上記利用者の認証を要求する利用者認証コマンドを生成する利用者認証生成部と、
上記端末処理装置を用いて、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成する利用者認証暗号化部と、
上記端末通信装置を用いて、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信する暗号化認証送信部とを有することを特徴とする端末装置。
【請求項７】
上記端末装置は、更に、
上記カード認証部が上記アイシーカードの認証に失敗した場合に、上記端末処理装置を用いて、ダミーの利用者認証データをランダムに生成するダミー認証生成部を有し、
上記利用者認証生成部は、上記カード認証部が上記アイシーカードの認証に失敗した場合に、上記端末処理装置を用いて、上記ダミー認証生成部が生成した利用者認証データに基づいて、上記利用者認証コマンドを生成することを特徴とする請求項６に記載の端末装置。
【請求項８】
上記端末装置は、
上記端末処理装置を用いて、乱数を生成する端末乱数生成部と、
上記端末処理装置を用いて、上記端末乱数生成部が生成した乱数に基づいて、上記共有鍵のもととなる鍵要素を生成する端末鍵要素生成部と、
上記端末通信装置を用いて、上記端末鍵要素生成部が生成した鍵要素を、上記アイシーカードに対して送信する端末鍵要素送信部と、
上記端末通信装置を用いて、上記アイシーカードが送信した鍵要素を受信するカード鍵要素受信部とを有し、
上記端末共有鍵生成部は、上記端末処理装置を用いて、上記端末乱数生成部が生成した乱数と、上記カード鍵要素受信部が受信した鍵要素とに基づいて、上記共有鍵を生成することを特徴とする請求項６または請求項７に記載の端末装置。
【請求項９】
上記端末装置は、上記カード認証受信部が受信するカード認証データと、上記カード鍵要素受信部が受信する鍵要素とを１つのメッセージとして受信することを特徴とする請求項８に記載の端末装置。
【請求項１０】
上記端末装置は、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと上記端末共有鍵生成部が生成した共有鍵とを所定の一方向性関数の入力とし、カード検証データとして、上記一方向性関数の値を算出する端末認証生成部を有し、
上記カード認証部は、上記端末処理装置を用いて、上記端末認証生成部が生成したカード検証データと、上記カード認証受信部が受信したカード認証データとを比較して、一致する場合に、上記アイシーカードの認証に成功したと判定することを特徴とする請求項６乃至請求項９のいずれかに記載の端末装置。
【請求項１１】
データを記憶するカード記憶装置と、
データを処理するカード処理装置と、
端末装置と通信するカード通信装置と、
上記カード記憶装置を用いて、利用者を認証する利用者認証データを記憶する利用者認証記憶部と、
上記カード処理装置を用いて、上記端末装置と共有する共有鍵を生成するカード共有鍵生成部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成するカード認証生成部と、
上記カード通信装置を用いて、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信するカード認証送信部と、
上記カード通信装置を用いて、上記端末装置が送信した暗号化認証コマンドを受信する暗号化認証受信部と、
上記カード処理装置を用いて、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成する利用者認証復号部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証する利用者認証部とを有することを特徴とするアイシーカード。
【請求項１２】
上記アイシーカードは、
上記カード通信装置を用いて、上記端末装置が送信した鍵要素を受信する端末鍵要素受信部と、
上記カード処理装置を用いて、乱数を生成するカード乱数生成部と、
上記カード処理装置を用いて、上記カード乱数生成部が生成した乱数に基づいて、上記共有鍵のもととなる鍵要素を生成するカード鍵要素生成部と、
上記カード通信装置を用いて、上記カード鍵要素生成部が生成した鍵要素を上記端末装置に対して送信するカード鍵要素送信部とを有し、
上記カード共有鍵生成部は、上記カード処理装置を用いて、上記端末鍵要素受信部が受信した鍵要素と、上記カード乱数生成部が生成した乱数とに基づいて、上記共有鍵を生成することを特徴とする請求項１１に記載のアイシーカード。
【請求項１３】
上記アイシーカードは、上記カード認証送信部が送信するカード認証データと、上記カード鍵要素送信部が送信する鍵要素とを、１つのメッセージとして送信することを特徴とする請求項１２に記載のアイシーカード。
【請求項１４】
上記カード認証生成部は、上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと上記カード共有鍵生成部が生成した共有鍵とを所定の一方向性関数の入力とし、上記カード認証データとして、上記一方向性関数の値を算出することを特徴とする請求項１１乃至請求項１３のいずれかに記載のアイシーカード。
【請求項１５】
コンピュータが実行することにより、上記コンピュータが請求項６乃至請求項１０のいずれかに記載の端末装置として機能することを特徴とするコンピュータプログラム。
【請求項１６】
アイシーカードが実行することにより、上記アイシーカードが請求項１１乃至請求項１４のいずれかに記載のアイシーカードとして機能することを特徴とするコンピュータプログラム。
【請求項１７】
アイシーカードが、利用者認証記憶部として、利用者を認証する利用者認証データを記憶し、
端末装置が、利用者認証入力部として、利用者の操作に基づいて、上記利用者を認証する利用者認証データを入力し、
上記アイシーカードが、カード共有鍵生成部として、上記端末装置と共有する共有鍵を生成し、
上記アイシーカードが、カード認証生成部として、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成し、
上記アイシーカードが、カード認証送信部として、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信し、
上記端末装置が、カード認証受信部として、上記アイシーカードが送信したカード認証データを受信し、
上記端末装置が、端末共有鍵生成部として、上記アイシーカードと共有する共有鍵を生成し、
上記端末装置が、カード認証部として、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証し、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末装置が、利用者認証生成部として、上記利用者認証入力部が入力した利用者認証データに基づいて、上記アイシーカードに対して上記利用者の認証を要求する利用者認証コマンドを生成し、
上記端末装置が、利用者認証暗号化部として、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成し、
上記端末装置が、暗号化認証送信部として、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信し、
上記アイシーカードが、暗号化認証受信部として、上記端末装置が送信した暗号化認証コマンドを受信し、
上記アイシーカードが、利用者認証復号部として、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成し、
上記アイシーカードが、利用者認証部として、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証することを特徴とする認証方法。
【請求項１８】
利用者の操作を入力する操作入力装置と、データを処理する端末処理装置と、アイシーカードと通信する端末通信装置とを有する端末装置が、コマンドを上記アイシーカードに対して送信するコマンド送信方法において、
上記操作入力装置が、利用者認証入力部として、利用者を認証する利用者認証データを入力し、
上記端末処理装置が、端末共有鍵生成部として、アイシーカードと共有する共有鍵を生成し、
上記端末通信装置が、カード認証受信部として、上記アイシーカードが送信したカード認証データを受信し、
上記端末処理装置が、カード認証部として、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証し、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末処理装置が、利用者認証生成部として、上記利用者認証入力部が入力した利用者認証データに基づいて、上記利用者の認証を要求する利用者認証コマンドを生成し、
上記端末処理装置が、利用者認証暗号化部として、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成し、
上記端末通信装置が、暗号化認証送信部として、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信することを特徴とするコマンド送信方法。
【請求項１９】
データを記憶するカード記憶装置と、データを処理するカード処理装置と、端末装置と通信するカード通信装置とを有するアイシーカードが、利用者を認証する認証方法において、
上記カード記憶装置が、利用者認証記憶部として、利用者を認証する利用者認証データを記憶し、
上記カード処理装置が、カード共有鍵生成部として、上記端末装置と共有する共有鍵を生成し、
上記カード処理装置が、カード認証生成部として、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成し、
上記カード通信装置が、カード認証送信部として、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信し、
上記カード通信装置が、暗号化認証受信部として、上記端末装置が送信した暗号化認証コマンドを受信し、
上記カード処理装置が、利用者認証復号部として、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成し、
上記カード処理装置が、利用者認証部として、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証することを特徴とする認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＩＣカードがＰＩＮ情報などの利用者認証データを用いて利用者を認証する認証システムに関する。
【背景技術】
【０００２】
ＩＣカードの所有者だけが知っている利用者認証情報をＩＣカードが記憶しておき、利用者が入力した利用者認証情報を、ＩＣカードに対して送信して、ＩＣカードのなかで利用者がＩＣカードの所有者であるか否かを認証する認証システムがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１１１５９４号公報
【非特許文献】
【０００４】
【非特許文献１】Ｗ．Ｄｉｆｆｉｅ、Ｍ．Ｅ．Ｈｅｌｌｍａｎ「Ｎｅｗ  Ｄｉｒｅｃｔｉｏｎｓ  ｉｎ  Ｃｒｙｐｔｏｇｒａｐｈｙ」ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ、ｖｏｌ．ＩＴ−２２，Ｎｏ．６、６４４〜６５４ページ、１９７６年１１月。
【非特許文献２】ＲＦＣ２６３１「Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ  Ｋｅｙ  Ａｇｒｅｅｍｅｎｔ  Ｍｅｔｈｏｄ」１９９９年６月。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このような認証システムでは、利用者認証情報の漏洩を防ぐ必要がある。このような認証システムから利用者認証情報が盗み出す手口としては、ＩＣカードに対する総当たり攻撃やなりすまし攻撃、ＩＣカードとの通信を盗聴して解析する攻撃、ＩＣカードを偽物とすり替えて偽物のＩＣカードが利用者認証情報を受信するすり替え攻撃などがある。
この発明は、例えば上記のような課題を解決するためになされたものであり、利用者認証情報の漏洩を防ぐことを目的とする。
【課題を解決するための手段】
【０００６】
この発明にかかる認証システムは、端末装置と、アイシーカードとを有する認証システムにおいて、
上記端末装置は、
利用者の操作を入力する操作入力装置と、
データを処理する端末処理装置と、
上記アイシーカードと通信する端末通信装置と、
上記操作入力装置を用いて、上記利用者を認証する利用者認証データを入力する利用者認証入力部と、
上記端末通信装置を用いて、上記アイシーカードが送信したカード認証データを受信するカード認証受信部と、
上記端末処理装置を用いて、上記アイシーカードと共有する共有鍵を生成する端末共有鍵生成部と、
上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データと、上記端末共有鍵生成部が生成した共有鍵と、上記カード認証受信部が受信したカード認証データとに基づいて、上記アイシーカードを認証するカード認証部と、
上記カード認証部が上記アイシーカードの認証に成功した場合に、上記端末処理装置を用いて、上記利用者認証入力部が入力した利用者認証データに基づいて、上記アイシーカードに対して上記利用者の認証を要求する利用者認証コマンドを生成する利用者認証生成部と、
上記端末処理装置を用いて、上記利用者認証生成部が生成した利用者認証コマンドを、上記端末共有鍵生成部が生成した共有鍵で暗号化して、暗号化認証コマンドを生成する利用者認証暗号化部と、
上記端末通信装置を用いて、上記利用者認証暗号化部が生成した暗号化認証コマンドを上記アイシーカードに対して送信する暗号化認証送信部とを有し、
上記アイシーカードは、
データを記憶するカード記憶装置と、
データを処理するカード処理装置と、
上記端末装置と通信するカード通信装置と、
上記カード記憶装置を用いて、利用者を認証する利用者認証データを記憶する利用者認証記憶部と、
上記カード処理装置を用いて、上記端末装置と共有する共有鍵を生成するカード共有鍵生成部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記カード共有鍵生成部が生成した共有鍵とに基づいて、カード認証データを生成するカード認証生成部と、
上記カード通信装置を用いて、上記カード認証生成部が生成したカード認証データを上記端末装置に対して送信するカード認証送信部と、
上記カード通信装置を用いて、上記端末装置が送信した暗号化認証コマンドを受信する暗号化認証受信部と、
上記カード処理装置を用いて、上記暗号化認証受信部が受信した暗号化認証コマンドを、上記カード共有鍵生成部が生成した共有鍵で復号して、利用者認証コマンドを生成する利用者認証復号部と、
上記カード処理装置を用いて、上記利用者認証記憶部が記憶した利用者認証データと、上記利用者認証復号部が生成した利用者認証コマンドとに基づいて、利用者を認証する利用者認証部とを有することを特徴とする。
【発明の効果】
【０００７】
利用者認証暗号化部が暗号化した暗号化利用者認証コマンドをＩＣカードに対して送信するので、端末装置とＩＣカードとの間の通信を第三者が傍受して暗号化利用者認証コマンドを入手したとしても、そこから利用者認証データを入手することはできない。
端末共有鍵生成部とカード共有鍵生成部とが、端末装置とＩＣカードとで共有する共有鍵Ｋを生成するので、利用者認証暗号化部が暗号化した暗号化利用者認証コマンドを、利用者認証復号部が正しく復号できる。
暗号化利用者認証コマンドを送信する前に、ＩＣカードを認証して、偽物でないかを判定するので、偽物のＩＣカードを介して、利用者認証データが漏洩するのを防ぐことができる。
ＩＣカードの認証に用いるカード認証データは、利用者認証記憶部が記憶した利用者認証データと、カード共有鍵生成部が共有した共有鍵とに基づいて生成する。これにより、利用者認証記憶部が記憶した利用者認証データと、利用者認証入力部が入力した利用者認証データとが一致するか否かを検証できる。また、端末装置とＩＣカードとの間の通信を第三者が傍受してカード認証データを入手したとしても、共通鍵Ｋを知らなければ、そこから利用者識別データを入手することはできない。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１における認証システム８００の全体構成の一例を示すシステム構成図。
【図２】実施の形態１における端末側鍵共有部１０２及びカード側鍵共有部２０２の構成の一例を示す詳細ブロック図。
【図３】実施の形態１におけるカード検証部１０６及びカード認証情報生成部２０６の構成の一例を示す詳細ブロック図。
【図４】実施の形態２における認証システム８００の全体構成の一例を示すシステム構成図。
【図５】実施の形態２における端末認証情報生成部１１３及び端末検証部２１４の構成の一例を示す詳細ブロック図。
【図６】実施の形態３における認証システム８００のハードウェア構成の一例を示すハードウェア構成図。
【図７】実施の形態３における端末装置１００及びＩＣカード２００の機能ブロックの構成の一例を示すブロック構成図。
【図８】実施の形態３における認証処理Ｓ４００の流れの一例を示す全体フローチャート図。
【図９】実施の形態３における認証処理Ｓ４００の一部の詳細な流れの一例を示す詳細フローチャート図。
【図１０】実施の形態３における利用者認証処理Ｓ４６０の詳細な流れの一例を示す詳細フローチャート図。
【発明を実施するための形態】
【０００９】
実施の形態１．
実施の形態１について、図１〜図３を用いて説明する。
【００１０】
図１は、この実施の形態における認証システム８００の全体構成の一例を示すシステム構成図である。
認証システム８００は、ユーザ８０１と、端末装置１００と、カード読取書込装置（カードＲ／Ｗ）８１０と、ＩＣカード２００とを有する。端末装置１００は、ユーザ８０１が利用する。カードＲ／Ｗ８１０は、端末装置１００と、ＩＣカード２００との間の通信を仲介する。ＩＣカード２００は、ユーザ８０１が所有する。
【００１１】
ユーザ８０１（利用者）は、ＩＣカード２００の所有者である。ユーザ８０１は、ＰＩＮ情報７１１を記憶している。ＰＩＮ情報７１１は、ユーザ８０１を認証するための情報である。ＰＩＮ情報７１１は、例えば暗証番号やパスワードである。
【００１２】
端末装置１００（端末）は、端末側通信部１１０、ＰＩＮ情報入力部１０１、端末側鍵共有部１０２、カード検証部１０６、ｖｅｒｉｆｙＰＩＮコマンド化部１１１、暗号化部１１２を有する。
端末側通信部１１０は、カードＲ／Ｗ８１０を介してＩＣカード２００と通信する。端末側通信部１１０は、端末鍵要素７２２や暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２などをカードＲ／Ｗ８１０へ送付する。端末側通信部１１０は、メッセージ７３０などをカードＲ／Ｗ８１０から受け取る。メッセージ７３０は、カード鍵要素７２４と、カード認証情報７３２とを含む。
端末側鍵共有部１０２は、端末鍵要素７２２を生成する。端末側鍵共有部１０２は、端末鍵要素７２２を端末側通信部１１０に送付する。端末側鍵共有部１０２は、カード鍵要素７２４を端末側通信部１１０から受け取る。端末側鍵共有部１０２は、端末鍵要素７２２と、カード鍵要素７２４とから共有鍵７２５を生成する。
ＰＩＮ情報入力部１０１は、ＰＩＮ情報７１１をユーザ８０１から受け取る。
カード検証部１０６は、カード認証情報７３２を端末側通信部１１０から受け取る。カード検証部１０６は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。カード検証部１０６は、共有鍵７２５を端末側鍵共有部１０２から受け取る。カード検証部１０６は、ＰＩＮ情報７１１と、共有鍵７２５とを用いて、カード認証情報７３２を検証する。カード検証部１０６は、カード検証結果７３５を生成する。
ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、カード検証結果７３５をカード検証部１０６から受け取る。ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、ｖｅｒｉｆｙＰＩＮコマンド７４１を生成する。ｖｅｒｉｆｙＰＩＮコマンド７４１は、ＡＰＤＵ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）の一つである。
暗号化部１１２は、ｖｅｒｉｆｙＰＩＮコマンド７４１をｖｅｒｉｆｙＰＩＮコマンド化部１１１から受け取る。暗号化部１１２は、共有鍵７２５を端末側鍵共有部１０２から受け取る。暗号化部１１２は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を生成する。暗号化部１１２は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を端末側通信部１１０に送付する。
【００１３】
ＩＣカード２００は、カード側通信部２１０、ＰＩＮ情報記憶部２０１、カード側鍵共有部２０２、カード認証情報生成部２０６、復号部２１１、ＩＣカード処理部２１２を有する。
カード側通信部２１０は、カードＲ／Ｗ８１０を介して端末装置１００と通信する。カード側通信部２１０は、端末鍵要素７２２や暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２などをカードＲ／Ｗ８１０から受け取る。カード側通信部２１０は、メッセージ７３０などをカードＲ／Ｗ８１０へ送付する。メッセージ７３０は、カード鍵要素７２４と、カード認証情報７３２とを含む。
カード側鍵共有部２０２は、端末鍵要素７２２をカード側通信部２１０から受け取る。カード側鍵共有部２０２は、カード鍵要素７２４を生成する。カード側鍵共有部２０２は、カード鍵要素７２４をカード側通信部２１０に送付する。カード側鍵共有部２０２は、端末鍵要素７２２とカード鍵要素７２４とから共有鍵７２６を生成する。
ＰＩＮ情報記憶部２０１は、あらかじめ設定されたＰＩＮ情報７１２を格納する。
カード認証情報生成部２０６は、ＰＩＮ情報７１２をＰＩＮ情報記憶部２０１から受け取る。カード認証情報生成部２０６は、共有鍵７２６をカード側鍵共有部２０２から受け取る。カード認証情報生成部２０６は、ＰＩＮ情報７１２と共有鍵７２６とを用いてカード認証情報７３２を生成する。カード認証情報生成部２０６は、カード認証情報７３２をカード側通信部２１０に送付する。
復号部２１１は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２をカード側通信部２１０から受け取る。復号部２１１は、共有鍵７２６をカード側鍵共有部２０２から受け取る。復号部２１１は、ｖｅｒｉｆｙＰＩＮコマンド７４３を生成する。
ＩＣカード処理部２１２は、ｖｅｒｉｆｙＰＩＮコマンド７４３を復号部２１１から受け取る。
ＩＣカード処理部２１２は、所定のＩＣカード処理を実行する。
【００１４】
次に動作について説明する。
ユーザ８０１は、ＰＩＮ情報７１１を記憶している。また、ＩＣカード２００は、あらかじめ何らかの安全な方法により、ＰＩＮ情報７１２をＰＩＮ情報記憶部２０１に記憶しておく。ＰＩＮ情報記憶部２０１が記憶しておくＰＩＮ情報７１２は、ユーザ８０１が記憶しているＰＩＮ情報７１１と同一である。
【００１５】
引き続き、実際にＩＣカード２００と端末装置１００との間で認証を行う際の動作について説明する。
ユーザ８０１は、ＰＩＮ情報７１１を端末装置１００のＰＩＮ情報入力部１０１により入力する。
【００１６】
次に、端末装置１００が処理を行う。
端末側鍵共有部１０２は、端末鍵要素７２２を生成する。端末側鍵共有部１０２は、端末鍵要素７２２を端末側通信部１１０に送付する。端末側通信部１１０は、端末鍵要素７２２をカードＲ／Ｗ８１０へ送付する。カードＲ／Ｗ８１０は、端末鍵要素７２２をカード側通信部２１０に送付する。
【００１７】
次に、ＩＣカード２００が処理を行う。
カード側通信部２１０は、端末鍵要素７２２をカードＲ／Ｗ８１０から受け取る。カード側鍵共有部２０２は、端末鍵要素７２２をカード側通信部２１０から受け取る。カード側鍵共有部２０２は、カード鍵要素７２４を生成する。カード側鍵共有部２０２は、端末鍵要素７２２とカード鍵要素７２４とから共有鍵７２６を生成する。
ＰＩＮ情報記憶部２０１は、あらかじめ設定され格納しているＰＩＮ情報７１２を取り出す。カード認証情報生成部２０６は、ＰＩＮ情報７１２をＰＩＮ情報記憶部２０１から受け取る。カード認証情報生成部２０６は、共有鍵７２６をカード側鍵共有部２０２から受け取る。カード認証情報生成部２０６は、ＰＩＮ情報７１２と共有鍵７２６とを用いて、カード認証情報７３２を生成する。カード認証情報生成部２０６は、カード認証情報７３２をカード側通信部２１０に送付する。
カード側通信部２１０は、カード鍵要素７２４をカード側鍵共有部２０２から受け取る。カード側通信部２１０は、カード認証情報７３２をカード認証情報生成部２０６から受け取る。カード側通信部２１０は、カード鍵要素７２４とカード認証情報７３２とを合わせてメッセージ７３０とする。カード側通信部２１０は、メッセージ７３０をカードＲ／Ｗ８１０へ送付する。カードＲ／Ｗ８１０は、メッセージ７３０を端末側通信部１１０に送付する。
【００１８】
次に、端末装置１００が処理を行う。
端末側鍵共有部１０２は、カード鍵要素７２４を端末側通信部１１０から受け取る。端末側鍵共有部１０２は、端末鍵要素７２２とカード鍵要素７２４とから共有鍵７２５を生成する。
カード検証部１０６は、カード認証情報７３２を端末側通信部１１０から受け取る。カード検証部１０６は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。カード検証部１０６は、共有鍵７２５を端末側鍵共有部１０２から受け取る。カード検証部１０６は、ＰＩＮ情報７１１と共有鍵７２５とを用いて、カード認証情報７３２を検証する。カード検証部１０６は、カード検証結果７３５を生成する。
ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、カード検証結果７３５をカード検証部１０６から受け取る。カード検証結果が正しくない場合、ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、エラーにより処理を中断する。
カード検証結果が正しい場合、ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、ＡＰＤＵのｖｅｒｉｆｙＰＩＮコマンド７４１を生成する。
暗号化部１１２は、ｖｅｒｉｆｙＰＩＮコマンド７４１をｖｅｒｉｆｙＰＩＮコマンド化部１１１から受け取る。暗号化部１１２は、共有鍵７２５を端末側鍵共有部１０２から受け取る。暗号化部１１２は、暗号処理をして、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を生成する。暗号化部１１２は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を端末側通信部１１０に送付する。
端末側通信部１１０は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２をカードＲ／Ｗ８１０へ送付する。カードＲ／Ｗ８１０は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２をカード側通信部２１０に送付する。
【００１９】
次に、ＩＣカード２００が処理を行う。
復号部２１１は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２をカード側通信部２１０から受け取る。復号部２１１は、共有鍵７２６をカード側鍵共有部２０２から受け取る。復号部２１１は、復号処理をして、ｖｅｒｉｆｙＰＩＮコマンド７４３を生成する。ＩＣカード処理部２１２は、ｖｅｒｉｆｙＰＩＮコマンド７４３を復号部２１１から受け取る。ＩＣカード処理部２１２は、所定のＩＣカード処理を実行する。
【００２０】
鍵共有のアルゴリズムとしては、例えば、周知のＤＨ（Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ、ディフィ−ヘルマン）鍵共有方式を用いることができる。
【００２１】
以下、ＤＨ鍵共有方式の概要を説明する。
ＸとＹとが鍵共有を行うものとする。記号「＾」は、べき乗（ｅｘｐｏｎｅｎｔｉａｔｉｏｎ）を表わす。また、「ｍｏｄ」は、剰余（ｍｏｄｕｌｏ）を表わす。
まず、値の大きな素数ｐと、その原始根ｇとを生成する。このｇとｐとは、公開される。
次に、鍵を共有するＸとＹとが、お互い秘密の値ａ、ｂをそれぞれ選択する。Ｘは、次の値Ａを計算して、これをＹに送信する。
Ａ＝ｇ＾ａ  ｍｏｄ  ｐ
【００２２】
Ｙも同様に、次の値Ｂを計算して、これをＸに送信する。
Ｂ＝ｇ＾ｂ  ｍｏｄ  ｐ
【００２３】
Ｘは、自身の秘密の値ａと、受信したＢとから、以下の値を計算する。
Ｋｘ＝Ｂ＾ａ  ｍｏｄ  ｐ
【００２４】
Ｙも、自身の秘密の値ｂと、受信したＡとから、以下の値を計算する。
Ｋｙ＝Ａ＾ｂ  ｍｏｄ  ｐ
【００２５】
このとき、ＸとＹとがそれぞれ計算したＫｘ及びＫｙは、
Ｋｘ＝（ｇ＾ｂ  ｍｏｄ  ｐ）＾ａ  ｍｏｄ  ｐ＝ｇ＾（ａ・ｂ）  ｍｏｄ  ｐ＝Ｋ
Ｋｙ＝（ｇ＾ａ  ｍｏｄ  ｐ）＾ｂ  ｍｏｄ  ｐ＝ｇ＾（ａ・ｂ）  ｍｏｄ  ｐ＝Ｋ
となり、共通のＫ（＝Ｋｘ＝Ｋｙ）を生成することができる。
【００２６】
ここで、第三者がこの二人の通信を盗聴してＡとＢとを入手しても、Ａ＝ｇ＾ａ  ｍｏｄ  ｐ  と、Ｂ＝ｇ＾ｂ  ｍｏｄ  ｐとから、Ｋ＝ｇ＾（ａ・ｂ）  ｍｏｄ  ｐを計算する方法は現在のところ存在しない。したがって、ＸとＹとが共有した鍵Ｋの安全が保たれる。
【００２７】
図２は、この実施の形態における端末側鍵共有部１０２及びカード側鍵共有部２０２の構成の一例を示す詳細ブロック図である。
この例において、端末側鍵共有部１０２及びカード側鍵共有部２０２は、上述したＤＨ鍵共有方式を用いて、共有鍵を共有する。
端末側鍵共有部１０２は、端末乱数生成部１０３、端末鍵要素生成部１０４、共有鍵生成部１０５を有する。カード側鍵共有部２０２は、カード乱数生成部２０３、カード鍵要素生成部２０４、共有鍵生成部２０５を有する。
【００２８】
まず、端末側鍵共有部１０２が処理を行う。
端末乱数生成部１０３は、端末乱数７２１《ａ》を生成する。端末鍵要素生成部１０４は、《Ａ  ＝ｇ＾ａ  ｍｏｄ  ｐ》を計算し、端末鍵要素７２２《Ａ》を生成する。端末側鍵共有部１０２は、端末鍵要素７２２《Ａ》をＩＣカード２００へ送付する。
【００２９】
次に、カード側鍵共有部２０２が処理を行う。
カード乱数生成部２０３は、カード乱数７２３《ｂ》を生成する。カード鍵要素生成部２０４は、《Ｂ＝ｇ＾ｂ  ｍｏｄ  ｐ》を計算し、カード鍵要素７２４《Ｂ》を生成する。カード側鍵共有部２０２は、カード鍵要素７２４《Ｂ》を端末装置１００へ送付する。
共有鍵生成部２０５は、端末装置１００から受け取った端末鍵要素７２２《Ａ》とカード乱数７２３《ｂ》とから、《Ｋ＝Ａ＾ｂ  ｍｏｄ  ｐ》を計算し、共有鍵７２６《Ｋ》を生成する。
【００３０】
次に、端末側鍵共有部１０２が処理を行う。
共有鍵生成部１０５は、ＩＣカード２００から受け取ったカード鍵要素７２４《Ｂ》と、端末乱数７２１《ａ》とから、《Ｋ＝Ｂ＾ａ  ｍｏｄ  ｐ》を計算し、共有鍵７２５《Ｋ》を生成する。
【００３１】
以上のようにして、端末装置１００とＩＣカード２００とが、共有鍵《Ｋ》を共有する。
【００３２】
図３は、この実施の形態におけるカード検証部１０６及びカード認証情報生成部２０６の構成の一例を示す詳細ブロック図である。
記号「ＨＡＳＨ」は、ＳＨＡ、ＭＤ５など公知のハッシュアルゴリズムによる演算を示す。また、記号「ＭＡＣ」は、ＨＭＡＣなど公知のＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）生成アルゴリズムによる演算を示す。
カード検証部１０６は、ＰＩＮ情報ハッシュ部１０７、マック値算出部１０８、認証情報比較部１０９を有する。カード認証情報生成部２０６は、ＰＩＮ情報ハッシュ部２０７、マック値算出部２０８を有する。
【００３３】
まず、ＩＣカード２００のカード認証情報生成部２０６が処理を行う。
ＰＩＮ情報ハッシュ部２０７は、ＰＩＮ情報７１２《Ｐ》を用いて、《Ｋｐ＝ＨＡＳＨ（Ｐ）》を計算する。マック値算出部２０８は、ハッシュ値《Ｋｐ》と、共有鍵７２６《Ｋ》とを用いて、《ＨＫ＝Ｋｐ》《ｍ＝Ｋ》《Ｃ’＝ＭＡＣ（ＨＫ，ｍ）》を計算し、カード認証情報７３２《Ｃ’》を生成する。カード認証情報生成部２０６は、カード認証情報７３２《Ｃ’》を端末装置１００に送付する。
【００３４】
次に、端末装置１００のカード検証部１０６が処理を行う。
ＰＩＮ情報ハッシュ部１０７は、ＰＩＮ情報７１１《Ｐ》を用いて、《Ｋｐ＝ＨＡＳＨ（Ｐ）》を計算する。ＰＩＮ情報ハッシュ部１０７は、ハッシュ値《Ｋｐ》と、共有鍵７２５《Ｋ》とを用いて、《ＨＫ＝Ｋｐ》《ｍ＝Ｋ》《Ｃ＝ＭＡＣ（ＨＫ，ｍ）》を計算し、カード検証用情報《Ｃ》を生成する。認証情報比較部１０９は、ＩＣカード２００から受け取ったカード認証情報７３２《Ｃ’》と、カード検証用情報《Ｃ》とを比較する。一致すれば「ＯＫ」、異なれば「ＮＧ」として、認証情報比較部１０９は、カード検証結果７３５を生成する。
【００３５】
このように、鍵共有部（端末側鍵共有部１０２，カード側鍵共有部２０２）により、端末装置１００とＩＣカード２００とが共有鍵７２５，７２６を共有する。ＩＣカード２００では、カード認証情報生成部２０６が、ＰＩＮ情報７１２と共有鍵７２６からカード認証情報７３２を生成する。これにより、カードＲ／Ｗ８１０を経由する通信データからは、共有鍵を入手することができない。このため、ＰＩＮの総当たり攻撃を防止することができる。
また、端末装置１００がｖｅｒｉｆｙＰＩＮコマンドをＩＣカード２００へ送付する前に、カード検証部１０６が、共有鍵７２５とＰＩＮ情報７１１とを用いて、ＩＣカード２００から受け取ったカード認証情報７３２を検証する。これにより、正しいＩＣカード２００に限定してＰＩＮ情報７１１の含まれるｖｅｒｉｆｙＰＩＮコマンドを送付することができる。このため、偽のＩＣカード経由のＰＩＮ情報の漏洩を防止することができる。
また、暗号化部１１２が、共有鍵７２５を用いてｖｅｒｉｆｙＰＩＮコマンドを暗号化することが可能となり、盗聴された通信データからのＰＩＮ情報の漏洩を防止することができる。
また、鍵共有部（端末側鍵共有部１０２、端末乱数生成部１０３）が、ＤＨ鍵共有アルゴリズムにより鍵共有をおこない、ＩＣカード２００が端末装置１００へカード鍵要素７２４と一緒にカード認証情報７３２を送ることで、通信回数を３回に削減することができる。
【００３６】
なお、暗号化部１１２における暗号化方式および復号部２１１における復号方式は、共通鍵暗号アルゴリズムを用いた方式であればよい。認証システム８００は、例えば、ＭＩＳＴＹ（登録商標）、ＫＡＳＵＭＩ、ＡＥＳなどの共通鍵暗号方式を利用する構成であってもよい。
また、端末装置１００がカードＲ／Ｗ８１０を内蔵する構成であってもよい。
また、ＩＣカード２００がカードＲ／Ｗ８１０を介さず、端末装置１００と直接通信する構成であってもよい。
また、カードＲ／Ｗ８１０が、ネットワークを経由して端末装置１００と通信する構成であってもよい。
また、端末装置１００とカードＲ／Ｗ８１０との間の通信や、カードＲ／Ｗ８１０とＩＣカード２００との間の通信は、有線通信であってもよいし、無線通信であってもよい。
また、ＰＩＮ情報に代えて、パスワードやユーザのジェスチャや生体情報などを用いる構成であってもよい。
【００３７】
実施の形態２．
実施の形態２について、図４〜図５を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【００３８】
図４は、この実施の形態における認証システム８００の全体構成の一例を示すシステム構成図である。
認証システム８００は、ユーザ８０１と、端末装置１００と、カードＲ／Ｗ８１０と、ＩＣカード２００とを有する。端末装置１００は、ユーザ８０１が利用する。カードＲ／Ｗ８１０は、端末装置１００と、ＩＣカード２００との間の通信を仲介する。ＩＣカード２００は、ユーザ８０１が所有する。
【００３９】
ユーザ８０１は、ＩＣカード２００の所有者である。ユーザ８０１は、ＰＩＮ情報７１１を記憶している。ＰＩＮ情報７１１が、例えば暗号番号である。
【００４０】
端末装置１００は、端末側通信部１１０と、ＰＩＮ情報入力部１０１と、端末側鍵共有部１０２と、カード検証部１０６と、端末認証情報生成部１１３と、ｖｅｒｉｆｙＰＩＮコマンド化部１１１と、暗号化部１１２とを有する。
端末側通信部１１０は、端末鍵要素７２２やメッセージ７４０などをカードＲ／Ｗ８１０へ送付する。メッセージ７４０は、端末認証情報７５４や暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を含む。端末側通信部１１０は、メッセージ７３０などをカードＲ／Ｗ８１０から受け取る。メッセージ７３０は、カード鍵要素７２４やカード認証情報７３２や端末用乱数７５１を含む。
端末側鍵共有部１０２は、端末鍵要素７２２を生成する。端末側鍵共有部１０２は、端末鍵要素７２２を端末側通信部１１０に送付する。端末側鍵共有部１０２は、カード鍵要素７２４を端末側通信部１１０から受け取る。端末側鍵共有部１０２は、端末鍵要素７２２とカード鍵要素７２４とから共有鍵７２５を生成する。
ＰＩＮ情報入力部１０１は、ＰＩＮ情報７１１をユーザ８０１から受け取る。
カード検証部１０６は、カード認証情報７３２を端末側通信部１１０から受け取る。カード検証部１０６は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。カード検証部１０６は、共有鍵７２５を端末側鍵共有部１０２から受け取る。カード検証部１０６は、ＰＩＮ情報７１１と共有鍵７２５とを用いて、カード認証情報７３２を検証する。カード検証部１０６は、カード検証結果７３５を生成する。
端末認証情報生成部１１３は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。端末認証情報生成部１１３は、共有鍵７２５を端末側鍵共有部１０２から受け取る。端末認証情報生成部１１３は、端末用乱数７５１を端末側通信部１１０から受け取る。端末認証情報生成部１１３は、カード検証結果７３５をカード検証部１０６から受け取る。端末認証情報生成部１１３は、ＰＩＮ情報７１１と共有鍵７２５と端末用乱数７５１とを用いて、端末認証情報７５４を生成する。端末認証情報生成部１１３は、端末認証情報７５４を端末側通信部１１０に送付する。
ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、カード検証結果７３５をカード検証部１０６から受け取る。ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、ＡＰＤＵのｖｅｒｉｆｙＰＩＮコマンド７４１を生成する。
暗号化部１１２は、ｖｅｒｉｆｙＰＩＮコマンド７４１をｖｅｒｉｆｙＰＩＮコマンド化部１１１から受け取る。暗号化部１１２は、共有鍵７２５を端末側鍵共有部１０２から受け取る。暗号化部１１２は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を生成する。暗号化部１１２は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を端末側通信部１１０に送付する。
【００４１】
ＩＣカード２００は、カード側通信部２１０と、カード側鍵共有部２０２と、ＰＩＮ情報記憶部２０１と、カード認証情報生成部２０６と、端末用乱数生成部２１３と、端末検証部２１４と、復号部２１１と、ＩＣカード処理部２１２とを有する。
カード側通信部２１０は、端末鍵要素７２２やメッセージ７４０などをカードＲ／Ｗ８１０から受け取る。メッセージ７４０は、端末認証情報７５４や暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を含む。カード側通信部２１０は、メッセージ７３０などをカードＲ／Ｗ８１０へ送付する。メッセージ７３０は、カード鍵要素７２４やカード認証情報７３２や端末用乱数７５１を含む。
カード側鍵共有部２０２は、端末鍵要素７２２をカード側通信部２１０から受け取る。カード側鍵共有部２０２は、カード鍵要素７２４を生成する。カード側鍵共有部２０２は、カード鍵要素７２４をカード側通信部２１０に送付する。カード側鍵共有部２０２は、端末鍵要素７２２とカード鍵要素７２４とから共有鍵７２６を生成する。
ＰＩＮ情報記憶部２０１は、あらかじめ設定されたＰＩＮ情報７１２を格納する。
カード認証情報生成部２０６は、ＰＩＮ情報７１２をＰＩＮ情報記憶部２０１から受け取る。カード認証情報生成部２０６は、共有鍵７２６をカード側鍵共有部２０２から受け取る。カード認証情報生成部２０６は、ＰＩＮ情報７１２と共有鍵７２６とを用いて、カード認証情報７３２を生成する。カード認証情報生成部２０６は、カード認証情報７３２をカード側通信部２１０に送付する。
端末用乱数生成部２１３は、端末用乱数７５１を生成する。端末用乱数生成部２１３は、端末用乱数７５１をカード側通信部２１０に送付する。
端末検証部２１４は、端末認証情報７５４をカード側通信部２１０から受け取る。端末検証部２１４は、ＰＩＮ情報７１２をＰＩＮ情報記憶部２０１から受け取る。端末検証部２１４は、共有鍵７２６をカード側鍵共有部２０２から受け取る。端末検証部２１４は、端末用乱数７５１を端末用乱数生成部２１３から受け取る。端末検証部２１４は、ＰＩＮ情報７１２と共有鍵７２６と端末用乱数７５１とを用いて、端末認証情報７５４を検証する。端末検証部２１４は、端末検証結果７５８を生成する。
復号部２１１は、ｖｅｒｉｆｙＰＩＮコマンド７４１をカード側通信部２１０から受け取る。復号部２１１は、端末検証結果７５８を端末検証部２１４から受け取る。復号部２１１は、共有鍵７２６をカード側鍵共有部２０２から受け取る。復号部２１１は、ｖｅｒｉｆｙＰＩＮコマンド７４３を生成する。
ＩＣカード処理部２１２は、ｖｅｒｉｆｙＰＩＮコマンド７４３を復号部２１１から受け取る。ＩＣカード処理部２１２は、所定のＩＣカード処理を実行する。
【００４２】
次に動作について説明する。
ユーザ８０１は、ＰＩＮ情報７１１を記憶している。ＩＣカード２００は、あらかじめ何らかの安全な方法によりＰＩＮ情報７１２をＰＩＮ情報記憶部２０１に記憶しておく。
【００４３】
引き続き、ＩＣカード２００と端末装置１００との間で認証を行う際の動作について説明する。
まず、ユーザ８０１がＰＩＮ情報７１１を端末装置１００のＰＩＮ情報入力部１０１により入力する。
【００４４】
次に、端末装置１００が処理を行う。
端末側鍵共有部１０２は、端末鍵要素７２２を生成する。端末側鍵共有部１０２は、端末鍵要素７２２を端末側通信部１１０に送付する。端末側通信部１１０は、端末鍵要素７２２をカードＲ／Ｗ８１０へ送付する。カードＲ／Ｗ８１０は、端末鍵要素７２２をカード側通信部２１０に送付する。
【００４５】
次に、ＩＣカード２００が処理を行う。
カード側通信部２１０は、端末鍵要素７２２をカードＲ／Ｗ８１０から受け取る。カード側鍵共有部２０２は、端末鍵要素７２２をカード側通信部２１０から受け取る。カード側鍵共有部２０２は、カード鍵要素７２４を生成する。カード側鍵共有部２０２は、端末鍵要素７２２とカード鍵要素７２４とから共有鍵７２６を生成する。
ＰＩＮ情報記憶部２０１は、あらかじめ設定され格納しているＰＩＮ情報７１２を取り出す。カード認証情報生成部２０６は、ＰＩＮ情報７１２をＰＩＮ情報記憶部２０１から受け取る。カード認証情報生成部２０６は、共有鍵７２６をカード側鍵共有部２０２から受け取る。カード認証情報生成部２０６は、ＰＩＮ情報７１２と共有鍵７２６とを用いて、カード認証情報７３２を生成する。カード認証情報生成部２０６は、カード認証情報７３２をカード側通信部２１０に送付する。
端末用乱数生成部２１３は、端末用乱数７５１を生成する。端末用乱数生成部２１３は、端末用乱数７５１をカード側通信部２１０に送付する。
カード側通信部２１０は、カード鍵要素７２４をカード側鍵共有部２０２から受け取る。カード側通信部２１０は、カード認証情報７３２をカード認証情報生成部２０６から受け取る。カード側通信部２１０は、端末用乱数７５１を端末用乱数生成部２１３から受け取る。カード側通信部２１０は、カード鍵要素７２４とカード認証情報７３２と端末用乱数７５１とを合わせてメッセージ７３０とする。カード側通信部２１０は、メッセージ７３０をカードＲ／Ｗ８１０へ送付する。カードＲ／Ｗ８１０は、メッセージ７３０を端末側通信部１１０に送付する。
【００４６】
次に、端末装置１００が処理を行う。
端末側鍵共有部１０２は、カード鍵要素７２４を端末側通信部１１０から受け取る。端末側鍵共有部１０２は、端末鍵要素７２２とカード鍵要素７２４とから共有鍵７２５を生成する。
カード検証部１０６は、カード認証情報７３２を端末側通信部１１０から受け取る。カード検証部１０６は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。カード検証部１０６は、共有鍵７２５を端末側鍵共有部１０２から受け取る。カード検証部１０６は、ＰＩＮ情報７１１と共有鍵７２５とを用いて、カード認証情報７３２を検証する。カード検証部１０６は、カード検証結果７３５を生成する。
端末認証情報生成部１１３は、カード検証結果７３５をカード検証部１０６から受け取る。カード検証結果７３５が正しくない場合、端末認証情報生成部１１３は、エラーにより処理を中断する。
カード検証結果７３５が正しい場合、端末認証情報生成部１１３は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。端末認証情報生成部１１３は、共有鍵７２５を端末側鍵共有部１０２から受け取る。端末認証情報生成部１１３は、端末用乱数７５１を端末側通信部１１０から受け取る。端末認証情報生成部１１３は、ＰＩＮ情報７１１と共有鍵７２５と端末用乱数７５１とを用いて、端末認証情報７５４を生成する。端末認証情報生成部１１３は、端末認証情報７５４を端末側通信部１１０に送付する。
ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、カード検証結果７３５をカード検証部１０６から受け取る。カード検証結果７３５が正しくない場合、ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、エラーにより処理を中断する。
カード検証結果７３５が正しい場合、ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、ＰＩＮ情報７１１をＰＩＮ情報入力部１０１から受け取る。ｖｅｒｉｆｙＰＩＮコマンド化部１１１は、ＡＰＤＵのｖｅｒｉｆｙＰＩＮコマンド７４１を生成する。
暗号化部１１２は、ｖｅｒｉｆｙＰＩＮコマンド７４１をｖｅｒｉｆｙＰＩＮコマンド化部１１１から受け取る。暗号化部１１２は、ｖｅｒｉｆｙＰＩＮコマンド７４１をｖｅｒｉｆｙＰＩＮコマンド化部１１１から受け取る。暗号化部１１２は、共有鍵７２５を端末側鍵共有部１０２から受け取る。暗号化部１１２は、暗号処理をして、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を生成する。暗号化部１１２は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２を端末側通信部１１０に送付する。
端末側通信部１１０は、暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２と端末認証情報７５４とを合わせてメッセージ７４０とする。端末側通信部１１０は、メッセージ７４０をカードＲ／Ｗ８１０へ送付する。カードＲ／Ｗ８１０は、メッセージ７４０をカード側通信部２１０に送付する。
【００４７】
次に、ＩＣカード２００が処理を行う。
端末検証部２１４は、端末認証情報７５４をカード側通信部２１０から受け取る。端末検証部２１４は、ＰＩＮ情報７１２をＰＩＮ情報記憶部２０１から受け取る。端末検証部２１４は、共有鍵７２６をカード側鍵共有部２０２から受け取る。端末検証部２１４は、端末用乱数７５１を端末用乱数生成部２１３から受け取る。端末検証部２１４は、ＰＩＮ情報７１２と共有鍵７２６と端末用乱数７５１とを用いて、端末認証情報７５４を検証する。端末検証部２１４は、端末検証結果７５８を生成する。
復号部２１１は、端末検証結果７５８を端末検証部２１４から受け取る。端末検証結果７５８が正しくない場合、復号部２１１は、エラーにより処理を中断する。
端末検証結果７５８が正しい場合、復号部２１１は、ｖｅｒｉｆｙＰＩＮコマンド７４１をカード側通信部２１０から受け取る。復号部２１１は、共有鍵７２６をカード側鍵共有部２０２から受け取る。復号部２１１は、復号処理をして、ｖｅｒｉｆｙＰＩＮコマンド７４３を生成する。
ＩＣカード処理部２１２は、ｖｅｒｉｆｙＰＩＮコマンド７４３を復号部２１１から受け取り、所定のＩＣカード処理を実行する。
【００４８】
図５は、この実施の形態における端末認証情報生成部１１３及び端末検証部２１４の構成の一例を示す詳細ブロック図である。
記号「‖」は、データの連結を表現する。
端末認証情報生成部１１３は、ＰＩＮ情報ハッシュ部１１４と、マック値算出部１１５とを有する。端末検証部２１４は、ＰＩＮ情報ハッシュ部２１５と、マック値算出部２１６と、認証情報比較部２１７とを有する。
【００４９】
まず、端末装置１００の端末認証情報生成部１１３が処理を行う。
ＰＩＮ情報ハッシュ部１１４は、ＰＩＮ情報７１１《Ｐ》を用いて、《Ｋｐ＝ＨＡＳＨ（Ｐ）》を計算する。マック値算出部１１５は、ハッシュ値《Ｋｐ》と共有鍵７２５《Ｋ》と端末用乱数７５１《ｒ》とを用いて、《ＨＫ＝Ｋｐ》《ｍ＝ｒ‖Ｋ》《Ｃ’＝ＭＡＣ（ＨＫ，ｍ）》を計算して、端末認証情報７５４《Ｃ’》を生成する。端末認証情報生成部１１３は、端末認証情報７５４《Ｃ’》をＩＣカード２００に送付する。
【００５０】
次に、ＩＣカード２００の端末検証部２１４が処理を行う。
ＰＩＮ情報ハッシュ部２１５は、ＰＩＮ情報７１２《Ｐ》を用いて、《Ｋｐ＝ＨＡＳＨ（Ｐ）》を計算する。マック値算出部２１６は、ハッシュ値《Ｋｐ》と、共有鍵７２６《Ｋ》と、端末用乱数７５１《ｒ》とを用いて、《ＨＫ＝Ｋｐ》《ｍ＝ｒ‖Ｋ》《Ｃ＝ＭＡＣ（ＨＫ，ｍ）》を計算して、端末検証用情報《Ｃ》を生成する。
認証情報比較部２１７は、端末装置１００から受け取った端末認証情報７５４《Ｃ’》と、端末検証用情報《Ｃ》とを比較する。一致すれば「ＯＫ」、異なれば「ＮＧ」として、認証情報比較部２１７は、端末検証結果７５８を生成する。
【００５１】
端末装置１００にも端末認証情報生成部１１３を備えることにより、端末装置１００とＩＣカード２００との相互認証をすることができる。
ＩＣカード２００は、端末用乱数生成部２１３が生成した端末用乱数７５１を端末装置１００に送付し、端末装置１００では、端末認証情報生成部１１３が、ＰＩＮ情報７１１と共有鍵７２５とＩＣカード２００から受け取った端末用乱数７５１とを用いて、端末認証情報７５４を生成するので、カード認証情報を利用した端末装置１００のなりすましを防止することができる。
また、ＩＣカード２００が端末装置１００へカード鍵要素７２４と一緒にカード認証情報７３２と端末用乱数７５１を送り、端末装置１００がＩＣカード２００へ暗号済ｖｅｒｉｆｙＰＩＮコマンド７４２と一緒に端末認証情報７５４を送るので、通信回数を３回に削減することができる。
【００５２】
なお、ＰＩＮ情報ハッシュ部１１４が用いるハッシュアルゴリズムと、ＰＩＮ情報ハッシュ部２１５が用いるハッシュアルゴリズムとが同じであれば、ＰＩＮ情報ハッシュ部１０７及びＰＩＮ情報ハッシュ部２０７が用いるハッシュアルゴリズムと異なっていてもよい。また、ＰＩＮ情報ハッシュ部１１４及びＰＩＮ情報ハッシュ部２１５を設けず、マック値算出部１１５は、ＰＩＮ情報ハッシュ部１０７が算出したハッシュ値《Ｋｐ》を用い、マック値算出部２１６は、ＰＩＮ情報ハッシュ部２０７が算出したハッシュ値《Ｋｐ》を用いる構成であってもよい。
【００５３】
実施の形態３．
実施の形態３について、図６〜図１０を用いて説明する。
なお、実施の形態１および実施の形態２と共通する部分については、同一の符号を付し、説明を省略する。
【００５４】
認証システム８００において、ＩＣカード２００は、あらかじめ、利用者認証データを記憶している。利用者認証データは、例えば、ＰＩＮ情報、暗証番号、パスワードなど、利用者を認証するための情報（以下「利用者認証情報」と呼ぶ。）を表わすデータである。
ＩＣカード２００を所有している利用者は、ＩＣカード２００が記憶した利用者認証データが表わす利用者認証情報を知っている。利用者は、端末装置１００に利用者認証情報を入力する。
端末装置１００は、入力した利用者認証情報を表わす利用者認証データをＩＣカード２００に送信する。ＩＣカード２００は、端末装置１００から受信した利用者認証データと、あらかじめ記憶した利用者認証データとを比較して、一致する場合に、利用者がＩＣカード２００の所有者であると認め、ＩＣカード２００が記憶したデータへのアクセスなどＩＣカード２００の利用を許可する。
したがって、利用者認証情報を第三者に盗まれないようにすることが重要である。
【００５５】
第三者が利用者認証情報を盗もうとする手口には、例えば、次のようなものがある。
第一に、第三者は、端末装置１００とＩＣカード２００との間の通信を盗聴することにより、利用者認証情報を手に入れようとする。また、第三者は、正しい利用者認証情報がわからないまでも、盗聴により手に入れたデータをＩＣカード２００に対して送信することにより、正しい利用者識別情報を知っているかのように振舞おうとする。
第二に、第三者は、ＩＣカード２００から利用者認証情報を引き出そうとする。例えば、第三者は、ＩＣカード２００を解析して利用者認証データを読み出そうとする。あるいは、第三者は、利用者情報を推測し、推測した利用者認証情報を表わす利用者認証データをＩＣカード２００に送信して認証されるかどうかを見る。
第三に、第三者は、利用者から利用者認証情報を引き出そうとする。例えば、第三者は、ＩＣカード２００を偽物のＩＣカードとすり替える。利用者が端末装置１００に入力した利用者認証情報を表わす利用者認証データを偽物のＩＣカードが受信して、利用者認証情報を手に入れる。
【００５６】
認証システム８００は、これらの手口から利用者認証情報を守りつつ、ＩＣカード２００の所有者である正しい利用者がＩＣカード２００を利用できるシステムである。
【００５７】
図６は、この実施の形態における認証システム８００のハードウェア構成の一例を示すハードウェア構成図である。
認証システム８００は、端末装置１００と、ＩＣカード２００とを有する。
端末装置１００は、処理装置９１１（端末処理装置）と、操作入力装置９１２と、出力装置９１３と、記憶装置９１４（端末記憶装置）と、通信装置９１５（端末通信装置）とを有する。
ＩＣカード２００は、処理装置９２１（カード処理装置）と、記憶装置９２４（カード記憶装置）と、通信装置９２５（カード通信装置）とを有する。
処理装置９１１は、記憶装置９１４が記憶したプログラムを実行することにより、データを処理し、端末装置１００を制御する。処理装置９２１も同様に、記憶装置９２４が記憶したプログラムを実行することにより、ＩＣカード２００を制御する。
記憶装置９１４は、処理装置９１１が実行するプログラムや、処理装置９１１が処理するデータなどを記憶する。記憶装置９１４は、例えば、揮発性メモリ、不揮発性メモリ、ディスクドライブ装置などである。記憶装置９２４も同様に、処理装置９２１が実行するプログラムや、処理装置９２１が処理するデータなどを記憶する。なお、記憶装置９２４の全部もしくは少なくとも一部は、耐タンパ性を有する。
操作入力装置９１２は、利用者の操作を入力し、入力した操作を表わすデータを生成する。操作入力装置９１２が生成したデータは、処理装置９１１が直接処理してもよいし、記憶装置９１４が一時的に記憶してもよい。操作入力装置９１２は、例えば、キーボード、マウス、タッチパネルなどである。
出力装置９１３は、処理装置９１１が処理したデータや、記憶装置９１４が記憶したデータなどを、端末装置１００の外部に出力できる形式に変換して、出力する。出力装置９１３は、例えば、液晶表示装置、スピーカー、プリンタ装置などである。
通信装置９１５，９２５は、互いに通信する。通信装置９１５と通信装置９２５とは、直接通信する構成であってもよいし、カードＲ／Ｗなどを介して通信する構成であってもよい。また、通信装置９１５と通信装置９２５との間の通信は、有線接続によるものであってもよいし、無線接続によるものであってもよい。
【００５８】
端末装置１００やＩＣカード２００の機能ブロックは、記憶装置９１４，９２４が記憶したプログラムを処理装置９１１，９２１が実行することにより実現する。なお、実施の形態１及び実施の形態２における端末装置１００やＩＣカード２００も、この実施の形態と同様、プログラムを処理装置が実行することにより実現するものであってもよい。
【００５９】
図７は、この実施の形態における端末装置１００及びＩＣカード２００の機能ブロックの構成の一例を示すブロック構成図である。
【００６０】
端末装置１００は、利用者認証入力部１２０と、鍵共有部１３０と、カード検証部１４０と、ダミー認証生成部１５１と、利用者認証生成部１５２と、利用者認証暗号化部１５３と、端末鍵要素送信部１８１と、暗号化認証送信部１８２と、メッセージ受信部１９０とを有する。
【００６１】
利用者認証入力部１２０は、利用者認証情報を入力する。
利用者認証入力部１２０は、操作入力装置９１２を用いて、利用者の操作に基づいて、利用者認証情報を入力する。利用者認証入力部１２０は、処理装置９１１を用いて、入力した利用者認証情報を表わす利用者認証データを生成する。利用者認証入力部１２０は、記憶装置９１４を用いて、生成した利用者認証データを記憶する。
【００６２】
鍵共有部１３０（端末鍵共有部）は、ＩＣカード２００と共有する共有鍵を生成する。鍵共有部１３０は、例えばＤＨ鍵共有方式を用いて、共有鍵を生成する。
鍵共有部１３０は、法記憶部１３１と、原始根記憶部１３２と、端末乱数生成部１３３と、端末鍵要素生成部１３４と、端末共有鍵生成部１３５とを有する。
【００６３】
法記憶部１３１は、あらかじめ、記憶装置９１４を用いて、大きな素数ｐを表わすデータを記憶している。素数ｐの大きさは、要求される安全性レベルによって異なり、素数ｐが大きいほど、安全性レベルが高くなる。
原始根記憶部１３２は、あらかじめ、記憶装置９１４を用いて、原始根ｇを表わすデータを記憶している。原始根ｇは、素数ｐを法とする整数の剰余類が乗法についてなす群の生成元である。すなわち、原始根ｇは、２以上ｐ−１以下の整数であり、ｇのｐ乗をｐで割った余りがｇと等しく、２以上ｐ−１以下のいずれの整数ｉをとってもｇのｉ乗をｐで割った余りがｇと異なる。
【００６４】
端末乱数生成部１３３は、処理装置９１１を用いて、法記憶部１３１が記憶したデータが表わす素数ｐに基づく処理をする。端末乱数生成部１３３は、処理装置９１１を用いて、１以上ｐ−１以下のｐ−１個の整数のなかから、ランダムに、整数を１つ選択する。端末乱数生成部１３３が選択した整数を、端末乱数ａと呼ぶ。端末乱数生成部１３３は、記憶装置９１４を用いて、選択した端末乱数ａを表わすデータを記憶する。
【００６５】
端末鍵要素生成部１３４は、処理装置９１１を用いて、法記憶部１３１が記憶したデータが表わす素数ｐと、原始根記憶部１３２が記憶したデータが表わす原始根ｇと、端末乱数生成部１３３が記憶したデータが表わす端末乱数ａとに基づく計算をする。端末鍵要素生成部１３４は、処理装置９１１を用いて、ｇのａ乗をｐで割った余りを計算する。端末鍵要素生成部１３４が計算した結果として得られる整数を、端末鍵要素Ａと呼ぶ。端末鍵要素生成部１３４は、記憶装置９１４を用いて、算出した端末鍵要素Ａを表わすデータを記憶する。
【００６６】
端末共有鍵生成部１３５は、処理装置９１１を用いて、法記憶部１３１が記憶したデータが表わす素数ｐと、端末乱数生成部１３３が記憶したデータが表わす端末乱数ａと、カード鍵要素受信部１９１が記憶したデータが表わすカード鍵要素Ｂ（後述）とに基づく計算をする。端末共有鍵生成部１３５は、処理装置９１１を用いて、Ｂのａ乗をｐで割った余りを計算する。端末共有鍵生成部１３５が計算した結果として得られる整数を表わすデータを、端末共有鍵Ｋと呼ぶ。端末共有鍵生成部１３５は、記憶装置９１４を用いて、算出した端末共通鍵Ｋを記憶する。
【００６７】
カード検証部１４０は、ＩＣカード２００が偽物でないかを検証する。
カード検証部１４０は、端末認証ハッシュ部１４１と、端末認証生成部１４２と、カード認証部１４３とを有する。
【００６８】
端末認証ハッシュ部１４１は、処理装置９１１を用いて、利用者認証入力部１２０が記憶した利用者認証データに基づく計算をする。端末認証ハッシュ部１４１は、処理装置９１１を用いて、あらかじめ定めたハッシュ関数Ｈ１により、利用者認証データをハッシュする。端末認証ハッシュ部１４１がハッシュした結果として得られるハッシュ値を表わすデータを、端末ハッシュ値ＨＫと呼ぶ。端末認証ハッシュ部１４１は、記憶装置９１４を用いて、算出した端末ハッシュ値ＨＫを記憶する。
端末認証ハッシュ部１４１が用いるハッシュ関数Ｈ１は、完全ハッシュ関数であることが望ましい。すなわち、元のデータ（利用者認証データ）が異なれば、ハッシュ値（端末ハッシュ値ＨＫ）が必ず異なる。これにより、元のデータが異なるにも関わらずハッシュ値が偶然一致することによる誤認証を防ぐことができる。
【００６９】
端末認証生成部１４２は、処理装置９１１を用いて、端末共有鍵生成部１３５が記憶した端末共有鍵Ｋと、端末認証ハッシュ部１４１が記憶した端末ハッシュ値ＨＫとに基づく計算をする。端末認証生成部１４２は、処理装置９１１を用いて、あらかじめ定めたハッシュ関数Ｈ２により、端末共有鍵Ｋと、端末ハッシュ値ＨＫとを連結したデータをハッシュする。端末認証生成部１４２がハッシュした結果として得られるハッシュ値を表わすデータを、カード検証データＣと呼ぶ。端末認証生成部１４２は、記憶装置９１４を用いて、算出したカード検証データＣを記憶する。
端末認証生成部１４２が用いるハッシュ関数Ｈ２は、一方向性を有する。すなわち、ハッシュ値（カード検証データＣ）から元のデータ（端末共有鍵Ｋおよび端末ハッシュ値ＨＫ）を算出することが事実上不可能である。また、端末認証生成部１４２が用いるハッシュ関数Ｈ２は、一様性を有する。すなわち、元のデータを変化させた場合、ハッシュ値が一様に分布し、偏りがない。この条件を満たせば、端末認証生成部１４２が用いる関数は、ハッシュ関数でなくてもよいし、端末認証ハッシュ部１４１が用いるハッシュ関数Ｈ１と同一であってもよい。
【００７０】
カード認証部１４３は、処理装置９１１を用いて、端末認証生成部１４２が記憶したカード検証データＣと、カード認証受信部１９２が記憶したカード認証データＣ’（後述）とに基づく判定をする。カード認証部１４３は、処理装置９１１を用いて、カード検証データＣとカード認証データＣ’とを比較する。
カード検証データＣとカード認証データＣ’とが一致する場合、カード認証部１４３は、処理装置９１１を用いて、ＩＣカード２００の検証に成功したと判定する。
カード検証データＣとカード認証データＣ’とが一致しない場合、カード認証部１４３は、処理装置９１１を用いて、ＩＣカード２００の検証に失敗したと判定する。
カード認証部１４３が判定した結果を、カード認証結果と呼ぶ。カード認証部１４３は、記憶装置９１４を用いて、カード認証結果を表わすデータを記憶する。
【００７１】
ダミー認証生成部１５１は、処理装置９１１を用いて、カード認証部１４３が記憶したデータが表わすカード認証結果に基づいて処理をする。カード検証部１４０がＩＣカード２００の検証に失敗した場合、ダミー認証生成部１５１は、処理装置９１１を用いて、ダミーの利用者認証データをランダムに生成する。すなわち、ダミー認証生成部１５１は、処理装置９１１を用いて、利用者認証データとして可能な多数のデータのなかから、ダミーの利用者認証データとして、１つのデータをランダムに選択する。ダミー認証生成部１５１は、記憶装置９１４を用いて、生成したダミーの利用者認証データを記憶する。
【００７２】
利用者認証生成部１５２は、処理装置９１１を用いて、カード認証部１４３が記憶したデータが表わすカード認証結果に基づく処理をする。利用者認証生成部１５２は、処理装置９１１を用いて、利用者認証コマンドを生成する。利用者認証コマンドは、ＩＣカード２００に対して利用者の認証を要求するコマンドである。利用者認証コマンドは、例えば、ＡＰＤＵのｖｅｒｉｆｙＰＩＮコマンドである。利用者認証コマンドは、利用者認証データを含む。
カード検証部１４０がＩＣカード２００の認証に成功した場合、利用者認証生成部１５２は、処理装置９１１を用いて、利用者認証入力部１２０が記憶した利用者認証データを含む利用者認証コマンドを生成する。
カード検証部１４０がＩＣカード２００の認証に失敗した場合、利用者認証生成部１５２は、処理装置９１１を用いて、ダミー認証生成部１５１が記憶したダミーの利用者認証データを含む利用者認証コマンドを生成する。
利用者認証生成部１５２は、記憶装置９１４を用いて、生成した利用者認証コマンドを記憶する。
【００７３】
利用者認証暗号化部１５３は、処理装置９１１を用いて、端末共有鍵生成部１３５が記憶した端末共有鍵Ｋと、利用者認証生成部１５２が記憶した利用者認証コマンドとに基づく処理をする。利用者認証暗号化部１５３は、処理装置９１１を用いて、端末共有鍵Ｋにより利用者認証コマンドを暗号化する。利用者認証暗号化部１５３が利用者認証コマンドを暗号化した結果として得られる暗号文を、暗号済利用者認証コマンドと呼ぶ。利用者認証暗号化部１５３は、記憶装置９１４を用いて、生成した暗号済利用者認証コマンドを記憶する。
【００７４】
端末鍵要素送信部１８１は、処理装置９１１を用いて、端末鍵要素生成部１３４が記憶したデータが表わす端末鍵要素Ａに基づく処理をする。端末鍵要素送信部１８１は、処理装置９１１を用いて、認証開始メッセージを生成する。認証開始メッセージは、ＩＣカード２００に対して、認証処理のプロトコルを開始することを通知するとともに、端末鍵要素Ａを通知するメッセージである。端末鍵要素送信部１８１は、処理装置９１１を用いて、端末鍵要素Ａを表わすデータを含む認証開始メッセージを生成する。端末鍵要素送信部１８１は、通信装置９１５を用いて、生成した認証開始メッセージを、ＩＣカード２００に対して送信する。
【００７５】
暗号化認証送信部１８２は、通信装置９１５を用いて、利用者認証暗号化部１５３が記憶した暗号済利用者認証コマンドを送信する。暗号化認証送信部１８２は、通信装置９１５を用いて、暗号済利用者認証コマンドを、ＩＣカード２００に対して送信する。
【００７６】
メッセージ受信部１９０は、通信装置９１５を用いて、ＩＣカード２００が送信した認証開始応答メッセージを受信する。認証開始応答メッセージは、端末鍵要素送信部１８１が送信した認証開始メッセージに対する応答である。認証開始応答メッセージは、カード鍵要素Ｂを表わすデータと、カード認証データＣ’とを含む。
メッセージ受信部１９０は、カード鍵要素受信部１９１と、カード認証受信部１９２とを有する。
【００７７】
カード鍵要素受信部１９１は、通信装置９１５を用いて受信した認証開始応答メッセージから、処理装置９１１を用いて、カード鍵要素Ｂを表わすデータを取得する。カード鍵要素受信部１９１は、記憶装置９１４を用いて、取得したデータを記憶する。
カード認証受信部１９２は、通信装置９１５を用いて受信した認証開始応答メッセージから、処理装置９１１を用いて、カード認証データＣ’を取得する。カード認証受信部１９２は、記憶装置９１４を用いて、取得したカード認証データＣ’を記憶する。
【００７８】
ＩＣカード２００は、利用者認証記憶部２２０と、鍵共有部２３０と、認証情報生成部２４０と、利用者認証復号部２５１と、利用者認証部２５２と、端末鍵要素受信部２８１と、暗号化認証受信部２８２と、メッセージ送信部２９０とを有する。
【００７９】
利用者認証記憶部２２０は、あらかじめ、耐タンパ性を有する記憶装置９２４を用いて、利用者認証データを記憶している。したがって、第三者がＩＣカード２００を解析しても、利用者認証データを読み出すことはできない。
【００８０】
鍵共有部２３０（カード鍵共有部）は、端末装置１００と共有する共有鍵を生成する。鍵共有部２３０は、例えばＤＨ鍵共有方式を用いて、共有鍵を生成する。
鍵共有部２３０は、法記憶部２３１と、原始根記憶部２３２と、カード乱数生成部２３３と、カード鍵要素生成部２３４と、カード共有鍵生成部２３５とを有する。
【００８１】
法記憶部２３１は、あらかじめ、記憶装置９２４を用いて、端末装置１００の法記憶部１３１が記憶しているデータが表わす素数ｐと同一の素数ｐを表わすデータを記憶している。
原始根記憶部２３２は、あらかじめ、記憶装置９２４を用いて、端末装置１００の原始根記憶部１３２が記憶しているデータが表わす原始根ｇと同一の原始根ｇを表わすデータを記憶している。
【００８２】
カード乱数生成部２３３は、処理装置９２１を用いて、法記憶部２３１が記憶したデータが表わす素数ｐに基づく処理をする。カード乱数生成部２３３は、処理装置９２１を用いて、１以上ｐ−１以下のｐ−１個の整数のなかから、ランダムに整数を１つ選択する。カード乱数生成部２３３が選択した整数を、カード乱数ｂと呼ぶ。カード乱数生成部２３３は、記憶装置９２４を用いて、選択したカード乱数ｂを表わすデータを記憶する。
【００８３】
カード鍵要素生成部２３４は、処理装置９２１を用いて、法記憶部２３１が記憶したデータが表わす素数ｐと、原始根記憶部２３２が記憶したデータが表わす原始根ｇと、カード乱数生成部２３３が記憶したデータが表わすカード乱数ｂとに基づく計算をする。カード鍵要素生成部２３４は、処理装置９２１を用いて、ｇのｂ乗をｐで割った余りを計算する。カード鍵要素生成部２３４が計算した結果として得られる整数を、カード鍵要素Ｂと呼ぶ。カード鍵要素生成部２３４は、記憶装置９２４を用いて、算出したカード鍵要素Ｂを表わすデータを記憶する。
【００８４】
カード共有鍵生成部２３５は、処理装置９２１を用いて、法記憶部２３１が記憶したデータが表わす素数ｐと、カード乱数生成部２３３が記憶したデータが表わすカード乱数ｂと、端末鍵要素受信部２８１が記憶したデータが表わす端末鍵要素Ａとに基づく計算をする。カード共有鍵生成部２３５は、処理装置９２１を用いて、Ａのｂ乗をｐで割った余りを計算する。カード共有鍵生成部２３５が計算した結果として得られる整数を表わすデータを、カード共有鍵Ｋと呼ぶ。カード共有鍵生成部２３５は、記憶装置９２４を用いて、算出したカード共有鍵Ｋを記憶する。
【００８５】
カード共有鍵生成部２３５が算出するカード共有鍵Ｋは、端末共有鍵生成部１３５が算出する端末共有鍵Ｋと同一である。したがって、ＩＣカード２００は、端末装置１００が端末共有鍵Ｋにより暗号化した暗号化利用者認証コマンドを復号することができる。
端末装置１００とＩＣカード２００とは、あらかじめ素数ｐと原始根ｇとを共有しておく必要があるが、素数ｐや原始根ｇは公開された情報である。したがって、端末装置１００とＩＣカード２００とが、あらかじめ秘密の情報を共有しておく必要はない。
また、第三者が、端末装置１００とＩＣカード２００との間の通信を傍受して、端末鍵要素Ａとカード鍵要素Ｂとを手に入れたとしても、そこから共有鍵Ｋを計算することは、事実上不可能である。したがって、第三者が、端末装置１００とＩＣカード２００との間の通信を傍受して、暗号化利用者認証コマンドを手に入れたとしても、手に入れた暗号化利用者認証コマンドを復号して、そこに含まれる利用者認証データを手に入れることはできない。
また、共有鍵Ｋは、端末乱数生成部１３３がランダムに選択した端末乱数ａと、カード乱数生成部２３３がランダムに選択したカード乱数ｂとに基づいて生成されるので、通信のたびに変化する。したがって、第三者が、端末装置１００とＩＣカード２００との間の通信を傍受して、暗号化利用者認証コマンドを手に入れ、その後、ＩＣカード２００に対して、手に入れた暗号化利用者認証コマンドを送信したとしても、共有鍵Ｋが異なるので、ＩＣカード２００は、第三者が送信した暗号化利用者認証コマンドを受理しない。したがって、再送によるなりすまし攻撃に対しても安全である。
【００８６】
認証情報生成部２４０は、カード認証データＣ’を生成する。
認証情報生成部２４０は、カード認証ハッシュ部２４１と、カード認証生成部２４２とを有する。
【００８７】
カード認証ハッシュ部２４１は、処理装置９２１を用いて、利用者認証記憶部２２０が記憶した利用者認証データに基づく計算をする。カード認証ハッシュ部２４１は、処理装置９２１を用いて、端末装置１００の端末認証ハッシュ部１４１が用いるハッシュ関数Ｈ１と同一のハッシュ関数Ｈ１により、利用者認証データをハッシュする。カード認証ハッシュ部２４１がハッシュした結果としてあられるハッシュ値を表わすデータを、カードハッシュ値ＨＫと呼ぶ。カード認証ハッシュ部２４１は、記憶装置９２４を用いて、算出したカードハッシュ値ＨＫを記憶する。
なお、カード認証ハッシュ部２４１は、あらかじめ、処理装置９２１を用いて、カードハッシュ値ＨＫを算出し、耐タンパ性のある記憶装置９２４を用いて、算出したカードハッシュ値ＨＫを記憶しておいてもよい。これにより、認証処理におけるＩＣカード２００の計算量を減らすことができる。
【００８８】
カード認証生成部２４２は、処理装置９２１を用いて、カード共有鍵生成部２３５が記憶したカード共有鍵Ｋと、カード認証ハッシュ部２４１が記憶したカードハッシュ値ＨＫとに基づく計算をする。カード認証生成部２４２は、処理装置９２１を用いて、端末装置１００の端末認証生成部１４２が用いるハッシュ関数Ｈ２と同一のハッシュ関数Ｈ２により、カード共有鍵Ｋとカード認証ハッシュ値ＨＫとを連結したデータをハッシュする。カード認証生成部２４２がハッシュした結果として得られるハッシュ値を表わすデータが、カード認証データＣ’である。カード認証生成部２４２は、記憶装置９１４を用いて、算出したカード認証データＣ’を記憶する。
【００８９】
利用者認証入力部１２０が入力した利用者認証情報に基づいて生成した利用者認証データが、利用者認証記憶部２２０が記憶した利用者認証データと同一であれば、端末認証ハッシュ部１４１が算出する端末ハッシュ値ＨＫは、カード認証ハッシュ部２４１が算出するカードハッシュ値ＨＫと同一になる。端末共有鍵生成部１３５が生成する端末共有鍵Ｋと、カード共有鍵生成部２３５が生成するカード共通鍵Ｋとが同一なので、端末認証生成部１４２が算出するカード検証データＣは、カード認証生成部２４２が算出するカード認証データＣ’と同一になる。
したがって、利用者認証入力部１２０が入力した利用者認証情報に基づいて生成した利用者認証データと、利用者認証記憶部２２０が記憶した利用者認証データとが一致していれば、カード認証部１４３がＩＣカード２００の検証に成功したと判定する。
また、ハッシュ関数Ｈ２は一様性を有するので、利用者認証入力部１２０が入力した利用者認証情報に基づいて生成した利用者認証データと、利用者認証記憶部２２０が記憶した利用者認証データとが異なるにも関わらず、端末認証生成部１４２が算出するカード検証データＣと、カード認証生成部２４２が算出するカード認証データＣ’とが偶然同一になる確率は極めて低く、誤認証を防ぐことができる。
また、ハッシュ関数Ｈ２は一方向性を有するので、第三者が、端末装置１００とＩＣカード２００との間の通信を傍受して、カード認証データＣ’を手に入れたとしても、そこから共通鍵Ｋやカード認証ハッシュ値ＨＫを算出することは、事実上不可能である。
【００９０】
利用者認証入力部１２０が入力した利用者認証情報に基づいて生成した利用者認証データと、利用者認証記憶部２２０が記憶した利用者認証データとが一致せず、カード認証部１４３がＩＣカード２００の検証に失敗したと判定する場合には、いくつかの場合が考えられる。
第一の場合は、利用者が、間違った利用者認証情報を端末装置１００に入力した場合である。これは、日常的に発生する状況であり、不正なことは何も起きていない。
第二の場合は、ＩＣカード２００を盗んだ第三者が、推測した利用者認証情報を端末装置１００に入力して、推測が外れた場合である。
第三の場合は、ＩＣカード２００が偽物とすり替えられている場合である。偽物のＩＣカードは、正しい利用者認証データを知らないので、正しいカード認証データＣ’を生成することができない。このため、利用者が正しい利用者認証情報を入力していたとしても、ＩＣカード２００の認証に失敗する。
【００９１】
このように、ＩＣカード２００の認証に失敗する場合には、第一の場合や第二の場合のように、利用者の側に問題がある場合と、第三の場合のように、ＩＣカードの側に問題がある場合とがある。また、第二の場合や第三の場合のように、何か不正なことが起きている可能性がある。
【００９２】
利用者認証復号部２５１は、処理装置９２１を用いて、カード共有鍵生成部２３５が記憶したカード共有鍵Ｋと、暗号化認証受信部２８２が記憶した暗号化利用者認証コマンドとに基づく処理をする。利用者認証復号部２５１は、処理装置９２１を用いて、カード共有鍵Ｋにより暗号化利用者認証コマンドを復号する。カード共有鍵Ｋは、利用者認証暗号化部１５３が暗号化に用いた端末共有鍵Ｋと同一なので、利用者認証復号部２５１が暗号化利用者認証コマンドを復号した結果として得られる復号文は、利用者認証生成部１５２が生成した利用者認証コマンドと同一になる。利用者認証復号部２５１は、記憶装置９２４を用いて、暗号化利用者認証コマンドを復号して得られた利用者認証コマンドを記憶する。
【００９３】
なお、共有鍵Ｋは、通信のたびに生成されるものであり、共有鍵Ｋの生成に、秘密の情報は何ら必要ではない。したがって、ＩＣカード２００が偽物とすり替えられている場合であっても、偽物のＩＣカードは、暗号化利用者認証コマンドを正しく復号して、利用者認証コマンドを得ることができる。
しかし、ＩＣカード２００が偽物とすり替えられている場合には、利用者認証暗号化部１５３がＩＣカード２００の認証に失敗する。このため、利用者認証コマンドに含まれる利用者認証データは、ダミー認証生成部１５１が生成したダミーの利用者認証データである。したがって、ＩＣカード２００を偽物とすり替えたとしても、第三者が、正しい利用者認証データを手に入れることはできない。
【００９４】
利用者認証部２５２は、処理装置９２１を用いて、利用者認証記憶部２２０が記憶した利用者認証データと、利用者認証復号部２５１が取得した利用者認証コマンドとに基づく判定をする。利用者認証部２５２は、処理装置９２１を用いて、利用者認証コマンドに含まれる利用者認証データと、利用者認証記憶部２２０が記憶した利用者認証データとを比較する。
両者が一致する場合、利用者認証部２５２は、処理装置９１１を用いて、利用者の認証に成功したと判定する。
両者が一致しない場合、利用者認証部２５２は、処理装置９１１を用いて、利用者の認証に失敗したと判定する。
利用者認証部２５２が判定した結果を、利用者認証結果と呼ぶ。利用者認証部２５２は、記憶装置９２４を用いて、判定した利用者認証結果を表わすデータを記憶する。
【００９５】
利用者認証部２５２が判定した利用者認証結果に基づいて、ＩＣカード２００は、様々な処理をする。その後の処理は、従来のＩＣカードと同様なので、簡単に説明するに留める。
利用者の認証に成功した場合、ＩＣカード２００は、端末装置１００に対して、ＩＣカード２００が記憶したデータなどに対するアクセスを許可する。例えば、端末装置１００がデータの読出しや書き込みを指示するコマンドを送信した場合、ＩＣカード２００は、そのコマンドに基づいて、記憶したデータを読み出して端末装置１００に対して送信し、あるいは、コマンドで指示されたデータを受け取って記憶する。
利用者の認証に失敗した場合、ＩＣカード２００は、端末装置１００に対して、ＩＣカード２００が記憶したデータなどに対するアクセスを許可しない。更に、利用者認証の失敗が所定の回数（例えば３回）連続した場合、ＩＣカード２００は、外部からのコマンドを一切受け付けないロック状態になる。これにより、ＩＣカード２００を盗んだ第三者が、推測した利用者認証情報を何回も入力することにより、推測が偶然当たってしまうのを防ぐ。
【００９６】
ＩＣカード２００を盗んだ第三者が、推測した利用者認証情報を端末装置１００に入力して推測が外れた場合、カード認証部１４３が、ＩＣカード２００の認証に失敗したと判定する。その場合でも、端末装置１００は、ダミーの利用者認証データを含む利用者認証コマンドを生成するので、ロック機能を有するＩＣカード２００をロックさせることができる。
【００９７】
端末鍵要素受信部２８１は、通信装置９２５を用いて、端末装置１００が送信した認証開始メッセージを受信する。端末鍵要素受信部２８１は、処理装置９２１を用いて、受信した認証開始メッセージから、端末鍵要素Ａを表わすデータを取得する。端末鍵要素受信部２８１は、記憶装置９２４を用いて、取得したデータを記憶する。
【００９８】
暗号化認証受信部２８２は、通信装置９２５を用いて、端末装置１００が送信した暗号化利用者認証コマンドを受信する。暗号化認証受信部２８２は、記憶装置９２４を用いて、受信した暗号化利用者認証コマンドを記憶する。
【００９９】
メッセージ送信部２９０は、カード鍵要素送信部２９１と、カード認証送信部２９２とを有する。
カード鍵要素送信部２９１は、通信装置９２５を用いて、カード鍵要素生成部２３４が記憶したデータが表わすカード鍵要素Ｂを、端末装置１００に対して通知する。
カード認証送信部２９２は、通信装置９２５を用いて、カード認証生成部２４２が記憶したカード認証データＣ’を、端末装置１００に対して通知する。
メッセージ送信部２９０は、処理装置９２１を用いて、カード鍵要素Ｂを表わすデータと、カード認証データＣ’とを含む認証開始応答メッセージを生成する。メッセージ送信部２９０は、通信装置９２５を用いて、生成した認証開始応答メッセージを、端末装置１００に対して送信する。
【０１００】
図８は、この実施の形態における認証処理Ｓ４００の流れの一例を示す全体フローチャート図である。
認証処理Ｓ４００は、利用者認証入力工程Ｓ４１０と、鍵共有処理Ｓ４２０と、カード認証処理Ｓ４４０と、ダミー認証生成工程Ｓ４５０と、利用者認証処理Ｓ４６０とを有する。認証処理Ｓ４００は、端末装置１００が利用者認証入力工程Ｓ４１０を実行するところから開始する。
【０１０１】
利用者認証入力工程Ｓ４１０において、端末装置１００（利用者認証入力部１２０）は、操作入力装置９１２を用いて、利用者の操作に基づいて、利用者認証データを入力する。
鍵共有処理Ｓ４２０において、端末装置１００およびＩＣカード２００は、共有鍵Ｋを共有する。
カード認証処理Ｓ４４０において、ＩＣカード２００は、カード認証データＣ’を生成する。端末装置１００は、ＩＣカード２００が生成したカード認証データＣ’を検証することにより、ＩＣカード２００の認証に成功したか失敗したかを判定する。ＩＣカード２００の認証に成功したと判定した場合、端末装置１００は、利用者認証処理Ｓ４６０へ処理を進める。ＩＣカード２００の認証に失敗したと判定した場合、端末装置１００は、ダミー認証生成工程Ｓ４５０へ処理を進める。
ダミー認証生成工程Ｓ４５０において、端末装置１００（ダミー認証生成部１５１）は、処理装置９１１を用いて、ダミーの利用者認証データを生成する。
利用者認証処理Ｓ４６０において、端末装置１００は、利用者認証コマンドを生成する。ＩＣカード２００は、端末装置１００が生成した利用者認証コマンドを検証して、利用者の認証に成功したか失敗したかを判定する。
【０１０２】
図９は、この実施の形態における認証処理Ｓ４００の一部の詳細な流れの一例を示す詳細フローチャート図である。
端末装置１００は、端末乱数生成工程Ｓ４２１と、端末鍵要素生成工程Ｓ４２２と、端末鍵要素送信工程Ｓ４２３と、メッセージ受信工程Ｓ４３１と、端末共有鍵生成工程Ｓ４２４と、端末認証ハッシュ工程Ｓ４４１と、端末認証生成工程Ｓ４４２と、カード認証工程Ｓ４４３と、ダミー認証生成工程Ｓ４５０とを実行する。
ＩＣカード２００は、端末鍵要素受信工程Ｓ５２１と、カード乱数生成工程Ｓ５２２と、カード鍵要素生成工程Ｓ５２３と、カード共有鍵生成工程Ｓ５２４と、カード認証ハッシュ工程Ｓ５４１と、カード認証生成工程Ｓ５４２と、メッセージ送信工程Ｓ５３１とを実行する。
このうち、端末乱数生成工程Ｓ４２１と、端末鍵要素生成工程Ｓ４２２と、端末鍵要素送信工程Ｓ４２３と、端末共有鍵生成工程Ｓ４２４と、端末鍵要素受信工程Ｓ５２１と、カード乱数生成工程Ｓ５２２と、カード鍵要素生成工程Ｓ５２３と、カード共有鍵生成工程Ｓ５２４とは、鍵共有処理Ｓ４２０の一部である。また、端末認証ハッシュ工程Ｓ４４１と、端末認証生成工程Ｓ４４２と、カード認証工程Ｓ４４３と、カード認証ハッシュ工程Ｓ５４１とは、カード認証処理Ｓ４４０の一部である。また、メッセージ受信工程Ｓ４３１と、メッセージ送信工程Ｓ５３１とは、鍵共有処理Ｓ４２０とカード認証処理Ｓ４４０との両方に属する工程である。
このように、鍵共有処理Ｓ４２０が終わったあとでカード認証処理Ｓ４４０が実行されるわけではなく、鍵共有処理Ｓ４２０とカード認証処理Ｓ４４０とは、入り組んだ順序で実行される。
【０１０３】
端末装置１００は、利用者認証入力工程Ｓ４１０を実行したのち、端末乱数生成工程Ｓ４２１を実行するところから鍵共有処理Ｓ４２０を開始する。
【０１０４】
端末乱数生成工程Ｓ４２１において、端末装置１００の端末乱数生成部１３３は、処理装置９１１を用いて、端末乱数ａをランダムに選択する。端末装置１００は、処理装置９１１を用いて、端末鍵要素生成工程Ｓ４２２へ処理を進める。
端末鍵要素生成工程Ｓ４２２において、端末装置１００の端末鍵要素生成部１３４は、処理装置９１１を用いて、端末乱数生成工程Ｓ４２１で端末乱数生成部１３３が選択した端末乱数ａに基づいて、端末鍵要素Ａを算出する。端末装置１００は、処理装置９１１を用いて、端末鍵要素送信工程Ｓ４２３へ処理を進める。
端末鍵要素送信工程Ｓ４２３において、端末装置１００の端末鍵要素送信部１８１は、通信装置９１５を用いて、端末鍵要素生成工程Ｓ４２２で端末鍵要素生成部１３４が算出した端末鍵要素Ａを含む認証開始メッセージを、ＩＣカード２００に対して送信する。端末装置１００は、処理装置９１１を用いて、メッセージ受信工程Ｓ４３１へ処理を進め、送信した認証開始メッセージに対する応答が、ＩＣカード２００から返ってくるのを待つ。
【０１０５】
ＩＣカード２００は、端末装置１００が送信した認証開始メッセージを受信して、端末鍵要素受信工程Ｓ５２１を実行するところから、鍵共有処理Ｓ４２０を開始する。
【０１０６】
端末鍵要素受信工程Ｓ５２１において、ＩＣカード２００の端末鍵要素受信部２８１は、通信装置９２５を用いて、端末鍵要素送信工程Ｓ４２３で端末装置１００が送信した認証開始メッセージを受信する。ＩＣカード２００は、処理装置９２１を用いて、カード乱数生成工程Ｓ５２２へ処理を進める。
カード乱数生成工程Ｓ５２２において、ＩＣカード２００のカード乱数生成部２３３は、処理装置９２１を用いて、カード乱数ｂをランダムに選択する。ＩＣカード２００は、処理装置９２１を用いて、カード鍵要素生成工程Ｓ５２３へ処理を進める。
カード鍵要素生成工程Ｓ５２３において、ＩＣカード２００のカード鍵要素生成部２３４は、処理装置９２１を用いて、カード乱数生成工程Ｓ５２２でカード乱数生成部２３３が選択したカード乱数ｂに基づいて、カード鍵要素Ｂを算出する。ＩＣカード２００は、処理装置９２１を用いて、カード共有鍵生成工程Ｓ５２４へ処理を進める。
カード共有鍵生成工程Ｓ５２４において、ＩＣカード２００のカード共有鍵生成部２３５は、処理装置９１１を用いて、端末鍵要素受信工程Ｓ５２１で端末鍵要素受信部２８１が受信した認証開始メッセージに含まれる端末鍵要素Ａと、カード乱数生成工程Ｓ５２２でカード乱数生成部２３３が選択したカード乱数ｂとに基づいて、カード共有鍵Ｋを算出する。ＩＣカード２００は、処理装置９２１を用いて、カード認証ハッシュ工程Ｓ５４１へ処理を進める。
【０１０７】
カード認証ハッシュ工程Ｓ５４１から、カード認証処理Ｓ４４０が開始する。
カード認証ハッシュ工程Ｓ５４１において、ＩＣカード２００のカード認証ハッシュ部２４１は、処理装置９２１を用いて、利用者認証記憶部２２０が記憶した利用者認証データに基づいて、カードハッシュ値ＨＫを算出する。ＩＣカード２００は、処理装置９１１を用いて、カード認証生成工程Ｓ５４２へ処理を進める。
カード認証生成工程Ｓ５４２において、ＩＣカード２００のカード認証生成部２４２は、処理装置９２１を用いて、カード共有鍵生成工程Ｓ５２４でカード共有鍵生成部２３５が算出したカード共有鍵Ｋと、カード認証ハッシュ工程Ｓ５４１でカード認証ハッシュ部２４１が算出したカードハッシュ値ＨＫとに基づいて、カード認証データＣ’を算出する。ＩＣカード２００は、処理装置９１１を用いて、メッセージ送信工程Ｓ５３１へ処理を進める。
【０１０８】
メッセージ送信工程Ｓ５３１において、ＩＣカード２００のメッセージ送信部２９０（カード鍵要素送信部２９１およびカード認証送信部２９２）は、通信装置９２５を用いて、カード鍵要素生成工程Ｓ５２３でカード鍵要素生成部２３４が算出したカード鍵要素Ｂと、カード認証生成工程Ｓ５４２でカード認証生成部２４２が算出したカード認証データＣ’とを含む認証開始応答メッセージを、端末装置１００に対して送信する。ＩＣカード２００における鍵共有処理Ｓ４２０及びカード認証処理Ｓ４４０は、これで終わりである。ＩＣカード２００は、処理装置９２１を用いて、利用者認証処理Ｓ４６０へ処理を進める。
【０１０９】
メッセージ受信工程Ｓ４３１において、端末装置１００のメッセージ受信部１９０（カード鍵要素受信部１９１およびカード認証受信部１９２）は、通信装置９２５を用いて、メッセージ送信工程Ｓ５３１でＩＣカード２００が送信した認証開始応答メッセージを受信する。端末装置１００は、処理装置９１１を用いて、端末共有鍵生成工程Ｓ４２４へ処理を進める。
【０１１０】
端末共有鍵生成工程Ｓ４２４において、端末装置１００の端末共有鍵生成部１３５は、処理装置９１１を用いて、端末乱数生成工程Ｓ４２１で端末乱数生成部１３３が選択した端末乱数ａと、メッセージ受信工程Ｓ４３１でメッセージ受信部１９０が受信した認証開始応答メッセージに含まれるカード鍵要素Ｂとに基づいて、端末共有鍵Ｋを算出する。端末装置１００は、処理装置９１１を用いて、端末認証ハッシュ工程Ｓ４４１へ処理を進める。
【０１１１】
端末認証ハッシュ工程Ｓ４４１において、端末装置１００の端末認証ハッシュ部１４１は、処理装置９１１を用いて、利用者認証入力工程Ｓ４１０で利用者認証入力部１２０が入力した利用者認証データに基づいて、端末ハッシュ値ＨＫを算出する。端末装置１００は、処理装置９１１を用いて、端末認証生成工程Ｓ４４２へ処理を進める。
端末認証生成工程Ｓ４４２において、端末装置１００の端末認証生成部１４２は、処理装置９１１を用いて、端末共有鍵生成工程Ｓ４２４で端末共有鍵生成部１３５が算出した端末共有鍵Ｋと、端末認証ハッシュ工程Ｓ４４１で端末認証ハッシュ部１４１が算出した端末ハッシュ値ＨＫとに基づいて、カード検証データＣを算出する。端末装置１００は、処理装置９１１を用いて、カード認証工程Ｓ４４３へ処理を進める。
カード認証工程Ｓ４４３において、端末装置１００のカード認証部１４３は、処理装置９１１を用いて、メッセージ受信工程Ｓ４３１でメッセージ受信部１９０が受信した認証開始応答メッセージに含まれるカード認証データＣ’と、端末認証生成工程Ｓ４４２で端末認証生成部１４２が算出したカード検証データＣとを比較する。
両者が一致する場合は、認証成功である。端末装置１００は、処理装置９１１を用いて、利用者認証処理Ｓ４６０へ処理を進める。
両者が一致しない場合は、認証失敗である。端末装置１００は、処理装置９１１を用いて、ダミー認証生成工程Ｓ４５０へ処理を進める。
【０１１２】
図１０は、この実施の形態における利用者認証処理Ｓ４６０の詳細な流れの一例を示す詳細フローチャート図である。
利用者認証処理Ｓ４６０において、端末装置１００は、利用者認証生成工程Ｓ４６１と、利用者認証暗号化工程Ｓ４６２と、暗号化認証送信工程Ｓ４６３とを実行する。ＩＣカード２００は、暗号化認証受信工程Ｓ５６１と、利用者認証復号工程Ｓ５６２と、利用者認証工程Ｓ５６３とを実行する。利用者認証処理Ｓ４６０は、端末装置１００のカード認証部１４３が認証成功と判定した場合、あるいは、カード認証部１４３が認証失敗と判定し、端末装置１００がダミー認証生成工程Ｓ４５０を実行したのちに、端末装置１００が利用者認証生成工程Ｓ４６１を実行するところから処理を開始する。
【０１１３】
利用者認証生成工程Ｓ４６１において、端末装置１００の利用者認証生成部１５２は、処理装置９１１を用いて、利用者認証コマンドを生成する。
カード認証処理Ｓ４４０でカード認証部１４３がＩＣカード２００の認証に成功した場合、利用者認証生成部１５２は、処理装置９１１を用いて、利用者認証入力工程Ｓ４１０で利用者認証入力部１２０が入力した利用者認証データを含む利用者認証コマンドを生成する。
カード認証処理Ｓ４４０でカード認証部１４３がＩＣカード２００の認証に失敗した場合、利用者認証生成部１５２は、処理装置９１１を用いて、ダミー認証生成工程Ｓ４５０でダミー認証生成部１５１が生成したダミーの利用者認証データを含む利用者認証コマンドを生成する。
端末装置１００は、処理装置９１１を用いて、利用者認証暗号化工程Ｓ４６２へ処理を進める。
【０１１４】
利用者認証暗号化工程Ｓ４６２において、端末装置１００の利用者認証暗号化部１５３は、処理装置９１１を用いて、端末共有鍵生成工程Ｓ４２４で端末共有鍵生成部１３５が算出した端末共有鍵Ｋと、利用者認証生成工程Ｓ４６１で利用者認証生成部１５２が生成した利用者認証コマンドとに基づいて、暗号化利用者認証コマンドを生成する。端末装置１００は、処理装置９１１を用いて、暗号化認証送信工程Ｓ４６３へ処理を進める。
暗号化認証送信工程Ｓ４６３において、端末装置１００の暗号化認証送信部１８２は、通信装置９１５を用いて、利用者認証暗号化工程Ｓ４６２で利用者認証暗号化部１５３が生成した暗号化利用者認証コマンドを、ＩＣカード２００に対して送信する。端末装置１００における利用者認証処理Ｓ４６０は、これで終わりである。
【０１１５】
ＩＣカード２００は、端末装置１００が送信した暗号化利用者認証コマンドを受信して、暗号化認証受信工程Ｓ５６１を実行するところから、利用者認証処理Ｓ４６０を開始する。
【０１１６】
暗号化認証受信工程Ｓ５６１において、ＩＣカード２００の暗号化認証受信部２８２は、通信装置９２５を用いて、端末装置１００が送信した暗号化利用者認証コマンドを受信する。ＩＣカード２００は、処理装置９２１を用いて、利用者認証復号工程Ｓ５６２へ処理を進める。
利用者認証復号工程Ｓ５６２において、ＩＣカード２００の利用者認証復号部２５１は、処理装置９１１を用いて、カード共有鍵生成工程Ｓ５２４でカード共有鍵生成部２３５が算出したカード共有鍵Ｋと、暗号化認証受信工程Ｓ５６１で暗号化認証受信部２８２が受信した暗号化利用者認証コマンドとに基づいて、利用者認証コマンドを復号する。ＩＣカード２００は、処理装置９２１を用いて、利用者認証工程Ｓ５６３へ処理を進める。
利用者認証工程Ｓ５６３において、ＩＣカード２００の利用者認証部２５２は、処理装置９２１を用いて、利用者認証記憶部２２０が記憶した利用者認証データと、利用者認証復号工程Ｓ５６２で利用者認証復号部２５１が復号した利用者認証コマンドに含まれる利用者認証データとを比較する。両者が一致する場合は、認証成功である。両者が一致しない場合は、認証失敗である。
ＩＣカード２００は、処理装置９２１を用いて、利用者認証処理Ｓ４６０を終了し、認証結果に基づく処理をする。
【０１１７】
認証システム８００は、端末装置１００と、アイシーカード（ＩＣカード２００）とを有する。
上記端末装置１００は、操作入力装置９１２と、端末処理装置（処理装置９１１）と、端末通信装置（通信装置９１５）と、利用者認証入力部１２０と、カード認証受信部１９２と、端末共有鍵生成部１３５と、カード認証部１４３と、利用者認証生成部１５２と、利用者認証暗号化部１５３と、暗号化認証送信部１８２とを有する。
操作入力装置９１２は、利用者の操作を入力する。
端末処理装置（９１１）は、データを処理する。
端末通信装置（９１５）は、上記アイシーカード（２００）と通信する。
利用者認証入力部１２０は、上記操作入力装置９１２を用いて、上記利用者を認証する利用者認証データを入力する。
カード認証受信部１９２は、上記端末通信装置（９１５）を用いて、上記アイシーカード（２００）が送信したカード認証データＣ’を受信する。
端末共有鍵生成部１３５は、上記端末処理装置（９１１）を用いて、上記アイシーカード（２００）と共有する共有鍵（端末共有鍵Ｋ）を生成する。
カード認証部１４３は、上記端末処理装置（９１１）を用いて、上記利用者認証入力部１２０が入力した利用者認証データと、上記端末共有鍵生成部１３５が生成した共有鍵Ｋと、上記カード認証受信部１９２が受信したカード認証データＣ’とに基づいて、上記アイシーカード（２００）を認証する。
利用者認証生成部１５２は、上記カード認証部１４３が上記アイシーカード（２００）の認証に成功した場合に、上記端末処理装置（９１１）を用いて、上記利用者認証入力部１２０が入力した利用者認証データに基づいて、上記アイシーカード（２００）に対して上記利用者の認証を要求する利用者認証コマンドを生成する。
利用者認証暗号化部１５３は、上記端末処理装置（９１１）を用いて、上記利用者認証生成部１５２が生成した利用者認証コマンドを、上記端末共有鍵生成部１３５が生成した共有鍵Ｋで暗号化して、暗号化認証コマンドを生成する。
暗号化認証送信部１８２は、上記端末通信装置（９１５）を用いて、上記利用者認証暗号化部１５３が生成した暗号化認証コマンドを上記アイシーカード（２００）に対して送信する。
【０１１８】
上記アイシーカード（２００）は、カード記憶装置（記憶装置９２４）と、カード処理装置（処理装置９２１）と、カード通信装置（通信装置９２５）と、利用者認証記憶部２２０と、カード共有鍵生成部２３５と、カード認証生成部２４２と、カード認証送信部２９２と、暗号化認証受信部２８２と、利用者認証復号部２５１と、利用者認証部２５２とを有する。
カード記憶装置（９２４）は、データを記憶する。
カード処理装置（９２１）は、データを処理する。
カード通信装置（９２５）は、上記端末装置１００と通信する。
利用者認証記憶部２２０は、上記カード記憶装置（９２４）を用いて、利用者を認証する利用者認証データを記憶する。
カード共有鍵生成部２３５は、上記カード処理装置（９２１）を用いて、上記端末装置１００と共有する共有鍵（カード共有鍵Ｋ）を生成する。
カード認証生成部２４２は、上記カード処理装置（９２１）を用いて、上記利用者認証記憶部２２０が記憶した利用者認証データと、上記カード共有鍵生成部２３５が生成した共有鍵Ｋとに基づいて、カード認証データＣ’を生成する。
カード認証送信部２９２は、上記カード通信装置（９２５）を用いて、上記カード認証生成部２４２が生成したカード認証データＣ’を上記端末装置１００に対して送信する。
暗号化認証受信部２８２は、上記カード通信装置（９２５）を用いて、上記端末装置１００が送信した暗号化認証コマンドを受信する。
利用者認証復号部２５１は、上記カード処理装置（９２１）を用いて、上記暗号化認証受信部２８２が受信した暗号化認証コマンドを、上記カード共有鍵生成部２３５が生成した共有鍵Ｋで復号して、利用者認証コマンドを生成する。
利用者認証部２５２は、上記カード処理装置（９２１）を用いて、上記利用者認証記憶部２２０が記憶した利用者認証データと、上記利用者認証復号部２５１が生成した利用者認証コマンドとに基づいて、利用者を認証する。
【０１１９】
利用者認証暗号化部１５３が暗号化した暗号化利用者認証コマンドをＩＣカード２００に対して送信するので、端末装置１００とＩＣカード２００との間の通信を第三者が傍受して暗号化利用者認証コマンドを入手したとしても、そこから利用者認証データを入手することはできない。
端末共有鍵生成部１３５とカード共有鍵生成部２３５とが、端末装置１００とＩＣカード２００とで共有する共有鍵Ｋを生成するので、利用者認証暗号化部１５３が暗号化した暗号化利用者認証コマンドを、利用者認証復号部２５１が正しく復号できる。
暗号化利用者認証コマンドを送信する前に、ＩＣカード２００を認証して、偽物でないかを判定するので、偽物のＩＣカードを介して、利用者認証データが漏洩するのを防ぐことができる。
ＩＣカード２００の認証に用いるカード認証データＣ’は、利用者認証記憶部２２０が記憶した利用者認証データと、カード共有鍵生成部２３５が共有した共有鍵Ｋとに基づいて生成する。これにより、利用者認証記憶部２２０が記憶した利用者認証データと、利用者認証入力部１２０が入力した利用者認証データとが一致するか否かを検証できる。また、端末装置１００とＩＣカード２００との間の通信を第三者が傍受してカード認証データＣ’を入手したとしても、共通鍵Ｋを知らなければ、そこから利用者識別データを入手することはできない。
【０１２０】
端末装置１００は、ダミー認証生成部１５１を有する。
ダミー認証生成部１５１は、上記カード認証部１４３が上記アイシーカード（２００）の認証に失敗した場合に、上記端末処理装置（９１１）を用いて、ダミーの利用者認証データをランダムに生成する。
利用者認証生成部１５２は、上記カード認証部１４３が上記アイシーカード（２００）の認証に失敗した場合に、上記端末処理装置（９１１）を用いて、上記ダミー認証生成部１５１が生成した利用者認証データに基づいて、上記利用者認証コマンドを生成する。
【０１２１】
ＩＣカード２００の認証に失敗した場合に、ダミーの利用者認証データを含む利用者認証コマンドを生成するので、偽物のＩＣカードを介して、利用者認証データが漏洩するのを防ぐことができる。また、ＩＣカード２００が本物である場合には、利用者の認証失敗によるロック機能を働かせることができるので、盗まれたＩＣカード２００から利用者認証データが漏洩するのを防ぐことができる。
【０１２２】
端末装置１００は、端末乱数生成部１３３と、端末鍵要素生成部１３４と、端末鍵要素送信部１８１と、カード鍵要素受信部１９１とを有する。
端末乱数生成部１３３は、上記端末処理装置（９１１）を用いて、乱数（端末乱数ａ）を生成する。
端末鍵要素生成部１３４は、上記端末処理装置（９１１）を用いて、上記端末乱数生成部１３３が生成した乱数ａに基づいて、上記共有鍵Ｋのもととなる鍵要素（端末鍵要素Ａ）を生成する。
端末鍵要素送信部１８１は、上記端末通信装置（９１５）を用いて、上記端末鍵要素生成部１３４が生成した鍵要素Ａを、上記アイシーカード（２００）に対して送信する。
カード鍵要素受信部１９１は、上記端末通信装置（９１５）を用いて、上記アイシーカード（２００）が送信した鍵要素（カード鍵要素Ｂ）を受信する。
端末共有鍵生成部１３５は、上記端末処理装置（９１１）を用いて、上記端末乱数生成部１３３が生成した乱数ａと、上記カード鍵要素受信部１９１が受信した鍵要素Ｂとに基づいて、上記共有鍵Ｋを生成する。
【０１２３】
アイシーカード（２００）は、端末鍵要素受信部２８１と、カード乱数生成部２３３と、カード鍵要素生成部２３４と、カード鍵要素送信部２９１とを有する。
端末鍵要素受信部２８１は、上記カード通信装置（９２５）を用いて、上記端末装置１００が送信した鍵要素（端末鍵要素Ａ）を受信する。
カード乱数生成部２３３は、上記カード処理装置（９２１）を用いて、乱数（カード乱数ｂ）を生成する。
カード鍵要素生成部２３４は、上記カード処理装置（９２１）を用いて、上記カード乱数生成部２３３が生成した乱数ｂに基づいて、上記共有鍵Ｋのもととなる鍵要素（カード鍵要素Ｂ）を生成する。
カード鍵要素受信部１９１は、上記カード通信装置（９２５）を用いて、上記カード鍵要素生成部２３４が生成した鍵要素Ｂを上記端末装置１００に対して送信する。
カード共有鍵生成部２３５は、上記カード処理装置（９２１）を用いて、上記端末鍵要素受信部２８１が受信した鍵要素Ａと、上記カード乱数生成部２３３が生成した乱数ｂとに基づいて、上記共有鍵Ｋを生成する。
【０１２４】
端末装置１００とＩＣカード２００とが、ＤＨ鍵共有方式を用いて共有鍵Ｋを共有するので、端末装置１００とＩＣカード２００とが秘密の情報をあらかじめ共有しておく必要がない。また、端末装置１００とＩＣカード２００との間の通信を第三者が傍受して、鍵要素Ａと鍵要素Ｂとを入手したとしても、そこから共有鍵Ｋを入手することはできない。
【０１２５】
なお、端末装置１００とＩＣカード２００とが共有鍵Ｋを共有する方式は、ＤＨ鍵共有方式に限らず、他の方式であってもよい。
【０１２６】
例えば、あらかじめ定めた秘密の共有鍵Ｋを、端末装置１００およびＩＣカード２００が、それぞれ、あらかじめ記憶しておく構成であってもよい。このような構成は、端末装置１００とＩＣカード２００との組み合わせが限定されている場合に有効である。端末装置１００とＩＣカード２００との組み合わせが限定されている場合には、例えば、端末装置１００が、ある会社のＬＡＮに接続された複数の端末装置１００であり、ＩＣカード２００が、その会社の社員の社員証である場合などである。しかし、端末装置１００が街頭など公衆の利用に供する場所に設置されものである場合など、端末装置１００とＩＣカード２００との組み合わせが限定されていない場合には、あらかじめ共有鍵Ｋを共有しておくことは困難である。また、共有鍵Ｋの秘密を保つことが難しく、第三者に漏洩する可能性が高くなる。このため、共有鍵Ｋをあらかじめ共有しておくのではなく、通信のたびに新しい共有鍵Ｋを生成して共有する方式のほうが望ましい。
【０１２７】
また、端末装置１００またはＩＣカード２００が共有鍵Ｋをランダムに生成し、公開鍵暗号方式などを用いて暗号化して、他方に送信することにより、共有鍵Ｋを共有する構成であってもよい。しかし、公開鍵暗号方式における暗号処理は、公開鍵証明書の検証が必要となるなど、必要な計算量が多い。一般に、ＩＣカード２００の処理装置９２１は、データ処理能力が低いので、共有鍵Ｋを共有するための計算量が多いと、共有鍵Ｋの共有だけで時間がかかってしまうことになる。このため、ＤＨ鍵共有方式のように比較的少ない計算量で、共有鍵Ｋを共有できる方式のほうが望ましい。
【０１２８】
また、端末装置１００とＩＣカード２００とが利用者識別データを共有していることを利用して共有鍵Ｋを共有する構成としてもよい。例えば、端末装置１００及びＩＣカード２００は、利用者識別データに基づいて、仮の共有鍵を生成する。端末装置１００またはＩＣカード２００は、正規の共有鍵Ｋをランダムに生成し、仮の共有鍵で暗号化して、他方に送信する。端末装置１００が入力した利用者識別データと、ＩＣカード２００が記憶している利用者識別データとが一致していれば、暗号化された共有鍵Ｋを正しく復号することができるので、端末装置１００とＩＣカード２００とが共有鍵Ｋを共有することができる。逆に、端末装置１００が入力した利用者識別データと、ＩＣカード２００が記憶している利用者識別データとが一致しない場合は、共有鍵Ｋの共有に失敗する。このため、ＩＣカード２００は、端末装置１００が送信した暗号化利用者認証コマンドを正しく復号できない。ＩＣカード２００が偽物にすり替えられている場合、偽物のＩＣカードは、そのことをもって認証に失敗したことを知ることができる。これを手がかりにすることにより、第三者に利用者認証データが漏洩する可能性がある。逆に、利用者が偽物である場合には、ＩＣカード２００のロック機能を利用してロックさせることができなくなる。このため、共有鍵Ｋの共有には、利用者認証データを使用しない方式のほうが望ましい。
【０１２９】
アイシーカード（２００）は、上記カード認証送信部２９２が送信するカード認証データＣ’と、上記カード鍵要素送信部２９１が送信する鍵要素Ｂとを、１つのメッセージ（認証開始応答メッセージ）として送信する。
【０１３０】
端末装置（１００）は、上記カード認証受信部１９２が受信するカード認証データＣ’と、上記カード鍵要素受信部１９１が受信する鍵要素Ｂとを１つのメッセージ（認証開始応答メッセージ）として受信する。
【０１３１】
これにより、認証のために必要となる通信は、３回で済む。すなわち、まず、端末装置１００がＩＣカード２００に対して認証開始メッセージ（鍵要素Ａ）を送信する。次に、ＩＣカード２００が端末装置１００に対して認証開始応答メッセージ（鍵要素Ｂおよびカード認証データＣ’）を送信する。最後に、端末装置１００がＩＣカード２００に対して暗号化利用者認証コマンドを送信する。一般に、ＩＣカード２００の通信装置９２５は、通信速度が遅いので、通信の回数やデータ量が多いと、通信に時間がかかる。認証のために必要な通信の回数を３回に抑えることにより、認証にかかる時間を短縮し、ＩＣカード２００を用いた本来の処理を早く開始することができる。
【０１３２】
アイシーカード（２００）のカード認証生成部２４２は、上記カード処理装置（９２１）を用いて、上記利用者認証記憶部２２０が記憶した利用者認証データと上記カード共有鍵生成部２３５が生成した共有鍵Ｋとを所定の一方向性関数（ハッシュ関数Ｈ２）の入力とし、上記カード認証データＣ’として、上記一方向性関数の値を算出する。
端末装置（１００）は、端末認証生成部１４２を有する。
端末認証生成部１４２は、上記端末処理装置（９１１）を用いて、上記利用者認証入力部１２０が入力した利用者認証データと上記端末共有鍵生成部１３５が生成した共有鍵Ｋとを上記一方向性関数Ｈ２の入力とし、カード検証データＣとして、上記一方向性関数Ｈ２の値を算出する。
上記カード認証部１４３は、上記端末処理装置（９１１）を用いて、上記端末認証生成部１４２が生成したカード検証データＣと、上記カード認証受信部１９２が受信したカード認証データＣ’とを比較して、一致する場合に、上記アイシーカード（２００）の認証に成功したと判定する。
【０１３３】
一方向性関数の値をカード認証データとするので、端末装置１００とＩＣカード２００との間の通信を第三者が傍受してカード認証データを入手したとしても、そこから利用者認証データや共有鍵Ｋを入手することはできない。
また、利用者認証データだけでなく、共有鍵Ｋも一方向性関数の入力とするので、総当たり攻撃に対する耐性が高くなる。例えば、利用者認証情報が４桁の暗証番号である場合、利用者認証データは、高々１万個のデータのうちのいずれかである。これに対し、共有鍵Ｋは、（上述したＤＨ鍵共有方式の場合、ｐ−１個のデータのうちのいずれかなので、利用者認証データと共有鍵Ｋとの組み合わせは、（ｐ−１）×１万通りである。一方向性関数の入力が高々１万通りしかなければ、すべての入力に対して一方向性関数の値をあらかじめ算出しておき、一致する値を探すことにより、一方向性関数の入力を求めることができる。これに対し、素数ｐが十分大きければ、（ｐ−１）×１万通りの入力に対して一方向性関数の値をあらじめ算出しておくことは、事実上不可能だから、利用者認証データや共通鍵Ｋの秘密を保つことができる。
【０１３４】
端末装置１００は、コンピュータを端末装置１００として機能させるコンピュータプログラムにより実現することができる。また、ＩＣカード２００は、ＩＣカードに上記機能を持たせるプログラムにより実現することができる。
これにより、上述した効果を奏する端末装置１００およびＩＣカード２００および認証システム８００を実現することができる。
【０１３５】
認証システム８００における認証方法は、以下の工程を有する。
あらかじめ、アイシーカード（２００）が、利用者認証記憶部２２０として、利用者を認証する利用者認証データを記憶する。
利用者認証入力工程Ｓ４１０において、端末装置１００が、利用者認証入力部１２０として、利用者の操作に基づいて、上記利用者を認証する利用者認証データを入力する。
カード共有鍵生成工程Ｓ５２４において、アイシーカード（２００）が、カード共有鍵生成部２３５として、上記端末装置１００と共有する共有鍵Ｋを生成する。
カード認証生成工程Ｓ５４２において、アイシーカード（２００）が、カード認証生成部２４２として、上記利用者認証記憶部２２０が記憶した利用者認証データと、上記カード共有鍵生成部２３５が生成した共有鍵Ｋとに基づいて、カード認証データＣ’を生成する。
メッセージ送信工程Ｓ５３１において、アイシーカード（２００）が、カード認証送信部２９２として、上記カード認証生成部２４２が生成したカード認証データＣ’を上記端末装置１００に対して送信する。
メッセージ受信工程Ｓ４３１において、端末装置１００が、カード認証受信部１９２として、上記アイシーカード（２００）が送信したカード認証データＣ’を受信する。
端末共有鍵生成工程Ｓ４２４において、端末装置１００が、端末共有鍵生成部１３５として、上記アイシーカード（２００）と共有する共有鍵Ｋを生成する。
カード認証工程Ｓ４４３において、端末装置１００が、カード認証部１４３として、上記利用者認証入力部１２０が入力した利用者認証データと、上記端末共有鍵生成部１３５が生成した共有鍵Ｋと、上記カード認証受信部１９２が受信したカード認証データＣ’とに基づいて、上記アイシーカードを認証する。
利用者認証生成工程Ｓ４６１ににおいて、上記カード認証部１４３が上記アイシーカード（２００）の認証に成功した場合に、端末装置１００が、利用者認証生成部１５２として、上記利用者認証入力部１２０が入力した利用者認証データに基づいて、上記アイシーカード（２００）に対して上記利用者の認証を要求する利用者認証コマンドを生成する。
利用者認証暗号化工程Ｓ４６２において、端末装置１００が、利用者認証暗号化部１５３として、上記利用者認証生成部１５２が生成した利用者認証コマンドを、上記端末共有鍵生成部１３５が生成した共有鍵Ｋで暗号化して、暗号化認証コマンドを生成する。
暗号化認証送信工程Ｓ４６３において、端末装置１００が、暗号化認証送信部１８２として、上記利用者認証暗号化部１５３が生成した暗号化認証コマンドを上記アイシーカード（２００）に対して送信する。
暗号化認証受信工程Ｓ５６１において、アイシーカード（２００）が、暗号化認証受信部２８２として、上記端末装置１００が送信した暗号化認証コマンドを受信する。
利用者認証復号工程Ｓ５６２において、アイシーカード（２００）が、利用者認証復号部２５１として、上記暗号化認証受信部２８２が受信した暗号化認証コマンドを、上記カード共有鍵生成部２３５が生成した共有鍵Ｋで復号して、利用者認証コマンドを生成する。
利用者認証工程Ｓ５６３において、アイシーカード（２００）が、利用者認証部２５２として、上記利用者認証記憶部２２０が記憶した利用者認証データと、上記利用者認証復号部２５１が生成した利用者認証コマンドとに基づいて、利用者を認証する。
【０１３６】
利用者認証暗号化部１５３が暗号化した暗号化利用者認証コマンドをＩＣカード２００に対して送信するので、端末装置１００とＩＣカード２００との間の通信を第三者が傍受して暗号化利用者認証コマンドを入手したとしても、そこから利用者認証データを入手することはできない。
端末共有鍵生成部１３５とカード共有鍵生成部２３５とが、端末装置１００とＩＣカード２００とで共有する共有鍵Ｋを生成するので、利用者認証暗号化部１５３が暗号化した暗号化利用者認証コマンドを、利用者認証復号部２５１が正しく復号できる。
暗号化利用者認証コマンドを送信する前に、ＩＣカード２００を認証して、偽物でないかを判定するので、偽物のＩＣカードを介して、利用者認証データが漏洩するのを防ぐことができる。
ＩＣカード２００の認証に用いるカード認証データＣ’は、利用者認証記憶部２２０が記憶した利用者認証データと、カード共有鍵生成部２３５が共有した共有鍵Ｋとに基づいて生成する。これにより、利用者認証記憶部２２０が記憶した利用者認証データと、利用者認証入力部１２０が入力した利用者認証データとが一致するか否かを検証できる。また、端末装置１００とＩＣカード２００との間の通信を第三者が傍受してカード認証データを入手したとしても、共通鍵Ｋを知らなければ、そこから利用者識別データを入手することはできない。
【０１３７】
なお、カード認証部１４３がＩＣカード２００の認証に失敗し、ダミー認証生成部１５１が生成したダミーの利用者認証データを含む利用者認証コマンドを、ＩＣカード２００に対して送信した場合でも、利用者の認証に成功する場合がある。例えば、ＩＣカード２００が偽物にすり替えられている場合、偽物のＩＣカードは、本当の利用者認証データを知らないので、本物のＩＣカード２００を偽装するため、利用者の認証に成功したことにして処理を続ける可能性がある。また、ＩＣカード２００が本物である場合、ごく稀に、ダミー認証生成部１５１が生成したダミーの利用者認証データが、本当の利用者認証データと一致して認証を通る可能性がある。
このような事態を防ぐため、端末装置１００は、カード認証部１４３がＩＣカード２００の認証に失敗した場合、切断コマンドをＩＣカード２００に対して送信する構成としてもよい。例えば、端末装置１００は、切断コマンド生成部と、切断コマンド送信部とを有する。切断コマンド生成部は、カード認証部１４３がＩＣカード２００の認証に失敗した場合、処理装置９１１を用いて、セッションを切断する切断コマンドを生成する。切断コマンド送信部は、暗号化認証送信部１８２が暗号化利用者認証コマンドを送信したのち、通信装置９１５を用いて、切断コマンド生成部が生成した切断コマンドをＩＣカード２００に対して送信する。
通常であれば、ＩＣカード２００は、暗号化利用者認証コマンドによる利用者の認証に失敗するので、切断コマンドは無視される。
ＩＣカード２００が利用者の認証に成功した場合、セッションが確立される。しかし、その後すぐに送信される切断コマンドにより、ＩＣカード２００は、セッションを切断する。
なお、切断コマンドを共有鍵Ｋにより暗号化する構成であってもよい。
【符号の説明】
【０１３８】
１００  端末装置、１０１  ＰＩＮ情報入力部、１０２  端末側鍵共有部、１０３  端末乱数生成部、１０４  端末鍵要素生成部、１０５，２０５  共有鍵生成部、１０６  カード検証部、１０７，１１４，２０７，２１５  ＰＩＮ情報ハッシュ部、１０８，１１５，２０８，２１６  マック値算出部、１０９，２１７  認証情報比較部、１１０  端末側通信部、１１１  ｖｅｒｉｆｙＰＩＮコマンド化部、１１２  暗号化部、１１３  端末認証情報生成部、１２０  利用者認証入力部、１３０，２３０  鍵共有部、１３１，２３１  法記憶部、１３２，２３２  原始根記憶部、１３３  端末乱数生成部、１３４  端末鍵要素生成部、１３５  端末共有鍵生成部、１４０  カード検証部、１４１  端末認証ハッシュ部、１４２  端末認証生成部、１４３  カード認証部、１５１  ダミー認証生成部、１５２  利用者認証生成部、１５３  利用者認証暗号化部、１８１  端末鍵要素送信部、１８２  暗号化認証送信部、１９０  メッセージ受信部、１９１  カード鍵要素受信部、１９２  カード認証受信部、２００  ＩＣカード、２０１  ＰＩＮ情報記憶部、２０２  カード側鍵共有部、２０３  カード乱数生成部、２０４  カード鍵要素生成部、２０６  カード認証情報生成部、２１０  カード側通信部、２１１  復号部、２１２  ＩＣカード処理部、２１３  端末用乱数生成部、２１４  端末検証部、２２０  利用者認証記憶部、２３３  カード乱数生成部、２３４  カード鍵要素生成部、２３５  カード共有鍵生成部、２４０  認証情報生成部、２４１  カード認証ハッシュ部、２４２  カード認証生成部、２５１  利用者認証復号部、２５２  利用者認証部、２８１  端末鍵要素受信部、２８２  暗号化認証受信部、２９０  メッセージ送信部、２９１  カード鍵要素送信部、２９２  カード認証送信部、７１１，７１２  ＰＩＮ情報、７２１  端末乱数、７２２  端末鍵要素、７２３  カード乱数、７２４  カード鍵要素、７２５，７２６  共有鍵、７３０，７４０  メッセージ、７３２  カード認証情報、７３５  カード検証結果、７４１，７４３  ｖｅｒｉｆｙＰＩＮコマンド、７４２  暗号済ｖｅｒｉｆｙＰＩＮコマンド、７５１  端末用乱数、７５４  端末認証情報、７５８  端末検証結果、８００  認証システム、８０１  ユーザ、８１０  カードＲ／Ｗ、９１１，９２１  処理装置、９１２  操作入力装置、９１３  出力装置、９１４，９２４  記憶装置、９１５，９２５  通信装置。
【図１】
0005478364.tif 000002
【図２】
0005478364.tif 000003
【図３】
0005478364.tif 000004
【図４】
0005478364.tif 000005
【図５】
0005478364.tif 000006
【図６】
0005478364.tif 000007
【図７】
0005478364.tif 000008
【図８】
0005478364.tif 000009
【図９】
0005478364.tif 000010
【図１０】
0005478364.tif 000011