(57)【特許請求の範囲】
【請求項１】
一つまたは複数のＴＬＶオブジェクトを格納したファイルと，ＴＬＶオブジェクトのＶａｌｕｅに格納されているＴＬＶオブジェクトのＴａｇも含め，前記ファイルに含まれるＴＬＶオブジェクトのＴａｇをＴａｇの出現順に従い，Ｔａｇの長さを所定長に正規化して並べたＴａｇ配列と，ＴＬＶオブジェクトのＶａｌｕｅに格納されているＴＬＶオブジェクトのＬｅｎｇｔｈも含め，前記ファイルに含まれるＴＬＶオブジェクトのＬｅｎｇｔｈが記憶されているアドレスをＬｅｎｇｔｈの出現順に並べたＬｅｎｇｔｈ配列を記憶した不揮発性メモリと，
アクセス対象となるＴＬＶオブジェクトのＴａｇを前記Ｔａｇ配列から検索し，このＴａｇのインデックス番号を特定する処理と，特定したインデックス番号の位置に格納されている前記アドレスを前記Ｌｅｎｇｔｈ配列から取得する処理と，前記Ｌｅｎｇｔｈ配列から取得した前記アドレスを利用して，アクセス対象となるＴＬＶオブジェクトのＬｅｎｇｔｈにアクセスし，アクセス対象となるＴＬＶオブジェクトのＶａｌｕｅに格納されたデータを取得する処理を順に実行するアクセス制御手段と，
を備えたことを特徴とするＩＣカード。
【請求項２】
前記ファイルを不揮発性メモリに書き込む処理と，不揮発性メモリに書き込んだ前記ＴＬＶファイルに格納されたＴＬＶオブジェクトの構造を解析し，前記Ｔａｇ配列と前記Ｌｅｎｇｔｈ配列を生成して不揮発性メモリに書き込む処理を実行する書き込み制御手段を備えたことを特徴とする，請求項１に記載したＩＣカード。
【請求項３】
一つまたは複数のＴＬＶオブジェクトを格納したファイルと，ＴＬＶオブジェクトのＶａｌｕｅに格納されているＴＬＶオブジェクトのＴａｇも含め，前記ファイルに含まれるＴＬＶオブジェクトのＴａｇをＴａｇの出現順に従い，Ｔａｇの長さを所定長に正規化して並べたＴａｇ配列と，ＴＬＶオブジェクトのＶａｌｕｅに格納されているＴＬＶオブジェクトのＬｅｎｇｔｈも含め，前記ファイルに含まれるＴＬＶオブジェクトのＬｅｎｇｔｈが記憶されているアドレスをＬｅｎｇｔｈの出現順に並べたＬｅｎｇｔｈ配列をＩＣカードの不揮発性メモリに記憶させ，
前記ＩＣカードのアクセス制御手段は，アクセス対象となるＴＬＶオブジェクトのＴａｇを前記Ｔａｇ配列から検索し，このＴａｇのインデックス番号を特定する処理と，特定したインデックス番号の位置に格納されている前記アドレスを前記Ｌｅｎｇｔｈ配列から取得する処理と，前記Ｌｅｎｇｔｈ配列から取得した前記アドレスを利用して，アクセス対象となるＴＬＶオブジェクトのＬｅｎｇｔｈにアクセスし，アクセス対象となるＴＬＶオブジェクトのＶａｌｕｅに格納されたデータを取得する処理を順に実行する，
ことを特徴とするＴＬＶオブジェクトへのアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，一つまたは複数のＴＬＶオブジェクトを格納したファイルを記憶したＩＣカードにおいて，ファイルに格納されているＴＬＶオブジェクトに効率よくアクセスするための技術に関する。
【背景技術】
【０００２】
ＩＣカードの不揮発性メモリ（以下，「ＮＶＭ」と記す。ＮＶＭは，Non-volatile memoryの略）には，ＩＣカードの用途に合わせて様々なファイルが記憶され，ＩＣカードを利用するトランザクションが実行されるとき，トランザクションで必要なデータがファイルから読み取られる。ファイルに格納するデータのデータ構造は様々あるが，クレジットカードやＵＩＣＣなどのＩＣカードでは，ＴＬＶ構造が利用される。
【０００３】
ＴＬＶ構造のデータオブジェクトであるＴＬＶオブジェクトは，Ｔａｇ，ＬｅｎｇｔｈおよびＶａｌｕｅの３つのフィールドが連結した構造になっている。ＴＬＶオブジェクトにおいて，Ｔａｇは，Ｖａｌｕｅに格納するデータの符号化（シンプル型または構造型）と，ＴＬＶオブジェクトの識別に用いるタグ番号を少なくとも示すデータで，Ｌｅｎｇｔｈは，ＴＬＶオブジェクトのＶａｌｕｅに格納するデータの長さで，Ｖａｌｕｅにデータが格納される。
【０００４】
ＴＬＶオブジェクトを格納したファイル（これ以降，「ファイル」と略す。）を記憶したＩＣカードは，ファイルからＴＬＶオブジェクトを読み出すコマンドを備え，ＩＣカードに係る国際規格の一つであるＩＳＯ／ＩＥＣ７８１６−４では，ファイルからＴＬＶオブジェクトを読み出すコマンドとしてＧＥＴＤＡＴＡコマンドが規定されている。
【０００５】
上述のＧＥＴＤＡＴＡコマンドは，現在発行されている多くのＩＣカードに実装されているコマンドであるが，ＧＥＴＤＡＴＡコマンドの処理速度が問題になっている。ＧＥＴＤＡＴＡコマンドは，ＧＥＴＤＡＴＡコマンドのＡＰＤＵ（Application Protocol Data Unit）に含まれるパラメータにより指定されたＴａｇを有するＴＬＶオブジェクトをファイルから検索する処理を行うが，複数のＴＬＶオブジェクトがファイルに格納されている場合，指定されたＴａｇに対応するＴＬＶオブジェクトを検索する処理に時間がかかってしまう。
【０００６】
この問題を解決するために，少なくともＴＬＶオブジェクトのＴａｇとＴＬＶオブジェクトのＶａｌｕｅを離間させた状態でＮＶＭに記憶し，Ｖａｌｕｅを記憶させた位置を示す固定長のアドレスをＴａｇに連結して記憶させたＩＣカードが特許文献１で開示されている。
【０００７】
複数のＴＬＶオブジェクトをファイルに格納すると，ＴＬＶオブジェクトのＶａｌｕｅの長さは固定長でないため，ＴＬＶオブジェクトのＴａｇの間隔は不規則になるが，特許文献１で開示されている発明に従えば，ＴＬＶオブジェクトのＴａｇが所定間隔で規則的に並ぶ格好になるため，Ｔａｇを効率よく検索でき，指定されたＴａｇに対応するＴＬＶオブジェクトに効率よくアクセスできる。
【０００８】
しかし，特許文献１で開示されている発明には，次に述べる問題がある。特許文献１で開示されている発明では，ＴａｇとＶａｌｕｅが分離した状態でＮＶＭに記憶されてしまうため，ファイルの正当性検証に用いるＥＤＣ（Error Detection Code）を演算するロジックが複雑になってしまい，ＥＤＣの演算に時間がかかってしまう。このことを考慮すると，ＴＬＶオブジェクトの構造を保持した状態，ＴＬＶオブジェクトのＴａｇ，ＬｅｎｇｔｈおよびＶａｌｕｅを分離させない状態でＩＣカードに記憶しても，指定されたＴａｇに対応するＴＬＶオブジェクトに効率よくアクセスできるようにすることが望まれる。
【０００９】
また，特許文献１の図５で図示されている構造型ＴＬＶオブジェクトをＶａｌｕｅに格納したＴＬＶオブジェクトをファイルに記憶する場合，特許文献１の発明では，このＴＬＶオブジェクトのＴａｇと分離した状態で，複数のＴａｇが含まれる構造型ＴＬＶオブジェクトがＮＶＭに配置されてしまうため，ＴＬＶオブジェクトのＴａｇを所定間隔で規則的に並べることができない問題もある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−１９７９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
そこで，本発明は，ＴＬＶオブジェクトの構造を保持した状態でＩＣカードに記憶させても，アクセス対象となるＴＬＶオブジェクトに効率よくアクセスでき，更に，構造型ＴＬＶオブジェクトをＶａｌｕｅに格納したＴＬＶオブジェクトをＩＣカードに記憶させる場合であっても，アクセス対象となるＴＬＶオブジェクトに効率よくアクセスできるＩＣカード等を提供することを課題とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決する第１の発明は，一つまたは複数のＴＬＶオブジェクトを格納したファイルと，ＴＬＶオブジェクトのＶａｌｕｅに格納されているＴＬＶオブジェクトのＴａｇも含め，前記ファイルに含まれるＴＬＶオブジェクトのＴａｇをＴａｇの出現順に従い，Ｔａｇの長さを所定長に正規化して並べたＴａｇ配列と，ＴＬＶオブジェクトのＶａｌｕｅに格納されているＴＬＶオブジェクトのＬｅｎｇｔｈも含め，前記ファイルに含まれるＴＬＶオブジェクトのＬｅｎｇｔｈが記憶されているアドレスをＬｅｎｇｔｈの出現順に並べたＬｅｎｇｔｈ配列を記憶した不揮発性メモリと，アクセス対象となるＴＬＶオブジェクトのＴａｇを前記Ｔａｇ配列から検索し，このＴａｇのインデックス番号を特定する処理と，特定したインデックス番号の位置に格納されている前記アドレスを前記Ｌｅｎｇｔｈ配列から取得する処理と，前記Ｌｅｎｇｔｈ配列から取得した前記アドレスを利用して，アクセス対象となるＴＬＶオブジェクトのＬｅｎｇｔｈにアクセスし，アクセス対象となるＴＬＶオブジェクトのＶａｌｕｅに格納されたデータを取得する処理を順に実行するアクセス制御手段とを備えたことを特徴とするＩＣカードである。なお，第１の発明に記載のＩＣカードは，前記ファイルを不揮発性メモリに書き込む処理と，不揮発性メモリに書き込んだ前記ＴＬＶファイルに格納されたＴＬＶオブジェクトの構造を解析し，前記Ｔａｇ配列と前記Ｌｅｎｇｔｈ配列を生成して不揮発性メモリに書き込む処理を実行する書き込み制御手段を備えることが望ましい。
【００１３】
上述した課題を解決する第２の発明は，一つまたは複数のＴＬＶオブジェクトを格納したファイルと，ＴＬＶオブジェクトのＶａｌｕｅに格納されているＴＬＶオブジェクトのＴａｇも含め，前記ファイルに含まれるＴＬＶオブジェクトのＴａｇをＴａｇの出現順に従い，Ｔａｇの長さを所定長に正規化して並べたＴａｇ配列と，ＴＬＶオブジェクトのＶａｌｕｅに格納されているＴＬＶオブジェクトのＬｅｎｇｔｈも含め，前記ファイルに含まれるＴＬＶオブジェクトのＬｅｎｇｔｈが記憶されているアドレスをＬｅｎｇｔｈの出現順に並べたＬｅｎｇｔｈ配列をＩＣカードの不揮発性メモリに記憶させ，前記ＩＣカードのアクセス制御手段は，アクセス対象となるＴＬＶオブジェクトのＴａｇを前記Ｔａｇ配列から検索し，このＴａｇのインデックス番号を特定する処理と，特定したインデックス番号の位置に格納されている前記アドレスを前記Ｌｅｎｇｔｈ配列から取得する処理と，前記Ｌｅｎｇｔｈ配列から取得した前記アドレスを利用して，アクセス対象となるＴＬＶオブジェクトのＬｅｎｇｔｈにアクセスし，アクセス対象となるＴＬＶオブジェクトのＶａｌｕｅに格納されたデータを取得する処理を順に実行することを特徴とするＴＬＶオブジェクトへのアクセス方法である。
【発明の効果】
【００１４】
上述した本発明によれば，Ｔａｇの検索には，ファイルに含まれるＴＬＶオブジェクトのＴａｇをＴａｇの出現順に並べたＴａｇ配列が利用されるため，ＴＬＶオブジェクトの構造を保持した状態でＩＣカードに記憶しても，Ｔａｇを効率よく検索でき，Ｌｅｎｇｔｈ配列を利用して，アクセス対象となるＴＬＶオブジェクトに効率よくアクセスできる。更に，構造型ＴＬＶオブジェクトをＶａｌｕｅに格納したＴＬＶオブジェクトがファイルに含まれる場合であっても，Ｖａｌｕｅに格納された構造型ＴＬＶオブジェクトに含まれるＴａｇもＴａｇ配列に格納できるため，Ｔａｇを効率よく検索し，アクセス対象となるＴＬＶオブジェクトに効率よくアクセスできる。
【図面の簡単な説明】
【００１５】
【図１】ＩＣカードの構造を説明する図。
【図２】ＩＣカード１のＮＶＭに記憶されるデータを説明する図。
【図３】ＩＣカードに記憶されたファイルを説明する図。
【図４】Ｔａｇ配列とＬｅｎｇｔｈ配列を説明する図。
【図５】ＩＣカードが備える機能を説明する図。
【図６】ＩＣカードが備えるアクセス制御手段の動作を説明する図。
【図７】ＩＣカードが備える書き込み制御手段の動作を説明する図。
【図８】ＩＣカードが備える正当性検証手段の動作を説明する図。
【発明を実施するための形態】
【００１６】
ここから，本発明の好適な実施形態を記載する。なお，以下の記載は本発明の技術的範囲を束縛するものでなく，理解を助けるために記述するものである。
【００１７】
図１は，本実施形態に係るＩＣカード１の構造を説明する図である。図１は，本実施形態に係るＩＣカード１のハードウェア構成を説明する図である。本実施形態に係るＩＣカード１は，プラスチックなどのカード基材にＩＣチップ２を埋め込んだカード媒体である。図１では，コンタクト端子２ａを介して外部の端末装置と物理的に接触して通信する接触型としてＩＣカード１を図示しているが，ＩＣカード１は，リーダライタと非接触で通信する非接触型であってもよい。また，図１では，ＩＣカード１の外形は，ISO/IEC 7816のＩＤ−１型であるが， ETSI TS 102 221等で規格化されている小型の外形（Plug-in UICC，Mini-UICC，4FF）でもよい。
【００１８】
図１に図示したように，ＩＣカード１に埋め込まれるＩＣチップ２は，データの入出力を行うＩ／Ｏ２４，各種演算を行うＣＰＵ(Central Processing Unit)２０,一時的にデータを記憶する際に用いるメモリであるＲＡＭ(Random Access Memory)２２,ＩＣカード１が備えるコマンドのプログラムなどを記憶するＲＯＭ（Read-Only Memory）２１に加え，データを記憶する電気的に書き換え可能な不揮発性メモリであるＮＶＭ２３を備える。
【００１９】
図２は，ＩＣカード１のＮＶＭ２３に記憶されるデータを説明する図である。ＩＣカード１のＮＶＭ２３には，一つまたは複数のＴＬＶオブジェクトを格納したファイル１３と，ファイル１３に含まれるＴＬＶオブジェクトのＴａｇをＴａｇの出現順に並べたＴａｇ配列１４と，ファイル１３に含まれるＴＬＶオブジェクトのＬｅｎｇｔｈが記憶されているアドレスをＬｅｎｇｔｈの出現順に並べたＬｅｎｇｔｈ配列１５と，ファイル１３から演算されたＥＤＣ（Error Detection Code）である参照ＥＤＣ１６が記憶されている。なお，ＥＤＣを演算するアルゴリズムとしては，チェックサムやＣＲＣ（Cyclic Redundancy Check）を利用できる。
【００２０】
図３は，本実施形態に係るＩＣカード１に記憶されたファイル１３を説明する図である。本実施形態に係るファイル１３には，複数のＴＬＶオブジェクトが連結した状態で格納され，ファイル１３に格納された全てのＴＬＶオブジェクトは，ＴＬＶオブジェクトの構造を保持した状態でファイル１３に格納されている。
【００２１】
図３において，Ｔａｇが「Ｔ１」であるＴＬＶオブジェクトは，ＴＬＶ形式ではないデータをＶａｌｕｅに格納したシンプル型（Simple）ＴＬＶオブジェクトである。Ｔａｇが「Ｔ２」であるＴＬＶオブジェクトは，少なくとも一つのシンプル型ＴＬＶオブジェクトをＶａｌｕｅに格納した構造型（Constructed）ＴＬＶオブジェクトで，シンプル型ＴＬＶオブジェクトとして，Ｔａｇが「Ｔ２０」であるＴＬＶオブジェクトとＴａｇが「Ｔ２１」であるＴＬＶオブジェクトをＶａｌｕｅに格納する。Ｔａｇが「Ｔ３」であるＴＬＶオブジェクトは，少なくとも構造型ＴＬＶオブジェクトをＶａｌｕｅに格納した構造型ＴＬＶオブジェクトで，シンプル型ＴＬＶオブジェクトとして，Ｔａｇが「Ｔ３０」であるＴＬＶオブジェクトと，構造型ＴＬＶオブジェクトとして，Ｔａｇが「Ｔ３１」であるＴＬＶオブジェクトをＶａｌｕｅに格納する。なお，Ｔａｇが「Ｔ３１」であるＴＬＶオブジェクトは構造型ＴＬＶオブジェクトで，シンプル型ＴＬＶオブジェクトとして，Ｔａｇが「Ｔ３２」であるＴＬＶオブジェクトと，Ｔａｇが「Ｔ３３」であるＴＬＶオブジェクトをＶａｌｕｅに格納する。
【００２２】
図４は，本実施形態に係るＴａｇ配列１４とＬｅｎｇｔｈ配列１５を説明する図である。図４（ａ）では，図３に基づくＴａｇ配列１４を図示している。Ｔａｇ配列１４は，ファイル１３に含まれるＴＬＶオブジェクトのＴａｇをＴａｇの出現順に従い並べた一次元の配列で，Ｔａｇ配列１４に格納されたＴａｇはインデックス番号によって管理される。図３で図示したＴＬＶオブジェクトにおいて，最初に出現するＴａｇは「Ｔ１」になるため，図４（ａ）において，インデックス番号（０）の位置に「Ｔ１」が格納されている。図３で図示したＴＬＶオブジェクトにおいて，２番目に出現するＴａｇは「Ｔ２」になるため，図４（ａ）において，インデックス番号（１）の位置に「Ｔ２」が格納されている。このように，図３で図示したファイル１３に格納されたＴＬＶオブジェクトのＴａｇをＴａｇの出現順に従い並べることで，Ｔａｇ配列１４の内容は，インデックス番号が若い方から順に，「Ｔ１」，「Ｔ２」，「Ｔ２０」，「Ｔ２１」，「Ｔ３」，「Ｔ３０」，「Ｔ３１」，「Ｔ３２」，「Ｔ３３」になる。
【００２３】
図４（ｂ）では，図３に基づくＬｅｎｇｔｈ配列１５を図示している。Ｌｅｎｇｔｈ配列１５は，ファイル１３に含まれるＴＬＶオブジェクトのＬｅｎｇｔｈをＬｅｎｇｔｈの出現順に従い並べた一次元の配列で，Ｔａｇ配列１４と同様に，Ｌｅｎｇｔｈ配列１５に格納されたＴａｇはインデックス番号によって管理される。図３で図示したＴＬＶオブジェクトにおいて，最初に出現するＬｅｎｇｔｈは「Ｌ１」になるため，図４（ｂ）において，インデックス番号（０）の位置に「＆Ｌ１」が格納されている。なお，「＆」はアドレスであることを意味し，例えば，「＆Ｌ１」は，Ｔａｇの値が「Ｔ１」であるＴＬＶオブジェクトのＬｅｎｇｔｈ（「Ｌ１」）が記憶されているアドレスを意味する。図３で図示したＴＬＶオブジェクトにおいて，２番目に出現するＬｅｎｇｔｈは「Ｌ２」になるため，図４（ｂ）において，インデックス番号（１）の位置に「＆Ｌ２」が格納されている。このように，図３で図示したファイル１３に格納されたＴＬＶオブジェクトのＬｅｎｇｔｈが記憶されているアドレスをＬｅｎｇｔｈの出現順に並べることで，Ｌｅｎｇｔｈ配列１５の内容は，インデックス番号が若い方から順に，「＆Ｌ１」，「＆Ｌ２」，「＆Ｌ２０」，「＆Ｌ２１」，「＆Ｌ３」，「＆Ｌ３０」，「＆Ｌ３１」，「＆Ｌ３２」，「＆Ｌ３３」になる。
【００２４】
図５は，本実施形態に係るＩＣカード１が備える機能を説明する図である。本実施形態に係るＩＣカード１は，ＩＣカード１のＣＰＵを動作させるプログラムにより実現される機能として，アクセス制御手段１０，書き込み制御手段１１および正当性検証手段１２を備える。
【００２５】
図６は，ＩＣカード１が備えるアクセス制御手段１０の動作を説明する図である。ＩＣカード１が備えるアクセス制御手段１０は，ファイル１３に格納されている一つのＴＬＶオブジェクトにアクセスする際に起動し、本発明のアクセス方法に係る処理を実行する機能で，図６で図示した処理を実行する。
【００２６】
ＩＣカード１のアクセス制御手段１０は，ファイル１３に格納されている一つのＴＬＶオブジェクトにアクセスする際，アクセス対象となるＴＬＶオブジェクトのＴａｇをＴａｇ配列１４から検索し，このＴａｇのインデックス番号を特定する処理を実行する（Ｓ１）。この処理において，ＩＣカード１のアクセス制御手段１０が検索するＴａｇは，ターミナルから受信したコマンドの処理で必要となるＴａｇで，このＴａｇは，コマンドのコマンドＡＰＤＵに含まれるパラメータで指定されるのが一般的である。図４（ａ）に従えば，アクセス対象となるＴＬＶオブジェクトのＴａｇが「Ｔ２０」の場合，このＴａｇのインデックス番号は（２）になる。また，アクセス対象となるＴＬＶオブジェクトのＴａｇが「Ｔ３２」の場合，このＴａｇのインデックス番号は（７）になる。
【００２７】
次に，ＩＣカード１のアクセス制御手段１０は，Ｌｅｎｇｔｈ配列１５において，Ｓ１の処理で特定したインデックス番号の位置に格納されているアドレスを取得する処理を実行する（Ｓ２）。ＴＬＶオブジェクトには必ずＴａｇとＬｅｎｇｔｈが含まれるため，同一のＴＬＶオブジェクトにおいて，Ｌｅｎｇｔｈが格納されているインデックス番号とＴａｇが格納されているインデックス番号は同じになる。よって，Ｓ１の処理で特定したインデックス番号の位置に格納されているアドレスを取得することで，アクセス対象となるＴＬＶオブジェクトのＬｅｎｇｔｈが記憶されているアドレスを取得することになる。図４（ａ）に従えば，アクセス対象となるＴＬＶオブジェクトのＴａｇが「Ｔ２０」の場合，このＴａｇのインデックス番号は「２」で，図４（ｂ）に従えば，インデックス番号（２）に格納されているＬｅｎｇｔｈは「＆Ｌ２０」になる。また，アクセス対象となるＴＬＶオブジェクトのＴａｇが「Ｔ３２」の場合，このＴａｇのインデックス番号は「７」で，図４（ｂ）に従えば，インデックス番号（７）に格納されているＬｅｎｇｔｈは「＆Ｌ３２」になる。
【００２８】
次に，ＩＣカード１のアクセス制御手段１０は，Ｌｅｎｇｔｈ配列１５から取得したアドレスを利用して，アクセス対象となるＴＬＶオブジェクトのＬｅｎｇｔｈにアクセスし，アクセス対象となるＴＬＶオブジェクトのＶａｌｕｅに格納したデータを取得する処理（Ｓ３）を実行して，この手順は終了する。例えば，「＆Ｌ２０」をＬｅｎｇｔｈ配列１５から取得した場合，ＩＣカード１のアクセス制御手段１０は，図３で図示した「Ｌ２０」にアクセスし，「Ｌ２０」の後に記憶されている「Ｖ２０」のＶａｌｕｅに格納されたデータを取得して，この手順は終了する。
【００２９】
図６のＳ１において，ＩＣカード１のアクセス制御手段１０は，アクセス対象となるＴＬＶオブジェクトのＴａｇをＴａｇ配列１４から検索する処理を実行するが，ＴＬＶオブジェクトが基本符号化ルール（Basic Encoding Rules）に従い符号化されている場合，Ｔａｇの長さは固定ではなくなる。基本符号化ルールに従えば，シンプル型ＴＬＶオブジェクトの場合，Ｔａｇの長さは１バイトであるが，構造型ＴＬＶオブジェクトの場合，Ｔａｇの長さは１バイトまたは２バイトになる。
【００３０】
基本符号化ルールでは，Ｔａｇの所定ビットによって，続きのバイトがあるか示されるため，Ｔａｇを解析することで，アクセス対象となるＴＬＶオブジェクトのＴａｇをＴａｇ配列１４から検索できる。より，アクセス対象となるＴＬＶオブジェクトのＴａｇをＴａｇ配列１４からより効率良く検索するには，Ｔａｇの長さを所定長（例えば，２バイト）に正規化してＴａｇ配列１４に格納するとよい。Ｔａｇの長さを所定長に正規化すれば，所定間隔を隔ててＴａｇがＴａｇ配列１４内に並ぶため，ポインタなどを利用して，アクセス対象となるＴＬＶオブジェクトのＴａｇをＴａｇ配列１４から効率良く検索できる。なお，アクセス対象となるＴＬＶオブジェクトのＴａｇをＴａｇ配列１４から効率良く検索する別の手法として，Ｔａｇの長さを示すバイトをＴａｇ毎に挿入してＴａｇ配列１４に格納する手法も考えられる。
【００３１】
図７は，ＩＣカード１が備える書き込み制御手段１１の動作を説明する図である。ＩＣカード１が備える書き込み制御手段１１は，ファイル１３をＮＶＭ２３に書き込む際に起動する機能で，図７で図示した処理を実行する。
【００３２】
ファイル１３をＮＶＭ２３に書き込む際，ＩＣカード１が備える書き込み制御手段１１は，ファイル１３に格納するＴＬＶオブジェクトをＮＶＭ２３に書き込む処理を実行する（Ｓ１０）。次に，ＩＣカード１の書き込み制御手段１１は，ＮＶＭ２３に書き込んだＴＬＶオブジェクトの構造を解析し，ファイル１３に格納するＴＬＶオブジェクトのＴａｇをＴａｇの出現順に従い並べたＴａｇ配列１４と，ファイル１３に格納するＴＬＶオブジェクトに含まれるＬｅｎｇｔｈが記憶されているアドレスをＬｅｎｇｔｈの出現順に並べたＬｅｎｇｔｈ配列１５をそれぞれ生成し，Ｔａｇ配列１４とＬｅｎｇｔｈ配列１５をＮＶＭ２３の所定領域に書き込む処理を実行する（Ｓ１１）。次に，ＩＣカード１の書き込み制御手段１１は，チェックサムやＣＲＣなどのアルゴリズムを利用して，ＮＶＭ２３に書き込んだＴＬＶオブジェクトからＥＤＣを演算し，演算したＥＤＣを参照ＥＤＣ１６としてＮＶＭ２３の所定領域に書き込む処理を実行して（Ｓ１２），この手順は終了する。ＩＣカード１が，上述の処理を行う書き込み制御手段１１を備えることで，ファイル１３に格納するＴＬＶオブジェクトを更新しても，アクセス対象となるＴＬＶオブジェクトに効率よくアクセスできる。
【００３３】
基本符号化ルールの場合，Ｔａｇの所定ビットによって，Ｖａｌｕｅの符号化（シンプル型または構造型）が示されるため，ＩＣカード１の書き込み制御手段１１は，Ｔａｇを解析することで，ファイル１３に格納したＴＬＶオブジェクトのＴａｇを特定することになる。例えば，図３に従えば，「Ｔ１」によって，Ｔａｇが「Ｔ１」であるＴＬＶオブジェクトがシンプル型ＴＬＶオブジェクトであることが判明するため，Ｔａｇが「Ｔ１」であるＴＬＶオブジェクトのＶａｌｕｅ（「Ｖ１」）に続くデータが，次のＴａｇであることがわかる。図３に従えば，「Ｔ２」によって，Ｔａｇが「Ｔ２」であるＴＬＶオブジェクトが構造型ＴＬＶオブジェクトであることが判明するため，Ｔａｇが「Ｔ２」であるＴＬＶオブジェクトのＶａｌｕｅ（「Ｖ２」）内を解析することで，「Ｔ２」以降に出現するＴａｇを特定できる。
【００３４】
図８は，ＩＣカード１が備える正当性検証手段１２の動作を説明する図である。ＩＣカード１が備える正当性検証手段１２は，ＩＣカード１のＣＰＵを動作させるプログラムにより実現される機能で，ＩＣカード１の起動時，または，ＩＣカード１のアクセス制御手段が動作するときなど，ファイル１３の正当性検証が必要なときに動作する。
【００３５】
ＩＣカード１が備える正当性検証手段１２は，ファイル１３の正当性検証を実行する際，チェックサムやＣＲＣなどのアルゴリズムを利用して，ファイル１３に格納されたＴＬＶオブジェクトの全てのバイトからＥＤＣを演算し，演算して得られたＥＤＣとＩＣカード１のＮＶＭ２３に記憶されている参照ＥＤＣ１６を照合する処理を実行して，この手順は終了する。
【００３６】
ＩＣカード１に実装されたＩＣチップの製造会社によって提供され，チェックサムやＣＲＣなどのアルゴリズムを利用してＥＤＣを演算するプログラムは，ＥＤＣの演算対象となるデータ（ここでは，ファイル１３）の開始アドレスとサイズを指定するように構成されているのが一般的であるため，ＴＬＶオブジェクトの構造を保持した状態でＮＶＭ２３に書き込むことで，ＩＣチップの製造会社によって提供されプログラムを改良することなくＴＬＶオブジェクトのＥＤＣを演算できる。
【００３７】
上述したように，本実施形態に係るＩＣカード１によれば，Ｔａｇの検索には，ファイル１３に含まれるＴＬＶオブジェクトのＴａｇをＴａｇの出現順に並べたＴａｇ配列１４が利用されるため，ＴＬＶオブジェクトの構造を保持した状態でＩＣカード１のＮＶＭ２３に記憶しても，Ｔａｇを効率よく検索でき，アクセス対象となるＴＬＶオブジェクトに効率よくアクセスできる。更に，構造型ＴＬＶオブジェクトをＶａｌｕｅに格納したＴＬＶオブジェクトがファイル１３に含まれる場合であっても，Ｖａｌｕｅに格納された構造型ＴＬＶオブジェクトに含まれるＴａｇもＴａｇ配列１４に格納できるため，Ｔａｇを効率よく検索し，アクセス対象となるＴＬＶオブジェクトに効率よくアクセスできる。
【符号の説明】
【００３８】
１    ＩＣカード
１０  アクセス制御手段
１１  書き込み制御手段
１２  正当性検証手段
１３  ファイル
１４  Ｔａｇ配列
１５  Ｌｅｎｇｔｈ配列
１６  参照ＥＤＣ
２３  ＮＶＭ
【図１】
0006772545.tif 000002
【図２】
0006772545.tif 000003
【図３】
0006772545.tif 000004
【図４】
0006772545.tif 000005
【図５】
0006772545.tif 000006
【図６】
0006772545.tif 000007
【図７】
0006772545.tif 000008
【図８】
0006772545.tif 000009