以下、図を参照して本発明を適用した実施の形態について説明する。
図2は、本発明に係るICカードのライフサイクルを説明する図である。
ICカードは、所定のカード製造業者によって製造され、サービスを提供するために必要なデータや、データへのアクセスに必要な鍵が記録されていない状態(以下、工場出荷状態と称する)で、ICカードを発券する発券業者に出荷される。工場出荷状態のICカードには、ICカードを製造したカード製造業者を特定するための情報である、製造者番号が記録されている。
ここで、ICカードのライフサイクルにおける各状態は、ICカードが記録しているデータによって定まり、発券を行うためのコマンドなど、所定のコマンドを実行することにより、ICカードの状態は変化する。
発券業者は、発券機(リーダライタ)を操作することによって、工場出荷状態であるICカードに、0次発券を行う旨の0次発券コマンドを送信し、ICカードに所定の処理を実行させることによって、0次発券を行う。
工場出荷状態であるICカードは、リーダライタから送信されてきた、0次発券コマンドを受信し、受信した0次発券コマンドを実行する。この場合、例えば、ICカードは、0次発券コマンドに含まれている、ICカードを特定するための情報であるデバイス識別番号、サービスを提供するために必要なデータを格納するためのMF、および事業者との相互認証処理に用いられる認証鍵である、出荷鍵を記録する。
発券業者は、0次発券が行われた状態(以下、0次発券済み状態と称する)のICカードを、ICカードを利用して、ユーザに所定のサービスを提供する事業者に出荷する。
事業者は、リーダライタを操作することによって、0次発券済み状態であるICカードに、1次発券を行う旨の1次発券コマンドを送信し、ICカードに所定の処理を実行させることによって、1次発券を行う。
0次発券済み状態であるICカードは、リーダライタから送信されてきた、1次発券コマンドを受信し、受信した1次発券コマンドを実行する。この場合、例えば、ICカードは、1次発券コマンドに基づいて、サービスを利用するために必要なデータを格納するためのDFおよびEF(Elementary File)、DFまたはEFにアクセスするために必要な認証鍵などを、MFに従属するデータとして記録する。
ここで、DFは、フォルダやディレクトリに相当し、DFには、ファイルに相当するEFが格納される。なお、DFおよびEFは、ISO(International Organization for Standardization)7816に規定されている。
事業者は、1次発券が行われた状態(以下、1次発券済み状態と称する)のICカードを、事業者の各事業所などの、ユーザに対してサービスを提供する施設に配布する。
ICカードが配布された事業所において、事業者は、リーダライタを操作することによって、1次発券済み状態であるICカードに、2次発券を行う旨の2次発券コマンドまたは、ICカードに記録されているデータを消去(削除)し、ICカードを0次発券済み状態にする旨のオールリセットコマンドを送信し、ICカードに所定の処理を実行させる。
例えば、ICカードは、リーダライタから送信されてきたオールリセットコマンドを受信すると、記録しているDF、EF、DFまたはEFにアクセスするために必要な認証鍵などを削除する。オールリセットコマンドを実行したICカードの状態(ライフサイクル状態)は、0次発券状態に戻る。
また、例えば、ICカードは、リーダライタから送信されてきた2次発券コマンドを受信すると、2次発券コマンドに基づいて、記録しているDFに従属するデータとして、ユーザがサービスを受けるために必要な個人情報などのデータおよびそのデータにアクセスするために必要な認証鍵を記録する。
換言すれば、ICカードは、2次発券コマンドに基づいて、記録しているDFに従属するデータとして、ユーザがサービスを受けるために必要な個人情報などのデータおよびそのデータにアクセスするために必要な認証鍵をEFに格納する。
また、事業所において、事業者は、リーダライタを操作することによって、2次発券済み状態であるICカードに、ICカードに記録されているデータを消去し、ICカードを0次発券済み状態にする旨のオールリセットコマンド、またはICカードに記録されているユーザの個人情報などを消去し、ICカードを1次発券済み状態にする旨のデータリセットコマンドを送信し、ICカードに所定の処理を実行させる。
例えば、ICカードは、リーダライタから送信されてきたオールリセットコマンドを受信すると、記録しているDFおよびEF、DFまたはEFにアクセスするために必要な認証鍵などを削除する。オールリセットコマンドを実行したICカードのライフサイクル状態は、0次発券状態に戻る。
また、例えば、ICカードは、リーダライタから送信されてきたデータリセットコマンドを受信すると、記録しているユーザがサービスを受けるために必要な個人情報などのデータおよびそのデータにアクセスするために必要な認証鍵などを削除する。データリセットコマンドを実行したICカードのライフサイクル状態は、1次発券状態に戻る。
2次発券が行われた状態(2次発券済み状態)のICカードは、各事業所において、ユーザに配布される。ユーザは、ユーザの個人情報などが記録されている、2次発券済み状態のICカードを、例えば、電子的な定期券や財布として利用し、事業者から提供されるサービスを受ける。
ユーザによって利用され、不要になったICカードは、事業者によって回収される。ユーザからICカードを回収した事業者は、リーダライタを操作することによって、2次発券済み状態であるICカードに、ICカードに記録されているデータを消去し、ICカードが、如何なるコマンドも実行しない状態(廃棄可能状態)にする旨のターミネートコマンドを送信し、ICカードに所定の処理を実行させる。
例えば、ICカードは、リーダライタから送信されてきたターミネートコマンドを受信すると、記録しているデータを消去する。ターミネートコマンドを実行したICカードのライフサイクル状態は、廃棄可能状態となり、廃棄可能状態のICカードは、如何なるコマンドも実行しない。
そして、ユーザからICカードを回収した事業者は、廃棄可能状態のICカードを、ICカードを物理的に廃棄する廃棄業者に配送する。廃棄業者は、配送されてきた廃棄可能状態のICカードを廃棄する。
このようにして、ICカードのライフサイクルの各状態において、ICカードの発券作業が行われる。なお、ICカードは、自分自身のライフサイクル状態および各状態において実行できるコマンドを示す情報を記憶しており、各状態において、実行できるコマンドとして記憶されていないコマンドの実行が指示されても、そのコマンドを実行しない。
ICカードは、ライフサイクルの各状態において、リーダライタから送信されてきた各種のコマンドを受信し、受信したコマンドを実行する。
ここで、図3は、リーダライタおよびICカードからなる無線通信システムを説明する図である。この無線通信システムは、無線通信するリーダライタ11およびICカード12から構成され、リーダライタ11とICカード12との間では、電磁波を利用して非接触でのデータの送受信が行われるようになされている。
リーダライタ11は、電波(電磁波)を放射し、例えば、ポーリングなどの処理を行うことによって、ICカード12を検出する。
ICカード12がリーダライタ11に近接し、リーダライタ11によって、ICカード12が検出されると、リーダライタ11およびICカード12は、必要に応じて、所定のデータを送受信することによって、相互認証処理を行う。
そして、相互認証処理によって、認証がなされると、リーダライタ11は、ICカード12に対して、発券を行うための処理など、所定の処理を実行させるためのコマンドを生成し、生成したコマンドを、無線通信によりICカード12あてに送信する。
ICカード12は、リーダライタ11から送信されてきたコマンドを受信し、記憶しているICカード12のライフサイクル状態および各状態において実行できるコマンドを示す情報を基に、受信したコマンドが、ICカード12のライフサイクル状態において実行できるコマンドであるか否かを判定する。
ICカード12は、受信したコマンドが、ICカード12のライフサイクル状態において実行できるコマンドであると判定された場合、受信したコマンドを実行する。また、ICカード12は、受信したコマンドが、ICカード12のライフサイクル状態において実行できるコマンドでないと判定された場合、受信したコマンドを実行しない。
したがって、例えば、ICカード12のライフサイクル状態が、工場出荷状態であり、工場出荷状態において、0次発券を行うためのコマンドだけが実行できる場合、ICカード12が1次発券を行うためのコマンドを受信したとき、ICカード12は、受信したコマンドが、ICカード12のライフサイクル状態において実行できるコマンドでないと判定し、受信した1次発券を行うためのコマンドを実行しない。
また、ICカード12のライフサイクル状態が、廃棄可能状態である場合には、ICカード12は、相互認証処理を行わず、また、受信したコマンドも実行しない。
図4は、リーダライタ11の機能の構成を示すブロック図である。
リーダライタ11は、制御部31、記録部32、SPU(Signal Processing Unit)33、変調部34、発振回路35、アンテナ36、復調部37、およびドライブ38を含むように構成される。
制御部31は、ICカード12に対して、所定の処理を実行させる、各種のコマンドを生成し、生成したコマンドをSPU33に供給する。例えば、制御部31は、0次発券コマンド、オールリセットコマンド、ターミネートコマンド、または相互認証を行うためのコマンド(以下、相互認証コマンドとも称する)を生成し、生成したコマンドを、SPU33に供給する。
制御部31は、暗号化部51および復号部52を備えている。制御部31は、必要に応じて、各種のコマンドに格納するデータを生成する。制御部31の暗号化部51は、制御部31が生成した、コマンドに格納するデータを、必要に応じて、記録部32に記録されている相互認証を行うための認証鍵を用いて、暗号化する。例えば、制御部31の暗号化部51は、制御部31が生成した、相互認証を行うためのコマンドに格納するデータを、記録部32に記録されている認証鍵を用いて、暗号化する。
制御部31の復号部52は、SPU33から供給されたデータを、必要に応じて記録部32に記録されている認証鍵を用いて復号する。すなわち、制御部31の復号部52は、SPU33から供給されたデータが、所定の方式により暗号化されている場合、記録部32に記録されている認証鍵を用いて、暗号化方式に対応する復号方式により、SPU33から供給されたデータを復号する。制御部31は、制御部31の復号部52が復号したデータを、必要に応じて記録部32に供給する。
制御部31の復号部52は、SPU33から供給されたデータが暗号化されていない場合、SPU33から供給されたデータを復号しない。
制御部31は、必要に応じて装着された、ドライブ38から供給されたプログラムを読み込んで、読み込んだプログラムを実行する。また、制御部31は、ドライブ38からプログラムやデータが供給された場合、供給されたプログラムやデータを必要に応じて、記録部32に供給し、記録部32に記録されたプログラムを読み込み、読み込んだプログラムを実行する。
記録部32は、書き換え可能で、電源が遮断されても記録内容を保持できる、いわゆる不揮発性の記憶媒体または記録媒体からなり、例えば、ハードディスクまたはフラッシュメモリなどにより構成される。記録部32は、各種のデータを記録している。また、記録部32は、記録しているデータを制御部31に供給する。
記録部32は、ICカード12が記録しているデータに関係付けられた認証鍵を記録している。記録部32は、記録している認証鍵を制御部31に供給する。また、記録部32は、制御部31から供給されたデータを記録する。
SPU33は、制御部31から供給されたコマンドを、所定の方式により符号化し、符号化したコマンドを変調部34に供給する。また、SPU33は、復調部37から供給されたデータを、データの符号化方式に対応する方式により復号し、復号したデータを制御部31に供給する。
例えば、SPU33は、ICカード12あてに送信するコマンドが、制御部31から供給されてきた場合、そのコマンドに、例えば、マンチェスターコードへのコーディングなどの符号化処理を施し、これにより得られた信号を変調部34に出力する。また、SPU33は、ICカード12からのデータが復調部37から供給されてきた場合、そのデータに対して、例えば、マンチェスターコードのデコードなどの復号処理を施し、これにより得られた信号を、制御部31に供給する。
変調部34は、発振回路35から供給された所定の周波数のクロック信号を基に、搬送波を生成する。変調部34は、搬送波に基づいて、SPU33から供給されたコマンドを所定の方式により変調することにより変調したコマンドを生成し、変調したコマンドをアンテナ36に供給する。例えば、変調部34は、SPU33から供給されたコマンドに基づいて、搬送波の位相、振幅、周波数などを変化させることにより変調したコマンドを生成する。
より具体的には、例えば、変調部34は、発振回路35から供給される13.56MHzの周波数のクロック信号を搬送波として、SPU33より供給されるデータをASK(Amplitude Shift Keying)変調し、生成された変調波を、電磁波としてアンテナ36から出力させる。
発振回路35は、所定の周波数の、基準となるクロック信号を生成し、生成したクロック信号を変調部34に供給する。
アンテナ36は、変調部34から供給されたコマンドを、無線通信によりICカード12あてに送信する。すなわち、例えば、アンテナ36は、変調部34から供給されたコマンドを伝送するための電波を輻射(放射)する。また、アンテナ36は、ICカード12から送信されてきたデータを受信し、受信したデータを復調部37に供給する。
復調部37は、アンテナ36から供給されたデータを、変調部110(図5)の変調方式に対応する復調方式により復調し、復調したデータをSPU33に供給する。例えば、復調部37は、アンテナ36を介して取得した変調波(ASK変調波)を復調し、復調したデータをSPU33に出力する。
ドライブ38は、磁気ディスク71、光ディスク72、光磁気ディスク73、或いは半導体メモリ74などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、制御部31またはICカード12に転送される。また、ICカード12に転送(送信)されたプログラムは、ICカード12により、必要に応じて記録されるか、または実行される。
図5は、ICカード12の機能の構成を示すブロック図である。
ICカード12は、アンテナ101、復調部102、SPU103、制御部104、ROM(Read Only Memory)105、RAM(Random Access Memory)106、記録部107、テーブル保持部108、発振回路109、変調部110、および電力発生部111を含むように構成される。
アンテナ101は、リーダライタ11から送信されてきたコマンドを受信し、受信したコマンドを復調部102に供給する。また、アンテナ101は、変調部110から供給されたデータを、無線通信により、リーダライタ11あてに送信する。すなわち、例えば、アンテナ101は、変調部110から供給されたデータを伝送するための電波を放射する。また、アンテナ101においては、リーダライタ11から放射される所定の周波数の電波により、共振が生じ、起電力が発生する。
復調部102は、アンテナ101から供給されたコマンドを、変調部34(図4)の変調方式に対応する復調方式により復調し、復調したコマンドをSPU103に供給する。例えば、復調部102は、アンテナ101を介して受信したASK変調波であるコマンドを包絡線検波して復調し、復調したコマンドをSPU103に出力する。
SPU103は、復調部102から供給されたコマンドを所定の方式により復号し、復号したコマンドを制御部104に供給する。SPU103は、制御部104から供給されたデータを、所定の符号化方式により符号化し、符号化したデータを変調部110に供給する。例えば、SPU103は、復調部102において復調されたコマンドがマンチェスター方式で符号化されている場合、図示せぬPLL(Phase Locked Loop)回路から供給されるクロック信号に基づいて、そのコマンドの復号(マンチェスターコードのデコード)を行い、復号したコマンドを制御部104に供給する。例えば、SPU103は、制御部104から供給されたデータを、マンチェスター方式で符号化し、符号化したデータを変調部110に供給する。
制御部104はSPU103から供給された各種のコマンドを実行する。制御部104は、判定部131、暗号化部132、および復号部133を備えている。
制御部104の判定部131は、テーブル保持部108に保持されているライフサイクル状態テーブルおよびコマンドテーブルを基に、SPU103から供給されたコマンドが、ICカード12のライフサイクル状態において、実行してもよいコマンドであるか否かを判定する。
ここで、ライフサイクル状態テーブルには、ICカード12のライフサイクル状態を示す情報が含まれている。また、コマンドテーブルには、ICカード12の各ライフサイクル状態において、ICカード12が実行することができるコマンドを示す情報が含まれている。なお、ライフサイクル状態テーブルおよびコマンドテーブルの詳細は、後述する。
制御部104は、SPU103から供給されたコマンドが、ICカード12のライフサイクル状態において、実行してもよいコマンドであると判定された場合、SPU103から供給されたコマンドを実行する。また、制御部104は、SPU103から供給されたコマンドが、ICカード12のライフサイクル状態において、実行してもよいコマンドでないと判定された場合、SPU103から供給されたコマンドを実行しない。
例えば、制御部104は、SPU103から相互認証を行うためのコマンドが供給されると、供給された相互認証を行うためのコマンドを実行する。このとき、例えば、制御部104の暗号化部132は、相互認証を行うために必要な、乱数、タイムスタンプなどのデータを、記録部107に記録されている認証鍵を用いて暗号化する。制御部104は、制御部104の暗号化部132が暗号化したデータをSPU103に供給する。
また、例えば、制御部104は、SPU103から供給されたコマンドに応じて、記録部107を制御し、記録部107に記録されているデータを消去させるか、または上書きさせる(書き換える)。
制御部104の復号部133は、SPU103から供給されたコマンドに含まれているデータが、所定の方式により暗号化されている場合、記録部107に記録されている認証鍵を用いて、暗号化方式に対応する復号方式により、SPU103から供給されたコマンドに含まれているデータを復号する。制御部104は、制御部104の復号部133が復号したデータを、必要に応じて記録部107に供給する。また、制御部104の復号部133は、SPU103から供給されたコマンドに含まれているデータが、暗号化されていない場合、データを復号しない。
制御部104は、テーブル保持部108を制御し、テーブル保持部108が保持しているライフサイクル状態テーブルを更新させる。例えば、制御部104が、0次発券コマンドを実行することによって、0次発券を行った場合、制御部104は、テーブル保持部108を制御し、ライフサイクル状態が0次発券済み状態であることを示すように、ライフサイクル状態テーブルを更新させる。
制御部104は、必要に応じて、ROM105に記録されているプログラムを読み込み、読み込んだプログラムを実行する。制御部104は、必要に応じて、データをRAM106に供給する。また、制御部104は、必要に応じて、RAM106が一時的に記憶しているデータを取得する。
ROM105は、制御部104が各種の処理を行うためのプログラム、その他のデータなどを記録している。ROM105は、記録しているプログラム、その他のデータなどを制御部104に供給する。
RAM106は、制御部104が各種の処理を行うとき、その処理の途中のデータなどを一時的に記憶する。RAM106は、記憶しているデータを制御部104に供給する。
記録部107は、例えば、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)、MRAM(Magnetoresistive Random Access Memory(磁気抵抗メモリ))、またはFeRAM(強誘電体メモリ)などの不揮発性メモリなどにより構成され、リーダライタ11に送信される、秘匿すべきデータなどの各種データを記録している。また、記録部107は、リーダライタ11との相互認証処理に用いられる認証鍵を記録している。
テーブル保持部108は、例えば、フラッシュメモリ、EEPROM、MRAM、またはFeRAMなどの不揮発性メモリなどにより構成され、ライフサイクル状態テーブルおよびコマンドテーブルを保持している。テーブル保持部108は、制御部104の制御のもと、保持しているライフサイクル状態テーブルを更新する。
発振回路109は、アンテナ101が受信するコマンドの周波数と同じ周波数のクロック信号を生成し、生成したクロック信号を変調部110に供給する。例えば、発振回路109は、PLL回路を内蔵し、コマンドのクロック周波数と同一の周波数のクロック信号を発生する。
変調部110は、発振回路109から供給された所定の周波数のクロック信号を基に、搬送波を生成する。変調部110は、搬送波に基づいて、SPU103から供給されたデータを、所定の方式によって変調することにより、変調したデータを生成し、変調したデータをアンテナ101に供給する。例えば、変調部110は、SPU103から供給された、マンチェスター方式により符号化されたデータを、さらにASK変調し、変調したデータを、アンテナ101を介して、リーダライタ11に送信する。
また、例えば、変調部110は、SPU103から供給されるデータに対して、所定のスイッチング素子(図示せず)をオン、オフさせ、スイッチング素子がオン状態であるときだけ、所定の負荷をアンテナ101に並列に接続させることにより、アンテナ101の負荷を変動させる。ASK変調されたデータは、アンテナ101の負荷の変動により、アンテナ101を介して、リーダライタ11に送信される(リーダライタ11のアンテナ36の端子電圧を変動させる)。
電力発生部111は、アンテナ101に生じた交流の起電力を基に、直流電力を発生させ、発生させた直流電力をICカード12の各部に供給する。
次に、図6のフローチャートを参照して、リーダライタ11による、コマンド送信の処理を説明する。
ステップS11において、リーダライタ11は、必要に応じて、乱数などのデータを送受信し、ICカード12との相互認証を行う。例えば、ステップS11において、リーダライタ11は、ISO/IEC(International Organization for Standardization/International Electrotechnical Commission)9798-2およびJIS(Japanese Industrial Standards) X5056-2において定義されている、対称暗号アルゴリズムを用いた方式により、ICカード12との相互認証を行う。
このとき、例えば、リーダライタ11は、アクセスするデータまたはICカード12に対して実行させるコマンドごとに、予め定められた認証鍵を用いて、送受信するデータを暗号化するか、または復号する。なお、リーダライタ11は、ICカード12のライフサイクル状態が、工場出荷状態または廃棄可能状態である場合、相互認証の処理を行わない。また、相互認証の処理において、正規のICカード12であると認証されなかった場合、コマンド送信の処理は終了する。
相互認証がなされると、ステップS12において、制御部31は、所定の処理を実行させるための、各種のコマンドを生成し、生成したコマンドをSPU33に供給する。
例えば、ステップS12において、制御部31は、0次発券コマンド、オールリセットコマンド、ターミネートコマンドなどを生成し、生成したコマンドを、SPU33に供給する。なお、制御部31が生成した各種のコマンドには、必要に応じて、コマンドの実行に必要なデータが格納されている。
ステップS13において、SPU33は、制御部31から供給されたコマンドを、所定の符号化方式により符号化し、符号化したコマンドを変調部34に供給する。例えば、ステップS13において、SPU33は、制御部31から供給されたコマンドを、マンチェスター方式などの符号化方式により符号化し、符号化したコマンドを、変調部34に供給する。
ステップS14において、変調部34は、SPU33から供給されたコマンドを変調し、変調したコマンドをアンテナ36に供給する。例えば、ステップS14において、変調部34は、発振回路35から供給されたクロック信号に対応する、所定の周波数(例えば、13.56MHz)の搬送波に基づいて、SPU33から供給されたコマンドを、所定の方式により変調する。変調部34は、変調したコマンドをアンテナ36に供給する。
より詳細には、例えば、ステップS14において、変調部34は、ASK方式、PSK(Phase Shift Keying)方式、またはFSK(Frequency Shift Keying)方式などの変調方式によりコマンドを変調し、変調したコマンドをアンテナ36に供給する。
ステップS15において、アンテナ36は、変調部34から供給されたコマンドを、無線通信によってICカード12あてに送信し、コマンド送信の処理は終了する。例えば、ステップS15において、アンテナ36は、変調部34から供給されたコマンドを伝送する電波を、放射することによりコマンドを送信する。
このようにして、リーダライタ11は、コマンドを生成し、生成したコマンドを、無線通信によりICカード12あてに送信する。
図7のフローチャートを参照して、ICカード12による、コマンド実行の処理を説明する。
ステップS31において、ICカード12は、必要に応じて、乱数などのデータを送受信し、リーダライタ11との相互認証を行う。例えば、ステップS31において、ICカード12は、ISO/IEC9798-2およびJIS X5056-2において定義されている、対称暗号アルゴリズムを用いた方式などにより、リーダライタ11との相互認証を行う。
このとき、例えば、ICカード12は、アクセスが要求されたデータまたは実行が要求されたコマンドごとに、予め定められた認証鍵を用いて、送受信するデータを暗号化するか、または復号する。なお、ICカード12は、ICカード12のライフサイクル状態が、工場出荷状態または廃棄可能状態である場合、相互認証の処理を行わない。また、相互認証の処理において、正規のリーダライタ11であると認証されなかった場合、コマンド実行の処理は終了する。
ステップS31において、相互認証がなされると、リーダライタ11からコマンドが送信されてくるので、ステップS32において、アンテナ101は、リーダライタ11から送信されてきたコマンドを受信し、受信したコマンドを復調部102に供給する。
ステップS33において、復調部102は、アンテナ101から供給されたコマンドを、変調部34(図4)の変調方式に対応する復調方式により復調し、復調したコマンドをSPU103に供給する。
ステップS34において、SPU103は、復調部102から供給されたコマンドを、SPU33(図4)の符号化方式に対応する復号方式により復号し、復号したコマンドを制御部104に供給する。
ステップS35において、制御部104の判定部131は、テーブル保持部108が保持している、ライフサイクル状態テーブルを参照して、ライフサイクル状態が工場出荷状態であるか否かを判定する。
ここで、テーブル保持部108は、例えば、図8に示すライフサイクル状態テーブルを保持している。
ライフサイクル状態テーブルには、ICカード12のライフサイクル状態の各状態に対応するフラグが含まれている。
すなわち、ライフサイクル状態テーブルには、工場出荷状態に対応するフラグ、0次発券済み状態に対応するフラグ、1次発券済み状態に対応するフラグ、2次発券済み状態に対応するフラグ、および廃棄可能状態に対応するフラグが含まれている。
ここで、セットされている(例えば、“1”が設定されている)フラグは、ICカード12のライフサイクル状態が、フラグに対応する状態であることを示し、リセットされている(例えば、“0”が設定されている)フラグは、ICカード12のライフサイクル状態が、フラグに対応する状態でないことを示している。
また、ライフサイクル状態テーブルに含まれるフラグは、ライフサイクル状態の各状態に対応するフラグのうち、何れか1つのフラグだけが必ずセットされており、それ以外のフラグ(残りの4つのフラグ)は、必ずリセットされている。
したがって、この場合、工場出荷状態に対応するフラグが“1”に設定されて(セットされて)おり、0次発券済み状態に対応するフラグ、1次発券済み状態に対応するフラグ、2次発券済み状態に対応するフラグ、および廃棄可能状態に対応するフラグのそれぞれが、“0”に設定されて(リセットされて)いるので、ICカード12のライフサイクル状態が、工場出荷状態であることを示している。
図7のフローチャートの説明に戻り、例えば、ステップS35において、制御部104の判定部131は、テーブル保持部108が保持している、図8に示すライフサイクル状態テーブルを参照して、ライフサイクル状態が、工場出荷状態であるか否かを判定する。
この場合、図8に示すライフサイクル状態テーブルにおいて、工場出荷状態に対応するフラグが、セットされている(“1”に設定されている)ので、制御部104の判定部131は、ライフサイクル状態が、工場出荷状態であると判定する。
ステップS35において、ライフサイクル状態が、工場出荷状態であると判定された場合、ステップS36に進み、ICカード12は、工場出荷状態におけるコマンド実行の処理を行い、コマンド実行の処理は終了する。
なお、工場出荷状態におけるコマンド実行の処理の詳細は後述するが、工場出荷状態におけるコマンド実行の処理において、ICカード12は、テーブル保持部108が保持しているコマンドテーブルを参照して、SPU103から供給されたコマンドのうち、工場出荷状態において実行することができるコマンドだけを実行する。
ここで、テーブル保持部108は、例えば、図9に示すコマンドテーブルを保持している。コマンドテーブルには、ICカード12のライフサイクル状態の各状態において、実行することができるコマンドを示す情報が含まれている。
すなわち、コマンドテーブルには、工場出荷状態において実行できるコマンドが、トラッキングコマンドおよび0次発券コマンドであることを示す情報が含まれている。ここで、トラッキングコマンドとは、ICカード12が記録している、ICカード12を製造したカード製造業者を特定するための情報である製造者番号を、無線通信により、リーダライタ11に送信するためのコマンドをいう。
また、コマンドテーブルには、0次発券済み状態において実行できるコマンドが、相互認証コマンド、トラッキングコマンド、および1次発券コマンドであることを示す情報が含まれており、1次発券済み状態において実行できるコマンドが、相互認証コマンド、オールリセットコマンド、および2次発券コマンドであることを示す情報が含まれている。
同様に、コマンドテーブルには、2次発券済み状態において実行できるコマンドが、相互認証コマンド、オールリセットコマンド、データリセットコマンド、通常運用コマンド、およびターミネートコマンドであることを示す情報が含まれている。
ここで、通常運用コマンドとは、ユーザが事業者からサービスの提供を受けるために必要な処理を実行するためのコマンドをいう。したがって、例えば、ICカード12は、通常運用コマンドを実行することによって、ユーザの個人情報などのデータを、記録部107に記録したり、ユーザの個人情報などのデータを記録部107から読み出して、無線通信により、リーダライタ11あてに送信する。
さらに、コマンドテーブルには、廃棄可能状態において実行できるコマンドがないことを示す情報が含まれている。すなわち、廃棄可能状態においては、ICカード12は、如何なるコマンドも実行しない。
したがって、例えば、ステップS36において、ICカード12は、SPU103から供給されたコマンドのうち、トラッキングコマンドまたは0次発券コマンドだけを実行する。
一方、ステップS35において、ライフサイクル状態が、工場出荷状態でないと判定された場合、工場出荷状態において実行できるコマンドは、実行されないので、ステップS37に進み、制御部104の判定部131は、テーブル保持部108が保持している、ライフサイクル状態テーブルを参照して、ライフサイクル状態が、0次発券済み状態であるか否かを判定する。
例えば、ステップS37において、制御部104の判定部131は、図8に示すライフサイクル状態テーブルを参照して、ライフサイクル状態が、0次発券済み状態であるか否かを判定する。
したがって、制御部104の判定部131は、0次発券済み状態に対応するフラグがセットされている(例えば、“1”に設定されている)場合、ライフサイクル状態が、0次発券済み状態であると判定し、0次発券済み状態に対応するフラグがリセットされている(例えば、“0”に設定されている)場合、ライフサイクル状態が、0次発券済み状態でないと判定する。
ステップS37において、ライフサイクル状態が、0次発券済み状態であると判定された場合、ステップS38に進み、ICカード12は、0次発券済み状態におけるコマンド実行の処理を行い、コマンド実行の処理は終了する。
なお、0次発券済み状態におけるコマンド実行の処理の詳細は後述するが、0次発券済み状態におけるコマンド実行の処理において、ICカード12は、テーブル保持部108が保持しているコマンドテーブルを参照して、SPU103から供給されたコマンドのうち、0次発券済み状態において実行することができるコマンドだけを実行する。
したがって、例えば、テーブル保持部108が、図9に示すコマンドテーブルを保持している場合、ICカード12は、ステップS38において、SPU103から供給されたコマンドのうち、トラッキングコマンドまたは1次発券コマンドだけを実行する。
また、ステップS37において、ライフサイクル状態が、0次発券済み状態でないと判定された場合、0次発券済み状態において実行できるコマンドは、実行されないので、ステップS39に進み、制御部104の判定部131は、テーブル保持部108が保持している、ライフサイクル状態テーブルを参照して、ライフサイクル状態が、1次発券済み状態であるか否かを判定する。
例えば、ステップS39において、制御部104の判定部131は、図8に示すライフサイクル状態テーブルを参照して、ライフサイクル状態が、1次発券済み状態であるか否かを判定する。
したがって、制御部104の判定部131は、1次発券済み状態に対応するフラグがセットされている(例えば、“1”に設定されている)場合、ライフサイクル状態が、1次発券済み状態であると判定し、1次発券済み状態に対応するフラグがリセットされている(例えば、“0”に設定されている)場合、ライフサイクル状態が、1次発券済み状態でないと判定する。
ステップS39において、ライフサイクル状態が、1次発券済み状態であると判定された場合、ステップS40に進み、ICカード12は、1次発券済み状態におけるコマンド実行の処理を行い、コマンド実行の処理は終了する。
なお、1次発券済み状態におけるコマンド実行の処理の詳細は後述するが、1次発券済み状態におけるコマンド実行の処理において、ICカード12は、テーブル保持部108が保持しているコマンドテーブルを参照して、SPU103から供給されたコマンドのうち、1次発券済み状態において実行することができるコマンドだけを実行する。
したがって、例えば、テーブル保持部108が、図9に示すコマンドテーブルを保持している場合、ICカード12は、ステップS40において、SPU103から供給されたコマンドのうち、オールリセットコマンドまたは2次発券コマンドだけを実行する。
また、ステップS39において、ライフサイクル状態が、1次発券済み状態でないと判定された場合、1次発券済み状態において実行できるコマンドは、実行されないので、ステップS41に進み、制御部104の判定部131は、テーブル保持部108が保持している、ライフサイクル状態テーブルを参照して、ライフサイクル状態が、2次発券済み状態であるか否かを判定する。
例えば、ステップS41において、制御部104の判定部131は、図8に示すライフサイクル状態テーブルを参照して、ライフサイクル状態が、2次発券済み状態であるか否かを判定する。
したがって、制御部104の判定部131は、1次発券済み状態に対応するフラグがセットされている(例えば、“1”に設定されている)場合、ライフサイクル状態が、2次発券済み状態であると判定し、2次発券済み状態に対応するフラグがリセットされている(例えば、“0”に設定されている)場合、ライフサイクル状態が、2次発券済み状態でないと判定する。
ステップS41において、ライフサイクル状態が、2次発券済み状態であると判定された場合、ステップS42に進み、ICカード12は、2次発券済み状態におけるコマンド実行の処理を行い、コマンド実行の処理は終了する。
なお、2次発券済み状態におけるコマンド実行の処理の詳細は後述するが、2次発券済み状態におけるコマンド実行の処理において、ICカード12は、テーブル保持部108が保持しているコマンドテーブルを参照して、SPU103から供給されたコマンドのうち、2次発券済み状態において実行することができるコマンドだけを実行する。
したがって、例えば、テーブル保持部108が、図9に示すコマンドテーブルを保持している場合、ICカード12は、ステップS42において、SPU103から供給されたコマンドのうち、オールリセットコマンド、データリセットコマンド、通常運用コマンド、またはターミネートコマンドだけを実行する。
一方、ステップS41において、ライフサイクル状態が、2次発券済み状態でないと判定された場合、ライフサイクル状態は、廃棄可能状態であり、ICカード12は、如何なるコマンドも実行しないので、ステップS42の処理はスキップされ、コマンド実行の処理は終了する。
このようにして、ICカード12は、リーダライタ11から送信されてきたコマンドを受信し、受信したコマンドを実行する。
このように、ICカード12のライフサイクルにおける各状態において、予め定められたコマンドだけを実行することにより、データの改竄や情報の漏洩を防止することができる。
図10のフローチャートを参照して、図7のステップS36の処理に対応する、工場出荷状態におけるコマンド実行の処理を説明する。
ステップS61において、制御部104の判定部131は、SPU103から供給されたコマンドが、トラッキングコマンドであるか否かを判定する。ステップS61において、SPU103から供給されたコマンドが、トラッキングコマンドであると判定された場合、工場出荷状態において、トラッキングコマンドは実行できるので、ステップS62に進み、制御部104は、トラッキングコマンドを実行する。
すなわち、ステップS62において、制御部104は、記録部107に記録されている製造者番号を取得し、取得した製造者番号を、SPU103に供給する。
ここで、ICカード12のライフサイクル状態に、工場出荷状態が設定されている場合、記録部107には、例えば、図11に示すように、ICカード12を製造したカード製造業者を特定するための情報である、製造者番号だけが記録されている。また、製造者番号の他に、ICカード12の製造年月日などの情報を記録するようにしてもよい。
ステップS63において、SPU103は、制御部104から供給された製造者番号を、所定の符号化方式により符号化し、符号化した製造者番号を変調部110に供給する。例えば、ステップS63において、SPU103は、制御部104から供給された製造者番号を、マンチェスター方式により符号化し、符号化した製造者番号を変調部110に供給する。
ステップS64において、変調部110は、SPU103から供給された製造者番号を、所定の方式により変調し、変調した製造者番号をアンテナ101に供給する。例えば、ステップS64において、変調部110は、発振回路109から供給されたクロック信号により生成した搬送波を基に、SPU103から供給された製造者番号を、ASK変調方式により変調し、変調した製造者番号をアンテナ101に供給する。
ステップS65において、アンテナ101は、変調部110から供給された、変調されている製造者番号を、無線通信により、リーダライタ11あてに送信し、処理は終了する。例えば、ステップS65において、アンテナ101は、変調部110から供給された製造者番号を伝送する電波を放射することにより、製造者番号を送信する。リーダライタ11は、ICカード12から送信されてきた製造者番号を受信することによって、ICカード12の製造元を確認する。
一方、ステップS61において、SPU103から供給されたコマンドが、トラッキングコマンドでないと判定された場合、トラッキングコマンドを実行しないので、ステップS66に進み、制御部104の判定部131は、SPU103から供給されたコマンドが、0次発券コマンドであるか否かを判定する。
ステップS66において、SPU103から供給されたコマンドが、0次発券コマンドであると判定された場合、工場出荷状態において、0次発券コマンドは実行できるので、ステップS67に進み、制御部104は、0次発券コマンドを実行する。
すなわち、ステップS67において、制御部104は、SPU103から供給された0次発券コマンドに含まれているデバイス識別番号を、記録部107に供給する。そして、記録部107は、制御部104から供給されたデバイス識別番号を記録する。
ここで、デバイス識別番号とは、ICカード12を特定するための、ICカード12に固有の識別番号をいう。
ステップS68において、制御部104は、MFの設定を行う。例えば、ステップS68において、制御部104は、MFおよびMFに含まれるデータを管理するための情報を生成し、生成したMFおよびMFに含まれるデータを管理するための情報を、記録部107に供給する。記録部107は、制御部104から供給された、MFおよびMFに含まれるデータを管理するための情報を記録する。ここで、MFに含まれるデータを管理するための情報には、例えば、MFに含まれるDFおよびEFの数など、MFの属性を示す情報が含まれている。
ステップS69において、制御部104は、0次発券コマンドに含まれている、MFに対する認証鍵としての出荷鍵を記録部107に供給する。記録部107は、制御部104から供給された出荷鍵を、MFに対する認証鍵として記録する。ここで、出荷鍵は、1次発券作業を行う事業者が、リーダライタ11を操作して、ICカード12にトラッキングコマンドまたは1次発券コマンドを実行させる場合に、相互認証処理において用いられる認証鍵である。
ステップS70において、テーブル保持部108は、制御部104の制御のもと、ライフサイクル状態が、0次発券済み状態であることを示すようにライフサイクル状態テーブルを更新し、処理は終了する。
例えば、ステップS70において、テーブル保持部108は、制御部104の制御のもと、テーブル保持部108が保持している、図8に示すライフサイクル状態テーブルの工場出荷状態に対応するフラグをリセット(例えば、“0”に設定する)し、0次発券済み状態に対応するフラグをセット(例えば、“1”に設定する)することにより、ライフサイクル状態テーブルを更新する。
また、ライフサイクル状態が、0次発券済み状態である場合、記録部107には、例えば、図12に示すように、製造者番号、デバイス識別番号、MF151、出荷鍵A、および出荷鍵Bが記録されている。
ここで、MF151は、記録部107において、階層構造に記録されるデータ(フォルダ)のうち、最上位の階層のフォルダである。また、記録部107には、MF151とともに、MF151に含まれるデータを管理するための情報が記録されている。
さらに、記録部107には、認証鍵として、出荷鍵Aおよび出荷鍵Bが記録されている。すなわち、ICカード12は、ライフサイクル状態が0次発券済み状態であり、リーダライタ11から送信されてきた、トラッキングコマンドを送信する旨の相互認証コマンド、または1次発券コマンドを送信する旨の相互認証コマンドを受信した場合、出荷鍵Aおよび出荷鍵Bを用いて、リーダライタ11との相互認証処理を行う。
図10のフローチャートの説明に戻り、ステップS66において、SPU103から供給されたコマンドが、0次発券コマンドでないと判定された場合、SPU103から供給されたコマンドは、工場出荷状態において、実行できるコマンドではないので、ステップS67の処理乃至ステップS70の処理はスキップされ、処理は終了する。
したがって、例えば、SPU103から供給されたコマンドが、1次発券コマンドであった場合、ステップS66において、SPU103から供給されたコマンドが、0次発券コマンドでないと判定され、1次発券コマンドは、工場出荷状態において実行できるコマンドではないので、処理は終了する。
このようにして、制御部104は、SPU103から供給された、トラッキングコマンドまたは0次発券コマンドを実行する。
このように、ICカード12のライフサイクルにおける工場出荷状態において、予め定められたコマンドだけを実行することにより、データの改竄や情報の漏洩を防止することができる。
次に、図13のフローチャートを参照して、図7のステップS38の処理に対応する、0次発券済み状態におけるコマンド実行の処理を説明する。
ステップS101において、制御部104の判定部131は、SPU103から供給されたコマンドが、トラッキングコマンドであるか否かを判定する。ステップS101において、SPU103から供給されたコマンドが、トラッキングコマンドであると判定された場合、0次発券済み状態において、トラッキングコマンドは実行できるので、ステップS102に進み、制御部104は、トラッキングコマンドを実行する。
なお、ステップS102の処理乃至ステップS105の処理のそれぞれは、図10におけるステップS62の処理乃至ステップS65の処理のそれぞれと同様なので、その説明は省略する。
ステップS101において、SPU103から供給されたコマンドが、トラッキングコマンドでないと判定された場合、トラッキングコマンドを実行しないので、ステップS106に進み、制御部104の判定部131は、SPU103から供給されたコマンドが、1次発券コマンドであるか否かを判定する。
ステップS106において、SPU103から供給されたコマンドが、1次発券コマンドであると判定された場合、工場出荷状態において、1次発券コマンドは実行できるので、ステップS107に進み、制御部104は、1次発券コマンドを実行する。
すなわち、ステップS107において、制御部104は、1次発券コマンドに含まれている、認証鍵としての事業者鍵を、記録部107に供給する。記録部107は、記録している認証鍵を、制御部104から供給された事業者鍵に書き換える。ここで、事業者鍵は、2次発券作業を行う事業者が、リーダライタ11を操作して、ICカード12にオールリセットコマンド、2次発券コマンド、データリセットコマンド、またはターミネートコマンドを実行させる場合に、相互認証処理において用いられる認証鍵である。
ステップS108において、制御部104は、DFの設定を行う。例えば、ステップS108において、制御部104は、MF151に従属するDFおよびDFに含まれるデータを管理するための情報を生成し、生成したDFおよびDFに含まれるデータを管理するための情報を、記録部107に供給する。記録部107は、制御部104から供給された、DFおよびDFに含まれるデータを管理するための情報を記録する。ここで、DFに含まれるデータを管理するための情報には、例えば、DFに含まれるデータの書き換えを禁止したり、DFに含まれる一部のデータのみを書き換え可能にするなどの情報を含むDFの属性を示す情報、DFに対する認証鍵などが含まれている。
ステップS109において、制御部104は、EFの設定を行う。例えば、ステップS109において、制御部104は、DFに従属するEFおよびEFに含まれるデータを管理するための情報を生成し、生成したEFおよびEFに含まれるデータを管理するための情報を、記録部107に供給する。記録部107は、制御部104から供給された、EFおよびEFに含まれるデータを管理するための情報を記録する。ここで、EFに含まれるデータを管理するための情報には、例えば、EFに含まれるデータの書き換えを禁止したり、EFに含まれる一部のデータのみを書き換え可能にするなどの情報を含むEFの属性を示す情報、EFに対する認証鍵などが含まれている。
ステップS110において、制御部104は、1次発券コマンドに含まれている、事業者番号を記録部107に供給する。記録部107は、制御部104から供給された事業者番号を記録する。ここで、事業者番号とは、1次発券作業を行う事業者を特定するための情報である。
ステップS111において、テーブル保持部108は、制御部104の制御のもと、ライフサイクル状態が、1次発券済み状態であることを示すように、ライフサイクル状態テーブルを更新し、処理は終了する。
例えば、ステップS111において、テーブル保持部108は、制御部104の制御のもと、テーブル保持部108が保持している、ライフサイクル状態テーブルの0次発券済み状態に対応するフラグをリセット(例えば、“0”に設定する)し、1次発券済み状態に対応するフラグをセット(例えば、“1”に設定する)することにより、ライフサイクル状態テーブルを更新する。
また、ライフサイクル状態が、1次発券済み状態である場合、記録部107には、例えば、図14に示すように、製造者番号、デバイス識別番号、MF151、事業者鍵A、事業者鍵B、事業者番号152、DF153−1、DF153−2、およびEF154−1乃至EF154−4が記録されている。なお、図中、図12における場合と対応する部分には、同一の符号を付してあり、繰り返しになるので、その説明は適宜、省略する。
ここで、MF151には、MF151に従属するデータとして、1次発券作業を行う事業者を特定するための事業者番号152が含まれている。また、MF151には、MF151に従属するDF153−1、DF153−2、およびEF154−1が含まれている。
DF153−1には、DF153−1に従属するデータとして、EF154−2およびEF154−3が含まれている。また、記録部107には、DF153−1とともに、DF153−1に対する認証鍵を含む、DF153−1を管理するための情報が記録されている。同様に、記録部107には、EF154−2およびEF154−3とともに、EF154−2またはEF154−3に対する認証鍵を含む、EF154−2またはEF154−3を管理するための情報が記録されている。この場合、EF154−2に対する認証鍵として、それぞれ、“0000000”に設定された4つの認証鍵が記録されており、同様に、EF154−3に対する認証鍵として、それぞれ、“0000000”に設定された4つの認証鍵が記録されている。
DF153−2には、DF153−2に従属するデータとして、EF154−4が含まれている。また、記録部107には、DF153−2とともに、DF153−2に対する認証鍵を含む、DF153−2を管理するための情報が記録されている。同様に、記録部107には、EF154−4とともに、EF154−4に対する認証鍵を含む、EF154−4を管理するための情報が記録されている。この場合、EF154−4に対する認証鍵として、それぞれ、“0000000”に設定された4つの認証鍵が記録されている。
また、記録部107には、MF151に従属するEF154−1とともに、EF154−1に対する認証鍵を含む、EF154−1を管理するための情報が記録されている。この場合、EF154−1に対する認証鍵として、それぞれ、“0000000”に設定された4つの認証鍵が記録されている。
なお、以下、DF153−1およびDF153−2を個々に区別する必要のない場合、単に、DF153と称する。また、以下、EF154−1乃至EF154−4のそれぞれを個々に区別する必要のない場合、単にEF154と称する。
さらに、記録部107には、認証鍵として、事業者鍵Aおよび事業者鍵Bが記録されている。ICカード12は、ライフサイクル状態が1次発券済み状態または2次発券済み状態であり、リーダライタ11から送信されてきた、オールリセットコマンド、2次発券コマンド、データリセットコマンド、またはターミネートコマンドを送信する旨の相互認証コマンドを受信した場合、事業者鍵Aおよび事業者鍵Bを用いて、リーダライタ11との相互認証処理を行う。
図13のフローチャートの説明に戻り、ステップS106において、SPU103から供給されたコマンドが、1次発券コマンドでないと判定された場合、SPU103から供給されたコマンドは、0次発券済み状態において、実行できるコマンドではないので、ステップS107の処理乃至ステップS111の処理はスキップされ、処理は終了する。
したがって、例えば、SPU103から供給されたコマンドが、2次発券コマンドであった場合、ステップS106において、SPU103から供給されたコマンドが、1次発券コマンドでないと判定され、2次発券コマンドは、0次発券済み状態において実行できるコマンドではないので、処理は終了する。
このようにして、制御部104は、SPU103から供給された、トラッキングコマンドまたは1次発券コマンドを実行する。
このように、ICカード12のライフサイクルにおける0次発券済み状態において、予め定められたコマンドだけを実行することにより、データの改竄や情報の漏洩を防止することができる。また、ICカード12のライフサイクルにおける状態によって、相互認証処理に用いられる認証鍵を書き換え、異なる認証鍵を用いて相互認証の処理を行うことで、データの改竄や情報の漏洩を防止することができる。
図15のフローチャートを参照して、図7のステップS40の処理に対応する、1次発券済み状態におけるコマンド実行の処理を説明する。
ステップS131において、制御部104の判定部131は、SPU103から供給されたコマンドが、オールリセットコマンドであるか否かを判定する。ステップS131において、SPU103から供給されたコマンドが、オールリセットコマンドであると判定された場合、1次発券済み状態において、オールリセットコマンドは実行できるので、ステップS132に進み、制御部104は、オールリセットコマンドを実行する。
ステップS132において、記録部107は、制御部104の制御のもと、記録しているMFに従属する、事業者番号、DF、およびEFを削除する。例えば、ステップS132において、記録部107は、制御部104の制御のもと、図14に示されるMF151に従属する、事業者番号152、DF153、およびEF154を削除する。
ステップS133において、テーブル保持部108は、制御部104の制御のもと、ライフサイクル状態が、0次発券済み状態であることを示すようにライフサイクル状態テーブルを更新し、処理は終了する。
例えば、ステップS133において、テーブル保持部108は、制御部104の制御のもと、テーブル保持部108が保持している、ライフサイクル状態テーブルの1次発券済み状態に対応するフラグをリセット(例えば、“0”に設定する)し、0次発券済み状態に対応するフラグをセット(例えば、“1”に設定する)することにより、ライフサイクル状態テーブルを更新する。
この場合、例えば、記録部107には、MFに対する認証鍵として事業者鍵が記録されており、0次発券済み状態においてトラッキングコマンドまたは0次発券コマンドを実行するときに行われる、相互認証処理においては、認証鍵として、事業者鍵が用いられる。
ステップS131において、SPU103から供給されたコマンドが、オールリセットコマンドでないと判定された場合、オールリセットコマンドを実行しないので、ステップS134に進み、制御部104の判定部131は、SPU103から供給されたコマンドが、2次発券コマンドであるか否かを判定する。
ステップS134において、SPU103から供給されたコマンドが、2次発券コマンドであると判定された場合、1次発券済み状態において、2次発券コマンドは実行できるので、ステップS135に進み、制御部104は、2次発券コマンドを実行する。
すなわち、ステップS135において、制御部104は、DFの設定を行う。例えば、ステップS135において、制御部104は、2次発券コマンドに含まれるデータを基に、MF151に従属するDF153に格納される、ユーザの個人情報などのデータ、およびDF153に含まれるデータを管理するための情報を生成し、生成したDF153に格納されるデータおよびDF153に含まれるデータを管理するための情報を、記録部107に供給する。記録部107は、制御部104から供給された、DF153に格納されるデータ、およびDF153に含まれるデータを管理するための情報を記録する。
ステップS136において、制御部104は、EFの設定を行う。例えば、ステップS136において、制御部104は、2次発券コマンドに含まれるデータを基に、DF153に従属するEF154に格納される、ユーザの個人情報などのデータ、およびEF154に含まれるデータを管理するための情報を生成し、生成したEF154に格納されるデータおよびEF154に含まれるデータを管理するための情報を、記録部107に供給する。
記録部107は、制御部104から供給された、EF154に格納されるデータ、およびEF154に含まれるデータを管理するための情報を記録する。ここで、EF154に含まれるデータを管理するための情報には、例えば、新たに設定された、EF154に対する認証鍵が含まれている。すなわち、記録部107は、EF154に含まれるデータを管理するための情報を記録することによって、EF154に対する認証鍵を書き換える。
ステップS137において、テーブル保持部108は、制御部104の制御のもと、ライフサイクル状態が、2次発券済み状態であることを示すように、ライフサイクル状態テーブルを更新し、処理は終了する。
例えば、ステップS137において、テーブル保持部108は、制御部104の制御のもと、テーブル保持部108が保持している、ライフサイクル状態テーブルの1次発券済み状態に対応するフラグをリセット(例えば、“0”に設定する)し、2次発券済み状態に対応するフラグをセット(例えば、“1”に設定する)することにより、ライフサイクル状態テーブルを更新する。
また、ライフサイクル状態が、2次発券済み状態である場合、記録部107には、例えば、図16に示すように、製造者番号、デバイス識別番号、MF151、事業者鍵A、事業者鍵B、事業者番号152、DF153−1、DF153−2、およびEF154−1乃至EF154−4が記録されている。なお、図中、図14における場合と対応する部分には、同一の符号を付してあり、繰り返しになるので、その説明は適宜、省略する。
ここで、DF153およびEF154には、事業者が提供するサービスを受けるために必要な、ユーザの個人情報などのデータが格納されている。また、この場合、EF154−1には、EF154−1に対する認証鍵として、“0454879”、“0679831”、“9864136”、および“8794246”が設定されている。
同様に、EF154−2には、EF154−2に対する認証鍵として、“4657564”、“4301445”、“4315798”、および“4687144”が設定されており、EF154−3には、EF154−3に対する認証鍵として、“0038432”、“4863204”、“6870680”、および“3654640”が設定されており、EF154−4には、EF154−4に対する認証鍵として、“4687063”、“4013698”、“4430413”、および“2444545”が設定されている。
図15のフローチャートの説明に戻り、ステップS134において、SPU103から供給されたコマンドが、2次発券コマンドでないと判定された場合、SPU103から供給されたコマンドは、1次発券済み状態において、実行できるコマンドではないので、ステップS135の処理乃至ステップS137の処理はスキップされ、処理は終了する。
したがって、例えば、SPU103から供給されたコマンドが、1次発券コマンドであった場合、ステップS134において、SPU103から供給されたコマンドが、2次発券コマンドでないと判定され、1次発券コマンドは、1次発券済み状態において実行できるコマンドではないので、処理は終了する。
このようにして、制御部104は、SPU103から供給された、オールリセットコマンドまたは2次発券コマンドを実行する。
このように、ICカード12のライフサイクルにおける1次発券済み状態において、予め定められたコマンドだけを実行することにより、データの改竄や情報の漏洩を防止することができる。また、ICカード12のライフサイクルにおける状態によって、相互認証処理に用いられる認証鍵を書き換え、ライフサイクルの状態によって、異なる認証鍵を用いて、相互認証の処理を行うことで、データの改竄や情報の漏洩を防止することができる。
次に、図17のフローチャートを参照して、図7のステップS42の処理に対応する、2次発券済み状態におけるコマンド実行の処理を説明する。
ステップS151において、制御部104の判定部131は、SPU103から供給されたコマンドが、オールリセットコマンドであるか否かを判定する。ステップS151において、SPU103から供給されたコマンドが、オールリセットコマンドであると判定された場合、2次発券済み状態において、オールリセットコマンドは実行できるので、ステップS152に進み、制御部104は、オールリセットコマンドを実行する。
なお、ステップS152の処理およびステップS153の処理は、図15におけるステップS132の処理およびステップS133の処理と同様なので、その説明は省略する。
ステップS151において、SPU103から供給されたコマンドが、オールリセットコマンドでないと判定された場合、オールリセットコマンドを実行しないので、ステップS154に進み、制御部104の判定部131は、SPU103から供給されたコマンドが、データリセットコマンドであるか否かを判定する。
ステップS154において、SPU103から供給されたコマンドが、データリセットコマンドであると判定された場合、2次発券済み状態において、データリセットコマンドは実行できるので、ステップS155に進み、記録部107は、データリセットコマンドを実行する。
すなわち、ステップS155において、記録部107は、制御部104の制御のもと、記録している、MFに従属するDFおよびEFを初期化する。例えば、ステップS155において、記録部107は、制御部104の制御のもと、記録している、図16に示すMF151に従属するDF153およびEF154に格納されているデータ、DF153およびEF154を管理するための情報を消去することによって、DF153およびEF154を初期化する。
ステップS156において、テーブル保持部108は、制御部104の制御のもと、ライフサイクル状態が、1次発券済み状態であることを示すように、ライフサイクル状態テーブルを更新し、処理は終了する。
例えば、ステップS156において、テーブル保持部108は、制御部104の制御のもと、テーブル保持部108が保持している、ライフサイクル状態テーブルの2次発券済み状態に対応するフラグをリセット(例えば、“0”に設定する)し、1次発券済み状態に対応するフラグをセット(例えば、“1”に設定する)することにより、ライフサイクル状態テーブルを更新する。
ステップS154において、SPU103から供給されたコマンドが、データリセットコマンドでないと判定された場合、データリセットコマンドを実行しないので、ステップS157に進み、制御部104の判定部131は、SPU103から供給されたコマンドが、通常運用コマンドであるか否かを判定する。
ステップS157において、SPU103から供給されたコマンドが、通常運用コマンドであると判定された場合、2次発券済み状態において、通常運用コマンドは実行できるので、ステップS158に進み、ICカード12は、通常運用コマンドに応じた処理を実行し、処理は終了する。
例えば、SPU103から、EFに格納されているデータの書き換えを要求する旨の通常運用コマンドが供給された場合、ステップS158において、制御部104は、通常運用コマンドに含まれているデータを、記録部107に供給する。そして、記録部107は、記録している、EFに格納されているデータを、制御部104から供給されたデータに書き換える。なお、この場合、より詳細には、通常運用コマンドに含まれているデータが、所定の方式により暗号化されているとき、制御部104の復号部133は、通常運用コマンドに含まれているデータを、復号し、制御部104は、制御部104の復号部133が復号したデータを、記録部107に供給する。
また、例えば、SPU103から、EFに格納されているデータの送信を要求する旨の通常運用コマンドが供給された場合、ステップS158において、制御部104は、記録部107から、送信が要求されたデータを取得し、取得したデータをSPU103に供給する。
SPU103は、制御部104から供給されたデータを、例えば、マンチェスター方式により符号化し、符号化したデータを変調部110に供給する。変調部110は、SPU103から供給されたデータを、例えば、ASK変調し、変調したデータをアンテナ101に供給する。そして、アンテナ101は、変調部110から供給されたデータを、無線通信により、リーダライタ11あてに送信する。なお、この場合、リーダライタ11あてに送信するデータを、必要に応じて、制御部104の暗号化部132が、所定の方式により暗号化するようにしてもよい。
ステップS157において、SPU103から供給されたコマンドが、通常運用コマンドでないと判定された場合、通常運用コマンドを実行しないので、ステップS159に進み、制御部104の判定部131は、SPU103から供給されたコマンドが、ターミネートコマンドであるか否かを判定する。
ステップS159において、SPU103から供給されたコマンドが、ターミネートコマンドであると判定された場合、2次発券済み状態において、ターミネートコマンドは実行できるので、ステップS160に進み、記録部107は、制御部104の制御のもと、記録している全てのデータを削除する。
ステップS161において、テーブル保持部108は、制御部104の制御のもと、ライフサイクル状態が、廃棄可能状態であることを示すように、ライフサイクル状態テーブルを更新し、処理は終了する。
例えば、ステップS161において、テーブル保持部108は、制御部104の制御のもと、テーブル保持部108が保持している、ライフサイクル状態テーブルの2次発券済み状態に対応するフラグをリセット(例えば、“0”に設定する)し、廃棄可能状態に対応するフラグをセット(例えば、“1”に設定する)することにより、ライフサイクル状態テーブルを更新する。
ステップS159において、SPU103から供給されたコマンドが、ターミネートコマンドでないと判定された場合、SPU103から供給されたコマンドは、2次発券済み状態において、実行できるコマンドではないので、ステップS160の処理およびステップS161の処理はスキップされ、処理は終了する。
したがって、例えば、SPU103から供給されたコマンドが、2次発券コマンドであった場合、ステップS159において、SPU103から供給されたコマンドが、ターミネートコマンドでないと判定され、2次発券コマンドは、2次発券済み状態において実行できるコマンドではないので、処理は終了する。
このようにして、制御部104は、SPU103から供給された、オールリセットコマンド、データリセットコマンド、通常運用コマンド、またはターミネートコマンドを実行する。
このように、ICカード12のライフサイクルにおける2次発券済み状態において、予め定められたコマンドだけを実行することにより、データの改竄や情報の漏洩を防止することができる。これにより、ユーザからICカード12を回収した事業者は、廃棄可能状態のICカード12を、ICカード12を物理的に廃棄する廃棄業者に配送するとき、データの改竄や情報の漏洩などの心配がなくなる。
なお、ICカード12が、自分自身のライフサイクル状態において、実行することができないコマンドを受信した場合、コマンドを送信してきたリーダライタ11に対して、無応答とするようにしてもよく、自分自身のライフサイクル状態において、実行することができないコマンドを受信した旨のエラー通知信号を、リーダライタ11あてに送信するようにしてもよい。また、テーブル保持部108が、記録部107に含まれる構成とすることも可能である。
さらに、より詳細には、1次発券コマンドまたは2次発券コマンドを実行することによって、認証鍵を書き換える処理は、1次発券コマンドまたは2次発券コマンドに含まれる、認証鍵を書き換えるコマンド(以下、鍵変更コマンドと称する)を実行することによって行われる。
したがって、例えば、2次発券コマンドを実行することによって、記録部107が記録している、MFに対する事業者鍵を書き換えることも可能であるが、1次発券コマンドを実行することによって、出荷鍵(MFに対する認証鍵)だけしか書き換えができないようにし、2次発券コマンドを実行することによって、DFに対する認証鍵およびEFに対する認証鍵だけしか書き換えができないようにすることも可能である。この場合、2次発券済み状態においては、認証鍵の書き換えができないようになされている。
さらに、また、1次発券済み状態または2次発券済み状態において、コマンドを実行するとき、認証鍵として、事業者鍵を用いて、相互認証処理を行うと説明したが、例えば、2次発券コマンドを実行するとき、図14に示す事業者鍵Aを用いて、相互認証処理を行い、2次発券済み状態において、コマンド(例えば、ターミネートコマンド)を実行するとき、図16に示す事業者鍵Bを用いて、相互認証処理を行うようにしてもよい。
このようにすることで、2次発券作業を行う事業者と、2次発券済み状態において、コマンドを実行させる事業者とが異なる場合においても、同一の認証鍵を共有することなく、それぞれのコマンドを実行させることが可能である。
さらに、また、記録している事業者鍵を基に、異なる認証鍵を生成し、2次発券コマンドを実行する場合における相互認証処理と、ターミネートコマンドを実行する場合における相互認証処理とで、異なる認証鍵を用いるようにしてもよい。
すなわち、2次発券コマンドを実行する場合、制御部104は、例えば、図14に示す事業者鍵Aおよび事業者鍵Bの論理和を演算することにより、相互認証処理に用いる認証鍵を生成し、ターミネートコマンドを実行する場合、制御部104は、図16に示す事業者鍵Aおよび事業者鍵Bの排他的論理和を演算することにより、認証鍵を生成する。このようにすることで、実行するコマンドごとに、アクセス権を設定することが可能となる。
以上のように、ICカードのライフサイクルにおける各状態において、予め定められたコマンドだけを実行することにより、データの改竄や情報の漏洩を防止することができる。また、ICカードのライフサイクルにおける各状態において、異なる認証鍵を用いるようにしたので、データの改竄や情報の漏洩を防止することができる。
本発明によれば、データを記録するようにしたので、データを送受信することができる。また、本発明によれば、ICカードのライフサイクルにおける各状態において、予め定められたコマンドだけを実行するようにしたので、データの改竄や情報の漏洩を防止することができる。さらに、本発明によれば、ICカードのライフサイクルにおける各状態において、異なる認証鍵を用いるようにしたので、データの改竄や情報の漏洩を防止することができる。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
この記録媒体は、図4に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク71(フレキシブルディスクを含む)、光ディスク72(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク73(MD(Mini-Disc)(商標)を含む)、若しくは半導体メモリ74などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROMや、記録部32に含まれるハードディスクなどで構成される。
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。