<第1実施形態>
第1実施形態を図1〜図6を用いて説明する。
図1は本発明の第1実施形態のRFIDデバイス101のブロック図である。
RFIDデバイス101は、CPU102、メモリ103、外部無線インタフェース108及びバス109を備える。
CPU102は、メモリ103に記憶された各種プログラムを実行する。メモリ103は、各種プログラムを記憶する。外部無線インタフェース108は、リーダ・ライタ203(図2参照)と非接触状態で通信するためのインタフェースである。なお、CPU102、メモリ103及び外部無線インタフェース108は、バス109によって接続されている。
メモリ103は、ID記録部104、ハッシュ計算プログラム105、次回ID記録部106、及び衝突回避プログラム107を含む。
ID記録部104には、RFIDデバイス101の本来IDが格納される。本来IDは、RFIDデバイス101の一意な識別子であり、RFIDデバイス101を管理するサーバ201(図2参照)にも記憶される。
ハッシュ計算プログラム105は、次回ID記録部106に格納された次回ID(又は乱数)とID記録部104に記憶された本来IDとを入力として一方向関数であるハッシュ関数を演算して、ハッシュ値を求めるプログラムである。
次回ID記録部106は、RFIDデバイス101が次回送信する次回ID、又はサーバ201から受信した乱数を記憶する。なお、次回IDは、ハッシュ計算プログラム105によって求められたハッシュ値である。
衝突回避プログラム107は、複数のRFIDデバイス101によって送信された次回IDパケットが衝突した場合に、次回IDを送信するタイミングを遅らせることによって、次回IDパケットの衝突を回避するプログラムである。
図2は、本発明の第1実施形態のRFIDシステムの構成図である。
RFIDシステムは、サーバ201、リーダ・ライタ203及び複数のRFIDデバイス101A〜101N(RFIDデバイスを総じて101という)を備える。
サーバ201とリーダ・ライタ203とは、ネットワーク202を介して接続される。リーダ・ライタ203とRFIDデバイス101とは、無線によって通信可能である。
サーバ201は、サーバ201が管理するすべてのRFIDデバイス101の本来IDを記憶し、リーダ・ライタ203を介してアクセスしたRFIDデバイス101がどのRFIDデバイス101であるかを特定する。
リーダ・ライタ203は、RFIDデバイス101から情報を読み取るリーダ機能と、RFIDデバイス101に情報を書き込むライタ機能と、を備える。なお、本実施形態では、リーダ・ライタ203のリーダ機能とライタ機能とが同一の装置で実現されるが、リーダ機能とライタ機能とが別々の装置で実現されてもよい。
RFIDデバイス101は、リーダ・ライタ203を介してサーバ201と通信する。RFIDデバイス101とリーダ・ライタ203とは、無線パケットによって通信する。
図3は、本発明の第1実施形態の複数のRFIDデバイス101から情報を読み取る場合のRFIDシステムのシーケンス図である。
まず、サーバ201は、乱数αを生成する(301)。次に、サーバ201は、サーバ201が管理するすべてのRFIDデバイス101の本来IDとステップ301の処理で生成した乱数αとを入力としてハッシュ関数を演算し、サーバ201が管理するすべてのRFIDデバイス101の本来IDに対して、ハッシュ値を算出する(302)。
次に、サーバ201は、ステップ301の処理で生成した乱数αをRFIDデバイス101に書き込む要求をリーダ・ライタ203に送信する(303)。
リーダ・ライタ203は、乱数αの書き込み要求をサーバ201から受信した場合、受信した乱数αの書き込み要求をRFIDデバイス101A及び101B(以下、RFIDデバイス101A及び101Bを総じてRFIDデバイス101という)に送信する(304)。
RFIDデバイス101は、乱数αの書き込み要求をリーダ・ライタ203から受信した場合、次回ID記録部106を乱数αに上書きする。そして、RFIDデバイス101は、ID記録部104に記録されている本来IDと次回ID記録部106に記録されている乱数αとを入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス101は、次回ID記録部106を算出したハッシュ値に上書きする(305)。なお、ステップ305の処理で算出されたハッシュ値が、RFIDデバイス101が次に送信する次回IDとなる。
一方、サーバ201は、ステップ303の処理で乱数αの書き込み要求を送信してから所定時間経過後、RFIDデバイス101の次回ID記録部106に記録されている次回IDを読み取る要求を、リーダ・ライタ203に送信する(306)。
なお、所定時間は、RFIDデバイス101がステップ305の処理を実行するために要する時間以上に設定される。これによって、RFIDデバイス101が本来IDと乱数αとを入力としてハッシュ演算した後に、サーバ201は次回IDの読み取り要求を送信できるので、確実に次回IDを読み取ることができる。
リーダ・ライタ203は、次回IDの読み取り要求を受信した場合、受信した次回IDの読み取り要求をRFIDデバイス101A及び101Bに送信する(307)。
RFIDデバイス101は、次回IDの読み取り要求を受信した場合、次回ID記録部106に記録されている値(次回ID)を、リーダ・ライタ203に送信する(308)。
ステップ308の処理で、RFIDデバイス101Aが送信した次回IDの無線パケットと、RFIDデバイス101Bが送信した次回IDの無線パケットとが衝突した場合(309)に、RFIDデバイス101A及び101Bは、それぞれ衝突回避プログラム107を実行し、衝突開始制御処理を実行する(310)。
衝突開始制御処理については、非特許文献3に記載されている。
例えば、RFIDデバイス101は、次回IDの無線パケットを送信する時間間隔を変更して、次回IDの無線パケットを送信する(311)ことによって、無線パケットの衝突を回避する。
また、サーバ201が、無線パケットの最初のビットが例えば「1」である無線パケットのみを読み取る要求を、リーダ・ライタ203を介してRFIDデバイス101A及び101Bに送信する。RFIDデバイス101A及び101Bは、最初のビットが「1」である無線パケットのみを読み取る要求を受信した場合には、次回IDの無線パケットの最初のビットが「1」であるか否かを判定する。
次回IDの無線パケットの最初のビットが「1」でないと判定された場合、RFIDデバイス101A及び101Bは、次回IDの無線パケットをリーダ・ライタ203に送信しない。一方、次回IDの無線パケットの最初のビットが「1」であると判定された場合、RFIDデバイス101A及び101Bは、次回IDの無線パケットのリーダ・ライタ203に送信する(311)。
RFIDデバイス101Aが送信した次回IDの無線パケットとRFIDデバイス101Bが送信した次回IDの無線パケットとがまだ衝突する場合、サーバ201は、次に、次回IDの無線パケットの最初から二つ目のビットが「1」である無線パケットの読み込み要求をリーダ・ライタ203に送信する。以下の処理は、最初のビットが「1」である無線パケットの要求と同じであるので、説明を省略する。
これを繰り返すことによって、RFIDデバイス101Aが送信した次回IDの無線パケットとRFIDデバイス101Bが送信した次回IDの無線パケットとの衝突を回避できる。
リーダ・ライタ203は、ステップ311の処理で送信された次回IDを受信した場合、受信した次回IDをサーバ201に送信する(312)。
なお、RFIDデバイス101は、衝突することなく次回IDを送信した場合、ID記録部104に記録されている本来IDと次回ID記録部106に記録されている送信した次回IDとを入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス101は、算出したハッシュ値を次回ID記録部106に上書きする(313)。
RFIDデバイス101が、次回ID送信後にステップ313の処理を実行して、次回ID記録部106を新たなハッシュ値に上書きすることによって、次回IDが送信されるごとに次回ID記録部106に記録される値が更新される。これによって、RFIDデバイス101は、サーバ201から乱数αを受信していないリーダ・ライタ203から、読み込み要求を受信した場合であっても、前回送信した次回IDと異なる次回IDを送信するので、ロケーションプライバシは問題とならない。
一方、サーバ201は、ステップ312の処理でリーダ・ライタ203によって送信された次回IDを受信した場合、ステップ302の処理でサーバ201が管理するすべてのRFIDデバイス101の本来IDに対して算出したハッシュ値のうち、受信した次回IDの値と一致するハッシュ値を検索し、一致するハッシュ値の本来IDを取得することによって、次回IDを送信したRFIDデバイスを特定する(314)。
次に、RFIDデバイス101の乱数更新処理について、図4を用いて説明する。
図4は、本発明の第1実施形態のRFIDデバイス101の乱数更新処理のフローチャートである。乱数更新受信処理は、RFIDデバイス101が乱数αの書き込み要求を受信した場合に、RFIDデバイス101のCPU102によって実行される。
まず、RFIDデバイス101は、リーダ・ライタ203から乱数αの書き込み要求を外部無線インタフェース108を介して受信する(401)。
次に、RFIDデバイス101は、次回ID記録部106に受信した書き込み要求の乱数αを記録する(402)。
次に、RFIDデバイス101は、ID記録部104に記録されている本来IDと次回ID記録部106に記録されている乱数αとを入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス101は、次回ID記録部106を算出したハッシュ値に上書きして(403)、乱数更新処理を終了する(404)。
ステップ402の処理で、RFIDデバイス101が受信した書き込み要求の乱数αを次回ID記録部106に記録するのは、ステップ403の処理(図3のステップ305の処理)のハッシュ関数の演算とステップ503の処理(図3のステップ313の処理)のハッシュ関数の演算とを同じく設定できるからである。具体的には、ステップ403の処理のハッシュ関数の演算及びステップ503の処理のハッシュ関数の演算は、ID記録部104に記録されている値と次回ID記録部106に記録されている値とを入力としたハッシュ関数を演算する。
次に、RFIDデバイス101の読み取り要求受信処理を、図5を用いて説明する。
図5は、本発明の第1実施形態のRFIDデバイス101の読み取り要求受信処理のフローチャートである。読み取り要求受信処理は、RFIDデバイス101が読み取り要求を受信した場合に、RFIDデバイス101のCPU102によって実行される。
まず、RFIDデバイス101は、リーダ・ライタ203から読み取り要求を外部無線インタフェース108を介して受信する(501)。
次に、RFIDデバイス101は、次回ID記録部106に記録されている次回IDをリーダ・ライタ203に送信する(502)。
次に、RFIDデバイス101は、ID記録部104に記録されている本来IDと次回ID記録部106に記録されている次回IDとを入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス101は、次回ID記録部106を算出したハッシュ値に上書きして(503)、読み取り要求受信処理を終了する(504)。
次に、サーバ201の処理について図6を用いて説明する。
図6は、本発明の第1実施形態のサーバ201の次回ID取得処理のフローチャートである。次回ID取得処理は、サーバ201の図示しないCPUによって実行される。
サーバ201は、サーバ201の管理者からの指示又は所定の周期によって次回ID取得処理を実行する(601)。
サーバ201は、乱数αを生成する(602)。
次に、サーバ201は、サーバ201が管理するすべてのRFIDデバイス101の本来IDとステップ602の処理で生成した乱数αとを入力としてハッシュ関数を演算し、サーバ201が管理するすべてのRFIDデバイス101の本来IDに対して、ハッシュ値を算出する(603)。
次に、サーバ201は、サーバ201が管理するすべてのRFIDデバイス101の本来IDに対して、ステップ603の処理で算出したハッシュ値のうち、同じ値になるハッシュ値があるか否かを判定する(604)。
サーバ201が管理するすべてのRFIDデバイス101の本来IDに対して、ステップ603の処理で算出したハッシュ値のうち、同じ値になるハッシュ値があるとステップ604の処理で判定された場合、サーバ201は、次回IDを送信したRFIDデバイス101を特定できないため、ステップ602の処理に戻り、乱数αを再度生成する。
一方、サーバ201が管理するすべてのRFIDデバイス101の本来IDに対して、ステップ603の処理で算出したハッシュ値のうち、同じ値になるハッシュ値がないとステップ604の処理で判定された場合、RFIDデバイス101は、乱数αをRFIDデバイス101の次回ID記録部106に書き込む要求をリーダ・ライタ203に送信する(605)。
次に、サーバ201は、ステップ605の処理で乱数αの書き込み要求を送信してから、所定時間経過後、RFIDデバイス101の次回ID記録部106に記録されている次回IDを読み取る要求を、リーダ・ライタ203に送信する(606)。
次に、サーバ201は、リーダ・ライタ203から次回IDを受信する(607)。なお、ステップ607の処理では、サーバ201は、N個の次回IDを受信したものとする。また、次回IDを受信した順に、次回ID1〜次回IDNとする。
次に、サーバ201は、i=1を設定する(608)。つまり、サーバ201は、次回ID1から、次回IDを送信したRFIDデバイス101を特定する処理を開始する。
次に、サーバ201は、ステップ603の処理でサーバ201が管理するすべてのRFIDデバイス101の本来IDに対して算出したハッシュ値のうち、次回IDiの値と一致するハッシュ値が存在するか否かを判定する(609)。
ステップ603の処理でサーバ201が管理するすべてのRFIDデバイス101の本来IDに対して算出したハッシュ値のうち、次回IDiの値と一致するハッシュ値が存在しないと、ステップ609の処理で判定された場合、サーバ201は、次回IDiを送信したRFIDデバイス101はサーバ201が管理していないRFIDデバイスであると認識する(613)。
ステップ603の処理でサーバ201が管理するすべてのRFIDデバイス101の本来IDに対して算出したハッシュ値のうち、次回IDiの値と一致するハッシュ値が存在すると、ステップ609の処理で判定された場合、サーバ201は、次回IDiを送信したRFIDデバイス101の本来IDを特定し、次回IDiを送信したRFIDデバイス101を特定する(610)。
そして、受信したすべての次回IDに対してRFIDデバイス101を特定する処理が実行されたか否かを判定するために、次回IDiのiがNよりも小さいか否かを判定する(611)。
ステップ611の処理で、次回IDiのiがNよりも小さいと判定された場合、つまり、受信したすべての次回IDに対してRFIDデバイス101を特定する処理が実行されていないと判定された場合、サーバ201は、iをインクリメントした値を新たなiとし(614)、ステップ609の処理に戻る。
一方、ステップ611の処理で、次回IDiのiがN以上であると判定された場合、つまり、受信したすべての次回IDに対してRFIDデバイス101を特定する処理が実行されたと判定された場合、サーバ201は、次回ID取得処理を終了する(612)。
RFIDデバイス101が次回IDを送信するごとに、ハッシュ関数を演算したハッシュ値を次回IDとして送信するため、次回IDの送信ごとに次回IDが変化するため、ロケーションプライバシの問題及びコンテンツプライバシの問題を解決でき、さらに、なりすましも防止できる。
また、RFIDデバイス101は、読み込み要求を受信する前に、送信する次回IDを予め算出しているので、サーバ201から送信される読み込み要求に対して、すぐに次回IDを送信できる。
RFIDデバイス101の標準化において,RFIDリーダ/ライタ203が読み込み要求を送信してからRFIDデバイス101から読み込み要求に対する返事を受信するまでの時間がμsの単位で規定されている。
この規定では、RFIDデバイス101が読み込み要求を受信した場合に、ハッシュ関数を演算することは考慮されていない。よって、RFIDデバイス101が読み込み要求を受信してからハッシュ関数を演算する方法では,規定時間内に次回IDを送信する返すことは困難である。
また,サーバ201が複数個(N個)のRFIDデバイス101に読み込み要求を送信する場合の衝突回避に関しても,既存の方式ではRFIDデバイス101が読み込み要求受信後にハッシュ関数を演算することは考慮されていないため,新たな方式が必要になる可能性がある。
本実施形態では,RFIDデバイス101は、読み込み要求に対して次回IDを即答するので,既存の規定時間内で次回IDを送信でき,衝突回避に関しても既存の方法の適用が可能である。
さらに、RFIDデバイス101が読み込み要求を受信した場合に、RFIDデバイス101自身が乱数αを算出し,生成した乱数を用いてハッシュ関数を演算する方法では、N個のRFIDデバイス101がそれぞれ異なる乱数αを用いてハッシュ関数を演算する。したがって、サーバ201は、次回IDを特定するためにハッシュ関数を演算する回数は、サーバ201が管理するすべての本来IDに対してN回である。
これに対して、本実施形態では、全てのRFIDデバイス101が同じ乱数αを用いてハッシュ関数を演算するため,サーバ201は、次回IDを特定するためのハッシュ関数を,サーバ201が管理するすべての本来IDに対して一回だけ、演算すればよい。
<第2実施形態>
第1実施形態では、サーバ201が複数のRFIDデバイス101の次回IDを取得することに適した実施形態を示した。第2実施形態では、RFIDデバイス701のセキュリティを高める実施形態を示す。
第2実施形態を図7〜図11を用いて説明する。
図7は、本発明の第2実施形態のRFIDデバイス701のブロック図である。なお、第1実施形態と同じ構成は同じ番号を付与し、説明を省略する。
RFIDデバイス701は、CPU102、メモリ103、外部無線インタフェース108及びバス109を備える。
メモリ103は、ID記録部104、ハッシュ計算プログラム105、次回ID記録部106、衝突回避プログラム107、及びカウンタ702を含む。
カウンタ702は、次回IDを送信するごとに記憶された値がインクリメントされる。
図8は、本発明の第2実施形態のRFIDデバイス701から情報を読み取る場合のRFIDシステムのシーケンス図である。
リーダ・ライタ203は、周期的にRFIDデバイスのIDの読み取り要求をRFIDデバイス701に送信する(801)。
RFIDデバイス701は、読み取り要求を受信した場合、次回ID記録部106に記録されている次回ID、及びカウンタ702に記録されているカウンタ値をリーダ・ライタ203に送信する(802)。
そして、RFIDデバイス701は、カウンタ702に記憶された値をインクリメントし、カウンタ値を更新する。そして、RFIDデバイス701は、ID記録部104に記録されている本来ID、次回ID記録部106に記録されている値、及び更新したカウンタ値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス701は、次回ID記録部106を算出したハッシュ値に上書きする(804)。
リーダ・ライタ203は、次回ID及びカウンタ値を受信した場合、受信した次回ID及びカウンタ値をサーバ201に送信する(803)。
サーバ201は、次回ID及びカウンタ値を受信した場合、乱数αを生成する(805)。そして、サーバ201は、生成した乱数αをRFIDデバイス701の次回ID記録部106に書き込む要求をリーダ・ライタ203に送信する(806)。
リーダ・ライタ203は、受信した乱数αの書き込み要求をRFIDデバイス701に送信する(807)。
RFIDデバイス701は、乱数αの書き込み要求を受信した場合、受信した乱数αを次回ID記録部106に上書きする。そして、RFIDデバイス701は、ID記録部104に記録されている本来ID、次回ID記録部106に記録されている値、及び更新したカウンタ値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス701は、次回ID記録部106を算出したハッシュ値に上書きする(808)。
次に、サーバ201は、ステップ806の処理で乱数αの書き込み要求を送信してから、RFIDデバイス701がステップ804の処理を実行するために要する時間以上に設定された所定時間経過後、RFIDデバイス701の次回ID記録部106に記録されている次回IDを読み取る要求を、リーダ・ライタ203に送信する(809)。
リーダ・ライタ203は、次回IDの読み取り要求を受信した場合、受信した次回IDの読み取り要求をRFIDデバイス701に送信する(810)。
RFIDデバイス701は、次回IDの読み取り要求を受信した場合、次回ID記録部106に記録されている値(次回ID)、及び次回IDを算出するためにハッシュ関数の演算の入力としたカウンタ値を、リーダ・ライタ203に送信する(811)。
リーダ・ライタ203は、RFIDデバイス701から次回ID及びカウンタ値を受信した場合、受信した次回ID及びカウンタ値をサーバ201に送信する(812)。
なお、RFIDデバイス701は、ステップ811の処理で次回ID及びカウンタ値を送信した場合、カウンタ702に記憶された値をインクリメントし、カウンタ値を更新する。そして、RFIDデバイス701は、ID記録部104に記録されている本来ID、次回ID記録部106に記録されている値、及び更新したカウンタ値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス701は、次回ID記録部106を算出したハッシュ値に上書きする(813)。
一方、サーバ201は、ステップ812の処理でリーダ・ライタ203によって送信された次回ID及びカウンタ値を受信した場合、サーバ201が管理するすべてのRFIDデバイス701の本来IDに対して、本来ID、受信したカウンタ値、及びステップ805の処理で生成した乱数αを入力として、RFIDデバイス701と同じハッシュ関数を演算する。そして、サーバ201は、サーバ201が管理するすべてのRFIDデバイス701の本来IDに対して演算したハッシュ値のうち、受信した次回IDの値と一致するハッシュ値を検索し、一致するハッシュ値の本来IDを取得することによって、次回IDを送信したRFIDデバイスを特定する(814)。
次に、RFIDデバイス701の乱数更新処理について、図9を用いて説明する。
図9は、本発明の第2実施形態のRFIDデバイス701の乱数更新処理のフローチャートである。乱数更新処理は、RFIDデバイス701が乱数αの書き込み要求を受信した場合に、RFIDデバイス701のCPU102によって実行される。
まず、RFIDデバイス701は、リーダ・ライタ203から乱数αの書き込み要求を外部無線インタフェース108を介して受信する(901)。
次に、RFIDデバイス701は、次回ID記録部106を受信した書き込み要求の乱数αに上書きする(902)。
次に、RFIDデバイス701は、ID記録部104に記録されている本来ID、次回ID記録部106に記録されている乱数α、及びカウンタ702に記録されているカウンタ値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス701は、次回ID記録部106を算出したハッシュ値に上書きして(903)、乱数更新処理を終了する(904)。
次に、RFIDデバイス701の読み取り要求受信処理を、図10を用いて説明する。
図10は、本発明の第2実施形態のRFIDデバイス701の読み取り要求受信処理のフローチャートである。読み取り要求受信処理は、RFIDデバイス701が読み取り要求を受信した場合に、RFIDデバイス701のCPU102によって実行される。
まず、RFIDデバイス701は、リーダ・ライタ203から読み取り要求を外部無線インタフェース108を介して受信する(1001)。
次に、RFIDデバイス701は、次回ID記録部106に記録されている次回ID及びカウンタ702に記録されているカウンタ値をリーダ・ライタ203に送信する(1002)。
そして、RFIDデバイス701は、次回IDを送信したので、カウンタ702に記録されているカウンタ値をインクリメントして、カウンタ値を更新する(1003)。
次に、RFIDデバイス701は、ID記録部104に記録されている本来ID、次回ID記録部106に記録されている次回ID、及びカウンタ702に記録されているカウンタ値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス701は、次回ID記録部106を算出したハッシュ値に上書きして(1004)、読み取り要求受信処理を終了する(1005)。
次に、サーバ201の処理について図11を用いて説明する。
図11は、本発明の第2実施形態のサーバ201の次回ID取得処理のフローチャートである。次回ID取得処理は、サーバ201の図示しないCPUによって実行される。
サーバ201は、周期的な読取り処理801によってリーダ・ライタ203が得たRFIDデバイス情報の通知803、サーバ201の管理者からの指示、又は所定の周期によって次回ID取得処理を実行する(1101)。
そして、サーバ201は、乱数αを生成する(1102)。
RFIDデバイス701は、乱数αをRFIDデバイス701の次回ID記録部106に書き込む要求をリーダ・ライタ203に送信する(1103)。
次に、サーバ201は、ステップ1103の処理で乱数αの書き込み要求を送信してから、所定時間経過後、RFIDデバイス701の次回ID記録部106に記録されている次回IDを読み取る要求を、リーダ・ライタ203に送信する(1104)。
次に、サーバ201は、リーダ・ライタ203から次回ID及びカウンタ値を受信する(1105)。
次に、サーバ201は、サーバ201が管理するすべてのRFIDデバイス101の本来IDに対して、本来ID、ステップ1102の処理で生成した乱数α、及び受信したカウンタ値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、サーバ201は、算出したハッシュ値と受信した次回IDとを比較する(1106)。
サーバ201は、ステップ1106の処理で算出したハッシュ値のうち、受信した次回IDと一致するハッシュ値があるか否かを判定する(1107)。
ステップ1106の処理で算出したハッシュ値のうち、受信した次回IDと一致するハッシュ値がないと、ステップ1107の処理で判定された場合、サーバ201は、次回IDを送信したRFIDデバイス701はサーバ201が管理していないRFIDデバイスであると認識する(1111)。
一方、ステップ1106の処理で算出したハッシュ値のうち、受信した次回IDと一致するハッシュ値があると、ステップ1107の処理で判定された場合、サーバ201は、ステップ1106の処理で算出したハッシュ値のうち、受信した次回IDと一致するハッシュ値が複数存在するか否かを判定する(1108)。
ステップ1106の処理で算出したハッシュ値のうち、受信した次回IDと一致するハッシュ値が複数存在しないとステップ1108の処理で判定された場合、サーバ201は、次回IDを送信したRFIDデバイス701の本来IDを特定し、次回IDを送信したRFIDデバイス701を特定し(1109)、次回ID取得処理を終了する(1110)。
一方、ステップ1106の処理で算出したハッシュ値のうち、受信した次回IDと一致するハッシュ値が複数存在するとステップ1108の処理で判定された場合、乱数αの値が不適切であったと判定し、サーバ201は、乱数αを再度生成する(1112)。
そして、サーバ201は、ステップ1112の処理で再度生成した乱数αの書き込み要求をリーダ・ライタ203に送信する(1113)。
次に、サーバ201は、ステップ1113の処理で乱数αの書き込み要求を送信してから、所定時間経過後、RFIDデバイス701の次回ID記録部106に記録されている次回IDを読み取る要求を、リーダ・ライタ203に送信する(1114)。
次に、サーバ201は、リーダ・ライタ203から次回ID及びカウンタ値を受信する(1115)。
次に、サーバ201は、ステップ1107の処理で次回IDと一致すると判定されたハッシュ値の本来IDに対して、本来ID、ステップ1112の処理で生成した乱数α、及び受信したカウンタ値を入力としてハッシュ関数を再度演算し、ハッシュ値を算出する。そして、サーバ201は、算出したハッシュ値と受信した次回IDとを比較し(1116)、ステップ11107の処理に戻る。
第2実施形態では、RFIDデバイス701は次回IDを送信するごとに更新されるカウンタ702を備える。そして、RFIDデバイス701は、本来ID、前回送信した次回ID、及びカウンタ値を入力としてハッシュ関数を演算する。
これによって、サーバ201が前回と同じ乱数αを生成した場合であっても、RFIDデバイス701は、前回送信した次回IDと異なる次回IDを送信できる。
したがって、RFIDデバイス701は、確実に毎回異なる次回IDを送信することができるので、ロケーションプライバシ問題のセキュリティが向上する。
<第3実施形態>
第3実施形態では、複数の企業がそれぞれRFIDデバイス1204を提供し、複数の企業が別のサーバ1201によってRFIDデバイス1204の情報を管理する場合に、リーダ・ライタ1203が、RFIDデバイス1204の情報を、RFIDデバイス1204を提供する企業のサーバ1201のみに送信する。
第3実施形態を図12及び図13を用いて説明する。
図12は、本発明の第3実施形態のRFIDシステムの構成図である。
RFIDシステムは、複数のサーバ1201A〜1201C(サーバ1201A〜1201Cを総称してサーバ1201という)、リーダ・ライタ1203及びRFIDデバイス1204を備える。リーダ・ライタ1203とサーバ1201とは、ネットワーク1202によって接続される。
サーバ1201A〜1201C、リーダ・ライタ1203及びRFIDデバイス1204の構成は、第1実施形態と同じである。
複数の企業がRFIDデバイス1204を提供している。RFIDデバイスを提供する各企業は、それぞれ別のサーバでRFIDデバイス1204の情報を管理する。
具体的には、A企業は、A企業が提供するRFIDデバイス1204の情報をサーバ1201Aで管理し、B企業は、B企業が提供するRFIDデバイス1204の情報をサーバ1201Bで管理し、C企業は、C企業が提供するRFIDデバイス1204の情報をサーバ1201Cで管理する。
RFIDデバイス1204から次回IDを受信したリーダ・ライタ1203は、受信した次回IDを、リーダ・ライタ1203にネットワーク1202を介して接続されたすべてのサーバ1201A〜1202Cに送信してもよい。
しかし、サーバ1201は、サーバ1201が情報を管理していないRFIDデバイス1204の次回IDを受信しても、受信した次回IDを送信したRFIDデバイス1204の本来IDを特定できない。したがって、リーダ・ライタ1203がすべてのサーバ1201に次回IDを送信すると、サーバ1201は、次回IDを送信したRFIDデバイス1204を特定できないにもかかわらず、次回IDを送信したRFIDデバイス1204を特定する処理を実行してしまう。つまり、サーバ1201に無駄な処理を実行させてしまう。
そこで、第3実施形態では、RFIDデバイス1204は、本来IDの情報のうち、RFIDデバイス1204を管理するサーバ1201を特定可能な情報を含めた次回IDを送信することによって、リーダ・ライタ1203が次回IDを送信すべきサーバ1201を特定し、特定したサーバ1201に送信する。
これによって、リーダ・ライタ1203は、次回IDを送信したRFIDデバイス1204を管理するサーバ1201にのみ次回IDを送信するので、サーバ1201に無駄な処理を実行させてしまうことを防止できる。
図13は、本発明の第3実施形態のハッシュ関数の入力とする本来IDの情報を説明する図である。
本来ID1301は、通常、フリー部分1302、製品種別部分1303及び企業番号部分1304を含む。
フリー部分1302には、RFIDデバイス1204の一意な識別子が含まれる。製品種別部分1303には、RFIDデバイス1204の製品種別を示す情報が含まれる。
企業番号部分1304には、RFIDデバイス1204を提供する企業を示す情報が含まれる。本実施形態では、RFIDデバイス1204を提供する複数の企業がそれぞれ別のサーバ1201でRFIDデバイス1204の情報を管理するので、企業番号部分1304に含まれるRFIDデバイス1204を提供する企業を示す情報は、RFIDデバイス1204を管理するサーバ1201を特定可能な情報である。
次回ID1306は、フリー部分1307、製品種別部分1303及び企業番号部分1304を含む。
次回ID1306の製品種別部分1303及び企業番号部分1304は、本来ID1301の製品種別部分1303及び企業番号部分1304と同じである。
次回ID1306のフリー部分1307には、本来ID1301のフリー部分1302の情報と、前回送信した次回ID1306のフリー部分1307の情報と、を入力としたハッシュ関数が演算され(1305)、演算されたハッシュ値が登録される。
リーダ・ライタ1203は、次回IDを受信した場合、受信した次回IDに含まれる企業部分1304、つまりRFIDデバイス1204を管理するサーバ1201を特定可能な情報に基づいて、受信した次回IDを送信すべきサーバ1201を特定し、受信した次回IDを特定したサーバ1201に送信する。
RFIDデバイス1204は、RFIDデバイス1204自体の一意な識別子を入力としてハッシュ関数を演算するので、ロケーションプライバシ問題及びコンテンツプライバシ問題を解決できるとともに、RFIDデバイス1204を管理するサーバ1201を特定可能な情報を次回IDに含めるので、当該RFIDデバイス1204を管理しないサーバ1201に無駄な処理を実行させることを防止できる。
なお、本実施形態では、RFIDデバイス1204は、本来ID1301のフリー部分1302のみをハッシュ関数演算したが、本来ID1301のすべての情報と次回ID記録部106に記録された情報とを入力としたハッシュ関数を演算して、演算したハッシュ値を次回ID1306のフリー部分1307に含めてもよい。
また、本実施形態では、RFIDデバイス1204は、本来ID1301の製品種別部分1303をそのまま次回ID1306に含めたが、本来ID1301のフリー部分1302及び製品種別部分1303をハッシュ関数演算して、次回ID1306のフリー部分1307に含めてもよい。
さらに、本実施形態では、RFIDデバイス1204は、本来ID1301のフリー部分1302の情報と、前回送信した次回ID1306のフリー部分1307の情報と、を入力としたハッシュ関数を演算したが、本来ID1301のフリー部分1302の情報と、次回ID記録部106に記録されている値(つまり前回送信した次回ID又はサーバ1201が生成した乱数)と、を入力としたハッシュ関数を演算してもよい。
<第4実施形態>
第4実施形態では、第1実施形態のRFIDシステムの在庫管理等における使用例を示す。
第4実施形態を図14及び図15を用いて説明する。
図14は、本発明の第4実施形態のRFIDシステムの構成を示す図である。
RFIDシステムは、サーバ1401、ライタ1403、リーダ1404及びRFIDデバイス1406a〜1406n(RFIDデバイス1406a〜1406nを総称してRFIDデバイス1406という)を備える。サーバ1401は、ネットワーク1402を介して、ライタ1403及びリーダ1404に接続される。
なお、RFIDデバイス1406から情報を読み取る要求を送信するリーダ1404と、RFIDデバイス1406へ乱数αを書き込む要求を送信するライタ1403と、が別体で配置される。
RFIDデバイス1406は商品に装着される。そして、n個のRFIDデバイス1406a〜1406nは、それぞれ箱1405に詰められている。
RFIDデバイス1406が詰められた複数の箱1405A〜1405mは、ベルトコンベア1407上を流される。
ベルトコンベア1407上を流れているRFIDデバイス1406は、ライタ1403付近を通過する場合に、ライタ1403から乱数αの書き込み要求を受信する。そして、RFIDデバイス1406は、乱数αの書き込み要求を受信した場合に、乱数αを次回ID記録部106に記憶し、ID記録部104に記録されている本来IDと、次回ID記録部106に記録されている乱数αと、を入力として、ハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス1406は、次回ID記録部106を算出したハッシュ値に上書きする。
次に、ベルトコンベア上を流れているRFIDデバイス1406は、リーダ1404付近を通過する場合に、リーダ1404から読み取り要求を受信する。RFIDデバイス1406は、読み取り要求を受信した場合に、次回ID記録部106に記録されている次回IDをライタ1403に送信する。
なお、ライタ1403が設置される場所とリーダ1404が設置される場所との間隔は、RFIDデバイス1406が次回IDを算出した後に読み取り要求を受信できるように、RFIDデバイス1406がハッシュ関数を演算するために要する時間とベルトコンベア1407の速度とを乗じた値以上にする。
図15は、本発明の第4実施形態の複数のRFIDデバイス101から情報を読み取る場合のRFIDシステムのシーケンス図である。
ライタ1403は、サーバ1401によって生成された乱数αを予め受信している。ライタ1403は、ベルトコンベア1407の速度に基づいて、周期的に乱数αの書き込み要求を送信する(1501)。
RFIDデバイス1406は、乱数αの書き込み要求を受信した場合、乱数αを次回ID記録部106に記録し、本来IDと次回ID記録部106に記録した乱数αとを入力としてハッシュ関数を演算し、ハッシュ値を次回ID記録部106に上書きする(1502)。
一方、リーダ1404は、ベルトコンベア1407の速度に基づいて、周期的に乱数αの書き込み要求を送信する(1503)。この場合、ライタ1403が設置される場所とリーダ1404が設置される場所との間隔は、RFIDデバイス1406がハッシュ関数を演算するために要する時間とベルトコンベア1407の速度とを乗じた値以上にするため、RFIDデバイス1406は、ステップ1502の処理を実行した後に、読み取り要求を受信する。
RFIDデバイス1406は、図3に示すステップ310の処理と同じ衝突回避制御処理を実行しながら(1504)、リーダ1404に次回IDを送信する(1505)。
リーダ1404は、次回IDを受信した場合、受信した次回IDをサーバ1401に送信する(1506)。
サーバ1401は、次回IDを受信した場合、乱数αの生成後すぐにサーバ1401が管理するすべてのRFIDデバイス1406の本来IDに対して算出しておいたハッシュ値のうち、受信した次回IDの値と一致するハッシュ値を検索し、一致するハッシュ値の本来IDを取得することによって、次回IDを送信したRFIDデバイス1406を特定する(1507)。
RFIDデバイス1406は、ライタ1403から乱数αの書き込み要求を受信すると、ハッシュ関数を演算し、次回IDを生成しておき、ハッシュ関数の演算後にリーダ1404から読み込み要求を受信する。よって、ベルトコンベアの速度を、読み取り要求を受信すると本来IDを送信するRFIDデバイスを流すベルトコンベアの速度と同じに設定できる。
なお、本実施形態では、第1実施形態の利用する場合を示したが、カウンタ値を用いてハッシュ関数を演算する第2実施形態を利用してもよい。
<第5実施形態>
第5実施形態では、RFIDデバイスが装着された商品を購入したユーザが、商品を購入した後で、自宅及び店舗等でサービスを利用できる例を示す。
第5実施形態を、図16〜図18を用いて説明する。
図16は、本発明の第5実施形態のRFIDシステムの構成図である。
RFIDシステムは、サーバ1601、個人用計算機(PC)1604、PC1604に接続されるリーダ・ライタ1603、及びRFIDデバイス1605を備える。
サーバ1601とPC1604とは、ネットワーク1602を介して接続される。PC1604は、店舗1607又はRFIDデバイス1605が装着された商品を購入したユーザ1606の自宅1607等に設置されている。
サーバ1601は、商品に装着されていたRFIDデバイス1605を所有するユーザ1606にのみ、サービスを提供する。
図17は、本発明の第5実施形態のRFIDデバイス1605から情報を読み取る場合のRFIDシステムのシーケンス図である。
まず、ユーザ1606がPC1604に、アクセス先のURL等を入力することによって、PC1604は、アクセス先のサーバ1601にアクセス要求を送信する(1701)。
サーバ1601は、アクセス要求を受信した場合、乱数αを生成し(1702)、生成した乱数αをRFIDデバイス1605に書き込む要求をPC1604に送信する(1703)。
PC1604は、乱数αの書き込み要求を受信した場合、乱数αの書き込み指示をリーダ・ライタ1603に送信する(1704)。
リーダ・ライタ1603は、乱数αの書き込み指示を受信した場合、乱数αの書き込み要求をRFIDデバイス1605に送信する(1705)。
RFIDデバイス1605は、乱数αの書き込み要求を受信した場合、次回ID記録部106に乱数αを記憶し、本来IDと次回ID記録部106に記憶されている乱数αとを入力としたハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス1605は、算出したハッシュ値を次回ID記録部106に上書きする(1706)。
一方、サーバ1601は、ステップ1703の処理で乱数αの書き込み要求を送信してから所定時間経過後、RFIDデバイス1605の次回ID記録部106に記録されている次回IDを読み取る要求を、PC1604に送信する(1707)。
なお、所定時間は、RFIDデバイス1605がステップ1706の処理を実行するために要する時間以上に設定される。
PC1604は、次回IDの読み取り要求を受信した場合、次回IDの読み取り指示をリーダ・ライタ1603に送信する(1708)。
リーダ・ライタ1603は、次回IDの読み取り指示を受信した場合、次回IDの読み取り要求をRFIDデバイス1605に送信する(1709)。
RFIDデバイス1605は、次回IDの読み取り要求を受信した場合、次回ID記録部106に記録されている値(次回ID)を、リーダ・ライタ1603に送信する(1710)。
なお、RFIDデバイス1605は、ステップ1710の処理で次回IDを送信した場合、ID記録部104に記録されている本来IDと次回ID記録部106に記録されている送信した次回IDとを入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス101は、算出したハッシュ値を次回ID記録部106に上書きする(1711)。
リーダ・ライタ1603は、次回IDを受信した場合、受信した次回IDをPC1604に送信する(1712)。
PC1604は、次回IDを受信した場合、受信した次回IDをサーバ1601に送信する(1713)。
サーバ1601は、次回IDを受信した場合、乱数αの生成後すぐにサーバ201が管理するすべてのRFIDデバイス101の本来IDに対して算出しておいたハッシュ値のうち、受信した次回IDの値と一致するハッシュ値を検索し、一致するハッシュ値の本来IDを取得することによって、次回IDを送信したRFIDデバイスを特定する(1714)。
サーバ1601は、ステップ1714の処理で、次回IDを送信したRFIDデバイスを特定した場合、次回IDを送信したPC1604にアクセス許可を送信する(1715)。
PC1604がアクセス許可を受信した場合に、サービスの利用を開始する(1716)。
PC1604は、ユーザ1606からの入力によってサービスの利用を終了する場合には、サービスの利用の終了通知をサーバ1601に送信する(1717)。
そして、サーバ1601は、PC1604からサービスの利用の終了通知を受信した場合、サービスの提供を終了する(1718)。
図18は、本発明の第5実施形態のPC1604のサービス利用処理のフローチャートである。
まず、ユーザ1606がPC1604に、アクセス先のURL等を入力し(1801)、PC1604は、アクセス先のサーバ1601にアクセス要求を送信する(1802)。
次に、PC1604は、アクセス要求を送信したサーバ1601にアクセス制限が設定されているか否かを判定する(1803)。
アクセス制限は、サーバ1601が管理するRFIDデバイス1605か否かを判定し、サーバ1601が管理するRFIDデバイスのみにサービスを提供することをいう。
ステップ1803の処理で、アクセス要求を送信したサーバ1601にアクセス制限が設定されていないと判定された場合、RFIDデバイス1605を特定する処理を実行しないで、サービスの利用を開始する(1811)。
一方、ステップ1803の処理で、アクセス要求を送信したサーバ1601にアクセス制限が設定されていると判定された場合、PC1604は、乱数αの書き込み要求を受信したか否かを判定する(1804)。
ステップ1804の処理で、乱数αの書き込み要求を受信していないと判定された場合、PC1604は、その他の指示を受信したか否かを判定する(1815)。
ステップ1815の処理で、その他の指示を受信していないと判定された場合、PC1604は、エラーをユーザ1606に報知するエラー画面を表示し(1819)、サービス利用処理を終了する(1813)。
一方、ステップ1815の処理で、その他の指示を受信したと判定された場合、PC1604は、受信した指示に対応する処理を実行する(1816)。
一方、ステップ1804の処理で、乱数αの書き込み要求を受信したと判定された場合、PC1604は、乱数αの書き込み指示をリーダ・ライタ1603に送信する(1805)。
そして、PC1604は、次回IDを読み取る要求を受信したか否かを判定する(1806)。
ステップ1806の処理で、次回IDを読み取る要求を受信していないと判定された場合、PC1604は、エラーをユーザ1606に報知するエラー画面を表示し(1819)、サービス利用処理を終了する(1813)。
一方、ステップ1806の処理で、次回IDを読み取る要求を受信したと判定された場合、PC1604は、次回IDの読み取り指示をリーダ・ライタ1603に送信する(1807)。
次に、PC1604は、次回IDを受信したか否かを判定する(1808)。
ステップ1808の処理で、次回IDを受信していないと判定された場合、PC1604は、次回IDの読み取り要求に対して応答がないことをサーバ1601に通知し(1814)、ステップ1810の処理に進む。
一方、ステップ1808の処理で、次回IDを受信したと判定された場合、PC1604は、受信した次回IDをサーバ1601に送信する(1809)。
次に、PC1604は、サーバ1601からアクセス許可を受信したか否かを判定する(1810)。
ステップ1810の処理で、サーバ1601からアクセス許可を受信していないと判定された場合、サーバ1601が次回IDを送信したRFIDデバイス1605を特定できなかった場合に送信するアクセス拒否を受信したか否かを判定する(1817)。
ステップ1817の処理で、サーバ1601からアクセス拒否を受信していないと判定された場合、PC1604は、エラーをユーザ1606に報知するエラー画面を表示し(1819)、サービス利用処理を終了する(1813)。
一方、ステップ1817の処理で、サーバ1601からアクセス拒否を受信したと判定された場合、PC1604は、アクセス要求が拒否された旨を表示し(1818)、サービス利用処理を終了する(1813)。
一方、ステップ1810の処理で、サーバ1601からアクセス許可を受信したと判定された場合、PC1604は、サービスの利用を開始する(1811)。
そして、PC1604は、ユーザ1606からの入力によってサービスの利用を終了する場合には、サービスの利用の終了通知をサーバ1601に送信し(1812)、サービス利用処理を終了する(1813)。
これによって、RFIDデバイス1605は、毎回異なる次回IDを送信できるので、コンテンツプライバシの問題及びロケーションプライバシの問題を解決できる。
また、KILLコマンド等によって本来IDが変化することはないため、RFIDデバイス1605が装着された商品が出荷される前も、RFIDデバイス1605が装着された商品が購入された後も、同じ本来IDである。このため、サーバ1601は、商品出荷された後に、本来IDを変更せずに、RFIDデバイス1605を管理できる。
<第6実施形態>
第6実施形態では、第2実施形態のRFIDデバイスを用いたネットワーク認証を示す。
第6実施形態を図19〜図29を用いて説明する。
図19は、本発明の第6実施形態のRFIDシステムの構成を示す図である。
部屋1910には、複数のPC1906A〜1906N(PC1906A〜1906Nを総称して、PC1906という)が設置される。
複数のPC1906A〜1906Nには、それぞれRFIDデバイス1908に次回IDの読み取り要求を送信するリーダ1905A〜1905N(リーダ1905A〜1905Nを総称して、リーダ1905という)が接続される。
PC1906は、ネットワーク1902を介してサーバ1901に接続される。
PC1906は、ユーザ1909が所有するRFIDデバイス1908がサーバ1901によって特定された場合にのみロックが解除されて、ユーザ1909がPC1906を利用可能になる。
なお、部屋1910の入口のドアは、電気錠1904によって鍵が開閉される。また、入口のドア付近には、RFIDデバイス1908に乱数αの書き込み要求及び次回IDの読み取り要求を送信するリーダ・ライタ1903が設置される。
電気錠1904及びリーダ・ライタ1903は、ネットワーク1902を介してサーバ1901に接続される。
ユーザ1909が所有するRFIDデバイス1908がサーバ1901によって特定された場合にのみ、電気錠1904は開錠する。
サーバ1901は、サーバ1901が管理するRFIDデバイス1908から次に送信される次回IDの予測値を示すID管理テーブル2001を記憶する。
図20は、本発明の第6実施形態のID管理テーブル2001の説明図である。
ID管理テーブル2001は、本来ID2002及び次回ID予測値2003を含む。
本来ID2002には、サーバ1901が管理するすべてのRFIDデバイス1908の本来IDが登録される。
次回ID予測値2003には、RFIDデバイス1908が次に送信する次回IDを予測した値が登録される。
なお、次回ID予測値2003は、サーバ1901が次回IDを受信するごとに更新される。ID管理テーブル2001の更新処理については、図21のステップ2113の処理、ステップ2122の処理、及び図27のステップ2706の処理で説明する。
図21は、本発明の第6実施形態のネットワーク認証処理のRFIDシステムのシーケンス図である。
ネットワーク認証処理には、ユーザ1909が部屋1910に入室する場合に、サーバ1901がドア付近に設置されたリーダ・ライタ1903を介してユーザ1909の所有するRFIDデバイス1908を認証する入室認証処理と、ユーザ1909がPC1906を利用する場合に、サーバ1901がPC1906に接続されたリーダ1905を介してユーザ1909が所有するRFIDデバイス1908を認証するPC利用認証処理とがある。
入室認証処理は、ステップ2101の処理〜ステップ2113の処理で説明する。PC利用認証処理は、ステップ2114の処理〜ステップ2126の処理で説明する。
サーバ1901は、乱数αを周期的に更新し、乱数αを更新した場合、更新した乱数αをリーダ・ライタ1903に通知する。
リーダ・ライタ1903は、サーバ1901から通知された乱数αをRFIDデバイス1908に書き込む要求を周期的にRFIDデバイス1908に送信する(2101)。
RFIDデバイス1908がリーダ・ライタ1903付近に位置している場合に、RFIDデバイス1908は、乱数αの書き込み要求を受信する。
RFIDデバイス1908は、乱数αの書き込み要求を受信した場合、受信した乱数αを次回ID記録部106に上書きする。そして、RFIDデバイス1908は、ID記録部104に記録されている本来ID、次回ID記録部106に記録されている値、及びカウンタ702に記録されているカウンタ値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス1908は、次回ID記録部106を算出したハッシュ値に上書きする(2102)。
リーダ・ライタ1903は、ステップ2101の処理で乱数αの書き込み要求を送信してから、RFIDデバイス1908がステップ2102の処理を実行するために要する時間以上に設定された所定時間経過後、RFIDデバイス1908の次回ID記録部106に記録されている次回IDを読み取る要求を、リーダ・ライタ1903に送信する(2103)。
RFIDデバイス1908は、次回IDの読み取り要求を受信した場合、次回ID記録部106に記録されている値(次回ID)、及び次回IDを算出するためにハッシュ関数の演算の入力としたカウンタ値を、リーダ・ライタ1903に送信する(2104)。
リーダ・ライタ1903は、RFIDデバイス1908から次回ID及びカウンタ値を受信した場合、受信した次回ID及びカウンタ値をサーバ1901に送信する(2106)。
なお、RFIDデバイス1908は、ステップ2104の処理で次回ID及びカウンタ値を送信した場合、カウンタ702に記憶された値をインクリメントし、カウンタ値を更新する。そして、RFIDデバイス1908は、ID記録部104に記録されている本来ID、次回ID記録部106に記録されている値、及び更新したカウンタ値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス1908は、次回ID記録部106を算出したハッシュ値に上書きする(2105)。
一方、サーバ1901は、ステップ2106の処理でリーダ・ライタ1903によって送信された次回ID及びカウンタ値を受信した場合、サーバ1901が管理するすべてのRFIDデバイス701の本来IDに対して、本来ID、受信したカウンタ値、及び乱数αを入力として、RFIDデバイス1908と同じハッシュ関数を演算する。そして、サーバ1901は、サーバ1901が管理するすべてのRFIDデバイス1908の本来IDに対して演算したハッシュ値のうち、受信した次回IDの値と一致するハッシュ値を検索し、一致するハッシュ値の本来IDを取得することによって、次回IDを送信したRFIDデバイス1908を特定する(2107)。
ステップ2107の処理でサーバ1901が次回IDを送信したRFIDデバイス1908を特定できた場合、サーバ1901は、電気錠1904を開錠する要求を電気錠1904に送信する(2108)。
電気錠1904は、電気錠1904を開錠する要求を受信した場合、ドアのロックを開錠する(2109)。そして、電気錠1904は、所定時間経過すると、ドアのロックを閉錠する(2110)。
ユーザ1909は、電気錠1904がドアのロックを開錠している間に、部屋1910に入室し(2111)、自席に着席する(2112)。
また、サーバ1901は、ステップ2107の処理でサーバ1901が次回IDを送信したRFIDデバイス1908を特定できた場合、ID管理テーブル2001を更新する(2113)。
具体的には、サーバ1901は、ステップ2107の処理で取得した本来ID、ステップ2106の処理でリーダ・ライタ1903から送信された次回ID、及びステップ2106の処理でリーダ・ライタ1903から送信されたカウンタ値をインクリメントした値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。
そして、サーバ1901は、ID管理テーブル2001の本来ID2002に登録された本来IDのうち、ステップ2107の処理で取得した本来IDと一致するエントリの次回ID予測値2003に算出したハッシュ値を登録し、ID管理テーブル2001を更新する。
ユーザ1909は、自席に着席すると、PC1906を利用するために、RFIDデバイス1908をPC1906に接続されたリーダ1905にかざす。
PC1906は、RFIDデバイス1908の次回IDを読み取る指示を周期的にリーダ1905に送信している(2114)。リーダ1905は、PC1906から次回IDの読み取り指示を受けると、次回IDの読み取り要求をRFIDデバイス1908に送信する(2115)。つまり。リーダ1905は、次回IDの読み取り要求を周期的に送信している。
したがって、ユーザ1909がRFIDデバイス1908をPC1906に接続されたリーダ1905にかざした場合、RFIDデバイス1908は、リーダ1905から次回IDの読み取り要求を受信する。
RFIDデバイス1908は、次回IDの読み取り要求を受信した場合、次回ID記録部106に記録されている値(次回ID)、及び次回IDを算出するためにハッシュ関数の演算の入力としたカウンタ値を、リーダ1905に送信する(2116)。
なお、RFIDデバイス1908は、ステップ2115の処理で次回ID及びカウンタ値を送信した場合、カウンタ値を更新し、本来ID、送信した次回ID、及び更新したカウンタ値を入力としてハッシュ関数を演算し、ハッシュ値を算出する。そして、RFIDデバイス1908は、次回ID記録部106を算出したハッシュ値に上書きする(2117)。
リーダ1905は、RFIDデバイス1908から次回ID及びカウンタ値を受信した場合、受信した次回ID及びカウンタ値をPC1906に送信する(2118)。
PC1906は、リーダ1905から次回ID及びカウンタ値を受信した場合、受信した次回ID及びカウンタ値をサーバ1901に送信する(2119)。
サーバ1901は、PC1906から次回ID及びカウンタ値を受信した場合、ID管理テーブル2001を参照し、ID管理テーブル2001の次回ID予測値2003に登録された次回IDのうち、受信した次回IDと一致するエントリの本来ID2002に登録された本来IDを取得し、次回IDを送信したRFIDデバイス1908を特定する(2120)。
ステップ2120の処理で、受信した次回IDに対応する本来IDを取得できた場合、サーバ1901は、RFIDデバイス1908を認証したので、RFIDデバイス1908を所有するユーザ1909がPC1906を利用できるように、PC1906がロック状態であれば、ロック状態を解除する利用許可通知をPC1906に送信する(2121)。
サーバ1901は、ステップ2121の処理で利用許可通知を送信した後、ステップ2113の処理と同じく、ID管理テーブル2001を更新する(2122)。
PC1906は、サーバ1901から利用許可通知を受信した場合、PC1906がロック状態であればロック状態を解除する(2123)。
PC1906は次回IDを読み取る指示を周期的にリーダ1905に送信するため、RFIDシステムは、PC利用認証処理を所定周期で繰り返し実行する。なお、図21において、繰り返し実行されるPC利用認証処理は、ステップ2114の処理〜ステップ2122の処理と同じなので、同じ符号を付与し、説明を省略する。
2回目のPC利用認証処理において、RFIDデバイス1908がステップ2117の処理を実行した後に、RFIDデバイス1908を所有するユーザ1909は、RFIDデバイス2117を持って離席する(2124)。
次に実行されるPC利用処理において、リーダ1905から送信される次回IDの読み取り要求は、RFIDデバイス1908によって受信されないため、リーダ1905は、RFIDデバイス1908の次回IDを受信できない。
この場合、リーダ1905は、RFIDデバイス1908から返答がないことをPC1906に通知する(2125)。
PC1906は、RFIDデバイス1908から返答がないことを通知された場合、PC1906を利用できないようにするために、ロック状態にする(2126)。
第6実施形態では、サーバ1901は、PC利用認証処理では、次回ID予測値を用いて、受信した次回IDのRFIDデバイス1908を認証する。よって、次回IDの受信するごとに、サーバ1901が管理するすべてのRFIDデバイス1908の本来IDに対して、サーバ1901がハッシュ関数を演算して、RFIDデバイス1908を認証する場合よりも、サーバ1901の処理負荷を軽減できる。
また、ユーザ1909が部屋1910に入室する場合に、乱数αを用いてハッシュ関数が演算されるため、部屋1910の外で不正に次回IDを取得されたとしても、不正に取得した次回IDを用いてPC1906を利用できない。
図22は、本発明の第6実施形態のリーダ・ライタ1903の乱数αの更新処理のフローチャートである。
リーダ・ライタ1903は、サーバ1901から更新された乱数αを受信する(2201)。
リーダ・ライタ1903は、受信した乱数αを記憶し(2202)、乱数αの更新処理を終了する(2203)。
図23は、本発明の第6実施形態のリーダ・ライタ1903のネットワーク認証処理のフローチャートである。
リーダ・ライタ1903は、所定の周期でネットワーク認証処理を開始する(2301)。
リーダ・ライタ1903は、乱数αの書き込み要求をRFIDデバイス1908に送信する(2302)。
リーダ・ライタ1903は、ステップ2302の処理で乱数αの書き込み要求を送信してから、所定時間経過後に、次回IDの読み取り要求をRFIDデバイス1908に送信する(2303)。
リーダ・ライタ1903は、RFIDデバイス1908から次回ID及びカウンタ値を受信したか否かを判定する(2304)。
ステップ2304の処理で、RFIDデバイス1908から次回ID及びカウンタ値を受信していないと判定された場合、リーダ・ライタ1903は、次回ID取得処理を終了する(2306)。
一方、ステップ2304の処理で、RFIDデバイス1908から次回ID及びカウンタ値を受信したと判定された場合、リーダ・ライタ1903は、受信した次回ID及びカウンタ値をサーバ1901に送信し(2305)、次回ID取得処理を終了する(2306)。
図24は、本発明の第6実施形態のリーダ1905のネットワーク認証処理のフローチャートである。
まず、リーダ1905は、PC1906から次回IDの読み取り指示を受信した場合に、ネットワーク認証処理を開始する(2401)。
リーダ1905は、PC1906から次回IDの読み取り指示を受信した場合、次回IDの書き込み要求をRFIDデバイス1908に送信する(2402)。
リーダ1905は、RFIDデバイス1908から次回ID及びカウンタ値を受信したか否かを判定する(2403)。
ステップ2403の処理で、RFIDデバイス1908から次回ID及びカウンタ値を受信していないと判定された場合、リーダ1905は、RFIDデバイス1908から返答がないことをPC1906に通知し(2406)、次回ID取得処理を終了する(2405)。
一方、ステップ2403の処理で、RFIDデバイス1908から次回ID及びカウンタ値を受信したと判定された場合、リーダ1905は、受信した次回ID及びカウンタ値をPC1906に送信し(2404)、次回ID取得処理を終了する(2405)。
図25は、本発明の第6実施形態のPC1906のネットワーク認証処理のフローチャートである。
PC1906は、次回IDの読み取り指示を所定の周期でリーダ1905に送信する(2501)。
次に、PC1906は、リーダ1905から次回ID及びカウンタ値を受信したか否かを判定する(2502)。
ステップ2502の処理で、リーダ1905から次回ID及びカウンタ値を受信していないと判定された場合、PC1906は、PC1906の状態がロック解除中であるか否かを判定する(2508)。
ステップ2508の処理で、PC1906の状態がロック解除中であると判定された場合、PC1906は、PC1906の状態をロック状態にして(2509)、ネットワーク認証処理を終了する(2507)。
一方、ステップ2508の処理で、PC1906の状態がロック解除中でないと判定された場合、PC1906の状態はロック状態であるため、PC1906は、ネットワーク認証処理を終了する(2507)。
一方、ステップ2502の処理で、リーダ1905から次回ID及びカウンタ値を受信したと判定された場合、PC1906は、受信した次回ID及びカウンタ値をサーバ1901に送信する(2503)。
そして、PC1906は、サーバ1901から利用許可通知を受信したか否かを判定する(2504)。
ステップ2504の処理で、サーバ1901から利用許可通知を受信していないと判定された場合、PC1906は、ステップ2508の処理を実行する。
一方、ステップ2504の処理で、サーバ1901から利用許可通知を受信したと判定された場合、PC1906は、PC1906の状態がロック中であるか否かを判定する(2505)。
ステップ2505の処理で、PC1906の状態がロック中であると判定された場合、PC1906は、RFIDデバイス1908を所有するユーザ1909がPC1906を利用できるように、PC1906のロック状態を解除し(2506)、ネットワーク認証処理を終了する(2507)。
一方、ステップ2505の処理で、PC1906の状態がロック中でないと判定された場合、RFIDデバイス1908を所有するユーザ1909がPC1906を利用できるので、ネットワーク認証処理を終了する(2507)。
図26は、本発明の第6実施形態の電気錠1904のネットワーク認証処理のフローチャートである。
電気錠1904は、サーバ1901から開錠指示を受信する(2601)。
電気錠1904は、サーバ1901から開錠指示を受信した場合、ドアのロックを開錠する(2602)。
そして、電気錠1904は、ドアの開閉があったか否かを判定する(2603)。
ステップ2603の処理で、ドアの開閉がないと判定された場合、電気錠1904は、所定時間経過すると(2606)、ドアのロックを閉錠し(2604)、ネットワーク認証処理を終了する(2605)。
一方、ステップ2603の処理で、ドアの開閉があったと判定された場合、電気錠1904は、ドアのロックを閉錠し(2604)、ネットワーク認証処理を終了する(2605)。
図27は、本発明の第6実施形態のサーバ1901のネットワーク認証処理のフローチャートである。
サーバ1901は、リーダ・ライタ1903又はPC1906から次回ID及びカウンタ値を受信する(2701)。
そして、サーバ1901は、受信した次回ID及びカウンタ値はPC1906によって送信されたものであるか否かを判定する(2702)。
受信した次回ID及びカウンタ値がPC1906によって送信されたものであるか否かを判定する具体的な方法を以下に説明する。
PC1906は、次回IDのパケットのアプリケーション層にPC1906が送信したことを示す情報を含めて、次回IDをサーバ1901に送信する。
そして、次回IDを受信したPC1908は、受信した次回ID及びカウンタ値のパケットに、PC1906が送信したことを示す情報が含まれるか否かを判定する。
受信した次回ID及びカウンタ値のパケットにPC1906が送信したことを示す情報が含まれる場合、サーバ1901は、受信した次回ID及びカウンタ値はPC1906によって送信されたもの、つまり、受信した次回ID及びカウンタ値はRFIDリーダ1905から送信されたものであると判定する。
また、受信した次回ID及びカウンタ値のパケットにPC1906が送信したことを示す情報が含まれない場合、サーバ1901は、受信した次回ID及びカウンタ値はPC1906によって送信されていない、つまり、受信した次回ID及びカウンタ値はRFIDリーダ・ライタ1903から送信されたものであると判定する。
なお、サーバ1901は、受信した次回ID及びカウンタ値のパケットの送信元を参照して、受信した次回ID及びカウンタ値はPC1906によって送信されたものであるか否かを判定してもよい。
ステップ2702の処理で、受信した次回ID及びカウンタ値がPC1906によって送信されたものであると判定された場合、サーバ1901は、受信した次回IDとID管理テーブル2001の次回ID予測値2003に登録された次回IDとを比較する(2703)。
そして、サーバ1901は、ID管理テーブル2001の次回ID予測値2003に登録された次回IDのうち、受信した次回IDと一致する次回IDがあるか否かを判定する(2704)。
ステップ2704の処理で、ID管理テーブル2001の次回ID予測値2003に登録された次回IDのうち、受信した次回IDと一致する次回IDがないと判定された場合、サーバ1901は、次回IDを送信したRFIDデバイス1908は、サーバ1901が管理するRFIDデバイス1908でないので、このRFIDデバイス1908を所有するユーザがPC1906を利用できなくするように、利用拒否通知をPC1906に送信する(2708)。
一方、ステップ2704の処理で、ID管理テーブル2001の次回ID予測値2003に登録された次回IDのうち、受信した次回IDと一致する次回IDがあると判定された場合、サーバ1901は、次回IDを送信したRFIDデバイス1908は、サーバ1901が管理するRFIDデバイス1908であるので、このRFIDデバイス1908を所有するユーザがPC1906を利用できるように、利用許可通知をPC1906に送信する(2705)。
そして、サーバ1901は、受信した次回IDに対応する本来IDと一致するID管理テーブル2001のエントリに含まれる次回ID予測値2003を更新し(2706)、ネットワーク認証処理を終了する(2707)。
一方、ステップ2702の処理で、受信した次回ID及びカウンタ値がPC1906によって送信されたものでないと判定された場合、受信した次回ID及びカウンタ値はリーダ・ライタ1903によって送信されたものである。
受信した次回ID及びカウンタ値がリーダ・ライタ1903によって送信されたものである場合、カウンタ値を受信するまでカウンタ値を予測できないため、次回IDを予測できないので、ID管理テーブル2001を参照して、RFIDを特定できない。
このため、サーバ1901は、サーバ1901が管理するすべてのRFIDデバイス1908の本来IDに対して、本来ID、受信したカウンタ値、及び乱数αを入力として、RFIDデバイス1908と同じハッシュ関数を演算してハッシュ値を算出する(2709)。
そして、サーバ1901は、サーバ1901が管理するすべてのRFIDデバイス1908の本来IDに対して算出したハッシュ値のうち、受信した次回IDの値と一致するハッシュ値があるか否かを判定する(2710)。
ステップ2710の処理で、サーバ1901が管理するすべてのRFIDデバイス1908の本来IDに対して算出したハッシュ値のうち、受信した次回IDの値と一致するハッシュ値がないと判定された場合、次回IDを送信したRFIDデバイス1908はサーバ1901が管理するRFIDデバイス1908でないので、サーバ1901は、電気錠1904を開錠する要求を電気錠1904に送信せずに、ネットワーク認証処理を終了する(2707)。
一方、ステップ2710の処理で、サーバ1901が管理するすべてのRFIDデバイス1908の本来IDに対して算出したハッシュ値のうち、受信した次回IDの値と一致するハッシュ値があると判定された場合、次回IDを送信したRFIDデバイス1908はサーバ1901が管理するRFIDデバイス1908であるので、サーバ1901は、電気錠1904を開錠する要求を電気錠1904に送信し(2711)、ステップ2709の処理に進む。
なお、本実施形態は、一つの部屋1910におけるネットワーク認証処理について説明したが、図28に示すように、複数の部屋1910A〜1910Cにおけるネットワーク認証処理にも適用できる。
図28は、本発明の第6実施形態の複数の部屋1910A〜1910Cにおけるネットワーク認証処理を実行するRFIDシステムの構成図である。なお、図28において、図19に示す構成と同じものは、同じ番号を付与し、説明を省略する。
複数の部屋1910A〜1910Cに設置されたPC1906、リーダ・ライタ1903、及び電気錠1904は、ネットワーク1902A〜1902C及びネットワーク1902を介してサーバ1901に接続される。
また、本実施形態では、第2実施形態のRFIDデバイス1908を利用するネットワーク認証処理を示したが、ここでは,第1実施形態のRFIDデバイス1908を利用するネットワーク認証処理を以下に説明する。
この場合、ID管理テーブル2001の次回ID予測値2003を更新する方法が、第2実施形態のRFIDデバイス1908を利用する第6実施形態と相違する。
具体的には、本来IDと受信した次回IDとを入力とするハッシュ関数を演算し、ハッシュ値を算出する。そして、サーバ1901は、ID管理テーブル2001の本来ID2002に登録された本来IDのうち、特定したRFIDデバイス1908の本来IDと一致するエントリの次回ID予測値2003に算出したハッシュ値を登録し、ID管理テーブル2001を更新する。
なお、第2実施形態のRFIDデバイス1908を利用する第6実施形態では、図27に示すように、サーバ1901は、リーダ・ライタ1903から次回IDを受信した場合、本来ID、受信したカウンタ値、及び乱数αを入力として、RFIDデバイス1908と同じハッシュ関数を演算してハッシュ値を算出している。
しかし、第1実施形態のRFIDデバイス1908は、乱数αの書き込み要求を受信した場合、本来IDと乱数αとを入力としてハッシュ関数を演算し、次回IDを生成するので、サーバ1901は、生成した乱数αを記憶しているため、リーダ・ライタ1903から次回IDを受信する前に、予めリーダ・ライタ1903から受信する次回IDを予測できる。
このため、サーバ1901は、図29に示すID管理テーブル2901を記憶している。
図29は、本発明の第6実施形態のID管理テーブル2901を説明するための図である。なお、ID管理テーブル2901の構成のうち、ID管理テーブル2001と同じ構成のものは、同じ番号を付与し、説明を省略する。
ID管理テーブル2901は、本来ID2002、第1次回ID予測値2902、及び第2次回ID予測値2903を含む。
第1次回ID予測値2902には、本来IDと前回受信した次回IDとを入力とするハッシュ関数を演算したハッシュ値が登録される。第1次回ID予測値2902が更新されるタイミングは、リーダ1905から受信した次回IDのRFIDデバイス1908を特定した後である。
また、第2次回ID予測値2903には、本来IDと乱数αとを入力とするハッシュ関数を演算したハッシュ値が登録される。第2次回ID予測値2903が更新されるタイミングは、サーバ1901が乱数αを生成した後である。
サーバ1901は、リーダ・ライタ1903を介して次回IDを受信した場合、第2次回予測値2903に登録されたハッシュ値のうち、受信した次回IDの値と一致する本来IDを取得することによって、次回IDを送信したRFIDデバイス1908を特定する。
また、サーバ1901は、リーダ1905を介して次回IDを受信した場合、第1次回予測値2902に登録されたハッシュ値のうち、受信した次回IDの値と一致する本来IDを取得することによって、次回IDを送信したRFIDデバイス1908を特定する。