(57)【要約】【課題】ＩＣカード間のバリュー転送に共通鍵暗号方式を用いた場合に、バリュー転送で使用する暗号鍵を容易に更新可能にすることで、システム全体のセキュリティを向上できるＩＣカードおよび決済端末を提供することを目的とする。【解決手段】上記目的を達成するために本発明のＩＣカードは、他のＩＣカードと価値データを送受信するＩＣカードであって、該価値データと、該価値データを更新するために用いる転送鍵と、該転送鍵を更新するために用いる更新鍵と、を蓄積する情報蓄積手段と、該他のＩＣカードから送信された、該更新鍵を用いて暗号化された転送鍵を受信する通信手段と、該暗号化された転送鍵を該更新鍵を用いて復号化し、該復号化した転送鍵により該情報蓄積手段に蓄積されている転送鍵を更新する演算処理手段と、を備えることを特徴とする。【選択図】図１
2004062556.tif 000002
【特許請求の範囲】
【請求項１】
外部と通信する通信手段と、データやプログラムを蓄積する情報蓄積手段と、情報処理を行う演算処理手段を有するＩＣカードにおいて、
前記情報蓄積手段は、価値データと、前記価値データを更新するために使用する転送鍵と、前記転送鍵の新旧を値の大小で識別する転送鍵識別子と、前記転送鍵を更新するために使用する更新鍵と、前記ＩＣカードが格納可能な前記転送鍵識別子の上限値を表す転送鍵識別子上限値を保存し、
前記演算処理手段は、前記更新鍵を用い、共通鍵暗号方式に基づいた暗号処理を行うことで、前記転送鍵識別子と前記転送鍵を更新する処理を行い、
その後、前記転送鍵を用い、共通鍵暗号方式に基づいた暗号処理を行うことで、前記価値データを更新する処理を行うことを特徴とするＩＣカード。
【請求項２】
前記演算処理手段は、
カード情報の送信を要求するコマンドデータを受信した時は、前記転送鍵識別子を、レスポンスデータとして外部に送信する処理を行い、
前記転送鍵の更新許可を要求するコマンドデータを受信した時は、第１の乱数を生成して、前記第１の乱数をレスポンスデータとして外部に送信する処理を行い、
前記転送鍵の取得を要求し、第２の乱数を格納しているコマンドデータを受信した時は、前記第２の乱数と、前記転送鍵識別子と、前記転送鍵を、共通鍵暗号方式に基づき、前記更新鍵で暗号化した、第１の暗号化データを、レスポンスデータとして外部に送信を行い、
前記転送鍵の更新を要求し、第２の暗号化データを格納しているコマンドデータを受信した時は、前記第２の暗号化データを、共通鍵暗号方式に基づき、前記更新鍵で復号化して、第１のデータと、第２のデータと、第３のデータを抽出し、前記第１のデータが前記第１の乱数と等しく、且つ、前記第２のデータの値が、前記転送鍵識別子上限値と前記転送鍵の値の間に含まれるならば、前記転送鍵識別子の値を前記第２のデータの値に書き換えるとともに、前記転送鍵の値を前記第３のデータの値に書き換える処理を行うことを特徴とする請求項１記載のＩＣカード。
【請求項３】
外部と通信する通信手段と、データやプログラムを蓄積する情報蓄積手段と、情報処理を行う演算処理手段を有するＩＣカードにおいて、
前記情報蓄積手段は、価値データと、前記価値データを更新するために使用する転送鍵と、前記転送鍵の新旧を値の大小で識別する転送鍵識別子と、前記転送鍵を更新するために使用する第１の公開鍵を含んだ第１の公開鍵証明書と、前記第１の公開鍵に対応した秘密鍵と、前記ＩＣカードが格納可能な前記転送鍵識別子の上限値を表す転送鍵識別子上限値を保存し、
前記演算処理手段は、前記第１の公開鍵証明書と前記秘密鍵を用いて、公開鍵暗号方式に基づいた暗号処理を行うことで、前記転送鍵識別子と前記転送鍵を更新する処理を行い、
その後、前記転送鍵を用い、共通鍵暗号方式に基づいた暗号処理を行うことで、前記価値データを更新する処理を行うことを特徴とするＩＣカード。
【請求項４】
前記演算処理手段は、
カード情報の送信を要求するコマンドデータを受信した時は、前記転送鍵識別子と、前記第１の公開鍵証明書を、レスポンスデータとして外部に送信する処理を行い、
前記転送鍵の更新許可を要求し、第２の公開鍵を含んだ第２の公開鍵証明書を格納しているコマンドデータを受信した時は、第１の乱数を生成して、前記第１の乱数をレスポンスデータとして外部に送信する処理を行い、
前記転送鍵の取得を要求し、第３の公開鍵を含んだ第３の公開鍵証明書と、第２の乱数を格納しているコマンドデータを受信した時は、まず、前記転送鍵識別子と、前記転送鍵を、公開鍵暗号方式に基づき、前記第３の公開鍵で暗号化した第１の暗号化データを作成し、次に、前記第１の暗号化データと、前記第２の乱数から、公開鍵暗号方式に基づき、前記秘密鍵で、第１のデジタル署名データを作成し、最後に、前記第１の暗号化データと、前記第１のデジタル署名データを、レスポンスデータとして外部に送信する処理を行い、
前記転送鍵の更新を要求し、第２の暗号化データと、第２のデジタル署名データを格納しているコマンドデータを受信した時は、まず、前記第２のデジタル署名データを、公開鍵暗号方式に基づき、前記第２の公開鍵で検証し、次に、前記第２の暗号化データを、公開鍵暗号方式に基づき、前記秘密鍵で復号化して、第１のデータと、第２のデータを抽出し、最後に、前記第１のデータの値が、前記転送鍵識別子上限値と前記転送鍵の値との間に含まれるならば、前記転送鍵識別子の値を前記第１のデータの値に書き換えるとともに、前記転送鍵の値を前記第２のデータの値に書き換える処理を行うことを特徴とする請求項３記載のＩＣカード。
【請求項５】
外部と通信する通信手段と、データやプログラムを蓄積する情報蓄積手段と、情報処理を行う演算処理手段を有するＩＣカードにおいて、
前記情報蓄積手段は、価値データと、前記価値データを更新するために使用する転送鍵と、前記転送鍵の新旧を値の大小で識別する転送鍵識別子と、前記転送鍵を更新するために使用する更新鍵と、前記更新鍵の新旧を値の大小で識別する更新鍵識別子と、前記転送鍵を更新するために使用する第１の公開鍵を含んだ第１の公開鍵証明書と、前記第１の公開鍵に対応した秘密鍵と、前記ＩＣカードが格納可能な前記転送鍵識別子の上限値を表す転送鍵識別子上限値を保存し、
前記演算処理手段は、前記更新鍵を用い、共通鍵暗号方式に基づき、前記転送鍵の更新を行うか、
あるいは、前記第１の公開鍵証明書と前記秘密鍵を用い、共通鍵暗号方式に基づき、前記転送鍵の更新を行い、
その後、前記転送鍵を用い、共通鍵暗号方式に基づいた暗号処理を行うことで、前記価値データを更新する処理を行うことを特徴とするＩＣカード。
【請求項６】
前記演算処理手段は、
カード情報の送信を要求するコマンドデータを受信した時は、前記転送鍵識別子と、前記更新鍵識別子と、第１の前記公開鍵証明書を、レスポンスデータとして外部に送信する処理を行い、
前記転送鍵の更新許可を要求するコマンドデータを受信した時は、第１の乱数を生成して、前記第１の乱数をレスポンスデータとして外部に送信する処理を行い、
前記転送鍵の取得を要求し、第２の乱数を格納しているコマンドデータを受信した時は、前記第２の乱数と、前記転送鍵識別子と、前記転送鍵を、共通鍵暗号方式に基づき、前記更新鍵で暗号化した、第１の暗号化データを、レスポンスデータとして外部に送信する処理を行い、
前記転送鍵の更新を要求し、第２の暗号化データを格納しているコマンドデータを受信した時は、まず、前記第２の暗号化データを、共通鍵暗号方式に基づき、前記更新鍵で復号化して、第１のデータと、第２のデータと、第３のデータを抽出し、次に、前記第１のデータが前記第１の乱数と等しく、且つ、前記第２のデータの値が、前記転送鍵識別子上限値と前記転送鍵の値との間に含まれるならば、前記転送鍵識別子の値を前記第２のデータの値に書き換えるとともに、前記転送鍵の値を前記第３のデータの値に書き換える処理を行うことを特徴とする請求項５記載のＩＣカード。
【請求項７】
前記演算処理手段は、
カード情報の送信を要求するコマンドデータを受信した時は、前記転送鍵識別子と、前記更新鍵識別子と、前記第１の公開鍵証明書を、レスポンスデータとして外部に送信する処理を行い、
前記転送鍵の更新許可を要求し、第２の公開鍵を含んだ第２の公開鍵証明書を格納しているコマンドデータを受信した時は、第１の乱数を生成して、前記第１の乱数をレスポンスデータとして外部に送信する処理を行い、
前記転送鍵の取得を要求し、第３の公開鍵を含んだ第３の公開鍵証明書と、第２の乱数を格納しているコマンドデータを受信した時は、まず、前記転送鍵識別子と、前記転送鍵を、公開鍵暗号方式に基づき、前記第３の公開鍵で暗号化した第１の暗号化データを作成し、次に、前記第１の暗号化データと、前記第２の乱数から、公開鍵暗号方式に基づき、前記秘密鍵で、第１のデジタル署名データを作成し、最後に、前記第１の暗号化データと、前記第１のデジタル署名データを、レスポンスデータとして外部に送信する処理を行い、
前記転送鍵の更新を要求し、第２の暗号化データと、第２のデジタル署名データを格納しているコマンドデータを受信した時は、まず、前記第２のデジタル署名データを、公開鍵暗号方式に基づき、前記第２の公開鍵で検証し、次に、前記第２の暗号化データを、公開鍵暗号方式に基づき、前記秘密鍵で復号化して、第１のデータと、第２のデータを抽出し、最後に、前記第１のデータの値が、前記転送鍵識別子上限値と前記転送鍵の値との間に含まれるならば、前記転送鍵識別子の値を前記第１のデータの値に書き換えるとともに、前記転送鍵の値を前記第２のデータの値に書き換える処理を行うことを特徴とする請求項５記載のＩＣカード。
【請求項８】
外部と通信する通信手段と、データやプログラムを蓄積する情報蓄積手段と、情報処理を行う演算処理手段を有するＩＣカードにおいて、
前記情報蓄積手段は、価値データと、前記価値データを更新するために使用する１個以上の転送鍵と、
現在選択している前記転送鍵を識別する選択転送鍵識別子と、前記転送鍵を更新するために使用する更新鍵を保存し、
前記演算処理手段は、前記更新鍵を用い、共通鍵暗号方式に基づいた暗号処理を行うことで、前記選択転送鍵識別子を更新する処理を行い、
その後、前記転送鍵を用い、共通鍵暗号方式に基づいた暗号処理を行うことで、前記価値データを更新する処理を行うことを特徴とするＩＣカード。
【請求項９】
前記演算処理手段において、
カード情報の送信を要求するコマンドデータを受信した時は、前記選択転送鍵識別子を、レスポンスデータとして外部に送信する処理を行い、
前記転送鍵の更新許可を要求するコマンドデータを受信した時は、第１の乱数を生成して、前記第１の乱数をレスポンスデータとして外部に送信する処理を行い、
前記転送鍵の取得を要求し、第２の乱数を格納しているコマンドデータを受信した時は、前記第２の乱数と、前記選択転送鍵識別子と、前記転送鍵を、共通鍵暗号方式に基づき、前記更新鍵で暗号化した、第１の暗号化データを、レスポンスデータとして外部に送信を行い、
前記転送鍵の更新を要求し、第２の暗号化データを格納しているコマンドデータを受信した時は、前記第２の暗号化データを、共通鍵暗号方式に基づき、前記更新鍵で復号化して、第１のデータと、第２のデータと、第３のデータを抽出し、前記第１のデータが前記第１の乱数と等しく、且つ、前記第２のデータの値が、全ての前記転送鍵識別子のいずれかの値と等しいならば、前記選択転送鍵識別子の値を前記第２のデータの値に書き換える処理を行うことを特徴とする請求項８記載のＩＣカード。
【請求項１０】
第１の価値データを内部に保持している第１のＩＣカードと通信する機能を有する第１のカード読書き手段と、第２の価値データを内部に保持している第２のＩＣカードと通信する機能を有する第２のカード読書き手段と、前記第１のＩＣカードと、前記第２のＩＣカードとの間で、前記第１のＩＣカードが保持している第１の転送鍵と、前記第２のＩＣカードが保持している第２の転送鍵とを用いて、共通鍵暗号方式に基づいた暗号処理を行うことで、前記第１の価値データと前記第２の価値データの更新処理を行う演算処理手段を有する決済端末において、
前記演算処理手段は、
前記第１の転送鍵の新旧を値の大小で表す第１の転送鍵識別子を、前記第１のＩＣカードから取得するとともに、前記第２の転送鍵の新旧を値の大小で表す第２の転送鍵識別子を、前記第２のＩＣカードから取得し、
その後、前記第１の転送鍵識別子の値と前記第２の転送鍵識別子の値を比較し、値が異なっていたら、前記第１のＩＣカードが保持している前記転送鍵の値と前記第２のＩＣカードが保持している前記転送鍵の値のいずれかを、共通鍵暗号方式に基づいて更新する処理を行い、その後、共通鍵暗号方式に基づき前記価値データの更新処理を行うことを特徴とする決済端末。
【請求項１１】
前記演算処理手段は、
前記第１のＩＣカードから乱数を取得する処理を行い、
次に、前記乱数を前記第２のＩＣカードに送信後、前記乱数と、前記第２の転送鍵識別子と、前記第２の転送鍵とを、共通鍵暗号化式に基づいて暗号化した、暗号化データを、前記第２のＩＣカードから取得する処理を行い、
次に、前記暗号化データを、前記第１のＩＣカードに送信することで、前記第１の転送鍵識別子の値を、前記第２の転送鍵識別子の値に更新するとともに、前記第１の転送鍵の値を、前記第２の転送鍵の値に更新する処理を行うことを特徴とする請求項１０記載の決済端末。
【請求項１２】
第１の価値データを内部に保持している第１のＩＣカードと通信する機能を有する第１のカード読書き手段と、第２の価値データを内部に保持している第２のＩＣカードと通信する機能を有する第２のカード読書き手段と、前記第１のＩＣカードと、前記第２のＩＣカードとの間で、前記第１のＩＣカードが保持している第１の転送鍵と、前記第２のＩＣカードが保持している第２の転送鍵とを用いて、共通鍵暗号方式に基づいた暗号処理を行うことで、前記第１の価値データと前記第２の価値データの更新処理を行う演算処理手段を有する決済端末において、
前記演算処理手段は、前記第１の転送鍵の新旧を値の大小で表す第１の転送鍵識別子と、第１の公開鍵証明書を、前記第１のＩＣカードから取得するとともに、前記第２の転送鍵の新旧を値の大小で表す第２の転送鍵識別子と、第２の公開鍵証明書を、前記第２のＩＣカードから取得する処理を行い、
その後、前記第１の転送鍵識別子の値と前記第２の転送鍵識別子の値を比較し、値が異なっていたら、前記第１のＩＣカードが保持している前記転送鍵の値と前記第２のＩＣカードが保持している前記転送鍵の値のいずれかを、公開鍵暗号方式に基づいて更新する処理を行い、その後、共通鍵暗号方式に基づき前記価値データの更新処理を行うことを特徴とする決済端末。
【請求項１３】
前記演算処理手段は、
前記第１のＩＣカードに前記第２の公開鍵証明書を送信した後に、前記第１のＩＣカードから乱数を取得する処理を行い、
次に、前記第１の公開鍵証明書と、前記乱数を、前記第２のＩＣカードに送信後、前記第２の転送鍵識別子と、前記第２の転送鍵とを、公開鍵暗号方式に基づき、暗号化した暗号化データと、前記乱数と、前記暗号化データとから、公開鍵暗号方式に基づいて作成したデジタル署名データとを、前記第２のＩＣカードから取得する処理を行い、
次に、前記デジタル署名と、前記暗号化データを、前記第１のＩＣカードに送信することで、前記第１の転送鍵識別子の値を、前記第２の転送鍵識別子の値に更新するとともに、前記第１の転送鍵の値を、前記第２の転送鍵の値に更新する処理を行うことを特徴とする請求項１２記載の決済端末。
【請求項１４】
第１の価値データを内部に保持している第１のＩＣカードと通信する機能を有する第１のカード読書き手段と、第２の価値データを内部に保持している第２のＩＣカードと通信する機能を有する第２のカード読書き手段と、前記第１のＩＣカードと、前記第２のＩＣカードとの間で、前記第１のＩＣカードが保持している第１の転送鍵と、前記第２のＩＣカードが保持している第２の転送鍵とを用いて、共通鍵暗号方式に基づいた暗号処理を行うことで、前記第１の価値データと前記第２の価値データの更新処理を行う演算処理手段を有する決済端末において、
前記演算処理手段は、
まず、前記第１の転送鍵の新旧を値の大小で表す第１の転送鍵識別子と、前記第１の転送鍵を更新するために用いる更新鍵の新旧を値の大小で表す第１の更新鍵識別子と、第１の公開鍵証明書を、前記第１のＩＣカードから取得するとともに、前記第２の転送鍵の新旧を値の大小で表す第２の転送鍵識別子と、前記第２の転送鍵を更新するために用いる更新鍵の新旧を値の大小で表す第２の更新鍵識別子と、第２の公開鍵証明書を、前記第２のＩＣカードから取得する処理を行い、
次に、前記第１の転送鍵識別子の値と前記第２の転送鍵識別子の値が異なっていて、且つ、前記第１の更新鍵識別子の値と前記第２の更新鍵識別子の値が等しければ、前記第１のＩＣカードが保持している前記転送鍵の値と前記第２のＩＣカードが保持している前記転送鍵の値のいずれかを、共通鍵暗号方式に基づいて更新する処理を行い、
前記第１の転送鍵識別子の値と前記第２の転送鍵識別子の値が異なっていて、且つ、前記第１の更新鍵識別子の値と前記第２の更新鍵識別子の値が異なっていれば、前記第１のＩＣカードが保持している前記転送鍵の値と前記第２のＩＣカードが保持している前記転送鍵の値のいずれかを、公開鍵暗号方式に基づいて更新する処理を行い、
その後、共通鍵暗号方式に基づいて前記価値データの更新処理を行う、演算処理手段を有することを特徴とする決済端末。
【請求項１５】
前記演算処理手段は、
前記第２の転送鍵識別子の方が前記第１の転送鍵識別子より新しく、且つ、前記第１の更新鍵識別子の値と、前記第２の更新鍵識別子の値が等しければ、
まず、前記第１のＩＣカードから乱数を取得する処理を行い、
次に、前記乱数を前記第２のＩＣカードに送信後、前記乱数と、前記第２の転送鍵識別子と、前記第２の転送鍵とを、共通鍵暗号方式に基づいて暗号化した暗号化データを、前記第２のＩＣカードから取得する処理を行い、
次に、前記暗号化データを前記第１のＩＣカードに送信することで、前記第１の転送鍵識別子の値を、前記第２の転送鍵識別子の値に更新するとともに、前記第１の転送鍵の値を、前記第２の転送鍵の値に更新する処理を行うことを特徴とする請求項１４記載の決済端末。
【請求項１６】
前記演算処理手段は、
前記第２の転送鍵識別子の方が前記第１の転送鍵識別子より新しく、且つ、前記第１の更新鍵識別子の値と、前記第２の更新鍵識別子の値が異なっていれば、
まず、前記第１のＩＣカードに前記第２の公開鍵証明書を送信した後に、前記第１のＩＣカードから乱数を取得する処理を行い、
次に、前記第１の公開鍵証明書と、前記乱数を、前記第２のＩＣカードに送信後、前記第２の転送鍵識別子と、前記第２の転送鍵とを、公開鍵暗号方式に基づき、暗号化した暗号化データと、前記乱数と、前記暗号化データとから、公開鍵暗号方式に基づいて作成したデジタル署名データとを、前記第２のＩＣカードから取得する処理を行い、
次に、前記デジタル署名と、前記暗号化データを、前記第１のＩＣカードに送信することで、前記第１の転送鍵識別子の値を、前記第２の転送鍵識別子の値に更新するとともに、前記第１の転送鍵の値を、前記第２の転送鍵の値に更新する処理を行うことを特徴とする請求項１４記載の決済端末。
【請求項１７】
他のＩＣカードと価値データを送受信するＩＣカードであって、
該価値データと、該価値データを更新するために用いる転送鍵と、該転送鍵を更新するために用いる更新鍵と、を蓄積する情報蓄積手段と、
該他のＩＣカードから送信された、該更新鍵を用いて暗号化された転送鍵を受信する通信手段と、
該暗号化された転送鍵を該更新鍵を用いて復号化し、該復号化した転送鍵により該情報蓄積手段に蓄積されている転送鍵を更新する演算処理手段と、
を備えることを特徴とするＩＣカード。
【請求項１８】
他のＩＣカードと価値データを送受信するＩＣカードであって、
該価値データと、該価値データを更新するために用いる転送鍵と、該転送鍵を更新するために用いる公開鍵暗号方式の秘密鍵と、を蓄積する情報蓄積手段と、該他のＩＣカードから送信された、該秘密鍵に対応する公開鍵を用いて暗号化された転送鍵を受信する通信手段と、
該暗号化された転送鍵を該秘密鍵を用いて復号化し、該復号化した転送鍵により該情報蓄積手段に蓄積されている転送鍵を更新する演算処理手段と、
を備えることを特徴とするＩＣカード。
【請求項１９】
第１の価値データ、該第１の価値データを更新するために用いる第１の転送鍵、及び該第１の転送鍵を更新するために用いる更新鍵を蓄積している第１のＩＣカードと、第２の価値データ、該第２の価値データを更新するために用いる第２の転送鍵、及び該第２の転送鍵を更新するために用いる更新鍵を蓄積している第２のＩＣカードと、の間で該価値データを送受信する決済端末であって、
該第１の転送鍵と該第２の転送鍵とが異なる場合に、該更新鍵で暗号化された該第１の転送鍵を該第１のＩＣカードから受信する第１のカード読み書き手段と、該更新鍵で暗号化された該第１の転送鍵を含む、該第２のＩＣカードの該第２の転送鍵を該第１の転送鍵に更新することを要求する転送鍵更新要求を該第２のＩＣカードに送信する第２のカード読み書き手段と、
を備えることを特徴とする決済端末。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子マネーやポイントを扱う、ＩＣカードおよび決済端末に関する。
【０００２】
【従来の技術】
近年ＩＣカードが磁気カードに代わって広く普及しつつある。これはＩＣカードには、記憶容量が大きい、暗号処理などを行うための演算装置を備えている、容易に内部を観察できない（耐タンパ性を有している）、といった磁気カードにはない特徴があるからである。このような特徴を持ったＩＣカードを、決済システムに適用することで、磁気カードに比べてセキュリティを向上させたり、磁気カードでは実現できなかった新しいサービスを提供したりできる。
【０００３】
【発明が解決しようとする課題】
ＩＣカードを用いたサービスとして例えば、電子マネーやポイントといった価値のある値である「バリュー」をＩＣカード内に格納しておき、このバリューをＩＣカード間で転送することで、各種決済を行うことが考えられる。このような決済処理を行うためには、バリューの不正な複製や改ざんを防止できなければならない。このためには、ＩＣカードの特徴である耐タンパ性と、暗号処理を行いたＩＣカード間の通信処理が必要となる。
【０００４】
ここで、暗号処理の方式は、公開鍵暗号方式と共通鍵暗号方式とに大別される。公開鍵方式は、通信を行う両者の間で暗号鍵を共有していなくても、暗号通信が行えるという利点があるが、一般に共通鍵暗号方式に比べて処理速度が遅い。一方で共通鍵暗号方式は、高速な暗号処理を実現できるが、予め暗号通信を行う両者の間で暗号鍵を共有しておく必要がある。
【０００５】
ＩＣカード間でバリューを転送するために必要な時間は、できるだけ短い方が、使い勝手が良くなるのは明らかである。したがって、バリュー転送時に用いる暗号方式として、処理速度の速い共通鍵暗号方式を選択した方が、使い勝手は向上する。しかし、共通鍵暗号方式を用いた場合、全てのＩＣカードに同一の暗号鍵を設定しておく必要がある。このため、バリュー転送に使用する暗号鍵を更新する時は、バリュー転送できないカードの組み合わせが生じないように、全てのＩＣカードの暗号鍵を同時に更新する必要があるといった課題がある。
【０００６】
そこで、本発明は、ＩＣカード間のバリュー転送に共通鍵暗号方式を用いた場合に、バリュー転送で使用する暗号鍵を容易に更新可能にすることで、システム全体のセキュリティを向上できるＩＣカードおよび決済端末を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するために本発明のＩＣカードは、他のＩＣカードと価値データを送受信するＩＣカードであって、該価値データと、該価値データを更新するために用いる転送鍵と、該転送鍵を更新するために用いる更新鍵と、を蓄積する情報蓄積手段と、該他のＩＣカードから送信された、該更新鍵を用いて暗号化された転送鍵を受信する通信手段と、該暗号化された転送鍵を該更新鍵を用いて復号化し、該復号化した転送鍵により該情報蓄積手段に蓄積されている転送鍵を更新する演算処理手段と、を備えることを特徴とする。
【０００８】
また、上記目的を達成するために本発明の決済端末は、第１の価値データ、該第１の価値データを更新するために用いる第１の転送鍵、及び該第１の転送鍵を更新するために用いる更新鍵を蓄積している第１のＩＣカードと、第２の価値データ、該第２の価値データを更新するために用いる第２の転送鍵、及び該第２の転送鍵を更新するために用いる更新鍵を蓄積している第２のＩＣカードと、の間で該価値データを送受信する決済端末であって、該第１の転送鍵と該第２の転送鍵とが異なる場合に、該更新鍵で暗号化された該第１の転送鍵を該第１のＩＣカードから受信する第１のカード読み書き手段と、該更新鍵で暗号化された該第１の転送鍵を含む、該第２のＩＣカードの該第２の転送鍵を該第１の転送鍵に更新することを要求する転送鍵更新要求を該第２のＩＣカードに送信する第２のカード読み書き手段と、を備えることを特徴とする。
【０００９】
【発明の実施の形態】
以下、本発明の実施形態について説明していく。
まず、第１の実施形態について説明する。図１に、本実施形態に係わるバリュー転送システムの構成要素ブロック図を示す。図１において、１００Ａと１００ＢはＩＣカード、１１０は決済端末である。決済端末１１０は、ＩＣカード１００ＡとＩＣカード１００Ｂの間でバリュー転送を行うために用い、例えばＰＤＡといった携帯端末や、ＰＯＳなどの店舗端末、あるいは、ＡＴＭなどの金融端末などが考えられる。
【００１０】
次に、ＩＣカード１００Ａの内部構成について説明する。なお、ＩＣカード１００Ｂの内部構成はＩＣカード１００Ａと同様であるため説明は省略する。ＩＣカード１００Ａは、通信手段２０１Ａと、情報蓄積手段２０２Ａと、演算制御手段２０３Ａを含んだ構成となっている。ここで、通信手段２０１Ａは、決済端末１１０と通信を行い、決済端末１１０からコマンドを受信したり、決済端末１１０にレスポンスを返信したりする機能を有する。情報蓄積手段２０２Ａは、ＩＣカードが提供するサービスを実行するプログラムやデータ、あるいは決済端末１１０から取得した情報等を一時的あるいは永続的に格納する機能を有し、ＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）、フラッシュメモリ等の半導体メモリから構成される。演算制御手段２０３Ａは、マイクロプロセッサを用いることで、ＩＣカード全体の制御を司り、情報蓄積手段２０２Ａに格納されているプログラムを実行する機能を有する。また、暗号処理を高速化するための専用ハードウェア回路を含んでいても良い。
【００１１】
次に、情報蓄積手段２０２Ａに含まれるデータおよびプログラムについて説明する。情報蓄積手段２０２Ａは、有効期限１１１Ａと、バリュー残高１０８Ａと、鍵情報２０４Ａと、決済プログラム２０５Ａを含んだ構成になっている。有効期限１１１Ａは、ＩＣカード１００Ａの有効期限を表すデータである。バリュー残高１０８ＡはＩＣカード１００Ａが保持しているバリューの残高を表す。鍵情報２０４Ａは、バリュー転送を行うために使用する鍵データを含んでいる。決済プログラム２０５Ａは、鍵更新およびバリュー転送を行うプログラムであり、演算処理手段２０３Ａにより実行される。
【００１２】
ここで、ＩＣカードはその通信方式により、接触型と非接触型に分類される。それぞれの仕様はすでに標準化されており、例えば、接触型ＩＣカードは、ＩＳＯ（Ｉｎｔｅｒｎａｔｉｏｎａｌ　Ｏｒｇａｎｉｚａｔｉｏｎ　ｆｏｒ　Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ：　国際標準化機構）で、ＩＳＯ／ＩＥＣ７８１６として標準化されている。また、非接触型ＩＣカードは、ＩＳＯ／ＩＥＣ１４４４３で標準化されている。ＩＳＯ／ＩＥＣ７８１６およびＩＳＯ／ＩＥＣ１４４４３に基づくＩＣカードは、端末から送信するコマンドに従って内部で演算を行い、結果をレスポンスとして返すということを順次行っていくことで、サービスを実現するための処理を遂行していく。ここで、ＩＣカード−端末間で送受信するコマンドとレスポンスは、ＡＰＤＵ（Ａｐｐｌｉｃａｔｉｏｎ　Ｐｒｏｔｏｃｏｌ　Ｄａｔａ　Ｕｎｉｔ）という形式での定義が、ＩＳＯ／ＩＥＣ７８１６でなされている。本発明においては、通信手段２０１Ａは接触型と非接触型のどちらの方式であっても適用範囲である。
【００１３】
次に、決済端末１１０の内部構成について説明する。携帯端末１１０は、カード読書き手段３０１Ａおよび３０１Ｂと、情報蓄積手段３０２と、演算制御手段３０３と、操作手段３０４を含んだ構成となっている。カード読書き手段３０１Ａは、ＩＣカード１００Ａと通信するために、ＩＣカード１００Ａにコマンドを送信したり、ＩＣカードからレスポンスを受信したりする機能を有する。同様に、カード読書き手段３０１Ｂは、ＩＣカード１００Ｂと通信する機能を有する。ここで、カード読書き手段３０１Ａとカード読書き手段３０１Ｂは、接触型であっても非接触型であっても、本発明の適用範囲である。情報蓄積手段３０２は、プログラムやデータなどを一時的あるいは永続的に蓄積する機能を有し、例えばハードディスクや半導体メモリ等から構成される。演算処理手段３０３は、マイクロプロセッサを用いて、情報蓄積手段３０２に格納されているプログラムに基づいて、決済端末１１０全体を制御し、決済処理を遂行する機能を有する。操作手段３０４は、決済端末１１０を操作する人に対して、決済端末１１０を操作するためのインターフェイスを提供し、例えば、キーボード、バーコードリーダ、ディスプレイ等から構成される。また、情報蓄積手段３０２には、決済プログラム３０５が格納されている。決済プログラム３０５は、ＩＣカード１００ＡとＩＣカード１００Ｂの間で、鍵の更新処理およびバリュー転送処理を行うためのプログラムであり、演算処理手段３０３により実行される。
【００１４】
次に、鍵情報２０４Ａのデータ構成図を図２に示す。図２において、鍵情報２０４Ａは、更新鍵１０５Ａと、転送鍵ＩＤ１０６Ａと、転送鍵１０７Ａと、転送鍵ＩＤ上限値１１２Ａとったデータを格納している。なお、ＩＣカード１００Ｂも同様のデータ構成となっている。ここで、更新鍵１０５Ａは転送鍵１０７Ａを更新するために用いる共通鍵暗号方式の鍵データであり、転送鍵１０７Ａの暗号化および復号化を行う時に用いる。また、転送鍵ＩＤ１０６Ａは転送鍵１０７Ａを一意に識別するための番号であり、転送鍵の新旧を値の大小で判別する。例えば、転送鍵ＩＤの値が大きいほど新しい転送鍵と見なす。あるいは他の方法で転送鍵の新旧を判別しても本発明の適用範囲である。また、転送鍵１０７Ａは、バリューを転送するために用いる共通鍵暗号方式の鍵データである。転送鍵ＩＤ上限値　１１２Ａは、ＩＣカード１００Ａに格納可能な転送鍵ＩＤ１０６Ａの値の上限値を表すデータである。ここで、更新鍵１０５Ａ、および転送鍵１０７Ａを用いる暗号アルゴリズムは、共通鍵暗号方式であれば、どのようなアルゴリズムを用いても本発明の適用範囲である。なお、更新鍵１０５Ａと転送鍵１０７ＡはＩＣカード１００Ａ外部からの読み出しが行えないものとする。
【００１５】
次に、決済端末１１０を用いて、ＩＣカード１００ＡとＩＣカード１００Ｂの間で、転送鍵を更新するための処理を詳細に説明していく。この処理は、バリュー転送を行う前に実行する。また、決済端末１１０がＩＣカード１００ＡおよびＩＣカード１００Ｂに送信するコマンドはＡＰＤＵ形式を用いるものとして説明していく。また、ＩＣカード１００Ａの更新鍵１０５Ａの値と、ＩＣカード１００Ｂの更新鍵１０５Ｂの値は等しいものとする。
【００１６】
図３は、転送鍵を更新するための処理フロー図である。まず、決済端末１１０は、処理Ｓ１００１として、ＩＣカード１００ＡおよびＩＣカード１００Ｂに格納されている、決済サービスプログラムを選択起動するために、決済サービス選択要求をＡＰＤＵコマンドで送信する。
【００１７】
次に、決済端末１１０は、処理Ｓ１００２として、ＩＣカード１００ＡおよびＩＣカード１００Ｂにカード情報取得要求をＡＰＤＵコマンドで送信する。ＩＣカード１００Ａは、カード情報取得要求を受信すると、処理Ｓ１１０１Ａとして、転送鍵ＩＤ　１０６Ａと有効期限１１１Ａを、決済端末１１０にＡＰＤＵレスポンスで送信する。同様に、ＩＣカード１００Ｂは、カード情報取得要求を受信すると、処理Ｓ１１０１Ｂとして、転送鍵ＩＤ　１０６Ｂと有効期限１１１Ｂを決済端末１１０にＡＰＤＵレスポンスで送信する。
【００１８】
次に、決済端末１１０は、処理Ｓ１００３として転送鍵更新チェックを行う。この処理では、まず、受信した有効期限１１１Ａと有効期限１１１Ｂとを調べ、いずれも現在の日付より未来であることを確認する。もし、いずれかが、現在の日付より過去であれば、転送鍵更新処理を中止する。次に、決済端末１１０は、受信した転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０６Ａとを比較し、転送鍵を更新する必要があるかどうかを判定する。もし、転送鍵ＩＤ　１０６Ａが転送鍵ＩＤ　１０６Ｂより新しい場合は、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しい場合は、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａを、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０６Ｂが同一の場合は、以降の転送鍵更新処理を行わずに、直ちにバリュー転送処理に移行する。図３は転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しかった場合の処理フローとなっており、以下この場合について説明を行っていく。
【００１９】
次に、決済端末１１０は、処理Ｓ１００４として、ＩＣカード１００Ａに、転送鍵更新許可要求をＡＰＤＵコマンドで送信する。ＩＣカード１００Ａは、転送鍵更新許可要求を受信すると、処理Ｓ１１０２Ａとして、更新乱数１１２１を生成し、これをＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、更新乱数１１２１は、不正なカードによってＩＣカード１００Ａの転送鍵１０７Ａが不正に書き換えられないように、動的認証を行うために用いる。また、更新乱数１１２１の乱数生成アルゴリズムは、本発明では特に規定しない。
【００２０】
次に、決済端末１１０は、処理Ｓ１００５として、ＩＣカード１００Ｂに、転送鍵取得要求を、ＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、更新乱数１１２１が含まれている。ＩＣカード１００Ｂは、転送鍵取得要求として、更新乱数１１２１を受信すると、処理Ｓ１１０２Ｂとして、更新乱数１１２１と、転送鍵ＩＤ　１０６Ｂと、転送鍵１０７Ｂを、更新鍵１０５Ｂで暗号化し、これをＡＰＤＵレスポンスで、決済端末１１０に送信する。
【００２１】
次に、決済端末は、処理Ｓ１００６として、ＩＣカード１００Ａに、転送鍵更新要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、更新乱数１１２１と、転送鍵ＩＤ　１０６Ｂと、転送鍵１０７Ｂを、更新鍵１０５Ｂで暗号化したデータが含まれている。ＩＣカード１００Ａは、転送鍵更新要求として、更新乱数１１２１と、転送鍵ＩＤ　１０６Ｂと、転送鍵１０７Ｂを、更新鍵１０５Ｂで暗号化したデータを受信すると、処理Ｓ１１０３Ａとして、更新鍵１０５Ａで復号化し、復号された更新乱数１１２１が正しい値かどうかを確認する。もし、正しくない値であったなら、動的認証が失敗したと見なし、転送鍵更新処理を中止する。もし、正しい値であったなら、動的認証が成功したと見なし、処理Ｓ１１０４Ａを行う。この処理では、まず、転送鍵ＩＤ１０６Ｂの値が、転送鍵ＩＤ上限値１１２Ａと転送鍵ＩＤ１０６Ａの値との間に含まれていることを確認する。もし確認が失敗したら転送鍵の更新は行わない。もし確認が成功したら、転送鍵ＩＤ　１０６Ａの値と転送鍵１０７Ａの値を、転送鍵ＩＤ　１０６Ｂの値と、転送鍵１０７Ｂの値に書き換える。
【００２２】
以上説明した手順において、処理Ｓ１００１と、処理Ｓ１００２と、処理Ｓ１００３と、処理Ｓ１００４と、処理Ｓ１００５と、処理Ｓ１００６は、決済端末１１０の演算制御手段３０３で実行する決済プログラム３０５により処理される。また、処理Ｓ１１０１Ａと、処理Ｓ１１０２Ａと、処理Ｓ１１０３Ａと、処理Ｓ１１０４Ａは、ＩＣカード１００Ａの演算制御手段２０３Ａで実行する決済プログラム２０５Ａにより処理される。また、処理Ｓ１１０１Ｂと、処理Ｓ１１０２Ｂと、処理Ｓ１１０３Ｂと、処理Ｓ１１０４Ｂは、ＩＣカード１００Ｂの演算制御手段２０３Ｂで実行する決済プログラム２０５Ｂにより処理される。
【００２３】
以上の手順により、転送鍵をより新しい値に、安全に書き換えることができる。また、転送鍵の更新は、共通鍵暗号方式を使って行うため、短時間で処理を完了することが可能である。さらに、更新可能である転送鍵の範囲を、更新鍵ＩＤ上限値を用いて制限することが可能になる。
【００２４】
次に、決済端末１１０を用いて、ＩＣカード１００ＡとＩＣカード１００Ｂの間で、バリューを転送するための処理を詳細に説明していく。この処理は、図３で説明した転送鍵更新処理の後に行い、転送鍵１０７Ａの値と転送鍵１０７Ｂの値は等しいものとする。また、決済端末１１０がＩＣカード１００ＡおよびＩＣカード１００Ｂに送信するコマンドはＡＰＤＵ形式を用いるものとして説明していく。図４は、バリューを転送するための処理フロー図である。まず、決済端末１１０は、処理Ｓ２００１として、ＩＣカード１００Ａに、バリュー送信許可要求として、ＡＰＤＵコマンドを送信する。このＡＰＤＵコマンドには、支払いバリュー２２１と取引日付２２２が含まれている。ここで、支払いバリュー２２１は、転送するバリューの値を表している。また取引日付２２２は、バリュー転送を行う日時を表す。ＩＣカード１００Ａは、バリュー送信許可要求として、支払いバリュー２２１と取引日付２２２を取得すると、処理Ｓ２１０１として、バリュー残高仮更新を行う。すなわち、バリュー残高１０８Ａの値から支払いバリュー２２１を減算した値を、仮のバリュー残高の値としておく。そして、処理Ｓ２１０２Ａとして、送信乱数２２３を生成し、これをＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、送信乱数２２３は、不正なカードによってＩＣカード１００Ａのバリュー残高１０８Ａを書き換えられないように、動的認証を行うために用いる。また、送信乱数２２３の乱数生成アルゴリズムは、本発明では特に規定しない。
【００２５】
次に、決済端末１１０は、処理Ｓ２００２として、ＩＣカード１００Ｂに、バリュー受信許可要求を、ＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、支払いバリュー２２１と取引日付２２２と、送信乱数２２３が含まれている。ＩＣカード１００Ｂは、バリュー受信許可要求として、支払いバリュー２２１と取引日付２２２と、送信乱数２２３を受信すると、処理Ｓ２１０１Ｂとして、バリュー残高仮更新を行う。すなわち、バリュー残高１０８Ｂの値と支払いバリュー２２１を加算した値を、仮のバリュー残高の値としておく。そして、処理Ｓ２１０２Ｂとして、送信チャレンジ２２４を作成する。ここで、送信チャレンジ２２４は、支払いバリュー２２１と、取引日付２２２と、送信乱数２２３を結合したデータを、転送鍵１０７Ｂを用いて暗号処理を行った結果得られる認証コードである。本発明においては転送鍵を用いて認証コードを生成するアルゴリズムは特に規定しない。例えば、ＩＳＯ９７９７にて規定されているアルゴリズムを用いることが考えられる。その後、ＩＣカード１００Ｂは、処理Ｓ２１０３Ｂとして、受信乱数２２５を生成しする。そして、送信チャレンジ２２４と受信乱数２２５を、ＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、送信乱数２２５は、不正なカードによってＩＣカード１００Ｂのバリュー残高１０８Ｂを書き換えられないように、動的認証を行うために用いる。また、送信乱数２２５の乱数生成アルゴリズムは、本発明では特に規定しない。
【００２６】
次に、決済端末１１０は、処理Ｓ２００３として、ＩＣカード１００Ａに、バリュー送信要求を、ＡＰＤＵコマンドとして送信する。このＡＰＤＵコマンドには、送信チャレンジ２２４と受信乱数２２５が含まれている。ＩＣカード１００Ａは、送信チャレンジ２２４と受信乱数２２５を受信すると、まず、処理２１０３Ａとして、送信チャレンジ２２４の検証を行う。すなわち、支払いバリュー２２１と、取引日付２２２と、送信乱数２２３を結合したデータを、転送鍵１０７Ａを用いて暗号処理を行った結果得られる認証コードと、送信チャレンジ２２４が等しいかどうかと確認する。もし、等しくなかったなら、動的認証が失敗したと見なし、バリュー転送処理を中止する。もし、等しかったなら、動的認証が成功したと見なし、続いて、処理Ｓ２１０４Ａとして、バリュー残高更新を行う。すなわち、バリュー残高１０８Ａの値から、支払いバリュー２２１を減算し、これでバリュー残高１０８Ａの値を書き換える。その後、処理Ｓ２１０５Ａとして、受信チャレンジ２２６を作成し、これをＡＰＤＵレスポンスとして、決済端末１１０に送信する。ここで、送信チャレンジ２２６は、支払いバリュー２２１と、取引日付２２２と、受信乱数２２５を結合したデータを、転送鍵１０７Ａを用いて暗号処理を行った結果得られる認証コードである。
【００２７】
次に、決済端末１１０は、処理Ｓ２００４として、ＩＣカード１００Ｂに、バリュー受信要求を、ＡＰＤＵコマンドとして送信する。このＡＰＤＵコマンドには、受信チャレンジ２２６が含まれている。ＩＣカード１００Ｂは、受信チャレンジ２２６を受信すると、まず、処理２１０４Ｂとして、受信チャレンジ２２６の検証を行う。すなわち、支払いバリュー２２１と、取引日付２２２と、受信乱数２２５を結合したデータを、転送鍵１０７Ｂを用いて暗号処理を行った結果得られる認証コードと、受信チャレンジ２２６が等しいかどうかと確認する。もし、等しくなかったなら、動的認証が失敗したと見なし、バリュー転送処理を中止する。もし、等しかったなら、動的認証が成功したと見なし、続いて、処理Ｓ２１０５Ｂとして、バリュー残高更新を行う。すなわち、バリュー残高１０８Ｂの値に、支払いバリュー２２１を加算し、これでバリュー残高１０８Ｂの値を書き換える。その後、ＡＰＤＵレスポンスを、決済端末１１０に送信する。
【００２８】
以上説明した手順において、処理Ｓ２００１と、処理Ｓ２００２と、処理Ｓ２００３と、処理Ｓ２００４は、決済端末１１０の演算制御手段３０３で実行する決済プログラム３０５により処理される。また、処理Ｓ２１０１Ａと、処理Ｓ２１０２Ａと、処理Ｓ２１０３Ａと、処理Ｓ２１０４Ａと、処理Ｓ２１０５Ａは、ＩＣカード１００Ａの演算制御手段２０３Ａで実行する決済プログラム２０５Ａにより処理される。また、処理Ｓ２１０１Ｂと、処理Ｓ２１０２Ｂと、処理Ｓ２１０３Ｂと、処理Ｓ２１０４Ｂと、処理Ｓ２１０５Ｂは、ＩＣカード１００Ｂの演算制御手段２０３Ｂで実行する決済プログラム２０５Ｂにより処理される。
【００２９】
以上の手順により、ＩＣカード１００ＡとＩＣカード１００Ｂとの間で、バリュー転送を安全に行うことが可能になる。なお、図４を用いて説明したバリューを転送するための処理手順と異なっていても、共通の転送鍵を用いてバリューを転送する方式ならば、本発明の適用範囲となる。
【００３０】
以上、説明を行ってきた、本発明に係わる第１の実施例においては、ＩＣカード１００ＡとＩＣカード１００Ｂとの間で、転送鍵が異なっていても、更新鍵を用いて、両カード内の転送鍵の値を、新しい値に更新することが可能になる。例えば、有効期限が切れたＩＣカードを、新しいＩＣカードに切替える時に、転送鍵も新しい値に、更新しておけば、この新しいＩＣカードとバリュー転送を行った、古いＩＣカードの転送鍵の値を、新しい値に更新することができ、セキュリティを向上することが可能になる。
【００３１】
次に、本発明に係わる第２の実施例について説明する。本実施例においては、転送鍵の更新を、公開鍵暗号方式を用いて行う。図５は、本実施例におけるバリュー転送システムの構成要素ブロック図であるが、これは、第１の実施例で説明した図１のブロック図と同じ構成となっている。次に、ＩＣカード１００Ａの鍵情報２０４Ａの詳細について説明する。
【００３２】
図６は鍵情報２０４Ａのデータ構成図である。図６において、鍵情報２０４Ａは、ＣＡ公開鍵１０１と、カード公開鍵証明書１０２Ａと、カード秘密鍵１０３Ａと、転送鍵ＩＤ　１０６Ａと、転送鍵１０７Ａと、転送鍵ＩＤ上限値１１２Ａを含んでいる。また、ＩＣカード１００Ｂの鍵情報２０４Ｂも同様のデータ構成となる。ここで、ＣＡ公開鍵１０１は、任意の認証局の公開鍵であり、カード公開鍵証明書１０２Ａを検証するために用いる。カード公開鍵証明書１０２Ａは、カード秘密鍵１０３Ａと対の鍵データであるカード公開鍵の正当性を証明するためのデータであり、このカード公開鍵はカード公開鍵証明書１０２Ａの内部に含まれている構成となっている。カード秘密鍵１０３Ａは、公開鍵暗号方式の秘密鍵であり、転送鍵を更新するために用いる。
【００３３】
また、転送鍵ＩＤ　１０６Ａは転送鍵１０７Ａを一意に識別するための番号であり、転送鍵の新旧を値の大小で判別する。例えば、転送鍵ＩＤの値が大きいほど新しい転送鍵と見なす。また、転送鍵１０７Ａは、バリューを転送するために用いる共通鍵暗号方式の鍵データである。転送鍵ＩＤ上限値　１１２Ａは、ＩＣカード１００Ａに格納可能な転送鍵ＩＤ１０６Ａの値の上限値を表すデータである。なお、ＣＡ公開鍵１０１、カード公開鍵証明書１０２Ａ、カード秘密鍵１０３Ａを用いる暗号アルゴリズムは、公開鍵暗号方式であれば、どのようなアルゴリズムを用いても本発明の適用範囲である。また、カード秘密鍵１０３Ａと、転送鍵１０７Ａは、ＩＣカード１００Ａ外部からの読出しが行えないものとする。
【００３４】
次に、本実施例に係わる、転送鍵を更新するための処理を詳細に説明していく。この処理は、バリュー転送を行う前に実行する。また、決済端末１１０がＩＣカード１００ＡおよびＩＣカード１００Ｂに送信するコマンドはＡＰＤＵ形式を用いるものとして説明していく。図７は、転送鍵を更新するための処理フロー図である。まず、決済端末１１０は、処理Ｓ３００１として、ＩＣカード１００ＡおよびＩＣカード１００Ｂに格納されている、決済サービスプログラムを選択起動するために、決済サービス選択要求をＡＰＤＵコマンドで送信する。
【００３５】
次に、決済端末１１０は、処理Ｓ３００２として、ＩＣカード１００ＡおよびＩＣカード１００Ｂにカード情報取得要求をＡＰＤＵコマンドで送信する。ＩＣカード１００Ａは、カード情報取得要求を受信すると、処理Ｓ３１０１Ａとして、カード公開鍵証明書１０２Ａと、転送鍵ＩＤ１０６Ａと有効期限１１１Ａを、決済端末１１０にＡＰＤＵレスポンスで送信する。同様に、ＩＣカード１００Ｂは、カード情報取得要求を受信すると、処理Ｓ３１０１Ｂとして、カード公開鍵証明書１０２Ｂと、転送鍵ＩＤ　１０６Ｂと有効期限１１１Ｂを決済端末１１０にＡＰＤＵレスポンスで送信する。
【００３６】
次に、決済端末１１０は、処理Ｓ３００３として転送鍵更新チェックを行う。この処理では、まず、受信した有効期限１１１Ａと有効期限１１１Ｂとを調べ、いずれも現在の日付より未来であることを確認する。もし、いずれかが、現在の日付より過去であれば、転送鍵更新処理を中止する。次に、決済端末１１０は、受信した転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０６Ｂとを比較し、転送鍵を更新する必要があるかどうかを判定する。もし、転送鍵ＩＤ　１０６Ａが転送鍵ＩＤ　１０６Ｂより新しい場合は、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しい場合は、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａを、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０６Ｂが同一の場合は、以降の転送鍵更新処理を行わずに、直ちにバリュー転送処理に移行する。図７は転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しかった場合の処理フローとなっており、以下この場合について説明を行っていく。
【００３７】
次に、決済端末１１０は、処理Ｓ３００４として、ＩＣカード１００Ａに、転送鍵更新許可要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、カード公開鍵証明書１０２Ｂが含まれている。ＩＣカード１００Ａは、転送鍵更新許可要求として、カード公開鍵証明書１０２Ｂを受信すると、処理Ｓ３１０２Ａとして、更新カード公開鍵証明書１０２ＢをＣＡ公開鍵１０１で検証し、検証が成功したら、更新乱数３１２１を生成する。そして、更新乱数３１２１をＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、更新乱数３１２１は、不正なカードによってＩＣカード１００Ａの転送鍵１０７Ａが不正に書き換えられないように、動的認証を行うために用いる。また、更新乱数３１２１の乱数生成アルゴリズムは、本発明では特に規定しない。
【００３８】
次に、決済端末１１０は、処理Ｓ３００５として、ＩＣカード１００Ｂに、転送鍵取得要求を、ＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、カード公開鍵証明書１０２Ａと、更新乱数３１２１が含まれている。ＩＣカード１００Ｂは、転送鍵取得要求として、カード公開鍵証明書１０２Ａと、更新乱数３１２１を受信すると、処理Ｓ３１０２Ｂとして、まず、カード公開鍵証明書１０２Ａを、ＣＡ公開鍵１０１で検証する。検証が成功したら、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、カード公開鍵証明書１０２Ａに含まれるカード公開鍵で暗号化する。次に、処理Ｓ３１０３Ｂとして、カード秘密鍵１０３Ｂを用いて、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータと、更新乱数３１２１とに対するデジタル署名３１２２を生成する。そして、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータと、デジタル署名３１２２を、ＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、デジタル署名３１２２の作成アルゴリズムは、公開鍵暗号方式に基づいたものであれば、どのようなアルゴリズムでも本発明の適用範囲である。
【００３９】
次に、決済端末は、処理Ｓ３００６として、ＩＣカード１００Ａに、転送鍵更新要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、デジタル署名３１２２と、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータとが含まれている。ＩＣカード１００Ａは、転送鍵更新要求として、デジタル署名３１２２と、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータを受信すると、まず、処理Ｓ３１０３Ａとして、カード公開鍵１０２Ｂを用いて、デジタル署名３１２２の検証を行う。この検証が成功したら、動的認証が成功したと見なし、次に、処理Ｓ３１０４Ａとして、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、カード秘密鍵１０３Ａで復号化する。そして、処理Ｓ３１０５Ａを行う。この処理では、転送鍵ＩＤ１０６Ｂの値が、転送鍵ＩＤ上限値１１２Ａと転送鍵ＩＤ１０６Ａの値との間に含まれていることを確認するもし確認が失敗したら転送鍵の更新は行わない。もし確認が成功したら、転送鍵ＩＤ　１０６Ａの値と転送鍵１０７Ａの値を、転送鍵ＩＤ　１０６Ｂの値と転送鍵１０７Ｂの値に書き換える。
【００４０】
以上説明した手順において、処理Ｓ３００１と、処理Ｓ３００２と、処理Ｓ３００３と、処理Ｓ３００４と、処理Ｓ３００５と、処理Ｓ３００６は、決済端末１１０の演算制御手段３０３で実行する決済プログラム３０５により処理される。また、処理Ｓ３１０１Ａと、処理Ｓ３１０２Ａと、処理Ｓ３１０３Ａと、処理Ｓ３１０４Ａと、処理Ｓ３１０５Ａは、ＩＣカード１００Ａの演算制御手段２０３Ａで実行する決済プログラム２０５Ａにより処理される。また、処理Ｓ３１０１Ｂと、処理Ｓ３１０２Ｂと、処理Ｓ３１０３Ｂは、ＩＣカード１００Ｂの演算制御手段２０３Ｂで実行する決済プログラム２０５Ｂにより処理される。
【００４１】
以上の手順により、転送鍵をより新しい値に、安全に書き換えることができる。本発明に係わる第２の実施例においては、ＩＣカード１００ＡとＩＣカード１００Ｂとの間で、転送鍵が異なっていても、カード公開鍵およびカード秘密鍵を用いて、両カード内の転送鍵の値を、新しい値に更新することが可能になる。例えば、有効期限が切れたＩＣカードを、新しいＩＣカードに切替える時に、転送鍵も新しい値に更新しておけば、この新しいＩＣカードとバリュー転送を行った、古いＩＣカードの転送鍵の値を、新しい値に更新することができ、セキュリティを向上することが可能になる。
【００４２】
また、本実施例においては、ＣＡ公開鍵および公開鍵証明書を用いるため、ＣＲＬ（Ｃｅｒｔｉｆｉｃａｔｅ　Ｒｅｖｏｃａｔｉｏｎ　Ｌｉｓｔ）を用いて、無効となった公開鍵証明書を保持しているＩＣカードとはバリュー転送を行わないようにすることも可能である。ここで、ＣＲＬは無効になった証明書のシリアル番号の一覧に、認証局（ＣＡ）が電子署名をしたデータであり、例えば、決済端末１１０がＣＲＬを保持していて、ＩＣカード１００Ａから取得したカード公開鍵証明書１０２Ａと、ＩＣカード１００Ｂから取得したカード公開鍵証明書１０２Ｂのチェックを、ＣＲＬを用いて行う場合も、本発明の適用範囲である。また、決済端末１１０は、ＣＲＬをネットワーク経由で認証局から取得してもよい。あるいは、決済端末１１０の製造時に最新のＣＲＬを内蔵しておいてもよい。
【００４３】
次に、本発明に係わる第３の実施例について説明する。本実施例においては、転送鍵の更新に、共通鍵暗号方式と公開鍵暗号方式のどちらを用いるかを選択できるようになっている。図８は、本実施例におけるバリュー転送システムの構成要素ブロック図であるが、これは、第１の実施例で説明した図１のブロック図と同じ構成となっている。次に、ＩＣカード１００Ａの鍵情報２０４Ａの詳細について説明する。
【００４４】
図９は鍵情報２０４Ａのデータ構成図である。図９において、鍵情報２０４Ａは、ＣＡ公開鍵１０１と、カード公開鍵証明書１０２Ａと、カード秘密鍵１０３Ａと、更新鍵ＩＤ　１０４Ａと、更新鍵１０５Ａと、転送鍵ＩＤ　１０６Ａと、転送鍵１０７Ａと、転送鍵ＩＤ上限値１１２Ａを含んでいる。また、ＩＣカード１００Ｂも同様のデータ構成となる。ここで、ＣＡ公開鍵１０１は、任意の認証局の公開鍵であり、カード公開鍵証明書１０２Ａを検証するために用いる。カード公開鍵証明書１０２Ａは、カード秘密鍵１０３Ａと対の鍵データであるカード公開鍵の正当性を証明するためのデータであり、このカード公開鍵はカード公開鍵証明書１０２Ａの内部に含まれている構成となっている。カード秘密鍵１０３Ａは、公開鍵暗号方式の秘密鍵であり、転送鍵を更新するために用いる。また、更新鍵ＩＤ１０４Ａは、更新鍵１０５Ａを一意に識別するための番号であり、更新鍵の新旧を値の大小で判別する。例えば、更新鍵ＩＤの値が大きいほど新しい更新鍵と見なす。更新鍵１０５Ａは転送鍵１０７Ａを更新するために用いる共通鍵暗号方式の鍵データであり、転送鍵１０７Ａの暗号化および復号化を行う時に用いる。また、転送鍵ＩＤ　１０６Ａは転送鍵１０７Ａを一意に識別するための番号であり、転送鍵の新旧を値の大小で判別する。例えば、転送鍵ＩＤの値が大きいほど新しい転送鍵と見なす。また、転送鍵１０７Ａは、バリューを転送するために用いる共通鍵暗号方式の鍵データである。転送鍵ＩＤ上限値　１１２Ａは、ＩＣカード１００Ａに格納可能な転送鍵ＩＤ１０６Ａの値の上限値を表すデータでる。なお、更新鍵１０５Ａ、および転送鍵１０７Ａを用いる暗号アルゴリズムは、共通鍵暗号方式であれば、どのようなアルゴリズムを用いても本発明の適用範囲である。また、ＣＡ公開鍵１０１、カード公開鍵証明書１０２Ａ、カード秘密鍵１０３Ａを用いる暗号アルゴリズムは、公開鍵暗号方式であれば、どのようなアルゴリズムを用いても本発明の適用範囲である。また、カード秘密鍵１０３Ａと、更新鍵１０４Ａと、転送鍵１０７Ａは、ＩＣカード１００Ａ外部からの読出しが行えないものとする。
【００４５】
次に、本実施例に係わる、転送鍵を更新するための処理を詳細に説明していく。この処理は、バリュー転送を行う前に実行する。また、決済端末１１０がＩＣカード１００ＡおよびＩＣカード１００Ｂに送信するコマンドはＡＰＤＵ形式を用いるものとして説明していく。図１０は、転送鍵を更新するための処理フロー図である。まず、決済端末１１０は、処理Ｓ４００１として、ＩＣカード１００ＡおよびＩＣカード１００Ｂに格納されている、決済サービスプログラムを選択起動するために、決済サービス選択要求をＡＰＤＵコマンドで送信する。
【００４６】
次に、決済端末１１０は、処理Ｓ４００２として、ＩＣカード１００ＡおよびＩＣカード１００Ｂにカード情報取得要求をＡＰＤＵコマンドで送信する。ＩＣカード１００Ａは、カード情報取得要求を受信すると、処理Ｓ４１０１Ａとして、カード公開鍵証明書１０２Ａと更新鍵ＩＤ　１０４Ａと転送鍵ＩＤ　１０６Ａと有効期限１１１Ａを、決済端末１１０にＡＰＤＵレスポンスで送信する。同様に、ＩＣカード１００Ｂは、カード情報取得要求を受信すると、処理Ｓ４１０１Ｂとして、カード公開鍵証明書１０２Ｂと更新鍵ＩＤ　１０４Ｂと転送鍵ＩＤ　１０６Ｂと有効期限１１１Ｂを決済端末１１０にＡＰＤＵレスポンスで送信する。
【００４７】
次に、決済端末１１０は、処理Ｓ４００３として転送鍵更新チェックを行う。この処理では、まず、受信した有効期限１１１Ａと有効期限１１１Ｂとを調べ、いずれも現在の日付より未来であることを確認する。もし、いずれかが、現在の日付より過去であれば、転送鍵更新処理を中止する。次に、決済端末１１０は、受信した転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０１Ｂとを比較し、転送鍵を更新する必要があるかどうかを判定する。もし、転送鍵ＩＤ　１０６Ａが転送鍵ＩＤ　１０６Ｂより新しい場合は、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しい場合は、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａを、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０６Ｂが同一の場合は、以降の転送鍵更新処理を行わずに、直ちにバリュー転送処理に移行する。図１０は転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しかった場合の処理フローとなっており、以下この場合について説明を行っていく。
【００４８】
また、処理Ｓ４００３では、転送鍵の更新が必要であると判断したら、続いて更新鍵ＩＤ　１０４Ａと更新鍵ＩＤ　１０４Ｂが等しいか否かを確認する。もし、等しいならば、転送鍵の更新処理に、更新鍵１０５Ａと更新鍵１０５Ｂを用いる。もし、等しくないならば、転送鍵の更新処理に、カード秘密鍵１０３Ａとカード秘密鍵１０３Ｂを用いる。図１０は、転送鍵の更新処理として、更新鍵を用いる場合の処理フローとなっており、以下この場合について説明を行っていく。
【００４９】
次に、決済端末１１０は、処理Ｓ４００４として、ＩＣカード１００Ａに、転送鍵更新許可要求をＡＰＤＵコマンドで送信する。ＩＣカード１００Ａは、転送鍵更新許可要求を受信すると、処理Ｓ４１０２Ａとして、更新乱数４１２１を生成し、これをＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、更新乱数４１２１は、不正なカードによってＩＣカード１００Ａの転送鍵１０７Ａが不正に書き換えられないように、動的認証を行うために用いる。また、更新乱数４１２１の乱数生成アルゴリズムは、本発明では特に規定しない。
【００５０】
次に、決済端末１１０は、処理Ｓ４００５として、ＩＣカード１００Ｂに、転送鍵取得要求を、ＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、更新乱数４１２１が含まれている。ＩＣカード１００Ｂは、転送鍵取得要求として、更新乱数４１２１を受信すると、処理Ｓ４１０２Ｂとして、更新乱数４１２１と、転送鍵ＩＤ　１０６Ｂと、転送鍵１０７Ｂを、更新鍵１０５Ｂで暗号化し、これをＡＰＤＵレスポンスで、決済端末１１０に送信する。
【００５１】
次に、決済端末は、処理Ｓ４００６として、ＩＣカード１００Ａに、転送鍵更新要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、更新乱数４１２１と、転送鍵ＩＤ　１０６Ｂと、転送鍵１０７Ｂを、更新鍵１０５Ｂで暗号化したデータが含まれている。ＩＣカード１００Ａは、転送鍵更新要求として、更新乱数４１２１と、転送鍵ＩＤ　１０６Ｂと、転送鍵１０７Ｂを、更新鍵１０５Ｂで暗号化したデータを受信すると、処理Ｓ４１０３Ａとして、更新鍵１０５Ａで復号化し、復号された更新乱数４１２１が正しい値かどうかを確認する。もし、正しくない値であったなら、動的認証が失敗したと見なし、転送鍵更新処理を中止する。もし、正しい値であったなら、動的認証が成功したと見なし、処理Ｓ４１０４Ａを行う。この処理では、転送鍵ＩＤ１０６Ｂの値が、転送鍵ＩＤ上限値１１２Ａと転送鍵ＩＤ１０６Ａの値との間に含まれていることを確認する。もし確認が失敗したら転送鍵の更新は行わない。もし確認が成功したら、転送鍵ＩＤ　１０６Ａの値と転送鍵１０７Ａの値を、転送鍵ＩＤ　１０６Ｂの値と転送鍵１０７Ｂの値に書き換える。
【００５２】
以上説明した手順において、処理Ｓ４００１と、処理Ｓ４００２と、処理Ｓ４００３と、処理Ｓ４００４と、処理Ｓ４００５と、処理Ｓ４００６は、決済端末１１０の演算制御手段３０３で実行する決済プログラム３０５により処理される。また、処理Ｓ４１０１Ａと、処理Ｓ４１０２Ａと、処理Ｓ４１０３Ａと、処理Ｓ４１０４Ａは、ＩＣカード１００Ａの演算制御手段２０３Ａで実行する決済プログラム２０５Ａにより処理される。また、処理Ｓ４１０１Ｂと、処理Ｓ４１０２Ｂは、ＩＣカード１００Ｂの演算制御手段２０３Ｂで実行する決済プログラム２０５Ｂにより処理される。
【００５３】
以上の手順は、転送鍵の更新処理に、共通鍵暗号方式の鍵データである更新鍵を用いた場合であったが、次に、公開鍵暗号方式の鍵データであるカード秘密鍵を用いる場合の処理フローを、図１１を用いて説明していく。図１１の処理フローにおいては、処理Ｓ５００１は処理Ｓ４００１と同じである。また、処理Ｓ５００２は処理Ｓ４００２と同じである。また、処理Ｓ５１０１Ａは処理Ｓ４１０１Ａと同じである。また、処理Ｓ５１０１Ｂは処理Ｓ４１０１Ｂと同じである。
【００５４】
処理Ｓ５００３においては、処理Ｓ４００３と同様に、更新鍵ＩＤ　１０４Ａと更新鍵ＩＤ　１０４Ｂが等しいか否かを確認するが、図１１は、転送鍵の更新処理として、公開鍵暗号方式を用いる場合の処理フローとなっている。したがって、更新鍵ＩＤ　１０４Ａと更新鍵ＩＤ　１０４Ｂが等しくなかったため、転送鍵の更新処理にカード秘密鍵１０３Ａとカード秘密鍵１０３Ｂを使用する。以下、処理Ｓ５００３以降の処理について説明していく。
【００５５】
決済端末１１０は、処理Ｓ５００４として、ＩＣカード１００Ａに、転送鍵更新許可要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、カード公開鍵証明書１０２Ｂが含まれている。ＩＣカード１００Ａは、転送鍵更新許可要求として、カード公開鍵証明書１０２Ｂを受信すると、処理Ｓ３１０２Ａとして、更新カード公開鍵証明書１０２ＢをＣＡ公開鍵１０１で検証し、検証が成功したら、更新乱数５１２１を生成する。そして、更新乱数５１２１をＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、更新乱数５１２１は、不正なカードによってＩＣカード１００Ａの転送鍵１０７Ａが不正に書き換えられないように、動的認証を行うために用いる。また、更新乱数５１２１の乱数生成アルゴリズムは、本発明では特に規定しない。
【００５６】
次に、決済端末１１０は、処理Ｓ５００５として、ＩＣカード１００Ｂに、転送鍵取得要求を、ＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、カード公開鍵証明書１０２Ａと、更新乱数５１２１が含まれている。ＩＣカード１００Ｂは、転送鍵取得要求として、カード公開鍵証明書１０２Ａと、更新乱数５１２１を受信すると、処理Ｓ５１０２Ｂとして、まず、カード公開鍵証明書１０２Ａを、ＣＡ公開鍵１０１で検証する。検証が成功したら、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、カード公開鍵証明書１０２Ａに含まれるカード公開鍵で暗号化する。次に、処理Ｓ５１０３Ｂとして、カード秘密鍵１０３Ｂを用いて、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータと、更新乱数５１２１とに対するデジタル署名５１２２を生成する。そして、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータと、デジタル署名５１２２を、ＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、デジタル署名５１２２の作成アルゴリズムは、公開鍵暗号方式に基づいたものであれば、どのようなアルゴリズムでも本発明の適用範囲である。
【００５７】
次に、決済端末は、処理Ｓ５００６として、ＩＣカード１００Ａに、転送鍵更新要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、デジタル署名５１２２と、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータとが含まれている。ＩＣカード１００Ａは、転送鍵更新要求として、デジタル署名５１２２と、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータを受信すると、まず、処理Ｓ５１０３Ａとして、カード公開鍵１０２Ｂを用いて、デジタル署名５１２２の検証を行う。この検証が成功したら、動的認証が成功したと見なし、次に、処理Ｓ５１０４Ａとして、転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、カード秘密鍵１０３Ａで復号化する。そして、処理Ｓ５１０５Ａを行う。この処理では、転送鍵ＩＤ１０６Ｂの値が、転送鍵ＩＤ上限値１１２Ａと転送鍵ＩＤ１０６Ａの値との間に含まれていることを確認する。もし確認が失敗したら転送鍵の更新は行わない。もし確認が成功したら、転送鍵ＩＤ　１０６Ａの値と転送鍵１０７Ａの値を、転送鍵ＩＤ　１０６Ｂの値と転送鍵１０７Ｂの値に書き換える。
【００５８】
以上説明した手順において、処理Ｓ５００１と、処理Ｓ５００２と、処理Ｓ５００３と、処理Ｓ５００４と、処理Ｓ５００５と、処理Ｓ５００６は、決済端末１１０の演算制御手段３０３で実行する決済プログラム３０５により処理される。また、処理Ｓ５１０１Ａと、処理Ｓ５１０２Ａと、処理Ｓ５１０３Ａと、処理Ｓ５１０４Ａと、処理Ｓ５１０５Ａは、ＩＣカード１００Ａの演算制御手段２０３Ａで実行する決済プログラム２０５Ａにより処理される。また、処理Ｓ５１０１Ｂと、処理Ｓ５１０２Ｂと、処理Ｓ５１０３Ｂは、ＩＣカード１００Ｂの演算制御手段２０３Ｂで実行する決済プログラム２０５Ｂにより処理される。
【００５９】
以上の手順により、転送鍵をより新しい値に、安全に書き換えることができる。本発明に係わる第３の実施例においては、ＩＣカード１００ＡとＩＣカード１００Ｂとの間で、転送鍵が異なっていても、同一の更新鍵を共有していれば、これらの更新鍵を用いて、両カード内の転送鍵の値を、新しい値に更新することが可能になる。また、同一の更新鍵を共有していない場合でも、カード公開鍵およびカード秘密鍵を用いて、両カード内の転送鍵の値を、新しい値に更新することが可能になる。例えば、有効期限が切れたＩＣカードを、新しいＩＣカードに切替える時に、転送鍵を新しい値に更新しておけば、この新しいＩＣカードとバリュー転送を行った、古いＩＣカードの転送鍵の値を、更新鍵を使って新しい値に更新することができる。この時の転送鍵の更新は、共通鍵暗号方式を使って行うため、短時間に処理を完了することが可能である。さらに、新しいＩＣカードに切替える時に、更新鍵も新しい値に更新することも可能である。この場合は、新しいカードと古いカードの間で更新鍵が異なってしまうが、カード公開鍵およびカード秘密鍵を用いて、転送鍵を更新することが可能になる。
【００６０】
また、本実施例においては、ＣＡ公開鍵および公開鍵証明書を用いるため、第２の実施例で説明したように、ＣＲＬを用いて、無効となった公開鍵証明書を保持しているＩＣカードとはバリュー転送を行わないようにすることも可能である。例えば、決済端末１１０がＣＲＬを保持していて、ＩＣカード１００Ａから取得したカード公開鍵証明書１０２Ａと、ＩＣカード１００Ｂから取得したカード公開鍵証明書１０２Ｂのチェックを、ＣＲＬを用いて行う場合も、本発明の適用範囲である。
【００６１】
次に、本発明に係わる第４の実施例について説明する。本実施例においては、それぞれのＩＣカードが転送鍵を複数保持している。図１２は、本実施例におけるバリュー転送システムの構成要素ブロック図であるが、これは、第１の実施例で説明した図１のブロック図と同じ構成となっている。次に、ＩＣカード１００Ａの鍵情報２０４Ａの詳細について説明する。
【００６２】
図１３は鍵情報２０４Ａのデータ構成図である。図１３において、鍵情報２０４Ａは、更新鍵１０５Ａと、転送鍵ＩＤ　１０６Ａと、転送鍵１０７Ａと、転送鍵ＩＤ［１］　１０６Ａ１と、転送鍵ＩＤ［２］　１０６Ａ２と、転送鍵［１］　１０７Ａ１と、転送鍵［２］　１０７Ａ２バリュー残高１０８Ａと、有効期限１１１Ａを含んでいる。また、ＩＣカード１００Ｂも同様のデータ構成となる。ここで、更新鍵１０５Ａは転送鍵１０７Ａを更新するために用いる共通鍵暗号方式の鍵データであり、転送鍵１０７Ａの暗号化および復号化を行う時に用いる。また、転送鍵ＩＤ　１０６Ａは転送鍵１０７Ａを一意に識別するための番号であり、転送鍵の新旧を値の大小で判別する。例えば、転送鍵ＩＤの値が大きいほど新しい転送鍵と見なす。また、転送鍵ＩＤ［１］　１０６Ａ１は、転送鍵［１］　１０７Ａ１を一意に識別するための番号である。また、転送鍵ＩＤ［２］　１０６Ａ１は、転送鍵［２］　１０７Ａ１を一意に識別するための番号である。また、転送鍵［１］１０７Ａ１および転送鍵［２］１０７Ａ２は、バリューを転送するために用いる共通鍵暗号方式の鍵データである。本実施例においては、転送鍵ＩＤ１０６Ａの値は、転送鍵ＩＤ［１］　１０６Ａ１あるいは転送鍵ＩＤ［２］　１０６Ａ２のいずれかの値をとり、現在使用している転送鍵のＩＤを表す。例えば、転送鍵ＩＤ１０６Ａの値が、転送鍵ＩＤ［１］　１０６Ａ１の値と等しい場合は、バリュー転送には転送鍵［１］　１０７Ａ１を用いる。なお、更新鍵１０５Ｂと、転送鍵［１］　１０７Ａ１と、転送鍵［２］１０７Ａ２は、外部からの読出しが行えないものとする。また、図１３においては、ＩＣカードが保持している転送鍵の数は２個となっているが、転送鍵を２個以上保持している場合も、本発明の適用範囲である。
【００６３】
次に、本実施例に係わる、転送鍵を更新するための処理を詳細に説明していく。この処理は、バリュー転送を行う前に実行する。また、決済端末１１０がＩＣカード１００ＡおよびＩＣカード１００Ｂに送信するコマンドはＡＰＤＵ形式を用いるものとして説明していく。図１４は、転送鍵を更新するための処理フロー図である。まず、決済端末１１０は、処理Ｓ６００１として、ＩＣカード１００ＡおよびＩＣカード１００Ｂに格納されている、決済サービスプログラムを選択起動するために、決済サービス選択要求をＡＰＤＵコマンドで送信する。
【００６４】
次に、決済端末１１０は、処理Ｓ６００２として、ＩＣカード１００ＡおよびＩＣカード１００Ｂにカード情報取得要求をＡＰＤＵコマンドで送信する。ＩＣカード１００Ａは、カード情報取得要求を受信すると、処理Ｓ６１０１Ａとして、転送鍵ＩＤ　１０６Ａと有効期限１１１Ａを、決済端末１１０にＡＰＤＵレスポンスで送信する。同様に、ＩＣカード１００Ｂは、カード情報取得要求を受信すると、処理Ｓ６１０１Ｂとして、転送鍵ＩＤ　１０６Ｂと有効期限１１１Ｂを決済端末１１０にＡＰＤＵレスポンスで送信する。
【００６５】
次に、決済端末１１０は、処理Ｓ６００３として転送鍵更新チェックを行う。この処理では、まず、受信した有効期限１１１Ａと有効期限１１１Ｂとを調べ、いずれも現在の日付より未来であることを確認する。もし、いずれかが、現在の日付より過去であれば、転送鍵更新処理を中止する。次に、決済端末１１０は、受信した転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０６Ｂとを比較し、転送鍵を更新する必要があるかどうかを判定する。もし、転送鍵ＩＤ　１０６Ａが転送鍵ＩＤ　１０６Ｂより新しい場合は、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しい場合は、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａを、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０６Ｂが同一の場合は、以降の転送鍵更新処理を行わずに、直ちにバリュー転送処理に移行する。図１４は転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しかった場合の処理フローとなっており、以下この場合について説明を行っていく。
【００６６】
次に、決済端末１１０は、処理Ｓ６００４として、ＩＣカード１００Ａに、転送鍵更新許可要求をＡＰＤＵコマンドで送信する。ＩＣカード１００Ａは、転送鍵更新許可要求を受信すると、処理Ｓ６１０２Ａとして、更新乱数６１２１を生成し、これをＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、更新乱数６１２１は、不正なカードによってＩＣカード１００Ａの転送鍵ＩＤ１０６Ａが不正に書き換えられないように、動的認証を行うために用いる。また、更新乱数１１２１の乱数生成アルゴリズムは、本発明では特に規定しない。
【００６７】
次に、決済端末１１０は、処理Ｓ６００５として、ＩＣカード１００Ｂに、転送鍵取得要求を、ＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、更新乱数６１２１が含まれている。ＩＣカード１００Ｂは、転送鍵取得要求として、更新乱数６１２１を受信すると、処理Ｓ６１０２Ｂとして、更新乱数６１２１と、転送鍵ＩＤ　１０６Ｂを、更新鍵１０５Ｂで暗号化し、これをＡＰＤＵレスポンスで、決済端末１１０に送信する。
【００６８】
次に、決済端末は、処理Ｓ６００６として、ＩＣカード１００Ａに、転送鍵更新要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、更新乱数６１２１と、転送鍵ＩＤ　１０６Ｂを、更新鍵１０５Ｂで暗号化したデータが含まれている。ＩＣカード１００Ａは、転送鍵更新要求として、更新乱数６１２１と転送鍵ＩＤ　１０６Ｂを、更新鍵１０５Ｂで暗号化したデータを受信すると、処理Ｓ６１０３Ａとして、更新鍵１０５Ａで復号化し、復号された更新乱数６１２１が正しい値かどうかを確認する。もし、正しくない値であったなら、動的認証が失敗したと見なし、転送鍵更新処理を中止する。もし、正しい値であったなら、動的認証が成功したと見なし、処理Ｓ６１０４Ａを行う。この処理では、受信した転送鍵ＩＤ　１０６Ｂの値が、転送鍵ＩＤ１０６Ａの値より新しく、且つ、転送鍵ＩＤ［１］１０６Ａ１か転送鍵ＩＤ［２］１０６Ａ２のいずれかの値に等しいことを確認する。もし確認が失敗したら転送鍵の更新は行わない。もし確認が成功したら、転送鍵ＩＤ　１０６Ａの値を、転送鍵ＩＤ　１０６Ｂの値に書き換える。
【００６９】
以上説明した手順において、処理Ｓ６００１と、処理Ｓ６００２と、処理Ｓ６００３と、処理Ｓ６００４と、処理Ｓ６００５と、処理Ｓ６００６は、決済端末１１０の演算制御手段３０３で実行する決済プログラム３０５により処理される。また、処理Ｓ６１０１Ａと、処理Ｓ６１０２Ａと、処理Ｓ６１０３Ａと、処理Ｓ６１０４Ａは、ＩＣカード１００Ａの演算制御手段２０３Ａで実行する決済プログラム２０５Ａにより処理される。また、処理Ｓ６１０１Ｂと、処理Ｓ６１０２Ｂは、ＩＣカード１００Ｂの演算制御手段２０３Ｂで実行する決済プログラム２０５Ｂにより処理される。
【００７０】
以上の手順により、転送鍵をより新しい値に、安全に更新することができる。また、転送鍵の更新は、共通鍵暗号方式を使って行うため、短時間に処理を完了することが可能である。
【００７１】
以上、説明を行ってきた本発明に係わる第４の実施例においては、ＩＣカード１００ＡとＩＣカード１００Ｂに予め複数の転送鍵を格納しておくため、更新する転送鍵の値は、ＩＣカード間で送受信する必要がない。したがって、他の実施例に比べてよりセキュリティを向上することが可能になる。ここで、本実施例では、転送鍵の更新に、第１の実施例と同様に更新鍵を用いたが、第２の実施例と同様にカード公開鍵およびカード秘密鍵を用いたとしても、本発明の適用範囲である。また、第３の実施例と同様に更新鍵と、カード公開鍵およびカード秘密鍵を併用したとしても、本発明の適用範囲である。
【００７２】
次に、本発明に係わる第５の実施例について説明する。本実施例においては、転送鍵の更新に、共通鍵暗号方式と公開鍵暗号方式のどちらを用いるかを選択できるようになっている。また、転送鍵を更新するために用いる更新鍵の値が、ＩＣカード間で異なっている場合は、更新鍵の更新処理も行う。図１５は、本実施例におけるバリュー転送システムの構成要素ブロック図であるが、これは、第１の実施例で説明した図１のブロック図と同じ構成となっている。次に、ＩＣカード１００Ａの鍵情報２０４Ａの詳細について説明する。
【００７３】
図１６は鍵情報２０４Ａのデータ構成図である。図１６において、鍵情報２０４Ａは、ＣＡ公開鍵１０１と、カード公開鍵証明書１０２Ａと、カード秘密鍵１０３Ａと、更新鍵ＩＤ　１０４Ａと、更新鍵１０５Ａと、転送鍵ＩＤ　１０６Ａと、転送鍵１０７Ａと、転送鍵ＩＤ上限値１１２Ａと、更新鍵ＩＤ上限値１１３Ａを含んでいる。また、ＩＣカード１００Ｂも同様のデータ構成となる。ここで、ＣＡ公開鍵１０１は、任意の認証局の公開鍵であり、カード公開鍵証明書１０２Ａを検証するために用いる。カード公開鍵証明書１０２Ａは、カード秘密鍵１０３Ａと対の鍵データであるカード公開鍵の正当性を証明するためのデータであり、このカード公開鍵はカード公開鍵証明書１０２Ａの内部に含まれている構成となっている。カード秘密鍵１０３Ａは、公開鍵暗号方式の秘密鍵であり、転送鍵を更新するために用いる。また、更新鍵ＩＤ１０４Ａは、更新鍵１０５Ａを一意に識別するための番号であり、更新鍵の新旧を値の大小で判別する。例えば、更新鍵ＩＤの値が大きいほど新しい更新鍵と見なす。更新鍵１０５Ａは転送鍵１０７Ａを更新するために用いる共通鍵暗号方式の鍵データであり、転送鍵１０７Ａの暗号化および復号化を行う時に用いる。また、転送鍵ＩＤ　１０６Ａは転送鍵１０７Ａを一意に識別するための番号であり、転送鍵の新旧を値の大小で判別する。例えば、転送鍵ＩＤの値が大きいほど新しい転送鍵と見なす。また、転送鍵１０７Ａは、バリューを転送するために用いる共通鍵暗号方式の鍵データである。転送鍵ＩＤ上限値　１１２Ａは、ＩＣカード１００Ａに格納可能な転送鍵ＩＤ１０６Ａの値の上限値を表すデータでる。更新鍵ＩＤ上限値　１１３Ａは、ＩＣカード１００Ａに格納可能な更新鍵ＩＤ１０６Ａの値の上限値を表すデータでる。なお、更新鍵１０５Ａ、および転送鍵１０７Ａを用いる暗号アルゴリズムは、共通鍵暗号方式であれば、どのようなアルゴリズムを用いても本発明の適用範囲である。また、ＣＡ公開鍵１０１、カード公開鍵証明書１０２Ａ、カード秘密鍵１０３Ａを用いる暗号アルゴリズムは、公開鍵暗号方式であれば、どのようなアルゴリズムを用いても本発明の適用範囲である。また、カード秘密鍵１０３Ａと、更新鍵１０４Ａと、転送鍵１０７Ａは、ＩＣカード１００Ａ外部からの読出しが行えないものとする。
【００７４】
次に、本実施例に係わる、転送鍵を更新するための処理を詳細に説明していく。この処理は、バリュー転送を行う前に実行する。また、決済端末１１０がＩＣカード１００ＡおよびＩＣカード１００Ｂに送信するコマンドはＡＰＤＵ形式を用いるものとして説明していく。図１７は、転送鍵を更新するための処理フロー図である。まず、決済端末１１０は、処理Ｓ７００１として、ＩＣカード１００ＡおよびＩＣカード１００Ｂに格納されている、決済サービスプログラムを選択起動するために、決済サービス選択要求をＡＰＤＵコマンドで送信する。
【００７５】
次に、決済端末１１０は、処理Ｓ７００２として、ＩＣカード１００ＡおよびＩＣカード１００Ｂにカード情報取得要求をＡＰＤＵコマンドで送信する。ＩＣカード１００Ａは、カード情報取得要求を受信すると、処理Ｓ７１０１Ａとして、カード公開鍵証明書１０２Ａと更新鍵ＩＤ　１０４Ａと転送鍵ＩＤ　１０６Ａと有効期限１１１Ａを、決済端末１１０にＡＰＤＵレスポンスで送信する。同様に、ＩＣカード１００Ｂは、カード情報取得要求を受信すると、処理Ｓ４１０１Ｂとして、カード公開鍵証明書１０２Ｂと更新鍵ＩＤ　１０４Ｂと転送鍵ＩＤ　１０６Ｂと有効期限１１１Ｂを決済端末１１０にＡＰＤＵレスポンスで送信する。
【００７６】
次に、決済端末１１０は、処理Ｓ７００３として転送鍵更新チェックを行う。この処理では、まず、受信した有効期限１１１Ａと有効期限１１１Ｂとを調べ、いずれも現在の日付より未来であることを確認する。もし、いずれかが、現在の日付より過去であれば、転送鍵更新処理を中止する。次に、決済端末１１０は、受信した転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０１Ｂとを比較し、転送鍵を更新する必要があるかどうかを判定する。もし、転送鍵ＩＤ　１０６Ａが転送鍵ＩＤ　１０６Ｂより新しい場合は、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しい場合は、ＩＣカード１００Ａの転送鍵ＩＤ　１０６Ａと転送鍵１０７Ａを、ＩＣカード１００Ｂの転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂに更新する処理を以下行っていく。あるいはもし、転送鍵ＩＤ　１０６Ａと転送鍵ＩＤ　１０６Ｂが同一の場合は、以降の転送鍵更新処理を行わずに、直ちにバリュー転送処理に移行する。図１７は転送鍵ＩＤ　１０６Ｂが転送鍵ＩＤ　１０６Ａより新しかった場合の処理フローとなっており、以下この場合について説明を行っていく。
【００７７】
また、処理Ｓ７００３では、転送鍵の更新が必要であると判断したら、続いて更新鍵ＩＤ　１０４Ａと更新鍵ＩＤ　１０４Ｂが等しいか否かを確認する。もし、等しいならば、転送鍵の更新処理に、更新鍵１０５Ａと更新鍵１０５Ｂを用いる。もし、等しくないならば、転送鍵と更新鍵の更新処理に、カード秘密鍵１０３Ａとカード秘密鍵１０３Ｂを用いる。図１７は、転送鍵の更新処理として、更新鍵を用いる場合の処理フローとなっており、以下この場合について説明を行っていく。
【００７８】
次に、決済端末１１０は、処理Ｓ７００４として、ＩＣカード１００Ａに、転送鍵更新許可要求をＡＰＤＵコマンドで送信する。ＩＣカード１００Ａは、転送鍵更新許可要求を受信すると、処理Ｓ７１０２Ａとして、更新乱数７１２１を生成し、これをＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、更新乱数７１２１は、不正なカードによってＩＣカード１００Ａの転送鍵１０７Ａが不正に書き換えられないように、動的認証を行うために用いる。また、更新乱数７１２１の乱数生成アルゴリズムは、本発明では特に規定しない。
【００７９】
次に、決済端末１１０は、処理Ｓ７００５として、ＩＣカード１００Ｂに、転送鍵取得要求を、ＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、更新乱数７１２１が含まれている。ＩＣカード１００Ｂは、転送鍵取得要求として、更新乱数７１２１を受信すると、処理Ｓ７１０２Ｂとして、更新乱数７１２１と、転送鍵ＩＤ　１０６Ｂと、転送鍵１０７Ｂを、更新鍵１０５Ｂで暗号化し、これをＡＰＤＵレスポンスで、決済端末１１０に送信する。
【００８０】
次に、決済端末は、処理Ｓ７００６として、ＩＣカード１００Ａに、転送鍵更新要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、更新乱数７１２１と、転送鍵ＩＤ　１０６Ｂと、転送鍵１０７Ｂを、更新鍵１０５Ｂで暗号化したデータが含まれている。ＩＣカード１００Ａは、転送鍵更新要求として、更新乱数７１２１と、転送鍵ＩＤ　１０６Ｂと、転送鍵１０７Ｂを、更新鍵１０５Ｂで暗号化したデータを受信すると、処理Ｓ７１０３Ａとして、更新鍵１０５Ａで復号化し、復号された更新乱数７１２１が正しい値かどうかを確認する。もし、正しくない値であったなら、動的認証が失敗したと見なし、転送鍵更新処理を中止する。もし、正しい値であったなら、動的認証が成功したと見なし、処理Ｓ７１０４Ａを行う。この処理では、転送鍵ＩＤ１０６Ｂの値が、転送鍵ＩＤ上限値１１２Ａと転送鍵ＩＤ１０６Ａの値との間に含まれていることを確認する。もし確認が失敗したら転送鍵の更新は行わない。もし確認が成功したら、転送鍵ＩＤ　１０６Ａの値と転送鍵１０７Ａの値を、転送鍵ＩＤ　１０６Ｂの値と転送鍵１０７Ｂの値に書き換える。
【００８１】
以上説明した手順において、処理Ｓ７００１と、処理Ｓ７００２と、処理Ｓ７００３と、処理Ｓ７００４と、処理Ｓ７００５と、処理Ｓ７００６は、決済端末１１０の演算制御手段３０３で実行する決済プログラム３０５により処理される。また、処理Ｓ７１０１Ａと、処理Ｓ７１０２Ａと、処理Ｓ７１０３Ａと、処理Ｓ７１０４Ａは、ＩＣカード１００Ａの演算制御手段２０３Ａで実行する決済プログラム２０５Ａにより処理される。また、処理Ｓ７１０１Ｂと、処理Ｓ７１０２Ｂは、ＩＣカード１００Ｂの演算制御手段２０３Ｂで実行する決済プログラム２０５Ｂにより処理される。
【００８２】
以上の手順は、転送鍵の更新処理に、共通鍵暗号方式の鍵データである更新鍵を用いた場合であったが、次に、公開鍵暗号方式の鍵データであるカード秘密鍵を用いる場合の処理フローを、図１８を用いて説明していく。図１８の処理フローにおいては、処理Ｓ８００１は処理Ｓ７００１と同じである。また、処理Ｓ８００２は処理Ｓ７００２と同じである。また、処理Ｓ８１０１Ａは処理Ｓ７１０１Ａと同じである。また、処理Ｓ８１０１Ｂは処理Ｓ７１０１Ｂと同じである。
【００８３】
処理Ｓ８００３においては、処理Ｓ７００３と同様に、更新鍵ＩＤ　１０４Ａと更新鍵ＩＤ　１０４Ｂが等しいか否かを確認するが、図１８は、更新鍵ＩＤ　１０４Ａと更新鍵ＩＤ　１０４Ｂが異なっているために、転送鍵と更新鍵の更新処理として、公開鍵暗号方式を用いる場合の処理フローとなっている。したがって、転送鍵と更新鍵の更新処理にカード秘密鍵１０３Ａとカード秘密鍵１０３Ｂを使用する。以下、処理Ｓ８００３以降の処理について説明していく。
【００８４】
決済端末１１０は、処理Ｓ８００４として、ＩＣカード１００Ａに、転送鍵更新許可要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、カード公開鍵証明書１０２Ｂが含まれている。ＩＣカード１００Ａは、転送鍵更新許可要求として、カード公開鍵証明書１０２Ｂを受信すると、処理Ｓ８１０２Ａとして、更新カード公開鍵証明書１０２ＢをＣＡ公開鍵１０１で検証し、検証が成功したら、更新乱数８１２１を生成する。そして、更新乱数８１２１をＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、更新乱数８１２１は、不正なカードによってＩＣカード１００Ａの転送鍵１０７Ａが不正に書き換えられないように、動的認証を行うために用いる。また、更新乱数８１２１の乱数生成アルゴリズムは、本発明では特に規定しない。
【００８５】
次に、決済端末１１０は、処理Ｓ８００５として、ＩＣカード１００Ｂに、転送鍵取得要求を、ＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、カード公開鍵証明書１０２Ａと、更新乱数８１２１が含まれている。ＩＣカード１００Ｂは、転送鍵取得要求として、カード公開鍵証明書１０２Ａと、更新乱数８１２１を受信すると、処理Ｓ８１０２Ｂとして、まず、カード公開鍵証明書１０２Ａを、ＣＡ公開鍵１０１で検証する。検証が成功したら、更新鍵ＩＤ　１０４Ｂと更新鍵１０５Ｂと転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、カード公開鍵証明書１０２Ａに含まれるカード公開鍵で暗号化する。次に、処理Ｓ８１０３Ｂとして、カード秘密鍵１０３Ｂを用いて、更新鍵ＩＤ　１０４Ｂと更新鍵１０５Ｂと転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータと、更新乱数８１２１とに対するデジタル署名８１２２を生成する。そして、更新鍵ＩＤ　１０４Ｂと更新鍵１０５Ｂと転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータと、デジタル署名８１２２を、ＡＰＤＵレスポンスで、決済端末１１０に送信する。ここで、デジタル署名８１２２の作成アルゴリズムは、公開鍵暗号方式に基づいたものであれば、どのようなアルゴリズムでも本発明の適用範囲である。
【００８６】
次に、決済端末は、処理Ｓ８００６として、ＩＣカード１００Ａに、転送鍵更新要求をＡＰＤＵコマンドで送信する。このＡＰＤＵコマンドには、デジタル署名８１２２と、更新鍵ＩＤ　１０４Ｂと更新鍵１０５Ｂと転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータとが含まれている。ＩＣカード１００Ａは、転送鍵更新要求として、デジタル署名８１２２と、更新鍵ＩＤ　１０４Ｂと更新鍵１０５Ｂと転送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを暗号化したデータを受信すると、まず、処理Ｓ８１０３Ａとして、カード公開鍵１０２Ｂを用いて、デジタル署名８１２２の検証を行う。この検証が成功したら、動的認証が成功したと見なし、次に、処理Ｓ８１０４Ａとして、転更新鍵ＩＤ　１０４Ｂと更新鍵１０５Ｂと送鍵ＩＤ　１０６Ｂと転送鍵１０７Ｂを、カード秘密鍵１０３Ａで復号化する。そして、処理Ｓ８１０５Ａを行う。この処理では、更新鍵ＩＤ１０４Ｂの値が、更新鍵ＩＤ上限値１１３Ａと更新鍵ＩＤ１０４Ａの値との間に含まれ、且つ、転送鍵ＩＤ１０６Ｂの値が、転送鍵ＩＤ上限値１１２Ａと転送鍵ＩＤ１０６Ａの値との間に含まれていることを確認する。もし確認が失敗したら転送鍵の更新は行わない。もし確認が成功したら、更新鍵ＩＤ　１０４Ａの値と更新鍵１０５Ａの値を、更新鍵ＩＤ　１０４Ｂの値と更新鍵１０５Ｂの値に書き換える。また、転送鍵ＩＤ　１０６Ａの値と転送鍵１０７Ａの値を、転送鍵ＩＤ　１０６Ｂの値と転送鍵１０７Ｂの値に書き換える。
【００８７】
以上説明した手順において、処理Ｓ８００１と、処理Ｓ８００２と、処理Ｓ８００３と、処理Ｓ８００４と、処理Ｓ８００５と、処理Ｓ８００６は、決済端末１１０の演算制御手段３０３で実行する決済プログラム３０５により処理される。また、処理Ｓ８１０１Ａと、処理Ｓ８１０２Ａと、処理Ｓ８１０３Ａと、処理Ｓ８１０４Ａと、処理Ｓ８１０５Ａは、ＩＣカード１００Ａの演算制御手段２０３Ａで実行する決済プログラム２０５Ａにより処理される。また、処理Ｓ８１０１Ｂと、処理Ｓ８１０２Ｂと、処理Ｓ８１０３Ｂは、ＩＣカード１００Ｂの演算制御手段２０３Ｂで実行する決済プログラム２０５Ｂにより処理される。
【００８８】
以上の手順により、転送鍵をより新しい値に、安全に書き換えることができる。本発明に係わる第５の実施例においては、ＩＣカード１００ＡとＩＣカード１００Ｂとの間で、転送鍵が異なっていても、同一の更新鍵を共有していれば、これらの更新鍵を用いて、両カード内の転送鍵の値を、新しい値に更新することが可能になる。また、同一の更新鍵を共有していない場合でも、カード公開鍵およびカード秘密鍵を用いて、両カード内の更新鍵と転送鍵の値を、新しい値に更新することが可能になる。例えば、有効期限が切れたＩＣカードを、新しいＩＣカードに切替える時に、転送鍵を新しい値に更新しておけば、この新しいＩＣカードとバリュー転送を行った、古いＩＣカードの転送鍵の値を、更新鍵を使って新しい値に更新することができる。この時の転送鍵の更新は、共通鍵暗号方式を使って行うため、短時間に処理を完了することが可能である。さらに、新しいＩＣカードに切替える時に、更新鍵も新しい値に更新することも可能である。この場合は、新しいカードと古いカードの間で更新鍵が異なってしまうが、カード公開鍵およびカード秘密鍵を用いて、更新鍵と転送鍵を更新することが可能になる。
【００８９】
なお、以上の各実施例での説明において転送鍵ＩＤ上限値を設定したが、必須ではない。設定しない場合、何度でも更新できるので長期間に渡りＩＣカードを利用することができる。一方、上述のように設定した場合、ＩＣカードに一定の有効期間を持たせることができ、上限値に達した時点でＩＣカードを回収することができる。
【００９０】
また、以上の各実施例で説明したとおり、本発明によればシステム全体のセキュリティを向上できるが、例えば、あるシステムで転送鍵が漏洩してしまった場合、従来の転送鍵の更新が不可能なシステムではセキュリティを失ってしまう。回復するには全てのＩＣカードを回収し新たな転送鍵を設定する必要がある。一方本発明によれば、バリュー転送の前処理として転送鍵を更新することができるので、全てのＩＣカードを回収するということなく、新たな転送鍵の設定をすることができる。従って万一転送鍵が漏洩した場合でも容易にセキュリティを回復することができる。また、転送鍵が漏洩した場合でなくとも定期的に転送鍵を更新するようにすればセキュリティをさらに向上することができる。
【００９１】
【発明の効果】
以上説明したように、本発明によれば、ＩＣカード間のバリュー転送に、共通鍵暗号方式を用いた場合に、バリュー転送で使用する暗号鍵を容易に更新可能にすることで、システム全体のセキュリティを向上できるＩＣカードおよび決済端末を提供することができる。
【図面の簡単な説明】
【図１】第１の実施例に係わる、バリュー転送システムの構成要素ブロック図である。
【図２】第１の実施例に係わる、鍵情報のデータ構成図である。
【図３】第１の実施例に係わる、転送鍵更新の処理フローである。
【図４】バリュー転送の処理フローである。
【図５】第２の実施例に係わる、バリュー転送システムの構成要素ブロック図である。
【図６】第２の実施例に係わる、鍵情報のデータ構成図である。
【図７】第２の実施例に係わる、転送鍵更新の処理フローである。
【図８】第３の実施例に係わる、バリュー転送システムの構成要素ブロック図である。
【図９】第３の実施例に係わる、鍵情報のデータ構成図である。
【図１０】第３の実施例に係わる、共通鍵暗号方式を用いた転送鍵更新の処理フローである。
【図１１】第３の実施例に係わる、公開鍵暗号方式を用いた転送鍵更新の処理フローである。
【図１２】第４の実施例に係わる、バリュー転送システムの構成要素ブロック図である。
【図１３】第４の実施例に係わる、鍵情報のデータ構成図である。
【図１４】第４の実施例に係わる、転送鍵更新の処理フローである。
【図１５】第５の実施例に係わる、バリュー転送システムの構成要素ブロック図である。
【図１６】第５の実施例に係わる、鍵情報のデータ構成図である。
【図１７】第５の実施例に係わる、共通鍵暗号方式を用いた転送鍵更新の処理フローである。
【図１８】第５の実施例に係わる、公開鍵暗号方式を用いた転送鍵更新の処理フローである。
【符号の説明】
１００Ａ…ＩＣカード、１００Ｂ…ＩＣカード、１１０…決済端末、２０１Ａ…通信手段、２０２Ａ…情報蓄積手段、２０３Ａ…演算制御手段、１１１Ａ…有効期限、１０８Ｂ…バリュー残高、２０４Ａ…鍵情報、３０１Ａ…カード読書き手段、３０１Ｂ…カード読書き手段、３０２…情報蓄積手段、３０３…演算制御手段、３０４…操作手段
【図１】
2004062556.tif 000003
【図２】
2004062556.tif 000004
【図３】
2004062556.tif 000005
【図４】
2004062556.tif 000006
【図５】
2004062556.tif 000007
【図６】
2004062556.tif 000008
【図７】
2004062556.tif 000009
【図８】
2004062556.tif 000010
【図９】
2004062556.tif 000011
【図１０】
2004062556.tif 000012
【図１１】
2004062556.tif 000013
【図１２】
2004062556.tif 000014
【図１３】
2004062556.tif 000015
【図１４】
2004062556.tif 000016
【図１５】
2004062556.tif 000017
【図１６】
2004062556.tif 000018
【図１７】
2004062556.tif 000019
【図１８】
2004062556.tif 000020