説明

通信方法、通信システム、通信装置およびプログラム

【課題】リーダを介してアクセスされるタグの非追跡可能性を、従来に比べて少ない処理量で達成できる通信方法を提供する。
【解決手段】管理装置7は、ST8の式を満たすk’を、テーブルデータTDの項目K,Klastの中から検索し、検索したエントリのIDを特定する。管理装置7は、上記検索で所定の値k’が、項目Kのなかから検索された場合には、そのエントリの項目Kの値を、そのエントリの項目Klastにコピーする。また、k’のハッシュ値を項目Kに設定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リーダを介してタグと管理装置との間の通信を、タグと管理装置との間でセキュアに行う通信方法、通信システム、通信装置およびプログラムに関する。
【背景技術】
【0002】
例えば、RFID(Radio Frequency Identification)は、マイクロチップ内に識別情報を格納させ、それを無線周波数で検出して、管理したオブジェクトに関する情報を自動的に検出するために用いられる。
RFID技術は、物理的あるいは視覚的なコンタクトをとることなく、無線周波数により多数のタグを瞬時に識別きるため、光学式バーコードよりも便利である。RFIDシステムは、自動化分野の多くに用いることができ、ユビキタスコンピュータ環境に有用である。
しかしながら、RFID技術は、便利であるという反面、セキュリティに関しての問題もある。例えば、RFIDがその情報を知りたい相手に発信するために、会社や個人の情報が漏れてしまうという問題がある。
例えば、あるユーザが持つタグがA地点でリーダ(リーダライタ)に反応して検出され、その後にB地点で検出されたとすると、当該ユーザがA地点からB地点に移動したことが攻撃者(盗聴者)に知られてしまい、当該ユーザのプライバシが侵害されてしまう。また、タグ内の秘密情報が漏れた場合でも、当該タグが関係した処理を追跡できないようにする必要がある。
このような問題を解決するために、タグとリーダとの通信を追跡できない、追跡不可能性を持つシステムが提案されている。当該システムは、攻撃者が物理的にタグを攻撃(タンパー)してメモリの秘密情報を入手したとしても、過去の多数のタグとリーダとの通信のなかで、このタグが関与したものを特定できない、Forward Securityの性質を持つ。これらの性質を持つシステムとして、下記非特許文献1に開示されたものがある。
【非特許文献1】Miyako Ohkubo, Koutarou Suzuki, and Shingo Kinoshita. “Cryptographic approach to privacy-friendly' tag.” In RFID Privacy Workshop, MIT, MA, USA, November 2003.
【発明の開示】
【発明が解決しようとする課題】
【0003】
上記非特許文献1のシステムでは、システム中のタグの総数をm、各タグに許されるリーダとの間のインタラクションの最大回数をnとして、1回のインタラクション毎にサーバがm*n回のハッシュ関数の演算を行う必要があり、処理負担が大きいという問題がある。
【0004】
本発明は上述した従来技術に鑑みてなされたものであり、リーダを介してアクセスされるタグの非追跡可能性を、従来に比べて少ない処理量で達成できる通信方法、通信システム、通信装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
上述した従来技術の問題点を解決し、上述した目的を達成するため、第1の観点の発明の通信方法は、タグ、リーダおよび管理装置の間で行われる通信方法であって、前記リーダが、乱数sを前記タグに送信する第1の工程と、前記タグが、第1の秘密データrと第2の秘密データkとを引数として得たハッシュ値を第1の秘密データri+1として前記リーダを介して前記管理装置に送信する第2の工程と、前記タグが、前記第1の工程で受信した前記乱数sと、前記第2の工程で生成した前記第1の秘密データri+1とを基に、第1の秘密データri+2を生成し、これを前記リーダを介して管理装置に送信する第3の工程と、前記リーダが、乱数sと、前記第3の工程で受信した前記第1の秘密データri+2とを、前記管理装置に送信する第4の工程と、前記管理装置が、前記第2の工程で受信した前記第1の秘密データri+1と、前記第4の工程で受信した乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定する第5の工程と、前記管理装置が、複数のタグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを参照して、前記第5の工程で特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索する第6の工程と、前記管理装置が、所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する第7の工程と有する。
【0006】
第2の観点の発明の通信システムは、タグ、リーダおよび管理装置を有する通信システムであって、前記リーダが、乱数sを前記タグに送信し、前記タグが、第1の秘密データrと第2の秘密データkとを引数として得たハッシュ値を第1の秘密データri+1として前記リーダを介して前記管理装置に送信し、前記タグが、前記受信した前記乱数sと、前記生成した前記第1の秘密データri+1とを基に、第1の秘密データri+2を生成し、これを前記リーダを介して管理装置に送信し、前記リーダが、乱数sと、前記受信した前記第1の秘密データri+2とを、前記管理装置に送信し、前記管理装置が、前記受信した前記第1の秘密データri+1と、前記受信した乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定し、前記管理装置が、複数のタグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを参照して、前記特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索し、前記管理装置が、所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する。
【0007】
第3の観点の発明の通信方法は、リーダを介してタグと通信を行う通信装置が実行する通信方法であって、第1の秘密データrと第2の秘密データkとを引数として前記タグが生成したハッシュ値である第1の秘密データri+1を前記タグから前記リーダを介して受信する第1の工程と、前記タグが前記リーダから受信した乱数sと前記第1の秘密データri+1とを基に生成した第1の秘密データri+2を前記タグから前記リーダを介して受信する第2の工程と、前記乱数sと前記第1の秘密データri+2とを前記リーダから受信する第3の工程と、前記第1の工程で受信した前記第1の秘密データri+1と、前記第3の工程で受信した乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定する第4の工程と、複数の前記タグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを参照して、前記第4の工程で特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索する第5の工程と、前記所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する第6の工程とを有する。
【0008】
第4の観点の発明の通信装置は、リーダを介してタグと通信を行う通信装置であって、第1の秘密データrと第2の秘密データkとを引数として前記タグが生成したハッシュ値である第1の秘密データri+1を前記タグから前記リーダを介して受信し、前記タグが前記リーダから受信した乱数sと前記第1の秘密データri+1とを基に生成した第1の秘密データri+2を前記タグから前記リーダを介して受信し、前記乱数sと前記第1の秘密データri+2とを前記リーダから受信するインターフェースと、複数の前記タグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを記憶するメモリと、前記インターフェースが受信した前記第1の秘密データri+1と、乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定し、前記テーブルデータを参照して、前記特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索し、前記所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する処理回路とを有する。
【0009】
第5の観点の発明のプログラムは、リーダを介してタグと通信を行う通信装置が実行するプログラムであって、第1の秘密データrと第2の秘密データkとを引数として前記タグが生成したハッシュ値である第1の秘密データri+1を前記タグから前記リーダを介して受信する第1の手順と、前記タグが前記リーダから受信した乱数sと前記第1の秘密データri+1とを基に生成した第1の秘密データri+2を前記タグから前記リーダを介して受信する第2の手順と、前記乱数sと前記第1の秘密データri+2とを前記リーダから受信する第3の手順と、前記第1の手順で受信した前記第1の秘密データri+1と、前記第3の手順で受信した乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定する第4の手順と、複数の前記タグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを参照して、前記第4の手順で特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索する第5の手順と、前記所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する第6の手順とを前記通信装置に実行させる。
【発明の効果】
【0010】
本発明によれば、リーダを介してアクセスされるタグの非追跡可能性を、従来に比べて少ない処理量で達成できる通信方法、通信システム、通信装置およびプログラムを提供することができる。
【発明を実施するための最良の形態】
【0011】
以下、本発明の実施形態に係わる通信システムについて説明する。
〔本発明の構成との対応関係〕
先ず、本実施形態の構成要素と、本発明の構成要素との対応関係を説明する。
RFタグ3が本発明のタグの一例であり、タグリーダ5が本発明のリーダの一例であり、管理装置7が本発明の管理装置および通信装置の一例である。
また、管理装置7が実行するプログラムPRG3が本発明のプログラムの一例である。
また、図3に示すテーブルデータTDが本発明のテーブルデータの一例である。
【0012】
図1は、本発明の実施形態に係わる通信システム1の全体構成図である。
図1に示すように、通信システム1は、例えば、RFタグ3、タグリーダ5および管理装置7を有する。
【0013】
図1に示す通信システム1において、RFタグ3およびタグリーダ5は、実際には複数存在する。
RFタグ3とタグリーダ5との間の通信は非セキュアであり、タグリーダ5と管理装置7との間の通信はセキュアである。
【0014】
通信システム1は、RFタグ3における演算量を小さいプロトコルを採用する。このプロトコルは、従来から提案されている様々なプロトコルで採用さているハッシュ関数に加えて、RFタグ3と管理装置7とで共用される2つの秘密データを用いる。また、管理装置7において後述するテーブルデータTDを使用する。これにより、管理装置7における計算量を削減できる。このように2つの秘密データとテーブルデータTDを用いることにより、管理装置7における計算の複雑さを少なくできると共に、リーダが取得した情報を基にしたタグの追跡を不可能にする追跡不可能性(untraceability)を完全に達成でき、タグからの情報が適切なものであるかを判断でき、且つ、タグの秘密情報が漏れた場合でも、当該タグが関係した処理を特定不可能にできる(detect forgery)。
【0015】
先ず、RFタグ3、タグリーダ5および管理装置7の構成について説明する。
図2は、図1に示すRFタグ3およびタグリーダ5の構成図である。
[RFタグ3]
図2に示すように、RFタグ3は、例えば、RF回路11、メモリ13および処理回路15を有する。
RF回路11は、タグリーダ5のRF回路21と所定の無線周波数により無線通信を行うアンテナコイルを含む回路である。
RF回路11は、RFタグ3がバッテリーを持たない受動型である場合には、タグリーダ5からの電波を受信し、共振作用により、起電力を発生する。RFタグ3の処理回路15は、当該起電力により動作する。
本実施形態において、メモリ13および処理回路15は対タンパ性の回路である。
【0016】
メモリ13は、例えば、処理回路15の処理を規定したプログラムPRG1、処理回路15の処理に用いられる各種のデータを記憶する。
メモリ13としては、EEPROMやFeRAMなどが用いられる。
【0017】
処理回路15は、メモリ13から読み出したプログラムPRG1を実行し、タグリーダ5との間の通信処理、管理装置7との間の認証処理、並びに内部での秘密データr,kの更新処理等を行う。
【0018】
[タグリーダ5]
図2に示すように、タグリーダ5は、例えば、RF回路21、インタフェース23、メモリ25および処理回路27を有する。
RF回路21は、RFタグ3のRF回路11と所定の無線周波数により無線通信を行う。
【0019】
インタフェース23は、セキュアなネットワークを介して管理装置7と通信を行う。
メモリ25は、例えば、処理回路27の処理を規定したプログラムPRG2、処理回路27の処理に用いられる各種のデータを記憶する。
処理回路27は、メモリ25から読み出したプログラムPRG2を実行し、RFタグ3および管理装置7の間の通信処理などを行う。
なお、処理回路27は、乱数発生機能を有している。
本実施形態においては、タグリーダ5は、RFタグ3からデータを読み出す機能の他、RFタグ3にデータを書き込む機能も有している。
【0020】
[管理装置7]
図3は、図1に示す管理装置7の構成図である。
図3に示すように、管理装置7は、例えば、インタフェース31、メモリ33および処理回路35を有する。
インタフェース31は、セキュアなネットワークを介してタグリーダ5と通信を行う。
メモリ33は、例えば、処理回路35の処理を規定したプログラムPRG3、処理回路35の処理に用いられる各種のデータを記憶する。
処理回路35は、メモリ33から読み出したプログラムPRG3を実行し、RFタグ3およびタグリーダ5との間の通信処理などを行う。
【0021】
[全体動作例]
図4および図5は、図1に示す通信システム1の全体動作例を説明するためのフロー図である。
ステップST1:
図2に示すタグリーダ5の処理回路27は、乱数sを発生する。
【0022】
ステップST2:
処理回路27は、RF回路21を介してRFタグ3にステップST1で生成した乱数sを送信する。
【0023】
ステップST3:
RFタグ3の処理回路15は、下記式(1)に示すように、メモリ13から読み出した秘密データr,kを基にハッシュ値を生成し、これを秘密データri+1に設定する。本実施形態において、「XOR」は排他的論理和を示す。h()はハッシュ関数を示す。
本実施形態において、RFタグ3の処理回路15および管理装置7の処理回路35がハッシュ値の生成に用いるハッシュ関数Hは、「H:{0,1}→{0,1}」で定義される。
【0024】
[数1]
i+1←h(r XOR k
…(1)
【0025】
ステップST4:
RFタグ3の処理回路15は、RF回路11を介して、ステップST3で生成した秘密データri+1を、タグリーダ5に送信する。
タグリーダ5の処理回路27は、RF回路21で受信した秘密データri+1を、インタフェース23を介して管理装置7に送信する。
処理回路27が用いる秘密データr,k(x=i,i+1,...)は、lビットのデータである。ここで、kxは、RFタグ3を識別するために用いられる複数のRFタグ3の各々において異なる値を示す。kの初期値は、複数のRFタグ3の各々において異なる値が割り当てられることを保証するために、予め計算した値を割り当てる。
通信システム1内のRFタグ3の数をmとし、各RFタグ3が認証を行う最高回数をnとした場合、不正な攻撃に対して十分な耐性を備える必要がある。そのため、通信システム1では、上記ハッシュ値を生成する場合に、以下に示すようにハッシュ・チェーン(hash chain)を構築する。
上記ハッシュ・チェーンは、秘密シードtから始まり、2番目のk2はh(t)であり、x番目のkはh(kx−1)である。ここで、「3≦x≦mn」である。本実施形態では、ハッシュ・チェーンを、mnより長くするように秘密シードtを選択する。各RFタグ3の秘密データkの初期値は、上記ハッシュ・チェーンのknp番目の要素から選択される。ここで、「1≦p≦m」が成り立つ。各秘密データkの値は、各RFタグ3のメモリ13に格納され、管理装置7のテーブルデータTDにおいて各RFタグ3の識別データIDRに対応付けられる。RFタグ3および管理装置7は、認証が成功すると、秘密データkを、ハッシュ・チェーンの次の値に更新する。
【0026】
ステップST5:
RFタグ3の処理回路15は、下記式(2)に示すように、ステップST3で生成した秘密データri+1と、メモリ13から読み出した秘密データkと、ステップST2で受信した乱数sとを基にハッシュ値を生成し、これを秘密データri+2とする。
【0027】
[数2]
i+2←h(ri+1 XOR k XOR s)
…(2)
【0028】
ステップST6:
RFタグ3の処理回路15は、RF回路11を介して、ステップST5で生成した秘密データri+2を、タグリーダ5に送信する。
タグリーダ5の処理回路27は、ステップST1で生成した乱数sと、RF回路21で受信した秘密データri+2とを、インタフェース23を介して管理装置7に送信する。
【0029】
ステップST7:
RFタグ3の処理回路15は、下記式(3)に示すように、ステップST5で生成した秘密データri+2と、メモリ13から読み出した秘密データkとを基にハッシュ値を生成し、これを秘密データri+3に設定する。
【0030】
[数3]
i+3←h(ri+2 XOR k
…(3)
【0031】
ステップST8:
管理装置7の処理回路35は、ステップST4で受信した秘密データri+1と、ステップST6で受信した乱数sおよび秘密データri+2とを基に、下記式(4)を満たす所定の値k’を、図3に示すテーブルデータTDの項目K,Klastのなかから検索する。
【0032】
[数4]
h(ri+1 XOR k’ XOR s)= ri+2
…(4)
【0033】
図3に示すように、テーブルデータTDの各エントリは、項目IDR,K,Klastを有し、それぞれRFタグ3のID、現在の秘密データk、前の秘密データk(現在の秘密データkに更新される前の値)を示している。テーブルデータTDでは、最初に項目IDR,Kにそれぞれ各RFタグ3の識別データIDと秘密データkの初期値とが設定され、項目Klastはnull値になっている。項目Klastは、非同期(desynchronization)問題を解決するために用いられる。管理装置7がRFタグ3の秘密データk(例えば、そのRFタグ3に対応する項目Kの値)を更新し、RFタグ3が攻撃あるいは通信エラーにより、その情報を管理装置7から受信しない場合でも、管理装置7はテーブルデータTDの項目Klastを参照することで、RFタグ3の以前の識別データIDを特定できる。
【0034】
ステップST9:
処理回路35は、上記検索で所定の値k’が、項目Kのなかから検索された場合には、下記式(5)に示すように、そのエントリの項目Kの値を、そのエントリの項目Klastにコピーする。また、処理回路35は、下記式(6)に示すように、k’のハッシュ値を項目Kに設定する。
【0035】
[数5]
(検索されたエントリの項目Klastの値)←(検索されたエントリの項目Kの値)
…(5)
【0036】
[数6]
(検索されたエントリの項目Kの値)←h(k’)
…(6)
【0037】
処理回路35は、上記検索で所定の値k’が、項目Klastのなかから検索された場合には、テーブルデータTDの更新を行わない。
なお、処理回路35は、ステップST9における検索によって特定されたエントリの識別データIDRと、その検索に用いられたタグリーダ5の識別データなどから、RFタグ3の利用履歴などを追跡可能な情報を取得できる。このような情報は、処理回路35が生成してもよいし、処理回路35が取得した情報を基に、管理装置7以外のサーバ装置が行っても良い。
【0038】
ステップST10:
管理装置7の処理回路35は、下記式(7)に示すように、ステップST6で受信した秘密データri+2と、ステップST8で検索した所定の値k’とを基にハッシュ値を生成し、これを秘密データri+3’に設定する。
【0039】
[数7]
i+3’←h(ri+2 XOR k’)
…(7)
【0040】
ステップST11:
管理装置7の処理回路35は、ステップST10で生成した秘密データri+3’をタグリーダ5を介してRFタグ3に送信する。
【0041】
ステップST12:
RFタグ3の処理回路15は、ステップST11で受信した秘密データri+3’と、ステップST7で生成した秘密データri+3とを比較し、一致していればステップST13に進む。
【0042】
ステップST13:
RFタグ3の処理回路15は、下記式(8)に示すように、ステップST7で生成した秘密データri+3と、秘密データkとを基にハッシュ値を生成し、これを秘密データri+4に設定する。
【0043】
[数8]
i+4←h(ri+3 XOR k
…(8)
【0044】
ステップST14:
RFタグ3の処理回路15は、下記式(9)に示すように、秘密データkのハッシュ値を生成し、これを秘密データkj+1に設定する。
【0045】
[数9]
j+1←h(k
…(9)
【0046】
[RFタグ3の動作例]
図6は、図1に示すRFタグ3の動作例を説明するためのフローチャートである。
ステップST21:
図2に示すRF回路11は、タグリーダ5のRF回路21と無線通信を行って、タグリーダ5が生成した乱数sを受信する。
【0047】
ステップST22:
RFタグ3の処理回路15は、上記式(1)に示すように、メモリ13から読み出した秘密データr,kを基にハッシュ値を生成し、これを秘密データri+1に設定する。
【0048】
ステップST23:
RFタグ3の処理回路15は、RF回路11を介して、ステップST22で生成した秘密データri+1を、タグリーダ5に送信する。
【0049】
ステップST24:
RFタグ3の処理回路15は、上記式(2)に示すように、ステップST23で生成した秘密データri+1と、メモリ13から読み出した秘密データkと、ステップST21で受信した乱数sとを基にハッシュ値を生成し、これを秘密データri+2に設定する。
【0050】
ステップST25:
RFタグ3の処理回路15は、RF回路11を介して、ステップST24で生成した秘密データri+2を、タグリーダ5に送信する。
【0051】
ステップST26:
RFタグ3の処理回路15は、上記式(3)に示すように、ステップST24で生成した秘密データri+2と、メモリ13から読み出した秘密データkとを基にハッシュ値を生成し、これを秘密データri+3に設定する。
【0052】
ステップST27:
RFタグ3の処理回路15は、RF回路11が管理装置7からの応答を受信したか否かを判断し、受信したと判断した場合にステップST28に進み、そうでない場合にステップST21に戻る。
【0053】
ステップST28:
RFタグ3の処理回路15は、RF回路11が上記受信した応答がRESET信号であるか否かを判断し、RESET信号であると判断した場合にはステップST21に戻り、そうでない場合にはステップST29に進む。
【0054】
ステップST29:
RFタグ3の処理回路15は、RF回路11が上記受信した応答がFIN信号であるか否かを判断し、FIN信号であると判断した場合には処理を終了し、そうでない場合にはステップST30に進む。
【0055】
ステップST30:
RFタグ3の処理回路15は、RF回路11が上記受信した応答である秘密データri+3’と、ステップST26で生成した秘密データri+3とを比較し、一致していればステップST31に進み、そうでない場合には処理を終了する。
【0056】
ステップST31:
RFタグ3の処理回路15は、上記式(8)に示すように、ステップST26で生成した秘密データri+3と、秘密データkとを基にハッシュ値を生成し、これを秘密データri+4に設定する。
【0057】
ステップST32:
RFタグ3の処理回路15は、上記式(9)に示すように、秘密データkのハッシュ値を生成し、これを秘密データkj+1に設定する。
【0058】
RFタグ3の処理回路15は、図6に示す処理を、RF回路11がRF回路21からエネルギが提供されなくなったとき、強制的に終了する。
【0059】
[タグリーダ5の動作例]
図7は、図1に示すタグリーダ5の動作例を説明するためのフローチャートである。
ステップST41:
図2に示すタグリーダ5の処理回路27は、乱数sを発生する。
【0060】
ステップST42:
タグリーダ5の処理回路27は、RF回路21を介してRFタグ3にステップST1で生成した乱数sを送信する。
【0061】
ステップST43:
タグリーダ5の処理回路27は、RFタグ3からの秘密データri+1,ri+2をRF回路21が受信するまで、例えば、予め決められた時間Tだけ待機する。
【0062】
ステップST44:
タグリーダ5の処理回路27は、待機時間が上記時間Tを経過していないか否かを判断し、経過していないと判断するとステップST45に進み、そうでない場合にはステップST45に進む。
【0063】
ステップST45:
タグリーダ5の処理回路27は、RF回路21を介してRFタグ3に、FIN信号を送信する。
【0064】
ステップST46:
タグリーダ5の処理回路27は、RF回路21を介して管理装置7に、ステップST41で生成した乱数sと、RFタグ3から受信した秘密データri+1,ri+2とを送信する。
【0065】
ステップST47:
タグリーダ5の処理回路27は、管理装置7から応答を受信する。
【0066】
ステップST48:
タグリーダ5の処理回路27は、ステップST47で受信した応答が秘密データri+3’であるか否かを判断し、そうであると判断するとステップST49に進み、そうでないと判断するとステップST50に進む。
【0067】
ステップST49:
タグリーダ5の処理回路27は、RF回路21を介してRFタグ3に、上記受信した秘密データri+3’を送信する。
【0068】
ステップST50:
タグリーダ5の処理回路27は、ステップST47で受信した応答がCOLLISION信号であるか否かを判断し、そうであると判断するとステップST51に進み、そうでないと判断するとステップST52に進む。
【0069】
ステップST51:
タグリーダ5の処理回路27は、RF回路21を介してRFタグ3に、RESET信号を送信する。
【0070】
ステップST52:
タグリーダ5の処理回路27は、RF回路21を介してRFタグ3に、FIN信号を送信する。
【0071】
[管理装置7]
図8は、図3に示す管理装置7の動作例を説明するためのフローチャートである。
ステップST61:
管理装置7のインタフェース31は、タグリーダ5から、乱数s、秘密データri+1,ri+2を受信し、これらをメモリ33に書き込む。
【0072】
ステップST62:
管理装置7の処理回路35は、メモリ33から読み出した乱数s、秘密データri+1,ri+2を基に、上記式(4)を満たす所定の値k’を、メモリ33から読み出した図3に示すテーブルデータTDの項目K,Klastのなかから検索する。
【0073】
ステップST63:
管理装置7の処理回路35は、ステップST62の検索で、1個以上のk’が検索されたと判断するとステップST63に進み、そうでない場合にはステップST64に進む。
【0074】
ステップST64:
管理装置7の処理回路35は、インタフェース31を介してタグリーダ5にFAILURE信号を送信する。
【0075】
ステップST65:
管理装置7の処理回路35は、ステップST62の検索で、1個のk’が検索されたと判断するとステップST67に進み、そうでない場合にはステップST66に進む。
【0076】
ステップST66:
管理装置7の処理回路35は、インタフェース31を介してタグリーダ5にCOLLISION信号を送信する。
【0077】
ステップST67:
管理装置7の処理回路35は、ステップST62の検索で所定の値k’が、項目Kのなかから検索されたと判断するとステップST68に進み、そうでない場合には処理を終了する。
【0078】
ステップST68:
管理装置7の処理回路35は、上記式(5)に示すように、ステップST62で所定の値k’が検索されたエントリの項目Kの値を、そのエントリの項目Klastにコピーする。
また、処理回路35は、上記式(6)に示すように、k’のハッシュ値を当該エントリの項目Kに設定する。
なお、処理回路35は、上記検索で所定の値k’が、項目Klastのなかから検索された場合には、テーブルデータTDの更新を行わない。
【0079】
ステップST69:
管理装置7の処理回路35は、上記式(7)に示すように、ステップST61で受信した秘密データri+2と、ステップST62で検索した所定の値k’とを基にハッシュ値を生成し、これを秘密データri+3’に設定する。
そして、処理回路35は、インタフェース31を介して、上記生成した秘密データri+3’をタグリーダ5に送信する。
【0080】
以上説明したように、通信システム1によれば、管理装置7において上述したようにテーブルデータTDを用いてRFタグ3のIDを特定することで、RFタグ3の総数をm、各タグに許されるタグリーダ5との間のインタラクションの最大回数をnとした場合に、ハッシュ関数の演算を2m回にでき、非特許文献1のシステムのm*n回に対して管理装置7の演算量を大幅に削減できる。
すなわち、非特許文献1のシステムでは、引数の初期値として各タグに予め割り当てられたシードを用い、各タグについて、前回のハッシュ値を引数としてハッシュ値を順に生成する。そして、各タグについて、各段階で生成されたハッシュ値とタグから入力した値とを基にIDを検索する。そのため、各タグのID検索に、n回のハッシュ演算を行う必要があり、m個のタグについては合計m*n回のハッシュ演算を行う必要がある。
これに対して、通信システム1では、上述したテーブルデータTDを用いることで、各タグについて、上記式(4)を基にk’を生成するためのハッシュ演算と、テーブルデータTDを構成するためのハッシュ演算との2回のみを行えばよい。そのため、RFタグ3の数がm(テーブルデータTDのエントリ数がm)の場合には、合計m*n回のハッシュ演算を行えばよく、管理装置7の演算量を大幅に削減できる。
【0081】
また、通信システム1によれば、以下に示すように十分なセキュリティ性を持つことができる。
以下、上述した通信システム1のセキュリティ性について説明する。
ハッシュ値h()はランダムなオラクル(oracle)と仮定すると、通信システム1は、RFタグ3のメモリ13の不正変更を除いて全ての想定できる攻撃に対して安全である。また一方、メモリ13の情報をアップデートすることによって、この攻撃が成功する可能性は低くなる。下記は、各々の攻撃に対するセキュリティ分析である。
【0082】
傍受による攻撃については、傍受によって、攻撃者は1つの認証プロセスの間に乱数sと3つの連続した秘密データrを集めることができる。sはランダムな値なので、RFタグ3を追跡することはできない。その結果、攻撃者は値rを利用しなければならない。その一方、もしhがランダムなオラクルと仮定すると、RFタグ3のkjを知らない攻撃者は、ランダムな値からRFタグ3の各々のアウトプットを区別できない。ランダムなオラクルのアウトプットから本物のランダムな値を区別する唯一の方法は、同じインプットでランダムなオラクルを再び生成し、同じ出力を得ることである。その一方、攻撃者はhのインプットを知ることができない。これは、攻撃者は、kがh()のパラメータのひとつであるということを知らないためである。その結果、攻撃者はRFタグ3のアウトプットをランダムな値のように考える。従って、RFタグ3からの値の全てが本物のランダムな値又は、攻撃者にはランダムな値として見られたため、攻撃者はRFタグ3を追跡できない。
【0083】
偽造については、攻撃者はRFタグ3のkを知らないため、ri+1からri+2を生成できない攻撃者は反復攻撃を行う必要がある。その結果、攻撃者は2つのランダムな値を送ることができ、この攻撃が特殊なタグを偽造する可能性はl・2l−1である。なぜなら、KとKlastの項目に2つの値があり、上記式(4)の検証のために使われるためと、それがシステムの任意のタグを偽造する可能性はm/2l−1と無視できる程度になる。一方、攻撃者は正規の相互作用の偽造によって、反復攻撃することを試みる可能性がある。ここで、sは偽造によって使われ、タグリーダ5が送信したものとは違い、攻撃者の反復攻撃は成功しない。
【0084】
乱数sを制御する攻撃については、攻撃者がRFタグ3の応答を生成すること試みるが、乱数sを制御することによって追跡しなければならないパターンは多数ある。攻撃者が乱数sを送る前にri+1を推測することが出来れば、攻撃者はデータの応答が継続的に値ri+1を乱数Sとして送ることによってデータの返答がいつも同じにできる。その場合、ri+2はいつも固定値h(k)で、攻撃者はタグを追跡できる。一方、秘密でータkは秘密の値のため、攻撃者はri+1を予測できず、この攻撃によりタグを追跡することはできない。
【0085】
タグのアップデートによる攻撃については、攻撃者はタグ3の秘密キーをアップデートすることによって、非同期攻撃を試みる可能性がある。一方、管理装置7の助けなしで、攻撃者はri+3を知ることができない。なぜなら、攻撃者は現在のkjを知らないし、kはri+2からri+3の計算を必要とするためである。
【0086】
データベースのアップデートによる攻撃については、攻撃者は、管理装置7のデータベースとタグの間の非同期kを介入者攻撃することを試みる可能性がある。通信システム1は、タグ3がタグリーダ5から離れてることと、攻撃者が二つのコメントの間のデータを配信することが出来ると推測する。タグリーダ5が認証処理を開始した時、攻撃者はsをタグリーダ5からRFタグ3に移動し、その後、タグリーダ5にri+1とri+2を移動する。それから、管理装置7がkをアップデートする。その後、タグリーダ5がRFタグ3のkを更新したにも係わらず、サーバはri+3’を送信する。この時、攻撃者がそれをタグ3に配信しなければ、kはデータベースとタグの間で異なる。もし、管理装置7がIDを見つけるために最新のkのみを使用する場合、このタグ3は使用できなくなる。一方、管理装置7は、もう一つのkを記憶し、それはKlastの項目において、最新のkが設定される。これを利用して、管理装置7は、タグ3を識別する。タグ3がKlastの項目を使って識別してる時、管理装置7は、kをアップデートしないため、項目KとKlastの2つは、非同期攻撃からシステムを守るのに充分である。
【0087】
エネルギーの制御による攻撃については、タグ3のキャパシターが一度に全てのプロセスを操作するため充分なキャパシティを持たないと仮定し、それから、攻撃者が任務操作を除外したい時に、タグの処理をいつでも止めることが出来ると仮定する。この仮定では、他のスキームが弱くなる可能性がある。例えば、上記非特許文献1のシステムは、データを送り、メモリのコンテンツをアップデートします。攻撃者は、タグ3がメモリの内容を更新する直前に、タグの認証処理を停止させ、毎回同じ応答を取得する。しかしながら、通信システム1は、このような攻撃に十分な耐性がある。すなわち、通信システム1は、データを送信する前にそれを更新する。これは、このような攻撃に対してのタグ3の応答のバラツキを保証する。
【0088】
ハッシュ・チェーンに基づく攻撃については、タグの認証処理の最大回数nは、メモリタンパーに基づく攻撃に対して耐えうるために十分に多くする必要がる。最初に攻撃者はタグのk,ktamperを不正に読み出す。その後、攻撃者は、以下に示すようにして、他のターゲットのタグのk、ktargetを取得する。ハッシュ・チェーン内のktamperより1つ前のktamperが幸運にも攻撃者が取得したとする。攻撃者は、乱数sを用いて管理装置に問い合わせを行い、ri+1,ri+2を取得する。攻撃者は、ktamperからスタートしたハッシュ・チェーンの全ての値であるk’との間で一致するか否かのテストを行って、ktamperを検索できる。これは、ハッシュ・チェーンの長さが2ではなく、2l/2と短いためである。このような問題は、通信システム1のみならず、ハッシュ・チェーンを用いる全てのシステムに存在する。
【0089】
メモリタンパーによる攻撃については、攻撃者がタグ3のメモリをタンパーすることによってkを取得すると共に、管理装置と様々なタグとの間の通信を傍受した場合に、攻撃者はタグの以前のイベントを追跡できる。攻撃者は、固定値kと、傍受により収集した情報とを用いて上記式(4)をテストする。そして、攻撃者は、傍受した情報のいずれかが当該テストに合格した場合に、その情報を特定する。しかしながら、このフォアワード・トレースは、kの最後の更新前に生成された情報が通信で使われる場合には適用できない。すなわち、攻撃者は、カレントのkを知り得た場合でも、kは一方向性関数hによって更新されているため、タグ3の以前のkを知りえない。従って、フォアワード・トレースは、短期間に限定され、連続して認証が行われるようなプロセスには用いることができない。
【0090】
本発明は上述した実施形態には限定されない。
すなわち、当業者は、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
【図面の簡単な説明】
【0091】
【図1】図1は、本発明の実施形態の通信システムの全体構成図である。
【図2】図2は、図1に示すRFタグおよびタグリーダの構成図である。
【図3】図3は、図1に示す管理装置の構成図である。
【図4】図4は、図1に示す通信システムの全体動作例を説明するためのフロー図である。
【図5】図5は、図1に示す通信システムの全体動作例を説明するための図4の続きのフロー図である。
【図6】図6は、図1に示すRFタグの動作例を説明するためのフローチャートである。
【図7】図7は、図1に示すタグリーダの動作例を説明するためのフローチャートである。
【図8】図8は、図3に示す管理装置の動作例を説明するためのフローチャートである。
【符号の説明】
【0092】
1…通信システム、3…RFタグ、5…タグリーダ、7…管理装置、11…RF回路、13…メモリ、15…処理回路、21…RF回路、23…インタフェース、25…メモリ、27…処理回路、31…インタフェース、33…メモリ、35…処理回路、TD…テーブルデータ

【特許請求の範囲】
【請求項1】
タグ、リーダおよび管理装置の間で行われる通信方法であって、
前記リーダが、乱数sを前記タグに送信する第1の工程と、
前記タグが、第1の秘密データrと第2の秘密データkとを引数として得たハッシュ値を第1の秘密データri+1として前記リーダを介して前記管理装置に送信する第2の工程と、
前記タグが、前記第1の工程で受信した前記乱数sと、前記第2の工程で生成した前記第1の秘密データri+1とを基に、第1の秘密データri+2を生成し、これを前記リーダを介して管理装置に送信する第3の工程と、
前記リーダが、乱数sと、前記第3の工程で受信した前記第1の秘密データri+2とを、前記管理装置に送信する第4の工程と、
前記管理装置が、前記第2の工程で受信した前記第1の秘密データri+1と、前記第4の工程で受信した乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定する第5の工程と、
前記管理装置が、複数のタグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを参照して、前記第5の工程で特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索する第6の工程と、
前記管理装置が、所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する第7の工程と
有する通信方法。
【請求項2】
前記管理装置が、前記第3の工程で受信した前記第1の秘密データri+2と、前記第5の工程で特定した前記所定の値k’とを基に第1ハッシュ値r’i+3を生成し、これを前記タグに送信する第8の工程と、
前記タグが、前記第3の工程で生成した前記第1の秘密データri+2と、前記第2の秘密データkとを基に、第2のハッシュ値ri+3を生成し、当該第2のハッシュ値ri+3と、前記第8の工程で受信した前記第1ハッシュ値r’i+3とが一致したことを条件に、前記第2の秘密データkのハッシュ値を、更新後の第2の秘密データkj+1として設定する第9の工程と
をさらに有する請求項1に記載の通信方法。
【請求項3】
タグ、リーダおよび管理装置を有する通信システムであって、
前記リーダが、乱数sを前記タグに送信し、
前記タグが、第1の秘密データrと第2の秘密データkとを引数として得たハッシュ値を第1の秘密データri+1として前記リーダを介して前記管理装置に送信し、
前記タグが、前記受信した前記乱数sと、前記生成した前記第1の秘密データri+1とを基に、第1の秘密データri+2を生成し、これを前記リーダを介して管理装置に送信し、
前記リーダが、乱数sと、前記受信した前記第1の秘密データri+2とを、前記管理装置に送信し、
前記管理装置が、前記受信した前記第1の秘密データri+1と、前記受信した乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定し、
前記管理装置が、複数のタグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを参照して、前記特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索し、
前記管理装置が、所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する
通信システム。
【請求項4】
リーダを介してタグと通信を行う通信装置が実行する通信方法であって、
第1の秘密データrと第2の秘密データkとを引数として前記タグが生成したハッシュ値である第1の秘密データri+1を前記タグから前記リーダを介して受信する第1の工程と、
前記タグが前記リーダから受信した乱数sと前記第1の秘密データri+1とを基に生成した第1の秘密データri+2を前記タグから前記リーダを介して受信する第2の工程と、
前記乱数sと前記第1の秘密データri+2とを前記リーダから受信する第3の工程と、
前記第1の工程で受信した前記第1の秘密データri+1と、前記第3の工程で受信した乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定する第4の工程と、
複数の前記タグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを参照して、前記第4の工程で特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索する第5の工程と、
前記所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する第6の工程と
を有する通信方法。
【請求項5】
リーダを介してタグと通信を行う通信装置であって、
第1の秘密データrと第2の秘密データkとを引数として前記タグが生成したハッシュ値である第1の秘密データri+1を前記タグから前記リーダを介して受信し、前記タグが前記リーダから受信した乱数sと前記第1の秘密データri+1とを基に生成した第1の秘密データri+2を前記タグから前記リーダを介して受信し、前記乱数sと前記第1の秘密データri+2とを前記リーダから受信するインターフェースと、
複数の前記タグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを記憶するメモリと、
前記インターフェースが受信した前記第1の秘密データri+1と、乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定し、前記テーブルデータを参照して、前記特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索し、前記所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する処理回路と
を有する通信装置。
【請求項6】
リーダを介してタグと通信を行う通信装置が実行するプログラムであって、
第1の秘密データrと第2の秘密データkとを引数として前記タグが生成したハッシュ値である第1の秘密データri+1を前記タグから前記リーダを介して受信する第1の手順と、
前記タグが前記リーダから受信した乱数sと前記第1の秘密データri+1とを基に生成した第1の秘密データri+2を前記タグから前記リーダを介して受信する第2の手順と、
前記乱数sと前記第1の秘密データri+2とを前記リーダから受信する第3の手順と、
前記第1の手順で受信した前記第1の秘密データri+1と、前記第3の手順で受信した乱数sと、所定の値k’とを基にして得たハッシュ値が、前記第1の秘密データri+2となる前記所定の値k’を特定する第4の手順と、
複数の前記タグの識別データについて当該識別データと第1の値Kと第2の値Klastとを対応付けて示すテーブルデータを参照して、前記第4の手順で特定した所定の値k’と前記第1の値Kあるいは前記第2の値Klastが一致するエントリを検索する第5の手順と、
前記所定の値k’と前記第1の値Kとが一致するエントリが前記テーブルデータ内に存在した場合に、前記第1の値Kを第2の値Klastにコピーし、前記所定の値k’のハッシュ値を前記第1の値Kに設定する第6の手順と
を前記通信装置に実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2007−189643(P2007−189643A)
【公開日】平成19年7月26日(2007.7.26)
【国際特許分類】
【出願番号】特願2006−7888(P2006−7888)
【出願日】平成18年1月16日(2006.1.16)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】