以下、図を参照して本発明の実施の形態について説明する。
図1は本発明を適用した情報処理システムの一実施の形態の構成を示す。この情報処理システム1は、情報処理装置としての非接触通信デバイス11と、他の情報処理装置としての外部非接触通信デバイス12の2つの情報処理装置により構成されている。これらは相互に非接触通信を行う。例えば、NFCの仕様に基づく非接触通信が行なわれる。
ユーザは、例えばICカード、携帯電話機などで構成される非接触通信デバイス11を携帯し、店、乗り物の改札などに配置されている、例えばリーダライタなどで構成される外部非接触通信デバイス12に非接触通信デバイス11をかざすことで、非接触通信デバイス11に外部非接触通信デバイス12と非接触通信を実行させる。これにより外部非接触通信デバイス12は非接触通信デバイス11に対して、課金その他の所定の処理を実行することができる。
図2は非接触通信デバイス11の一実施の形態の構成を表している。この非接触通信デバイス11は、アンテナ31、フロントエンド(FE)32、メインコントローラ(MC)33、セキュアエレメント(SE)34−1乃至34−3を有している。なお、以下セキュアエレメント(SE)34−1乃至34−3を個々に区別する必要がない場合、単にセキュアエレメント34と記述する。他の部分についても同様とする。
アンテナ31は外部非接触通信デバイス12のアンテナ(図示せず)と電磁波を授受する。複数のセキュアエレメント34のそれぞれの識別情報を記憶し、外部非接触通信デバイス12からの識別情報の通知の要求に応じて識別情報を、複数のセキュアエレメント34に代わって外部非接触通信デバイス12に通知する通知部として機能するフロントエンド32は、端子RF−DATAに接続されているアンテナ31を介して外部非接触通信デバイス12と信号を授受する。揮発性または不揮発性のメモリ41はメインコントローラ33、セキュアエレメント34−1乃至34−3の識別情報を記憶する。
フロントエンド32の端子DATAB,DATA1,DATA2,DATA3は、それぞれライン51、52−1乃至52−3を介して、メインコントローラ33とセキュアエレメント34−1乃至34−3の端子DATAに個別に接続されている。
電源がオンされたとき、およびセキュアエレメント34が着脱されたとき、セキュアエレメント34の識別情報を収集し、フロントエンド32に記憶させる制御部として機能するメインコントローラ33は、セキュアエレメント34の識別情報を収集し、自身の識別情報と共にフロントエンド32に供給し、そのメモリ41に記憶させる。メインコントローラ33のメモリ42には識別情報として、自身の機体識別番号(IDB)とアプリケーション番号(SCB)が保持されている。
接続確認のため、メインコントローラ33の端子ST1にはライン61−1を介してセキュアエレメント34−1の端子STが接続され、端子ST2にはライン61−2を介してセキュアエレメント34−2の端子STが接続され、端子ST3にはライン61−3を介してセキュアエレメント34−3の端子STが接続されている。従って、メインコントローラ33はセキュアエレメント34の接続状態を確認することができる。
このようにメインコントローラ33の端子ST1,ST2,ST3がセキュアエレメント34−1,34−2,34−3の端子STと個別に1対1に接続されている。また、フロントエンド32の端子DATA1,DATA2,DATA3は、それぞれセキュアエレメント34−1乃至34−3の端子DATA1,DATA2,DATA3と個別に1対1に接続されている。従って、フロントエンド32の端子DATA1,DATA2,DATA3は、それぞれメインコントローラ33の端子ST1,ST2,ST3と対応している。
セキュアエレメント34−1乃至34−3は、メモリ43−1乃至43−3にそれぞれの識別情報を有し、外部非接触通信デバイス12からの要求に応じた処理を行う複数の処理部として機能する。所定のアプリケーションに基づく処理を行うセキュアエレメント34のうち、セキュアエレメント34−1は、不揮発性のメモリ43−1に識別情報として、自身の機体識別番号(ID1)とアプリケーション番号(SC1)を保持している。
同様に、セキュアエレメント34−2は、不揮発性のメモリ43−2に識別情報として、自身の機体識別番号(ID2)とアプリケーション番号(SC2)を保持しており、セキュアエレメント34−3は、不揮発性のメモリ43−3に識別情報として、自身の機体識別番号(ID3)とアプリケーション番号(SC3)を保持している。
メモリ43−1乃至43−3には、メモリ41,42と同様に、必要に応じて各種の処理を実行するコンピュータプログラムが記憶される。
フロントエンド32、メインコントローラ33、セキュアエレメント34−1乃至34−3の端子VDDには、ライン62を介して電力が供給される。メインコントローラ33、セキュアエレメント34−1乃至34−3は、アクティベートとディアクティベートの機能を有している。例えばNFC−WI(Near Field Communication Wired Interface)(ISO/IEC28361)に規定されているように、端子VDDに電力が供給されている状態で、端子DATAにパルスを入力することでアクティベートとされ、パルスを入力しないことでディアクティベートされる。
なお、非接触通信デバイス11には、少なくとも1個のセキュアエレメント34が固定されているが、任意の数のセキュアエレメント34は着脱自在とされる。
外部非接触通信デバイス12は、例えば図3に示されるように、取得部91、選択部92、設定部93、および実行部94よりなる機能的構成を有している。
取得部91は、識別情報を保持する複数の非接触通信デバイス11と、識別情報を複数の非接触通信デバイス11から取得して記憶するフロントエンド32とを有する外部非接触通信デバイス12のフロントエンド32から、識別情報を複数のセキュアエレメント34−1乃至34−3に代わってフロントエンド32から取得する。選択部92は、取得された複数の識別情報の中から、処理対象とするセキュアエレメント34の識別情報を選択する。
設定部93は、フロントエンド32と複数のセキュアエレメント34―1乃至34−3との個別の通信ラインのうち、選択された識別情報に対応するセキュアエレメント34の通信ラインを設定する。実行部94は、選択された識別情報に対応するセキュアエレメント34に所定の処理を実行させる。
次に、本情報処理システム1において使用されるコマンドのパケット構造について、図4乃至図7を参照して説明する。
図4はSE ON Request/Responseのパケット構造を表している。図4Aに示されるように、SE ON Requestには、SE No.が付加される。このSE No.は、フロントエンド32の端子DATA1,DATA2,DATA3の番号を表している。図4Bに示されるように、SE ON Responseには、状態を表すStatusが付加される。
フロントエンド32は、SE ON Requestを受信したとき、端子DATA1,DATA2,DATA3のライン52−1乃至52−3のうち、指定された端子のライン、すなわち指定されたセキュアエレメント34との通信ラインを設定し、その設定した状態を記述したSE ON Responseを返す。セキュアエレメント34は、対応する通信ラインが設定されない場合、ディアクティベート状態とされ、通信ラインが設定された場合、アクティベート状態とされる。
また、フロントエンド32は、SE ON(OFF) Requestを受信したとき、セキュアエレメント34がPoling Requestや他のコマンドに応答しないように設定する。例えば、フロントエンド32は、Poling Requestをセキュアエレメント34に転送しない。
図5はPolling Request/Responseのパケット構造を表している。図5Aに示されるように、Polling Requestには、SC,オプション、TSNが付加される。SCには、セキュアエレメント34のアプリケーション番号が記述される。このSCに記述されたアプリケーションを有するセキュアエレメント34がResponseを返す。ただし、このSCにFFFFhが記述されていた場合、Polling Requestを受信した全てのセキュアエレメント34がResponseを返す。
TSNには例えば0乃至15のうちの1つのタイムスロット番号が記述される。Polling Requestを受信したセキュアエレメント34は、ここに記述されている値以下のタイムスロット番号のタイミングでResponseを返す。例えば、ここにタイムスロット番号の最大値(15)が記述されていた場合、Polling Requestを受信したセキュアエレメント34は、0乃至15のうちの任意の値のタイムスロット番号のタイミングでResponseを返す。オプションは必要に応じて使用される。
図5Bに示されるように、Polling Responseには、ID,PAD,SCが付加される。IDには、セキュアエレメント34の機体識別番号が記述される。SCには、セキュアエレメント34のアプリケーション番号が記述される。PADには、所定のデータがパディングされる。
図6は、Store Polling Data Request/Responseのパケット構造を表している。図6Aに示されるように、Store Polling Data Requestには、識別情報の数Num、具体的な識別情報としての機体識別番号ID1,ID2,・・・,IDnと、アプリケーション番号SC1,SC2,・・・,SCnが付加される。
図6Bに示されるように、Store Polling Data Responseには、状態を表すStatusが付加される。
フロントエンド32は、Store Polling Data Requestを受信したとき、記述されている識別情報をメモリ41に記憶させ、記憶した状態を記述したStore Polling Data Responseを返す。
図7は、Get Polling Data Request/Responseのパケット構造を表している。外部非接触通信デバイス12は、フロントエンド32のメモリ41に記憶されている識別情報の読み出しを要求するとき、図7Aに示されるGet Polling Data Requestを出力する。
Get Polling Data Requestを受信したフロントエンド32は、Get Polling Data Responseを返す。Get Polling Data Responseには、図7Bに示されるように、識別情報(セキュアエレメント34)の数Num、具体的な識別情報としての機体識別番号ID1,ID2,・・・,IDnと、アプリケーション番号SC1,SC2,・・・,SCnが記述される。
Store Polling Data RequestとGet Polling Data Requestは、フロントエンド32のみが応答し、セキュアエレメント34は応答しない。
次に図8を参照して、非接触通信デバイス11がフロントエンド32のメモリ41にセキュアエレメント34の識別情報を記憶させる処理について説明する。メモリ41にセキュアエレメント34の識別情報を記憶させる処理は、非接触通信デバイス11の電源がオンされた場合、およびセキュアエレメント34が着脱された場合に実行される。
ステップS1において、メインコントローラ33はセキュアエレメント34の接続を確認する。具体的にはメインコントローラ33は、端子ST1乃至ST3に、セキュアエレメント34−1乃至34−3が接続されているかを検出する。
ステップS2においてメインコントローラ33は、検出された接続状態とフロントエンドの記憶との差分を検出する。メモリ41には、端子DATAB、DATA1,DATA2,DATA3に対応して、それぞれに接続先の識別情報を記憶している。
図9は、メモリ41に記憶されている識別情報の例を表している。この例においては、端子番号0の端子DATABに接続されているメインコントローラ33の機体識別番号がIDB、アプリケーション番号がSCBであり、端子番号1の端子DATA1に接続されているセキュアエレメント34−1の機体識別番号がID1、アプリケーション番号がSC1であり、端子番号2の端子DATA2に接続されているセキュアエレメント34−2の機体識別番号がID2、アプリケーション番号がSC2であり、端子番号3の端子DATA3に接続されているセキュアエレメント34−3の機体識別番号がID3、アプリケーション番号がSC3であるとされている。
これに対して、例えば端子番号1の端子DATA1にセキュアエレメント34が接続されていないとすると、そのときのメモリ41の記憶状態は、図10に示されるようになる。すなわち、端子番号1には、機体識別番号とアプリケーション番号が記憶されていない。
この状態で端子番号1の端子DATA1にセキュアエレメント34−1が新たに接続されたとすると、接続状態とそれまでの記憶状態との差分は、端子番号1の端子DATA1に新たなセキュアエレメント34が接続されたことである。そこで、その新たなセキュアエレメント34の識別情報をさらに記憶する処理がさらに実行されることになる。
メインコントローラ33の識別情報と少なくとも1個の固定されたセキュアエレメント34の識別情報は常に記憶されていることになるはずであるが、仮にいま、いままで端子DATA1乃至DATA3のいずれにもセキュアエレメント34が接続されておらず、新たに端子DATA2,DATA3に新たにセキュアエレメント34が接続されたとすると、端子DATA2,DATA3に新たに接続されたセキュアエレメント34の識別情報を記憶させる処理がさらに行われることになる。図8にはこの場合の処理例が示されている。
すなわち、メインコントローラ33は、端子ST2,ST3の状態を確認することで、これらの端子に新たにセキュアエレメント34が接続されたことを検出する。そしてステップS3においてメインコントローラ33はフロントエンド32に対して、SE ON Request(SE2)を出力する。
フロントエンド32は、ステップS31においてこのSE ON Request(SE2)を受信すると、通信ラインをセキュアエレメント34−2(SE2)に切り替える。すなわち、ライン52−1乃至52−3のうち、ライン52−2の通信ラインだけを有効にする。具体的にはセキュアエレメント34−2だけがアクティベートされ、他のセキュアエレメント34−1,34−3は、ディアクティベート状態のままとされる。その結果、全てのセキュアエレメント34を常にアクティベート状態にしておく場合に較べて、無駄に電力が消費されることが抑制される。そしてステップS32においフロントエンド32は、メインコントローラ33に対して、SE ON Responseを返す。
ステップS4でこのSE ON Responseを受信することで、メインコントローラ33は通信ラインがセキュアエレメント34−2用に切り替えられたことを知ることができる。そこでステップS5においてメインコントローラ33は、Polling Requestを出力する。フロントエンド32はステップS33において、このPolling Requestを端子DATABから受信すると、Polling RequestをステップS31で設定した通信ラインであるライン52−2を介してセキュアエレメント34−2に転送する。
セキュアエレメント34−2はステップS51でこのPolling Requestを受信すると、メモリ43−2に記憶されている識別情報としての機体識別番号ID2と、アプリケーション番号SC2を読み出し、ステップS52でPolling Responseとして返す。
フロントエンド32は、ステップS34でこのPolling Responseを受信すると、それをメインコントローラ33に転送する。またこのときフロントエンド32はセキュアエレメント34−2をディアクティベート状態にする。これにより消費電力を抑制することができる。メインコントローラ33はステップS6でこのPolling Responseを受信する。これによりメインコントローラ33は、端子ST2に接続されている(メインコントローラ33の端子DATA2に接続されている)セキュアエレメント34−2の識別情報を知ることができたことになる。
同様の処理が、端子ST3に接続されているセキュアエレメント34に対しても実行される。
すなわち、ステップS7においてメインコントローラ33はフロントエンド32に対して、SE ON Request(SE3)を出力する。
フロントエンド32は、ステップS35においてこのSE ON Request(SE3)を受信すると、通信ラインをセキュアエレメント34−3用に切り替える。すなわち、ライン52−1乃至52−3のうち、ライン52−3の通信ラインだけを有効にする。具体的にはセキュアエレメント34−3だけをアクティベート状態にし、他のセキュアエレメント34−1,34−2は、ディアクティベート状態のままとする。その結果、無駄に電力が消費されることが抑制される。そしてステップS36においフロントエンド32は、メインコントローラ33に対して、SE ON Responseを返す。
ステップS8でこのSE ON Responseを受信することで、メインコントローラ33は通信ラインがセキュアエレメント34−3用に切り替えられたことを知ることができる。そこでステップS9においてメインコントローラ33は、Polling Requestを出力する。フロントエンド32はステップS37において、このPolling Requestを端子DATABから受信すると、Polling RequestをステップS35で設定した通信ラインであるライン52−3を介してセキュアエレメント34−3に転送する。
セキュアエレメント34−3はステップS71でこのPolling Requestを受信すると、メモリ43−3に記憶されている識別情報としての機体識別番号ID3と、アプリケーション番号SC3を読み出し、ステップS72でPolling Responseとして返す。
フロントエンド32は、ステップS38でこのPolling Responseを受信すると、それをメインコントローラ33に転送する。またこのときフロントエンド32はセキュアエレメント34−3をディアクティベート状態にする。これにより消費電力を抑制することができる。メインコントローラ33はステップS10でこのPolling Responseを受信する。これによりメインコントローラ33は、端子ST3に接続されている(メインコントローラ33の端子DATA3に接続されている)セキュアエレメント34−3の識別情報を知ることができたことになる。
メインコントローラ33はステップS11において、Store Polling Data Requestをフロントエンド32に出力する。図6Aに示されるように、このStore Polling Data Requestには、識別情報の数と識別情報が記述されている。フロントエンド32はステップS39でこのStore Polling Data Requestを受信すると、そこに記述されている識別情報をメモリ41に記憶する。これによりメモリ41の記憶状態は、図10に示されるようになる。
フロントエンド32はステップS40において、Store Polling Data Responseを返す。メインコントローラ33はステップS12でこのStore Polling Data Responseを受信することで、メモリ41の記憶状態が更新されたことを確認することができる。
例えばメモリ41の記憶状態が図10に示されるような場合(セキュアエレメント34―2,34−3が接続されている場合)において、セキュアエレメント34−1が新たに追加された場合、図11に示されるような処理が実行される。
すなわち、ステップS101において、メインコントローラ33はセキュアエレメント34の接続を確認する。具体的にはメインコントローラ33は、端子ST1乃至ST3に、セキュアエレメント34−1乃至34−3が接続されているかを検出する。
ステップS102においてメインコントローラ33は、検出された接続状態とフロントエンドの記憶との差分を検出する。いまの場合、メモリ41の記憶状態は図10に示されるようになっている。その結果、端子ST1に新たなセキュアエレメント34が接続されたことが検出される。
ステップS103においてメインコントローラ33はフロントエンド32に対して、SE ON Request(SE1)を出力する。
フロントエンド32は、ステップS121においてこのSE ON Request(SE1)を受信すると、通信ラインをセキュアエレメント34−1に切り替える。すなわち、ライン52−1乃至52−3のうち、ライン52−1の通信ラインだけを有効にする。具体的にはセキュアエレメント34−1だけをアクティベート状態にし、他のセキュアエレメント34−2,34−3は、ディアクティベート状態のままとする。その結果、無駄に電力が消費されることが抑制される。そしてステップS122においフロントエンド32は、メインコントローラ33に対して、SE ON Responseを返す。
ステップS104でこのSE ON Responseを受信することで、メインコントローラ33は通信ラインが切り替えられたことを知ることができる。そこでステップS105においてメインコントローラ33は、Polling Requestを出力する。フロントエンド32はステップS123において、このPolling Requestを端子DATABから受信すると、Polling RequestをステップS121で設定した通信ラインであるライン52−1を介してセキュアエレメント34−1に転送する。
セキュアエレメント34−1はステップS141でこのPolling Requestを受信すると、メモリ43−1に記憶されている識別情報としての機体識別番号ID1と、アプリケーション番号SC1を読み出し、ステップS142でPolling Responseとして返す。
フロントエンド32は、ステップS124でこのPolling Responseを受信すると、それをメインコントローラ33に転送する。またこのときフロントエンド32はセキュアエレメント34−1をディアクティベート状態にする。これにより消費電力を抑制することができる。メインコントローラ33はステップS106でこのPolling Responseを受信する。これによりメインコントローラ33は、端子ST1に接続された(メインコントローラ33の端子DATA1に接続された)セキュアエレメント34−1の識別情報を知ることができたことになる。
メインコントローラ33はステップS107において、Store Polling Data Requestをフロントエンド32に出力する。このStore Polling Data Requestには、識別情報の数と識別情報が記述されている。フロントエンド32はステップS125でこのStore Polling Data Requestを受信すると、そこに記述されている識別情報をメモリ41に記憶する。これによりメモリ41の記憶状態は、図9に示されるようになる。
フロントエンド32はステップS126において、Store Polling Data Responseを返す。メインコントローラ33はステップS108でこのStore Polling Data Responseを受信することで、メモリ41の記憶状態が更新されたことを確認することができる。
例えばメモリ41の記憶状態が図9に示されるような場合(セキュアエレメント34−1,34―2,34−3が接続されている場合)において、セキュアエレメント34−2が取り外された場合、図12に示されるような処理が実行される。
すなわち、ステップS201において、メインコントローラ33はセキュアエレメント34の接続を確認する。具体的にはメインコントローラ33は、端子ST1乃至ST3に、セキュアエレメント34−1乃至34−3が接続されているかを検出する。
ステップS202においてメインコントローラ33は、検出された接続状態とフロントエンドの記憶との差分を検出する。いまの場合、メモリ41の記憶状態は図9に示されるようになっている。その結果、端子ST2に接続されていたセキュアエレメント34−2が取り外されたことが検出される。
メインコントローラ33はステップS203において、Store Polling Data Requestをフロントエンド32に出力する。このStore Polling Data Requestには、識別情報の数と識別情報が記述されている。フロントエンド32はステップS211でこのStore Polling Data Requestを受信すると、そこに記述されている識別情報をメモリ41に記憶する。これによりメモリ41の記憶状態は、図13に示されるように、端子番号2に対応する識別情報だけが記憶されていない状態になる。
フロントエンド32はステップS212において、Store Polling Data Responseを返す。メインコントローラ33はステップS204でこのStore Polling Data Responseを受信することで、メモリ41の記憶状態が更新されたことを確認することができる。
次に図14を参照して外部非接触通信デバイス12から非接触通信デバイス11にアクセスする場合の処理について説明する。
外部非接触通信デバイス12の取得部91はステップS261において、Get Polling Data Requestを出力する。フロントエンド32はステップS281においてこのGet Polling Data Requestを受信すると、メモリ41に記憶されている識別情報を読み出す。図8を参照して説明したようにメモリ41には、非接触通信デバイス11が保持するセキュアエレメント34の識別情報が予め記憶されている。フロントエンド32はステップS282において、Get Polling Data Responseを返す。このGet Polling Data Responseには、読み出された識別情報が記述されている。
なお、フロントエンド32はGet Polling Data Requestをセキュアエレメント34に転送しないので、セキュアエレメント34はGet Polling Data Requestには応答しない。すなわち、識別情報収集のPolling Data Requestに対して、フロントエンド32がセキュアエレメント34に代わって応答する。その結果、フロントエンド32とセキュアエレメント34のResponseが同時に出力されてコリジョンが発生することが防止される。それにより外部非接触通信デバイス12に対して、識別情報を迅速かつ確実に提供することができる。
また、フロントエンド32からSE ON Requestを受けるまで、セキュアエレメント34はディアクティブ状態となっている。従って、例えば外部非接触通信デバイス12からの要求に備えて複数のセキュアエレメント34の全てをアクティブ状態にしておく態様に較べて、電力消費を低減することができる。
外部非接触通信デバイス12の取得部91がステップS262において、Get Polling Data Responseを受信すると、外部非接触通信デバイス12の選択部92はステップS263において、処理対象とするセキュアエレメント34の識別情報を選択する。例えばいま処理対象とするセキュアエレメント34がセキュアエレメント34−3であるとすると、セキュアエレメント34−3の識別情報が選択される。
外部非接触通信デバイス12の設定部93はステップS264において、SE ON Request(SE3)を出力する。フロントエンド32はステップS283でこのSE ON Request(SE3)を受信すると、通信ラインをセキュアエレメント34−3用に切り替える。すなわち、ライン52−1乃至52−3のうち、端子DATA3に接続されているライン52−3だけを有効にする。具体的にはセキュアエレメント34−3だけをアクティベート状態にし、他のセキュアエレメント34−1,34−2は、ディアクティベート状態のままとする。
フロントエンド32はステップS284において、SE ON Responseを返す。外部非接触通信デバイス12の設定部93はステップS265でこのSE ON Responseを受信する。これにより外部非接触通信デバイス12は、セキュアエレメント34−3への通信ラインの切り替えを確認することができる。
外部非接触通信デバイス12の実行部94はステップS266において、セキュアエレメント34−3に所定の処理を実行させるためのコマンドを出力する。図14の実施の形態の場合、セキュアエレメント34−3からデータを読み出すため、セキュアエレメント34−3を指定して、Read Request(SE3)が出力される。フロントエンド32はステップS285でこのRead Request(SE3)を受信すると、それをセキュアエレメント34−3に転送する。
セキュアエレメント34−3は、そのコマンドが自己宛のものであるのでステップS291でこれを受信すると、指定されたデータを読み出す。セキュアエレメント34−3はステップS292において、Read Responseを返し、読み出されたデータを外部非接触通信デバイス12に出力する。フロントエンド32はステップS286でこのRead Responseを受信すると、それを外部非接触通信デバイス12に転送する。
外部非接触通信デバイス12の実行部94はステップS267においてこのRead Responseを受信する。このようにして、外部非接触通信デバイス12は非接触通信デバイス11が有する複数のセキュアエレメント34のうちの所定のものに所定の処理を実行させることができる。
以上においては、外部非接触通信デバイス12がGet Polling Data Requestを使用して識別情報を収集するようにしたが、Polling Requestを使用して識別情報を収集することもできる。この場合、フロントエンド32の識別情報収集処理は図15に示されるように行われる。
図15の処理は、基本的に図8に示した処理と同様であり、メインコントローラ33のステップS321乃至ステップS332、フロントエンド32のステップS351乃至ステップS360、セキュアエレメント34−2のステップS381,S382、セキュアエレメント34−3のステップS401,S402の処理は、図8のメインコントローラ33のステップS1乃至ステップS12、フロントエンド32のステップS31乃至ステップS40、セキュアエレメント34−2のステップS51,S52、セキュアエレメント34−3のステップS71,S72の処理と同様の処理である。そしてメインコントローラ33がステップS332に続いて、ステップS333,334の処理を実行し、それに対応してフロントエンド32がステップS361,S362の処理を実行する点が異なっている。
すなわち、メインコントローラ33はステップS332において、フロントエンド32からStore Polling Data Responseを受信し、フロントエンド32のメモリ41に識別情報が記憶されたことを確認した後、ステップS333において、SE ON(OFF) Requestを出力する。フロントエンド32はステップS361でこのSE ON(OFF) Requestを受信すると、セキュアエレメント34がPoling Requestに応答しないように設定する。具体的には、フロントエンド32は、Poling Requestをセキュアエレメント34に転送しないようにする。
ステップS362においてフロントエンド32は、SE ON(OFF) Responseを出力する。メインコントローラ33はこのSE ON(OFF) ResponseをステップS334で受信する。これにより、メインコントローラ33は、Poling Requestがセキュアエレメント34に転送されないことを確認する。
以上のようにして、Polling Requestを使用してフロントエンド32の識別情報収集処理が行われた場合、外部非接触通信デバイス12によるアクセス処理は、図16に示されるように行われる。
すなわち、ステップS431において外部非接触通信デバイス12の取得部91は、Polling Requestを出力する。このとき図5AのPolling RequestのSCには、FFFFhが記述され、TSNにはスロット番号の最大値(この実施の形態の場合、15)が記述される。そこで、フロントエンド32は、ステップS451においてこのPolling Requestを受信すると、図5BのPolling Responseを最大値の範囲内のタイムスロット番号のタイミングで返す。
フロントエンド32はPolling Responseを返すタイムスロット番号を、フロントエンド32の端子番号に対応付ける。具体的には図17に示されるように、端子DATAB,DATA1,DATA2,DATA3に対してタイムスロット番号0,1,2,3がそれぞれ対応付けられる。図17の例では、機体識別番号IDBとアプリケーション番号SCBを有するメインコントローラ33のタイムスロット番号が0とされ、機体識別番号ID2とアプリケーション番号SC2を有するセキュアエレメント34−2のタイムスロット番号が2とされ、機体識別番号ID3とアプリケーション番号SC2を有するセキュアエレメント34−3のタイムスロット番号が3とされている。
従って、フロントエンド32は、外部非接触通信デバイス12に対して、ステップS452において、番号0のタイムスロットにおいて、識別番号IDBとアプリケーション番号SCBを記述してPolling Responseを出力し、テップS453において、番号2のタイムスロットにおいて、識別番号ID2とアプリケーション番号SC2を記述してPolling Responseを出力し、テップS454において、番号3のタイムスロットにおいて、識別番号ID3とアプリケーション番号SC2を記述してPolling Responseを出力する。すなわち、図18に示されるような識別情報が外部非接触通信デバイス12に送信される。
ただし、Polling Requestに記述されるTSNが例えば1である場合、番号0,1のタイムスロットしか使用できず、番号2,3のタイムスロットは使用することができない。その結果、図19に示されるように、番号0のタイムスロットにおいて、識別番号IDBとアプリケーション番号SCBを記述してPolling Responseのみが出力される。従って、識別情報を収集する場合、TSNにはタイムスロット番号の最大値を設定することが好ましい。
なお、Polling RequestのSCに、FFFFhではなく、それ以外の所定のアプリケーション番号が指定された場合には、そのアプリケーション番号が対応する識別番号のみが出力される。例えば、識別情報がメモリ41に図17に示されるように記憶されている状態において、SCとしてSC2が指定された場合、図20に示されるように、番号2のタイムスロットのタイミングで識別番号ID2とアプリケーション番号SC2が、番号3のタイムスロットのタイミングで識別番号ID3とアプリケーション番号SC2が、それぞれPolling Responseとして出力される。
例えばメモリ41に識別情報が図13に示されるように記憶されている状態で、SCとしてSC1が指定された場合、図21に示されるように、番号1のタイムスロットのタイミングで、識別番号ID1のPolling Responseが出力される。
外部非接触通信デバイス12の取得部91は、ステップS432乃至S434において、図17の番号0,2,3のタイムスロットのPolling Responseを受信する。このタイムスロットの番号は、フロントエンド32の端子DATAB,DATA1,DATA2,DATA3に対応して重複しないように予め設定されているから、コリジョンが発生することはない。
また、いまの場合、上述したように、図15のステップS361において、セキュアエレメント34はPolling Requestに応答しないように設定されているため、Polling Requestはフロントエンド32によってのみ実行され、セキュアエレメント34によっては実行されない。すなわち、識別情報収集のPolling Requestに対して、フロントエンド32がセキュアエレメント34に代わって応答するため、フロントエンド32が発生するPolling Responseが、セキュアエレメント34が発生するPolling Responseとコリジョンすることもない。
従って、外部非接触通信デバイス12は、識別情報を迅速かつ確実に取得することが可能となる。
外部非接触通信デバイス12の選択部92はスステップS435において、処理対象とするセキュアエレメント34の識別情報を選択する。例えばいま処理対象とするセキュアエレメント34がセキュアエレメント34−3であるとすると、セキュアエレメント34−3の識別情報が選択される。
外部非接触通信デバイス12の設定部93はステップS436において、SE ON Request(SE3)を出力する。フロントエンド32はステップS455でこのSE ON Request(SE3)を受信すると、通信ラインをセキュアエレメント34−3用に切り替える。すなわち、ライン52−1乃至52−3のうち、端子DATA3に接続されているライン52−3だけを有効にする。具体的にはセキュアエレメント34−3だけをアクティベート状態にし、他のセキュアエレメント34−1,34−2は、ディアクティベート状態のままとする。
フロントエンド32はステップS456において、SE ON Responseを返す。外部非接触通信デバイス12の設定部93はステップS437でこのSE ON Responseを受信する。これにより外部非接触通信デバイス12は、セキュアエレメント34−3への通信ラインの切り替えを確認することができる。
外部非接触通信デバイス12の実行部94はステップS438において、セキュアエレメント34−3に所定の処理を実行させるためのコマンドを出力する。図16の実施の形態の場合、セキュアエレメント34−3からデータを読み出すため、セキュアエレメント34−3を指定して、Read Request(SE3)が出力される。フロントエンド32はステップS457でこのRead Request(SE3)を受信すると、それをセキュアエレメント34−3に転送する。
セキュアエレメント34−3は、そのコマンドが自己宛のものであるのでステップS471でこれを受信すると、指定されたデータを読み出す。セキュアエレメント34−3はステップS472において、Read Responseを返し、読み出されたデータを外部非接触通信デバイス12に出力する。フロントエンド32はステップS458でこのRead Responseを受信すると、それを外部非接触通信デバイス12に転送する。
外部非接触通信デバイス12の実行部94はステップS439においてこのRead Responseを受信する。このようにして、外部非接触通信デバイス12は非接触通信デバイス11が有する複数のセキュアエレメント34のうちの所定のものに所定の処理を実行させることができる。
図2の実施の形態においては、接続検出のため、メインコントローラ33に対してセキュアエレメント34が、ライン61−1乃至61−3により個別に接続されていたが、図22に示されるように、循環的に接続することもできる。すなわち図22の実施の形態の場合、メインコントローラ33の端子STOが、ライン131を介して後段のセキュアエレメント34−1の端子STIに接続され、セキュアエレメント34−1の端子STOが、ライン132を介して後段のセキュアエレメント34−2の端子STIに接続されている。以下同様に、セキュアエレメント34−2の端子STOが、ライン133を介して後段のセキュアエレメント34−3の端子STIに接続され、セキュアエレメント34−3の端子STOが、ライン134を介して後段のメインコントローラ33の端子STIに接続されている。
メインコントローラ33が端子STOからライン131を介して、図23Aに示されるコマンドを後段のセキュアエレメント34−1に出力すると、セキュアエレメント34−1は端子STIからこのコマンドを入力し、端子STOから、図23Bに示されるように、そのコマンドに自己の識別情報を付加して後段のセキュアエレメント34−2に出力する。
以下同様に、セキュアエレメント34−2は端子STIからこのコマンドを入力し、端子STOから、図23Cに示されるように、そのコマンドに自己の識別情報を付加して後段のセキュアエレメント34−3に出力する。セキュアエレメント34−3は端子STIからこのコマンドを入力し、端子STOから、図23Dに示されるように、そのコマンドに自己の識別情報を付加して後段のメインコントローラ33に出力する。
従って、メインコントローラ33は、端子STIに入力される信号から、接続されている全てのセキュアエレメント34の識別情報を検出することができる。
いま、セキュアエレメント34−2,34−3が接続され、セキュアエレメント34−1が接続されていないとする。図22の実施の形態におけるこの場合のメモリ41への識別情報の記憶処理は、図24に示されるようになる。
すなわち、ステップS501においてメインコントローラ33は、接続確認のコマンドを端子STOから出力する。このコマンドは端子STIからセキュアエレメント34−2に入力される。セキュアエレメント34−2はステップS541において接続確認コマンドを受信すると、この接続確認のコマンドにメモリ43−2に記憶されている自己の識別情報を付加して転送する。
このコマンドは端子STIからセキュアエレメント34−3に入力される。セキュアエレメント34−3はステップS561において接続確認コマンドを受信すると、この接続確認のコマンドにメモリ43−3に記憶されている自己の識別情報を付加して転送する。
この接続確認コマンドは、端子STIからメインコントローラ33に入力される。メインコントローラ33はステップS502において、入力された接続確認コマンドに付加されている識別情報を検出する。
以上のようにして、メインコントローラ33はいま接続されているのが、セキュアエレメント34−2,34−3であることを、それらの識別情報とともに知ることができる。そこで、インコントローラ33は、検出された接続状態とフロントエンドの記憶との差分を検出する。
メインコントローラ33はステップS503において、Store Polling Data Requestをフロントエンド32に出力する。図6Aに示されるように、このStore Polling Data Requestには、識別情報の数と識別情報が記述されている。フロントエンド32はステップS521でこのStore Polling Data Requestを受信すると、記述されている識別情報をメモリ41に記憶する。
フロントエンド32はステップS522において、Store Polling Data Responseを返す。メインコントローラ33はステップS504でこのStore Polling Data Responseを受信することで、メモリ41の記憶状態が更新されたことを確認することができる。
以上のようにして識別情報がフロントエンド32のメモリ41に収集された場合、その後の外部非接触通信デバイス12からのアクセス処理は、図14に示した場合と同様となる。
また、メモリ41に識別情報が記憶された後、さらに図15のステップS333,S334,S361,S362と同様の処理が行われた場合には、その後の外部非接触通信デバイス12からのアクセス処理は、図16に示した場合と同様となる。
図25は、図22の実施の形態におけるフロントエンド32、メインコントローラ33、セキュアエレメント34−1乃至34−3が、ライン51,52−1乃至52−3に代えて、バス111により接続されている場合の実施の形態を表している。その他の構成は、図22における場合と同様である。
この実施の形態の場合、メモリ41への識別情報の記憶処理は、図24を参照して説明した場合と同様に実行される。
次に図26を参照して、図25の実施の形態の、外部非接触通信デバイス12によるアクセス処理について説明する。
外部非接触通信デバイス12の取得部91はステップS611において、Get Polling Data Requestを出力する。フロントエンド32はステップS631においてこのGet Polling Data Requestを受信すると、メモリ41に記憶されている識別情報を読み出す。上述したようにメモリ41には、非接触通信デバイス11が保持するセキュアエレメント34の識別情報が予め収集され、記憶されている。フロントエンド32はステップS632において、Get Polling Data Responseを返す。このGet Polling Data Responseには、読み出された識別情報が記述されている。
なお、フロントエンド32はGet Polling Data Requestをセキュアエレメント34に転送しないので、セキュアエレメント34はGet Polling Data Requestには応答しない。その結果、フロントエンド32とセキュアエレメント34のResponseが同時に出力されてコリジョンが発生することが防止される。
外部非接触通信デバイス12の取得部91がステップS612において、Get Polling Data Responseを受信すると、外部非接触通信デバイス12の選択部92はステップS613において、処理対象とするセキュアエレメント34の識別情報を選択する。例えばいま処理対象とするセキュアエレメント34がセキュアエレメント34−3であるとすると、セキュアエレメント34−3の識別情報が選択される。
外部非接触通信デバイス12の実行部94はステップS614において、セキュアエレメント34−3に所定の処理を実行させるためのコマンドを出力する。図26の実施の形態の場合、セキュアエレメント34−3からデータを読み出すため、セキュアエレメント34−3を指定して、Read Request(SE3)が出力される。フロントエンド32はステップS633でこのRead Request(SE3)を受信すると、それをセキュアエレメント34−3に転送する。
セキュアエレメント34−3は、そのコマンドが自己宛のものであるのでステップS651でこれを受信すると、指定されたデータを読み出す。セキュアエレメント34−3はステップS652において、Read Responseを返し、読み出されたデータを外部非接触通信デバイス12に出力する。フロントエンド32はステップS634でこのRead Responseを受信すると、それを外部非接触通信デバイス12に転送する。
外部非接触通信デバイス12の実行部94はステップS615においてこのRead Responseを受信する。このようにして、外部非接触通信デバイス12は非接触通信デバイス11が有する複数のセキュアエレメント34のうちの所定のものに所定の処理を実行させることができる。
図27は、図2の実施の形態におけるフロントエンド32、メインコントローラ33、セキュアエレメント34−1乃至34−3が、ライン51,52−1乃至52−3に代えて、バス111により接続されている場合の実施の形態を表している。その他の構成は、図2における場合と同様である。
次に図27の実施の形態のフロントエンド32のメモリ41への識別情報収集、記憶処理について、図28を参照して説明する。
ステップS731においてメインコントローラ33は、Polling Requestを出力する。フロントエンド32はこのPolling Requestを受信しても応答が禁止されているので、Polling Responseを出力しない。
セキュアエレメント34−2,34−3は、ステップS791,S811でこのPolling Requestを受信すると、そこに記述されているタイムスロット番号の範囲内の任意の番号のタイミングで、Polling Responseを返す。例えば、セキュアエレメント34−2がより小さい番号を選択し、セキュアエレメント34−3がより大きい番号を選択したとすると、セキュアエレメント34−2がセキュアエレメント34−3より先にPolling Responseを返す。
セキュアエレメント34−2はステップS792において、メモリ43−2に記憶されている識別情報としての機体識別番号ID2とアプリケーション番号SC2を読み出し、Polling Responseに記述して出力する。メインコントローラ33はこのPolling ResponseをステップS732で受信する。
セキュアエレメント34−3はステップS812において、メモリ43−3に記憶されている識別情報としての機体識別番号ID3とアプリケーション番号SC3を読み出し、Polling Responseに記述して出力する。メインコントローラ33はこのPolling ResponseをステップS733で受信する。
以上のようにして、メインコントローラ33は全てのセキュアエレメント34の識別情報を取得する。
なお、セキュアエレメント34−2,34−3が、同じタイムスロット番号を選択した場合、コリジョンが発生する。この場合、メインコントローラ33は全てのセキュアエレメント34からのPolling Responseを受信することができるまで、Polling Requestを繰り返し出力する。
メインコントローラ33はステップS734において、Store Polling Data Requestをフロントエンド32に出力する。上述したように、このStore Polling Data Requestには、識別情報の数と識別情報が記述されている。フロントエンド32はステップS761でこのStore Polling Data Requestを受信すると、記述されている識別情報をメモリ41に記憶する。
フロントエンド32はステップS762において、Store Polling Data Responseを返す。メインコントローラ33はステップS735でこのStore Polling Data Responseを受信することで、メモリ41の記憶状態が更新されたことを確認することができる。
メインコントローラ33は、フロントエンド32からStore Polling Data Responseを受信し、フロントエンド32のメモリ41に識別情報が記憶されたことを確認した後、ステップS736において、SE ON(OFF) Requestを出力する。フロントエンド32はステップS763でこのSE ON(OFF) Requestを受信すると、セキュアエレメント34が外部非接触通信デバイス12からのPoling Requestに応答しないように設定する。具体的には、フロントエンド32は、外部非接触通信デバイス12からのPoling Requestをセキュアエレメント34に転送しないようにする。
その効果は、図15のステップS361における場合と同様である。すなわち、後述する図29のステップS831において、SCにFFFFhが設定された状態で外部非接触通信デバイス12からPolling Requestが出力された場合に、フロントエンド32とセキュアエレメント34の両方がPolling Responseを返すことで、コリジョンが発生することが防止される。
ステップS764においてフロントエンド32は、SE ON(OFF) Responseを出力する。メインコントローラ33はこのSE ON(OFF) ResponseをステップS737で受信する。これにより、メインコントローラ33は、外部非接触通信デバイス12からのPoling Requestがセキュアエレメント34に転送されないことを確認する。
以上のようにして、Polling Requestを使用してフロントエンド32の識別情報収集処理が行われた場合、外部非接触通信デバイス12によるアクセス処理は、図29に示されるようになる。
図29においては、図16のステップS436,S437,S455,S456に対応する処理が省略されている。図29のその他の処理は、図16における場合と同様である。すなわち、図16の外部非接触通信デバイス12のステップS431乃至S435,S438,S439、フロントエンド32のステップS451乃至S454,S457,S458、セキュアエレメント34−3のステップS471,S472は、図29の外部非接触通信デバイス12のステップS831乃至S837、フロントエンド32のステップS851乃至S856、セキュアエレメント34−3のステップS871,S872と同様の処理である。
図27の実施の形態の場合、フロントエンド32とセキュアエレメント34がバス11
1により接続されているので、通信ラインを個別のラインに切り替えることはできない。
そこで、図16のステップS436,S437,S455,S456に対応する処理が省
略されている。
図28の実施の形態の場合、メモリ41に識別情報を記憶させるために識別情報を収集する段階でコリジョンが発生するおそれがある。しかし、外部非接触通信デバイス12が識別情報を収集する段階ではコリジョンが発生しない。それにより外部非接触通信デバイス12に対して、識別情報を迅速かつ確実に提供することができる。
以上においては、本発明を非接触通信デバイス11と外部非接触通信デバイス12からなる情報処理システム1に適用した場合を例として説明したが、本発明は非接触通信デバイス11、外部非接触通信デバイス12以外の情報処理装置にも適用することができる。また、非接触通信としては、NFCの仕様に基づかない非接触通信を適用することも可能である。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスクを含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア、または、プログラムが一時的もしくは永続的に格納されるROMやハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通知部を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明
の要旨を逸脱しない範囲において種々の変更が可能である。