以下、本発明の実施の形態について図を参照して説明する。
[NFC通信システムの構成]
図1は、本発明を適用したNFC通信システムの一実施の形態の構成を表している。この実施の形態において、NFC通信システムは、NFCデバイス51と外部NFCデバイス52とにより構成されている。
NFCデバイス51は、例えばIC(Integrated Circuit)カード、携帯電話機、PDA(Personal Digital Assistant)、腕時計、ペン、パーソナルコンピュータ等の、主に携帯自在の装置で構成され、外部NFCデバイス52は、例えばリーダ/ライタで構成されるが、もちろんこれらに限定されるものではない。これらは、例えばISM(Industrial Scientific Medical)バンドの13.56MHzの周波数の搬送波を用いて、数10cm以内(接触している場合を含む)の距離で、近接通信を行う。
NFCデバイス51は、フロントエンド61、セキュアエレメント62−0,62−1、および62−2を、1つの筺体内に収容している。セキュアエレメント62−0はNFCデバイス51の製造時に予め組み込まれ、固定される。これに対してセキュアエレメント62−1,62−2は、NFCデバイス51の管理者(NFCデバイス51をユーザに提供する者)により必要に応じて着脱される。フロントエンド61とセキュアエレメント62−0,62−1,62−2とは、図1に示されるように、コード等の有線で相互に接続(スター接続)されているが、例えば、バスで接続(バス接続)されていてもよい。
フロントエンド61は、セキュアエレメント62−0,62−1,62−2(以下、これらを個々に区別する必要がない場合、単にセキュアエレメント62と称する)の動作を制御する。特に、フロントエンド61は、製造時に、セキュアエレメント62−0に対して通信のためのタイムスロットを割り当てる処理を行うとともに、起動時に、複数のセキュアエレメント62−0,62−1,62−2に対して通信のための異なるタイムスロットを割り当てる処理を行う。起動時とは、電力が供給されたとき、またはセキュアエレメント62が取り外されるか、もしくは追加されたときを含んでいる。
また、フロントエンド61は、NFCデバイス51として外部NFCデバイス52と近接通信する。すなわち、フロントエンド61は、セキュアエレメント62−0,62−1,62−2に共通に使用され、外部NFCデバイス52と近接通信する機能を有する。このため、フロントエンド61は、外部NFCデバイス52からの信号を、セキュアエレメント62−0,62−1,62−2に供給する。また、セキュアエレメント62−0,62−1,62−2のいずれか1つからの信号は残りの2つ、および、外部NFCデバイス52に供給される。なお、信号は、パケット単位で授受される。
セキュアエレメント62−0,62−1,62−2は、それぞれ異なるアプリケーションで動作し、独立した処理をセキュアに行う。各アプリケーションにはそれぞれを識別する識別情報としてのシステムコードが割り当てられている。例えば、セキュアエレメント62−0は、システムコードSC0が割り当てられている鉄道用の定期券として機能し、セキュアエレメント62−1は、システムコードSC1が割り当てられ、所定の加盟店での支払いに使用されるプリペイドカードとして機能し、セキュアエレメント62−2は、システムコードSC2が割り当てられているユーザの勤務先のID(Identification)カードとして機能する。例えば、NFCデバイス51が所定のシステムコードのアプリケーションで動作する外部NFCデバイス52に近接配置されたとき、各セキュアエレメント62のうち、そのシステムコードのアプリケーションに対応するものが外部NFCデバイス52と通信する。
また、セキュアエレメント62−0,62−1,62−2には、各セキュアエレメントを識別する識別情報としての識別番号ID0,ID1,ID2が、それぞれ割り当てられている。
各アプリケーションの管理者は、自分自身が管理するアプリケーションのシステムコードは知っているが、他の管理者が管理するアプリケーションのシステムコードは知らない。各セキュアエレメント62は、システムコードを指定することで対応するアプリケーションの他のセキュアエレメント62の存在を把握し、把握した各セキュアエレメント62のIDを個々に取得して、そのIDに基づいて、個々のセキュアエレメント62と通信する。
なお、セキュアエレメント62−0は、従来のNFCデバイスにおいて各セキュアエレメントを制御するベースバンドコントローラとして機能させることもできる。すなわち、セキュアエレメント62−0が、他のセキュアエレメント62の動作を制御するようにしてもよい。
図2は、フロントエンド61の一実施の形態の機能的構成を表している。フロントエンド61は、送信部81、受信部82、およびメッセージ処理部83を有している。
送信部81は、外部NFCデバイス52またはセキュアエレメント62に信号を送信し、受信部82は、外部NFCデバイス52またはセキュアエレメント62からの信号を受信する。メッセージ処理部83は、送受信される信号としての各種メッセージに応じた処理を行う。
図3は、セキュアエレメント62の一実施の形態の機能的構成を表している。セキュアエレメント62は、受信部101、送信部102、メッセージ処理部103、および記憶部104を有している。
受信部101は、フロントエンド61からの信号を受信する。送信部102は、フロントエンド61に信号を送信する。送信部102は、タイムスロットが割り当てられるまでは、ランダムなタイミングのタイムスロットで通信を行う機能を有する。メッセージ処理部103は、送受信される信号としての各種メッセージに応じた処理を行う
記憶部104は、各アプリケーションのシステムコードと、各セキュアエレメント62を識別する識別情報としての識別番号を不揮発状態で記憶する。また、セキュアエレメント62のうち、NFCデバイス51に製造時に予め組み込まれ、固定されるセキュアエレメント62−0は、設定されたタイムスロット番号を不揮発的に記憶する。製造後に装着されるセキュアエレメント62−1,62−2は、設定されたタイムスロット番号を揮発的に記憶する。
次に、図1のNFC通信システムにおいて使用されるメッセージのパケット構造について、図4乃至図7を参照して説明する。
図4は、Set Timeslotリクエスト/レスポンスメッセージのパケット構造を表している。Set Timeslotリクエスト/レスポンスメッセージは、セキュアエレメント62が記憶しているタイムスロット番号を設定、変更する際に使用される。図4の上側に示されるように、Set Timeslotリクエストメッセージには、Set Timeslotリクエストコード、識別番号、およびタイムスロット(タイムスロット番号)が付加される。また、図4の下側に示されるように、Set Timeslotレスポンスメッセージには、Set Timeslotレスポンスコード、識別番号、および、セキュアエレメント62の状態を表すステータスが付加される。
セキュアエレメント62は、Set Timeslotリクエストメッセージを受信し、Set Timeslotリクエストメッセージに含まれる識別番号と、自身で記憶している識別番号とが一致した場合に、タイムスロット番号を新たに設定し、Set Timeslotレスポンスメッセージを返す。
図5は、Pollingリクエスト/レスポンスメッセージのパケット構造を表している。Pollingリクエスト/レスポンスメッセージは、外部NFCデバイス52が、通信相手としてのセキュアエレメント62を捕捉する際に使用される。図5の上側に示されるように、Pollingリクエストメッセージには、Pollingリクエストコード、システムコード、リクエストコード、およびタイムスロット(タイムスロット番号)が付加される。システムコードには、セキュアエレメント62のアプリケーション番号が記述される。NFCデバイス51が外部NFCデバイス52からのPollingリクエストメッセージを受信したとき、このシステムコードに記述されたアプリケーション番号に対応するアプリケーションを有するセキュアエレメント62がPollingレスポンスメッセージを返す。ただし、このシステムコードにFFFFhが記述されていた場合、Pollingリクエストメッセージを受信した全てのセキュアエレメント62がPollingレスポンスメッセージを返す。
タイムスロットには、例えば0乃至15のうちの1つのタイムスロット番号が記述される。Pollingリクエストメッセージを受信したセキュアエレメント62は、ここに記述されている値以下のタイムスロット番号のタイミングでPollingレスポンスメッセージを返す。例えば、ここにタイムスロット番号の最大値15が記述されていた場合、Pollingリクエストメッセージを受信したセキュアエレメント62は、0乃至15のうちの任意の値のタイムスロット番号のタイミングでPollingレスポンスメッセージを返す。このとき、NFCデバイス51としては、最大16個のPollingレスポンスメッセージを返すことができる。言い換えると、タイムスロットに記述される値は、NFCデバイス51において設定されるタイムスロット番号の最大値を決定する。より具体的には、Pollingリクエストメッセージのタイムスロットに0が記述されている場合、NFCデバイス51としては、最大1個のPollingレスポンスメッセージを返すことができ、タイムスロットに1が記述されている場合、NFCデバイス51は、最大2個のPollingレスポンスメッセージを返すことができる。また、Pollingリクエストメッセージのタイムスロットに3が記述されている場合、NFCデバイス51としては、最大4個のPollingレスポンスメッセージを返すことができ、タイムスロットに7が記述されている場合、NFCデバイス51は、最大8個のPollingレスポンスメッセージを返すことができる。そして、タイムスロットに15が記述されている場合、NFCデバイス51は、最大16個のPollingレスポンスメッセージを返すことができる。なお、リクエストコードは必要に応じて使用される。
また、図5の下側に示されるように、Pollingレスポンスメッセージには、Pollingレスポンスコード、識別番号、および追加情報が付加される。識別番号には、Pollingレスポンスメッセージを返すセキュアエレメント62の識別番号が記述され、追加情報には、所定のデータが挿入される。
図6は、Readリクエスト/レスポンスメッセージのパケット構造を表している。Readリクエスト/レスポンスメッセージは、外部NFCデバイス52が、セキュアエレメント62が記憶しているデータを読み出す際に使用される。図6の上側に示されるように、Readリクエストメッセージには、Readリクエストコード、識別番号、およびパラメータが付加される。また、図6の下側に示されるように、Readレスポンスメッセージには、Readレスポンスコード、識別番号、およびパラメータが付加される。パラメータには、読み出されるデータに関するパラメータが記述される。
セキュアエレメント62は、Readリクエストメッセージを受信したとき、Readリクエストメッセージに含まれる識別番号と、自身で記憶している識別番号とが一致した場合に、要求のあったデータを読み出すとともに、Readレスポンスメッセージを送信する。
図7は、Writeリクエスト/レスポンスメッセージのパケット構造を表している。Writeリクエスト/レスポンスメッセージは、外部NFCデバイス52が、セキュアエレメント62にデータを書き込む際に使用される。図7の上側に示されるように、Writeリクエストメッセージには、Writeリクエストコード、識別番号、およびパラメータが付加される。また、図7の下側に示されるように、Writeレスポンスメッセージには、Writeレスポンスコード、識別番号、およびパラメータが付加される。パラメータには、書き込まれるデータに関するパラメータが記述される。
セキュアエレメント62は、Writeリクエストメッセージを受信したとき、Writeリクエストメッセージに含まれる識別番号と、自身で記憶している識別番号とが一致した場合に、要求のあったデータを書き込むとともに、Writeレスポンスメッセージを送信する。
[起動時のタイムスロット設定処理]
次に、図8を参照して、NFCデバイス51の起動時におけるタイムスロット設定処理について説明する。
ここで、セキュアエレメント62−0は、NFCデバイス51の製造時に予め組み込まれ、セキュアエレメント62−1,62−2は、NFCデバイス51の管理者により、順番に、NFCデバイス51に装着されたものとする。すなわち、セキュアエレメント62−0,62−1,62−2は、その順番でNFCデバイス51に装着(電気的に接続)されており、フロントエンド61は、セキュアエレメント62それぞれの識別番号とともに、セキュアエレメント62それぞれの接続が検出された順番を知っているものとする。
ステップS11において、フロントエンド61の送信部81は、Set Timeslotリクエストメッセージを、最初に接続が検出され、識別番号がID0であるセキュアエレメント62−0に対して送信する。このリクエストメッセージには、メッセージ処理部83によって、タイムスロット番号として、最小の値0が設定される。
ステップS21において、識別番号がID0であるセキュアエレメント62−0は、その受信部101でこのリクエストメッセージを受信すると、記憶部104はそのタイムスロット番号0を不揮発的に記憶する。その結果、以後、セキュアエレメント62−0は、記憶したタイムスロット番号0のタイミングで通信する。このタイムスロット番号0は最も早いタイミングの値なので、セキュアエレメント62−0は、他のセキュアエレメント62より時間的に優先して通信することができる。
ステップS22において、セキュアエレメント62−0の送信部102は、Set Timeslotレスポンスメッセージを、リクエストメッセージの送信元であるフロントエンド61に送信する。このレスポンスメッセージには、メッセージ処理部103によって、送信者の識別番号としてID0が付加されるとともに、確認のため、設定、記憶したタイムスロット番号0がステータスとして付加されている。
ステップS12において、フロントエンド61の受信部82は、このレスポンスメッセージを受信することで、タイムスロット番号がセキュアエレメント62−0に記憶されたことを確認することができる。
ステップS13において、フロントエンド61の送信部81は、Set Timeslotリクエストメッセージを、2番目に接続が検出され、識別番号がID1であるセキュアエレメント62−1に対して送信する。このリクエストメッセージには、メッセージ処理部83によって、タイムスロット番号として、最小の値0の次に早いタイミングのタイムスロット番号1が設定される。
ステップS31において、識別番号がID1であるセキュアエレメント62−1は、その受信部101でこのリクエストメッセージを受信すると、記憶部104はそのタイムスロット番号1を揮発的に記憶する。その結果、以後、セキュアエレメント62−1は、記憶したタイムスロット番号1のタイミングで通信する。
ステップS32において、セキュアエレメント62−1の送信部102は、Set Timeslotレスポンスメッセージを、リクエストメッセージの送信元であるフロントエンド61に送信する。このレスポンスメッセージには、メッセージ処理部103によって、送信者の識別番号としてID1が付加されるとともに、確認のため、設定、記憶したタイムスロット番号1がステータスとして付加されている。
ステップS14において、フロントエンド61の受信部82は、このレスポンスメッセージを受信することで、タイムスロット番号がセキュアエレメント62−1に記憶されたことを確認することができる。
ステップS15において、フロントエンド61の送信部81は、Set Timeslotリクエストメッセージを、3番目に接続が検出され、識別番号がID2であるセキュアエレメント62−2に対して送信する。このリクエストメッセージには、メッセージ処理部83によって、タイムスロット番号としてタイムスロット番号2が設定される。
ステップS41において、識別番号がID2であるセキュアエレメント62−2は、その受信部101でこのリクエストメッセージを受信すると、記憶部104はそのタイムスロット番号2を揮発的に記憶する。その結果、以後、セキュアエレメント62−2は、記憶したタイムスロット番号2のタイミングで通信する。
ステップS42において、セキュアエレメント62−2の送信部102は、Set Timeslotレスポンスメッセージを、リクエストメッセージの送信元であるフロントエンド61に送信する。このレスポンスメッセージには、メッセージ処理部103によって、送信者の識別番号としてID2が付加されるとともに、確認のため、設定、記憶したタイムスロット番号2がステータスとして付加されている。
ステップS16において、フロントエンド61の受信部82は、このレスポンスメッセージを受信することで、タイムスロット番号がセキュアエレメント62−2に記憶されたことを確認することができる。
以上のようにして、NFCデバイス51の起動時に、フロントエンド61は、セキュアエレメント62のタイムスロットを設定する。
従来のNFCデバイスにおいては、起動時に、セキュアエレメントを制御するベースバンドコントローラが、フロントエンドを介してポーリングを送信した後に、セキュアエレメントそれぞれのタイムスロットを設定するため、起動時における通信に時間がかかっていたが、以上の処理によれば、起動時に、フロントエンド61が、セキュアエレメント62に、接続が検出された順番に応じたタイミングのタイムスロットを設定するだけなので、NFCデバイス51の起動時に、より短い時間で通信を確立することが可能となる。
また、セキュアエレメントは、独立にRFフィールドを発生していないので、セキュアエレメントのうちのいずれか1つが、残りの他のセキュアエレメントがRFフィールドを発生しているかを予め検出することはできなかった。したがって、従来のNFCデバイスにおいては、セキュアエレメントのそれぞれが、外部NFCデバイスに対して同時に通信しようとすると、衝突が発生していた。
そこで、上述した処理によれば、タイムスロット番号が重ならないように割り当てられるので、衝突は発生しない。例えば、外部NFCデバイス52からポーリングがかけられた場合の処理は、図9に示されるようになる。
[外部NFCデバイスからポーリングがかけられた場合の処理]
ステップS101において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は設定可能な最大の番号Nmaxとされる。
ステップS111において、NFCデバイス51のフロントエンド61の受信部82がこのリクエストメッセージを受信すると、送信部81がこれをそのNFCデバイス51内の各部に供給する。各セキュアエレメント62−2,62−1,62−0の受信部101は、ステップS121,S131,S141において、それぞれこのリクエストをメッセージ受信する。
各セキュアエレメント62は、このリクエストメッセージに対してそれぞれ設定されたタイムスロット番号のタイミングで応答する。すなわち、ステップS122において、最も早いタイムスロット番号0が設定されているセキュアエレメント62−0の送信部102が、メッセージ処理部103によって自分自身の識別番号ID0が付加されたPollingレスポンスメッセージを返す。ステップS112において、フロントエンド61の受信部82がこのレスポンスメッセージを受信すると、送信部81がそれを外部NFCデバイス52と、各セキュアエレメント62に供給する。但し、図9において、フロントエンド61からのPollingレスポンスメッセージが各セキュアエレメント62に供給される処理は図示されない。
ステップS102において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、セキュアエレメント62−0の識別番号を知ることができる。なお、セキュアエレメント62−0,62−1,62−2の受信部101は、それぞれこのレスポンスメッセージを受信するが、リクエストメッセージを出力していないので、それを無視する。
次に、ステップS132において、次に早いタイムスロット番号1が設定されているセキュアエレメント62−1の送信部102が、メッセージ処理部103によって自分自身の識別番号ID1が付加されたPollingレスポンスメッセージを返す。ステップS113において、フロントエンド61の受信部82がこのレスポンスメッセージを受信すると、送信部81がそれを外部NFCデバイス52と、各セキュアエレメント62に供給する。但し、図9において、フロントエンド61からのPollingレスポンスメッセージが各セキュアエレメント62に供給される処理は図示されない。
ステップS103において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、セキュアエレメント62−1の識別番号を知ることができる。なお、セキュアエレメント62−0,62−1,62−2の受信部101は、それぞれこのレスポンスメッセージを受信するが、リクエストメッセージを出力していないので、それを無視する。
さらに、ステップS142において、最も遅いタイムスロット番号2が設定されているセキュアエレメント62−2の送信部102が、メッセージ処理部103によって自分自身の識別番号ID2が付加されたPollingレスポンスメッセージを返す。ステップS114において、フロントエンド61の受信部82がこのレスポンスメッセージを受信すると、送信部81がそれを外部NFCデバイス52と、各セキュアエレメント62に供給する。但し、図9において、フロントエンド61からのPollingレスポンスメッセージが各セキュアエレメント62に供給される処理は図示されない。
ステップS104において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより外部NFCデバイス52は、セキュアエレメント62−2の識別番号を知ることができる。セキュアエレメント62−0,62−1,62−2の受信部101は、それぞれこのレスポンスメッセージを受信するが、リクエストメッセージを出力していないので、それを無視する。
このように、タイムスロット番号が重ならないように設定されているので、各番号のタイムスロットに割り当てられている時間が短い場合でも、衝突が発生せず、迅速な通信が可能となる。
以上においては、外部NFCデバイス52が、NFCデバイス51に対してポーリングをかけた場合に、各セキュアエレメント62が、フロントエンド61を介してレスポンスを返す構成について説明してきた。ここで、例えば、フロントエンド61が、予め各セキュアエレメント62に対してポーリングをかけておき、そのレスポンスを記憶しておくことで、外部NFCデバイス52が、NFCデバイス51に対してポーリングをかけた場合に、フロントエンド61が記憶していたレスポンスを返すようにすることもできる。
[NFC通信システムの他の構成]
図10は、本発明を適用したNFC通信システムの他の実施の形態の構成を表している。この実施の形態において、図1のNFC通信システムを構成するものと同様の機能を備える構成については、同一名称および同一符号を付するものとし、その説明は、適宜省略するものとする。
すなわち、図10のNFC通信システムにおいて、図1のNFC通信システムと異なるのは、NFCデバイス51のフロントエンド61に代えて、フロントエンド161を設けた点である。なお、フロントエンド161とセキュアエレメント62−0,62−1,62−2とは、図10に示されるように、コード等の有線で相互に接続(スター接続)されている。
ここで、図11を参照して、フロントエンド161の構成例について説明する。なお、図11のフロントエンド161において、図2のフロントエンド61に設けられたものと同様の機能を備える構成については、同一名称および同一符号を付するものとし、その説明は、適宜省略するものとする。
すなわち、図11のフロントエンド161において、図2のフロントエンド61と異なるのは、新たに記憶部181を設けた点である。
記憶部181は、各セキュアエレメント62からのレスポンスに含まれる、各アプリケーションのシステムコードと、各セキュアエレメント62の識別番号を記憶する。
[起動時のタイムスロット設定処理]
次に、図12を参照して、図10のNFCデバイス51の起動時におけるタイムスロット設定処理について説明する。
ここでは、セキュアエレメント62−0は、NFCデバイス51の製造時に予め組み込まれているが、セキュアエレメント62−1,62−2は、NFCデバイス51の管理者により、順番に(順次)、NFCデバイス51に装着されるものとする。すなわち、最初は、NFCデバイス51にはセキュアエレメント62−0のみが組み込まれている状態であり、結果的には、セキュアエレメント62−0,62−1,62−2の順番で、各セキュアエレメント62がNFCデバイス51に装着(電気的に接続)されるものとする。
ステップS211において、フロントエンド161の送信部81は、Pollingリクエストメッセージを、既に組み込まれているセキュアエレメント62−0に対して送信する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は設定可能な最大の番号Nmaxとされる。
ステップS221において、セキュアエレメント62−0は、その受信部101でこのリクエストを受信すると、ステップS222において、送信部102が、自分自身の識別番号ID0を付加して、ランダムなタイムスロットの番号のタイミングでPollingレスポンスメッセージを返す。
ステップS212において、フロントエンド161は、その受信部82でこのレスポンスメッセージを受信すると、記憶部181は、受信部82が受信したPollingレスポンスメッセージに付加されたセキュアエレメント62−0の識別番号ID0を取得し、記憶する。このとき、メッセージ処理部83は、最小の値であるタイムスロット番号0を設定し、記憶部181は、そのタイムスロット番号0を識別番号ID0に対応付けて記憶する。
ここで、NFCデバイス51に、新たにセキュアエレメント62−1が装着されると、ステップS213において、フロントエンド161の送信部81は、Pollingリクエストメッセージを、既に組み込まれているセキュアエレメント62−0、および、新たに装着されたセキュアエレメント62−1に対して送信する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は設定可能な最大の番号Nmaxとされる。
ステップS231において、セキュアエレメント62−1は、その受信部101でこのリクエストを受信すると、ステップS232において、送信部102が、ランダムなタイムスロットの番号のタイミングで、メッセージ処理部103によって自分自身の識別番号ID1が付加されたPollingレスポンスメッセージを返す。
ステップS214において、フロントエンド161の受信部82が、このレスポンスメッセージを受信すると、記憶部181は、受信部82が受信したPollingレスポンスメッセージに付加されたセキュアエレメント62−1の識別番号ID1を取得し、記憶する。このとき、メッセージ処理部83は、最小の値0の次に早いタイミングのタイムスロット番号1を設定し、記憶部181は、そのタイムスロット番号1を識別番号ID1に対応付けて記憶する。なお、このとき、セキュアエレメント62−0からも、ランダムなタイムスロットの番号のタイミングでPollingレスポンスメッセージが返されるが、ここでは、その説明は省略する。
さらに、ここで、NFCデバイス51に、新たにセキュアエレメント62−2が装着されると、ステップS215において、フロントエンド161の送信部81は、Pollingリクエストメッセージを、既に組み込まれているセキュアエレメント62−0,62−1、および、新たに装着されたセキュアエレメント62−2に対して送信する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は設定可能な最大の番号Nmaxとされる。
ステップS241において、セキュアエレメント62−2は、その受信部101でこのリクエストを受信すると、ステップS242において、送信部102が、ランダムなタイムスロットの番号のタイミングで、メッセージ処理部103によって自分自身の識別番号ID2が付加されたPollingレスポンスメッセージを返す。
ステップS216において、フロントエンド161の受信部82が、このレスポンスメッセージを受信すると、記憶部181は、受信部82が受信したPollingレスポンスメッセージに付加されたセキュアエレメント62−2の識別番号ID2を取得し、記憶する。このとき、メッセージ処理部83は、タイムスロット番号2を設定し、記憶部181は、そのタイムスロット番号2を識別番号ID2に対応付けて記憶する。なお、このとき、セキュアエレメント62−0およびセキュアエレメント62−1からも、ランダムなタイムスロットの番号のタイミングでPollingレスポンスメッセージが返されるが、ここでは、その説明は省略する。
以上のようにして、フロントエンド161は、セキュアエレメント62の接続を検出した順番に、各セキュアエレメント62の識別番号を取得するとともに、その順番に応じたタイミングのタイムスロットを設定し、これらを対応付けて記憶する。
以上の処理によれば、起動時(セキュアエレメント62が追加された時)に、フロントエンド161が、セキュアエレメント62の接続が検出された順番にポーリングをかけ、その順番に応じたタイミングのタイムスロットを設定するだけなので、NFCデバイス51の起動時に、より短い時間で通信を確立することが可能となる。
また、以上の処理においても、タイムスロット番号が重ならないように割り当てられるので、衝突は発生しない。図12の処理の後、例えば、外部NFCデバイス52からポーリングがかけられた場合の処理は、図13に示されるようになる。
[外部NFCデバイスからポーリングがかけられた場合の処理]
ステップS301において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は設定可能な最大の番号Nmaxとされる。
ステップS311において、NFCデバイス51のフロントエンド161の受信部82がこのリクエストメッセージを受信すると、送信部81がこのリクエストメッセージに対して、設定され記憶されたタイムスロット番号のタイミングで応答する。
すなわち、ステップS312において、フロントエンド161の送信部81は、記憶部181に記憶されている、最も早いタイムスロット番号0に対応付けられている識別番号ID0が、メッセージ処理部83により付加されたPollingレスポンスメッセージを返す。ステップS302において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、最も早いタイムスロット番号0に対応するセキュアエレメント62−0の識別番号を知ることができる。
次に、ステップS313において、フロントエンド161の送信部81は、記憶部181に記憶されている、2番目に早いタイムスロット番号1に対応付けられている識別番号ID1が、メッセージ処理部83により付加されたPollingレスポンスメッセージを返す。ステップS303において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、2番目に早いタイムスロット番号1に対応するセキュアエレメント62−1の識別番号を知ることができる。
そして、ステップS314において、フロントエンド161の送信部81は、記憶部181に記憶されている、3番目に早いタイムスロット番号2に対応付けられている識別番号ID2が、メッセージ処理部83により付加されたPollingレスポンスメッセージを返す。ステップS304において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、3番目に早いタイムスロット番号2に対応するセキュアエレメント62−2の識別番号を知ることができる。
このように、タイムスロット番号が重ならないように設定されているので、各番号のタイムスロットに割り当てられている時間が短い場合でも、衝突が発生せず、迅速な通信が可能となる。
近接通信におけるPollingレスポンスメッセージのタイムスロット(送信タイミング)は、JIS(Japanese Industrial Standards) X 6319-4やISO/IEC(International Organization for Standardization/International Electrotechnical Commission)18092といった規格によって、その時間幅が1.208msec(256×64/13.56MHz)と規定されている。これは、ソフトウェアで近接通信を制御する場合には短い時間とされる。
そこで、上述したように、フロントエンド161が、予め、セキュアエレメント62それぞれからのPollingレスポンスメッセージ(タイムスロット番号に対応した識別番号)を記憶しておくことで、外部NFCデバイス52からのPollingリクエストメッセージに対して、NFCデバイス51内では、フロントエンド161のみが、Pollingレスポンスメッセージを返す。したがって、各セキュアエレメント62とフロントエンド161との間の通信路における伝送時間を考慮する必要がないので、各セキュアエレメント62について、送信タイミングを考慮した実装の負荷を軽減することができる。
なお、上述した処理においては、フロントエンド161が、予め、セキュアエレメント62それぞれからのPollingレスポンスメッセージ(タイムスロット番号に対応した識別番号)を記憶しておくようにした(図12の処理)。そこで、フロントエンド161が、外部NFCデバイス52からのPollingリクエストメッセージを各セキュアエレメント62に送信して、所定のタイミング(図12のステップS311とステップS312との間)までにセキュアエレメント62それぞれからのPollingレスポンスメッセージを受信し、記憶してから、外部NFCデバイス52に対して、Pollingレスポンスメッセージを送信するようにしてもよい。このとき、セキュアエレメント62それぞれからフロントエンド161へは、ランダムなタイムスロットでPollingレスポンスメッセージが送信されるが、フロントエンド161と各セキュアエレメント62とはスター接続で接続されているため、セキュアエレメント62同士のPollingレスポンスメッセージが衝突することはない。
以上においては、外部NFCデバイス52からポーリングがかけられる場合、外部NFCデバイス52から出力されるPollingリクエストメッセージのタイムスロット番号は、設定可能な最大の番号Nmaxとされていた。
ここで、例えば、Pollingリクエストメッセージのタイムスロット番号が0であった場合、NFCデバイス51としては、1個のPollingレスポンスメッセージ(最も早いタイムスロット番号0に対応するPollingレスポンスメッセージ)しか返すことができない。したがって、外部NFCデバイス52は、そのレスポンスに対応するセキュアエレメント62(例えば、タイムスロット番号0に対応するセキュアエレメント62−0)の識別番号しか知ることができない。
すなわち、外部NFCデバイス52から送信されてくるPollingリクエストメッセージのタイムスロット番号が、NFCデバイス51に収容されているセキュアエレメント62の数よりも少ない場合、外部NFCデバイス52は、NFCデバイス51に収容されている全てのセキュアエレメント62を検出することができない。
そこで、外部NFCデバイス52から送信されてくるPollingリクエストメッセージのタイムスロット番号が、NFCデバイス51に収容されているセキュアエレメント62の数より少ない場合でも、後述するように、NFCデバイス51が、各セキュアエレメント62に割り当てられているタイムスロットを順次変更することで、外部NFCデバイス52が、NFCデバイス51に収容されている全てのセキュアエレメント62を検出することができるようになる。
[外部NFCデバイスからポーリングがかけられた場合にタイムスロットを順次変更する処理]
ここで、図14を参照して、外部NFCデバイス52からポーリングがかけられた場合に、NFCデバイス51が、各セキュアエレメント62に割り当てられているタイムスロットを順次変更する処理について説明する。
ステップS321において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は3とされる。
ステップS351において、NFCデバイス51のフロントエンド161の受信部82がこのリクエストメッセージを受信すると、送信部81がこのリクエストメッセージに対して、設定され記憶されたタイムスロット番号のタイミングで応答する。
図14のステップS322乃至S324,S352乃至S354の処理は、図13のステップS302乃至S304,S312乃至S314の処理と同一であるので、その説明は省略する。
ステップS325において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は3とされる。
ステップS355において、NFCデバイス51のフロントエンド161の受信部82がこのリクエストメッセージを再び受信すると、メッセージ処理部83がタイムスロット番号と識別番号との対応付け(組み合わせ)を変更し、送信部81がこのリクエストメッセージに対して、識別番号との対応付けが変更されたタイムスロット番号のタイミングで応答する。
すなわち、ステップS356において、フロントエンド161のメッセージ処理部83は、記憶部181に記憶されているタイムスロット番号と識別番号との対応付けを変更し、改めて記憶部181に記憶させる。より具体的には、メッセージ処理部83は、最も早いタイムスロット番号0に対応付けられている識別番号ID0を、識別番号ID1にし、2番目に早いタイムスロット番号1に対応付けられている識別番号ID1を、識別番号ID2にし、3番目に早いタイムスロット番号2に対応付けられている識別番号ID2を、識別番号ID0にする。
ステップS357において、フロントエンド161の送信部81は、メッセージ処理部83によって、最も早いタイムスロット番号0に対応付けが変更された識別番号ID1が付加されたPollingレスポンスメッセージを返す。ステップS326において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、最も早いタイムスロット番号0に対応するセキュアエレメント62−1の識別番号を知ることができる。
次に、ステップS358において、フロントエンド161の送信部81は、メッセージ処理部83によって、2番目に早いタイムスロット番号1に対応付けが変更された識別番号ID2が付加されたPollingレスポンスメッセージを返す。ステップS327において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、2番目に早いタイムスロット番号1に対応するセキュアエレメント62−2の識別番号を知ることができる。
そして、ステップS359において、フロントエンド161の送信部81は、メッセージ処理部83によって、3番目に早いタイムスロット番号2に対応付けが変更された識別番号ID0が付加されたPollingレスポンスメッセージを返す。ステップS328において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、3番目に早いタイムスロット番号2に対応するセキュアエレメント62−0の識別番号を知ることができる。
ステップS329において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は3とされる。
ステップS360において、NFCデバイス51のフロントエンド161の受信部82がこのリクエストメッセージを再び受信すると、メッセージ処理部83がタイムスロット番号と識別番号との対応付け(組み合わせ)を変更し、送信部81がこのリクエストメッセージに対して、識別番号との対応付けが変更されたタイムスロット番号のタイミングで応答する。
すなわち、ステップS361において、フロントエンド161のメッセージ処理部83は、記憶部181に記憶されているタイムスロット番号と識別番号との対応付けを変更し、改めて記憶部181に記憶させる。より具体的には、メッセージ処理部83は、最も早いタイムスロット番号0に対応付けられている識別番号ID1を、識別番号ID2にし、2番目に早いタイムスロット番号1に対応付けられている識別番号ID2を、識別番号ID0にし、3番目に早いタイムスロット番号2に対応付けられている識別番号ID0を、識別番号ID1にする。
ステップS362において、フロントエンド161の送信部81は、メッセージ処理部83によって、最も早いタイムスロット番号0に対応付けが変更された識別番号ID2が付加されたPollingレスポンスメッセージを返す。ステップS330において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、最も早いタイムスロット番号0に対応するセキュアエレメント62−2の識別番号を知ることができる。
次に、ステップS363において、フロントエンド161の送信部81は、メッセージ処理部83によって、2番目に早いタイムスロット番号1に対応付けが変更された識別番号ID0が付加されたPollingレスポンスメッセージを返す。ステップS331において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、2番目に早いタイムスロット番号1に対応するセキュアエレメント62−0の識別番号を知ることができる。
そして、ステップS364において、フロントエンド161の送信部81は、メッセージ処理部83によって、3番目に早いタイムスロット番号2に対応付けが変更された識別番号ID1が付加されたPollingレスポンスメッセージを返す。ステップS332において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、3番目に早いタイムスロット番号2に対応するセキュアエレメント62−1の識別番号を知ることができる。
さらに、ステップS332の後に、外部NFCデバイス52から、NFCデバイス51に対してPollingリクエストメッセージが出力された場合には、フロントエンド161は、ステップS352乃至S354と同一のタイムスロット番号で、各セキュアエレメントに対応するPollingレスポンスメッセージを送信する。すなわち、Pollingリクエストメッセージが出力される毎に、図14の処理が繰り返される。
以上のように、フロントエンド161は、外部NFCデバイス52からPollingリクエストメッセージを受信する毎に、タイムスロット番号と識別番号との対応付けを繰り返し変更(回転)させる。なお、図14の処理においては、外部NFCデバイス52からPollingリクエストメッセージのタイムスロットに記載されているタイムスロット番号は3であったので、NFCデバイス51は、最大4個のPollingレスポンスメッセージを返すことができる。したがって、外部NFCデバイス52は、NFCデバイス51に収容されている全てのセキュアエレメント62−0,62−1,62−2を検出することができる。
以上においては、外部NFCデバイス52からPollingリクエストメッセージのタイムスロットに記載されているタイムスロット番号を3としたが、以下においては、Pollingリクエストメッセージのタイムスロットに記載されているタイムスロット番号を0とした場合(外部NFCデバイス52が、1個のPollingレスポンスメッセージしか要求していない場合)の処理について、図15を参照して説明する。
ステップS381において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は0とされる。
ステップS391において、NFCデバイス51のフロントエンド161の受信部82がこのリクエストメッセージを受信すると、送信部81がこのリクエストメッセージに対して、設定され記憶されたタイムスロット番号のタイミングで応答する。
すなわち、ステップS392において、フロントエンド161の送信部81は、記憶部181に記憶されている、最も早いタイムスロット番号0に対応付けられている識別番号ID0が、メッセージ処理部83により付加されたPollingレスポンスメッセージを返す。ステップS382において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、最も早いタイムスロット番号0に対応するセキュアエレメント62−0の識別番号を知ることができる。
ただし、外部NFCデバイス52からのPollingリクエストメッセージのタイムスロットは0であるので、フロントエンド161は、これ以上Pollingレスポンスメッセージを返さない。すなわち、このとき、2番目に早いタイムスロット番号1に対応付けられている識別番号ID1が付加されたPollingレスポンスメッセージ、および、3番目に早いタイムスロット番号2に対応付けられている識別番号ID2が付加されたPollingレスポンスメッセージは、外部NFCデバイス52に送信されない。
ステップS383において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は0とされる。
ステップS393において、NFCデバイス51のフロントエンド161の受信部82がこのリクエストメッセージを再び受信すると、メッセージ処理部83がタイムスロット番号と識別番号との対応付け(組み合わせ)を変更し、送信部81がこのリクエストメッセージに対して、識別番号との対応付けが変更されたタイムスロット番号のタイミングで応答する。
すなわち、ステップS394において、フロントエンド161のメッセージ処理部83は、記憶部181に記憶されているタイムスロット番号と、タイムスロット番号に対応付けられている識別番号との対応付けを変更し、改めて記憶部181に記憶させる。より具体的には、メッセージ処理部83は、最も早いタイムスロット番号0に対応付けられている識別番号ID0を、識別番号ID1にし、2番目に早いタイムスロット番号1に対応付けられている識別番号ID1を、識別番号ID2にし、3番目に早いタイムスロット番号2に対応付けられている識別番号ID2を、識別番号ID0にする。
ステップS395において、フロントエンド161の送信部81は、メッセージ処理部83によって、最も早いタイムスロット番号0に対応付けが変更された識別番号ID1が付加されたPollingレスポンスメッセージを返す。ステップS384において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、最も早いタイムスロット番号0に対応するセキュアエレメント62−1の識別番号を知ることができる。
ただし、外部NFCデバイス52からのPollingリクエストメッセージのタイムスロットは0であるので、フロントエンド161は、これ以上Pollingレスポンスメッセージを返さない。すなわち、このとき、2番目に早いタイムスロット番号1に対応付けられている識別番号ID2が付加されたPollingレスポンスメッセージ、および、3番目に早いタイムスロット番号2に対応付けられている識別番号ID0が付加されたPollingレスポンスメッセージは、外部NFCデバイス52に送信されない。
ステップS385において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は0とされる。
ステップS396において、NFCデバイス51のフロントエンド161の受信部82がこのリクエストメッセージを再び受信すると、メッセージ処理部83がタイムスロット番号と識別番号との対応付け(組み合わせ)を変更し、送信部81がこのリクエストメッセージに対して、識別番号との対応付けが変更されたタイムスロット番号のタイミングで応答する。
すなわち、ステップS397において、フロントエンド161のメッセージ処理部83は、記憶部181に記憶されているタイムスロット番号と、タイムスロット番号に対応付けられている識別番号との対応付けを変更し、改めて記憶部181に記憶させる。より具体的には、メッセージ処理部83は、最も早いタイムスロット番号0に対応付けられている識別番号ID1を、識別番号ID2にし、2番目に早いタイムスロット番号1に対応付けられている識別番号ID2を、識別番号ID0にし、3番目に早いタイムスロット番号2に対応付けられている識別番号ID0を、識別番号ID1にする。
ステップS398において、フロントエンド161の送信部81は、メッセージ処理部83によって、最も早いタイムスロット番号0に対応付けが変更された識別番号ID2が付加されたPollingレスポンスメッセージを返す。ステップS386において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、最も早いタイムスロット番号0に対応するセキュアエレメント62−2の識別番号を知ることができる。
ただし、外部NFCデバイス52からのPollingリクエストメッセージのタイムスロットは0であるので、フロントエンド161は、これ以上Pollingレスポンスメッセージを返さない。すなわち、このとき、2番目に早いタイムスロット番号1に対応付けられている識別番号ID0が付加されたPollingレスポンスメッセージ、および、3番目に早いタイムスロット番号2に対応付けられている識別番号ID1が付加されたPollingレスポンスメッセージは、外部NFCデバイス52に送信されない。
以上のように、外部NFCデバイス52からPollingリクエストメッセージのタイムスロットに記載されているタイムスロット番号が0であっても、フロントエンド161は、外部NFCデバイス52からPollingリクエストメッセージを受信する毎に、タイムスロット番号と識別番号との対応付けを繰り返し変更(回転)させるので、外部NFCデバイス52は、NFCデバイス51に収容されている全てのセキュアエレメント62−0,62−1,62−2を検出することができる。
このように、外部NFCデバイス52から送信されてくるPollingリクエストメッセージのタイムスロット番号が、NFCデバイス51に収容されているセキュアエレメント62の数よりも少ない場合でも、NFCデバイス51が、各セキュアエレメント62に割り当てられているタイムスロットを順次変更することで、外部NFCデバイス52が、NFCデバイス51に収容されている全てのセキュアエレメント62を検出することが可能となる。
以上においては、フロントエンド161が、セキュアエレメント62それぞれの識別番号を記憶し、タイムスロットを設定(および変更)するようにしたが、一部のセキュアエレメント62のみの識別番号を記憶し、そのタイムスロットを設定するようにしてもよい。
[起動時のタイムスロット設定処理]
ここで、図16を参照して、一部のセキュアエレメント62のみの識別番号を記憶し、タイムスロットを設定するようにしたNFCデバイス51の、起動時におけるタイムスロット設定処理について説明する。
ここでは、セキュアエレメント62−0は、NFCデバイス51の製造時に予め組み込まれているが、セキュアエレメント62−1,62−2は、NFCデバイス51の管理者により、順番に(順次)、NFCデバイス51に装着されるものとする。
例えば、NFCデバイス51の製造時、ステップS421において、セキュアエレメント62−0の送信部102は、自分自身の識別番号ID0を、フロントエンド161に通知する。
ステップS411において、フロントエンド161は、その受信部82でセキュアエレメント62−0の識別番号ID0を受信すると、記憶部181は、受信部82が受信したセキュアエレメント62−0の識別番号ID0を記憶する。このとき、メッセージ処理部83は、最小の値であるタイムスロット番号0を設定し、記憶部181は、そのタイムスロット番号0を識別番号ID0に対応付けて記憶する。
以下、セキュアエレメント62−1,62−2が、NFCデバイス51の管理者により、順番に、NFCデバイス51に装着されたものとして説明する。すなわち、セキュアエレメント62−1,62−2は、その順番でNFCデバイス51に装着(電気的に接続)され、フロントエンド161は、セキュアエレメント62−1,62−2それぞれの識別番号とともに、セキュアエレメント62−1,62−2それぞれの接続が検出された順番を知っているものとする。
ステップS412において、フロントエンド161の送信部81は、Set Timeslotリクエストメッセージを、セキュアエレメント62−0を除いて最初に接続が検出され、識別番号がID1であるセキュアエレメント62−1に対して送信する。このリクエストメッセージには、メッセージ処理部83によって、タイムスロット番号として、最小の値0の次に早いタイミングのタイムスロット番号1が設定される。
ステップS431において、識別番号がID1であるセキュアエレメント62−1は、その受信部101でこのリクエストメッセージを受信すると、記憶部104はそのタイムスロット番号1を揮発的に記憶する。その結果、以後、セキュアエレメント62−1は、記憶したタイムスロット番号1のタイミングで通信する。
ステップS432において、セキュアエレメント62−1の送信部102は、Set Timeslotレスポンスメッセージを、リクエストの送信元であるフロントエンド161に送信する。このレスポンスメッセージには、メッセージ処理部103によって、送信者の識別番号としてID1が付加されるとともに、確認のため、設定、記憶したタイムスロット番号1がステータスとして付加されている。
ステップS413において、フロントエンド161の受信部82は、このレスポンスメッセージを受信することで、タイムスロット番号がセキュアエレメント62−1に記憶されたことを確認することができる。
ステップS414において、フロントエンド161の送信部81は、Set Timeslotリクエストメッセージを、セキュアエレメント62−0を除いて2番目に接続が検出され、識別番号がID2であるセキュアエレメント62−2に対して送信する。このリクエストメッセージには、メッセージ処理部83によって、タイムスロット番号としてタイムスロット番号2が設定される。
ステップS441において、識別番号がID2であるセキュアエレメント62−2は、その受信部101でこのリクエストメッセージを受信すると、記憶部104はそのタイムスロット番号2を揮発的に記憶する。その結果、以後、セキュアエレメント62−2は、記憶したタイムスロット番号2のタイミングで通信する。
ステップS442において、セキュアエレメント62−2の送信部102は、Set Timeslotレスポンスメッセージを、リクエストの送信元であるフロントエンド161に送信する。このレスポンスメッセージには、メッセージ処理部103によって、送信者の識別番号としてID2が付加されるとともに、確認のため、設定、記憶したタイムスロット番号2がステータスとして付加されている。
ステップS415において、フロントエンド161の受信部82は、このレスポンスメッセージを受信することで、タイムスロット番号がセキュアエレメント62−2に記憶されたことを確認することができる。
以上のようにして、NFCデバイス51の起動時に、フロントエンド161は、セキュアエレメント62のタイムスロットを設定する。
以上の処理によれば、起動時に、フロントエンド161が、セキュアエレメント62に、接続が検出された順番に応じたタイミングのタイムスロットを設定するだけなので、NFCデバイス51の起動時に、より短い時間で通信を確立することが可能となる。
また、以上の処理においても、タイムスロット番号が重ならないように割り当てられるので、衝突は発生しない。図16の処理の後、例えば、外部NFCデバイス52からポーリングがかけられた場合の処理は、図17に示されるようになる。
[外部NFCデバイスからポーリングがかけられた場合の処理]
ステップS501において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は設定可能な最大の番号Nmaxとされる。
ステップS511において、NFCデバイス51のフロントエンド161の受信部82は、このリクエストメッセージを受信すると、メッセージ処理部83が通信先のシステムコードをSC1およびSC2に変更し、送信部81がこれをセキュアエレメント62−1,62−2に供給する。セキュアエレメント62−1,62−2の受信部101は、ステップS531,S541において、それぞれこのリクエストメッセージを受信する。
フロントエンド161、および、セキュアエレメント62−1,62−2は、このリクエストメッセージを受信すると、このリクエストメッセージに対してそれぞれ設定されたタイムスロット番号のタイミングで応答する。
すなわち、ステップS512において、フロントエンド161の送信部81は、記憶部181に記憶されている、最も早いタイムスロット番号0に対応付けられている識別番号ID0が、メッセージ処理部83により付加されたPollingレスポンスメッセージを返す。ステップS502において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、最も早いタイムスロット番号0に対応するセキュアエレメント62−0の識別番号を知ることができる。
次に、ステップS532において、次に早いタイムスロット番号1が設定されているセキュアエレメント62−1の送信部102が、メッセージ処理部103によって自分自身の識別番号ID1が付加されたPollingレスポンスメッセージを返す。ステップS513において、フロントエンド161の受信部82がこのレスポンスメッセージを受信すると、送信部81がそれを外部NFCデバイス52と、各セキュアエレメント62に供給する。但し、図17において、フロントエンド161からのPollingレスポンスメッセージが各セキュアエレメント62に供給される処理は図示されない。
ステップS503において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、セキュアエレメント62−1の識別番号を知ることができる。なお、セキュアエレメント62−0,62−1,62−2は、それぞれこのレスポンスメッセージを受信するが、リクエストメッセージを出力していないので、それを無視する。
さらに、ステップS542において、最も遅いタイムスロット番号2が設定されているセキュアエレメント62−2の送信部102が、メッセージ処理部103によって自分自身の識別番号ID2が付加されたPollingレスポンスメッセージを返す。ステップS514において、フロントエンド161の受信部82がこのレスポンスメッセージを受信すると、送信部81がそれを外部NFCデバイス52と、各セキュアエレメント62に供給する。但し、図17において、フロントエンド161からのPollingレスポンスメッセージが各セキュアエレメント62に供給される処理は図示されない。
ステップS504において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより外部NFCデバイス52は、セキュアエレメント62−2の識別番号を知ることができる。なお、セキュアエレメント62−0,62−1,62−2は、それぞれこのレスポンスメッセージを受信するが、リクエストメッセージを出力していないので、それを無視する。
このように、タイムスロット番号が重ならないように設定されているので、各番号のタイムスロットに割り当てられている時間が短い場合でも、衝突が発生せず、迅速な通信が可能となる。
以上においては、セキュアエレメント62−0のタイムスロットが、フロントエンド161によって設定されるようにしたが、NFCデバイス51の製造時等、予め指定されていてもよい。
[起動時のタイムスロット設定処理]
ここで、図18を参照して、一部のセキュアエレメント62のタイムスロットが予め指定されているNFCデバイス51の、起動時におけるタイムスロット設定処理について説明する。
ここでは、セキュアエレメント62−0は、NFCデバイス51の製造時に予め組み込まれているが、セキュアエレメント62−1,62−2は、NFCデバイス51の管理者により、順番に(順次)、NFCデバイス51に装着されるものとする。また、セキュアエレメント62−0がNFCデバイス51の製造時に組み込まれる際に、その記憶部104には、タイムスロット番号2が設定(記憶)されているものとする。
例えば、NFCデバイス51の製造時、ステップS621において、セキュアエレメント62−0の送信部102は、自分自身の識別番号ID0とともに、タイムスロット番号2を、フロントエンド161に通知する。
ステップS611において、フロントエンド161は、その受信部82でセキュアエレメント62−0の識別番号ID0およびタイムスロット番号2を受信すると、記憶部181は、受信部82が受信した識別番号ID0およびタイムスロット番号2を記憶する。
以下、セキュアエレメント62−1,62−2が、NFCデバイス51の管理者により、順番に、NFCデバイス51に装着されたものとして説明する。すなわち、セキュアエレメント62−1,62−2は、その順番でNFCデバイス51に装着(電気的に接続)され、フロントエンド161は、セキュアエレメント62−1,62−2それぞれの識別番号とともに、セキュアエレメント62−1,62−2それぞれの接続が検出された順番を知っているものとする。
ステップS612において、フロントエンド161の送信部81は、Set Timeslotリクエストメッセージを、セキュアエレメント62−0を除いて最初に接続が検出され、識別番号がID1であるセキュアエレメント62−1に対して送信する。このリクエストメッセージには、メッセージ処理部83によって、タイムスロット番号として、最小の値0が設定される。
ステップS631において、識別番号がID1であるセキュアエレメント62−1は、その受信部101でこのリクエストメッセージを受信すると、記憶部104はそのタイムスロット番号0を揮発的に記憶する。その結果、以後、セキュアエレメント62−1は、記憶したタイムスロット番号0のタイミングで通信する。このタイムスロット番号0は最も早いタイミングの値なので、セキュアエレメント62−1は、他のセキュアエレメント62より時間的に優先して通信することができる。
ステップS632において、セキュアエレメント62−1の送信部102は、Set Timeslotレスポンスメッセージを、リクエストメッセージの送信元であるフロントエンド161に送信する。このレスポンスメッセージには、メッセージ処理部103によって、送信者の識別番号としてID1が付加されるとともに、確認のため、設定、記憶したタイムスロット番号0がステータスとして付加されている。
ステップS613において、フロントエンド161の受信部82は、このレスポンスメッセージを受信することで、タイムスロット番号がセキュアエレメント62−1に記憶されたことを確認することができる。
ステップS614において、フロントエンド161の送信部81は、Set Timeslotリクエストメッセージを、セキュアエレメント62−0を除いて2番目に接続が検出され、識別番号がID2であるセキュアエレメント62−2に対して送信する。このリクエストメッセージには、メッセージ処理部83によって、タイムスロット番号として、最小の値0の次に早いタイミングのタイムスロット番号1が設定される。
ステップS641において、識別番号がID2であるセキュアエレメント62−2は、その受信部101でこのリクエストを受信すると、記憶部104はそのタイムスロット番号1を揮発的に記憶する。その結果、以後、セキュアエレメント62−2は、記憶したタイムスロット番号1のタイミングで通信する。
ステップS642において、セキュアエレメント62−2の送信部102は、Set Timeslotレスポンスメッセージを、リクエストの送信元であるフロントエンド161に送信する。このレスポンスメッセージには、メッセージ処理部103によって、送信者の識別番号としてID2が付加されるとともに、確認のため、設定、記憶したタイムスロット番号1がステータスとして付加されている。
ステップS615において、フロントエンド161の受信部82は、このレスポンスメッセージを受信することで、タイムスロット番号がセキュアエレメント62−2に記憶されたことを確認することができる。
以上のようにして、NFCデバイス51の起動時に、フロントエンド161は、セキュアエレメント62のタイムスロットを設定する。
以上の処理によれば、起動時に、フロントエンド161が、セキュアエレメント62に、接続が検出された順番に応じたタイミングのタイムスロットを設定するだけなので、NFCデバイス51の起動時に、より短い時間で通信を確立することが可能となる。
また、以上の処理においても、タイムスロット番号が重ならないように割り当てられるので、衝突は発生しない。図18の処理の後、例えば、外部NFCデバイス52からポーリングがかけられた場合の処理は、図19に示されるようになる。
[外部NFCデバイスからポーリングがかけられた場合の処理]
ステップS701において、外部NFCデバイス52は、NFCデバイス51に対してPollingリクエストメッセージを出力する。このとき通信先のシステムコードはFFFFhとされ、タイムスロット番号は設定可能な最大の番号Nmaxとされる。
ステップS711において、NFCデバイス51のフロントエンド161の受信部82は、このリクエストメッセージを受信すると、メッセージ処理部83が通信先のシステムコードをSC1およびSC2に変更し、送信部81がこれをセキュアエレメント62−1,62−2に供給する。セキュアエレメント62−1,62−2の受信部101は、ステップS731,S741において、それぞれこのリクエストメッセージを受信する。
フロントエンド161、および、セキュアエレメント62−1,62−2は、このリクエストメッセージを受信すると、このリクエストメッセージに対してそれぞれ設定されたタイムスロット番号のタイミングで応答する。
すなわち、ステップS732において、最も早いタイムスロット番号0が設定されているセキュアエレメント62−1の送信部102が、メッセージ処理部103によって自分自身の識別番号ID1が付加されたPollingレスポンスメッセージを返す。ステップS712において、フロントエンド161の受信部82がこのレスポンスメッセージを受信すると、送信部81がそれを外部NFCデバイス52と、各セキュアエレメント62に供給する。但し、図19において、フロントエンド161からのPollingレスポンスメッセージが各セキュアエレメント62に供給される処理は図示されない。
ステップS702において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、セキュアエレメント62−1の識別番号を知ることができる。なお、セキュアエレメント62−0,62−1,62−2は、それぞれこのレスポンスメッセージを受信するが、リクエストメッセージを出力していないので、それを無視する。
次に、ステップS742において、次に早いタイムスロット番号1が設定されているセキュアエレメント62−2の送信部102が、メッセージ処理部103によって自分自身の識別番号ID2が付加されたPollingレスポンスメッセージを返す。ステップS713において、フロントエンド161の受信部82がこのレスポンスメッセージを受信すると、送信部81がそれを外部NFCデバイス52と、各セキュアエレメント62に供給する。但し、図19において、フロントエンド161からのPollingレスポンスメッセージが各セキュアエレメント62に供給される処理は図示されない。
ステップS703において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより外部NFCデバイス52は、セキュアエレメント62−2の識別番号を知ることができる。なお、セキュアエレメント62−0,62−1,62−2は、それぞれこのレスポンスメッセージを受信するが、リクエストメッセージを出力していないので、それを無視する。
さらに、ステップS714において、フロントエンド161の送信部81は、最も遅いタイムスロット番号2とともに記憶部181に記憶されている識別番号ID0を付加してPollingレスポンスメッセージを返す。ステップS704において、外部NFCデバイス52は、このレスポンスメッセージを受信する。これにより、外部NFCデバイス52は、最も遅いタイムスロット番号2に対応するセキュアエレメント62−0の識別番号を知ることができる。
このように、タイムスロット番号が重ならないように設定されているので、各番号のタイムスロットに割り当てられている時間が短い場合でも、衝突が発生せず、迅速な通信が可能となる。
次に、以上の処理により通信が確立した後に、外部NFCデバイス52がNFCデバイス51からデータを読み出す場合の処理について、図20を参照して説明する。
[データの読み出し処理]
ステップS801において、外部NFCデバイス52は、通信相手のうちの1つであるセキュアエレメント62−1の識別番号ID1を指定して、Readリクエストメッセージを送信する。ステップS811において、フロントエンド161の受信部82がこのリクエストメッセージを受信すると、送信部81がそれをNFCデバイス51内の各部に供給する。セキュアエレメント62−0,62−2は、ステップS821,S841において、それぞれこのリクエストメッセージを受信するが、識別番号が一致しないので、それを無視する。すなわち、ステップS831において、セキュアエレメント62−1の受信部101はこのリクエストメッセージを受信する。
ステップS832において、セキュアエレメント62−1の送信部102は、メッセージ処理部103によって自分自身の識別番号ID1が付加されたReadレスポンスメッセージを返す。ステップS812において、フロントエンド161の受信部82がこのレスポンスメッセージを受信すると、送信部81がそれを各セキュアエレメント62、および外部NFCデバイス52に供給する。但し、図20において、フロントエンド161からのReadレスポンスメッセージが各セキュアエレメント62に供給される処理は図示されない。
ステップS802において、外部NFCデバイス52は、このレスポンスメッセージを受信する。従って、以後、外部NFCデバイス52は、セキュアエレメント62−1からデータを読み出すことができる。なお、セキュアエレメント62−0,62−1,62−2は、それぞれこのレスポンスメッセージを受信するが、リクエストメッセージを出力していないので、それを無視する。
次に、通信が確立した後に、外部NFCデバイス52がNFCデバイス51へデータを書き込む場合の処理について、図21を参照して説明する。
[データの書き込み処理]
ステップS851において、外部NFCデバイス52は、通信相手のうちの1つであるセキュアエレメント62−2の識別番号ID2を指定して、Writeリクエストメッセージを送信する。ステップS861において、フロントエンド161の受信部82がこのリクエストメッセージを受信すると、送信部81がそれをNFCデバイス51内の各部に供給する。セキュアエレメント62−0,62−1は、ステップS871,S881において、それぞれこのリクエストメッセージを受信するが、識別番号が一致しないので、それを無視する。ステップS891において、セキュアエレメント62−2の受信部101はこのリクエストメッセージを受信する。
ステップS892において、セキュアエレメント62−2の送信部102は、メッセージ処理部103によって自分自身の識別番号ID2が付加されたWriteレスポンスメッセージを返す。ステップS862において、フロントエンド161の受信部82がこのレスポンスメッセージを受信すると、送信部81がそれを各セキュアエレメント62、および外部NFCデバイス52に供給する。但し、図21において、フロントエンド161からのWriteレスポンスメッセージが各セキュアエレメント62に供給される処理は図示されない。
ステップS852において、外部NFCデバイス52は、このレスポンスメッセージを受信する。従って、以後、外部NFCデバイス52は、セキュアエレメント62−2へデータを書き込むことができる。なお、セキュアエレメント62−0,62−1,62−2は、それぞれこのレスポンスメッセージを受信するが、リクエストメッセージを出力していないので、それを無視する。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
なお、本明細書において、プログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。