説明

秘密情報更新方法

【課題】 少ない演算量で安全にノード間の秘密情報更新方法を提供すること。
【解決手段】 まず、端末装置は、サーバで生成された乱数と端末装置の秘密情報とを用いてハッシュ関数H(1)を演算して、この演算結果をサーバに送り、サーバは、サーバで生成された乱数とサーバにおいて記憶される端末装置の秘密情報とを用いてハッシュ関数H(2)を演算し、サーバは、ハッシュ関数H(1)の演算結果とハッシュ関数H(2)の演算結果が等しいことを確認する。次いで、サーバは、新しい秘密情報と、新しい秘密情報および現在の秘密情報を用いて生成したブラインド情報とを端末装置に送る。また、サーバは、現在の秘密情報を新しい秘密情報に置換する。ブラインド情報を受け取った端末装置は、ブラインド情報と端末装置の現在の秘密情報を用いて、サーバで生成された新しい秘密情報を取得し、この新しい秘密情報で端末装置の現在の秘密情報を置換する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報セキュリティ技術に関するものであり、より詳しくは、ノード間で共有される情報の更新技術に関する。
【背景技術】
【0002】
個別端末が、あるサーバが自己にアクセス可能な送信元であるか否かを検証する、あるいは逆に、サーバが、ある個別端末が自己にアクセス可能な送信元であるか否かを検証する方法は、個別端末とサーバとが共有する情報を送信元から受信したか否かで検証を行う方法(従来方法)がある。
【0003】
なお、出願人は、先行技術文献に該当する文献(特許文献を含む。)を本発明出願時において知りえていない。
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、従来方法では、アクセスの度に送受信される値(個別端末とサーバとが共有する情報)が固定されているため、複数回のアクセスを想定した場合のリプレイアタック等の攻撃を防ぐ事が出来ない。
【0005】
そこで、リプレイアタックなどの不正攻撃に対する対タンパ性を有するためには、アクセスの度に送受信される値を異なるものとし、この値を基に送信元の検証を可能とする必要がある。そのためには、アクセスの度にサーバと個別端末とが、個別端末とサーバとが共有する情報を更新する必要がある。この個別端末とサーバとが共有する情報は、外部に露見してはならない秘密のものであることを要する。以後、個別端末とサーバとが共有する情報を秘密情報と呼ぶことにする。
【0006】
なお、このような秘密情報の更新には、次のような性質も付加的に要求される場合がある。
例えば個別端末が、その外部から更新情報を受け取り、個別端末のメモリ内の秘密情報を更新する場合、信頼あるセキュリティサーバなどから送られた秘密情報であるか否かを識別するために、個別端末が受取った秘密情報に対して検証を行える必要がある。
【0007】
また、外部の不正攻撃から送信者の匿名性を守りたい場合は、送信者の識別情報であるID(identification)を提示しなくても、受信者のみが送信者を識別できることが必要となる。
【0008】
さらに、秘密情報を更新したか否かを送信元(サーバあるいは個別端末)が判断するためには、送信元が、送信先(個別端末あるいはサーバ)において秘密情報が更新されたことを検証可能とする必要がある。
【0009】
認証機能を付加させて秘密情報の更新を行う手段としては、公開鍵を利用したディジタル署名が有用であるが、一般的にディジタル署名による認証には多くの演算量を必要とし、そのような演算を可能とする演算機能を搭載することはコストの面から好ましくない場合もある。例えば、個別端末が、低コスト化が望まれるRFID(Radio Frequency Identification)や、演算機能を豊富に搭載しえないモバイル端末(例えば携帯電話、PDA(Personal Digital Assistance)など)においては、最良の手段とはなりえない。
【0010】
また、サーバと個別端末間の秘密情報更新だけではなく、必要に応じて、例えば個別端末間での秘密情報更新が要求される場合もある。
【0011】
そこで、本発明は、少ない演算量で安全にノード間の秘密情報更新方法を提供することを目的とする。
【課題を解決するための手段】
【0012】
上記課題を解決するために、本発明の秘密情報更新方法は、まず、端末装置は、サーバで生成された乱数と端末装置の秘密情報とを用いてハッシュ関数H(1)を演算して、この演算結果をサーバに送り、サーバは、サーバで生成された乱数とサーバにおいて記憶される端末装置の秘密情報とを用いてハッシュ関数H(2)を演算し、サーバは、ハッシュ関数H(1)の演算結果とハッシュ関数H(2)の演算結果が等しいことを確認する。次いで、サーバは、新しい秘密情報と、新しい秘密情報および現在の秘密情報を用いて生成したブラインド情報とを端末装置に送る。また、サーバは、現在の秘密情報を新しい秘密情報に置換する。ブラインド情報を受け取った端末装置は、ブラインド情報と端末装置の現在の秘密情報を用いて、サーバで生成された新しい秘密情報を取得し、この新しい秘密情報で端末装置の現在の秘密情報を置換する。
【0013】
あるいは、本発明の秘密情報更新方法は、まず、端末装置が、端末装置の秘密情報にハッシュ関数Hを演算した結果にハッシュ関数Gを演算した演算結果G(1)をサーバに送り、サーバは、サーバに記憶される端末装置の秘密情報にハッシュ関数Hをh回演算した結果にハッシュ関数Gを演算した演算結果G(2)を求め、さらに、演算結果G(1)と演算結果G(2)とが一致したときのハッシュ関数Hの演算回数hを求める。次いで、この演算回数hが所定の閾値に一致した場合に、サーバは、新しい秘密情報と、新しい秘密情報および現在の秘密情報を用いて生成したブラインド情報とを端末装置に送る。また、サーバは、現在の秘密情報を新しい秘密情報に置換する。ブラインド情報を受け取った端末装置は、ブラインド情報と端末装置の現在の秘密情報を用いて、サーバで生成された新しい秘密情報を取得し、この新しい秘密情報で端末装置の現在の秘密情報を置換する。
【発明の効果】
【0014】
本発明によれば、一方向性関数演算に基づくことで、少ない演算量で安全にノード間の秘密情報を更新することができる。
【発明を実施するための最良の形態】
【0015】
<第1実施形態>
まず、本発明の第1実施形態について各図を参照して説明する。
図1は、読取装置(3)を介したサーバ(1)とRFID(2)との通信ネットワークの態様を示した図である。
図2は、第1実施形態に係わるサーバ(1)のハードウェア構成を例示した構成ブロック図である。
図3は、第1実施形態に係わるRFID(2)のハードウェア構成を例示した構成ブロック図である。
図4は、第1実施形態に係わるサーバ(1)の機能ブロック図である。
図5は、第1実施形態に係わるRFID(2)の機能ブロック図である。
図6は、第1実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その1)である。
図7は、第1実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その2)である。
図8は、第1実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その3)である。
図9は、サーバ(1)の外部記憶装置(17)に記憶されるデータベースのデータ構成を示す図である。
図10は、Bデータベースにおける秘密情報を用いた判定処理示す部分フローチャートである。
【0016】
<通信ネットワーク>
後述するサーバ(1)、RFID(2)、読取装置(3)によって構成される通信ネットワークの態様を図1に示す。サーバ(1)、RFID(2)、読取装置(3)は、通信ネットワークの構成単位(ノード)である。
RFID(2)と読取装置(3)との通信は、RFID(2)のアンテナ(28)と読取装置(3)のアンテナ(31)とによる無線通信で行われ、サーバ(1)と読取装置(3)との通信は、サーバ(1)の通信部(13)と読取装置(3)の通信手段とを通信可能に接続するケーブルを介して行われるとする。また、サーバ(1)と読取装置(3)との通信区間は、通信における安全(通信傍受などに対して耐性を有している)が保証されたものであるとする。
【0017】
<サーバ>
図2に例示するように、サーバ(1)は、キーボードなどが接続可能な入力部(11)、液晶ディスプレイなどが接続可能な出力部(12)、サーバ(1)外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部(13)、CPU(Central Processing Unit)(14)〔キャッシュメモリなどを備えていてもよい。〕、メモリであるRAM(15)、ROM(16)やハードディスクである外部記憶装置(17)並びにこれらの入力部(11)、出力部(12)、通信部(13)、CPU(14)、RAM(15)、ROM(16)、外部記憶装置(17)間のデータのやり取りが可能なように接続するバス(18)を有している。また必要に応じて、サーバ(1)には、CD−ROMなどの記憶媒体を読み書きできる装置(ドライブ)などを設けるとしてもよい。
【0018】
サーバ(1)の外部記憶装置(17)には、サーバ(1)の秘密情報更新のためのプログラムおよびこのプログラムの処理において必要となるデータなどが保存記憶されている〔外部記憶装置が無い場合には、例えば読み出し専用記憶装置であるROMにプログラムを保存記憶させておけばよい。〕。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に保存記憶される。また、サーバ(1)の外部記憶装置(17)には、後述の各RFIDに固有の固有情報および各RFIDに送信するメッセージも記憶されている。
【0019】
第1実施形態に係るサーバ(1)では、外部記憶装置(17)〔あるいはROMなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてRAM(15)に読み込まれて、CPU(14)で解釈実行・処理される。その結果、CPU(14)が所定の機能(乱数生成部、ハッシュ関数H演算部、ハッシュ関数D演算部、判定部、ブラインド情報生成部、メッセージ暗号化部、秘密情報生成部、更新部、制御部)を実現することで、サーバ(1)の秘密情報更新が実現される。
【0020】
そこで次に、図4〜図10を参照して、第1実施形態に係わる秘密情報更新方法の処理の流れを順次説明する。
【0021】
<端末装置>
本発明における端末装置は、第1実施形態ではRFID(2)とする。もちろん、RFID(2)に限定する趣旨ではなく、演算機能を豊富に搭載しえないモバイル端末(例えば携帯電話、PDAなど)でもよいし、さらには、演算機能を豊富に有する高性能コンピュータなどであってもよい。
【0022】
図3に例示するように、RFID(2)は、電源回路(21)、変復調回路(22)、CPU(Central Processing Unit)(23)、メモリであるRAM(24)、ROM(25)やハッシュ関数を高速に演算可能なコプロセッサ(26)、不揮発性メモリ(27)、RFID(1)外部と通信可能なアンテナ(28)を有している。
【0023】
アンテナ(28)は、後述の読取装置(3)のアンテナ(31)から与えられた電磁波を受けると誘導起電力を生じ、電源回路(21)に電力が供給される。また、読取装置(3)から与えられた電磁波には、所定のデータなどが変調されて載せられており、変復調回路(22)は、この所定のデータを読取装置(3)から与えられた電磁波から復調して取り出す。逆に、CPU(23)の演算によって得られたデータなどは、変復調回路(22)で変調されて電磁波としてアンテナ(28)から読取装置(3)に送られる。
【0024】
RFID(2)のROM(25)には、RFID(2)の秘密情報更新のためのプログラムおよびこのプログラムの処理において必要となるデータなどが保存記憶されている。また、これらのプログラムの処理によって得られるデータなどは、RAMや不揮発性メモリ(27)に適宜に保存記憶される。
【0025】
第1実施形態に係るRFID(2)では、ROM(25)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてRAM(24)に読み込まれて、CPU(14)およびコプロセッサ(26)で解釈実行・処理される。その結果、CPU(14)およびコプロセッサ(26)が所定の機能(ハッシュ関数H演算部、ハッシュ関数D演算部、判定部、メッセージ復号化部、秘密情報取得部、更新部、制御部)を実現することで、RFID(2)の秘密情報更新が実現される。
【0026】
<読取装置>
読取装置(3)は、サーバ(1)およびRFID(2)それぞれと相互にデータの送受信が可能な通信手段を備えている。読取装置(3)のその他のハードウェア構成は周知の読取装置と同様の構成でよいので、その詳細は省略する。
【0027】
<条件>
ハッシュ関数H、J、D、F:{0,1}→{0,1}L*は、各々異なる出力分布を持つとする。なお、{0,1}は0と1を要素とするバイナリ値の所定ビット長の系列を表し、*は各ハッシュ関数の入力となる値のビット長、L*は各ハッシュ関数の出力となる値のビット長を表す(ハッシュ関数ごとに異なるビット長の出力であってよい。)。
サーバ(1)およびRFID(2)のそれぞれにおける同じ記号で表されるハッシュ関数は、同じ出力分布のハッシュ関数である。
RFID(2)は複数(N個)とし、各RFID(2)は識別記号であるIDによって特定されるとし、この識別記号IDに1対1の対応で識別情報idが割り当てられているとする。ここでは、kを、k番目のRFIDを示すIDとする。
予め、RFID(2)のそれぞれについて、RFID(2)の不揮発性メモリ(27)に初期秘密情報s0,k(乱数s0,k∈{0,1}とする。Lはビット長を表す。但し、|L*|≦|L|とする。)が記憶されており、サーバ(1)の外部記憶装置(17)には、初期秘密情報s0,kが識別情報idに対応付けられたデータベース形式で記憶されているとする(図9参照)。なお、s0,kの0は更新回数を表し、初期状態では更新回数は0回であるから、初期秘密情報をs0,kと表している。i回の秘密更新後の秘密情報はsi,kと表す。また、サーバ(1)の外部記憶装置(17)には、バックアップ用のデータベース(Bデータベース;データベースと同様の構成であるから図9参照のこと。)も記憶されている。このBデータベースは、前回(便宜的にi回目とする。)のトランザクションにおける秘密情報si,kが識別情報idに対応付けられたものとなっている。初期状態のBデータベースは、秘密情報s0,kが識別情報idに対応付けられたものである。なお、データベースおよびBデータベースはそれぞれ、サーバ(1)の外部記憶装置(17)の所定の記憶領域に記憶される。
【0028】
<初期状態から1回目の秘密情報更新>
まず、初期状態から1回目の秘密情報更新のトランザクションについて説明する。
読取装置(3)の通信手段は、k番目のRFID(2)を読み取る際に、サーバ(1)にRFID(2)の読み取りを開始する情報(読取開始情報)を送信する(ステップS100)。この明細書において、読取開始情報の種類などには格別の限定はなく、以下に述べるトランザクションを開始することを表す情報であればよい。
【0029】
サーバ(1)の通信部(13)が読取開始情報を受信すると(ステップS100c)、サーバ(1)の制御部の制御の下、サーバ(1)の乱数生成部(140)は任意の乱数rを出力し、RAM(15)の乱数格納領域(150)に格納する(ステップS101)。
【0030】
サーバ(1)の通信部(13)が、サーバ(1)の制御部の制御の下、ステップS101において出力されてRAM(15)の乱数格納領域(150)に格納された乱数rを読取装置(3)に送信する(ステップS102)。
【0031】
読取装置(3)の通信手段は、ステップS102において送信された乱数rを受信し(ステップS103)、さらに読取装置(3)は、読取装置(3)のアンテナ(31)によって、この受信した乱数rをRFID(2)に無線送信する(ステップS104)。
【0032】
RFID(2)のアンテナ(28)は、ステップS104において無線送信された乱数rを受信し(ステップS105)、RAM(24)の乱数格納領域(240)に格納する。
【0033】
続いて、RFID(2)のハッシュ関数H演算部(230)が、ステップS105において受信した乱数rをRAM(24)の乱数格納領域(240)から読み込み、また、RFID(2)の不揮発性メモリ(27)から予め読み込まれてRAM(24)の秘密情報格納領域(241)に格納される秘密情報s0,kを読み込み、これらをバイナリ系列で結合した値s0,k‖r〔記号‖は、s0,kのバイナリ系列とrのバイナリ系列との結合を表す。〕を入力として、ハッシュ関数Hを演算し、この演算結果H(s0,k‖r)を、RAM(24)のハッシュ関数H演算結果格納領域(242)に格納する(ステップS106)。
【0034】
RFID(2)のアンテナ(28)は、RFID(2)の制御部の制御の下、RAM(24)のハッシュ関数H演算結果格納領域(242)に格納された演算結果H(s0,k‖r)およびROM(25)に記憶されるRFID(2)の識別情報idを読取装置(3)に送信する(ステップS107)。
【0035】
なお、ステップS107においては、RFID(2)のアンテナ(28)は、RAM(24)のハッシュ関数H演算結果格納領域(242)に格納された演算結果H(s0,k‖r)のみならず、RAM(24)の乱数格納領域(240)に格納される乱数rも読取装置(3)に送信するとしてもよい。
【0036】
読取装置(3)の通信手段は、ステップS107において送信された演算結果H(s0,k‖r)および識別情報idを受信し(ステップS108)、さらに読取装置(3)は、読取装置(3)のアンテナ(31)によって、この受信した演算結果H(s0,k‖r)および識別情報idをサーバ(1)に送信する(ステップS109)。
なお、読取装置(3)の通信手段は、ステップS107において、RFID(2)から、乱数rも送信された場合には、これらもサーバ(1)に送信する。
【0037】
サーバ(1)の通信部(13)は、ステップS109において送信された演算結果H(s0,k‖r)および識別情報idを受信し、演算結果H(s0,k‖r)をRAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納し、識別情報idをRAM(15)の識別情報格納領域(図示しない。)に格納する(ステップS110)。
【0038】
サーバ(1)のハッシュ関数H演算部(141)は、RAM(15)の識別情報格納領域に格納される識別情報idを読み込み、この識別情報idに対応付けられた秘密情報s0,kを外部記憶装置(17)に記憶されるデータベースを参照して読み込んで、RAM(15)の秘密情報格納領域(152)に格納し、さらにRAM(15)の秘密情報格納領域(152)に格納された秘密情報s0,kを読み込み、また、RAM(15)の乱数格納領域(150)に格納された乱数rを読み込み(ステップS110で乱数rを受信した場合には、この乱数rを用いればよい。)、これらをバイナリ系列で結合した値s0,k‖rを入力として、ハッシュ関数Hを演算し、この演算結果H(s0,k‖r)を、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納する(ステップS111)。
【0039】
サーバ(1)の判定部(142)は、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(s0,k‖r)と、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納された演算結果H(s0,k‖r)とが等しいか否かを判定する(ステップS112)。
【0040】
ステップS112において、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(s0,k‖r)と、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納された演算結果H(s0,k‖r)とが等しいと判定されなかった場合(認証不合格判定の場合)、サーバ(1)の制御部の制御の下、サーバ(1)は、RFID(2)を、サーバ(1)に対する正当なアクセス権を有しないRFIDであるとして、爾後の処理を実行せずトランザクションを終了する(ステップS113)。
【0041】
ステップS112において、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(s0,k‖r)と、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納された演算結果H(s0,k‖r)とが等しいと判定された場合(認証合格判定の場合)、サーバ(1)の制御部の制御の下、サーバ(1)の秘密情報生成部(143)が、乱数を新たな秘密情報s1,kとして出力し、RAM(15)の新秘密情報格納領域(154)に格納する(ステップS114)。
【0042】
認証合格判定の場合は、さらに、サーバ(1)のブラインド情報生成部(144)が、サーバ(1)のRAM(15)の秘密情報格納領域(152)に格納された秘密情報s0,kを読み込み、この秘密情報s0,kを入力とするハッシュ関数Jの演算結果J(s0,k)と、RAM(15)の新秘密情報格納領域(154)から読み込んだ新たな秘密情報s1,kとの排他的論理和s1,k^J(s0,k)〔^は排他的論理和を表す。〕をブラインド情報として出力し、RAM(15)のブラインド情報格納領域(155)に格納する(ステップS115)。
【0043】
認証合格判定の場合は、さらに、サーバ(1)のハッシュ関数D演算部(145)が、RAM(15)の秘密情報格納領域(152)に格納された秘密情報s0,kを読み込み、また、RAM(15)のブラインド情報格納領域(155)に格納されたブラインド情報s1,k^J(s0,k)を読み込み、これらをバイナリ系列で結合した値s0,k‖s1,k^J(s0,k)を入力として、ハッシュ関数Dを演算し、この演算結果D(s0,k‖s1,k^J(s0,k))を、RAM(15)のハッシュ関数D演算結果格納領域(156)に格納する(ステップS116)。
【0044】
認証合格判定の場合は、さらに、サーバ(1)のメッセージ暗号化部(図示しない。)が、サーバ(1)のRAM(15)の秘密情報格納領域(152)に格納された秘密情報s0,kを読み込み、また、サーバ(1)の外部記憶装置から読み込まれてRAM(15)の所定領域に格納されているメッセージmを読み込んで、この秘密情報s0,kを入力とするハッシュ関数Fの演算結果F(s0,k)とメッセージmとの排他的論理和m^F(s0,k)を暗号化メッセージとして出力し、RAM(15)の暗号化メッセージ格納領域(図示しない。)に格納する(ステップS117)。
【0045】
認証合格判定の場合には、サーバ(1)の通信部(13)が、サーバ(1)の制御部の制御の下、RAM(15)のブラインド情報格納領域(155)に格納されたブラインド情報s1,k^J(s0,k)、RAM(15)のハッシュ関数D演算結果格納領域(156)に格納された演算結果D(s0,k‖s1,k^J(s0,k))、サーバ(1)の外部記憶装置(17)から読み込まれてRAM(15)の所定領域に格納されたk番目のRFID(2)に固有の固有情報、およびRAM(15)の暗号化メッセージ格納領域に格納された暗号化メッセージを読取装置(3)に送信する(ステップS118)。なお、固有情報の送信は必要に応じて行うようにしてもよい。
【0046】
また、認証合格判定の場合には、以上のステップの処理の終了後、サーバ(1)の更新部(146)が、RAM(15)の新秘密情報格納領域(154)に格納された新たな秘密情報s1,kを、外部記憶装置(17)のデータベースにおいて、k番目のRFID(2)の識別情報idに対応付けられた秘密情報として上書きする(ステップS119)。ここで上書きとは、先に記憶されていた情報を消除して、新たに情報を記憶することをいう。この場合では、先にk番目のRFID(2)の識別情報idに対応付けられていた秘密情報s0,kを消除し、新しい秘密情報s1,kを、k番目のRFID(2)の識別情報idに対応付けて記憶することをいう。
【0047】
この段階では、データベースにおいて、k番目のRFID(2)の識別情報idに秘密情報s1,kが対応付けられており、Bデータベースでは、k番目のRFID(2)の識別情報idに秘密情報s0,kが対応付けられていることに留意する。
【0048】
読取装置(3)の通信手段は、ステップS118において送信されたブラインド情報s1,k^J(s0,k)、演算結果D(s0,k‖s1,k^J(s0,k))、固有情報、および暗号化メッセージを受信し(ステップS120)、さらに読取装置(3)は、そのアンテナ(31)によって、ステップS120において受信した、ブラインド情報s1,k^J(s0,k)、演算結果D(s0,k‖s1,k^J(s0,k))および暗号化メッセージをRFID(2)に無線送信する(ステップS121)。
【0049】
RFID(2)のアンテナ(28)は、ステップS121において無線送信された、ブラインド情報s1,k^J(s0,k)、演算結果D(s0,k‖s1,k^J(s0,k))および暗号化メッセージを受信し、ブラインド情報s1,k^J(s0,k)をRAM(24)のブラインド情報格納領域(243)に格納し、演算結果D(s0,k‖s1,k^J(s0,k))をRAM(24)の第1ハッシュ関数D演算結果格納領域(244)に格納し、暗号化メッセージをRAM(24)の暗号化メッセージ格納領域(図示しない。)に格納する(ステップS122)。
【0050】
RFID(2)のハッシュ関数D演算部(231)は、RAM(24)の秘密情報格納領域(241)に格納される秘密情報s0,kを読み込み、また、RAM(24)のブラインド情報格納領域(243)に格納されたブラインド情報s1,k^J(s0,k)を読み込み、これらをバイナリ系列で結合した値s0,k‖s1,k^J(s0,k)を入力として、ハッシュ関数Dを演算し、この演算結果D(s0,k‖s1,k^J(s0,k))を、RAM(24)の第2ハッシュ関数D演算結果格納領域(245)に格納する(ステップS123)。
【0051】
RFID(2)の判定部(232)は、RAM(24)の第1ハッシュ関数D演算結果格納領域(244)に格納される演算結果D(s0,k‖s1,k^J(s0,k))と、RAM(24)の第2ハッシュ関数D演算結果格納領域(245)に格納される演算結果D(s0,k‖s1,k^J(s0,k))とが等しいか否かを判定する(ステップS124)。
【0052】
ステップS124における判定結果が、RAM(24)の第1ハッシュ関数D演算結果格納領域(244)に格納される演算結果D(s0,k‖s1,k^J(s0,k))と、RAM(24)の第2ハッシュ関数D演算結果格納領域(245)に格納される演算結果D(s0,k‖s1,k^J(s0,k))とが等しいという場合には、RFID(2)の制御部の制御の下、RFID(2)の秘密情報取得部(233)が、RAM(24)の秘密情報格納領域(241)に格納される秘密情報s0,kを読み込み、この秘密情報s0,kを入力とするハッシュ関数Jの演算結果J(s0,k)と、RAM(24)のブラインド情報格納領域(243)から読み込んだブラインド情報s1,k^J(s0,k)との排他的論理和(s1,k^J(s0,k))^J(s0,k)=s1,kを出力し、RAM(24)の新秘密情報格納領域(246)に格納する(ステップS125)。
【0053】
ステップS124における判定結果が、RAM(24)の第1ハッシュ関数D演算結果格納領域(244)に格納される演算結果D(s0,k‖s1,k^J(s0,k))と、RAM(24)の第2ハッシュ関数D演算結果格納領域(245)に格納される演算結果D(s0,k‖s1,k^J(s0,k))とが等しくないという場合には、受信したブラインド情報などが信頼あるサーバから送られたものではないとして、爾後の処理を実行せずにトランザクションを終了する(ステップS124c)。
【0054】
また、ステップS124における判定結果が、RAM(24)の第1ハッシュ関数D演算結果格納領域(244)に格納される演算結果D(s0,k‖s1,k^J(s0,k))と、RAM(24)の第2ハッシュ関数D演算結果格納領域(245)に格納される演算結果D(s0,k‖s1,k^J(s0,k))とが等しいという場合には、RFID(2)の制御部の制御の下、RFID(2)のメッセージ復号化部(図示しない。)が、RAM(24)の秘密情報格納領域(241)に格納される秘密情報s0,kを読み込み、この秘密情報s0,kを入力とするハッシュ関数Fの演算結果F(s0,k)と、RAM(24)の暗号化メッセージ格納領域から読み込んだ暗号化メッセージとの排他的論理和(m^F(s0,k))^F(s0,k)=mを出力し、RAM(24)のメッセージ格納領域(図示しない。)に格納する(ステップS126)。
【0055】
RFID(2)の更新部(234)は、RAM(24)の新秘密情報格納領域(246)に格納された新たな秘密情報s1,kを、先に不揮発性メモリ(27)に記憶されていた秘密情報s0,kに上書きする(ステップS127)。つまり、この段階で、不揮発性メモリ(27)には新しい秘密情報s1,kが記憶されたことになる。
【0056】
サーバ(1)およびRFID(2)は、以上のようにして、秘密情報s0,kを秘密情報s1,kに更新して共有することになる。
【0057】
<i回目の秘密情報更新からi+1回目の秘密情報更新>
次に、i回目(iは1以上)の秘密情報更新からi+1回目の秘密情報更新のトランザクションについて説明する。この場合の処理は、初期状態から1回目の秘密情報更新と共通する処理があるので、初期状態から1回目の秘密情報更新で説明した点と異なる部分について説明する。
【0058】
まず、初期状態から1回目の秘密情報更新で説明した秘密情報s0,kは、秘密情報si,kであり、初期状態から1回目の秘密情報更新で説明した新しい秘密情報s1,kは、秘密情報si+1,kになることに留意する。また、Bデータベースでは、k番目のRFID(2)の識別情報idに秘密情報si−1,k(ここでのi−1は、前回のトランザクションを表す。)が対応付けられていることに留意する。
【0059】
ステップS113において、認証不合格判定の場合、サーバ(1)は、RFID(2)を、サーバ(1)に対する正当なアクセス権を有しないRFIDであるとして、爾後の処理を実行せずトランザクションを終了するとしたが、この場合(i回目の秘密情報更新からi+1回目の秘密情報更新)には、トランザクションを終了しないで、次に説明する処理を行う。
【0060】
即ち、認証不合格判定の場合、サーバ(1)の制御部の制御の下、サーバ(1)のハッシュ関数H演算部(141)は、RAM(15)の識別情報格納領域に格納される識別情報idを読み込み、この識別情報idに対応付けられた秘密情報si−1,kを、外部記憶装置(17)に記憶されるBデータベースを参照して読み込み、また、RAM(15)の乱数格納領域(150)に格納された乱数rを読み込み(ステップS110で乱数rを受信した場合には、この乱数rを用いればよい。)、これらをバイナリ系列で結合した値si−1,k‖rを入力として、ハッシュ関数Hを演算し、この演算結果H(si−1,k‖r)を、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納する(ステップS113a)。
【0061】
サーバ(1)の判定部(142)は、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(si,k‖r)と、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納された演算結果H(si−1,k‖r)とが等しいか否かを判定する(ステップS113b)。
【0062】
ステップS113bで認証不合格判定がされた場合には、爾後の処理を実行せずトランザクションを終了する(ステップS113)。
このようなBデータベースにおける前回トランザクションの秘密情報を用いた処理は、前回のトランザクションにおいて更新が失敗した場合に備えて実行するものであるため、このような失敗に備える必要がない場合は、Bデータベースを用意しておく必要はない。
【0063】
ステップS113で認証合格判定がされた場合には、ステップS114以降の処理を行うが、ステップS119では以下に説明する処理(Bデータベースにおける秘密情報の更新)を行う。
即ち、認証合格判定の場合には、ステップS119において、サーバ(1)の更新部(146)が、RAM(15)の新秘密情報格納領域(154)に格納された新たな秘密情報si+1,kを、外部記憶装置(17)のデータベースにおいて、k番目のRFID(2)の識別情報idに対応付けられた秘密情報として上書し、さらに、RAM(15)の秘密情報格納領域(152)に格納された秘密情報si,kを、外部記憶装置(17)のBデータベースにおいて、k番目のRFID(2)の識別情報idに対応付けられた秘密情報として上書きする。
【0064】
この段階を経ると、データベースにおいては、k番目のRFID(2)の識別情報idに秘密情報si+1,kが対応付けられており、Bデータベースでは、k番目のRFID(2)の識別情報idに秘密情報si,kが対応付けられていることになる。
【0065】
<第1実施形態の変形例1>
ステップS107では、RFID(2)のアンテナ(28)は、RFID(2)の制御部の制御の下、RAM(24)のハッシュ関数H演算結果格納領域(242)に格納された演算結果H(si,k‖r)およびROM(25)に記憶されるRFID(2)の識別情報idを読取装置(3)に送信するとした。
【0066】
しかし、無線通信区間で通信傍受されるなどの虞がある場合には、ステップS107では、ROM(25)に記憶されるRFID(2)の識別情報idを読取装置(3)に送信しないようにする。
【0067】
この場合、ステップS111、ステップS112は、次のような処理を行う。
図11は、第1実施形態の変形例1における秘密情報更新方法の処理の流れのうち、第1実施形態と異なる処理部分の部分フローチャートである。
サーバ(1)のハッシュ関数H演算部(141)は、g=1として(ステップS110a、ステップS110b)、外部記憶装置(17)に記憶されるデータベースを参照して秘密情報si,gを読み込み(gはRFIDのIDを表し、g=1,2,・・・,Nである。)、また、RAM(15)の乱数格納領域(150)に格納された乱数rを読み込み(ステップS110で乱数rを受信した場合には、この乱数rを用いればよい。)、これらをバイナリ系列で結合した値si,g‖rを入力として、ハッシュ関数Hを演算し、この演算結果H(si,g‖r)を、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納する(ステップS111a)。
【0068】
サーバ(1)の判定部(142)は、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(si,g‖r)と、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納された演算結果H(si,g‖r)とが等しいか否かを判定する(ステップS112a)。
【0069】
ステップS112aにおいて、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(si,k‖r)と、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納された演算結果H(si,g‖r)とが等しいと判定されなかった場合は、サーバ(1)の制御部の制御の下、gに1を加えてg=2として(ステップS110c)、ステップS110bステップS111a、ステップS112aの処理を実行する。このような処理を、ステップS112aにおいて、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(si,k‖r)と、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納された演算結果H(si,g‖r)とが等しいと判定されるまで繰り返す。
【0070】
もし、全てのgについて認証合格判定がされなかったら(ステップS110b参照)、1回目の秘密情報更新ではトランザクションを終了し(図11では図示していない。)、2回目以降の秘密情報更新ではBデータベースの秘密情報を用いた上記と同様の判定も行い(図11における、ステップS110a’、ステップS110b’、ステップS110c’、ステップS113a、ステップS113b参照)、それでも、認証合格判定がされなかったらトランザクションを終了する(ステップS113)。
【0071】
ステップS112aにおいて、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(si,k‖r)と、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納された演算結果H(si,g‖r)とが等しいと判定されたときのgによって、あるいは、ステップS113bにおいて、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(si,k‖r)と、RAM(15)の第2ハッシュ関数H演算結果格納領域(153)に格納された演算結果H(si,g‖r)とが等しいと判定されたときのgによって、RAM(15)の第1ハッシュ関数H演算結果格納領域(151)に格納された演算結果H(si,k‖r)を送信してきたRFID(2)が特定される。
この後は、ステップS114以降の処理を実行する。
【0072】
<第1実施形態の変形例2>
通信ネットワークが安全に通信を行えると保証されたものである場合には、ステップS116、ステップS123、ステップS124の処理は不要である。なお、例えば、ステップS118では、演算結果D(si,k‖si+1,k^J(si,k))を送信しないことは云うまでもない。
【0073】
<第1実施形態の変形例3>
ステップS115において、ブラインド情報をNull値とすることもできる。この場合は情報更新ではなく、相手認証として機能することになる。
【0074】
<第1実施形態の変形例4>
サーバ(1)からRFID(2)にメッセージを送信することが不要の場合は、ステップS117、ステップS126の処理は不要である。なお、例えば、ステップS118では、暗号化メッセージを送信しないことは云うまでもない。
【0075】
<第2実施形態>
サーバ(1)、RFID(2)、読取装置(3)の各ハードウェア構成、さらには通信ネットワークの態様は、第1実施形態と同様であるから説明を省略する。
図12は、第2実施形態に係わるサーバ(1)の機能ブロック図である。
図13は、第2実施形態に係わるRFID(2)の機能ブロック図である。
図14は、第2実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その1)である。
図15は、第2実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その2)である。
図16は、第2実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その3)である。
【0076】
<条件>
ハッシュ関数H、J、D、F、G:{0,1}→{0,1}L*は、各々異なる出力分布を持つとする。なお、{0,1}は0と1を要素とするバイナリ値の所定ビット長の系列を表し、*は各ハッシュ関数の入力となる値のビット長、L*は各ハッシュ関数の出力となる値のビット長(ハッシュ関数ごとに異なるビット長の出力であってよい。)を表す。
サーバ(1)およびRFID(2)のそれぞれにおける同じ記号で表されるハッシュ関数は、同じ出力分布のハッシュ関数である。
RFID(2)は複数(N個)とし、各RFID(2)は識別記号であるIDによって特定されるとし、この識別記号IDに1対1の対応で識別情報idが割り当てられているとする。
予め、RFID(2)のそれぞれについて、RFID(2)の不揮発性メモリ(27)に初期秘密情報s0,0(乱数s0,0∈{0,1}とする。Lはビット長を表す。但し、|L*|≦|L|とする。)が記憶されており、サーバ(1)の外部記憶装置(17)には、初期秘密情報s0,0が識別情報idに対応付けられたデータベース形式で記憶されているとする(図9参照)。また、サーバ(1)の外部記憶装置(17)には、バックアップ用のデータベース(Bデータベース)も記憶されている。このBデータベースは、前回(i回目とする。)のトランザクションにおける秘密情報が識別情報idに対応付けられたものとなっている。初期状態のBデータベースは、秘密情報s0,0が識別情報idに対応付けられたものである。なお、データベースおよびBデータベースは、サーバ(1)の外部記憶装置(17)の所定の記憶領域に記憶される。
【0077】
<i回目の秘密情報更新からi+1回目の秘密情報更新>
i回目(iは0以上。但し、i=0の場合は、初期状態を表している。)の秘密情報更新からi+1回目の秘密情報更新のトランザクションについて説明する。
この秘密情報更新の間には秘密情報の更改がなされ、その更改の回数をjで表すとする。以下において秘密情報si,jは、i回の秘密情報の更新を受け、さらに、j回の秘密情報の更改がなされた秘密情報を表している。
読取装置(3)の通信手段が、RFID(2)を読み取る際に、RFID(2)に対する読取開始を表す情報をRFID(2)に対して送信する(ステップS300)。
【0078】
RFID(2)のアンテナ(28)が、ステップS300において送信された読取開始を表す情報を受信する(ステップS301)。
【0079】
RFID(2)のハッシュ関数H演算部(430)が、RFID(2)の不揮発性メモリ(27)から読み込まれてRAM(24)の秘密情報格納領域(440)に格納される秘密情報si,jを読み込み、秘密情報si,jをハッシュ関数Hの入力として、この演算結果H(si,j)を出力し、RAM(24)のハッシュ関数H演算結果格納領域(441)に格納する(ステップS302)。
【0080】
次いで、RFID(2)の更改部(431)は、RAM(24)のハッシュ関数H演算結果格納領域(441)に格納された演算結果H(si,j)を、新たな秘密情報si,j+1としてRAM(24)の秘密情報格納領域(440)に上書きする(ステップS303)。なお、si,j+1=H(si,j)=H(H(si,j−1))=H(H(H(si,j−2)))=・・・=Hj+1(si,0)の関係が成立することにも留意すること(Hj+1は、j+1回のハッシュ関数Hの演算を行うことを表す。)。
【0081】
RFID(2)のハッシュ関数G演算部(432)が、RAM(24)のハッシュ関数H演算結果格納領域(441)に格納された演算結果H(si,j)をハッシュ関数Gの入力として、この演算結果G(H(si,j))を出力し、RAM(24)のハッシュ関数G演算結果格納領域(442)に格納する(ステップS304)。
【0082】
RFID(2)のアンテナ(28)が、RAM(24)のハッシュ関数G演算結果格納領域(442)に格納された演算結果G(H(si,j))を読取装置(3)に送信する(ステップS305)。
【0083】
読取装置(3)のアンテナ(31)が、ステップS305において送信された演算結果G(H(si,j))を受信し(ステップS306)、さらに、読取装置(3)は、その通信手段によって、ステップS306において受信した演算結果G(H(si,j))をサーバ(1)に送信する(ステップS307)。
【0084】
サーバ(1)の通信部(13)が、ステップS307において送信された演算結果G(H(si,j))を受信し、これをRAM(15)の第1ハッシュ関数G演算結果格納領域(350)に格納する(ステップS308)。
【0085】
サーバ(1)のハッシュ関数H演算部(340)は、h=1として、外部記憶装置(17)に記憶されるデータベースを参照して各ID(IDとidは1対1対応にあるのでidでもよい。)に対応した秘密情報(si,jg=1、(si,jg=2、・・・、(si,jg=Nを順次読み込み、RAM(15)の秘密情報格納領域(351)に格納し、さらにRAM(15)の秘密情報格納領域(351)に格納された各IDに対応した秘密情報(si,jg=1、(si,jg=2、・・・、(si,jg=Nを順次読み込み、これらに対してハッシュ関数Hをh回演算し、この演算結果H(si,jg=1、H(si,jg=2、・・・、H(si,jg=Nを、RAM(15)のハッシュ関数H演算結果格納領域(352)に格納する(ステップS309)。
【0086】
サーバ(1)のハッシュ関数G演算部(341)は、RAM(15)のハッシュ関数H演算結果格納領域(352)に格納された各IDに対応した演算結果H(si,jg=1、H(si,jg=2、・・・、H(si,jg=Nをハッシュ関数Gの入力として、この演算結果G(H(si,j))g=1、G(H(si,j))g=2、・・・、G(H(si,j))g=Nを出力し、RAM(15)の第2ハッシュ関数G演算結果格納領域(353)に格納する(ステップS310)。
【0087】
サーバ(1)の第1判定部(342)が、RAM(15)の第2ハッシュ関数G演算結果格納領域(353)に格納された各IDに対応した演算結果G(H(si,j))g=1、G(H(si,j))g=2、・・・、G(H(si,j))g=Nに、RAM(15)の第1ハッシュ関数G演算結果格納領域(350)に格納された演算結果G(H(si,j))と等しいものがあるか否かを判定する(ステップS311)。
【0088】
ステップS311において、RAM(15)の第2ハッシュ関数G演算結果格納領域(353)に格納された各IDに対応した演算結果G(H(si,j))g=1、G(H(si,j))g=2、・・・、G(H(si,j))g=Nに、RAM(15)の第1ハッシュ関数G演算結果格納領域(350)に格納された演算結果G(H(si,j))と等しいものがあると判定されなかった場合は、サーバ(1)の制御部の制御の下、hに1を加えてh=2として、ステップS309〜ステップS311の処理を実行する。このような処理を、ステップS311において、RAM(15)の第2ハッシュ関数G演算結果格納領域(353)に格納された各IDに対応した演算結果G(H(si,j))g=1、G(H(si,j))g=2、・・・、G(H(si,j))g=Nに、RAM(15)の第1ハッシュ関数G演算結果格納領域(350)に格納された演算結果G(H(si,j))と等しいものがあると判定される(認証合格判定)まで繰り返す(図14、図15ではこの繰り返し処理は示さない。)。なお、この段階の場合では、認証合格判定はh=1でしかありえない。また、ハッシュ演算回数hと更改回数jは一致することにも留意する。
【0089】
もし、hの上限値hmaxまでステップS311の処理を実行しても認証合格判定がされなかったら、Bデータベースにおける前回のトランザクションの秘密情報を用いてステップS309〜ステップS311と同様の処理を実行する。それでも認証合格判定がされなかったら、サーバ(1)の制御部の制御の下、サーバ(1)は、RFID(2)を、サーバ(1)に対する正当なアクセス権を有しないRFIDであるとして、爾後の処理を実行せずトランザクションを終了する(ステップS311c)。
【0090】
ステップS311において、RAM(15)の第2ハッシュ関数G演算結果格納領域(353)に格納された各IDに対応した演算結果G(H(si,j))g=1、G(H(si,j))g=2、・・・、G(H(si,j))g=Nに、RAM(15)の第1ハッシュ関数G演算結果格納領域(350)に格納された演算結果G(H(si,j))と等しいものがあると判定されたときの秘密情報に対応する識別情報IDによって、RAM(15)の第1ハッシュ関数G演算結果格納領域(350)に格納された演算結果を送信してきたRFID(2)が特定される。
【0091】
サーバ(1)の演算回数出力部(349)は、ステップS311において、RAM(15)の第2ハッシュ関数G演算結果格納領域(353)に格納された各IDに対応した演算結果G(H(si,j))g=1、G(H(si,j))g=2、・・・、G(H(si,j))g=Nに、RAM(15)の第1ハッシュ関数G演算結果格納領域(350)に格納された演算結果G(H(si,j))と等しいものがあると判定されたときのhを出力して、RAM(15)のハッシュ演算回数格納領域(354)に格納する(ステップS312)。
【0092】
サーバ(1)の第2判定手段(343)が、RAM(15)のハッシュ演算回数格納領域(354)に格納された演算回数hと、hの上限値hmaxとが等しいか否かを判定する(ステップS313)。
【0093】
ステップS313において、演算回数hと、上限値hmaxとが等しいと判定されなかった(閾値不合格判定)場合、サーバの更改部(344)は、RAM(15)の秘密情報格納領域(351)に格納される、上記ステップS311において特定されたIDに対応する秘密情報si,jを入力としてハッシュ関数Hの演算を行い、この演算結果H(si,j)を、上記ステップS311において特定されたIDに対応する新たな秘密情報としてRAM(15)の秘密情報格納領域(351)に上書きする(ステップS314)。ここで、上記ステップS311において特定されたIDのRFID(2)の秘密情報格納領域(440)に格納される秘密情報と同じ秘密情報が格納されたことになる(ステップS303参照)。
【0094】
また、この場合(閾値不合格判定)、サーバ(1)の通信部(13)は読取装置(3)に対して、サーバ(1)の外部記憶装置(17)から読み込まれてRAM(15)の所定領域に格納された(ステップS311で特定された)k番目のRFID(2)に固有の固有情報を送信する(図示しない。)。
【0095】
ステップS313において、演算回数hと、上限値hmaxとが等しいと判定された(閾値合格判定)場合、サーバ(1)の秘密情報生成部(345)が、乱数を、上記ステップS311において特定されたIDのRFID(2)に固有の新たな秘密情報si+1,0として出力し、RAM(15)の新秘密情報格納領域(355)に格納する(ステップS315)。
【0096】
閾値合格判定の場合は、さらに、サーバ(1)のブラインド情報生成部(346)が、サーバ(1)のRAM(15)の秘密情報格納領域(351)に格納された(上記ステップS311において特定されたIDに対応する)秘密情報si,hmaxを読み込み、この秘密情報si,hmaxを入力とするハッシュ関数Jの演算結果J(si,hmax)と、RAM(15)の新秘密情報格納領域(355)から読み込んだ新たな秘密情報si+1,0との排他的論理和si+1,0^J(si,hmax)をブラインド情報として出力し、RAM(15)のブラインド情報格納領域(356)に格納する(ステップS316)。
【0097】
認証合格判定の場合は、さらに、サーバ(1)のハッシュ関数D演算部(347)が、RAM(15)の秘密情報格納領域(351)に格納された(上記ステップS311において特定されたIDに対応する)秘密情報si,hmaxを読み込み、また、RAM(15)のブラインド情報格納領域(356)に格納されたブラインド情報si+1,0^J(si,hmax)を読み込み、これらをバイナリ系列で結合した値si,hmax‖si+1,0^J(si,hmax)を入力として、ハッシュ関数Dを演算し、この演算結果D(si,hmax‖si+1,0^J(si,hmax))を、RAM(15)のハッシュ関数D演算結果格納領域(357)に格納する(ステップS317)。
【0098】
認証合格判定の場合は、さらに、サーバ(1)のメッセージ暗号化部(図示しない。)が、サーバ(1)のRAM(15)の秘密情報格納領域(351)に格納された(上記ステップS311において特定されたIDに対応する)秘密情報si,hmaxを読み込み、また、サーバ(1)の外部記憶装置から読み込まれてRAM(15)の所定領域に格納されているメッセージmを読み込んで、この秘密情報si,hmaxを入力とするハッシュ関数Fの演算結果F(si,hmax)とメッセージmとの排他的論理和m^F(si,hmax)を暗号化メッセージとして出力し、RAM(15)の暗号化メッセージ格納領域(図示しない。)に格納する(ステップS318)。
【0099】
認証合格判定の場合には、サーバ(1)の通信部(13)が、サーバ(1)の制御部の制御の下、RAM(15)のブラインド情報格納領域(356)に格納されたブラインド情報si+1,0^J(si,hmax)、RAM(15)のハッシュ関数D演算結果格納領域(357)に格納された演算結果D(si,hmax‖si+1,0^J(si,hmax))、サーバ(1)の外部記憶装置(17)から読み込まれてRAM(15)の所定領域に格納されたk番目(これはステップS311で特定されている。)のRFID(2)に固有の固有情報、およびRAM(15)の暗号化メッセージ格納領域(図示しない。)に格納された暗号化メッセージを読取装置(3)に送信する(ステップS319)。なお、固有情報の送信は必要に応じて行うようにしてもよい。
【0100】
また、認証合格判定の場合には、以上のステップの処理の終了後、サーバ(1)の更新部(348)が、RAM(15)の新秘密情報格納領域(355)に格納された新たな秘密情報si+1,0を、外部記憶装置(17)のデータベースにおいて、k番目のRFID(2)の識別情報idに対応付けられた秘密情報として上書きする(ステップS320)。この場合では、先にk番目のRFID(2)の識別情報idに対応付けられていた秘密情報si,hmaxを消除し、新しい秘密情報si+1,0を、k番目のRFID(2)の識別情報idに対応付けて記憶する。
【0101】
読取装置(3)の通信手段は、ステップS319において送信されたブラインド情報si+1,0^J(si,hmax)、演算結果D(si,hmax‖si+1,0^J(si,hmax))、固有情報、および暗号化メッセージを受信し(ステップS321)、さらに読取装置(3)は、そのアンテナ(31)によって、ステップS321において受信した、ブラインド情報si+1,0^J(si,hmax)、演算結果D(si,hmax‖si+1,0^J(si,hmax))および暗号化メッセージをk番目のRFID(2)に無線送信する(ステップS322)。
【0102】
k番目のRFID(2)のアンテナ(28)は、ステップS322において無線送信された、ブラインド情報si+1,0^J(si,hmax)、演算結果D(si,hmax‖si+1,0^J(si,hmax))および暗号化メッセージを受信し、ブラインド情報をRAM(24)のブラインド情報格納領域(443)に格納し、演算結果DをRAM(24)の第1ハッシュ関数D演算結果格納領域(444)に格納し、暗号化メッセージをRAM(24)の暗号化メッセージ格納領域(図示しない。)に格納する(ステップS323)。
【0103】
RFID(2)のハッシュ関数D演算部(433)は、RAM(24)の秘密情報格納領域(440)に格納された秘密情報si,hmaxを読み込み(サーバ(1)から更新情報が送られてくるときは、RFID(2)の秘密情報はsi,hmaxに更改されていることに留意すること。)、また、RAM(24)のブラインド情報格納領域(443)に格納されたブラインド情報si+1,0^J(si,hmax)を読み込み、これらをバイナリ系列で結合した値si,hmax‖si+1,0^J(si,hmax)を入力として、ハッシュ関数Dを演算し、この演算結果D(si,hmax‖si+1,0^J(si,hmax))を、RAM(24)の第2ハッシュ関数D演算結果格納領域(445)に格納する(ステップS324)。
【0104】
RFID(2)の判定部(434)は、RAM(24)の第1ハッシュ関数D演算結果格納領域(444)に格納される演算結果D(si,hmax‖si+1,0^J(si,hmax))と、RAM(24)の第2ハッシュ関数D演算結果格納領域(445)に格納される演算結果D(si,hmax‖si+1,0^J(si,hmax))とが等しいか否かを判定する(ステップS325)。
【0105】
ステップS325における判定結果が、RAM(24)の第1ハッシュ関数D演算結果格納領域(444)に格納される演算結果D(si,hmax‖si+1,0^J(si,hmax))と、RAM(24)の第2ハッシュ関数D演算結果格納領域(445)に格納される演算結果D(si,hmax‖si+1,0^J(si,hmax))とが等しくないという場合には、受信したブラインド情報などが信頼あるサーバから送られたものではないとして、爾後の処理を実行せずにトランザクションは終了する(ステップS325c)。
【0106】
ステップS325における判定結果が、RAM(24)の第1ハッシュ関数D演算結果格納領域(444)に格納される演算結果D(si,hmax‖si+1,0^J(si,hmax))と、RAM(24)の第2ハッシュ関数D演算結果格納領域(445)に格納される演算結果D(si,hmax‖si+1,0^J(si,hmax))とが等しいという場合には、RFID(2)の秘密情報取得部(435)が、RAM(24)の秘密情報格納領域(440)に格納される秘密情報si,hmaxを読み込み、この秘密情報si,hmaxを入力とするハッシュ関数Jの演算結果J(si,hmax)と、RAM(24)のブラインド情報格納領域(443)から読み込んだブラインド情報si+1,0^J(si,hmax)との排他的論理和(si+1,0^J(si,hmax))^J(si,hmax)=si+1,0を出力し、RAM(24)の新秘密情報格納領域(446)に格納する(ステップS326)。
【0107】
また、ステップS325における判定結果が、RAM(24)の第1ハッシュ関数D演算結果格納領域(444)に格納される演算結果D(si,hmax‖si+1,0^J(si,hmax))と、RAM(24)の第2ハッシュ関数D演算結果格納領域(445)に格納される演算結果D(si,hmax‖si+1,0^J(si,hmax))とが等しいという場合には、RFID(2)のメッセージ復号化部(図示しない。)が、不揮発性メモリ(27)に記憶される秘密情報si,hmaxを読み込み、この秘密情報si,hmaxを入力とするハッシュ関数Fの演算結果F(si,hmax)と、RAM(24)の暗号化メッセージ格納領域から読み込んだ暗号化メッセージとの排他的論理和(m^F(si,hmax))^F(si,hmax)=mを出力し、RAM(24)のメッセージ格納領域(図示しない。)に格納する(ステップS327)。
【0108】
RFID(2)の更新部(436)は、RAM(24)の新秘密情報格納領域(446)に格納された新たな秘密情報si+1,0を、先に不揮発性メモリ(27)に記憶されていた秘密情報si,hmaxを上書きする(ステップS328)。つまり、この段階で、不揮発性メモリ(27)には新しい秘密情報si+1,0が記憶されたことになる。
【0109】
サーバ(1)およびRFID(2)は、以上のようにして、秘密情報si,hmaxを秘密情報si+1,0に更新して共有することになる。
【0110】
なお、以上の説明のとおり、第2実施形態では、サーバ(1)およびRFID(2)の秘密情報の更新は、読取装置(3)のRFID(2)に対するhmax回の読取ごとに実行されることに留意する。
【0111】
なお、第1実施形態の変形例2・3・4は、この第2実施形態にも同様にして適用される。
【0112】
<第3実施形態>
以上の各実施形態・変形例では、サーバとRDIF(端末装置)との間での秘密情報更新であったが、サーバへのアクセスによる負荷・トラフィック軽減の観点からも、端末装置間で秘密情報を更新できることが好ましい。このことを以下に説明する。なお、サーバと端末装置との間での秘密情報更新が前提となっているが、このことは上記各実施形態で説明済みである。ここでは、説明の便宜から第1実施形態を前提として(第1実施形態の変形例や第2実施形態を排除する趣旨ではない。)、端末装置間で秘密情報更新について説明を加える。なお、説明の便宜から、端末装置は2つとし、それぞれを端末装置A、端末装置Bとし、端末装置Aはサーバからの秘密情報を更新済みであって、端末装置Bは端末装置Aとの交信で秘密情報を更新するものとする。また、端末装置A、端末装置Bはそれぞれ、相互に無線送受信可能な通信手段を有するとする。
図17は、端末装置A(2A)と端末装置(2B)との通信ネットワークの態様を示した図である。
図18は、第3実施形態に係わるサーバ(1)の機能ブロック図である。
図19は、第3実施形態に係わるRFID(2)の機能ブロック図である。
図20は、第3実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャートである。
【0113】
端末装置Aは、その通信手段であるアンテナ28Aによって、RAM(24A)のブラインド情報格納領域(243A)に格納されたブラインド情報Eb、RAM(24A)の第1ハッシュ関数D演算結果格納領域(244A)に格納された演算結果D、RAM(24A)の暗号化メッセージ格納領域(図示しない。)に格納された暗号化メッセージEmを端末装置Bに送信する(ステップS500)。
【0114】
また、端末装置Aのハッシュ関数T演算部(235A)は、サーバ(1)から受信して得たブラインド情報Eb、演算結果D、新たな秘密情報si+1と、上書きされる前の秘密情報sとをバイナリ系列で結合した値Eb‖D‖si+1‖sを入力としたハッシュ関数Tを演算して、この演算結果T(Eb‖D‖si+1‖s)をRAM(24A)の第1ハッシュ関数T演算結果格納領域(247A)に格納しておく(ステップS501)。
【0115】
端末装置Bは、その通信手段であるアンテナ28Bによって、ステップS501において送信された、ブラインド情報Eb、演算結果D、暗号化メッセージEmを受信し、ブラインド情報をRAM(24B)のブラインド情報格納領域(243B)に格納し、演算結果DをRAM(24B)の第1ハッシュ関数D演算結果格納領域(244B)に格納し、暗号化メッセージをRAM(24B)の暗号化メッセージ格納領域(図示しない。)に格納する(ステップS502)。
【0116】
端末装置Bにおいても、端末装置AにおけるステップS122〜S127と同様の処理を実行することで、新しい秘密情報を得てこれに更新し、また、メッセージを取得する(S503)。
【0117】
また、端末装置Bの確認情報生成部(236B)は、更新される前の秘密情報sと、ステップS503の処理で取得した新しい秘密情報si+1と、端末装置Aから送信されたブラインド情報Ebと演算結果Dとをバイナリ系列で結合した値Eb‖D‖si+1‖sを入力としたハッシュ関数Tを演算し、この演算結果T(Eb‖D‖si+1‖s)をRAM(24B)の確認情報格納領域(247B)に格納する(ステップS504)。
【0118】
次いで、端末装置Bのアンテナ28Bは、RAM(24B)の確認情報格納領域(247B)に格納された演算結果T(Eb‖D‖si+1‖s)を端末装置Aに送信する(ステップS505)。この際、ステップS117と同様にしてメッセージm’を暗号化した暗号メッセージm’^F(s)を送信するとしてもよい。
【0119】
端末装置Aのアンテナ28Aは、ステップS505において端末装置Bから送信された演算結果T(Eb‖D‖si+1‖s)を受信し、この演算結果T(Eb‖D‖si+1‖s)をRAM(24A)の第2ハッシュ関数T演算結果格納領域(248A)に格納する(ステップS506)。
【0120】
端末装置Aの検証部(237A)は、RAM(24)の第1ハッシュ関数T演算結果格納領域(247A)に格納しておいた演算結果T(Eb‖D‖si+1‖s)と、RAM(24)の第2ハッシュ関数T演算結果格納領域(248A)に格納された演算結果T(Eb‖D‖si+1‖s)とが一致するかを検証する(ステップS507)。これによって、端末装置Aは、端末装置Bにおいて秘密情報更新が成功したことを確認することができる。
【0121】
また、端末装置Aが、端末装置Bから暗号メッセージm’^F(s)を受信した場合には、端末装置Aのメッセージ復号化部(図示しない。)は、この暗号メッセージm’^F(s)と、端末装置AのRAM(24)に記憶される上書き前の秘密情報sを入力とするハッシュ関数Fの演算結果F(s)との排他的論理和(m’^F(s))^F(s)=m’を演算してメッセージm’を得ることができる。
【0122】
なお、端末装置Bが、メッセージm’をハッシュ関数Fの演算結果F(si+1)で暗号化した暗号メッセージm’^F(si+1)を送信し、端末装置Aが、この暗号化メッセージを受信した場合には、端末装置Aのメッセージ復号化部(図示しない。)は、この暗号メッセージm’^F(si+1)と、端末装置Aの不揮発性メモリ(27)に記憶される新たな秘密情報si+1を入力とするハッシュ関数Fの演算結果F(si+1)との排他的論理和(m’^F(si+1))^F(si+1)=m’を演算してメッセージm’を得ることができる。
【0123】
本発明である秘密情報更新方法は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記各実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【産業上の利用可能性】
【0124】
本発明の秘密情報更新方法は、例えば、演算機能の豊富ではないRFIDのよなICタグとの間での秘密情報の更新に用いることができる。
【図面の簡単な説明】
【0125】
【図1】読取装置(3)を介したサーバ(1)とRFID(2)との通信ネットワークの態様を示した図。
【図2】第1実施形態に係わるサーバ(1)のハードウェア構成を例示した構成ブロック図。
【図3】第1実施形態に係わるRFID(2)のハードウェア構成を例示した構成ブロック図。
【図4】第1実施形態に係わるサーバ(1)の機能ブロック図。
【図5】第1実施形態に係わるRFID(2)の機能ブロック図。
【図6】第1実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その1)。
【図7】第1実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その2)。
【図8】第1実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その3)。
【図9】サーバ(1)の外部記憶装置(17)に記憶されるデータベースのデータ構成を示す図。
【図10】Bデータベースにおける秘密情報を用いた判定処理示す部分フローチャート。
【図11】第1実施形態の変形例1における秘密情報更新方法の処理の流れのうち、第1実施形態と異なる処理部分の部分フローチャート。
【図12】第2実施形態に係わるサーバ(1)の機能ブロック図。
【図13】第2実施形態に係わるRFID(2)の機能ブロック図。
【図14】第2実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その1)。
【図15】第2実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その2)。
【図16】第2実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート(その3)。
【図17】端末装置A(2A)と端末装置(2B)との通信ネットワークの態様を示した図。
【図18】第3実施形態に係わるサーバ(1)の機能ブロック図。
【図19】第3実施形態に係わるRFID(2)の機能ブロック図。
【図20】第3実施形態に係わる秘密情報更新方法の処理の流れを示すフローチャート。
【符号の説明】
【0126】
1 サーバ
2 RFID
3 読取装置
2A 端末装置A
2B 端末装置B

【特許請求の範囲】
【請求項1】
サーバと端末装置とが、読取装置を介して相互に通信可能に接続された通信ネットワークにおいて、
サーバは、
乱数を出力する乱数生成手段と、
端末装置に固有の秘密情報を記憶する記憶手段と、
読取装置から送信されたデータを受信する受信手段と、
サーバの記憶手段に記憶される秘密情報と乱数生成手段によって出力された乱数とから構成される値を一方向性関数Hの入力として、この演算結果を出力する一方向性関数H演算手段と、
サーバの一方向性関数H演算手段によって出力された演算結果と、サーバの受信手段によって受信されたデータとが等しいか否かを判定する判定手段と、
乱数を、端末装置に固有の新たな秘密情報として出力する秘密情報生成手段と、
サーバの記憶手段に記憶される秘密情報を入力とする一方向性関数Jの演算結果と、秘密情報生成手段によって出力された秘密情報との排他的論理和をブラインド情報として出力するブラインド情報生成手段と、
乱数生成手段によって出力された乱数、あるいは、サーバのブラインド情報生成手段によって出力されたブラインド情報を読取装置に送信する送信手段と、
サーバの秘密情報生成手段によって出力された秘密情報を、サーバの記憶手段に記憶する更新手段と
を備え、
読取装置は、
サーバの送信手段によって送信された、サーバの乱数生成手段によって出力された乱数、あるいは、サーバのブラインド情報生成手段によって出力されたブラインド情報を受信する対サーバ受信手段と、
読取装置の対サーバ受信手段によって受信した、サーバの乱数生成手段によって出力された乱数、あるいは、サーバのブラインド情報生成手段によって出力されたブラインド情報を端末装置に送信する対端末装置送信手段と、
端末装置から送信されたデータを受信する対端末装置受信手段と、
読取装置の対端末装置受信手段によって受信した端末装置から送信されたデータ、あるいは、端末装置に対する読取開始を表す情報をサーバに送信する対サーバ送信手段と
を備え、
端末装置は、
端末装置に固有の秘密情報を記憶する記憶手段と、
読取装置の対端末装置送信手段によって送信された、サーバの乱数生成手段によって出力された乱数、あるいは、サーバのブラインド情報生成手段によって出力されたブラインド情報を受信する受信手段と、
端末装置の受信手段によって受信したサーバの乱数生成手段によって出力された乱数と、端末装置の記憶手段に記憶される秘密情報とから構成される値を一方向性関数Hの入力として、この演算結果を出力する一方向性関数H演算手段と、
端末装置の一方向性関数H演算手段によって出力された演算結果を読取装置に送信する送信手段と、
端末装置の受信手段によって受信した、サーバのブラインド情報生成手段によって出力されたブラインド情報と、端末装置の記憶手段に記憶される秘密情報を入力とする一方向性関数Jの演算結果との排他的論理和によって、サーバの秘密情報生成手段によって出力された秘密情報を得る秘密情報取得手段と、
端末装置の秘密情報取得手段によって得られた秘密情報を、端末装置の記憶手段に記憶する更新手段と
を備え、
読取装置の対サーバ送信手段が、端末装置を読み取る際に、端末装置に対する読取開始を表す情報をサーバに対して送信する第1対サーバ送信ステップと、
サーバの受信手段が、第1対サーバ送信ステップにおいて送信された端末装置に対する読取開始を表す情報を受信する第1サーバ受信ステップと、
サーバの乱数生成手段が、乱数を出力する乱数生成ステップと、
サーバの送信手段が、乱数生成ステップにおいて出力された乱数を読取装置に対して送信する第1サーバ送信ステップと、
読取装置の対サーバ受信手段が、第1サーバ送信ステップにおいて送信された、乱数生成ステップにおいて出力された乱数を受信する第1対サーバ受信ステップと、
読取装置の対端末装置送信手段が、第1対サーバ受信ステップにおいて受信した、乱数生成ステップにおいて出力された乱数を、端末装置に送信する第1対端末装置送信ステップと、
端末装置の受信手段が、第1対端末装置送信ステップにおいて送信された、乱数生成ステップにおいて出力された乱数を受信する第1端末装置受信ステップと、
端末装置の一方向性関数H演算手段が、第1端末装置受信ステップにおいて受信した乱数生成ステップにおいて出力された乱数と、端末装置の記憶手段に記憶される秘密情報とから構成される値を一方向性関数Hの入力として、この演算結果を出力する端末装置一方向性関数H演算ステップと、
端末装置の送信手段が、端末装置一方向性関数H演算ステップにおいて出力された演算結果を読取装置に送信する対読取装置送信ステップと、
読取装置の対端末装置受信手段が、対読取装置送信ステップにおいて送信された、端末装置一方向性関数H演算ステップにおいて出力された演算結果を受信する対端末装置受信ステップと、
読取装置の対サーバ送信手段が、対端末装置受信ステップにおいて受信した、端末装置一方向性関数H演算ステップにおいて出力された演算結果をサーバに送信する第2対サーバ送信ステップと、
サーバの受信手段が、第2対サーバ送信ステップにおいて送信された、端末装置一方向性関数H演算ステップにおいて出力された演算結果を受信する第2サーバ受信ステップと、
サーバの一方向性関数H演算手段が、サーバの記憶手段に記憶される秘密情報と乱数生成ステップにおいて出力された乱数とから構成される値を一方向性関数Hの入力として、この演算結果を出力するサーバ一方向性関数H演算ステップと、
サーバの判定手段が、第2サーバ受信ステップにおいて受信した端末装置一方向性関数H演算ステップにおいて出力された演算結果と、サーバ一方向性関数H演算ステップにおいて出力された演算結果とが等しいか否かを判定する判定ステップと、
判定ステップにおいて、第2サーバ受信ステップにおいて受信した端末装置一方向性関数H演算ステップにおいて出力された演算結果と、サーバ一方向性関数H演算ステップにおいて出力された演算結果とが等しいと判定された(認証合格判定)場合に、サーバの秘密情報生成手段が、乱数を端末装置に固有の新たな秘密情報として出力する秘密情報生成ステップと、
認証合格判定の場合に、サーバのブラインド情報生成手段が、サーバの記憶手段に記憶される秘密情報を入力とする一方向性関数Jの演算結果と、秘密情報生成ステップにおいて出力された秘密情報との排他的論理和をブラインド情報として出力するブラインド情報生成ステップと、
認証合格判定の場合に、サーバの送信手段が、ブラインド情報生成ステップにおいて出力されたブラインド情報を読取装置に送信する第2サーバ送信ステップと、
認証合格判定の場合に、サーバの更新手段が、秘密情報生成ステップにおいて出力された秘密情報を、サーバの記憶手段に記憶する更新ステップと、
読取装置の対サーバ受信手段が、第2サーバ送信ステップにおいて送信された、ブラインド情報生成ステップにおいて出力されたブラインド情報を受信する第2対サーバ受信ステップと、
読取装置の対端末装置送信手段が、第2対サーバ受信ステップにおいて受信した、ブラインド情報生成ステップにおいて出力されたブラインド情報を、端末装置に送信する第2対端末装置送信ステップと、
端末装置の受信手段が、第2対端末装置送信ステップにおいて送信された、ブラインド情報生成ステップにおいて出力されたブラインド情報を受信する第2端末装置受信ステップと、
端末装置の秘密情報取得手段が、第2端末装置受信ステップにおいて受信した、ブラインド情報生成ステップにおいて出力されたブラインド情報と、端末装置の記憶手段に記憶される秘密情報を入力とする一方向性関数Jの演算結果との排他的論理和によって、秘密情報生成ステップにおいて出力された秘密情報を得る秘密情報取得ステップと、
端末装置の更新手段が、秘密情報取得ステップにおいて得られた秘密情報を、端末装置の記憶手段に記憶する更新ステップと
を有することを特徴とする秘密情報更新方法。
【請求項2】
サーバは、サーバの記憶手段に記憶される秘密情報とブラインド情報生成手段によって出力されたブラインド情報とから構成される値を一方向性関数Dの入力として、この演算結果を出力する一方向性関数D演算手段も備え、
サーバの送信手段は、サーバの一方向性関数D演算手段によって出力された演算結果も読取装置に送信することが可能であり、
読取装置の対サーバ受信手段は、サーバの一方向性関数D演算手段によって出力された演算結果も受信可能であり、
読取装置の対端末装置送信手段は、サーバの一方向性関数D演算手段によって出力された演算結果も端末装置に送信可能であり、
端末装置の受信手段は、サーバの一方向性関数D演算手段によって出力された演算結果も受信可能であり、
端末装置は、
端末装置の記憶手段に記憶される秘密情報と、端末装置の受信手段によって受信したサーバのブラインド情報生成手段によって出力されたブラインド情報とから構成される値を一方向性関数Dの入力として、この演算結果を出力する一方向性関数D演算手段と、
端末装置の一方向性関数D演算手段によって出力された演算結果と、端末装置の受信手段によって受信したサーバの一方向性関数D演算手段によって出力された演算結果とが等しいか否かを判定する判定手段と
を備え、
認証合格判定の場合に、サーバの一方向性関数D演算手段が、サーバの記憶手段に記憶される秘密情報とブラインド情報生成ステップにおいて出力されたブラインド情報とから構成される値を一方向性関数Dの入力として、この演算結果を出力するサーバ一方向性関数D演算ステップも有し、
認証合格判定の場合における第2サーバ送信ステップは、サーバ一方向性関数D演算ステップにおいて出力された演算結果も送信し、
第2対サーバ受信ステップは、サーバ一方向性関数D演算ステップにおいて出力された演算結果も受信し、
第2対端末装置送信ステップは、サーバ一方向性関数D演算ステップにおいて出力された演算結果も送信し、
第2端末装置受信ステップは、サーバ一方向性関数D演算ステップにおいて出力された演算結果も受信し、
端末装置の一方向性関数D演算手段が、端末装置の記憶手段に記憶される秘密情報と、第2端末装置受信ステップにおいて受信したブラインド情報生成ステップにおいて出力されたブラインド情報とから構成される値を一方向性関数Dの入力として、この演算結果を出力する端末装置一方向性関数D演算ステップと、
端末装置の判定手段が、端末装置一方向性関数D演算ステップにおいて出力された演算結果と、第2端末装置受信ステップにおいて受信したサーバ一方向性関数D演算ステップにおいて出力された演算結果とが等しいか否かを判定する端末装置判定ステップとを有し、
秘密情報取得ステップは、端末装置判定ステップにおいて、端末装置一方向性関数D演算ステップにおいて出力された演算結果と、第2端末装置受信ステップにおいて受信したサーバ一方向性関数D演算ステップにおいて出力された演算結果とが等しいと判定された場合に実行される
ことを特徴とする請求項1に記載の秘密情報更新方法。
【請求項3】
サーバと端末装置とが、読取装置を介して相互に通信可能に接続された通信ネットワークにおいて、
サーバは、
端末装置に固有の秘密情報を記憶する記憶手段と、
読取装置から送信されたデータを受信する受信手段と、
サーバの記憶手段に記憶される秘密情報に対して、1回以上の一方向性関数Hの演算を施し、この演算結果を出力する一方向性関数H演算手段と、
サーバの一方向性関数H演算手段によって出力された演算結果に対して、一方向性関数Gの演算を施し、この演算結果を出力する一方向性関数G演算手段と、
サーバの一方向性関数G演算手段によって出力された演算結果と、サーバの受信手段によって受信されたデータとが等しいか否かを判定する第1判定手段と、
サーバの第1判定手段によって、サーバの一方向性関数G演算手段によって出力された演算結果と、サーバの受信手段によって受信されたデータとが等しいと判定された場合における、サーバの一方向性関数H演算手段によって出力された演算結果を得るに施した一方向性関数Hの演算回数を出力する演算回数出力手段と、
サーバの演算回数出力手段によって出力された演算回数と、所定の閾値とが等しいか否かを判定する第2判定手段と、
乱数を、端末装置に固有の新たな秘密情報として出力する秘密情報生成手段と、
サーバの記憶手段に記憶される秘密情報を入力として一方向性関数Hの演算を行い、この演算結果を、新たな秘密情報として記憶手段に記憶する更改手段と、
サーバの記憶手段に記憶される秘密情報を入力とする一方向性関数Jの演算結果と、秘密情報生成手段によって出力された秘密情報との排他的論理和をブラインド情報として出力するブラインド情報生成手段と、
サーバのブラインド情報生成手段によって出力されたブラインド情報を読取装置に送信する送信手段と、
サーバの秘密情報生成手段によって出力された秘密情報を、サーバの記憶手段に記憶する更新手段と
を備え、
読取装置は、
サーバの送信手段によって送信された、サーバのブラインド情報生成手段によって出力されたブラインド情報を受信する対サーバ受信手段と、
読取装置の対サーバ受信手段によって受信した、サーバのブラインド情報生成手段によって出力されたブラインド情報、あるいは、端末装置に対する読取開始を表す情報を端末装置に送信する対端末装置送信手段と、
端末装置から送信されたデータを受信する対端末装置受信手段と、
読取装置の対端末装置受信手段によって受信した端末装置から送信されたデータをサーバに送信する対サーバ送信手段と
を備え、
端末装置は、
端末装置に固有の秘密情報を記憶する記憶手段と、
読取装置の対端末装置送信手段によって送信された、サーバのブラインド情報生成手段によって出力されたブラインド情報、あるいは、端末装置に対する読取開始を表す情報を受信する受信手段と、
端末装置の記憶手段に記憶される秘密情報を一方向性関数Hの入力として、この演算結果を出力する一方向性関数H演算手段と、
端末装置の一方向性関数H演算手段によって出力された演算結果を、新たな秘密情報として記憶手段に記憶する更改手段と、
端末装置の一方向性関数H演算手段によって出力された演算結果を一方向性関数Gの入力として、この演算結果を出力する一方向性関数G演算手段と、
端末装置の一方向性関数G演算手段によって出力された演算結果を読取装置に送信する送信手段と、
端末装置の受信手段によって受信した、サーバのブラインド情報生成手段によって出力されたブラインド情報と、端末装置の記憶手段に記憶される秘密情報を入力とする一方向性関数Jの演算結果との排他的論理和によって、サーバの秘密情報生成手段によって出力された秘密情報を得る秘密情報取得手段と、
端末装置の秘密情報取得手段によって得られた秘密情報を、端末装置の記憶手段に記憶する更新手段と
を備え、
読取装置の対端末装置送信手段が、端末装置を読み取る際に、端末装置に対する読取開始を表す情報を端末装置に対して送信する第1対端末装置送信ステップと、
端末装置の受信手段が、第1対端末装置送信ステップにおいて送信された端末装置に対する読取開始を表す情報を受信する第1端末装置受信ステップと、
端末装置の一方向性関数H演算手段が、端末装置の記憶手段に記憶される秘密情報を一方向性関数Hの入力として、この演算結果を出力する端末装置一方向性関数H演算ステップと、
端末装置の更改手段が、端末装置一方向性関数H演算ステップにおいて出力された演算結果を、新たな秘密情報として記憶手段に記憶する端末装置更改ステップと、
端末装置の一方向性関数G演算手段が、端末装置一方向性関数H演算ステップにおいて出力された演算結果を一方向性関数Gの入力として、この演算結果を出力する端末装置一方向性関数G演算ステップと、
端末装置の送信手段が、端末装置一方向性関数G演算ステップにおいて出力された演算結果を読取装置に送信する端末装置送信ステップと、
読取装置の対端末装置受信手段が、端末装置送信ステップにおいて送信された、端末装置一方向性関数G演算ステップにおいて出力された演算結果を受信する対端末装置受信ステップと、
読取装置の対サーバ送信手段が、対端末装置受信ステップにおいて受信した、端末装置一方向性関数G演算ステップにおいて出力された演算結果をサーバに送信する対サーバ送信ステップと、
サーバの受信手段が、対サーバ送信ステップにおいて送信された、端末装置一方向性関数G演算ステップにおいて出力された演算結果を受信するサーバ受信ステップと、
サーバの一方向性関数H演算手段が、サーバの記憶手段に記憶される秘密情報に対して、1回以上の一方向性関数Hの演算を施し、この演算結果を出力するサーバ一方向性関数H演算ステップと、
サーバの一方向性関数G演算手段が、サーバ一方向性関数H演算ステップにおいて出力された演算結果に対して、一方向性関数Gの演算を施し、この演算結果を出力するサーバ一方向性関数G演算ステップと、
サーバの第1判定手段が、サーバ一方向性関数G演算ステップにおいて出力された演算結果と、サーバ受信ステップにおいて受信された端末装置一方向性関数G演算ステップにおいて出力された演算結果とが等しいか否かを判定する第1判定ステップと、
サーバの演算回数出力手段が、第1判定ステップにおいて、サーバ一方向性関数G演算ステップにおいて出力された演算結果と、サーバ受信ステップにおいて受信された端末装置一方向性関数G演算ステップにおいて出力された演算結果とが等しいと判定された場合における、サーバ一方向性関数H演算ステップにおいて出力された演算結果を得るに施した一方向性関数Hの演算回数を出力する演算回数出力ステップと、
サーバの第2判定手段が、演算回数出力ステップにおいて出力された演算回数と、所定の閾値とが等しいか否かを判定する第2判定ステップと、
第2判定ステップにおいて、演算回数出力ステップにおいて出力された演算回数と、所定の閾値とが等しいと判定されなかった(閾値不合格判定)場合に、サーバの更改手段が、サーバの記憶手段に記憶される秘密情報を入力として一方向性関数Hの演算を行い、この演算結果を、新たな秘密情報として記憶手段に記憶する更改ステップと、
第2判定ステップにおいて、演算回数出力ステップにおいて出力された演算回数と、所定の閾値とが等しいと判定された(閾値合格判定)場合に、サーバの秘密情報生成手段が、乱数を、端末装置に固有の新たな秘密情報として出力する秘密情報生成ステップと、
閾値合格判定の場合に、サーバのブラインド情報生成手段が、サーバの記憶手段に記憶される秘密情報を入力とする一方向性関数Jの演算結果と、秘密情報生成ステップにおいて出力された秘密情報との排他的論理和をブラインド情報として出力するブラインド情報生成ステップと、
閾値合格判定の場合に、サーバの更新手段が、秘密情報生成ステップにおいて出力された秘密情報を、サーバの記憶手段に記憶する更新ステップと
閾値合格判定の場合に、サーバの送信手段が、ブラインド情報生成ステップにおいて出力されたブラインド情報を読取装置に送信する対読取装置送信ステップと、
閾値合格判定の場合において、読取装置の対サーバ受信手段が、対読取装置送信ステップにおいて送信された、ブラインド情報生成ステップにおいて出力されたブラインド情報を受信する対サーバ受信ステップと、
読取装置の対端末装置送信手段が、対サーバ受信ステップにおいて受信したブラインド情報生成ステップにおいて出力されたブラインド情報を端末装置に送信する第2対端末装置送信ステップと、
端末装置の受信手段が、第2対端末装置送信ステップにおいて送信されたブラインド情報生成ステップにおいて出力されたブラインド情報を受信する第2端末装置受信ステップと、
端末装置の秘密情報取得手段が、第2端末装置受信ステップにおいて受信した、ブラインド情報生成ステップにおいて出力されたブラインド情報と、端末装置の記憶手段に記憶される秘密情報を入力とする一方向性関数Jの演算結果との排他的論理和によって、秘密情報生成ステップにおいて出力された秘密情報を得る秘密情報取得ステップと、
端末装置の更新手段が、秘密情報取得ステップにおいて得られた秘密情報を、端末装置の記憶手段に記憶する更新ステップと
を有することを特徴とする秘密情報更新方法。
【請求項4】
サーバは、サーバの記憶手段に記憶される秘密情報とブラインド情報生成手段によって出力されたブラインド情報とから構成される値を一方向性関数Dの入力として、この演算結果を出力する一方向性関数D演算手段も備え、
サーバの送信手段は、サーバの一方向性関数D演算手段によって出力された演算結果も読取装置に送信することが可能であり、
読取装置の対サーバ受信手段は、サーバの一方向性関数D演算手段によって出力された演算結果も受信可能であり、
読取装置の対端末装置送信手段は、サーバの一方向性関数D演算手段によって出力された演算結果も端末装置に送信可能であり、
端末装置の受信手段は、サーバの一方向性関数D演算手段によって出力された演算結果も受信可能であり、
端末装置は、
端末装置の記憶手段に記憶される秘密情報と、端末装置の受信手段によって受信したサーバのブラインド情報生成手段によって出力されたブラインド情報とから構成される値を一方向性関数Dの入力として、この演算結果を出力する一方向性関数D演算手段と、
端末装置の一方向性関数D演算手段によって出力された演算結果と、端末装置の受信手段によって受信したサーバの一方向性関数D演算手段によって出力された演算結果とが等しいか否かを判定する判定手段と
を備え、
閾値合格判定の場合に、サーバの一方向性関数D演算手段が、サーバの記憶手段に記憶される秘密情報とブラインド情報生成ステップにおいて出力されたブラインド情報とから構成される値を一方向性関数Dの入力として、この演算結果を出力するサーバ一方向性関数D演算ステップも有し、
閾値合格判定の場合における第2送信ステップは、サーバ一方向性関数D演算ステップにおいて出力された演算結果も送信し、
第2対サーバ受信ステップは、サーバ一方向性関数D演算ステップにおいて出力された演算結果も受信し、
第2対端末装置送信ステップは、サーバ一方向性関数D演算ステップにおいて出力された演算結果も送信し、
第2端末装置受信ステップは、サーバ一方向性関数D演算ステップにおいて出力された演算結果も受信し、
端末装置の一方向性関数D演算手段が、端末装置の記憶手段に記憶される秘密情報と、第2端末装置受信ステップにおいて受信したブラインド情報生成ステップにおいて出力されたブラインド情報とから構成される値を一方向性関数Dの入力として、この演算結果を出力する端末装置一方向性関数D演算ステップと、
端末装置の判定手段が、端末装置一方向性関数D演算ステップにおいて出力された演算結果と、第2端末装置受信ステップにおいて受信したサーバ一方向性関数D演算ステップにおいて出力された演算結果とが等しいか否かを判定する端末装置判定ステップとを有し、
秘密情報取得ステップは、端末装置判定ステップにおいて、端末装置一方向性関数D演算ステップにおいて出力された演算結果と、第2端末装置受信ステップにおいて受信したサーバ一方向性関数D演算ステップにおいて出力された演算結果とが等しいと判定された場合に実行される
ことを特徴とする請求項3に記載の秘密情報更新方法。
【請求項5】
端末装置は他の端末装置に対して通信する通信手段を備え、端末装置同士が相互に通信可能であり、
請求項1ないし請求項4のいずれかに記載の秘密情報更新方法の秘密情報取得ステップにおいて、サーバの秘密情報生成手段によって出力された秘密情報を得た一方の端末装置(端末装置A)が、端末装置Aの通信手段によって、
未だ、請求項1ないし請求項4のいずれかに記載の秘密情報更新方法によって、サーバの秘密情報生成手段によって出力された秘密情報を得ていない他方の端末装置(端末装置B)に対して、
第2端末装置受信ステップにおいて受信した、ブラインド情報生成ステップにおいて出力されたブラインド情報を送信する端末間送信ステップと、
端末装置Bの秘密情報取得手段が、端末間送信ステップにおいて受信した、ブラインド情報生成ステップにおいて出力されたブラインド情報と、端末装置Bの記憶手段に記憶される秘密情報を入力とする一方向性関数Jの演算結果との排他的論理和によって、秘密情報生成ステップにおいて出力された秘密情報を得る端末間秘密情報取得ステップと
を有する請求項1ないし請求項4のいずれかに記載の秘密情報更新方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2006−352800(P2006−352800A)
【公開日】平成18年12月28日(2006.12.28)
【国際特許分類】
【出願番号】特願2005−179749(P2005−179749)
【出願日】平成17年6月20日(2005.6.20)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】