(57)【要約】【課題】不正にデータを中継するリレーアタックの検出精度を向上させる。【解決手段】無線インタフェース４６は、アンテナ４７を介してコマンドを送信し、そのコマンドに応じて、非接触ICカード２２により実行された処理の終了を示す処理終了情報を受信し、タイマ４１は、コマンドを送信したときから、処理終了情報を受信するまでの時間を表すレスポンス時間を計時し、CPU４５は、処理に要した処理時間と、計時されたレスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことを検出する。本発明は、例えば、非接触ICカードとリーダライタからなる情報処理システムに適用できる。【選択図】図３
2010102609.tif 000002
【特許請求の範囲】
【請求項１】
受信したコマンドに対するレスポンスを送信する非接触通信装置との間でデータを通信する情報処理装置において、
コマンドを送信する送信手段と、
前記コマンドに応じて、前記非接触通信装置により実行された処理の終了を示す処理終了情報を受信する受信手段と、
前記コマンドを送信したときから、前記処理終了情報を受信するまでの時間を表すレスポンス時間を計時する計時手段と、
前記処理に要した処理時間と、計時された前記レスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことを検出する検出手段と
を含む情報処理装置。
【請求項２】
前記受信手段は、前記処理終了情報として、前記処理時間を特定するための特定情報を受信し、
前記検出手段は、前記特定情報により特定される前記処理時間と、計時された前記レスポンス時間とに基づいて、前記リレーアタックが行われたことを検出する
請求項１に記載の情報処理装置。
【請求項３】
前記特定情報は、前記処理時間、前記処理の開始時刻及び終了時刻、前記処理に要したステップ数、又は、前記処理に要したクロックサイクル数の少なくとも１つである
請求項２に記載の情報処理装置。
【請求項４】
受信したコマンドに対するレスポンスを送信する非接触通信装置との間でデータを通信する情報処理装置の情報処理方法において、
前記情報処理装置は、
送信手段と、
受信手段と、
計時手段と、
検出手段と
を含み、
前記送信手段が、コマンドを送信し、
前記受信手段が、前記コマンドに応じて、前記非接触通信装置により実行された処理の終了を示す処理終了情報を受信し、
前記計時手段が、前記コマンドを送信したときから、前記処理終了情報を受信するまでの時間を表すレスポンス時間を計時し、
前記検出手段が、前記処理に要した処理時間と、計時された前記レスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことを検出する
ステップを含む情報処理方法。
【請求項５】
受信したコマンドに対するレスポンスを送信する非接触通信装置との間でデータを通信する情報処理装置のコンピュータを、
コマンドを送信する送信手段と、
前記コマンドに応じて、前記非接触通信装置により実行された処理の終了を示す処理終了情報を受信する受信手段と、
前記コマンドを送信したときから、前記処理終了情報を受信するまでの時間を表すレスポンス時間を計時する計時手段と、
前記処理に要した処理時間と、計時された前記レスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことを検出する検出手段と
して機能させるためのプログラム。
【請求項６】
通信装置との間でデータを通信する情報処理装置において、
前記通信装置から送信されたコマンドを受信する受信手段と、
前記コマンドに応じた処理を実行する実行手段と、
前記処理の終了を示す処理終了情報を取得する取得手段と、
前記処理終了情報を送信する送信手段と
を含む情報処理装置。
【請求項７】
前記取得手段は、前記処理終了情報として、前記処理に要した処理時間を特定するための特定情報を取得し、
前記送信手段は、前記特定情報を送信する
請求項６に記載の情報処理装置。
【請求項８】
前記特定情報は、前記処理時間、前記処理の開始時刻及び終了時刻、前記処理に要したステップ数、又は、前記処理に要したクロックサイクル数の少なくとも１つである
請求項７に記載の情報処理装置。
【請求項９】
通信装置との間でデータを通信する情報処理装置の情報処理方法において、
前記情報処理装置は、
受信手段と、
実行手段と、
取得手段と、
送信手段と
を含み、
前記受信手段が、前記通信装置から送信されたコマンドを受信し、
前記実行手段が、前記コマンドに応じた処理を実行し、
前記取得手段が、前記処理の終了を示す処理終了情報を取得し、
前記送信手段が、前記処理終了情報を送信する
ステップを含む情報処理方法。
【請求項１０】
通信装置との間でデータを通信する情報処理装置のコンピュータを、
前記通信装置から送信されたコマンドを受信する受信手段と、
前記コマンドに応じた処理を実行する実行手段と、
前記処理の終了を示す処理終了情報を取得する取得手段と、
前記処理終了情報を送信する送信手段と
して機能させるためのプログラム。
【請求項１１】
コマンドを送信する通信装置と、前記コマンドを受信し、前記コマンドに対するレスポンスを送信する非接触通信装置との間でデータを通信する情報処理システムにおいて、
前記通信装置は、
コマンドを送信する送信手段と、
前記コマンドに応じて、前記非接触通信装置により実行された処理の終了を示す処理終了情報を受信する受信手段と、
前記コマンドを送信したときから、前記処理終了情報を受信するまでの時間を表すレスポンス時間を計時する計時手段と、
前記処理に要した処理時間と、計時された前記レスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことを検出する検出手段と
を含み、
前記非接触通信装置は、
前記通信装置から送信されたコマンドを受信する受信手段と、
前記コマンドに応じた前記処理を実行する実行手段と、
前記処理の終了を示す処理終了情報を取得する取得手段と、
前記処理終了情報を送信する送信手段と
を含む
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、プログラム、及び情報処理システムに関し、特に、非接触通信システムにおいて、不正にデータを中継するリレーアタックの検出精度を向上させるようにした情報処理装置、情報処理方法、プログラム、及び情報処理システムに関する。
【背景技術】
【０００２】
例えば、図１に示すように、電子マネー情報等が保持された非接触IC(integrated circuit)カードと、電子マネー情報等を処理するリーダライタとにより構成される非接触通信システムにおいて、ユーザは、電子マネー情報等が保持された非接触ICカードを、リーダライタに近接させるだけで商品代金の決済を行うことができる。
【０００３】
しかしながら、リーダライタと非接触ICカードとの間でやりとりされるデータを、中継機器を用いて不正に中継するリレーアタックが行われた場合、非接触ICカードに保持されている電子マネー情報等が、悪意を持った第三者に不正に使用されてしまうことが発生し得る。
【０００４】
ここで、中継機器を用いたリレーアタックについて説明する。
【０００５】
リレーアタックは、図２に示すように、リーダライタ及び非接触ICカードの他に、例えば、リレーアタックに用いる中継機器として、リーダライタに近接されたリーダライタ用中継機器、及び、非接触ICカードに近接されたカード用中継機器を用いて実行される。
【０００６】
リーダライタ用中継機器は、非接触近接無線通信により、リーダライタから出力されるコマンドを受信し、無線LAN(local area network)等の無線により、カード用中継機器に送信する。
【０００７】
これに対して、カード用中継機器は、リーダライタ用中継機器により中継されて送信されてくるリーダライタからのコマンドを無線により受信し、受信したコマンドを、非接触近接無線通信により、非接触ICカードに出力する。
【０００８】
そして、非接触ICカードは、カード用中継機器からのコマンドを受信し、受信したコマンドに対するレスポンスを、非接触近接無線通信により、カード用中継機器に送信する。
【０００９】
カード用中継機器は、非接触近接無線通信により、非接触ICカードから出力されるレスポンスを受信し、無線LAN等の無線により、リーダライタ用中継機器に送信する。
【００１０】
これに対して、リーダライタ用中継機器は、カード用中継機器により中継されて送信されてくる非接触ICカードからのレスポンスを無線により受信し、受信したレスポンスを、非接触近接無線通信により、リーダライタに出力する。
【００１１】
このように、カード用中継機器とリーダライタ用中継機器とを用いたリレーアタックにより、ユーザが、非接触ICカードをリーダライタに近接させていない状態においても、非接触ICカードとリーダライタとの間でデータがやりとりされてしまう。
【００１２】
そこで、このような事態に対処するため、リーダライタが、コマンドを送信したときから、そのコマンドに対するレスポンスを受信するまでの時間を示すレスポンス時間を計時し、計時したレスポンス時間が、予め設定した有効時間内ではない場合に、リレーアタックが行われたことを検出するリレーアタック検出技術が存在する（例えば、特許文献１を参照）。
【特許文献１】特開２００３−１３６４４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、上述したリレーアタック検出技術では、非接触ICカードは、送信されてくるコマンドに応じて各種の処理を実行するとき、コマンドの種類によってレスポンス時間が異なるため、適切に有効時間を設定することができず、リレーアタックが行われたことを精度良く検出できないことが生じ得る。
【００１４】
本発明は、このような状況に鑑みてなされたものであり、不正にデータを中継するリレーアタックの検出精度を向上させるようにするものである。
【課題を解決するための手段】
【００１５】
本発明の第１の側面の情報処理装置、又はプログラムは、受信したコマンドに対するレスポンスを送信する非接触通信装置との間でデータを通信する情報処理装置、又は、受信したコマンドに対するレスポンスを送信する非接触通信装置との間でデータを通信する情報処理装置として、コンピュータを機能させるためのプログラムであって、コマンドを送信する送信手段と、前記コマンドに応じて、前記非接触通信装置により実行された処理の終了を示す処理終了情報を受信する受信手段と、前記コマンドを送信したときから、前記処理終了情報を受信するまでの時間を表すレスポンス時間を計時する計時手段と、前記処理に要した処理時間と、計時された前記レスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことを検出する検出手段とを含む情報処理装置、又は、情報処理装置として、コンピュータを機能させるためのプログラムである。
【００１６】
前記受信手段では、前記処理終了情報として、前記処理時間を特定するための特定情報を受信することができ、前記検出手段では、前記特定情報により特定される前記処理時間と、計時された前記レスポンス時間とに基づいて、前記リレーアタックが行われたことを検出することができる。
【００１７】
前記特定情報は、前記処理時間、前記処理の開始時刻及び終了時刻、前記処理に要したステップ数、又は、前記処理に要したクロックサイクル数の少なくとも１つであるようにすることができる。
【００１８】
本発明の第１の側面の情報処理方法は、受信したコマンドに対するレスポンスを送信する非接触通信装置との間でデータを通信する情報処理装置の情報処理方法であって、前記情報処理装置は、送信手段と、受信手段と、計時手段と、検出手段とを含み、前記送信手段が、コマンドを送信し、前記受信手段が、前記コマンドに応じて、前記非接触通信装置により実行された処理の終了を示す処理終了情報を受信し、前記計時手段が、前記コマンドを送信したときから、前記処理終了情報を受信するまでの時間を表すレスポンス時間を計時し、前記検出手段が、前記処理に要した処理時間と、計時された前記レスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことを検出するステップを含む情報処理方法である。
【００１９】
本発明の第１の側面によれば、コマンドが送信され、前記コマンドに応じて、前記非接触通信装置により実行された処理の終了を示す処理終了情報が受信され、前記コマンドを送信したときから、前記処理終了情報を受信するまでの時間を表すレスポンス時間が計時され、前記処理に要した処理時間と、計時された前記レスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことが検出される。
【００２０】
本発明の第２の側面の情報処理装置、又はプログラムは、通信装置との間でデータを通信する情報処理装置、又は、通信装置との間でデータを通信する情報処理装置として、コンピュータを機能させるためのプログラムであって、前記通信装置から送信されたコマンドを受信する受信手段と、前記コマンドに応じた処理を実行する実行手段と、前記処理の終了を示す処理終了情報を取得する取得手段と、前記処理終了情報を送信する送信手段とを含む情報処理装置、又は、情報処理装置として、コンピュータを機能させるためのプログラムである。
【００２１】
前記取得手段では、前記処理終了情報として、前記処理に要した処理時間を特定するための特定情報を取得することができ、前記送信手段では、前記特定情報を送信することができる。
【００２２】
前記特定情報は、前記処理時間、前記処理の開始時刻及び終了時刻、前記処理に要したステップ数、又は、前記処理に要したクロックサイクル数の少なくとも１つであるようにすることができる。
【００２３】
本発明の第２の側面の情報処理方法は、通信装置との間でデータを通信する情報処理装置の情報処理方法であって、前記情報処理装置は、受信手段と、実行手段と、取得手段と、送信手段とを含み、前記受信手段が、前記通信装置から送信されたコマンドを受信し、前記実行手段が、前記コマンドに応じた処理を実行し、前記取得手段が、前記処理の終了を示す処理終了情報を取得し、前記送信手段が、前記処理終了情報を送信するステップを含む情報処理方法である。
【００２４】
本発明の第２の側面によれば、前記通信装置から送信されたコマンドが受信され、前記コマンドに応じた処理が実行され、前記処理の終了を示す処理終了情報が取得され、前記処理終了情報が送信される。
【００２５】
本発明の第３の側面の情報処理システムは、コマンドを送信する通信装置と、前記コマンドを受信し、前記コマンドに対するレスポンスを送信する非接触通信装置との間でデータを通信する情報処理システムであって、前記通信装置は、コマンドを送信する送信手段と、前記コマンドに応じて、前記非接触通信装置により実行された処理の終了を示す処理終了情報を受信する受信手段と、前記コマンドを送信したときから、前記処理終了情報を受信するまでの時間を表すレスポンス時間を計時する計時手段と、前記処理に要した処理時間と、計時された前記レスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことを検出する検出手段とを含み、前記非接触通信装置は、前記通信装置から送信されたコマンドを受信する受信手段と、前記コマンドに応じた前記処理を実行する実行手段と、前記処理の終了を示す処理終了情報を取得する取得手段と、前記処理終了情報を送信する送信手段とを含む情報処理システムである。
【００２６】
本発明の第３の側面によれば、前記通信装置において、コマンドが送信され、前記コマンドに応じて、前記非接触通信装置により実行された処理の終了を示す処理終了情報が受信され、前記コマンドを送信したときから、前記処理終了情報を受信するまでの時間を表すレスポンス時間が計時され、前記処理に要した処理時間と、計時された前記レスポンス時間とに基づいて、中継機器により不正にデータが中継されるリレーアタックが行われたことが検出される。また、前記非接触通信装置において、前記通信装置から送信されたコマンドが受信され、前記コマンドに応じた前記処理が実行され、前記処理の終了を示す処理終了情報が取得され、前記処理終了情報が送信される。
【発明の効果】
【００２７】
本発明によれば、リレーアタックの検出精度を向上させることができる。
【発明を実施するための最良の形態】
【００２８】
以下、発明を実施するための最良の形態（以下、本実施の形態という）について説明する。なお、説明は、以下の順序で行う。
１．本実施の形態
２．変形例
【００２９】
＜１．本実施の形態＞
[情報処理システムの構成例]
図３は、本実施の形態である情報処理システム１の構成例を示している。
【００３０】
この情報処理システム１は、リーダライタ２１、及び、リーダライタ２１との間で非接触近接無線通信を行う非接触ICカード２２により構成されている。
【００３１】
リーダライタ２１は、タイマ４１、RAM(random access memory)４２、ROM(read only memory)４３、記憶部４４、CPU(central processing unit)４５、無線インタフェース４６、及びアンテナ４７により構成される。
【００３２】
タイマ４１は、CPU４５の制御に従って、アンテナ４７からコマンドを送信したときから、送信したコマンドに応じて非接触ICカード２２により実行される処理の終了を示す処理終了情報として、例えば、送信したコマンドに対するレスポンスを受信するまでの時間（レスポンス時間）を計時して、CPU４５に供給する。
【００３３】
RAM４２は、CPU４５が各種の処理を行うとき、その処理の途中のデータ等を一時的に記憶（保持）する。
【００３４】
ROM４３は、CPU４５が各種の処理を行うためのプログラム、その他のデータ等を記憶する。
【００３５】
記憶部４４は、書き換え可能で、電源が遮断されても記録内容を保持できる、いわゆる不揮発性の記憶媒体からなり、例えば、ハードディスク、フラッシュメモリ、EEPROM（electrically erasable programmable read only memory）、MRAM（magnetoresistive random access memory（磁気抵抗メモリ））、又はFeRAM（ferroelectric random access memory（強誘電体メモリ））等により構成される。
【００３６】
記憶部４４は、CPU４５により書込みが指示されたデータや、CPU４５が各種の処理を行うためのプログラムの他、予め求められた送受信時間Ttを記憶している。
【００３７】
ここで、送受信時間Ttとは、リレーアタックが行われていない場合に、リーダライタ２１がコマンドを送信したときから、非接触ICカード２２が、そのコマンドに応じた処理を示すコマンド処理を開始するまでに要する所要時間Tt1と、リレーアタックが行われていない場合に、非接触ICカード２２がコマンド処理を実行し終わったときから、そのコマンド処理の処理結果を、コマンドに対するレスポンスとしてリーダライタ２１が受信するまでに要する所要時間Tt2との合計時間を表している。
【００３８】
また、記憶部４４に記憶されたプログラムやデータは、書き換えることにより、バージョンアップさせることができる。
【００３９】
CPU４５は、ROM４３や記憶部４４に記憶されているプログラムを実行することにより、各種の処理を実行する。
【００４０】
すなわち、例えば、CPU４５は、コマンドを生成し、無線インタフェース４６に供給する。そして、CPU４５は、無線インタフェース４６を制御して、アンテナ４７からコマンドを、非接触近接無線通信により送信させる。このとき、CPU４５は、レスポンス時間Twの計時を、タイマ４１に開始させる。
【００４１】
また、CPU４５は、無線インタフェース４６を制御して、アンテナ４７から、非接触ICカード２２により実行されたコマンド処理の処理時間Tp（を表すデータ）を含むレスポンスを受信させる。このとき、CPU４５は、レスポンス時間Twの計時を、タイマ４１に終了させる。そして、CPU４５は、計時により得られたレスポンス時間Twを、タイマ４１から取得する。
【００４２】
CPU４５は、記憶部４４から、送受信時間Ttを読み出し、読み出した送受信時間Ttと、無線インタフェース４６を制御して受信させたレスポンスに含まれる処理時間Tpとを加算し、その加算により得られる加算時間Td(=Tt+Tp)を取得する。
【００４３】
CPU４５は、タイマ４１により計時されたレスポンス時間Twと、取得した加算時間Tdとが一致するか否かを判定し、レスポンス時間Twと加算時間Tdとが一致しないと判定した場合、リレーアタックが行われたと判断する。そして、CPU４５は、リレーアタックが行われたと判断した場合、無線インタフェース４６からのレスポンスを破棄（無視）する。
【００４４】
また、CPU４５は、レスポンス時間Twと加算時間Tdとが一致すると判定した場合、リレーアタックが行われなかったと判断し、無線インタフェース４６からのレスポンスを、非接触ICカード２２からの正当なレスポンスとして取得して、記憶部４４等に供給して記憶させる。
【００４５】
なお、上述した説明において、一致とは、レスポンス時間Twと加算時間Tdとが、完全に一致することを含む他、レスポンス時間Twと加算時間Tdとの差が、所定の閾値以内である場合を含むものである。
【００４６】
無線インタフェース４６は、CPU４５からのコマンドを、アンテナ４７を介して出力する。また、無線インタフェース４６は、アンテナ４７を介して、外部から、コマンド処理に要した処理時間Tpを含むレスポンスを受信し、CPU４５に供給する。
【００４７】
アンテナ４７は、無線インタフェース４６からのコマンドを出力する。また、アンテナ４７は、外部からのレスポンスを受信し、無線インタフェース４６に供給する。
【００４８】
非接触ICカード２２は、タイマ６１、RAM６２、ROM６３、記憶部６４、CPU６５、無線インタフェース６６、及びアンテナ６７により構成される。
【００４９】
タイマ６１は、CPU６５の制御にしたがって、リーダライタ２１からのコマンドに応じたコマンド処理に要した処理時間Tpを計時し、CPU６５に供給する。
【００５０】
RAM６２は、CPU６５が各種の処理を行うとき、その処理の途中のデータ等を一時的に記憶する。
【００５１】
ROM６３は、CPU６５が各種の処理を行うためのプログラム、その他のデータ等を記憶する。
【００５２】
記憶部６４は、書き換え可能で、電源が遮断されても記録内容を保持できる、いわゆる不揮発性の記憶媒体からなり、例えば、ハードディスク、フラッシュメモリ、EEPROM、MRAM、またはFeRAMなどにより構成される。
【００５３】
記憶部６４は、CPU６５により書込みが指示されたデータや、CPU６５が各種の処理を行うためのプログラムを記憶する。また、記憶部６４に記憶されたプログラムやデータは、書き換えることにより、バージョンアップさせることができる。
【００５４】
CPU６５は、ROM６３や記憶部６４に記憶されているプログラムを実行することにより、各種の処理を実行する。
【００５５】
すなわち、例えば、CPU６５は、無線インタフェース６６を制御し、アンテナ６７を介してコマンドを受信させる。このとき、そのコマンドに応じたコマンド処理を実行するとともに、タイマ６１を制御して、処理時間Tpの計時を開始させる。
【００５６】
また、CPU６５は、コマンド処理を実行し終わったとき、タイマ６１を制御して、処理時間Tpの計時を終了させる。そして、CPU６５は、計時により得られた処理時間Tpを、タイマ６１から取得する。
【００５７】
さらに、CPU６５は、コマンド処理により得られた処理結果を、リーダライタ２１からのコマンドに対するレスポンスとし、そのレスポンスを、タイマ６１から取得した処理時間Tpを含むように構成して、無線インタフェース６６に供給する。
【００５８】
そして、CPU６５は、無線インタフェース６６を制御して、処理時間Tpを含むレスポンスを、非接触近接無線通信により、アンテナ６７を介して出力させる。
【００５９】
無線インタフェース６６は、CPU６５からのレスポンスを、アンテナ６７を介して出力する。また、無線インタフェース６６は、アンテナ６７を介して、外部からのコマンドを受信し、CPU６５に供給する。
【００６０】
アンテナ６７は、無線インタフェース６６からのレスポンスを出力する。また、アンテナ６７は、外部からのコマンドを受信し、無線インタフェース６６に供給する。
【００６１】
[リレーアタック検出処理の詳細]
以下の説明において、図４及び図５のタイミングチャートを参照して、情報処理システム１が、リレーアタックの検出を行うリレーアタック検出処理を説明する。
【００６２】
まず、図４のタイミングチャートを参照して、リレーアタックが行われていない場合について説明する。
【００６３】
ステップＳ１において、リーダライタ２１のCPU４５は、コマンドを生成し、無線インタフェース４６を制御して、生成したコマンドを、アンテナ４７を介して出力させる。同時に、ステップＳ２において、CPU４５は、レスポンス時間Twの計時を、タイマ４１に開始させる。
【００６４】
ステップＳ３において、非接触ICカード２２のCPU６５は、無線インタフェース６６を制御し、アンテナ６７を介してコマンドを受信させる。
【００６５】
そして、ステップＳ４において、CPU６５は、無線インタフェース６６を制御して受信させたコマンドに応じたコマンド処理を実行すると同時に、ステップＳ５において、タイマ６１を制御して、処理時間Tpの計時を開始させる。
【００６６】
なお、ステップＳ１の処理でコマンドが送信されたときから、ステップＳ４及びステップＳ５の処理でコマンド処理と処理時間Tpの計時が開始されるまでに、所要時間Tt1が経過している。
【００６７】
したがって、ステップＳ４及びステップＳ５において、コマンド処理と処理時間Tpの計時が開始されたとき、レスポンス時間Twは、所要時間Tt1に計時されている。
【００６８】
ステップＳ６において、CPU６５は、コマンド処理を実行し終わったとき、タイマ６１を制御して、処理時間Tpの計時を終了させる。そして、CPU６５は、計時により得られた処理時間Tpを、タイマ６１から取得する。
【００６９】
なお、上述したように、ステップＳ４及びステップＳ５の処理でコマンド処理と処理時間Tpの計時が開始されたとき、レスポンス時間Twは、所要時間Tt1に計時されている。
【００７０】
また、ステップＳ４及びステップＳ５の処理でコマンド処理と処理時間Tpの計時が開始されたときから、ステップＳ６において、コマンド処理が実行し終わると同時に処理時間Tpの計時が終了されるまでには、コマンド処理に要した処理時間Tpが経過している。
【００７１】
したがって、ステップＳ６において、処理時間Tpの計時が終了されたとき、レスポンス時間Twは、所要時間Tt1及び処理時間Tpを加算して得られる時間（Tt1+Tp）に計時されている。
【００７２】
ステップＳ７において、CPU６５は、コマンド処理により得られた処理結果を、リーダライタ２１からのコマンドに対するレスポンスとし、そのレスポンスを、タイマ６１から取得した処理時間Tpを含むように構成して、無線インタフェース６６に供給する。
【００７３】
そして、CPU６５は、無線インタフェース６６を制御して、処理時間Tpを含むレスポンスを、コマンド処理の終了を示す処理終了情報として、アンテナ６７を介して出力させる。
【００７４】
ステップＳ８において、リーダライタ２１のCPU４５は、無線インタフェース４６を制御して、非接触ICカード２２のアンテナ６７から送信されてくるレスポンスを、処理終了情報として、アンテナ４７を介して受信させる。
【００７５】
ステップＳ９において、CPU４５は、アンテナ４７がレスポンスを受信したとき、タイマ４１を制御して、レスポンス時間Twの計時を終了させる。そして、CPU４５は、計時により得られたレスポンス時間Twを、タイマ４１から取得する。
【００７６】
なお、上述したように、ステップＳ６において、処理時間Tpの計時が終了されたとき、レスポンス時間Twは、所要時間Tt1及び処理時間Tpを加算して得られる時間（Tt1+Tp）に計時されている。
【００７７】
また、ステップＳ６において、処理時間Tpの計時が終了されたときから、ステップＳ８及びステップＳ９において、ステップＳ７の処理で出力されたレスポンスがリーダライタ２１に受信されると同時にレスポンス時間Twの計時が終了されるまでに、所要時間Tt2が経過している。
【００７８】
したがって、ステップＳ８及びステップＳ９において、レスポンスが受信されると同時にレスポンス時間Twの計時が終了されたとき、レスポンス時間Twは、所要時間Tt1、処理時間Tp、及び、所要時間Tt2を加算して得られる時間（Tt1+Tp+Tt2）に計時されている。
【００７９】
ステップＳ１０において、CPU４５は、記憶部４４から、送受信時間Ttを読み出し、読み出した送受信時間Tt(=Tt1+Tt2)と、無線インタフェース４６を制御して受信させたレスポンスに含まれる処理時間Tpとを加算し、その加算により得られる加算時間Td(=Tt1+Tp+Tt2)を取得する。
【００８０】
CPU４５は、取得した加算時間Tdと、ステップＳ９の処理でタイマ４１から取得したレスポンス時間Twとが一致するか否かを判定し、その判定結果に基づいて、リレーアタックが行われているか否かを判断する。
【００８１】
いまの場合、レスポンス時間Twと加算時間Tdとは時間（Tt1+Tp+Tt2）であり、レスポンス時間Twと加算時間Tdとは一致することから、CPU４５は、中継機器によるリレーアタックは行われていないと判断し、非接触ICカード２２のアンテナ６７から送信されてくるレスポンスを、正当なデータとして取得して、例えば、記憶部４４に供給して記憶させる。
【００８２】
以上で、リレーアタック検出処理は終了される。
【００８３】
次に、図５のタイミングチャートを参照して、リレーアタックが行われている場合について説明する。
【００８４】
上述した図２を参照して説明したように、リレーアタックは、カード用中継機器とリーダライタ用中継機器を用いて実行されるが、図５では、図面が煩雑になるのを避けるため、カード用中継機器とリーダライタ用中継機器を、リーダライタ２１と非接触ICカード２２との間でやりとりされるデータを中継する中継機器２３として図示している。
【００８５】
ステップＳ１及びステップＳ２において、図４を参照して説明したステップＳ１及びステップＳ２と同一の処理が行われて、リーダライタ２１から、コマンドが出力される。
【００８６】
ステップＳ１及びステップＳ２の処理が行われた後、中継機器２３は、ステップＳ１の処理により、リーダライタ２１から出力されたコマンドを受信し、非接触近接無線通信により、非接触ICカード２２に送信する。
【００８７】
ステップＳ３において、非接触ICカード２２のCPU６５は、無線インタフェース６６を制御し、リーダライタ２２から中継機器２３を中継して送信されてくるコマンドを、アンテナ６７を介して受信させる。
【００８８】
そして、ステップＳ４において、CPU６５は、無線インタフェース６６を制御して受信させたコマンドに応じたコマンド処理を実行すると同時に、ステップＳ５において、タイマ６１を制御して、処理時間Tpの計時を開始させる。
【００８９】
ここで、図４を参照して説明したように、中継機器２３によるコマンドの中継が行われていない場合には、ステップＳ１の処理でコマンドが送信されたときから、ステップＳ４及びステップＳ５の処理でコマンド処理と処理時間Tpの計時が開始されるまでに、所要時間Tt1が経過している。
【００９０】
しかしながら、いまの場合、中継機器２３によるコマンドの中継が行われており、ステップＳ１及びステップＳ２の処理が行われた後、中継機器２３は、コマンドを、リーダライタ２１から非接触ICカード２２に中継するために、中継時間Ta1を要している。
【００９１】
したがって、ステップＳ１において、コマンドが送信されたときから、ステップＳ４及びステップＳ５において、コマンド処理と処理時間Tpの計時が開始されるまでに、所要時間Tt1の他、中継時間Ta1が経過している。
【００９２】
よって、ステップＳ４及びステップＳ５において、コマンド処理と処理時間Tpの計時が開始されたとき、レスポンス時間Twは、所要時間Tt1及び中継時間Ta1を加算して得られる時間（Tt1+Ta1）に計時されている。
【００９３】
ステップＳ６において、CPU６５は、コマンド処理を実行し終えたとき、タイマ６１を制御して、処理時間Tpの計時を終了させる。そして、CPU６５は、計時により得られた処理時間Tpを、タイマ６１から取得する。
【００９４】
なお、上述したように、ステップＳ４及びステップＳ５において、コマンド処理と処理時間Tpの計時が開始されたとき、レスポンス時間Twは、所要時間Tt1及び中継時間Ta1を加算して得られる時間(Tt1+Ta1)に計時されている。
【００９５】
また、ステップＳ４及びステップＳ５において、コマンド処理と処理時間Tpの計時が開始されたときから、ステップＳ６において、コマンド処理が実行し終わると同時に処理時間Tpの計時が終了されるまでには、コマンド処理に要した処理時間Tpが経過している。
【００９６】
したがって、ステップＳ６において、処理時間Tpの計時が終了されたとき、レスポンス時間Twは、所要時間Tt1、中継時間Ta1、及び処理時間Tpを加算して得られる時間（Tt1+Ta1+Tp）に計時されている。
【００９７】
ステップＳ７において、CPU６５は、コマンド処理により得られた処理結果を、リーダライタ２１からのコマンドに対するレスポンスとし、そのレスポンスを、タイマ６１から取得した処理時間Tpを含むように構成して、無線インタフェース６６に供給する。
【００９８】
そして、CPU６５は、無線インタフェース６６を制御して、処理時間Tpを含むレスポンスを、処理終了情報として、アンテナ６７を介して出力させる。
【００９９】
ステップＳ７の処理が行われた後、中継機器２３は、ステップＳ７の処理により、非接触ICカード２２のアンテナ６７から出力されたレスポンスを受信し、非接触近接無線通信を用いて、リーダライタ２１に送信する。
【０１００】
ステップＳ８において、リーダライタ２１のCPU４５は、無線インタフェース４６を制御して、非接触ICカード２２のアンテナ６７から中継機器２３を中継して送信されてくるレスポンスを、処理終了情報として、アンテナ４７を介して受信させる。
【０１０１】
ステップＳ９において、CPU４５は、アンテナ４７がレスポンスを受信したとき、タイマ４１を制御して、レスポンス時間Twの計時を終了させる。そして、CPU４５は、計時により得られたレスポンス時間Twを、タイマ４１から取得する。
【０１０２】
なお、上述したように、ステップＳ６において、処理時間Tpの計時が終了されたとき、レスポンス時間Twは、所要時間Tt1、中継時間Ta1、及び処理時間Tpを加算して得られる時間（Tt1+Ta1+Tp）に計時されている。
【０１０３】
ここで、図４を参照して説明したように、中継機器２３によるレスポンスの中継が行われていない場合には、ステップＳ６において、処理時間Tpの計時が終了されたときから、ステップＳ８及びステップＳ９において、ステップＳ７の処理で出力されたレスポンスがリーダライタ２１に受信されると同時にレスポンス時間Twの計時が終了されるまでに、所要時間Tt2が経過している。
【０１０４】
しかしながら、いまの場合、中継機器２３によるレスポンスの中継が行われており、ステップＳ７の処理が行われた後、中継機器２３は、レスポンスを、非接触ICカード２２からリーダライタ２１に中継するために、中継時間Ta2を要している。
【０１０５】
したがって、ステップＳ６において、処理時間Tpの計時が終了されたときから、ステップＳ８及びステップＳ９において、ステップＳ７の処理で出力されたレスポンスがリーダライタ２１に受信されると同時にレスポンス時間Twの計時が終了されるまでに、所要時間Tt2の他、中継時間Ta2が経過している。
【０１０６】
よって、ステップＳ８及びステップＳ９において、レスポンスが受信されると同時にレスポンス時間Twの計時が終了されたとき、レスポンス時間Twは、所要時間Tt1、中継時間Ta1、処理時間Tp、所要時間Tt2、及び、中継時間Ta2を加算して得られる時間（Tt1+Ta1+Tp+Tt2+Ta2）に計時されている。
【０１０７】
ステップＳ１０において、CPU４５は、記憶部４４から、送受信時間Ttを読み出し、読み出した送受信時間Ttと、無線インタフェース４６からの処理時間Tpとを加算し、その加算により得られる加算時間Td(=Tt+Tp)を取得する。
【０１０８】
CPU４５は、取得した加算時間Tdと、ステップＳ９の処理でタイマ４１から取得したレスポンス時間Twと一致するか否かを判定し、その判定結果に基づいて、リレーアタックが行われているか否かを判断する。
【０１０９】
いまの場合、加算時間Tdは、送受信時間Ttと処理時間Tpを加算して得られた時間(Tt+Tp)であり、レスポンス時間Twは、送受信時間Tt（=Tt1+Tt2）と処理時間Tpの他、中継時間Ta1及びTa2を加算して得られた時間(Tt+Tp+Ta1+Ta2)である。
【０１１０】
したがって、レスポンス時間Twと加算時間Tdとは一致しないため、CPU４５は、中継機器２３によるリレーアタックが行われていると判断し、非接触ICカード２２のアンテナ６７から送信されてくるレスポンスを破棄する。以上で、リレーアタック検出処理は終了される。
【０１１１】
以上説明したように、リレーアタック検出処理では、リーダライタ２１がレスポンス時間Twを計時し、計時したレスポンス時間Twと、加算時間Tdとが一致しない場合に、リレーアタックが行われていることを検出するようにした。
【０１１２】
したがって、例えば、予め決められた時間内にレスポンスを受信したか否かに応じてリレーアタックが行われていることを検出する従来のリレーアタック検出技術と比較して、リレーアタックの検出精度をより向上させることが可能となる。
【０１１３】
また、リレーアタック検出処理では、リレーアタックの検出を行う専用のハードウェアを追加することなく、精度良くリレーアタックの検出を行うことができるため、専用のハードウェアを追加してリレーアタックの検出を行う場合と比較して、情報処理システム１の製造コストを低減することが可能となる。
【０１１４】
＜２．変形例＞
ところで、中継機器２３が、コマンド処理を実行するときに予め想定されているクロック周波数よりも高いクロック周波数で、コマンド処理を実行させるように、非接触ICカード２２を制御した場合、コマンド処理の処理時間Tpは短縮される。
【０１１５】
すなわち、例えば、高いクロック周波数でコマンド処理が実行されて、処理時間Tpが、中継時間Ta(=Ta1+Ta2)だけ短縮された場合、リーダライタ２１において、レスポンス時間Twは、短縮された処理時間Tp'(=Tp-Ta)、送受信時間Tt、及び中継時間Taとを加算した時間Tw(=Tp+Tt)となり、加算時間Td(=Tp+Tt)と等しくなってしまい、実際にはリレーアタックが行われているにも拘わらず、リレーアタックが行われていないと誤って判断されてしまう。
【０１１６】
したがって、このような事態に対処するために、非接触ICカード２２において、コマンド処理を実行するときに用いられるクロック周波数を検出し、検出したクロック周波数が、コマンド処理を実行するときに予め想定されているクロック周波数よりも高い場合には、例えば、コマンド処理の実行を中止するように構成することが可能である。
【０１１７】
また、本実施の形態では、リーダライタ２１は、非接触ICカード２２からのレスポンスに含まれる処理時間Tpにより、コマンド処理の処理時間Tpを特定（取得）することとしたが、処理時間Tpを特定するための特定情報は、これに限定されない。すなわち、特定情報としては、処理時間Tpの他、コマンド処理における開始時刻及び終了時刻、コマンド処理に要したステップ数、又は、コマンド処理に要したクロックサイクル数の少なくとも１つを採用することが可能である。
【０１１８】
ここで、ステップ数とは、コマンド処理を実行するプログラムのソースコードの行数を表しており、クロックサイクル数とは、コマンド処理を実行するにあたり、非接触ICカード２２のCPU６５により実行される複数の命令それぞれを処理するために必要な時間を表している。
【０１１９】
なお、コマンド処理における開始時刻及び終了時刻を、特定情報として採用した場合には、リーダライタ２１において、終了時刻から開始時刻を減算して得られる時間が、ステップ数を特定情報として採用した場合には、リーダライタ２１において、例えば、ステップ数と、１ステップの処理に要する平均時間とを乗算して得られる時間が、それぞれ処理時間Tpとして特定される。
【０１２０】
また、クロックサイクル数を特定情報として採用した場合には、リーダライタ２１において、例えば、非接触ICカード２２のCPU６５により実行される複数の命令それぞれに対応するクロックサイクル数を加算して得られる時間が、処理時間Tpとして特定される。
【０１２１】
さらに、処理時間Tp、コマンド処理における開始時刻及び終了時刻、コマンド処理に要したステップ数、又は、コマンド処理に要したクロックサイクル数のうちの２つ以上を、特定情報として採用した場合には、特定情報に応じて特定される処理時間Tpそれぞれに基づいて、リレーアタックが行われているか否かを判断し、複数の判断結果に基づいて、最終的に、リレーアタックが行われているか否かを判断するようにしてもよい。
【０１２２】
ところで、複数の非接触ICカード２２それぞれの仕様等により、リーダライタ２１からのコマンドを受信したときからコマンド処理を実行するまでの時間や、コマンド処理を終了したときからレスポンスを送信するまでの時間は、それぞれ異なるため、複数の非接触ICカード２２毎に、送受信時間Ttは異なる。
【０１２３】
したがって、リーダライタ２１は、複数の非接触ICカード２２における平均的な送受信時間Tt’を保持しておいて、その送受信時間Tt'を、非接触ICカード２２固有の送受信時間Ttに修正してから、加算時間Td(=Tt+Tp)を算出するように構成することが可能である。
【０１２４】
すなわち、例えば、非接触ICカード２２では、非接触ICカード２２固有の送受信時間Ttと、複数の非接触ICカード２２における平均的な送受信時間Tt'との誤差(Tt-Tt')を算出し、算出した誤差(Tt-Tt')を、リーダライタ２１が保持する送受信時間Tt'を送受信時間Ttに修正するための修正値(Tt-Tt')として、リーダライタ２１に送信するようにしてもよい。
【０１２５】
この場合、リーダライタ２１において、非接触ICカード２２からの修正値(Tt-Tt')と、平均的な送受信時間Tt'とを加算することにより、非接触ICカード２２固有の送受信時間Ttを取得することができ、より精度の高い加算時間Tdを算出することができる。よって、より精度良くリレーアタックの検出を行うことが可能となる。
【０１２６】
また、本実施の形態では、非接触ICカード２２において、処理時間Tpを、そのまま、レスポンスに含めて送信することとしたが、処理時間Tpの改ざんを検出することができるように、処理時間Tpに、処理時間Tpの正当性を示すチェックバリューを付加するようにしてもよい。
【０１２７】
さらに、本実施の形態において、非接触ICカード２２のタイマ６１を、CPU６５以外の外部の装置と同期させないように構成することが可能である。この場合、外部の装置によるタイマ６１の操作を無効化できるため、外部から処理時間Tpが改ざんされることを防止することができる。
【０１２８】
また、上述したリレーアタック検出処理では、ステップＳ７において、非接触ICカード２２は、処理時間Tpを含むレスポンスを、処理終了情報として、リーダライタ２１に送信することとしたが、処理時間Tpとレスポンスとのいずれか一方を、処理終了情報として送信するようにしてもよい。
【０１２９】
すなわち、例えば、ステップＳ７において、非接触ICカード２２が、処理時間Tpとレスポンスとのいずれか一方を、処理終了情報として、リーダライタ２１に送信し、ステップＳ７の処理が行われた後に、他方を送信するようにしてもよい。
【０１３０】
この場合、処理時間Tpとレスポンスとを同時に送信する場合と比較して、処理時間Tpとレスポンスとの両方が不正に傍受されるリスクを低減できる。
【０１３１】
なお、ステップＳ７において、非接触ICカード２２が、処理時間Tpとレスポンスとのいずれか一方を、処理終了情報として送信した場合には、リーダライタ２１が、コマンドを送信したときから、処理時間Tpとレスポンスとのいずれか一方を受信するまでの時間が、レスポンス時間Twとして計時される。
【０１３２】
本発明は、リーダライタ２１と非接触ICカード２２とからなる情報処理システム１の他、例えば、認証情報を送信し、認証に成功した場合に自動車のドアをロック又は解除するキーレスエントリ等に対しても適用できる。
【０１３３】
また、本明細書において、リレーアタック検出処理を記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１３４】
さらに、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１３５】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１３６】
【図１】従来の非接触近接無線通信を説明する図である。
【図２】リレーアタックを説明する図である。
【図３】本発明を適用した情報処理システムを示すブロック図である。
【図４】リレーアタック検出処理を説明するタイミングチャートである。
【図５】リレーアタック検出処理を説明する他のタイミングチャートである。
【符号の説明】
【０１３７】
１  情報処理システム，  ２１  リーダライタ，  ２２  非接触ICカード，  ４１  タイマ，  ４２  RAM，  ４３  ROM，  ４４  記憶部，  ４５  CPU，  ４６  無線インタフェース，  ４７  アンテナ，  ６１  タイマ，  ６２  RAM，  ６３  ROM，  ６４  記憶部，  ６５  CPU，  ６６  無線インタフェース，  ６７  アンテナ
【図１】
2010102609.tif 000003
【図２】
2010102609.tif 000004
【図３】
2010102609.tif 000005
【図４】
2010102609.tif 000006
【図５】
2010102609.tif 000007