説明

ICカード発行装置、ICカード発行方法およびコンピュータプログラム

【課題】ICカード製造会社などが発行パターンを容易に作成することができるICカード発行装置を提供する。
【解決手段】ICカード発行装置1はスクリプト言語で記述された発行スクリプト15を記憶している。ICカード2を発行するとき、ICカード発行装置1は、テストスクリプト15に含まれるステートメントを逐次解釈し、解釈した処理をICカード2に実行させることで、ICカード2を発行する。例えば、ICカード発行装置1は、スクリプト言語で記述された発行スクリプトから、ICカード2のプログラムインターフェース仕様に従い、16進数のキャラクターで記述されたコマンドAPDUを生成し、生成したコマンドAPDUを用いてICカード2を発行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ICカードを発行するICカード発行装置およびICカード発行方法に関する。
【背景技術】
【0002】
クレジットカードやPKI(Public Key Infrastructure)のハードウェアトークンとして利用されているICカードのプログラムインターフェースは、非特許文献1または非特許文献2で定義されているように、16進数のキャラクター(0〜9、A〜F)を用いて表記される。
【0003】
このようなICカードを発行するとき、ICカードを発行するために、ICカード製造会社は、ICカードのプログラムインターフェースに従い、16進数のキャラクターで記述した発行スクリプトを作成する。
【非特許文献1】JICSAP 外部端子付きICカード仕様(第1.1版) ICカードシステム利用促進協議会
【非特許文献2】EMV規格(BOOK1) Version 4.1 May 2004
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、ICカード製造会社が発行スクリプトを作成するときは、非特許文献1や非特許文献2などを参照しながら16進数のキャラクターで発行スクリプトを記述しなければならないため、発行スクリプトの作成に時間が費やされてしまっていた。更に、発行スクリプトに作成ミスがあると、当然のことながら発行スクリプトの作成ミスに起因するエラーが発生し、ICカード発行の阻害要因にもなってしまう。
【0005】
そこで、本発明は、ICカード製造会社が発行パターンを容易に作成することができ、更に、発行パターンの作成ミスが生じにくいICカード発行装置、ICカード発行方法およびコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上述した課題を解決する第1の発明は、ICカードに実装されるコンピュータプログラムを利用して、前記ICカードを発行するICカード発行装置であって、ICカード発行装置は、前記ICカード発行装置用のスクリプト言語で記述された発行スクリプトを記憶し、更に、ICカード発行装置は、前記ICカード装置とデータ通信するためのリーダライタと、前記リーダライタを用いて前記ICカード装置とデータ通信するための前記伝送制御手段と、前記発行スクリプトを解釈し、前記ICカード装置に解釈した処理を実行させるICカード発行手段と、を備えていることを特徴とする。
【0007】
更に、第2の発明は、第1の発明に記載のICカード発行装置であって、前記ICカード発行手段は、前記ICカードプログラムのプログラムインターフェース仕様に基づき、前記ICカード装置に実行させるコマンドAPDUを前記発行スクリプトから生成するコマンドAPDU生成部を備え、前記ICカード発行手段は、少なくとも、前記コマンドAPDU生成部が生成した前記コマンドAPDUを前記ICカード装置に送信し、前記ICカード装置から受信したレスポンスAPDUを処理することを特徴とする。
【0008】
更に、第3の発明は、ICカードに実装されるコンピュータプログラムであるICカードプログラムを発行するICカード発行方法であって、ICカード発行方法は、
ステップ1)前記ICカード発行装置用のスクリプト言語で記述された発行スクリプトを解釈するステップ、
ステップ2)前記ICカードプログラムを実行するICカード装置に、前記ステップ1)で解釈した処理を実行させるステップ、
を備え、ステップ1)およびステップ2)を繰り返し実行することで、前記ICカードを発行することを特徴とする。
【0009】
更に、第4の発明は、第3の発明に記載のICカード発行方法であって、前記ICカード発行方法に備えられた前記ステップ1)では、前記ICカードプログラムのプログラムインターフェース仕様に基づき、前記ICカード装置に実行させるコマンドAPDUを前記発行スクリプトから生成し、生成した前記コマンドAPDUを前記ICカード装置に伝送する処理が実行され、前記ステップ2)では、前記ステップ1)で伝送した前記コマンドAPDUに対するレスポンスAPDUを前記ICカード装置から受信し、前記レスポンスAPDUを判定する処理が実行されることを特徴とする。
【0010】
更に、第5の発明は、第4の発明に記載のICカード発行方法であって、前記ステップ2)では、前記レスポンスAPDUの判定結果に従って、前記ICカードの発行処理を分岐させることを特徴とする。
【0011】
更に、第6の発明は、第3の発明から第5の発明のいずれかに記載のICカード発行方法に含まれる各ステップを実行させるためのコンピュータプログラムである。
【発明の効果】
【0012】
上述した本発明によれば、前記スクリプト言語は16進のキャラクターよりも遥かに扱いやすいため、発行スクリプトを記述するときにスクリプト言語を利用できることで、ICカード製造会社が発行スクリプトを容易に作成することができばかりか、発行スクリプトの作成ミスも生じにくくなる。更に、前記レスポンスAPDUの判定結果に従って前記発行スクリプトの処理を分岐させることで、様々なケースに対応した発行を一つの発行スクリプトで実行できるようになる。
【発明を実施するための最良の形態】
【0013】
ここから本発明に係るICカード発行装置1について、図を参照しながら詳細に説明する。図1は、ICカード発行装置の利用形態を説明する図で、ICカード発行装置1には、リーダライタ3を介してICカード2が接続されている。
【0014】
ICカード発行装置1は、ICカード2を発行するための発行スクリプトをファイル形式で記憶している。一般的にICカード用の発行スクリプトは、ICカード2のプログラムインターフェースの内容に従い16進数で記述されるが、本発明の発行スクリプトはスクリプト言語で記述されている。
【0015】
ICカード2を発行するとき、ICカード発行装置1は、指定された発行スクリプトに含まれるステートメントを逐次解釈し、解釈した処理をICカード2に実行させることで、ICカード2を発行する。詳しくは、ICカード発行装置1は、スクリプト言語で記述された発行スクリプトから、ICカードのプログラムインターフェースに従い、16進数のキャラクターで記述されたコマンドAPDU(APDU:Applicaiton Protocol Data Unit)を生成し、生成したコマンドAPDUを用いてICカード2を発行する。
【0016】
スクリプト言語は16進数のキャラクターよりも遥かに扱いやすいため、発行スクリプトを記述するときにスクリプト言語を利用できることで、ICカード製造会社が発行スクリプトを容易に作成することができばかりか、発行スクリプトの作成ミスも生じにくくなる。
【0017】
図2は、図1で図示したICカード発行装置1のブロック図である。図2に示したように、ICカード発行装置1は、ICカード2用の発行スクリプト15を記憶するためのデータ記憶手段14と、発行スクリプト15を解釈実行するICカード発行モジュール10と、ICカード2のプログラムインターフェース仕様に従い、発行スクリプト15に含まれるステートメントを解釈し、ICカード2が実行可能なコマンドAPDUにコンパイルするコンパイルモジュール11と、ICカード2とデータ通信するための伝送制御モジュール12と、ICカード2と通信するためのリーダライタ13を備える。
【0018】
図3は、ICカード発行装置1に記憶される発行スクリプト15を説明する図である。図3に示したように発行スクリプトには複数のステートメント150が記述されている。
【0019】
図4は、ステートメント150の構造を説明する図である。一つのステートメント150は、スクリプトの内容を示すスクリプトID151に加え、少なくとも1つの宣言ブロック152が記述され、複数の宣言ブロック152は{}で括られている。ステートメント150に含まれる一つの宣言ブロック152は、宣言ブロック152の属性とその値を有し、宣言ブロック152の属性とその値は「:」で区切られる。
【0020】
図3において、Protocol{}は伝送制御プロトコルを示すステートメント150で、ICカード2とデータ通信するときの伝送制御プロトコル150を示す宣言ブロック152が含まれる。
【0021】
図3のATR{}はICカードを活性化することを示すステートメント150で、ATRの期待値は、属性が「Expectaion」である宣言ブロックの値として記述される。
【0022】
図3のC−APDU{}は、ICカード2に伝送するコマンドAPDUを示すステートメント150で、コマンドAPDUに変換するために必要な少なくとも一つの宣言ブロック152が記述される。属性が「Channel」である宣言ブロック152の値ではコマンドが実行される論理チャネルの番号が宣言され、属性が「Name」である宣言ブロック152の値ではコマンド名が宣言され、例えば、その値が「Select」ならば、非特許文献1のSlectコマンドを示す。また、属性が「Parameter」の宣言ブロック152ではコマンド実行時の様々なパラメータが記述される。
【0023】
図3のR−APDU{}は、ICカード2から受信したレスポンスAPDUの処理を示すステートメント150である。C−APDU{}と同じく、R−APDU{}には複数の宣言ブロック152が記述され、属性が「Compare」である宣言ブロック152はレスポンスAPDUと期待値とのコンペア実行の有無が宣言される。また、レスポンスAPDUの期待値は、属性が「SW」の宣言ブロック152および属性が「Expectatin属性」の宣言ブロック152の値として記述される。
【0024】
また、IF{}は、R−APDU{}の処理結果に基づき条件分岐を示すステートメント150である。IF{}は直前のR―APDU{}に対して有効であり、IF{}のステートメントに記述され、属性が「Flag」である宣言ブロック152は分岐の条件を示す。図3においては、直前のレスポンスAPDUのコンペア結果が「False」(一致しない)の場合は、#Session1の行にジャンプする。
【0025】
ICカード発行装置1に備えられたコンパイルモジュール11は、プログラムインターフェース(コマンドAPDUおよびレスポンスAPDU)の仕様を記憶し、C−APDU{}のステートメント150をこの定義内容に従ってコマンドAPDUにコンパイルする。
【0026】
図5は、プログラムインターフェースで定義されているコマンドAPDUの一例で、図5はSelectコマンドのコマンドAPDUを示している。
【0027】
図5に示したように、SelectコマンドのコマンドAPDUは、非特許文献1で定義されているケース3のコマンド構造に準拠し、CLA、INS、P1、P2、LcおよびDataから構成されている。INSはコマンドを識別するためのデータで、Selectコマンドでは「A4h」(hは16進表記)である。また、P1、P2はコマンド実行時のパラメータを示し、Lcはデータ長を示し、Dataでは選択するファイルのファイル番号が示される。
【0028】
コンパイルモジュールがC−APDU{}をコマンドAPDUに変換するときは、属性が「Channel」である宣言ブロック152の値がCLAに変換され、ここでは「00h」である。また、属性が「Name」の宣言ブロック152の値からコマンドAPDUのINSを抽出する。例えば、属性が「Name」の宣言ブロックの値が「Select」である場合は、SlecltコマンドのINSである「A4h」が抽出される。また、C−APDU{}のパラメータを示す宣言ブロック152から、コマンドAPDUのパラメータ(P1,P2,Lc、Data)が変換される。
【0029】
ここから、ICカード発行装置1の動作手順について説明する。図6は、ICカード発行装置1の動作手順を示したフロー図である。ICカード発行装置1がICカードプログラムの発行を開始するとき、ICカード発行モジュール10は発行スクリプト15の先頭から順にステートメント150を読出し、読み出したステートメント150に対応した処理を実行する。
【0030】
この手順の最初のステップS1は、ICカード2とのデータ通信で利用する伝送制御プロトコルを設定するステップである。このステップでは、ICカード2の発行を開始すると、ICカード発行装置1のICカード発行モジュール10は、発行スクリプト15からProtocol{}のステートメント150を読出し、Protocol{}で示される伝送制御プロトコルに設定する。
【0031】
次のステップS2は、ICカード2を活性化するステップである。このステップでは、データスクリプト15からATR{}のステートメント150を読出し、ステップS1で設定した伝送制御プロトコルに準拠した手順で、ICカード2を活性化し、例えば、ICカード2から受信したATRの返信と期待値とを比較する。
【0032】
次のステップS3は、ICカード2に送信するコマンドAPDUを生成し、ICカード2に送信するステップである。このステップでは、ICカード発行モジュール10は、発行スクリプト15からC−APUD{}のステートメント150を読出し、読み出したC−APUD{}をコンパイラモジュール11に処理させる。コンパイラモジュール11は、プログラムインターフェースの定義内容を参照して、C−APDU{}に含まれる宣言ブロック152からコマンドAPDUを作成する。
【0033】
次のステップS4は、ステップS3で生成したコマンドAPDUをICカード2に送信するステップである。このステップでは、ICカード発行モジュール10は、コマンドAPDUを伝送制御モジュール12に送り、伝送制御モジュール12はコマンドAPDUにTPDU(Transmission Protocol Data Unit)を付加し、通信インターフェース13を介してICカード2にコマンドAPDUを送信し、送信したコマンドAPDUはICカード2で処理される。
【0034】
次のステップS5は、ICカード2からレスポンスAPDUを受信し、受信したレスポンスADPUを処理するステップである。このステップでは、ICカード発行モジュール10は、レスポンスAPDUを受信すると、発行スクリプト15からR−APDU{}を読み取り、レスポンスAPDUに含まれるSWの期待値や、データがある場合はデータの期待値をコンペアなどして、読取ったR−APDU{}を処理する。
【0035】
次のステップS6は、次のステートメント150を読取るステップである。このステップで、ICカード発行モジュール10は、レスポンスAPDUの次のステートメント150を読み取り、読取ったステートメント150がIF{}属性のステートメント150ならばステップS7に進み、C−APDU{}属性のステートメント150ならばステップS3に戻り、End属性のステートメント150ならばこの手順を終了する。
【0036】
ステップS7ではIF{}に含まれる宣言ブロック152に対応した処理を実行する。例えば、条件付きのジャンプした後、ステップS6に戻る。
【図面の簡単な説明】
【0037】
【図1】ICカード発行装置の利用形態を説明する図。
【図2】ICカード発行装置のブロック図。
【図3】発行スクリプトを説明する図。
【図4】ステートメントの構造を説明する図。
【図5】コマンドAPDUの一例を示した図。
【図6】ICカード発行装置の動作手順を示したフロー図。
【符号の説明】
【0038】
1 ICカード発行装置
10 ICカード発行モジュール
11 コンパイルモジュール
12 伝送制御モジュール
13 通信インターフェース回路
14 データ記憶手段
15 発行スクリプト
150 ステートメント
151 スクリプトID
152 宣言ブロック
2 ICカード


【特許請求の範囲】
【請求項1】
ICカードに実装されるコンピュータプログラムを利用して、前記ICカードを発行するICカード発行装置であって、ICカード発行装置は、前記ICカード発行装置用のスクリプト言語で記述された発行スクリプトを記憶し、更に、ICカード発行装置は、前記ICカード装置とデータ通信するためのリーダライタと、前記リーダライタを用いて前記ICカード装置とデータ通信するための前記伝送制御手段と、前記発行スクリプトを解釈し、前記ICカード装置に解釈した処理を実行させるICカード発行手段と、を備えていることを特徴とするICカード発行装置。
【請求項2】
請求項1に記載のICカード発行装置であって、前記ICカード発行手段は、前記ICカードプログラムのプログラムインターフェース仕様に基づき、前記ICカード装置に実行させるコマンドAPDUを前記発行スクリプトから生成するコマンドAPDU生成部を備え、前記ICカード発行手段は、少なくとも、前記コマンドAPDU生成部が生成した前記コマンドAPDUを前記ICカード装置に送信し、前記ICカード装置から受信したレスポンスAPDUを処理することを特徴とするICカード発行装置。
【請求項3】
ICカードに実装されるコンピュータプログラムであるICカードプログラムを発行するICカード発行方法であって、ICカード発行方法は、
ステップ1)前記ICカード発行装置用のスクリプト言語で記述された発行スクリプトを解釈するステップ、
ステップ2)前記ICカードプログラムを実行するICカード装置に、前記ステップ1)で解釈した処理を実行させるステップ、
を備え、ステップ1)およびステップ2)を繰り返し実行することで、前記ICカードを発行することを特徴とするICカード発行方法。
【請求項4】
請求項3に記載のICカード発行方法であって、前記ICカード発行方法に備えられた前記ステップ1)では、前記ICカードプログラムのプログラムインターフェース仕様に基づき、前記ICカード装置に実行させるコマンドAPDUを前記発行スクリプトから生成し、生成した前記コマンドAPDUを前記ICカード装置に伝送する処理が実行され、前記ステップ2)では、前記ステップ1)で伝送した前記コマンドAPDUに対するレスポンスAPDUを前記ICカード装置から受信し、前記レスポンスAPDUを判定する処理が実行されることを特徴とするICカード発行方法。
【請求項5】
請求項4に記載のICカード発行方法であって、前記ステップ2)では、前記レスポンスAPDUの判定結果に従って、前記ICカードの発行処理を分岐させることを特徴とするICカード発行方法。
【請求項6】
請求項3から請求項5のいずれかに記載のICカード発行方法に含まれる各ステップを実行させるためのコンピュータプログラム。



【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2007−317093(P2007−317093A)
【公開日】平成19年12月6日(2007.12.6)
【国際特許分類】
【出願番号】特願2006−148262(P2006−148262)
【出願日】平成18年5月29日(2006.5.29)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】