説明

携帯可能電子装置、非接触ICカード、および携帯可能電子装置のコマンド処理方法

【課題】 効率的に非接触通信を行うことができる携帯可能電子装置、非接触ICカード、および携帯可能電子装置のコマンド処理方法を提供する。
【解決手段】 携帯可能電子装置は、通信手段と、第1のコマンド処理手段と、判断手段と、第2のコマンド処理手段と、応答処理手段とを有する。通信手段は、外部装置と非接触でデータ通信を行う。第1のコマンド処理手段は、外部装置から受信した第1のコマンドに応じた処理を実行する。判断手段は、外部装置から受信した第1のコマンドのデータ部に第2のコマンドが含まれるか否かを判断する。第2のコマンド処理手段は、判断手段により第1のコマンドのデータ部に第2のコマンドが含まれると判断した場合、第2のコマンドに応じた処理を実行する。応答処理手段は、第1のコマンド処理手段により実行した第1のコマンドの処理結果を示すレスポンスのデータ部に第2のコマンド処理手段で実行した第2のコマンドの処理結果をセットして外部装置へ送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、携帯可能電子装置、非接触ICカード、および携帯可能電子装置のコマンド処理方法に関する。
【背景技術】
【0002】
非接触ICカードは、データの書き込み或は書き換えが可能な不揮発性メモリおよび制御素子などを有し、非接触通信によって外部装置との通信を行う。非接触ICカードは、外部から与えられるコマンドに応じて処理を実行する。非接触ICカードが実行可能な処理は、たとえば、ISO/IEC14443で規定される。ISO/IEC14443では、外部装置が通信可能な複数の非接触ICカードの中から選択する1つの非接触ICカードと通信するための初期化及び衝突回避(アンチコリジョン)処理と、それに引き続き行われるブロック伝送プロトコル(T=CL)によるコマンド処理とが規定されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】ISO/IEC14443
【発明の概要】
【発明が解決しようとする課題】
【0004】
効率的に非接触通信を行うことができる携帯可能電子装置、非接触ICカード、および携帯可能電子装置のコマンド処理方法を提供することを目的とする。
【課題を解決するための手段】
【0005】
実施形態によれば、携帯可能電子装置は、通信手段と、第1のコマンド処理手段と、判断手段と、第2のコマンド処理手段と、応答処理手段とを有する。通信手段は、外部装置と非接触でデータ通信を行う。第1のコマンド処理手段は、前記通信手段により前記外部装置から受信した第1のコマンドに応じた処理を実行する。判断手段は、前記通信手段により前記外部装置から受信した前記第1のコマンドのデータ部に第2のコマンドが含まれるか否かを判断する。第2のコマンド処理手段は、前記判断手段により前記第1のコマンドのデータ部に第2のコマンドが含まれると判断した場合、前記第2のコマンドに応じた処理を実行する。応答処理手段は、前記第1のコマンド処理手段により実行した第1のコマンドの処理結果を示すレスポンスのデータ部に前記第2のコマンド処理手段で実行した第2のコマンドの処理結果をセットして前記外部装置へ送信する。
【図面の簡単な説明】
【0006】
【図1】図1は、ICカード(携帯可能電子装置)およびICカード処理装置の構成例を概略的に示すブロック図である。
【図2】図2は、ICカードのハードウエア構成例を概略的に示すブロック図である。
【図3】図3は、ATTRIBコマンドの構成例を示す。
【図4】図4は、コマンドのデータ部に格納されるコマンドの例を示す。
【図5】図5は、ATTRIBコマンドに対するレスポンスの構成例を示す。
【図6】図6は、ATTRIBコマンドに対する処理例を説明するためのフローチャートである。
【図7】図7(A)、(B)、(C)は、ATTRIBコマンドに対するレスポンスにおけるHigher Layer Responseの例を示す。
【図8】図8は、非接触ICカードのデータメモリに3つのアプリケーションが格納されている状態を示す。
【図9】図9は、SELECTコマンドの例を示す。
【図10】図10は、SELECTコマンドに対するレスポンスの構成を示す。
【図11】図11は、SELECTコマンドに対する処理例を説明するためのフローチャートである。
【図12】図12は、RATSコマンドの例を示す。
【図13】図13は、RATSコマンドに対するレスポンスの構成を示す。
【図14】図14は、RATSコマンドに対する処理例を説明するためのフローチャートである。
【発明を実施するための形態】
【0007】
以下、実施の形態について、図面を参照して説明する。
図1は、本実施の形態に係るICカード(携帯可能電子装置)2、および、ICカード2との通信機能を有する外部装置としてのICカード処理装置1の構成例を概略的に示すブロック図である。
まず、上記ICカード処理装置1の構成について説明する。
上記ICカード処理装置1は、図1に示すように、端末装置11、カードリーダライタ12、キーボード13、ディスプレイ14、および、プリンタ15などを有している。
【0008】
上記端末装置11は、ICカード処理装置1全体の動作を制御するものである。上記端末装置11は、CPU、種々のメモリ及び各種インターフェースなどにより構成される。たとえば、上記端末装置11は、パーソナルコンピュータ(PC)により構成される。
上記端末装置11は、上記カードリーダライタ12によりICカード2へコマンドを送信する機能、ICカード2から受信したデータを基に種々の処理を行う機能などを有している。たとえば、上記端末装置11は、カードリーダライタ12を介してICカード2にデータの書き込みコマンドを送信することによりICカード2内の不揮発性メモリにデータを書き込む制御を行う。また、上記端末装置11は、ICカード2に読み取りコマンドを送信することによりICカード2からデータを読み出す制御を行う。
【0009】
上記カードリーダライタ12は、上記ICカード2との通信を行うためのインターフェース装置である。上記カードリーダライタ12は、上記ICカード2の通信方式に応じたインターフェースにより構成される。上記ICカード2が非接触型のICカードである場合、上記カードリーダライタ12は、ICカード2との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記カードリーダライタ12では、上記ICカード2に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ12は、上記端末装置11による制御に基づいて上記ICカード2の活性化(起動)、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【0010】
上記キーボード13は、当該ICカード処理装置1の操作員が操作する操作部として機能し、操作員により種々の操作指示やデータなどが入力される。上記ディスプレイ14は、上記端末装置11の制御により種々の情報を表示する表示装置である。上記プリンタ15は、処理結果などの各種データを印刷出力するためのものである。
【0011】
次に、上記ICカード2のハードウエア構成例について説明する。
上記ICカード2は、上記ICカード処理装置1などの上位機器から電力などの供給を受けた際、活性化される(動作可能な状態になる)ようになっている。上記ICカード2は、非接触型の通信方式によりICカード処理装置1と接続する非接触ICカードである。つまり、非接触ICカードとしてのICカード2は、通信インターフェースとしてのアンテナ及び変復調回路などを介してICカード処理装置1からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化する。
【0012】
図2は、本実施の形態に係るICカード2のハードウエア構成例を概略的に示すブロック図である。
上記ICカード2は、本体Bを構成する筐体内にモジュールMが内蔵されている。上記モジュールMは、1つまたは複数のICチップCと通信用の外部インターフェース(通信インターフェース)とが接続された状態で一体的に形成され、ICカード2の本体B内に埋設されている。また、上記ICカード2のモジュールMは、図2に示すように、制御素子21、データメモリ22、ワーキングメモリ23、プログラムメモリ24、および、通信部25などを有してしている。
【0013】
上記制御素子21は、当該ICカード2全体の制御を司るものである。上記制御素子21は、上記プログラムメモリ24あるいは上記データメモリ22に記憶されている制御プログラムおよび制御データに基づいて動作することにより、種々の機能を実現する。たとえば、上記制御素子21は、オペレーティングシステムのプログラムを実行することにより、当該ICカード2の基本的な動作制御を行う。また、上記制御素子21は、当該ICカード2の利用目的に応じたアプリケーションプログラムを実行することにより、当該ICカード2の運用形態に応じた種々の動作制御を行う。
【0014】
上記データメモリ22は、例えば、EEPROM(Electrically Erasable Programmable Read−Only Memory)あるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記データメモリ22には、当該ICカード2の運用用途に応じた制御プログラム(アプリケーションプログラム)あるいは種々のデータが書込まれる。上記データメモリ22には、当該ICカード2の規格に応じた種々のファイルが定義され、それらのファイルに種々のデータが書き込まれる。
【0015】
上記ワーキングメモリ23は、RAMなどの揮発性のメモリである。また、上記ワーキングメモリ23は、制御素子21が処理中のデータなどを一時保管するバッファとして機能する。
上記プログラムメモリ24は、予め制御用のプログラムや制御データなどが記憶される。プログラムメモリ24は、たとえば、マスクROMなどの不揮発性のメモリである。上記プログラムメモリ24には、当該ICカードの製造段階で制御プログラムあるいは制御データなどが記憶された状態でICカード2内に組み込まれる。つまり、上記プログラムメモリ24に記憶されている制御プログラムあるいは制御データは、当該ICカードの基本的な動作を司るものであり、予め当該ICカード2の仕様に応じて組み込まれるものである。
【0016】
上記通信部25は、上記ICカード処理装置1のカードリーダライタ12との通信を行うためのインターフェースである。通信部25は、上記ICカード処理装置1のカードリーダライタ12との無線通信を行うための変復調回路などの通信制御部および電波を送受信するためのアンテナなどにより構成される。
【0017】
次に、ICカード処理装置1とICカード2との通信処理について説明する。
ICカード処理装置1とICカード2とは、非接触通信により通信を行う。ICカード処理装置1は、複数のICカード2と非接触通信が可能な状態となりえる。ICカード処理装置と特定の非接触ICカードとが確実に通信を行うためには、初期化・衝突回避(アンチコリジョン)処理が必要となる。たとえば、ISO14443 Type Bでは、ICカード処理装置1と1つの非接触ICカード2とが通信を確立するための初期化・衝突回避(アンチコリジョン)処理に用いられるコマンドとして、ATTRIBコマンドが規定されている。
【0018】
図3は、ATTRIBコマンドの構成例を示す。ATTRIBコマンドは、初期化及び衝突回避(アンチコリジョン)処理に用いられるコマンドの一例である。図3に示す例において、ATTRIBコマンドは、コマンド識別部301、カード識別部302、パラメータ部303、データ部304、およびチェックコード部305を有する。
【0019】
コマンド識別部301は、当該コマンドがATTRIBコマンドであることを示す識別情報が格納される。図3では、コマンド識別部301には、当該コマンドがATTRIBコマンドであることを示すコマンド識別子(「1D」)が格納されている。図3に示すように、ISO14443 Type Bでは、ATTRIBコマンドのコマンド識別子が「1D」に規定されている。カード識別部302は、当該コマンドの送信先を特定するための識別情報が格納される。図3に示す例において、カード識別部302には、非接触通信の通信相手を1つの非接触ICカード2に特定するための当該非接触ICカード2の識別情報(Identifier)が格納される。パラメータ部303は、非接触通信におけるパラメータを格納する領域である。図3に示す例では、パラメータ部303には4つのパラメータが格納できる。
【0020】
データ部304は、データを格納できる領域である。ATTRIBコマンドのデータ部304は、Higher Layer INF(INFormation)と称する。一般に、ICカード処理装置1と非接触ICカード2とが通信を確立するだけの処理では、データ部304としてのHigher Layer INFは、未使用(空き状態)となっていることが多い。本実施の形態では、データ部304には、非接触ICカード2が実行可能なコマンドを格納する。データ部304には、1又は複数のコマンドが格納できる。データ部304に格納される各コマンドは、コマンドAPDU(application protocol data unit)である。また、チェックコード部305は、コマンド(ATTRIBコマンド)全体のデータをチェックするためのコード情報が格納される。
【0021】
また、データ部304には、所定のフォーマットのデータが格納できる。すなわち、データ部304には、所定のフォーマットで1又は複数のコマンドを格納できる。たとえば、データ部304には、各コマンドがTLV構造のデータ(以下、TLVデータとも称する)として格納する。TLV構造のデータとは、Tagのデータ、Lengthのデータ、およびValueのデータが順に並べられたデータ列である。Tagは、当該データ列の識別情報を示す。Lengthは、直後に続くValueのデータの長さを示す。Valueのデータは、実際のデータ値である。
【0022】
図4は、コマンドのデータ部304にデータとして格納されるコマンドの例を示す。
図4に示すように、各コマンドAPDUは、TLVデータにおけるValueとしてデータ部304に格納される。コマンド(第1のコマンド)のデータ部304に複数のコマンド(第2のコマンド)を格納する場合、データ部304には、各コマンドAPDUをValueとする複数のTLVデータが連結して格納される。また、コマンドAPDUをValueとするTLVデータは、Tagの値がコマンドであることを示す値(情報)に設定される。
【0023】
各コマンドAPDUは、図4に示すように、CLA部401、INS部402、P1部403、P2部404、Lc部405、Data部406、Le部407を有する。CLA部401およびINS部402には、コマンドの内容を示す情報が格納される。P1部403およびP2部404には、当該コマンドにおけるパラメータが格納される。Lc部405には、データの長さを示す情報が格納される。Data部406には、当該コマンドの処理に用いられるデータが格納される。
【0024】
図5は、図3に示すATTRIBコマンドに対するレスポンスの構成例を示す。
図5に示す構成例において、ATTRIBコマンドに対するレスポンスは、識別部501、データ部502、チェックコード部503を有する。識別部501には、MBLIおよびCIDなどの当該レスポンスの識別情報が格納される。データ部502は、データを格納できる領域である。ATTRIBコマンドに対するレスポンスのデータ部502はHigher Layer Responseと称する。
【0025】
本実施の形態において、データ部502には、ATTRIBコマンドのデータ部304に格納されていた各コマンドに対する処理結果を示すレスポンスデータが格納される。データ部502には、各コマンドに対するレスポンスデータが所定のデータフォーマット(例えば、1又は複数のTLV構造)で格納される。チェックコード部503は、当該レスポンス全体のデータをチェックするためのコード情報が格納される。
【0026】
次に、非接触ICカード2におけるATTRIBコマンドに対する処理について説明する。
図6は、非接触ICカード2におけるATTRIBコマンドに対する処理例を説明するためのフローチャートである。
ICカード処理装置1との通信圏内に入ると、非接触ICカード2は、ICカード処理装置1からの電波を通信部25のアンテナにより受信する(ステップS601)。非接触ICカード2は、受信した電波から生成した電源電力により起動する(ステップS602)。電源電力が供給された非接触ICカード2の制御素子21は、当該非接触ICカード2を識別(特定)するためのカード識別情報をICカード処理装置1へ送信する(ステップS603)。カード識別情報は、データメモリ22或はプログラムメモリ24に予め記憶した固定値であっても良いし、動的(例えばランダム)に生成する値であっても良い。
【0027】
カード識別情報を送信した後、非接触ICカード2は、ICカード処理装置1からのコマンド待ちの状態となる。ICカード処理装置1は、カード識別情報を取得した非接触ICカード(通信可能な非接触ICカード)から通信先とする1つの非接触ICカードを決定する。ICカード処理装置1は、コマンドにおいて通信先とする非接触ICカードのカード識別情報を指定する。
【0028】
ICカード処理装置1は、初期化及びアンチコリジョン処理を行うため、通信先の非接触ICカードのカード識別情報を指定したATTRIBコマンドを送信する。ICカード処理装置1は、ATTRIBコマンドのデータ部(Higher Layer INF)に1又は複数のコマンドAPDUを格納できる。たとえば、ICカード処理装置1は、ATTRIBコマンドの次に必要となるコマンドをHigher Layer INFに格納する。ATTRIBコマンドの次に必要となるコマンドとしては、たとえば、非接触通信をサポートしているアプリケーションリストの出力を要求するコマンドなどがありうる。
【0029】
ICカード処理装置1との通信を行う非接触ICカード2は、カード識別情報を送信した後、ICカード処理装置1からATTRIBコマンドを受信する(ステップS604)。ATTRIBコマンドを受信すると、非接触ICカード2の制御素子21は、ATTRIBコマンドのカード識別部302に格納されている識別情報と当該非接触ICカード2のカード識別情報とが一致するか否かを判断する(ステップS605)。カード識別情報が一致しないと判断した場合(ステップS605、NO)、制御素子21は、コマンド受信待ちの状態となる。
【0030】
カード識別情報が一致すると判断した場合(ステップS605、YES)、制御素子21は、受信したATTRIBコマンドのパラメータ部303に格納されているパラメータが妥当な値であるか否かを判断する(ステップS606)。受信したATTRIBコマンドのパラメータが妥当な値でないと判断された場合(ステップS606、NO)、制御素子21は、パラメータの値がエラーである旨のレスポンスを送信し(ステップS607)、コマンド受信待ちの状態となる。
【0031】
また、受信したATTRIBコマンドのパラメータが妥当な値であると判断した場合(ステップS606、YES)、制御素子21は、受信したATTRIBコマンドのデータ部304にデータがあるか否かを判断する(ステップS609)。受信したATTRIBコマンドにデータ(Higher Layer INF)がないと判断した場合(ステップS609、NO)、制御素子21は、当該ATTRIBコマンドの処理結果として正常終了した旨のレスポンスデータをICカード処理装置1へ送信し(ステップS615)、コマンド受信待ちの状態となる。
【0032】
受信したATTRIBコマンドのデータ部304にデータが存在すると判断した場合(ステップS609、YES)、制御素子21は、ATTRIBコマンドのデータ部304に存在する各データ(たとえば、TLV構造のデータ列単位の各データ)を順次取得(抽出)する(ステップS610)。1つのデータを取得すると、制御素子21は、当該データがコマンド(第2のコマンド)であるか否かを判定する(ステップS611)。たとえば、制御素子21は、データ部304に含まれる各データがコマンドであるか否かを当該データの識別情報により判定する。データ部304に格納するデータがTLVデータである場合、各TLVデータがコマンドであるか否かは、各TLVデータのTagで示すようにしても良い。この場合、制御素子21は、各データのTagの値により、各データがコマンドであるか否かを判定できる。
【0033】
ATTRIBコマンドのデータ部304から抽出したデータがコマンドでないと判定した場合(ステップS611、NO)、制御素子21は、データ部304に次のデータがあれるか否かを判断する(ステップS613)。データ部304に次のデータがあれば(ステップS613、YES)、制御素子21は、上記ステップS610へ戻り、データ部304に存在する次のデータについて、上記ステップS610〜S613の処理を行う。
【0034】
また、ATTRIBコマンドのデータ部304から抽出したデータがコマンドであると判断した場合(ステップS611、YES)、制御素子21は、当該コマンド(第2のコマンド)に応じたコマンド処理を実行する(ステップS612)。たとえば、データ部304には、当該非接触ICカードがサポートしているアプリケーションリストの出力を要求するコマンドが格納できる。このようなコマンドがデータ部304に添付されている場合、制御素子21は、当該ATTRIBコマンドの処理とともに、アプリケーションリストの選出処理も実行する。
【0035】
また、非接触ICカード2は、データ部304に含まれるコマンド(第2のコマンド)に応じたコマンド処理の結果をATTRIBコマンドのレスポンスとしてICカード処理装置1へ出力する。このため、制御素子21は、第2のコマンドに応じたコマンド処理の結果を示す情報をワーキングメモリ23などのメモリに保存する。
【0036】
データ部304の次のデータが無くなった場合、つまり、データ部304内の全データについてS610〜S612の処理を行った場合(ステップS613、NO)、制御素子21は、当該ATTRIBコマンドに対するレスポンス(ATTRIBレスポンス)におけるデータ部502に第2のコマンドに応じて実行した処理の結果をセットする(ステップS614)。各第2のコマンドに対する処理結果は、ATTRIBコマンドに添付された各第2のコマンドに対応づけた識別情報を付与したデータ(例えば、TLV構造のデータ)とする。
【0037】
第2のコマンドに対する処理結果をデータ部にセットしたATTRIBレスポンスを作成すると、制御素子21は、作成したATTRIBレスポンスをICカード処理装置1へ送信する(ステップS615)。また、ATTRIBコマンドのデータ部304にコマンドが存在しなかった場合(ステップS609、NO)、制御素子21は、データ部502を省略したATTRIBレスポンスをICカード処理装置1へ送信する(ステップS615)。
【0038】
図7(A)、(B)、(C)は、ATTRIBコマンドに対するレスポンスのデータ部502として出力するデータ(Higher Layer Response)の例を示す。図7(A)、(B)、(C)は、ATTRIBコマンドのデータ部304に格納したコマンドAPDUとしてのSELECTコマンドで、非接触カードをサポートしているアプリケーションのリストを出力するPPSE(Proximity Payment System Environment)を選択した例を示す。
【0039】
また、図8は、非接触ICカード2のデータメモリ22に3つのアプリケーション1、2、3が格納されている状態を示す。3つのアプリケーション1、2、3は、それぞれ非接触ICカードとしてアプリケーションである。図7(A)、(B)、(C)は、図8に示すようなデータメモリ22を有する非接触ICカード2に、アプリケーションリストを要求するコマンドを含むATTRIBコマンドに対するHigher Layer Responseの例を示している。
【0040】
図7(A)は、Higher Layer Responseの構成を概略的に示す。図7(A)に示す例では、Higher Layer Responseは、TLV構造のデータ列(TLVデータとも称する)である。また、図7(A)に示す例では、複数のアプリケーションのリストを出力するために、TLVデータが入れ子構造となっている。各TLVデータでは、Tagの値によりValueの意味を示す。
【0041】
図7(B)は、Higher Layer Responseの具体例を示す図である。図7(B)に示す例では、Higher Layer Response全体がTag「6F」のデータ列として定義される。図7(B)に示すTagが「6F」のHigher Layer Responseは、FCI(File Control Information) Templeteのデータである。FCI Templeteは、Tagが「84」のデータ列とTagが「A5」のデータ列を有する。さらに、Tagが「A5」のデータ列は、Tagが「BF0C」のデータを有する。図7(B)に示す例では、Tagが「BF0C」のデータは、FCI Issuer Discretionary Dataである。FCI Issuer Discretionary Dataは、図7(C)に示すデータとなっている。図7(C)では、Tagが「BF0C」のFCI Issuer Discretionary Dataとして、2つのアプリケーションがTLVデータで示されている。
【0042】
このように、ATTRIBコマンドのデータ部(Higher Layer INF)にアプリケーションリストを要求するコマンドが添付されていた場合(含まれていた場合)、ATTRIBコマンドのレスポンスにおいて、図7に示すようなHigher Layer Responseによって、当該非接触ICカードが具備しているアプリケーションリストを提示できる。
【0043】
次に、1又は複数のコマンドを添付できる初期化及び衝突回避(アンチコリジョン)処理に用いられるコマンドの他の例について説明する。
図9は、ISO14443 Type Aで用いられるSELECTコマンドの例を示す。
図9に示すSELECTコマンドは、初期化及び衝突回避(アンチコリジョン)処理に用いられるコマンドの一例である。図9に示す例において、SELECTコマンドは、定義部901、パラメータ部902、識別部903、データ部904、およびチェックコード部905を有する。ただし、現行のISO14443 Type Aにおいては、SELECTコマンドについてデータ部の規定が無い。つまり、図9のSELECTコマンドは、現行のISO14443 Type Aで規定されるSELECTコマンドにデータ部を付加した構成となっている。
【0044】
定義部901は、Cascade Level(CL)を示す。図9に示す例では、Cascade Levelは、「SEL」となっており、当該コマンドがSELECTコマンドであることを示している。なお、ISO14443 Type Aでは、「SEL」がSELECTコマンドを示す旨が規定されている。パラメータ部902は、Number of Valid Bit(NVB)を示す。識別部903は、Cascade Level n(CLn)のUnique Identifier(UID)を示す。すなわち、識別部903は、固有識別情報(UID)を示す。
【0045】
データ部904は、データを格納できる領域である。図9に示す例では、SELECTコマンドにおけるデータ部904は、Higher Layer INF(INFormation)と称するものとする。また、チェックコード部905は、当該コマンド(SELECTコマンド)全体のデータをチェックするためのコード情報(CRC A)が格納される。
【0046】
本実施の形態において、データ部904には、所定のフォーマットのデータが格納できる。データ部904には、所定のフォーマットで1又は複数のコマンド(コマンドAPDU)を格納できる。たとえば、データ部904には、各コマンドをTLVデータとして格納する。データ部904に格納される各TLVデータは、Tagの値によりValueのデータがコマンドであるか否かが判断される。
【0047】
図10は、図9に示すSELECTコマンドに対するレスポンスの構成を示す。
図10に示す構成例において、SELECTコマンドに対するレスポンスは、識別部1001、データ部1002、チェックコード部1003を有する。識別部1001には、コマンドに対する処理を示す情報が格納される。図10に示す例では、SELECTコマンドに対する処理が終了したことを示す情報(SAK:Select AcKnowledge)が格納される。なお、ISO14443 Type Aでは、「SAK」がSELECTコマンドのレスポンスである旨が規定されている。
【0048】
データ部1002は、データを格納できる領域である。データ部1002は、図9に示すSECLETコマンドのHigher Layer INFに対応するレスポンス(Higher Layer Response)である。すなわち、データ部1002は、受信したコマンドのデータ部(Higher Layer INF)904に添付された1又は複数のコマンドに対するレスポンスを含む。また、データ部1002には、各コマンドに対するレスポンスデータが所定のデータフォーマット(例えば、TLV構造)で格納される。チェックコード部1003は、当該レスポンス全体のデータをチェックするためのコード情報が格納される。
【0049】
次に、非接触ICカード2におけるSELECTコマンドに対する処理について説明する。
図11は、非接触ICカード2におけるSELECTコマンドに対する処理例を説明するためのフローチャートである。
ここでは、まず、非接触ICカード2は、ICカード処理装置1からSELECTコマンドを受信したものする(ステップS1101)。非接触ICカード2の制御素子21は、受信したコマンドにおける定義部901に格納された「SEL」という情報により、受信したコマンドが図9に示すようなSELECTコマンドであると認識する。SELECTコマンドは、たとえば、図9で示すように、Higher Layer INFとしてデータ部を有するものとする。このHigher Layer INFには、1又は複数のコマンド(第2のコマンド)が格納できる。
【0050】
SELECTコマンドを受信すると、非接触ICカード2の制御素子21は、受信したSELECTコマンドに含まれるUIDの照合を行う(ステップS1102)。UIDの照合に失敗した場合、制御素子21は、当該非接触ICカード2を次のコマンド受信待ちの状態とする。また、UIDの照合に成功した場合(ステップS1102、YES)、制御素子21は、受信したSELECTコマンドにデータ(Higher Layer INF)があるか否かを判断する(ステップS1103)。
【0051】
受信したSELECTコマンドにデータがないと判断した場合(ステップS1103、NO)、制御素子21は、当該SELECTコマンドの処理結果として正常終了した旨のレスポンスデータをICカード処理装置1へ送信し(ステップS1109)、コマンド受信待ちの状態とする。
【0052】
受信したSELECTコマンドのデータ部904にデータが存在すると判断した場合(ステップS1103、YES)、制御素子21は、SELECTコマンドのデータ部904に存在する各データ(たとえば、TLV構造のデータ列単位の各データ)を順次取得(抽出)する(ステップS1104)。SELECTコマンドのデータ部904から1つのデータを取得すると、制御素子21は、当該データがコマンド(第2のコマンド)であるか否かを判定する(ステップS1105)。たとえば、制御素子21は、データ部904に含まれる各データがコマンドであるか否かを当該データの識別情報により判定する。データ部904にTLV構造のデータを格納する場合、各データがコマンドであるか否かは、各データのTagで示すようにしても良い。この場合、制御素子21は、各データのTagの値により、各データがコマンドであるか否かを判定できる。
【0053】
SELECTコマンドのデータ部904から抽出したデータがコマンドでないと判定した場合(ステップS1105、NO)、制御素子21は、データ部904に次のデータがあれるか否かを判断する(ステップS1107)。データ部904に次のデータがあれば(ステップS1105、YES)、制御素子21は、上記ステップS1104へ戻り、データ部904に存在する次のデータについて、上記ステップS1104〜S1107の処理を行う。
【0054】
また、SELECTコマンドのデータ部904から抽出したデータがコマンドであると判断した場合(ステップS1105、YES)、制御素子21は、当該コマンド(第2のコマンド)に応じたコマンド処理を実行する(ステップS1106)。制御素子21は、データ部904に添付されたコマンド(第2のコマンド)に応じた処理結果をSELECTコマンドのレスポンス(SAK)に含めてICカード処理装置1へ出力する。このため、制御素子21は、第2のコマンドに応じた実行した処理結果を示す情報をワーキングメモリ23などのメモリに保存する。
【0055】
SELECTコマンドのデータ部904に次のデータが無くなった場合、つまり、データ部904内の全データについてS1105〜S1107の処理を行った場合(ステップS1107、NO)、制御素子21は、当該SELECTコマンドに対するレスポンスにおけるデータ部1002に第2のコマンドに応じて実行した処理の結果を示す情報をセットする(ステップS1108)。各第2のコマンドに対する処理結果は、SELECTコマンドに添付された各第2のコマンドに対応づけた識別情報を付与したデータ(例えば、TLV構造のデータ)とする。
【0056】
第2のコマンドに対する処理結果をデータ部にセットしたレスポンスを作成すると、制御素子21は、作成したレスポンスをICカード処理装置1へ送信する(ステップS1109)。また、SELECTコマンドのデータ部904にコマンドが存在しなかった場合、制御素子21は、データ部1002を省略したレスポンスをICカード処理装置1へ送信しても良い。
【0057】
図12は、ISO14443 Type Aで用いられるRATS(Request for Answer To Select)コマンドの例を示す。
図12に示すRATSコマンドは、初期化及び衝突回避(アンチコリジョン)処理に用いられるコマンドの一例である。図12に示す例において、RATSコマンドは、定義部1201、パラメータ部1202、データ部1203、およびチェックコード部1204を有する。ただし、現行のISO14443 Type Aにおいては、RATSコマンドについてデータ部の規定が無い。このため、図12に示すRATSコマンドは、現行のISO14443 Type Aで規定されるRATSコマンドにデータ部を付加した構成となっている。
【0058】
定義部1201は、Start Byteを示す。図12に示す例では、Start Byteは、「E0」となっている。パラメータ部1202は、設定すべきパラメータ(Parameter)を示す。データ部1203は、データを格納できる領域である。図12に示す例では、RATSコマンドにおけるデータ部1203は、Higher Layer INF(INFormation)と称するものとする。また、チェックコード部1204は、当該コマンド(RATSコマンド)全体のデータをチェックするためのコード情報(CRC A)が格納される。
【0059】
本実施の形態において、データ部1203には、所定のフォーマットのデータが格納できる。データ部1203には、所定のフォーマットで1又は複数のコマンド(コマンドAPDU)を格納できる。たとえば、データ部1203には、各コマンドがTLV構造のデータとして格納する。TLV構造のデータとは、Tagのデータ、Lengthのデータ、およびValueのデータが順に並べられたデータ列である。Tagは、当該データ列の識別情報を示す。Lengthは、直後に続くValueのデータの長さを示す。Valueのデータは、実際のデータ値である。データ部1203に格納されるTLVデータは、Tagによりコマンドであるか否かが判断される。
【0060】
図13は、図12に示すRATSコマンドに対するレスポンスの構成を示す。
図13に示す構成例において、RATSコマンドに対するレスポンス(ATS)は、TL 1301、T0 1302、TA(1)1303、TB(1)1304、TC(1)1305、T1 1306、…、Tk 1307を有する。T0 1302に続く、TA(1)1303からTC(1)1305は、インターフェースバイト(Interface Bytes)である。T1 1306からTk 1307までは、ヒストリカルバイト(Historical Bytes)である。
【0061】
データ部1308は、データを格納できる領域である。データ部1308は、図12に示すRATSコマンドのHigher Layer INFに対応するレスポンス(Higher Layer Response)である。すなわち、データ部1308は、受信したコマンドのデータ部(Higher Layer INF)1203に添付された1又は複数のコマンドに対するレスポンスを含む。また、データ部1308には、各コマンドに対する処理結果を示す情報が所定のデータフォーマット(例えば、TLV構造)で格納される。チェックコード部1309は、当該レスポンス全体のデータをチェックするためのコード情報が格納される。
【0062】
次に、非接触ICカード2におけるRATSコマンドに対する処理について説明する。
図14は、非接触ICカード2におけるRATSコマンドに対する処理例を説明するためのフローチャートである。
ここでは、まず、非接触ICカード2は、ICカード処理装置1からRATSコマンドを受信したものする(ステップS1401)。RATSコマンドは、たとえば、図12で示すように、Higher Layer INFとしてデータ部1203を付加できる。このHigher Layer INFには、1又は複数のコマンド(第2のコマンド)が格納できる。
【0063】
RATSコマンドを受信すると、非接触ICカード2の制御素子21は、受信したRATSコマンドのパラメータ部1202に含まれるパラメータを設定する(ステップS1402)。パラメータ部1202で指定されたパラメータを設定すると、制御素子21は、受信したRATSコマンドにデータ(Higher Layer INF)があるか否かを判断する(ステップS1403)。
【0064】
受信したRATSコマンドにデータがないと判断した場合(ステップS1403、NO)、制御素子21は、当該RATSコマンドの処理結果として正常終了した旨のレスポンスデータをICカード処理装置1へ送信し(ステップS1409)、コマンド受信待ちの状態とする。
【0065】
受信したRATSコマンドのデータ部1203にデータが存在すると判断した場合(ステップS1403、YES)、制御素子21は、RATSコマンドのデータ部1203に存在する各データ(たとえば、TLV構造のデータ列単位の各データ)を順次取得(抽出)する(ステップS1404)。RATSコマンドのデータ部1203から1つのデータを取得すると、制御素子21は、当該データがコマンド(第2のコマンド)であるか否かを判定する(ステップS1405)。たとえば、制御素子21は、データ部1203に含まれる各データがコマンドであるか否かを当該データの識別情報により判定する。データ部1203にTLV構造のデータを格納する場合、各データがコマンドであるか否かは、各データのTagで示すようにしても良い。この場合、制御素子21は、各データのTagの値により、各データがコマンドであるか否かを判定できる。
【0066】
RATSコマンドのデータ部1203から抽出したデータがコマンドでないと判定した場合(ステップS1405、NO)、制御素子21は、データ部1203に次のデータがあれるか否かを判断する(ステップS1407)。データ部1203に次のデータがあれば(ステップS1405、YES)、制御素子21は、上記ステップS1404へ戻り、データ部1203に存在する次のデータについて、上記ステップS1404〜S1407の処理を行う。
【0067】
また、RATSコマンドのデータ部1203から抽出したデータがコマンドであると判断した場合(ステップS1405、YES)、制御素子21は、当該コマンド(第2のコマンド)に応じたコマンド処理を実行する(ステップS1406)。制御素子21は、データ部1203に添付されたコマンド(第2のコマンド)に応じた処理結果をRATSコマンドのレスポンス(ATS)に含めてICカード処理装置1へ出力する。このため、制御素子21は、第2のコマンドに応じた実行した処理結果を示す情報をワーキングメモリ23などのメモリに保存する。
【0068】
RATSコマンドのデータ部1203に次のデータが無くなった場合、つまり、データ部1203内の全データについてS1405〜S1407の処理を行った場合(ステップS1407、NO)、制御素子21は、当該RATSコマンドに対するレスポンスにおけるデータ部1308に第2のコマンドに応じて実行した処理の結果を示す情報をセットする(ステップS1408)。各第2のコマンドに対する処理結果は、RATSコマンドに添付された各第2のコマンドに対応づけた識別情報を付与したデータ(例えば、TLV構造のデータ)とする。
【0069】
第2のコマンドに対する処理結果をデータ部1308にセットしたレスポンス(ATS)を作成すると、制御素子21は、作成したレスポンスをICカード処理装置1へ送信する(ステップS1409)。また、RATSコマンドのデータ部1203にコマンドが存在しなかった場合、制御素子21は、データ部1308を省略したレスポンスをICカード処理装置1へ送信しても良い。
【0070】
上記のように、本実施形態の非接触ICカードは、外部装置から第1のコマンドを受信した場合、当該第1のコマンドに応じた処理を実行するともに、前記第1のコマンドに1又は複数の第2のコマンドが含まれるか否かを判断する。非接触ICカードは、第1のコマンドに第2のコマンドが含まれる場合には、各第2のコマンドに応じた処理を実行する。非接触ICカードは、第1のコマンドに対するレスポンスのデータ部に第2のコマンドに対する処理結果を示す情報をセットして前記外部装置へ送信する。本実施形態によれば、非接触ICカードと非接触ICカード処理装置との通信回数を削減でき、非接触通信によるコマンド処理を効率的に実行することができる。
【0071】
また、上記第1のコマンドとしては、初期化・衝突回避処理のためのコマンドを適用でき、第2のコマンドとしては、初期化・衝突回避処理により通信が確立した後に実行すべきコマンドを適用できる。これより、初期化・衝突回避処理のためのコマンドで、初期化・衝突回避処理により通信が確立した後に実行すべきコマンドの送信してしまうことができ、初期化・衝突回避処理および初期化・衝突回避処理後の処理において、非接触ICカードと非接触ICカード処理装置との通信回数を削減でき、非接触通信によるコマンド処理を効率的に実行することができる。
【0072】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0073】
B…本体、M…モジュール、C…ICチップ、1…ICカード処理装置(外部装置)、2…ICカード(非接触ICカード、携帯可能電子装置)、21…制御素子、22…データメモリ、23…ワーキングメモリ、24…プログラムメモリ、25…通信部。

【特許請求の範囲】
【請求項1】
携帯可能電子装置において、
外部装置と非接触でデータ通信を行う通信手段と、
前記通信手段により前記外部装置から受信した第1のコマンドに応じた処理を実行する第1のコマンド処理手段と、
前記通信手段により前記外部装置から受信した前記第1のコマンドのデータ部に第2のコマンドが含まれるか否かを判断する判断手段と、
前記判断手段により前記第1のコマンドのデータ部に第2のコマンドが含まれると判断した場合、前記第2のコマンドに応じた処理を実行する第2のコマンド処理手段と、
前記第1のコマンド処理手段により実行した第1のコマンドの処理結果を示すレスポンスのデータ部に前記第2のコマンド処理手段で実行した第2のコマンドの処理結果をセットして前記外部装置へ送信する応答処理手段と、
を有することを特徴とする携帯可能電子装置。
【請求項2】
前記第1のコマンドは、当該携帯可能電子装置を通信先に指定した衝突回避処理のためのコマンドであり、
前記第2のコマンドは、前記第1のコマンドのデータ部に添付される、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項3】
前記第1のコマンドは、通信のパラメータを設定するためのコマンドであり、
前記第2のコマンドは、前記第1のコマンドのデータ部に添付される、
ことを特徴とする前記請求項1又は2の何れかに記載の携帯可能電子装置。
【請求項4】
ICカードであって、
外部装置と非接触でデータ通信を行う通信手段と、前記通信手段により前記外部装置から受信した第1のコマンドに応じた処理を実行する第1のコマンド処理手段と、前記通信手段により前記外部装置から受信した前記第1のコマンドのデータ部に第2のコマンドが含まれるか否かを判断する判断手段と、前記判断手段により前記第1のコマンドのデータ部に第2のコマンドが含まれると判断した場合、前記第2のコマンドに応じた処理を実行する第2のコマンド処理手段と、前記第1のコマンド処理手段により実行した第1のコマンドの処理結果を示すレスポンスのデータ部に前記第2のコマンド処理手段で実行した第2のコマンドの処理結果をセットして前記外部装置へ送信する応答処理手段とを有するモジュールと、
前記モジュールを具備する本体と、
を有することを特徴とするICカード。
【請求項5】
外部装置と非接触でデータ通信を行う携帯可能電子装置のコマンド処理方法であって、
前記外部装置から受信した第1のコマンドに応じた処理を実行し、
前記外部装置から受信した前記第1のコマンドのデータ部に第2のコマンドが含まれるか否かを判断し、
前記判断により前記第1のコマンドのデータ部に第2のコマンドが含まれると判断した場合、前記第2のコマンドに応じた処理を実行し、
前記第1のコマンドに対する処理結果を示すレスポンスのデータ部に、前記第2のコマンドに対する処理結果をセットして前記外部装置へ送信する、
ことを特徴とする携帯可能電子装置のコマンド処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2012−64048(P2012−64048A)
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願番号】特願2010−208542(P2010−208542)
【出願日】平成22年9月16日(2010.9.16)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】