(58)【調査した分野】(Int.Cl.,DB名)
外部デバイスと近距離通信チャネルを確立し、前記外部デバイスによって送信されたアプリケーションデータを第1のホストプロセッサに提供するように構成された近距離通信デバイスであって、
前記第1のホストプロセッサに提供されたアプリケーションデータの性質または内容に関する通知を第2のホストプロセッサに提供し、
アプリケーションの特性パラメータに従って選択された分析規則に従って前記通知を設定するようにさらに構成され、前記アプリケーションの範囲内で前記外部デバイスが前記第1のホストプロセッサにデータを送信する、ことを特徴とするデバイス。
アプリケーションデータ内に存在するデータ、または前記アプリケーションデータ内に存在するデータにおける情報項目を含む通知を前記第2のホストプロセッサに提供するように構成された請求項1または2に記載のデバイス。
前記アプリケーションの識別子を含む通知を前記第2のホストプロセッサに提供するように構成され、前記アプリケーションの範囲内で前記外部デバイスが前記第1のホストプロセッサにデータを送信する、請求項1から3のいずれか一項に記載のデバイス。
前記アプリケーションデータに対応するマスクが見つかるまで前記アプリケーションデータと各々のマスクを比較することによって、一連の識別マスクによって前記アプリケーションデータを識別するように構成された請求項5に記載のデバイス。
前記選択されたデータ分析プログラムにおいて形成され、または含まれるデータマスクと前記アプリケーションデータを結合することによって前記アプリケーションデータを分析するように構成された請求項5または6に記載のデバイス。
前記第2のホストプロセッサに提供される通知は、前記アプリケーションデータ内に存在するデータ、または前記アプリケーションデータ内に存在するデータにおける情報項目を含む、請求項10または11に記載の方法。
前記外部デバイスによって送信され、前記第1のホストプロセッサに提供されたアプリケーション選択コマンドを受信すると、前記アプリケーションの識別子を含む通知を前記第2のホストプロセッサに提供するステップを有し、前記アプリケーションの範囲内で前記外部デバイスが前記第1のホストプロセッサにデータを送信する、請求項10から12のいずれか一項に記載の方法。
前記アプリケーションの少なくとも1つの特性パラメータに従って前記第1のホストプロセッサおよび前記第2のホストプロセッサを指定するルーティングおよび通知テーブルの使用を含む請求項10から14のいずれか一項に記載の方法。
【背景技術】
【0002】
いわゆるNFC(Near Field Communication(近距離通信))技術は、各々がアンテナコイルを備える2つのデバイスが、誘導結合によってデータを交換することを可能とする。NFCチャネルの生成は、「読み取り機」と呼ばれる、2つのデバイスのうちの1つが磁場を放出し、「カード」と呼ばれる他のデバイスが、磁場が後者においてアンテナ信号を生成するように、前者のデバイスのうちの1つに十分に近いアンテナコイルを有する。「ピア・ツー・ピア」(またはポイント・ツー・ポイント)と呼ばれるもう1つの知られたNFC方法において、各々のデバイスは、交互に磁場を放出する。従って、近年、ホストプロセッサに接続されるように提供され、読み取り機、カードエミュレーション、またはピア・ツー・ピア・モードにおいてNFCアプリケーションを実行することを可能とするNFCデバイスが開発された。
【0003】
図1は、上記の種類の従来のNFCデバイスD1の構成を図式的に表わす。このデバイスは、CLF(Contactless Front End(非接触フロントエンド))通信インタフェース回路、NFCC1と示されたNFCコントローラ、プログラムおよびデータメモリMEM1、通信ポートP1、P2、を備え、これらの要素はバスBSによって結合されている。ポートP1、P2は、ホストプロセッサHP1、HP2がデバイスD1に接続されることを可能とする。メモリMEM1は、プロセッサNFCC1のオペレーティングシステムOSおよびプロセッサNFCC1によって実行されるルーティングプログラムRPGRを収容する。インタフェース回路CLFにはアンテナコイルAC1が備えられ、それ自身がアンテナコイルAC2を備える外部デバイスEDVとNFCチャネルを確立するように構成される。
【0004】
そのような近距離通信デバイスは、特許または特許出願EP 1 327 222、EP 1 758 049、EP 1 855 229、およびEP 1 855 389において開示された。EP 1 327 222は、カードエミュレーションモードを提供することを教示している。EP 1 855 229は、デバイスがカードエミュレーションモードにあるとき受信される磁場からデバイスに電気的に給電する方法を開示している。EP 1 855 389は、入って来るデータ(インタフェース回路CLFによって受信されるデータ)をルーティングする方法であって、それによってデータが意図されるホストプロセッサを判定できる方法を開示している。EP 1 327 222は、ルーティングテーブルを使用するルーティング方法を開示している。さらに、ETSI TS 102 622標準("Smart Cards; UICC - Contactless Front-end (CLF) Interface; Host Controller Interface (HCI)")、CLFインタフェース回路の動作を規定するETSI TS 102 613標準、またはNCI仕様("NFC Controller Interface")のような標準または仕様はデバイスのある特徴をより正確に規定している。
【0005】
ここで、ホストプロセッサHP1は、あるレベルのセキュリティを要求するアプリケーション、特に支払いアプリケーションまたは直接または間接に支払いを含むアプリケーションに専用のセキュアコンポーネントであり、プロセッサHP2は、ユーザと通信する手段へのアクセスを有する非セキュアプロセッサであると仮定する。プロセッサHP1は、例えば、NFC機能が設けられたUICC(Universal Integrated Circuit Card)型カード、またはより一般に、セキュアエレメント型プロセッサ(NFアプリケーションに専用のセキュアプロセッサ)である。プロセッサHP2は、例えば、携帯電話のベースバンドプロセッサであり、ディスプレイおよび入力手段(実際のまたは仮想的なキーボード)のような各種のマンマシンインタフェース周辺機器も制御する。
【0006】
また、
図1は、デバイスD1がホストプロセッサHP1のためにカードエミュレーションモードで動作し、それによってホストプロセッサHP1が外部デバイスEDVとトランザクション、例えば販売時点情報管理(point of sale)を実行することを可能とするアプリケーションの例を表わす。トランザクションの間、ホストプロセッサHP1と外部デバイスEDVがアプリケーションデータ、例えばISO 7816標準によって説明されている種類のAPDU("Application Protocol Data Unit"(アプリケーション・プロトコル・データ・ユニット))データを交換する。より詳しくは、外部デバイスは(標準においてC-APDUと示される)コマンドCAPDUを送信し、ホストプロセッサHP1は(標準においてR-APDUと示される)応答RAPDUを返送する。そのようなデータはデバイスD1を通り、コントローラは、インタフェース回路CLFからホストプロセッサHP1への、またはその逆のルーティングを保証する。
【0007】
トランザクションが終わると、ホストプロセッサHP1はトランザクションにおける情報をプロセッサHP2に提供できる。そして、プロセッサHP2はそのような情報をユーザに提示できる。例えば、プロセッサHP2は、"製品Xの購入"トランザクションが日付Yにおいて数量Zについて実行されたことの確認を場合によって音声信号と一緒に表示できる。
【0008】
さらに、ETSI TS 102 613標準(バージョンV9.2.0)は、11.2節において、2つのホストプロセッサがトランザクションにおいて情報を交換することを可能とする方法を規定している。この方法は、接続(connectivity)ゲート、"PRO_HOST_REQUEST"コマンド、およびEVT_CONNECTIVITY、EVT_OPERATION_ENDED、EVT_TRANSACTIONイベントを規定している。EVT_TRANSACTIONイベントは、以下に示す形態で形成され、該当するアプリケーションの"AID"("Application ID")識別子を含む。
【0009】
【表1】
【0010】
トランザクションの実行におけるこの情報の伝達は、プロセッサHP1によって実行されるアプリケーションプログラム、または上記の結合機能によってアプリケーションを起動するプログラムの設定に依存する。従って、トランザクションに関する情報の第3のプロセッサへ伝達は、アプリケーションプログラムを設計するときに具体的なプログラムの行を提供する必要がある。
【発明を実施するための形態】
【0029】
図2は、D2と示される、本発明によるNFCデバイスの構成を図式的に表わす。デバイスD2は上述したデバイスD1と同じ概略の構成を有し、従って、CLF("Contactless Front End"(非接触フロントエンド))通信インタフェース回路、NFCコントローラ"NFCC2"、プログラムおよびデータメモリMEM2、通信ポートP1、P2を備え、これらの要素はバスBSによって結合されている。ポートP1、P2は、ホストプロセッサHP1、HP2がデバイスD2に接続されることを可能とする。メモリMEM2は、オペレーティングシステムOS、ルーティングテーブルRTを含み得るルーティングプログラムRPGR、本発明による通知プログラムNPGRを収容する。インタフェース回路CLFにはアンテナコイルAC1が備えられ、それ自身がアンテナコイルAC2を備える外部デバイスEDVと近距離通信チャネル確立するように構成される。デバイスD2およびホストプロセッサHP1、HP2は、携帯電話のようなポータブルデバイスMPに配置されることが可能である。
【0030】
ホストプロセッサHP1および外部デバイスEDVがトランザクションを実行するとき、コントローラNFCC2はルーティングプログラムRPGRを実行し、外部デバイスEDVによって送信され、インタフェース回路CLFによって受信されたコマンドCAPDUをホストプロセッサHP1に転送するか、またはプロセッサHP1によって送信された応答RAPDUをインタフェース回路CLFに転送し、それによって、それが外部デバイスEDVに送信される。また、コントローラは、本発明による通知プログラムNPGRを実行し、プロセッサHP1と外部デバイスEDVによって交換されたデータCAPDU、RAPDUの性質および/または内容に関する通知をプロセッサHP2に送信する。
【0031】
一実施例によれば、コントローラはプロセッサHP2に次の通知を送信する:
− N[AIDi]:プロセッサHP1に転送されたアプリケーション選択コマンドSELECT_AID内に存在するアプリケーション識別子AIDiを含むアプリケーション選択通知、
− NCj:インタフェース回路CLFによって受信され、プロセッサHP1に転送されたコマンドCAPDUjに関する通知、
− NRj:プロセッサHP1によって送信され、インタフェース回路CLFに転送されたコマンドRAPDUjに関する通知。
【0032】
コマンドまたは応答に関する通知NCj、NRjは、任意の種類の情報またはデータを含み得る。例えば:
− コマンドまたは応答の性質についての情報(例えばコマンドの種類)、
− コマンドまたは応答の内容についての情報(例えばコマンドまたは応答内に所定のデータが存在するという事実)、および/または
− コマンドまたは応答に含まれる1つまたは複数のデータ。
【0033】
通知NCjまたはNRjはアプリケーションの特性パラメータに従って生成され、そのアプリケーションの範囲内で外部デバイスEDVとホストプロセッサHP1がデータAPDUを交換する。以下で説明するいくつかの実施例において、この特性パラメータはアプリケーションの識別子AIDである。
【0034】
この目的のために、通知プログラムNPGRは通知設定モジュールMAiの集合(MA0, MA1,...MAn)を備え、各々のモジュールMAiは識別子AIDiと関連付けされている。モジュールMAiの構成は
図3に図式的に表わされている。各々のモジュールは次を備える:
− コマンド識別プログラムCIP、
− プログラムCIPが識別されることを可能にできるコマンドCAPDUj (CAPDU0, CAPDU1,... CAPDU
Ni)に関するコマンド分析規則の集合(CAR0, CAR1,...CAR
Ni)、および
− プログラムCIPが識別されることを可能にできる応答RAPDUj (RAPDU0, RAPDU1,... RAPDU
Ni)に関する応答分析規則RARjの集合(RAR0, RAR1,...RAR
Ni)。
【0035】
各々の応答分析規則RARjはコマンド分析規則CARjと関連付けされ、各々のコマンド分析規則CARjは、プログラムCIPによって識別されることが可能であるコマンドCAPDUjと関連付けされる。各々の規則CARjは、コントローラNFCC2がプロセッサHP2に伝達される通知NCjを生成することを可能とする。同様に、各々の規則RARjは、コントローラがプロセッサHP2に伝達される通知NRjを生成することを可能とする。
【0036】
従って、通知が生成される規則CARj、RARjが異なり得るという事実のために、同じコマンドCAPDUjまたは同じ応答RAPDUjは、アプリケーションに依存して異なる通知NCj、NRjを生じさせることが可能であり、そのアプリケーションの範囲内で送信される。
【0037】
さらに、アプリケーションに関連付けされた識別プログラムCIPは、アプリケーションが使用する余地がある任意のコマンドまたは任意の応答を識別するように必ずしも設計される必要はない。プログラムCIPを設計するとき、通知が望まれるコマンドまたは応答のみが考慮されることが可能である。さらに、対応する応答それ自身が通知NRjを生じさせることなく、コマンドが通知NCjを生じさせることが可能であり、その逆も可能である。
【0038】
図4A、4Bは、通知プログラムNPGRによって実現された、本発明による通知方法の一実施例を説明する。ここで、プロセッサHP1はカードエミュレーションモードで動作すると仮定し、それによって、入って来るアプリケーションデータ(外部デバイスEDVによって送信され、インタフェース回路CLFによって受信されるデータ)はコマンドCAPDUであり、出て行くアプリケーションデータ(ホストプロセッサHP1によって送信されるデータ)は応答RAPDUである。
【0039】
図4Aを参照すると、この方法は、インタフェース回路CLFによって受信された入って来るデータCAPDUjのルーティングを待つ初期ステップS1を有する。このデータがルーティングプログラムRPGRによってプロセッサHP1にルーティングされとき、コントローラNFCC2はステップS2へ進み、ここで、コマンドCAPDUjがアプリケーション選択コマンド"SELECT_AID"であるかどうかを判定する。答えが肯定ならば、コントローラはステップS3へ進み、そうでなければ、コントローラはステップS6へ進む。
【0040】
ステップS3において、コントローラはコマンドCAPDUjから識別子AIDiを抽出する。ステップS4の間、コントローラは、現在のコマンドとしてコマンドCAPDUj、現在の識別子として識別子AIDiを記憶する。ステップS5の間、コントローラは識別子AIDiを含む通知N[AIDi]をプロセッサHP2に送信し、そして、ステップS12へ進む。
【0041】
ステップS2の後、入って来るデータCAPDUjがアプリケーション選択コマンドでないとき、ステップS6が実行される。コマンドSELECT_AIDはアプリケーションの始めに外部デバイスEDVによって送信された最初のコマンドなので、前のステップS4の間に識別子AIDiは現在の識別子として記憶されたと仮定する。従って、ステップS6において、コントローラは、モジュールMA0からMAnの全ての中から、現在の識別子AIDiと関連付けされた通知設定モジュールMAiを選択する。ステップS7の間、コントローラは、モジュールMAi内に存在するプログラムCIPによってコマンドCAPDUjを識別し、ステップS8において、そのコマンドを現在のコマンドとして記憶する。ステップS9において、コントローラは、モジュールMAi内に存在する分析規則CARjにアクセスする。ステップS10において、プロセッサは、規則CARjを用いてコマンドCAPDUjを分析し、ステップS11においてホストプロセッサHP2に送信する通知NCjを生成し、そして、ステップS12へ進む。
【0042】
識別子AIDiを現在の識別子として記憶するステップS4は、識別子のリスト内の識別子の順位"i"を記憶すること、および、通知設定モジュールMAiを各々の順位iと関連付けるインデックスを使用することを含み得ることが注記される。同様に、コマンドCAPDUjを現在のコマンドとして記憶するステップS8は、コマンドCAPDU0からCAPDU
Niのリスト(モジュールMAiのプログラムCIPが識別されることを可能とするコマンドのリスト)内のコマンドの順位j、コマンドCAPDUjに適用可能な分析規則CARj、RARjが見出されることを可能とするパラメータjを記憶することを含み得る。
【0043】
図4BのステップS12において、コントローラは、ホストプロセッサHP1によって送信された出て行くデータRAPDUjがルーティングプログラムRPGRによってインタフェース回路CLFにルーティングされるのを待つ。このデータは、現在のコマンドCAPDUjへの応答RAPDUjであると仮定される。出て行くデータがルーティングされるとき、コントローラは、ステップS13の間、現在の識別子AIDiと関連付けされたモジュールMAiにアクセスし、そして、ステップS14の間、現在のコマンドCAPDUjと関連付けされた応答分析規則RARjにアクセスする。ステップS15において、コントローラは、規則RARjを用いて応答RAPDUjを分析し、ステップS16においてホストプロセッサHP2に送信する通知NRjを生成する。そして、コントローラは、新しいコマンドがプロセッサHP1にルーティングされるのを待つ間、ステップS1に戻る。
【0044】
ここで説明された方法は、プロセッサNFCC2があるステップを実行することを防止する例外を含み得る。この場合において、既定値の通知が送信されることが行われ得る。例えば、ステップS6において、どの現在の識別子AIDiも以前に記憶されていない、または記憶された現在の識別子AIDiと関連付けされた通知設定モジュールMAiが存在しないことが分かると、コントローラはステップS17aへ進み、ここで、この例外に関する通知をホストプロセッサHP2に送信し、そして、ステップS12へ進む。この通知は、例えば、どのアプリケーション識別子もプロセッサHP1に送信されたコマンドと関連付けされていない、またはどの通知設定モジュールも現在の識別子と関連付けされていないことを示す。ステップS7において、プログラムCIPがコマンドCAPDUjが識別されることを可能としないならば、コントローラはステップS17bへ進み、ここで、この例外に関する通知をプロセッサHP2に送信し、そして、ステップS12へ進む。同様に、ステップS9において、現在のモジュールMAiがどのコマンド分析規則CARjも含まないならば、コントローラはステップS17cへ進み、ここで、この例外に関する通知を送信し、そして、ステップS12へ進む。ステップS13において、どの現在の識別子AIDiも以前に記憶されていないならば、またはコントローラが現在の識別子に対応するモジュールMAiを見出さないならば、コントローラはステップS17dへ進み、ここで、この例外に関する通知をプロセッサHP2に送信し、そして、ステップS1へ戻る。最後に、ステップS14において、コントローラが現在のモジュールMAiにおいて、現在のコマンドCAPDUjと関連付けされた応答分析規則RARjを見出さないならば、またはどの現在のコマンドCAPDUjも以前に記憶されていないならば、コントローラはステップS17eへ進み、ここで、この例外に関する通知をプロセッサHP2に送信し、そして、ステップS1へ戻る。
【0045】
この方法の1つの代わりの実施例において、入って来るデータのルーティングを待つステップS1および出て行くデータのルーティングを待つステップS12は同時に実行され、それによって、プロセッサHP1が1番目のコマンドへの応答が送信されていなくて(出て行くデータがない)、コントローラがプロセッサHP2に2つの連続するコマンドのルーティングを通知することができる。さらに、1番目のコマンドの後に、1番目のコマンドへの応答がプロセッサHP1によって送信されていなくて、2番目のコマンドが受信されたならば、2番目のコマンドを受信した後、プロセッサHP1によって送信された応答は、プロセッサHP2に通知を送信する処理として、1番目でなく2番目のコマンドへの応答であると解釈されることが注記される。
【0046】
図5は、上述したモジュールMAiを置換する通知設定モジュールMBi(MB0からMBn)の一実施例を表わす。各々のモジュールMBiは3列およびNi+1行(モジュール毎に変動することが可能である行数)を有する。各々の行は、第1列においてコマンド識別マスクIMj、第2列において分析規則CARj、第3列において分析規則RARjを有する。マスクIMjは、識別されるコマンドCAPDUとの排他的OR演算によってビット毎に結合されるために提供されるビット列である。一実施例に従って、各々のマスクIMjは、排他的OR演算によってマスクIMjと結果("clean"コマンド)を結合する前に、重要でないビットまたはマスクを用いて識別されることができないビット(予測できない値のビット)をそこから除去するために、AND演算によってコマンドに適用されることが意図される値マスクを伴う。コマンドの対応するビットとコマンド識別マスクIMjの各々のビットの結合の結果が0に等しいならば、コマンドはこのマスクによって識別されると考えられ、分析規則CARj、RARjはマスクIMjを有する行において読み出される。もう1つの実施例において、コマンドの識別は、値マスクと識別マスクの結合演算を保証する設定可能なハードウェアに組み込みの論理演算によって保証されることができる。
【0047】
図5に表わされているように、モジュールMAiを各々のアプリケーション識別子AIDiと関連付けるために通知テーブルAT1も提供される。テーブルAT1は識別子AIDiまたは識別子の順位iを含む第1列、識別子AIDiと関連付けされたモジュールMBiを示す値A(MBi) (A(MB0), A(MB1)... A(MBn))を含む第2列を有する。これらの値は、モジュールMBiのメモリMEM2におけるアドレス、またはこれらのモジュールのインデックスされたアドレス、例えばアドレスのインデックスにおけるモジュールの順位であり得る。従って、通知テーブルAT1はアプリケーション識別子と対応する通知設定モジュールの間のルックアップテーブルを形成する。
【0048】
さらに、コマンド分析規則CARjは、データマスクDMjまたはデータマスクより複雑なコマンド分析プログラムを有し得る。実際、ある知られたコマンドは、固定位置に配置された固定サイズのデータフィールドを有し、これはデータマスクによって抽出されることが可能である。従って、規則CARjがデータマスクDMjを有するとき、マスクはAND論理演算によってコマンドと結合され、結合の結果はプロセッサHP2に通知されるデータである。しかし、他の知られたコマンドは可変の位置および長さのフィールド、例えばTLV("Type Length Value"(種類、長さ、値))フォーマットのコマンドを有する。そして、簡単なデータマスクより洗練された分析プログラムを提供することを要求する、探索される値が見出されることを可能とするそのようなコマンドタグに配置することが必要である。
【0049】
しかし、ここで、分析プログラムを要求する、一般にTLVまたはLVフォーマットにおける、ISO 7816標準によって提供されるような応答RAPDUの可変的な構成のために、データマスクは応答分析規則RARjにおいて使用できないと仮定する。
【0050】
図6A、6Bは、通知設定モジュールMBiおよび通知テーブルAT1を用いた通知方法の一実施例を表わす。この方法は次のステップを有する:
− ステップS20(
図6A):コントローラは、ルーティングプログラムによってルーティングされる入って来るデータCAPDUjを待ち、そして、ステップS21へ進む。
− ステップS21:排他的OR演算(XOR)によって、コントローラは、コマンドSELECT_AID(付録2における例を参照)を識別するために専用のマスクMAID1とコマンドCAPDUjを結合する。結果が0に等しいならば、コマンドは識別子選択コマンドであり、コントローラはステップS22へ進み、そうでなければ、コントローラはステップS25へ進む。
− ステップS22 AND論理演算によって、コントローラは識別子AIDiを抽出するために専用のマスクMAID2とコマンドCAPDUjを結合し、これは演算の結果を形成する(付録2における例を参照)。
− ステップS23:コントローラは、現在のマスクとしてマスクMAID1および現在の識別子として識別子AIDiまたは識別子の順位"i"を記憶する。
− ステップS24:コントローラは、識別子AIDiを含む通知N[AIDi]をプロセッサHP2に送信し、そして、ステップS32へ進む。
− ステップS25:通知テーブルAT1によって、コントローラは、現在の識別子AIDiに対応する通知設定モジュールMBiを選択する。
− ステップS26:コントローラは、モジュールMBiにおいて最初のコマンド識別マスクIM0、または前のステップS26の間にマスクが既に読み出されたならば次のマスクIMを読み出す。
− ステップS27:コントローラは、場合によって値マスクを適用した後に、排他的OR演算によってマスクIMとコマンドCAPDUjを結合し、結果が0に等しいビット列ならば、コントローラはステップS28へ進み、そうでなければ、ステップS26へ戻って次のマスクを読み出す。
− ステップS28:コントローラは、現在のマスクIMjとしてマスクIMを記憶し、またはマスクの順位"j"のみを記憶する。
− ステップS29:コントローラは、モジュールMBiにおいて、マスクIMjと関連付された分析規則CARjを読み出す。規則CARjがデータマスクDMjを含むならば、コントローラはステップS30aへ進む。規則が分析プログラムを含むならば、コントローラはステップS30bへ進む。
− ステップS30a:コントローラは、AND論理演算によってコマンドCAPDUjとマスクDMjを結合して、コマンドから、通知されるデータを抽出する。
− ステップS30b:コントローラは、規則CARjによってコマンドCAPDUjを分析して、コマンドから抽出されたデータを含み得る、通知される情報項目を取得する。
− ステップS31:コントローラは、データおよび/または情報を含む通知NCjをプロセッサHP2に送信し、そして、ステップS32へ進む。
− ステップS32(
図6B):コントローラは、インタフェース回路CLFにルーティングされる出て行くデータRAPDUjを待つ。前述の通り、ステップS20において、同時に2つのコマンドが受信される場合を扱うために、コントローラは、ルーティングされる第2のコマンドを同時に待つことが可能である。
− ステップS33:コントローラは、現在のモジュールMBiにおいて、現在のマスクIMjまたはマスクMAID1と関連付けされた規則RARjを読み出す。
− ステップS34:コントローラは、規則RARj(例えば、付録2を参照)を用いて応答RAPDUjを分析し、応答内に存在するデータを含む、またはデータからなることが可能である応答通知を生成する。
− ステップS35:コントローラは、そのような情報を含む通知NRjをプロセッサHP2に送信する。
【0051】
上記の通り、この方法は、次の実行例外の全部または一部を含み得る:
− ステップS25において、現在の識別子AIDiが以前に記憶されていない、またはモジュールMBiが現在の識別子と関連付けされていないならば、コントローラはステップS36aへ進み、ここで、この例外に関する通知をプロセッサHP2に送信し、そして、ステップS32へ進む。
− ステップS26において、モジュールMBiのマスクIM0からIM
Niのいずれも現在のコマンドCAPDUjに対応しないならば、コントローラはステップS36bへ進み、ここで、コマンドが識別されていないことを示す通知をプロセッサHP2に送信し、そして、ステップS32へ進む。
− ステップS33において、コントローラが現在の識別子AIDiを見出さないならば、ステップS36cへ進み、ここで、任意の知られたアプリケーションにリンクされていない識別可能でないデータがプロセッサHP1によって送信されたことを示す既定値の通知をプロセッサHP2に送信する。コントローラが現在の識別子AIDiと関連付けされたモジュールMBiを見出さないならば、ステップS36dへ進み、ここで、アプリケーション識別子AIDiにリンクされた認識可能でないデータがプロセッサHP1によって送信されたことを示す既定値の通知をプロセッサHP2に送信する。最後に、コントローラが記憶された現在のマスクIMjを用いて現在の識別子AIDiと関連付けされた分析規則RARjを見出さないならば、ステップS36eへ進み、ここで、識別可能でない応答がプロセッサHP1によって送信されたことを示す既定値の通知をプロセッサHP2に送信する。
【0052】
図7は、本発明による通知設定モジュールMCiのもう1つの実施例を表わす。識別プログラムCIPは全てのモジュールMCiに共通であり、各々のモジュールMCiは分析規則CARj、 RARjのみを含む。この実施例において、モジュールMCiはもはや個別に選択可能な要素として必要でない。通知プログラムは、現在の識別子AIDiおよび現在のコマンドCAPDUjから分析規則CARj、RARjの組NRi,jを直接にアクセスすることができる。
【0053】
上記で、2つのホストプロセッサHP1、HP2にリンクされたデバイスD2に適用可能である通知方法の例が説明され、この場合、ホストプロセッサHP2のみが、プロセッサHP1にルーティングされた、またはプロセッサHP1に送信されたデータに関する通知を受信する。実際、デバイスは、3つまたはより多くのホストプロセッサを含むことが可能であり、各々のプロセッサは、他のホストプロセッサの活動に関する通知を受信する余地がある。従って、本発明による通知方法は、複数の通知を生成するように構成することも可能である。
【0054】
同様に、上記では、一度にただ1つのアプリケーションがホストプロセッサHP1によって管理されることが可能であり、それによって、ホストプロセッサHP2に送信される通知は、"現在の識別子"と呼ばれる同じアプリケーション識別子に結び付けられると仮定した。一実施例によれば、プロセッサHP1および外部デバイスEDVは同時にいくつかのアプリケーションを実行することができる。この場合において、アプリケーションの範囲内で交換されるデータは、論理チャネルによってもう1つのアプリケーションの範囲内で交換されるデータから区別される。従って、ISO 7816標準は、コマンドまたは応答の最初のバイトCLASSのビット0および1をパラメータ化することによって4から20個の論理チャネルを使用する可能性を提供する(一度にただ1つのアプリケーションが実行される場合において、その既定値は0である)。"グローバルプラットフォーム(Global Platform)"仕様は、ISO 7816標準によって提供される4個の論理チャネルに加えて16個の論理チャネルを定義する4個の追加のビットを提供し、すなわち合計で20個のチャネルである。
【0055】
この場合において、アプリケーション識別子を記憶することは、デバイスD2によってルーティングされるコマンドまたは応答に適用可能な分析規則を選択するために十分でない。実際、識別子AIDiはコマンドSELECT_AID内に存在するが、次のコマンドまたは応答内に含まれない。この場合において、本発明による通知方法は、
図8に表わされている種類の通知テーブルAT2を使用し、通知テーブルAT2は、識別子AID0からAIDn(またはそれらの順位i)を含む列および通知設定モジュールMBiのアドレスA(MBi)を含む列に加えて、"論理チャネル"の列を含む。"論理チャネル"の列は、最初は空であり、論理チャネル番号を含むコマンドSELECT_AIDが受信され、ホストプロセッサにルーティングされるときに、動的に更新される。
【0056】
そして、
図6Aに表わされている方法のステップは、次のように変更される:
− ステップS23において、識別子AIDiが、受信された最初のコマンドSELECT_AIDから抽出されていないとき、対応する論理チャネルは、この識別子に関して通知テーブルAT2内に記録される。この識別子が"AID0"であり、外部デバイスによって選択された論理チャネル番号が"CH01"であると仮定すると、チャネルCH01は、
図8に表わされているように、通知テーブルAT2内のこの識別子と関連付される。
− ステップS23のもう1つの繰り返しの間に、もう1つの識別、例えば識別子"AID2"がもう1つのコマンドSELECT_AIDから抽出されるとき、例として、論理チャネル番号"CH02"がコマンド内に見出されたと仮定すると、この論理チャネル番号CH02は通知テーブルAT2内の識別子AID2と関連付けされる。
− そして、ステップS25が実行されるとき、受信されたコマンド内に存在する論理チャネル番号が通知テーブルAT2のエントリポイントとして使用されて、どのモジュールMA0またはMA2が選択されなければならないかを判定する。従って、この実施例において、ステップS23において識別子AIDiを記憶することは必ずしも必要ではない。むしろ、それは、記憶されるコマンドが受信されることが可能である各々の論理チャネルと関連付けされたモジュールMA0、MA2の識別情報(メモリ内のアドレスまたはインデックスされたアドレス)である。
【0057】
上記で、通知を設定するために選択された特性パラメータがアプリケーションの識別子またはこの識別子と関連付けされた論理チャネルである、本発明によるルーティング方法のいくつかの実施例が説明された。
【0058】
本発明によるルーティング方法の他の実施例において、アプリケーションの他の特性パラメータは、通知を設定するために使用されることが可能である。特に、これらのパラメータは、入って来るデータの宛先ポイントを形成するホストプロセッサを判定するためにルーティングプログラムRPGRによって使用されるパラメータであり得る。そして、そのような場合において、ルーティングプログラムRPGRによって使用されるルーティングテーブルRTおよび通知プログラムNPGRによって使用される通知テーブルを併合して、従来のルーティングテーブルRTを置換するルーティングおよび通知テーブルRNTを取得することが可能である。
【0059】
ルーティングおよび通知テーブルRNTの概要の例は、付録1のテーブル1に記載され、
図9に表わされている。ここで、テーブルRNTは、NFC Forum(TC DEV NCI 00058R013 NFCForum TS NCI 1.0)のNCI仕様に関して設計されている。
【0060】
NCI仕様の5.3節は、NFCデバイスが"listen"モードにあるとき、3つのパラメータ:
− アプリケーション識別子AID、
− 識別子AIDが見出されないならばプロトコル(protocol)、
− プロトコルが判定できないならばテクノロジー(technology)
に基づくルーティング方法を推奨している。
【0061】
"プロトコル"および"テクノロジー"パラメータは、NFC Forumの"DIGITAL 1.0"仕様において規定されている。プロトコルは、"Type1Tag"、"Type2Tag"、"Type3Tag"、"Type4ATag"、"Type4B"、"ISO-DEP"、"NFC-DEP"であり得る。テクノロジーは、"Type A"、"Type B"、または"Type F"、13.56MHzのキャリア周波数を全て使用すること、または任意の他のいわゆる"オーナー"プロトコル、例えばISO15であり得る。テクノロジーは、RFキャリア、通信モード、ビットレート、変調方式、ビットレベル符号化、フレームフォーマット、プロトコル、等のような伝送パラメータのグループとしてNCI仕様によって規定されている。
【0062】
従って、ルーティングおよび通知テーブルRNTは、ルーティングおよび通知を設定するために次の特性パラメータを含む:
− AID:アプリケーション識別子、
− "PROT":NCI仕様の意味における"プロトコル(protocol)"、
− "TECH":NCI仕様の意味における"テクノロジー(technology)"、
− "BAT":デバイスD2のバッテリーの状態(
図2に表わされていない)。
【0063】
上述した通り(ステップS3またはS22)、識別子AIDはコマンドSELECT_AID内に見出される。しかし、ここで、識別子AIDは、入って来るデータをルーティングする目的のためにルーティングプログラムRPGRによって検出され、従って、そのような検出は、通知プログラムによって再度実行される必要がない。従って、通知プログラムの簡略化が提供されることが可能である。概して、通知プログラムおよびルーティングプログラムは、アプリケーションの同じ特性パラメータに基づくルーティングおよび通知の管理の範囲内で併合されることが可能である。プロトコルは、NCI仕様において提供される、いわゆる"ディスカバリ(Discovery)"ステップの間に検出される。テクノロジーも"ディスカバリ"ステップの間に検出される。より詳しくは、この仕様は、"Activity"というタイトルの章において、次のステップ:1 テクノロジー検出(Technology detection)、2 衝突処理(Collision processing)(任意選択)、3 デバイスの活性化(Activation of the device)、4 データ交換(Data exchange)、5 デバイスの非活性化(Deactivation of the device)を提供する。テクノロジーはステップ1において識別され、プロトコルはステップ1および3において識別される。
【0064】
バッテリーの状態は、"オン"(十分な充電レベルを有するバッテリー)、"ロー"(閾値より下のレベル)、または"オフ"(空のバッテリーまたはデバイスのあるユニットが機能するために不十分な充電を有するバッテリー)であり得る。デバイスD2は、EP 1 855 229に記載されているように、外部デバイスEDVによって放出された磁場からエネルギーを得ることによって、バッテリーが空である動作モードを有することが可能である。1つの選択肢において、バッテリーの状態とホストプロセッサの状態(作動されたものについて"オン"および不作動にされたものについて"オフ")の間の組み合わせを考慮することが可能である。そして、ホストプロセッサの状態に関する追加の列が提供されるべきである。
【0065】
さらに、ルーティングおよび通知テーブルRNTは、特性パラメータAID、PROT、TECH、BATに従って変動する次の変数を含む:
− TargProc1:入って来るデータをルーティングするためのターゲットプロセッサを示す。ここで、デバイスD2は3つのホストプロセッサHP1、HP2、HP3に結合されると仮定し、プロセッサHP3は、
図2において点線で表わされ、ポートP3に接続されている。
− TargProc2:本発明による通知を送信するためのターゲットプロセッサを示す。
− A(MB):この列は、上述した値A(MB0)、A(MB1) ... A(MB
n)を含み、モジュールMBiを示し、それによって、プロセッサTargProc2に送信される通知を設定することが可能である。
【0066】
NCI仕様は、識別子AIDが知られていれば識別子AIDから、またはプロトコルが知られていればプロトコルから(あるNCIアプリケーションは識別子AIDを使用しない)、または識別子AIDおよびプトロコルが判定できないならばテクノロジーからでさえ、ターゲットプロセッサ(ここでは"TargProc1")の識別子が判定されることを提供する。
【0067】
従って、テーブルRNTによって表わされているルーティングは3つの可能性:知られた識別子AID、識別子が知られていないが知られたプロトコル、識別子およびプロトコルが知られていないが知られたテクノロジーを考慮する。テーブルRNTに含まれる名称"PROT0"、"PROT2"、"PROT4"、"TECH1"、"TECH2"は図式的であり、各々は上述したプトロコルまたはテクノロジー、または任意の他の適用可能なテクノロジーまたはプロトコルのうちの1つに対応する。
【0068】
このルーティングおよび通知テーブルのアーキテクチャは、入って来るデータのルーティングのためのターゲットプロセッサTargProc1を判定するための規則は、通知が送信されるプロセッサ、および、これらの通知を設定するために使用される通知設定モジュールを判定するためにも使用され得ることを表わす。
【0069】
表わされていない一実施例によれば、ルーティングおよび通知テーブルRNTは、通知を受信する第2のプロセッサを示す列"TargProc3"を含む。そして、列"TargProc3"によって示されるプロセッサに送信される通知を生成するために使用されることが可能である通知設定モジュールを示すために第2の列"MB"を含み得る。この場合、通知は、送信されるプロセッサに従って異なって設定されることが可能である。
【0070】
付録1
詳細な説明の必須の一部を形成する。
【0072】
付録2
詳細な説明の必須の一部を形成する。
1 − コマンドSELECT_AIDを識別する識別マスクの例
1.1 − コマンドSELECT_AIDのフォーマット
【0074】
コマンドの識別情報:
1.2 − 値マスクVM
【0078】
1.4 − マスクによって実行される動作
Match1 = [分析されるコマンド] XOR VM (XOR = 排他的OR)
Match2 = Match1 AND IM (AND = AND演算)
Match2 = 00 00 00 00… (16進数)ならば、コマンドが識別される。
【0079】
2 − コマンドSELECT_AIDの識別子AIDを抽出するマスクの例
2.1 − コマンドの例
【0081】
2.2 − マスクの例
パラメータLcは、コマンドAPDUのデータフィールド内に存在するバイト数を示す。この例において、マスクはパラメータLc=0を用いて算出される。
【0083】
Bx = コマンドの順位xのバイト
00 = 使用されないバイト
FF = 使用されるバイト
【0084】
2.3 − 識別子を抽出すること
AID_TEMP = [分析されるコマンド] AND マスク
AID = バイトB5からバイトB(5+Lc-1)まで
AID = バイトB5からバイトB11まで
【0085】
3 − コマンドCAPDUjを識別する識別マスクの例
3.1 コマンドの例
"READ RECORD"コマンド(MasterCard/PayPass トランザクションコマンド)。コマンドの一般的なフォーマット:
【0087】
上記のフィールドP2は2進数で、他は16進数で表現される。値"x"のビットは可変値のビットである。
【0088】
フィールドP1を有する各々のREAD RECORDコマンドは異なる応答を呼び出すので、そのようなコマンドは、各々のフィールドP1("レコード番号")について異なるマスクを要求する。マスクの数は、抽出され、ホストプロセッサに通知されるデータの数に依存する。この例において、マスクは次の通りであり得る:
【0091】
このマスクは、値マスク(ビット"x": 無視されるビット)および識別マスク(0または1におけるビット)の両方である。これは、ビット"x"が0、他の全ての値が1に等しく、AND演算によって分析されるコマンドと結合される値マスクと、全てのビット"x"が0で置換され、他のビットを維持し、排他的OR演算によって値マスクとの結合結果と結合される識別マスクとに細分できる。
【0092】
4 − 応答を分析する分析プログラムの例(分析規則RARj)
応答の例:
【0094】
応答は、TLV(Type-Length-Value(種類−長さ−値))フォーマットである。その内容を分析するために、探索される値が見出されることを可能とするタグが配置されなければならない。
【0095】
"保持者名"フィールドの探索のための分析プログラムの例:
このプログラムは次のステップを実行しなければならない:
− SW1-SW2 = '9000'であることを検査する。
− 応答の始めにタグ'70'を配置する。
− タグ'70'の値の中にタグ'56'を配置する。
【0096】
値は、具体的なフォーマット(ここでは、TLVフォーマットでないが、磁気ストライプカードに関する歴史的な理由のためにフィールドセパレータ)における名前を含む"トラック 1 データ"フィールドに存在する。この例において、名前を抽出する分析は通知の範囲内で具体的過ぎるので、通知を受信するホストプロセッサがそれをできるように、"トラック 1 データ"が通知を受信するホストプロセッサに送信され得る。