(57)【特許請求の範囲】
【請求項１】
集積回路との間で通信を行ってサービスを提供するための処理手順を記述した処理手順データを含む複数のデータモジュールによってそれぞれ構成される複数のアプリケーションプログラムをそれぞれ予め決められた記憶領域に記憶し、前記データモジュールと、当該データモジュールに応じた処理において他の前記データモジュールを利用するために用いられる第１の鍵データと、当該データモジュールに応じた処理において前記集積回路とデータ授受を行うために用いられる第２の鍵データとを対応付けて示す管理データを記憶する記憶回路と、
前記データモジュールに基づいて前記サービスに係わる処理を行い、当該処理において、前記管理データを参照して、当該データモジュールに対応した前記第１の鍵データを用いて前記他のデータモジュールを利用し、当該データモジュールに対応した前記第２の鍵データを用いて前記集積回路とデータの授受を行う半導体回路と
を有するデータ処理装置。
【請求項２】
前記記憶回路は、前記データモジュールを用いて行われた処理の履歴データ、前記記憶領域に対して前記データモジュールを登録する手順を示したプログラムデータ、前記記憶領域から前記データモジュールの登録を削除する手順を示したプログラムデータ、並びに前記アプリケーションプログラムを記憶する前記記憶領域を規定するための手順を示したプログラムデータのうち少なくも一つを前記データモジュールとして記憶する
請求項１に記載のデータ処理装置。
【請求項３】
前記半導体回路は、
前記他のデータモジュールに応じた処理が当該半導体回路で実行される場合に、前記管理データを用いて、前記所定のデータモジュールに対応する前記第１の鍵データと、前記他のデータモジュールに対応する前記第１の鍵データとを得て、当該得た２つの第１の鍵データが一致していることを条件に、前記実行中の所定のデータモジュールから前記他のデータモジュールを利用する
請求項１に記載のデータ処理装置。
【請求項４】
前記記憶回路は、前記データモジュールのそれぞれについて、当該データモジュールに関する利用について許諾する形態を示す利用許可データ
を記憶し、
前記半導体回路は、前記２つの第１の鍵データが一致している場合に、当該他のデータモジュールに対応する前記利用許諾データを基に、当該利用許諾データによって許諾される形態で前記他のデータモジュールを利用する
請求項３に記載のデータ処理装置。
【請求項５】
前記半導体回路は、
前記他のデータモジュールに応じた処理が他の半導体回路で実行される場合に、前記管理データを用いて、前記所定のデータモジュールに対応する前記第１の鍵データを得て、当該第１の鍵データを用いて前記他の半導体回路と相互認証を行い、互いの正当性が認証されたことを条件に、前記実行中の所定のデータモジュールから前記他のデータモジュールを利用する
請求項１に記載のデータ処理装置。
【請求項６】
前記半導体回路は、前記互いの正当性が認証された場合に、前記他のデータモジュールに関する利用について許諾される形態を示す利用許諾データを基に、当該利用許諾データによって許諾される形態で前記他のデータモジュールを利用する
請求項５に記載のデータ処理装置。
【請求項７】
前記第１の鍵データは、同一の前記アプリケーションプログラムを構成するデータモジュールについて同一となるように規定されている
請求項１に記載のデータ処理装置。
【請求項８】
前記記憶回路は、前記アプリケーションプログラム毎に固有に割り当てられた鍵データを用いて暗号化された前記アプリケーションプログラムを記憶する
請求項１に記載のデータ処理装置。
【請求項９】
前記半導体回路は、
前記データモジュールデータから、前記アプリケーションプログラムの処理を構成する複数のジョブの実行順番を示すジョブ実行順番データと、前記複数のジョブの実行の進行状態を示すステータスデータとを含むジョブ管理用データを生成し、
前記ジョブ管理用データの前記ステータスデータおよび前記処理順番データに基づいて、次に実行を行うジョブを選択し、
前記選択したジョブを実行し、
当該ジョブの実行に応じて、前記選択したジョブ管理用データの前記ステータスデータを更新する
請求項１に記載のデータ処理装置。
【請求項１０】
前記半導体回路は、
前記処理手順データおよび前記管理データを用いて、前記ジョブ管理用データのテンプレートデータを生成し、
前記処理要求に応じて、前記テンプレートデータを用いて前記ジョブ管理用データを生成する
請求項９に記載のデータ処理装置。
【請求項１１】
前記半導体回路は、
複数の処理要求のそれぞれについて、前記ジョブ管理用データを生成し、
複数の前記データモジュールから一つのジョブ管理用データを選択し、
前記選択したジョブ管理用データの前記ステータスデータおよび前記処理順番データに基づいて、次に実行を行うジョブを選択し、
前記選択したジョブを実行し、
当該ジョブの実行に応じて、前記選択したジョブ管理用データの前記ステータスデータを更新し、
当該更新後に、前記複数のデータモジュールから一つのジョブ管理用データを選択する
請求項１０に記載のデータ処理装置。
【請求項１２】
前記半導体回路は、
前記処理要求に応じた処理を構成する全てのジョブの実行が終了した前記ジョブ管理用データを消去する
請求項１１に記載のデータ処理装置。
【請求項１３】
集積回路との間で通信を行ってサービスを提供するための処理を行う半導体回路が記憶回路とデータ授受してデータ処理方法であって、
前記記憶回路が、集積回路との間で通信を行ってサービスを提供するための処理手順を記述した処理手順データを含む複数のデータモジュールによってそれぞれ構成される複数のアプリケーションプログラムをそれぞれ予め決められた記憶領域に記憶し、前記データモジュールと、当該データモジュールに応じた処理において他の前記データモジュールを利用するために用いられる第１の鍵データと、当該データモジュールに応じた処理において前記集積回路とデータ授受を行うために用いられる第２の鍵データとを対応付けて示す管理データを記憶する場合に、
前記半導体回路が、前記データモジュールに基づいて前記サービスに係わる処理を行い、
前記半導体回路が、前記サービスに係わる処理において、前記管理データを参照して、当該データモジュールに対応した前記第１の鍵データを用いて前記他のデータモジュールを利用し、
前記半導体回路が、前記サービスに係わる処理において、当該データモジュールに対応した前記第２の鍵データを用いて前記集積回路とデータの授受を行う
データ処理方法。
【請求項１４】
前記半導体回路が、前記他のデータモジュールに応じた処理が当該半導体回路で実行される場合に、前記管理データを用いて、前記所定のデータモジュールに対応する前記第１の鍵データと、前記他のデータモジュールに対応する前記第１の鍵データとを得て、当該得た２つの第１の鍵データが一致していることを条件に、前記実行中の所定のデータモジュールから前記他のデータモジュールを利用する
請求項１３に記載のデータ処理方法。
【請求項１５】
前記記憶回路が、前記データモジュールのそれぞれについて、当該データモジュールに関する利用について許諾する形態を示す利用許可データを記憶している場合に、
前記半導体回路が、前記２つの第１の鍵データが一致している場合に、当該他のデータモジュールに対応する前記利用許諾データを基に、当該利用許諾データによって許諾される形態で前記他のデータモジュールを利用する
請求項１４に記載のデータ処理方法。
【請求項１６】
前記半導体回路が、前記他のデータモジュールに応じた処理が他の半導体回路で実行される場合に、前記管理データを用いて、前記所定のデータモジュールに対応する前記第１の鍵データを得て、当該第１の鍵データを用いて前記他の半導体回路と相互認証を行い、互いの正当性が認証されたことを条件に、前記実行中の所定のデータモジュールから前記他のデータモジュールを利用する
請求項１３に記載のデータ処理方法。
【請求項１７】
前記半導体回路が、前記互いの正当性が認証された場合に、前記他のデータモジュールに関する利用について許諾される形態を示す利用許諾データを基に、当該利用許諾データによって許諾される形態で前記他のデータモジュールを利用する
請求項１６に記載のデータ処理方法。
【請求項１８】
前記第１の鍵データは、同一の前記アプリケーションプログラムを構成するデータモジュールについて同一となるように規定されている
請求項１３記載のデータ処理方法。
【請求項１９】
前記半導体回路が、前記データモジュールデータから、前記アプリケーションプログラムの処理を構成する複数のジョブの実行順番を示すジョブ実行順番データと、前記複数のジョブの実行の進行状態を示すステータスデータとを含むジョブ管理用データを生成し、
前記半導体回路が、前記ジョブ管理用データの前記ステータスデータおよび前記処理順番データに基づいて、次に実行を行うジョブを選択し、
前記半導体回路が、前記選択したジョブを実行し、
前記半導体回路が、当該ジョブの実行に応じて、前記選択したジョブ管理用データの前記ステータスデータを更新する
請求項１３に記載のデータ処理方法。
【請求項２０】
前記半導体回路が、前記処理手順データおよび前記管理データを用いて、前記ジョブ管理用データのテンプレートデータを生成し、
前記半導体回路が、前記処理要求に応じて、前記テンプレートデータを用いて前記ジョブ管理用データを生成する
請求項１９に記載のデータ処理方法。
【請求項２１】
前記半導体回路が、複数の処理要求のそれぞれについて、前記ジョブ管理用データを生成し、
前記半導体回路が、複数の前記データモジュールから一つのジョブ管理用データを選択し、
前記半導体回路が、前記選択したジョブ管理用データの前記ステータスデータおよび前記処理順番データに基づいて、次に実行を行うジョブを選択し、
前記半導体回路が、前記選択したジョブを実行し、
当該ジョブの実行に応じて、前記選択したジョブ管理用データの前記ステータスデータを更新し、
前記半導体回路が、当該更新後に、前記複数のデータモジュールから一つのジョブ管理用データを選択する
請求項２０に記載のデータ処理方法。
【請求項２２】
前記半導体回路が、前記処理要求に応じた処理を構成する全てのジョブの実行が終了した前記ジョブ管理用データを消去する
請求項２１に記載のデータ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＣなどの集積回路を用いたサービス提供に用いられるデータ処理装置およびその方法に関する。
【０００２】
【従来の技術】
現在、ＩＣカードを用いてインターネットなどのネットワークを介した取り引きを行う通信システムが開発されている。
このような通信システムでは、ＩＣカードを用いたサービスを提供するサービス提供者からの依頼を受けて当該サービス提供者が規定した手続き処理を実行するアプリケーションプログラムをサーバ装置が実行する。
サーバ装置は、例えばＩＣカードのリーダ・ライタやＰＣ(Personal Computer) から処理要求に応じて、上記アプリケーションプログラムに基づいて、ユーザ認証やデータの暗号化及び復号などの処理を行う。
【０００３】
【発明が解決しようとする課題】
上述したサーバ装置上で動作するアプリケーションプログラムは、サービス提供者が設定した鍵データ、課金データおよび履歴データなどのセキュリティの高いデータを取り扱うため、不正な改竄や監視から保護したいという要請がある。
【０００４】
本発明は上述した従来技術の問題点に鑑みてなされ、ＩＣなどの集積回路を用いたサービスを提供する際に、サーバ装置上で動作するアプリケーションプログラムのセキュリティを高めることができるデータ処理装置およびその方法を提供することを目的とする。
【０００５】
【課題を解決するための手段】
上述した従来技術の問題点を解決し、上述した目的を達成するために、第１の発明のデータ処理装置は、集積回路との間で通信を行ってサービスを提供するための処理手順を記述した処理手順データを含む複数のデータモジュールによってそれぞれ構成される複数のアプリケーションプログラムをそれぞれ予め決められた記憶領域に記憶し、前記データモジュールと、当該データモジュールに応じた処理において他の前記データモジュールを利用するために用いられる第１の鍵データと、当該データモジュールに応じた処理において前記集積回路とデータ授受を行うために用いられる第２の鍵データとを対応付けて示す管理データを記憶する記憶回路と、前記データモジュールに基づいて前記サービスに係わる処理を行い、当該処理において、前記管理データを参照して、当該データモジュールに対応した前記第１の鍵データを用いて前記他のデータモジュールを利用し、当該データモジュールに対応した前記第２の鍵データを用いて前記集積回路とデータの授受を行う半導体回路とを有する。
【０００６】
本発明の第１のデータ処理装置の作用は以下のようになる。
半導体回路が、記憶回路から読み出したデータモジュールに基づいて前記サービスに係わる処理を行う。
半導体回路は、当該処理において、前記管理データを参照して、当該データモジュールに対応した前記第１の鍵データを用いて前記他のデータモジュールを利用する。
また、半導体回路は、当該処理において、当該データモジュールに対応した前記第２の鍵データを用いて前記集積回路とデータの授受を行う。
【０００７】
また、第１の発明のデータ処理装置は、好ましくは、前記記憶回路は、前記データモジュールを用いて行われた処理の履歴データ、前記記憶領域に対して前記データモジュールを登録する手順を示したプログラムデータ、前記記憶領域から前記データモジュールの登録を削除する手順を示したプログラムデータ、並びに前記アプリケーションプログラムを記憶する前記記憶領域を規定するための手順を示したプログラムデータのうち少なくも一つを前記データモジュールとして記憶する。
【０００８】
また、第１の発明のデータ処理装置は、好ましくは、前記半導体回路は、前記他のデータモジュールに応じた処理が当該半導体回路で実行される場合に、前記管理データを用いて、前記所定のデータモジュールに対応する前記第１の鍵データと、前記他のデータモジュールに対応する前記第１の鍵データとを得て、当該得た２つの第１の鍵データが一致していることを条件に、前記実行中の所定のデータモジュールから前記他のデータモジュールを利用する。
この場合に、第１の発明のデータ処理装置は、好ましくは、前記記憶回路は、前記データモジュールのそれぞれについて、当該データモジュールに関する利用について許諾する形態を示す利用許可データを記憶し、前記半導体回路は、前記２つの第１の鍵データが一致している場合に、当該他のデータモジュールに対応する前記利用許諾データを基に、当該利用許諾データによって許諾される形態で前記他のデータモジュールを利用する。
【０００９】
また、第１の発明のデータ処理装置は、好ましくは、前記半導体回路は、前記他のデータモジュールに応じた処理が他の半導体回路で実行される場合に、前記管理データを用いて、前記所定のデータモジュールに対応する前記第１の鍵データを得て、当該第１の鍵データを用いて前記他の半導体回路と相互認証を行い、互いの正当性が認証されたことを条件に、前記実行中の所定のデータモジュールから前記他のデータモジュールを利用する。
この場合に第１の発明のデータ処理装置は、好ましくは、前記半導体回路は、前記互いの正当性が認証された場合に、前記他のデータモジュールに関する利用について許諾される形態を示す利用許諾データを基に、当該利用許諾データによって許諾される形態で前記他のデータモジュールを利用する。
【００１０】
また、第２の発明のデータ処理方法は、集積回路との間で通信を行ってサービスを提供するための処理を行う半導体回路が記憶回路とデータ授受してデータ処理方法であって、前記記憶回路が、集積回路との間で通信を行ってサービスを提供するための処理手順を記述した処理手順データを含む複数のデータモジュールによってそれぞれ構成される複数のアプリケーションプログラムをそれぞれ予め決められた記憶領域に記憶し、前記データモジュールと、当該データモジュールに応じた処理において他の前記データモジュールを利用するために用いられる第１の鍵データと、当該データモジュールに応じた処理において前記集積回路とデータ授受を行うために用いられる第２の鍵データとを対応付けて示す管理データを記憶する場合に、前記半導体回路が、前記データモジュールに基づいて前記サービスに係わる処理を行い、前記半導体回路が、前記サービスに係わる処理において、前記管理データを参照して、当該データモジュールに対応した前記第１の鍵データを用いて前記他のデータモジュールを利用し、前記半導体回路が、前記サービスに係わる処理において、当該データモジュールに対応した前記第２の鍵データを用いて前記集積回路とデータの授受を行う。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態を添付図面を参照して説明する。
図１は、本実施形態の通信システム１の全体構成図である。
図１に示すように、通信システム１は、サーバ装置２、ＩＣカード３、カードリーダ・ライタ４、パーソナルコンピュータ５、ＡＳＰ(Application Service Provider)サーバ装置１９、ＳＡＭ(Secure Application Module) ユニット９を用いて、インターネット１０を介して通信を行ってＩＣカード３（本発明の集積回路）を用いた決済処理などの手続き処理を行う。
ＳＡＭユニット９（本発明のデータ処理装置）は、外部メモリ７（本発明の記憶回路）およびＳＡＭチップ８（本発明の半導体回路）を有する。
【００１２】
ＳＡＭチップ８は、必要に応じて、他のＳＡＭチップ８ａ（本発明の他の半導体回路）とデータの授受を行う。ＳＡＭチップ８ａは、例えば、図２に示すようにＳＡＭチップ８とは異なる他のＡＳＰサーバ装置１９ａに接続されていたり、あるいは、図３に示すように、ＳＡＭチップ８と同じＡＳＰサーバ装置１９に接続されている。
ＳＡＭチップ８ａの構成は、基本的にＳＡＭチップ８と同じである。
【００１３】
以下、図１に示す構成要素について説明する。
〔ＩＣカード３〕
図４は、ＩＣカード３の機能ブロック図である。
図４に示すように、ＩＣカード３は、メモリ５０およびＣＰＵ５１を備えたＩＣ(Integrated Circuit)３ａを有する。
メモリ５０は、図５に示すように、クレジットカード会社などのサービス事業者１５＿１が使用する記憶領域５５＿１、サービス事業者１５＿２が使用する記憶領域５５＿２、並びにサービス事業者１５＿３が使用する記憶領域５５＿３を有する。
また、メモリ５０は、記憶領域５５＿１へのアクセス権限を判断するために用いられる鍵データ、記憶領域５５＿２へのアクセス権限を判断するために用いられる鍵データ、並びに記憶領域５５＿３へのアクセス権限を判断するために用いられる鍵データを記憶している。当該鍵データは、相互認証や、データの暗号化および復号などに用いられる。
また、メモリ５０は、ＩＣカード３あるいはＩＣカード３のユーザの識別データを記憶している。
【００１４】
以下、ＳＡＭユニット９について詳細に説明する。
ＳＡＭユニット９は、前述したように、外部メモリ７（本発明の記憶回路）とＳＡＭチップ８（本発明の半導体回路）とを有する。
〔ＳＡＭチップ８のソフトウェア構成〕
ＳＡＭチップ８は、図６に示すようなソフトウェア構成を有している。
図６に示すように、ＳＡＭチップ８は、下層から上層に向けて、ＨＷ(Hardware)層、ＯＳ層、下位ハンドラ層、上位ハンドラ層およびＡＰ層を順に有している。
下位ハンドラ層には、ドライバ層が含まれる。
ここで、ＡＰ層では、図１に示すクレジットカード会社などのサービス事業者１５＿１，１５＿２，１５＿３によるＩＣカード３を用いた手続きを規定したアプリケーションプログラムＡＰ＿１，ＡＰ＿２，ＡＰ＿３（本発明のアプリケーションプログラム）が、外部メモリ７から読み出されて動作している。
ＡＰ層では、アプリケーションプログラムＡＰ＿１，ＡＰ＿２，ＡＰ＿３相互間、並びに上位ハンドラ層との間にファイアウォールＦＷが設けられている。
【００１５】
〔外部メモリ２０７〕
図７は、外部メモリ７の記憶領域を説明するための図である。
図７に示すように、外部メモリ２０７の記憶領域には、サービス事業者１５＿１のアプリケーションプログラムＡＰ＿１が記憶されるＡＰ記憶領域２２０＿１、サービス事業者１５＿２のアプリケーションプログラムＡＰ＿２が記憶されるＡＰ記憶領域２２０＿２、サービス事業者１５＿３のアプリケーションプログラムＡＰ＿３が記憶されるＡＰ記憶領域２２０＿３、並びにＳＡＭチップ２０８の管理者が使用するＡＰ管理用記憶領域２２１がある。
【００１６】
ＡＰ記憶領域２２０＿１に記憶されているアプリケーションプログラムＡＰ＿１は、後述する複数のアプリケーションエレメントデータＡＰＥ（本発明のデータモジュール）によって構成されている。ＡＰ記憶領域２２０＿１へのアクセスは、ファイアウォールＦＷ＿１によって制限されている。
ＡＰ記憶領域２２０＿２に記憶されているアプリケーションプログラムＡＰ＿２は、複数のアプリケーションエレメントデータＡＰＥによって構成されている。ＡＰ記憶領域２２０＿２へのアクセスは、ファイアウォールＦＷ＿２によって制限されている。
ＡＰ記憶領域２２０＿３に記憶されているアプリケーションプログラムＡＰ＿３は、複数のアプリケーションエレメントデータＡＰＥによって構成されている。ＡＰ記憶領域２２０＿３へのアクセスは、ファイアウォールＦＷ＿３によって制限されている。
本実施形態では、上記アプリケーションエレメントデータＡＰＥは、例えば、ＳＡＭユニット９の外部から外部メモリ７にダウンロードされる最小単位である。各アプリケーションプログラムを構成するアプリケーションエレメントデータＡＰＥの数は、対応するサービス事業者が任意に決定できる。
【００１７】
また、外部メモリ７に記憶されたアプリケーションプログラムＡＰ＿１，ＡＰ＿２，ＡＰ＿３は、スクランブルされており、ＳＡＭチップ８に読み込まれたときに、デスクランブルされる。
また、アプリケーションプログラムＡＰ＿１，ＡＰ＿２，ＡＰ＿３は、例えば、それぞれ図１に示すパーソナルコンピュータ１６＿１，１６＿２，１６＿３を用いて、サービス事業者１５＿１，１５＿２，１５＿３によって作成され、ＳＡＭチップ８を介して外部メモリ７にダウンロードされる。
【００１８】
以下、アプリケーションプログラムＡＰ＿１，ＡＰ＿２，ＡＰ＿３について詳細に説明する。
アプリケーションプログラムは、サービス事業者毎に、ＳＡＭ内に単数または複数個存在する。
アプリケーションプログラムＡＰ＿１，ＡＰ＿２，ＡＰ＿３（以下、ＡＰとも記す）は、図８に示すように、アプリケーションプログラムＡＰを識別するための識別データＡＰ＿ＩＤと、当該アプリケーションプログラムに含まれるアプリケーションエレメントデータＡＰＥの数を示すデータＡＰＥ＿ＮＵＭと、単数または複数のアプリケーションエレメントデータＡＰＥとによって構成される。
識別データＡＰ＿ＩＤは、サービス事業者毎に異なるように決められている。
【００１９】
図８に示すように、アプリケーションエレメントデータＡＰＥは、当該アプリケーションエレメントデータＡＰＥのデータサイズを示すデータＡＰＥ＿ＳＩＺＥと、当該アプリケーションエレメントデータＡＰＥを識別するための識別データＡＰＥ＿ＩＤと、データ本体ＡＰＥ＿ＰＬとで構成される。
ここで、識別データＡＰＥ＿ＩＤは、アプリケーションエレメントデータＡＰＥの種別を示すデータＡＰＥ＿ＴＹＰＥと、当該種別内でのアプリケーションエレメントデータＡＰＥの識別番号（インスタンス識別番号）を示すデータＩＮＳ＿ＮＵＭとで構成される。データＩＮＳ＿ＮＵＭは、エンドユーザ（サービス事業者）側で管理される。
例えば、アプリケーションエレメントデータＡＰＥがファイルシステムコンフィグレーションの場合には、データＡＰＥ＿ＴＹＰＥが「２」となり、データＩＮＳ＿ＮＵＭが「１」となる。これにより、同−のＳＡＭであれば、識別データＡＰＥ＿ＩＤにより一意にアプリケーションエレメントデータＡＰＥを特定できる。
【００２０】
図７に示す外部メモリ７には、上述したアプリケーションプログラムＡＰ（ＡＰ＿１，ＡＰ＿２，ＡＰ＿３）が、ＳＡＭユニット９外で暗号化鍵データＫ＿ＡＰによって暗号化されて、アプリケーションプログラム・パッケージＡＰＰとして記憶されている。
暗号化鍵データＫ＿ＡＰとしては、アプリケーションプログラム毎で異なる暗号化鍵データが用いられる。
【００２１】
以下、図８を用いて説明したアプリケーションエレメントデータＡＰＥの種類について説明する。
図９は、１つのＡＰ領域内に記憶されたアプリケーションエレメントデータＡＰＥの一例を示す図である。
図９に示すように、ＡＰ領域内には、カードアクセス鍵データ、ファイルシステムコンフィグレーションデータ、ＳＡＭ相互認証用鍵データ、ＳＡＭ間鍵パッケージ鍵データ、ＩＣカード操作用マクロコマンドスクリプトプログラム（本発明の処理手順データ）、メモリ分割用鍵パッケージ、エリア登録鍵パッケージ、エリア削除用鍵パッケージ、サービス登録用鍵データ、サービス削除用鍵パッケージ、ＡＰリソース鍵データＫ＿ＡＰＲが、アプリケーションエレメントデータＡＰＥとして記憶されている。
【００２２】
以下、図９に示す各アプリケーションエレメントデータＡＰＥについて説明する。
・カードアクセス鍵データ
カードアクセス鍵データは、ＩＣカード３のメモリ５０に対してのデータの読み書き操作に用いられる鍵データである。また、後述するＩＣカード操作用マクロコマンドスクリプトプログラムで参照される鍵データも、カードアクセス鍵データと同じ種別のアプリケーションエレメントデータＡＰＥに含まれる
・ファイルシステムコンフィグレーションデータ
ファイルシステムコンフィグレーションデータとしては、例えば、ログデータ、ネガデータ、ジャーナルデータがある。
ログデータは例えばアプリケーションエレメントデータＡＰＥの利用履歴データであり、ネガデータは例えばＩＣカードの失効情報であり、ジャーナルデータは例えばＳＡＭでの実行履歴である。
例えば、ファイルシステムコンフィグレーションでは、ファイルアクセスの種別（レコードキー指定・ソート・リング）の選択を行い、レコードキーの場合であれば、レコードサイズ、レコード全体件数・レコード署名バージョン・レコード署名メソッドタイプ、レコードデータサイズ、レコード署名鍵を設定する。さらに、外部から本ファイルシステムにデータを書き込む際に署名検証を実施するかの有無の指定などを行う。ここでレコードとは、ファイルデータへの書き込み／読み出しの最小単位である。
【００２３】
・ＳＡＭ相互認証用鍵データ
同一ＳＡＭ内にあるＡＰ間相互認証にも使用される。
ＳＡＭ相互認証用鍵データとは、対応するアプリケーションエレメントデータＡＰＥを同一ＳＡＭ内の他のＡＰまたは他のＳＡＭからアクセスする際に用いられる鍵データである。
・ＳＡＭ間鍵パッケージ鍵
ＳＡＭ間鍵パッケージ鍵とは、ＳＡＭ間での相互認証後、カードアクセス鍵データなどのデータを交換する際に用いられる暗号化用鍵データである。
・ＩＣカード操作用マクロコマンドスクリプトプログラム
ＩＣカード操作用マクロコマンドスクリプトプログラムは、サービス事業者自身によって生成され、ＩＣカード３に係わる処理の順番やＡＳＰサーバ装置１９とのやり取りを記述している。ＩＣカード操作用マクロコマンドスクリプトプログラムは、ＳＡＭユニット９に設定された後に、ＳＡＭチップ８内で解釈され、対応するＩＣカードエンティティデータが生成される。
・メモリ分割用鍵パッケージ
メモリ分割用鍵パッケージは、サービス事業者がＩＣカード３を用いたサービスの運用開始前に、外部メモリ７のやＩＣカード３のメモリの記憶領域を分割するために使用するデータである。
・エリア登録鍵パッケージ
エリア登録鍵パッケージは、サービス事業者がＩＣカード３を用いたサービスの運用開始前に、ＩＣカード３のメモリの記憶領域にエリア登録を行う場合に使用するデータである。
・エリア削除用鍵パッケージ（内部生成）
エリア削除用鍵パッケージは、カードアクセス鍵データからＳＡＭ内部で自動生成が可能なパッケージである。
・サービス登録用鍵（内部生成）
サービス登録用鍵パッケージは、サービス事業者がＩＣカード３を用いたサービスの運用開始前に、外部メモリ７のアプリケーションエレメントデータＡＰＥを登録するために用いられる。
サービス登録用鍵パッケージは、カードアクセス鍵データからＳＡＭ内部で自動生成が可能なパッケージである。
・サービス削除用鍵パッケージ（内部生成）
サービス削除用鍵パッケージは、外部メモリ７に登録されているアプリケーションエレメントデータＡＰＥを削除するために用いられる。
サービス削除用鍵パッケージは、カードアクセス鍵データからＳＡＭ内部で自動生成が可能なパッケージである。
・鍵データＫ＿ＡＰＥ
鍵データＫ＿ＡＰＥは、アプリケーションエレメントデータＡＰＥを設定する際の暗号用鍵として使用され、ＡＰ領域毎に、アプリケーションエレメントデータＡＰＥを設定するために異なる鍵データＫ＿ＡＰＥが割り当てられている。
【００２４】
以下、上述したＩＣカード操作用マクロコマンドスクリプトプログラム（以下、スクリプトプログラムとも記す）について詳細に説明する。
スクリプトプログラムは、ＳＡＭチップ８上で動作するサービス事業者１５＿１，１５＿２，１５＿３のアプリケーションプログラムＡＰ＿１，ＡＰ＿２，ＡＰ＿３、並びに当該アプリケーションプログラムの実行時にＩＣカード３が行う処理の手続きを規定するためのプログラムである。
本実施形態では、後述するように、図１０に示すように、ＳＡＭチップ８内で、スクリプトダウンロードタスク６９およびスクリプト解釈タスク７０に基づいて処理を行い、ＡＰ管理テーブルデータおよびスクリプトプログラムから、サービス事業者１５＿１，１５＿２，１５＿３に関する手続きに用いられるＩＣカードエンティティテンプレートデータ３０＿１、入力用データブロック３１＿ｘ１、出力用データブロック３２＿ｘ２、ログ用データブロック３３＿ｘ３および演算定義用データブロック３４＿ｘ４を生成する。
【００２５】
図１１は、ＩＣカード操作用マクロコマンドスクリプトプログラムの記述に用いられるコマンドを説明するための図である。
当該コマンドは、ＳＡＭチップ８自身に対してのコマンドは、第１文字が「Ｓ」となり、ＩＣカード３の操作に係わるコマンドは第１文字が「Ｃ」となっている。
また、第２文字は、用途により使い分けられ、例えば、ＩＣカード３の発行元設定宣言は「Ｉ」、利用するアプリケーションエレメントデータＡＰＥの宣言（サービスタイプエレメント宣言）は「Ｓ」、ＩＣカード３からの単純読み込み宣言は「Ｒ」、ＩＣカード３への単純書き込み宣言は「Ｗ」、アプリケーションエレメントデータＡＰＥ間演算定義は「Ｆ」になっている。
【００２６】
スクリプトプログラム２１＿１，２１＿２，２１＿３の記述に用いられるコマンドには、ＳＣコマンド、ＳＯコマンド、ＳＩコマンド、ＳＬコマンド、ＳＦコマンド、ＣＩコマンド、ＣＳコマンド、ＣＲコマンド、ＣＷコマンドがある。
ＳＣコマンドは、ＳＡＭチップ８が同時に処理することができる最大数のＩＣカードエンティティデータの数を宣言するコマンドである。
例えば、ＳＡＭチップ８が１０００個のＩＣカードエンティティデータを同時に処理可能な場合には、「ＳＣ：１０００」と記述される。
【００２７】
ＳＯコマンドは、後述するＩＣカードエンティティデータに基づいてＩＣカード３を用いた処理を行う際に、ＳＡＭチップ８内で用意されたデータブロックのうち、ＩＣカード３から読み取ったデータが格納される出力用データブロック３２＿ｘ２となるデータブロックを宣言するコマンドである。
例えば、データブロック１〜１０が用意されている場合に、ＩＣカード３から読み取ったデータをデータブロック１に格納する場合には、「ＳＯ：１」と記述される。
【００２８】
ＳＩコマンドは、後述するＩＣカードエンティティデータに基づいてＩＣカード３を用いた処理を行う際に、ＳＡＭチップ８内で用意されたデータブロックのうち、ＩＣカード３に書き込むデータが格納される入力用データブロック３１＿ｘ１となるデータブロックを宣言するコマンドである。
例えば、データブロック１〜１０が用意されている場合に、ＩＣカード３に書き込むデータをデータブロック２，３に格納する場合には、「ＳＩ：２，３」と記述される。
【００２９】
ＳＬコマンドは、後述するＩＣカードエンティティデータに基づいてＩＣカード３を用いた処理を行う際に、ＳＡＭチップ８内で用意されたデータブロックのうち、操作に係わるログデータを格納するログ用データブロック３３＿ｘ３となるデータブロックを宣言するコマンドである。
例えば、データブロック１〜１０が用意されている場合に、ログデータをデータブロック４に格納する場合には、「ＳＬ：４」と記述される。
【００３０】
ＳＦコマンドは、ＩＣカード３に係わる相互のアプリケーションエレメントデータＡＰＥ間の関係を定義を記述する演算定義用データブロック３４＿ｘ４となるデータブロックを用意するためのコマンドである。
演算定義用データブロック３４＿ｘ４の内容は、ＩＣカードエンティティデータの処理前データとなる。
【００３１】
ＣＩコマンドは、ＩＣカード３の発行元（サービス事業者）を宣言するためのコマンドである。
ＣＩコマンドで定義されたサービス事業者を特定するデータは、ＩＣカードエンティティデータのＩＣカード種別データとなる。
【００３２】
ＣＳコマンドは、アプリケーションエレメントデータＡＰＥ（サービスタイプエレメント）の名前ＡＰＥ＿Ｎを引用して、ＩＣカード３への複数のサービスの同時操作を行うことを宣言するコマンドである。ＣＳコマンドでは、名前ＡＰＥ＿Ｎによって指定されたアプリケーションエレメントデータＡＰＥ間の演算を規定する関数を宣言できる。
例えば、「ＣＳ：”Ｒｃ”＋”Ｗｃ”＋”Ｗｄ”」などの宣言を行える。
ＣＳコマンドの内容に基づいて、ＩＣカードエンティティデータのＡＰＥ＿Ｎ指定データ、並びに処理順番データが決定される。
【００３３】
ＣＲコマンドは、アプリケーションエレメントデータＡＰＥ間の関係の定義が行われていない場合（ＳＦコマンドが記述されていない場合）に、ＩＣカード３から読み出したデータを指定したデータブロックに格納することを宣言する。
例えば、ＩＣカード３から読み出したデータをデータブロック１に格納する場合には「ＣＲ：ＳＯ：１＝”Ｒｃ”」と記述する。
【００３４】
ＣＷコマンドは、アプリケーションエレメントデータＡＰＥ間の関係の定義が行われていない場合に、指定したデータブロックに格納したデータをＩＣカード３に書き込むことを宣言する。
例えば、データブロック２に格納されたデータをＩＣカード３に書き込む場合には「ＣＷ：ＳＩ：２＝”Ｗｃ”」と記述する。
【００３５】
ＣＦコマンドは、サービスを跨がった演算内容を記述するデータブロックを宣言する。
例えば、サービスを跨がった演算内容をＳＦデータブロック１に記述する場合には、ＣＦ：ＣＥＳ＿ＦＵＮＣ＝ＳＦ：１」とする。
そして、ＳＦデータブロック１内に、例えば、「“Ｗｃ”＝Ｉｆ（“Ｗｃ”＞１０）ｔｈｅｎ（“Ｗｃ”−１０；“Ｗｄ”＝“Ｗｃ”＊０．０８＋“Ｗｄ”）」と記述する。本式は、サービスＷｃの残数が１０よりも大きいときにＷｃの値を１０減算し、Ｗｃの８％に相当するポイント数として蓄積ポイントとしてＷｄに加算する操作を表現している。
【００３６】
以下、図７に示す外部メモリ７のＡＰ管理用記憶領域２２１に記憶されたデータについて説明する。
ＡＰ管理用記憶領域２２１へのアクセスは、ファイアウォールＦＷ＿４によって制限されている。
なお、ファイアウォールＦＷ＿４は、図６に示すファイアウォールＦＷに対応している。
図１２は、ＡＰ管理用記憶領域２２１に記憶されているデータの詳細を説明するための図である。
ＡＰ管理用記憶領域２２１には、図１２に示すように、ＡＰ管理用テーブルデータ３００＿１，３００＿２，３００＿３（本発明の管理データ）と、ＡＰＰテーブルデータ３１０＿１，３１０＿２，３１０＿３（本発明の利用許諾データ）とが記憶されている。
ここで、ＡＰ管理用テーブルデータ３００＿１，３００＿２，３００＿３と、ＡＰＰテーブルデータ３１０＿１，３１０＿２，３１０＿３は、例えば、ＳＡＭチップ８のセットアップ時に予め登録されている。また、ＡＰ管理用テーブルデータ３００＿１，３００＿２，３００＿３と、ＡＰＰテーブルデータ３１０＿１，３１０＿２，３１０＿の書き換えは、ＳＡＭチップ８の管理者のみが行える。
【００３７】
ＡＰ管理用テーブルデータ３００＿１，３００＿２，３００＿３は、アプリケーションプログラムＡＰ毎に規定されている。
また、ＡＰＰテーブルデータ３１０＿１，３１０＿２，３１０＿３は、ＳＡＭ相互認証鍵データ毎に規定されている。
【００３８】
図１３は、ＡＰ管理用テーブルデータ３００＿１を説明するための図である。
ＡＰ管理用テーブルデータ３００＿２，３００＿３も、ＡＰ管理用テーブルデータ３００＿１と同じフォーマットを有している。
図１３に示すように、ＩＣカード操作用マクロコマンドスクリプトプログラム内で用いられる参照されるアプリケーションエレメントデータＡＰＥの名前ＡＰＥ＿Ｎのそれぞれについて、識別データＡＰＥ＿ＩＤ、内部／外部指定データＩＥＩ、識別データＳＡＭ＿ＩＤ、識別データＡＰ＿ＩＤ、鍵データＫ＿ＣＡＲＤＡ（本発明の第２の鍵データ）、鍵データＫ＿ＳＡＭ（本発明の第１の鍵データ）、データＳＥＴ＿ＡＰＰ、データＦＬＡＧ＿ＩＰおよびデータＦＬＡＧ＿ＳＴＲを対応付けて示している。
アプリケーションエレメントデータＡＰＥの名前ＡＰＥ＿Ｎは、サービス事業者１５＿１，１５＿２，１５＿３のアプリケーションプログラムによって提供されるサービス（アプリケーションエレメントデータＡＰＥ）に付けられた名前である。名前ＡＰＥ＿Ｎは、各サービス事業者のアプリケーションプログラムが使用できるサービスのサービス番号の替わりに参照される識別子である。
【００３９】
ここで、識別データＡＰＥ＿ＩＤは、アプリケーションエレメントデータＡＰＥの識別データである。
内部／外部指定データＩＥＩは、ＡＰＥが実体として存在するのか（内部指定）、あるいは他のＳＡＭから参照するのか（外部指定）を区別するフラグである。
識別データＳＡＭ＿ＩＤは、ＳＡＭチップ８が当該アプリケーションエレメントデータＡＰＥに係わる処理を行う際にデータ授受を行う相手側のＳＡＭの識別データである。
図１４は、ＳＡＭ＿ＩＤを説明するための図である。
ＳＡＭ＿ＩＤは、４バイトのデータであり、ＴＣＰ／ＩＰに類似したネットマスクの概念を有している。ネットマスクはビット単位での設定が可能である。
例えば、当該ネットマスクは、図１４に示すように、Ａクラス、ＢクラスおよびＣクラスの３種類に分類される。そして、同一のネットマスクが割り当てられたＳＡＭ相互間では、相互認証に使用する鍵データは１種類でよい。本実施形態では、例えば、同一のサービス事業者に同一のネットマスクが割り当てられる。
図１４において、Ａクラスのネットマスクは、「２５５．ＸＸ．ＸＸ．ＸＸ」で示され、上位１バイトに当該クラスを特定するための所定の値が割り当てられ、下位３バイトに、当該クラスに属する個々のＳＡＭを特定するための値が割り当てられる。ここで、「ＸＸ」には任意の値を設定できる。すなわち、Ａクラスのネットマスクによって、当該Ａクラスに属する１６７７７２１５個のＳＡＭ＿ＩＤを規定できる。
また、Ｂクラスのネットマスクは、「２５５．２５５．ＸＸ．ＸＸ」で示され、上位２バイトに当該クラスを特定するための所定の値が割り当てられ、下位２バイトに、当該クラスに属する個々のＳＡＭを特定するための値が割り当てられる。すなわち、Ｂクラスのネットマスクによって、当該Ｂクラスに属する６５５３５個のＳＡＭ＿ＩＤを規定できる。
また、Ｃクラスのネットマスクは、「２５５．２５５．２５５．ＸＸ」で示され、上位３バイトに当該クラスを特定するための所定の値が割り当てられ、下位１バイトに、当該クラスに属する個々のＳＡＭを特定するための値が割り当てられる。すなわち、Ｃクラスのネットマスクによって、当該Ｃクラスに属す２５５個のＳＡＭ＿ＩＤを規定できる。
【００４０】
識別データＡＰ＿ＩＤは、ＳＡＭチップ８が当該アプリケーションエレメントデータＡＰＥに係わる処理を行う際にデータ授受を行う相手側のＳＡＭで実行されるアプリケーションプログラムの識別データである。
鍵データＫ＿ＣＡＲＤＡは、ＳＡＭチップ８が当該アプリケーションエレメントデータＡＰＥに係わる処理を行う際にＩＣカード３のメモリ５０とデータ授受を行うために用いられる鍵データである。
【００４１】
鍵データＫ＿ＳＡＭは、ＳＡＭチップ８が当該アプリケーションエレメントデータＡＰＥに係わる処理を行う際に、他のＳＡＭとデータ授受を行うために用いられる鍵データである。
データＳＥＴ＿ＡＰＰは、ＳＡＭチップ８が当該アプリケーションエレメントデータＡＰＥに係わる処理を行う際に用いられる（参照される）ＡＰＰテーブルデータ３１０＿１，３１０＿２，３１０＿３を特定するためのデータである。
【００４２】
データＦＬＡＧ＿ＩＰは、ＳＡＭチップ８が管理（保持）するデータを他のＳＡＭチップ８などに公開するか否かを示すフラグデータである。
データＦＬＡＧ＿ＳＴＲは、ＳＡＭチップ８が管理（保持）するデータを他のＳＡＭチップ８などが保持することを許可するか否かを示すフラグデータである。
【００４３】
図１３において、ＡＰＥ＿Ｎ「ＳｅｒｖｉｃｅＡ」は、該当ＳＡＭ８内のアプリケーションプログラムで定義されたＩＣカード３のアクセス鍵である。「ＳｅｒｖｉｃｅＡ」の鍵データは非公開に設定しているため、他のＳＡＭ上のアプリケーションプログラムや本ＳＡＭ上の他のアプリケーションプログラムは、参照することができない。
また、「ＳｅｒｖｉｃｅＣ」は、本アプリケーションプログラムで定義されたＩＣカード３のアクセス鍵である。本ＳＡＭに後述するＣクラスのネットマスクが割り当てられている場合には、「ＳｅｒｖｉｃｅＣ」の鍵データは「４３．１７．１９．ＸＸ」のＳＡＭ＿ＩＤを持つＳＡＭ上のアプリケーションプログラムに公開される。この際ＳＡＭ相互認証用鍵は「ＴＴ１…．ＴＴｎ」、また他のＳＡＭが「ＳｅｒｖｉｃｅＣ」の鍵データを次回利用時まで保持可能かの可否を決定する。可の場合には、他のＳＡＭがカード上の「ＳｅｒｖｉｃｅＣ」を次回利用するときに、本ＳＡＭから再度カードアクセス鍵を入手する必要は無い。ＳｅｒｖｉｃｅＢのアクセス鍵は本ＳＡＭではなく、「４３．１３．１３７．ＸＸ」のＳＡＭ＿ＩＤを持つＳＡＭから入手する。ＳＡＭ間の相互認証用鍵として「ＳＳ１…ＳＳｎ」を使用する。
「ＳｅｒｖｉｃｅＢ」のアクセス鍵を次回利用時まで保持可能の有無は先方のＳＡＭが指定する可否フラグにより決定する。
「ＳｅｒｖｉｃｅＢ  Ｌｏｇ」は、「４３．１３．１３７．ＸＸ」のＳＡＭ＿ＩＤが割り当てられたログデータが格納されたファイルを指す。「ＳｅｒｖｉｃｅＢ  Ｌｏｇ」は、「ＳｅｒｖｉｃｅＢ」と同一ＳＡＭネットマスクであるため、相互認証用鍵は「ＳＳ１…ＳＳｎ」を使用する。ここで、相互認証鍵毎にＡＰＰテーブルデータが設けられている。本例では、「ＳｅｒｖｉｃｅＢ  ｌｏｇ」および「ＳｅｒｖｉｃｅＢ」へのアクセス許可は他のＳＡＭ上のＡＰ管理用テーブルデータが参照する他のＳＡＭのＡＰＰテーブルデータ３１０で規定されている。
【００４４】
図１５は、ＡＰＰテーブルデータ３１０＿１を説明するための図である。
ＡＰＰテーブルデータ３１０＿２，３１０＿３、３１０は、ＡＰＰテーブルデータ３１０＿１と同じフォーマットを有している。
図１５に示すように、ＡＰＰテーブルデータ３１０＿１は、各アプリケーションエレメントデータＡＰＥについて、その識別データＡＰＥ＿ＩＤと、当該アプリケーションエレメントデータＡＰＥに対して他のアプリケーションプログラム（他のアプリケーションエレメントデータＡＰＥ）から読み出し（ＲＥＡＤ）、書き込み（ＷＲＩＴＥ）および実行（ＥＸＣＵＴＥ）が可能であるか否かを示している。
【００４５】
例えば、図１５に示すＡＰＰテーブルデータ３１０＿１は、「ＳｅｒｖｉｃｅＢ  ｌｏｇ」については読取りが可、書込みが可、実行（削除）が不可を示している。
【００４６】
また、図７に示す外部メモリ７のＡＰ管理用記憶領域２２１は、例えば、ＩＣカード種別データとＡＰ＿ＩＤとを対応付けて示すＡＰ選択用データを記憶している。
ＩＣカード種別データは、図１に示すＩＣカード３の種別を示し、例えば、ＩＣカード３を用いた取り引きの決済を行うクレジットカード会社の識別データである。
【００４７】
本実施形態では、ＩＣカード操作用マクロコマンドスクリプトプログラム内に複数のアプリケーションエレメントデータＡＰＥの名前ＡＰＥ＿Ｎを組み合せたサービス内容を規定（記述）し、これを後述するＩＣカードエンティティデータ（ジョブ管理用データ）に反映させることで、複数のアプリケーションエレメントデータＡＰＥに対応するサービスを組み合わせたをサービスを提供できる。
例えば、ＩＣカード３からデータ読出しを行うサービスと、サーバ装置２にデータ書込みを行うサービスとを組み合わせたサービスを、ＩＣカードエンティティデータ内に定義できる。
【００４８】
また、ＡＰＥ＿Ｎあるいはそのサービス番号は、サービス事業者１５＿１，１５＿２，１５＿３によって提供されるサービスを行う際に、ＩＣカード３に発行するＩＣカード３が解釈可能な操作コマンドである。
【００４９】
アプリケーションプログラムＡＰ＿１は、外部メモリ７に記憶されたＡＰ管理用テーブルデータ３００＿１および所定のＩＣカード操作用マクロコマンドスクリプトプログラムによって規定される。
アプリケーションプログラムＡＰ＿２は、外部メモリ７に記憶されたＡＰ管理用テーブルデータ３００＿２および所定のＩＣカード操作用マクロコマンドスクリプトプログラムによって規定される。
アプリケーションプログラムＡＰ＿３は、外部メモリ７に記憶されたＡＰ管理用テーブルデータ３００＿３および所定のＩＣカード操作用マクロコマンドスクリプトプログラムによって規定される。
【００５０】
〔ＳＡＭチップ８〕
ＳＡＭチップ８は、ＳＣＳＩまたはＥｔｈｅｒｎｅｔなどを介してＡＳＰサーバ装置１９に接続される。ＡＳＰサーバ装置１９は、インターネット１０を介して、エンドユーザのパーソナルコンピュータ５、サービス事業者１５＿１，１５＿２，１５＿３のパーソナルコンピュータ１６＿１，１６＿２，１６＿３を含む複数の端末装置に接続される。
パーソナルコンピュータ５は、例えば、シリアルまたはＵＳＢを介してＤｕｍｂ型のカードリーダ・ライタ４に接続されている。カードリーダ・ライタ４が、ＩＣカード３との間で物理レベルに相当する例え無線通信を実現する。
ＩＣカード３への操作コマンドおよびＩＣカード３からのリスポンスパケットは、ＳＡＭユニット９側で生成および解読される。よって、その中間に介在するカードリーダ・ライタ４、パーソナルコンピュータ５およびＡＳＰサーバ装置１９は、コマンドやリスポンス内容をデータペイロード部分に格納して中継する役割を果たすのみで、ＩＣカード３内のデータの暗号化や復号および認証などの実操作には関与しない。
【００５１】
パーソナルコンピュータ１６＿１，１６＿２，１６＿３は、後述するスクリプトプログラムをＳＡＭチップ８にダウンロードすることで、それぞれアプリケーションプログラムＡＰ＿１，ＡＰ＿２，ＡＰ＿３をカスタマイズできる。
【００５２】
図１６は、図１に示すＳＡＭチップ８の機能ブロック図である。
図１６に示すように、ＳＡＭチップ８は、ＡＳＰＳ通信インタフェース部６０、外部メモリ通信インタフェース部６１、バススクランブル部６２、乱数発生部６３、暗号・復号部６４、メモリ６５およびＣＰＵ６６を有する。
ＳＡＭチップ８は、耐タンパ性のモジュールである。
【００５３】
ＡＳＰＳ通信インタフェース部６０は、図１に示すＡＳＰサーバ装置１９との間のデータ入出力に用いられるインタフェースである。
外部メモリ通信インタフェース部６１は、外部メモリ７との間のデータ入出力に用いられるインタフェースである。
バススクランブル部６２は、外部メモリ通信インタフェース部６１を介してデータを入出力する際に、出力するデータをスクランブルし、入力したデータをデスクランブルする。
乱数発生部６３は、認証処理を行う際に用いられる乱数を発生する。
暗号・復号部６４は、データの暗号化、並びに暗号化されたデータの復号を行う。
メモリ６５は、後述するように、ＣＰＵ６６によって用いられるタスク、プログラム、並びにデータを記憶する。
ＣＰＵ６６は、後述するスクリプトダウンロードタスク、スクリプト解釈タスク、エンティティ生成タスク（ジョブ管理用データ作成タスク）およびＩＣカード手続管理タスク（ジョブ管理用データ管理タスク）などのタスクを実行する。
【００５４】
以下、メモリ６５に記憶されるタスク、プログラムおよびデータについて説明する。
図１７は、メモリ６５に記憶されるタスク、プログラムおよびデータを説明するための図である。
図１７に示すように、スクリプトダウンロードタスク６９、スクリプト解釈タスク７０、エンティティ生成タスク７１、ＩＣカード手続管理用タスク７２、ＩＣカード操作用マクロコマンドスクリプトプログラム２１＿１〜２１＿３、ＡＰ管理用テーブルデータ３００＿１〜３００＿３、ＡＰＰテーブルデータ３１０＿１〜３１０＿３、ＩＣカードエンティティテンプレートデータ３０＿１〜３０＿３、ＩＣカードエンティティデータ７３＿ｘ、入力用データブロック３１＿ｘ１、出力用データブロック３２＿ｘ２、ログ用データブロック３３＿ｘ３、並びに演算定義用データブロック３４＿ｘ４を記憶している。
【００５５】
スクリプトダウンロードタスク６９は、図１０に示すように、ＡＰ管理用テーブルデータ３００＿１〜３００＿３（必要に応じてＡＰＰテーブルデータ３１０＿１〜３１０＿３）を、例えば、各サービス事業者のコンピュータからダウンロードし、これをＳＡＭチップ８に取り込む。
【００５６】
スクリプト解釈タスク７０は、各サービス事業者毎に、サービス定義テーブルデータ（必要に応じてＡＰＰテーブルデータ３１０＿１〜３１０＿３）およびスクリプトプログラムを用いて、ＩＣカードエンティティテンプレートデータ、入力用データブロック、出力用データブロック、ログ用データブロックおよび演算定義用データブロックを生成する。
各サービス事業者毎に生成されるデータブロックの数は特に限定されない。
【００５７】
エンティティ生成タスク７１は、例えば、ＡＳＰサーバ装置１９からエンティティ作成要求を受けると、ＩＣカード３との間でポーリングを行った後に、当該ＩＣカード３とサービス事業者との間の手続き処理に用いるＩＣカードエンティティデータを、当該サービス事業者に対応するＩＣカードエンティティプレートデータを用いて生成する。このとき、ＩＣカードエンティティプレートデータがクラスとなり、当該クラスのインスタンスとして、ＩＣカードエンティティデータが生成される。
エンティティ生成タスク７１によるＩＣカードエンティティデータの生成処理について後に詳細に説明する。
【００５８】
ＩＣカード手続管理用タスク７２は、メモリ６５内に存在する単数または複数のＩＣカードエンティティデータ７３＿ｘを用いて、ＩＣカード３とサービス事業者１５＿１〜１５＿３との間の手続き処理を実行する。
本実施形態では、複数のＩＣカード３とサービス事業者１５＿１〜１５＿３との間で行われる複数の手続き処理が同時に進行する。
ＩＣカード手続管理用タスク７２は、これら複数の手続き処理を並行して実行する。
ＩＣカード手続管理用タスク７２は、一連の手続きを終了したＩＣカードエンティティデータ７３＿ｘを消去する。
ＩＣカード手続管理用タスク７２の処理については後に詳細に説明する。
【００５９】
スクリプトプログラム２１＿１〜２１＿２は、スクリプトダウンロードタスク６９によって、例えば、外部メモリ７から入力され、メモリ６５に記憶される。
ＡＰ管理用テーブルデータ３００＿１〜３００＿３は、スクリプトダウンロードタスク６９によって、例えば、外部メモリ７から入力され、メモリ６５に記憶される。
ＡＰＰテーブルデータ３１０＿１〜３１０＿３は、スクリプトダウンロードタスク６９によって、例えば、外部メモリ７から入力され、メモリ６５に記憶される。
【００６０】
ＩＣカードエンティティテンプレートデータ３０＿１〜３０＿３は、スクリプト解釈タスク７０によって生成され、それぞれのサービス事業者に関する手続きのＩＣカードエンティティデータ７３＿ｘを生成する際のテンプレート（クラス）として用いられる。
ＩＣカードエンティティデータ７３＿ｘは、エンティティ生成タスク７１によって、ＩＣカードエンティティテンプレートデータ３０＿１〜３０＿３を例えばクラスとして用い、当該クラスのインスタンスとして生成される。
【００６１】
入力用データブロック３１＿ｘ１、出力用データブロック３２＿ｘ２、ログ用データブロック３３＿ｘ３および演算定義用データブロック３４＿ｘ４は、スクリプト解釈タスク７０によって生成される。
【００６２】
以下、ＩＣカードエンティティデータ７３＿ｘについて説明する。
ＩＣカードエンティティデータ７３＿ｘは、例えば、ＡＳＰサーバ装置１９からＩＣカード３と所定のサービス事業者のアプリケーションプログラムを用いた処理の処理要求をＳＡＭチップ８が受けたときに、ＳＡＭチップ８内のエンティティ生成タスク７１が、既に生成されている対応するサービス事業者のＩＣカードエンティティプレートデータを用いて生成する。
【００６３】
図１８は、ＩＣカードエンティティデータ７３＿ｘのフォーマットを説明するための図である。
図１８に示すように、ＩＣカードエンティティデータ７３＿ｘは、管理用ポインタデータ８０、エンティティＩＤデータ８１、エンティティステータスデータ（ステータスデータ）８２、ＩＣカード種別データ８３、ＡＰＥ＿Ｎ指定データ８４、処理順番データ８５、処理前データ８６および処理後データ８７を有する。
【００６４】
管理用ポインタデータ８０には、メモリ６５内でＩＣカードエンティティデータ７３＿ｘを管理するための双方向ポインタである。
エンティティＩＤデータ８１は、ＩＣカードエンティティデータ７３＿ｘの生成要求、進行状況の確認、削除などのＩＣカードエンティティデータ７３＿ｘを用いた一連の処理に用いられる。エンティティＩＤデータ８１は、エンドユーザに渡される返り値ともなる。エンティティＩＤデータ８１は一般的なファイルシステム上のファイルオープン時のディスクリプタに相当する。
【００６５】
エンティティステータスデータ８２は、ＩＣカード３に関する手続きの進行状態を示す。
ＩＣカードエンティティデータ７３＿ｘが持つ基本的な状態には、図１９に示すように、ＩＣカード３が利用できるサービスを調べる処理の状態（ＲＳ）、ＳＡＭチップ８がＩＣカード３を認証する処理の状態（Ａ１）、ＩＣカード３がＳＡＭチップ８を認証する処理の状態（Ａ２）、ＩＣカード３からデータ読み出す処理の状態（Ｒ）、ＩＣカード３にデータ書き込む処理の状態（Ｗ）がある。
本実施形態では、サービス事業者を調べる処理、ＳＡＭチップ８がＩＣカード３を認証する処理、ＩＣカード３がＳＡＭチップ８を認証する処理、ＩＣカード３からデータ読み出す処理、並びにＩＣカード３にデータ書き込む処理のそれぞれがジョブに対応している。
当該ジョブは、後述するように、ＩＣカード手続管理用タスク７２によって、実行順番が決定される処理の単位になる。
なお、Ａ１，Ａ２によって、ＩＣカード３とＳＡＭチップ８との間の相互認証処理が構成される。
【００６６】
また、本実施形態では、インターネット１０での通信時間を考慮して、前述した各基本的な状態を図１９の状態遷移図に示されるように、起動後（コマンド発行後）の状態と完了（応答受け取り後）状態とに分けて管理する。
具体的には、インスタンス生成（ＩＣカードエンティティデータ生成）状態、ＲＳ起動後状態、ＲＳ完了状態、Ａ１起動後状態、Ａ１完了状態、Ａ２起動後状態、Ａ２完了状態、Ｒ起動状態、Ｒ完了状態、Ｗ起動状態、Ｗ完了状態、並びにインスタン（ＩＣカードエンティティデータ）消去状態によって、ＩＣカードエンティティデータ７３＿ｘを用いた処理状態が管理される。
【００６７】
ＩＣカード種別データ８３は、当該ＩＣカード３を発行したサービス事業者を特定するデータである。
ＩＣカード種別データ８３には、ＩＣカードエンティティデータ７３＿ｘの生成時に、前述したスクリプトプログラム内のＣＩコマンドによって規定されたデータが設定される。
【００６８】
サービスタイプエレメントデータ８４は、ＩＣカードエンティティデータ７３＿ｘを用いた処理で利用する、ＡＰ管理用テーブルデータ３００＿１〜３００＿３およびＡＰＰテーブルデータ３１０＿１〜３１０＿３内で定義されたアプリケーションエレメントデータＡＰＥを示す。
サービスタイプエレメントデータ８４には、ＩＣカードエンティティデータ７３＿ｘの生成時に、前述したスクリプトプログラム内のＣＳコマンドで指定された単数または複数のアプリケーションエレメントデータＡＰＥが設定される。
【００６９】
処理順番データ８５は、ＩＣカードエンティティデータ７３＿ｘを用いた処理で利用するサービス（ジョブ）を実行する順番、すなわち、図１９に示す遷移状態を示す。
すなわち、処理順番データ８５は、アプリケーションエレメントデータＡＰＥの名前ＡＰＥ＿Ｎを用いて、ＩＣカード３の基本的な操作に対応するジョブの実行順番を示す。
ここで、ジョブは、前述したように、図１９に示すＲＳ，Ａ１，Ａ２，Ｒ，Ｗに相当する。ＩＣカード３への具体的操作は、ジョブを用いて指定された処理順番により実現される。例えば、相互認証無しの読み込みのみのＩＣカード３を用いた処理については、処理順番データ８５には「ＲＳ→Ｒ」が設定される。また、相互認証有りの読み込みおよび書き込みの場合には、処理順番データ８５には、「ＲＳ→Ａ１→Ａ２→Ｒ→Ｗ」が設定される。
処理順番データ８５には、ＩＣカードエンティティデータ７３＿ｘの生成時に、前述したスクリプトプログラム内のＣＳコマンド内で指定されたサービスエレメントの順番に対応する図１２に示すジョブの順番が設定される。
【００７０】
処理前データ８６には、ＡＳＰサーバ装置１９側から、ＩＣカードエンティティデータ７３＿ｘを用いた処理を行うための管理用データが設定される。。
例えば、処理前データ８６には、ＳＦデータブロック内に指定されたサービス（アプリケーションエレメントデータＡＰＥ）の演算式のポイントが設定される。
また、サービス間演算機能が定義されていない場合には、処理前データ８６には、要求処理金額が設定される。
例えば、決済の場合であれば、課金額や付与ポイント数などに関する状態が設定される。
【００７１】
処理後データ８７は、ＡＳＰサーバ装置１９側で必要な、ＩＣカードエンティティデータ７３＿ｘの処理結果のデータが設定される。例えば決済の場合であれば、決済の正常終了の有無などを示すデータが設定される。
【００７２】
以下、図１７に示すＩＣカード手続管理用タスク７２による、複数のＩＣカードエンティティデータ７３＿ｘを用いて、複数のＩＣカード３に係わる処理を行う手順を説明する。
ＩＣカード手続管理用タスク７２は、例えば、図１６に示すＳＡＭチップ８のＣＰＵ６６上で常に起動されている。
図２０は、ＩＣカード手続管理用タスク７２が行う処理のフローチャートである。
ステップＳＴ１：
ＩＣカード手続管理用タスク７２は、メモリ６５内に存在する複数のＩＣカードエンティティデータ７３＿ｘのうち、次に処理を実行する一つのＩＣカードエンティティデータ７３＿ｘを選択する。
当該ＩＣカードエンティティデータ７３＿ｘの選択方法は、メモリ６５内に存在するＩＣカードエンティティデータ７３＿ｘを順番に選択してもよいし、優先順位を付けて高い優先順位のものを優先的に選択してもよい。
【００７３】
ステップＳＴ２：
ＩＣカード手続管理用タスク７２は、ステップＳＴ１で選択したＩＣカードエンティティデータ７３＿ｘのジョブが既に起動されているか否かを判断し、起動されていると判断した場合にはステップＳＴ５の処理に進み、起動されていないと判断した場合にはステップＳＴ３の処理に進む。
【００７４】
ステップＳＴ３：
ＩＣカード手続管理用タスク７２は、ステップＳＴ１で選択したＩＣカードエンティティデータ７３＿ｘの図１８に示すエンティティステータスデータ８２から、当該エンティティデータに関する処理が図１９に示す状態遷移図の何れの状態にあるかを判断し、処理順番データ８５から、次に実行するジョブを決定する。
このとき処理順番データ８５には、前述したように、ＡＰ管理用テーブルデータ３００＿１〜３００＿３に設定されたサービスエレメントを用いてジョブの実行順番が規定されている。
【００７５】
ステップＳＴ４：
ＩＣカード手続管理用タスク７２は、ステップＳＴ３で選択したジョブを起動する。
ＩＣカード手続管理用タスク７２は、図１７を用いて前述した入力用データブロック３１＿ｘ１、出力用データブロック３２＿ｘ２、ログ用データブロック３３＿ｘ３および演算定義用データブロック３４＿ｘ４のうち、当該ジョブに関係するデータブロックを用いて当該ジョブを実行する。
【００７６】
このとき、ＩＣカード手続管理用タスク７２は、ジョブの実行に当たってＩＣカード３にコマンドを発行する場合に、当該ジョブに対応するサービスエレメントをキーとしてＡＰ管理用テーブルデータ３００＿１〜３００＿３を検索し、当該サービスエレメントに対応するサービス番号（ＩＣカード３が解釈可能なＩＣカード３の操作コマンド）を得る。そして、ＩＣカード手続管理用タスク７２は、当該得られたサービス番号を用いてＩＣカード３にコマンドを発行する。
また、ＩＣカード手続管理用タスク７２は、図５を用いて説明したように、ＩＣカード３のＩＣ３ａの記憶領域へのアクセスに鍵データが必要な場合には、当該ジョブに対応するサービスエレメントをキーとしてＡＰ管理用テーブルデータ３００＿１〜３００＿３を検索し、当該サービスエレメントに対応する鍵データを得る。そして、ＩＣカード手続管理用タスク７２は、当該鍵データを用いて、ＩＣカード３との間で相互認証、データの暗号化および復号などの処理を行い、ＩＣカード３の所定の記憶領域にアクセスを行う権限を得る。
【００７７】
ステップＳＴ５：
ステップＳＴ５が行われるのは、ＩＣカード手続管理用タスク７２が、ＩＣカード３にコマンドを発行し、ＩＣカード３の処理結果を待っているときである。
ＩＣカード手続管理用タスク７２は、ＩＣカード３から処理結果を受け取ると、これをＩＣカードエンティティデータ７３＿ｘに設定する。
【００７８】
ステップＳＴ６：
ＩＣカード手続管理用タスク７２は、図１８に示すＩＣカードエンティティデータ７３＿ｘのエンティティステータスデータ８２を更新する。
【００７９】
このように、本実施形態では、ＩＣカード手続管理用タスク７２によって、ＳＡＭチップ８内に存在する複数のＩＣカード３についてのＩＣカードエンティティデータ７３＿ｘを順に選択しながら、複数のＩＣカード３についての処理を並行して行う。そのため、ＳＡＭチップ８は、複数のＩＣカード３を用いた手続きの処理要求を受けた場合でも、これらの処理を同時に進行することができる。
【００８０】
図２１および図２２は、上述した図２０のステップＳＴ４におけるジョブの実行時に、前述したＳＡＭチップ８がアプリケーションエレメントデータＡＰＥに規定された手順に従って、他のアプリケーションエレメントデータＡＰＥによって規定された処理またはデータにアクセスを行う場合の処理を説明するための図である。
ステップＳＴ４１：
ＳＡＭチップ８が、所定のアプリケーションエレメントデータＡＰＥに応じた処理を実行中に、利用（アクセス）を行うアプリケーションプログラムと、当該アプリケーションプログラム内のアプリケーションエレメントデータＡＰＥとを特定する。
また、当該利用が、当該アプリケーションエレメントデータＡＰＥの読み出し、書き込みおよび実行の何れであるかも特定する。
【００８１】
ステップＳＴ４２：
ＳＡＭチップ８が、ステップＳＴ４１で特定したアプリケーションエレメントデータＡＰＥが、当該ＳＡＭチップ８内に存在するか否かを判断し、存在しないと判断した場合にはステップＳＴ４３の処理に進み、存在すると判断した場合にはステップＳＴ４５の処理に進む。
【００８２】
ステップＳＴ４３：
ＳＡＭチップ８が、実行中のアプリケーションプログラムに対応するＡＰ管理用テーブルデータ３００＿１〜３００＿３を参照して、対応するサービス（アプリケーションエレメントデータＡＰＥ）に対応する鍵データＫ＿ＳＡＭを取得し、当該鍵データＫ＿ＳＡＭを用いて、利用先のアプリケーションエレメントデータＡＰＥを有するＳＡＭチップ８ａと相互認証を行う。
【００８３】
ステップＳＴ４４：
ステップＳＴ４３の相互認証でＳＡＭチップ８と８ａとが互いの正当性を認証すると、ＳＡＭチップ８はステップＳＴ４５の処理に進み、そうでない場合にはステップＳＴ５０に進む。
【００８４】
ステップＳＴ４５：
ＳＡＭチップ８が、実行中のアプリケーションプログラムに対応するＡＰ管理用テーブルデータ３００＿１〜３００＿３を参照して、対応するサービス（アプリケーションエレメントデータＡＰＥ）に対応する鍵データＫ＿ＳＡＭを取得する。
また、ＳＡＭチップ８が、ステップＳＴ４１で特定した利用先のプリケーションエレメントデータＡＰＥについても、同様に、当該アプリケーションエレメントデータＡＰＥに対応するＡＰ管理用テーブルデータ３００＿１〜３００＿３を参照して、対応するサービス（アプリケーションエレメントデータＡＰＥ）に対応する鍵データＫ＿ＳＡＭを取得する。
そして、ＳＡＭチップ８が、上記取得した２つの鍵データＫ＿ＳＡＭを比較する。
【００８５】
スクランブル４６：
ＳＡＭチップ８は、ステップＳＴ４５の処理で、２つの鍵データＫ＿ＳＡＭが一致していると判断した場合にはステップＳＴ４７の処理に進み、そうでない場合にはステップＳＴ５０に進む。
【００８６】
ステップＳＴ４７：
ＳＡＭチップ８あるいは８ａは、ステップＳＴ４１で特定されたアプリケーションプログラムに対応するＡＰ管理用テーブルデータ３００＿１〜３００＿３を参照し、利用されるアプリケーションエレメントデータＡＰＥに対応するＡＰＰテーブルデータ３１０＿１〜３１０＿３を特定する。
【００８７】
ステップＳＴ４８：
ＳＡＭチップ８あるいは８ａは、ステップＳＴ４７で特定したＡＰＰテーブルデータ３１０＿１〜３１０＿３を基に、利用（アクセス）されるアプリケーションエレメントデータＡＰＥのアクセス権限を判断する。
具体的には、当該利用されるアプリケーションエレメントデータＡＰＥの読み出し、書き込みおよび実行の権限を判断する。
【００８８】
ステップＳＴ４９：
ＳＡＭチップ８あるいは８ａは、ステップＳＴ４８でアクセス権限があると判断した場合にはステップＳＴ５０の処理に進み、そうでない場合にはステップＳＴ５１の処理に進む。
【００８９】
ステップＳＴ５０：
ＳＡＭチップ８あるいは８ａは、ステップＳＴ４１で特定されたアプリケーションエレメントデータＡＰＥについて、ステップＳＴ４１で特定された利用を行う。
【００９０】
ステップＳＴ５１：
ＳＡＭチップ８あるいは８ａは、ステップＳＴ４１で特定されたアプリケーションエレメントデータＡＰＥについて、ステップＳＴ４１で特定された利用を行う。
【００９１】
また、ＳＡＭチップ８は、上述した図２０のステップＳＴ４におけるジョブの実行時に、前述したＳＡＭチップ８がアプリケーションエレメントデータＡＰＥに規定された手順に従って、ＩＣカード３との間でデータ授受を行う場合には、図１７に示すＡＰ管理用テーブルデータ３００＿１〜３００＿３を参照して、当該アプリケーションエレメントデータＡＰＥに対応する鍵データＫ＿ＣＡＤＲを取得し、当該鍵データＫ＿ＣＡＲＤを用いて、ＩＣカード３のメモリ５０にアクセスを行う。
【００９２】
以下、図１に示す通信システム１の全体動作について説明する。
図２３および図２４は、図１に示す通信システム１の全体動作を説明するための図である。
【００９３】
ステップＳＴ２１：
サービス事業者１５＿１〜１５＿３あるいはこれらサービス事業者の依頼を受けた者が、当該サービス事業者がＩＣカード３を用いて行う取り引きについての処理を記述したスクリプトプログラム２１＿１，２１＿２，２１＿３を、例えば、図１に示すパーソナルコンピュータ１６＿１，１６＿２，１６＿３上で作成する。
また、ＳＡＭチップ８の管理者が、サービス事業者１５＿１〜１５＿３のそれぞれに対応するＡＰ管理用テーブルデータ３００＿１〜３００＿３を作成する。
【００９４】
ステップＳＴ２２：
ステップＳＴ２１で作成されたＡＰ管理用テーブルデータ３００＿１〜３００＿３が外部メモリ７に記憶される。
また、ステップＳＴ２１で作成されたスクリプトプログラム２１＿１，２１＿２，２１＿３が、パーソナルコンピュータ１６＿１，１６＿２，１６＿３から、インターネット１０、ＡＳＰサーバ装置１９およびＳＡＭチップ８を介して、外部メモリ７にダウンロードされる。当該ダウンロードの処理は、図１０に示すように、ＳＡＭチップ８内のスクリプトダウンロードタスク６９によって管理される。
【００９５】
ステップＳＴ２３：
図１０に示すＳＡＭチップ８内のスクリプト解釈タスク７０によって、各サービス事業者毎に、ＡＰ管理用テーブルデータ３００＿１〜３００＿３およびスクリプトプログラムを用いて、ＩＣカードエンティティテンプレートデータ、入力用データブロック、出力用データブロック、ログ用データブロックおよび演算定義用データブロックが生成される。
これら生成されたデータは、図１６に示すＳＡＭチップ８のメモリ６５に格納される。
【００９６】
ステップＳＴ２４：
ユーザにＩＣカード３が発行される。
図５に示すように、ＩＣカード３のＩＣ３ａには、ユーザが契約を行ったサービス事業者との取り引きに用いられる鍵データが記憶されている。
なお、ユーザとサービス事業者との間の契約は、ＩＣカード３の発行後に、インターネット１０などを介して行ってもよい。
【００９７】
ステップＳＴ２５：
例えば、ユーザがパーソナルコンピュータ５を用いてインターネット１０を介してサーバ装置２にアクセスを行い、商品を購入しようとした場合に、サーバ装置２がインターネット１０を介してＡＳＰサーバ装置１９に処理要求を出す。
ＡＳＰサーバ装置１９は、サーバ装置２から処理要求を受けると、インターネット１０を介してパーソナルコンピュータ５にアクセスを行う。そして、カードリーダ・ライタ４が出したＩＣカード３についての処理要求が、パーソナルコンピュータ５、インターネット１０およびＡＳＰサーバ装置１９を介してＳＡＭチップ８に送信される。
【００９８】
ステップＳＴ２６：
ＡＳＰサーバ装置１９からＳＡＭチップ８にエンティティ作成要求が出される。当該エンティティ作成要求には、ＩＣカード３の発行元を示すデータが格納されている。
【００９９】
ステップＳＴ２７：
ＳＡＭチップ８は、エンティティ作成要求を受けると、ＩＣカード３との間でポーリングを行う。
【０１００】
ステップＳＴ２８：
ＳＡＭチップ８のエンティティ生成タスク７１は、ポーリング終了後に、ＳＡＭチップ８内に存在するＩＣカードエンティティデータ７３＿ｘの数が、スクリプトプログラムのＳＣコマンドによって規定された最大数以内であるか否かを判断し、最大数以内であればステップＳＴ２９の処理に進み、そうでない場合には処理を終了する。
【０１０１】
ステップＳＴ２９：
エンティティ生成タスク７１が、例えば、エンティティ作成要求に格納されたＩＣカード３の発行元を示すデータに基づいて、何れのサービス事業者のＩＣカードエンティティテンプレートデータを用いるかを特定し、当該特定したＩＣカードエンティティプレートデータ用いて、ＩＣカードエンティティデータ７３＿ｘを生成する。
これは、図１９に示すインスタンス生成に対応している。
【０１０２】
ステップＳＴ３０：
ＳＡＭチップ８からＡＳＰサーバ装置１９に、ステップＳＴ２９で生成したＩＣカードエンティティデータ７３＿ｘのエンティティＩＤが出力される。
【０１０３】
ステップＳＴ３１：
ＳＡＭチップ８のＩＣカード手続管理用タスク７２によって、ＩＣカード３で利用可能なサービスが調べられる。
これは、図１９に示すジョブＲＳに対応した処理である。
【０１０４】
ステップＳＴ３２：
ＳＡＭチップ８のＩＣカード手続管理用タスク７２がＩＣカード３の正当性を認証する。
これは、図１９に示すジョブＡ１に対応した処理である。
【０１０５】
ステップＳＴ３３：
ＩＣカード３がＳＡＭチップ８の正当性を認証する。
これは、図１９に示すジョブＡ２に対応した処理である。
ステップＳＴ３２，ＳＴ３３によって、ＩＣカード３とＳＡＭチップ８との間の相互認証が行われる。
このとき、前述したように、ＳＡＭチップ８で実行されているアプリケーションエレメントデータＡＰＥに応じて、図１３に示すＡＰ管理用テーブルデータ３００＿１〜３００＿３が参照されて、鍵データＫ＿ＣＡＲＤが取得され、当該鍵データＫ＿ＣＡＲＤを用いてＳＡＭチップ８とＩＣカード３のＣＰＵ５１との間で相互認証が行われる。
【０１０６】
ステップＳＴ３４：
ＳＡＭチップ８のＩＣカード手続管理用タスク７２が、ＩＣカード３との間で、手続きに必要なデータの読み書きを行う。
これは、図１２に示すジョブＲ，Ｗに対応した処理である。
また、ＩＣカード手続管理用タスク７２は、ＩＣカードエンティティデータ７３＿ｘの処理前データ８６に基づいて特定した演算式を用いて、ＩＣカード３から読み出したデータを用いて所定の演算処理を行う。
【０１０７】
ステップＳＴ３５：
ＳＡＭチップ８のＩＣカード手続管理用タスク７２が、ステップＳＴ３４の処理結果をＡＳＰサーバ装置１９に出力する。
【０１０８】
ステップＳＴ３６：
例えば、ＩＣカード手続管理用タスク７２が、ＩＣカードエンティティデータ７３＿ｘを消去する。
【０１０９】
以上説明したように、通信システム１およびＳＡＭユニット９によれば、アプリケーションプログラムＡＰを複数のアプリケーションエレメントデータＡＰＥを用いて構成し、ＡＰ管理用テーブルデータおよびＡＰＰテーブルデータを用いて、各アプリケーションエレメントデータＡＰＥの処理内容を規定することで、ＩＣカード３を用いた多様なサービスを提供できる。
また、通信システム１によれば、ＡＰ管理用テーブルデータおよびＡＰＰテーブルデータを用いて、同一ＳＡＭ内でのアプリケーションエレメントデータＡＰＥの利用、並びに異なるＳＡＭ間でのアプリケーションエレメントデータＡＰＥの利用を高いセキュリティを保ちながら柔軟に実現できる。
また、通信システム１によれば、異なるＳＡＭ間でアプリケーションエレメントデータＡＰＥを利用する場合に、ＳＡＭ間で相互認証を行うため、アプリケーションプログラムのセキュリティを高めることができる。
また、通信システム１によれば、同一のサービス事業者のアプリケーションプログラムに、同じクラスのＳＡＭ＿ＩＤを割り当てることで、同じ事業者のアプリケーションプログラムのアプリケーションエレメントデータＡＰＥ間では、煩雑な相互認証処理を行わないようにすることができ、鍵情報の管理、並びにＳＡＭチップの処理負担を軽減できる。
【０１１０】
また、通信システム１によれば、ＩＣカード３との間で発生する手続き処理毎にＩＣカードエンティティデータ７３＿ｘを生成し、ＩＣカード手続管理用タスク７２によって、複数のＩＣカードエンティティデータ７３＿ｘを用いて、複数のＩＣカード３についての処理を同時に進行することができる。
また、認証システム１によれば、ＩＣカード３についての処理に実際に用いられているＩＣカードエンティティデータ７３＿ｘをメモリ６５に記憶すれば良いため、メモリ６５の記憶領域を効率的に利用できる。
また、認証システム１によれば、図１９に示すように、ＩＣカード手続管理用タスク７２が処理するジョブの実行状態を、起動後状態と完了状態とに分離して管理するため、一のジョブの実行を開始後にＩＣカード３からのデータを待っている状態で、他のジョブに関する処理を開始できる。そのため、インターネット１０を介してＩＣカード３との間でデータを送受信することによる待ち時間を無くすことができる。
【０１１１】
また、認証システム１によれば、ＡＰ管理用テーブルデータ３００＿１〜３００＿３内に、各サービス事業者が提供するサービスの種類を示す名前であるＡＰＥ＿Ｎ、ＩＣカード３内で用いられる当該サービスの番号、並びに当該サービスを提供するに際に用いられる鍵データをＡＰ管理用テーブルデータ３００＿１〜３００＿３内に記述し、これを外部メモリ７に保持する。そのため、ＳＡＭチップ８の開発者でない、サービス事業者１５＿１〜１５＿３が、ＳＡＭチップ８上で動作する自らのアプリケーションプログラムを、スクリプトプログラム２１＿１，２１＿２，２１＿３を作成してＳＡＭチップ８を介して外部メモリ７にダウンロードすることでカスタマイズできる。すなわち、鍵データやＩＣカード３を直接操作する操作コマンドなどの秘匿性の高いデータをサービス事業者１５＿１〜１５＿３に知らせることなく、これらのサービス事業者が自らのアプリケーションプログラムをカスタマイズできる。また、サービス事業者は、アプリケーションプログラムをカスタマイズする際に、鍵データやカード操作用コマンドを知る必要がないため、サービス事業者の負担が軽減される。
また、認証システム１によれば、複数のサービスにまたがった処理内容を定義できるため、ＩＣカード３側で許容されると同時に実行されるサービスの範囲内で、複数のサービスを組み合わせた多様なサービスを提供できる。
また、認証システム１によれば、データブロックの概念を導入することで、ＩＣカード３との間で入出力されるデータ、並びにログデータの管理が容易に行える。
【０１１２】
【発明の効果】
以上説明したように、本発明によれば、集積回路を用いたサービスを提供する際に、半導体回路上で動作するアプリケーションプログラムのセキュリティを高められるデータ処理装置およびその方法を提供することができる。
【図面の簡単な説明】
【図１】図１は、本実施形態の通信システムの全体構成図である。
【図２】図２は、図１に示すＳＡＭチップが通信を行う他のＳＡＭチップを説明するための図である。
【図３】図３は、図１に示すＳＡＭチップが通信を行う他のＳＡＭチップを説明するための図である。
【図４】図４は、図１に示すＩＣカードの機能ブロック図である。
【図５】図５は、図４に示すメモリを説明するための図である。
【図６】図６は、図１に示すＳＡＭチップのソフトウェア構造を説明するための図である。
【図７】図７は、図１に示す外部メモリの記憶領域を説明するための図である。
【図８】図８は、図７に示すアプリケーションプログラムＡＰを説明するための図である。
【図９】図９は、図８に示すアプリケーションエレメントデータＡＰＥの種別を説明するための図である。
【図１０】図１０は、図１に示すＳＡＭチップの処理を説明するための図である。
【図１１】図１１は、図１０に示すＩＣカード操作用マクロコマンドスクリプトプログラムで使用されるコマンドを説明するための図である。
【図１２】図１２は、図７に示すＡＰ管理用記憶領域を説明するための図である。
【図１３】図１３は、図１２に示すＡＰ管理用テーブルデータを説明するための図である。
【図１４】図１４は、ＳＡＭ＿ＩＤを説明するための図である。
【図１５】図１５は、図１２に示すＡＰＰテーブルデータを説明するための図である。
【図１６】図１６は、図１に示すＳＡＭチップの機能ブロック図である。
【図１７】図１７は、図１６に示すメモリに記憶されるタスク、プログラムおよびデータを説明するための図である。
【図１８】図１８は、ＩＣカードエンティティデータ７３＿ｘのフォーマットを説明するための図である。
【図１９】図１９は、図１８に示すエンティティステータスデータの状態遷移を説明するための図である。
【図２０】図２０は、ＩＣカード手続管理用タスクが行う処理のフローチャートである。
【図２１】図２１は、図２０のステップＳＴ４におけるジョブの実行時に、ＳＡＭチップがアプリケーションエレメントデータＡＰＥに規定された手順に従って、他のアプリケーションエレメントデータＡＰＥによって規定された処理またはデータにアクセスを行う場合の処理を説明するための図である。
【図２２】図２２は、図２０のステップＳＴ４におけるジョブの実行時に、ＳＡＭチップがアプリケーションエレメントデータＡＰＥに規定された手順に従って、他のアプリケーションエレメントデータＡＰＥによって規定された処理またはデータにアクセスを行う場合の処理を説明するための図である。
【図２３】図２３は、図１に示す通信システムの全体動作を説明するための図である。
【図２４】図２４は、図１に示す通信システムの全体動作を説明するための図である。
【符号の説明】
１…通信システム、２…サーバ装置、３…ＩＣカード、４…カードリーダ・ライタ、５…パーソナルコンピュータ、７，７ａ…外部メモリ、８，８ａ…ＳＡＭチップ、９，９ａ…ＳＡＭユニット、１５＿１〜１５＿３…サービス事業者、１９…ＡＳＰサーバ装置
【図１】
0004207409.tif 000002
【図２】
0004207409.tif 000003
【図３】
0004207409.tif 000004
【図４】
0004207409.tif 000005
【図５】
0004207409.tif 000006
【図６】
0004207409.tif 000007
【図７】
0004207409.tif 000008
【図８】
0004207409.tif 000009
【図９】
0004207409.tif 000010
【図１０】
0004207409.tif 000011
【図１１】
0004207409.tif 000012
【図１２】
0004207409.tif 000013
【図１３】
0004207409.tif 000014
【図１４】
0004207409.tif 000015
【図１５】
0004207409.tif 000016
【図１６】
0004207409.tif 000017
【図１７】
0004207409.tif 000018
【図１８】
0004207409.tif 000019
【図１９】
0004207409.tif 000020
【図２０】
0004207409.tif 000021
【図２１】
0004207409.tif 000022
【図２２】
0004207409.tif 000023
【図２３】
0004207409.tif 000024
【図２４】
0004207409.tif 000025