携帯可能電子装置、ICカードおよびICモジュール
【課題】入れ子構造になっているデータをデータ構造解析なしで容易に検出したり、入れ子構造になっているデータの中に含まれるデータを操作することで容易に入れ子構造になっているデータの合計値や最新日付情報などのデータを取得することが可能な携帯可能電子装置およびICカードを提供する。
【解決手段】識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段とを具備している。
【解決手段】識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段とを具備している。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、携帯可能電子装置、ICカードおよびICモジュールに関する。
【背景技術】
【0002】
近年、携帯可能な電子装置として、書込み、書換え可能な不揮発性のデータメモリとそれを制御するためのCPUを有し、外部からのデータの入出力を行なう手段を備えたICチップを内蔵した、いわゆるICカードが産業各方面で開発されている。
【0003】
ICカードは、従来までの磁気カード等と比較すると、磁気カードは個々のアプリケーションに対応した枚数を保持する必要があったが、1枚に複数のアプリケーションプログラムを保持することができるという利点がある。すなわち、銀行などの金融機関でキャッシュカード等として使用されるICカード、スポーツやレジャー施設での個人認証用のIDカード、パチンコ店等の遊技場におけるプリペイドカードなどを同一の1枚のICカードにより実現できる。
【0004】
この種のICカードは、利用アプリケーションの運用時に必要なデータなどがファイル形式でデータメモリに記憶されており、それぞれのファイルは複数のアプリケーションのそれぞれに対応している。
【0005】
個々のファイルは、外部装置からアプリケーション識別名などを入力することにより、選択的に対応するファイルのみが使用可能な状態となるようになっている。アプリケーションを選択した後、データの読出しや書換えなどの運用処理が行なわれる。
【0006】
一般に、ICカード内のデータは、識別子と長さとデータ値とから構成されていて、識別子によっては、いわゆる入れ子構造になっているものもある。このうような入れ子構造は、たとえば、ISO/IEC7816−4 Annex.Dで構造化されたタグフィールド(Tag field)などが定義されている。
また、入れ子構造になっていないデータを直接、読出し、追加、書換え、削除することが可能である。
【0007】
上述した従来の技術においては、たとえば、特許文献2に記述されているとおり、入れ子構造になっていないデータを直接、読出し、追加、書換え、削除することが可能である。入れ子構造になっていないデータを扱うシステムとしては読出し、追加、書換え、削除する機能があれば充分である。
【0008】
しかしながらその反面、入れ子構造になっているデータを扱うシステムの場合、ICカードが保持する指定した子タグデータの検索を行なったり、指定した子タグの全データを読出し演算したり、データの操作を行なうことが要求される。ところが、指定した子タグデータの読出しのアクセスを制御する必要があるため、一部のシステムでは読出し禁止が要求されることもある。また、ネットワーク環境を介する場合、ICカードへの送受信回数を減らすことが要求される。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平3−224047号公報
【特許文献2】特開平11−282989号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明が解決しようとする課題は、入れ子構造になっているデータをデータ構造解析なしで容易に検出したり、入れ子構造になっているデータの中に含まれるデータを操作することで容易に入れ子構造になっているデータの合計値や最新日付情報などのデータを取得することが可能な携帯可能電子装置、ICカードおよびICモジュールを提供することである。
【課題を解決するための手段】
【0011】
実施形態に係る携帯可能電子装置は、識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段とを具備している。
【図面の簡単な説明】
【0012】
【図1】実施形態に係る携帯可能電子装置としてのICカードを用いたICカードシステムの構成を概略的に示すブロック図。
【図2】ICカードの構成を概略的に示すブロック図。
【図3】データメモリに複数のアプリケーションを構成した場合のファイル構造の概念図。
【図4】メモリに格納される入れ子構造データの一例を示す図。
【図5】データ管理情報を説明するための図。
【図6】制御情報により所定のアドレスに設定されるデータのフォーマットを示す図。
【図7】検索・存在個数出力コマンドの構成を示す図。
【図8】検索・存在個数出力コマンドに対するレスポンスデータの構成を示す図。
【図9】出力するレスポンスデータが格納されるレスポンス用データメモリの構成を示す図。
【図10】検索・存在個数出力コマンドに対する処理の流れについて説明するフローチャート。
【図11】検索・存在個数出力コマンドに対する処理の流れについて説明するフローチャート。
【図12】アドレスとデータ長管理情報との整合性の確認およびデータ有無を判定する状態を説明する図。
【図13】合計値出力コマンドの構成を示す図。
【図14】合計値出力コマンドに対するレスポンスデータの構成を示す図。
【図15】合計値出力コマンドに対する処理の流れについて説明するフローチャート。
【図16】合計値出力コマンドに対する処理の流れについて説明するフローチャート。
【図17】データ内に最終更新日値が含まれる入れ子構造データの一例を示す図。
【図18】最終更新日コマンドの構成を示す図。
【図19】最終更新日コマンドに対するレスポンスデータの構成を示す図。
【図20】最終更新日コマンドに対する処理の流れについて説明するフローチャート。
【図21】最終更新日コマンドに対する処理の流れについて説明するフローチャート。
【発明を実施するための形態】
【0013】
以下、実施形態について図面を参照して説明する。
図1は、本実施形態に係る携帯可能電子装置としてのICカードを用いたICカードシステムの構成を概略的に示すものである。図1において、このICカードシステムは、ICカード1に対しデータの読出しや書込みを行なう外部装置としてのリーダライタ2、リーダライタ2が接続された上位装置としてのパーソナルコンピュータ(以降、単にパソコンと略称する)3から構成されている。パソコン3は、インターネット、公衆電話網、ISDNなどの公衆通信網4を介して外部の情報センタ5へ接続するように構成されている。
【0014】
パソコン3は、演算部6としてCPU6aと主記憶装置としてのメモリ6bとを有している。また、パソコン3は、表示手段としてのディスプレイ7、入力手段としてのキーボード8、記憶手段としてのハードディスク装置(HDD)9を有している。
【0015】
ディスプレイ7は、操作手順や作動状態をオペレータに知らせるものである。キーボード8は、オペレータによって操作入力されるものである。ハードディスク装置9には、機密情報である複数のファイル、たとえば、第1電子データファイルF1、第2電子データファイルF2、第3電子データファイルF3などが格納されている。そして、リーダライタ2を介して、パソコン3とICカード1との間で各種データ交換が行なわれるようになっている。
【0016】
リーダライタ2は、図示しない内部メモリや送信手段などを有していて、ICカード1に対するデータの読取り、書込み(送受信)などを接触あるいは非接触で行なうものである。接触式ICカードを用いる場合には、リーダライタ2に接触式ICカードを挿入するためのICカード挿入部(図示せず)が設けられ、無線式ICカードを用いる場合には、リーダライタ2と無線式ICカードとの間を通信するための通信部(図示せず)が設けられる。
【0017】
ICカード1は、たとえば、図2に示すように、カード本体1aの表面に設けられた磁気ストライプ部11、リーダライタ2と信号の授受を行なう受信手段および出力手段としての通信部12、および、1つ(あるいは複数)のICチップ13から構成されている。
【0018】
通信部12は、無線式ICカード1の場合にはアンテナ部として構成され、リーダライタ2から送信された変調波を非接触で受信したり外部へ変調波を発信したりするようになっている。また、この通信部12で受信した変調波から内部回路に供給するための電源やクロックを生成するようになっている。また、接触式ICカード1の場合にはコンタクト部として構成され、リーダライタ2に設けられたICカード端子部(図示しない)と接触することにより電源やクロックを得るようになっている。
【0019】
ICチップ13は、制御素子としてのCPU14、記憶手段してのデータメモリ15、ワーキングメモリ16、プログラムメモリ17から構成され、通信部12と接続された状態で一体的にICモジュール化されて、ICカード本体1a内に埋設されている。
【0020】
CPU14は、本実施形態のポイントである後述するファイルを選択する処理を実行する他、各種の判定処理や判断処理およびメモリへの書込みや読出しなどのデータ処理を行なう制御部である。
【0021】
データメモリ15は、アプリケーションデータなどの各種データの記憶に使用され、たとえば、EEPROM(エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ)などの消去(書換え)可能な不揮発性メモリで構成されている。
【0022】
ワーキングメモリ16は、CPU14が処理を行なう際の処理データを一時的に保持するための作業用のメモリであり、たとえば、RAM(ランダム・アクセス・メモリ)などの揮発性メモリで構成されている。
【0023】
プログラムメモリ17は、たとえば、マスクROM(リード・オンリ・メモリ)などの書換え不可能な固定メモリで構成されており、上述するような各基本機能を実現するサブルーチンを備えたCPU14の制御プログラムなどを記憶している。
【0024】
なお、ICカード1に登録されているアプリケーションとしては、たとえば、クレジット、ポイントシステム、IDカードなどが挙げられる。
【0025】
データメモリ15には、たとえば、図3に示すように、複数のアプリケーションに関する情報がファイル構造で記憶されている。このファイル構造は、ISO/IEC7816−4に基づき、色々なフォルダの種類を持ったディレクトリのツリー構造になっており、複数のアプリケーションが登録可能である。
【0026】
すなわち、図3に示すように、最上位がMF(Master File)21で、その配下に各アプリケーションごとに設定されるフォルダとしてDF(Dedicated File)22,23,24が設けられ、さらに、それらの配下に実際にアプリケーションで使われるユーザデータの格納に使用されるEF(Elementary File)25,26,27,28が設けられている構成になっている。
【0027】
また、MF21の配下には、アクセス権を確立するためのキーの格納に使用されるキーEF29が設けられている。なお、DFは搭載しているアプリケーションに相当する数だけ設けられる。
【0028】
本実施形態では、ICカード1には、たとえば、クレジット系としてX社向けの1つのアプリケーションが、ポイント系としてA社、B社向けの2つのアプリケーションがそれぞれ格納されている。
【0029】
そして、本実施形態では、DF22(以後、DF1とも称す)には、たとえば、クレジットX社向けアプリケーション用ファイルとしてDF名が「クレジットX社」と設定され、その配下には、クレジットX社向けアプリケーションで使用されるEF25(以後、EF1−1とも称す)、EF26(以後、EF1−2とも称す)という2つのファイルが存在する。
【0030】
また、DF23(以後、DF2とも称す)には、たとえば、ポイントA社系向けアプリケーション用ファイルとしてDF名が「ポイントA社系」と設定され、その配下には、ポイントA社系向けアプリケーションで使用されるEF27(以後、EF2−1とも称す)、EF28(以後、EF2−2とも称す)という2つのファイルが存在する。このうち、EF2−1は共通データ、EF2−2はポイントA社系内のそれぞれのデータが格納されている。
【0031】
EF2−2に格納されるデータは、たとえば、図4に示すような入れ子構造を持つデータである。すなわち、図4(a)に示すように、ポイントPのデータとして、図4(a)に示すように、ポイントP識別子(EA)161とポイントPのデータ長162とポイントPの値163とから構成される第2データ表現形式のデータが格納される。
【0032】
上記ポイントPの値163は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)164とポイント値長165とポイント値166とから構成されるデータ167、ポイント加算値識別子(DF04)168とポイント加算値長169とポイント加算値(01)170とから構成されるデータ171、ポイント加算値識別子(DF04)172とポイント加算値長173とポイント加算値(01)174とから構成されるデータ175、ポイント加算値識別子(DF04)176とポイント加算値長177とポイント加算値(02)178とから構成されるデータ179が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0033】
また、図4(b)に示すように、ポイントQのデータとして、ポイントQ識別子(EB)181とポイントQのデータ長182とポイントQの値183とから構成される第2データ表現形式のデータが格納される。
【0034】
上記ポイントQの値183は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)184とポイント値長185とポイント値186とから構成されるデータ187、ポイント加算値識別子(DF04)188とポイント加算値長189とポイント加算値(01)190とから構成されるデータ191、ポイント加算値識別子(DF04)192とポイント加算値長193とポイント加算値(03)194とから構成されるデータ195が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0035】
図5は、データ識別子を指定することにより読出し・書換え等が行なわれるデータを管理するデータ管理情報を示しており、たとえば、データメモリ15に格納されている。このデータ管理情報は、データ数領域200、制御情報領域201、空き領域202から構成される。データ数領域200には、制御情報領域201に記憶されたデータの数(制御情報の数)を示す情報が記憶される。制御情報領域201には、データ(入れ子構造のデータについては第1階層のデータ)の数に応じた数の制御情報201a,201b,…が記憶される。
【0036】
制御情報領域201内の制御情報201a,201b,…は、各データ(入れ子構造のデータについては第1階層のデータ)に対応して設けられる。図5に示す例では、各制御情報201a,201b,…は、データ識別子情報210、設定アドレス情報211、設定可能サイズ情報212、および、セキュリティ条件情報213から構成されている。
【0037】
データ識別子情報210は、外部装置から指定された識別子と当該データ識別子情報とを比較し、両者が一致した場合に本情報を後続の処理に使用する。設定アドレス情報211は、当該データがカード内のデータメモリ15のどのアドレスに配置されているかを示す情報である。設定可能サイズ情報212は、設定可能なサイズを示す情報であり、本情報の範囲内であれば当該データは可変長にて設定可能である。セキュリティ条件情報213は、当該データに対して読出しや書込みを行なう場合に設定されているべきセキュリティ条件である。
なお、上記データ管理情報の詳細は、たとえば、特開平11−282989号公報に記載されているので、それを参照されたい。
【0038】
図6は、制御情報により所定のアドレスに設定されるデータのフォーマットを示している。データは、制御情報の設定アドレス情報211の示すデータメモリ15上のアドレスに設定されている。図6において、220はデータの長さを示すデータ管理情報、221はデータの本体部分である。222は当該データの正当性管理情報であり、たとえば、データ管理情報220およびデータ221の排他的論理和などによりデータの正当性の確認に使用される。
【0039】
図7は、リーダライタ2からICカード1に対して供給される入れ子構造のデータの検索・存在個数出力を指示するための命令データ(検索・存在個数出力コマンド)の構成を示している。検索・存在個数出力コマンドは、コマンドヘッダ部301、および、コマンドヘッダ部301のデータ長を示すLe部306から構成されている。
【0040】
コマンドヘッダ部301は、コマンドの分類部(CLA:class)302、命令部(INS:instruction)303、および、パラメータデータ(P1、P2)304,305から構成されている。
P1部304、P2部305は、検索するデータ識別子を示している。すなわち、たとえば、図4におけるポイント加算値識別子“DF04”を検索する場合は、P1部304に“DF”、P2部305に“04”がセットされる。
【0041】
ICカード1のCPU14は、この検索・存在個数出力コマンドのコマンドヘッダ部301のP1部304とP2部305にセットされたデータ識別子から、指定されたデータ識別子を探し出し、出力する。
【0042】
図8は、リーダライタ2から送られた検索・存在個数出力コマンドを実行した後、ICカード1がリーダライタ2へ出力するレスポンスデータの構成を示している。このレスポンスデータは、検索・存在個数出力コマンドのP1部304、P2部305で指定された識別子のCPU14による検索結果(指定された識別子を含む識別子情報)がセットされるデータ部401、および、処理結果を示すステータスコードがセットされるステータスコード部402,403から構成されている。
【0043】
上記データ部401には、検索・存在個数出力コマンドに対する検索結果がセットされる。ここでは、上記データ部401には、検索・存在個数出力コマンドで指定された第2階層のデータの識別子の検索結果として、指定された識別子の第2階層のデータを含む第1階層のデータの識別子を示す情報とその存在個数がセットされる。
【0044】
すなわち、たとえば、図4に示すデータを有するICカード1では、第2階層のデータとしてポイント加算値識別子“DF04”を指定するコマンドを実行した場合、データ部401には、ポイントP識別子(EA)161と存在個数“03”と、ポイントQ識別子(EB)181と存在個数“02”とがセットされて出力される。
【0045】
図9は、出力するレスポンスデータが格納されるレスポンス用データメモリの構成を示しており、たとえば、データメモリ15内に設けられている。このレスポンス用データメモリは、レスポンスデータ長管理情報が格納される領域501、および、レスポンスデータが格納される領域502から構成されている。このレスポンス用データメモリに格納されるデータは、図8に示すデータ部401にセットされるデータである。
【0046】
次に、このような構成において検索・存在個数出力コマンドに対する処理について図10および図11に示すフローチャートを参照して説明する。
まず、外部装置としてのリーダライタ2がICカード1に対して検索・存在個数出力コマンドを供給したものとする。ICカード1では、通信部12が検索・存在個数出力コマンドを受信する。受信した検索・存在個数出力コマンドは、通信部12からCPU14に供給される。すると、CPU14は、受信した検索・存在個数出力コマンドのコマンドヘッダ部301のCLA部302およびINS部303により当該コマンドが検索・存在個数出力コマンドであることを判断する。
【0047】
ICカード1のCPU14は、受信されたコマンドが検索・存在個数出力コマンドであると判断すると、図5のデータ管理情報から第1番目の制御情報(制御情報#1)201aを読出す(ステップS100)。
【0048】
次に、当該制御情報201a内の設定アドレス情報211で示すアドレスに既に第1階層のデータが設定されているか否かを確認する(ステップS101)。第1階層のデータが設定されている場合はステップS103へ、第1階層のデータが設定されていない場合は後述するステップS122へ進む。
【0049】
ステップS103では、当該データのデータ長管理情報220が制御情報201a内の設定可能サイズ情報212の範囲内であるかを確認する。範囲内である場合はステップS105へ、範囲を超えている場合はステップS104へ進む。ステップS104では、データ管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0050】
ステップS105では、当該データのデータ正当性管理情報222を確認する。正当性が確認できた場合はステップS107へ、異常である場合はステップS106へ進む。ステップS106では、データ正当性管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0051】
ステップS107では、制御情報201a内の設定アドレス情報211が示すアドレスのデータを1バイト(Byte)読込むとともに、ワーキングメモリ16の識別子カウンタをクリアする。次に、この読込んだデータを確認し(ステップS108)、次のデータも識別子の一部であると確認された場合は、ステップS109へ進み、次のデータを1バイト読込む。
【0052】
ステップS108の確認の結果、次のデータも識別子の一部でないと確認された場合、あるいは、ステップS109の処理後、読込んだ識別子がコマンドのP1部304、P2部305で指定されている識別子と一致するか否かをチェックし(ステップS110)、一致する場合はステップS111へ進み、一致しない場合はステップS112へ進む。
【0053】
ステップS112では、次のデータを1バイト読込み、読込んだ値をデータ長とし、次の識別子に相当するアドレスを求める。次に、ステップS112で求められた次の識別子に相当するアドレスとデータ長管理情報220との整合性を確認し(ステップS113)、後ろにデータがない場合は後述するステップS120へ進み、後ろにデータがある場合はステップS116へ進む。ここで、後ろにデータがないと判定する状態としては、たとえば、求められたアドレスがデータ長管理情報220で指定されたデータ長のアドレスの範囲を超えている場合などがある(図12参照)。
【0054】
ステップS116では、ステップS112で求められた次の識別子に相当するアドレスのデータを1バイト読込む。次に、この読込んだデータを確認し(ステップS117)、次のデータも識別子の一部であると確認された場合は次のデータを1バイト読込み(ステップS118)、ステップS117へ戻る。
【0055】
ステップS117の確認の結果、次のデータも識別子の一部でないと確認された場合、ステップS117,S118で読込んだデータが次のデータの識別子を示すデータであるものと判断する。したがって、次のデータは識別子の一部でないと判断した場合、ステップS110へ戻り、読込んだ識別子がコマンドのP1部304とP2部305で指定されている識別子と一致するか否かを判断する。
【0056】
ステップS110における判断の結果、読込んだ識別子がコマンドのP1部304とP2部305で指定されている識別子と一致すると判断した場合、ワーキングメモリ16の識別子カウンタをインクリメントし(ステップS111)、ステップS112へ進む。
【0057】
ステップS113における判断の結果、後ろにデータが無い場合(つまり、1つの制御情報で示される第1階層のデータの検索が終了した場合)、CPU14はワーキングメモリ16の識別子カウンタが零(0)であるか否かを判断する(ステップS120)。
【0058】
ステップS120における判断の結果、零(0)でない場合、CPU14は当該制御情報201a内のデータ識別子情報210(つまり、第1階層のデータの識別子)とワーキングメモリ16の識別子カウンタの値をレスポンス用データメモリ(図9参照)の領域502に格納する(ステップS121)。この際、当該第1階層のデータの識別子は、レスポンス用データメモリの領域501に格納しているレスポンスデータ長管理情報としてデータ長をオフセットしたアドレスにセットされる。
【0059】
また、CPU14は、レスポンス用データメモリの領域502に識別子とワーキングメモリ16の識別子カウンタの値をセットすると、レスポンスデータ長管理情報をセットしたデータ長分を加算することにより、セットした識別子のデータ分だけレスポンスデータのデータ長を変更する(ステップS121)。
【0060】
ステップS122で、CPU14は、データ管理情報に、当該制御情報の後に更に次の制御情報があるか否かを確認し、ある場合はステップS123へ進み、次の制御情報201bを読出して、ステップS101へ戻る。
すなわち、CPU14は、ステップS100〜S123の処理を全ての制御情報について実行する。これにより、各制御情報で示される全ての第1階層のデータについて、当該検索・存在個数出力コマンドで指定された識別子の第2階層のデータの検索およびカウントを行なう。
【0061】
ステップS122における確認の結果、次の制御情報がない場合、CPU14は、各制御情報で示される全ての第1階層のデータについての検索が完了したと判断する。これにより、検索処理が完了したと判断した場合、CPU14は、異常無しの応答ステータスとともにレスポンス用データメモリ(図9参照)内のレスポンスデータ長管理情報分のレスポンスデータをリーダライタ2へ出力する(ステップS124)。
【0062】
なお、本例では、識別子が1バイト長または2バイト長のみで構成されるデータで説明を行なったが、3バイト以上の識別子が含まれる場合も同様である。また、本例では、長さ情報が1バイト長のみで構成されるデータで説明を行なったが、たとえば、ISO/IEC7816−4 Annex.Dで記載されているような、長さ情報が1バイト以上で表現される場合も同様である。
【0063】
次に、ICカード1における第2階層のデータの合計値を出力する処理について説明する。
図13は、リーダライタ2からICカード1に対して供給される第2階層のデータの合計値を出力する指示を行なうための命令データ(合計値出力コマンド)の構成を示している。合計値出力コマンドは、コマンドヘッダ部601、および、コマンドヘッダ部601のデータ長を示すLe部606から構成されている。
【0064】
コマンドヘッダ部601は、コマンドの分類部(CLA:class)602、命令部(INS:instruction)603、および、パラメータデータ(P1、P2)604,605から構成されている。
【0065】
P1部604、P2部605は、検索するデータ識別子を示している。すなわち、たとえば、図4におけるポイント加算値識別子“DF04”を検索する場合は、P1部604に“DF”、P2部605に“04”がセットされる。
【0066】
ICカード1のCPU14は、この合計値出力コマンドのコマンドヘッダ部601のP1部604とP2部605にセットされたデータ識別子から、指定されたデータ識別子を探し出し、合計値を計算して出力する。
【0067】
図14は、リーダライタ2から送られた合計値出力コマンドを実行した後、ICカード1がリーダライタ2へ出力するレスポンスデータの構成を示している。このレスポンスデータは、合計値出力コマンドのP1部604、P2部605で指定された識別子のCPU14による計算結果がセットされるデータ部701、および、処理結果を示すステータスコードがセットされるステータスコード部702,703から構成されている。
【0068】
上記データ部701には、合計値出力コマンドに対する計算結果がセットされる。ここでは、上記データ部701には、合計値出力コマンドで指定された第2階層のデータの識別子の検索結果として、指定された識別子の第2階層のデータの合計値がセットされる。
【0069】
すなわち、たとえば、図4に示すデータを有するICカード1では、第2階層のデータとしてポイント加算値識別子“DF04”を指定するコマンドを実行した場合、データ部701には、ポイントP識別子“EA”とポイントQ識別子“EB”に含まれるポイント加算値識別子“DF04”のポイント加算値170,174,178,190,194の合計値“08”がセットされて出力される。
【0070】
次に、このような構成において合計値出力コマンドに対する処理について図15および図16に示すフローチャートを参照して説明する。
まず、外部装置としてのリーダライタ2がICカード1に対して合計値出力コマンドを供給したものとする。ICカード1では、通信部12が合計値出力コマンドを受信する。受信した合計値出力コマンドは、通信部12からCPU14に供給される。すると、CPU14は、受信した合計値出力コマンドのコマンドヘッダ部601のCLA部602およびINS部603により当該コマンドが合計値出力コマンドであることを判断する。
【0071】
ICカード1のCPU14は、受信されたコマンドが合計値出力コマンドであると判断すると、図5のデータ管理情報から第1番目の制御情報(制御情報#1)201aを読出す(ステップS200)。
【0072】
次に、当該制御情報201a内の設定アドレス情報211で示すアドレスに既に第1階層のデータが設定されているか否かを確認する(ステップS201)。第1階層のデータが設定されている場合はステップS203へ、第1階層のデータが設定されていない場合は後述するステップS220へ進む。
【0073】
ステップS203では、当該データのデータ長管理情報220が制御情報201a内の設定可能サイズ情報212の範囲内であるかを確認する。範囲内である場合はステップS205へ、範囲を超えている場合はステップS204へ進む。ステップS204では、データ管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0074】
ステップS205では、当該データのデータ正当性管理情報222を確認する。正当性が確認できた場合はステップS207へ、異常である場合はステップS206へ進む。ステップS206では、データ正当性管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0075】
ステップS207では、制御情報201a内の設定アドレス情報211が示すアドレスのデータを1バイト読込むとともに、ワーキングメモリ16の合計値エリアをクリアする。次に、この読込んだデータを確認し(ステップS208)、次のデータも識別子の一部であると確認された場合は、ステップS209へ進み、次のデータを1バイト読込む。
【0076】
ステップS208の確認の結果、次のデータも識別子の一部でないと確認された場合、あるいは、ステップS209の処理後、読込んだ識別子がコマンドのP1部604、P2部605で指定されている識別子と一致するか否かをチェックし(ステップS210)、一致する場合はステップS211へ進み、一致しない場合はステップS212へ進む。
【0077】
ステップS212では、次のデータを1バイト読込み、読込んだ値をデータ長とし、次の識別子に相当するアドレスを求める。次に、ステップS212で求められた次の識別子に相当するアドレスとデータ長管理情報220との整合性を確認し(ステップS213)、後ろにデータがある場合はステップS216へ進む。ここで、後ろにデータがないと判定する状態としては、たとえば、求められたアドレスがデータ長管理情報220で指定されたデータ長のアドレスの範囲を超えている場合などがある(図12参照)。
【0078】
ステップS216では、ステップS212で求められた次の識別子に相当するアドレスのデータを1バイト読込む。次に、この読込んだデータを確認し(ステップS217)、次のデータも識別子の一部であると確認された場合は次のデータを1バイト読込み(ステップS218)、ステップS217へ戻る。
【0079】
ステップS217の確認の結果、次のデータも識別子の一部でないと確認された場合、ステップS217,S218で読込んだデータが次のデータの識別子を示すデータであるものと判断する。したがって、次のデータは識別子の一部でないと判断した場合、ステップS210へ戻り、読込んだ識別子がコマンドのP1部604とP2部605で指定されている識別子と一致するか否かを判断する。
【0080】
ステップS210における判断の結果、読込んだ識別子がコマンドのP1部604とP2部605で指定されている識別子と一致すると判断した場合、当該識別子の次のデータを1バイト読込み、読込んだ値をデータ長とするとともに、当該識別子のデータ長分のデータを読込み、ワーキングメモリ16の合計値エリアに加算する(ステップS211)。
【0081】
ステップS213における判断の結果、後ろにデータがない場合(つまり、1つの制御情報で示される第1階層のデータの検索が終了した場合)、CPU14は、データ管理情報に、当該制御情報の後に更に次の制御情報があるか否かを確認し(ステップS220)、ある場合はステップS221へ進み、次の制御情報201bを読出して、ステップS201へ戻る。
【0082】
すなわち、CPU14は、ステップS200〜S221の処理を全ての制御情報について実行する。これにより、各制御情報で示される全ての第1階層のデータについて、当該合計値出力コマンドで指定された識別子の第2階層のデータの検索および合計値の計算を行なう。
【0083】
ステップS220における確認の結果、次の制御情報がない場合、CPU14は、各制御情報で示される全ての第1階層のデータについての検索が完了したと判断する。これにより、検索処理が完了したと判断した場合、CPU14は、異常無しの応答ステータスとともにワーキングメモリ16の合計値エリアのデータをリーダライタ2へ出力する(ステップS222)。
【0084】
これにより、データ全体を読出すことなく、指定された第2階層のデータの合計値を得ることができる。
【0085】
次に、ICカード1における第2階層のデータの最終更新日値(最新の日付情報)を出力する処理について説明する。
図17は、データ内に最終更新日値が含まれる入れ子構造のデータ例を示している。図17(a)に示すように、ポイントXのデータとして、ポイントX識別子(E1)101とポイントXのデータ長102とポイントXの値112とから構成される第2データ表現形式のデータが格納される。上記ポイントXの値112は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)103とポイント値長104とポイント値105とから構成されるデータ113、ポイント上限値識別子(DF02)106とポイント上限値長107とポイント上限値108とから構成されるデータ114、ポイント最終更新日識別子(DF03)109とポイント最終更新日値長110とポイント最終更新日値(20041224)111とから構成されるデータ115が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0086】
また、図17(b)に示すように、ポイントYのデータとして、ポイントY識別子(E2)121とポイントYのデータ長122とポイントYの値123とから構成される第2データ表現形式のデータが格納される。上記ポイントYの値123は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)124とポイント値長125とポイント値126とから構成されるデータ127、ポイント上限値識別子(DF02)128とポイント上限値長129とポイント上限値130とから構成されるデータ131が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0087】
また、図17(c)に示すように、ポイントZのデータとして、ポイントZ識別子(E3)141とポイントZのデータ長142とポイントZの値143とから構成される第2データ表現形式のデータが格納される。上記ポイントZの値143は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)144とポイント値長145とポイント値146とから構成されるデータ147、ポイント上限値識別子(DF02)148とポイント上限値長149とポイント上限値150とから構成されるデータ151、ポイント最終更新日識別子(DF03)152とポイント最終更新日値長153とポイント最終更新日値(20050401)154とから構成されるデータ155が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0088】
図18は、リーダライタ2からICカード1に対して供給される第2階層のデータの最終更新日値を出力する指示を行なうための命令データ(最終更新日出力コマンド)の構成を示している。最終更新日出力コマンドは、コマンドヘッダ部801、および、コマンドヘッダ部801のデータ長を示すLe部806から構成されている。
【0089】
コマンドヘッダ部801は、コマンドの分類部(CLA:class)802、命令部(INS:instruction)803、および、パラメータデータ(P1、P2)804,805から構成されている。
【0090】
P1部804、P2部805は、検索するデータ識別子を示している。すなわち、たとえば、図17におけるポイント最終更新日識別子“DF03”を検索する場合は、P1部604に“DF”、P2部605に“03”がセットされる。
【0091】
ICカード1のCPU14は、この最終更新日出力コマンドのコマンドヘッダ部801のP1部804とP2部805にセットされたデータ識別子から、指定されたデータ識別子を探し出し、最終更新日値を計算して出力する。
【0092】
図19は、リーダライタ2から送られた最終更新日出力コマンドを実行した後、ICカード1がリーダライタ2へ出力するレスポンスデータの構成を示している。このレスポンスデータは、最終更新日出力コマンドのP1部804、P2部805で指定された識別子のCPU14による計算結果がセットされるデータ部901、および、処理結果を示すステータスコードがセットされるステータスコード部902,903から構成されている。
【0093】
上記データ部901には、最終更新日出力コマンドに対する計算結果がセットされる。ここでは、上記データ部701には、合計値出力コマンドで指定された第2階層のデータの識別子の検索結果として、指定された識別子の第2階層のデータの最終更新日値がセットされる。
【0094】
すなわち、たとえば、図17に示すデータを有するICカード1では、第2階層のデータとしてポイント最終更新日識別子“DF03”を指定するコマンドを実行した場合、データ部901には、ポイントX識別子“E1”とポイントZ識別子“E3”に含まれるポイント最終更新日識別子“DF03”のポイント最終更新日値(20050401)154がセットされて出力される。
【0095】
次に、このような構成において最終更新日出力コマンドに対する処理について図20および図21に示すフローチャートを参照して説明する。
まず、外部装置としてのリーダライタ2がICカード1に対して最終更新日出力コマンドを供給したものとする。ICカード1では、通信部12が最終更新日出力コマンドを受信する。受信した最終更新日出力コマンドは、通信部12からCPU14に供給される。すると、CPU14は、受信した最終更新日出力コマンドのコマンドヘッダ部801のCLA部802およびINS部803により当該コマンドが最終更新日出力コマンドであることを判断する。
【0096】
ICカード1のCPU14は、受信されたコマンドが最終更新日出力コマンドであると判断すると、図5のデータ管理情報から第1番目の制御情報(制御情報#1)201aを読出す(ステップS300)。
【0097】
次に、当該制御情報201a内の設定アドレス情報211で示すアドレスに既に第1階層のデータが設定されているか否かを確認する(ステップS301)。第1階層のデータが設定されている場合はステップS303へ、第1階層のデータが設定されていない場合は後述するステップS321へ進む。
【0098】
ステップS303では、当該データのデータ長管理情報220が制御情報201a内の設定可能サイズ情報212の範囲内であるかを確認する。範囲内である場合はステップS305へ、範囲を超えている場合はステップS304へ進む。ステップS304では、データ管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0099】
ステップS305では、当該データのデータ正当性管理情報222を確認する。正当性が確認できた場合はステップS307へ、異常である場合はステップS306へ進む。ステップS306では、データ正当性管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0100】
ステップS307では、制御情報201a内の設定アドレス情報211が示すアドレスのデータを1バイト読込むとともに、ワーキングメモリ16の最終更新日エリアをクリアする。次に、この読込んだデータを確認し(ステップS308)、次のデータも識別子の一部であると確認された場合は、ステップS309へ進み、次のデータを1バイト読込む。
【0101】
ステップS308の確認の結果、次のデータも識別子の一部でないと確認された場合、あるいは、ステップS309の処理後、読込んだ識別子がコマンドのP1部804、P2部805で指定されている識別子と一致するか否かをチェックし(ステップS310)、一致する場合はステップS311へ進み、一致しない場合はステップS312へ進む。
【0102】
ステップS312では、次のデータを1バイト読込み、読込んだ値をデータ長とし、次の識別子に相当するアドレスを求める。次に、ステップS312で求められた次の識別子に相当するアドレスとデータ長管理情報220との整合性を確認し(ステップS313)、後ろにデータがある場合はステップS316へ進む。ここで、後ろにデータがないと判定する状態としては、たとえば、求められたアドレスがデータ長管理情報220で指定されたデータ長のアドレスの範囲を超えている場合などがある(図12参照)。
【0103】
ステップS316では、ステップS312で求められた次の識別子に相当するアドレスのデータを1バイト読込む。次に、この読込んだデータを確認し(ステップS317)、次のデータも識別子の一部であると確認された場合は次のデータを1バイト読込み(ステップS318)、ステップS317へ戻る。
【0104】
ステップS317の確認の結果、次のデータも識別子の一部でないと確認された場合、ステップS317,S318で読込んだデータが次のデータの識別子を示すデータであるものと判断する。したがって、次のデータは識別子の一部でないと判断した場合、ステップS310へ戻り、読込んだ識別子がコマンドのP1部804とP2部804で指定されている識別子と一致するか否かを判断する。
【0105】
ステップS310における判断の結果、読込んだ識別子がコマンドのP1部804とP2部804で指定されている識別子と一致すると判断した場合、当該識別子の次のデータを1バイト読込み、読込んだ値をデータ長とするとともに、当該識別子のデータ長分のデータを読込む(ステップS311)。
【0106】
次に、ステップS311で読込んだデータとワーキングメモリ16の最終更新日エリアのデータ(更新日)との比較を行ない(ステップS319)、ワーキングメモリ16の最終更新日エリアのデータ(更新日)の方が新しいと判断した場合(ワーキングメモリ16の最終更新日エリアのデータの方が新しい)、ステップS312へ進む。
【0107】
ステップS319における比較の結果、ワーキングメモリ16の最終更新日エリアのデータ(更新日)の方が古いと判断した場合(ワーキングメモリ16の最終更新日エリアのデータの方が古い)、ワーキングメモリ16の最終更新日エリアのデータを読込んだデータに変更し(ステップS320)、ステップS312へ進む。
【0108】
ステップS313における判断の結果、後ろにデータがない場合(つまり、1つの制御情報で示される第1階層のデータの検索が終了した場合)、CPU14は、データ管理情報に、当該制御情報の後に更に次の制御情報があるか否かを確認し(ステップS321)、ある場合はステップS322へ進み、次の制御情報201bを読出して、ステップS301へ戻る。
【0109】
すなわち、CPU14は、ステップS300〜S322の処理を全ての制御情報について実行する。これにより、各制御情報で示される全ての第1階層のデータについて、当該最終更新日出力コマンドで指定された識別子の第2階層のデータの検索および最終更新日値(最新の更新日値)の計算を行なう。
【0110】
ステップS321における確認の結果、次の制御情報がない場合、CPU14は、各制御情報で示される全ての第1階層のデータについての検索が完了したと判断する。これにより、検索処理が完了したと判断した場合、CPU14は、異常無しの応答ステータスとともにワーキングメモリ16の最終更新日エリアのデータをリーダライタ2へ出力する(ステップS323)。
【0111】
以上説明したように、上記実施の形態によれば、入れ子構造データを記憶するICカードにおいて、入れ子構造になっているデータをデータ構造解析なしで容易に検出したり、入れ子構造になっているデータの中に含まれるデータを操作することで容易に入れ子構造データの合計値や最終更新日値などのデータを取得することが可能となる。
【0112】
なお、前記実施の形態では、求めた識別子、その存在個数、値の合計値、最終更新日値などのデータを外部(リーダライタ)へ出力する場合について説明したが、必ずしも外部へ出力する必要はなく、たとえば、内部で保持しておくことで、内部で利用したり、必要に応じて外部へ出力したりする場合にも適用できる。
【0113】
また、携帯可能電子装置としてICカードに適用した場合について説明したが、これに限定されるものではなく、たとえば、PDAと称される携帯端末装置や携帯電話機などであっても適用でき、また、カード型に限らず、冊子型、ブロック形あるいはタグ型であってもよい。
【0114】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行なうことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0115】
1…ICカード(携帯可能電子装置)、1a…ICカード本体、2…リーダライタ(外部装置)、3…パーソナルコンピュータ、11…磁気ストライプ部、12…通信部、13…ICチップ、14…CPU、15…データメモリ、16…ワーキングメモリ、17…プログラムメモリ。
【技術分野】
【0001】
本発明の実施形態は、携帯可能電子装置、ICカードおよびICモジュールに関する。
【背景技術】
【0002】
近年、携帯可能な電子装置として、書込み、書換え可能な不揮発性のデータメモリとそれを制御するためのCPUを有し、外部からのデータの入出力を行なう手段を備えたICチップを内蔵した、いわゆるICカードが産業各方面で開発されている。
【0003】
ICカードは、従来までの磁気カード等と比較すると、磁気カードは個々のアプリケーションに対応した枚数を保持する必要があったが、1枚に複数のアプリケーションプログラムを保持することができるという利点がある。すなわち、銀行などの金融機関でキャッシュカード等として使用されるICカード、スポーツやレジャー施設での個人認証用のIDカード、パチンコ店等の遊技場におけるプリペイドカードなどを同一の1枚のICカードにより実現できる。
【0004】
この種のICカードは、利用アプリケーションの運用時に必要なデータなどがファイル形式でデータメモリに記憶されており、それぞれのファイルは複数のアプリケーションのそれぞれに対応している。
【0005】
個々のファイルは、外部装置からアプリケーション識別名などを入力することにより、選択的に対応するファイルのみが使用可能な状態となるようになっている。アプリケーションを選択した後、データの読出しや書換えなどの運用処理が行なわれる。
【0006】
一般に、ICカード内のデータは、識別子と長さとデータ値とから構成されていて、識別子によっては、いわゆる入れ子構造になっているものもある。このうような入れ子構造は、たとえば、ISO/IEC7816−4 Annex.Dで構造化されたタグフィールド(Tag field)などが定義されている。
また、入れ子構造になっていないデータを直接、読出し、追加、書換え、削除することが可能である。
【0007】
上述した従来の技術においては、たとえば、特許文献2に記述されているとおり、入れ子構造になっていないデータを直接、読出し、追加、書換え、削除することが可能である。入れ子構造になっていないデータを扱うシステムとしては読出し、追加、書換え、削除する機能があれば充分である。
【0008】
しかしながらその反面、入れ子構造になっているデータを扱うシステムの場合、ICカードが保持する指定した子タグデータの検索を行なったり、指定した子タグの全データを読出し演算したり、データの操作を行なうことが要求される。ところが、指定した子タグデータの読出しのアクセスを制御する必要があるため、一部のシステムでは読出し禁止が要求されることもある。また、ネットワーク環境を介する場合、ICカードへの送受信回数を減らすことが要求される。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平3−224047号公報
【特許文献2】特開平11−282989号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明が解決しようとする課題は、入れ子構造になっているデータをデータ構造解析なしで容易に検出したり、入れ子構造になっているデータの中に含まれるデータを操作することで容易に入れ子構造になっているデータの合計値や最新日付情報などのデータを取得することが可能な携帯可能電子装置、ICカードおよびICモジュールを提供することである。
【課題を解決するための手段】
【0011】
実施形態に係る携帯可能電子装置は、識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段とを具備している。
【図面の簡単な説明】
【0012】
【図1】実施形態に係る携帯可能電子装置としてのICカードを用いたICカードシステムの構成を概略的に示すブロック図。
【図2】ICカードの構成を概略的に示すブロック図。
【図3】データメモリに複数のアプリケーションを構成した場合のファイル構造の概念図。
【図4】メモリに格納される入れ子構造データの一例を示す図。
【図5】データ管理情報を説明するための図。
【図6】制御情報により所定のアドレスに設定されるデータのフォーマットを示す図。
【図7】検索・存在個数出力コマンドの構成を示す図。
【図8】検索・存在個数出力コマンドに対するレスポンスデータの構成を示す図。
【図9】出力するレスポンスデータが格納されるレスポンス用データメモリの構成を示す図。
【図10】検索・存在個数出力コマンドに対する処理の流れについて説明するフローチャート。
【図11】検索・存在個数出力コマンドに対する処理の流れについて説明するフローチャート。
【図12】アドレスとデータ長管理情報との整合性の確認およびデータ有無を判定する状態を説明する図。
【図13】合計値出力コマンドの構成を示す図。
【図14】合計値出力コマンドに対するレスポンスデータの構成を示す図。
【図15】合計値出力コマンドに対する処理の流れについて説明するフローチャート。
【図16】合計値出力コマンドに対する処理の流れについて説明するフローチャート。
【図17】データ内に最終更新日値が含まれる入れ子構造データの一例を示す図。
【図18】最終更新日コマンドの構成を示す図。
【図19】最終更新日コマンドに対するレスポンスデータの構成を示す図。
【図20】最終更新日コマンドに対する処理の流れについて説明するフローチャート。
【図21】最終更新日コマンドに対する処理の流れについて説明するフローチャート。
【発明を実施するための形態】
【0013】
以下、実施形態について図面を参照して説明する。
図1は、本実施形態に係る携帯可能電子装置としてのICカードを用いたICカードシステムの構成を概略的に示すものである。図1において、このICカードシステムは、ICカード1に対しデータの読出しや書込みを行なう外部装置としてのリーダライタ2、リーダライタ2が接続された上位装置としてのパーソナルコンピュータ(以降、単にパソコンと略称する)3から構成されている。パソコン3は、インターネット、公衆電話網、ISDNなどの公衆通信網4を介して外部の情報センタ5へ接続するように構成されている。
【0014】
パソコン3は、演算部6としてCPU6aと主記憶装置としてのメモリ6bとを有している。また、パソコン3は、表示手段としてのディスプレイ7、入力手段としてのキーボード8、記憶手段としてのハードディスク装置(HDD)9を有している。
【0015】
ディスプレイ7は、操作手順や作動状態をオペレータに知らせるものである。キーボード8は、オペレータによって操作入力されるものである。ハードディスク装置9には、機密情報である複数のファイル、たとえば、第1電子データファイルF1、第2電子データファイルF2、第3電子データファイルF3などが格納されている。そして、リーダライタ2を介して、パソコン3とICカード1との間で各種データ交換が行なわれるようになっている。
【0016】
リーダライタ2は、図示しない内部メモリや送信手段などを有していて、ICカード1に対するデータの読取り、書込み(送受信)などを接触あるいは非接触で行なうものである。接触式ICカードを用いる場合には、リーダライタ2に接触式ICカードを挿入するためのICカード挿入部(図示せず)が設けられ、無線式ICカードを用いる場合には、リーダライタ2と無線式ICカードとの間を通信するための通信部(図示せず)が設けられる。
【0017】
ICカード1は、たとえば、図2に示すように、カード本体1aの表面に設けられた磁気ストライプ部11、リーダライタ2と信号の授受を行なう受信手段および出力手段としての通信部12、および、1つ(あるいは複数)のICチップ13から構成されている。
【0018】
通信部12は、無線式ICカード1の場合にはアンテナ部として構成され、リーダライタ2から送信された変調波を非接触で受信したり外部へ変調波を発信したりするようになっている。また、この通信部12で受信した変調波から内部回路に供給するための電源やクロックを生成するようになっている。また、接触式ICカード1の場合にはコンタクト部として構成され、リーダライタ2に設けられたICカード端子部(図示しない)と接触することにより電源やクロックを得るようになっている。
【0019】
ICチップ13は、制御素子としてのCPU14、記憶手段してのデータメモリ15、ワーキングメモリ16、プログラムメモリ17から構成され、通信部12と接続された状態で一体的にICモジュール化されて、ICカード本体1a内に埋設されている。
【0020】
CPU14は、本実施形態のポイントである後述するファイルを選択する処理を実行する他、各種の判定処理や判断処理およびメモリへの書込みや読出しなどのデータ処理を行なう制御部である。
【0021】
データメモリ15は、アプリケーションデータなどの各種データの記憶に使用され、たとえば、EEPROM(エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ)などの消去(書換え)可能な不揮発性メモリで構成されている。
【0022】
ワーキングメモリ16は、CPU14が処理を行なう際の処理データを一時的に保持するための作業用のメモリであり、たとえば、RAM(ランダム・アクセス・メモリ)などの揮発性メモリで構成されている。
【0023】
プログラムメモリ17は、たとえば、マスクROM(リード・オンリ・メモリ)などの書換え不可能な固定メモリで構成されており、上述するような各基本機能を実現するサブルーチンを備えたCPU14の制御プログラムなどを記憶している。
【0024】
なお、ICカード1に登録されているアプリケーションとしては、たとえば、クレジット、ポイントシステム、IDカードなどが挙げられる。
【0025】
データメモリ15には、たとえば、図3に示すように、複数のアプリケーションに関する情報がファイル構造で記憶されている。このファイル構造は、ISO/IEC7816−4に基づき、色々なフォルダの種類を持ったディレクトリのツリー構造になっており、複数のアプリケーションが登録可能である。
【0026】
すなわち、図3に示すように、最上位がMF(Master File)21で、その配下に各アプリケーションごとに設定されるフォルダとしてDF(Dedicated File)22,23,24が設けられ、さらに、それらの配下に実際にアプリケーションで使われるユーザデータの格納に使用されるEF(Elementary File)25,26,27,28が設けられている構成になっている。
【0027】
また、MF21の配下には、アクセス権を確立するためのキーの格納に使用されるキーEF29が設けられている。なお、DFは搭載しているアプリケーションに相当する数だけ設けられる。
【0028】
本実施形態では、ICカード1には、たとえば、クレジット系としてX社向けの1つのアプリケーションが、ポイント系としてA社、B社向けの2つのアプリケーションがそれぞれ格納されている。
【0029】
そして、本実施形態では、DF22(以後、DF1とも称す)には、たとえば、クレジットX社向けアプリケーション用ファイルとしてDF名が「クレジットX社」と設定され、その配下には、クレジットX社向けアプリケーションで使用されるEF25(以後、EF1−1とも称す)、EF26(以後、EF1−2とも称す)という2つのファイルが存在する。
【0030】
また、DF23(以後、DF2とも称す)には、たとえば、ポイントA社系向けアプリケーション用ファイルとしてDF名が「ポイントA社系」と設定され、その配下には、ポイントA社系向けアプリケーションで使用されるEF27(以後、EF2−1とも称す)、EF28(以後、EF2−2とも称す)という2つのファイルが存在する。このうち、EF2−1は共通データ、EF2−2はポイントA社系内のそれぞれのデータが格納されている。
【0031】
EF2−2に格納されるデータは、たとえば、図4に示すような入れ子構造を持つデータである。すなわち、図4(a)に示すように、ポイントPのデータとして、図4(a)に示すように、ポイントP識別子(EA)161とポイントPのデータ長162とポイントPの値163とから構成される第2データ表現形式のデータが格納される。
【0032】
上記ポイントPの値163は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)164とポイント値長165とポイント値166とから構成されるデータ167、ポイント加算値識別子(DF04)168とポイント加算値長169とポイント加算値(01)170とから構成されるデータ171、ポイント加算値識別子(DF04)172とポイント加算値長173とポイント加算値(01)174とから構成されるデータ175、ポイント加算値識別子(DF04)176とポイント加算値長177とポイント加算値(02)178とから構成されるデータ179が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0033】
また、図4(b)に示すように、ポイントQのデータとして、ポイントQ識別子(EB)181とポイントQのデータ長182とポイントQの値183とから構成される第2データ表現形式のデータが格納される。
【0034】
上記ポイントQの値183は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)184とポイント値長185とポイント値186とから構成されるデータ187、ポイント加算値識別子(DF04)188とポイント加算値長189とポイント加算値(01)190とから構成されるデータ191、ポイント加算値識別子(DF04)192とポイント加算値長193とポイント加算値(03)194とから構成されるデータ195が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0035】
図5は、データ識別子を指定することにより読出し・書換え等が行なわれるデータを管理するデータ管理情報を示しており、たとえば、データメモリ15に格納されている。このデータ管理情報は、データ数領域200、制御情報領域201、空き領域202から構成される。データ数領域200には、制御情報領域201に記憶されたデータの数(制御情報の数)を示す情報が記憶される。制御情報領域201には、データ(入れ子構造のデータについては第1階層のデータ)の数に応じた数の制御情報201a,201b,…が記憶される。
【0036】
制御情報領域201内の制御情報201a,201b,…は、各データ(入れ子構造のデータについては第1階層のデータ)に対応して設けられる。図5に示す例では、各制御情報201a,201b,…は、データ識別子情報210、設定アドレス情報211、設定可能サイズ情報212、および、セキュリティ条件情報213から構成されている。
【0037】
データ識別子情報210は、外部装置から指定された識別子と当該データ識別子情報とを比較し、両者が一致した場合に本情報を後続の処理に使用する。設定アドレス情報211は、当該データがカード内のデータメモリ15のどのアドレスに配置されているかを示す情報である。設定可能サイズ情報212は、設定可能なサイズを示す情報であり、本情報の範囲内であれば当該データは可変長にて設定可能である。セキュリティ条件情報213は、当該データに対して読出しや書込みを行なう場合に設定されているべきセキュリティ条件である。
なお、上記データ管理情報の詳細は、たとえば、特開平11−282989号公報に記載されているので、それを参照されたい。
【0038】
図6は、制御情報により所定のアドレスに設定されるデータのフォーマットを示している。データは、制御情報の設定アドレス情報211の示すデータメモリ15上のアドレスに設定されている。図6において、220はデータの長さを示すデータ管理情報、221はデータの本体部分である。222は当該データの正当性管理情報であり、たとえば、データ管理情報220およびデータ221の排他的論理和などによりデータの正当性の確認に使用される。
【0039】
図7は、リーダライタ2からICカード1に対して供給される入れ子構造のデータの検索・存在個数出力を指示するための命令データ(検索・存在個数出力コマンド)の構成を示している。検索・存在個数出力コマンドは、コマンドヘッダ部301、および、コマンドヘッダ部301のデータ長を示すLe部306から構成されている。
【0040】
コマンドヘッダ部301は、コマンドの分類部(CLA:class)302、命令部(INS:instruction)303、および、パラメータデータ(P1、P2)304,305から構成されている。
P1部304、P2部305は、検索するデータ識別子を示している。すなわち、たとえば、図4におけるポイント加算値識別子“DF04”を検索する場合は、P1部304に“DF”、P2部305に“04”がセットされる。
【0041】
ICカード1のCPU14は、この検索・存在個数出力コマンドのコマンドヘッダ部301のP1部304とP2部305にセットされたデータ識別子から、指定されたデータ識別子を探し出し、出力する。
【0042】
図8は、リーダライタ2から送られた検索・存在個数出力コマンドを実行した後、ICカード1がリーダライタ2へ出力するレスポンスデータの構成を示している。このレスポンスデータは、検索・存在個数出力コマンドのP1部304、P2部305で指定された識別子のCPU14による検索結果(指定された識別子を含む識別子情報)がセットされるデータ部401、および、処理結果を示すステータスコードがセットされるステータスコード部402,403から構成されている。
【0043】
上記データ部401には、検索・存在個数出力コマンドに対する検索結果がセットされる。ここでは、上記データ部401には、検索・存在個数出力コマンドで指定された第2階層のデータの識別子の検索結果として、指定された識別子の第2階層のデータを含む第1階層のデータの識別子を示す情報とその存在個数がセットされる。
【0044】
すなわち、たとえば、図4に示すデータを有するICカード1では、第2階層のデータとしてポイント加算値識別子“DF04”を指定するコマンドを実行した場合、データ部401には、ポイントP識別子(EA)161と存在個数“03”と、ポイントQ識別子(EB)181と存在個数“02”とがセットされて出力される。
【0045】
図9は、出力するレスポンスデータが格納されるレスポンス用データメモリの構成を示しており、たとえば、データメモリ15内に設けられている。このレスポンス用データメモリは、レスポンスデータ長管理情報が格納される領域501、および、レスポンスデータが格納される領域502から構成されている。このレスポンス用データメモリに格納されるデータは、図8に示すデータ部401にセットされるデータである。
【0046】
次に、このような構成において検索・存在個数出力コマンドに対する処理について図10および図11に示すフローチャートを参照して説明する。
まず、外部装置としてのリーダライタ2がICカード1に対して検索・存在個数出力コマンドを供給したものとする。ICカード1では、通信部12が検索・存在個数出力コマンドを受信する。受信した検索・存在個数出力コマンドは、通信部12からCPU14に供給される。すると、CPU14は、受信した検索・存在個数出力コマンドのコマンドヘッダ部301のCLA部302およびINS部303により当該コマンドが検索・存在個数出力コマンドであることを判断する。
【0047】
ICカード1のCPU14は、受信されたコマンドが検索・存在個数出力コマンドであると判断すると、図5のデータ管理情報から第1番目の制御情報(制御情報#1)201aを読出す(ステップS100)。
【0048】
次に、当該制御情報201a内の設定アドレス情報211で示すアドレスに既に第1階層のデータが設定されているか否かを確認する(ステップS101)。第1階層のデータが設定されている場合はステップS103へ、第1階層のデータが設定されていない場合は後述するステップS122へ進む。
【0049】
ステップS103では、当該データのデータ長管理情報220が制御情報201a内の設定可能サイズ情報212の範囲内であるかを確認する。範囲内である場合はステップS105へ、範囲を超えている場合はステップS104へ進む。ステップS104では、データ管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0050】
ステップS105では、当該データのデータ正当性管理情報222を確認する。正当性が確認できた場合はステップS107へ、異常である場合はステップS106へ進む。ステップS106では、データ正当性管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0051】
ステップS107では、制御情報201a内の設定アドレス情報211が示すアドレスのデータを1バイト(Byte)読込むとともに、ワーキングメモリ16の識別子カウンタをクリアする。次に、この読込んだデータを確認し(ステップS108)、次のデータも識別子の一部であると確認された場合は、ステップS109へ進み、次のデータを1バイト読込む。
【0052】
ステップS108の確認の結果、次のデータも識別子の一部でないと確認された場合、あるいは、ステップS109の処理後、読込んだ識別子がコマンドのP1部304、P2部305で指定されている識別子と一致するか否かをチェックし(ステップS110)、一致する場合はステップS111へ進み、一致しない場合はステップS112へ進む。
【0053】
ステップS112では、次のデータを1バイト読込み、読込んだ値をデータ長とし、次の識別子に相当するアドレスを求める。次に、ステップS112で求められた次の識別子に相当するアドレスとデータ長管理情報220との整合性を確認し(ステップS113)、後ろにデータがない場合は後述するステップS120へ進み、後ろにデータがある場合はステップS116へ進む。ここで、後ろにデータがないと判定する状態としては、たとえば、求められたアドレスがデータ長管理情報220で指定されたデータ長のアドレスの範囲を超えている場合などがある(図12参照)。
【0054】
ステップS116では、ステップS112で求められた次の識別子に相当するアドレスのデータを1バイト読込む。次に、この読込んだデータを確認し(ステップS117)、次のデータも識別子の一部であると確認された場合は次のデータを1バイト読込み(ステップS118)、ステップS117へ戻る。
【0055】
ステップS117の確認の結果、次のデータも識別子の一部でないと確認された場合、ステップS117,S118で読込んだデータが次のデータの識別子を示すデータであるものと判断する。したがって、次のデータは識別子の一部でないと判断した場合、ステップS110へ戻り、読込んだ識別子がコマンドのP1部304とP2部305で指定されている識別子と一致するか否かを判断する。
【0056】
ステップS110における判断の結果、読込んだ識別子がコマンドのP1部304とP2部305で指定されている識別子と一致すると判断した場合、ワーキングメモリ16の識別子カウンタをインクリメントし(ステップS111)、ステップS112へ進む。
【0057】
ステップS113における判断の結果、後ろにデータが無い場合(つまり、1つの制御情報で示される第1階層のデータの検索が終了した場合)、CPU14はワーキングメモリ16の識別子カウンタが零(0)であるか否かを判断する(ステップS120)。
【0058】
ステップS120における判断の結果、零(0)でない場合、CPU14は当該制御情報201a内のデータ識別子情報210(つまり、第1階層のデータの識別子)とワーキングメモリ16の識別子カウンタの値をレスポンス用データメモリ(図9参照)の領域502に格納する(ステップS121)。この際、当該第1階層のデータの識別子は、レスポンス用データメモリの領域501に格納しているレスポンスデータ長管理情報としてデータ長をオフセットしたアドレスにセットされる。
【0059】
また、CPU14は、レスポンス用データメモリの領域502に識別子とワーキングメモリ16の識別子カウンタの値をセットすると、レスポンスデータ長管理情報をセットしたデータ長分を加算することにより、セットした識別子のデータ分だけレスポンスデータのデータ長を変更する(ステップS121)。
【0060】
ステップS122で、CPU14は、データ管理情報に、当該制御情報の後に更に次の制御情報があるか否かを確認し、ある場合はステップS123へ進み、次の制御情報201bを読出して、ステップS101へ戻る。
すなわち、CPU14は、ステップS100〜S123の処理を全ての制御情報について実行する。これにより、各制御情報で示される全ての第1階層のデータについて、当該検索・存在個数出力コマンドで指定された識別子の第2階層のデータの検索およびカウントを行なう。
【0061】
ステップS122における確認の結果、次の制御情報がない場合、CPU14は、各制御情報で示される全ての第1階層のデータについての検索が完了したと判断する。これにより、検索処理が完了したと判断した場合、CPU14は、異常無しの応答ステータスとともにレスポンス用データメモリ(図9参照)内のレスポンスデータ長管理情報分のレスポンスデータをリーダライタ2へ出力する(ステップS124)。
【0062】
なお、本例では、識別子が1バイト長または2バイト長のみで構成されるデータで説明を行なったが、3バイト以上の識別子が含まれる場合も同様である。また、本例では、長さ情報が1バイト長のみで構成されるデータで説明を行なったが、たとえば、ISO/IEC7816−4 Annex.Dで記載されているような、長さ情報が1バイト以上で表現される場合も同様である。
【0063】
次に、ICカード1における第2階層のデータの合計値を出力する処理について説明する。
図13は、リーダライタ2からICカード1に対して供給される第2階層のデータの合計値を出力する指示を行なうための命令データ(合計値出力コマンド)の構成を示している。合計値出力コマンドは、コマンドヘッダ部601、および、コマンドヘッダ部601のデータ長を示すLe部606から構成されている。
【0064】
コマンドヘッダ部601は、コマンドの分類部(CLA:class)602、命令部(INS:instruction)603、および、パラメータデータ(P1、P2)604,605から構成されている。
【0065】
P1部604、P2部605は、検索するデータ識別子を示している。すなわち、たとえば、図4におけるポイント加算値識別子“DF04”を検索する場合は、P1部604に“DF”、P2部605に“04”がセットされる。
【0066】
ICカード1のCPU14は、この合計値出力コマンドのコマンドヘッダ部601のP1部604とP2部605にセットされたデータ識別子から、指定されたデータ識別子を探し出し、合計値を計算して出力する。
【0067】
図14は、リーダライタ2から送られた合計値出力コマンドを実行した後、ICカード1がリーダライタ2へ出力するレスポンスデータの構成を示している。このレスポンスデータは、合計値出力コマンドのP1部604、P2部605で指定された識別子のCPU14による計算結果がセットされるデータ部701、および、処理結果を示すステータスコードがセットされるステータスコード部702,703から構成されている。
【0068】
上記データ部701には、合計値出力コマンドに対する計算結果がセットされる。ここでは、上記データ部701には、合計値出力コマンドで指定された第2階層のデータの識別子の検索結果として、指定された識別子の第2階層のデータの合計値がセットされる。
【0069】
すなわち、たとえば、図4に示すデータを有するICカード1では、第2階層のデータとしてポイント加算値識別子“DF04”を指定するコマンドを実行した場合、データ部701には、ポイントP識別子“EA”とポイントQ識別子“EB”に含まれるポイント加算値識別子“DF04”のポイント加算値170,174,178,190,194の合計値“08”がセットされて出力される。
【0070】
次に、このような構成において合計値出力コマンドに対する処理について図15および図16に示すフローチャートを参照して説明する。
まず、外部装置としてのリーダライタ2がICカード1に対して合計値出力コマンドを供給したものとする。ICカード1では、通信部12が合計値出力コマンドを受信する。受信した合計値出力コマンドは、通信部12からCPU14に供給される。すると、CPU14は、受信した合計値出力コマンドのコマンドヘッダ部601のCLA部602およびINS部603により当該コマンドが合計値出力コマンドであることを判断する。
【0071】
ICカード1のCPU14は、受信されたコマンドが合計値出力コマンドであると判断すると、図5のデータ管理情報から第1番目の制御情報(制御情報#1)201aを読出す(ステップS200)。
【0072】
次に、当該制御情報201a内の設定アドレス情報211で示すアドレスに既に第1階層のデータが設定されているか否かを確認する(ステップS201)。第1階層のデータが設定されている場合はステップS203へ、第1階層のデータが設定されていない場合は後述するステップS220へ進む。
【0073】
ステップS203では、当該データのデータ長管理情報220が制御情報201a内の設定可能サイズ情報212の範囲内であるかを確認する。範囲内である場合はステップS205へ、範囲を超えている場合はステップS204へ進む。ステップS204では、データ管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0074】
ステップS205では、当該データのデータ正当性管理情報222を確認する。正当性が確認できた場合はステップS207へ、異常である場合はステップS206へ進む。ステップS206では、データ正当性管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0075】
ステップS207では、制御情報201a内の設定アドレス情報211が示すアドレスのデータを1バイト読込むとともに、ワーキングメモリ16の合計値エリアをクリアする。次に、この読込んだデータを確認し(ステップS208)、次のデータも識別子の一部であると確認された場合は、ステップS209へ進み、次のデータを1バイト読込む。
【0076】
ステップS208の確認の結果、次のデータも識別子の一部でないと確認された場合、あるいは、ステップS209の処理後、読込んだ識別子がコマンドのP1部604、P2部605で指定されている識別子と一致するか否かをチェックし(ステップS210)、一致する場合はステップS211へ進み、一致しない場合はステップS212へ進む。
【0077】
ステップS212では、次のデータを1バイト読込み、読込んだ値をデータ長とし、次の識別子に相当するアドレスを求める。次に、ステップS212で求められた次の識別子に相当するアドレスとデータ長管理情報220との整合性を確認し(ステップS213)、後ろにデータがある場合はステップS216へ進む。ここで、後ろにデータがないと判定する状態としては、たとえば、求められたアドレスがデータ長管理情報220で指定されたデータ長のアドレスの範囲を超えている場合などがある(図12参照)。
【0078】
ステップS216では、ステップS212で求められた次の識別子に相当するアドレスのデータを1バイト読込む。次に、この読込んだデータを確認し(ステップS217)、次のデータも識別子の一部であると確認された場合は次のデータを1バイト読込み(ステップS218)、ステップS217へ戻る。
【0079】
ステップS217の確認の結果、次のデータも識別子の一部でないと確認された場合、ステップS217,S218で読込んだデータが次のデータの識別子を示すデータであるものと判断する。したがって、次のデータは識別子の一部でないと判断した場合、ステップS210へ戻り、読込んだ識別子がコマンドのP1部604とP2部605で指定されている識別子と一致するか否かを判断する。
【0080】
ステップS210における判断の結果、読込んだ識別子がコマンドのP1部604とP2部605で指定されている識別子と一致すると判断した場合、当該識別子の次のデータを1バイト読込み、読込んだ値をデータ長とするとともに、当該識別子のデータ長分のデータを読込み、ワーキングメモリ16の合計値エリアに加算する(ステップS211)。
【0081】
ステップS213における判断の結果、後ろにデータがない場合(つまり、1つの制御情報で示される第1階層のデータの検索が終了した場合)、CPU14は、データ管理情報に、当該制御情報の後に更に次の制御情報があるか否かを確認し(ステップS220)、ある場合はステップS221へ進み、次の制御情報201bを読出して、ステップS201へ戻る。
【0082】
すなわち、CPU14は、ステップS200〜S221の処理を全ての制御情報について実行する。これにより、各制御情報で示される全ての第1階層のデータについて、当該合計値出力コマンドで指定された識別子の第2階層のデータの検索および合計値の計算を行なう。
【0083】
ステップS220における確認の結果、次の制御情報がない場合、CPU14は、各制御情報で示される全ての第1階層のデータについての検索が完了したと判断する。これにより、検索処理が完了したと判断した場合、CPU14は、異常無しの応答ステータスとともにワーキングメモリ16の合計値エリアのデータをリーダライタ2へ出力する(ステップS222)。
【0084】
これにより、データ全体を読出すことなく、指定された第2階層のデータの合計値を得ることができる。
【0085】
次に、ICカード1における第2階層のデータの最終更新日値(最新の日付情報)を出力する処理について説明する。
図17は、データ内に最終更新日値が含まれる入れ子構造のデータ例を示している。図17(a)に示すように、ポイントXのデータとして、ポイントX識別子(E1)101とポイントXのデータ長102とポイントXの値112とから構成される第2データ表現形式のデータが格納される。上記ポイントXの値112は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)103とポイント値長104とポイント値105とから構成されるデータ113、ポイント上限値識別子(DF02)106とポイント上限値長107とポイント上限値108とから構成されるデータ114、ポイント最終更新日識別子(DF03)109とポイント最終更新日値長110とポイント最終更新日値(20041224)111とから構成されるデータ115が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0086】
また、図17(b)に示すように、ポイントYのデータとして、ポイントY識別子(E2)121とポイントYのデータ長122とポイントYの値123とから構成される第2データ表現形式のデータが格納される。上記ポイントYの値123は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)124とポイント値長125とポイント値126とから構成されるデータ127、ポイント上限値識別子(DF02)128とポイント上限値長129とポイント上限値130とから構成されるデータ131が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0087】
また、図17(c)に示すように、ポイントZのデータとして、ポイントZ識別子(E3)141とポイントZのデータ長142とポイントZの値143とから構成される第2データ表現形式のデータが格納される。上記ポイントZの値143は、上記第2データ表現形式と同じ第1データ表現形式のデータ、すなわち、ポイント値識別子(DF01)144とポイント値長145とポイント値146とから構成されるデータ147、ポイント上限値識別子(DF02)148とポイント上限値長149とポイント上限値150とから構成されるデータ151、ポイント最終更新日識別子(DF03)152とポイント最終更新日値長153とポイント最終更新日値(20050401)154とから構成されるデータ155が並設されて構成される。このようなデータ構造をいわゆる入れ子構造と呼ばれている。
【0088】
図18は、リーダライタ2からICカード1に対して供給される第2階層のデータの最終更新日値を出力する指示を行なうための命令データ(最終更新日出力コマンド)の構成を示している。最終更新日出力コマンドは、コマンドヘッダ部801、および、コマンドヘッダ部801のデータ長を示すLe部806から構成されている。
【0089】
コマンドヘッダ部801は、コマンドの分類部(CLA:class)802、命令部(INS:instruction)803、および、パラメータデータ(P1、P2)804,805から構成されている。
【0090】
P1部804、P2部805は、検索するデータ識別子を示している。すなわち、たとえば、図17におけるポイント最終更新日識別子“DF03”を検索する場合は、P1部604に“DF”、P2部605に“03”がセットされる。
【0091】
ICカード1のCPU14は、この最終更新日出力コマンドのコマンドヘッダ部801のP1部804とP2部805にセットされたデータ識別子から、指定されたデータ識別子を探し出し、最終更新日値を計算して出力する。
【0092】
図19は、リーダライタ2から送られた最終更新日出力コマンドを実行した後、ICカード1がリーダライタ2へ出力するレスポンスデータの構成を示している。このレスポンスデータは、最終更新日出力コマンドのP1部804、P2部805で指定された識別子のCPU14による計算結果がセットされるデータ部901、および、処理結果を示すステータスコードがセットされるステータスコード部902,903から構成されている。
【0093】
上記データ部901には、最終更新日出力コマンドに対する計算結果がセットされる。ここでは、上記データ部701には、合計値出力コマンドで指定された第2階層のデータの識別子の検索結果として、指定された識別子の第2階層のデータの最終更新日値がセットされる。
【0094】
すなわち、たとえば、図17に示すデータを有するICカード1では、第2階層のデータとしてポイント最終更新日識別子“DF03”を指定するコマンドを実行した場合、データ部901には、ポイントX識別子“E1”とポイントZ識別子“E3”に含まれるポイント最終更新日識別子“DF03”のポイント最終更新日値(20050401)154がセットされて出力される。
【0095】
次に、このような構成において最終更新日出力コマンドに対する処理について図20および図21に示すフローチャートを参照して説明する。
まず、外部装置としてのリーダライタ2がICカード1に対して最終更新日出力コマンドを供給したものとする。ICカード1では、通信部12が最終更新日出力コマンドを受信する。受信した最終更新日出力コマンドは、通信部12からCPU14に供給される。すると、CPU14は、受信した最終更新日出力コマンドのコマンドヘッダ部801のCLA部802およびINS部803により当該コマンドが最終更新日出力コマンドであることを判断する。
【0096】
ICカード1のCPU14は、受信されたコマンドが最終更新日出力コマンドであると判断すると、図5のデータ管理情報から第1番目の制御情報(制御情報#1)201aを読出す(ステップS300)。
【0097】
次に、当該制御情報201a内の設定アドレス情報211で示すアドレスに既に第1階層のデータが設定されているか否かを確認する(ステップS301)。第1階層のデータが設定されている場合はステップS303へ、第1階層のデータが設定されていない場合は後述するステップS321へ進む。
【0098】
ステップS303では、当該データのデータ長管理情報220が制御情報201a内の設定可能サイズ情報212の範囲内であるかを確認する。範囲内である場合はステップS305へ、範囲を超えている場合はステップS304へ進む。ステップS304では、データ管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0099】
ステップS305では、当該データのデータ正当性管理情報222を確認する。正当性が確認できた場合はステップS307へ、異常である場合はステップS306へ進む。ステップS306では、データ正当性管理情報異常の応答ステータスをリーダライタ2へ出力する。
【0100】
ステップS307では、制御情報201a内の設定アドレス情報211が示すアドレスのデータを1バイト読込むとともに、ワーキングメモリ16の最終更新日エリアをクリアする。次に、この読込んだデータを確認し(ステップS308)、次のデータも識別子の一部であると確認された場合は、ステップS309へ進み、次のデータを1バイト読込む。
【0101】
ステップS308の確認の結果、次のデータも識別子の一部でないと確認された場合、あるいは、ステップS309の処理後、読込んだ識別子がコマンドのP1部804、P2部805で指定されている識別子と一致するか否かをチェックし(ステップS310)、一致する場合はステップS311へ進み、一致しない場合はステップS312へ進む。
【0102】
ステップS312では、次のデータを1バイト読込み、読込んだ値をデータ長とし、次の識別子に相当するアドレスを求める。次に、ステップS312で求められた次の識別子に相当するアドレスとデータ長管理情報220との整合性を確認し(ステップS313)、後ろにデータがある場合はステップS316へ進む。ここで、後ろにデータがないと判定する状態としては、たとえば、求められたアドレスがデータ長管理情報220で指定されたデータ長のアドレスの範囲を超えている場合などがある(図12参照)。
【0103】
ステップS316では、ステップS312で求められた次の識別子に相当するアドレスのデータを1バイト読込む。次に、この読込んだデータを確認し(ステップS317)、次のデータも識別子の一部であると確認された場合は次のデータを1バイト読込み(ステップS318)、ステップS317へ戻る。
【0104】
ステップS317の確認の結果、次のデータも識別子の一部でないと確認された場合、ステップS317,S318で読込んだデータが次のデータの識別子を示すデータであるものと判断する。したがって、次のデータは識別子の一部でないと判断した場合、ステップS310へ戻り、読込んだ識別子がコマンドのP1部804とP2部804で指定されている識別子と一致するか否かを判断する。
【0105】
ステップS310における判断の結果、読込んだ識別子がコマンドのP1部804とP2部804で指定されている識別子と一致すると判断した場合、当該識別子の次のデータを1バイト読込み、読込んだ値をデータ長とするとともに、当該識別子のデータ長分のデータを読込む(ステップS311)。
【0106】
次に、ステップS311で読込んだデータとワーキングメモリ16の最終更新日エリアのデータ(更新日)との比較を行ない(ステップS319)、ワーキングメモリ16の最終更新日エリアのデータ(更新日)の方が新しいと判断した場合(ワーキングメモリ16の最終更新日エリアのデータの方が新しい)、ステップS312へ進む。
【0107】
ステップS319における比較の結果、ワーキングメモリ16の最終更新日エリアのデータ(更新日)の方が古いと判断した場合(ワーキングメモリ16の最終更新日エリアのデータの方が古い)、ワーキングメモリ16の最終更新日エリアのデータを読込んだデータに変更し(ステップS320)、ステップS312へ進む。
【0108】
ステップS313における判断の結果、後ろにデータがない場合(つまり、1つの制御情報で示される第1階層のデータの検索が終了した場合)、CPU14は、データ管理情報に、当該制御情報の後に更に次の制御情報があるか否かを確認し(ステップS321)、ある場合はステップS322へ進み、次の制御情報201bを読出して、ステップS301へ戻る。
【0109】
すなわち、CPU14は、ステップS300〜S322の処理を全ての制御情報について実行する。これにより、各制御情報で示される全ての第1階層のデータについて、当該最終更新日出力コマンドで指定された識別子の第2階層のデータの検索および最終更新日値(最新の更新日値)の計算を行なう。
【0110】
ステップS321における確認の結果、次の制御情報がない場合、CPU14は、各制御情報で示される全ての第1階層のデータについての検索が完了したと判断する。これにより、検索処理が完了したと判断した場合、CPU14は、異常無しの応答ステータスとともにワーキングメモリ16の最終更新日エリアのデータをリーダライタ2へ出力する(ステップS323)。
【0111】
以上説明したように、上記実施の形態によれば、入れ子構造データを記憶するICカードにおいて、入れ子構造になっているデータをデータ構造解析なしで容易に検出したり、入れ子構造になっているデータの中に含まれるデータを操作することで容易に入れ子構造データの合計値や最終更新日値などのデータを取得することが可能となる。
【0112】
なお、前記実施の形態では、求めた識別子、その存在個数、値の合計値、最終更新日値などのデータを外部(リーダライタ)へ出力する場合について説明したが、必ずしも外部へ出力する必要はなく、たとえば、内部で保持しておくことで、内部で利用したり、必要に応じて外部へ出力したりする場合にも適用できる。
【0113】
また、携帯可能電子装置としてICカードに適用した場合について説明したが、これに限定されるものではなく、たとえば、PDAと称される携帯端末装置や携帯電話機などであっても適用でき、また、カード型に限らず、冊子型、ブロック形あるいはタグ型であってもよい。
【0114】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行なうことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0115】
1…ICカード(携帯可能電子装置)、1a…ICカード本体、2…リーダライタ(外部装置)、3…パーソナルコンピュータ、11…磁気ストライプ部、12…通信部、13…ICチップ、14…CPU、15…データメモリ、16…ワーキングメモリ、17…プログラムメモリ。
【特許請求の範囲】
【請求項1】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、
外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項2】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなり、かつ、当該第1データ表現形式で表現されるデータの少なくとも1つはその値として当該データに関係する日付情報が格納されている第2データ表現形式のデータを記憶したメモリと、
外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの最新の日付情報を求める処理手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項3】
前記処理手段は、求めた結果を当該携帯可能電子装置の外部へ出力することを特徴とする請求項1または請求項2記載の携帯可能電子装置。
【請求項4】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段とを有したICモジュールと、
このICモジュールを収納したICカード本体と、
を具備したことを特徴とするICカード。
【請求項5】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなり、かつ、当該第1データ表現形式で表現されるデータの少なくとも1つはその値として当該データに関係する日付情報が格納されている第2データ表現形式のデータを記憶したメモリと、外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの最新の日付情報を求める処理手段とを有したICモジュールと、
このICモジュールを収納したICカード本体と、
を具備したことを特徴とするICカード。
【請求項6】
前記処理手段は、求めた結果を当該ICカードの外部へ出力することを特徴とする請求項4または請求項5記載のICカード。
【請求項7】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、
外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段と、
を具備したことを特徴とするICモジュール。
【請求項8】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなり、かつ、当該第1データ表現形式で表現されるデータの少なくとも1つはその値として当該データに関係する日付情報が格納されている第2データ表現形式のデータを記憶したメモリと、
外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの最新の日付情報を求める処理手段と、
を具備したことを特徴とするICモジュール。
【請求項1】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、
外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項2】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなり、かつ、当該第1データ表現形式で表現されるデータの少なくとも1つはその値として当該データに関係する日付情報が格納されている第2データ表現形式のデータを記憶したメモリと、
外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの最新の日付情報を求める処理手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項3】
前記処理手段は、求めた結果を当該携帯可能電子装置の外部へ出力することを特徴とする請求項1または請求項2記載の携帯可能電子装置。
【請求項4】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段とを有したICモジュールと、
このICモジュールを収納したICカード本体と、
を具備したことを特徴とするICカード。
【請求項5】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなり、かつ、当該第1データ表現形式で表現されるデータの少なくとも1つはその値として当該データに関係する日付情報が格納されている第2データ表現形式のデータを記憶したメモリと、外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの最新の日付情報を求める処理手段とを有したICモジュールと、
このICモジュールを収納したICカード本体と、
を具備したことを特徴とするICカード。
【請求項6】
前記処理手段は、求めた結果を当該ICカードの外部へ出力することを特徴とする請求項4または請求項5記載のICカード。
【請求項7】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなる第2データ表現形式のデータを記憶したメモリと、
外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの値の合計値を求める処理手段と、
を具備したことを特徴とするICモジュール。
【請求項8】
識別子と長さと値とから構成されるデータの表現形式を第1データ表現形式とし、前記値に第1データ表現形式で表現されるデータが少なくとも1つ以上並設されてなり、かつ、当該第1データ表現形式で表現されるデータの少なくとも1つはその値として当該データに関係する日付情報が格納されている第2データ表現形式のデータを記憶したメモリと、
外部装置から受信したコマンドにて指定された第1データ表現形式の識別子を前記メモリ内の第2データ表現形式のデータから検索し、当該指定された第1データ表現形式のデータの最新の日付情報を求める処理手段と、
を具備したことを特徴とするICモジュール。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2011−170863(P2011−170863A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2011−55628(P2011−55628)
【出願日】平成23年3月14日(2011.3.14)
【分割の表示】特願2005−178087(P2005−178087)の分割
【原出願日】平成17年6月17日(2005.6.17)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願日】平成23年3月14日(2011.3.14)
【分割の表示】特願2005−178087(P2005−178087)の分割
【原出願日】平成17年6月17日(2005.6.17)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]