(57)【要約】【課題】セッション鍵の生成などに用いられるマスター鍵をセッション毎に変えることのできるＩＣカードを提供する。【解決手段】ＩＣカード１１は、ターミナル１２と共有するマスター鍵１１０を不揮発性メモリに記憶し、セッションで利用する派生鍵をマスター鍵１１０から生成する派生鍵生成手段１１１を備えている。マスター鍵１１０の鍵長を派生鍵の鍵長よりも長くすることで、派生鍵に対してマスター鍵１１０に冗長性を持たせ、派生鍵生成手段１１１は、派生情報に基づき、マスター鍵１１０の一部を用いてセッションごとに異なる派生鍵を生成し、ＩＣカード１１は、派生鍵生成手段１１１が生成した派生鍵を用いてターミナル１２とセッションすることを特徴とする。【選択図】図３
2008148070.tif 000002
【特許請求の範囲】
【請求項１】
ターミナルとのセッションに暗号演算を利用するＩＣカードであって、前記ＩＣカードは、ターミナルと共有するマスター鍵を不揮発性メモリに記憶し、セッションで利用する派生鍵を前記マスター鍵から生成する派生鍵生成手段を備え、前記マスター鍵の鍵長を前記派生鍵の鍵長よりも長くすることで、前記派生鍵に対して前記マスター鍵に冗長性を持たせ、前記派生鍵生成手段は、所定のアルゴリズムに基づき、前記マスター鍵の一部を用いてセッションごとに異なる前記派生鍵を生成し、前記ＩＣカードは、前記派生鍵生成手段が生成した前記派生鍵を用いて前記ターミナルとセッションすることを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、前記派生鍵生成手段は、前記派生鍵を生成するときに利用する前記マスター鍵のバイトとその並び順を示す派生情報に基き、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成する手段であることを特徴とするＩＣカード。
【請求項３】
請求項２に記載のＩＣカードにおいて、前記ＩＣカードの前記派生鍵生成手段は、乱数を用いて前記派生情報を生成し、生成した前記派生情報に基づき前記派生鍵を生成することを特徴とするＩＣカード。
【請求項４】
請求項２に記載のＩＣカードにおいて、前記ＩＣカードの前記派生鍵生成手段は、前記ＩＣカードとセッションする前記ターミナルから受信した前記派生情報を用いて前記派生鍵を生成することを特徴とするＩＣカード。
【請求項５】
請求項３に記載のＩＣカードにおいて、前記ＩＣカードは、ターミナル認証用の前記マスター鍵を記憶し、前記ＩＣカードは、前記派生鍵生成手段が生成した前記派生情報を前記ターミナルに送信するコマンドと、ターミナル認証用の前記マスター鍵から生成した前記派生鍵を用いて、前記ターミナルから送信されるターミナル認証コードの正当性を検証するコマンドを備えていることを特徴とするＩＣカード。
【請求項６】
請求項４に記載のＩＣカードにおいて、前記ＩＣカードは、ＩＣカード認証用の前記マスター鍵を記憶し、前記ターミナルから受信した前記派生情報に基づき、ＩＣカード認証用の前記マスター鍵から生成した前記派生鍵を用いて、前記ターミナルへ送信するＩＣカード認証コードを生成するコマンドを備えていることを特徴とするＩＣカード。
【請求項７】
ＩＣカードが、暗号演算を利用したセッションに用いる派生鍵の生成方法であって、鍵長を前記派生鍵の鍵長よりも長くし、前記派生鍵に対して冗長性を持たせたマスター鍵を前記ＩＣカードに記憶させ、所定のアルゴリズムに基づき、前記マスター鍵の一部を用いてセッションごとに異なる前記派生鍵を生成することを特徴とする派生鍵の生成方法。
【請求項８】
請求項７に記載の派生鍵の生成方法において、前記派生鍵として利用する前記マスター鍵のバイトとその並び順を示す派生情報に基き、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成することを特徴とする派生鍵の生成方法。
【請求項９】
請求項８に記載の派生鍵の生成方法において、前記ＩＣカードは、乱数を用いて前記派生情報を生成し、生成した前記派生情報を用いて前記派生鍵を生成することを特徴とする派生鍵の生成方法。
【請求項１０】
請求項８に記載の派生鍵の派生方法において、前記ＩＣカードは、前記ＩＣカードとセッションするターミナルから受信した前記派生情報を用いて前記派生鍵を生成することを特徴とする派生鍵の生成方法。
【請求項１１】
ＩＣカードがターミナルを認証するターミナル認証方法であって、ターミナルと前記ＩＣカードは、前記ターミナルの認証で利用する派生鍵の鍵長よりも長い鍵長のターミナル認証用のマスター鍵を記憶し、前記ＩＣカードが、前記派生鍵として利用する前記マスター鍵のバイトとその並び順を示す派生情報を生成するステップ、前記ＩＣカードが、前記ターミナルの認証に利用するチャレンジと共に、生成した前記派生情報を送信するステップ、前記ターミナルが、受信した前記派生情報に基づき、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成するステップ、前記ターミナルが前記チャレンジから認証コードを生成し前記ＩＣカードに送信するステップ、前記ＩＣカードが、前記派生情報に基づき、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成し、生成した前記派生鍵を用いて、前記ターミナルから受信した前記認証コードを検証するステップを備えることを特徴とするターミナル認証方法。
【請求項１２】
ターミナルがＩＣカードを認証するＩＣカード認証方法であって、前記ターミナルと前記ＩＣカードは、前記ＩＣカードの認証で利用する派生鍵の鍵長よりも長い鍵長のＩＣカード認証用のマスター鍵を記憶し、前記ターミナルが、前記派生鍵として利用する前記マスター鍵のバイトとその並び順を示す派生情報を生成するステップ、前記ターミナルが、前記ＩＣカードの認証に利用するチャレンジと共に、生成した前記派生情報を前記ＩＣカードに送信するステップ、前記ＩＣカードが、受信した前記派生情報に基づき、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成するステップ、前記ＩＣカードが前記チャレンジから認証コードを生成し前記ターミナルへ送信するステップ、前記ターミナルが、前記派生情報に基づき、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成し、生成した前記派生鍵を用いて、前記認証コードを検証するステップを備えることを特徴とするＩＣカード認証方法。
【請求項１３】
ターミナルと共有するマスター鍵を不揮発性メモリに記憶し、ターミナルとのセッションに暗号演算を利用するＩＣカードを、所定のアルゴリズムに基づき、前記マスター鍵の一部を用いて、前記ターミナルとのセッションに利用する前記派生鍵を生成する派生鍵生成手段として機能させるためのコンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムにおいて、前記派生鍵を生成するときに利用する前記マスター鍵のバイトとその並び順を示す派生情報に基き、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成する前記派生鍵生成手段として、前記ＩＣカードを機能させるためのコンピュータプログラム。
【請求項１５】
請求項１４に記載のコンピュータプログラムにおいて、乱数を用いて前記派生情報を生成し、生成した前記派生情報に基づき前記派生鍵を生成する前記派生鍵生成手段として、前記ＩＣカードを機能させるためのコンピュータプログラム。
【請求項１６】
請求項１４に記載のコンピュータプログラムにおいて、前記ＩＣカードとセッションするターミナルから受信した前記派生情報を用いて前記派生鍵を生成する前記派生鍵生成手段として、前記ＩＣカードを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣチップが実装されたカード媒体であるＩＣカードに関し、更に詳しくは、ＩＣカードに秘匿に記憶されたマスター鍵の耐タンパー性を向上させる技術に関する。
【背景技術】
【０００２】
ＩＣカードとターミナル間のセッション（例えば、相互認証）では暗号技術が用いられ、ＩＣカードやターミナルには、ＩＣカードとターミナル間のセッションに利用される暗号鍵が秘匿に記憶される。
ＩＣカードに記憶された暗号鍵は、線形解読法などの様々な解読法によって解読される危険性があるため、ＩＣカードには、暗号鍵の解読に対する高い耐タンパー性が要求される。
【０００３】
相互認証に利用する暗号鍵の解読に対する耐タンパー性を向上させる一つの方法として、ＩＣカードとターミナルの双方が共有している暗号鍵であるマスター鍵から、セッションで利用する暗号鍵であるセッション鍵を生成し、生成したセッション鍵を利用してセッションする方法が開示されている（例えば、非特許文献１）。
【０００４】
非特許文献１では、暗号化されたメッセージを伝送するごとにインクリメントされるカウンタ値（４ バイト）を右詰めし、上位４バイトを "００ｈ"で埋めた8 バイトのデータと、マスター鍵（８バイト）との排他的論理和を演算することで、マスター鍵からセッション鍵を生成する。
セッション鍵はセッション毎に変わるため、マスター鍵の解読に対する耐タンパー性を向上させることができる。
【０００５】
また、特許文献１では、ＩＣカードに複数の暗号鍵を秘匿に記憶させ、使用していた暗号鍵の有効期限が切れた場合など、使用する暗号鍵を変更することで、ＩＣカードに記憶した暗号鍵の解読に対する耐タンパー性を向上させる発明が開示されている。
【非特許文献１】ＪＩＣＳＡＰ  ＩＣカード仕様  Ｖ２．０                      第３部共通コマンド  付属書Ｄ                      ＩＣカードシステム利用促進協議会 平成１３年７月策定
【特許文献１】特開２０００−９２０４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしならが、非特許文献１で開示されている発明では、毎回、同じマスター鍵を使用してセッション鍵が生成されるため、セッション鍵がマスター鍵への攻撃の糸口になってしまう問題がある。
また、特許文献１で開示されている発明では、有効期限内は同じ暗号鍵が使用されるため、使用しているマスター鍵に対して解読法の攻撃を受けてしまう問題がある。
【０００７】
そこで、本発明は、ＩＣカードの不揮発性メモリに記憶され、セッション鍵の生成などに用いられるマスター鍵をセッション毎に変えることのできるＩＣカード、マスター鍵から生成される派生鍵の生成方法、マスター鍵から生成される派生鍵を用いたターミナル認証方法・ＩＣカード認証方法、及び、ＩＣカードに実装されるコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決する第１の発明は、ターミナルとのセッションに暗号演算を利用するＩＣカードであって、前記ＩＣカードは、ターミナルと共有するマスター鍵を不揮発性メモリに記憶し、セッションで利用する派生鍵を前記マスター鍵から生成する派生鍵生成手段を備え、前記マスター鍵の鍵長を前記派生鍵の鍵長よりも長くすることで、前記派生鍵に対して前記マスター鍵に冗長性を持たせ、前記派生鍵生成手段は、所定のアルゴリズムに基づき、前記マスター鍵の一部を用いてセッションごとに異なる前記派生鍵を生成し、前記ＩＣカードは、前記派生鍵生成手段が生成した前記派生鍵を用いて前記ターミナルとセッションすることを特徴とする。
【０００９】
上述した第１の発明によれば、前記ＩＣカードに記憶される前記マスター鍵に冗長性を持たせ、セッションごとに異なる前記派生鍵を生成し、前記派生鍵をセッションに利用することで、同じ前記マスター鍵をセッションに利用しないため、前記マスター鍵の耐タンパー性を高めることができる。
【００１０】
更に、第２の発明は、第１の発明に記載のＩＣカードにおいて、前記派生鍵生成手段は、前記派生鍵を生成するときに利用する前記マスター鍵のバイトとその並び順を示す派生情報に基き、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成する手段であることを特徴とする。
【００１１】
上述した第２の発明によれば、前記ＩＣカードから前記ターミナルへ前記派生情報を送信すれば、前記ＩＣカードと同じ前記派生鍵を前記ターミナルで生成することが可能になる。
【００１２】
更に、第３の発明は、第２の発明に記載のＩＣカードにおいて、前記ＩＣカードの前記派生鍵生成手段は、乱数を用いて前記派生情報を生成し、生成した前記派生情報に基づき前記派生鍵を生成することを特徴とする。
【００１３】
上述した第３の発明によれば、前記派生情報を前記ＩＣカード内部で生成することができる。
【００１４】
更に、第４の発明は、第２の発明に記載のＩＣカードにおいて、前記ＩＣカードの前記派生鍵生成手段は、前記ＩＣカードとセッションする前記ターミナルから受信した前記派生情報を用いて前記派生鍵を生成することを特徴とする。
【００１５】
上述した第４の発明によれば、前記ターミナルが生成した前記派生情報に基づき、前記マスター鍵から前記派生鍵を生成することができる。
【００１６】
更に、第５の発明は、第３の発明に記載のＩＣカードにおいて、前記ＩＣカードは、ターミナル認証用の前記マスター鍵を記憶し、前記ＩＣカードは、前記派生鍵生成手段が生成した前記派生情報を前記ターミナルに送信するコマンドと、ターミナル認証用の前記マスター鍵から生成した前記派生鍵を用いて、前記ターミナルから送信されるターミナル認証コードの正当性を検証するコマンドを備えていることを特徴とする。
【００１７】
上述した第５の発明によれば、ターミナル認証時に利用する前記マスター鍵の耐タンパー性を高めて、前記ＩＣカードは、前記ターミナル認証コードの正当性を検証することができる。
【００１８】
更に、第６の発明は、第４の発明に記載のＩＣカードにおいて、前記ＩＣカードは、ＩＣカード認証用の前記マスター鍵を記憶し、前記ターミナルから受信した前記派生情報に基づき、ＩＣカード認証用の前記マスター鍵から生成した前記派生鍵を用いて、前記ターミナルへ送信するＩＣカード認証コードを生成するコマンドを備えていることを特徴とする。
【００１９】
上述した第６の発明によれば、ＩＣカード認証時に利用する前記マスター鍵の耐タンパー性を高めて、前記ＩＣカードは前記ＩＣカード認証コードを生成することができる。
【００２０】
更に、第７の発明は、ＩＣカードが、暗号演算を利用したセッションに用いる派生鍵の生成方法であって、鍵長を前記派生鍵の鍵長よりも長くし、前記派生鍵に対して冗長性を持たせたマスター鍵を前記ＩＣカードに記憶させ、所定のアルゴリズムに基づき、前記マスター鍵の一部を用いてセッションごとに異なる前記派生鍵を生成することを特徴とする。
【００２１】
更に、第８の発明は、第７の発明に記載の派生鍵の生成方法において、前記派生鍵として利用する前記マスター鍵のバイトとその並び順を示す派生情報に基き、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成することを特徴とする。
【００２２】
更に、第９の発明は、第８の発明に記載の派生鍵の生成方法において、前記ＩＣカードは、乱数を用いて前記派生情報を生成し、生成した前記派生情報を用いて前記派生鍵を生成することを特徴とする。
【００２３】
更に、第１０の発明は、第８の発明に記載の派生鍵の派生方法において、前記ＩＣカードは、前記ＩＣカードとセッションするターミナルから受信した前記派生情報を用いて前記派生鍵を生成することを特徴とする。
【００２４】
上記第７の発明から上記第１０の発明によれば、前記第１の発明から前記第４の発明と同様の効果が得られる。
【００２５】
更に、第１１の発明は、ＩＣカードがターミナルを認証するターミナル認証方法であって、前記ターミナルと前記ＩＣカードは、前記ターミナルの認証で利用する派生鍵の鍵長よりも長い鍵長のターミナル認証用のマスター鍵を記憶し、前記ＩＣカードが、前記派生鍵として利用する前記マスター鍵のバイトとその並び順を示す派生情報を生成するステップ、前記ＩＣカードが、前記ターミナルの認証に利用するチャレンジと共に、生成した前記派生情報を送信するステップ、前記ターミナルが、受信した前記派生情報に基づき、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成するステップ、前記ターミナルが前記チャレンジから認証コードを生成し前記ＩＣカードに送信するステップ、前記ＩＣカードが、前記派生情報に基づき、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成し、生成した前記派生鍵を用いて、前記ターミナルから受信した前記認証コードを検証するステップを備える。
【００２６】
上述した第１１の発明によれば、ターミナル認証時に利用する前記マスター鍵の耐タンパー性を高めて、前記ターミナルは、前記ターミナル認証コードを生成でき、更に、前記ＩＣカードは、前記ターミナル認証コードの正当性を検証することができる。
【００２７】
更に、第１２の発明は、ターミナルがＩＣカードを認証するＩＣカード認証方法であって、前記ターミナルと前記ＩＣカードは、前記ＩＣカードの認証で利用する派生鍵の鍵長よりも長い鍵長のＩＣカード認証用のマスター鍵を記憶し、前記ターミナルが、前記派生鍵として利用する前記マスター鍵のバイトとその並び順を示す派生情報を生成するステップ、前記ターミナルが、前記ＩＣカードの認証に利用するチャレンジと共に、生成した前記派生情報を前記ＩＣカードに送信するステップ、前記ＩＣカードが、受信した前記派生情報に基づき、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成するステップ、前記ＩＣカードが前記チャレンジから認証コードを生成し前記ターミナルへ送信するステップ、前記ターミナルが、前記派生情報に基づき、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成し、生成した前記派生鍵を用いて、前記認証コードを検証するステップを備える。
【００２８】
上述した第１２の発明によれば、ＩＣカード認証時に利用する前記マスター鍵の耐タンパー性を高めて、前記ＩＣカードは前記ＩＣカード認証コードを生成でき、更に、前記ターミナルは、前記ＩＣカード認証コードを検証することができる。
【００２９】
更に、第１３の発明は、ターミナルと共有するマスター鍵を不揮発性メモリに記憶し、ターミナルとのセッションに暗号演算を利用するＩＣカードを、所定のアルゴリズムに基づき、前記マスター鍵の一部を用いて、前記ターミナルとのセッションに利用する前記派生鍵を生成する派生鍵生成手段として機能させるためのコンピュータプログラムである。
【００３０】
更に、第１４の発明は、第１３の発明に記載のコンピュータプログラムにおいて、前記派生鍵を生成するときに利用する前記マスター鍵のバイトとその並び順を示す派生情報に基き、前記マスター鍵から抽出したバイトを組み合せることで前記派生鍵を生成する前記派生鍵生成手段として、前記ＩＣカードを機能させるためのコンピュータプログラムである。
【００３１】
更に、第１５の発明は、第１４の発明に記載のコンピュータプログラムにおいて、乱数を用いて前記派生情報を生成し、前記派生情報に基づき前記派生鍵を生成する前記派生鍵生成手段として、前記ＩＣカードを機能させるためのコンピュータプログラムである。
【００３２】
更に、第１６の発明は、第１４の発明に記載のコンピュータプログラムにおいて、前記ＩＣカードとセッションするターミナルから受信した前記派生情報を用いて前記派生鍵を生成する前記派生鍵生成手段として、前記ＩＣカードを機能させるためのコンピュータプログラムである。
【００３３】
上記第１３の発明から上記第１６の発明によれば、前記第１の発明から前記第４の発明と同様の効果が得られる。
【発明の効果】
【００３４】
上述した発明によれば、ＩＣカードの不揮発性メモリに記憶され、セッション鍵の生成に用いられるマスター鍵をセッション毎に変えることのできるＩＣカード、マスター鍵から生成される派生鍵の生成方法、マスター鍵から生成される派生鍵を用いたターミナル認証方法・ＩＣカード認証方法、及び、ＩＣカードに実装されるコンピュータプログラムを提供できる。
【発明を実施するための最良の形態】
【００３５】
＜派生鍵の生成方法＞
ここから、本発明に係る派生鍵の生成方法について、図を参照しながら詳細に説明する。  本発明に係る派生鍵の生成方法は、ＩＣカードとターミナル間のセッション（例えば、相互認証）をより安全にするために、派生鍵の基になるマスター鍵に冗長性をもたせ、セッションごとに異なる派生鍵を生成し、生成した派生鍵をセッションに利用することで、同じマスター鍵をセッションに利用しないため、マスター鍵の耐タンパー性を高めることができる。
【００３６】
例えば、本発明に係る派生鍵の生成方法で生成した派生鍵を非特許文献１に記載の認証用マスター鍵とすることで、セッションごとに利用する認証用マスター鍵は変更され、ＩＣカードに記憶される認証用マスター鍵の耐タンパー性を高めることができる。
【００３７】
まず、マスター鍵とマスター鍵から生成される派生鍵について説明する。図１は、マスター鍵１と派生鍵２を説明する図で、図２は、マスター鍵１から派生鍵２を生成する手順を示したフロー図である。
【００３８】
図１で図示したマスター鍵１は、ＤＥＳ（DES: Data Encryption Standard）用の８バイトの派生鍵２を生成するための暗号鍵で、マスター鍵１の鍵長は派生鍵２の鍵長よりも４バイト長く、マスター鍵１の鍵長は１２バイトとしている。
なお、図１においては、マスター鍵１の各バイトを区別するために、マスター鍵１の先頭バイトから順に各バイトにＫ0~Ｋ11の記号を付与している。
【００３９】
派生鍵２とは、マスター鍵１から抽出された８個のバイトを組み合せることで得られる暗号鍵で、図１の派生鍵２では、マスター鍵１のＫ0、Ｋ1、Ｋ3、Ｋ5、Ｋ6、Ｋ7、Ｋ8、Ｋ11の８個のバイトが抽出され、Ｋ7、Ｋ11、Ｋ0、Ｋ5、Ｋ8、Ｋ3、Ｋ6そしてＫ1の順に並べられた暗号鍵である。
【００４０】
派生鍵２を生成するためにマスター鍵１から抽出するバイトとその並び順を示す情報が派生情報３である。
図１で図示した派生情報３は１次元のデータテーブルで、データテーブルの各要素の値はマスター鍵１のバイトを示し、各要素の順序によって、マスター鍵１のバイトの並び順が示される。
【００４１】
例えば、図１においては、派生情報３は〔７、１１、０、５、８、３、６、１〕で、最初の要素の値が「７」であるため、マスター鍵１の７番目のバイト（Ｋ7）が派生鍵２の１バイト目に配置されることを意味する。
すなわち、図１で図示した派生情報３に基づけば、マスター鍵１から派生鍵２を生成するために、マスター鍵１のＫ0、Ｋ1、Ｋ3、Ｋ5、Ｋ6、Ｋ7、Ｋ8およびＫ11が抽出され、Ｋ7、Ｋ11、Ｋ0、Ｋ5、Ｋ8、Ｋ3、Ｋ6そしてＫ1の各バイトを順に並べることで、マスター鍵１から派生鍵２は生成される。
【００４２】
このように、派生情報３によって、マスター鍵１から生成される派生鍵２は一意に定まるが、派生情報３が異なると、マスター鍵１から生成される派生鍵２は異なる。
ＩＣカードとターミナルの双方で同じマスター鍵１を記憶し、派生情報３を共有することができれば、ＩＣカードとターミナルの双方でマスター鍵１から同じ派生鍵２を生成することが可能である。
【００４３】
なお、図１において、マスター鍵１の鍵長は１２バイトとしているが、マスター鍵１の鍵長が派生鍵２の鍵長よりも長ければ、マスター鍵１の鍵長は任意でよい。
マスター鍵１の鍵長を長くすればするほど、マスター鍵１から生成可能な派生鍵２の数が増えるため、ＩＣカードに秘匿に記憶されるマスター鍵１の耐タンパー性をより高めることができる。
【００４４】
図２を参照しながら、マスター鍵１から派生鍵２を派生する手順について説明する。この手順の最初のステップＳ１は、派生鍵２を生成するときに利用するマスター鍵１のバイトとその並び順を示す派生情報３を生成するステップである。
【００４５】
このステップＳ１では、例えば、１バイトの乱数を生成し、生成した乱数を派生鍵２の鍵長で除算したときの余りを派生情報３の要素の値とし、この処理を派生鍵２の鍵長だけ繰り返すことで派生情報３を生成することができる。
【００４６】
次のステップＳ２は、ステップＳ１で生成した派生情報３に基づいて、マスター鍵１から派生鍵２を派生するステップである。
このステップＳ２では、ステップＳ１で生成した派生情報３に基づき、マスター鍵１からバイトを抽出し、派生情報３に基づき、抽出したバイトを組み合せることで、マスター鍵１から派生鍵２を生成する。
このステップをもって、マスター鍵１から派生鍵２を生成する手順は終了する。
【００４７】
＜ＩＣカードシステム＞
ここから、これまで説明した派生鍵の生成方法によって生成される派生鍵を利用して、ＩＣカード１１とターミナル１２間で相互認証するＩＣカードシステム１０について説明する。
図３は、ＩＣカードシステム１０のブロック図である。
【００４８】
図３に図示したように、ターミナル１２はマスター鍵１２０を記憶し、ターミナル１２は、上述した手順に従いマスター鍵１２０から派生鍵を生成する派生鍵生成手段１２１と、派生鍵生成手段１２１が生成する派生鍵を利用して、ターミナル１２とＩＣカード１１間の相互認証を行う相互認証手段１２２を備える。
ターミナル１２に備えられた派生鍵生成手段１２１及び相互認証手段１２２は、ターミナル１２に実装されるコンピュータプログラムで実現している。
【００４９】
また、ＩＣカード１１は、ターミナル１２と同じ値のマスター鍵１１０を記憶し、更に、ＩＣカード１１のコマンドとして、ターミナルから送信される認証コードを認証するターミナル認証コマンド１１２と、ターミナルへ送信する認証コードを生成する認証コード生成コマンド１１４と、乱数を生成し、生成した乱数をターミナル１２へ送信するチャレンジコマンド１１３を備え、更に、上述した手順に従いマスター鍵１１０から派生鍵を生成する派生鍵生成手段１１１を備える。
ＩＣカード１１に備えられた各コマンド及び派生鍵生成手段１１１は、ＩＣカード１１に実装されるコンピュータプログラムで実現している。
【００５０】
ここから、図３で示したＩＣカードシステム１０において、ターミナル１２とＩＣカード１１間で相互認証する動作手順について説明する。
図４は、ターミナル１２とＩＣカード１１間で相互認証する手順を示したフロー図である。
【００５１】
この手順の最初のステップＳ１０は、ターミナル１２がＩＣカード１１をリセットするステップで、ターミナル１２はＩＣカード１１を活性化させるために、ＩＳＯ／ＩＥＣ７８１６の手順に従い、ＩＣカード１１をリセットする。
【００５２】
次のステップＳ１１は、ＩＣカード１１の派生鍵生成手段１１１が派生情報を生成するステップである。
ＩＣカード１１が派生情報を生成するタイミングは任意でよいが、本実施の形態では、ターミナル１２によってＩＣカード１１がリセットされたときに、ＩＣカード１１は乱数を発生させ、派生鍵を生成するときに利用する派生情報を生成し、ＩＣカード１１が非活性化されるまで、生成した派生情報をＩＣカード１１の揮発性メモリ（例えば、ＲＡＭ）に保持する。
【００５３】
次のステップＳ１２は、ＩＣカード１１がＡＴＲ（Answer to Reset）をターミナル１２に返信するステップである。
ＩＣカード１１がＡＴＲをターミナル１２に返信することで、ターミナル１２とＩＣカード１１間でのコマンドメッセージ・レスポンスメッセージが可能になる。
なお、ＩＣカード１１は、ステップＳ１１で生成した派生情報はこのＡＴＲには含ませない。
【００５４】
次のステップＳ１３は、ターミナル１２の相互認証手段１２２が作動し、ＩＣカード１１がターミナル１２を認証するために、ＩＣカード１１に備えられたチャレンジコマンド１１３のコマンドメッセージを、ターミナル１２がＩＣカード１１に送信するステップである。
【００５５】
チャレンジコマンド１１３のコマンドメッセージをＩＣカード１１が受信すると、ステップＳ１４で、ＩＣカード１１はチャレンジコマンド１１３で指定された数の乱数を生成し、ステップＳ１５で、ＩＣカード１１は、ステップＳ１４で生成した乱数とステップＳ１１で生成した派生情報を含むレスポンスメッセージを、チャレンジコマンド１１３のレスポンスとしてターミナル１２に返信する。
【００５６】
ターミナル１２はＩＣカード１１から乱数を受信すると、ステップＳ１６で、ターミナル１２の相互認証手段１２２は派生鍵生成手段１２１を作動させ、ＩＣカード１１から受信したレスポンスメッセージに含まれる派生情報に基づき、ターミナル１２が有するマスター鍵１２０から派生鍵を生成し、マスター鍵１２０から生成した派生鍵を用いて、ＩＣカード１１がターミナル１２を認証するための認証コード（以下、ターミナル認証コード）を生成する。
【００５７】
ターミナル１２の相互認証手段１２２はターミナル認証コードを生成すると、ステップＳ１７で、ターミナル認証コマンド１１２のコマンドメッセージをＩＣカード１１に送信する。
なお、このステップＳ１７でターミナル１２からＩＣカード１１に送信するターミナル認証コマンド１１２のコマンドメッセージには、ステップＳ１６で生成したターミナル認証コードが含まれる。
【００５８】
ＩＣカード１１が、ターミナル認証コマンド１１２のコマンドメッセージをターミナル１２から受信すると、ステップＳ１８で、ＩＣカード１１の派生鍵生成手段１１１は、ステップＳ１で生成した派生情報に基づき、ＩＣカード１１が有するマスター鍵１１０から派生鍵を生成し、マスター鍵１１０から派生させた派生鍵を用いて、ターミナル認証コマンド１１２のコマンドメッセージに含まれるターミナル認証コードの正当性を検証する。
【００５９】
そして、ＩＣカード１１は、ステップＳ１９で、ターミナル認証コードの正当性の検証結果を含むレスポンスメッセージをターミナル１２へ返信する。
【００６０】
ＩＣカード１１から送信されるターミナル認証コードの正当性の検証結果で成功が示される場合、ターミナル１２の相互認証手段１２２がＩＣカード１１を認証するために、ステップＳ２０で、ターミナル１２は乱数を生成し、ステップＳ２１で、生成した乱数を含む認証コード生成コマンド１１４のコマンドメッセージをＩＣカード１１に送信する。
【００６１】
ターミナル１２から認証コード生成コマンド１１４のコマンドメッセージを受信すると、ＩＣカード１１は、ステップＳ２２で、ステップＳ１８でマスター鍵１１０から生成した派生鍵を用いて、ターミナル１２がＩＣカード１１を認証するための認証コード（以下、ＩＣカード認証コード）を生成し、ステップＳ２３で、生成したＩＣカード認証コードを含むレスポンスメッセージをターミナル１２に返信する。
【００６２】
ターミナル１２は、ＩＣカード認証コードを含むレスポンスメッセージをＩＣカード１１から受信すると、ステップＳ２４で、ターミナル１２の相互認証手段１２２は、ステップＳ１６でマスター鍵１２０から生成した派生鍵を用いて、ＩＣカード認証コードの正当性を認証し、認証に成功した後、ＩＣカード１１を利用したサービスに係る処理を実行する。
このステップをもって、ターミナル１２とＩＣカード１１間で相互認証する手順は終了する。
【００６３】
なお、本発明は、これまで説明した実施の形態に限定されることなく、種々の変形が可能であって、それらも本発明の均等の範囲内である。
【００６４】
例えば、上述したＩＣカードシステム１０では、マスター鍵１１０、１２０から生成した派生鍵そのものを相互認証に利用したが、例えば、非特許文献１に記述された手順に従い、マスター鍵１１０、１２０から生成した派生鍵とカウンタの値とからセッション鍵を生成し、ＩＣカード１１とターミナル１２の相互認証にセッション鍵を用いることもできる。
【００６５】
更に、ＩＣカード１１及びターミナル１２が、それぞれ複数のマスター鍵１１０及び複数のマスター鍵１２０を有し、マスター鍵１１０及びマスター鍵１２０のそれぞれに有効期限を設定し、特許文献２で開示されているように、期日ごとに利用するマスター鍵及びマスター鍵１２０を変更することもできる。
【００６６】
更に、図４のフローでは、ＩＣカード１１がターミナル１２を認証するときも、ターミナル１２がＩＣカード１１を認証するときも、ステップＳ１でＩＣカードが生成した派生情報に基づいて、マスター鍵１１０、１２０から派生鍵を派生させていたが、ターミナル１２がＩＣカード１１を認証するときに、ターミナル１２側で生成した派生情報を利用してもよい。
【００６７】
このとき、ステップＳ２０で、ターミナル１２は乱数と共に派生情報を生成し、ステップＳ２１でＩＣカードへ送信される認証コード生成コマンド１１４のコマンドメッセージに、生成した乱数と派生情報を含ませ、ステップＳ２２で、ＩＣカード１１は受信した派生情報に基づき、マスター鍵１１０から派生鍵を生成し、派生鍵を利用してＩＣカード認証コードを生成する。
【００６８】
更に、ターミナル検証用のマスター鍵１１０、１２０と、ＩＣカード認証用のマスター鍵１１０、１２０を個別に設定することもできる。
【００６９】
このとき、ステップＳ１３からステップＳ１６の一連のステップで、ＩＣカード１１がターミナル１２を認証するときは、ＩＣカード１１側で生成された派生情報に基づいて、ターミナル検証用のマスター鍵１１０、１２０から派生鍵を生成し、ステップＳ２０からステップＳ２４の一連のステップで、ターミナル１２がＩＣカード１１を認証するときに、ターミナル１２側で生成された派生情報に基づいて、ＩＣカード検証用のマスター鍵１１０、１２０から派生鍵を生成する。
【図面の簡単な説明】
【００７０】
【図１】マスター鍵と派生鍵を説明する図。
【図２】マスター鍵から派生鍵を生成する手順を示したフロー図。
【図３】ＩＣカードとターミナル間で相互認証するＩＣカードシステムのブロック図。
【図４】ターミナルとＩＣカード間で相互認証する手順を示したフロー図。
【符号の説明】
【００７１】
１  マスター鍵、２  派生鍵、３  派生情報
１０  ＩＣカードシステム
１１  ＩＣカード
１１０  マスター鍵
１１１  派生鍵生成手段
１１２  ターミナル認証コマンド、
１１３  チャレンジコマンド
１１４  認証コード生成コマンド
１２  ターミナル
１２０  マスター鍵
１２１  派生鍵生成手段
１２２  相互認証手段
【図１】
2008148070.tif 000003
【図２】
2008148070.tif 000004
【図３】
2008148070.tif 000005
【図４】
2008148070.tif 000006