説明

無線タグ管理サーバ、無線タグおよび無線タグ管理システム

【課題】RFIDシステムは、タグとサーバとの間での同期が崩される攻撃方法が存在する。
【解決手段】
一方向性ハッシュ関数演算部318は所定の長さのハッシュ値であるビット列に変換する。比較部320は2つのビット列の異同を比較する。乱数生成部342はランダムなビット列を生成する。情報記憶部310はふたつの異なるビット列Sとビット列P、ビット列R、ビット列S無線タグとの共有鍵であるビット列K、および共有鍵Kに基づいて無線タグ内で生成されたハッシュ値であるビット列TKを格納する。更新部344はビット列Sとビット列Rとの結合ビット列を入力として生成されるハッシュ値であるビット列にSを置き換え、更新前のビット列Sの値をビット列Pに代入する。比較部320は、ビット列Kに基づいて生成されたビット列TK’と前記ビット列TKとを比較し、両者が一致する場合、更新部はビット列Sとビット列Pとを更新する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は安全性の高い無線タグ管理サーバ、無線タグおよび無線タグ管理システムに関する。
【背景技術】
【0002】
近年、物流管理や工業製品の生産履歴管理等において、RFID(Radio Frequency Identification)システムが使われるようになってきた。RFIDシステムは、商品等に取り付けられたタグ(以下単に「タグ」という。)と、タグを識別するために各タグ固有に付けられた識別子(以下「ID」という。)を管理するサーバ(以下単に「サーバ」という。)とを含んでいる。
【0003】
タグはその中に無線アンテナと、ID等のデータを格納するためのメモリと、データの計算や格納をするためのマイクロチップを含んでいる。サーバはタグから無線アンテナを介して読み取ったIDを用いて商品等を管理する。通常、サーバはタグからIDを読み取ると、タグに格納されているIDを変更し、サーバ自身も変更後のIDを格納することによりIDを更新すること(以後このことを「IDの同期」という。)が行われる。万が一ある商品に付けられたタグのIDが漏洩しても、その後そのIDが更新されれば、IDからその商品を特定されることを防止できるからである。
【0004】
サーバとタグとの間でIDの同期を行うには、大きく3つのステップがある。1つ目は、サーバがタグに対して行う問い合わせ(以後「クエリ」(Query)という。)のステップである。2つ目は、タグからサーバへの応答(以後「レスポンス」(Response)という。)である。3つ目は、サーバがタグに対して行う情報の更新(以後「アップデート」(Update)という。)である。
【0005】
RFIDシステムは従来のバーコードを用いたシステムと比べて以下の3つの利点がある。すなわち、商品等の自動認識が可能となること、非接触で認識できること、一度に多数のタグを認識できること、の3点である。このような利点があることから、RFIDシステムは物流管理や工業製品等の生産履歴管理の革新技術となると期待されている。
【0006】
ところで、タグの種類によっては各種演算や外部とのデータの送受信をするための電池を内蔵しているもの(アクティブタグ)もあるが、物流管理や工業製品等の生産履歴管理の用途においては、商品等に取り付けても目立たない、小型かつ安価なパッシブタグが多く用いられる。パッシブタグは内蔵電池を有さず、サーバとパッシブタグとの間でデータをやりとりするリーダ・ライタからの伝送電力で駆動する。リーダ・ライタから離れると動作が停止するため、計算時間のかかる複雑な演算をパッシブタグが行うことは困難である。
【0007】
このため、パッシブタグはサーバとIDの同期を取るに際し、その伝送経路を、例えばSSL(Secure Socket Layer)等の暗号技術を用いて暗号化することができない。悪意を持った攻撃者が伝送経路に介入し、サーバとパッシブタグとの間のIDの同期を崩すと、物流管理や工業製品等の生産履歴管理ができなくなるという問題が起こり得る。以後、悪意を持った攻撃者が伝送経路に介入し、サーバとパッシブタグとの間のIDの同期を崩す試みを、単に「攻撃」といい、そのような攻撃を試みる者を「攻撃者」という。また、単に「タグ」という場合はパッシブタグを意味するものとする。
【0008】
RFIDシステムが安全であるためには以下の3つのセキュリティ要件が必要とされている。すなわち、タグのレスポンスからそのタグを特定できない性質(以後「IND」(Indistinguishabilityの略)という。)、タグの移動履歴を追跡できない性質(以後「BU」(Backward Untraceabilityの略)という。)、タグなりすまし攻撃に対して安全な性質(以後「RS」(Resistance against Tag Spoofingの略)という。)の3つの性質である。
【0009】
上記セキュリティ要件を満たすためにIDの同期が行われる。ところが、攻撃者がアップデートに介入し、そのアップデートを妨げたり改竄したりする「ブロッキングアタック」(Blocking Attack(以後「BA」という。))と呼ばれる攻撃方法が知られている(例えば非特許文献1参照。)。BAが成功すると、アップデートが失敗するため、IDの同期が崩れる。また、攻撃者はタグに格納されている情報を取得できるという前提の下、その情報を基に偽サーバを作成する「なりすまし攻撃」(Server Impersonation Attack(以後「SIA」という。))と呼ばれる攻撃方法も知られている(例えば非特許文献2参照)。SIAでは、攻撃者は偽サーバを用いてタグのIDを更新することができ、その結果IDの同期が崩れる。したがって、BAとSIAに対する耐性を有する必要がある。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】T.Dimitrios, A Lightweight RFID Protocol to protect against Traceability and Cloning attacks, SecureComm 2005, IEEE Computer Society Press, pp.59-66, 2005.
【非特許文献2】B.Song, and C.J.Mitchell, RFID Authentication Protocol for Low-cost Tags, WiSec 2008, Association for Computing Machinery Press, pp.140-147, 2008.
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明はこうした状況に鑑みてなされたものであり、その目的は、安全性の高い無線タグ管理サーバ、無線タグおよび無線タグ管理システムを提供することにある。
【課題を解決するための手段】
【0012】
本発明のある態様は無線タグ管理サーバに関する。このサーバは、任意の長さのビット列を所定の長さのハッシュ値であるビット列に変換する一方向性ハッシュ関数演算部と、2つのビット列の異同を比較する比較部と、ランダムなビット列を生成する乱数生成部と、乱数生成部で生成されたビット列R、ふたつの異なるビット列Sとビット列P、およびビット列Sを入力として一方向性ハッシュ関数演算部が生成した無線タグとの共有鍵であるビット列Kを格納する情報記憶部と、ビット列Sとビット列Rとの結合ビット列を入力として一方向性ハッシュ関数演算部で生成されるビット列にビット列Sを置き換え、更新前のビット列Sの値をビット列Pに代入する更新部とを有する。比較部は、ビット列Kに基づいて一方向性ハッシュ関数演算部が生成したビット列TK’と、無線タグに格納されている共有鍵であるビット列Kに基づいて無線タグ内で生成され当該無線タグから受信したビット列TKとを比較し、両者が一致する場合、更新部はビット列Sとビット列Pとを更新する。
【0013】
本発明のさらに別の態様は無線タグに関する。この無線タグは、任意の長さのビット列を所定の長さのハッシュ値であるビット列に変換する一方向性ハッシュ関数演算部と、ふたつのビット列の排他的論理和を演算する排他的論理和演算部と、2つのビット列の異同を比較する比較部と、サーバからアンテナを介して受信したランダムなビット列R、サーバとの共有鍵であるビット列K、およびビット列Nを格納するメモリ回路とを有する。排他的論理和演算部は、ビット列Rとの結合ビット列を入力として一方向性ハッシュ関数演算部が生成するビット値をさらに入力として一方向性ハッシュ関数演算部が生成するビット列が、サーバに格納されている共有鍵であるビット列Kとなるビット列Pを、当該サーバ内でビット列Rとビット列Nとの結合ビット列のハッシュ値であるビット列との排他的論理和を取ることで生成され当該サーバから受信したビット列Uに基づいてビット列Pを復元する。比較部は、復元したビット列Pを入力とするハッシュ値であるビット列とビット列Kとを比較する。両者が一致する場合、ハッシュ関数生成部は、復元したビット列Pに基づいてビット列Kを復元し、当該ビット列Kでビット列Kを置き換える。
【0014】
本発明のさらに別の態様は、無線タグの情報を更新するための方法に関する。この方法は、乱数発生器が生成したランダムなビット列Rを無線タグに送信するステップと、無線タグ内に格納されているビット列Nとアンテナを介して受信したビット列Rとの結合ビット列および無線タグ内に格納されている共有鍵であるビット列Kとに基づいて無線タグ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列TKと、前記ビット列Nとを無線タグから受信するステップと、ビット列Nとビット列Rとの結合ビット列およびサーバ内に格納されている共有鍵であるビット列Kとに基づいてサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列TK’と前記ビット列TKとを比較するステップと、ビット列TKとビット列TK’とが一致する場合は、新たなビット列Kを生成するために用いるビット列Sをビット列Sとは異なるビット列Pに代入した後にビット列Sとビット列Rとのサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列を新たなビット列Sとし、ビット列TKとビット列TK’とが一致しない場合には、サーバ内に保存してあるビット列Pとビット列Rとのサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列を新たなビット列Sとするステップと、前記新たなビット列Sのサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列を新たなビット列Kとするステップと、ビット列Rとビット列Nとのサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列と、ビット列Pとの排他的論理和であるビット列Uを無線タグに送信するステップと、アンテナを介して受信したビット列Uに基づいてビット列Pを復元し、ビット列Pのタグ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列とビット列Kとを比較して両者が一致すれば、無線タグ内のビット列Kの値をビット列Pに基づいて復元した新たなビット列Kの値に更新するステップとを含む。
【0015】
本発明のさらに別の態様は、無線タグを管理するシステムに関する。このシステムは、無線タグと当該無線タグを管理するサーバとを含む。無線タグ管理サーバは乱数生成部を用いて生成したランダムなビット列Rを無線タグに送信する。無線タグ側一方向性ハッシュ関数演算部は、無線タグ内に保存されているサーバとの共有鍵であるビット列Kとサーバからアンテナを介して受信したビット列Rとを用いて生成されるハッシュ値であるビット列TKを求める。無線タグ管理サーバは、無線タグのアンテナを介して前記ビット列TKを受信し、受信したビット列TKに基づいて、サーバ内に保存されている無線タグとの共有鍵であるビット列Kとビット列Kとが一致するか否かをサーバ側比較部を用いて比較し、両者が一致する場合は更新部を用いてビット列Kを生成するために用いるビット列Sをビット列Sとは異なるビット列Pに代入した後にビット列Sとビット列Rとを入力としてサーバ側一方向性ハッシュ関数によって生成されるハッシュ値であるビット列を新たなビット列Sとし、当該新たなビット列Sのハッシュ値であるビット列を新たなビット列Kとし、ビット列Pに基づいてアップデートデータであるビット列Uを生成して無線タグに送信する。無線タグは、アンテナを介して受信したビット列Uからビット列Pを復元し、ビット列Pのハッシュ値であるビット列と無線タグに保存されているサーバとの共有鍵であるビット列Kとを無線タグ側比較部を用いて比較し、両者が一致すれば、無線タグ内のビット列Kの値をビット列Pに基づいて復元した新たなビット列Kの値に更新する。
【0016】
本発明のさらに別の態様は、無線タグ内の情報を更新するための方法に関する。この方法は、ランダムなビット列Rとの結合ビット列を入力として一方向性ハッシュ関数によって生成されるハッシュ値であるビット値をさらに入力として生成されるハッシュ値であるビット列が、サーバに格納されている共有鍵であるビット列Kとなるビット列Pを、タグ内に格納されアンテナを介して当該サーバに送信されたビット列Nとビット列Rとの結合ビット列のハッシュ値であるビット列との排他的論理和を当該サーバ内で取ることで生成されたビット列Uを当該サーバからアンテナを介して受信するステップと、ビット列Uに基づいてビット列Pを復元するステップと、復元したビット列Pを入力とする一方向性ハッシュ関数によって生成されたハッシュ値であるビット列K’とビット列Kとを比較するステップと、ビット列K’とビット列とKが一致する場合、復元したビット列Pに基づいてビット列Kを復元し、当該ビット列Kでビット列Kを置き換えるステップとを無線タグ内のプロセッサに実行させる。
【0017】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、サーバ、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0018】
本発明によれば、安全性の高い無線タグ管理サーバ、無線タグおよび無線タグ管理システムを提供することができる。
【図面の簡単な説明】
【0019】
【図1】実施の形態に係る無線タグ管理システムを表す図である。
【図2】実施の形態に係るタグの論理演算部において、ソフトウェアプログラムによって実現される各部の機能とメモリ回路が格納するデータとを模式的に表した図である。
【図3】実施の形態に係るサーバの計算部及び情報記憶部の構成を模式的に表した図である。
【図4A】サーバがタグに対してクエリをし、タグがサーバに対してレスポンスをするまでの間にサーバおよびタグで行われる処理手順を説明するフローチャートである。
【図4B】タグからレスポンスを受け取ったサーバがタグに対してアップデートするまでの間にサーバで行われる処理手順を説明するフローチャートである。
【図4C】サーバからアップデートを受けたタグがその後に行う処理手順を説明するフローチャートである。
【発明を実施するための形態】
【0020】
以下、図面を参照して本発明の実施の形態(以下「実施形態」という。)について説明する。
【0021】
まず、本明細書で使われる記号の定義について説明する。
H(x): x(任意ビット)のハッシュ値(mビットのビット列)を求める一方向性ハッシュ関数。
R∈(0,1): mビットの乱数ビット列。
N∈(0,1): タグに格納されているビット列。
TK∈(0,1): タグからサーバに送信する共有鍵に基づいたハッシュ値。
TID∈(0,1): タグからサーバに送信するタグのIDに基づいたハッシュ値。
ID∈(0,1): タグに格納されているID。
ID’∈(0,1): TIDを基にサーバで復元したタグのID。
∈(0,1): サーバに格納されている共有鍵。
ID∈(0,1): サーバに格納されているタグのID。
S∈(0,1): サーバに格納されている秘密情報(第1の秘密情報)。
P∈(0,1): 更新する前のS(第2の秘密情報)。
U∈(0,1): サーバからタグに送信するアップデート情報。
∈(0,1): Uを基にタグで復元したP。
∈(0,1): タグに格納されている共有鍵。
∈(0,1): Pを基にタグで復元したS。
以上は、一方向性ハッシュ関数H(x)を除いて、全てmビットのビット列である。
【0022】
図1は、実施形態に係る無線タグ管理システム100の構成を模式的に表した図である。無線タグ管理システム100はタグ200とサーバ300とを含む。サーバ300は、複数のタグ200を管理するものであるが、以下はあるひとつのタグ200に着目して説明する。
【0023】
タグ200は、タグ側アンテナ202、タグ側変調部204、タグ側復調部206、論理演算部208、メモリ回路210、伝送電力取得部212を含む。
【0024】
タグ側アンテナ202は、サーバ300の末端に存在しタグ200とデータをやりとりするためのリーダ・ライタ(図示しない)から送られる電波を受信したり、タグ200の情報をリーダ・ライタに送信したりする。これは、例えばダイポール型アンテナを用いて実現される。
【0025】
通常、リーダ・ライタとサーバ300との間は安全であり、攻撃されることはない。そこで、以後リーダ・ライタを介してのタグ200とサーバ300との情報のやりとりをすることについては、リーダ・ライタの存在を前提として、リーダ・ライタについての記載はしない。
【0026】
伝送電力取得部212は、タグ側アンテナ202を介してサーバ300から送られる伝送電力を取得する。サーバ300から送られる伝送電力は一般に交流であるが、タグ200の各部は直流で動作する。そこで、伝送電力取得部212は交流を直流に変換する整流回路や、過大な電圧がかかることを防止する電圧制限回路等、既知の技術によって実現される。タグ200の各部は、伝送電力取得部212が取得した電力で動作する。
【0027】
タグ側変調部204は、タグ200内のデータをサーバ300に送信するために、データに基づいて搬送波を変調する。変調された搬送波はタグ側アンテナ202を介してサーバ300に送信される。これは例えばバックスキャッタ(後方拡散)方式が用いられる。
【0028】
タグ側復調部206は、タグ側アンテナ202を介して受信したサーバ300からの搬送波から制御コマンドやデータを取り出す。これは搬送波に変調されているデータをビット列に変換することで実現される。
【0029】
論理演算部208は、タグ側復調部206から取り出したサーバ300からの制御コマンドを実行したり、タグ200内のデータを処理したりする。論理演算部208はソフトウェアプログラムでその動作の制御を変更することができるプログラマブルなハードウェアである。後述する論理演算部208の各部の動作は、実施形態を実現するためのソフトウェアプログラムを論理演算部208に書き込み、当該ソフトウェアプログラムの制御の下で実現する。
【0030】
メモリ回路210は、データの書き込みや読み込み、およびデータの消去を何度でも行えるものであり、伝送電力取得部212からの電力供給がなくなってもデータを保持できるものである。論理演算部208と同様に、メモリ回路210の詳細については後述する。
【0031】
サーバ300は、サーバ側アンテナ302、サーバ側変調部304、サーバ側復調部306、計算部308、情報記憶部310、送信部312、受信部314を含む。
【0032】
サーバ側アンテナ302は、タグ200にデータを送信したり、タグ200からデータを受信したりする。また、タグ200に電力を供給する。これはタグ側アンテナ202と同様にダイポール型アンテナ等を用いて実現される。
【0033】
サーバ側変調部304,サーバ側復調部306はそれぞれタグ側変調部204、タグ側復調部206に対応し、前者はタグに送信するためのデータで搬送波を変調し、後者はタグから受信した変調された搬送波からデータを取り出す。
【0034】
送信部312は、サーバ側変調部304が変調した搬送波をタグ200に送信する。搬送波を増幅する増幅器や、フィルタ等の既知の技術によって実現される。
【0035】
受信部314は、タグ200から送られる搬送波を受信する。搬送波に含まれるノイズを除去するフィルタや、信号を増幅する増幅器等の既知の技術によって実現される。
【0036】
計算部308は、タグ200に送信するデータを作成したり、タグ200からのレスポンスを処理したりする部分である。計算部308の動作についての詳細は後述する。
【0037】
情報記憶部310は、タグ200のID等を記憶する部分である。計算部308と同様、情報記憶部310の詳細は後述する。
【0038】
計算部308が情報記憶部310から取得したり、計算部308が処理したりしたデータや制御命令は、サーバ側変調部304で搬送波に変調され、送信部312がサーバ側アンテナ302を介してタグ側復調部206に送信する。伝送電力取得部212はサーバ300から送られる伝送電力を取得し、タグ側変調部204、タグ側復調部206、論理演算部208、メモリ回路210に当該伝送電力を供給する。タグ側復調部206は、伝送電力取得部212からの電力供給を受けて、タグ側アンテナ202を介して送信部312から送られた搬送波から、制御命令やデータを取り出す。論理演算部208は、タグ側復調部206から取得した制御命令を実行し、データを処理する。論理演算部208は、処理結果に基づいてメモリ回路210の内容を変更し、タグ側変調部204を介してデータを受信部314に送信する。
【0039】
受信部314は、サーバ側アンテナ302を介してタグ側変調部204から送信された搬送波を受信する。サーバ側復調部306は受信部314が受信した搬送波からタグ200から送られたデータを取り出す。計算部308はタグ200から送られたデータを処理する。
【0040】
上述のサーバ300およびタグ200間のデータのやりとりを繰り返すことで、両者間でデータの同期が行われる。
【0041】
図2は、図1のタグ200内の論理演算部208において、ソフトウェアプログラムによって実現される各部の機能とメモリ回路210が格納するデータとを模式的に表した図である。
【0042】
論理演算部208は、タグ側連結部216、タグ側一方向性ハッシュ関数演算部218、タグ側比較部220、タグ側排他的論理和演算部222を含む。メモリ回路210は、タグ側乱数ビット列R格納部224、タグ側ビット列N格納部226、タグ側共有鍵K格納部228、ワークエリア230、タグ側識別子ID格納部232を含む。以後、乱数ビット列Rは「R」と、ビット列Nは「N」と、タグ側共有鍵Kは「K」と、タグ側識別子IDは「ID」と省略して記載する。
【0043】
タグ側連結部216は、任意のふたつのビット列を連結してひとつのビット列を生成する。例えば、第1のビット列Aを(1001)とし、第2のビット列Bを(0110)とし、両者がタグ側連結部216に入力された場合には、タグ側連結部216はビット列(10010110)を出力する。以後、AとBとの連結を「A‖B」と表すことがある。
【0044】
タグ側一方向性ハッシュ関数演算部218は、任意の長さのビット列を、所定の長さのビット列に変換する。ここで所定の長さとは、タグの数が多くてもハッシュ値の衝突が起こらないために必要な長さであり、例えば160ビットである。また、タグ側一方向性ハッシュ関数演算部218は、入力されたビット列が異なれば出力するビット列(ハッシュ値)も異なるものであり、また出力されたビット列から入力ビット列を復元することが実質的に不可能である一方向性の性質を有するものである。具体的には、例えばSHA−1(Secure Hash Algorithm−1)を用いれば実現できる。この場合、入力ビット列は2の64乗ビット以下の長さであれば、常に160ビットのハッシュ値を生成する。
【0045】
以後、一方向性ハッシュ関数をH(x)と表す場合がある。また、一方向性ハッシュ関数をH(y,z)のようにふたつの引数の形で表す場合もある。前者と後者との関係は、x=y‖zとすれば同値である。したがって、両者ともひとつの一方向性ハッシュ関数(例えばSHA−1)で実現できる。引数が3つ以上の場合でも、全ての引数について連結すれば、引数がひとつの場合に帰着される。これらの連結は、例えばタグ側連結部216を用いて行われる。
【0046】
タグ側一方向性ハッシュ関数演算部218はまた、後述するタグ側比較部220の出力に応じて演算を実行することもできる。
【0047】
タグ側比較部220は、ふたつのビット列が同じ値か否かを比較する。同じ値であれば1を、異なる値であれば0を出力する。
【0048】
タグ側排他的論理和演算部222は、ふたつのビット列について排他的論理和を計算し、結果を出力する。以後、第1のビット列Aと第2のビット列Bとの排他的論理和を

と表すことがある。
【0049】
図3は、図1のサーバ300内の計算部308の機能と情報記憶部310が格納するデータとを模式的に表した図である。
【0050】
計算部308は、サーバ側連結部316、サーバ側一方向性ハッシュ関数演算部318、サーバ側比較部320、サーバ側排他的論理和演算部322、乱数生成部342、更新部344、レスポンス格納部346を含む。
【0051】
情報記憶部310は、サーバ側乱数ビット列R格納部324、サーバ側ビット列N格納部326、サーバ側共有鍵Ks格納部328、ID’格納部330、サーバ側識別子ID格納部332、TK格納部334、第1の秘密情報S格納部336、第2の秘密情報P格納部338、TID格納部340を含む。以後サーバ側共有鍵Kを「K」と、サーバ側識別子IDを「ID」と、第1の秘密情報Sを「S」と、第2の秘密情報Pを「P」と省略して記載する。
【0052】
サーバ側連結部316は、タグ側連結部216と同様に、任意のふたつのビット列を連結してひとつのビット列を生成する。サーバ側一方向性ハッシュ関数演算部318は、任意の長さのビット列を、所定の長さのビット列に変換する。サーバ側一方向性ハッシュ関数演算部318は、タグ側一方向性ハッシュ関数演算部218と全く同一の動作をする。すなわち、両者に入力されるビット列が同一であれば、その出力も全く同一である。サーバ300とタグ200との間のデータの同期を保証するためである。
【0053】
サーバ側比較部320も、タグ側比較部220と同様に、ふたつのビット列が同じ値か否かを比較する。同じ値であれば1を、異なる値であれば0を出力する。サーバ側排他的論理和演算部322は、タグ側排他的論理和演算部222と同様に、ふたつのビット列について排他的論理和を計算し結果を出力する。
【0054】
乱数生成部342は、ランダムなビット列Rを生成する。Rはタグ200およびサーバ300に格納されているタグのID等の更新やその送受信に用いられ、INDやRSの要件を満たすために重要である。
【0055】
更新部344は、サーバ側比較部320の出力に応じて動作し、サーバにのみ格納されているSとPとを更新する。Sは、そのハッシュ値H(S)が、タグ200とサーバ300とが共有する共有鍵Kとなるものである。Sは、後述する条件を満たすと、Rと自身とのハッシュ値H(S,R)に置き換えられることで更新される。Pは、Sが更新される際に、そのバックアップとして更新前のSの値が保存される。
【0056】
レスポンス格納部346は、タグ200のレスポンスとして送られてくるデータであるTID、TK、Nをそれぞれ、TID格納部340、TK格納部334、サーバ側ビット列N格納部326に格納する。
【0057】
以上の論理演算部208、メモリ回路210、計算部308、情報記憶部310との協働によって実現されるタグ200とサーバ300とのクエリ、レスポンス、アップデートの処理手順を、図4A〜図4Cを用いて説明する。以下の説明では、変調や復調、およびアンテナを介してデータを送受信することは、例えば単に、「サーバ300からタグ200へデータを送信する」のように省略して記載する。
【0058】
図4Aは、サーバ300がタグ200に対してクエリをし、タグ200がサーバ300にレスポンスを返すまでの処理手順を説明するフローチャートである。本フローチャートにおける処理は、サーバ300がタグ200に対してクエリをすると開始する。
【0059】
乱数生成部342は、mビット(例えば160ビット)のRを生成する。Rはサーバ側R格納部324に格納された後、クエリとしてタグ200に送信される(S10)。タグ200はサーバ300から受信したRをタグ側R格納部224に格納する(S12)。以上がクエリである。
【0060】
タグ側一方向性ハッシュ関数演算部218は、タグ側N格納部226からNを、タグ側R格納部224からRを取得し、そのハッシュ値H(N,R)を計算し、結果をタグ側N格納部226に代入する(S14)。これにより、サーバ300からクエリがある度に、Nは更新されることになる。
【0061】
タグ側一方向性ハッシュ関数演算部218は、タグ側連結部216がRとNとを連結した結果であるR‖Nを受け取り、KとR‖Nとを入力としたハッシュ値H(K,R‖N)を計算してTKを生成する(S16)。TKはレスポンスのひとつとしてサーバ300に送信される。
【0062】
タグ側排他的論理和演算部222は、タグ側一方向性ハッシュ関数演算部218が出力したH(R,N)とIDとの排他的論理和TIDを計算する(S18)。TIDは、H(R,N)を鍵としてIDを暗号化したものであり、サーバ300はTIDからH(R,N)を用いてIDを復号することができる。これはRSの要件を満たすための対策であり、攻撃者はTIDを取得しただけではIDを復元することができない。TIDもTKと同様に、レスポンスのひとつとしてサーバ300に送信される。
【0063】
タグ側一方向性ハッシュ関数演算部218は、IDとRとを入力とするハッシュ値H(ID,R)を計算し、結果をID格納部232に格納する(S20)。このようにタグ200の識別器であるIDを更新することにより、BUの要件が満たされる。
【0064】
タグ200はTK、TID、Nをレスポンスとしてサーバ300に送信し(S22)、サーバ300はそれらを受信する(S24)。
【0065】
図4Bは、タグ200からレスポンスを受け取ったサーバ300がタグ200に対してアップデートするまでの間にサーバ300内で行われる処理手順を説明するフローチャートである。本フローチャートにおける処理は、サーバ300がタグ200からレスポンスを受け取ると開始する。
【0066】
レスポンス格納部346は、タグ200からのレスポンスであるTK、TID、Nを受信すると、それらをそれぞれTK格納部334、TID格納部340、サーバ側N格納部326に格納する。
【0067】
サーバ側一方向性ハッシュ関数演算部318は、RとNとを引数とするハッシュ値H(R,N)を計算し、サーバ側排他的論理和演算部322はTIDとH(R,N)との排他的論理和を計算し、結果をID’格納部330に格納する(S26)。
【0068】
サーバ側比較部320は、TKとH(K,R‖N)とを比較する。TKはステップS16においてTK=H(K,R‖N)として出力されたことを考えると、KとKとが同一である場合、TK=H(K,R‖N)となる(S28Y)。
【0069】
TK=H(K,R‖N)の場合、更新部344はSをPに代入してSのバックアップとする(S30)。更新部344はサーバ側一方向性ハッシュ関数演算部318に指示して、SをH(S,R)で置き換えることにより更新する(S32)。その後KはH(S)で置き換えられ、更新される(S34)。
【0070】
ここで、Kは新しい値に置き換えられたが、この時点ではタグ側の共有鍵Kは更新されていない。仮に何らかの原因でKの更新に失敗すると、KとKとの同期が崩れる。このような場合に備え、更新前のSはPとして保存されている。Pが更新されるのは、TK=H(K,R‖N)のとき、すなわち、KとKとが同一である場合であるから、H(P)を計算することでKとKとが同一であったときのK(=K)を復元できる。詳細は後述するが、このPを用いることによりサーバ300とタグ200との共有鍵の再同期化、およびアップデートの正当性の検証が可能となる。
【0071】
さて、TK≠H(K,R‖N)の場合(S28N)は、K≠Kを意味し、サーバ300とタグ200との間で共有する鍵の同期が崩れていることになる。この場合、サーバ側比較部320は、ID’とIDとを比較する。もしID’=IDであれば(S40Y)、共有鍵の同期は崩れているが、IDの同期は取れていることになるので、サーバ300はタグ200を正しく認識することができる。更新部344はサーバ側一方向性ハッシュ関数演算部318に指示して、SをH(P,R)で置き換える(S42)。その後KはステップS42で生成されたS=H(P,R)を入力とするハッシュ値H(S)で置き換えられ、更新される(S34)。
【0072】
TK≠H(K,R‖N)かつID’≠IDの場合(S40N)には、サーバ300とタグ200との共有鍵およびIDのいずれの同期も崩れていることになる。この場合、サーバ側比較部320はTKとH(H(P),R‖N)との値を比較する。ステップS16におけるTK=H(K,R‖N)と比較すると、K=H(P)の場合、TKとH(H(P),R‖N)とが一致することになる(S44Y)。この場合、サーバ300はタグ200を正規なものと認識し、Pを用いてSを更新し(S42)、KをステップS42で生成されたS=H(P,R)を入力とするハッシュ値H(S)で置き換える(S34)。
【0073】
TKとH(H(P),R‖N)とが一致しない場合(S44N)は、以下のふたつの場合が考えられる。ひとつ目は、レスポンスを返したタグ200は、サーバ300が管理するタグではない場合である。この場合はサーバ300が管理する共有鍵Kとタグ200が保存する共有鍵Kとが異なるのは当然で、サーバ300は、当該タグはサーバの管理するタグではないと判断でき(S46)、以降の処理を中止する。
【0074】
ふたつ目は、レスポンスの段階で攻撃者から攻撃を受け、レスポンスが改竄された場合である。もし、レスポンスを受けたタグがサーバ300の管理するタグであることが確実であるにも関わらず、TKとH(H(P),R‖N)とが一致しないのであれば、攻撃者から攻撃を受けた蓋然性が高い。その場合も、当該タグはサーバの管理するタグではないと判断して(S46)、以降の処理を中止する。このように、サーバ300は仮に攻撃を受けたとしてもすぐに処理を停止できるので、DoS攻撃(Denial of Service Attack)に対しても堅牢である点で有利である。また、攻撃を受けたことが確実であるならば、その情報を格納しておき、後の分析等に利用できる点でも有利である。
【0075】
サーバ側一方向性ハッシュ関数演算部318はID’とRとを引数とするハッシュ値H(ID’,R)を計算し、ID格納部332に格納する(S36)。ここで、ID’はTIDとH(R,N)との排他的論理和であり、TIDはステップS18で生成された、IDとH(R,N)との排他的論理和であることに注意する。前述したように、タグ側一方向性ハッシュ関数演算部218とサーバ側一方向性ハッシュ関数演算部318とは同一の振る舞いをするから、両者がRとNとを入力して生成するハッシュ値H(R,N)も同一のビット列となる。したがって、ステップS26で生成されたID’はIDと同一である。ゆえに、ステップS36で更新されてたIDはステップS20で更新されたIDと同一のビット列になる。IDをIDに合わせることとなり、サーバ300とタグ200との間でIDの同期を取ることになる。仮にサーバ300とタグ200との間でIDの同期が崩れており、ID’とIDとが異なるビット列であったとしても、本ステップS36を経ることにより、両者の再同期が実現される。
【0076】
サーバ側排他的論理和演算部322は、PをRとNとのハッシュ値H(R,N)を用いて排他的論理和を取ることで暗号化し、アップデート情報U(以後単に「U」と記載する)を生成する(S38)。
【0077】
図4Cは、サーバ300からUを受信したタグ200がその後に行う処理手順を説明するフローチャートである。本フローチャートにおける処理は、サーバ300がタグ200に対してUを送信すると開始する。
【0078】
サーバ300がUを送信し(S48)、タグ200がUを受信する(S50)ことで、アップデートが行われる。タグ側排他的論理和演算部222は、UとH(R,N)との排他的論理和を計算することでPを復号する(S52)。以後タグ200が復号したPをPと記載する。なお、Pや後述のSは、ワークエリア230に一時的に格納され、使用後は速やかに消去される。攻撃者に漏洩することを防ぐためである。この観点から、ワークエリア230は伝送電力取得部212からの電力供給がなくなった場合にはその内容を保持できないタイプのメモリを用いれば、メモリ消去のステップを省略できる点で有利である。
【0079】
タグ側比較部220は、KとH(P)とを比較する。もし、タグ200が受信したアップデートが正規のサーバ300からのものであれば、PとPとは一致するので、KとH(P)とも一致するはずである。両者が一致する場合(S54Y)、タグ側一方向性ハッシュ関数演算部218はH(P,R)を計算し、その値をSとしてワークエリア230に保存する(S56)。ステップS34およびステップS42より、ステップS56の演算によって、サーバ300のSとSとが同一の値になることが保証される。そこで、タグ側一方向性ハッシュ関数演算部218はH(S)を計算し、その値をK格納部228に代入することでKの更新を行う(S58)。S=Sであるから、サーバ300における共有鍵の更新ステップS36における演算と同一になり、サーバ300とタグ200との共有鍵の同期(共有鍵の同期が崩れている場合には再同期化)が実現される。もし、KとH(P)とが一致しない場合には(S54N)、アップデートは正当なものではないと判断できるので、何もせずに処理を終了する。
【0080】
ステップS54は、サーバ300のみが保持する秘密情報Pを用いてアップデートの正当性を検証する。このことにより、仮に攻撃者がタグ200に保存されている情報を全て入手でき、その情報に基づいて偽サーバを構築できたとしても、その攻撃者はサーバ300のみが保持する秘密情報Pまでは入手することができない。したがってそのような偽サーバを用いて偽のアップデートによる攻撃を試みたとしても、タグ200はそのアップデートが正当でないことを判断できる。この仕組みにより、実施形態はSIAに対しても耐性を有する。
【0081】
以上まとめると、タグ200とサーバ300とが共有するIDは、それぞれステップS20およびステップS28において更新される。また、タグ200とサーバ300とが共有する共有鍵については、それぞれステップS36およびステップS58において更新される。したがって、仮にある時点でのIDや共有鍵が漏洩したとしても、タグ200の移動履歴を追跡することができない。IDや共有鍵はタグ200とサーバ300とが交信する度に一方向性ハッシュ関数と乱数とを用いて更新されるからである。したがって実施形態はBUの要件を満たす。
【0082】
タグ200とサーバ300との間のレスポンスおよびアップデートで送受信される情報は、ハッシュ値か、排他的論理和を用いて暗号化されたものである。したがって、攻撃者はそれらの情報を取得できたとしても、その情報からタグを特定することはできない。ゆえに実施形態はINDの要件を満たす。
【0083】
TID、TKは認証ごとに新しく生成される乱数Rを用いて計算される。そのため、攻撃者はこれらを入手しても再利用することができない。また、攻撃者がタグ200にクエリ(Query)を送信して入手したTID、TKをサーバ300へ送信してもタグの認証は行われない。したがって、実施形態はRSの要件を満たす。
【0084】
前述したように、BAによりタグ200とサーバ300とが共有するIDや共有鍵の同期が崩されたとしても、前者はステップS20およびステップS36により、後者はステップS34およぶステップS58により再同期化が可能である。したがってBAに対して耐性を有する。また、実施形態のタグ200はサーバ300のみが保持する秘密情報Pを用いてアップデートの正当性を検証するため、SIAに対しても耐性を有する。
【0085】
実施形態はRFIDシステムが安全であるために必要とされる3つのセキュリティ要件を全て満たし、仮にIDや共有鍵の同期が崩れたとしても再同期化することができる。このように、本実施形態によれば安全性の高い無線タグ管理サーバ、無線タグおよび無線タグ管理システムを提供することができる。また、従来の無線タグの中にはソフトウェアプログラムによってその動作を制御できるものもあり、本実施形態は、これら既存の無線タグを本実施形態を実現するソフトウェアプログラムで書き換えることで実施できる。このため、新たにロジック回路を設計する必要がなく、コストが抑えられる点で有利である。
【0086】
以上、本発明を実施の形態をもとに説明した。これらの実施形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0087】
上記の説明では、タグ200内でのデータの計算を行う論理演算部208はプログラマブルなハードウェアであることを前提として説明したが、論理演算部208は固定的なロジック回路を用いて実現してもよい。この場合、プログラムで制御する従来タイプの無線タグよりも動作が高速となりうる点で有利である。
【0088】
上記の説明では、タグ200のIDの更新(ステップS20)に合わせてサーバ300のIDを更新する(ステップS36)ことで、タグ200とサーバ300とが共有するIDの同期を取ったが、これとは逆にサーバ300のIDの更新に合わせて、タグ200のIDの更新をするようにしてもよい。具体的には、アップデート情報として例えばIDとH(R,N)との排他的論理和SIDをUとともにタグ200に送信し、タグ200側でアップデートの正当性の有無に関わらず更新するようにしてもよい。この場合、サーバ300側でサーバ側一方向性ハッシュ関数演算部318を用いてIDの更新を行うので、万が一、生成したIDが他のタグのIDと衝突したとしても、IDを作り直すことができ、IDの衝突を防ぐことができる点で有利である。
【0089】
上記の説明では、Rのビット数はIDや共有鍵のビット数mと同一のビット数を用いたが、必ずしも同一のビット数でなくてもよい。例えばRのビット数についてmよりも小さなビット数を用いれば送受信の使用帯域を少なくできる点で有利である。逆に、mより大きなビット数を用いれば、乱数であるRのバリエーションが増えることから、攻撃に対してより堅牢になる点で有利である。
【符号の説明】
【0090】
100 無線タグ管理システム、 200 タグ、 208 論理演算部、 210 メモリ回路、 212 伝送電力取得部、 216 タグ側連結部、 218 タグ側一方向性ハッシュ関数演算部、 220 タグ側比較部、 222 タグ側排他的論理和演算部、 224 タグ側乱数ビット列R格納部、 226 タグ側ビット列N格納部、 228 タグ側共有鍵Kt格納部、 230 ワークエリア、 232 タグ側識別子IDt格納部、 300 サーバ、 308 計算部、 310 情報記憶部、 316 サーバ側連結部、 318 サーバ側一方向性ハッシュ関数演算部、 320 サーバ側比較部、 322 サーバ側排他的論理和演算部、 324 サーバ側乱数ビット列R格納部、 326 サーバ側ビット列N格納部、 328 サーバ側共有鍵Ks格納部、 330 ID’格納部、 332 サーバ側識別子IDs格納部、 334 TK格納部、 336 第1の秘密情報S格納部、 338 第2の秘密情報P格納部、 340 TID格納部、 342 乱数生成部、 344 更新部。

【特許請求の範囲】
【請求項1】
任意の長さのビット列を所定の長さのハッシュ値であるビット列に変換する一方向性ハッシュ関数演算部と、
2つのビット列の異同を比較する比較部と、
ランダムなビット列を生成する乱数生成部と、
乱数生成部で生成されたビット列R、ふたつの異なるビット列Sとビット列P、およびビット列Sを入力として一方向性ハッシュ関数演算部が生成した無線タグとの共有鍵であるビット列Kを格納する情報記憶部と、
ビット列Sとビット列Rとの結合ビット列を入力として一方向性ハッシュ関数演算部で生成されるビット列にビット列Sを置き換え、更新前のビット列Sの値をビット列Pに代入する更新部とを有し、
比較部は、ビット列Kに基づいて一方向性ハッシュ関数演算部が生成したビット列TK’と、無線タグに格納されている共有鍵であるビット列Kに基づいて無線タグ内で生成され当該無線タグから受信したビット列TKとを比較し、両者が一致する場合、更新部はビット列Sとビット列Pとを更新することを特徴とする無線タグ管理サーバ。
【請求項2】
前記情報記憶部は無線タグの識別子であるビット列IDをさらに格納するものであり、
前記ビット列TKとビット列TK’とが異なる場合には、比較部は無線タグから受信した無線タグに格納されている識別子であるビット列IDとビット列IDとをさらに比較し、両者が一致する場合には、更新部は、ビット列Pとビット列Rとの結合ビット列を入力として一方向性ハッシュ関数演算部で生成されるビット列でビット列Sを置き換えることを特徴とする請求項1に記載の無線タグ管理サーバ。
【請求項3】
ビット列TKとビット列TK’とが異なり、かつビット列IDとビット列IDとが異なる場合には、一方向性ハッシュ関数演算部はビット列Pを入力とするビット列を求めることで過去の共有鍵であるビット列K’を求め、比較部は、当該ビット列K’に基づいて一方向性ハッシュ関数演算部が生成したビット列とビット列TKとを比較し、両者が一致する場合は、更新部はビット列Pとビット列Rとの結合ビット列を入力として一方向性ハッシュ関数演算部で生成されるビット列でビット列Sを置き換えることを特徴とする請求項2に記載の無線タグ管理サーバ。
【請求項4】
ビット列TKとビット列TK’とが異なり、かつビット列IDとビット列IDとが異なる場合には、一方向性ハッシュ関数演算部はビット列Pを入力とするビット列を求めることで過去の共有鍵であるビット列K’を求め、比較部は、当該ビット列K’に基づいて一方向性ハッシュ関数演算部が生成したビット列とビット列TKとを比較し、両者が異なる場合には処理を終了することを特徴とする請求項2または3に記載の無線タグ管理サーバ。
【請求項5】
前記更新部は、無線タグの識別子であるビット列IDをビット列IDに置き換えることを特徴とする請求項2から4のいずれかに記載の無線タグ管理サーバ。
【請求項6】
ふたつのビット列の排他的論理和を演算する排他的論理和演算部をさらに有し、
前記情報記憶部は無線タグから受信した無線タグに格納されているビット列であるNをさらに格納するものであり、
ビット列Rとビット列Nとの結合ビット列を入力として一方向性ハッシュ関数演算部で生成されるビット列とビット列Pとの排他的論理和であるビット列Uを無線タグに送信することを特徴とする請求項1から5のいずれかに記載の無線タグ管理サーバ。
【請求項7】
任意の長さのビット列を所定の長さのハッシュ値であるビット列に変換する一方向性ハッシュ関数演算部と、
ふたつのビット列の排他的論理和を演算する排他的論理和演算部と、
2つのビット列の異同を比較する比較部と、
サーバからアンテナを介して受信したランダムなビット列R、サーバとの共有鍵であるビット列K、およびビット列Nを格納するメモリ回路とを有し、
排他的論理和演算部は、ビット列Rとの結合ビット列を入力として一方向性ハッシュ関数演算部が生成するビット値をさらに入力として一方向性ハッシュ関数演算部が生成するビット列が、サーバに格納されている共有鍵であるビット列Kとなるビット列Pを、当該サーバ内でビット列Rとビット列Nとの結合ビット列のハッシュ値であるビット列との排他的論理和を取ることで生成され当該サーバから受信したビット列Uに基づいてビット列Pを復元し、
比較部は、復元したビット列Pを入力とするハッシュ値であるビット列とビット列Kとを比較し、両者が一致する場合、ハッシュ関数生成部は、復元したビット列Pに基づいてビット列Kを復元し、当該ビット列Kでビット列Kを置き換えることを特徴とする無線タグ。
【請求項8】
前記メモリ回路はタグの識別子であるビット列IDをさらに格納するものであり、
前記一方向性ハッシュ関数演算部は、ビット列Nとビット列Rとの結合ビット列のハッシュ値であるビット列を新たなビット列IDとすることを特徴とする請求項7に記載の無線タグ。
【請求項9】
前記一方向性ハッシュ関数演算部、前記排他的論理和演算部および前記比較部は、外部からプログラムを書き込むことでその動作の制御を変更可能なハードウェアによって実現されることを特徴とする請求項7または8のいずれかに記載の無線タグ。
【請求項10】
乱数発生器が生成したランダムなビット列Rを無線タグに送信するステップと、
無線タグ内に格納されているビット列Nとアンテナを介して受信したビット列Rとの結合ビット列および無線タグ内に格納されている共有鍵であるビット列Kとに基づいて無線タグ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列TKと、前記ビット列Nとを無線タグから受信するステップと、
ビット列Nとビット列Rとの結合ビット列およびサーバ内に格納されている共有鍵であるビット列Kとに基づいてサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列TK’と前記ビット列TKとを比較するステップと、
ビット列TKとビット列TK’とが一致する場合は、新たなビット列Kを生成するために用いるビット列Sをビット列Sとは異なるビット列Pに代入した後にビット列Sとビット列Rとのサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列を新たなビット列Sとし、ビット列TKとビット列TK’とが一致しない場合には、サーバ内に保存してあるビット列Pとビット列Rとのサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列を新たなビット列Sとするステップと、
前記新たなビット列Sのサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列を新たなビット列Kとするステップと、
ビット列Rとビット列Nとのサーバ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列と、ビット列Pとの排他的論理和であるビット列Uを無線タグに送信するステップと、
アンテナを介して受信したビット列Uに基づいてビット列Pを復元し、ビット列Pのタグ側一方向性ハッシュ関数によって生成されたハッシュ値であるビット列とビット列Kとを比較して両者が一致すれば、無線タグ内のビット列Kの値をビット列Pに基づいて復元した新たなビット列Kの値に更新するステップとを含むことを特徴とする無線タグ情報更新方法。
【請求項11】
任意の長さのビット列を一方向性ハッシュ関数によって所定の長さのハッシュ値であるビット列に変換する変換機能と、
2つのビット列の異同を比較する比較機能と、
ランダムなビット列を生成する乱数生成機能と、
ふたつの異なるビット列Sとビット列Pと、乱数生成部で生成されたビット列Rと、ビット列Sを入力として一方向性ハッシュ関数演算部が生成したタグとの共有鍵であるビット列Kと、無線タグに格納されている共有鍵であるビット列Kに基づいて無線タグ内で生成され当該無線タグから受信したビット列TKとをメモリ内に格納する情報記憶機能と、
ビット列Kに基づいて生成されたハッシュ値であるビット列TK’とビット列TKとを比較し、両者が一致する場合、メモリ内のビット列Sとビット列Rとの結合ビット列を入力として生成されるビット列にビット列Sを置き換えることでビット列Sを更新し、メモリ内のビット列Pを更新前のビット列Sの値で置き換えることでビット列Pを更新する更新機能とをコンピュータに実現させることを特徴とするプログラム。
【請求項12】
無線タグと当該無線タグを管理するサーバとを含み、
無線タグ管理サーバは乱数生成部を用いて生成したランダムなビット列Rを無線タグに送信し、
無線タグ側一方向性ハッシュ関数演算部は、無線タグ内に保存されているサーバとの共有鍵であるビット列Kとサーバからアンテナを介して受信したビット列Rとを用いて生成しされるハッシュ値であるビット列TKを求め、
無線タグ管理サーバは、無線タグのアンテナを介して前記ビット列TKを受信し、受信したビット列TKに基づいて、サーバ内に保存されている無線タグとの共有鍵であるビット列Kとビット列Kとが一致するか否かをサーバ側比較部を用いて比較し、両者が一致する場合は更新部を用いてビット列Kを生成するために用いるビット列Sをビット列Sとは異なるビット列Pに代入した後にビット列Sとビット列Rを入力としてサーバ側一方向性ハッシュ関数によって生成されるハッシュ値であるビット列を新たなビット列Sとし、当該新たなビット列Sのハッシュ値であるビット列を新たなビット列Kとし、ビット列Pに基づいてアップデートデータであるビット列Uを生成して無線タグに送信し、
無線タグは、アンテナを介して受信したビット列Uからビット列Pを復元し、ビット列Pのハッシュ値であるビット列と無線タグに保存されているサーバとの共有鍵であるビット列Kとを無線タグ側比較部を用いて比較し、両者が一致すれば、無線タグ内のビット列Kの値をビット列Pに基づいて復元した新たなビット列Kの値に更新することを特徴とする無線タグ管理システム。
【請求項13】
ランダムなビット列Rとの結合ビット列を入力として一方向性ハッシュ関数によって生成されるハッシュ値であるビット値をさらに入力として生成されるハッシュ値であるビット列が、サーバに格納されている共有鍵であるビット列Kとなるビット列Pを、タグ内に格納されアンテナを介して当該サーバに送信されたビット列Nとビット列Rとの結合ビット列のハッシュ値であるビット列との排他的論理和を当該サーバ内で取ることで生成されたビット列Uを当該サーバからアンテナを介して受信するステップと、
ビット列Uに基づいてビット列Pを復元するステップと、
復元したビット列Pを入力とする一方向性ハッシュ関数によって生成されたハッシュ値であるビット列K’とビット列Kとを比較するステップと、
ビット列K’とビット列とKが一致する場合、復元したビット列Pに基づいてビット列Kを復元し、当該ビット列Kでビット列Kを置き換えるステップとを、
無線タグ内のプロセッサに実行させることを特徴とする無線タグ情報更新方法。
【請求項14】
ランダムなビット列Rとの結合ビット列を入力として一方向性ハッシュ関数によって生成されるハッシュ値であるビット値をさらに入力として生成されるハッシュ値であるビット列が、サーバに格納されている共有鍵であるビット列Kとなるビット列Pを、タグ内に格納されアンテナを介して当該サーバに送信されたビット列Nとビット列Rとの結合ビット列の一方向性ハッシュ関数によって生成されるハッシュ値であるビット列との排他的論理和を当該サーバ内で取ることで生成されたビット列Uを当該サーバからアンテナを介して受信するビット列受信機能と、
ビット列Uに基づいてビット列Pを復元する復元機能と、
復元したビット列Pを入力とする一方向性ハッシュ関数によって生成されるハッシュ値であるビット列K’とビット列Kとを比較する比較機能と、
ビット列K’とビット列とKが一致する場合、復元したビット列Pに基づいてビット列Kを復元し、当該ビット列Kでビット列Kを置き換える更新機能とを、
無線タグ内のプロセッサに実現させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate


【公開番号】特開2011−50008(P2011−50008A)
【公開日】平成23年3月10日(2011.3.10)
【国際特許分類】
【出願番号】特願2009−198877(P2009−198877)
【出願日】平成21年8月28日(2009.8.28)
【出願人】(508236240)公立大学法人公立はこだて未来大学 (16)
【Fターム(参考)】