(57)【特許請求の範囲】
【請求項１】
外部装置からコマンドが入力されると、このコマンドに対応した処理を実行するＩＣカードにおいて、
それぞれが複数のレコードデータ領域に分割された複数のファイルを記憶する第１のメモリと、
この第１のメモリに記憶したファイルに対してカレント状態となっているレコードデータ領域を示すポインタ情報を複数の論理チャネル番号のそれぞれに対応づけて記憶する第２のメモリと、
外部装置と通信する通信手段と、
この通信手段により外部装置から論理チャネル番号を含むコマンドを受信すると、当該コマンドに含まれる論理チャネル番号の論理チャネルにおいて前記複数のファイル内から１つのファイルを選択するファイル選択手段と、
このファイル選択手段により選択されたファイルに対して前記コマンドで指定された論理チャネルでカレント状態となっているレコードデータ領域を示すポインタ情報を前記第２のメモリに記憶した情報に基づいて判定し、判定したポインタ情報に基づいて特定されるレコードデータ領域をアクセス対象とする処理手段と、
を具備したことを特徴とするＩＣカード。
【請求項２】
前記ポインタ情報は、前記レコードデータ領域の位置を示す位置情報である、ことを特徴とする請求項１記載のＩＣカード。
【請求項３】
前記ポインタ情報は、前記ファイル選択手段によりファイルが選択された場合にクリアされる、ことを特徴とする請求項１記載のＩＣカード。
【請求項４】
前記ポインタ情報は、前記ファイル内のレコードデータを識別するレコード番号情報である、ことを特徴とする請求項２記載のＩＣカード。
【請求項５】
外部装置から入力されるコマンドに応じて種々の処理を実行する制御素子を有するＩＣカードにおいて、
外部装置からの論理チャネル番号を含む認証処理に使用するデータの生成を要求するコマンドに応じて、当該コマンドに含まれる論理チャネル番号の論理チャネルでの認証処理に使用するデータを生成するデータ生成手段と、
このデータ生成手段により生成したデータを当該コマンドに含まれる論理チャネル番号の論理チャネルでの認証処理に使用するデータとして当該コマンドに含まれる論理チャネル番号に対応づけて保持するデータ保持手段と、
を具備したことを特徴とするＩＣカード。
【請求項６】
前記データ生成手段は、論理チャネル番号を含む認証処理に使用する乱数データの生成を要求するコマンドに応じて、当該コマンドに含まれる論理チャネル番号の論理チャネルでの認証処理に使用する乱数データを生成する、
ことを特徴とする前記請求項５に記載のＩＣカード。
【請求項７】
さらに、外部装置からの論理チャネル番号を含む認証コマンドが入力されると、当該認証コマンドに含まれる論理チャネル番号に対応づけて前記データ保持手段に保持されている認証処理に使用するデータを用いて認証処理を行う認証処理手段と、
を具備したことを特徴とする前記請求項５に記載のＩＣカード。
【請求項８】
外部装置からコマンドが入力されると、このコマンドに対応した処理を実行するＩＣカードにおいて、
外部装置と通信する通信手段と、
それぞれが複数のレコードデータ領域に分割された複数のファイルを記憶する第１のメモリと、この第１のメモリに記憶したファイルに対してカレント状態となっているレコードデータ領域を示すポインタ情報を複数の論理チャネル番号のそれぞれに対応づけて記憶する第２のメモリと、前記通信手段により外部装置から論理チャネル番号を含むコマンドを受信すると、当該コマンドに含まれる論理チャネル番号の論理チャネルにおいて前記複数のファイル内から１つのファイルを選択するファイル選択手段と、このファイル選択手段により選択されたファイルに対して前記コマンドで指定された論理チャネルでカレント状態となっているレコードデータ領域を示すポインタ情報を前記第２のメモリに記憶した情報に基づいて判定し、判定したポインタ情報に基づいて特定されるレコードデータ領域をアクセス対象とする処理手段とを具備するＩＣチップと、
前記通信手段と前記ＩＣチップとを埋設した本体と、
を具備したことを特徴とするＩＣカード。
【請求項９】
外部装置からコマンドが入力されると、このコマンドに対応した処理を実行するＩＣカードにおける処理方法であって、
それぞれが複数のレコードデータ領域に分割された複数のファイルを第１のメモリに記憶し、
この第１のメモリに記憶したファイルに対してカレント状態となっているレコードデータ領域を示すポインタ情報を複数の論理チャネル番号のそれぞれに対応づけて第２のメモリに記憶し、
外部装置からの論理チャネル番号を含むコマンドを入力すると、当該コマンドに含まれる論理チャネル番号の論理チャネルにおいて前記複数のファイル内から１つのファイルを選択し、
この選択されたファイルに対して前記コマンドで指定された論理チャネルでカレント状態となっているレコードデータ領域を示すポインタ情報を前記第２のメモリに記憶した情報に基づいて判定し、判定したポインタ情報に基づいて特定されるレコードデータ領域にアクセスする、
ことを特徴とするＩＣカードにおける処理方法。
【請求項１０】
通信手段により外部装置から受信するコマンドに応じて種々の処理を実行する制御素子を有するＩＣカードにおいて、
外部装置からの論理チャネル番号を含む認証処理に使用するデータの生成を要求するコマンドに応じて、当該コマンドに含まれる論理チャネル番号の論理チャネルでの認証処理に使用するデータを生成するデータ生成手段と、このデータ生成手段により生成したデータを当該コマンドに含まれる論理チャネル番号の論理チャネルでの認証処理に使用するデータとして当該コマンドに含まれる論理チャネル番号に対応づけて保持するデータ保持手段とを有するＩＣチップと、
前記通信手段と前記ＩＣチップとを埋設した本体と、
を具備したことを特徴とするＩＣカード。
【請求項１１】
外部装置から入力されるコマンドに応じて種々の処理を実行するＩＣカードにおける処理方法において、
外部装置からの論理チャネル番号を含む認証処理に使用するデータの生成を要求するコマンドに応じて、当該コマンドに含まれる論理チャネル番号の論理チャネルでの認証処理に使用するデータを生成し、
この生成したデータを当該コマンドに含まれる論理チャネル番号の論理チャネルでの認証処理に使用するデータとして当該コマンドに含まれる論理チャネル番号に対応づけて保持する、
ことを特徴とするＩＣカードにおける処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば、データの書込み、書換えが可能な不揮発性メモリおよびＣＰＵなどの制御素子を有し、外部からのデータの入出力を行なう手段を備えたＩＣチップを内蔵した、いわゆるＩＣカードと称される携帯可能電子装置に関する。
【背景技術】
【０００２】
一般に、この種のＩＣカードにあっては、国際標準仕様であるＩＳＯ／ＩＥＣ７８１６−４により、リニアＥＦ（エレメンタリファイル：Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ）およびサイクリックＥＦは、リードやレコードなどのコマンドでアクセスを行ない、アクセス方法についてはポインタ情報としてのレコードポインタ（Ｒｅｃｏｒｄ  Ｐｏｉｎｔｅｒ）などによることが記述されている。
【０００３】
例えば、ＩＳＯ／ＩＥＣ７８１６−４では、ロジカルチャネル（論理チャネル）により、複数のカレント状態を持つことが規定されているが、ロジカルチャネルごとのレコードポインタの動作については詳細に規定されていない。
【０００４】
また、従来のＩＣカードでは、認証処理に使用するデータを論理チャネルごとに保持することができない。つまり、認証コマンド及び認証コマンドに使用するデータを要求するコマンドをサポートする従来のＩＣカードでは、認証に使用するデータが複数の論理チャンネルで共通となっている。
【０００５】
例えば、ＩＳＯ  ／  ＩＥＣ  ７８１６−４に規定される“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドと“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドを使用して認証処理を行なう場合、従来のＩＣカードでは、ロジカルチャネル＃１で実行した“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドによるＣｈａｌｌｅｎｇｅデータ（乱数データ）がロジカルチャネル＃２でも使用できる。これは、ロジカルチャネルをアプリケーション毎に割り付けた場合、アプリケーション１で発生させたＣｈａｌｌｅｎｇｅデータをアプリケーション２でも使用できることを意味する。
【非特許文献１】ＩＳＯ７８１６−４
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のＩＣカードでは、各ロジカルチャネルに共通でレコードポインタを使用していたため、ロジカルチャネルを、ロジカルチャネル番号＃１→＃２→＃１と使用した場合、ロジカルチャネル＃１のレコードポインタの状態がロジカルチャネル＃２で変更されてしまうという問題点がある。
【０００７】
そこで、本発明は、ロジカルチャネルごとにポインタ情報を持つことによりロジカルチャネルごとのポインタ情報管理が可能になる携帯可能電子装置を提供することを目的とする。
【０００８】
また、従来のＩＣカードでは、ロジカルチャネル＃１で保持しているデータがロジカルチャネル＃２でも使用されてしまう問題がある。例えば、ロジカルチャネルをアプリケーション毎に割り付けた場合、アプリケーション１で発生させたＣｈａｌｌｅｎｇｅデータをアプリケーション２でも使用できることを意味する。これは、セキュリティ上好ましくないという問題がある。さらに、Ｃｈａｌｌｅｎｇｅデータをロジカルチャネル＃１で発生させた後に、ロジカルチャネル＃２でもＣｈａｌｌｅｎｇｅデータを発生させた場合、ロジカルチャネル＃１で発生させたＣｈａｌｌｅｎｇｅデータは、ロジカルチャネル＃２で発生させたＣｈａｌｌｅｎｇｅデータに変更されてしまう問題がある。
【０００９】
そこで、本発明は、ロジカルチャネル毎に、認証のためのデータを保持することができ、ロジカルチャネル毎の認証処理および認証処理のデータ管理が可能になるＩＣカードおよびＩＣカードにおける処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のＩＣカードは、外部装置からコマンドが入力されると、このコマンドに対応した処理を実行するものにおいて、それぞれが複数のレコードデータ領域に分割された複数のファイルを記憶する第１のメモリと、この第１のメモリに記憶したファイルに対してカレント状態となっているレコードデータ領域を示すポインタ情報を複数の論理チャネル番号のそれぞれに対応づけて記憶する第２のメモリと、外部装置と通信する通信手段と、この通信手段により外部装置から論理チャネル番号を含むコマンドを受信すると、当該コマンドに含まれる論理チャネル番号の論理チャネルにおいて前記複数のファイル内から１つのファイルを選択するファイル選択手段と、このファイル選択手段により選択されたファイルに対して前記コマンドで指定された論理チャネルでカレント状態となっているレコードデータ領域を示すポインタ情報を前記第２のメモリに記憶した情報に基づいて判定し、判定したポインタ情報に基づいて特定されるレコードデータ領域をアクセス対象とする処理手段とを有する。
【００１１】
この発明のＩＣカードは、外部から入力されるコマンドに応じて種々の処理を実行する制御素子を有するものにおいて、外部からの論理チャネル番号を含む認証処理に使用するデータの生成を要求するコマンドに応じて、当該コマンドに含まれる論理チャネル番号での認証処理に使用するデータを生成するデータ生成手段と、このデータ生成手段により生成したデータを当該コマンドに含まれる論理チャネル番号での認証処理に使用するデータとして当該コマンドに含まれる論理チャネル番号に対応づけて保持するデータ保持手段とを具備する。
【発明の効果】
【００１２】
本発明によれば、ロジカルチャネルごとにポインタ情報を持つことによりロジカルチャネルごとのポインタ情報管理が可能になるＩＣカードおよびＩＣカードにおける処理方法を提供できる。
【００１３】
また、本発明によれば、ロジカルチャネル毎に、認証のためのデータを保持することができ、ロジカルチャネル毎の認証処理および認証処理のデータ管理が可能になるＩＣカードおよびＩＣカードにおける処理方法を提供することを目的とする。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。  
図１は、本実施の形態に係るＩＣカードの構成を概略的に示すものである。本ＩＣカード１００は、外部装置（カードリーダライタ）との間でデータの送受信を行なう通信手段としての通信部１０２、および、１つ（あるいは複数）のＩＣチップ１０３から構成されている。
【００１５】
通信部１０２は、当該ＩＣカード１００が無線式ＩＣカードの場合にはアンテナおよび送受信部として構成され、無線式カードリーダライタから送信された変調波を非接触で受信したり外部へ変調波を送信するようになっている。また、受信した変調波から内部回路に供給するための電源やクロックパルスを生成するようになっている。また、当該ＩＣカード１００が接触式ＩＣカードの場合にはコンタクト部として構成され、カードリーダライタに設けられたＩＣカード接触端子部と接触することにより、データの送受信を行なうとともに、電源やクロックパルスを得るようになっている。
【００１６】
ＩＣチップ１０３は、制御手段としての制御素子（たとえばＣＰＵ）１０４、記憶手段としてのデータメモリ１０５、ワーキングメモリ１０６、および、プログラムメモリ１０７から構成され、通信部１０２と接続された状態でＩＣカード本体内に埋設されている。
【００１７】
データメモリ１０５は、各種データの記憶に使用され、たとえば、ＥＥＰＲＯＭ（エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ）などの書換え可能な不揮発性メモリで構成されている。
【００１８】
ワーキングメモリ１０６は、制御素子１０４が処理を行なう際の処理データなどを一時的に保持するための作業用メモリであり、たとえば、ＲＡＭ（ランダム・アクセス・メモリ）などの揮発性メモリで構成されている。
【００１９】
プログラムメモリ１０７は、たとえば、マスクＲＯＭ（リード・オンリ・メモリ）などの書換え不可能な固定メモリで構成されており、各基本機能を実現するサブルーチンを備えた制御素子１０４の制御プログラムなどを記憶している。
【００２０】
データメモリ１０５は、たとえば、図２に示すようなファイル構造でデータが記憶される。このファイル構造は、ＩＳＯ／ＩＥＣ７８１６−４に基づき、色々なフォルダの種類を持ったディレクトリのツリー構造になっており、複数のアプリケーションが登録可能である。
【００２１】
図２に示すように、最上位がＭＦ（Ｍａｓｔｅｒ  Ｆｉｌｅ）２０１で、その配下に、データを格納するＥＦ（Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ）２０２，２０３、および、各アプリケーションごとに設定されるフォルダとしてＤＦ（Ｄｅｄｉｃａｔｅｄ  Ｆｉｌｅ）２０４，２０５が設けられているとともに、ＤＦ２０４の配下に、ＤＦ２０６，２０７が設けられ、さらに、これらＤＦ２０４，２０５，２０６，２０７の配下に、ユーザデータの格納などに使用されるＥＦ２０８，２０９，２１０，２１１，２１２，２１３，２１４，２１５，２１６が設けられている構成になっている。
【００２２】
なお、以降、ＭＦ２０１をＭＦ、ＥＦ２０２，２０３をＥＦ１，ＥＦ２、ＤＦ２０４，２０５をＤＦ１，ＤＦ２、ＤＦ２０６，２０７をＤＦ１−１，ＤＦ１−２、ＥＦ２０８，２０９をＥＦ１−１，ＥＦ１−２、ＥＦ２１０，２１１，２１２をＥＦ２−１，ＥＦ２−２，ＥＦ２−３、ＥＦ２１３，２１４をＥＦ１−１−１，ＥＦ１−１−２、ＥＦ２１５，２１６をＥＦ１−２−１，ＥＦ１−２−２、とも称す。
【００２３】
以下、本発明に係るロジカルチャネルごとのレコードポインタの管理について詳細に説明する。  
ＥＦ（Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ）には、リニアタイプおよびサイクリックタイプの２種類のタイプのファイルが存在する。また、レコード番号でアクセスする場合の第１レコード（レコードデータ）は、ＥＦのタイプにより下記の２種類になる。  
・リニアタイプの場合      ：最初のデータのレコード  
・サイクリックタイプの場合：最終のデータのレコード
ＥＦのレコード参照方法は下記（ａ）（ｂ）（ｃ）の３種類の方法があるが、本発明では（ｂ）（ｃ）の参照方法をロジカルチャネルごとに可能としたものである。  
（ａ）レコード番号  
ＥＦ内に格納されたレコードには、内部的にレコード番号が付与される。このレコード番号により、レコードの読出し、書換えが可能である。  
（ｂ）レコードポインタによるアクセス（ネクスト／プレビアス  モード）  
レコードポインタを基点とした相対位置のレコードの読出し、書換えを行なうものである。処理が成功すると、レコードポインタは処理を実施したレコードを示す。この相対位置とは、  
・カレントレコードの前のレコード  
・カレントレコードの次のレコード  
である。
【００２４】
（ｃ）レコードポインタ指定によるアクセス  
レコードポインタの示すレコードをアクセスする。
【００２５】
上記の（ａ）（ｂ）（ｃ）を踏まえて、レコードポインタの位置と参照されるレコードを以下に説明する。図３に示すように、レコードポインタはワーキングメモリ１０６内に、当該ＩＣカードがサポートしているロジカルチャンネル番号（＃０、＃１、＃２、＃３）ごとに格納されている。ここに、レコードポインタには、レコード番号が格納されている。この例では、ロジカルチャネル＃０のレコードポインタはレコードＲ６である。このため、レコードポインタはレコード番号である「Ｒ６」を示している。ロジカルチャネル＃２のレコードポインタはＲ１０であり、ロジカルチャネル＃３のレコードポインタはＲ１である。  
なお、ロジカルチャネル＃１のレコードポインタは「０」を示しているので、設定されていない状態を示している。「０」はレコードポインタが設定されていないとする。
【００２６】
図４にＥＦの一例を示すように、ロジカルチャネル＃０の場合だと、「前（プレビアス）」を指定すると、レコードポインタが示すレコードの前にあるレコードＲ５がアクセス対象となり、「次（ネクスト）」を指定すると、レコードポインタが示すレコードの後にあるレコードＲ７がアクセス対象となる。アクセスが成功すると、レコードポインタが示すレコードはアクセスをしたレコード番号に変更される。このような処理がロジカルチャネルごとに実施できる。このように、レコードポインタで示すレコードをカレントレコードとする。
【００２７】
次に、カレントレコードの遷移について説明する。  
前述したように、ＥＦ内のレコードの参照には以下の３種類の方法がある。  
（１）レコード番号指定によるレコードのアクセス  
（２）ネクスト（Ｎｅｘｔ）／プレビアス（Ｐｒｅｖｉｏｕｓ）  モード（Ｍｏｄｅ）指定によるレコードのアクセス  
（３）レコードポインタによるレコードのアクセス
ここで、カレントレコードとは、当該ＥＦに対してアクセスを行なった場合に、以下の規則にしたがって一時的にカレント状態となるレコードのことである。カレントレコードは、内部的に管理されるレコードポインタにより指示される。  
なお、本規則においての“ポインタが初期化される”状態とは、カレントレコードが存在しない状態である。すなわち、レコードポインタの示すデータが「０」となる。  
規則１：ＥＦがセレクトファイル（ＳＥＬＥＣＴ  ＦＩＬＥ）コマンドにより選択された場合、ポインタは初期化される。  
規則２：ＥＦに対してネクスト／プレビアス  モードを指定するコマンドを実行し、正常に終了した場合、レコードポインタは対象となったレコードに移動する。  
規則３：コマンドが正常に終了されなかった場合にはポインタの移動は行なわない。  
規則４：ＥＦ内のレコードＲ１にレコードポインタがある場合、次のプレビアス処理ではエラーステータスが出力され、レコードポインタは移動しない。  
規則５：ＥＦ内の最終レコードＲｎ（最大値）にレコードポインタがある場合、次のネクスト処理ではエラーステータスが出力され、レコードポインタは移動しない。
【００２８】
次に、ＩＳＯ／ＩＥＣ７８１６−４に規定されているロジカルチャネルについて説明する。本実施の形態では、図３に示すように４個のロジカルチャネル（＃０、＃１、＃２、＃３）をサポートしている。
【００２９】
なお、ロジカルチャネル番号の＃０〜＃３を使用する場合は、ＩＳＯ／ＩＥＣ７８１６−４で定義されている、ｍａｎａｇｅ  ｃｈａｎｎｅｌコマンドにより使用可能な状態となる。＃０は、常時使用可能である。ロジカルチャネル番号の＃１〜＃３を使用する場合は、予めｍａｎａｇｅ  ｃｈａｎｎｅｌコマンドにより使用するロジカルチャネル番号を使用可能な状態にする必要がある。
【００３０】
ロジカルチャネル番号はセレクトファイルコマンドにより各ＤＦに設定され、このロジカルチャネル番号を各コマンドのＣＬＡバイト中にコーディングすることにより、どのＤＦまたはＥＦに対してのアクセスコマンドであるかの判断をすることができる。以下、図５を用いてロジカルチャネルの概念を説明する。
【００３１】
図５の状態において、ＭＦ配下のＥＦ（たとえば、ＥＦ１とする）をアクセスする場合には、ロジカルチャネル番号＃０を使用して以下のようなコマンドをコーディングする。なお、「＃＊」にてロジカルチャネル番号を、「＜＊＊＞」にてＥＦ−ＩＤ（ＥＦ番号）あるいはＤＦ−ＩＤ（ＤＦ番号）を表現する。  
＃０  Ｓｅｌｅｃｔ  Ｆｉｌｅ  →  ＥＦ１をカレント状態とする。  
＃０  Ｒｅａｄ  Ｒｅｃｏｒｄ  →  ＥＦ１内のレコードを読出す（カレントＥＦ指定）  
このとき、他のＤＦはカレント状態になっていないので、アクセス状態とならない。
【００３２】
次に、ＤＦ１に対してロジカルチャネル番号＃１を割り当てることを図６を用いて説明する。  
コマンドは以下のようにコーディングする。  
＃０  Ｓｅｌｅｃｔ  Ｆｉｌｅ＜ＡＡＡＡ＞  →  ＤＦ１をカレント状態にし、かつ、ロジカルチャネル番号＃０を割り当てる。  
＃１  Ｓｅｌｅｃｔ  Ｆｉｌｅ＜ＡＡＡＡ＞  →  ＤＦ１をカレント状態にし、かつ、ロジカルチャネル番号＃１を割り当てる。  
この状態では、ＤＦ１配下のＥＦをロジカルチャネル番号＃０と＃１でそれぞれアクセスすることが可能である。
【００３３】
ＤＦ１配下のＥＦ１−１（たとえば、図４のＥＦとする）を対象として読出す場合には、コマンドを以下の様にコーディングする。  
(1-1) ＃０  Ｓｅｌｅｃｔ  Ｆｉｌｅ＜０１＞  
(1-2) ＃０  Ｒｅａｄ  Ｒｅｃｏｒｄ  →  ＥＦ１−１内、次レコードモードでレコードを読出す。この場合、図３のロジカルチャネル番号は＃０、レコードポンタはＲ１となる。  
(2-1) ＃１  Ｓｅｌｅｃｔ  Ｆｉｌｅ＜０１＞  
(2-2) ＃１  Ｒｅａｄ  Ｒｅｃｏｒｄ  →  ＥＦ１−１内、次レコードモードでレコードを読出す。この場合、図３のロジカルチャネル番号は＃１、レコードポンタはＲ１となる。  
(3) ＃０  Ｒｅａｄ  Ｒｅｃｏｒｄ  →  ＥＦ１−１内、次レコードモードでレコードを読出す。この場合、図３のロジカルチャネル番号は＃０、レコードポンタはＲ２となる。  
(4) ＃１  Ｒｅａｄ  Ｒｅｃｏｒｄ  →  ＥＦ１−１内、カレントレコードを読出す（(2-2) と同じレコード）。この場合、図３のロジカルチャネル番号は＃１、レコードポンタはＲ１となる。  
(5) ＃０  Ｒｅａｄ  Ｒｅｃｏｒｄ  →  ＥＦ１−１内、カレントレコードを読出す（(3) と同じレコード）。この場合、図３のロジカルチャネル番号は＃０、レコードポンタはＲ２となる。
【００３４】
ここに、各コマンドで使用されるロジカルチャネル番号は、ＩＳＯ／ＩＥＣ７８１６−４にしたがいコマンドのＣＬＡバイト（ＣＬＡデータ）中の以下の位置にコーディングされる。  
図７に示すように、ＣＬＡバイトは、８ビットで構成される。ＣＬＡバイトにおいて、第１ビット（ｂ１）及び第２ビット（ｂ２）は、当該コマンドのロジカルチャネル番号を指定するものである。すなわち、図７に示すように、ＣＬＡバイトの第２ビット（ｂ２）および第１ビット（ｂ１）により使用するロジカルチャネル番号を表示する。したがって、「００」、「０１」、「１０」、「１１」の最大４個のロジカルチャネル番号が設定可能である。本実施の形態では、「ｂ２、ｂ１」が「００」、「０１」、「１０」、「１１」である場合、ロジカルチャネル番号「♯０」、「♯１」、「♯２」、「♯３」を指定するものとする。
【００３５】
また、ＣＬＡバイトの第３ビット（ｂ３）及び第４ビット（ｂ４）は、セキュアメッセージング機能指示ビット（ＳＭデータ）である。なお、本実施の形態では、「ｂ４、ｂ３」が「００」であるものとする。ＣＬＡバイトの第５ビット（ｂ５）、第６ビット（ｂ６）、第７ビット（ｂ７）及び第８ビット（ｂ８）は、ＣＬＡコードと呼ばれ、コマンドのランクを示すデータである。例えば、ＣＬＡコードが「００００」である場合、ＩＳＯに準拠するコマンドであることを示し、「００００」でない場合、ＩＳＯに準拠しないコマンド（ＩＳＯ以外のコマンド）であることを示している。
【００３６】
なお、ロジカルチャネル番号の＃０〜＃３を使用する場合は、ＩＳＯ／ＩＥＣ７８１６−４で定義されている、ｍａｎａｇｅ  ｃｈａｎｎｅｌコマンドにより使用可能な状態となる。＃０は、常時使用可能である。ロジカルチャネル番号の＃１〜＃３を使用する場合は、予めｍａｎａｇｅ  ｃｈａｎｎｅｌコマンドにより使用するロジカルチャネル番号を使用可能な状態にする必要がある。
【００３７】
次に、本ＩＣカードの認証処理について説明する。
【００３８】
以下の説明では、ＩＣカード１００と外部装置としての端末（センタ）との間における認証処理について説明する。
【００３９】
図８は、ＩＣカード１００と外部装置としての端末（センタ）３００とから構成されるＩＣカードシステムの構成例を概略的に示す図である。図８に示すように、ＩＣカードシステムは、ＩＣカード１００と端末３００とが通信可能となっている。図８に示すＩＣカード１００は、例えば、図１に示すような構成を有する。また、上記端末３００は、制御装置３０１及びカードリーダライタ３０２を有している。
【００４０】
上記端末３００の制御装置３０１は、例えば、ＣＰＵ、種々のメモリ及び種々のインターフェースを有するパーソナルコンピュータ（ＰＣ）等で構成される。上記制御装置３０１のＣＰＵは、例えば、メモリ（図示しない）に記憶されているプログラムに基づいて演算処理あるいは各部の制御などを行なう。
【００４１】
上記カードリーダライタ３０２は、上記ＩＣカード１００との通信を行なうユニットである。上記カードリーダライタ３０２は、図示しないインターフェースを介して上記制御装置３０１に接続されている。上記カードリーダライタ３０２は、上記制御装置３０１の制御に基づいて動作する。
【００４２】
上記のような構成により、ＩＣカードシステムでは、コマンドの送受信によって、端末３００によるＩＣカード１００の認証処理、あるいは、ＩＣカード１００による端末３００の認証処理が行われる。上記端末３００によるＩＣカード１００の認証処理とは、外部装置がＩＣカードを認証する処理である。また、上記ＩＣカード１００による端末３００の認証処理とは、ＩＣカード１００が端末３００を認証する処理である。
【００４３】
また、本実施の形態において、ＩＣカード１００と端末３００との間の認証は、ＩＳＯ／ＩＥＣ７８１６−４により規定されている以下のコマンドを使用して実施するものとする。
【００４４】
ａ）“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンド
ｂ）“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンド
ｃ）“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンド
“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドは、端末３００によるＩＣカード１００の認証処理に用いられるコマンドである。また、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドは、ＩＣカード１００による端末３００の認証処理に用いられるコマンドである。また、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドは、乱数を要求するコマンドである。“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドに対しては、実行ごとにユニークな乱数が出力されるようになっている。
【００４５】
なお、本実施の形態では、端末３００によるＩＣカード１００の認証処理は、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドと“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドとを組み合わせて実行されるものとして説明する。また、ＩＣカード１００によるが端末３００の認証処理は、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドと“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドとを組み合わせて実行されるものとして説明する。
【００４６】
まず、端末３００によるＩＣカード１００の認証処理について概略的に説明する。  
端末３００によるＩＣカード１００の認証処理では、端末３００が既知としている認証キーをＩＣカード１００が所有しているか否かを判断する。ＩＣカード１００が認証キーを所有しているか否かは、ＩＣカード１００から出力される認証用データに基いて端末３００が判断する。
【００４７】
図９は、端末３００によるＩＣカード１００の認証処理を概略的に説明するための図である。  
図９に示す端末３００によるＩＣカード１００の認証処理は、以下に説明するステップ１からステップ１０の手順によって行われる。
【００４８】
ステップ１：端末３００は、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドをＩＣカード１００へ送信する。これにより、端末３００は、ＩＣカード１００に乱数（チャレンジ）データの生成を要求する。
【００４９】
ステップ２：ＩＣカード１００は、端末３００からの“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドを受信する。Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドを受信したＩＣカード１００は、乱数データ（Ｒ２）を生成する。乱数データ（Ｒ２）を生成すると、ＩＣカード１００は、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドに対応するレスポンスデータとして乱数データ（Ｒ２）を端末３００に返送する。なお、乱数データ（Ｒ２）は、後述するように、ＩＣカード１００内のワーキングメモリ１０６に論理チャネルごとに保持される。
【００５０】
ステップ３：端末３００は、ＩＣカード１００からのレスポンスデータとしての乱数データ（Ｒ２）を受信する。“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドのレスポンスデータとしての乱数データ（Ｒ２）を受信すると、端末３００は、ＩＣカード１００を認証するための乱数データ（Ｒ１）を生成する。なお、これらの乱数データ（Ｒ１）及び（Ｒ２）は、端末３００内に保持される。
【００５１】
ステップ４：端末３００は、乱数データ（Ｒ１）を生成すると、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを生成する。“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドは、認証に必要なアルゴリズム（ａｌｇ）、キーデータ（ｋｅｙ−ＩＤ）および乱数データ（Ｒ１）等に基づいて生成される。すなわち、認証に必要なアルゴリズム（ａｌｇ）、キーデータ（ｋｅｙ−ＩＤ）および乱数データ（Ｒ１）は、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのパラメータとして示される。このような“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを生成すると、端末３００は、生成した“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドをＩＣカード１００に送信する。
【００５２】
なお、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドで指定するアルゴリズム（ａｌｇ）は、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのキーデータ（ｋｅｙ−ＩＤ）で指定される暗号化キーを用いて暗号化処理を行なうための暗号アルゴリズムを示すものである。
【００５３】
ステップ５：ＩＣカード１００は、端末３００からの“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信する。“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信すると、ＩＣカード１００は、自身が生成した乱数データ（Ｒ２）と端末３００が生成した乱数データ（Ｒ１）の値をＸＯＲする。ここでは、ＸＯＲした値をＤ１とする。
【００５４】
ステップ６：ＩＣカード１００は、端末３００からの“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドにより指定されているアルゴリズム（ａｌｇ）とキーデータ（ｋｅｙ−ＩＤ）を判断する。つまり、ＩＣカード１００は、端末３００からの“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドに基づいて認証に必要なアルゴリズム（ａｌｇ）とキーデータ（ｋｅｙ−ＩＤ）とを判断する。図９に示す例では、キーデータは、暗号化キー（Ｋ２）であると判断している。認証に必要なアルゴリズムとキーデータとを判断すると、上記ＩＣカード１００は、アルゴリズムによりキーデータ（Ｋ２）を用いて上記ステップ５で算出した値Ｄ１を暗号化する。ここでは、Ｄ１を暗号化キー（Ｋ２）を用いて暗号化した値をＣ１とする。
【００５５】
ステップ７：ＩＣカード１００は、上記ステップ６で算出したＣ１を“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのレスポンスデータとして端末３００に送信する。
【００５６】
ステップ８：端末３００は、ＩＣカード１００からの“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのレスポンスデータとしてのＣ１を受信する。Ｃ１を受信すると、端末３００は、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドでＩＣカード１００に通知したキーデータに対応する復号化キーを判断する。図９に示す例では、復号化キー（Ｋ１）であると判断している。また、復号化キー（Ｋ１）は、端末３００が保持しているものとする。復号化キー（Ｋ１）を判断すると、端末３００は、ＩＣカード１００から受信したＣ１を復号キー（Ｋ１）により復号化する。ここでは、Ｃ１を復号化キーＫ１を用いて復号化した値をＤ２とする。
【００５７】
Ｓｔｅｐ９：端末３００は、復号化キー（Ｋ１）を用いて復号化した値Ｄ２と、ＩＣカード１００が“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドに対応して生成した乱数データ（Ｒ２）の値とをＸＯＲする。ここでは、Ｄ２の値と乱数データ（Ｒ２）とをＸＯＲした値をＲ１’とする。
【００５８】
Ｓｔｅｐ１０：Ｄ２と乱数データ（Ｒ２）とをＸＯＲした値Ｒ１’を算出すると、端末３００は、ＩＣカード１００に出力した乱数データ（Ｒ１）とＲ１’とを比較する。この比較により乱数データ（Ｒ１）とＲ１’が一致した場合、端末３００は、当該ＩＣカード１００を認証する（当該ＩＣカード１００が正当であると判断する）。また、上記比較により乱数データ（Ｒ１）とＲ１’が一致しなかった場合、端末３００は、当該ＩＣカード１００を認証しない（当該ＩＣカード１００が正当でないと判断する）。
【００５９】
なお、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドにおいてアルゴリズム（暗号アルゴリズム）としてＴｒｉｐｌｅ  ＤＥＳを指定する場合、ＩＣカード１００の暗号化キー（Ｋ２）と端末３００側の復号化キー（Ｋ１）は同一のものとなる。このような暗号化方式及び復号化方式は、ＩＣカード１００の暗号化キー（Ｋ２）と端末３００側の復号化キー（Ｋ１）とが共に秘密キーとなる秘密鍵暗号方式である。
【００６０】
また、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドにおいてアルゴリズム（暗号アルゴリズム）としてＲＳＡを指定する場合、ＩＣカード１００の暗号化キー（Ｋ１）と端末３００側の復号化キー（Ｋ２）とは異なるものとなる。このような暗号化方式及び復号化方式は、ＩＣカード１００の暗号化キー（Ｋ２）が秘密キーとなり、端末３００側の復号化キー（Ｋ１）が公開キーとなる公開鍵暗号方式である。  
また、ＩＣカード１００あるいは端末３００におけるＸＯＲ演算は、処理の一例を示すものであり、ＸＯＲ演算に代えて他の演算を行なうようにしても良い。
【００６１】
次に、ＩＣカード１００による端末３００の認証処理について概略的に説明する。  
ＩＣカード１００による端末３００の認証処理では、ＩＣカード１００が既知としている認証キーを端末３００が所有しているか否かを判断する。端末３００が認証キーを所有しているか否かは、端末３００から出力される認証用データに基いてＩＣカード１００が判断する。
【００６２】
図１０は、ＩＣカード１００による端末３００の認証処理を概略的に説明するための図である。  
図１０に示すＩＣカード１００による端末３００の認証処理は、以下に説明するステップ１１からステップ１７の手順によって行われる。
【００６３】
ステップ１１：端末３００は、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドをＩＣカード１００へ送信する。これにより、端末３００は、ＩＣカード１００に乱数（チャレンジ）データの生成を要求する。
【００６４】
ステップ１２：ＩＣカード１００は、端末３００からの“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドを受信する。“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドを受信したＩＣカード１００は、乱数データ（Ｒ２）を生成する。乱数データ（Ｒ２）を生成すると、ＩＣカード１００は、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドに対応するレスポンスデータとして乱数データ（Ｒ２）を端末３００に返送する。なお、乱数データ（Ｒ２）は、後述するように、ＩＣカード１００内のワーキングメモリ１０６に論理チャネルごとに保持される。
【００６５】
ステップ１３：端末３００は、ＩＣカード１００から“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドのレスポンスデータとしての乱数データ（Ｒ２）を受信する。レスポンスデータとしての乱数データ（Ｒ２）を受信すると、端末３００は、認証に必要なアルゴリズム（ａｌｇ）とキーデータ（Ｋ１）とを決定する。ここで、認証に必要なアルゴリズムとは、暗号化を行なう暗号化アルゴリズムである。キーデータとは、暗号化アルゴリズムにより暗号化する際に必要な暗号化データである。
【００６６】
暗号化処理に用いるアルゴリズムとキーデータとを決定すると、端末３００は、決定したアルゴリズムによりキーデータ（Ｋ１）を用いてＩＣカード１００から受信した乱数データ（Ｒ２）を暗号化する。ここでは、乱数データ（Ｒ２）を暗号化キー（Ｋ１）を用いて暗号化した値をＣ２とする。
【００６７】
ステップ１４：乱数データ（Ｒ２）をキーデータ（Ｋ１）を用いて暗号化すると、端末３００は、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを生成する。“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドは、認証に必要なアルゴリズム（ａｌｇ）、キーデータ（ｋｅｙ−ＩＤ）および暗号化処理の結果（Ｃ２）等に基づいて生成される。ここで、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドで示すアルゴリズムは、ＩＣカード１００で実行すべき復号化処理のアルゴリズムを指定するものである。また、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドで示すキーデータ（ｋｅｙ−ＩＤ）は、ＩＣカード１００での復号化処理に用いるべき復号化キーを指定するものである。
【００６８】
すなわち、認証に必要なアルゴリズム（ａｌｇ）、キーデータ（ｋｅｙ−ＩＤ）および暗号化処理の結果（Ｃ１）は、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのパラメータとして示される。このような“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを生成すると、端末３００は、生成した“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドをＩＣカード１００に送信する。
【００６９】
ステップ１５：ＩＣカード１００は、端末３００からの“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信する。“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信すると、上記ＩＣカード１００は、受信した“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドにより復号化処理に用いるアルゴリズム及び復号化キーを決定する。なお、復号化キーは、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドに含まれるキーデータ（ｋｅｙ−ＩＤ）に基づいて判断される。また、復号化キーは、予めＩＣカード１００が所有しているものである。例えば、復号化キーは、上記データメモリ１０５などの不揮発性メモリに記憶されている。
【００７０】
復号化処理に用いるアルゴリズムとキーデータとを決定すると、ＩＣカード１００は、決定したアルゴリズムにより復号化キー（Ｋ２）を用いて端末３００から受信した値（Ｃ２）を復号化する。ここでは、値（Ｃ２）を復号化キー（Ｋ２）を用いて復号化した値をＲ２´とする。
【００７１】
ステップ１６：値（Ｃ２）を復号化キー（Ｋ２）を用いて復号化した値Ｒ２´を算出すると、ＩＣカード１００は、上記Ｒ２´と上記ステップ１２で生成した乱数データ（Ｒ２）と比較する。この比較により乱数データ（Ｒ２）とＲ２’とが一致した場合、ＩＣカード１００は、当該端末３００を認証する（ＩＣカード１００は、当該端末３００が正当であると判断する）。また、上記比較により乱数データ（Ｒ２）とＲ２’が一致しなかった場合、ＩＣカード１００は、当該端末３００を認証しない（ＩＣカードは、当該端末３００が正当でないと判断する）。
【００７２】
ステップ１７：上記ＩＣカード１００は、上記Ｒ２とＲ２´との比較結果（ＩＣカード１００による端末３００認証の正否）をレスポンスとして端末３００に通知する。また、上記レスポンスにより、端末３００では、当該ＩＣカード１００により自身が認証されたか否かを判断する。
【００７３】
なお、暗号アルゴリズムとしてＴｒｉｐｌｅ  ＤＥＳを使用した場合、ＩＣカード側の復号化キー（Ｋ２）と端末側の暗号化キー（Ｋ１）は、同一のものになる。このような暗号化方式及び復号化方式は、ＩＣカード１００の復号化キー（Ｋ２）と端末３００側の暗号化キー（Ｋ１）とが共に秘密キーとなる秘密鍵暗号方式である。
【００７４】
また、暗号アルゴリズムとしてＲＳＡを使用した場合、ＩＣカード側の復号化キー（Ｋ２）と端末側の暗号化キー（Ｋ１）とは、異なるキーとなる。このような暗号化方式及び復号化方式は、端末３００側の復号化キー（Ｋ１）が秘密キーとなり、ＩＣカード１００の復号化キー（Ｋ２）が公開キーとなる公開鍵暗号方式である。
【００７５】
次に、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドについて詳細に説明する。  
図１１は、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドのフォーマットを示す図である。  
図１１に示すように、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドは、ＣＬＡデータ、ＩＮＳデータ、Ｐ１データ、Ｐ２データ、Ｌｅデータにより構成される。なお、コマンドの基本的なフォーマットは、ＣＬＡデータ、ＩＮＳデータ、Ｐ１データ、Ｐ２データおよびＬｅデータにより構成される。
【００７６】
上記ＣＬＡデータは、図７に示すような構成を有している。図１１に示す“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドの例では、ＣＬＡデータのうちｂ１、ｂ２が「０１」となっている。つまり、図１１に示す“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドでは、ロジカルチャネル番号「♯１」が指定されている。  
また、上記ＩＮＳデータは、コマンドの内容を示す情報である。例えば、図１１に示す例では、ＩＮＳデータ（「８４」）が“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンド（つまり、乱数の生成を要求するコマンド）であることを示している。
【００７７】
また、上記Ｐ１データおよびＰ２データは、当該コマンドのパラメータを示すものである。図１１に示すような“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドでは、Ｐ１データ及びＰ２データが共に「００」となっている。また、Ｌｅデータは、データの長さを指定するものである。図１１の例では、Ｌｅデータ（「０８」）が８バイトの乱数データの生成を要求している。  
したがって、図１１に示す“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドでは、ロジカルチャネル番号「♯１」において８バイトの乱数データの生成を要求している。
【００７８】
次に、ＩＣカードにおける乱数データ（“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドに応じて生成した乱数データ）の格納例について説明する。  
図１２は、ワーキングメモリ１０６内における乱数データの格納テーブル１０６ａの構成例を示す図である。  
上記のような“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドを受信すると、ＩＣカード１００は、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドによって指定されたロジカルチャネル番号において指定された長さの乱数データを生成する。このような場合、本ＩＣカード１００では、ロジカルチャネル番号ごとに乱数データを保持する。
【００７９】
図１２に示す乱数データの格納テーブル１０６ａでは、ロジカルチャネル番号ごとに、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みであるか否かを示すフラグと、乱数データとを格納する。例えば、ロジカルチャネル番号「♯１」において乱数データを生成した場合、格納テーブル１０６ａには、図１２に示すように、ロジカルチャネル番号「♯１」において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みであることを示すフラグをセットし、生成した乱数データをロジカルチャネル番号「♯１」の乱数データとして格納する。  
このような格納テーブル１０６ａにより、各ロジカルチャネル番号ごとに、乱数データを保持することが可能となる。
【００８０】
次に、コマンドに対するレスポンスについて説明する。  
図１３は、コマンドに対するレスポンスの構成例を示す図である。  
上記端末３００からコマンドを受信したＩＣカード１００は、コマンドに対応する処理を実行し、その処理結果等を示すレスポンスを端末３００へ送信するようになっている。レスポンスのフォーマットは、図１３に示すように、レスポンスデータとステータスワードにより構成される。
【００８１】
上記レスポンスデータは、コマンドに対応する処理によって得られたデータである。例えば、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドに対しては、上記レスポンスデータにはＩＣカード１００が生成した乱数データが格納される。  
また、ステータスワードは、コマンドに対応する処理結果を示すものである。例えば、コマンドに対応する処理が正常に行われた場合、上記ステータスワードには、コマンドに対応する処理が正常に行われたことを示すステータスが格納される。また、コマンドに対応する処理がエラーとなった場合、上記ステータスワードには、コマンドに対応する処理がエラーとなったことを示すステータスが格納される。
【００８２】
次に、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドを受信した場合のＩＣカード１００の動作例について説明する。  
図１４は、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドを受信した場合のＩＣカード１００の動作を説明するためのフローチャートである。  
まず、ＩＣカード１００の通信部１０２が端末３００からのコマンドを受信したものとする（ステップＳ３１）。すると、ＩＣカード１００の制御素子１０４は、受信したコマンドのＩＮＳデータによりコマンドの内容を判別する（ステップＳ３２）。なお、上記通信部１０２が受信したコマンドが“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンド以外のコマンドであると判断した場合（ステップＳ３２、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、受信したコマンドに応じた処理を行う（ステップＳ３３）。
【００８３】
上記通信部１０２が受信したコマンドが“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドであると判断した場合（ステップＳ３２、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドのＬｅデータにより生成する乱数データの長さを判断する。生成する乱数データの長さを判断すると、上記ＩＣカード１００の制御素子１０４は、指定された長さの乱数データを生成する（ステップＳ３４）。
【００８４】
乱数データを生成すると、上記ＩＣカード１００の制御素子１０４は、生成した乱数データを当該“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドのＣＬＡデータにより指定されるロジカルチャネル番号に対応させてワーキングメモリ１０６の格納テーブル１０６ａに格納する。さらに、上記ＩＣカード１００の制御素子１０４は、当該ロジカルチャネル番号において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンド（乱数データの生成）が実行済みであることを示すフラグをセットする（ステップＳ３６）。
【００８５】
これにより、上記ワーキングメモリ１０６の格納テーブル１０６ａには、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドで指定されるロジカルチャネル番号ごとに、乱数データと“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンド（乱数データの生成）が実行済みであることを示すフラグとが格納される。
【００８６】
また、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドに応じて生成した乱数データを上記格納テーブル１０６ａに格納すると、上記ＩＣカード１００の制御素子１０４は、生成した乱数データをレスポンスデータとして当該“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドの送信元である端末３００へレスポンスを送信する（ステップＳ３７）。
【００８７】
上記のような動作により、“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドに応じて生成した乱数データは、上記ワーキングメモリ１０６の格納テーブル１０６ａにロジカルチャネル番号ごとに格納されるとともに、レスポンスデータとして当該“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドの送信元へ送信される。
【００８８】
次に、ＩＣカード１００による端末３００の認証処理（外部認証処理）について詳細に説明する。  
外部認証は、ＩＣカード１００が端末３００から“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信した場合に実施される。すなわち、外部装置としての端末３００が“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドによりＩＣカード１００に対して自身を認証するように要求する。“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドによる要求に応じてＩＣカード１００が外部装置としての端末３００を認証するものである。
【００８９】
まず、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドについて詳細に説明する。  
図１５は、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのフォーマットを示す図である。  
図１５に示すように、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドは、ＣＬＡデータ、ＩＮＳデータ、Ｐ１データ、Ｐ２データ、Ｌｅデータおよびデータ部により構成される。
【００９０】
上記ＣＬＡデータは、図７に示すような構成を有している。図１５に示す“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドの例では、ＣＬＡデータのうちｂ１、ｂ２が「０１」となっている。つまり、図１５に示す“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドでは、ロジカルチャネル番号「♯１」が指定されている。また、図１５に示す例では、ＩＮＳデータ（「８２」）が“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンド（つまり、外部認証を要求するコマンド）であることを示している。また、上記データ部には、端末３００からＩＣカード１００へ供給するデータが格納される。例えば、図１０に示す例では、上記データ部にはデータＣ２が格納される。
【００９１】
また、図１５に示すように、上記Ｐ１データおよびＰ２データは、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのパラメータとして設定される。例えば、図１６は、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データの例を示している。図１６に示すように、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドでは、Ｐ１データが認証処理に用いる認証アルゴリズムを示している。図１６に示す例では、認証処理に用いるアルゴリズムとして、Ｐ１データが「０１」の場合にシングルＤＥＳ、Ｐ１データが「０２」の場合にトリプルＤＥＳを示している。
【００９２】
また、図１７は、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２データの例を示している。図１７に示すように、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドでは、Ｐ２データが認証処理に用いるキーデータ（Ｋｅｙ−ＩＤ）を示している。図１７に示す例では、Ｐ２データにおいて認証処理に用いるキーデータを「０１」〜「１Ｆ」で示している。また、図１８は、Ｐ２データにおけるキーデータの具体的な例を示している。図１８に示す例では、Ｐ２データにおいて「０ｘ０１」〜「０ｘ１Ｆ」により３１種類のキーデータを指定できるようになっている。
【００９３】
したがって、図１５に示す“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドでは、ロジカルチャネル番号「♯１」において、Ｐ１データで示すアルゴリズムおよびＰ２データで示すキーデータを用いて外部認証を行うことを要求している。
【００９４】
次に、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信した場合のＩＣカード１００の動作例について説明する。  
図１９は、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信した場合のＩＣカード１００の動作を説明するためのフローチャートである。  
まず、ＩＣカード１００の通信部１０２が端末３００からのコマンドを受信したものとする（ステップＳ４１）。すると、ＩＣカード１００の制御素子１０４は、受信したコマンドのＩＮＳデータによりコマンドの内容を判別する（ステップＳ４２）。なお、上記通信部１０２が受信したコマンドが“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンド以外のコマンドであると判断した場合（ステップＳ４２、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、受信したコマンドに応じた処理を行う（ステップＳ３３）。
【００９５】
上記通信部１０２が受信したコマンドが“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドであると判断した場合（ステップＳ４２、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＣＬＡデータにより指定されるロジカルチャネル番号において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みであるか否かを判断する（ステップＳ４４）。
【００９６】
すなわち、上記ステップＳ４４では、上記ワーキングメモリ１０６の格納テーブル１０６ａにおいて“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＣＬＡデータで指定されるロジカルチャネル番号に対応するフラグ（“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みであるか否かをフラグ）がセットされているか否かを判断する。言い換えると、上記ステップＳ４４において、上記制御素子１０４は、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するロジカルチャネル番号に対応する乱数データが上記格納テーブル１０６ａに格納されているか否かを判断する。
【００９７】
上記判断により当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するロジカルチャネル番号において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みでないと判断した場合（ステップＳ４４、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、エラーを意味するステータスワードをセットしたレスポンスを端末３００へ送信する（ステップＳ５０）。この場合、ステータスワードには、例えば、当該ロジカルチャネル番号において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行されていないことを示すステータスが格納される。
【００９８】
また、上記判断により“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するロジカルチャネル番号において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みであると判断した場合（ステップＳ４４、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データにより指定されるアルゴリズムを当該ＩＣカード１００がサポートしているか否かを判断する（ステップＳ４５）。すなわち、上記ステップＳ４５において、上記制御素子１０４は、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するアルゴリズムを実行可能か否かを判断する。
【００９９】
上記判断により当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するアルゴリズムを当該ＩＣカード１００がサポートしていないと判断した場合（ステップＳ４５、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、エラーを意味するステータスワードをセットしたレスポンスを端末３００へ送信する（ステップＳ５０）。この場合、ステータスワードには、例えば、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するアルゴリズムに当該ＩＣカードが対応していないことを示すステータスが格納される。
【０１００】
また、上記判断により当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するアルゴリズムを当該ＩＣカード１００がサポートしていると判断した場合（ステップＳ４５、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２データにより指定されるキーデータを当該ＩＣカード１００が保持しているか否かを判断する（ステップＳ４６）。すなわち、上記ステップＳ４６において、上記制御素子１０４は、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するキーデータを所有しているか否かを判断する。
【０１０１】
上記判断により当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するキーデータを当該ＩＣカード１００が所有していないと判断した場合（ステップＳ４６、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、エラーを意味するステータスワードをセットしたレスポンスを端末３００へ送信する（ステップＳ５０）。この場合、ステータスワードには、例えば、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するキーデータを当該ＩＣカードが所有していないことを示すステータスが格納される。
【０１０２】
また、上記判断により当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するキーデータを当該ＩＣカード１００が所有している判断した場合（ステップＳ４６、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データで指定されるアルゴリズムとＰ２データで指定されるキーデータとを用いて、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのデータ部に格納されているデータを演算処理する（ステップＳ４７）。
【０１０３】
上記ステップＳ４７の演算処理の結果が得られると、上記ＩＣカード１００の制御素子１０４は、演算処理の結果と、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するロジカルチャネル番号に対応する乱数データとが一致するか否かを判断する（ステップＳ４８）。
【０１０４】
この判断により演算処理の結果と当該ロジカルチャネル番号に対応する乱数データとが一致したと判断した場合（ステップＳ４８、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、正常を意味するステータスワード（つまり、外部装置としての端末３００をＩＣカード１００が認証したことを示すステータスワード）をセットしたレスポンスを端末３００へ送信する（ステップＳ４９）。
【０１０５】
また、上記判断により上記ステップＳ４７の演算結果と当該ロジカルチャネル番号に対応する乱数データとが一致しないと判断した場合（ステップＳ４８、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、エラーを意味するステータスワードをセットしたレスポンスを端末３００へ送信する（ステップＳ５０）。この場合、ステータスワードには、例えば、外部装置としての端末３００をＩＣカード１００が認証できなかったことを示すステータスワードが格納される。
【０１０６】
なお、図１９に示す動作例と図１０に示す例と対比すると、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのデータ部に格納されるデータは図１０に示すＣ２であり、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データで示されるアルゴリズムは図１０に示す（ａｌｇ）であり、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２で示されるキーデータは図１０に示す（Ｋｅｙ−ＩＤ）である。また、上記ステップＳ４７の演算処理は、当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データが示すアルゴリズムと当該“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２データが示す復号化キー（Ｋ２）とを用いたデータＣ２に対する復号化処理Ｄである。
【０１０７】
上記のような外部認証処理によれば、ロジカルチャネル番号ごとに乱数データを保持することができ、ロジカルチャネル番号ごとの乱数データを用いた外部認証処理を実現することができる。
【０１０８】
次に、端末３００によるＩＣカード１００の認証処理（内部認証処理）について詳細に説明する。  
内部認証は、端末３００がＩＣカード１００へ“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを供給することにより実施される。すなわち、外部装置としての端末３００が“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドに対するＩＣカード１００からのレスポンスデータに基づいてＩＣカード１００の認証を行うものである。
【０１０９】
まず、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドについて詳細に説明する。  
図２０は、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのフォーマットを示す図である。  
図２０に示すように、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドは、ＣＬＡデータ、ＩＮＳデータ、Ｐ１データ、Ｐ２データ、Ｌｅデータおよびデータ部により構成される。
【０１１０】
上記ＣＬＡデータは、図７に示すような構成を有している。図２０に示す“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドの例では、ＣＬＡデータのうちｂ１、ｂ２が「０１」となっている。つまり、図２０に示す“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドでは、ロジカルチャネル番号「♯１」が指定されている。また、図２０に示す例では、ＩＮＳデータ（「８８」）が“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンド（つまり、内部認証を要求するコマンド）であることを示している。また、上記データ部には、端末３００からＩＣカード１００へ供給するデータが格納される。例えば、図９に示す例では、上記データ部には乱数データＲ１が格納される。
【０１１１】
また、図２０に示すように、上記Ｐ１データおよびＰ２データは、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのパラメータとして設定される。“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データは、例えば、図１６に示すように、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データと同様に認証処理に用いる認証アルゴリズムを示している。また、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２データは、例えば、図１７及び図１８に示すように、“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２データと同様に認証処理に用いるキーデータ（Ｋｅｙ−ＩＤ）を示している。
【０１１２】
したがって、図２０に示す“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドでは、ロジカルチャネル番号「♯１」において、Ｐ１データで示すアルゴリズムおよびＰ２データで示すキーデータを用いてデータ部のデータの演算処理（暗号化処理）を行うことを要求している。
【０１１３】
次に、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信した場合のＩＣカード１００の動作例について説明する。  
図２１は、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信した場合のＩＣカード１００の動作を説明するためのフローチャートである。  
まず、ＩＣカード１００の通信部１０２が端末３００からのコマンドを受信したものとする（ステップＳ６１）。すると、ＩＣカード１００の制御素子１０４は、受信したコマンドのＩＮＳデータによりコマンドの内容を判別する（ステップＳ６２）。なお、上記通信部１０２が受信したコマンドが“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンド以外のコマンドであると判断した場合（ステップＳ６２、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、受信したコマンドに応じた処理を行う（ステップＳ６３）。
【０１１４】
上記通信部１０２が受信したコマンドが“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドであると判断した場合（ステップＳ６２、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＣＬＡデータにより指定されるロジカルチャネル番号において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みであるか否かを判断する（ステップＳ６４）。
【０１１５】
すなわち、上記ステップＳ６４では、上記ワーキングメモリ１０６の格納テーブル１０６ａにおいて“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＣＬＡデータで指定されるロジカルチャネル番号に対応するフラグ（“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みであるか否かをフラグ）がセットされているか否かを判断する。言い換えると、上記ステップＳ６４において、上記制御素子１０４は、“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するロジカルチャネル番号に対応する乱数データが上記格納テーブル１０６ａに格納されているか否かを判断する。
【０１１６】
上記判断により当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するロジカルチャネル番号において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みでないと判断した場合（ステップＳ６４、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、エラーを意味するステータスワードをセットしたレスポンスを端末３００へ送信する（ステップＳ７０）。この場合、ステータスワードには、例えば、当該ロジカルチャネル番号において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行されていないことを示すステータスが格納される。
【０１１７】
また、上記判断により“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するロジカルチャネル番号において“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドが実行済みであると判断した場合（ステップＳ６４、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データにより指定されるアルゴリズムを当該ＩＣカード１００がサポートしているか否かを判断する（ステップＳ６５）。すなわち、上記ステップＳ６５において、上記制御素子１０４は、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するアルゴリズムを実行可能か否かを判断する。
【０１１８】
上記判断により当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するアルゴリズムを当該ＩＣカード１００がサポートしていないと判断した場合（ステップＳ６５、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、エラーを意味するステータスワードをセットしたレスポンスを端末３００へ送信する（ステップＳ７０）。この場合、ステータスワードには、例えば、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するアルゴリズムに当該ＩＣカードが対応していないことを示すステータスが格納される。
【０１１９】
また、上記判断により当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するアルゴリズムを当該ＩＣカード１００がサポートしていると判断した場合（ステップＳ６５、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２データにより指定されるキーデータを当該ＩＣカード１００が保持しているか否かを判断する（ステップＳ６６）。すなわち、上記ステップＳ６６において、上記制御素子１０４は、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するキーデータを所有しているか否かを判断する。
【０１２０】
上記判断により当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するキーデータを当該ＩＣカード１００が所有していないと判断した場合（ステップＳ６６、ＮＯ）、上記ＩＣカード１００の制御素子１０４は、エラーを意味するステータスワードをセットしたレスポンスを端末３００へ送信する（ステップＳ７０）。この場合、ステータスワードには、例えば、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するキーデータを当該ＩＣカードが所有していないことを示すステータスが格納される。
【０１２１】
また、上記判断により当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するキーデータを当該ＩＣカード１００が所有している判断した場合（ステップＳ６６、ＹＥＳ）、上記ＩＣカード１００の制御素子１０４は、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドが指定するロジカルチャネル番号の乱数データと当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのデータ部に格納されているデータとの演算処理（例えば、図９に示す例ではＸＯＲ演算処理）する（ステップＳ６７）。
【０１２２】
上記ステップＳ６７の演算処理の結果（上記ステップＳ６７の演算結果をαとする）が得られると、上記ＩＣカード１００の制御素子１０４は、上記ＩＣカード１００の制御素子１０４は、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データで指定されるアルゴリズムとＰ２データで指定されるキーデータとを用いて、演算結果αを演算処理（例えば、暗号化処理）する（ステップＳ６８）。  
上記ステップＳ６８の演算処理の結果（上記ステップＳ６８の演算結果をβとする）が得られると、上記ＩＣカード１００の制御素子１０４は、演算結果βをレスポンスデータとしたレスポンスを端末３００へ送信する（ステップＳ６９）。
【０１２３】
なお、図２０に示す動作例と図９に示す例と対比すると、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのデータ部に格納されるデータは図９に示すＲ１であり、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データで示されるアルゴリズムは図９に示す（ａｌｇ）であり、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２で示されるキーデータは図９に示す（Ｋｅｙ−ＩＤ）である。また、上記ステップＳ６７の演算処理は、Ｒ１とＲ２とのＸＯＲ演算処理であり、上記ステップＳ６８の演算処理は、当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データが示すアルゴリズムと当該“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２データが示す暗号化キー（Ｋ２）とを用いたデータＤ２に対する暗号化処理Ｅである。
【０１２４】
上記のような内部認証処理によれば、ＩＣカードがロジカルチャネル番号ごとに乱数データを保持することができ、ロジカルチャネル番号ごとの乱数データを用いた内部認証処理を実現することができる。
【図面の簡単な説明】
【０１２５】
【図１】本発明の実施の形態に係るＩＣカードの構成を概略的に示すブロック図。
【図２】データメモリ内のファイル構造を示す概念図。
【図３】ロジカルチャネル番号ごとのレコードポインタの格納状態を示す図。
【図４】データメモリ内のＥＦの一例を示す図。
【図５】ロジカルチャネルの概念を説明する図。
【図６】ＤＦ１に対してロジカルチャネル番号＃１を割り当てた状態のファイル構造を示す概念図。
【図７】コマンドのＣＬＡバイトのコーディングについて説明する図。
【図８】ＩＣカードと外部装置としての端末とから構成されるＩＣカードシステムの構成例を概略的に示す図。
【図９】端末によるＩＣカードの認証処理を概略的に説明するための図。
【図１０】ＩＣカードによる端末の認証処理を概略的に説明するための図。
【図１１】“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドのフォーマットを示す図。
【図１２】乱数データの格納テーブルの構成例を示す図。
【図１３】コマンドに対するレスポンスの構成例を示す図。
【図１４】“Ｇｅｔ  Ｃｈａｌｌｅｎｇｅ”コマンドを受信した場合のＩＣカードの動作を説明するためのフローチャート。
【図１５】“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのフォーマットを示す図。
【図１６】“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ１データの例を示す図。
【図１７】“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２データの例を示す図。
【図１８】“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのＰ２データにおけるキーデータの具体例を示す図。
【図１９】“Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信した場合のＩＣカードの動作を説明するためのフローチャート。
【図２０】“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドのフォーマットを示す図。
【図２１】“Ｉｎｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅ”コマンドを受信した場合のＩＣカードの動作を説明するためのフローチャート。
【符号の説明】
【０１２６】
１００…ＩＣカード（携帯可能電子装置）、１０２…通信部、１０３…ＩＣチップ、１０４…制御素子（ＣＰＵ）、１０５…データメモリ（不揮発性メモリ）、１０６…ワーキングメモリ、１０７…プログラムメモリ、２０１…ＭＦ、２０２，２０３…ＥＦ、２０４，２０５，２０６，２０７…ＤＦ、２０８，２０９，２１０，２１１，２１２，２１３，２１４，２１５，２１６…ＥＦ、３００…端末、１０６ａ…格納テーブル
【図１】
0004828809.tif 000002
【図２】
0004828809.tif 000003
【図３】
0004828809.tif 000004
【図４】
0004828809.tif 000005
【図５】
0004828809.tif 000006
【図６】
0004828809.tif 000007
【図７】
0004828809.tif 000008
【図８】
0004828809.tif 000009
【図９】
0004828809.tif 000010
【図１０】
0004828809.tif 000011
【図１１】
0004828809.tif 000012
【図１２】
0004828809.tif 000013
【図１３】
0004828809.tif 000014
【図１４】
0004828809.tif 000015
【図１５】
0004828809.tif 000016
【図１６】
0004828809.tif 000017
【図１７】
0004828809.tif 000018
【図１８】
0004828809.tif 000019
【図１９】
0004828809.tif 000020
【図２０】
0004828809.tif 000021
【図２１】
0004828809.tif 000022