(57)【要約】      （修正有）【課題】データメモリに記憶されているファイル内における一部の重要データへのアクセスを効率化することができるＩＣカードを提供する。【解決手段】ＩＣカード２は、ＩＣカード処理装置から受信したコマンドに応じてデータメモリ２２に記憶されているデータにアクセスするものであり、重要データを示す情報に対応づけて当該重要データが記憶されているデータメモリ２２おけるアドレスをポインタテーブルに記憶しておく。ＩＣカード２の制御素子２１は、上記ＩＣカード処理装置から与えられたデータのアクセス要求において指定されるアクセス対象のデータが重要データであるか否かを判定し、この判定によりアクセス対象のデータが重要データであると判定した場合、上記ポインタテーブルに記憶されている当該重要データの前記データメモリ２２における先頭アドレスに従って当該重要データを読み出す。【選択図】図２
2011022768.tif 000002
【特許請求の範囲】
【請求項１】
外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスする携帯可能電子装置であって、
前記外部装置から与えられた書込みコマンドにおいて指定される書込対象のデータに重要データが含まれるか否かを判定する判定手段と、
この判定手段により前記書込対象のデータに重要データが含まれると判定した場合、前記書込対象のデータの先頭から前記重要データの先頭までのデータ長と前記書込対象のデータの書込みを開始する前記データメモリ上のアドレスとにより前記データメモリにおける前記重要データの先頭アドレスを算出する算出手段と、
前記算出手段により算出した前記重要データの先頭アドレスを示す情報を前記重要データを示す情報に対応づけて記憶する位置テーブルと、
前記外部装置から与えられた書込みコマンドに応じて前記書込対象のデータを前記データメモリに書込む書込手段と、
を有することを特徴とする携帯可能電子装置。
【請求項２】
さらに、前記判定手段により前記書込対象のデータに重要データが含まれると判定した場合、前記書込みコマンドにおいて指定される書込対象のデータの先頭から前記重要データの先頭までのデータ長を保持する保持手段を有し、
前記算出手段は、前記書込手段により前記データの書込みを開始した前記データメモリにおけるアドレスと前記保持手段に保持しているデータ長とにより前記データメモリにおける前記重要データの先頭アドレスを算出する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
さらに、重要データを含む親データを示す識別子を示す情報を記憶する重要データテーブルを有し、
前記判定手段は、前記書込みコマンドにおいて指定される書込対象のデータの先頭部分に格納される親データの識別子が前記重要データテーブルに記憶されている重要データを含む親データの識別子と一致するか否かにより、前記書込対象のデータが重要データを含むか否かを判定する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項４】
外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスする携帯可能電子装置であって、
重要データを示す情報に対応づけて前記データメモリにおいて重要データが記憶されている位置を示す情報を記憶する位置テーブルと、
前記外部装置から与えられた処理の過程でデータ読出しを必要とするコマンドにおいて指定される読出対象のデータが重要データであるか否かを判定する判定手段と、
この判定手段により前記読出対象のデータが重要データであると判定した場合、前記位置テーブルに記憶されている当該重要データの前記データメモリにおける位置に従って当該重要データを読み出す読出手段と、
を有することを特徴とする携帯可能電子装置。
【請求項５】
さらに、重要データとするデータの識別子を示す情報を記憶する重要データテーブルを有し、
前記判定手段は、前記コマンドにおいて指定される読出対象のデータの識別子が前記重要データテーブルに記憶されている重要データとするデータの識別子と一致するか否かにより、前記読出対象のデータが重要データであるか否かを判定する、
ことを特徴とする前記請求項４に記載の携帯可能電子装置。
【請求項６】
外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスする携帯可能電子装置であって、
重要データを示す情報に対応づけて前記データメモリにおいて重要データが記憶されている位置を示すアドレス情報を記憶する位置テーブルと、
前記外部装置から与えられた書換えコマンドにおいて指定される書換対象のデータが重要データを含むデータ内のデータであるか否かを判定する判定手段と、
この判定手段により前記書換対象のデータが重要データを含むデータ内のデータあると判定した場合、前記書換えコマンドに応じたデータ書換え後の前記データメモリにおける前記重要データの先頭アドレスを算出する算出手段と、
当該重要データを示す情報に対応づけて前記位置テーブルに記憶されている重要データの先頭アドレスを示す情報を前記算出手段により算出した前記重要データの先頭アドレスにより更新する更新手段と、
前記外部装置から与えられた前記書換えコマンドに応じて前記書換対象のデータを書き換える書換手段と、
を有することを特徴とする携帯可能電子装置。
【請求項７】
さらに、重要データを含む親データを示す識別子を示す情報を記憶する重要データテーブルを有し、
前記判定手段は、前記書換えコマンドにおいて指定される書換対象のデータを含む親データの識別子が前記重要データテーブルに記憶されている重要データを含む親データの識別子と一致するか否かにより、前記書換対象のデータが重要データを含むか否かを判定する、
ことを特徴とする前記請求項６に記載の携帯可能電子装置。
【請求項８】
外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスする携帯可能電子装置の制御方法であって、
前記外部装置から与えられた書込みコマンドにおいて指定される書込対象のデータに重要データが含まれるか否かを判定し、
この判定により前記書込対象のデータに重要データが含まれると判定した場合、前記書込対象のデータの先頭から前記重要データの先頭までのデータ長と前記書込対象のデータの書込みを開始する前記データメモリ上のアドレスとにより前記データメモリにおける前記重要データの先頭アドレスを算出し、
この算出した前記重要データの先頭アドレスを前記重要データを示す情報に対応づけて記憶手段に記憶し、
前記外部装置から与えられた書込みコマンドに応じて前記書込対象のデータを前記データメモリに書込む、
ことを特徴とする携帯可能電子装置の制御方法。
【請求項９】
外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスする携帯可能電子装置の制御方法であって、
重要データを示す情報に対応づけて前記データメモリにおいて重要データが記憶されている位置を示す情報を位置テーブルに記憶しておき、
前記外部装置から与えられた処理の過程でデータ読出しを必要とするコマンドにおいて指定される読出対象のデータが重要データであるか否かを判定し、
この判定により前記読出対象のデータが重要データであると判定した場合、前記位置テーブルに記憶されている当該重要データの前記データメモリにおける位置に従って当該重要データを読み出す、
ことを特徴とする携帯可能電子装置の制御方法。
【請求項１０】
外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスする携帯可能電子装置の制御方法であって、
重要データを示す情報に対応づけて前記データメモリにおいて重要データが記憶されている位置を示すアドレス情報を位置テーブルを記憶しておき、
前記外部装置から与えられた書換えコマンドにおいて指定される書換対象のデータが重要データを含むデータ内のデータであるか否かを判定し、
この判定により前記書換対象のデータが重要データを含むデータ内のデータであると判定した場合、前記書換えコマンドに応じたデータ書換え後の前記データメモリにおける前記重要データの先頭アドレスを算出し、
当該重要データを示す情報に対応づけて前記位置テーブルに記憶されている重要データの先頭アドレスを示す情報を前記算出した前記重要データの先頭アドレスにより更新する、
前記外部装置から与えられた前記書換えコマンドに応じて前記書換対象のデータを書き換える、
ことを特徴とする携帯可能電子装置の制御方法。
【請求項１１】
外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスするＩＣカードであって、
前記外部装置から与えられた書込みコマンドにおいて指定される書込対象のデータに重要データが含まれるか否かを判定する判定手段と、この判定手段により前記書込対象のデータに重要データが含まれると判定した場合、前記書込対象のデータの先頭から前記重要データの先頭までのデータ長と前記書込対象のデータの書込みを開始する前記データメモリ上のアドレスとにより前記データメモリにおける前記重要データの先頭アドレスを算出する算出手段と、前記算出手段により算出した前記重要データの先頭アドレスを示す情報を前記重要データを示す情報に対応づけて記憶する位置テーブルと、前記外部装置から与えられた書込みコマンドに応じて前記書込対象のデータを前記データメモリに書込む書込手段とを有するＩＣモジュールと、
前記ＩＣモジュールを収納したＩＣカード本体と、
を有することを特徴とするＩＣカード。
【請求項１２】
外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスするＩＣカードであって、
重要データを示す情報に対応づけて前記データメモリにおいて重要データが記憶されている位置を示す情報を記憶する位置テーブルと、前記外部装置から与えられた処理の過程でデータ読出しを必要とするコマンドにおいて指定される読出対象のデータが重要データであるか否かを判定する判定手段と、この判定手段により前記読出対象のデータが重要データであると判定した場合、前記位置テーブルに記憶されている当該重要データの前記データメモリにおける位置に従って当該重要データを読み出す読出手段とを有するＩＣモジュールと、
前記ＩＣモジュールを収納したＩＣカード本体と、
を有することを特徴とするＩＣカード。
【請求項１３】
外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスするＩＣカードであって、
重要データを示す情報に対応づけて前記データメモリにおいて重要データが記憶されている位置を示すアドレス情報を記憶する位置テーブルと、前記外部装置から与えられた書換えコマンドにおいて指定される書換対象のデータが重要データを含むデータ内のデータであるか否かを判定する判定手段と、この判定手段により前記書換対象のデータが重要データを含むデータ内のデータあると判定した場合、前記書換えコマンドに応じたデータ書換え後の前記データメモリにおける前記重要データの先頭アドレスを算出する算出手段と、
当該重要データを示す情報に対応づけて前記位置テーブルに記憶されている重要データの先頭アドレスを示す情報を前記算出手段により算出した前記重要データの先頭アドレスにより更新する更新手段と、前記外部装置から与えられた前記書換えコマンドに応じて前記書換対象のデータを書き換える書換手段とを有するＩＣモジュールと、
前記ＩＣモジュールを収納したＩＣカード本体と、
を有することを特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、たとえば、書込みあるいは書換えが可能な不揮発性メモリおよびＣＰＵなどの制御素子を具備し、外部からのコマンドに応じた処理を行うＩＣカードなどの携帯可能電子装置、ＩＣカードおよび携帯可能電子装置の制御方法に関する。
【背景技術】
【０００２】
従来、携帯可能電子装置としてのＩＣカードは、不揮発性メモリとしてのデータメモリ、揮発性メモリとしてのワーキングメモリ、これらのメモリに対してアクセス（データの読出しおよびまたは書込み等）を行なう制御素子としてのＣＰＵ、および、ＣＰＵの動作用プログラム等を格納したプログラムメモリを有する。このようなＩＣカードでは、外部装置から供給される命令データに基づいてデータの入出力などの処理を行なう。近年では、上記のようなＩＣカードが産業各方面で利用されている。
【０００３】
また、上記ＩＣカードのデータメモリに記憶されるデータには、当該データの種別を示す識別子と、当該データの長さを示す長さ情報と、当該データそのものを示すデータ部とから構成されているＴＬＶ構造を有するものがある。このようなＴＬＶ構造データにアクセスするためには、識別子を指定したコマンドによりアクセスが可能である。たとえば、外部装置から受信した読出しコマンドに対して、ＩＣカードは、読出対象となるデータを識別子により検索する。この検索により読出対象のデータが存在した場合、ＩＣカードは、その読出対象のデータの識別子に続く長さ情報で示されるデータ長分のデータを読出すようになっている。
【０００４】
さらに、上記ＴＬＶ構造のデータには、親データのデータ部に複数の子データが格納される入れ子構造となっているデータもある。このような入れ子構造のデータについては、たとえば、ＩＳＯ／ＩＥＣ７８１６−４  Ａｎｎｅｘ．Ｄで構造化されたタグフィールド（Ｔａｇ  ｆｉｅｌｄ）などが定義されている。上記のような入れ子構造データ内における一部分のデータにアクセスする場合、従来のＩＣカードでは、当該入れ子構造データ内を先頭から順番に解析することによりアクセス対象のデータを検索する。このようなアクセス制御では、入れ子構造データのサイズが大きい場合、あるいは、入れ子構造データ内の一部のデータに頻繁にアクセスする場合、処理に多大な時間がかかってしまう。特に、近年では、公開鍵証明書あるいはデジタルシグネチャーなどの巨大なデータをＩＣカードに保存する運用形態が多くなってきている。このような運用形態では、巨大なデータ内の一部のデータにアクセスする制御を高速化することが要望される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１０２３１２号公報
【特許文献２】特開２００７−３２３２７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
この発明の一形態は、データに対して効率的なアクセス制御を行うことができる携帯可能電子装置、ＩＣカードおよび携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
この発明の一形態としての携帯可能電子装置は、外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスするものであって、前記外部装置から与えられた書込みコマンドにおいて指定される書込対象のデータに重要データが含まれるか否かを判定する判定手段と、この判定手段により前記書込対象のデータに重要データが含まれると判定した場合、前記書込対象のデータの先頭から前記重要データの先頭までのデータ長と前記書込対象のデータの書込みを開始する前記データメモリ上のアドレスとにより前記データメモリにおける前記重要データの先頭アドレスを算出する算出手段と、前記算出手段により算出した前記重要データの先頭アドレスを示す情報を前記重要データを示す情報に対応づけて記憶する位置テーブルと、前記外部装置から与えられた書込みコマンドに応じて前記書込対象のデータを前記データメモリに書込む書込手段とを有する。
【０００８】
この発明の一形態としての携帯可能電子装置は、外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスするものであって、重要データを示す情報に対応づけて前記データメモリにおいて重要データが記憶されている位置を示す情報を記憶する位置テーブルと、前記外部装置から与えられた読出しコマンドにおいて指定される読出対象のデータが重要データであるか否かを判定する判定手段と、この判定手段により前記読出対象のデータが重要データであると判定した場合、前記位置テーブルに記憶されている当該重要データの前記データメモリにおける位置に従って当該重要データを読み出す読出手段とを有する。
【０００９】
この発明の一形態としての携帯可能電子装置は、外部装置からのコマンドに応じてデータメモリに記憶されているデータにアクセスするものであって、重要データを示す情報に対応づけて前記データメモリにおいて重要データが記憶されている位置を示すアドレス情報を記憶する位置テーブルと、前記外部装置から与えられた書換えコマンドにおいて指定される書換対象のデータが重要データを含むデータ内のデータであるか否かを判定する判定手段と、この判定手段により前記書換対象のデータが重要データを含むデータ内のデータあると判定した場合、前記書換えコマンドに応じたデータ書換え後の前記データメモリにおける前記重要データの先頭アドレスを算出する算出手段と、当該重要データを示す情報に対応づけて前記位置テーブルに記憶されている重要データの先頭アドレスを示す情報を前記算出手段により算出した前記重要データの先頭アドレスにより更新する更新手段と、
前記外部装置から与えられた前記書換えコマンドに応じて前記書換対象のデータを書き換える書換手段とを有する。
【発明の効果】
【００１０】
この発明の一形態によれば、特定のデータに対して効率的なアクセス制御を行うことができる携帯可能電子装置、ＩＣカードおよび携帯可能電子装置の制御方法を提供できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施の形態に係るＩＣカード（携帯可能電子装置）およびＩＣカード処理装置の構成例を概略的に示すブロック図である。
【図２】図２は、ＩＣカードのハードウエア構成例を概略的に示すブロック図である。
【図３】図３は、データメモリに格納されるファイルの構造例を示す図である。
【図４】図４は、レコード構造ＥＦにおけるデータ構成例を示す図である。
【図５】図５は、ＩＣカードにおける書込みコマンドに対する処理の流れを説明するためのフローチャートである。
【図６】図６は、ＩＣカードにおけるデータ処理の過程でデータ読出しを必要とするコマンドに対する処理の流れを説明するためのフローチャートである。
【図７】図７は、通常の読出しコマンド処理の流れを説明するためのフローチャートである。
【図８】図８は、ＩＣカードにおける書換えコマンドに対する処理の流れを説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、この発明の実施の形態について図面を参照して説明する。  
図１は、本実施の形態に係るＩＣカード（携帯可能電子装置）２、および、ＩＣカード２との通信機能を有する外部装置としてのＩＣカード処理装置１の構成例を概略的に示すブロック図である。  
まず、上記ＩＣカード処理装置１の構成について説明する。  
上記ＩＣカード処理装置１は、図１に示すように、端末装置１１、カードリーダライタ１２、キーボード１３、ディスプレイ１４、および、プリンタ１５などを有している。
【００１３】
上記端末装置１１は、ＩＣカード処理装置１全体の動作を制御するものである。上記端末装置１１は、ＣＰＵ、種々のメモリ及び各種インターフェースなどにより構成される。たとえば、上記端末装置１１は、パーソナルコンピュータ（ＰＣ）により構成される。  
上記端末装置１１は、上記カードリーダライタ１２によりＩＣカード２へコマンドを送信する機能、ＩＣカード２から受信したデータを基に種々の処理を行う機能などを有している。たとえば、上記端末装置１１は、カードリーダライタ１２を介してＩＣカード２にデータの書き込みコマンドを送信することによりＩＣカード２内の不揮発性メモリにデータを書き込む制御を行う。また、上記端末装置１１は、ＩＣカード２に読み取りコマンドを送信することによりＩＣカード２からデータを読み出す制御を行う。
【００１４】
上記カードリーダライタ１２は、上記ＩＣカード２との通信を行うためのインターフェース装置である。上記カードリーダライタ１２は、上記ＩＣカード２の通信方式に応じたインターフェースにより構成される。たとえば、上記ＩＣカード２が接触型のＩＣカードである場合、上記カードリーダライタ１２は、ＩＣカード２のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。また、上記ＩＣカード２が非接触型のＩＣカードである場合、上記カードリーダライタ１２は、ＩＣカード２との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記カードリーダライタ１２では、上記ＩＣカード２に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ１２は、上記端末装置１１による制御に基づいて上記ＩＣカード２の活性化（起動）、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【００１５】
上記キーボード１３は、当該ＩＣカード処理装置１の操作員が操作する操作部として機能し、操作員により種々の操作指示やデータなどが入力される。上記ディスプレイ１４は、上記端末装置１１の制御により種々の情報を表示する表示装置である。上記プリンタ１５は、処理結果などの各種データを印刷出力するためのものである。
【００１６】
次に、上記ＩＣカード２のハードウエア構成例について説明する。  
上記ＩＣカード２は、上記ＩＣカード処理装置１などの上位機器から電力などの供給を受けた際、活性化される（動作可能な状態になる）ようになっている。例えば、上記ＩＣカード２が接触型の通信によりＩＣカード処理装置１と接続される場合、つまり、ＩＣカード２が接触型のＩＣカードで構成される場合、上記ＩＣカード２は、通信インターフェースとしてのコンタクト部を介してＩＣカード処理装置１からの動作電源及び動作クロックの供給を受けて活性化される。
【００１７】
また、上記ＩＣカード２が非接触型の通信方式によりＩＣカード処理装置１と接続される場合、つまり、上記ＩＣカード２が非接触式のＩＣカードで構成される場合、上記ＩＣカード２は、通信インターフェースとしてのアンテナ及び変復調回路などを介してＩＣカード処理装置１からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化するようになっている。
【００１８】
図２は、本実施の形態に係るＩＣカード２のハードウエア構成例を概略的に示すブロック図である。  
上記ＩＣカード２は、本体Ｂを構成する筐体内にモジュールＭが内蔵されている。上記モジュールＭは、１つまたは複数のＩＣチップＣと通信用の外部インターフェース（通信インターフェース）とが接続された状態で一体的に形成され、ＩＣカード２の本体Ｂ内に埋設されている。また、上記ＩＣカード２のモジュールＭは、図２に示すように、制御素子２１、データメモリ２２、ワーキングメモリ２３、プログラムメモリ２４、および、通信部２５などを有してしている。
【００１９】
上記制御素子２１は、当該ＩＣカード２全体の制御を司るものである。上記制御素子２１は、上記プログラムメモリ２４あるいは上記データメモリ２２に記憶されている制御プログラムおよび制御データに基づいて動作することにより、種々の機能を実現する。たとえば、上記制御素子２１は、オペレーティングシステムのプログラムを実行することにより、当該ＩＣカード２の基本的な動作制御を行う。また、上記制御素子２１は、当該ＩＣカード２の利用目的に応じたアプリケーションプログラムを実行することにより、当該ＩＣカード２の運用形態に応じた種々の動作制御を行う。
【００２０】
上記データメモリ２２は、例えば、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read-Only  Memory）あるいはフラッシュＲＯＭなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記データメモリ２２には、当該ＩＣカード２の運用用途に応じた制御プログラムあるいは種々のデータが書込まれる。上記データメモリ２２には、当該ＩＣカード２の規格に応じた種々のファイルが定義され、それらのファイルに種々のデータが書き込まれる。上記データメモリ２２に格納されるファイルの例については、後述する。また、上記データメモリ２２には、各種の制御に用いられるポインタテーブルが設けられる。たとえば、上記データメモリ２２には、使用頻度の高いデータあるいは重要度の高いデータなどの重要データの位置（アドレス）を示す重要データポインタテーブル２２ａが設けられる。
【００２１】
上記ワーキングメモリ２３は、ＲＡＭなどの揮発性のメモリである。また、上記ワーキングメモリ２３は、制御素子２１が処理中のデータなどを一時保管するバッファとして機能する。  
上記プログラムメモリ２４は、予め制御用のプログラムや制御データなどが記憶されているマスクＲＯＭなどの不揮発性のメモリである。上記プログラムメモリ２４には、当該ＩＣカードの製造段階で制御プログラムあるいは制御データなどが記憶された状態でＩＣカード２内に組み込まれる。つまり、上記プログラムメモリ２４に記憶されている制御プログラムあるいは制御データは、当該ＩＣカードの基本的な動作を司るものであり、予め当該ＩＣカード２の仕様に応じて組み込まれるものである。また、プログラムメモリ２４には、上記データメモリ２２に記憶されるデータのうち使用頻度の高いデータあるいは重要度の高いデータなどの重要データを示す重要データ設定テーブル２４ａが設けられている。
【００２２】
上記通信部２５は、上記ＩＣカード処理装置１のカードリーダライタ１２との通信を行うためのインターフェースである。当該ＩＣカード２が接触型のＩＣカードとして実現される場合、上記通信部２５は、上記ＩＣカード処理装置１のカードリーダライタ１２と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ＩＣカード２が非接触型のＩＣカードとして実現される場合、通信部２５は、上記ＩＣカード処理装置１のカードリーダライタ１２との無線通信を行うための変復調回路などの通信制御部および電波を送受信するためのアンテナなどにより構成される。
【００２３】
次に、上記データメモリ２２に格納されるファイルについて説明する。  
図３は、上記データメモリ２２に格納されるファイルの構造例を示す図である。  
図３に示すように、上記データメモリ２２には、ＭＦ（Master File）、ＤＦ(Dedicated File)およびＥＦ(Elementary File)などからなる階層構造を有する複数のファイル群が定義される。図３に示す例では、最上階層のマスターファイル（ＭＦ）３１の次の階層には、キーＥＦ３６、第１ＤＦ（ＤＦ１）３２および第２ＤＦ（ＤＦ２）３３が存在している。キーＥＦ３６は、たとえば、当該ＩＣカード２に対するアクセス権を確立するためのキーあるいは認証用のキーとして機能するキーデータが格納される。
【００２４】
また、各ＤＦは、当該ＩＣカード２が具備するアプリケーションを実現するためのデータが格納される。たとえば、ＤＦ１およびＤＦ２は、クレジットカードとして機能するためのアプリケーションあるいはポイントカードとして機能するためのアプリケーションなどを実現するためのデータを格納する。  
図３に示す例では、第１ＤＦ（ＤＦ１）３２の配下としてＤＦ１の次の階層には、第１ＥＦ（ＥＦ１−１）３４、および、第２ＥＦ（ＥＦ１−２）３５が存在している。上記各ＥＦ３４、３５は、各種のデータを格納するためのデータファイルである。上記各ＥＦには、複数種類のデータ構造によりデータが格納される。たとえば、上記各ＥＦに格納されるデータの構造には、透過構造（ｔｒａｎｓｐａｒｅｎｔ）、および、レコード構造（ｒｅｃｏｒｄ）などがある。上記透過構造のＥＦ（透過構造ＥＦ）は、構造化されていない一連のデータを記憶するファイルである。上記透過構造ＥＦに記憶されているデータは、コマンド等においてオフセット指定で扱われる。これに対して、レコード構造のＥＦ（レコード構造ＥＦ）は、所定の形式で構造化された複数のデータ（レコード）を記憶するファイルである。上記レコード構造ＥＦに記憶されているデータは、コマンド等においてアクセス対象とするレコードが指定される。
【００２５】
次に、上記レコード構造ＥＦの構成について説明する。  
図４は、レコード構造ＥＦにおけるデータ構成例を示す図である。  
図４に示すＥＦは、レコード構造ＥＦの一例である。図４に示すＥＦは、識別子（タグ（Tag））４１、長さ情報（レングス(Length)）４２、および、データ部（バリュー（Value））４３が順に連結されたＴＬＶ構造のデータが格納されたファイルとなっている。図４に示すＥＦは、識別子４１で識別され、識別子４１に続く長さ情報４２によりデータ部４３が定義される。さらに、図４に示すＥＦでは、当該ＥＦのデータ部４３内に、複数のＴＬＶ構造のデータ（子データ）が格納されている。言い換えれば、識別子４１、長さ情報４２およびデータ部４３からなるデータを親データとすれば、図４に示すデータは、親データ内に複数の子データが格納されている入れ子構造のデータである。以下の説明では、入れ子構造のデータからなっているＥＦ全体としての親データにおいて、識別子４１を親識別子と称し、長さ情報４２を親長さ情報と称し、データ部４３を親データ部とも称する。
【００２６】
上記親データ部４３に格納される複数の子データも、それぞれがＴＬＶ構造を有している。すなわち、親データ部４３内の各子データは、それぞれ識別子４５（４５ａ、４５ｂ、４５ｃ、４５ｄ）、長さ４６（４６ａ、４６ｂ、４６ｃ、４６ｄ）、および、データ部４７（４７ａ、４７ｂ、４７ｃ、４７ｄ）が順に連結された構成となっている。以下の説明では、各子データにおいて、識別子４５（４５ａ、４５ｂ、４５ｃ、４５ｄ）を子識別子と称し、長さ情報４６（４６ａ、４６ｂ、４６ｃ、４６ｄ）を子長さ情報と称し、データ部４７（４７ａ、４７ｂ、４７ｃ、４７ｄ）を子データ部と称する。  
また、以降の説明では、親データの識別子４１、親データの長さ情報４２、子データの識別子４６および子データの長さ情報４７は、それぞれ１バイトであることを想定するものとする。
【００２７】
次に、ＩＣカード２における上記のようなファイルへのアクセス制御について説明する。  
上記ＩＣカード２は、外部装置（ＩＣカード処理装置）１から与えられるコマンドに応じて上記のようなファイルへのアクセス制御を行う。たとえば、上記ＩＣカード２は、外部装置１からのコマンドで指定されるファイルあるいはファイル内のデータに対してアクセス（読出し、書込み、更新、削除など）を行う。
【００２８】
たとえば、図４に示すようなレコード構造ＥＦには、リードレコード（Ｒｅａｄ  Ｒｅｃｏｒｄ）、ライトレコード（Ｗｒｉｔｅ  Ｒｅｃｏｒｄ）、アップデートレコード（Ｕｐｄａｔｅ  Ｒｅｃｏｒｄ）、アペンドレコード（Ａｐｐｅｎｄ  Ｒｅｃｏｒｄ）などのレコード系のコマンドによってデータへのアクセスが可能となる。なお、レコードＥＦであっても、擬似的に透過構造ＥＦとしてアクセスすることにより、リードバイナリ（Ｒｅａｄ  Ｂｉｎａｒｙ）、ライトバイナリ（Ｗｒｉｔｅ  Ｂｉｎａｒｙ）などのバイナリ系のコマンドでもアクセス可能としても良い。
【００２９】
上記のような各コマンドは、所定のフォーマットで構成される。たとえば、本ＩＣカード２に与えられるコマンドは、コマンドの種類、および、アクセス対象のファイルあるいはデータなどを示す情報が所定のファーマットで格納されるようになっている。たとえば、各コマンドでは、アクセス対象とする親データ（つまりＥＦ）を親識別子で指定したり、アクセス対象とする子データを子識別子で指定することが可能である。
【００３０】
次に、ＩＣカード２におけるデータの書込みを要求する書込みコマンドに対する処理に説明する。  
図５は、当該ＩＣカード２における書込みコマンド（例えば、ライトレコードコマンド）に対する処理の流れを説明するためのフローチャートである。ここでは、書込みコマンドに対応する処理として、図４に示すような入れ子構造データの書込み処理を想定する。また、書込み対象となる親データとしての入れ子構造データ（ＥＦ）には、所定の子データとしての使用頻度あるいは重要度が高い子データ（以降の説明では、このような子データを重要データと呼称する。）が含まれる場合があるものとする。
【００３１】
外部装置としてのＩＣカード処理装置１のカードリーダライタ１２がＩＣカード２に対してデータの書き込みを要求する書込みコマンドを供給したものとする。すると、ＩＣカード２では、通信部２５により受信した上記書込みコマンドとしてのデータを制御素子（ＣＰＵ）２１に供給する。すると、制御素子２１は、通信部２５から供給されたデータ（受信したコマンド）におけるコマンドコードなどにより当該コマンドが書込みコマンドであることを認識する（ステップＳ５１）。
【００３２】
なお、ＩＣカード２に供給されるコマンドは、コマンドの種類を示すコマンドコード、パラメータ、および、データ部などを有する。ＩＣカード２の制御素子２１は、受信したコマンドのコマンドコードを解析することにより受信したコマンドの種類（命令内容）を判別する。このような処理は、制御素子２１がプログラムメモリ２４に記憶されているプログラムを実行することにより実現される。書込みコマンドには、書込み命令であることを示すコマンドコードと書込むべきデータ（書込みデータ）とが含まれる。たとえば、図４に示すような入れ子構造データの書き込みを要求する書込みコマンドでは、データ部に親データの識別子（親識別子）を含む書込みデータが格納される。
【００３３】
上記のような書込みコマンドを受信すると、制御素子（ＣＰＵ）２１は、当該コマンドにおけるデータ部で指定される書込みデータに含まれる親データの親識別子（ファイルの識別子）が重要データを含む親データ（ファイル）の親識別子であるか否かを判断する（ステップＳ５２）。書込みデータの親識別子が重要データを含む親データの識別子であるか否かは、プログラムメモリ２４に設けられている重要データ設定テーブル２４ａに基づいて判断される。重要データ設定テーブル２４ａは、重要データを含む親データ（ファイル）を示す情報を記憶する。たとえば、重要データ設定テーブル２４ａには、重要データを含むファイルの識別子（親データの親識別子）、および、当該ファイルにおける重要データの子識別子が記憶される。
【００３４】
重要データ設定テーブル２４ａに格納される情報は、予め設定される情報である。これは、ＩＣカードの運用形態において、上記重要データが記憶されるファイル（親データ）及び当該ファイル内に格納される重要データ（子データ）に関する情報が各アプリケーションごとに予め決定されているためである。このため、重要データに関する情報を格納する重要データ設定テーブル２４ａは、不揮発性のメモリに予め設けられる。ただし、重要データ設定テーブル２４ａは、セキュリティが確保されている領域に設けられるのが好ましい。本ＩＣカード２では、重要データ設定テーブル２４ａは、プログラムメモリ２４に記憶されるものとする。なお、重要データ設定テーブル２４ａは、データメモリ２２上のセキュリティが確保されている記憶領域に設けるようにしても良い。
【００３５】
上記判断により書込みデータが重要データを含む親データ（ファイル）でないと判断した場合（ステップＳ５２、ＮＯ）、制御素子２１は、通常の書き込みコマンド処理を実施する（ステップＳ５３）。  
上記判断により書込みデータが重要データを含む親データ（ファイル）であると判断した場合（ステップＳ５２、ＹＥＳ）、制御素子２１は、当該書込みデータとしての親データの先頭位置（親識別子の位置）から重要データとしての子データの先頭位置（子識別子の位置）までの長さをワーキングメモリ２３に記憶する（ステップＳ５４）。
【００３６】
ワーキングメモリ２３に親データの先頭から重要データの先頭までの長さ情報を記憶すると、制御素子２１は、当該書込みコマンドに応じてデータをデータメモリ２２に書込む処理を行う（ステップＳ５５）。当該書込みコマンドに応じてデータを書込むととともに、制御素子２１は、書き込んだデータにおける重要データの先頭アドレスを算出する（ステップＳ５６）。重要データの先頭アドレスは、データメモリ２２における当該親データの書込み開始アドレスに上記ワーキングメモリ２３に記憶した親データの先頭から重要データの先頭までの長さを加算することによりを算出される。
【００３７】
重要データの先頭アドレスを算出すると、制御素子２１は、算出した重要データの先頭アドレスを当該重要データに対応するポインタとしてデータメモリ２２に記憶する（ステップＳ５７）。上記重要データのポインタは、重要データごとに設定される情報であり、ポインタテーブル２２ａに記憶される。たとえば、ポインタテーブル２２ａは、各重要データのポインタとして、当該重要データの先頭位置を示すアドレスが当該重要データを含むファイルの識別子（親データの親識別子）と当該重要データの識別子（子データの子識別子）とに対応づけて記憶される。  
以上の処理が完了すると、上記制御素子２１は、当該書込みコマンドの処理結果を示すレスポンスデータを当該書き込みコマンドの送信元としてのＩＣカード処理装置１へ送信する（ステップＳ５８）。
【００３８】
上記のように、ＩＣカード２は、ＩＣカード処理装置１から書込みコマンドを受信した場合、書込みコマンドで指定される書込対象のデータに重要データが含まれるか否かを重要データ設定テーブル２４ａにより判定し、この判定により書込対象のデータに重要データが含まれると判定した場合、当該書込みコマンドに応じて書込まれる重要データのデータメモリ２２におけるアドレスを算出し、算出した重要データのアドレスをポインタテーブル２２ａに記憶する。  
このような書込み処理によれば、データメモリ２２にファイルとして記憶されている親データ内に含まれる重要データの位置を示す情報をポインタテーブル２２ａで簡単に判別することができ、その結果として、重要データへのアクセスを高速化及び効率化することができるＩＣカード２を提供できる。
【００３９】
次に、ＩＣカード２における処理などにおいてデータの読出しを要求するコマンドに対する処理に説明する。  
図６は、ＩＣカード２における演算処理（たとえば、データの暗号化、復号化）コマンド（たとえば、Generate ACコマンド）に対する処理の流れを説明するためのフローチャートである。ここでは、コマンドに対応する処理として、その過程で図４に示すような入れ子構造データから指定されたデータを読み出す処理を想定する。また、アクセス対象となる親データとしての入れ子構造データ（データファイル）には、子データとして重要データが含まれる場合があるものとする。
【００４０】
まず、外部装置としてのＩＣカード処理装置１のカードリーダライタ１２がＩＣカード２に対して演算処理を要求するコマンドを供給したものとする。すると、ＩＣカード２では、通信部２５により上記コマンドとしてのデータを受信して制御素子（ＣＰＵ）２０１に供給する。すると、制御素子２１は、通信部２５から供給されたデータ（受信したコマンド）におけるコマンドコードなどにより当該コマンドがＩＣカード内のデータを読出して演算等の処理を行うコマンドであることを認識する（ステップＳ６１）。
【００４１】
上記のようなコマンドを受信すると、制御素子（ＣＰＵ）２１は、当該コマンドにおける処理のアクセス対象（読出対象）のデータが重要データであるか否かを判断する（ステップＳ６２）。読出対象のデータが重要データであるか否かは、重要データ設定テーブル２４ａに記憶されている重要データの識別子と当該コマンドの処理過程で指定される読出対象の識別子とが一致するか否かで判断する。  
上記判断により読出対象のデータが重要データでないと判断した場合（ステップＳ６２、ＮＯ）、制御素子２１は、通常のコマンド処理を実施する（ステップＳ６３）。この通常のコマンド処理は、図７にフローチャートで示す処理の流れで実行される。この通常のコマンド処理については、後で詳細に説明するものとする。
【００４２】
上記判断により読出対象のデータが重要データであると判断した場合（ステップＳ６２、ＹＥＳ）、制御素子２１は、当該読出対象の重要データが記憶されているアドレスとしての当該重要データのポインタをデータメモリ２２におけるポインタテーブル２２ａから読出す（ステップＳ６４）。当該重要データのポインタを読み出すと、制御素子２１は、重要データのポインタとしてのアドレスを読出位置を示す読出ポインタにセットする（ステップＳ６５）。上記読出ポインタは、たとえば、ワーキングメモリ２３に記憶される。ただし、読出ポインタは、書換え可能なメモリに記憶すればよく、たとえば、データメモリ２２に記憶するようにしても良い。
【００４３】
上記読出ポインタに重要データのポインタをセットすると、制御素子２１は、当該読出ポインタで示されるデータメモリ２２上のアドレスから読出対象の子データとしての重要データの識別子を読み出す（ステップＳ６６）。さらに、制御素子２１は、重要データの識別子に続く長さ情報を読み込み、当該長さ情報で示されるデータ部のデータを読み出す（ステップＳ６７）。データの読出しが完了すると、制御素子２１は、読み出したデータをもらい、演算処理といった通常のコマンド処理を実施する（ステップＳ６８）。
【００４４】
ここで、図７を参照してデータの読出しを必要とする通常のデータ読出しコマンド処理について説明する。なお、通常の読出し処理とは、重要データ以外のデータの読出し処理を意味するものとする。  
すなわち、重要データ以外のデータを読み出す場合、制御素子２１は、読出ポインタに先頭の子データ（親データの実データの先頭）のアドレスをセットする（ステップＳ７１）。たとえば、制御素子２１は、読出対象とするデータを含む親データ（ファイル）の先頭アドレスから親データの識別子および長さ情報を特定し、特定した長さ情報で示される親データのデータ部における先頭アドレス（これが１番目の子データの先頭アドレスに相当する）を読出ポインタにセットする。
【００４５】
読出ポインタをセットすると、制御素子２１は、読出ポインタで示される子データの識別子（子識別子）を読み出す（ステップＳ７２）。子識別子を読み出すと、制御素子２１は、読み出した子識別子と当該コマンドで指定される読出対象の子データの子識別子とが一致するか否かを判断する（ステップＳ７３）。この判断により読出ポインタが示す子識別子と読出対象の子識別子とが一致すると判断した場合（ステップＳ７３、ＹＥＳ）、制御素子２１は、当該子識別子に続く長さ情報で示されるデータ（子データの実データ）を読み出す（ステップＳ７４）。
【００４６】
また、上記判断により読出ポインタが示す子識別子と読出対象の子識別子とが一致しない場合（ステップＳ７４、ＮＯ）、制御素子２１は、上記読出ポインタの値を当該子データ分だけ進めたアドレスにセットする（ステップＳ７５）。たとえば、制御素子２１は、読出ポインタの値を当該子識別子に続く長さ情報分を加算したアドレスに更新する。読出ポインタを更新すると、制御素子２１は、当該読出ポインタで示すアドレスに子データが存在するか否かを判断する（ステップＳ７６）。
【００４７】
この判断により次の子データが存在しないと判断した場合（ステップＳ７６、ＮＯ）、制御素子２１は、当該コマンドで指定された子データが存在しないためデータの読出しをエラーとして処理する（ステップＳ７７）。また、上記判断により次の子データが存在すると判断した場合（ステップＳ７６、ＹＥＳ）、制御素子２１は、次の子データを対象として、上記ステップＳ７２〜Ｓ７６の処理を実行する。
【００４８】
上記のように、ＩＣカード２は、ＩＣカード処理装置１からデータの読出しを必要とするコマンドを受信した場合、当該コマンドで指定される読出対象のデータが重要データであるか否かを重要データ設定テーブル２４ａにより判定し、この判定により読出対象のデータが重要データであると判定した場合、ポインタテーブル２２ａに記憶されている当該重要データのデータメモリ２２における先頭アドレスに従って当該重要データをデータメモリ２２から直接的に読み出す。  
このような読出し処理によれば、データメモリ２２にファイルとして記憶されている親データ内から重要データを直接的に読み出すことができ、その結果として、重要データへのアクセスを高速化及び効率化することができるＩＣカード２を提供できる。
【００４９】
次に、ＩＣカード２におけるデータの書換えを要求する書換えコマンドに対する処理に説明する。  
図８は、当該ＩＣカード２における書換えコマンド（例えば、アップデートレコードコマンド）に対する処理の流れを説明するためのフローチャートである。ここでは、書換えコマンドに対応する処理として、図４に示すような入れ子構造データの書換え処理を想定する。また、書込み対象となる親データとしての入れ子構造データには、所定の子データとしての使用頻度あるいは重要度が高い子データが含まれる場合があるものとする。
【００５０】
外部装置としてのＩＣカード処理装置１のカードリーダライタ１２がＩＣカード２に対してデータの書き換えを要求する書換えコマンドを供給したものとする。すると、ＩＣカード２では、通信部２５により書換えコマンドとしてのデータを受信し、制御素子（ＣＰＵ）２１に供給する。すると、制御素子２１は、通信部２５から供給されたデータ（受信したコマンド）におけるコマンドコードなどにより当該コマンドが書換えコマンドであることを認識する（ステップＳ８１）。なお、書換えコマンドは、書換え命令であることを示すコマンドコード、書換え対象とするデータを指定するパラメータ、および、書換えるべきデータが格納されたデータ部を有する。
【００５１】
上記のような書換えコマンドを受信すると、制御素子（ＣＰＵ）２１は、当該書換えコマンドで指定される書換対象の子データを含む親データの親識別子（ファイルの識別子）が重要データを含む親データの親識別子であるか否かを判断する（ステップＳ５２）。書換え対象のデータが重要データを含む親データであるか否かは、プログラムメモリ２４に設けられている重要データ設定テーブル２４ａに基づいて判断する。
【００５２】
上記判断により書換対象のデータを含む親データが重要データを含む親データ（ファイル）でないと判断した場合（ステップＳ８２、ＮＯ）、制御素子２１は、通常の書換えコマンド処理を実施する（ステップＳ８３）。  
上記判断により書換対象のデータを含む親データが重要データを含む親データ（ファイル）であると判断した場合（ステップＳ８２、ＹＥＳ）、制御素子２１は、当該書換対象のデータを含む親データの先頭位置（親識別子の位置）から重要データとしての子データの先頭位置（子識別子の位置）までの長さをワーキングメモリ２３に記憶する（ステップＳ８４）。
【００５３】
上記ワーキングメモリ２３に親データの先頭から重要データの先頭までの長さ情報を記憶すると、制御素子２１は、当該書換えコマンドに応じてデータを書き換える処理を行う（ステップＳ８５）。当該書換えコマンドに応じてデータを書き換えるとともに、制御素子２１は、上記ワーキングメモリ２３に記憶した長さ情報とデータ書換え処理の内容とに基づいてデータ書換え処理後の重要データの先頭アドレスを算出する（ステップＳ８６）。
【００５４】
たとえば、制御素子２１は、データの書換え処理に伴う当該親データの先頭位置から重要データの先頭位置までの長さの増減分を算出する。書換対象のデータが重要データよりも後のデータである場合あるいはデータ長が変わらない書換えである場合、親データの先頭位置から重要データの先頭位置までの長さは増減しない。また、書換対象のデータが重要データよりも前のデータであり、かつ、書換えによってデータ長が変わる場合、親データの先頭位置から重要データの先頭位置までの長さが増減する。すなわち、制御素子２１は、重要データよりも前のデータの書換えによって生じたデータ長の増減を特定する。この場合、制御素子２１は、データ書換えによって生じた増減分と上記ワーキングメモリ２３に記憶した長さ情報とに基づいてデータ書換え後の重要データの先頭アドレスが算出可能である。
【００５５】
データ書換え処理後の重要データの先頭アドレスを算出すると、制御素子２１は、算出した重要データの先頭アドレスにより上記ポインタテーブル２２ａに記憶されている当該重要データに対応するポインタを更新する（ステップＳ８７）。  
以上の処理が完了すると、上記制御素子２１は、当該書換えコマンドの処理結果を示すレスポンスデータを当該書換えコマンドの送信元としてのＩＣカード処理装置１へ送信する（ステップＳ８８）。
【００５６】
上記のように、ＩＣカード２は、ＩＣカード処理装置１から書換えコマンドを受信した場合、書換えコマンドで指定される書換対象のデータが重要データを含む親データ内のデータであるか否かを重要データ設定テーブル２４ａにより判定し、この判定により書換対象のデータが重要データを含む親データ内のデータであると判定した場合、当該書換えコマンドに応じた書換え後の重要データのデータメモリ２２におけるアドレスを算出し、算出した重要データのアドレスによりポインタテーブル２２ａに更新する。  
このような書換え処理によれば、データ更新に伴ってデータメモリ２２にファイルとして記憶されている親データ内に含まれる重要データの位置を示すポインタテーブル２２ａも更新することができ、その結果として重要データへの確実なアクセスを高速化及び効率化することができるＩＣカード２を提供できる。
【００５７】
上記実施の形態によれば、特定の子データにアクセスするために、親データのデータ部を先頭から順に解析することにより上記特定の子データを検索する必要がなく、直接的に上記特定の子データにアクセスすることが可能となる。すなわち、所定のデータとしての使用頻度が高い重要データが子データとして入れ子構造データ内に格納されている場合であっても、親データのデータ部をその都度ごとに解析する必要がなく、当該重要データに直接的かつ効率的にアクセスすることが可能となる。
【符号の説明】
【００５８】
Ｂ…本体、Ｍ…モジュール、Ｃ…ＩＣチップ、１…ＩＣカード処理装置、２…ＩＣカード（携帯可能電子装置）、２１…制御素子、２２…データメモリ、２２ａ…ポインタテーブル（位置テーブル）、２３…ワーキングメモリ（保持手段）、２４…プログラムメモリ、２４ａ…重要データ設定テーブル（重要データテーブル）、２５…通信部、４１…親識別子、４２…親長さ情報、４３…親データ部、４５（４５ａ、４５ｂ、４５ｃ、４５ｄ）…子識別子、４６（４６ａ、４６ｂ、４６ｃ、４６ｄ）…子長さ情報、４７（４７ａ、４７ｂ、４７ｃ、４７ｄ）…子データ部。
【図１】
2011022768.tif 000003
【図２】
2011022768.tif 000004
【図３】
2011022768.tif 000005
【図４】
2011022768.tif 000006
【図５】
2011022768.tif 000007
【図６】
2011022768.tif 000008
【図７】
2011022768.tif 000009
【図８】
2011022768.tif 000010