説明

ICカード、携帯可能電子装置、及びICカードの制御方法

【課題】より効率的に処理を実行するICカード、携帯可能電子装置、及びICカードの制御方法を提供する。
【解決手段】一実施形態に係るICカードは、外部機器から送信されたコマンドに応じて処理を実行するICカードであって、複数のアプリケーションを記憶する第1の記憶手段と、前記外部機器から送信されたコマンドを受信する受信手段と、前記受信手段により受信した前記コマンドに基づいて前記第1の記憶手段により記憶されている前記アプリケーションを実行し、処理を行う処理手段と、前記コマンドが前記アプリケーションの最終コマンドであるか否か判定する判定手段と、前記判定手段により最終コマンドであると判定された場合、予め設定されたアプリケーションの実行順序に基づいて次に実行するアプリケーションを特定し、特定した前記アプリケーションを実行するように前記処理手段を制御する制御手段と、を具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ICカード、携帯可能電子装置、及びICカードの制御方法に関する。
【背景技術】
【0002】
一般的に、携帯可能電子装置として用いられるICカードは、プラスチックなどで形成されたカード状の本体と本体に埋め込まれたICモジュールとを備えている。ICモジュールは、ICチップを有している。ICチップは、電源が無い状態でもデータを保持することができるEEPROM(Electrically Erasable Programmable Read−Only Memory)またはフラッシュROMなどの不揮発性メモリと、種々の演算を実行するCPUと、CPUの処理に利用されるRAMメモリなどを有している。
【0003】
ICカードは、例えば、国際標準規格ISO/IEC7816に準拠したICカードである。ICカードは、携帯性に優れ、且つ、外部装置との通信及び複雑な演算処理を行う事ができる。また、偽造が難しい為、ICカードは、機密性の高い情報などを格納してセキュリティシステム、電子商取引などに用いられることが想定される。
【0004】
ICカードは、ICカードを処理する処理装置からコマンドを受信した場合、受信したコマンドに応じてアプリケーションを実行する。これにより、ICカードは、種々の機能を実現することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2003−173563号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記のようなアプリケーションは、ICカードのROMまたは不揮発性メモリなどに格納される。ICカードは、アプリケーションを実行する場合、SELECTコマンド(セレクトコマンド)に応じてアプリケーションが格納されているファイルを選択する。ICカードは、選択しているファイルに格納されているアプリケーションを読み出し、不揮発性メモリまたはRAMに実行可能な状態で展開する。ICカードは、展開されたアプリケーションを実行することにより、種々の処理を行う。
【0007】
通常、ICカードは、複数のアプリケーションをROMまたは不揮発性メモリに記憶している。また、複数の異なるアプリケーションの連続して実行される場合がある。このように、実行中のアプリケーションが終了し、次のアプリケーションを実行する場合、ICカードは、処理装置からのセレクトコマンドに応じて次に実行するアプリケーションを選択する処理を行う必要がある。この為、処理装置及びICカードは、新たにアプリケーションを実行する毎に、セレクトコマンド及びレスポンスを送受信する必要があり、処理時間を悪化させる可能性があるという課題がある。
【0008】
そこで、より効率的に処理を実行するICカード、携帯可能電子装置、及びICカードの制御方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
一実施形態に係るICカードは、外部機器から送信されたコマンドに応じて処理を実行するICカードであって、複数のアプリケーションを記憶する第1の記憶手段と、前記外部機器から送信されたコマンドを受信する受信手段と、前記受信手段により受信した前記コマンドに基づいて前記第1の記憶手段により記憶されている前記アプリケーションを実行し、処理を行う処理手段と、前記コマンドが前記アプリケーションの最終コマンドであるか否か判定する判定手段と、前記判定手段により最終コマンドであると判定された場合、予め設定されたアプリケーションの実行順序に基づいて次に実行するアプリケーションを特定し、特定した前記アプリケーションを実行するように前記処理手段を制御する制御手段と、を具備する。
【図面の簡単な説明】
【0010】
【図1】図1は、一実施形態に係るICカード処理システムの例について説明するための図である。
【図2】図2は、一実施形態に係るICカードの例について説明するための図である。
【図3】図3は、一実施形態に係るICカードの例について説明するための図である。
【図4】図4は、一実施形態に係るICカードの例について説明するための図である。
【図5】図5は、一実施形態に係るICカードの例について説明するための図である。
【図6】図6は、一実施形態に係るコマンドの例について説明するための図である。
【図7】図7は、一実施形態に係るICカードの例について説明するための図である。
【図8】図8は、一実施形態に係るICカードの例について説明するための図である。
【図9】図9は、一実施形態に係るICカードの例について説明するための図である。
【図10】図10は、一実施形態に係るICカードの例について説明するための図である。
【図11】図11は、一実施形態に係るICカードの例について説明するための図である。
【発明を実施するための形態】
【0011】
以下、図面を参照しながら、一実施形態に係るICカード、携帯可能電子装置、及びICカードの制御方法について詳細に説明する。
【0012】
本実施形態に係る携帯可能電子装置(ICカード)20及びICカード20を処理する処理装置(端末装置)10は、例えば、接触通信、及び/または非接触通信の機能を備える。これにより、ICカード20及び端末装置10は、互いにデータの送受信を行うことができる。
【0013】
図1は、一実施形態に係るICカード処理システム1の構成例を示す。
ICカード処理システム1は、ICカード20を処理する端末装置10と、ICカード20と、を備える。
【0014】
端末装置10は、CPU11、ROM12、RAM13、不揮発性メモリ14、カードリーダライタ15、操作部17、ディスプレイ18、及び電源部19を備える。CPU11、ROM12、RAM13、不揮発性メモリ14、カードリーダライタ15、操作部17、及びディスプレイ18は、それぞれバスを介して互いに接続されている。
【0015】
CPU11は、端末装置10全体の制御を司る制御部として機能する。CPU11は、ROM12又は不揮発性メモリ14に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。例えば、CPU11は、カードリーダライタ15を介してICカード20とコマンド及びレスポンスの送受信を行う。
【0016】
ROM12は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。RAM13は、ワーキングメモリとして機能する揮発性のメモリである。RAM13は、CPU11の処理中のデータなどを一時的に格納する。例えば、RAM13は、カードリーダライタ15を介して外部の機器と送受信するデータを一時的に格納する。また、RAM13は、CPU11が実行するプログラムを一時的に格納する。
【0017】
不揮発性メモリ14は、例えばEEPROM、FRAMなどを備える。不揮発性メモリ14は、例えば、制御用のプログラム、制御データ、アプリケーション、及びアプリケーションに用いられるデータなどを記憶する。
【0018】
カードリーダライタ15は、ICカード20と通信を行うためのインターフェース装置である。カードリーダライタ15は、接触通信、または非接触通信によりICカード20とデータの送受信を行う。
【0019】
接触通信のインターフェースとして用いられる場合、カードリーダライタ15は、ICカード20が装着されるスロットと、ICカード20が備えるコンタクトパターンと接続される複数の接触端子を備える。
【0020】
スロットにICカード20が装着される場合、カードリーダライタ15の複数の接触端子は、ICカード20のコンタクトパターンに接続される。これにより、端末装置10とICカード20とは電気的に接続される。カードリーダライタ15は、スロットに装着されるICカード20に対して、電力の供給、クロックの供給、リセット信号の入力、及びデータの送受信などを行う。
【0021】
また、非接触通信のインターフェースとして用いられる場合、カードリーダライタ15は、送受信するデータに対して信号処理を施す信号処理部と、所定の共振周波数を有するアンテナとを備える。
【0022】
カードリーダライタ15は、例えば、信号処理部により、送受信するデータに対して符号化、復号、変調、及び復調などの信号処理を行なう。また、カードリーダライタ15は、符号化及び変調を施したデータをアンテナに供給する。アンテナは、供給されたデータに応じて磁界を発生させる。これにより、端末装置10は、通信可能範囲に存在するICカード20に対してデータを非接触で送信することができる。
【0023】
さらに、カードリーダライタ15のアンテナは、磁界を検知し、検知した磁界に応じて信号を生成する。これにより、カードリーダライタ15は、信号を非接触で受信することができる。信号処理部は、アンテナにより受信された信号に対して復調及び復号を行う。これにより、端末装置10は、ICカード20から送信された元のデータを取得することができる。
【0024】
操作部17は、例えば操作キーなどを備え、操作者により入力される操作に基づいて、操作信号を生成する。操作部17は、生成した操作信号をCPUに入力する。これにより、CPU11は、操作者により入力された操作に基づいて処理を実行することができる。
【0025】
ディスプレイ18は、CPU11、または図示されないグラフィックコントローラなどの表示処理モジュールから入力される映像を表示するための信号に基づいて種々の情報を表示する。
【0026】
電源部19は、端末装置10の各部に電力を供給する。電源部19は、例えば、商用電源より電力を受け取り、所定の電圧に変換し、端末装置10の各部に供給する。
【0027】
図2は、一実施形態に係るICカード20の構成例を示す。
図2に示すように、ICカード20は、例えば、矩形状の本体21と、本体21内に内蔵されたICモジュール22とを備える。ICモジュール22は、ICチップ23と、通信部24とを備える。ICチップ23と通信部24とは、互いに接続された状態でICモジュール22内に形成されている。
【0028】
なお、本体21は、少なくとも通信部24が配設されるICモジュール22を設置可能な形状であれば、矩形状に限らず如何なる形状であっても良い。
【0029】
ICチップ23は、通信部24、CPU25、ROM26、RAM27、不揮発性メモリ28、電源部31、及びロジック部32などを備える。通信部24、CPU25、ROM26、RAM27、不揮発性メモリ28、電源部31、及びロジック部32は、バスを介して互いに接続されている。
【0030】
通信部24は、端末装置(外部機器)10のカードリーダライタ15と通信を行うためのインターフェースである。通信部24は、接触通信、または非接触通信により、端末装置10とデータの送受信を行う。
【0031】
接触通信のインターフェースとして用いられる場合、通信部24は、カードリーダライタ15の接触端子と接続されるコンタクトパターンを備える。コンタクトパターンは、導電性を有する金属などによりICモジュール22の表面に形成される接触端子である。即ち、コンタクトパターンは、端末装置10のカードリーダライタ15の接触端子と接触可能に形成されている。
【0032】
コンタクトパターンは、金属により形成される面が複数のエリアに区切られて形成される。区切られた各エリアは、それぞれ端子として機能する。通信部24は、コンタクトパターンを介してカードリーダライタ15とデータの送受信を行うことができる。
【0033】
また、非接触通信のインターフェースとして用いられる場合、通信部24は、信号処理部とアンテナとを備える。
【0034】
信号処理部は、端末装置10に送信するデータに対して符号化、負荷変調などの信号処理を行う。例えば、信号処理部は、端末装置10に送信するデータの変調(増幅)を行う。信号処理部は、信号処理を施したデータをアンテナに供給する。
【0035】
アンテナは、例えば、ICモジュール22内に所定の形状で配設される金属線により構成される。ICカード20は、端末装置10に送信するデータに応じてアンテナにより磁界を発生させる。これにより、ICカード20は、端末装置10に対してデータを送信することができる。また、ICカード20は、電磁誘導によりアンテナに発生する誘導電流に基づいて端末装置10から送信されるデータを認識する。
【0036】
例えば、信号処理部は、アンテナに発生する誘導電流に対して復調、及び復号を行う。例えば、信号処理部は、アンテナにより受信する信号の解析を行う。これにより、通信部24は、2値の論理データを取得する。通信部24は、解析したデータをバスを介してCPU25に送信する。
【0037】
CPU25は、ICカード20全体の制御を司る制御部として機能する。CPU25は、ROM26あるいは不揮発性メモリ28に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。例えば、端末装置10から受信したコマンドに応じて種々の処理を行い、処理結果としてのレスポンスなどのデータの生成を行なう。
【0038】
ROM26は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ROM26は、製造段階で制御プログラム及び制御データなどを記憶した状態でICカード20内に組み込まれる。即ち、ROM26に記憶される制御プログラム及び制御データは、予めICカード20の仕様に応じて組み込まれる。
【0039】
RAM27は、ワーキングメモリとして機能する揮発性のメモリである。RAM27は、CPU25の処理中のデータなどを一時的に格納する。例えば、RAM27は、通信部24を介して端末装置10から受信したデータを一時的に格納する。またRAM27は、通信部24を介して端末装置10に送信するデータを一時的に格納する。またさらに、RAM27は、CPU25が実行するプログラムを一時的に格納する。
【0040】
不揮発性メモリ28は、例えば、EEPROMあるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリを備える。不揮発性メモリ28は、ICカード20の運用用途に応じて制御プログラム及び種々のデータを格納する。
【0041】
電源部31は、端末装置10の各部に電力を供給する。ICカード20が接触通信を行う構成を備える場合、電源部31は、通信部24のコンタクトパターンを介してカードリーダライタ15から供給される電力をICカード20の各部に供給する。
【0042】
また、ICカード20が非接触通信を行う構成を備える場合、カードリーダライタ15のアンテナから送信される電波、特にキャリア波に基づいて電力を生成する。さらに、電源部31は、動作クロックを生成する。電源部31は、発生させた電力及び動作クロックをICカード20の各部に電力を供給する。ICカード20の各部は、電力の供給を受けた場合、動作可能な状態になる。
【0043】
ロジック部32は、演算処理をハードウエアにより行う演算部である。例えば、ロジック部32は、端末装置10からのコマンドに基づいて、暗号化、復号、及び乱数の生成などの処理を行う。例えば、端末装置10から相互認証コマンドを受信する場合、ロジック部32は、乱数を生成し、生成した乱数をCPU25に伝送する。
【0044】
ICカード20は、一次発行と二次発行とにより発行される。端末装置10は、一次発行において、ICカード20の不揮発性メモリ28に種々のデータを格納する為のファイルを創成する。これにより、不揮発性メモリ28には、Master File(MF)、Dedicated File(DF)、及びElementary File(EF)などが創成される。
【0045】
MFは、ファイル構造の根幹となるファイルである。DFは、MFの下位に創成される。DFは、アプリケーションなどをグループ化して格納するファイルである。EFは、DFの下位に創成される。EFは、様々なデータを格納するためのファイルである。また、MFの直下にEFが置かれる場合もある。
【0046】
EFには、Working Elementary File(WEF)とInternal Elementary File(IEF)などの種類がある。WEFは、作業用EFであり、個人情報などを格納する。IEFは、内部EFであり、例えば、セキュリティのための暗号鍵(暗証番号)などのデータを記憶する。
【0047】
二次発行では、EFに例えば顧客データなどの個別データが格納される。これにより、ICカード20が運用可能な状態になる。
【0048】
なお、本実施形態では、ICカード20の不揮発性メモリ28内には、一次発行の段階で上記したアプリケーションが格納される。
【0049】
図3は、不揮発性メモリ28の領域分割の例を示す。不揮発性メモリ28の記憶領域は、システム領域とアプリケーション領域とに二分される。システム領域には、不揮発性メモリ28に登録されているアプリケーションのファイル名(DF name)を示す情報と、このファイルが格納されている位置(アドレス)を示す情報とが格納される。アプリケーション領域には、上記したようなMF、DF及びEFなどのファイル構造が格納されている。
【0050】
図4は、システム領域に格納されているデータの例を示す。図4により示されるように、システム領域には、各DF毎に、DF name及びこのDFが格納されているアドレスを示すポインタが対応付けられたテーブル(登録アプリケーションテーブル)28aが記憶されている。
【0051】
この例によると、不揮発性メモリ28には、アプリケーション1(APL1)乃至アプリケーション4(APL4)が格納されている。APL1を格納しているDF1は、不揮発性メモリ28のアドレス「10000」に記憶されている。アプリケーション2(APL2)を格納しているDF2は、不揮発性メモリ28のアドレス「20000」に記憶されている。アプリケーション3(APL3)を格納しているDF3は、不揮発性メモリ28のアドレス「30000」に記憶されている。APL4を格納しているDF4は、不揮発性メモリ28のアドレス「40000」に記憶されている。
【0052】
図5は、アプリケーション領域の例を示す。図5により示されているように、アプリケーション領域は、ファイル構造の根幹となるMF、アプリケーションなどをグループ化して格納するDF、及び種々のデータを格納するためのEFが記憶されている。この例によると、MF281の下位として、EF282、DF283、DF284、DF285、及びDF286が格納されている。また、DF283の下位には、EF2831、EF2832・・・が格納されている。DF284の下位には、EF2841、EF2842・・・が格納されている。DF285の下位には、EF2851、EF2852・・・が格納されている。DF286の下位には、EF2861、EF2862・・・が格納されている。
【0053】
DF283は、APL1を格納しているDFである。即ち、DF283は、上記のDF1に対応する。DF284は、APL2を格納しているDFである。即ち、DF284は、上記のDF2に対応する。DF285は、APL3を格納しているDFである。即ち、DF285は、上記のDF3に対応する。DF286は、APL4を格納しているDFである。即ち、DF286は、上記のDF4に対応する。
【0054】
DF283乃至DF286には、それぞれ格納しているアプリケーションを識別する為のDF nameが付与されている。即ち、DF283には、DF nameとして「APL1」が付与されている。また、DF284には、DF nameとして「APL2」が付与されている。また、DF285には、DF nameとして「APL3」が付与されている。また、DF286には、DF nameとして「APL4」が付与されている。
【0055】
図6は、端末装置10から送信されるコマンドの例を示す。
図6により示されるように、端末装置10がICカード20に送信するコマンドは、「CLA」、「INS」、「P1」、「P2」、「Lc」、「Data」、及び「Le」などのフィールドを有する。
【0056】
「CLA」は、コマンドの種別を示すclass byteである。「INS」は、コマンドの種別を示すinstruction byteである。「P1」及び「P2」は、「INS」に応じたパラメータを示すparameter byteである。「P1」及び「P2」は、例えばmコマンドオプション指定を示す。
【0057】
「Lc」は、「Data」のデータの長さ(バイト数)を示すlength field for cording number Ncである。「Data」は、当該コマンドのデータ本体を示すcommand data fieldである。「Data」は、例えば、当該コマンドに基づくコマンド処理で使用されるデータなどを格納する。「Le」は、当該コマンドに対するレスポンスのデータ長(最大長)を示すlength field for cording number Neである。
【0058】
即ち、「CLA」及び「INS」により、当該コマンドの種類が示される。ICカード20は、受信したコマンドの「CLA」及び「INS」の値を解析することにより、受信したコマンドの種類を認識する。
【0059】
端末装置10は、アプリケーションを選択する為のコマンド(セレクトコマンド)をICカード20に送信する。なお、端末装置10は、選択するアプリケーションを示す情報をセレクトコマンドのDataフィールドに格納する。例えば、端末装置10は、選択するアプリケーションが格納されているDFのDF nameをセレクトコマンドのDataフィールドに格納する。
【0060】
ICカード20は、コマンドを受信した場合、受信したコマンドの「CLA」及び「INS」の値を解析することにより、受信したコマンドがセレクトコマンドであることを認識する。受信したコマンドがセレクトコマンドである場合、ICカード20は、受信したセレクトコマンドのDataフィールドを参照することにより、DF nameを取得する。
【0061】
ICカード20は、Dataフィールドの値、即ちDF nameと、登録アプリケーションテーブル28aのDF nameとを比較し、一致するものを検索する。例えば、セレクトコマンドのDataフィールドの値が「APL1」である場合、ICカード20は、一致するアプリケーションが不揮発性メモリ28に存在し、DF nameが「APL1」であるDFのアドレスが「10000」であることを認識する。即ち、ICカード20は、登録アプリケーションテーブル28aを参照し、セレクトコマンドのDataフィールドの値に対応するアドレスを読み出す。
【0062】
図7は、RAM27に格納されるデータの例を示す。図7により示されるように、RAM27は、カレントDFポインタ271と、ネクストDFポインタ272とを格納する。カレントDFポインタ271及びネクストDFポインタ272は、DFのアドレスに対応する値が設定される記憶領域を有する。ICカード20は、現在選択しているDFのアドレスをカレントDFポインタ271に設定する。また、ICカード20は、次に実行するアプリケーション(後続アプリケーション)が格納されているDFのアドレスをネクストDFポインタ272に設定する。
【0063】
ICカード20は、セレクトコマンドを受信した場合、受信したセレクトコマンドのDataフィールドの値と一致するDF nameに対応付けられているアドレスを読み出す。ICカード20は、読み出したアドレスをカレントDFポインタ271に設定する。これにより、ICカード20は、このアドレスに格納されているDFを選択した状態になる。
【0064】
図8は、システム領域に格納されているデータの例を示す。図8により示されるように、システム領域には、DF name毎に最終コマンドの種別、及び次に選択するアプリケーション(後続アプリケーション)が格納されているDFのアドレスが対応付けられたテーブル(後続アプリケーションテーブル)28bが記憶されている。
【0065】
この例によると、最終コマンドとしてXYZコマンドと、アドレスとしてAPL3が格納されているDFのアドレス「30000」とがAPL1に対応付けられている。また、最終コマンドとしてABCコマンドと、アドレスとしてAPL4が格納されているDFのアドレス「40000」とがAPL2に対応付けられている。また、最終コマンドとしてLMNコマンドと、アドレスとしてAPL2が格納されているDFのアドレス「20000」とがAPL3に対応付けられている。
【0066】
ICカード20は、あるDFを選択した場合、選択中のDFのDF nameに対応付けられているアドレスを後続アプリケーションテーブル28bから読み出す。ICカード20は、読み出したアドレスをネクストDFポインタ272に設定する。これにより、ICカード20は、次に実行するアプリケーションが格納されているDFのアドレスをRAM27上に読み出すことが出来る。
【0067】
また、ICカード20は、あるDFを選択している場合、端末装置10からコマンドを受信する毎に、受信したコマンドが実行中のアプリケーションの最終コマンドであるか否か判断する。ICカード20は、後続アプリケーションテーブル28bを参照し、受信したコマンドの種類と、選択しているDFのDF nameに対応付けられている最終コマンドの種類とが一致するか判断する。ICカード20は、受信したコマンドの種類と、選択しているDFのDF nameに対応付けられている最終コマンドの種類とが一致する場合、実行中のアプリケーションにおける最終コマンドを受信したと判断する。
【0068】
ICカード20は、最終コマンドを受信した場合、最終コマンドに応じた処理を実行し、レスポンスを端末装置10に送信する。さらに、ICカード20は、ネクストDFポインタ272の値をカレントDFポインタ271に上書きする。これにより、ICカード20は、後続アプリケーションを続けて選択することができる。
【0069】
またさらに、ICカード20は、選択したDFのDF nameに対応付けられているアドレスを後続アプリケーションテーブル28bから読み出す。ICカード20は、読み出したアドレスをネクストDFポインタ272に上書きする。これにより、ICカード20は、さらに次に実行するアプリケーションが格納されているDFのアドレスをRAM27上に読み出すことが出来る。
【0070】
上記した処理により、ICカード20は、逐次セレクトコマンドを端末装置10から受信することなく、後続のアプリケーションを実行することが出来る。図8により示される例によると、ICカード20は、APL1―APL3―APL2―APL4の順にアプリケーションを実行することができる。
【0071】
図9は、端末装置10とICカード20との間で送受信されるコマンド及びレスポンスの例を示す。なお、ICカード20は、図4により示された登録アプリケーションテーブル28aと、図8により示された後続アプリケーションテーブル28bとを記憶しているとする。
【0072】
まず、端末装置10は、DF nameとしてAPL1が指定されたセレクトコマンドを生成し、ICカード20に送信する(ステップS11)。
【0073】
ICカード20は、登録アプリケーションテーブル28aを参照し、APL1に対応付けられているアドレス「10000」を読み出し、カレントDFポインタ271に格納する。さらに、ICカード20は、セレクトコマンドの処理結果に基づいてレスポンスを生成し、端末装置10に送信する(ステップS12)。また、この場合、ICカード20は、後続アプリケーションテーブル28bを参照し、APL1に対応付けられている後続アプリケーションが格納されているDFのアドレス「30000」を読み出し、ネクストDFポインタ272に格納する。
【0074】
端末装置10は、ICカード20から送信されたレスポンスを解析することにより、ICカード20においてAPL1が選択されたか否かを認識することができる。さらに、端末装置10は、アプリケーション1に応じたコマンドをICカード20に送信することにより、ICカード20に処理を実行させる。例えば、端末装置10は、アプリケーション1のコマンドAをICカード20に送信する(ステップS13)。
【0075】
ICカード20は、アプリケーション1のコマンドAに応じた処理を実行し、処理結果に基づくレスポンスを端末装置10に送信する(ステップS14)。
【0076】
さらに、端末装置10は、アプリケーション1のコマンドBをICカード20に送信する(ステップS15)。
【0077】
ICカード20は、アプリケーション1のコマンドBに応じた処理を実行し、処理結果に基づくレスポンスを端末装置10に送信する(ステップS16)。
【0078】
さらに、端末装置10は、アプリケーション1の最終コマンドであるXYZコマンドをICカード20に送信する(ステップS17)。
【0079】
ICカード20は、XYZコマンドに応じた処理を実行し、処理結果に基づくレスポンスを端末装置10に送信する(ステップS18)。さらに、ICカード20は、ネクストDFポインタ272の値をカレントDFポインタ271に上書きする。またさらに、ICカード20は、選択したDFのDF nameに対応付けられているアドレスを後続アプリケーションテーブル28bから読み出す。ICカード20は、読み出したアドレスをネクストDFポインタ272に上書きする。この場合、ICカード20は、カレントDFポインタ271にアドレス「30000」を書き込み、ネクストDFポインタ272にアドレス「20000」を書き込む。
【0080】
端末装置10は、XYZコマンドに対するレスポンスが正常終了である場合、ICカード20において後続アプリケーションが正常に選択されたと判断する。即ち、この場合、端末装置10は、ICカード20においてAPL3が選択されたか否かを認識することができる。端末装置10は、アプリケーション3に応じたコマンドをICカード20に送信することにより、ICカード20に処理を実行させる。例えば、端末装置10は、アプリケーション3のコマンドAをICカード20に送信する(ステップS19)。
【0081】
ICカード20は、アプリケーション3のコマンドAに応じた処理を実行し、処理結果に基づくレスポンスを端末装置10に送信する(ステップS20)。
【0082】
さらに、端末装置10は、アプリケーション3のコマンドBをICカード20に送信する(ステップS21)。
【0083】
ICカード20は、アプリケーション3のコマンドBに応じた処理を実行し、処理結果に基づくレスポンスを端末装置10に送信する(ステップS22)。
【0084】
さらに、端末装置10は、アプリケーション3の最終コマンドであるABCコマンドをICカード20に送信する(ステップS23)。
【0085】
ICカード20は、ABCコマンドに応じた処理を実行し、処理結果に基づくレスポンスを端末装置10に送信する(ステップS24)。さらに、ICカード20は、ネクストDFポインタ272の値をカレントDFポインタ271に上書きする。またさらに、ICカード20は、選択したDFのDF nameに対応付けられているアドレスを後続アプリケーションテーブル28bから読み出す。ICカード20は、読み出したアドレスをネクストDFポインタ272に上書きする。この場合、ICカード20は、カレントDFポインタ271にアドレス「20000」を書き込み、ネクストDFポインタ272にアドレス「40000」を書き込む。
【0086】
端末装置10は、ABCコマンドに対するレスポンスが正常終了である場合、ICカード20において後続アプリケーションが正常に選択されたと判断する。即ち、この場合、端末装置10は、ICカード20においてAPL2が選択されたか否かを認識することができる。端末装置10は、アプリケーション2に応じたコマンドをICカード20に送信することにより、ICカード20に処理を実行させる。例えば、端末装置10は、アプリケーション2のコマンドAをICカード20に送信する(ステップS25)。
【0087】
ICカード20は、アプリケーション2のコマンドAに応じた処理を実行し、処理結果に基づくレスポンスを端末装置10に送信する(ステップS26)。上記の例によると、ICカード20は、ステップS11乃至ステップS18においてアプリケーション1を選択している。また、ICカード20は、ステップS19乃至ステップS24においてアプリケーション3を選択している。また、ICカード20は、ステップS25以降においてアプリケーション2を選択している。
【0088】
これ以降、ICカード20と端末装置10との間で同様にコマンドレスポンスを行うことにより、端末装置10は、ICカード20にセレクトコマンドを送ることなく、アプリケーション1−アプリケーション3−アプリケーション2−アプリケーション4の順にICカード20により処理を実行させることができる。
【0089】
図10及び図11は、コマンドを受信した場合のICカード20の処理の例を示す。
ICカード20は、端末装置10から送信されたコマンドを受信する(ステップS31)。ICカード20は、受信したコマンドの解析を行う(ステップS32)。上記したように、ICカード20は、受信したコマンドのCLA及びINSの値を認識することにより、受信したコマンドの種別を認識することができる。
【0090】
ICカード20は、受信したコマンドがセレクトコマンドであるか否か判断する(ステップS33)。ICカード20は、受信したコマンドがセレクトコマンドである場合、セレクトコマンドのDataフィールドの値に基づいて指定されたDF nameを認識する。
【0091】
さらに、ICカード20は、登録アプリケーションテーブル28aを参照する(ステップS34)。例えば、ICカード20は、登録アプリケーションテーブル28aに登録されているDFのうちの先頭のDFを参照する。
【0092】
ICカード20は、セレクトコマンドにより指定されたDF nameと参照中のDFのDF nameとが一致するか否か判定する(ステップS35)。
【0093】
セレクトコマンドにより指定されたDF nameと参照中のDF nameとが一致する場合、ICカード20は、カレントDFポインタ271及びネクストDFポインタ272の値を更新する(ステップS36)。
【0094】
即ち、ICカード20は、登録アプリケーションテーブル28aの参照中のDFのアドレスを読み出し、カレントDFポインタ271に格納する。さらに、ICカード20は、後続アプリケーションテーブル28bを参照する。ICカード20は、後続アプリケーションテーブル28bにおいて、セレクトコマンドにより指定されたDF nameと一致するDF nameに対応付けられているアドレスを読み出し、ネクストDFポインタ272に格納する。
【0095】
ICカード20は、上記の処理の結果に基づいて正常終了を示すレスポンスを生成し、端末装置10に送信し(ステップS37)、処理を終了する。
【0096】
また、ステップS35において、セレクトコマンドにより指定されたDF nameと参照中のDFのDF nameとが一致しない場合、参照中のDFが登録アプリケーションテーブル28aにおける最終行であるか否か判定する(ステップS38)。参照中のDFが登録アプリケーションテーブル28aにおける最終行である場合、ICカード20は、異常終了を示すレスポンスを生成し、端末装置10に送信し(ステップS39)、処理を終了する。この場合、ICカード20は、セレクトコマンドにより指定されたDF nameが不揮発性メモリ28に登録されていないと判断する。
【0097】
また、ステップS38において、参照中のDFが登録アプリケーションテーブル28aにおける最終行ではない場合、ICカード20は、次のDFを参照し(ステップS40)、ステップS35に移行する。即ち、ICカード20は、登録アプリケーションテーブル28aにおいて、参照中のDFの次の段のDFを参照する。これにより、ICカード20は、セレクトコマンドにより指定されたDF nameと一致するDF nameのDFを登録アプリケーションテーブル28aの中から検索することが出来る。
【0098】
また、ステップS33において、受信したコマンドがセレクトコマンドではないと判定した場合、ICカード20は、図11により示されるステップS41に移行する。この場合、受信したコマンドは、READ、WRITE、APEND、または他の処理をICカード20に実行させる為のコマンドである。ICカード20は、受信したコマンドのCLA及びINSの値に応じてコマンドの種別を認識し、認識したコマンド種別に応じた処理を実行する(ステップS41)。
【0099】
ICカード20は、受信したコマンドに応じた処理が正常終了したか否か判定する(ステップS42)。受信したコマンドに応じた処理が正常終了した場合、ICカード20は、受信したコマンドのCLA及びINSが最終コマンドのCLA及びINSと一致するか否か判定する(ステップS43)。
【0100】
ICカード20は、後続アプリケーションテーブル28bを参照することにより、受信したコマンドのコマンド種別が、選択中のDFのDF nameに対応付けられている最終コマンド種別と一致するか否か判定する。即ち、ICカード20は、後続アプリケーションテーブル28bにおいて、カレントDFポインタ271が示すDFのDF nameに対応付けられている最終コマンドのコマンド種別を読み出し、受信したコマンドのコマンド種別と一致するか否か判定する。
【0101】
受信したコマンドのCLA及びINSと最終コマンドのCLA及びINSとが一致する場合、ICカード20は、カレントDFポインタ271及びネクストDFポインタ272の値を更新する(ステップS44)。
【0102】
即ち、ICカード20は、ネクストDFポインタ272の値をカレントDFポインタ271に上書きする。またさらに、ICカード20は、選択したDFのDF nameに対応付けられているアドレスを後続アプリケーションテーブル28bから読み出す。ICカード20は、読み出したアドレスをネクストDFポインタ272に上書きする。
【0103】
ICカード20は、上記の処理の結果に基づいて正常終了を示すレスポンスを生成し、端末装置10に送信し(ステップS45)、処理を終了する。
【0104】
また、ステップS43において、受信したコマンドのCLA及びINSと最終コマンドのCLA及びINSとが一致しない場合、ICカード20は、ステップS45に移行する。
【0105】
またさらに、ステップS42において、受信したコマンドに応じた処理が正常に実行できなかった場合、ICカード20は、異常終了を示すレスポンスを生成し、端末装置10に送信し(ステップS46)、処理を終了する。
【0106】
上記したように、ICカード20は、不揮発性メモリ28に複数のアプリケーションを記憶する。さらに、ICカード20は、この複数のアプリケーションの実行順序を示す情報として、後続アプリケーションテーブル28bを不揮発性メモリ28に記憶する。ICカード20は、アプリケーション選択中に、このアプリケーションにおける最終コマンドを端末装置10から受信した場合、受信した最終コマンドに基づいて処理を実行し、レスポンスを端末装置10に送信し、後続アプリケーションテーブル28bに基づいて次に実行すべきアプリケーションを選択する。
【0107】
これにより、ICカード20は、端末装置10から逐次アプリケーションを選択するためのセレクトコマンドを受信することなく、後続のアプリケーションを実行することが出来る。これにより、ICカード20は、セレクトコマンド及びレスポンスに要する時間を短縮することができる。この結果、より効率的に処理を実行するICカード、携帯可能電子装置、及びICカードの制御方法を提供することができる。
【0108】
なお、上記した実施形態では、ICカード20は、受信したコマンドのCLA及びINSと、最終コマンドのCLA及びINSとを比較することにより、受信したコマンドが選択中のアプリケーションの最終コマンドであるか否か判定する構成として説明したが、この構成に限定されない。端末装置10が、当該コマンドが最終コマンドであることを示す情報をコマンドに付加する構成であってもよい。
【0109】
端末装置10は、ICカード20により選択されているアプリケーションの最終コマンドを生成する場合、コマンドフォーマットに当該コマンドが最終コマンドであることを示す情報を付加する。例えば、端末装置10は、コマンドの「P1」、または「P2」の値により、当該コマンドが最終コマンドであることをICカード20に伝える。また、端末装置10は、Dataフィールドの所定の位置のビットの論理値により当該コマンドが最終コマンドである否かをICカード20に伝える構成であってもよい。
【0110】
この場合、ICカード20は、受信したコマンドの「P1」、「P2」、または「Data」の所定の位置の論理値に基づいて、受信したコマンドが選択中のアプリケーションにおける最終コマンドであるか否か判定する。ICカード20は、受信したコマンドが最終コマンドである場合、図11に示したステップS44と同様に、カレントDFポインタ271及びネクストDFポインタ272の値を更新する。
【0111】
この構成によると、1つのアプリケーション選択中に、同じコマンド種別のコマンドが複数端末装置10から送信される場合であっても、ICカード20は、受信したコマンドが最終コマンドであるか否かを判別することが出来る。
【0112】
また、上記した実施形態では、ICカード20は、選択中のDFを示すカレントDFポインタ271と、次に選択するDFを示すネクストDFポインタ272とを備える構成として説明したが、この構成に限定されない。ICカード20は、少なくともカレントDFポインタ271を備える構成であればよい。ICカード20は、後続アプリケーションを選択する場合、後続アプリケーションテーブル28bからアドレスを読み出し、直接カレントDFポインタ271に書き込む。この構成によっても、上記の実施形態と同様の効果を実現することができる。
【0113】
なお、上述の各実施の形態で説明した機能は、ハードウエアを用いて構成するに留まらず、ソフトウエアを用いて各機能を記載したプログラムをコンピュータに読み込ませて実現することもできる。また、各機能は、適宜ソフトウエア、ハードウエアのいずれかを選択して構成するものであっても良い。
【0114】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【0115】
1…ICカード処理システム、10…端末装置、11…CPU、12…ROM、13…RAM、14…不揮発性メモリ、15…カードリーダライタ、17…操作部、18…ディスプレイ、19…電源部、20…ICカード、21…本体、22…ICモジュール、23…ICチップ、24…通信部、25…CPU、26…ROM、27…RAM、28…不揮発性メモリ、31…電源部、32…ロジック部、28a…登録アプリケーションテーブル、28b…後続アプリケーションテーブル、271…カレントDFポインタ、272…ネクストDFポインタ。

【特許請求の範囲】
【請求項1】
外部機器から送信されたコマンドに応じて処理を実行するICカードであって、
複数のアプリケーションを記憶する第1の記憶手段と、
前記外部機器から送信されたコマンドを受信する受信手段と、
前記受信手段により受信した前記コマンドに基づいて前記第1の記憶手段により記憶されている前記アプリケーションを実行し、処理を行う処理手段と、
前記コマンドが前記アプリケーションの最終コマンドであるか否か判定する判定手段と、
前記判定手段により最終コマンドであると判定された場合、予め設定されたアプリケーションの実行順序に基づいて次に実行するアプリケーションを特定し、特定した前記アプリケーションを実行するように前記処理手段を制御する制御手段と、
を具備するICカード。
【請求項2】
前記判定手段は、前記コマンドが有するコマンド種別が予め設定されたコマンド種別である場合、前記コマンドが最終コマンドであると判定する、請求項1に記載のICカード。
【請求項3】
前記判定手段は、前記コマンドが最終コマンドあることを示す情報を有する場合、前記コマンドが最終コマンドであると判定する、請求項1に記載のICカード。
【請求項4】
前記複数のアプリケーションの実行順序を示す情報を記憶する第2の記憶手段をさらに具備し、
前記制御手段は、前記判定手段により最終コマンドであると判定された場合、前記第2の記憶手段により記憶されている実行順序を示す情報に基づいて次に実行するアプリケーションを特定し、特定した前記アプリケーションを実行するように前記処理手段を制御する、
請求項1に記載のICカード。
【請求項5】
前記各手段を備えるICモジュールと、
前記ICモジュールが配設される本体と、
を具備する請求項1に記載のICカード。
【請求項6】
外部機器から送信されたコマンドに応じて処理を実行する携帯可能電子装置であって、
複数のアプリケーションを記憶する記憶手段と、
前記外部機器から送信されたコマンドを受信する受信手段と、
前記受信手段により受信した前記コマンドに基づいて前記記憶手段により記憶されている前記アプリケーションを実行し、処理を行う処理手段と、
前記コマンドが前記アプリケーションの最終コマンドであるか否か判定する判定手段と、
前記判定手段により最終コマンドであると判定された場合、予め設定されたアプリケーションの実行順序に基づいて次に実行するアプリケーションを特定し、特定した前記アプリケーションを実行するように前記処理手段を制御する制御手段と、
を具備する携帯可能電子装置。
【請求項7】
複数のアプリケーションを記憶する記憶手段を具備し、外部機器から送信されたコマンドに応じて処理を実行するICカードの制御方法であって、
前記外部機器から送信されたコマンドを受信し、
受信した前記コマンドに基づいて前記記憶手段により記憶されている前記アプリケーションを実行し、処理を行い、
前記コマンドが前記アプリケーションの最終コマンドであるか否か判定し、
前記コマンドが最終コマンドであると判定された場合、予め設定されたアプリケーションの実行順序に基づいて次に実行するアプリケーションを特定し、特定した前記アプリケーションを実行するように制御する、
ICカードの制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2013−69108(P2013−69108A)
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2011−207099(P2011−207099)
【出願日】平成23年9月22日(2011.9.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FRAM
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】