携帯可能電子装置および携帯可能電子装置におけるデータ処理方法
【課題】データメモリに記憶されているレコード単位のデータの管理を効率化することができる携帯可能電子装置としてのICカードおよび携帯可能電子装置におけるデータ処理方法を提供する。
【解決手段】データメモリにレコード単位のデータを格納するデータファイルを記憶するICカードにおいて、リーダライタからデータメモリに記憶されている指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスを要求されたレコードが共有データであるか否かを判断し、この判断により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータで指定される共有先のデータを当該レコードのデータとしてアクセスする。
【解決手段】データメモリにレコード単位のデータを格納するデータファイルを記憶するICカードにおいて、リーダライタからデータメモリに記憶されている指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスを要求されたレコードが共有データであるか否かを判断し、この判断により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータで指定される共有先のデータを当該レコードのデータとしてアクセスする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、たとえば、書込み或いは書換えが可能な不揮発性メモリ、および、CPUなどを有するIC(集積回路)チップを内蔵し、外部から供給されるコマンドに基づいて各種処理を実行するICカード等の携帯可能電子装置、および、携帯可能電子装置におけるデータ処理方法に関する。
【背景技術】
【0002】
近年、携帯可能な電子装置としてのICカードが広く普及してきている。ICカードは、CPU、各種メモリおよび通信インターフェースなどを有するICチップが内蔵されている。ICカードは、データ記録部として磁気ストライブのみを有する磁気カードと比較すると、大量のデータを処理できる。このため、1つのICカードが、複数の用途(たとえば、キャッシュカード、IDカード、プリペイドカード、ポイントカード)で利用される運用形態が実現できる。このようなICカードにおいて、各種の用途で使用する各種データは、各用途に対応するアプリケーションとして保持される。言い換えれば、ICカードは、複数のアプリケーションを保持することにより複数の用途で使用可能となる。
【0003】
上記のような各アプリケーションのデータは、ファイル形式でICカード内のデータメモリに記憶される(たとえば、特許文献1)。このため、ICカードのデータメモリ内には、複数のアプリケーションに対応する種々のファイルが記憶される。データメモリ内の各ファイルは、アプリケーションの識別情報などにより特定される。すなわち、外部装置は、ICカードに対して、アプリケーションの識別情報を指定することにより、特定のファイルへのアクセスを要求する。
【0004】
上記のような各アプリケーションの仕様はそれぞれ異なる。ただし、各アプリケーションで同じデータが必要となることも多い。このような異なる複数のアプリケーションで同じデータをそれぞれ記憶することは、データ管理の効率化(データ領域の節約、データの更新処理などの効率化、あるいは、各アプリケーション間の特定データにおける整合性の保証など)の観点からすると、好ましくない状態であると考えられる。
【特許文献1】特開平3−224047号公報
【特許文献2】特開平11−282989号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
この発明の一形態は、メモリに記憶するデータの管理を効率化することができる携帯可能電子装置および携帯可能電子装置におけるデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
この発明の一形態としての携帯可能電子装置は、レコード単位のデータを格納するデータファイルを記憶する記憶手段と、外部装置とのデータ通信を行うための通信手段と、前記通信手段により指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスが要求されたレコードが共有データであるか否かを判断する判断手段と、この判断手段により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータとしての共有先を示す情報に基づいて当該レコードの共有先のデータにアクセスする処理手段とを有する。
【0007】
この発明の一形態としての携帯可能電子装置におけるデータ処理方法は、データを記憶する記憶手段と外部装置とのデータ通信を行う通信手段とデータ処理を行う制御手段とを有する携帯可能電子装置における方法であって、レコード単位のデータを格納するデータファイルを記憶手段に記憶し、前記制御手段は、前記通信手段により指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスが要求されたレコードが共有データであるか否かを判断し、この判断により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータとしての共有先を示す情報に基づいて当該レコードの共有先のデータにアクセスする。
【発明の効果】
【0008】
この発明の一形態によれば、メモリに記憶するデータの管理を効率化することができる携帯可能電子装置および携帯可能電子装置におけるデータ処理方法を提供できる。
【発明を実施するための最良の形態】
【0009】
以下、この発明の実施の形態について図面を参照して説明する。
図1は、本発明の実施の形態に係るICカード(携帯可能電子装置)1を含むICカードシステムの構成例を概略的に示すものである。
図1に示すように、本ICカードシステムは、情報センタ2、通信網3、PC4、リーダライタ5などにより構成されている。上記情報センタ2は、通信網3を介してPC4に接続されている。上記情報センタ2は、本ICカードシステムに利用されるデータを総括的に管理するサーバ装置である。本ICカードシステムにおいて、上記情報センタ2は、各PC4に対する上位装置として機能する。また、上記通信網3は、たとえば、公衆電話網あるいは公衆無線通信網などの通信網である。
【0010】
上記PC4は、パーソナルコンピュータなどの電子計算機である。上記PC4は、リーダライタ5に接続される。上記PC4は、上記リーダライタ5によりICカード1へコマンドを送信する機能、ICカード1から受信したデータを基に種々の処理を行う機能などを有している。
上記PC4は、図1に示すように、演算部11、ハードディスクドライブ(HDD)12、キーボード13、および、ディスプレイ14などを有している。
【0011】
上記演算部11は、CPU15、および、メモリ16などを有している。上記CPU15は、演算処理などのデータ処理を行うユニットである。上記CPU15は、プログラムに従ってデータ処理を行う。上記メモリ16は、作業用のデータを一時的に格納するワーキングメモリ、CPU15が実行するプログラムあるいは制御データなどが記憶されているプログラムメモリなどを有している。このような構成により、上記演算部11では、CPU15が上記メモリ16に記憶されているプログラムを実行することにより、種々の処理を実現している。
【0012】
上記ハードディスクドライブ(HDD)12は、書換え可能な大容量の不揮発性メモリである。上記HDD12は、補助記憶装置として機能する。たとえば、上記HDD12には、機密情報としての電子データファイル1,2,3,・・・が格納される。これらのHDD12に格納される電子データファイルのデータは、上記演算部11による制御に従ってリーダライタ5を介してICカード1へ送信できるようになっている。上記キーボード13は、当該PC4の操作員が操作する操作部として機能する。上記キーボード13は、操作員が種々の操作指示あるいはデータなどを入力するためのものである。上記ディスプレイ14は、上記PC4の制御により種々の情報を表示する表示装置である。
【0013】
上記リーダライタ5は、上記ICカード1との通信を行うためのインターフェース装置である。上記リーダライタ5は、図示しない内部メモリおよび通信制御部などを有する外部装置である。また、上記リーダライタ5は、上記ICカード1の通信方式に応じたインターフェースにより構成される。たとえば、上記ICカード1が接触型のICカードである場合、上記リーダライタ5は、ICカード1のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。また、上記ICカード1が非接触型のICカードである場合、上記リーダライタ5は、ICカード1との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記リーダライタ5では、上記ICカード1に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってリーダライタ5は、上記PC4による制御に基づいて上記ICカード1の活性化(起動)、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【0014】
次に、上記ICカード1のハードウエア構成例について説明する。
上記ICカード1は、上記リーダライタ5を介してPC4などの上位装置から電力供給を受けた際、活性化される(動作可能な状態になる)ようになっている。例えば、上記ICカード1が接触型の通信機能を具備している場合、つまり、ICカード1が接触型のICカードで構成される場合、上記ICカード1は、通信インターフェースとしてのコンタクト部を介してリーダライタ5からの動作電源及び動作クロックの供給を受けて活性化される。
【0015】
また、上記ICカード1が非接触型の通信機能を具備している場合、つまり、上記ICカード1が非接触式のICカードで構成される場合、上記ICカード1は、通信インターフェースとしてのアンテナ及び変復調回路などを介してリーダライタ5からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化するようになっている。
【0016】
図2は、本実施の形態に係るICカード1のハードウエア構成例を概略的に示すブロック図である。
上記ICカード1は、本体Bを構成する筐体内にモジュールMが内蔵されている。上記モジュールMは、1つまたは複数のICチップCと通信用の外部インターフェース(通信部)とが接続された状態で一体的に形成され、ICカード1の本体B内に埋設されている。また、上記ICカード1のモジュールMは、図2に示すように、CPU(制御素子)21、データメモリ22、ワーキングメモリ23、プログラムメモリ24、および、通信部25などを有してしている。また、図2に示す構成例では、本体Bには、磁気ストライプ20が設けられている。
【0017】
上記制御素子21は、当該ICカード1全体の制御を司るものである。上記CPU21は、上記プログラムメモリ24あるいは上記データメモリ22に記憶されている制御プログラムおよび制御データに基づいて動作することにより、種々の機能を実現する。たとえば、上記CPU21は、オペレーティングシステムのプログラムを実行することにより、当該ICカード1の基本的な動作制御を行う。また、上記CPU21は、当該ICカード1の利用目的に応じたアプリケーションプログラムを実行することにより、当該ICカード1の運用形態に応じた種々の動作制御を行う。
【0018】
上記データメモリ22は、例えば、EEPROM(Electrically Erasable Programmable Read-Only Memory)あるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記データメモリ22には、当該ICカード1の運用用途に応じた制御プログラムあるいは種々のデータが書込まれる。上記データメモリ22には、当該ICカード1の規格に応じた種々のファイルが定義され、それらのファイルに種々のデータが書き込まれる。上記データメモリ22に格納されるファイルの例については、後述する。
【0019】
上記ワーキングメモリ23は、RAMなどの揮発性のメモリである。また、上記ワーキングメモリ23は、CPU21が処理中のデータなどを一時保管するバッファとしても機能する。たとえば、上記ワーキングメモリ23には、カレント状態となっているファイルあるいはアプリケーションを示す情報なども格納される。
上記プログラムメモリ24は、予め制御用のプログラムや制御データなどが記憶されているマスクROMなどの不揮発性のメモリである。上記プログラムメモリ24には、当該ICカードの製造段階で制御プログラムあるいは制御データなどが記憶された状態でICカード1内に組み込まれる。上記プログラムメモリ24に記憶されている制御プログラムあるいは制御データは、当該ICカードの基本的な動作を司るものであり、予め当該ICカード1の仕様に応じて組み込まれるものである。
【0020】
上記通信部25は、上記リーダライタ5を介して上記PC4と通信するためのインターフェースである。当該ICカード1が接触型のICカードとして実現される場合、上記通信部25は、上記リーダライタ5と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ICカード1が非接触型のICカードとして実現される場合、上記通信部25は、上記リーダライタ5との無線通信を行うための変復調回路などの通信制御部および電波を送受信するためのアンテナなどにより構成される。
【0021】
次に、上記データメモリ22に格納されるファイルについて説明する。
図3は、上記データメモリ22に格納されるファイルの構成例を示す図である。
図3では、複数のアプリケーションに関する情報が記憶される複数のファイルの構成例を示している。図3に示すようなファイル構成は、ISO/IEC7816−4で定義されている事項に基づくものである。図3に示すファイル構成では、ISO/IEC7816−4に定義される種々のファイルをツリー構造で管理する。
【0022】
図3に示すように、上記データメモリ22には、MF(Master File)、DF(Dedicated File)およびEF(Elementary File)などからなる階層構造を有する複数のファイルが定義される。図3に示す例では、最上階層のマスターファイル(MF)31の次の階層には、第1EF(キーEF)32、第1DF(DF1)33、第2DF(DF2)34および第3DF(DF3)35が存在している。上記第1DF(DF1)33の配下として、DF1の次の階層には、DF1の第1EF(EF1−1)36、および、DF1の第2EF(EF1−2)37が存在している。上記第2DF(DF2)34の配下として、DF2の次の階層には、DF2の第1EF(EF2−1)38、および、DF2の第2EF(EF2−2)39が存在している。
【0023】
上記MF31は、上記データメモリ22に格納されている各種ファイルに対するファイル構成において、最上位に位置する。上記各DF(DF1、DF2、DF3)は、それぞれアプリケーションに対応して設けられる。上記各DFは、各アプリケーションに相当するフォルダとして機能する。このため、上記データメモリ22には、少なくともアプリケーション数に相当する数のDFが定義される。上記各EFは、実データを格納するデータファイルである。すなわち、DFの配下の各EFは、DFが対応するアプリケーションで使用されるデータを格納する。また、EFは、図3に示すように、MF31直下の階層に設けることも可能である。図3に示す上記キーEF32は、アクセス権を確立するためのキー(鍵情報)などを格納するデータファイルである。
【0024】
また、DFに相当するアプリケーションの例としては、X社向けのアプリケーション、A社向けのアプリケーション、および、B社向けのアプリケーションを想定する。例えば、図3に示すファイル構成において、X社向けのアプリケーション、A社向けのアプリケーション、および、B社向けのアプリケーションとして、それぞれDF1、DF2、DF3が設けられるものする。この場合、DF1の配下には、X社向けのアプリケーションで使用されるデータがEF1−1およびEF1−2に格納される。また、DF2の配下には、A社向けのアプリケーションで使用されるデータがEF2−1およびEF2−2に格納される。
【0025】
次に、上記データメモリ22におけるデータ管理情報について説明する。
図4は、図3に示すようなファイル構成例に対するデータメモリ22におけるメモリマップの例を示す図である。図4に示すように、上記データメモリ22には、制御領域22a、ディレクトリ領域22b、エリア群領域22c、および、空き領域22dが設けられている。上記制御領域22aには、データメモリ22内に格納されているデータを管理するための制御情報が格納される。上記ディレクトリ領域22bには、各ファイル(DFおよびEF)の定義情報が格納される。上記エリア群領域22cは、各EFの定義情報により定義されるデータエリア(つまり、各EFのデータエリア)が設けられる。上記空き領域22dは、未使用の記憶領域である。上記空き領域22dは、ファイルの追加などに応じて適宜、ディレクトリ領域22bあるいはエリア群領域22cとして使用される領域である。
【0026】
図4に示す例において、上記ディレクトリ領域22bには、キーEF、DF1、DF2、DF3、EF1−1、EF1−2、EF2−1、EF2−2に対する定義情報41〜47が格納される。エリア群領域22cには、上記ディレクトリ領域22b内の定義情報で定義される各EFのデータエリアが設けられている。さらに、上記エリア群領域22cは、属するDF毎にグループ化されている。
【0027】
次に、DFの定義情報について説明する。
図5は、DFの定義情報におけるフォーマットの構成例を示す図である。
図5に示すように、上記各DFの定義情報(DF定義情報)42、45、48は、ファイル識別子部101、DF名部102、アクセス条件部103、アクセスカウンタ部104、DF優先順位部105、DF固有番号部106、DF固有情報部107、及びチェックバイト部108から構成されている。
【0028】
上記ファイル識別子部101は、DFのファイル種別を識別するための識別情報(DFファイル識別子)を格納する。DFファイル識別子は、たとえば、DFとしてのファイルの種類毎に付与される情報である。上記DF名部102は、DFに付与されているDF名を格納する。DF名は、たとえば、利用者が各DFを識別するための識別情報などとして利用される。上記アクセス条件部103は、照合条件を示す情報を格納する。照合条件は、対応するDFへアクセスする際に必須な条件である。上記アクセスカウンタ部104は、DFへのアクセス回数を示す情報を格納する。アクセス回数は、対応するDFへのアクセスが行われるごとにカウントアップされる。
【0029】
上記DF優先順位部105は、全DFにおいて、対応するDFの優先順位を示す情報を格納する。優先順位は、各DFに予め設定される。上記DF固有番号部106は、DF毎に与えられるDF固有番号を格納する。上記DF固有番号は、当該DFを作成する際に当該ICカード1内で生成される各DFに固有な番号情報である。たとえば、上記DF固有番号は、全DFにおける当該ファイルの作成順で付与される作成番号を用いることが可能である。上記DF固有情報部107は、DF毎に固有な情報を格納している。上記チェックバイト部108は、ファイルチェックバイトを格納する。ファイルチェックバイトは、データの正当性をチェックするための情報である。
【0030】
次に、EFの定義情報について説明する。
各EFは、格納するデータの構造に応じた種々のファイル形式がある。たとえば、上記各EFに格納されるデータ構造には、バイナリ型(Transparent structure)、レコード型(Record structure)、データオブジェクト型(TLV(Tag Length Value) structure)などがある。本実施の形態では、主として、EFがレコード型のデータを格納するレコードEFであることを想定するものとする。レコードEFには、レコード単位で種々のデータが格納される。ここでは、EFの定義情報の例としてレコードEFの定義情報の構成例について説明するものとする。
【0031】
図6は、EFの定義情報におけるフォーマットの構成例を示す図である。
図6に示すように、上記各EFの定義情報(EF定義情報)41、43、44、46、47は、ファイル識別子部201、DF固有番号部202、EF−ID部203、レコードサイズ部204、レコード数部205、データエリア先頭アドレス部206、セキュリティ条件部207、共有の許可情報部208、共有時のセキュリティ条件情報部209、および、チェックバイト部210により構成されている。
【0032】
上記ファイル識別子部201は、当該EFのファイル種別を識別するためのEF識別情報(EFファイル識別子)を格納する。EFファイル識別子は、各EFとしてのファイルの種類毎にユニークな情報である。DF固有番号部202は、当該EFが属しているDFを識別するためのDF固有番号を格納している。上記DF固有番号は、上記DF定義情報におけるDF固有番号部106に格納されるDF固有番号と対応するものである。上記EF−ID部203は、当該EFを識別するために付与される識別情報としてのEF−IDを格納している。EF−IDは、各EFに固有な識別情報である。上記レコードサイズ部204は、当該EFにおけるレコードサイズを示すレコードサイズ情報を格納している。レコード数部205は、当該EFにおけるレコード数を示すレコード数情報を格納している。データエリア先頭アドレス部206は、上記データメモリ22上における当該EFとしてのデータエリアの先頭アドレスを格納している。
【0033】
上記セキュリティ条件部207は、当該EFにアクセスするために必須な条件(照合条件)を格納している。上記共有の許可情報部208は、共有の許可あるいは不許可を示す情報を格納している。上記共有時のセキュリティ条件情報部209は、当該EFが共有化される場合に当該EFにアクセスするために必須な条件(照合条件)を格納している。上記チェックバイト部210は、EFにおけるデータ全ての正当性をチェックするためのファイルチェックバイトを格納している。
【0034】
次に、上記のようなEF定義情報により定義されるEFのデータエリアにおけるレコード構造について説明する。
図7は、上記のようなEF定義情報により定義される1つのEFのデータエリアにおけるデータの構成例を示す図である。
たとえば、EF1−1、EF1−2、EF2−1、EF2−2のデータエリア51、52、54、55は、図7に示すようなフォーマットの構成を有している。図7に示すように、各EFのデータエリアには、レコード単位のデータフォーマットが定義される。これにより、各EFのデータエリアには、レコード単位のデータ(レコード)を複数格納できるようになっている。各レコードは、図7に示すように、状態識別子301、データ長302、データ303、および、ファイルチェックバイト304から構成される。各レコードでは、これらのデータが順に書込まれる。たとえば、状態識別子301およびデータ長302は、所定のサイズで書込まれる。さらに、データ303は、データ長302で示される長さのデータである。
【0035】
上記状態識別子301は、当該レコードの状態を識別するための情報である。即ち、当該レコードが作成された直後(初期状態)、上記状態識別子301は、「未書き込み」を示す情報となる。また、当該レコードにデータが書き込まれた場合、上記状態識別子301は「書き込み済」を示す情報となる。また、当該レコードが共有設定された場合、上記状態識別子301は、「共有」を示す情報となる。
【0036】
上記データ長302は、データ303の長さを示す情報である。たとえば、上記データ長302は、上記状態識別子301が「未書き込み」を示す情報である場合(データ303が存在しない場合)、ゼロ(0)を示す情報となる。上記データ長302は、上記状態識別子301が「書き込み済」の場合、データ303の長さを示す情報となる。上記データ長302は、上記状態識別子301が「共有」の場合、データ303には共有先(リンク先)を示す情報が格納されるため、上記共有先を示す情報の長さを示す情報となる。
上記データ303は、上記状態識別子301が「書き込み済」の場合、当該レコードにおける実データそのものとなる。また、上記データ303は、上記状態識別子301が「共有」を示す情報である場合、共有先を示す情報となる。共有先を示す情報は、後で詳細に説明するが、たとえば、共有先のレコードの先頭アドレスを示す情報、あるいは、共有先のレコードを特定するための共有先情報などである。
【0037】
図8は、3つのレコード(R1、R2、R3)からなるデータエリアの構成例を示す図である。
図8に示す各レコード(R1、R2、R3)において、上記状態識別子301は「書き込み済」を示す情報であり、上記データ長302はその後に続くデータ303の長さを示す情報である。また、レコードR1では、データ303として、口座情報識別子、口座情報長および口座情報値からなる口座情報と、磁気ストライプデータ識別子、磁気ストライプデータ長および磁気ストライプデータ値からなる磁気ストライプ情報とが格納されている。レコードR2では、データ303として、保有者氏名識別子、保有者氏名値長および保有者氏名とからなる保有者氏名情報が格納されている。レコードR3では、データ303として、有効期限識別子、有効期限長および有効期限からなる有効期限情報が格納されている。
【0038】
次に、共有データの設定について説明する。
上記ICカード1は、上記リーダライタ5からのコマンドに応じて種々の処理を実行するものである。共有データの設定についても、上記ICカード1は、上記リーダライタ5から命令(コマンド)に応じて共有データの設定処理を行う。
図9は、共有データの設定を要求するコマンド(共有データ設定コマンド)の構成例を示す図である。
図9に示すように、共有データ設定コマンド400は、コマンドヘッダ部401、Lc部406およびデータ部407により構成されている。さらに、コマンドヘッダ部401は、CLA部402、INS部403、P1部404およびP2部405により構成されている。上記コマンドヘッダ部401は、当該コマンドが共有データ設定コマンドであることを示す情報により構成される。CLA部402およびINS部403には当該コマンドの種類が共有データ設定コマンドであることを示す情報が格納され、P1部およびP2部には当該コマンドを実行する際のパラメータが格納される。上記Lc部は、データ部407の長さを示す情報が格納される。
【0039】
上記データ部407には、共有データを作成するためのデータが格納される。図10は、共有データ設定コマンド400におけるデータ部407の例を示す図である。図10に示す例では、「設定するEFのEF−ID」、「共有するEFが所属するDF名」、「共有するEFのEF−ID」、および、「共有するEFのレコード番号」がデータ部407に格納されている。これらの各情報は、共有化される2つのレコードを特定するための情報である。図10に示す例では、あるDF(たとえばカレントDF)に属するEF内のレコードを既存の別のDFに属するEF内のレコードに共有化(リンク)させるために必要な情報を示している。
【0040】
図10に示す例において、「設定するEF」は、共有を設定するレコードを格納するEFである。つまり、「設定するEFのEF−ID」は、共有を設定するレコードを格納するEFのEF−IDである。「共有するEF」は、共有先のレコード(つまり共有を設定するレコードが参照すべきレコード)を格納するEFである。つまり、「共有するEFが所属するDF名」は、共有先のレコードを格納するEFが所属するDFのDF名である。「共有するEFのEF−ID」は、共有先のレコードを格納するEFのEF−IDである。「共有するEFのレコード番号」は、共有先のレコード番号であり、「共有するEFのEF−ID」で指定されるEF内におけるレコード番号を示している。
【0041】
上記ICカード1のCPU21は、図9に示すような共有データ設定コマンド400を受信した場合、コマンドヘッダ部401により当該コマンドが共有データ設定コマンドであることを判別する。上記コマンドヘッダ部401により受信したコマンドが共有データ設定コマンドであることと判別した場合、ICカード1のCPU21は、図10に示すような共有データ設定コマンドにおけるデータ部407の情報に基づいて共有データを作成する処理(共有データの設定処理)を実行する。この共有データの設定処理が完了すると、上記CPU21は、その処理結果を上記共有データ設定コマンド400に対するレスポンスとしてリーダライタ5へ送信する。
【0042】
図11は、上記コマンドに対するレスポンスデータ600の構成例を示す図である。図11に示す例では、レスポンスデータ600は、第1ステータスコード部601と第2ステータスコード部602とにより構成される。たとえば、上記共有データ設定コマンド400に対しては、第1ステータスコード部601と第2ステータスコード部602とに共有データの設定処理の結果を示す情報が格納される。これにより、上記共有データ設定コマンド400の送信元のリーダライタ5では、上記レスポンスデータ600により当該ICカード1内において共有データの設定ができたか否かを確認できる。
【0043】
また、図12は、共有データの設定処理により生成された1つのEFのデータエリアの構成例を示す図である。
たとえば、図7に示すEFのデータエリアに対してレコードR2を別のレコードと共通化する共有データの設定処理を実行すると、図12に示すようなEFのデータエリアが設定される。図12に示す例では、レコードR2の状態識別子301が共有を示す情報となっており、かつ、データ303としては共有先を示す情報として共有先のエリアの先頭アドレス情報が格納されている。これにより、図12に示すEFのデータエリアにおいてレコードR2にアクセスする場合、上記CPU21は、状態識別子301によりレコードR2が共通データであることを判別する。上記レコードR2が共有データであると判別すると、上記CPU21は、上記レコードR2のデータ303で示されるアドレス情報を参照することにより、レコードR2のデータとして共有先のデータへアクセスする。
【0044】
次に、上記ICカード1における種々の処理について説明する。
上記ICカード1は、上記のようなデータファイル(EF)内の各レコードへのアクセスを要求する種々のコマンドに応じて種々の処理を実行する。このような種々のコマンドは、外部装置(リーダライタ)5からICカード1へ与えられる。たとえば、上記ICカード1は、外部装置(リーダライタ)5から与えられる共有データ設定コマンドに応じて、特定のレコードを共有化するための共有データの設定処理を実行する。また、上記ICカード1は、外部装置(リーダライタ)5から与えられる共有設定されているレコードを指定した読出しコマンドに応じて、共有先のレコードのデータを読出す処理を行う。また、上記ICカード1は、外部装置(リーダライタ)5から与えられる共有設定されているレコードを指定したデータの書換えコマンドに応じて、共有先のレコードのデータを上記コマンドで指定されたデータに書き換える処理を行う。
【0045】
以下、上記ICカード1における共有データの設定処理、読出し処理、および、書込み処理について詳細に説明する。
まず、上記共有データの設定処理について詳細に説明する。
図13および図14は、共有データ設定コマンドを受信した場合の処理(共有データの設定処理)の流れを説明するためのフローチャートである。
まず、外部装置としてのリーダライタ5は、ICカード1に対して、特定のEFにおける特定のレコードを別のレコードと共有化させる共有データ設定コマンド400を供給したものとする。すると、上記ICカード1では、上記通信部25により共有データ設定コマンド400を受信する。受信したコマンドは、上記通信部25から上記CPU21に供給される。上記CPU21は、当該コマンド400のコマンドヘッダ部401におけるCLA部402及びINS部403により当該コマンドが共有データ設定コマンドであることを判別する。
【0046】
受信したコマンドが共有データ設定コマンド400であると判断した場合、上記CPU21は、当該共有データ設定コマンド400のデータ部407で指定されている「共有するEFが所属するDF」を検出する処理を行う(ステップS100〜S104)。なお、「共有するEFが所属するDF」は、共有データ設定コマンド400におけるデータ部407に格納される情報である。「共有するEFが所属するDF」は、共有するレコードを格納しているデータファイルとしてのEFが所属しているDFである。ここでは、「共有するEFが所属するDF」は、当該DFのDF名で指定されているものとする。
【0047】
すなわち、上記CPU21は、図4に示すようなファイル定義情報領域22bから各定義情報を順に読み込む(ステップS100)。読み込んだ定義情報がDFの定義情報でない場合(ステップS101、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS102)。この判断により次の定義情報が存在すると判断した場合(ステップS102、YES)、上記CPU21は、上記ステップS100へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS102、NO)、上記CPU21は、上記共有データの設定処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS103)、当該処理を終了する。
【0048】
また、読み込んだ定義情報がDFの定義情報である場合(ステップS101、YES)、上記CPU21は、当該定義情報で定義されているDFが上記共有データ設定コマンド400のデータ部407で指定されている「共有するEFが所属するDF」であるか否かを判断する(ステップS104)。ここでは、「共有するEFが所属するDF」はDF名で指定されるものとしている。このため、上記CPU21は、読み込んだDF定義情報におけるDF名と、当該コマンド400で指定された「共有するEFが所属するDF」のDF名とが一致するか否かを判断する。
【0049】
上記判断により読み込んだDF定義情報のDFが「共有するEFが所属するDF」のDFでないと判断した場合(ステップS104、NO)、上記CPU21は、上記ステップS102へ戻り、次の定義情報の検出を行う。
また、上記判断により読み込んだDF定義情報のDFが「共有するEFが所属するDF」のDFであると判断した場合(ステップS104、YES)、上記CPU21は、当該DFのDF固有番号をワーキングメモリ23に記憶する処理を行う(ステップS105)。すなわち、上記CPU21は、読み込んだDF定義情報におけるDF固有番号を抽出する。DF固有番号を抽出すると、上記CPU21は、「共有するEFが所属するDF」を示す識別情報として当該DF固有番号をワーキングメモリ23に保存する。
【0050】
「共有するEFが所属するDF」のDF固有番号をワーキングメモリ23に記憶すると、上記CPU21は、図4に示すようなファイル定義情報領域22bにおいて次の定義情報が存在するか否か判断する(ステップS106)。次の定義情報が存在しないと判断した場合(ステップS106、NO)、上記CPU21は、上記共有データの設定処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS103)、当該処理を終了する。また、次の定義情報が存在すると判断した場合(ステップS106、YES)、上記CPU21は、次の定義情報を読み込む(ステップS107)。上記ステップS107で次の定義情報を読み込むと、上記CPU21は、読み込んだ定義情報がEFの定義情報であるか否かを判断する(ステップS108)。
【0051】
読み込んだ定義情報がEFの定義情報であると判断した場合(ステップS108、YES)、上記CPU21は、当該EF定義情報で定義されている所属先のDFを示すDF固有番号が上記ステップS105でワーキングメモリ23に記憶したDF固有番号と一致するか否かを判断する(ステップS109)。上記判断により読み込んだEF定義情報におけるDF固有番号がワーキングメモリに記憶したDF固有番号と一致しないと判断した場合(ステップS109、NO)、上記CPU21は、上記ステップS106へ戻り、次の定義情報の検出を行う。
【0052】
なお、図4に示す定義情報の構成例では、各DFに属するEFは従属先のDFのDF定義情報に続いて書込まれている。このような場合、上記ステップS104で特定したDF定義情報から次のDF定義情報までの間に存在するEF定義情報が所望のEFであると考えられる。このような構成では、上記ステップS108でEF定義情報でないと判断した場合、あるいは、上記ステップS109でDF固有番号が一致しないと判断した場合、所望のEFが検出できなかったことを意味するため、上記CPU21は、上記ステップS103へ進み、エラー処理を行うようにしても良い。
【0053】
上記判断により読み込んだEF定義情報におけるDF固有番号がワーキングメモリ23に記憶したDF固有番号と一致すると判断した場合(ステップS109、YES)、上記CPU21は、当該EF定義情報におけるEF−IDが上記コマンドで指定されている「共有するEFのEF−ID」と一致するか否かを判断する(ステップS110)。上記判断によりEF−IDが一致しないと判断した場合(ステップS110、NO)、上記CPU21は、上記ステップS106へ戻り、次の定義情報の検出を行う。
【0054】
上記判断により読み込んだEF定義情報におけるEF−IDが上記コマンドで指定されている「共有するEFのEF−ID」と一致すると判断した場合、上記CPU21は、読み込んだEF定義情報に基づいて共有が許可可能であるか否かを判断する(ステップS111)。すなわち、上記CPU21は、読み込んだEF定義情報における共有の許可情報部208が共有を許可するものとなっているか否かにより、共有が許可可能か否かを判断する(ステップS113)。上記判断により共有が許可できないと判断した場合(ステップS111、NO)、上記CPU21は、上記ステップS103へ進み、エラーレスポンスをリーダライタ5に出力して、当該処理を終了する。
【0055】
上記判断により共有が許可されると判断した場合(ステップS111、YES)、上記CPU21は、さらに、読み込んだEF定義情報における共有時のセキュリティ条件情報部209の情報を共有セキュリティ条件としてワーキングメモリ23に記憶する(ステップS113)。これは、後段で設定するEFが当該EFとの共有セキュリティ条件を満たすか否かをチェックするための処理である。上記ワーキングメモリ23に共有セキュリティ条件を記憶すると、上記CPU21は、共有するレコードの先頭アドレスを特定する処理を行う(ステップS114)。たとえば、上記CPU21は、上記共有データ設定コマンド400のデータ部407で指定されている「共有するEFのレコード番号」により共有するレコードの先頭アドレスを計算し、計算したアドレス情報をワーキングメモリ23に記憶する。
【0056】
ここで、共有するレコードの先頭アドレスは、当該EFのデータエリアの先頭アドレスと各レコードのデータ長とに基づいて計算される。EFのデータエリアは、図6に示すようなEF定義情報のデータエリア先頭アドレスで特定できる。このため、EFのデータエリア内における各レコードの先頭アドレスは、データエリアの先頭アドレスに直前の各レコード全体の長さ(データサイズ)を加算することにより算出される。なお、1つのレコード全体の長さは、状態識別子301、データ長302、データ部303およびファイルチェックバイト304の各長さを合計したものである。ただし、状態識別子301、データ長302およびファイルチェックバイト304の長さはそれぞれ所定の長さであり、データ部303の長さは、データ長302で示される長さである。
【0057】
以上の処理(ステップS100〜S114)が共有するレコード(共有先のレコード)を特定するための処理である。従って、上記ステップ114までの処理が正常に完了すると、上記CPU21は、共有先のレコードにリンクさせるレコード(共有設定するレコード)を作成する処理を行う(ステップS115〜S124)。
【0058】
すなわち、上記ワーキングメモリ23に共有するレコードの先頭アドレスを記憶すると、上記CPU21は、再度、図4に示すようなファイル定義情報領域22bから共有設定するレコードを格納するEFを特定する処理を行う(ステップS115〜S120)。たとえば、上記CPU21は、上記ファイル定義情報領域22bから各定義情報を順に読み込む(ステップS115)。読み込んだ定義情報がEF定義情報でない場合(ステップS116、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS117)。この判断により次の定義情報が存在すると判断した場合(ステップS117、YES)、上記CPU21は、上記ステップS115へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS117、NO)、上記CPU21は、設定するEFが検出できないために、共有データの設定処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS118)、当該処理を終了する。
【0059】
また、読み込んだ定義情報がEF定義情報である場合(ステップS116、YES)、上記CPU21は、当該EF定義情報で定義されているEFが共有設定するレコードを格納するEFであるか否かを判断する(ステップS119)。たとえば、上記CPU21は、当該EF定義情報で定義されているEFのEF−IDが上記共有データ設定コマンド400のデータ部407で指定されている「設定するEFのEF−ID」と一致するか否かを判断する。上記判断により当該EF定義情報で定義されているEFが共有設定するレコードを格納するEFでないと判断した場合(ステップS119、NO)、上記CPU21は、上記ステップS106へ戻り、次の定義情報の検出を行う。
【0060】
上記判断により当該EF定義情報で定義されているEFが共有設定するレコードを格納するEFであると判断した場合(ステップS119、YES)、上記CPU21は、当該EFが属するDFが現在作業中のDFであるか否かを判断する(ステップS120)。たとえば、現在作業中のDFを示す情報は、カレントDFのDF固有番号としてワーキングメモリ23に保持されているものとする。つまり、上記CPU21は、当該EF定義情報におけるDF固有番号がワーキングメモリ23に記憶されているカレントDFのDF固有番号と一致するか否かを判断する。上記判断により当該EFが属するDFが現在作業中のDFでないと判断した場合(ステップS120、NO)、上記CPU21は、上記ステップS106へ戻り、次の定義情報の検出を行う。
【0061】
また、上記判断により当該EFが属するDFが現在作業中のDFであると判断した場合(ステップS120、YES)、上記CPU21は、当該EF定義情報で定義されているEFが上記ワーキングメモリ23に記憶した共有セキュリティ条件を満たすか否かを判断する(ステップS121)。この判断により当該EFが共有セキュリティ条件を満たさないと判断した場合(ステップS121、NO)、上記CPU21は、共有セキュリティ条件との不一致により共有データの設定処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS118)、当該処理を終了する。
【0062】
上記判断により当該EFが共有セキュリティ条件を満たすと判断した場合(ステップS121、YES)、上記CPU21は、当該EF定義情報で示される当該EFのデータエリアに上記共有先レコードにリンクさせるレコード(共有設定するレコード)を設定する処理を行う(ステップS122−S123)。共有設定するレコードは、図12に示すレコードR2のように、状態識別子301が「共有」となり、データ303がリンク先の「先頭アドレス」となる。たとえば、共有設定するレコードは、上記共有データ設定コマンド400におけるP1部で指定されるレコード番号により特定される。
【0063】
従って、上記CPU21は、当該EF定義情報で定義されるEFのデータエリアにおいて、当該コマンド400で指定されたレコード番号のレコードにおける状態識別子301に「共有」を示す情報を書き込む(ステップS122)。さらに、上記CPU21は、状態識別子301を「共有」としたレコードのデータ303に共有先(リンク先)のレコードにおける先頭アドレスを書き込む(ステップS123)。ここで、データ303に書き込む先頭アドレス(共有アドレス)は、上記ステップS114でワーキングメモリ23に記憶したアドレス情報である。
【0064】
以上のような一連の処理が正常に完了すると、上記CPU21は、上記共有データ設定コマンド400に対するレスポンスとして正常終了を示すレスポンスデータを作成し、上記リーダライタ5へ送信する(ステップS124)。このような正常終了を示すレスポンスデータを送信した場合、上記CPU21は、共有データの設定処理を終了する。
上記のような共有データの設定処理によれば、図9及び図10に示すような共有データ設定コマンドに応じて、図12のレコードR2に示すように、共有先を先頭アドレスで設定したレコードを設定できる。
【0065】
次に、上記のようなレコードの読出し処理について詳細に説明する。
図15は、ICカード1が読出しコマンドを受信した場合の処理(読出し処理)の流れを説明するためのフローチャートである。
まず、外部装置としてのリーダライタ5が、ICカード1に対して、指定のレコードの読出しを要求する読出しコマンドを供給したものとする。すると、上記ICカード1は、上記リーダライタ5からの読出しコマンドに応じたデータの読出し処理を実行するようになっている。
【0066】
図16は、読出しコマンド700の例である。図16に示すように、読出しコマンド700は、コマンドヘッダ部701とLe部706とにより構成される。コマンドヘッダ部701は、CLA部702、INS部703、P1部704およびP2部705により構成される。CLA部702およびINS部703は、当該コマンドが読出しコマンドであることを示す情報が格納される。P1部704およびP2部705は、当該読出しコマンドのパラメータを示す情報である。ここでは、P1部704には、読出し対象となるレコードを格納しているデータファイルとしてのEFを示すEF−IDが格納されるものとする。また、P2部705には、読出し対象となるレコードを示すレコード番号が格納されるものとする。
【0067】
上記通信部25により読出しコマンド700を受信すると、上記CPU21は、当該コマンド700のコマンドヘッダ部701におけるCLA部702及びINS部703により当該コマンドが読出しコマンドであることを判断する。受信したコマンドが読出しコマンド700であると判断した場合、上記CPU21は、当該読出しコマンド700のP1部704で指定されている読出し対象のEFを検出する処理を行う(ステップS200〜S204)。
【0068】
すなわち、上記CPU21は、図4に示すようなファイル定義情報領域22bから各定義情報を順に読み込む(ステップS200)。読み込んだ定義情報がEF定義情報でない場合(ステップS201、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS202)。この判断により次の定義情報が存在すると判断した場合(ステップS202、YES)、上記CPU21は、上記ステップS200へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS202、NO)、上記CPU21は、上記読出しコマンドに対する読出し処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS203)、当該処理を終了する。
【0069】
また、読み込んだ定義情報がEF定義情報である場合(ステップS201、YES)、上記CPU21は、当該EF定義情報で定義されているEFが上記読出しコマンド700のP2部705で指定されているEFであるか否かを判断する(ステップS204)。ここでは、P2部705には指定するEFを示すEF−IDが格納されているものとする。このため、上記CPU21は、読み込んだEF定義情報におけるEF−IDと、当該コマンド700のP2部705で指定されたEF−IDとが一致するか否かを判断する。
【0070】
上記判断により読み込んだEF定義情報のEFが読出しコマンド700で指定されたEFでないと判断した場合(ステップS204、NO)、上記CPU21は、上記ステップS202へ戻り、次の定義情報の検出を行う。
また、上記判断により読み込んだEF定義情報のEFが読出しコマンド700で指定されたEFであると判断した場合(ステップS204、YES)、上記CPU21は、当該EF定義情報のEFが属するDFが現在作業中のDFであるか否かを判断する(ステップS205)。たとえば、現在作業中のDFを示す情報は、カレントDFのDF固有番号としてワーキングメモリ23に保持されているものとする。この場合、上記CPU21は、当該EF定義情報におけるDF固有番号がワーキングメモリ23に記憶されているカレントDFのDF固有番号と一致するか否かを判断する。上記判断により当該EFが属するDFが現在作業中のDFでないと判断した場合、つまり、当該EFが現在作業中のDFに属するものではないと判断した場合(ステップS205、NO)、上記CPU21は、上記ステップS202へ戻り、次の定義情報の検出を行う。
【0071】
上記判断により当該EF定義情報のEFが現在作業中のDFに属すると判断した場合(ステップS205、YES)、上記CPU21は、現在のセキュリティ状態が読み込んだEF定義情報のセキュリティ条件を満たすか否かを判断する(ステップS206)。この判断によりセキュリティ条件を満たさないと判断した場合(ステップS206、NO)、上記CPU21は、上記読出しコマンドに対する読出し処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS203)、当該処理を終了する。
【0072】
また、上記判断によりセキュリティ条件を満たすを判断した場合(ステップS206、YES)、上記CPU21は、当該コマンド700のP1部704に格納されているレコード番号で指定されるレコードに対して状態に応じて読出し処理を実行する(ステップS208〜S214)。各レコードは、上述したように、状態識別子301で示される3通りの状態を有する。すなわち、各レコードの状態識別子301は、「未書込み」、「書込み済」、あるいは、「共有」の何れかである。
【0073】
当該コマンド700で指定されたレコードの状態識別子が「未書込み」である場合(ステップS208、YES(「未書込み」))、上記CPU21は、上記読出すべきデータが存在しないため、エラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS203)、当該処理を終了する。
【0074】
また、当該コマンド700で指定されたレコードの状態識別子が「書込み済」である場合(ステップS209、「書込み済」)、上記CPU21は、当該コマンド700で指定されたレコードのデータ303を読出す(ステップS210)。この場合、上記CPU21は、読み出したデータをセットした正常終了を示すレスポンスデータを生成する(ステップS211)。正常終了を示すレスポンスデータを生成すると、上記CPU21は、生成した正常終了を示すレスポンスデータをリーダライタ5へ送信し(ステップS212)、当該処理を終了する。
【0075】
また、当該コマンド700で指定されたレコードの状態識別子が「共有」である場合(ステップS209、「共有」)、上記CPU21は、当該コマンド700で指定されたレコードのデータ303としてのアドレス情報を読出す(ステップS213)。このアドレス情報は、上述したように、当該レコードの共有データとして共有先(リンク先)の先頭アドレスを示す情報である。従って、上記CPU21は、当該レコードのデータとして読み出したアドレスを先頭アドレスとする共有データを読み出す(ステップS214)。このような共有データを読出すと、上記CPU21は、共有先から読み出した共有データを読出しデータとしてセットした正常終了を示すレスポンスデータを生成する(ステップS215)。
【0076】
これにより、正常終了を示すレスポンスデータを生成すると、上記CPU21は、生成した正常終了を示すレスポンスデータをリーダライタ5へ送信し(ステップS212)、当該処理を終了する。
上記のようなデータの読出し処理によれば、共有設定されているレコードが読出し対象である読出しコマンドに対しては、当該レコードのデータに書込まれている共有先の先頭アドレスに基づいて、特定される共有先のレコードのデータを読み出すことができる。
【0077】
次に、上記のようなレコードにおけるデータの書換え処理について詳細に説明する。
図17は、ICカード1が書き換えコマンドを受信した場合の処理(書き換え処理)の流れを説明するためのフローチャートである。
まず、外部装置としてのリーダライタ5が、ICカード1に対して、指定のレコードのデータの書換えを要求する書き換えコマンドを供給したものとする。すると、上記ICカード1は、上記リーダライタ5からの書き換えコマンドに応じたデータの書き換え処理を実行するようになっている。
【0078】
図18は、書き換えコマンド800の例である。図18に示すように、書き換えコマンド800は、コマンドヘッダ部801とLe部806とデータ部807とにより構成される。コマンドヘッダ部801は、CLA部802、INS部803、P1部804およびP2部805により構成される。CLA部802およびINS部803は、当該コマンドが書換えコマンドであることを示す情報が格納される。P1部804およびP2部805は、当該書き換えコマンドのパラメータを示す情報である。ここでは、P1部804には、書き換え対象となるレコードを格納しているデータファイルとしてのEFを示すEF−IDが格納されるものとする。また、P2部805には、書き換え対象となるレコードを示すレコード番号が格納されるものとする。
【0079】
上記通信部25により書き換えコマンド800を受信すると、上記CPU21は、当該コマンド800のコマンドヘッダ部801におけるCLA部802及びINS部803により当該コマンドが書き換えコマンドであることを判断する。受信したコマンドが書き換えコマンド800であると判断した場合、上記CPU21は、当該書き換えコマンド800のP1部804で指定されている書き換え対象のEFを検出する処理を行う(ステップS300〜S304)。
【0080】
すなわち、上記CPU21は、図4に示すようなファイル定義情報領域22bから各定義情報を順に読み込む(ステップS300)。読み込んだ定義情報がEF定義情報でない場合(ステップS301、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS302)。この判断により次の定義情報が存在すると判断した場合(ステップS302、YES)、上記CPU21は、上記ステップS300へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS302、NO)、上記CPU21は、上記書き換えコマンドに対する書換え処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS303)、当該処理を終了する。
【0081】
また、読み込んだ定義情報がEF定義情報である場合(ステップS301、YES)、上記CPU21は、当該EF定義情報で定義されているEFが上記書換えコマンド800のP2部805で指定されているEFであるか否かを判断する(ステップS304)。ここでは、P2部805には指定するEFを示すEF−IDが格納されているものとする。このため、上記CPU21は、読み込んだEF定義情報におけるEF−IDと、当該コマンド800のP2部805で指定されたEF−IDとが一致するか否かを判断する。
【0082】
上記判断により読み込んだEF定義情報のEFが書き換えコマンド800で指定されたEFでないと判断した場合(ステップS304、NO)、上記CPU21は、上記ステップS302へ戻り、次の定義情報の検出を行う。
また、上記判断により読み込んだEF定義情報のEFが書換えコマンド800で指定されたEFであると判断した場合(ステップS304、YES)、上記CPU21は、当該EF定義情報のEFが属するDFが現在作業中のDFであるか否かを判断する(ステップS305)。たとえば、現在作業中のDFを示す情報は、カレントDFのDF固有番号としてワーキングメモリ23に保持されているものとする。この場合、上記CPU21は、当該EF定義情報におけるDF固有番号がワーキングメモリ23に記憶されているカレントDFのDF固有番号と一致するか否かを判断する。上記判断により当該EFが属するDFが現在作業中のDFでないと判断した場合、つまり、当該EFが現在作業中のDFに属するものではないと判断した場合(ステップS305、NO)、上記CPU21は、上記ステップS302へ戻り、次の定義情報の検出を行う。
【0083】
上記判断により当該EF定義情報のEFが現在作業中のDFに属すると判断した場合(ステップS305、YES)、上記CPU21は、現在のセキュリティ状態が読み込んだEF定義情報のセキュリティ条件を満たすか否かを判断する(ステップS306)。この判断によりセキュリティ条件を満たさないと判断した場合(ステップS306、NO)、上記CPU21は、上記書換えコマンドに対する書換え処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS303)、当該処理を終了する。
【0084】
また、上記判断によりセキュリティ条件を満たすを判断した場合(ステップS306、YES)、上記CPU21は、当該コマンド800のP1部804に格納されているレコード番号で指定されるレコードに対して状態に応じて読出し処理を実行する(ステップS308〜S314)。各レコードは、上述したように、状態識別子301で示される3通りの状態を有する。すなわち、各レコードの状態識別子301は、「未書込み」、「書込み済」、あるいは、「共有」の何れかである。
【0085】
当該コマンド800で指定されたレコードの状態識別子が「未書込み」である場合(ステップS308、YES(未書込み))、上記CPU21は、上記読出すべきデータが存在しないため、エラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS303)、当該処理を終了する。
また、当該コマンド800で指定されたレコードの状態識別子が「書込み済」である場合(ステップS309、「書込み済」)、上記CPU21は、当該コマンド800で指定されたレコードのデータ303を当該コマンド800のデータ部807に格納されていたデータに書き換える(ステップS310)。この書換え処理が正常に終了すれば、上記CPU21は、正常終了を示すレスポンスをリーダライタ5へ送信し(ステップS311)、当該処理を終了する。
【0086】
また、当該コマンド700で指定されたレコードの状態識別子が「共有」である場合(ステップS309、「共有」)、上記CPU21は、当該コマンド800で指定されたレコードのデータ303としてのアドレス情報を読出す(ステップS312)。このアドレス情報は、上述したように、当該レコードの共有データとして共有先(リンク先)の先頭アドレスを示す情報である。従って、上記CPU21は、当該レコードのデータとして読み出したアドレスを先頭アドレスとする共有データを、当該コマンド800のデータ部807に格納されていたデータに書き換える(ステップS313)。このような共有先のデータの書換え処理が正常に終了すれば、上記CPU21は、正常終了を示すレスポンスをリーダライタ5へ送信し(ステップS311)、当該処理を終了する。
【0087】
上記のようなデータの書換え処理によれば、共有設定されているレコードが書換え対象である書換えコマンドに対しては、当該レコードのデータに書込まれている共有先の先頭アドレスに基づいて、特定される共有先のレコードのデータを当該コマンドで指定されたデータに書き換えることができる。
【0088】
次に、上述した実施の形態の変形例について説明する。
上記のような共有データの設定は、共有先をアドレスにより特定する手法に限定されるものではなく、共有先を特定できるものであれば良い。たとえば、共有先は、DF名(あるいはDF固有番号)、EF−IDおよびレコード番号により指定することも可能である。共有先をアドレスで指定する手法では、共有先をアドレスで直接的に特定できる。このため、アクセスが高速であることが考えられる。つまり、共有先をアドレスで直接的に指定するため、レコードの状態識別子が「共有」であっても、処理時間が遅くなるということはないと考えられる。
【0089】
これに対して、共有先のレコードをDF名、EF−IDおよびレコード番号により特定する方法では、共有設定時に共有先のアドレスを計算する必要がない。また、共有先のレコードをDF名、EF−IDおよびレコード番号により特定する方法では、共有先のアドレスが変化しても、共有先のレコードを示す情報を再設定する必要がない。つまり、共有先のレコードをDF名、EF−IDおよびレコード番号により特定する方法は、レコードに対する共有設定が簡単に実行でき、運用上の自由度が高いと考えられる。
【0090】
一般的に、データメモリの管理技術としては、データメモリにおけるメモリ領域を最適化する技術である。このようなメモリ管理技術は、使用しなくなったメモリ領域、あるいは、種々のデータ間における隙間のメモリ領域などを連続して利用可能なメモリ領域に再構築する。この結果として、上記のようなメモリ管理技術では、メモリ上における各種のデータの配置が再設定されることが多い。つまり、上記のようなメモリ管理技術では、各データが記憶されるメモリにおけるアドレスが変更されることが多い。従って、メモリ上のアドレスそのものを参照するデータは、メモリ領域におけるデータの再構築(最適化)とともに更新しなければならない。
【0091】
たとえば、ICカード1にも適用されるプログラミング言語としてJava(登録商標)と呼ばれるものがある。Javaでは、メモリ管理の機能として、ガーベジコレクション(garbage collection)と呼ばれる機能を有している。ガーベジコレクションは、プログラムが使用しなくなったメモリ領域、および、プログラム間の隙間のメモリ領域を集めて連続した利用可能なメモリ領域を増やす技術である。Java言語の実行環境(JVM)は、Javaプログラマがメモリ管理に気を使わなくてもいいように、自身がガーベジコレクション機能を持っている。
【0092】
すなわち、上記ガーベジコレクションのようなデータを最適化するメモリ管理機能を有するICカードでは、共有先を直接的にアドレスを指定する方法を適用すれば、データの最適化を実施する度に、共有先のアドレスを再計算する必要が生じる。この結果として、データの最適化処理自体、あるいは、データの最適化に伴うアドレスデータの再設定処理に時間がかかる。これに対して、共有先をDF名、EF−IDおよびレコード番号で指定する方法を適用したICカードでは、データの最適化あるいはデータの最適化に伴うデータの再設定などに要する時間を短くできる。
【0093】
以下、共有先を「DF名」と「EF−ID」と「レコード番号」とで指定する方法について説明する。
図19は、共有先を「DF名」と「EF−ID」と「レコード番号」とで指定する場合のレコードの構成例を示している。ここでは、共有先を示す「DF名」と「EF−ID」と「レコード番号」とからなる情報を共有先情報と称するものとする。
図19に示すような状態識別子が「共有」のレコード以外のデータは、たとえば、図1〜図11に示すような構成のままで変更しなくても良い。状態識別子が「共有」のレコードは、図19に示すレコードR2のように、データ303として、共有先情報(「DF名」、「EF−ID」及び「レコード番号」)が書込まれ、データ長302はデータ303としての共有先情報の長さを示す情報が書込まれる。
【0094】
次に、共有先を共有先情報で指定する場合の各種処理について説明する。
まず、共有先を共有先情報で指定する場合の共有データの設定処理について説明する。
上記共有データの設定処理では、共有先が共有先情報で指定される場合、図13および図14に示す各処理のうちステップS114の処理が省略され、かつ、ステップS123の処理が状態識別子を「共有」としたレコードのデータに共有先情報を書き込むという処理に変更される。
【0095】
なお、共有先情報は、図10に示すような共有データ設定コマンド400のデータ部407における「共有するEFが所属するDF名」502、「共有するEFのEF−ID」503および「共有するレコード番号」504である。これは、共有データの設定処理において、受信したコマンドのデータ部407における「DF名」、「EF−ID」および「レコード番号」をレコードのデータとして書き込むことを意味する。つまり、共有先を共有先情報で指定する場合、共有データの設定処理では、アドレス計算などが不要となり、コマンドのデータ部の一部をレコードのデータに書き込めば良い。これは、共有データの設定処理が簡単であることを意味している。
【0096】
次に、共有先を共有先情報で指定する場合の読出し処理および書換え処理について説明する。
共有先を共有先情報で指定する場合、上記読出し処理あるいは上記書換え処理では、状態識別子が「共有」のレコードのデータとしての共有先情報に基づいて共有先のレコードを特定する処理が必要となる。
図20は、処理対象のレコードの状態識別子が「共有」であった場合に、共有先のレコードを特定する処理の流れを説明するためのフローチャートである。すなわち、図20に示す処理は、たとえば、図15に示す読出し処理におけるステップS213、あるいは、図17に示す書換え処理におけるステップS312の代りに実行される処理である。なお、図20に示す各処理(ステップS400〜S410)は、図13に示すステップS100〜S110の各処理と類似している。ただし、図20に示す各処理(ステップS400〜S411)は、共有先情報に基づいて共有先のレコードを特定する点が図13に示すステップS100〜S110の各処理と異なっている。
【0097】
すなわち、処理対象のレコードの状態識別子が「共有」であった場合、上記CPU21は、当該レコードのデータとしての共有先情報で示される「共有するEFが所属するDF」を検出する処理を行う(ステップS400〜S404)。なお、「共有するEFが所属するDF」は、DF名で指定されているものとする。この場合、上記CPU21は、図4に示すようなファイル定義情報領域22bから各定義情報を順に読み込む(ステップS400)。
【0098】
読み込んだ定義情報がDF定義情報でない場合(ステップS401、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS402)。この判断により次の定義情報が存在すると判断した場合(ステップS402、YES)、上記CPU21は、上記ステップS400へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS402、NO)、上記CPU21は、上記処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS403)、当該処理を終了する。
【0099】
また、読み込んだ定義情報がDF定義情報である場合(ステップS401、YES)、上記CPU21は、当該DF定義情報で定義されているDF名が上記共有先情報で指定されている「共有するEFが所属するDF名」と一致するか否かを判断する(ステップS404)。上記判断により読み込んだDF定義情報のDF名が共有先情報のDF名と一致しないと判断した場合(ステップS404、NO)、上記CPU21は、上記ステップS402へ戻り、次の定義情報の検出を行う。
【0100】
また、上記判断により読み込んだDF定義情報のDF名が共有先情報のDF名と一致すると判断した場合(ステップS404、YES)、上記CPU21は、当該DF定義情報のDF固有番号をワーキングメモリ23に記憶する(ステップS405)。ワーキングメモリ23にDF固有番号を記憶すると、上記CPU21は、図4に示すようなファイル定義情報領域22bにおいて次の定義情報が存在するか否か判断する(ステップS406)。次の定義情報が存在しないと判断した場合(ステップS406、NO)、上記CPU21は、処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS403)、当該処理を終了する。
【0101】
また、次の定義情報が存在すると判断した場合(ステップS406、YES)、上記CPU21は、次の定義情報を読み込む(ステップS407)。上記ステップS407で次の定義情報を読み込むと、上記CPU21は、読み込んだ定義情報がEF定義情報であるか否かを判断する(ステップS408)。読み込んだ定義情報がEF定義情報であると判断した場合(ステップS408、YES)、上記CPU21は、当該EF定義情報で定義されている所属先のDFを示すDF固有番号が上記ステップS405でワーキングメモリ23に記憶したDF固有番号と一致するか否かを判断する(ステップS409)。上記判断により読み込んだEF定義情報におけるDF固有番号がワーキングメモリ23に記憶したDF固有番号と一致しないと判断した場合(ステップS409、NO)、上記CPU21は、上記ステップS406へ戻り、次の定義情報の検出を行う。
【0102】
上記判断により読み込んだEF定義情報におけるDF固有番号がワーキングメモリ23に記憶したDF固有番号と一致すると判断した場合(ステップS409、YES)、上記CPU21は、当該EF定義情報におけるEF−IDが上記共有先情報における「共有するEFのEF−ID」と一致するか否かを判断する(ステップS410)。上記判断によりEF−IDが一致しないと判断した場合(ステップS410、NO)、上記CPU21は、上記ステップS406へ戻り、次の定義情報の検出を行う。
【0103】
上記判断により読み込んだEF定義情報におけるEF−IDが上記共有先情報におけるEF−IDと一致すると判断した場合(ステップS410、YES)、上記CPU21は、共有先のレコードの先頭アドレスを特定する処理を行う(ステップS411)。たとえば、上記CPU21は、上記共有先情報で指定されている「共有するレコード番号」により共有するレコードの先頭アドレスを計算する。
【0104】
ここで、共有先のレコードの先頭アドレスは、EFのデータエリアの先頭アドレスと各レコードのデータ長とに基づいて計算される。EFのデータエリアは、図6に示すようなEF定義情報のデータエリア先頭アドレスで特定できる。このため、EFのデータエリア内における各レコードの先頭アドレスは、データエリアの先頭アドレスに直前の各レコード全体の長さ(データサイズ)を加算することにより算出される。なお、1つのレコード全体の長さは、状態識別子301、データ長302、データ部303およびファイルチェックバイト304の各長さを合計したものである。ただし、状態識別子301、データ長302およびファイルチェックバイト304の長さはそれぞれ所定の長さであり、データ部303の長さは、データ長302で示される長さである。
【0105】
以上のような処理により、上記共有先情報で指定されている共有先のレコードの先頭アドレスが特定され、データの読出しあるいはデータの書換えが可能となる。上記のように、共有先情報を用いても、レコードの共有設定を行うことが可能である。共有先のアドレスが変更される可能性がある場合、上記のような共有先情報によりレコードの共有設定を行うことで、効率的なメモリ管理が実現できる。
【図面の簡単な説明】
【0106】
【図1】図1は、本発明の実施の形態に係るICカード(携帯可能電子装置)を含むICカードシステムの構成例を概略的に示すものである。
【図2】図2は、ICカードのハードウエア構成例を概略的に示すブロック図である。
【図3】図3は、データメモリに格納されるファイルの構成例を示す図である。
【図4】図4は、図3に示すようなファイル構成例に対するデータメモリにおけるメモリマップの例を示す図である。
【図5】図5は、DF定義情報におけるフォーマットの例を示す図である。
【図6】図6は、EF定義情報におけるフォーマットの例を示す図である。
【図7】図7は、EF定義情報により定義される1つのEFのデータエリアにおける構成例を示す図である。
【図8】図8は、3つのレコードからなるデータエリアの構成例を示す図である。
【図9】図9は、共有データの設定を要求するコマンド(共有データ設定コマンド)の構成例を示す図である。
【図10】図10は、共有データ設定コマンドにおけるデータ部の例を示す図である。
【図11】図11は、共有データ設定コマンドに対するレスポンスデータの構成例を示す図である。
【図12】図12は、共有データの設定処理により生成された1つのEFのデータエリアの構成例を示す図である。
【図13】図13は、共有データ設定コマンドを受信した場合の処理(共有データの設定処理)の流れを説明するためのフローチャートである。
【図14】図14は、共有データ設定コマンドを受信した場合の処理(共有データの設定処理)の流れを説明するためのフローチャートである。
【図15】図15は、ICカードが読出しコマンドを受信した場合の処理(読出し処理)の流れを説明するためのフローチャートである。
【図16】図16は、読出しコマンドの例である。
【図17】図17は、ICカードが書き換えコマンドを受信した場合の処理(書き換え処理)の流れを説明するためのフローチャートである。
【図18】図18は、書き換えコマンドの例である。
【図19】図19は、共有先を「DF名」と「EF−ID」と「レコード番号」とからなる共有先情報で指定する場合のレコードの構成例を示している。
【図20】図20は、処理対象のレコードの状態識別子が「共有」であった場合に、共有先のレコードを特定する処理の流れを説明するためのフローチャートである。
【符号の説明】
【0107】
1…ICカード、5…リーダライタ(外部装置)、B…本体、M…モジュール、C…ICチップ、21…CPU(制御素子)、22…データメモリ、23…ワーキングメモリ、24…プログラムメモリ、25…通信部、22a…制御領域、22b…ディレクトリ領域(ファイル定義情報領域)、22c…エリア群領域、22d…空き領域、101…ファイル識別子部、102…DF名部、103…アクセス条件部、104…アクセスカウンタ部、105…DF優先順位部、106…DF固有番号部、107…DF固有情報部、108…チェックバイト部、201…ファイル識別子部、202…DF固有番号部、203…EF−ID部、204…レコードサイズ部、205…レコード数部、206…データエリア先頭アドレス部、207…セキュリティ条件部、208…許可情報部、209…共有時のセキュリティ条件情報部、210…チェックバイト部、R1、R2、R3…レコード、301…状態識別子、302…データ長、303…データ、400…共有データ設定コマンド、401…コマンドヘッダ部、407…データ部、700…読出しコマンド、701…コマンドヘッダ部、800…書換えコマンド、801…コマンドヘッダ部、807…データ部。
【技術分野】
【0001】
本発明は、たとえば、書込み或いは書換えが可能な不揮発性メモリ、および、CPUなどを有するIC(集積回路)チップを内蔵し、外部から供給されるコマンドに基づいて各種処理を実行するICカード等の携帯可能電子装置、および、携帯可能電子装置におけるデータ処理方法に関する。
【背景技術】
【0002】
近年、携帯可能な電子装置としてのICカードが広く普及してきている。ICカードは、CPU、各種メモリおよび通信インターフェースなどを有するICチップが内蔵されている。ICカードは、データ記録部として磁気ストライブのみを有する磁気カードと比較すると、大量のデータを処理できる。このため、1つのICカードが、複数の用途(たとえば、キャッシュカード、IDカード、プリペイドカード、ポイントカード)で利用される運用形態が実現できる。このようなICカードにおいて、各種の用途で使用する各種データは、各用途に対応するアプリケーションとして保持される。言い換えれば、ICカードは、複数のアプリケーションを保持することにより複数の用途で使用可能となる。
【0003】
上記のような各アプリケーションのデータは、ファイル形式でICカード内のデータメモリに記憶される(たとえば、特許文献1)。このため、ICカードのデータメモリ内には、複数のアプリケーションに対応する種々のファイルが記憶される。データメモリ内の各ファイルは、アプリケーションの識別情報などにより特定される。すなわち、外部装置は、ICカードに対して、アプリケーションの識別情報を指定することにより、特定のファイルへのアクセスを要求する。
【0004】
上記のような各アプリケーションの仕様はそれぞれ異なる。ただし、各アプリケーションで同じデータが必要となることも多い。このような異なる複数のアプリケーションで同じデータをそれぞれ記憶することは、データ管理の効率化(データ領域の節約、データの更新処理などの効率化、あるいは、各アプリケーション間の特定データにおける整合性の保証など)の観点からすると、好ましくない状態であると考えられる。
【特許文献1】特開平3−224047号公報
【特許文献2】特開平11−282989号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
この発明の一形態は、メモリに記憶するデータの管理を効率化することができる携帯可能電子装置および携帯可能電子装置におけるデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
この発明の一形態としての携帯可能電子装置は、レコード単位のデータを格納するデータファイルを記憶する記憶手段と、外部装置とのデータ通信を行うための通信手段と、前記通信手段により指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスが要求されたレコードが共有データであるか否かを判断する判断手段と、この判断手段により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータとしての共有先を示す情報に基づいて当該レコードの共有先のデータにアクセスする処理手段とを有する。
【0007】
この発明の一形態としての携帯可能電子装置におけるデータ処理方法は、データを記憶する記憶手段と外部装置とのデータ通信を行う通信手段とデータ処理を行う制御手段とを有する携帯可能電子装置における方法であって、レコード単位のデータを格納するデータファイルを記憶手段に記憶し、前記制御手段は、前記通信手段により指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスが要求されたレコードが共有データであるか否かを判断し、この判断により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータとしての共有先を示す情報に基づいて当該レコードの共有先のデータにアクセスする。
【発明の効果】
【0008】
この発明の一形態によれば、メモリに記憶するデータの管理を効率化することができる携帯可能電子装置および携帯可能電子装置におけるデータ処理方法を提供できる。
【発明を実施するための最良の形態】
【0009】
以下、この発明の実施の形態について図面を参照して説明する。
図1は、本発明の実施の形態に係るICカード(携帯可能電子装置)1を含むICカードシステムの構成例を概略的に示すものである。
図1に示すように、本ICカードシステムは、情報センタ2、通信網3、PC4、リーダライタ5などにより構成されている。上記情報センタ2は、通信網3を介してPC4に接続されている。上記情報センタ2は、本ICカードシステムに利用されるデータを総括的に管理するサーバ装置である。本ICカードシステムにおいて、上記情報センタ2は、各PC4に対する上位装置として機能する。また、上記通信網3は、たとえば、公衆電話網あるいは公衆無線通信網などの通信網である。
【0010】
上記PC4は、パーソナルコンピュータなどの電子計算機である。上記PC4は、リーダライタ5に接続される。上記PC4は、上記リーダライタ5によりICカード1へコマンドを送信する機能、ICカード1から受信したデータを基に種々の処理を行う機能などを有している。
上記PC4は、図1に示すように、演算部11、ハードディスクドライブ(HDD)12、キーボード13、および、ディスプレイ14などを有している。
【0011】
上記演算部11は、CPU15、および、メモリ16などを有している。上記CPU15は、演算処理などのデータ処理を行うユニットである。上記CPU15は、プログラムに従ってデータ処理を行う。上記メモリ16は、作業用のデータを一時的に格納するワーキングメモリ、CPU15が実行するプログラムあるいは制御データなどが記憶されているプログラムメモリなどを有している。このような構成により、上記演算部11では、CPU15が上記メモリ16に記憶されているプログラムを実行することにより、種々の処理を実現している。
【0012】
上記ハードディスクドライブ(HDD)12は、書換え可能な大容量の不揮発性メモリである。上記HDD12は、補助記憶装置として機能する。たとえば、上記HDD12には、機密情報としての電子データファイル1,2,3,・・・が格納される。これらのHDD12に格納される電子データファイルのデータは、上記演算部11による制御に従ってリーダライタ5を介してICカード1へ送信できるようになっている。上記キーボード13は、当該PC4の操作員が操作する操作部として機能する。上記キーボード13は、操作員が種々の操作指示あるいはデータなどを入力するためのものである。上記ディスプレイ14は、上記PC4の制御により種々の情報を表示する表示装置である。
【0013】
上記リーダライタ5は、上記ICカード1との通信を行うためのインターフェース装置である。上記リーダライタ5は、図示しない内部メモリおよび通信制御部などを有する外部装置である。また、上記リーダライタ5は、上記ICカード1の通信方式に応じたインターフェースにより構成される。たとえば、上記ICカード1が接触型のICカードである場合、上記リーダライタ5は、ICカード1のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。また、上記ICカード1が非接触型のICカードである場合、上記リーダライタ5は、ICカード1との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記リーダライタ5では、上記ICカード1に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってリーダライタ5は、上記PC4による制御に基づいて上記ICカード1の活性化(起動)、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【0014】
次に、上記ICカード1のハードウエア構成例について説明する。
上記ICカード1は、上記リーダライタ5を介してPC4などの上位装置から電力供給を受けた際、活性化される(動作可能な状態になる)ようになっている。例えば、上記ICカード1が接触型の通信機能を具備している場合、つまり、ICカード1が接触型のICカードで構成される場合、上記ICカード1は、通信インターフェースとしてのコンタクト部を介してリーダライタ5からの動作電源及び動作クロックの供給を受けて活性化される。
【0015】
また、上記ICカード1が非接触型の通信機能を具備している場合、つまり、上記ICカード1が非接触式のICカードで構成される場合、上記ICカード1は、通信インターフェースとしてのアンテナ及び変復調回路などを介してリーダライタ5からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化するようになっている。
【0016】
図2は、本実施の形態に係るICカード1のハードウエア構成例を概略的に示すブロック図である。
上記ICカード1は、本体Bを構成する筐体内にモジュールMが内蔵されている。上記モジュールMは、1つまたは複数のICチップCと通信用の外部インターフェース(通信部)とが接続された状態で一体的に形成され、ICカード1の本体B内に埋設されている。また、上記ICカード1のモジュールMは、図2に示すように、CPU(制御素子)21、データメモリ22、ワーキングメモリ23、プログラムメモリ24、および、通信部25などを有してしている。また、図2に示す構成例では、本体Bには、磁気ストライプ20が設けられている。
【0017】
上記制御素子21は、当該ICカード1全体の制御を司るものである。上記CPU21は、上記プログラムメモリ24あるいは上記データメモリ22に記憶されている制御プログラムおよび制御データに基づいて動作することにより、種々の機能を実現する。たとえば、上記CPU21は、オペレーティングシステムのプログラムを実行することにより、当該ICカード1の基本的な動作制御を行う。また、上記CPU21は、当該ICカード1の利用目的に応じたアプリケーションプログラムを実行することにより、当該ICカード1の運用形態に応じた種々の動作制御を行う。
【0018】
上記データメモリ22は、例えば、EEPROM(Electrically Erasable Programmable Read-Only Memory)あるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記データメモリ22には、当該ICカード1の運用用途に応じた制御プログラムあるいは種々のデータが書込まれる。上記データメモリ22には、当該ICカード1の規格に応じた種々のファイルが定義され、それらのファイルに種々のデータが書き込まれる。上記データメモリ22に格納されるファイルの例については、後述する。
【0019】
上記ワーキングメモリ23は、RAMなどの揮発性のメモリである。また、上記ワーキングメモリ23は、CPU21が処理中のデータなどを一時保管するバッファとしても機能する。たとえば、上記ワーキングメモリ23には、カレント状態となっているファイルあるいはアプリケーションを示す情報なども格納される。
上記プログラムメモリ24は、予め制御用のプログラムや制御データなどが記憶されているマスクROMなどの不揮発性のメモリである。上記プログラムメモリ24には、当該ICカードの製造段階で制御プログラムあるいは制御データなどが記憶された状態でICカード1内に組み込まれる。上記プログラムメモリ24に記憶されている制御プログラムあるいは制御データは、当該ICカードの基本的な動作を司るものであり、予め当該ICカード1の仕様に応じて組み込まれるものである。
【0020】
上記通信部25は、上記リーダライタ5を介して上記PC4と通信するためのインターフェースである。当該ICカード1が接触型のICカードとして実現される場合、上記通信部25は、上記リーダライタ5と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ICカード1が非接触型のICカードとして実現される場合、上記通信部25は、上記リーダライタ5との無線通信を行うための変復調回路などの通信制御部および電波を送受信するためのアンテナなどにより構成される。
【0021】
次に、上記データメモリ22に格納されるファイルについて説明する。
図3は、上記データメモリ22に格納されるファイルの構成例を示す図である。
図3では、複数のアプリケーションに関する情報が記憶される複数のファイルの構成例を示している。図3に示すようなファイル構成は、ISO/IEC7816−4で定義されている事項に基づくものである。図3に示すファイル構成では、ISO/IEC7816−4に定義される種々のファイルをツリー構造で管理する。
【0022】
図3に示すように、上記データメモリ22には、MF(Master File)、DF(Dedicated File)およびEF(Elementary File)などからなる階層構造を有する複数のファイルが定義される。図3に示す例では、最上階層のマスターファイル(MF)31の次の階層には、第1EF(キーEF)32、第1DF(DF1)33、第2DF(DF2)34および第3DF(DF3)35が存在している。上記第1DF(DF1)33の配下として、DF1の次の階層には、DF1の第1EF(EF1−1)36、および、DF1の第2EF(EF1−2)37が存在している。上記第2DF(DF2)34の配下として、DF2の次の階層には、DF2の第1EF(EF2−1)38、および、DF2の第2EF(EF2−2)39が存在している。
【0023】
上記MF31は、上記データメモリ22に格納されている各種ファイルに対するファイル構成において、最上位に位置する。上記各DF(DF1、DF2、DF3)は、それぞれアプリケーションに対応して設けられる。上記各DFは、各アプリケーションに相当するフォルダとして機能する。このため、上記データメモリ22には、少なくともアプリケーション数に相当する数のDFが定義される。上記各EFは、実データを格納するデータファイルである。すなわち、DFの配下の各EFは、DFが対応するアプリケーションで使用されるデータを格納する。また、EFは、図3に示すように、MF31直下の階層に設けることも可能である。図3に示す上記キーEF32は、アクセス権を確立するためのキー(鍵情報)などを格納するデータファイルである。
【0024】
また、DFに相当するアプリケーションの例としては、X社向けのアプリケーション、A社向けのアプリケーション、および、B社向けのアプリケーションを想定する。例えば、図3に示すファイル構成において、X社向けのアプリケーション、A社向けのアプリケーション、および、B社向けのアプリケーションとして、それぞれDF1、DF2、DF3が設けられるものする。この場合、DF1の配下には、X社向けのアプリケーションで使用されるデータがEF1−1およびEF1−2に格納される。また、DF2の配下には、A社向けのアプリケーションで使用されるデータがEF2−1およびEF2−2に格納される。
【0025】
次に、上記データメモリ22におけるデータ管理情報について説明する。
図4は、図3に示すようなファイル構成例に対するデータメモリ22におけるメモリマップの例を示す図である。図4に示すように、上記データメモリ22には、制御領域22a、ディレクトリ領域22b、エリア群領域22c、および、空き領域22dが設けられている。上記制御領域22aには、データメモリ22内に格納されているデータを管理するための制御情報が格納される。上記ディレクトリ領域22bには、各ファイル(DFおよびEF)の定義情報が格納される。上記エリア群領域22cは、各EFの定義情報により定義されるデータエリア(つまり、各EFのデータエリア)が設けられる。上記空き領域22dは、未使用の記憶領域である。上記空き領域22dは、ファイルの追加などに応じて適宜、ディレクトリ領域22bあるいはエリア群領域22cとして使用される領域である。
【0026】
図4に示す例において、上記ディレクトリ領域22bには、キーEF、DF1、DF2、DF3、EF1−1、EF1−2、EF2−1、EF2−2に対する定義情報41〜47が格納される。エリア群領域22cには、上記ディレクトリ領域22b内の定義情報で定義される各EFのデータエリアが設けられている。さらに、上記エリア群領域22cは、属するDF毎にグループ化されている。
【0027】
次に、DFの定義情報について説明する。
図5は、DFの定義情報におけるフォーマットの構成例を示す図である。
図5に示すように、上記各DFの定義情報(DF定義情報)42、45、48は、ファイル識別子部101、DF名部102、アクセス条件部103、アクセスカウンタ部104、DF優先順位部105、DF固有番号部106、DF固有情報部107、及びチェックバイト部108から構成されている。
【0028】
上記ファイル識別子部101は、DFのファイル種別を識別するための識別情報(DFファイル識別子)を格納する。DFファイル識別子は、たとえば、DFとしてのファイルの種類毎に付与される情報である。上記DF名部102は、DFに付与されているDF名を格納する。DF名は、たとえば、利用者が各DFを識別するための識別情報などとして利用される。上記アクセス条件部103は、照合条件を示す情報を格納する。照合条件は、対応するDFへアクセスする際に必須な条件である。上記アクセスカウンタ部104は、DFへのアクセス回数を示す情報を格納する。アクセス回数は、対応するDFへのアクセスが行われるごとにカウントアップされる。
【0029】
上記DF優先順位部105は、全DFにおいて、対応するDFの優先順位を示す情報を格納する。優先順位は、各DFに予め設定される。上記DF固有番号部106は、DF毎に与えられるDF固有番号を格納する。上記DF固有番号は、当該DFを作成する際に当該ICカード1内で生成される各DFに固有な番号情報である。たとえば、上記DF固有番号は、全DFにおける当該ファイルの作成順で付与される作成番号を用いることが可能である。上記DF固有情報部107は、DF毎に固有な情報を格納している。上記チェックバイト部108は、ファイルチェックバイトを格納する。ファイルチェックバイトは、データの正当性をチェックするための情報である。
【0030】
次に、EFの定義情報について説明する。
各EFは、格納するデータの構造に応じた種々のファイル形式がある。たとえば、上記各EFに格納されるデータ構造には、バイナリ型(Transparent structure)、レコード型(Record structure)、データオブジェクト型(TLV(Tag Length Value) structure)などがある。本実施の形態では、主として、EFがレコード型のデータを格納するレコードEFであることを想定するものとする。レコードEFには、レコード単位で種々のデータが格納される。ここでは、EFの定義情報の例としてレコードEFの定義情報の構成例について説明するものとする。
【0031】
図6は、EFの定義情報におけるフォーマットの構成例を示す図である。
図6に示すように、上記各EFの定義情報(EF定義情報)41、43、44、46、47は、ファイル識別子部201、DF固有番号部202、EF−ID部203、レコードサイズ部204、レコード数部205、データエリア先頭アドレス部206、セキュリティ条件部207、共有の許可情報部208、共有時のセキュリティ条件情報部209、および、チェックバイト部210により構成されている。
【0032】
上記ファイル識別子部201は、当該EFのファイル種別を識別するためのEF識別情報(EFファイル識別子)を格納する。EFファイル識別子は、各EFとしてのファイルの種類毎にユニークな情報である。DF固有番号部202は、当該EFが属しているDFを識別するためのDF固有番号を格納している。上記DF固有番号は、上記DF定義情報におけるDF固有番号部106に格納されるDF固有番号と対応するものである。上記EF−ID部203は、当該EFを識別するために付与される識別情報としてのEF−IDを格納している。EF−IDは、各EFに固有な識別情報である。上記レコードサイズ部204は、当該EFにおけるレコードサイズを示すレコードサイズ情報を格納している。レコード数部205は、当該EFにおけるレコード数を示すレコード数情報を格納している。データエリア先頭アドレス部206は、上記データメモリ22上における当該EFとしてのデータエリアの先頭アドレスを格納している。
【0033】
上記セキュリティ条件部207は、当該EFにアクセスするために必須な条件(照合条件)を格納している。上記共有の許可情報部208は、共有の許可あるいは不許可を示す情報を格納している。上記共有時のセキュリティ条件情報部209は、当該EFが共有化される場合に当該EFにアクセスするために必須な条件(照合条件)を格納している。上記チェックバイト部210は、EFにおけるデータ全ての正当性をチェックするためのファイルチェックバイトを格納している。
【0034】
次に、上記のようなEF定義情報により定義されるEFのデータエリアにおけるレコード構造について説明する。
図7は、上記のようなEF定義情報により定義される1つのEFのデータエリアにおけるデータの構成例を示す図である。
たとえば、EF1−1、EF1−2、EF2−1、EF2−2のデータエリア51、52、54、55は、図7に示すようなフォーマットの構成を有している。図7に示すように、各EFのデータエリアには、レコード単位のデータフォーマットが定義される。これにより、各EFのデータエリアには、レコード単位のデータ(レコード)を複数格納できるようになっている。各レコードは、図7に示すように、状態識別子301、データ長302、データ303、および、ファイルチェックバイト304から構成される。各レコードでは、これらのデータが順に書込まれる。たとえば、状態識別子301およびデータ長302は、所定のサイズで書込まれる。さらに、データ303は、データ長302で示される長さのデータである。
【0035】
上記状態識別子301は、当該レコードの状態を識別するための情報である。即ち、当該レコードが作成された直後(初期状態)、上記状態識別子301は、「未書き込み」を示す情報となる。また、当該レコードにデータが書き込まれた場合、上記状態識別子301は「書き込み済」を示す情報となる。また、当該レコードが共有設定された場合、上記状態識別子301は、「共有」を示す情報となる。
【0036】
上記データ長302は、データ303の長さを示す情報である。たとえば、上記データ長302は、上記状態識別子301が「未書き込み」を示す情報である場合(データ303が存在しない場合)、ゼロ(0)を示す情報となる。上記データ長302は、上記状態識別子301が「書き込み済」の場合、データ303の長さを示す情報となる。上記データ長302は、上記状態識別子301が「共有」の場合、データ303には共有先(リンク先)を示す情報が格納されるため、上記共有先を示す情報の長さを示す情報となる。
上記データ303は、上記状態識別子301が「書き込み済」の場合、当該レコードにおける実データそのものとなる。また、上記データ303は、上記状態識別子301が「共有」を示す情報である場合、共有先を示す情報となる。共有先を示す情報は、後で詳細に説明するが、たとえば、共有先のレコードの先頭アドレスを示す情報、あるいは、共有先のレコードを特定するための共有先情報などである。
【0037】
図8は、3つのレコード(R1、R2、R3)からなるデータエリアの構成例を示す図である。
図8に示す各レコード(R1、R2、R3)において、上記状態識別子301は「書き込み済」を示す情報であり、上記データ長302はその後に続くデータ303の長さを示す情報である。また、レコードR1では、データ303として、口座情報識別子、口座情報長および口座情報値からなる口座情報と、磁気ストライプデータ識別子、磁気ストライプデータ長および磁気ストライプデータ値からなる磁気ストライプ情報とが格納されている。レコードR2では、データ303として、保有者氏名識別子、保有者氏名値長および保有者氏名とからなる保有者氏名情報が格納されている。レコードR3では、データ303として、有効期限識別子、有効期限長および有効期限からなる有効期限情報が格納されている。
【0038】
次に、共有データの設定について説明する。
上記ICカード1は、上記リーダライタ5からのコマンドに応じて種々の処理を実行するものである。共有データの設定についても、上記ICカード1は、上記リーダライタ5から命令(コマンド)に応じて共有データの設定処理を行う。
図9は、共有データの設定を要求するコマンド(共有データ設定コマンド)の構成例を示す図である。
図9に示すように、共有データ設定コマンド400は、コマンドヘッダ部401、Lc部406およびデータ部407により構成されている。さらに、コマンドヘッダ部401は、CLA部402、INS部403、P1部404およびP2部405により構成されている。上記コマンドヘッダ部401は、当該コマンドが共有データ設定コマンドであることを示す情報により構成される。CLA部402およびINS部403には当該コマンドの種類が共有データ設定コマンドであることを示す情報が格納され、P1部およびP2部には当該コマンドを実行する際のパラメータが格納される。上記Lc部は、データ部407の長さを示す情報が格納される。
【0039】
上記データ部407には、共有データを作成するためのデータが格納される。図10は、共有データ設定コマンド400におけるデータ部407の例を示す図である。図10に示す例では、「設定するEFのEF−ID」、「共有するEFが所属するDF名」、「共有するEFのEF−ID」、および、「共有するEFのレコード番号」がデータ部407に格納されている。これらの各情報は、共有化される2つのレコードを特定するための情報である。図10に示す例では、あるDF(たとえばカレントDF)に属するEF内のレコードを既存の別のDFに属するEF内のレコードに共有化(リンク)させるために必要な情報を示している。
【0040】
図10に示す例において、「設定するEF」は、共有を設定するレコードを格納するEFである。つまり、「設定するEFのEF−ID」は、共有を設定するレコードを格納するEFのEF−IDである。「共有するEF」は、共有先のレコード(つまり共有を設定するレコードが参照すべきレコード)を格納するEFである。つまり、「共有するEFが所属するDF名」は、共有先のレコードを格納するEFが所属するDFのDF名である。「共有するEFのEF−ID」は、共有先のレコードを格納するEFのEF−IDである。「共有するEFのレコード番号」は、共有先のレコード番号であり、「共有するEFのEF−ID」で指定されるEF内におけるレコード番号を示している。
【0041】
上記ICカード1のCPU21は、図9に示すような共有データ設定コマンド400を受信した場合、コマンドヘッダ部401により当該コマンドが共有データ設定コマンドであることを判別する。上記コマンドヘッダ部401により受信したコマンドが共有データ設定コマンドであることと判別した場合、ICカード1のCPU21は、図10に示すような共有データ設定コマンドにおけるデータ部407の情報に基づいて共有データを作成する処理(共有データの設定処理)を実行する。この共有データの設定処理が完了すると、上記CPU21は、その処理結果を上記共有データ設定コマンド400に対するレスポンスとしてリーダライタ5へ送信する。
【0042】
図11は、上記コマンドに対するレスポンスデータ600の構成例を示す図である。図11に示す例では、レスポンスデータ600は、第1ステータスコード部601と第2ステータスコード部602とにより構成される。たとえば、上記共有データ設定コマンド400に対しては、第1ステータスコード部601と第2ステータスコード部602とに共有データの設定処理の結果を示す情報が格納される。これにより、上記共有データ設定コマンド400の送信元のリーダライタ5では、上記レスポンスデータ600により当該ICカード1内において共有データの設定ができたか否かを確認できる。
【0043】
また、図12は、共有データの設定処理により生成された1つのEFのデータエリアの構成例を示す図である。
たとえば、図7に示すEFのデータエリアに対してレコードR2を別のレコードと共通化する共有データの設定処理を実行すると、図12に示すようなEFのデータエリアが設定される。図12に示す例では、レコードR2の状態識別子301が共有を示す情報となっており、かつ、データ303としては共有先を示す情報として共有先のエリアの先頭アドレス情報が格納されている。これにより、図12に示すEFのデータエリアにおいてレコードR2にアクセスする場合、上記CPU21は、状態識別子301によりレコードR2が共通データであることを判別する。上記レコードR2が共有データであると判別すると、上記CPU21は、上記レコードR2のデータ303で示されるアドレス情報を参照することにより、レコードR2のデータとして共有先のデータへアクセスする。
【0044】
次に、上記ICカード1における種々の処理について説明する。
上記ICカード1は、上記のようなデータファイル(EF)内の各レコードへのアクセスを要求する種々のコマンドに応じて種々の処理を実行する。このような種々のコマンドは、外部装置(リーダライタ)5からICカード1へ与えられる。たとえば、上記ICカード1は、外部装置(リーダライタ)5から与えられる共有データ設定コマンドに応じて、特定のレコードを共有化するための共有データの設定処理を実行する。また、上記ICカード1は、外部装置(リーダライタ)5から与えられる共有設定されているレコードを指定した読出しコマンドに応じて、共有先のレコードのデータを読出す処理を行う。また、上記ICカード1は、外部装置(リーダライタ)5から与えられる共有設定されているレコードを指定したデータの書換えコマンドに応じて、共有先のレコードのデータを上記コマンドで指定されたデータに書き換える処理を行う。
【0045】
以下、上記ICカード1における共有データの設定処理、読出し処理、および、書込み処理について詳細に説明する。
まず、上記共有データの設定処理について詳細に説明する。
図13および図14は、共有データ設定コマンドを受信した場合の処理(共有データの設定処理)の流れを説明するためのフローチャートである。
まず、外部装置としてのリーダライタ5は、ICカード1に対して、特定のEFにおける特定のレコードを別のレコードと共有化させる共有データ設定コマンド400を供給したものとする。すると、上記ICカード1では、上記通信部25により共有データ設定コマンド400を受信する。受信したコマンドは、上記通信部25から上記CPU21に供給される。上記CPU21は、当該コマンド400のコマンドヘッダ部401におけるCLA部402及びINS部403により当該コマンドが共有データ設定コマンドであることを判別する。
【0046】
受信したコマンドが共有データ設定コマンド400であると判断した場合、上記CPU21は、当該共有データ設定コマンド400のデータ部407で指定されている「共有するEFが所属するDF」を検出する処理を行う(ステップS100〜S104)。なお、「共有するEFが所属するDF」は、共有データ設定コマンド400におけるデータ部407に格納される情報である。「共有するEFが所属するDF」は、共有するレコードを格納しているデータファイルとしてのEFが所属しているDFである。ここでは、「共有するEFが所属するDF」は、当該DFのDF名で指定されているものとする。
【0047】
すなわち、上記CPU21は、図4に示すようなファイル定義情報領域22bから各定義情報を順に読み込む(ステップS100)。読み込んだ定義情報がDFの定義情報でない場合(ステップS101、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS102)。この判断により次の定義情報が存在すると判断した場合(ステップS102、YES)、上記CPU21は、上記ステップS100へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS102、NO)、上記CPU21は、上記共有データの設定処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS103)、当該処理を終了する。
【0048】
また、読み込んだ定義情報がDFの定義情報である場合(ステップS101、YES)、上記CPU21は、当該定義情報で定義されているDFが上記共有データ設定コマンド400のデータ部407で指定されている「共有するEFが所属するDF」であるか否かを判断する(ステップS104)。ここでは、「共有するEFが所属するDF」はDF名で指定されるものとしている。このため、上記CPU21は、読み込んだDF定義情報におけるDF名と、当該コマンド400で指定された「共有するEFが所属するDF」のDF名とが一致するか否かを判断する。
【0049】
上記判断により読み込んだDF定義情報のDFが「共有するEFが所属するDF」のDFでないと判断した場合(ステップS104、NO)、上記CPU21は、上記ステップS102へ戻り、次の定義情報の検出を行う。
また、上記判断により読み込んだDF定義情報のDFが「共有するEFが所属するDF」のDFであると判断した場合(ステップS104、YES)、上記CPU21は、当該DFのDF固有番号をワーキングメモリ23に記憶する処理を行う(ステップS105)。すなわち、上記CPU21は、読み込んだDF定義情報におけるDF固有番号を抽出する。DF固有番号を抽出すると、上記CPU21は、「共有するEFが所属するDF」を示す識別情報として当該DF固有番号をワーキングメモリ23に保存する。
【0050】
「共有するEFが所属するDF」のDF固有番号をワーキングメモリ23に記憶すると、上記CPU21は、図4に示すようなファイル定義情報領域22bにおいて次の定義情報が存在するか否か判断する(ステップS106)。次の定義情報が存在しないと判断した場合(ステップS106、NO)、上記CPU21は、上記共有データの設定処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS103)、当該処理を終了する。また、次の定義情報が存在すると判断した場合(ステップS106、YES)、上記CPU21は、次の定義情報を読み込む(ステップS107)。上記ステップS107で次の定義情報を読み込むと、上記CPU21は、読み込んだ定義情報がEFの定義情報であるか否かを判断する(ステップS108)。
【0051】
読み込んだ定義情報がEFの定義情報であると判断した場合(ステップS108、YES)、上記CPU21は、当該EF定義情報で定義されている所属先のDFを示すDF固有番号が上記ステップS105でワーキングメモリ23に記憶したDF固有番号と一致するか否かを判断する(ステップS109)。上記判断により読み込んだEF定義情報におけるDF固有番号がワーキングメモリに記憶したDF固有番号と一致しないと判断した場合(ステップS109、NO)、上記CPU21は、上記ステップS106へ戻り、次の定義情報の検出を行う。
【0052】
なお、図4に示す定義情報の構成例では、各DFに属するEFは従属先のDFのDF定義情報に続いて書込まれている。このような場合、上記ステップS104で特定したDF定義情報から次のDF定義情報までの間に存在するEF定義情報が所望のEFであると考えられる。このような構成では、上記ステップS108でEF定義情報でないと判断した場合、あるいは、上記ステップS109でDF固有番号が一致しないと判断した場合、所望のEFが検出できなかったことを意味するため、上記CPU21は、上記ステップS103へ進み、エラー処理を行うようにしても良い。
【0053】
上記判断により読み込んだEF定義情報におけるDF固有番号がワーキングメモリ23に記憶したDF固有番号と一致すると判断した場合(ステップS109、YES)、上記CPU21は、当該EF定義情報におけるEF−IDが上記コマンドで指定されている「共有するEFのEF−ID」と一致するか否かを判断する(ステップS110)。上記判断によりEF−IDが一致しないと判断した場合(ステップS110、NO)、上記CPU21は、上記ステップS106へ戻り、次の定義情報の検出を行う。
【0054】
上記判断により読み込んだEF定義情報におけるEF−IDが上記コマンドで指定されている「共有するEFのEF−ID」と一致すると判断した場合、上記CPU21は、読み込んだEF定義情報に基づいて共有が許可可能であるか否かを判断する(ステップS111)。すなわち、上記CPU21は、読み込んだEF定義情報における共有の許可情報部208が共有を許可するものとなっているか否かにより、共有が許可可能か否かを判断する(ステップS113)。上記判断により共有が許可できないと判断した場合(ステップS111、NO)、上記CPU21は、上記ステップS103へ進み、エラーレスポンスをリーダライタ5に出力して、当該処理を終了する。
【0055】
上記判断により共有が許可されると判断した場合(ステップS111、YES)、上記CPU21は、さらに、読み込んだEF定義情報における共有時のセキュリティ条件情報部209の情報を共有セキュリティ条件としてワーキングメモリ23に記憶する(ステップS113)。これは、後段で設定するEFが当該EFとの共有セキュリティ条件を満たすか否かをチェックするための処理である。上記ワーキングメモリ23に共有セキュリティ条件を記憶すると、上記CPU21は、共有するレコードの先頭アドレスを特定する処理を行う(ステップS114)。たとえば、上記CPU21は、上記共有データ設定コマンド400のデータ部407で指定されている「共有するEFのレコード番号」により共有するレコードの先頭アドレスを計算し、計算したアドレス情報をワーキングメモリ23に記憶する。
【0056】
ここで、共有するレコードの先頭アドレスは、当該EFのデータエリアの先頭アドレスと各レコードのデータ長とに基づいて計算される。EFのデータエリアは、図6に示すようなEF定義情報のデータエリア先頭アドレスで特定できる。このため、EFのデータエリア内における各レコードの先頭アドレスは、データエリアの先頭アドレスに直前の各レコード全体の長さ(データサイズ)を加算することにより算出される。なお、1つのレコード全体の長さは、状態識別子301、データ長302、データ部303およびファイルチェックバイト304の各長さを合計したものである。ただし、状態識別子301、データ長302およびファイルチェックバイト304の長さはそれぞれ所定の長さであり、データ部303の長さは、データ長302で示される長さである。
【0057】
以上の処理(ステップS100〜S114)が共有するレコード(共有先のレコード)を特定するための処理である。従って、上記ステップ114までの処理が正常に完了すると、上記CPU21は、共有先のレコードにリンクさせるレコード(共有設定するレコード)を作成する処理を行う(ステップS115〜S124)。
【0058】
すなわち、上記ワーキングメモリ23に共有するレコードの先頭アドレスを記憶すると、上記CPU21は、再度、図4に示すようなファイル定義情報領域22bから共有設定するレコードを格納するEFを特定する処理を行う(ステップS115〜S120)。たとえば、上記CPU21は、上記ファイル定義情報領域22bから各定義情報を順に読み込む(ステップS115)。読み込んだ定義情報がEF定義情報でない場合(ステップS116、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS117)。この判断により次の定義情報が存在すると判断した場合(ステップS117、YES)、上記CPU21は、上記ステップS115へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS117、NO)、上記CPU21は、設定するEFが検出できないために、共有データの設定処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS118)、当該処理を終了する。
【0059】
また、読み込んだ定義情報がEF定義情報である場合(ステップS116、YES)、上記CPU21は、当該EF定義情報で定義されているEFが共有設定するレコードを格納するEFであるか否かを判断する(ステップS119)。たとえば、上記CPU21は、当該EF定義情報で定義されているEFのEF−IDが上記共有データ設定コマンド400のデータ部407で指定されている「設定するEFのEF−ID」と一致するか否かを判断する。上記判断により当該EF定義情報で定義されているEFが共有設定するレコードを格納するEFでないと判断した場合(ステップS119、NO)、上記CPU21は、上記ステップS106へ戻り、次の定義情報の検出を行う。
【0060】
上記判断により当該EF定義情報で定義されているEFが共有設定するレコードを格納するEFであると判断した場合(ステップS119、YES)、上記CPU21は、当該EFが属するDFが現在作業中のDFであるか否かを判断する(ステップS120)。たとえば、現在作業中のDFを示す情報は、カレントDFのDF固有番号としてワーキングメモリ23に保持されているものとする。つまり、上記CPU21は、当該EF定義情報におけるDF固有番号がワーキングメモリ23に記憶されているカレントDFのDF固有番号と一致するか否かを判断する。上記判断により当該EFが属するDFが現在作業中のDFでないと判断した場合(ステップS120、NO)、上記CPU21は、上記ステップS106へ戻り、次の定義情報の検出を行う。
【0061】
また、上記判断により当該EFが属するDFが現在作業中のDFであると判断した場合(ステップS120、YES)、上記CPU21は、当該EF定義情報で定義されているEFが上記ワーキングメモリ23に記憶した共有セキュリティ条件を満たすか否かを判断する(ステップS121)。この判断により当該EFが共有セキュリティ条件を満たさないと判断した場合(ステップS121、NO)、上記CPU21は、共有セキュリティ条件との不一致により共有データの設定処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS118)、当該処理を終了する。
【0062】
上記判断により当該EFが共有セキュリティ条件を満たすと判断した場合(ステップS121、YES)、上記CPU21は、当該EF定義情報で示される当該EFのデータエリアに上記共有先レコードにリンクさせるレコード(共有設定するレコード)を設定する処理を行う(ステップS122−S123)。共有設定するレコードは、図12に示すレコードR2のように、状態識別子301が「共有」となり、データ303がリンク先の「先頭アドレス」となる。たとえば、共有設定するレコードは、上記共有データ設定コマンド400におけるP1部で指定されるレコード番号により特定される。
【0063】
従って、上記CPU21は、当該EF定義情報で定義されるEFのデータエリアにおいて、当該コマンド400で指定されたレコード番号のレコードにおける状態識別子301に「共有」を示す情報を書き込む(ステップS122)。さらに、上記CPU21は、状態識別子301を「共有」としたレコードのデータ303に共有先(リンク先)のレコードにおける先頭アドレスを書き込む(ステップS123)。ここで、データ303に書き込む先頭アドレス(共有アドレス)は、上記ステップS114でワーキングメモリ23に記憶したアドレス情報である。
【0064】
以上のような一連の処理が正常に完了すると、上記CPU21は、上記共有データ設定コマンド400に対するレスポンスとして正常終了を示すレスポンスデータを作成し、上記リーダライタ5へ送信する(ステップS124)。このような正常終了を示すレスポンスデータを送信した場合、上記CPU21は、共有データの設定処理を終了する。
上記のような共有データの設定処理によれば、図9及び図10に示すような共有データ設定コマンドに応じて、図12のレコードR2に示すように、共有先を先頭アドレスで設定したレコードを設定できる。
【0065】
次に、上記のようなレコードの読出し処理について詳細に説明する。
図15は、ICカード1が読出しコマンドを受信した場合の処理(読出し処理)の流れを説明するためのフローチャートである。
まず、外部装置としてのリーダライタ5が、ICカード1に対して、指定のレコードの読出しを要求する読出しコマンドを供給したものとする。すると、上記ICカード1は、上記リーダライタ5からの読出しコマンドに応じたデータの読出し処理を実行するようになっている。
【0066】
図16は、読出しコマンド700の例である。図16に示すように、読出しコマンド700は、コマンドヘッダ部701とLe部706とにより構成される。コマンドヘッダ部701は、CLA部702、INS部703、P1部704およびP2部705により構成される。CLA部702およびINS部703は、当該コマンドが読出しコマンドであることを示す情報が格納される。P1部704およびP2部705は、当該読出しコマンドのパラメータを示す情報である。ここでは、P1部704には、読出し対象となるレコードを格納しているデータファイルとしてのEFを示すEF−IDが格納されるものとする。また、P2部705には、読出し対象となるレコードを示すレコード番号が格納されるものとする。
【0067】
上記通信部25により読出しコマンド700を受信すると、上記CPU21は、当該コマンド700のコマンドヘッダ部701におけるCLA部702及びINS部703により当該コマンドが読出しコマンドであることを判断する。受信したコマンドが読出しコマンド700であると判断した場合、上記CPU21は、当該読出しコマンド700のP1部704で指定されている読出し対象のEFを検出する処理を行う(ステップS200〜S204)。
【0068】
すなわち、上記CPU21は、図4に示すようなファイル定義情報領域22bから各定義情報を順に読み込む(ステップS200)。読み込んだ定義情報がEF定義情報でない場合(ステップS201、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS202)。この判断により次の定義情報が存在すると判断した場合(ステップS202、YES)、上記CPU21は、上記ステップS200へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS202、NO)、上記CPU21は、上記読出しコマンドに対する読出し処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS203)、当該処理を終了する。
【0069】
また、読み込んだ定義情報がEF定義情報である場合(ステップS201、YES)、上記CPU21は、当該EF定義情報で定義されているEFが上記読出しコマンド700のP2部705で指定されているEFであるか否かを判断する(ステップS204)。ここでは、P2部705には指定するEFを示すEF−IDが格納されているものとする。このため、上記CPU21は、読み込んだEF定義情報におけるEF−IDと、当該コマンド700のP2部705で指定されたEF−IDとが一致するか否かを判断する。
【0070】
上記判断により読み込んだEF定義情報のEFが読出しコマンド700で指定されたEFでないと判断した場合(ステップS204、NO)、上記CPU21は、上記ステップS202へ戻り、次の定義情報の検出を行う。
また、上記判断により読み込んだEF定義情報のEFが読出しコマンド700で指定されたEFであると判断した場合(ステップS204、YES)、上記CPU21は、当該EF定義情報のEFが属するDFが現在作業中のDFであるか否かを判断する(ステップS205)。たとえば、現在作業中のDFを示す情報は、カレントDFのDF固有番号としてワーキングメモリ23に保持されているものとする。この場合、上記CPU21は、当該EF定義情報におけるDF固有番号がワーキングメモリ23に記憶されているカレントDFのDF固有番号と一致するか否かを判断する。上記判断により当該EFが属するDFが現在作業中のDFでないと判断した場合、つまり、当該EFが現在作業中のDFに属するものではないと判断した場合(ステップS205、NO)、上記CPU21は、上記ステップS202へ戻り、次の定義情報の検出を行う。
【0071】
上記判断により当該EF定義情報のEFが現在作業中のDFに属すると判断した場合(ステップS205、YES)、上記CPU21は、現在のセキュリティ状態が読み込んだEF定義情報のセキュリティ条件を満たすか否かを判断する(ステップS206)。この判断によりセキュリティ条件を満たさないと判断した場合(ステップS206、NO)、上記CPU21は、上記読出しコマンドに対する読出し処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS203)、当該処理を終了する。
【0072】
また、上記判断によりセキュリティ条件を満たすを判断した場合(ステップS206、YES)、上記CPU21は、当該コマンド700のP1部704に格納されているレコード番号で指定されるレコードに対して状態に応じて読出し処理を実行する(ステップS208〜S214)。各レコードは、上述したように、状態識別子301で示される3通りの状態を有する。すなわち、各レコードの状態識別子301は、「未書込み」、「書込み済」、あるいは、「共有」の何れかである。
【0073】
当該コマンド700で指定されたレコードの状態識別子が「未書込み」である場合(ステップS208、YES(「未書込み」))、上記CPU21は、上記読出すべきデータが存在しないため、エラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS203)、当該処理を終了する。
【0074】
また、当該コマンド700で指定されたレコードの状態識別子が「書込み済」である場合(ステップS209、「書込み済」)、上記CPU21は、当該コマンド700で指定されたレコードのデータ303を読出す(ステップS210)。この場合、上記CPU21は、読み出したデータをセットした正常終了を示すレスポンスデータを生成する(ステップS211)。正常終了を示すレスポンスデータを生成すると、上記CPU21は、生成した正常終了を示すレスポンスデータをリーダライタ5へ送信し(ステップS212)、当該処理を終了する。
【0075】
また、当該コマンド700で指定されたレコードの状態識別子が「共有」である場合(ステップS209、「共有」)、上記CPU21は、当該コマンド700で指定されたレコードのデータ303としてのアドレス情報を読出す(ステップS213)。このアドレス情報は、上述したように、当該レコードの共有データとして共有先(リンク先)の先頭アドレスを示す情報である。従って、上記CPU21は、当該レコードのデータとして読み出したアドレスを先頭アドレスとする共有データを読み出す(ステップS214)。このような共有データを読出すと、上記CPU21は、共有先から読み出した共有データを読出しデータとしてセットした正常終了を示すレスポンスデータを生成する(ステップS215)。
【0076】
これにより、正常終了を示すレスポンスデータを生成すると、上記CPU21は、生成した正常終了を示すレスポンスデータをリーダライタ5へ送信し(ステップS212)、当該処理を終了する。
上記のようなデータの読出し処理によれば、共有設定されているレコードが読出し対象である読出しコマンドに対しては、当該レコードのデータに書込まれている共有先の先頭アドレスに基づいて、特定される共有先のレコードのデータを読み出すことができる。
【0077】
次に、上記のようなレコードにおけるデータの書換え処理について詳細に説明する。
図17は、ICカード1が書き換えコマンドを受信した場合の処理(書き換え処理)の流れを説明するためのフローチャートである。
まず、外部装置としてのリーダライタ5が、ICカード1に対して、指定のレコードのデータの書換えを要求する書き換えコマンドを供給したものとする。すると、上記ICカード1は、上記リーダライタ5からの書き換えコマンドに応じたデータの書き換え処理を実行するようになっている。
【0078】
図18は、書き換えコマンド800の例である。図18に示すように、書き換えコマンド800は、コマンドヘッダ部801とLe部806とデータ部807とにより構成される。コマンドヘッダ部801は、CLA部802、INS部803、P1部804およびP2部805により構成される。CLA部802およびINS部803は、当該コマンドが書換えコマンドであることを示す情報が格納される。P1部804およびP2部805は、当該書き換えコマンドのパラメータを示す情報である。ここでは、P1部804には、書き換え対象となるレコードを格納しているデータファイルとしてのEFを示すEF−IDが格納されるものとする。また、P2部805には、書き換え対象となるレコードを示すレコード番号が格納されるものとする。
【0079】
上記通信部25により書き換えコマンド800を受信すると、上記CPU21は、当該コマンド800のコマンドヘッダ部801におけるCLA部802及びINS部803により当該コマンドが書き換えコマンドであることを判断する。受信したコマンドが書き換えコマンド800であると判断した場合、上記CPU21は、当該書き換えコマンド800のP1部804で指定されている書き換え対象のEFを検出する処理を行う(ステップS300〜S304)。
【0080】
すなわち、上記CPU21は、図4に示すようなファイル定義情報領域22bから各定義情報を順に読み込む(ステップS300)。読み込んだ定義情報がEF定義情報でない場合(ステップS301、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS302)。この判断により次の定義情報が存在すると判断した場合(ステップS302、YES)、上記CPU21は、上記ステップS300へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS302、NO)、上記CPU21は、上記書き換えコマンドに対する書換え処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS303)、当該処理を終了する。
【0081】
また、読み込んだ定義情報がEF定義情報である場合(ステップS301、YES)、上記CPU21は、当該EF定義情報で定義されているEFが上記書換えコマンド800のP2部805で指定されているEFであるか否かを判断する(ステップS304)。ここでは、P2部805には指定するEFを示すEF−IDが格納されているものとする。このため、上記CPU21は、読み込んだEF定義情報におけるEF−IDと、当該コマンド800のP2部805で指定されたEF−IDとが一致するか否かを判断する。
【0082】
上記判断により読み込んだEF定義情報のEFが書き換えコマンド800で指定されたEFでないと判断した場合(ステップS304、NO)、上記CPU21は、上記ステップS302へ戻り、次の定義情報の検出を行う。
また、上記判断により読み込んだEF定義情報のEFが書換えコマンド800で指定されたEFであると判断した場合(ステップS304、YES)、上記CPU21は、当該EF定義情報のEFが属するDFが現在作業中のDFであるか否かを判断する(ステップS305)。たとえば、現在作業中のDFを示す情報は、カレントDFのDF固有番号としてワーキングメモリ23に保持されているものとする。この場合、上記CPU21は、当該EF定義情報におけるDF固有番号がワーキングメモリ23に記憶されているカレントDFのDF固有番号と一致するか否かを判断する。上記判断により当該EFが属するDFが現在作業中のDFでないと判断した場合、つまり、当該EFが現在作業中のDFに属するものではないと判断した場合(ステップS305、NO)、上記CPU21は、上記ステップS302へ戻り、次の定義情報の検出を行う。
【0083】
上記判断により当該EF定義情報のEFが現在作業中のDFに属すると判断した場合(ステップS305、YES)、上記CPU21は、現在のセキュリティ状態が読み込んだEF定義情報のセキュリティ条件を満たすか否かを判断する(ステップS306)。この判断によりセキュリティ条件を満たさないと判断した場合(ステップS306、NO)、上記CPU21は、上記書換えコマンドに対する書換え処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS303)、当該処理を終了する。
【0084】
また、上記判断によりセキュリティ条件を満たすを判断した場合(ステップS306、YES)、上記CPU21は、当該コマンド800のP1部804に格納されているレコード番号で指定されるレコードに対して状態に応じて読出し処理を実行する(ステップS308〜S314)。各レコードは、上述したように、状態識別子301で示される3通りの状態を有する。すなわち、各レコードの状態識別子301は、「未書込み」、「書込み済」、あるいは、「共有」の何れかである。
【0085】
当該コマンド800で指定されたレコードの状態識別子が「未書込み」である場合(ステップS308、YES(未書込み))、上記CPU21は、上記読出すべきデータが存在しないため、エラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS303)、当該処理を終了する。
また、当該コマンド800で指定されたレコードの状態識別子が「書込み済」である場合(ステップS309、「書込み済」)、上記CPU21は、当該コマンド800で指定されたレコードのデータ303を当該コマンド800のデータ部807に格納されていたデータに書き換える(ステップS310)。この書換え処理が正常に終了すれば、上記CPU21は、正常終了を示すレスポンスをリーダライタ5へ送信し(ステップS311)、当該処理を終了する。
【0086】
また、当該コマンド700で指定されたレコードの状態識別子が「共有」である場合(ステップS309、「共有」)、上記CPU21は、当該コマンド800で指定されたレコードのデータ303としてのアドレス情報を読出す(ステップS312)。このアドレス情報は、上述したように、当該レコードの共有データとして共有先(リンク先)の先頭アドレスを示す情報である。従って、上記CPU21は、当該レコードのデータとして読み出したアドレスを先頭アドレスとする共有データを、当該コマンド800のデータ部807に格納されていたデータに書き換える(ステップS313)。このような共有先のデータの書換え処理が正常に終了すれば、上記CPU21は、正常終了を示すレスポンスをリーダライタ5へ送信し(ステップS311)、当該処理を終了する。
【0087】
上記のようなデータの書換え処理によれば、共有設定されているレコードが書換え対象である書換えコマンドに対しては、当該レコードのデータに書込まれている共有先の先頭アドレスに基づいて、特定される共有先のレコードのデータを当該コマンドで指定されたデータに書き換えることができる。
【0088】
次に、上述した実施の形態の変形例について説明する。
上記のような共有データの設定は、共有先をアドレスにより特定する手法に限定されるものではなく、共有先を特定できるものであれば良い。たとえば、共有先は、DF名(あるいはDF固有番号)、EF−IDおよびレコード番号により指定することも可能である。共有先をアドレスで指定する手法では、共有先をアドレスで直接的に特定できる。このため、アクセスが高速であることが考えられる。つまり、共有先をアドレスで直接的に指定するため、レコードの状態識別子が「共有」であっても、処理時間が遅くなるということはないと考えられる。
【0089】
これに対して、共有先のレコードをDF名、EF−IDおよびレコード番号により特定する方法では、共有設定時に共有先のアドレスを計算する必要がない。また、共有先のレコードをDF名、EF−IDおよびレコード番号により特定する方法では、共有先のアドレスが変化しても、共有先のレコードを示す情報を再設定する必要がない。つまり、共有先のレコードをDF名、EF−IDおよびレコード番号により特定する方法は、レコードに対する共有設定が簡単に実行でき、運用上の自由度が高いと考えられる。
【0090】
一般的に、データメモリの管理技術としては、データメモリにおけるメモリ領域を最適化する技術である。このようなメモリ管理技術は、使用しなくなったメモリ領域、あるいは、種々のデータ間における隙間のメモリ領域などを連続して利用可能なメモリ領域に再構築する。この結果として、上記のようなメモリ管理技術では、メモリ上における各種のデータの配置が再設定されることが多い。つまり、上記のようなメモリ管理技術では、各データが記憶されるメモリにおけるアドレスが変更されることが多い。従って、メモリ上のアドレスそのものを参照するデータは、メモリ領域におけるデータの再構築(最適化)とともに更新しなければならない。
【0091】
たとえば、ICカード1にも適用されるプログラミング言語としてJava(登録商標)と呼ばれるものがある。Javaでは、メモリ管理の機能として、ガーベジコレクション(garbage collection)と呼ばれる機能を有している。ガーベジコレクションは、プログラムが使用しなくなったメモリ領域、および、プログラム間の隙間のメモリ領域を集めて連続した利用可能なメモリ領域を増やす技術である。Java言語の実行環境(JVM)は、Javaプログラマがメモリ管理に気を使わなくてもいいように、自身がガーベジコレクション機能を持っている。
【0092】
すなわち、上記ガーベジコレクションのようなデータを最適化するメモリ管理機能を有するICカードでは、共有先を直接的にアドレスを指定する方法を適用すれば、データの最適化を実施する度に、共有先のアドレスを再計算する必要が生じる。この結果として、データの最適化処理自体、あるいは、データの最適化に伴うアドレスデータの再設定処理に時間がかかる。これに対して、共有先をDF名、EF−IDおよびレコード番号で指定する方法を適用したICカードでは、データの最適化あるいはデータの最適化に伴うデータの再設定などに要する時間を短くできる。
【0093】
以下、共有先を「DF名」と「EF−ID」と「レコード番号」とで指定する方法について説明する。
図19は、共有先を「DF名」と「EF−ID」と「レコード番号」とで指定する場合のレコードの構成例を示している。ここでは、共有先を示す「DF名」と「EF−ID」と「レコード番号」とからなる情報を共有先情報と称するものとする。
図19に示すような状態識別子が「共有」のレコード以外のデータは、たとえば、図1〜図11に示すような構成のままで変更しなくても良い。状態識別子が「共有」のレコードは、図19に示すレコードR2のように、データ303として、共有先情報(「DF名」、「EF−ID」及び「レコード番号」)が書込まれ、データ長302はデータ303としての共有先情報の長さを示す情報が書込まれる。
【0094】
次に、共有先を共有先情報で指定する場合の各種処理について説明する。
まず、共有先を共有先情報で指定する場合の共有データの設定処理について説明する。
上記共有データの設定処理では、共有先が共有先情報で指定される場合、図13および図14に示す各処理のうちステップS114の処理が省略され、かつ、ステップS123の処理が状態識別子を「共有」としたレコードのデータに共有先情報を書き込むという処理に変更される。
【0095】
なお、共有先情報は、図10に示すような共有データ設定コマンド400のデータ部407における「共有するEFが所属するDF名」502、「共有するEFのEF−ID」503および「共有するレコード番号」504である。これは、共有データの設定処理において、受信したコマンドのデータ部407における「DF名」、「EF−ID」および「レコード番号」をレコードのデータとして書き込むことを意味する。つまり、共有先を共有先情報で指定する場合、共有データの設定処理では、アドレス計算などが不要となり、コマンドのデータ部の一部をレコードのデータに書き込めば良い。これは、共有データの設定処理が簡単であることを意味している。
【0096】
次に、共有先を共有先情報で指定する場合の読出し処理および書換え処理について説明する。
共有先を共有先情報で指定する場合、上記読出し処理あるいは上記書換え処理では、状態識別子が「共有」のレコードのデータとしての共有先情報に基づいて共有先のレコードを特定する処理が必要となる。
図20は、処理対象のレコードの状態識別子が「共有」であった場合に、共有先のレコードを特定する処理の流れを説明するためのフローチャートである。すなわち、図20に示す処理は、たとえば、図15に示す読出し処理におけるステップS213、あるいは、図17に示す書換え処理におけるステップS312の代りに実行される処理である。なお、図20に示す各処理(ステップS400〜S410)は、図13に示すステップS100〜S110の各処理と類似している。ただし、図20に示す各処理(ステップS400〜S411)は、共有先情報に基づいて共有先のレコードを特定する点が図13に示すステップS100〜S110の各処理と異なっている。
【0097】
すなわち、処理対象のレコードの状態識別子が「共有」であった場合、上記CPU21は、当該レコードのデータとしての共有先情報で示される「共有するEFが所属するDF」を検出する処理を行う(ステップS400〜S404)。なお、「共有するEFが所属するDF」は、DF名で指定されているものとする。この場合、上記CPU21は、図4に示すようなファイル定義情報領域22bから各定義情報を順に読み込む(ステップS400)。
【0098】
読み込んだ定義情報がDF定義情報でない場合(ステップS401、NO)、上記CPU21は、次の定義情報が有るか否かを判断する(ステップS402)。この判断により次の定義情報が存在すると判断した場合(ステップS402、YES)、上記CPU21は、上記ステップS400へ戻り、次の定義情報を読み込む。また、次の定義情報が存在しないと判断した場合(ステップS402、NO)、上記CPU21は、上記処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS403)、当該処理を終了する。
【0099】
また、読み込んだ定義情報がDF定義情報である場合(ステップS401、YES)、上記CPU21は、当該DF定義情報で定義されているDF名が上記共有先情報で指定されている「共有するEFが所属するDF名」と一致するか否かを判断する(ステップS404)。上記判断により読み込んだDF定義情報のDF名が共有先情報のDF名と一致しないと判断した場合(ステップS404、NO)、上記CPU21は、上記ステップS402へ戻り、次の定義情報の検出を行う。
【0100】
また、上記判断により読み込んだDF定義情報のDF名が共有先情報のDF名と一致すると判断した場合(ステップS404、YES)、上記CPU21は、当該DF定義情報のDF固有番号をワーキングメモリ23に記憶する(ステップS405)。ワーキングメモリ23にDF固有番号を記憶すると、上記CPU21は、図4に示すようなファイル定義情報領域22bにおいて次の定義情報が存在するか否か判断する(ステップS406)。次の定義情報が存在しないと判断した場合(ステップS406、NO)、上記CPU21は、処理がエラーとなった旨を示すエラーレスポンスをリーダライタ5へ送信し(ステップS403)、当該処理を終了する。
【0101】
また、次の定義情報が存在すると判断した場合(ステップS406、YES)、上記CPU21は、次の定義情報を読み込む(ステップS407)。上記ステップS407で次の定義情報を読み込むと、上記CPU21は、読み込んだ定義情報がEF定義情報であるか否かを判断する(ステップS408)。読み込んだ定義情報がEF定義情報であると判断した場合(ステップS408、YES)、上記CPU21は、当該EF定義情報で定義されている所属先のDFを示すDF固有番号が上記ステップS405でワーキングメモリ23に記憶したDF固有番号と一致するか否かを判断する(ステップS409)。上記判断により読み込んだEF定義情報におけるDF固有番号がワーキングメモリ23に記憶したDF固有番号と一致しないと判断した場合(ステップS409、NO)、上記CPU21は、上記ステップS406へ戻り、次の定義情報の検出を行う。
【0102】
上記判断により読み込んだEF定義情報におけるDF固有番号がワーキングメモリ23に記憶したDF固有番号と一致すると判断した場合(ステップS409、YES)、上記CPU21は、当該EF定義情報におけるEF−IDが上記共有先情報における「共有するEFのEF−ID」と一致するか否かを判断する(ステップS410)。上記判断によりEF−IDが一致しないと判断した場合(ステップS410、NO)、上記CPU21は、上記ステップS406へ戻り、次の定義情報の検出を行う。
【0103】
上記判断により読み込んだEF定義情報におけるEF−IDが上記共有先情報におけるEF−IDと一致すると判断した場合(ステップS410、YES)、上記CPU21は、共有先のレコードの先頭アドレスを特定する処理を行う(ステップS411)。たとえば、上記CPU21は、上記共有先情報で指定されている「共有するレコード番号」により共有するレコードの先頭アドレスを計算する。
【0104】
ここで、共有先のレコードの先頭アドレスは、EFのデータエリアの先頭アドレスと各レコードのデータ長とに基づいて計算される。EFのデータエリアは、図6に示すようなEF定義情報のデータエリア先頭アドレスで特定できる。このため、EFのデータエリア内における各レコードの先頭アドレスは、データエリアの先頭アドレスに直前の各レコード全体の長さ(データサイズ)を加算することにより算出される。なお、1つのレコード全体の長さは、状態識別子301、データ長302、データ部303およびファイルチェックバイト304の各長さを合計したものである。ただし、状態識別子301、データ長302およびファイルチェックバイト304の長さはそれぞれ所定の長さであり、データ部303の長さは、データ長302で示される長さである。
【0105】
以上のような処理により、上記共有先情報で指定されている共有先のレコードの先頭アドレスが特定され、データの読出しあるいはデータの書換えが可能となる。上記のように、共有先情報を用いても、レコードの共有設定を行うことが可能である。共有先のアドレスが変更される可能性がある場合、上記のような共有先情報によりレコードの共有設定を行うことで、効率的なメモリ管理が実現できる。
【図面の簡単な説明】
【0106】
【図1】図1は、本発明の実施の形態に係るICカード(携帯可能電子装置)を含むICカードシステムの構成例を概略的に示すものである。
【図2】図2は、ICカードのハードウエア構成例を概略的に示すブロック図である。
【図3】図3は、データメモリに格納されるファイルの構成例を示す図である。
【図4】図4は、図3に示すようなファイル構成例に対するデータメモリにおけるメモリマップの例を示す図である。
【図5】図5は、DF定義情報におけるフォーマットの例を示す図である。
【図6】図6は、EF定義情報におけるフォーマットの例を示す図である。
【図7】図7は、EF定義情報により定義される1つのEFのデータエリアにおける構成例を示す図である。
【図8】図8は、3つのレコードからなるデータエリアの構成例を示す図である。
【図9】図9は、共有データの設定を要求するコマンド(共有データ設定コマンド)の構成例を示す図である。
【図10】図10は、共有データ設定コマンドにおけるデータ部の例を示す図である。
【図11】図11は、共有データ設定コマンドに対するレスポンスデータの構成例を示す図である。
【図12】図12は、共有データの設定処理により生成された1つのEFのデータエリアの構成例を示す図である。
【図13】図13は、共有データ設定コマンドを受信した場合の処理(共有データの設定処理)の流れを説明するためのフローチャートである。
【図14】図14は、共有データ設定コマンドを受信した場合の処理(共有データの設定処理)の流れを説明するためのフローチャートである。
【図15】図15は、ICカードが読出しコマンドを受信した場合の処理(読出し処理)の流れを説明するためのフローチャートである。
【図16】図16は、読出しコマンドの例である。
【図17】図17は、ICカードが書き換えコマンドを受信した場合の処理(書き換え処理)の流れを説明するためのフローチャートである。
【図18】図18は、書き換えコマンドの例である。
【図19】図19は、共有先を「DF名」と「EF−ID」と「レコード番号」とからなる共有先情報で指定する場合のレコードの構成例を示している。
【図20】図20は、処理対象のレコードの状態識別子が「共有」であった場合に、共有先のレコードを特定する処理の流れを説明するためのフローチャートである。
【符号の説明】
【0107】
1…ICカード、5…リーダライタ(外部装置)、B…本体、M…モジュール、C…ICチップ、21…CPU(制御素子)、22…データメモリ、23…ワーキングメモリ、24…プログラムメモリ、25…通信部、22a…制御領域、22b…ディレクトリ領域(ファイル定義情報領域)、22c…エリア群領域、22d…空き領域、101…ファイル識別子部、102…DF名部、103…アクセス条件部、104…アクセスカウンタ部、105…DF優先順位部、106…DF固有番号部、107…DF固有情報部、108…チェックバイト部、201…ファイル識別子部、202…DF固有番号部、203…EF−ID部、204…レコードサイズ部、205…レコード数部、206…データエリア先頭アドレス部、207…セキュリティ条件部、208…許可情報部、209…共有時のセキュリティ条件情報部、210…チェックバイト部、R1、R2、R3…レコード、301…状態識別子、302…データ長、303…データ、400…共有データ設定コマンド、401…コマンドヘッダ部、407…データ部、700…読出しコマンド、701…コマンドヘッダ部、800…書換えコマンド、801…コマンドヘッダ部、807…データ部。
【特許請求の範囲】
【請求項1】
レコード単位のデータを格納するデータファイルを記憶する記憶手段と、
外部装置とのデータ通信を行うための通信手段と、
前記通信手段により指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスが要求されたレコードが共有データであるか否かを判断する判断手段と、
この判断手段により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータとしての共有先を示す情報に基づいて、当該レコードの共有先のデータにアクセスする処理手段と、
を有することを特徴とする携帯可能電子装置。
【請求項2】
前記記憶手段は、前記データファイルに格納される各レコードに対してそれぞれ共有データであるか否かを示す状態識別子を記憶し、
前記判断手段は、前記状態識別子により前記コマンドで指定されたレコードが共有データであるか否かを判断する、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項3】
さらに、前記通信手段により指定レコードに共有データを設定することを要求するコマンドを受信した場合、指定レコードのデータに共有先を示す情報を書き込む共有設定手段を有する、
ことを特徴とする前記請求項1又は2の何れかに記載の携帯可能電子装置。
【請求項4】
前記共有設定手段は、前記指定レコードのデータに、共有先を示す情報として、共有先のレコードのアドレス情報を書き込む、
ことを特徴とする前記請求項3に記載の携帯可能電子装置。
【請求項5】
前記共有設定手段は、前記指定レコードのデータに、共有先を示す情報として、共有先のレコードを格納しているデータファイルを示す情報と当該データファイルにおけるレコード識別情報とを書き込む、
ことを特徴とする前記請求項3に記載の携帯可能電子装置。
【請求項6】
前記処理手段は、前記判断手段により読出しを要求するコマンドで指定されたレコードが共有データであると判断した場合、共有先のデータを読み出し、読み出したデータを当該レコードのデータとして前記外部装置へ送信する処理を行う、
ことを特徴とする前記請求項1乃至5の何れかに記載の携帯可能電子装置。
【請求項7】
前記処理手段は、前記判断手段により書換えを要求するコマンドで指定されたレコードが共有データであると判断された場合、共有先のデータを前記書換えを要求するコマンドで指定されるデータに書換える処理を行う、
ことを特徴とする前記請求項1乃至5の何れかに記載の携帯可能電子装置。
【請求項8】
前記各手段を有するモジュールと、
前記モジュールが埋設される本体と、
を有することを特徴とする前記請求項1乃至7の何れかに記載の携帯可能電子装置。
【請求項9】
データを記憶する記憶手段と外部装置とのデータ通信を行う通信手段とデータ処理を行う制御手段とを有する携帯可能電子装置におけるデータ処理方法であって、
レコード単位のデータを格納するデータファイルを記憶手段に記憶し、
前記通信手段により指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスが要求されたレコードが共有データであるか否かを判断し、
この判断により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータとしての共有先を示す情報に基づいて当該レコードの共有先のデータにアクセスする、
ことを特徴とする携帯可能電子装置におけるデータ処理方法。
【請求項10】
前記記憶手段には、前記データファイルに格納される各レコードに対してそれぞれ共有であるか否かを示す状態識別子を記憶し、
前記判断は、前記状態識別子により前記コマンドで指定されたレコードが共有データであるか否かを判断する、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるデータ処理方法。
【請求項11】
さらに、前記通信手段により指定レコードに共有データを設定することを要求するコマンドを受信した場合、前記指定レコードのデータに、共有先を示す情報を書き込む、
ことを特徴とする前記請求項9又は10の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【請求項12】
さらに、前記通信手段により指定レコードに共有データを設定することを要求するコマンドを受信した場合、前記指定レコードのデータに、共有先を示す情報として、共有先のレコードのアドレス情報を書き込む、
ことを特徴とする前記請求項9又は10の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【請求項13】
さらに、前記通信手段により指定レコードに共有データを設定することを要求するコマンドを受信した場合、前記指定レコードのデータに、共有先を示す情報として、共有先のレコードを格納しているデータファイルを示す情報と当該データファイルにおけるレコード識別情報とを書き込む、
ことを特徴とする前記請求項9又は10の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【請求項14】
前記処理は、前記判断により読出しを要求するコマンドで指定されたレコードが共有データであると判断した場合、共有先のデータを読み出して、読み出したデータを当該レコードのデータとして前記外部装置へ送信する処理である、
ことを特徴とする前記請求項9乃至13の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【請求項15】
前記処理は、前記判断により書換えを要求するコマンドで指定されたレコードが共有データであると判断した場合、共有先のデータを前記書換えを要求するコマンドで指定されるデータに書換える処理である、
ことを特徴とする前記請求項9乃至13の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【請求項1】
レコード単位のデータを格納するデータファイルを記憶する記憶手段と、
外部装置とのデータ通信を行うための通信手段と、
前記通信手段により指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスが要求されたレコードが共有データであるか否かを判断する判断手段と、
この判断手段により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータとしての共有先を示す情報に基づいて、当該レコードの共有先のデータにアクセスする処理手段と、
を有することを特徴とする携帯可能電子装置。
【請求項2】
前記記憶手段は、前記データファイルに格納される各レコードに対してそれぞれ共有データであるか否かを示す状態識別子を記憶し、
前記判断手段は、前記状態識別子により前記コマンドで指定されたレコードが共有データであるか否かを判断する、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項3】
さらに、前記通信手段により指定レコードに共有データを設定することを要求するコマンドを受信した場合、指定レコードのデータに共有先を示す情報を書き込む共有設定手段を有する、
ことを特徴とする前記請求項1又は2の何れかに記載の携帯可能電子装置。
【請求項4】
前記共有設定手段は、前記指定レコードのデータに、共有先を示す情報として、共有先のレコードのアドレス情報を書き込む、
ことを特徴とする前記請求項3に記載の携帯可能電子装置。
【請求項5】
前記共有設定手段は、前記指定レコードのデータに、共有先を示す情報として、共有先のレコードを格納しているデータファイルを示す情報と当該データファイルにおけるレコード識別情報とを書き込む、
ことを特徴とする前記請求項3に記載の携帯可能電子装置。
【請求項6】
前記処理手段は、前記判断手段により読出しを要求するコマンドで指定されたレコードが共有データであると判断した場合、共有先のデータを読み出し、読み出したデータを当該レコードのデータとして前記外部装置へ送信する処理を行う、
ことを特徴とする前記請求項1乃至5の何れかに記載の携帯可能電子装置。
【請求項7】
前記処理手段は、前記判断手段により書換えを要求するコマンドで指定されたレコードが共有データであると判断された場合、共有先のデータを前記書換えを要求するコマンドで指定されるデータに書換える処理を行う、
ことを特徴とする前記請求項1乃至5の何れかに記載の携帯可能電子装置。
【請求項8】
前記各手段を有するモジュールと、
前記モジュールが埋設される本体と、
を有することを特徴とする前記請求項1乃至7の何れかに記載の携帯可能電子装置。
【請求項9】
データを記憶する記憶手段と外部装置とのデータ通信を行う通信手段とデータ処理を行う制御手段とを有する携帯可能電子装置におけるデータ処理方法であって、
レコード単位のデータを格納するデータファイルを記憶手段に記憶し、
前記通信手段により指定レコードへのアクセスを要求するコマンドを受信した場合、アクセスが要求されたレコードが共有データであるか否かを判断し、
この判断により前記コマンドで指定されたレコードが共有データであると判断した場合、当該レコードのデータとしての共有先を示す情報に基づいて当該レコードの共有先のデータにアクセスする、
ことを特徴とする携帯可能電子装置におけるデータ処理方法。
【請求項10】
前記記憶手段には、前記データファイルに格納される各レコードに対してそれぞれ共有であるか否かを示す状態識別子を記憶し、
前記判断は、前記状態識別子により前記コマンドで指定されたレコードが共有データであるか否かを判断する、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるデータ処理方法。
【請求項11】
さらに、前記通信手段により指定レコードに共有データを設定することを要求するコマンドを受信した場合、前記指定レコードのデータに、共有先を示す情報を書き込む、
ことを特徴とする前記請求項9又は10の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【請求項12】
さらに、前記通信手段により指定レコードに共有データを設定することを要求するコマンドを受信した場合、前記指定レコードのデータに、共有先を示す情報として、共有先のレコードのアドレス情報を書き込む、
ことを特徴とする前記請求項9又は10の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【請求項13】
さらに、前記通信手段により指定レコードに共有データを設定することを要求するコマンドを受信した場合、前記指定レコードのデータに、共有先を示す情報として、共有先のレコードを格納しているデータファイルを示す情報と当該データファイルにおけるレコード識別情報とを書き込む、
ことを特徴とする前記請求項9又は10の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【請求項14】
前記処理は、前記判断により読出しを要求するコマンドで指定されたレコードが共有データであると判断した場合、共有先のデータを読み出して、読み出したデータを当該レコードのデータとして前記外部装置へ送信する処理である、
ことを特徴とする前記請求項9乃至13の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【請求項15】
前記処理は、前記判断により書換えを要求するコマンドで指定されたレコードが共有データであると判断した場合、共有先のデータを前記書換えを要求するコマンドで指定されるデータに書換える処理である、
ことを特徴とする前記請求項9乃至13の何れかに記載の携帯可能電子装置におけるデータ処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2010−72965(P2010−72965A)
【公開日】平成22年4月2日(2010.4.2)
【国際特許分類】
【出願番号】特願2008−239972(P2008−239972)
【出願日】平成20年9月18日(2008.9.18)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成22年4月2日(2010.4.2)
【国際特許分類】
【出願日】平成20年9月18日(2008.9.18)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]