(57)【要約】【課題】特定形式のデータ単位でデータを共有化できるＩＣカード、および携帯可能電子装置を提供することを目的とする。【解決手段】実施形態によれば、ＩＣカードは、通信手段と、記憶手段と、判断手段と、第１の処理手段と、第２の処理手段とを有する。通信手段は、外部装置とデータ通信を行う。記憶手段は、共有の有無を示す管理情報を付与した特定形式のデータを格納したファイルを記憶する。判断手段は、通信手段により受信したコマンドがアクセス対象に指定するデータの管理情報に従ってコマンドがアクセス対象に指定するデータに共有が有るか否かを判断する。第１の処理手段は、判断手段により共有が無いと判断した場合、コマンドがアクセス対象に指定するデータにアクセスする。第２の処理手段は、判断手段により共有が有ると判断した場合、コマンドがアクセス対象に指定するデータに含まれる共有先を示すデータに基づいて特定する共有先のデータにアクセスする。【選択図】図２
2014063302.tif 000002
【特許請求の範囲】
【請求項１】
外部装置とデータ通信を行う通信手段と、
共有の有無を示す管理情報を付与した特定形式のデータを格納したファイルを記憶する記憶手段と、
前記通信手段により受信したコマンドがアクセス対象に指定するデータの管理情報に従って前記コマンドがアクセス対象に指定するデータに共有が有るか否かを判断する判断手段と、
前記判断手段により共有が無いと判断した場合、前記コマンドがアクセス対象に指定するデータにアクセスする第１の処理手段と、
前記判断手段により共有が有ると判断した場合、前記コマンドがアクセス対象に指定するデータに含まれる共有先を示すデータに基づいて特定する共有先のデータにアクセスする第２の処理手段と、
を有するＩＣカード。
【請求項２】
特定形式のデータは、タグ、データ長及びデータ部を並べたＴＬＶデータである、
前記請求項１に記載のＩＣカード。
【請求項３】
前記ＴＬＶデータは、データ部に子データとしての別のＴＬＶデータを格納する入れ子構造を許容し、
前記判断手段は、前記コマンドが指定するデータが入れ子構造のＴＬＶデータである場合には、前記コマンドが指定するＴＬＶデータにおける子データとしての各ＴＬＶデータについて共有があるか否かを判断する、
前記請求項２に記載のＩＣカード。
【請求項４】
前記記憶手段は、前記管理情報として、さらに、子データの有無を示す情報、および、親となるＴＬＶデータのタグを示す情報を記憶し、
さらに、前記コマンドが指定するＴＬＶデータの管理情報に従って子データが有るか否かを判断する第２の判断手段と、
前記第２の判断手段により子データが有ると判断された場合、前記記憶手段に記憶されている前記管理情報から、前記コマンドがアクセス対象に指定するＴＬＶデータのタグが親となるＴＬＶデータのタグとして設定されている管理情報を検出する検出手段と、を有し、
前記判断手段は、前記検出手段により検出した管理情報に従って、前記コマンドがアクセス対象に指定するＴＬＶデータにおける子データとしての各ＴＬＶデータに共有があるか否かを判断する、
前記請求項２に記載のＩＣカード。
【請求項５】
外部装置とデータ通信を行う通信手段と、共有の有無を示す管理情報を付与した特定形式のデータを格納したファイルを記憶する記憶手段と、前記通信手段により受信したコマンドがアクセス対象に指定するデータの管理情報に従って前記コマンドがアクセス対象に指定するデータに共有が有るか否かを判断する判断手段と、前記判断手段により共有が無いと判断した場合、前記コマンドがアクセス対象に指定するデータにアクセスする第１の処理手段と、前記判断手段により共有が有ると判断した場合、前記コマンドがアクセス対象に指定するデータに含まれる共有先を示すデータに基づいて特定する共有先のデータにアクセスする第２の処理手段と、を有するモジュールと、
前記モジュールを具備する本体と、
を有するＩＣカード。
【請求項６】
外部装置からの受信するコマンドに対する処理を行う携帯可能電子装置において、
前記外部装置とデータ通信を行う通信手段と、
共有の有無を示す管理情報を付与した特定形式のデータを格納したファイルを記憶する記憶手段と、
前記通信手段により受信したコマンドがアクセス対象に指定するデータの管理情報に従って前記コマンドがアクセス対象に指定するデータに共有が有るか否かを判断する判断手段と、
前記判断手段により共有が無いと判断した場合、前記コマンドがアクセス対象に指定するデータにアクセスする第１の処理手段と、
前記判断手段により共有が有ると判断した場合、前記コマンドがアクセス対象に指定するデータに含まれる共有先を示すデータに基づいて特定する共有先のデータにアクセスする第２の処理手段と、
を有する携帯可能電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ＩＣカード、および携帯可能電子装置に関する。
【背景技術】
【０００２】
ＩＣカードなどの携帯可能電子装置では、複数のファイルで同じデータを共有することがある。しかしながら、従来のＩＣカードには、ファイル内に格納される複数のデータを各データ単位で共有化する機能は無い。たとえば、ＩＣカードでは、タグ（Ｔａｇ）、データ長（Ｌｅｎｇｔｈ）、データ部（Ｖａｌｕｅ）の組合せからなるＴＬＶデータ（TLV data object）をファイルに格納する形態がある。ＴＬＶデータは、データ部の中にさらに別のＴＬＶデータ（子のＴＬＶデータ）を格納するような入れ子構造が可能であるために、簡単にデータを共有化することは困難である。一方、近年では、個々のＴＬＶデータにサイズの大きなデータを格納する運用が多くなってきている。このため、ＴＬＶデータなどの特定形式のデータ単位でデータを共有化できる技術が要望されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−７２９６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、特定形式のデータ単位でデータを共有化できるＩＣカード、および携帯可能電子装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、ＩＣカードは、通信手段と、記憶手段と、判断手段と、第１の処理手段と、第２の処理手段とを有する。通信手段は、外部装置とデータ通信を行う。記憶手段は、共有の有無を示す管理情報を付与した特定形式のデータを格納したファイルを記憶する。判断手段は、通信手段により受信したコマンドがアクセス対象に指定するデータの管理情報に従ってコマンドがアクセス対象に指定するデータに共有が有るか否かを判断する。第１の処理手段は、判断手段により共有が無いと判断した場合、コマンドがアクセス対象に指定するデータにアクセスする。第２の処理手段は、判断手段により共有が有ると判断した場合、コマンドがアクセス対象に指定するデータに含まれる共有先を示すデータに基づいて特定する共有先のデータにアクセスする。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態に係るＩＣカードとＩＣカード処理装置との構成例を示す図である。
【図２】図２は、実施形態に係るＩＣカードの構成例を示すブロック図である。
【図３】図３は、実施形態に係るＩＣカードのＮＶＭに記憶されるファイルの構成例を示す図である。
【図４】図４は、実施形態に係るＩＣカードが用いるＴＬＶデータの構成例を示す図である。
【図５】図５は、実施形態に係るＩＣカードのＮＶＭに記憶されるＥＦに格納されるＴＬＶデータの第１の例を示す図である。
【図６】図６は、実施形態に係るＩＣカードのＮＶＭに記憶されるＥＦに格納されるＴＬＶデータの第２の例を示す図である。
【図７】図７は、実施形態に係るＩＣカードにおけるコマンド処理の例を説明するためのフローチャートである。
【図８】図８は、実施形態に係るＩＣカードが生成するレスポンスデータの第１の例を示す図である。
【図９】図９は、実施形態に係るＩＣカードが生成するレスポンスデータの第２の例を示す図である。
【図１０】図１０は、実施形態に係るＩＣカードが生成するレスポンスデータの第２の例を示す図である。
【発明を実施するための形態】
【０００７】
以下、この発明の実施の形態について図面を参照して説明する。  
図１は、本実施の形態に係るＩＣカード（携帯可能電子装置）１、および、ＩＣカード２との通信機能を有する外部装置としてのＩＣカード処理装置１の構成例を概略的に示すブロック図である。  
まず、ＩＣカード処理装置１の構成について説明する。  
ＩＣカード処理装置１は、図１に示すように、制御部１１、ディスプレイ１２、キーボード１３、および、カードリーダライタ１４などを有する。
【０００８】
制御部１１は、ＩＣカード処理装置１全体の動作を制御するものである。制御部１１は、プロセッサ、種々のメモリ及び各種インターフェースなどにより構成される。制御部１１では、プロセッサがメモリに記憶されているプログラムを実行することにより、種々の処理を実現している。たとえば、制御部１１は、パーソナルコンピュータ（ＰＣ）により構成される。
【０００９】
制御部１１は、カードリーダライタ１４によりＩＣカード２へコマンドを送信する機能、ＩＣカード２から受信したデータを基に種々の処理を行う機能などを有する。たとえば、制御部１１は、カードリーダライタ１４を介してＩＣカード２にライト系のコマンド（書き込みコマンド）を送信することによりＩＣカード２内の不揮発性メモリにデータを書き込む制御を行う。また、制御部１１は、ＩＣカード２にリード系のコマンド（読み取りコマンド）を送信することによりＩＣカード２からデータを読み出す制御を行う。さらに、制御部１１は、リード系のコマンドのうち「ＧＥＴ  ＤＡＴＡコマンド」を送信することにより、ＩＣカード２に対して特定のデータを指定してデータ単位でデータを読み出させる制御も行える。
【００１０】
カードリーダライタ１４は、ＩＣカード２との通信を行うためのインターフェース装置である。カードリーダライタ１４は、ＩＣカード２の通信方式に応じたインターフェースにより構成される。たとえば、ＩＣカード２が接触型のＩＣカードである場合、カードリーダライタ１４は、ＩＣカード２のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。
【００１１】
また、ＩＣカード２が非接触型のＩＣカードである場合、カードリーダライタ１４は、ＩＣカード２との無線通信を行うためのアンテナおよび通信制御などにより構成される。カードリーダライタ１４では、ＩＣカード２に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ１４は、制御部１１による制御に基づいて上記ＩＣカード２の活性化（起動）、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【００１２】
キーボード１３は、当該ＩＣカード処理装置１の操作員が操作する操作部として機能し、操作員により種々の操作指示やデータなどが入力される。ディスプレイ１２は、制御部１１の制御により種々の情報を表示する表示装置である。
【００１３】
次に、ＩＣカード２の構成例について説明する。  
ＩＣカード２は、ＩＣカード処理装置１などの上位装置からの電源および動作クロックの供給を受けて活性化される（動作可能な状態になる）。例えば、ＩＣカード２が接触型の通信によりＩＣカード処理装置１と接続される場合、つまり、ＩＣカード２が接触型のＩＣカードである場合、ＩＣカード２は、通信インターフェースとしてのコンタクト部を介してＩＣカード処理装置１からの動作電源及び動作クロックの供給を受けて活性化される。
【００１４】
また、ＩＣカード２が非接触型の通信方式によりＩＣカード処理装置１と接続される場合、つまり、ＩＣカード２が非接触型のＩＣカードである場合、ＩＣカード２は、通信インターフェースとしてのアンテナ及び変復調回路などを介してＩＣカード処理装置１からの電波を受信し、その電波から図示しない電源部により動作用の電力及び動作クロックを生成して活性化する。
【００１５】
図２は、本実施の形態に係るＩＣカード２のハードウエア構成例を概略的に示すブロック図である。  
ＩＣカード２は、プラスチックなどで形成されたカード状の筐体（本体）Ｃ内にモジュールＭが内蔵されている。モジュールＭは、１つまたは複数のＩＣチップＣａと通信用の外部インターフェース（通信インターフェース）とが接続された状態で一体的に形成され、本体Ｃ内に埋設されている。また、ＩＣカード２のモジュールＭは、図２に示すように、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、ＮＶＭ２４、ＵＡＲＴ（通信部）２５、および、コプロセッサ２６などを有してしている。
【００１６】
ＣＰＵ２１は、当該ＩＣカード２全体の制御を司るものである。ＣＰＵ２１は、ＲＯＭ２２あるいはＮＶＭ２４に記憶されている制御プログラムおよび制御データに基づいて動作することにより、種々の機能を実現する。たとえば、ＣＰＵ２１は、オペレーティングシステムのプログラムを実行することにより、当該ＩＣカード２の基本的な動作制御を行う。また、ＣＰＵ２１は、当該ＩＣカード２の利用目的に応じたアプリケーションプログラムを実行することにより、当該ＩＣカード２の運用形態に応じた種々の動作制御を行う。
【００１７】
ＲＯＭ２２は、予め制御用のプログラムや制御データなどが記憶されている不揮発性のメモリである。ＲＯＭ２２には、当該ＩＣカード２の製造段階で制御プログラムあるいは制御データなどが記憶された状態でＩＣカード２内に組み込まれる。つまり、ＲＯＭ２２に記憶されている制御プログラムあるいは制御データは、当該ＩＣカード２の基本的な動作を司るものであり、予め当該ＩＣカード２の仕様に応じて組み込まれる。
【００１８】
ＲＡＭ２３は、ＲＡＭなどの揮発性のメモリである。また、ＲＡＭ２３は、ＣＰＵ２１が処理中のデータなどを一時保管するバッファとして機能する。ＲＡＭ２３には、各ファイルへのアクセス状況、通信チャネルの使用状況、および、処理状況などを示す種々のテーブルが設けられる。ＲＡＭ２３は、専有時間テーブルを格納する記憶領域２３ａ、および、強制解放テーブルを格納する記録領域２３ｂなどを有する。これらのテーブルについては、後述する。
【００１９】
ＮＶＭ２４は、例えば、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read-Only  Memory）あるいはフラッシュＲＯＭなどのデータの書き込み及び書換えが可能な不揮発性メモリにより構成される。ＮＶＭ２４には、当該ＩＣカード２の運用用途に応じた制御プログラムあるいは種々のデータが書込まれる。ＮＶＭ２４には、当該ＩＣカード２の規格に応じた種々のファイルが定義され、それらのファイルに種々のデータが書き込まれる。ＮＶＭ２４に格納されるファイルの例については、後述する。
【００２０】
ＵＡＲＴ２５は、ＩＣカード処理装置１のカードリーダライタ１４との通信を行うためのインターフェースである。当該ＩＣカード２が接触型のＩＣカードとして実現される場合、ＵＡＲＴ２５は、ＩＣカード処理装置１のカードリーダライタ１４と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ＩＣカード２が非接触型のＩＣカードとして実現される場合、ＵＡＲＴ２５は、ＩＣカード処理装置１のカードリーダライタ１４との無線通信を行うための変復調回路などの通信制御部および電波を送受信するためのアンテナなどにより構成される。
【００２１】
コプロセッサ（Co-Processor）２６は、暗号処理を実行するためのプロセッサである。コプロセッサ２６は、たとえば、暗号化及び復号化を用いた認証処理、あるいは、暗号化されたデータの読み出し処理などに用いられる。
【００２２】
次に、ＮＶＭ２４に格納されるファイルについて説明する。  
図３は、ＮＶＭ２４に格納されるファイルの構造例を示す図である。  
図３に示すように、ＮＶＭ２４には、ＭＦ（Master File）、ＤＦ(Dedicated File)および、ＥＦ(Elementary File)などからなる階層構造を有する複数のファイル群が定義される。なお、図３に示すようなファイル構造は、ＩＣカードの国際的な標準規格であるＩＳＯ／ＩＥＣ  ７８１６−４で規定されている。
【００２３】
図３に示す例では、最上階層のマスターファイル（ＭＦ）の次の階層には、ＤＦ（ＤＦ−Ａ）が存在する。たとえば、１つのＤＦには、当該ＩＣカード２が具備する１つのアプリケーションを実現するためのデータが格納される。複数のアプリケーションによって複数の機能を実現しているＩＣカードは、各アプリケーションに対応する複数のＤＦをＮＶＭ２４内に設けるようにして良い。
【００２４】
また、図３に示す例では、ＤＦ−Ａの配下として、ＤＦ−Ａの次の階層に、２つのＥＦ（ＥＦ１、および、ＥＦ２）が存在している。各ＥＦ（ＥＦ１およびＥＦ２）は、それぞれが各種のデータを格納するためのデータファイルである。各ＥＦ１およびＥＦ２には、所定のデータ構造のうち何れかのデータ構造でデータが格納される。本実施形態においては、ＥＦ１およびＥＦ２は、識別子（タグ（Tag））、データ長（レングス(Length)）、および、データ部（バリュー（Value））が順に連結されるＴＬＶ構造のオブジェクトデータ（TLV data object）（以下、ＴＬＶデータと称する）が格納されるファイルであるものとする。なお、ＴＬＶデータを格納するファイル構造などについては、たとえば、ＩＣカードの国際的な標準規格であるＩＳＯ／ＩＥＣ  ７８１６−４で規定されている。
【００２５】
次に、ＴＬＶデータの構成について説明する。  
図４は、ＴＬＶデータにおけるデータの構成例を示す図である。  
図４に示す構成例において、ＴＬＶデータは、「番号（Ｎｏ）」、「管理情報」、「タグ（Ｔａｇ）」、「データ長（Ｌｅｎ）」、及び、「データ部（Ｖａｌｕｅ）」により構成される。さらに、
「番号」は、ファイル内などで当該ＴＬＶデータを管理するための番号である。「管理情報」は、当該ＴＬＶデータの状態あるいは制御情報などを示す情報である。「タグ（Tag）」は、当該ＴＬＶデータの識別情報である。「データ長」は、後に続くデータ部のサイズ（長さ）を示す情報である。「データ部」は、当該ＴＬＶデータにおける実データである。
【００２６】
また、「管理情報」は、「ＴＬＶの種類」、「共有の有無」、「Ｖａｌｕｅの有無」、「親Ｔａｇ」などの情報により構成される。  
「ＴＬＶの種類」は、当該ＴＬＶデータのデータ形式を示す情報である。たとえば、「ＴＬＶの種類」としては、当該ＴＬＶデータのデータ形式（フォーマット）が「ｓｉｍｐｌｅ  ＴＬＶ  ｆｏｒｍａｔ」である場合には「００」とし、「ＢＥＲ  ＴＬＶ  ｆｏｒｍａｔ」である場合には「０１」とする。
【００２７】
また、「共有の有無」は、当該ＴＬＶデータのデータ部が他のＴＬＶデータのデータ部と共有しているか否かを示す情報である。例えば、「共有の有無」は、当該ＴＬＶデータのデータ部（Ｖａｌｕｅ）が他のＴＬＶデータのデータ部（他のＴａｇのＶａｌｕｅ）と共有している場合には「０１」とし、共有していない場合には「００」とする。
【００２８】
また、「子ＴＬＶの有無」は、当該ＴＬＶデータに子ＴＬＶが存在するか否か（データ部が実質的に子のＴＬＶデータとなる入れ子構造であるか否か）を示す情報である。たとえば、子ＴＬＶが存在しない場合には「００」とし、子ＴＬＶが存在する場合（Ｖａｌｕｅが子ＴＬＶである場合）には「０１」とする。この場合、当該ＴＬＶデータにおけるデータ長が「００」で、かつ、「子ＴＬＶの有無」が「００」であれば、Ｖａｌｕｅ（データ部）としての実データを存在しないことを示す。また、当該ＴＬＶデータにおけるデータ長が「００」で、かつ、「子ＴＬＶの有無」が「０１であれば、Ｖａｌｕｅ（データ部）が子ＴＬＶとなることを示す。
【００２９】
「親Ｔａｇ」は、親となるＴＬＶデータ（親ＴＬＶ）のＴａｇを示す情報である。たとえば、「親Ｔａｇ」は、親となるＴＬＶデータが存在しない場合（つまり、当該ＴＬＶデータが子ＴＬＶでない場合）には「００００」とし、親となるＴＬＶデータが存在する場合（つまり、当該ＴＬＶデータが子ＴＬＶである場合）には親となるＴＬＶデータのＴａｇの値とする。
【００３０】
図５及び図６は、ＴＬＶデータを格納するファイル（ＥＦ）の例を示す図である。  
図５及び図６に示す構成例において、ＥＦは、複数のデータオブジェクトテーブル（Ｄａｔａ  ｏｂｊｅｃｔ  ｔａｂｌｅ）から構成される。各データオブジェクトテーブルは、それぞれがＴＬＶデータの本体（「タグ（Ｔａｇ）」、「データ長（Ｌｅｎ）」、「データ部（Ｖａｌｕｅ）」）と、当該ＥＦ内におけるユニークな「番号（Ｎｏ）」と、ＴＬＶデータに対する「管理情報」とで構成されている。
【００３１】
図５に示す例において、ＥＦ１（ＥＦ−ＩＤ＝ＡＢＣＤ）における「番号（Ｎｏ）」が「０１」のＴＬＶデータは、データ形式が「ＢＥＲ  ＴＬＶ  ｆｏｒｍａｔ（「ＴＬＶの種類」＝「０１」）」であり、共有無し（「共有の有無」＝「００」）であり、子ＴＬＶ無し（「子ＴＬＶの有無」＝「００」）であり、親ＴＬＶ無し（「親Ｔａｇ」＝「００００」）である。このため、ＥＦ１における「Ｎｏ.１」のＴＬＶデータの本体は、タグが「１２３４」で、データ長が「０００２」で、データ部が「ＡＡＢＢ」である。
【００３２】
また、図５に示す例において、ＥＦ１における「番号（Ｎｏ）」が「０２」のＴＬＶデータは、データ形式が「ＢＥＲ  ＴＬＶ  ｆｏｒｍａｔ（「ＴＬＶの種類」＝「０１」）」であり、共有無し（「共有の有無」＝「００」）であり、子ＴＬＶ有り（「子ＴＬＶの有無」＝「０１」）であり、親ＴＬＶ無し（「親Ｔａｇ」＝「００００」）である。このため、ＥＦ１における「Ｎｏ．２」のＴＬＶデータの本体は、タグが「１２３４」で、データ長が「００００」で、データ部無しである。この場合、データ長が「００００」で、かつ、子ＴＬＶ有りであるため、当該ＴＬＶデータは、データ部が実質的には子ＴＬＶとなる入れ子構造の親ＴＬＶとなっている。
【００３３】
また、図５に示す例において、ＥＦ１における「番号（Ｎｏ）」が「０３」のＴＬＶデータは、データ形式が「ＢＥＲ  ＴＬＶ  ｆｏｒｍａｔ（「ＴＬＶの種類」＝「０１」）」であり、共有無し（「共有の有無」＝「００」）であり、子ＴＬＶ無し（「子ＴＬＶの有無」＝「００」）であり、親ＴＬＶ有り（「親Ｔａｇ」＝「００７０」）である。つまり、ＥＦ１における「Ｎｏ．３」のＴＬＶデータの本体は、タグが「００７０」のＴＬＶデータに対する子ＴＬＶであり、タグが「３４５６」で、データ長が「０００８」で、データ部が「１１２２３３４４５５６６７７８８」である。図５に示す例では、タグが「００７０」のＴＬＶデータはＥＦ１のＮＯ．２のＴＬＶデータであるため、「Ｎｏ．３」のＴＬＶデータは、ＥＦ１のＮＯ．２のＴＬＶデータの子ＴＬＶとなる。
【００３４】
また、図５に示す例において、ＥＦ１における「番号（Ｎｏ）」が「０５」のＴＬＶデータは、データ形式が「ＢＥＲ  ＴＬＶ  ｆｏｒｍａｔ（「ＴＬＶの種類」＝「０１」）」であり、共有無し（「共有の有無」＝「００」）であり、子ＴＬＶ無し（「子ＴＬＶの有無」＝「００」）であり、親ＴＬＶ有り（「親Ｔａｇ」＝「００７０」）である。つまり、ＥＦ１における「Ｎｏ．５」のＴＬＶデータの本体は、タグが「００７０」のＴＬＶデータに対する子ＴＬＶであり、タグが「３４５６」で、データ長が「０００８」で、データ部が「１１２２３３４４５５６６７７８８」である。図５に示す例では、タグが「００７０」のＴＬＶデータはＥＦ１のＮＯ．２のＴＬＶデータであるため、「Ｎｏ．５」のＴＬＶデータは、「Ｎｏ．３」のＴＬＶデータとともに、ＥＦ１のＮＯ．２のＴＬＶデータの子ＴＬＶとなる。
【００３５】
また、図５に示す例において、ＥＦ１における「番号（Ｎｏ）」が「０４」のＴＬＶデータは、データ形式が「ＢＥＲ  ＴＬＶ  ｆｏｒｍａｔ（「ＴＬＶの種類」＝「０１」）」であり、共有有り（「共有の有無」＝「０１」）であり、子ＴＬＶ無し（「子ＴＬＶの有無」＝「００」）であり、親ＴＬＶ無し（「親Ｔａｇ」＝「００００」）である。つまり、ＥＦ１における「Ｎｏ．４」のＴＬＶデータの本体は、タグが「２２２２」で、データ長が「０００３」で、データ部が「ＡＢＥＦ  ０１」である。この場合、ＥＦ１のＮＯ．４のＴＬＶデータは、共有有りであるため、データ部に格納されたデータは、共有先を示すデータである。
【００３６】
たとえば、データ部に格納される共有先を示すデータが、共有先のＥＦ−ＩＤとそのＥＦ内におけるＴＬＶデータの番号とを示すものであるとすれば、ＥＦ１のＮＯ．４のＴＬＶデータの共有先（「ＡＢＥＦ  ０１」が示す共有先）は、ＥＦ−ＩＤが「ＡＢＥＦ」のＥＦにおける「Ｎｏ．」＝「１」のデータとなる。図６は、ＥＦ−ＩＤが「ＡＢＥＦ」となるＥＦの構成例を示している。
【００３７】
図６に示す例において、ＥＦ２（ＥＦ−ＩＤ＝ＡＢＥＦ）における「番号（Ｎｏ）」が「０１」のＴＬＶデータは、データ形式が「ＢＥＲ  ＴＬＶ  ｆｏｒｍａｔ（「ＴＬＶの種類」＝「０１」）」であり、共有無し（「共有の有無」＝「００」）であり、子ＴＬＶ無し（「子ＴＬＶの有無」＝「００」）であり、親ＴＬＶ無し（「親Ｔａｇ」＝「００００」）である。このため、ＥＦ２における「Ｎｏ.１」のＴＬＶデータの本体は、タグが「１２８８」で、データ長が「０００２」で、データ部が「９８７６」である。
【００３８】
すなわち、図５及び図６に示す例によれば、図５に示すＥＦ１の「Ｎｏ.４」のＴＬＶデータは、図６に示すＥＦ２の「Ｎｏ.１」のＴＬＶデータと共有化される。このため、ＩＣカード２は、図５及び図６に示すＥＦを保持する場合、ＥＦ１の「Ｎｏ.４」のＴＬＶデータと図６に示すＥＦ２の「Ｎｏ.１」のＴＬＶデータとは、データ部（Ｖａｌｕｅ）が共に「９８７６」として認識する。
【００３９】
次に、実施形態に係るＩＣカードにおけるコマンド処理について説明する。  
図７は、ＩＣカードがＧＥＴ  ＤＡＴＡコマンドを受信した場合の処理の流れを説明するためのフローチャートである。  
まず、ＩＣカード２は、ＵＡＲＴ２５によりＩＣカード処理装置１からのコマンドを受信可能な状態であるとする。ここでは、ＩＣカード２では、カレント状態のＥＦが設定されているものとする。
【００４０】
ＩＣカード処理装置１からのコマンドを受信すると（ステップＳ１１）、ＣＰＵ２１は、受信したコマンドを解析し、受信コマンドの処理内容を認識する。受信したコマンドがＧＥＴ  ＤＡＴＡコマンドでない場合（ステップＳ１２、ＮＯ）、ＣＰＵ２１は、当該コマンドに対する処理を実行し（ステップＳ１３）、実行結果をレスポンスとして送信する（ステップＳ２６）。
【００４１】
また、受信したコマンドがＧＥＴ  ＤＡＴＡコマンドであると判断した場合（ステップＳ１２、ＹＥＳ）、ＣＰＵ２１は、カレント状態となっているＥＦにおいて、当該ＧＥＴ  ＤＡＴＡコマンドでアクセス対象（読出対象）に指定されたＴＬＶデータのＴａｇを検索する（ステップＳ１４）。指定されたＴＬＶデータを検出すると、ＣＰＵ２１は、検出したＴＬＶデータの管理情報に基づいて当該ＴＬＶデータに子ＴＬＶ（子データ）が有るか否かを判断する（ステップＳ１５）。
【００４２】
当該コマンドでアクセス対象に指定されたＴＬＶデータに子データが無いと判断した場合（ステップＳ１５、ＮＯ）、ＣＰＵ２１は、さらに、当該ＴＬＶデータにデータの共有が有るか否かを判断する（ステップＳ１６）。
【００４３】
当該コマンドでアクセス対象に指定されたＴＬＶデータに子データが無く、かつ、データの共有も無いと判断した場合（ステップＳ１６、ＮＯ）、ＣＰＵ２１は、当該ＴＬＶデータを読み出す（ステップＳ１７）。ＣＰＵ２１は、読み出したＴＬＶデータをレスポンスデータとして加工してＲＡＭ２３に一時的に格納する。ＧＥＴ  ＤＡＴＡコマンドに対する処理が成功すると、ＣＰＵ２１は、ＲＡＭ２３に格納したレスポンスデータに処理が成功したことを示すステータスワードをセットしたレスポンスをＩＣカード処理装置１へ送信する（ステップＳ２８）。なお、ＴＬＶデータの読出処理などでエラーが発生した場合には、ＣＰＵ２１は、ステータスワードからなるレスポンスをＩＣカード処理装置１へ送信する。
【００４４】
たとえば、図５に示すようなＥＦ−ＩＤ＝ＡＢＣＤのＥＦがカレント状態で、Ｔａｇ＝１２３４を指定したＧＥＴ  ＤＡＴＡコマンドを受信すると、ＩＣカード２のＣＰＵ２１は、ＯＳの機能として、ＥＦ−ＩＤ＝ＡＢＣＤのＥＦにおいて、「Ｔａｇ＝１２３４」を順に検索する。図５に示す例では、「Ｎｏ．１」のＴＬＶデータのＴａｇが「１２３４」であることを検出する。すると、ＣＰＵ２１は、「Ｎｏ．１」のＴＬＶデータの管理情報により、「ＢＥＲ  ＴＬＶフォーマット」で、「共有がない」、「子ＴＬＶが存在しない」ということを確認し、「Ｎｏ．１」のＴＬＶデータの「Ｔａｇ」、「Ｌｅｎ」、「Ｖａｌｕｅ」を加工してレスポンスデータを生成する。
【００４５】
具体的には、「Ｔａｇ」の１ｂｙｔｅ目が００であれば削除し、「Ｌｅｎ」においてはＢＥＲ  ＴＬＶフォーマットを考慮して、１ｂｙｔｅ目の００を削除する。図８は、Ｔａｇ＝１２３４を指定したＧＥＴ  ＤＡＴＡコマンドに対するレスポンスデータの例である。図８に示すようなレスポンスデータを生成すると、ＩＣカード２のＣＰＵ２１は、生成したレスポンスデータにステータスワードを付加したレスポンスをＩＣカード処理装置１へ送信する。
【００４６】
また、受信したＧＥＴ  ＤＡＴＡコマンドで指定されたＴＬＶデータに子データが無く、かつ、データの共有が有りと判断した場合（ステップＳ１６、ＹＥＳ）、ＣＰＵ２１は、当該ＴＬＶデータのデータ部に格納された、共有先を示す情報（共有先データ）を読込む（ステップＳ１８）。共有先データを読込むと、ＣＰＵ２１は、読み込んだ共有先データに基づいて共有先のＴＬＶデータを検出する（ステップＳ１９）。共有先のＴＬＶデータを検出すると、ＣＰＵ２１は、共有先のＴＬＶデータのデータ部を読み出す（ステップＳ２０）。
【００４７】
ＣＰＵ２１は、アクセス対象に指定されたＴＬＶデータのＴａｇと、共有先のＴＬＶデータから読み出したデータ部とデータ長とを組み合わせたレスポンスデータを生成してＲＡＭ２３に一時的に格納する。ＧＥＴ  ＤＡＴＡコマンドに対する処理が成功すると、ＣＰＵ２１は、ＲＡＭ２３に格納したレスポンスデータに処理が成功したことを示すステータスワードをセットしたレスポンスをＩＣカード処理装置１へ送信する（ステップＳ２８）。
【００４８】
たとえば、ＩＣカード２は、図５に示すようなＥＦ−ＩＤ＝ＡＢＣＤのＥＦ１がカレント状態で、Ｔａｇとして「２２２２」を指定したＧＥＴ  ＤＡＴＡコマンドを受信したものとする。すると、ＩＣカード２のＣＰＵ２１は、ＯＳの機能として、ＥＦ−ＩＤ＝ＡＢＣＤのＥＦにおいて、「Ｔａｇ＝２２２２」を検索する。図５に示す例では、ＥＦ１の「Ｎｏ．４」のＴＬＶデータのＴａｇが「２２２２」であるため、ＣＰＵ２１は、「Ｎｏ．４」のＴＬＶデータの管理情報により「共有が有る」ことを確認する。
【００４９】
共有有りを確認すると、ＣＰＵ２１は、共有先を示すデータ（共有先データ）として当該ＴＬＶデータのデータ部（Ｖａｌｕｅ）を読込む。図５に示す例では、「Ｎｏ．４」のＴＬＶデータのデータ部は、「ＡＢＥＦ  ０１」である。ここで、データ部に格納される共有先データは、ＥＦＩＤとＴＬＶデータの番号（Ｎｏ）とからなるものとする。すると、ＣＰＵ２１は、「Ｎｏ．４」のＴＬＶデータのデータ部としての「ＡＢＥＦ  ０１」により、ＥＦＩＤが「ＡＢＥＦ」のＥＦにおける「Ｎｏ．１」のＴＬＶデータが共有先のＴＬＶデータであると認識する。
【００５０】
共有先のＴＬＶデータを特定すると、ＣＰＵ２１は、ＥＦＩＤが「ＡＢＥＦ」のＥＦにおいて、「Ｎｏ．１」のＴＬＶデータを共有先のＴＬＶデータとして検索する。図６に示す例では、ＥＦＩＤが「ＡＢＥＦ」のＥＦにおける「Ｎｏ．１」のＴＬＶデータは、データ部（Ｖａｌｕｅ）が「９８７６」である。共有先のＴＬＶデータを検出すると、ＣＰＵ２１は、共有先のＴＬＶデータのデータ部として「９８７６」を読み出す。ＣＰＵ２１は、コマンドでアクセス対象に指定されたＴＬＶデータの「Ｔａｇ＝２２２２」と共有先の「Ｖａｌｕｅ＝９８７６」とを組み合わせてレスポンスデータを生成する。図９は、コマンドで指定されたＴＬＶデータのＴａｇ＝２２２２と共有先のＶａｌｕｅ＝９８７６とを組み合わせて生成したレスポンスデータの例である。ＣＰＵ２１は、図９に示すようなレスポンスデータにステータスワードを付加したレスポンスをＩＣカード処理装置１へ送信する。
【００５１】
当該コマンドで指定されたＴＬＶデータに子データが有ると判断した場合（ステップＳ１５、ＹＥＳ）、ＣＰＵ２１は、ＧＥＴ  ＤＡＴＡコマンドでアクセス対象に指定されたＴＬＶデータにおける子データを順に検索する（ステップＳ２１）。たとえば、ＣＰＵ２１は、各ＴＬＶデータの管理情報における「親Ｔａｇ」を検索し、「親Ｔａｇ」に当該コマンドでアクセス対象に指定されたＴＬＶデータのＴａｇが格納されているＴＬＶデータを子データとして検出する。
【００５２】
当該コマンドでアクセス対象に指定されたＴＬＶデータの子データを検出すると、ＣＰＵ２１は、検出した子データとしてのＴＬＶデータの管理情報に従って当該子データが共有有りか否かを判断する（ステップＳ２２）。検出した子データが共有無しであれば（ステップＳ２２、ＮＯ）、ＣＰＵ２１は、当該子データとしてＴＬＶデータのデータ部を読み出し（ステップＳ２３）、読み出したデータをＲＡＭ２３に格納する。子データのデータ部を読み出した後、ＣＰＵ２１は、別の子データが存在するか否かを判断する（ステップＳ２７）。別の子データが存在する場合、ＣＰＵ２１は、別の子データについても、ステップＳ２１〜Ｓ２７の処理を繰り返し実行する。
【００５３】
また、検出した子データが共有有りであれば（ステップＳ２２、ＹＥＳ）、ＣＰＵ２１は、当該子データとしてのＴＬＶデータのデータ部を共有先を示すデータとして読み出し（ステップＳ２４）、読み出した共有先を示すデータに基づいて共有先のＴＬＶデータを検出する（ステップＳ２５）。共有先のＴＬＶデータを検出すると、ＣＰＵ２１は、当該子データとしてＴＬＶデータのデータ部の実データとして、共有先のＴＬＶデータのデータ部を読み出し（ステップＳ２６）、ＲＡＭ２３に格納する。
【００５４】
子データに格納されている実データとしてのデータ部を読み出した場合、あるいは、子データの共有先のデータ部を実データとして読み出した場合、ＣＰＵ２１は、別の子データが存在するか否かを判断する（ステップＳ２７）。別の子データが存在すると判断した場合、ＣＰＵ２１は、別の子データについても、ステップＳ２１〜Ｓ２７の処理を繰り返し実行する。
【００５５】
ステップＳ２１〜Ｓ２７の処理により、ＲＡＭ２３には、当該ＧＥＴ  ＤＡＴＡコマンドで指定されたＴＬＶデータを親データとする各子データの読出結果が格納される。これにより、ＣＰＵ２１は、各子データの読出結果を入れ子構造（ＴＬＶデータのデータ部に、別のＴＬＶ（子ＴＬＶ）が入れ子状態に設定される構造）としたＴＬＶデータの読出結果を示すレスポンスデータを生成する。
【００５６】
なお、子データにさらに子データが有る場合、つまり、孫データがある場合、ＣＰＵ２１は、ステップＳ２１で孫データが有る子データを検出した後（つまり、ステップＳ２１とＳ２２の間に）、各孫データに対してステップＳ２１〜Ｓ２７と同様な処理を行うことにより、子データのデータ部に孫データ（その子データの子データ）を格納したレスポンスデータを生成できる。
【００５７】
上記のような入れ子構造のレスポンスデータを作成すると、ＣＰＵ２１は、生成したレスポンスデータに当該ＧＥＴ  ＤＡＴＡコマンドの実行結果を示すステータスワードを付加したレスポンスをＩＣカード処理装置１へ送信する（ステップＳ２８）。
【００５８】
図５に示す例では、Ｔａｇ＝００７０のＴＬＶデータのデータ部（Ｖａｌｕｅ）の中に、Ｔａｇ＝３４５６のＴＬＶデータとＴａｇ＝００９９のＴＬＶデータとが入れ子状に設定されている。図５に示すような場合、Ｔａｇ＝００７０のＴＬＶデータを親ＴＬＶと称し、Ｔａｇ＝３４５６のＴＬＶデータおよびＴａｇ＝００９９のＴＬＶデータを子ＴＬＶと称するものとする。
【００５９】
たとえば、ＩＣカード２は、図５に示すようなＥＦ−ＩＤ＝ＡＢＣＤのＥＦ１がカレント状態で、Ｔａｇが「００７０」のＴＬＶデータを指定したＧＥＴ  ＤＡＴＡコマンドを受信したものとする。すると、ＩＣカード２のＣＰＵ２１は、ＯＳの機能として、ＥＦ−ＩＤ＝ＡＢＣＤのＥＦ１において、「Ｔａｇ＝００７０」を検索する。図５に示す例では、ＥＦ１の「Ｎｏ．２」のＴＬＶデータのＴａｇが「００７０」であるため、ＣＰＵ２１は、「Ｎｏ．２」のＴＬＶデータの管理情報により「子ＴＬＶが有る」ことを確認する。
【００６０】
子データがあることを確認すると、ＣＰＵ２１は、Ｔａｇが「００７０」の親ＴＬＶにおける子ＴＬＶを探すため、管理情報の「親Ｔａｇ」が「００７０」のＴＬＶデータを検索する。図５に示す例では、「ＮＯ．３」と「ＮＯ．５」のＴＬＶデータの「親Ｔａｇ」が「００７０」に設定されていることを検出する。
【００６１】
これらの検索結果から、Ｔａｇが「００７０」のＴＬＶデータを親ＴＬＶとして、その親ＴＬＶにおける子ＴＬＶが「ＮＯ．３」と「ＮＯ．５」のＴＬＶデータであることが判明する。また、孫ＴＬＶも存在する可能性があるため、ＣＰＵ２１は、各子ＴＬＶの管理情報から孫ＴＬＶが存在するか確認する。図５に示す例では、子ＴＬＶとなる「ＮＯ．３」と「ＮＯ．５」のＴＬＶデータは、管理情報が「子ＴＬＶ無し」となっており、「Ｌｅｎ」が「００」でもないので、孫ＴＬＶが存在しないことが判断される。
【００６２】
子ＴＬＶを検出すると、ＣＰＵ２１は、親ＴＬＶのデータ部に各子ＴＬＶを並べて格納したレスポンスデータを作成する。図１０は、ＧＥＴ  ＤＡＴＡコマンドで指定されたＴＬＶデータのＴａｇが「００７０」である場合のレスポンスデータの例である。図１０に示す例では、親のＴａｇ（「００７０」）をＴａｇとし、各子ＴＬＶのＴＬＶデータを並べたデータ（「ＮＯ．３」のＴＬＶデータと「ＮＯ．５」のＴＬＶデータとを順に並べたデータ）をデータ部とし、そのデータ部の長さ（２＋１＋８＋１＋１＋４＝１７（１１ｈ））をデータ長としたレスポンスデータが形成されている。図１０に示すようなレスポンスデータを生成すると、ＣＰＵ２１は、ＧＥＴ  ＤＡＴＡコマンドに対するレスポンスとして、生成したレスポンスデータにステータスワードを付加したデータをＩＣカード処理装置１へ送信する。
【００６３】
上記のように、本実施形態に係るＩＣカードは、各ＴＬＶデータの管理情報において共有の有無を設定し、ＴＬＶデータのデータ部（Ｖａｌｕｅ）の単位でデータを共有化するようにしたものである。これにより、本実施形態に係るＩＣカードによれば、ＴＬＶデータのデータサイズが大きくなっても、リソースに制限があるメモリを効率よく利用することができ、データの管理も容易になる。
【００６４】
また、上述した実施形態では、入れ子構造のＴＬＶデータにおいて、子ＴＬＶ或いは孫ＴＬＶとなるＴＬＶに対しても、それぞれの管理情報により共有の有無を設定するようにしたものである。これにより、本実施形態に係るＩＣカードによれば、ＴＬＶデータが入れ子構造であっても個々の子データに共有の有無を設定でき、入れ子構造のＴＬＶにおける子データの共有化も実現できる。
【００６５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６６】
１…ＩＣカード処理装置（外部装置）、２…ＩＣカード（携帯可能電子装置）、１１…制御部、１２…ディスプレイ、１３…キーボード、１４…カードリーダライタ、Ｃ…本体、Ｍ…ＩＣモジュール、Ｃａ…ＩＣチップ、２１…ＣＰＵ、２２…ＮＶＭ、２３…ＲＡＭ、２４…ＲＯＭ、２５…ＵＡＲＴ、２６…コプロセッサ。
【図１】
2014063302.tif 000003
【図２】
2014063302.tif 000004
【図３】
2014063302.tif 000005
【図４】
2014063302.tif 000006
【図５】
2014063302.tif 000007
【図６】
2014063302.tif 000008
【図７】
2014063302.tif 000009
【図８】
2014063302.tif 000010
【図９】
2014063302.tif 000011
【図１０】
2014063302.tif 000012