(57)【特許請求の範囲】
【請求項１】
複数のＴＬＶデータオブジェクトを含む構造化ＴＬＶデータオブジェクトを記憶する第１の記憶手段と、
前記ＴＬＶデータオブジェクト毎にクラスを記憶する第２の記憶手段と、
外部機器から送信されたコマンドを受信する受信手段と、
前記受信手段により受信された前記コマンドを解析し、抽出条件、及びクラスを解析する解析手段と、
前記コマンドから解析された前記クラスと、前記第２の記憶手段に記憶されている前記クラスとの関係が前記抽出条件を満たすＴＬＶデータオブジェクトを前記第１の記憶手段から抽出する抽出手段と、
前記抽出手段により抽出された前記ＴＬＶデータオブジェクトを用いて構造化ＴＬＶデータオブジェクトを再構成する再構成手段と、
前記再構成手段により再構成された構造化ＴＬＶデータオブジェクトを前記外部機器に送信する送信手段と、
を具備する携帯可能電子装置。
【請求項２】
前記第２の記憶手段は、前記ＴＬＶデータオブジェクト毎に前記クラスとして優先順位を記憶し、
前記解析手段は、前記受信手段により受信された前記コマンドを解析し、抽出条件、及び優先順位を解析し、
前記抽出手段は、前記コマンドから解析された前記優先順位と、前記第２の記憶手段に記憶されている前記優先順位との関係が前記抽出条件を満たすＴＬＶデータオブジェクトを前記第１の記憶手段から抽出する、
請求項１に記載の携帯可能電子装置。
【請求項３】
前記抽出条件は、一致、不一致、以上、以下、大なり、及び小なりのうちのいずれかを示す、請求項２に記載の携帯可能電子装置。
【請求項４】
前記解析手段は、前記コマンドに応じて最大長を解析し、
前記再構成手段は、前記抽出手段により抽出された前記ＴＬＶデータオブジェクトを優先順位順で並べ、再構成されたＴＬＶデータオブジェクトが前記最大長以下になるように優先順位順で並べられた前記ＴＬＶデータオブジェクトから１つずつ選択して連結する、
請求項２乃至３のいずれかに記載の携帯可能電子装置。
【請求項５】
前記解析手段は、前記受信手段により受信された前記コマンドを解析し、新たな優先順位、及び優先順位を変更するＴＬＶデータオブジェクトを示す識別情報を解析し、
前記第２の記憶手段は、前記識別情報が示すＴＬＶデータオブジェクトの優先順位を前記新たな優先順位に変更する、
請求項２乃至４のいずれかに記載の携帯可能電子装置。
【請求項６】
前記第１の記憶手段と、前記第２の記憶手段と、前記受信手段と、前記解析手段と、前記抽出手段と、前記再構成手段と、前記送信手段と、を備えるＩＣモジュールと、
前記ＩＣモジュールが配設される本体と、
を具備する請求項１に記載の携帯可能電子装置。
【請求項７】
外部機器から入力されるコマンドに応じて処理を行うＩＣカードにおいて実行される制御プログラムであって、前記ＩＣカードを、
複数のＴＬＶデータオブジェクトを含む構造化ＴＬＶデータオブジェクトを記憶する第１の記憶手段と、
前記ＴＬＶデータオブジェクト毎にクラスを記憶する第２の記憶手段と、
外部機器から送信されたコマンドを受信する受信手段と、
前記受信手段により受信された前記コマンドを解析し、抽出条件、及びクラスを解析する解析手段と、
前記コマンドから解析された前記クラスと、前記第２の記憶手段に記憶されている前記クラスとの関係が前記抽出条件を満たすＴＬＶデータオブジェクトを前記第１の記憶手段から抽出する抽出手段と、
前記抽出手段により抽出された前記ＴＬＶデータオブジェクトを用いて構造化ＴＬＶデータオブジェクトを再構成する再構成手段と、
前記再構成手段により再構成された構造化ＴＬＶデータオブジェクトを前記外部機器に送信する送信手段と、
して動作させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、携帯可能電子装置、及び携帯可能電子装置の制御プログラムに関する。
【背景技術】
【０００２】
一般的に、携帯可能電子装置として用いられるＩＣカードは、プラスチックなどで形成されたカード状の本体と本体に埋め込まれたＩＣモジュールとを備えている。ＩＣモジュールは、ＩＣチップを有している。ＩＣチップは、電源が無い状態でもデータを保持することができるＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）またはフラッシュＲＯＭなどの不揮発性メモリと、種々の演算を実行するＣＰＵとを有している。
【０００３】
ＩＣカードは、例えば、国際標準規格ＩＳＯ／ＩＥＣ７８１６に準拠したＩＣカードである。ＩＣカードは、携帯性に優れ、且つ、外部装置との通信及び複雑な演算処理を行う事ができる。また、偽造が難しい為、ＩＣカードは、機密性の高い情報などを格納してセキュリティシステム、電子商取引などに用いられることが想定される。
【０００４】
ＩＣカードは、ＩＣカードを処理する処理装置からコマンドを受信した場合、受信したコマンドに応じてアプリケーションを実行する。これにより、ＩＣカードは、種々の機能を実現することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２０６８９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＩＣカードは、例えば、アプリケーションなどに用いられるデータなどをＴＬＶデータオブジェクトとして不揮発性メモリに記憶する。ＴＬＶデータオブジェクトは、タグ領域（Ｔａｇ）、長さ領域（Ｌｅｎｇｔｈ）、値領域（Ｖａｌｕｅ）の三種のデータを有する。Ｔａｇは、Ｖａｌｕｅに格納されているデータの種別を示す。Ｌｅｎｇｔｈは、Ｖａｌｕｅに格納されているデータの長さを示す。
【０００７】
また、ＴＬＶデータオブジェクトのＶａｌｕｅに１つまたは複数のＴＬＶデータオブジェクトが格納されている構造化ＴＬＶデータオブジェクト（Ｃｏｎｓｔｒｕｃｔｅｄ  ＴＬＶ  Ｄａｔａ  Ｏｂｊｅｃｔ）が一般的に用いられている。
【０００８】
従来のＩＣカードは、構造化ＴＬＶデータオブジェクト内の一部ＴＬＶデータオブジェクトを読み出す場合、構造化ＴＬＶデータオブジェクトのＶａｌｕｅに格納されている全てのＴＬＶデータオブジェクトを読み出す必要がある。この為、処理時間が嵩むという課題がある。
【０００９】
そこで、より高速に処理を行うことができる携帯可能電子装置、及び携帯可能電子装置の制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
一実施形態に係る携帯可能電子装置は、複数のＴＬＶデータオブジェクトを含む構造化ＴＬＶデータオブジェクトを記憶する第１の記憶手段と、前記ＴＬＶデータオブジェクト毎にクラスを記憶する第２の記憶手段と、外部機器から送信されたコマンドを受信する受信手段と、前記受信手段により受信された前記コマンドを解析し、抽出条件、及びクラスを解析する解析手段と、前記コマンドから解析された前記クラスと、前記第２の記憶手段に記憶されている前記クラスとの関係が前記抽出条件を満たすＴＬＶデータオブジェクトを前記第１の記憶手段から抽出する抽出手段と、前記抽出手段により抽出された前記ＴＬＶデータオブジェクトを用いて構造化ＴＬＶデータオブジェクトを再構成する再構成手段と、前記再構成手段により再構成された構造化ＴＬＶデータオブジェクトを前記外部機器に送信する送信手段と、を具備する。
【図面の簡単な説明】
【００１１】
【図１】図１は、一実施形態に係るＩＣカード処理システムの構成例について説明するための図である。
【図２】図２は、一実施形態に係るＩＣカードの構成例について説明するための図である。
【図３】図３は、一実施形態に係るＩＣカードの処理の例について説明するための図である。
【図４】図４は、一実施形態に係るＩＣカードの処理の例について説明するための図である。
【図５】図５は、一実施形態に係るＩＣカードの処理の例について説明するための図である。
【図６】図６は、一実施形態に係るＩＣカードの処理の例について説明するための図である。
【図７】図７は、一実施形態に係るＩＣカードの処理の例について説明するための図である。
【図８】図８は、一実施形態に係るＩＣカードの処理の例について説明するための図である。
【図９】図９は、一実施形態に係るＩＣカードの処理の例について説明するための図である。
【図１０】図１０は、一実施形態に係るＩＣカードの処理の例について説明するための図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、一実施形態に係る携帯可能電子装置、携帯可能電子装置の処理装置、及び携帯可能電子装置の制御プログラムについて詳細に説明する。
【００１３】
本実施形態に係る携帯可能電子装置（ＩＣカード）２０及びＩＣカード２０を処理する処理装置（端末装置）１０は、例えば、接触通信、及び／または非接触通信の機能を備える。これにより、ＩＣカード２０及び端末装置１０は、互いにデータの送受信を行うことができる。
【００１４】
図１は、一実施形態に係るＩＣカード処理システム１の構成例を示す。  
ＩＣカード処理システム１は、ＩＣカード２０を処理する端末装置１０と、ＩＣカード２０と、を備える。
【００１５】
端末装置１０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、不揮発性メモリ１４、カードリーダライタ１５、操作部１７、ディスプレイ１８、及び電源部１９を備える。ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、不揮発性メモリ１４、カードリーダライタ１５、操作部１７、及びディスプレイ１８は、それぞれバスを介して互いに接続されている。
【００１６】
ＣＰＵ１１は、端末装置１０全体の制御を司る制御部として機能する。ＣＰＵ１１は、ＲＯＭ１２又は不揮発性メモリ１４に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。例えば、ＣＰＵ１１は、カードリーダライタ１５を介してＩＣカード２０とコマンド及びレスポンスの送受信を行う。
【００１７】
ＲＯＭ１２は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ＲＡＭ１３は、ワーキングメモリとして機能する揮発性のメモリである。ＲＡＭ１３は、ＣＰＵ１１の処理中のデータなどを一時的に格納する。例えば、ＲＡＭ１３は、カードリーダライタ１５を介して外部の機器と送受信するデータを一時的に格納する。また、ＲＡＭ１３は、ＣＰＵ１１が実行するプログラムを一時的に格納する。
【００１８】
不揮発性メモリ１４は、例えばＥＥＰＲＯＭ、ＦＲＡＭ（登録商標）などを備える。不揮発性メモリ１４は、例えば、制御用のプログラム、制御データ、アプリケーション、及びアプリケーションに用いられるデータなどを記憶する。
【００１９】
カードリーダライタ１５は、ＩＣカード２０と通信を行うためのインターフェース装置である。カードリーダライタ１５は、接触通信、または非接触通信によりＩＣカード２０とデータの送受信を行う。
【００２０】
接触通信のインターフェースとして用いられる場合、カードリーダライタ１５は、ＩＣカード２０が装着されるスロットと、ＩＣカード２０が備えるコンタクトパターンと接続される複数の接触端子を備える。
【００２１】
スロットにＩＣカード２０が装着される場合、カードリーダライタ１５の複数の接触端子は、ＩＣカード２０のコンタクトパターンに接続される。これにより、端末装置１０とＩＣカード２０とは電気的に接続される。カードリーダライタ１５は、スロットに装着されるＩＣカード２０に対して、電力の供給、クロックの供給、リセット信号の入力、及びデータの送受信などを行う。
【００２２】
また、非接触通信のインターフェースとして用いられる場合、カードリーダライタ１５は、送受信するデータに対して信号処理を施す信号処理部と、所定の共振周波数を有するアンテナとを備える。
【００２３】
カードリーダライタ１５は、例えば、信号処理部により、送受信するデータに対して符号化、復号、変調、及び復調などの信号処理を行なう。また、カードリーダライタ１５は、符号化及び変調を施したデータをアンテナに供給する。アンテナは、供給されたデータに応じて磁界を発生させる。これにより、端末装置１０は、通信可能範囲に存在するＩＣカード２０に対してデータを非接触で送信することができる。
【００２４】
さらに、カードリーダライタ１５のアンテナは、磁界を検知し、検知した磁界に応じて信号を生成する。これにより、カードリーダライタ１５は、信号を非接触で受信することができる。信号処理部は、アンテナにより受信された信号に対して復調及び復号を行う。これにより、端末装置１０は、ＩＣカード２０から送信された元のデータを取得することができる。
【００２５】
操作部１７は、例えば操作キーなどを備え、操作者により入力される操作に基づいて、操作信号を生成する。操作部１７は、生成した操作信号をＣＰＵに入力する。これにより、ＣＰＵ１１は、操作者により入力された操作に基づいて処理を実行することができる。
【００２６】
ディスプレイ１８は、ＣＰＵ１１、または図示されないグラフィックコントローラなどの表示処理モジュールから入力される映像を表示するための信号に基づいて種々の情報を表示する。
【００２７】
電源部１９は、端末装置１０の各部に電力を供給する。電源部１９は、例えば、商用電源より電力を受け取り、所定の電圧に変換し、端末装置１０の各部に供給する。
【００２８】
図２は、一実施形態に係るＩＣカード２０の構成例を示す。  
図２に示すように、ＩＣカード２０は、例えば、矩形状の本体２１と、本体２１内に内蔵されたＩＣモジュール２２とを備える。ＩＣモジュール２２は、ＩＣチップ２３と、通信部２４とを備える。ＩＣチップ２３と通信部２４とは、互いに接続された状態でＩＣモジュール２２内に形成されている。
【００２９】
なお、本体２１は、少なくとも通信部２４が配設されるＩＣモジュール２２を設置可能な形状であれば、矩形状に限らず如何なる形状であっても良い。
【００３０】
ＩＣチップ２３は、通信部２４、ＣＰＵ２５、ＲＯＭ２６、ＲＡＭ２７、不揮発性メモリ２８、電源部３１、及びロジック部３２などを備える。通信部２４、ＣＰＵ２５、ＲＯＭ２６、ＲＡＭ２７、不揮発性メモリ２８、電源部３１、及びロジック部３２は、バスを介して互いに接続されている。
【００３１】
通信部２４は、端末装置（外部機器）１０のカードリーダライタ１５と通信を行うためのインターフェースである。通信部２４は、接触通信、または非接触通信により、端末装置１０とデータの送受信を行う。
【００３２】
接触通信のインターフェースとして用いられる場合、通信部２４は、カードリーダライタ１５の接触端子と接続されるコンタクトパターンを備える。コンタクトパターンは、導電性を有する金属などによりＩＣモジュール２２の表面に形成される接触端子である。即ち、コンタクトパターンは、端末装置１０と接触可能に形成されている。
【００３３】
コンタクトパターンは、金属により形成される面が複数のエリアに区切られて形成される。区切られた各エリアは、それぞれ端子として機能する。通信部２４は、コンタクトパターンを介してカードリーダライタ１５とデータの送受信を行うことができる。
【００３４】
また、非接触通信のインターフェースとして用いられる場合、通信部２４は、信号処理部とアンテナとを備える。
【００３５】
信号処理部は、端末装置１０に送信するデータに対して符号化、負荷変調などの信号処理を行う。例えば、信号処理部は、端末装置１０に送信するデータの変調（増幅）を行う。信号処理部は、信号処理を施したデータをアンテナに供給する。
【００３６】
アンテナは、例えば、ＩＣモジュール２２内に所定の形状で配設される金属線により構成される。ＩＣカード２０は、端末装置１０に送信するデータに応じてアンテナにより磁界を発生させる。これにより、ＩＣカード２０は、端末装置１０に対してデータを送信することができる。また、ＩＣカード２０は、電磁誘導によりアンテナに発生する誘導電流に基づいて端末装置１０から送信されるデータを認識する。
【００３７】
例えば、信号処理部は、アンテナに発生する誘導電流に対して復調、及び復号を行う。例えば、信号処理部は、アンテナにより受信する信号の解析を行う。これにより、通信部２４は、２値の論理データを取得する。通信部２４は、解析したデータをバスを介してＣＰＵ２５に送信する。
【００３８】
ＣＰＵ２５は、ＩＣカード２０全体の制御を司る制御部として機能する。ＣＰＵ２５は、ＲＯＭ２６あるいは不揮発性メモリ２８に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。例えば、端末装置１０から受信したコマンドに応じて種々の処理を行い、処理結果としてのレスポンスなどのデータの生成を行なう。
【００３９】
ＲＯＭ２６は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ＲＯＭ２６は、製造段階で制御プログラム及び制御データなどを記憶した状態でＩＣカード２０内に組み込まれる。即ち、ＲＯＭ２６に記憶される制御プログラム及び制御データは、予めＩＣカード２０の仕様に応じて組み込まれる。
【００４０】
ＲＡＭ２７は、ワーキングメモリとして機能する揮発性のメモリである。ＲＡＭ２７は、ＣＰＵ２５の処理中のデータなどを一時的に格納する。例えば、ＲＡＭ２７は、通信部２４を介して端末装置１０から受信したデータを一時的に格納する。またＲＡＭ２７は、通信部２４を介して端末装置１０に送信するデータを一時的に格納する。またさらに、ＲＡＭ２７は、ＣＰＵ２５が実行するプログラムを一時的に格納する。
【００４１】
不揮発性メモリ２８は、例えば、ＥＥＰＲＯＭあるいはフラッシュＲＯＭなどのデータの書き込み及び書換えが可能な不揮発性のメモリを備える。不揮発性メモリ２８は、ＩＣカード２０の運用用途に応じて制御プログラム及び種々のデータを格納する。
【００４２】
たとえば、不揮発性メモリ２８では、プログラムファイル及びデータファイルなどが創成される。創成された各ファイルには、制御プログラム及び種々のデータなどが書き込まれる。ＣＰＵ２５は、不揮発性メモリ２８、または、ＲＯＭ２６に記憶されているプログラムを実行することにより、種々の処理を実現することができる。
【００４３】
電源部３１は、端末装置１０の各部に電力を供給する。ＩＣカード２０が接触通信を行う構成を備える場合、電源部３１は、通信部２４のコンタクトパターンを介してカードリーダライタ１５から供給される電力をＩＣカード２０の各部に供給する。
【００４４】
また、ＩＣカード２０が非接触通信を行う構成を備える場合、カードリーダライタ１５のアンテナから送信される電波、特にキャリア波に基づいて電力を生成する。さらに、電源部３１は、動作クロックを生成する。電源部３１は、発生させた電力及び動作クロックをＩＣカード２０の各部に電力を供給する。ＩＣカード２０の各部は、電力の供給を受けた場合、動作可能な状態になる。
【００４５】
ロジック部３２は、演算処理をハードウエアにより行う演算部である。例えば、ロジック部３２は、端末装置１０からのコマンドに基づいて、暗号化、復号、ハッシュ計算、及び乱数の生成などの処理を行う。例えば、端末装置１０から相互認証コマンドを受信する場合、ロジック部３２は、相互認証処理に係る演算処理を実行する。
【００４６】
ＩＣカード２０は、一次発行と二次発行とにより発行される。ＩＣカード２０を発行する発行装置は、一次発行において、ＩＣカード２０にコマンド（初期化コマンド）を送信することにより、ＩＣカード２０の不揮発性メモリ２８の初期化を行う。これにより、端末装置１０は、ＩＣカード２０の不揮発性メモリ２８内にＩＣカード２０の使用目的、及び使用用途などに応じた鍵ファイルやデータファイル等を定義する。
【００４７】
発行装置は、例えば、ＩＳＯ／ＩＥＣ７８１６により規定されているファイル構造を不揮発性メモリ２８内に創成する。上記の初期化が行われた不揮発性メモリ２８は、Ｍａｓｔｅｒ  Ｆｉｌｅ（ＭＦ）、Ｄｅｄｉｃａｔｅｄ  Ｆｉｌｅ（ＤＦ）、及びＥｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ（ＥＦ）などを有する。
【００４８】
ＭＦは、ファイル構造の根幹となるファイルである。ＤＦは、ＭＦの下位に創成される。ＤＦは、アプリケーション及びアプリケーションに用いられるデータなどをグループ化して格納するファイルである。ＥＦは、ＤＦの下位に創成される。ＥＦは、様々なデータを格納するためのファイルである。また、ＭＦの直下にＥＦが置かれる場合もある。
【００４９】
ＥＦには、Ｗｏｒｋｉｎｇ  Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ（ＷＥＦ）とＩｎｔｅｒｎａｌ  Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ（ＩＥＦ）などの種類がある。ＷＥＦは、作業用ＥＦであり、個人情報などを格納する。ＩＥＦは、内部ＥＦであり、例えば、セキュリティのための暗号鍵などのデータを記憶する。
【００５０】
二次発行では、ＥＦに例えば顧客データなどの個別データが格納される。これにより、ＩＣカード２０が運用可能な状態になる。即ち、ＣＰＵ２５は、不揮発性メモリ２８、または、ＲＯＭ２６に記憶されているプログラムを実行することにより、種々の処理を実現することができる。
【００５１】
不揮発性メモリ２８は、ＴＬＶデータオブジェクトとしてデータを記憶する記憶部２８ａを備えている。即ち、記憶部２８ａは、Ｔａｇ  Ｌｅｎｇｔｈ  Ｖａｌｕｅ（ＴＬＶ）構造のデータをデータの本体として記憶している。即ち、記憶部２８ａは、データ種別（Ｔａｇ）、データの長さ（Ｌｅｎｇｔｈ）、及びデータ値（Ｖａｌｕｅ）を記憶する。
【００５２】
ＴＬＶデータオブジェクトのＴａｇは、ＩＣカード２０のＣＰＵ２５にＴＬＶデータオブジェクトを識別させる為の情報である。Ｌｅｎｇｔｈは、ＴＬＶデータオブジェクトのＶａｌｕｅのデータ長を示す情報である。Ｖａｌｕｅは、ＴＬＶデータオブジェクトのデータ本体である。
【００５３】
また、不揮発性メモリ２８は、記憶部２８ａに記憶されているＴＬＶデータオブジェクト毎の優先順位を示す優先順位情報を記憶する記憶部２８ｂを備えている。なお、優先順位情報については後述する。
【００５４】
図３は、端末装置１０からＩＣカード２０に送信されるコマンドの例を示す。  
まず、ＩＣカード２０は、端末装置１０のカードリーダライタ１５から電力の供給を受けて動作可能な起動状態になる。
【００５５】
端末装置１０がＩＣカード２０に送信するコマンドは、「ＣＬＡ」、「ＩＮＳ」、「Ｐ１」、「Ｐ２」、「Ｌｃ」、「Ｄａｔａ」、及び「Ｌｅ」などのフィールドを有する。なお、コマンドのフォーマットは、ＩＳＯ／ＩＥＣ  ７８１６−３で規定されているＡｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ（ＡＰＤＵ）に準拠している。
【００５６】
「ＣＬＡ」は、コマンドの層別を示すｃｌａｓｓ  ｂｙｔｅである。「ＩＮＳ」は、コマンドの種別を示すｉｎｓｔｒｕｃｔｉｏｎ  ｂｙｔｅである。「Ｐ１」及び「Ｐ２」は、「ＩＮＳ」に応じたパラメータを示すｐａｒａｍｅｔｅｒ  ｂｙｔｅである。
【００５７】
「Ｌｃ」は、「Ｄａｔａ」のデータの長さ（バイト数）を示すｌｅｎｇｔｈ  ｆｉｅｌｄ  ｆｏｒ  ｃｏｒｄｉｎｇ  ｎｕｍｂｅｒ  Ｎｃである。「Ｄａｔａ」は、当該コマンドのデータ本体を示すｃｏｍｍａｎｄ  ｄａｔａ  ｆｉｅｌｄである。「Ｌｅ」は、当該コマンドに対するレスポンスのデータ長を示すｌｅｎｇｔｈ  ｆｉｅｌｄ  ｆｏｒ  ｃｏｒｄｉｎｇ  ｎｕｍｂｅｒ  Ｎｅである。
【００５８】
即ち、「ＣＬＡ」及び「ＩＮＳ」により、当該コマンドの種類が示される。ＩＣカード２０は、受信したコマンドの「ＣＬＡ」及び「ＩＮＳ」の値を解析することにより、受信したコマンドの種類を認識する。
【００５９】
端末装置１０は、「ＣＬＡ」、「ＩＮＳ」、「Ｐ１」、「Ｐ２」、「Ｌｃ」、「Ｄａｔａ」、及び「Ｌｅ」の値を設定することにより、種々のコマンドを生成する。例えば、端末装置１０は、「ＣＬＡ」の値を「００」に設定し、「ＩＮＳ」の値を「Ｂ４」に設定することにより、ＩＣカード２０に構造化ＴＬＶデータオブジェクトを読み出す処理を行なわせる為のコマンドを生成することができる。なお、この場合、「Ｐ１」及び「Ｐ２」により、読み出し処理を行うＥＦを指定する。
【００６０】
また、端末装置１０は、「Ｄａｔａ」により読み出すＴＬＶデータオブジェクトを抽出する為の抽出条件及び優先順位を指定する。例えば、端末装置１０は、「Ｄａｔａ」の先頭の１バイトにより、抽出条件を指定する。また、端末装置１０は、「Ｄａｔａ」の２バイト目で優先順位を指定する。
【００６１】
端末装置１０は、「０」乃至「５」の数値に各抽出条件を対応付けてコマンドをＩＣカード２０に送信する。また、端末装置１０は、優先順位の値を「０」乃至「２５５」の間で設定する。なお、「０」が最も先順位が高く、「２５５」が最も優先順位が低いものとする。
【００６２】
端末装置１０は、優先順位と一致するＴＬＶをＩＣカード２０に読み出させる場合、抽出条件を示す値として「０」を設定する。端末装置１０は、優先順位と不一致であるＴＬＶをＩＣカード２０に読み出させる場合、抽出条件を示す値として「１」を設定する。端末装置１０は、優先順位以上であるＴＬＶをＩＣカード２０に読み出させる場合、抽出条件を示す値として「２」を設定する。端末装置１０は、優先順位以下であるＴＬＶをＩＣカード２０に読み出させる場合、抽出条件を示す値として「３」を設定する。端末装置１０は、優先順位より大きいＴＬＶをＩＣカード２０に読み出させる場合、抽出条件を示す値として「４」を設定する。端末装置１０は、優先順位より小さいＴＬＶをＩＣカード２０に読み出させる場合、抽出条件を示す値として「５」を設定する。
【００６３】
ＩＣカード２０は、抽出条件を示す値が「０」である場合、コマンドで指定された優先順位と一致するＴＬＶを読み出す。ＩＣカード２０は、抽出条件を示す値が「１」である場合、コマンドで指定された優先順位と不一致であるＴＬＶを読み出す。ＩＣカード２０は、抽出条件を示す値が「２」である場合、コマンドで指定された優先順位以上であるＴＬＶを読み出す。ＩＣカード２０は、抽出条件を示す値が「３」である場合、コマンドで指定された優先順位以下であるＴＬＶを読み出す。ＩＣカード２０は、抽出条件を示す値が「４」である場合、コマンドで指定された優先順位より大きいＴＬＶを読み出す。ＩＣカード２０は、抽出条件を示す値が「５」である場合、コマンドで指定された優先順位より小さいＴＬＶを読み出す。
【００６４】
図４は、優先順位情報のデータ構造の例を示す。  
ＰＲＩＯＲＩＴＹ＿ＤＡＴＡは、ひとつのＴＬＶデータオブジェクトに対して一つの優先順位を付与するためのデータである。優先情報テーブルは、２バイトのＴＡＧ領域（ＴＡＧ）と、１バイトの優先順位領域（ｐｒｉｏｒｉｔｙ）とを備える。
【００６５】
ＴＡＧ領域は、優先順位を付加する対象となるＴＡＧを示す。例えば、ＴＡＧが１バイトである場合、ＴＡＧ領域の２バイト目は「００」である。優先順位領域は、「０」乃至「２５５」の値を示す１バイトデータである。なお、「０」が最も先順位が高く、「２５５」が最も優先順位が低いものとする。
【００６６】
ＰＲＩＯＲＩＴＹ＿ＴＡＢＬＥは、データ全体を示す構造化ＴＬＶ（以降、「親ＴＬＶ」と称する）のＴＡＧを示すデータと、データ部を構成する複数のＴＬＶデータオブジェクト（以降、「子ＴＬＶ」と称する）の優先順位を示すデータとを有する。
【００６７】
親ＴＬＶのＴＡＧを示す領域（ｍａｉｎ  Ｔａｇ）は、２バイトで構成されている。ｍａｉｎ  Ｔａｇの書式は、ＰＲＩＯＲＩＴＹ＿ＤＡＴＡ構造体のＴＡＧメンバと同一である。
【００６８】
子ＴＬＶの優先順位を示すデータの領域は、前述のＰＲＩＯＲＩＴＹ＿ＤＡＴＡ型の構造体を持つ。なお、配列の要素の数は、本ＩＣカード２０の用途に応じて任意で設定される。Ｔａｇが割り振られていない要素のＴａｇには「００００」がセットされる。
【００６９】
ＰＲＩＯＲＩＴＹ＿ＴＡＢＬＥ構造体は、配列構造により構成されている。配列の要素の数は、本ＩＣカード２０で扱われる構造化ＴＬＶデータオブジェクトの数プラス１である。なお、最終要素のＴａｇには「００００」がセットされる。
【００７０】
図５は、構造化ＴＬＶデータオブジェクトの例を示す。  
図５に示される構造化ＴＬＶデータオブジェクトは、旅券などのＩＣカード２０に保存されるバイオメトリック（生体認証）情報である。
【００７１】
親ＴＬＶのＴＡＧは、本データがバイオメトリック情報であることを示す値である「７Ｆ６１」である。親ＴＬＶは、ＴＡＧが「０２」である子ＴＬＶと、ＴＡＧが「７Ｆ６０」である子ＴＬＶとを有する。なお、ＴＡＧが「０２」である子ＴＬＶは、顔画像格納数を示す。また、ＴＡＧが「７Ｆ６０」である子ＴＬＶは、一つの顔画像のデータセットを示す。
【００７２】
ＴＡＧが「７Ｆ６０」である子ＴＬＶは、データ部にＴＡＧが「Ａ１」であるＴＬＶと、ＴＡＧが「５Ｆ２Ｅ」であるＴＬＶとの２つのＴＬＶデータオブジェクトを有する。ＴＡＧが「Ａ１」であるＴＬＶは、該当バイオメトリック情報の属性を示すヘッダ情報（バイオメトリックヘッダテンプレート）である。ＴＡＧが「５Ｆ２Ｅ」であるＴＬＶは、該当のバイオメトリック情報の本体（バイオメトリックデータブロック）である。
【００７３】
ＴＡＧが「Ａ１」であるＴＬＶは、パトロンヘッダバージョン（ＴＡＧ＝８０、Ｌ＝２）、バイオメトリックタイプ（ＴＡＧ＝８１、Ｌ＝１）、バイオメトリックサブタイプ（ＴＡＧ＝８２、Ｌ＝１）、バイオメトリックデータの作成日（ＴＡＧ＝８３、Ｌ＝７）、有効期間（開始・終了日）（ＴＡＧ＝８５、Ｌ＝８）、バイオメトリック参照データを作成した製品所有者および製品タイプの結合（ＴＡＧ＝８６、Ｌ＝４）、バイオメトリック参照データの形式所有者（ＴＡＧ＝８７、Ｌ＝２）、及び形式所有者が指定するバイオメトリック参照データの形式タイプ（ＴＡＧ＝８８、Ｌ＝２）などの８個の子ＴＬＶを有する。
【００７４】
図６は、優先順位テーブルの例を示す。なお、優先順位テーブルの配列数はｎとして説明するが、図５に示されたバイオメトリック情報のデータ抽出に用いられない配列内のデータは特に図示しない。
【００７５】
優先順位テーブル［０］は、図５に示すバイオメトリック情報の親ＴＬＶ「７Ｆ６１」をｍａｉｎＴＡＧとしている。子ＴＬＶ「０２００」と「７Ｆ６０」とには、それぞれ優先順位「５」、「２５５」が割り当てられている。
【００７６】
優先順位テーブル［１］は、ＴＬＶ「７Ｆ６１」を親ＴＬＶとしている。子ＴＬＶ「Ａ１００」には優先順位「２５５」、子ＴＬＶ「５Ｆ２Ｅ」には優先順位「１」が割り当てられている。
【００７７】
優先順位テーブル［１］は、ＴＬＶ「Ａ１００」を親ＴＬＶとしている。子ＴＬＶ「８０００」には優先順位「２５５」、子ＴＬＶ「８１００」には優先順位「２」、子ＴＬＶ「８２００」には優先順位「３」、子ＴＬＶ「８３００」には優先順位「１０」、子ＴＬＶ「８５００」には優先順位「２」、子ＴＬＶ「８６００」には優先順位「２０」、子ＴＬＶ「８８００」には優先順位「２０」、がそれぞれ割り当てられている。また、最終データである優先順位テーブル［ｎ］のｍａｉｎＴＡＧには「００００」が設定されている。
【００７８】
即ち、顔画像格納数に優先順位「５」、バイオメトリック情報テンプレートに優先順位「２５５」、バイオメトリックヘッダテンプレートに優先順位「２５５」、バイオメトリックデータブロックに優先順位「１」、パトロンヘッダバージョンに優先順位「２５５」、バイオメトリックタイプに優先順位「２」、バイオメトリックサブタイプに優先順位「３」、バイオメトリックデータの作成日に優先順位「１０」、有効期間（開始・終了日）に優先順位「２」、バイオメトリック参照データを作成した製品所有者および製品タイプの結合に優先順位「２０」、バイオメトリック参照データの形式所有者に優先順位「２０」、形式所有者が指定するバイオメトリック参照データの形式タイプに優先順位「２０」がそれぞれ設定されている。
【００７９】
なお、ＩＣカード２０は、端末装置１０からのコマンドに応じて各ＴＬＶデータオブジェクトの優先順位を変更する構成であってもよい。端末装置１０は、新たな優先順位、及び優先順位を変更するＴＬＶデータオブジェクトを示す識別情報をコマンドに付加する。ＩＣカード２０は、受信したコマンドを解析し、新たな優先順位、及び優先順位を変更するＴＬＶデータオブジェクトを示す識別情報を解析する。ＩＣカード２０は、識別情報が示すＴＬＶデータオブジェクトの優先順位を新たな優先順位に変更する。
【００８０】
図７は、図５に示すバイオメトリックデータに具体的な値が当てはめられた例を示す。なお、顔画像データ本体は、レングスまでの定義し、データの実態を示すものではない。また、本実施形態では、オプションであるバイオメトリックサブタイプ（ＴＡＧ＝８２）は実装されていない。
【００８１】
図８は、ＩＣカード２０の処理の例を示す。  
まず、端末装置１０は、抽出条件、優先順位、対象のＥＦなどを決定し、図３に示されるようなコマンドを生成する。端末装置１０は、生成したコマンドをＩＣカード２０に送信する。
【００８２】
ＩＣカード２０は、端末装置１０から送信されたコマンドを受信する。ＩＣカード２０は、受信したコマンドの解析を行い、コマンドにより指定されるＥＦを選択する。さらに、ＩＣカード２０は、記憶部２８ｂに記憶されている優先順位情報を参照し、各優先順位テーブルを確認する。
【００８３】
まず、ＩＣカード２０は、優先順位テーブル［ｉ］のｉの値を０からｎまで変化させながら親ＴＬＶのＴＡＧ値と優先順位テーブル［ｉ］のｍａｉｎＴＡＧの値が一致するテーブルを検索する（ステップＳ１１）。即ち、ＩＣカード２０は、ＴＬＶ毎に親ＴＬＶのＴＡＧ値と優先順位テーブル［ｉ］のｍａｉｎＴＡＧの値が一致するか否か確認する。ＩＣカード２０は、ＴＡＧが「００００」であるＴＬＶが検出された場合、検索処理を終了する。
【００８４】
親ＴＬＶのＴＡＧ値と優先順位テーブル［ｉ］のｍａｉｎＴＡＧの値が一致するテーブルが見つかった場合、ＩＣカード２０は、先頭の子ＴＬＶの先頭アドレスを取得する（ステップＳ１２）。即ち、先頭の子ＴＬＶの先頭アドレスは、親ＴＬＶのデータ部の先頭アドレスである。
【００８５】
ＩＣカード２０は、子ＴＬＶのＴＡＧの値が「００００」であるか否か判定する（ステップＳ１３）。ＩＣカード２０は、子ＴＬＶのＴＡＧの値が「００００」である場合、ステップＳ１９に移行する。
【００８６】
また、ＩＣカード２０は、子ＴＬＶのＴＡＧのと、優先順位テーブル［ｉ］のｄａｔａ［ｊ］（ｊ＝０，１，２．．．９）のＴＡＧの値とが一致するか否か判定する（ステップＳ１４）。一致しない場合、ステップＳ１８に移行する。一致した場合、ＩＣカード２０は、子ＴＬＶが、コマンドにより指定された「抽出条件」及び「指定優先順位」を満たすか否か判定する（ステップＳ１５）。即ち、ＩＣカード２０は、子ＴＬＶの優先順位と、コマンドで指定された優先順位との関係が、抽出条件を満たすか否か判定する。
【００８７】
抽出条件が満たされた場合、ＩＣカード２０は、子ＴＬＶをＲＡＭ２７上の例えばテンポラリバッファに追加する（ステップＳ１６）。また、抽出条件が満たされなかった場合、ＩＣカード２０は、ＴＬＶを親ＴＬＶとして本関数を再帰呼び出しする（ステップＳ１７）。ＩＣカード２０は、ステップＳ１８で、全てのデータを確認したか否か判定する（ステップＳ１８）。即ち、ＩＣカード２０は、親ＴＬＶ内の全ての子ＴＬＶについて抽出条件を確認したか否か判定する。全てのデータの確認がされていない場合、ＩＣカード２０は、ｊの値を１つインクリメントし、ステップＳ１３にループする。
【００８８】
また、ＩＣカード２０は、ステップＳ１９で、次の子ＴＬＶがあるか否か判定する（ステップＳ１９）。次の子ＴＬＶがある場合、ＩＣカード２０は、次の子ＴＬＶの情報を取得し（ステップＳ２０）、ステップＳ１３に移行する。これにより、ＩＣカード２０は、次の親ＴＬＶを選択することができる。
【００８９】
また、ステップＳ１９で次の子ＴＬＶがないと判定した場合、ＩＣカード２０は、抽出したＴＬＶ、即ち、テンポラリバッファに追加したＴＬＶを用いて構造化ＴＬＶを再構成する（ステップＳ２１）。ＩＣカード２０は、再構成した構造化ＴＬＶを端末装置１０に返信し（ステップＳ２２）、処理を終了する。
【００９０】
図９は、図８に示す構造化ＴＬＶデータオブジェクトを再構成する処理の例を示す。  
再構成する構造化ＴＬＶデータオブジェクトのＴＡＧをセットする（ステップＳ３１）。なお、本例は、構造化ＴＬＶデータオブジェクトのＴＡＧを「７Ｆ６２」に設定する。
【００９１】
ＩＣカード２０は、端末装置１０から送信されたコマンドの「Ｌｅ」が「０」であるか否か判定する（ステップＳ３２）。「Ｌｅ」が「０」である場合、ＩＣカード２０は、テンポラリバッファのデータ長を再構成される構造化ＴＬＶデータオブジェクトのＬｅｎｇｔｈとしてＲＡＭ２７上の応答バッファに追加する（ステップＳ３３）。さらにＩＣカード２０は、テンポラリバッファの全ＴＬＶデータオブジェクトを応答バッファに追加する（ステップＳ３４）。
【００９２】
また、「Ｌｅ」が「０」ではない場合、ＩＣカード２０は、内部変数を初期化する（ステップＳ３５）。即ち、ＩＣカード２０は、再構成されたＴＬＶのデータ長（ａｌｌ＿ｌｅｎｇｔｈ）を０に設定し、ＴＡＧ、Ｌを含む現在処理中の子ＴＬＶの長さ（ｔｈｉｓ＿ｌｅｎｇｔｈ）を０に設定し、再構成されるＴＬＶのデータ長の最大値（ｍａｘ）をｎ−２−ｌに設定する。なお、このｎは、Ｌｅが示す応答データ長である。また、このｌは、Ｌｅのデータ長である。
【００９３】
ＩＣカード２０は、ｍａｘを再構成される構造化ＴＬＶデータオブジェクトのデータ長として応答バッファに追加する（ステップＳ３６）。ＩＣカード２０は、テンポラリバッファのＴＬＶデータオブジェクトを優先順位順に並べる（ステップＳ３７）。
【００９４】
ＩＣカード２０は、テンポラリバッファの１つのＴＬＶを選択し、選択したＴＬＶのデータ長（ＴＡＧ、Ｌｅｎｇｔｈ含む）をｔｈｉｓ＿ｌｅｎｇｔｈに登録する（ステップＳ３８）。
【００９５】
ＩＣカード２０は、ａｌｌ＿ｌｅｎｇｔｈの値とｔｈｉｓ＿ｌｅｎｇｔｈの値の合計がｍａｘの値より大きいか否かを判定する（ステップＳ３９）。ａｌｌ＿ｌｅｎｇｔｈの値とｔｈｉｓ＿ｌｅｎｇｔｈの値の合計がｍａｘの値より大きいか場合、ＩＣカード２０は、構造化ＴＬＶデータオブジェクトの再構成を終了する。
【００９６】
ａｌｌ＿ｌｅｎｇｔｈの値とｔｈｉｓ＿ｌｅｎｇｔｈの値の合計がｍａｘの値以下である場合、ＩＣカード２０は、ａｌｌ＿ｌｅｎｇｔｈの値にｔｈｉｓ＿ｌｅｎｇｔｈの値を加算する（ステップＳ４０）。さらに、ＩＣカード２０は、選択しているＴＬＶデータオブジェクトを応答バッファに追加する（ステップＳ４１）。
【００９７】
ＩＣカード２０は、テンポラリバッファ内の全てのＴＬＶを選択したか否か判定する（ステップＳ４２）。未選択のＴＬＶが存在する場合、ＩＣカード２０は、ステップＳ３８にループする。
【００９８】
全てのＴＬＶを選択済みである場合、ＩＣカード２０は、ａｌｌ＿ｌｅｎｇｔｈを再構成されるＴＬＶデータオブジェクトのデータ部長としてＬｅｎｇｔｈを生成し（ステップＳ４３）、構造化ＴＬＶデータオブジェクトの再構成を終了する。
【００９９】
上記したような処理により、ＩＣカード２０は、図１０に示すような構造化ＴＬＶデータオブジェクトを有するレスポンスを生成することができる。
【０１００】
図１０は、図３に示されたコマンドにおいて、抽出条件が「２」であり、優先順位が「２」である場合のＩＣカード２０からのレスポンスの例を示す。
【０１０１】
抽出条件が「２」であり、優先順位が「２」である場合、ＩＣカード２０は、優先順位が「２」以上であるＴＬＶを抽出する。ＩＣカード２０は、図６に示す優先順位情報を参照し、上記の処理を行うことにより、ＴＡＧが「５Ｆ２Ｅ」であるバイオメトリックデータブロックと、ＴＡＧが「８１００」であるバイオメトリックタイプと、ＴＡＧが「８５００」である有効期限（開始・終了日）との３つを抽出する。ＩＣカード２０は、抽出したＴＬＶを連結し、構造化ＴＬＶのＶａｌｕｅに連結したＴＬＶを設定することにより、構造化ＴＬＶデータオブジェクトを再構成することができる。
【０１０２】
この構成によると、端末装置１０は、ＩＣカード２０に記憶されている構造化ＴＬＶデータオブジェクト内の全ての子ＴＬＶを読み出すことなく条件に適合する子ＴＬＶを抽出することができる。これにより、処理時間などを抑えることができる。この場合、ＩＣカード２０は、構造化ＴＬＶデータオブジェクトの不要な部分を取り除いて構造化ＴＬｖデータオブジェクトを再構成する。この為、端末装置１０は、不要なデータを含まない再構築されたＴＬＶデータオブジェクトを受信することができる。
【０１０３】
これにより、端末装置１０におけるレスポンスの解析に要する時間、及びＩＣカード２０の構造化ＴＬＶデータオブジェクト内の不要な子ＴＬＶの読み出しに要する時間を短縮することができる。この結果、より高速に処理を行うことができる携帯可能電子装置、携帯可能電子装置の処理装置、及び携帯可能電子装置の制御プログラムを提供することができる。
【０１０４】
なお、上記した実施形態では、ＩＣカード２０は、ＴＬＶデータオブジェクト毎に優先順位を設定する構成として説明したが、この構成に限定されない。ＩＣカード２０は、優先順位ではなくカテゴリまたはクラスなどをＴＬＶデータオブジェクト毎に設定する構成であってもよい。
【０１０５】
なお、上述の各実施の形態で説明した機能は、ハードウエアを用いて構成するに留まらず、ソフトウエアを用いて各機能を記載したプログラムをコンピュータに読み込ませて実現することもできる。また、各機能は、適宜ソフトウエア、ハードウエアのいずれかを選択して構成するものであっても良い。
【０１０６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１０７】
１…ＩＣカード処理システム、１０…端末装置、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…不揮発性メモリ、１５…カードリーダライタ、１７…操作部、１８…ディスプレイ、１９…電源部、２０…ＩＣカード、２１…本体、２２…ＩＣモジュール、２３…ＩＣチップ、２４…通信部、２５…ＣＰＵ、２６…ＲＯＭ、２７…ＲＡＭ、２８…不揮発性メモリ、２８ａ…記憶部、２８ｂ…記憶部、３１…電源部、３２…ロジック部、
【図１】
0005892818.tif 000002
【図２】
0005892818.tif 000003
【図３】
0005892818.tif 000004
【図４】
0005892818.tif 000005
【図５】
0005892818.tif 000006
【図６】
0005892818.tif 000007
【図７】
0005892818.tif 000008
【図８】
0005892818.tif 000009
【図９】
0005892818.tif 000010
【図１０】
0005892818.tif 000011