情報処理システム及び情報処理装置及びサーバ装置及び情報処理方法及びプログラム
【課題】情報処理装置からサーバ装置に送信するトラップドアの数を削減する。
【解決手段】複数の情報処理装置301では、更新される暗号鍵を共有しており、データ登録時に、その時点での最新世代の暗号鍵とキーワードを用いてトラップドアを生成し、更にトラップドアから暗号化キーワードを生成し、サーバ装置201ではデータと暗号化キーワードを関連付けて記憶し、データ検索時に、情報処理装置301が、その時点での最新世代の暗号鍵とキーワードを用いてトラップドアを生成し、サーバ装置201に送信し、サーバ装置201では、受信したトラップドアから過去の世代の暗号鍵に対応する歴代のトラップドアを生成し、過去の世代のトラップドアを用いて暗号化キーワードを検索し、データを抽出する。データ検索時には、情報処理装置301は1つのトラップドアを生成すればよく、また、サーバ装置201に送信されるトラップドアは1つで済む。
【解決手段】複数の情報処理装置301では、更新される暗号鍵を共有しており、データ登録時に、その時点での最新世代の暗号鍵とキーワードを用いてトラップドアを生成し、更にトラップドアから暗号化キーワードを生成し、サーバ装置201ではデータと暗号化キーワードを関連付けて記憶し、データ検索時に、情報処理装置301が、その時点での最新世代の暗号鍵とキーワードを用いてトラップドアを生成し、サーバ装置201に送信し、サーバ装置201では、受信したトラップドアから過去の世代の暗号鍵に対応する歴代のトラップドアを生成し、過去の世代のトラップドアを用いて暗号化キーワードを検索し、データを抽出する。データ検索時には、情報処理装置301は1つのトラップドアを生成すればよく、また、サーバ装置201に送信されるトラップドアは1つで済む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の情報処理装置とサーバ装置とが含まれる情報処理システムに関し、特に、情報処理装置が、検索のためのキーワードをサーバ装置に秘匿した状態でサーバ装置に蓄積されているデータを検索する秘匿検索システムに関する。
【背景技術】
【0002】
サーバ装置(以下、単にサーバともいう)に保存されたデータを、検索者がキーワードを指定して検索でき、かつその際にデータ・キーワードをサーバに対して秘匿する秘匿検索システムは、機密データ管理のアウトソーシングや、メールサーバにおける暗号化メールのフィルタリングへの応用が期待されており、種々の安全性要件を達成するための技術や、サーバや検索者のストレージ・通信オーバーヘッド・演算オーバーヘッドを削減するための様々な技術が提案されている。
さらに、複数のユーザによる検索を可能とする場合には、ユーザの加入・脱退に柔軟に対処するための技術が必要とされる。
【0003】
非特許文献1では、ユーザが保持する秘密情報をハッシュチェーンで管理し、ユーザの加入・脱退に伴って世代が更新されるたびに新しい秘密情報を正当ユーザに配布し、正当ユーザは最新の秘密情報から過去の秘密情報を導出できるようにすることで、ユーザに必要なストレージを抑えつつ、世代更新に対応した秘匿検索を達成する方式が開示されている。
【0004】
また、特許文献1では、データ中継サーバを利用することで、検索内容のサーバに対する秘匿を実現する秘匿検索方式が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2002−297606号公報
【非特許文献】
【0006】
【非特許文献1】H.Park、 J.W.Byun、 and D.H.Lee、 “Secure Index Search for Groups、” TrustBus 2005、 LNCS 3592、 pp.128−140、 2005.
【発明の概要】
【発明が解決しようとする課題】
【0007】
世代更新を伴う秘匿検索システムでは、正当ユーザが、過去の世代で登録された情報を検索できるようにしたいという要求がある。
これを実現するために、非特許文献1にて開示されている方式では、検索者が最新の秘密情報から過去全ての世代の秘密情報を導出し、これらとキーワードからトラップドア(検索用の情報)を世代数分計算し、全てのトラップドアをサーバに送信し、トラップドアを受け取ったサーバが検索・取得処理を行っていた。
このため、検索者にとって計算量・通信量が世代数に比例して増大するという課題がある。
【0008】
本発明は上記の課題を解決することを主な目的の一つとしており、検索者が用いる情報処理装置からサーバに送信すべきトラップドアの数を削減して、結果として検索者が用いる情報処理装置における計算量、情報処理装置とサーバ間の通信量を削減することを主な目的とする。
【課題を解決するための手段】
【0009】
本発明に係る情報処理システムは、
複数の情報処理装置と、サーバ装置とを有する情報処理システムであって、
各情報処理装置は、
他の情報処理装置との間で共有され更新されていく秘密情報を更新の度に記憶する秘密情報記憶部と、
データの生成を指示するデータ生成指示と、データの検索を指示するデータ検索指示とを入力する指示入力部と、
前記データ生成指示の入力があった際に、前記データ生成指示の入力時点で最新の秘密情報である生成時秘密情報で第1の演算を行って、生成時第1演算値データを生成し、前記データ検索指示の入力があった際に、前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行部と、
前記第1演算実行部により生成された検索時第1演算値データを前記サーバ装置に送信する送信部とを有し、
前記サーバ装置は、
情報処理装置により生成された生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを登録データとして記憶する登録データ記憶部と、
情報処理装置から送信された検索時第1演算値データを受信する受信部と、
前記受信部により受信された検索時第1演算値データで第2の演算を行って、先行第1演算値データを先行世代の各々に対して生成する第2演算実行部と、
検索時第1演算値データ及び前記第2演算実行部により生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶部内の登録データとを用いてデータの検索を行うデータ検索部とを有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、情報処理装置において、サーバ装置における第2の演算により先行第1演算値データの各々を導出可能な検索時第1演算値データを生成することで、情報処理装置からサーバ装置に送信するデータを検索時第1演算値データに限定することができ、情報処理装置において先行第1演算値データの各々を生成する必要がないので情報処理装置における計算量を抑えることができ、また、情報処理装置とサーバ装置間の通信量を削減することができる。
【図面の簡単な説明】
【0011】
【図1】実施の形態1に係るシステム構成例を示す図。
【図2】実施の形態1に係るサーバ装置の構成例を示す図。
【図3】実施の形態1に係る情報処理装置の構成例を示す図。
【図4】実施の形態1に係るグループ管理装置の構成例を示す図。
【図5】実施の形態1に係る暗号化キーワード記憶領域における記憶内容の例を示す図。
【図6】実施の形態1に係る暗号化データ記憶領域における記憶内容の例を示す図。
【図7】実施の形態1に係る暗号鍵記憶領域における記憶内容の例を示す図。
【図8】実施の形態1に係る暗号鍵記憶領域における記憶内容の例を示す図。
【図9】実施の形態3に係る情報処理装置の構成例を示す図。
【図10】実施の形態3に係る暗号化キーワード記憶領域における記憶内容の例を示す図。
【図11】実施の形態1に係る暗号化データの送信・格納処理におけるデータフロー例を示す図。
【図12】実施の形態1に係る暗号化データの検索・取得処理におけるデータフロー例を示す図。
【図13】実施の形態2に係る暗号化データの送信・格納処理におけるデータフロー例を示す図。
【図14】実施の形態2に係る暗号化データの検索・取得処理におけるデータフロー例を示す図。
【図15】実施の形態3に係る暗号化データの送信・格納処理におけるデータフロー例を示す図。
【図16】実施の形態3に係る暗号化データの検索・取得処理におけるデータフロー例を示す図。
【図17】実施の形態1に係る暗号化データの送信処理における動作例を示すフローチャート図。
【図18】実施の形態1に係る暗号化データの格納処理における動作例を示すフローチャート図。
【図19】実施の形態1に係る暗号化データの検索・取得処理における動作例を示すフローチャート図。
【図20】実施の形態1に係る暗号化データの検索・取得処理における動作例を示すフローチャート図。
【図21】実施の形態1〜3に係るサーバ装置等のハードウェア構成例を示す図。
【発明を実施するための形態】
【0012】
実施の形態1.
本実施の形態及び実施の形態2以降では、秘密情報やトラップドアの導出方法を工夫することで、サーバ装置が最新のトラップドアから過去のトラップドアを導出できるようにし、検索者が送信すべきトラップドアの数を削減して、結果として検索者の計算量・通信量を削減する情報処理システムについて説明する。
【0013】
図1は、サーバ装置に保存されたデータを、複数のユーザがキーワードを指定して検索でき、かつその際にデータ・キーワードをサーバに対して秘匿する秘匿検索システムの構成例である。
図1に示すように、複数の情報処理装置301が、ネットワーク101を介してサーバ装置201とグループ管理装置401に接続している。
各装置の詳細は後述するが、ここで、各装置の概要を説明する。
【0014】
複数の情報処理装置301は、グループを形成し、グループ内でデータを共用することができる。例えば、情報処理装置301を利用するユーザの属性(帰属組織、職務等)により、情報処理装置301のグループの分類が行われる。
同じグループの情報処理装置301は、秘密情報(例えば、暗号鍵)を共有するとともに、例えば、新規ユーザの追加、既存ユーザの脱退等に伴って秘密情報が更新されていく。
秘密情報は、グループ管理装置401によりユーザの追加、脱退等に従って更新され、同じグループに属する情報処理装置301に更新後の秘密情報が配布される。
各情報処理装置301では、グループ管理装置401から新たな秘密情報が配布される度に過去の秘密情報に上書きして保存する。
なお、秘密情報は世代数により管理される(更新により世代数の値が1つ増える)。
【0015】
各情報処理装置301は、生成したデータを所定の暗号化方式により暗号化した後にサーバ装置201に登録する。
各情報処理装置301は、ユーザから暗号データの生成を指示するデータ生成指示を入力した際に、データ生成指示の入力時点の最新世代の秘密情報(生成時秘密情報)を用いて、暗号化データとともに登録するキーワード(平文)(登録対象キーワード)に対して所定の第1の演算を行ってトラップドアを生成し、更にトラップドアに対して第3の演算を行って暗号化キーワードを生成する。暗号化キーワードは、サーバ装置201に対して内容を秘匿化できる。
トラップドアは、後述するデータ検索段階で、データ検索要求の送信元が正当なアクセス権限を有する情報処理装置301(グループに属している情報処理装置301)であることをサーバ装置201において認証可能にするためのデータであり、また、検索対象のキーワードの内容を秘匿化したままサーバ装置201において検索対象のキーワードを特定可能にするためのデータである。
トラップドアは第1演算値データの例であり、データ生成指示入力時に生成されるトラップドアは生成時第1演算値データの例である。
また、暗号化キーワードは、第3演算値データ及び登録暗号化キーワードの例である。
なお、トラップドア、第1の演算、第3の演算の詳細は後述する。
【0016】
そして、登録対象の暗号化データと、当該暗号化データのデータID(Identification)、暗号化キーワード、当該暗号化キーワードの生成に用いた秘密情報(生成時秘密情報)の世代数をサーバ装置201に送信し、サーバ装置201では、これらを関連付けて記憶する。
【0017】
そして、情報処理装置301では、ユーザからサーバ装置201に登録されている暗号化キーワードの検索、更には暗号化キーワードに関連付けられている暗号化データの検索を指示するデータ検索指示を入力した際に、データ検索指示の入力時点で最新世代の秘密情報(検索時秘密情報)を用いて、検索すべきキーワード(平文)(検索対象キーワード)に対して第1の演算を行ってトラップドアを生成する。
サーバ装置201では、キーワード(検索対象キーワード)から生成されたトラップドアから、当該キーワードに対応する暗号化キーワードを検索し、検索した暗号化キーワードに関連付けられている暗号化データを検索することになる。
なお、この時点で生成されるトラップドアは、検索時第1演算値データの例である。
そして、情報処理装置301では、トラップドアをサーバ装置201に送信する。
なお、このトラップドア(検索時第1演算値データ)に対してサーバ装置201において第2の演算を行うことにより、検索時秘密情報に先行する世代の秘密情報で第1の演算を行った場合に得られる歴代のトラップドア(先行第1演算値データ)を算出することができる。
【0018】
サーバ装置201では、受信したトラップドアに対して第2の演算を行い、先行世代の秘密情報で第1の演算を行った場合に得られる先行世代のトラップドア(先行第1演算値データ)を秘密情報の世代を順次遡って生成する。
なお、第2の演算では、第1の演算は行われない。すなわち、第1の演算を行わなくても、先行世代の秘密情報で第1の演算を行った場合に得られる歴代のトラップドア(先行第1演算値データ)を得ることができる。
そして、サーバ装置201では、生成した先行世代のトラップドアの各々に対して第3の演算を行って暗号化キーワードの候補(第3演算値データ)を導出し、いずれかの暗号化キーワード候補と一致する暗号化キーワードを検索し、検索した暗号化キーワードから検索対象の暗号化データを抽出し、抽出した暗号化データを情報処理装置301に送信する。
【0019】
以上が、各装置の概要である。
次に、図2〜図4を用いて、サーバ装置201、情報処理装置301及びグループ管理装置401の構成例を説明する。
【0020】
図2は、本秘匿検索システム(図1)において、データ・キーワードを保持し、検索を行うサーバ装置201の構成例を表すブロック図である。
【0021】
図2において、暗号化キーワード記憶領域211は、暗号化されたキーワードを、対応するデータIDと関連付けて記憶するデータ記憶手段である。
図5は暗号化キーワード記憶領域211が記憶するデータの一例を表す。
図5に示すように、暗号化キーワード記憶領域211は、暗号化キーワードcを、対応する暗号化データのデータIDと、暗号化キーワードの生成に用いられた秘密情報の世代数と関連付けて記憶している。
なお、本実施の形態では、暗号化キーワードが登録データの例となり、登録データの例である暗号化キーワードを記憶している暗号化キーワード記憶領域211は登録データ記憶部の例である。
【0022】
暗号化データ記憶領域212は、暗号化されたデータを、対応するデータIDと関連付けて記憶するデータ記憶手段である。
図6は暗号化データ記憶領域212が記憶するデータの一例を表す。
図6に示すように、暗号化データ記憶領域212は、情報処理装置301からの暗号化データdを、そのデータIDと関連付けて記憶する。
【0023】
トラップドア生成部221は、情報処理装置301から受信したトラップドアで第2の演算を行って、過去の世代のトラップドアを順次生成する手段である。
トラップドア生成部221は、第2演算実行部の例である。
【0024】
比較部222は、トラップドア生成部221が生成した複数のトラップドアで第3の演算を行って暗号化キーワード候補を生成し、生成した暗号化キーワード候補と、暗号化キーワード記憶領域211に記憶されている暗号化キーワードを比較し、情報処理装置301の指定したキーワードに合致する暗号化キーワードを暗号化キーワード記憶領域211から検索する手段である。
比較部222は、データ検索部の例である。
【0025】
通信部231は、情報処理装置301やグループ管理装置401と通信を行う手段である。
通信部231は、受信部の例である。
【0026】
パラメータ記憶領域213は、トラップドア生成部221が過去のトラップドアを生成する際に用いるパラメータを記憶している。
パラメータの詳細は後述する。
【0027】
図3は、本秘匿検索システム(図1)において、サーバ装置201への暗号化データの登録、サーバ装置201からの暗号化データの検索を行う情報処理装置301の構成例を表すブロック図である。
【0028】
図3において、暗号鍵記憶領域311は、データの暗号化・検索に用いる秘密情報を記憶するデータ記憶手段である。
図7は暗号鍵記憶領域311が記憶するデータの一例を表す。
本実施の形態では、秘密情報として暗号鍵を使用する例を説明する。
図7に示すように、暗号鍵記憶領域311は、暗号鍵kを、その世代数とともに記憶している。
暗号鍵記憶領域311は、秘密情報記憶部の例である。
【0029】
トラップドア生成部321は、暗号鍵とキーワードで第1の演算を行って、対応するトラップドアを生成する手段である。
トラップドア生成部321は、第1演算実行部の例である。
【0030】
暗号化キーワード生成部322は、あるキーワードに対応したトラップドアとデータIDで第3の演算を行って、暗号化キーワードを生成する手段である。
暗号化キーワード生成部322は、第3演算実行部の例である。
【0031】
通信部331は、サーバ装置201やグループ管理装置401と通信を行う手段である。
通信部331は、送信部の例である。
【0032】
入力部324は、ユーザからデータ生成指示やデータ検索指示を入力する手段である。
入力部324は、データ生成指示として、サーバ装置201に送信するデータを生成し、生成したデータをデータ暗号化部323で暗号化することを指示するコマンドを入力し、また、暗号化データとともにサーバ装置201に登録するキーワード(登録対象キーワード)を入力し、当該キーワードから暗号化キーワードを生成するよう指示するコマンドを入力する。
また、入力部324は、データ検索指示として、サーバ装置201に登録されている暗号化キーワード及び暗号化データを検索するよう指示するコマンドを入力し、また、暗号化データの検索に用いられるキーワード(検索対象キーワード)を入力し、当該キーワードからトラップドアを生成するよう指示するコマンドを入力する。
入力部324は、指示入力部の例である。
【0033】
データ暗号化部323は、サーバ装置201に登録させるデータの暗号化を行う手段である。
データ暗号化部323は、暗号鍵記憶領域311に記憶されている暗号鍵と異なる情報を用いてデータの暗号化を行う。
【0034】
パラメータ記憶領域312は、トラップドア生成部321が、トラップドアを生成する際に用いるパラメータを記憶している。
パラメータの詳細は後述する。
【0035】
図4は、本秘匿検索システム(図1)において、初期設定や、情報処理装置301が保持する暗号鍵の生成・管理などを行うグループ管理装置401の構成例を表すブロック図である。
【0036】
図4において、暗号鍵記憶領域411は、情報処理装置301が利用する暗号鍵を記憶するデータ記憶手段である。
図8は暗号鍵記憶領域411が記憶するデータの一例を表す。
図8に示すように、暗号鍵記憶領域411は、暗号鍵kを、その世代数とともに記憶している。
【0037】
暗号鍵生成部421は、情報処理装置301が利用する暗号鍵を生成する手段である。
【0038】
通信部431は、サーバ装置201や情報処理装置301と通信を行う手段である。
【0039】
本秘匿検索システムにおける手続きは、(1)グループ管理装置401が初期設定を行う部分、(2)グループ管理装置401が情報処理装置301が保持する暗号鍵の世代更新を行う部分、(3)情報処理装置301が暗号化データをサーバ装置201に送信・格納する部分、(4)情報処理装置301が暗号化データをサーバ装置201から検索・取得する部分、に大別される。以下、それぞれの手続きについて説明する。
【0040】
(1)グループ管理装置の初期設定
グループ管理装置401は、パラメータp1、p2、N、e1、e2、qを以下のように決定し、このうちN、e1、e2、qを公開情報とする。
p1、p2として十分大きな素数を選び、N=p1×p2とする。e1、e2はZN*から、(p1−1)(p2−1)と互いに素となるようランダムに選択する。
qは世代数の最大値であり、世代の更新頻度やシステムの運用期間から適切に設定する。
また、適当な一方向性関数Fを選択し、公開情報とする。
【0041】
次に、暗号鍵生成部421が、情報処理装置301が利用する暗号鍵を生成する。
まず、q世代目の暗号鍵kqを、ZN*からランダムに選択する。そして、それ以前の暗号鍵を、式(1)によって順次計算する。
kj−1=kje1 modN 式(1)
なお、modはモジュロ演算子を表す。
こうして得られた全ての暗号鍵k1〜kqを、暗号鍵記憶領域411に格納する。
最後に、通信部431が、全ての正当な情報処理装置301に、1世代目の暗号鍵k1を送信する。
これは、暗号鍵の安全性が保たれる方式であれば、オフラインで行っても良いし、既存の鍵配送技術を用いてオンラインで行っても良い。
暗号鍵k1を受信した情報処理装置301は、この暗号鍵k1を、世代とともに暗号鍵記憶領域311に格納する。
また、別途、グループ管理装置401は、パラメータe1、e2、q、N及び一方向性関数Fを各情報処理装置301及びサーバ装置201に通知し、各情報処理装置301では、これらの値をパラメータ記憶領域312に記憶し、サーバ装置201では、これらの値をパラメータ記憶領域213に記憶する。
なお、パラメータe1、e2は、e1、e2とも表記する。
【0042】
(2)暗号鍵の世代更新
正当な情報処理装置301のグループに対し、ユーザの加入・脱退があった際に、暗号鍵の世代更新が必要となる場合がある。
この場合、以下のように世代更新を実施する。
i世代目からi+1世代目に更新する場合(ただしi+1≦q)、グループ管理装置401の通信部431が、全ての正当な情報処理装置301に、i+1世代目の暗号鍵ki+1を送信する。
これは、暗号鍵の安全性が保たれる方式であれば、オフラインで行っても良いし、既存の鍵配送技術を用いてオンラインで行っても良い。
ki+1を受信した情報処理装置301は、暗号鍵記憶領域311の内容を、世代i+1と暗号鍵ki+1で置き換える(秘密情報記憶ステップ)。
【0043】
(3)暗号化データの送信・格納
正当な情報処理装置301がデータをサーバ装置201に送信する場合、後に秘匿検索が行えるよう、キーワードとデータを別々に暗号化したものを送信する。
i世代目における具体的な手順を図11のデータフロー図、図17及び図18のフローチャートを参照しながら以下に述べる。
【0044】
まず、情報処理装置301において、ユーザが、データに対し、ユニークなデータIDを割り当てる(idxとする)。データID(idx)は、データ生成指示の一部として入力部324が入力する。さらに、データ暗号化部323がデータの暗号化を行う(S1701)。
ここでは、正当な情報処理装置301だけが復号できるような、既存の暗号技術(グループ暗号技術)を利用する(暗号化データをdxとする)。
次に、入力部324が、暗号化データdxに関連付けられる複数のキーワード(wxjとする)をユーザから入力する(S1702)。
次に、トラップドア生成部321が、複数のキーワード(wxj)に対し、それぞれトラップドアを生成する(S1703)。
具体的には、各キーワードwxjに対し、トラップドアtdxjを以下の式(2)に従って計算する(^はべき乗を表す。以下においても同様)。
tdxj=(ki×wxj^(e1q−i))e2 modN 式(2)
kiは、データ生成指示の入力時点で暗号鍵記憶領域311に保持されている最新世代の暗号鍵を意味する。
パラメータe1、e2、q、Nは、パラメータ記憶領域312に記憶されている。
また、上記の式(2)に従った演算が第1の演算に相当する。
【0045】
その後、暗号化キーワード生成部322が、各トラップドアtdxjに対し、暗号化キーワードcxjを以下の式(3)に従って計算する(S1704)。
cxj=F(idx、tdxj) 式(3)
一方向性関数Fの内容は、パラメータ記憶領域312に記憶されている。
また、上記の式(3)に従った演算が第3の演算に相当する。
【0046】
最後に、通信部331が、世代、データID、暗号化データ、暗号化キーワードの組(i、idx、dx、cx1、cx2、...)をサーバ装置201に送信する(S1705)。
【0047】
サーバ装置201では、通信部231がこれらを受信し(S1801)、暗号化データdxをデータIDと関連付けて暗号化データ記憶領域212に格納し、各暗号化キーワードcxjを世代、データIDと関連付けて暗号化キーワード記憶領域211に格納する(S1802)(登録データ記憶ステップ)。
【0048】
(4)暗号化データの検索・取得
正当な情報処理装置301は、現在もしくは過去の世代にサーバ装置201に格納されたデータに対し、キーワードを指定して秘匿検索を行うことができる。
i世代目における具体的な手順を図12のデータフロー図、図19及び図20のフローチャートを参照しながら以下に述べる。
【0049】
まず、情報処理装置301において、入力部324が、データ検索指示として、ユーザから検索対象のキーワードwを入力する(S1901)(指示入力ステップ)。
次に、トラップドア生成部321が、検索したいキーワードwに対応するトラップドアを生成する(S1902)(第1演算実行ステップ)。
具体的には、キーワードwに対し、トラップドアtdi(i世代目で生成されたトラップドア)を以下の式(4)に従って計算する。
tdi=(ki×w^(e1q−i))e2 modN 式(4)
kiは、データ検索指示の入力時点で暗号鍵記憶領域311に保持されている最新世代の暗号鍵を意味する。
また、上記の式(4)に従った演算は第1の演算に相当する。
【0050】
次に、通信部331が、世代、トラップドアの組(i、tdi)をデータ検索要求としてサーバ装置201に送信する(S1903)(送信ステップ)。
【0051】
サーバ装置201では、通信部231がこれらを受信し(S2001)(受信ステップ)、トラップドア生成部221が、過去全ての世代に対応するトラップドアtd1〜tdi−1を以下の式(5)に従って世代を1つずつ遡りながら順次計算する(S2002)(第2演算実行ステップ)。
tdj−1=tdje1 modN 式(5)
なお、上記の式(5)に従った演算は第2の演算に相当する。
【0052】
その後、比較部222が、暗号化キーワード記憶領域211を参照し、トラップドアに対応する暗号化キーワードが存在するかを確認する(S2003)(データ検索ステップ)。
具体的には、暗号化キーワード記憶領域211の各行の世代、データID、暗号化キーワードの組(j、id、c)に対し、以下の式(6)の等式が成立するかを確認する。
c=F(id、tdj) 式(6)
つまり、比較部222は、式(6)に従って、暗号化キーワード記憶領域211に示されているデータIDと前述のS2002で生成されたトラップドアに対して一方向性関数Fを適用して暗号化キーワード候補を算出し、算出した暗号化キーワード候補が、暗号化キーワード記憶領域211の対応する行の暗号化キーワードに一致するか否かの照合を行う。
なお、一方向性関数Fの適用対象となるのは、世代数が一致しているデータIDとトラップドアである(暗号化キーワード記憶領域211に示されている世代数jとトラップドアtdjの世代数jが一致している)。
なお、上記の式(6)に従った演算は第3の演算に相当する。
【0053】
上記の式(6)が成立した場合、すなわち、暗号化キーワード候補が、暗号化キーワード記憶領域211に示されている暗号化キーワードに一致する場合に、当該暗号化キーワードは、ユーザにより指定されたキーワードwに対応する暗号化キーワードとなるため、比較部222は、暗号化キーワード記憶領域211から対応するデータID(id)を抽出し(S2004)、抽出したデータID(id)をキーに暗号化データ記憶領域212を検索して暗号化データdを取得し(S2005)、通信部231が情報処理装置301に、キーワードwに対応する暗号化データdを送信する(S2006)。
なお、式(6)の等式が複数行において成立し、複数の暗号化データが抽出された場合は暗号化データの全て送信するようにしても、一部を送信するようにしても良い。
一方、上記の式(6)の等式が暗号化キーワード記憶領域211のどの行においても不成立であった場合は、情報処理装置301にその旨を送信する。
なお、存在しないキーワードを指定した場合の他、データ検索の要求元が正当なアクセス権限を有しない場合(正しい暗号鍵を有しない又は正しいパラメータを有しないので、適切なトラップドアを作成できない)に、上記の式(6)の等式が暗号化キーワード記憶領域211のどの行においても不成立となると考えられる。
【0054】
暗号化データdを受信した情報処理装置301では、例えば、データ暗号化部323で暗号化データdの復号を行う。
ここでは、正当な情報処理装置301だけが復号できるような、既存の暗号技術(グループ暗号技術)を利用する。
【0055】
なお、サーバ装置201が最新のトラップドアから生成した過去のトラップドアと、情報処理装置301が過去の暗号鍵から生成したトラップドアが一致し、本秘匿検索システムが正常に機能することは、例えば以下のように確認される。
【0056】
サーバ装置201がi世代目のトラップドアtdiから生成した、i−1世代目のトラップドアtdi−1は、
tdi−1=tdie1 modN
=(ki×w^(e1q−i))e1e2 modN
=(kie1×w^(e1q−(i−1)))e2 modN
=(ki−1×w^(e1q−(i−1)))e2 modN
となり、これは情報処理装置301がi−1世代目に生成するトラップドアと一致する。
【0057】
また、システムの安全性、すなわちサーバ装置201がトラップドアや暗号化キーワードからキーワードを類推できないことや、ある世代の暗号鍵を持つ情報処理装置301が未来の世代の暗号鍵を類推できないことは、RSA(登録商標)暗号の安全性に基づいている。
【0058】
以上によって、情報処理装置301がデータ・キーワードをサーバ装置201に対して秘匿したまま検索できる秘匿検索システムが実現できる。
サーバ装置201が、受信した最新のトラップドアから過去のトラップドアを生成できるため、検索時に情報処理装置301が送信すべきトラップドアが削減でき、情報処理装置301の計算量や通信量の削減を達成できる。
【0059】
なお、本実施の形態では、検索結果として暗号化データを返すために暗号化データ記憶領域212を利用しているが、暗号化データを返す必要がない場合、サーバ装置201が暗号化データ記憶領域212を持たなくても良い。
例えば、暗号化データは別の装置が保持し、そこへのアクセスを可能とするためにデータIDだけを返すようにしても良い。
【0060】
また、本実施の形態では、各処理において世代数を送信しているが、システム全体で現在の世代数の同期が取れている場合は、世代数の送信は不要である。
また、システム全体で現在の世代数の同期が取れている場合にも世代数の送信を行って、サーバ装置201が、S1801やS2001で、現在の世代に対応するデータを受信したときのみ格納・検索処理を続行し、そうでない場合は処理を中断するようにしても良い。
【0061】
また、本実施の形態では、異なるデータに関連付けられた同一のキーワードが別の暗号化キーワードとなるようにするため、暗号化キーワードをc=F(id、td)のように生成しているが、この区別をつける必要がない場合、本処理を省略し、トラップドアを暗号化キーワードとして使うことも可能である。この場合、検索時にサーバ装置201がidごとにFを適用する必要がなくなり、検索を高速化することができる。
なお、このような運用については、実施の形態3で詳述する。
【0062】
また、本実施の形態では、グループ管理装置401が初期設定の際に、全ての暗号鍵k1〜kqを生成し、暗号鍵記憶領域411に格納しているが、Nの素因数分解p1×p2を知るグループ管理装置401はkjからkj+1を導出可能であるため、暗号鍵記憶領域411には最新の暗号鍵のみを格納し、世代更新のたびに次の暗号鍵を導出するようにしても良い。
【0063】
また、本実施の形態では、データに複数のキーワードが関連付けられている場合、各キーワードに対し暗号化キーワードを送信し、これらを暗号化キーワード記憶領域211の複数行に格納しているが、複数キーワードを効率的に処理するBloom Filterなどの既存技術と組み合わせて、複数キーワードを1行でまとめて処理できるようにしても良い。
【0064】
実施の形態2.
本実施の形態では、秘匿検索システム(図1)において、情報処理装置301が暗号鍵とキーワードからトラップドアを生成する際、双線形写像を利用する方式について述べる。なお、双線形写像とは、E(ga、hb)≡E(g、h)abを満たす関数Eのことであり、例えばWeilペアリングやTateペアリングなどが利用できる。
【0065】
サーバ装置201、情報処理装置301、グループ管理装置401の構成例については、実施の形態1にて記述したものと同一であるため、説明は省略する。
【0066】
本実施の形態においても、本秘匿検索システムにおける手続きは、実施の形態1にて記述した四つの手続きに大別される。以下、それぞれの手続きについて説明する。
【0067】
(1)グループ管理装置の初期設定
グループ管理装置401は、パラメータp1、p2、N、e1、qを以下のように決定し、このうちN、e1、qを公開情報とする。
p1、p2として十分大きな素数を選び、N=p1×p2とする。e1はZN*から、(p1−1)(p2−1)と互いに素となるようランダムに選択する。
qは世代数の最大値であり、世代の更新頻度やシステムの運用期間から適切に設定する。
また、適当な一方向性関数F、および双線形写像Eを選択し、公開情報とする。
【0068】
次に、暗号鍵生成部421が、情報処理装置301が利用する暗号鍵を生成する。
まず、q世代目の暗号鍵kqを、ZN*からランダムに選択する。そして、それ以前の暗号鍵を、式(7)によって順次計算する。
kj−1=kje1 modN 式(7)
こうして得られた全ての暗号鍵k1〜kqを、暗号鍵記憶領域411に格納する。
最後に、通信部431が、全ての正当な情報処理装置301に、1世代目の暗号鍵k1を送信する。
これは、暗号鍵の安全性が保たれる方式であれば、オフラインで行っても良いし、既存の鍵配送技術を用いてオンラインで行っても良い。
k1を受信した情報処理装置301は、この暗号鍵k1を、世代とともに暗号鍵記憶領域311に格納する。
また、実施の形態1と同様に、グループ管理装置401は、パラメータe1、q、N、一方向性関数F及び双線形写像Eを各情報処理装置301及びサーバ装置201に通知し、各情報処理装置301では、これらの値をパラメータ記憶領域312に記憶し、サーバ装置201では、これらの値をパラメータ記憶領域213に記憶する。
【0069】
(2)暗号鍵の世代更新
実施の形態1にて記述したものと同一であるため、説明は省略する。
【0070】
(3)暗号化データの送信・格納
正当な情報処理装置301がデータをサーバ装置201に送信する場合、後に秘匿検索が行えるよう、キーワードとデータを別々に暗号化したものを送信する。
i世代目における具体的な手順を図13のデータフロー図を参照して以下に述べる。
なお、フローチャートは、図17及び図18に示したとおりである。
【0071】
まず、情報処理装置301において、ユーザが、データに対し、ユニークなデータIDを割り当てる(idxとする)。データID(idx)は、データ生成指示の一部として入力部324が入力する。さらに、データ暗号化部323がデータの暗号化を行う(S1701)。
ここでは、正当な情報処理装置301だけが復号できるような、既存の暗号技術(グループ暗号技術)を利用する(暗号化データをdxとする)。
次に、入力部324が、暗号化データdxに関連付けられる複数のキーワード(wxjとする)をユーザから入力する(S1702)。
次に、トラップドア生成部321が、複数のキーワード(wxj)に対し、それぞれトラップドアを生成する(S1703)。
具体的には、各キーワードwxjに対し、トラップドアtdxjを以下の式(8)に従って計算する。
tdxj=E(ki、wxj) 式(8)
kiは、データ生成指示の入力時点で暗号鍵記憶領域311に保持されている最新世代の暗号鍵を意味する。
上記の式(8)に従った演算が第1の演算に相当する。
【0072】
その後、暗号化キーワード生成部322が、各トラップドアtdxjに対し、暗号化キーワードcxjを以下の式(3)に従って計算する(S1704)。
cxj=F(idx、tdxj) 式(3)
上記の式(3)に従った演算が第3の演算に相当する。
【0073】
最後に、通信部331が、世代、データID、暗号化データ、暗号化キーワードの組(i、idx、dx、cx1、cx2、...)をサーバ装置201に送信する(S1705)。
【0074】
サーバ装置201では、通信部231がこれらを受信し(S1801)、暗号化データdxをデータIDと関連付けて暗号化データ記憶領域212に格納し、各暗号化キーワードcxjを世代、データIDと関連付けて暗号化キーワード記憶領域211に格納する(S1802)(登録データ記憶ステップ)。
【0075】
(4)暗号化データの検索・取得
正当な情報処理装置301は、現在もしくは過去の世代にサーバ装置201に格納されたデータに対し、キーワードを指定して秘匿検索を行うことができる。
i世代目における具体的な手順を図14のデータフロー図を参照しながら以下に述べる。
なお、フローチャートは、図19及び図20に示すとおりである。
【0076】
情報処理装置301において、入力部324が、データ検索指示として、ユーザから検索対象のキーワードwを入力する(S1901)(指示入力ステップ)。
次に、トラップドア生成部321が、検索したいキーワードwに対応するトラップドアを生成する(S1902)(第1演算実行ステップ)。
具体的には、キーワードwに対し、トラップドアtdi(i世代目で生成されたトラップドア)を以下の式(9)に従って計算する。
tdi=E(ki、w) 式(9)
kiは、データ検索指示の入力時点で暗号鍵記憶領域311に保持されている最新世代の暗号鍵を意味する。
また、上記の式(9)に従った演算は第1の演算に相当する。
【0077】
サーバ装置201では、通信部231がこれらを受信し(S2001)(受信ステップ)、トラップドア生成部221が、過去全ての世代に対応するトラップドアtd1〜tdi−1を以下の式(5)に従って世代を1つずつ遡りながら順次計算する(S2002)(第2演算実行ステップ)。
tdj−1=tdje1 modN 式(5)
なお、上記の式(5)に従った演算は第2の演算に相当する。
【0078】
その後、比較部222が、暗号化キーワード記憶領域211を参照し、トラップドアに対応する暗号化キーワードが存在するかを確認する(S2003)(データ検索ステップ)。
具体的には、暗号化キーワード記憶領域211の各行の世代、データID、暗号化キーワードの組(j、id、c)に対し、以下の式(6)の等式が成立するかを確認する。
c=F(id、tdj) 式(6)
つまり、比較部222は、式(6)に従って、暗号化キーワード記憶領域211に示されているデータIDと前述のS2002で生成されたトラップドアに対して一方向性関数Fを適用して暗号化キーワード候補を算出し、算出した暗号化キーワード候補が、暗号化キーワード記憶領域211の対応する行の暗号化キーワードに一致するか否かの照合を行う。
なお、一方向性関数Fの適用対象となるのは、世代数が一致しているデータIDとトラップドアである(暗号化キーワード記憶領域211に示されている世代数jとトラップドアtdjの世代数jが一致している)。
なお、上記の式(6)に従った演算は第3の演算に相当する。
【0079】
上記の式(6)が成立した場合、すなわち、暗号化キーワード候補が、暗号化キーワード記憶領域211に示されている暗号化キーワードに一致する場合に、当該暗号化キーワードは、ユーザにより指定されたキーワードwに対応する暗号化キーワードとなるため、比較部222は、暗号化キーワード記憶領域211から対応するデータID(id)を抽出し(S2004)抽出したデータID(id)をキーに暗号化データ記憶領域212を検索して暗号化データdを取得し(S2005)、通信部231が情報処理装置301に、キーワードwに対応する暗号化データdを送信する(S2006)。
なお、式(6)の等式が複数行において成立し、複数の暗号化データが抽出された場合は暗号化データの全て送信するようにしても、一部を送信するようにしても良い。
一方、上記の式(6)の等式が暗号化キーワード記憶領域211のどの行においても不成立であった場合は、情報処理装置301にその旨を送信する。
なお、存在しないキーワードを指定した場合の他、データ検索の要求元が正当なアクセス権限を有しない場合(正しい暗号鍵を有しない又は正しいパラメータを有しないので、適切なトラップドアを作成できない)に、上記の式(6)の等式が暗号化キーワード記憶領域211のどの行においても不成立となると考えられる。
【0080】
暗号化データdを受信した情報処理装置301では、例えば、データ暗号化部323で暗号化データdの復号を行う。
ここでは、正当な情報処理装置301だけが復号できるような、既存の暗号技術(グループ暗号技術)を利用する。
【0081】
なお、サーバ装置201が最新のトラップドアから生成した過去のトラップドアと、情報処理装置301が過去の暗号鍵から生成したトラップドアが一致し、本秘匿検索システムが正常に機能することは、例えば以下のように確認される。
【0082】
サーバ装置201がi世代目のトラップドアtdiから生成した、i−1世代目のトラップドアtdi−1は、
tdi−1=tdie1 modN
=E(ki、w)e1 modN
=E(kie1、w) modN
=E(ki−1、w) modN
となり、これは情報処理装置301がi−1世代目に生成するトラップドアと一致する。
【0083】
また、システムの安全性、すなわちサーバ装置201がトラップドアや暗号化キーワードからキーワードを類推できないことや、ある世代の暗号鍵を持つ情報処理装置301が未来の世代の暗号鍵を類推できないことは、RSA(登録商標)暗号、および双線形写像の安全性に基づいている。
【0084】
以上によって、情報処理装置301がデータ・キーワードをサーバ装置201に対して秘匿したまま検索できる秘匿検索システムが実現できる。
サーバ装置201が、受信した最新のトラップドアから過去のトラップドアを生成できるため、検索時に情報処理装置301が送信すべきトラップドアが削減でき、情報処理装置301の計算量や通信量の削減を達成できる。
【0085】
さらに、本実施の形態においては、実施の形態1とは異なり、情報処理装置301のトラップドア生成部321がキーワードからトラップドアを生成する際に、世代数の最大値qを利用する必要がない。
したがって、qの値を大きく設定しても、情報処理装置301の計算量には影響しないという利点がある。
また、実施の形態1でも述べたように、グループ管理装置401はkjからkj+1を導出可能であるため、初期設定にてk1のみを生成し、世代更新のたびに次の暗号鍵を導出することで、世代数の最大値という制限を設けることなく秘匿検索システムを運用することが可能となる。
【0086】
なお、本実施の形態では、検索結果として暗号化データを返すために暗号化データ記憶領域212を利用しているが、暗号化データを返す必要がない場合、サーバ装置201が暗号化データ記憶領域212を持たなくても良い。
例えば、暗号化データは別の装置が保持し、そこへのアクセスを可能とするためにデータIDだけを返すようにしても良い。
【0087】
また、本実施の形態では、各処理において世代数を送信しているが、システム全体で現在の世代数の同期が取れている場合は、世代数の送信は不要である。
また、システム全体で現在の世代数の同期が取れている場合にも世代数の送信を行って、サーバ装置201が、S1801やS2001で、現在の世代に対応するデータを受信したときのみ格納・検索処理を続行し、そうでない場合は処理を中断するようにしても良い。
【0088】
また、本実施の形態では、異なるデータに関連付けられた同一のキーワードが別の暗号化キーワードとなるようにするため、暗号化キーワードをc=F(id、td)のように生成しているが、この区別をつける必要がない場合、本処理を省略し、トラップドアを暗号化キーワードとして使うことも可能である。この場合、検索時にサーバ装置201がidごとにFを適用する必要がなくなり、検索を高速化することができる。
なお、このような運用については、実施の形態3で詳述する。
【0089】
また、本実施の形態では、データに複数のキーワードが関連付けられている場合、各キーワードに対し暗号化キーワードを送信し、これらを暗号化キーワード記憶領域211の複数行に格納しているが、複数キーワードを効率的に処理するBloom Filterなどの既存技術と組み合わせて、複数キーワードを1行でまとめて処理できるようにしても良い。
【0090】
実施の形態3.
本実施の形態では、トラップドアを暗号化キーワードとして使う例を説明する。
【0091】
図9は、本実施の形態に係る情報処理装置301の構成例を示す。
本実施の形態では、トラップドアを暗号化キーワードとして使用するため、図3の構成に含まれていた暗号化キーワード生成部322を省略している。
他の構成要素は、図3に示したものと同様であり、説明を省略する。
なお、本実施の形態においても、サーバ装置201及びグループ管理装置401は、図2及び図4に示した構成のとおりである。
なお、サーバ装置201において、暗号化キーワード記憶領域211では、図10に示すように、暗号化キーワードとしてトラップドアtdを用い、トラップドアtdと、対応する暗号化データのデータIDと、トラップドアの生成に用いられた暗号鍵の世代数とを関連付けて記憶している。
【0092】
また、本実施の形態においても、本秘匿検索システムにおける手続きは、実施の形態1にて記述した四つの手続きに大別される。
なお、(1)グループ管理装置の初期設定及び(2)暗号鍵の世代更新は、実施の形態1及び実施の形態2に示したものと同様であるため、説明を省略し、以下では、(3)暗号化データの送信・格納及び(4)暗号化データの検索・取得を説明する。
【0093】
(3)暗号化データの送信・格納
正当な情報処理装置301がデータをサーバ装置201に送信する場合、後に秘匿検索が行えるよう、キーワードとデータを別々に暗号化したものを送信する。
i世代目における具体的な手順は図15のデータフロー図に示すとおりである。
なお、図15では、実施の形態1に示したべき乗剰余演算(式(2))を利用してトラップドアを生成する例を示しているが、実施の形態2に示した式(8)を用いることで、実施の形態2に示した双線形写像を利用することも可能である。
なお、本実施の形態では、図17のフローチャートからS1704の動作を省略し、S1705で送信する暗号化キーワードをトラップドアとする。図17の他の動作は、実施の形態1及び実施の形態2において説明したとおりである。
また、図18のフローチャートにおいて、S1801で受信する暗号化キーワード及びS1802で記憶する暗号化キーワードをトラップドアとする。
【0094】
(4)暗号化データの検索・取得
正当な情報処理装置301は、現在もしくは過去の世代にサーバ装置201に格納されたデータに対し、キーワードを指定して秘匿検索を行うことができる。
i世代目における具体的な手順は図16のデータフロー図に示すとおりである。
なお、図16では、情報処理装置301において、実施の形態1に示したべき乗剰余演算(式(4))を利用してトラップドアを生成する例を示しているが、実施の形態2に示した式(9)を用いることで、実施の形態2に示した双線形写像を利用することも可能である。
なお、情報処理装置301の動作は、図19のフローチャートに示すとおりである。
一方、サーバ装置201の動作では、図20のフローチャートのS2003の処理に代えて、S2002で導出された過去の世代のトラップドアのうちのいずれかと同じトラップドアが示されている行を暗号化キーワード記憶領域211(図10)において検索し、該当する行に示されているデータIDを抽出し(S2004)、抽出したデータIDをキーに暗号化データ記憶領域212を検索して暗号化データdを取得し(S2005)、通信部231が情報処理装置301に、キーワードwに対応する暗号化データdを送信する(S2006)。
その他の動作は、実施の形態1及び実施の形態2で説明したものと同様である。
【0095】
このように、本実施の形態によれば、トラップドアを暗号化キーワードとして使用することにより、データ生成時に情報処理装置301において一方向性関数Fを適用する必要がなくなり、また、データ検索時にサーバ装置201が一方向性関数Fを適用する必要がなくなり、情報処理装置301及びサーバ装置201における処理を高速化でき、また、計算機リソースを有効に活用することができる。
【0096】
以上の実施の形態1〜3では、サーバに保存されたデータを、ユーザがキーワードを指定して検索でき、かつその際にデータ・キーワードをサーバに対して秘匿する秘匿検索システムで、検索の際に利用する秘密情報を世代ごとに更新するシステムにおいて、データ保存・検索時にユーザがサーバに送信するトラップドアを、サーバが最新のトラップドアから過去のトラップドアを導出できるようなものにすることで、検索時にユーザが送信すべきトラップドアの数を削減し、結果として計算量や通信量を削減する方式を説明した。
【0097】
また、実施の形態1及び実施の形態3では、ユーザが秘密情報とキーワードからトラップドアを生成する際に、べき乗剰余演算を利用する方式を説明した。
【0098】
また、実施の形態2及び実施の形態3では、ユーザが秘密情報とキーワードからトラップドアを生成する際に、双線形写像を利用する方式を説明した。
【0099】
最後に、実施の形態1〜3に示したサーバ装置201、情報処理装置301及びグループ管理装置401(以下、三者をまとめてサーバ装置201等と表記する)のハードウェア構成例について説明する。
図21は、実施の形態1〜3に示すサーバ装置201等のハードウェア資源の一例を示す図である。
なお、図21の構成は、あくまでもサーバ装置201等のハードウェア構成の一例を示すものであり、サーバ装置201等のハードウェア構成は図21に記載の構成に限らず、他の構成であってもよい。
【0100】
図21において、サーバ装置201等は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜3で説明した「〜記憶領域」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0101】
通信ボード915は、図1に示すように、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていても構わない。
【0102】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0103】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0104】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
サーバ装置201等の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0105】
上記プログラム群923には、実施の形態1〜3の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
【0106】
ファイル群924には、実施の形態1〜3の説明において、「〜の判断」、「〜の判定」、「〜の計算」、「〜の演算」、「〜の生成」、「〜の比較」、「〜の照合」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0107】
また、実施の形態1〜3の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」、として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1〜3の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜3の「〜部」の手順や方法をコンピュータに実行させるものである。
【0108】
このように、実施の形態1〜3に示すサーバ装置201等は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【0109】
101 ネットワーク、201 サーバ装置、211 暗号化キーワード記憶領域、212 暗号化データ記憶領域、213 パラメータ記憶領域、221 トラップドア生成部、222 比較部、231 通信部、301 情報処理装置、311 暗号鍵記憶領域、312 パラメータ記憶領域、321 トラップドア生成部、322 暗号化キーワード生成部、323 データ暗号化部、324 入力部、331 通信部、401 グループ管理装置、411 暗号鍵記憶領域、421 暗号鍵生成部、431 通信部。
【技術分野】
【0001】
本発明は、複数の情報処理装置とサーバ装置とが含まれる情報処理システムに関し、特に、情報処理装置が、検索のためのキーワードをサーバ装置に秘匿した状態でサーバ装置に蓄積されているデータを検索する秘匿検索システムに関する。
【背景技術】
【0002】
サーバ装置(以下、単にサーバともいう)に保存されたデータを、検索者がキーワードを指定して検索でき、かつその際にデータ・キーワードをサーバに対して秘匿する秘匿検索システムは、機密データ管理のアウトソーシングや、メールサーバにおける暗号化メールのフィルタリングへの応用が期待されており、種々の安全性要件を達成するための技術や、サーバや検索者のストレージ・通信オーバーヘッド・演算オーバーヘッドを削減するための様々な技術が提案されている。
さらに、複数のユーザによる検索を可能とする場合には、ユーザの加入・脱退に柔軟に対処するための技術が必要とされる。
【0003】
非特許文献1では、ユーザが保持する秘密情報をハッシュチェーンで管理し、ユーザの加入・脱退に伴って世代が更新されるたびに新しい秘密情報を正当ユーザに配布し、正当ユーザは最新の秘密情報から過去の秘密情報を導出できるようにすることで、ユーザに必要なストレージを抑えつつ、世代更新に対応した秘匿検索を達成する方式が開示されている。
【0004】
また、特許文献1では、データ中継サーバを利用することで、検索内容のサーバに対する秘匿を実現する秘匿検索方式が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2002−297606号公報
【非特許文献】
【0006】
【非特許文献1】H.Park、 J.W.Byun、 and D.H.Lee、 “Secure Index Search for Groups、” TrustBus 2005、 LNCS 3592、 pp.128−140、 2005.
【発明の概要】
【発明が解決しようとする課題】
【0007】
世代更新を伴う秘匿検索システムでは、正当ユーザが、過去の世代で登録された情報を検索できるようにしたいという要求がある。
これを実現するために、非特許文献1にて開示されている方式では、検索者が最新の秘密情報から過去全ての世代の秘密情報を導出し、これらとキーワードからトラップドア(検索用の情報)を世代数分計算し、全てのトラップドアをサーバに送信し、トラップドアを受け取ったサーバが検索・取得処理を行っていた。
このため、検索者にとって計算量・通信量が世代数に比例して増大するという課題がある。
【0008】
本発明は上記の課題を解決することを主な目的の一つとしており、検索者が用いる情報処理装置からサーバに送信すべきトラップドアの数を削減して、結果として検索者が用いる情報処理装置における計算量、情報処理装置とサーバ間の通信量を削減することを主な目的とする。
【課題を解決するための手段】
【0009】
本発明に係る情報処理システムは、
複数の情報処理装置と、サーバ装置とを有する情報処理システムであって、
各情報処理装置は、
他の情報処理装置との間で共有され更新されていく秘密情報を更新の度に記憶する秘密情報記憶部と、
データの生成を指示するデータ生成指示と、データの検索を指示するデータ検索指示とを入力する指示入力部と、
前記データ生成指示の入力があった際に、前記データ生成指示の入力時点で最新の秘密情報である生成時秘密情報で第1の演算を行って、生成時第1演算値データを生成し、前記データ検索指示の入力があった際に、前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行部と、
前記第1演算実行部により生成された検索時第1演算値データを前記サーバ装置に送信する送信部とを有し、
前記サーバ装置は、
情報処理装置により生成された生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを登録データとして記憶する登録データ記憶部と、
情報処理装置から送信された検索時第1演算値データを受信する受信部と、
前記受信部により受信された検索時第1演算値データで第2の演算を行って、先行第1演算値データを先行世代の各々に対して生成する第2演算実行部と、
検索時第1演算値データ及び前記第2演算実行部により生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶部内の登録データとを用いてデータの検索を行うデータ検索部とを有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、情報処理装置において、サーバ装置における第2の演算により先行第1演算値データの各々を導出可能な検索時第1演算値データを生成することで、情報処理装置からサーバ装置に送信するデータを検索時第1演算値データに限定することができ、情報処理装置において先行第1演算値データの各々を生成する必要がないので情報処理装置における計算量を抑えることができ、また、情報処理装置とサーバ装置間の通信量を削減することができる。
【図面の簡単な説明】
【0011】
【図1】実施の形態1に係るシステム構成例を示す図。
【図2】実施の形態1に係るサーバ装置の構成例を示す図。
【図3】実施の形態1に係る情報処理装置の構成例を示す図。
【図4】実施の形態1に係るグループ管理装置の構成例を示す図。
【図5】実施の形態1に係る暗号化キーワード記憶領域における記憶内容の例を示す図。
【図6】実施の形態1に係る暗号化データ記憶領域における記憶内容の例を示す図。
【図7】実施の形態1に係る暗号鍵記憶領域における記憶内容の例を示す図。
【図8】実施の形態1に係る暗号鍵記憶領域における記憶内容の例を示す図。
【図9】実施の形態3に係る情報処理装置の構成例を示す図。
【図10】実施の形態3に係る暗号化キーワード記憶領域における記憶内容の例を示す図。
【図11】実施の形態1に係る暗号化データの送信・格納処理におけるデータフロー例を示す図。
【図12】実施の形態1に係る暗号化データの検索・取得処理におけるデータフロー例を示す図。
【図13】実施の形態2に係る暗号化データの送信・格納処理におけるデータフロー例を示す図。
【図14】実施の形態2に係る暗号化データの検索・取得処理におけるデータフロー例を示す図。
【図15】実施の形態3に係る暗号化データの送信・格納処理におけるデータフロー例を示す図。
【図16】実施の形態3に係る暗号化データの検索・取得処理におけるデータフロー例を示す図。
【図17】実施の形態1に係る暗号化データの送信処理における動作例を示すフローチャート図。
【図18】実施の形態1に係る暗号化データの格納処理における動作例を示すフローチャート図。
【図19】実施の形態1に係る暗号化データの検索・取得処理における動作例を示すフローチャート図。
【図20】実施の形態1に係る暗号化データの検索・取得処理における動作例を示すフローチャート図。
【図21】実施の形態1〜3に係るサーバ装置等のハードウェア構成例を示す図。
【発明を実施するための形態】
【0012】
実施の形態1.
本実施の形態及び実施の形態2以降では、秘密情報やトラップドアの導出方法を工夫することで、サーバ装置が最新のトラップドアから過去のトラップドアを導出できるようにし、検索者が送信すべきトラップドアの数を削減して、結果として検索者の計算量・通信量を削減する情報処理システムについて説明する。
【0013】
図1は、サーバ装置に保存されたデータを、複数のユーザがキーワードを指定して検索でき、かつその際にデータ・キーワードをサーバに対して秘匿する秘匿検索システムの構成例である。
図1に示すように、複数の情報処理装置301が、ネットワーク101を介してサーバ装置201とグループ管理装置401に接続している。
各装置の詳細は後述するが、ここで、各装置の概要を説明する。
【0014】
複数の情報処理装置301は、グループを形成し、グループ内でデータを共用することができる。例えば、情報処理装置301を利用するユーザの属性(帰属組織、職務等)により、情報処理装置301のグループの分類が行われる。
同じグループの情報処理装置301は、秘密情報(例えば、暗号鍵)を共有するとともに、例えば、新規ユーザの追加、既存ユーザの脱退等に伴って秘密情報が更新されていく。
秘密情報は、グループ管理装置401によりユーザの追加、脱退等に従って更新され、同じグループに属する情報処理装置301に更新後の秘密情報が配布される。
各情報処理装置301では、グループ管理装置401から新たな秘密情報が配布される度に過去の秘密情報に上書きして保存する。
なお、秘密情報は世代数により管理される(更新により世代数の値が1つ増える)。
【0015】
各情報処理装置301は、生成したデータを所定の暗号化方式により暗号化した後にサーバ装置201に登録する。
各情報処理装置301は、ユーザから暗号データの生成を指示するデータ生成指示を入力した際に、データ生成指示の入力時点の最新世代の秘密情報(生成時秘密情報)を用いて、暗号化データとともに登録するキーワード(平文)(登録対象キーワード)に対して所定の第1の演算を行ってトラップドアを生成し、更にトラップドアに対して第3の演算を行って暗号化キーワードを生成する。暗号化キーワードは、サーバ装置201に対して内容を秘匿化できる。
トラップドアは、後述するデータ検索段階で、データ検索要求の送信元が正当なアクセス権限を有する情報処理装置301(グループに属している情報処理装置301)であることをサーバ装置201において認証可能にするためのデータであり、また、検索対象のキーワードの内容を秘匿化したままサーバ装置201において検索対象のキーワードを特定可能にするためのデータである。
トラップドアは第1演算値データの例であり、データ生成指示入力時に生成されるトラップドアは生成時第1演算値データの例である。
また、暗号化キーワードは、第3演算値データ及び登録暗号化キーワードの例である。
なお、トラップドア、第1の演算、第3の演算の詳細は後述する。
【0016】
そして、登録対象の暗号化データと、当該暗号化データのデータID(Identification)、暗号化キーワード、当該暗号化キーワードの生成に用いた秘密情報(生成時秘密情報)の世代数をサーバ装置201に送信し、サーバ装置201では、これらを関連付けて記憶する。
【0017】
そして、情報処理装置301では、ユーザからサーバ装置201に登録されている暗号化キーワードの検索、更には暗号化キーワードに関連付けられている暗号化データの検索を指示するデータ検索指示を入力した際に、データ検索指示の入力時点で最新世代の秘密情報(検索時秘密情報)を用いて、検索すべきキーワード(平文)(検索対象キーワード)に対して第1の演算を行ってトラップドアを生成する。
サーバ装置201では、キーワード(検索対象キーワード)から生成されたトラップドアから、当該キーワードに対応する暗号化キーワードを検索し、検索した暗号化キーワードに関連付けられている暗号化データを検索することになる。
なお、この時点で生成されるトラップドアは、検索時第1演算値データの例である。
そして、情報処理装置301では、トラップドアをサーバ装置201に送信する。
なお、このトラップドア(検索時第1演算値データ)に対してサーバ装置201において第2の演算を行うことにより、検索時秘密情報に先行する世代の秘密情報で第1の演算を行った場合に得られる歴代のトラップドア(先行第1演算値データ)を算出することができる。
【0018】
サーバ装置201では、受信したトラップドアに対して第2の演算を行い、先行世代の秘密情報で第1の演算を行った場合に得られる先行世代のトラップドア(先行第1演算値データ)を秘密情報の世代を順次遡って生成する。
なお、第2の演算では、第1の演算は行われない。すなわち、第1の演算を行わなくても、先行世代の秘密情報で第1の演算を行った場合に得られる歴代のトラップドア(先行第1演算値データ)を得ることができる。
そして、サーバ装置201では、生成した先行世代のトラップドアの各々に対して第3の演算を行って暗号化キーワードの候補(第3演算値データ)を導出し、いずれかの暗号化キーワード候補と一致する暗号化キーワードを検索し、検索した暗号化キーワードから検索対象の暗号化データを抽出し、抽出した暗号化データを情報処理装置301に送信する。
【0019】
以上が、各装置の概要である。
次に、図2〜図4を用いて、サーバ装置201、情報処理装置301及びグループ管理装置401の構成例を説明する。
【0020】
図2は、本秘匿検索システム(図1)において、データ・キーワードを保持し、検索を行うサーバ装置201の構成例を表すブロック図である。
【0021】
図2において、暗号化キーワード記憶領域211は、暗号化されたキーワードを、対応するデータIDと関連付けて記憶するデータ記憶手段である。
図5は暗号化キーワード記憶領域211が記憶するデータの一例を表す。
図5に示すように、暗号化キーワード記憶領域211は、暗号化キーワードcを、対応する暗号化データのデータIDと、暗号化キーワードの生成に用いられた秘密情報の世代数と関連付けて記憶している。
なお、本実施の形態では、暗号化キーワードが登録データの例となり、登録データの例である暗号化キーワードを記憶している暗号化キーワード記憶領域211は登録データ記憶部の例である。
【0022】
暗号化データ記憶領域212は、暗号化されたデータを、対応するデータIDと関連付けて記憶するデータ記憶手段である。
図6は暗号化データ記憶領域212が記憶するデータの一例を表す。
図6に示すように、暗号化データ記憶領域212は、情報処理装置301からの暗号化データdを、そのデータIDと関連付けて記憶する。
【0023】
トラップドア生成部221は、情報処理装置301から受信したトラップドアで第2の演算を行って、過去の世代のトラップドアを順次生成する手段である。
トラップドア生成部221は、第2演算実行部の例である。
【0024】
比較部222は、トラップドア生成部221が生成した複数のトラップドアで第3の演算を行って暗号化キーワード候補を生成し、生成した暗号化キーワード候補と、暗号化キーワード記憶領域211に記憶されている暗号化キーワードを比較し、情報処理装置301の指定したキーワードに合致する暗号化キーワードを暗号化キーワード記憶領域211から検索する手段である。
比較部222は、データ検索部の例である。
【0025】
通信部231は、情報処理装置301やグループ管理装置401と通信を行う手段である。
通信部231は、受信部の例である。
【0026】
パラメータ記憶領域213は、トラップドア生成部221が過去のトラップドアを生成する際に用いるパラメータを記憶している。
パラメータの詳細は後述する。
【0027】
図3は、本秘匿検索システム(図1)において、サーバ装置201への暗号化データの登録、サーバ装置201からの暗号化データの検索を行う情報処理装置301の構成例を表すブロック図である。
【0028】
図3において、暗号鍵記憶領域311は、データの暗号化・検索に用いる秘密情報を記憶するデータ記憶手段である。
図7は暗号鍵記憶領域311が記憶するデータの一例を表す。
本実施の形態では、秘密情報として暗号鍵を使用する例を説明する。
図7に示すように、暗号鍵記憶領域311は、暗号鍵kを、その世代数とともに記憶している。
暗号鍵記憶領域311は、秘密情報記憶部の例である。
【0029】
トラップドア生成部321は、暗号鍵とキーワードで第1の演算を行って、対応するトラップドアを生成する手段である。
トラップドア生成部321は、第1演算実行部の例である。
【0030】
暗号化キーワード生成部322は、あるキーワードに対応したトラップドアとデータIDで第3の演算を行って、暗号化キーワードを生成する手段である。
暗号化キーワード生成部322は、第3演算実行部の例である。
【0031】
通信部331は、サーバ装置201やグループ管理装置401と通信を行う手段である。
通信部331は、送信部の例である。
【0032】
入力部324は、ユーザからデータ生成指示やデータ検索指示を入力する手段である。
入力部324は、データ生成指示として、サーバ装置201に送信するデータを生成し、生成したデータをデータ暗号化部323で暗号化することを指示するコマンドを入力し、また、暗号化データとともにサーバ装置201に登録するキーワード(登録対象キーワード)を入力し、当該キーワードから暗号化キーワードを生成するよう指示するコマンドを入力する。
また、入力部324は、データ検索指示として、サーバ装置201に登録されている暗号化キーワード及び暗号化データを検索するよう指示するコマンドを入力し、また、暗号化データの検索に用いられるキーワード(検索対象キーワード)を入力し、当該キーワードからトラップドアを生成するよう指示するコマンドを入力する。
入力部324は、指示入力部の例である。
【0033】
データ暗号化部323は、サーバ装置201に登録させるデータの暗号化を行う手段である。
データ暗号化部323は、暗号鍵記憶領域311に記憶されている暗号鍵と異なる情報を用いてデータの暗号化を行う。
【0034】
パラメータ記憶領域312は、トラップドア生成部321が、トラップドアを生成する際に用いるパラメータを記憶している。
パラメータの詳細は後述する。
【0035】
図4は、本秘匿検索システム(図1)において、初期設定や、情報処理装置301が保持する暗号鍵の生成・管理などを行うグループ管理装置401の構成例を表すブロック図である。
【0036】
図4において、暗号鍵記憶領域411は、情報処理装置301が利用する暗号鍵を記憶するデータ記憶手段である。
図8は暗号鍵記憶領域411が記憶するデータの一例を表す。
図8に示すように、暗号鍵記憶領域411は、暗号鍵kを、その世代数とともに記憶している。
【0037】
暗号鍵生成部421は、情報処理装置301が利用する暗号鍵を生成する手段である。
【0038】
通信部431は、サーバ装置201や情報処理装置301と通信を行う手段である。
【0039】
本秘匿検索システムにおける手続きは、(1)グループ管理装置401が初期設定を行う部分、(2)グループ管理装置401が情報処理装置301が保持する暗号鍵の世代更新を行う部分、(3)情報処理装置301が暗号化データをサーバ装置201に送信・格納する部分、(4)情報処理装置301が暗号化データをサーバ装置201から検索・取得する部分、に大別される。以下、それぞれの手続きについて説明する。
【0040】
(1)グループ管理装置の初期設定
グループ管理装置401は、パラメータp1、p2、N、e1、e2、qを以下のように決定し、このうちN、e1、e2、qを公開情報とする。
p1、p2として十分大きな素数を選び、N=p1×p2とする。e1、e2はZN*から、(p1−1)(p2−1)と互いに素となるようランダムに選択する。
qは世代数の最大値であり、世代の更新頻度やシステムの運用期間から適切に設定する。
また、適当な一方向性関数Fを選択し、公開情報とする。
【0041】
次に、暗号鍵生成部421が、情報処理装置301が利用する暗号鍵を生成する。
まず、q世代目の暗号鍵kqを、ZN*からランダムに選択する。そして、それ以前の暗号鍵を、式(1)によって順次計算する。
kj−1=kje1 modN 式(1)
なお、modはモジュロ演算子を表す。
こうして得られた全ての暗号鍵k1〜kqを、暗号鍵記憶領域411に格納する。
最後に、通信部431が、全ての正当な情報処理装置301に、1世代目の暗号鍵k1を送信する。
これは、暗号鍵の安全性が保たれる方式であれば、オフラインで行っても良いし、既存の鍵配送技術を用いてオンラインで行っても良い。
暗号鍵k1を受信した情報処理装置301は、この暗号鍵k1を、世代とともに暗号鍵記憶領域311に格納する。
また、別途、グループ管理装置401は、パラメータe1、e2、q、N及び一方向性関数Fを各情報処理装置301及びサーバ装置201に通知し、各情報処理装置301では、これらの値をパラメータ記憶領域312に記憶し、サーバ装置201では、これらの値をパラメータ記憶領域213に記憶する。
なお、パラメータe1、e2は、e1、e2とも表記する。
【0042】
(2)暗号鍵の世代更新
正当な情報処理装置301のグループに対し、ユーザの加入・脱退があった際に、暗号鍵の世代更新が必要となる場合がある。
この場合、以下のように世代更新を実施する。
i世代目からi+1世代目に更新する場合(ただしi+1≦q)、グループ管理装置401の通信部431が、全ての正当な情報処理装置301に、i+1世代目の暗号鍵ki+1を送信する。
これは、暗号鍵の安全性が保たれる方式であれば、オフラインで行っても良いし、既存の鍵配送技術を用いてオンラインで行っても良い。
ki+1を受信した情報処理装置301は、暗号鍵記憶領域311の内容を、世代i+1と暗号鍵ki+1で置き換える(秘密情報記憶ステップ)。
【0043】
(3)暗号化データの送信・格納
正当な情報処理装置301がデータをサーバ装置201に送信する場合、後に秘匿検索が行えるよう、キーワードとデータを別々に暗号化したものを送信する。
i世代目における具体的な手順を図11のデータフロー図、図17及び図18のフローチャートを参照しながら以下に述べる。
【0044】
まず、情報処理装置301において、ユーザが、データに対し、ユニークなデータIDを割り当てる(idxとする)。データID(idx)は、データ生成指示の一部として入力部324が入力する。さらに、データ暗号化部323がデータの暗号化を行う(S1701)。
ここでは、正当な情報処理装置301だけが復号できるような、既存の暗号技術(グループ暗号技術)を利用する(暗号化データをdxとする)。
次に、入力部324が、暗号化データdxに関連付けられる複数のキーワード(wxjとする)をユーザから入力する(S1702)。
次に、トラップドア生成部321が、複数のキーワード(wxj)に対し、それぞれトラップドアを生成する(S1703)。
具体的には、各キーワードwxjに対し、トラップドアtdxjを以下の式(2)に従って計算する(^はべき乗を表す。以下においても同様)。
tdxj=(ki×wxj^(e1q−i))e2 modN 式(2)
kiは、データ生成指示の入力時点で暗号鍵記憶領域311に保持されている最新世代の暗号鍵を意味する。
パラメータe1、e2、q、Nは、パラメータ記憶領域312に記憶されている。
また、上記の式(2)に従った演算が第1の演算に相当する。
【0045】
その後、暗号化キーワード生成部322が、各トラップドアtdxjに対し、暗号化キーワードcxjを以下の式(3)に従って計算する(S1704)。
cxj=F(idx、tdxj) 式(3)
一方向性関数Fの内容は、パラメータ記憶領域312に記憶されている。
また、上記の式(3)に従った演算が第3の演算に相当する。
【0046】
最後に、通信部331が、世代、データID、暗号化データ、暗号化キーワードの組(i、idx、dx、cx1、cx2、...)をサーバ装置201に送信する(S1705)。
【0047】
サーバ装置201では、通信部231がこれらを受信し(S1801)、暗号化データdxをデータIDと関連付けて暗号化データ記憶領域212に格納し、各暗号化キーワードcxjを世代、データIDと関連付けて暗号化キーワード記憶領域211に格納する(S1802)(登録データ記憶ステップ)。
【0048】
(4)暗号化データの検索・取得
正当な情報処理装置301は、現在もしくは過去の世代にサーバ装置201に格納されたデータに対し、キーワードを指定して秘匿検索を行うことができる。
i世代目における具体的な手順を図12のデータフロー図、図19及び図20のフローチャートを参照しながら以下に述べる。
【0049】
まず、情報処理装置301において、入力部324が、データ検索指示として、ユーザから検索対象のキーワードwを入力する(S1901)(指示入力ステップ)。
次に、トラップドア生成部321が、検索したいキーワードwに対応するトラップドアを生成する(S1902)(第1演算実行ステップ)。
具体的には、キーワードwに対し、トラップドアtdi(i世代目で生成されたトラップドア)を以下の式(4)に従って計算する。
tdi=(ki×w^(e1q−i))e2 modN 式(4)
kiは、データ検索指示の入力時点で暗号鍵記憶領域311に保持されている最新世代の暗号鍵を意味する。
また、上記の式(4)に従った演算は第1の演算に相当する。
【0050】
次に、通信部331が、世代、トラップドアの組(i、tdi)をデータ検索要求としてサーバ装置201に送信する(S1903)(送信ステップ)。
【0051】
サーバ装置201では、通信部231がこれらを受信し(S2001)(受信ステップ)、トラップドア生成部221が、過去全ての世代に対応するトラップドアtd1〜tdi−1を以下の式(5)に従って世代を1つずつ遡りながら順次計算する(S2002)(第2演算実行ステップ)。
tdj−1=tdje1 modN 式(5)
なお、上記の式(5)に従った演算は第2の演算に相当する。
【0052】
その後、比較部222が、暗号化キーワード記憶領域211を参照し、トラップドアに対応する暗号化キーワードが存在するかを確認する(S2003)(データ検索ステップ)。
具体的には、暗号化キーワード記憶領域211の各行の世代、データID、暗号化キーワードの組(j、id、c)に対し、以下の式(6)の等式が成立するかを確認する。
c=F(id、tdj) 式(6)
つまり、比較部222は、式(6)に従って、暗号化キーワード記憶領域211に示されているデータIDと前述のS2002で生成されたトラップドアに対して一方向性関数Fを適用して暗号化キーワード候補を算出し、算出した暗号化キーワード候補が、暗号化キーワード記憶領域211の対応する行の暗号化キーワードに一致するか否かの照合を行う。
なお、一方向性関数Fの適用対象となるのは、世代数が一致しているデータIDとトラップドアである(暗号化キーワード記憶領域211に示されている世代数jとトラップドアtdjの世代数jが一致している)。
なお、上記の式(6)に従った演算は第3の演算に相当する。
【0053】
上記の式(6)が成立した場合、すなわち、暗号化キーワード候補が、暗号化キーワード記憶領域211に示されている暗号化キーワードに一致する場合に、当該暗号化キーワードは、ユーザにより指定されたキーワードwに対応する暗号化キーワードとなるため、比較部222は、暗号化キーワード記憶領域211から対応するデータID(id)を抽出し(S2004)、抽出したデータID(id)をキーに暗号化データ記憶領域212を検索して暗号化データdを取得し(S2005)、通信部231が情報処理装置301に、キーワードwに対応する暗号化データdを送信する(S2006)。
なお、式(6)の等式が複数行において成立し、複数の暗号化データが抽出された場合は暗号化データの全て送信するようにしても、一部を送信するようにしても良い。
一方、上記の式(6)の等式が暗号化キーワード記憶領域211のどの行においても不成立であった場合は、情報処理装置301にその旨を送信する。
なお、存在しないキーワードを指定した場合の他、データ検索の要求元が正当なアクセス権限を有しない場合(正しい暗号鍵を有しない又は正しいパラメータを有しないので、適切なトラップドアを作成できない)に、上記の式(6)の等式が暗号化キーワード記憶領域211のどの行においても不成立となると考えられる。
【0054】
暗号化データdを受信した情報処理装置301では、例えば、データ暗号化部323で暗号化データdの復号を行う。
ここでは、正当な情報処理装置301だけが復号できるような、既存の暗号技術(グループ暗号技術)を利用する。
【0055】
なお、サーバ装置201が最新のトラップドアから生成した過去のトラップドアと、情報処理装置301が過去の暗号鍵から生成したトラップドアが一致し、本秘匿検索システムが正常に機能することは、例えば以下のように確認される。
【0056】
サーバ装置201がi世代目のトラップドアtdiから生成した、i−1世代目のトラップドアtdi−1は、
tdi−1=tdie1 modN
=(ki×w^(e1q−i))e1e2 modN
=(kie1×w^(e1q−(i−1)))e2 modN
=(ki−1×w^(e1q−(i−1)))e2 modN
となり、これは情報処理装置301がi−1世代目に生成するトラップドアと一致する。
【0057】
また、システムの安全性、すなわちサーバ装置201がトラップドアや暗号化キーワードからキーワードを類推できないことや、ある世代の暗号鍵を持つ情報処理装置301が未来の世代の暗号鍵を類推できないことは、RSA(登録商標)暗号の安全性に基づいている。
【0058】
以上によって、情報処理装置301がデータ・キーワードをサーバ装置201に対して秘匿したまま検索できる秘匿検索システムが実現できる。
サーバ装置201が、受信した最新のトラップドアから過去のトラップドアを生成できるため、検索時に情報処理装置301が送信すべきトラップドアが削減でき、情報処理装置301の計算量や通信量の削減を達成できる。
【0059】
なお、本実施の形態では、検索結果として暗号化データを返すために暗号化データ記憶領域212を利用しているが、暗号化データを返す必要がない場合、サーバ装置201が暗号化データ記憶領域212を持たなくても良い。
例えば、暗号化データは別の装置が保持し、そこへのアクセスを可能とするためにデータIDだけを返すようにしても良い。
【0060】
また、本実施の形態では、各処理において世代数を送信しているが、システム全体で現在の世代数の同期が取れている場合は、世代数の送信は不要である。
また、システム全体で現在の世代数の同期が取れている場合にも世代数の送信を行って、サーバ装置201が、S1801やS2001で、現在の世代に対応するデータを受信したときのみ格納・検索処理を続行し、そうでない場合は処理を中断するようにしても良い。
【0061】
また、本実施の形態では、異なるデータに関連付けられた同一のキーワードが別の暗号化キーワードとなるようにするため、暗号化キーワードをc=F(id、td)のように生成しているが、この区別をつける必要がない場合、本処理を省略し、トラップドアを暗号化キーワードとして使うことも可能である。この場合、検索時にサーバ装置201がidごとにFを適用する必要がなくなり、検索を高速化することができる。
なお、このような運用については、実施の形態3で詳述する。
【0062】
また、本実施の形態では、グループ管理装置401が初期設定の際に、全ての暗号鍵k1〜kqを生成し、暗号鍵記憶領域411に格納しているが、Nの素因数分解p1×p2を知るグループ管理装置401はkjからkj+1を導出可能であるため、暗号鍵記憶領域411には最新の暗号鍵のみを格納し、世代更新のたびに次の暗号鍵を導出するようにしても良い。
【0063】
また、本実施の形態では、データに複数のキーワードが関連付けられている場合、各キーワードに対し暗号化キーワードを送信し、これらを暗号化キーワード記憶領域211の複数行に格納しているが、複数キーワードを効率的に処理するBloom Filterなどの既存技術と組み合わせて、複数キーワードを1行でまとめて処理できるようにしても良い。
【0064】
実施の形態2.
本実施の形態では、秘匿検索システム(図1)において、情報処理装置301が暗号鍵とキーワードからトラップドアを生成する際、双線形写像を利用する方式について述べる。なお、双線形写像とは、E(ga、hb)≡E(g、h)abを満たす関数Eのことであり、例えばWeilペアリングやTateペアリングなどが利用できる。
【0065】
サーバ装置201、情報処理装置301、グループ管理装置401の構成例については、実施の形態1にて記述したものと同一であるため、説明は省略する。
【0066】
本実施の形態においても、本秘匿検索システムにおける手続きは、実施の形態1にて記述した四つの手続きに大別される。以下、それぞれの手続きについて説明する。
【0067】
(1)グループ管理装置の初期設定
グループ管理装置401は、パラメータp1、p2、N、e1、qを以下のように決定し、このうちN、e1、qを公開情報とする。
p1、p2として十分大きな素数を選び、N=p1×p2とする。e1はZN*から、(p1−1)(p2−1)と互いに素となるようランダムに選択する。
qは世代数の最大値であり、世代の更新頻度やシステムの運用期間から適切に設定する。
また、適当な一方向性関数F、および双線形写像Eを選択し、公開情報とする。
【0068】
次に、暗号鍵生成部421が、情報処理装置301が利用する暗号鍵を生成する。
まず、q世代目の暗号鍵kqを、ZN*からランダムに選択する。そして、それ以前の暗号鍵を、式(7)によって順次計算する。
kj−1=kje1 modN 式(7)
こうして得られた全ての暗号鍵k1〜kqを、暗号鍵記憶領域411に格納する。
最後に、通信部431が、全ての正当な情報処理装置301に、1世代目の暗号鍵k1を送信する。
これは、暗号鍵の安全性が保たれる方式であれば、オフラインで行っても良いし、既存の鍵配送技術を用いてオンラインで行っても良い。
k1を受信した情報処理装置301は、この暗号鍵k1を、世代とともに暗号鍵記憶領域311に格納する。
また、実施の形態1と同様に、グループ管理装置401は、パラメータe1、q、N、一方向性関数F及び双線形写像Eを各情報処理装置301及びサーバ装置201に通知し、各情報処理装置301では、これらの値をパラメータ記憶領域312に記憶し、サーバ装置201では、これらの値をパラメータ記憶領域213に記憶する。
【0069】
(2)暗号鍵の世代更新
実施の形態1にて記述したものと同一であるため、説明は省略する。
【0070】
(3)暗号化データの送信・格納
正当な情報処理装置301がデータをサーバ装置201に送信する場合、後に秘匿検索が行えるよう、キーワードとデータを別々に暗号化したものを送信する。
i世代目における具体的な手順を図13のデータフロー図を参照して以下に述べる。
なお、フローチャートは、図17及び図18に示したとおりである。
【0071】
まず、情報処理装置301において、ユーザが、データに対し、ユニークなデータIDを割り当てる(idxとする)。データID(idx)は、データ生成指示の一部として入力部324が入力する。さらに、データ暗号化部323がデータの暗号化を行う(S1701)。
ここでは、正当な情報処理装置301だけが復号できるような、既存の暗号技術(グループ暗号技術)を利用する(暗号化データをdxとする)。
次に、入力部324が、暗号化データdxに関連付けられる複数のキーワード(wxjとする)をユーザから入力する(S1702)。
次に、トラップドア生成部321が、複数のキーワード(wxj)に対し、それぞれトラップドアを生成する(S1703)。
具体的には、各キーワードwxjに対し、トラップドアtdxjを以下の式(8)に従って計算する。
tdxj=E(ki、wxj) 式(8)
kiは、データ生成指示の入力時点で暗号鍵記憶領域311に保持されている最新世代の暗号鍵を意味する。
上記の式(8)に従った演算が第1の演算に相当する。
【0072】
その後、暗号化キーワード生成部322が、各トラップドアtdxjに対し、暗号化キーワードcxjを以下の式(3)に従って計算する(S1704)。
cxj=F(idx、tdxj) 式(3)
上記の式(3)に従った演算が第3の演算に相当する。
【0073】
最後に、通信部331が、世代、データID、暗号化データ、暗号化キーワードの組(i、idx、dx、cx1、cx2、...)をサーバ装置201に送信する(S1705)。
【0074】
サーバ装置201では、通信部231がこれらを受信し(S1801)、暗号化データdxをデータIDと関連付けて暗号化データ記憶領域212に格納し、各暗号化キーワードcxjを世代、データIDと関連付けて暗号化キーワード記憶領域211に格納する(S1802)(登録データ記憶ステップ)。
【0075】
(4)暗号化データの検索・取得
正当な情報処理装置301は、現在もしくは過去の世代にサーバ装置201に格納されたデータに対し、キーワードを指定して秘匿検索を行うことができる。
i世代目における具体的な手順を図14のデータフロー図を参照しながら以下に述べる。
なお、フローチャートは、図19及び図20に示すとおりである。
【0076】
情報処理装置301において、入力部324が、データ検索指示として、ユーザから検索対象のキーワードwを入力する(S1901)(指示入力ステップ)。
次に、トラップドア生成部321が、検索したいキーワードwに対応するトラップドアを生成する(S1902)(第1演算実行ステップ)。
具体的には、キーワードwに対し、トラップドアtdi(i世代目で生成されたトラップドア)を以下の式(9)に従って計算する。
tdi=E(ki、w) 式(9)
kiは、データ検索指示の入力時点で暗号鍵記憶領域311に保持されている最新世代の暗号鍵を意味する。
また、上記の式(9)に従った演算は第1の演算に相当する。
【0077】
サーバ装置201では、通信部231がこれらを受信し(S2001)(受信ステップ)、トラップドア生成部221が、過去全ての世代に対応するトラップドアtd1〜tdi−1を以下の式(5)に従って世代を1つずつ遡りながら順次計算する(S2002)(第2演算実行ステップ)。
tdj−1=tdje1 modN 式(5)
なお、上記の式(5)に従った演算は第2の演算に相当する。
【0078】
その後、比較部222が、暗号化キーワード記憶領域211を参照し、トラップドアに対応する暗号化キーワードが存在するかを確認する(S2003)(データ検索ステップ)。
具体的には、暗号化キーワード記憶領域211の各行の世代、データID、暗号化キーワードの組(j、id、c)に対し、以下の式(6)の等式が成立するかを確認する。
c=F(id、tdj) 式(6)
つまり、比較部222は、式(6)に従って、暗号化キーワード記憶領域211に示されているデータIDと前述のS2002で生成されたトラップドアに対して一方向性関数Fを適用して暗号化キーワード候補を算出し、算出した暗号化キーワード候補が、暗号化キーワード記憶領域211の対応する行の暗号化キーワードに一致するか否かの照合を行う。
なお、一方向性関数Fの適用対象となるのは、世代数が一致しているデータIDとトラップドアである(暗号化キーワード記憶領域211に示されている世代数jとトラップドアtdjの世代数jが一致している)。
なお、上記の式(6)に従った演算は第3の演算に相当する。
【0079】
上記の式(6)が成立した場合、すなわち、暗号化キーワード候補が、暗号化キーワード記憶領域211に示されている暗号化キーワードに一致する場合に、当該暗号化キーワードは、ユーザにより指定されたキーワードwに対応する暗号化キーワードとなるため、比較部222は、暗号化キーワード記憶領域211から対応するデータID(id)を抽出し(S2004)抽出したデータID(id)をキーに暗号化データ記憶領域212を検索して暗号化データdを取得し(S2005)、通信部231が情報処理装置301に、キーワードwに対応する暗号化データdを送信する(S2006)。
なお、式(6)の等式が複数行において成立し、複数の暗号化データが抽出された場合は暗号化データの全て送信するようにしても、一部を送信するようにしても良い。
一方、上記の式(6)の等式が暗号化キーワード記憶領域211のどの行においても不成立であった場合は、情報処理装置301にその旨を送信する。
なお、存在しないキーワードを指定した場合の他、データ検索の要求元が正当なアクセス権限を有しない場合(正しい暗号鍵を有しない又は正しいパラメータを有しないので、適切なトラップドアを作成できない)に、上記の式(6)の等式が暗号化キーワード記憶領域211のどの行においても不成立となると考えられる。
【0080】
暗号化データdを受信した情報処理装置301では、例えば、データ暗号化部323で暗号化データdの復号を行う。
ここでは、正当な情報処理装置301だけが復号できるような、既存の暗号技術(グループ暗号技術)を利用する。
【0081】
なお、サーバ装置201が最新のトラップドアから生成した過去のトラップドアと、情報処理装置301が過去の暗号鍵から生成したトラップドアが一致し、本秘匿検索システムが正常に機能することは、例えば以下のように確認される。
【0082】
サーバ装置201がi世代目のトラップドアtdiから生成した、i−1世代目のトラップドアtdi−1は、
tdi−1=tdie1 modN
=E(ki、w)e1 modN
=E(kie1、w) modN
=E(ki−1、w) modN
となり、これは情報処理装置301がi−1世代目に生成するトラップドアと一致する。
【0083】
また、システムの安全性、すなわちサーバ装置201がトラップドアや暗号化キーワードからキーワードを類推できないことや、ある世代の暗号鍵を持つ情報処理装置301が未来の世代の暗号鍵を類推できないことは、RSA(登録商標)暗号、および双線形写像の安全性に基づいている。
【0084】
以上によって、情報処理装置301がデータ・キーワードをサーバ装置201に対して秘匿したまま検索できる秘匿検索システムが実現できる。
サーバ装置201が、受信した最新のトラップドアから過去のトラップドアを生成できるため、検索時に情報処理装置301が送信すべきトラップドアが削減でき、情報処理装置301の計算量や通信量の削減を達成できる。
【0085】
さらに、本実施の形態においては、実施の形態1とは異なり、情報処理装置301のトラップドア生成部321がキーワードからトラップドアを生成する際に、世代数の最大値qを利用する必要がない。
したがって、qの値を大きく設定しても、情報処理装置301の計算量には影響しないという利点がある。
また、実施の形態1でも述べたように、グループ管理装置401はkjからkj+1を導出可能であるため、初期設定にてk1のみを生成し、世代更新のたびに次の暗号鍵を導出することで、世代数の最大値という制限を設けることなく秘匿検索システムを運用することが可能となる。
【0086】
なお、本実施の形態では、検索結果として暗号化データを返すために暗号化データ記憶領域212を利用しているが、暗号化データを返す必要がない場合、サーバ装置201が暗号化データ記憶領域212を持たなくても良い。
例えば、暗号化データは別の装置が保持し、そこへのアクセスを可能とするためにデータIDだけを返すようにしても良い。
【0087】
また、本実施の形態では、各処理において世代数を送信しているが、システム全体で現在の世代数の同期が取れている場合は、世代数の送信は不要である。
また、システム全体で現在の世代数の同期が取れている場合にも世代数の送信を行って、サーバ装置201が、S1801やS2001で、現在の世代に対応するデータを受信したときのみ格納・検索処理を続行し、そうでない場合は処理を中断するようにしても良い。
【0088】
また、本実施の形態では、異なるデータに関連付けられた同一のキーワードが別の暗号化キーワードとなるようにするため、暗号化キーワードをc=F(id、td)のように生成しているが、この区別をつける必要がない場合、本処理を省略し、トラップドアを暗号化キーワードとして使うことも可能である。この場合、検索時にサーバ装置201がidごとにFを適用する必要がなくなり、検索を高速化することができる。
なお、このような運用については、実施の形態3で詳述する。
【0089】
また、本実施の形態では、データに複数のキーワードが関連付けられている場合、各キーワードに対し暗号化キーワードを送信し、これらを暗号化キーワード記憶領域211の複数行に格納しているが、複数キーワードを効率的に処理するBloom Filterなどの既存技術と組み合わせて、複数キーワードを1行でまとめて処理できるようにしても良い。
【0090】
実施の形態3.
本実施の形態では、トラップドアを暗号化キーワードとして使う例を説明する。
【0091】
図9は、本実施の形態に係る情報処理装置301の構成例を示す。
本実施の形態では、トラップドアを暗号化キーワードとして使用するため、図3の構成に含まれていた暗号化キーワード生成部322を省略している。
他の構成要素は、図3に示したものと同様であり、説明を省略する。
なお、本実施の形態においても、サーバ装置201及びグループ管理装置401は、図2及び図4に示した構成のとおりである。
なお、サーバ装置201において、暗号化キーワード記憶領域211では、図10に示すように、暗号化キーワードとしてトラップドアtdを用い、トラップドアtdと、対応する暗号化データのデータIDと、トラップドアの生成に用いられた暗号鍵の世代数とを関連付けて記憶している。
【0092】
また、本実施の形態においても、本秘匿検索システムにおける手続きは、実施の形態1にて記述した四つの手続きに大別される。
なお、(1)グループ管理装置の初期設定及び(2)暗号鍵の世代更新は、実施の形態1及び実施の形態2に示したものと同様であるため、説明を省略し、以下では、(3)暗号化データの送信・格納及び(4)暗号化データの検索・取得を説明する。
【0093】
(3)暗号化データの送信・格納
正当な情報処理装置301がデータをサーバ装置201に送信する場合、後に秘匿検索が行えるよう、キーワードとデータを別々に暗号化したものを送信する。
i世代目における具体的な手順は図15のデータフロー図に示すとおりである。
なお、図15では、実施の形態1に示したべき乗剰余演算(式(2))を利用してトラップドアを生成する例を示しているが、実施の形態2に示した式(8)を用いることで、実施の形態2に示した双線形写像を利用することも可能である。
なお、本実施の形態では、図17のフローチャートからS1704の動作を省略し、S1705で送信する暗号化キーワードをトラップドアとする。図17の他の動作は、実施の形態1及び実施の形態2において説明したとおりである。
また、図18のフローチャートにおいて、S1801で受信する暗号化キーワード及びS1802で記憶する暗号化キーワードをトラップドアとする。
【0094】
(4)暗号化データの検索・取得
正当な情報処理装置301は、現在もしくは過去の世代にサーバ装置201に格納されたデータに対し、キーワードを指定して秘匿検索を行うことができる。
i世代目における具体的な手順は図16のデータフロー図に示すとおりである。
なお、図16では、情報処理装置301において、実施の形態1に示したべき乗剰余演算(式(4))を利用してトラップドアを生成する例を示しているが、実施の形態2に示した式(9)を用いることで、実施の形態2に示した双線形写像を利用することも可能である。
なお、情報処理装置301の動作は、図19のフローチャートに示すとおりである。
一方、サーバ装置201の動作では、図20のフローチャートのS2003の処理に代えて、S2002で導出された過去の世代のトラップドアのうちのいずれかと同じトラップドアが示されている行を暗号化キーワード記憶領域211(図10)において検索し、該当する行に示されているデータIDを抽出し(S2004)、抽出したデータIDをキーに暗号化データ記憶領域212を検索して暗号化データdを取得し(S2005)、通信部231が情報処理装置301に、キーワードwに対応する暗号化データdを送信する(S2006)。
その他の動作は、実施の形態1及び実施の形態2で説明したものと同様である。
【0095】
このように、本実施の形態によれば、トラップドアを暗号化キーワードとして使用することにより、データ生成時に情報処理装置301において一方向性関数Fを適用する必要がなくなり、また、データ検索時にサーバ装置201が一方向性関数Fを適用する必要がなくなり、情報処理装置301及びサーバ装置201における処理を高速化でき、また、計算機リソースを有効に活用することができる。
【0096】
以上の実施の形態1〜3では、サーバに保存されたデータを、ユーザがキーワードを指定して検索でき、かつその際にデータ・キーワードをサーバに対して秘匿する秘匿検索システムで、検索の際に利用する秘密情報を世代ごとに更新するシステムにおいて、データ保存・検索時にユーザがサーバに送信するトラップドアを、サーバが最新のトラップドアから過去のトラップドアを導出できるようなものにすることで、検索時にユーザが送信すべきトラップドアの数を削減し、結果として計算量や通信量を削減する方式を説明した。
【0097】
また、実施の形態1及び実施の形態3では、ユーザが秘密情報とキーワードからトラップドアを生成する際に、べき乗剰余演算を利用する方式を説明した。
【0098】
また、実施の形態2及び実施の形態3では、ユーザが秘密情報とキーワードからトラップドアを生成する際に、双線形写像を利用する方式を説明した。
【0099】
最後に、実施の形態1〜3に示したサーバ装置201、情報処理装置301及びグループ管理装置401(以下、三者をまとめてサーバ装置201等と表記する)のハードウェア構成例について説明する。
図21は、実施の形態1〜3に示すサーバ装置201等のハードウェア資源の一例を示す図である。
なお、図21の構成は、あくまでもサーバ装置201等のハードウェア構成の一例を示すものであり、サーバ装置201等のハードウェア構成は図21に記載の構成に限らず、他の構成であってもよい。
【0100】
図21において、サーバ装置201等は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜3で説明した「〜記憶領域」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0101】
通信ボード915は、図1に示すように、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていても構わない。
【0102】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0103】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0104】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
サーバ装置201等の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0105】
上記プログラム群923には、実施の形態1〜3の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
【0106】
ファイル群924には、実施の形態1〜3の説明において、「〜の判断」、「〜の判定」、「〜の計算」、「〜の演算」、「〜の生成」、「〜の比較」、「〜の照合」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0107】
また、実施の形態1〜3の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」、として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1〜3の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜3の「〜部」の手順や方法をコンピュータに実行させるものである。
【0108】
このように、実施の形態1〜3に示すサーバ装置201等は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【0109】
101 ネットワーク、201 サーバ装置、211 暗号化キーワード記憶領域、212 暗号化データ記憶領域、213 パラメータ記憶領域、221 トラップドア生成部、222 比較部、231 通信部、301 情報処理装置、311 暗号鍵記憶領域、312 パラメータ記憶領域、321 トラップドア生成部、322 暗号化キーワード生成部、323 データ暗号化部、324 入力部、331 通信部、401 グループ管理装置、411 暗号鍵記憶領域、421 暗号鍵生成部、431 通信部。
【特許請求の範囲】
【請求項1】
複数の情報処理装置と、サーバ装置とを有する情報処理システムであって、
各情報処理装置は、
他の情報処理装置との間で共有され更新されていく秘密情報を更新の度に記憶する秘密情報記憶部と、
データの生成を指示するデータ生成指示と、データの検索を指示するデータ検索指示とを入力する指示入力部と、
前記データ生成指示の入力があった際に、前記データ生成指示の入力時点で最新の秘密情報である生成時秘密情報で第1の演算を行って、生成時第1演算値データを生成し、前記データ検索指示の入力があった際に、前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行部と、
前記第1演算実行部により生成された検索時第1演算値データを前記サーバ装置に送信する送信部とを有し、
前記サーバ装置は、
情報処理装置により生成された生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを登録データとして記憶する登録データ記憶部と、
情報処理装置から送信された検索時第1演算値データを受信する受信部と、
前記受信部により受信された検索時第1演算値データで第2の演算を行って、先行第1演算値データを先行世代の各々に対して生成する第2演算実行部と、
検索時第1演算値データ及び前記第2演算実行部により生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶部内の登録データとを用いてデータの検索を行うデータ検索部とを有することを特徴とする情報処理システム。
【請求項2】
各情報処理装置において、
前記第1演算実行部は、
前記サーバ装置の前記第2演算実行部が前記検索時第1演算値データで第2の演算を行うと前記検索時秘密情報の1つ前の世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを生成でき、以降、生成された先行第1演算値データで第2の演算を行う処理を繰返すことにより秘密情報の世代を順次遡って先行世代の各々の先行第1演算値データを生成できる第1の演算を前記検索時秘密情報で行って、前記検索時第1演算値データを生成し、
前記サーバ装置において、
前記第2演算実行部は、
前記検索時第1演算値データで第2の演算を行って、前記検索時秘密情報の1つ前の世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを生成し、以降、生成した先行第1演算値データで第2の演算を行う処理を繰返すことにより秘密情報の世代を順次遡って先行世代の各々の先行第1演算値データを生成することを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記サーバ装置において、
前記登録データ記憶部は、
情報処理装置により生成された生成時第1演算値データを登録データとして記憶し、
前記データ検索部は、
検索時第1演算値データ及び先行第1演算値データの少なくともいずれかと、前記登録データ記憶部内の生成時第1演算値データとを用いてデータの検索を行うことを特徴とする請求項1又は2に記載の情報処理システム。
【請求項4】
各情報処理装置において、
前記指示入力部は、
平文の登録対象キーワードを含み、前記サーバ装置に内容を秘匿する暗号化キーワードを登録対象キーワードから生成するよう指示するデータ生成指示と、平文の検索対象キーワードを含み、検索対象キーワードを用いて暗号化キーワードを検索するよう指示するデータ検索指示とを入力し、
前記第1演算実行部は、
前記データ生成指示の入力があった際に、前記生成時秘密情報と前記登録対象キーワードで第1の演算を行って、生成時第1演算値データとして登録暗号化キーワードを生成し、前記データ検索指示の入力があった際に、前記検索時秘密情報と検索対象キーワードで第1の演算を行って、検索時第1演算値データを生成し、
前記サーバ装置において、
前記登録データ記憶部は、
情報処理装置により生成された登録暗号化キーワードと登録暗号化キーワードに関連するID(Identification)情報とを対応付けて登録データとして記憶し、
前記データ検索部は、
検索時第1演算値データ及び先行第1演算値データのうちのいずれかと値が一致する登録暗号化キーワードに対応付けられているID情報を検索することを特徴とする請求項3に記載の情報処理システム。
【請求項5】
各情報処理装置は、更に、
前記第1演算実行部により生成された生成時第1演算値データで第3の演算を行って第3演算値データを生成する第3演算実行部を有し、
前記サーバ装置において、
前記登録データ記憶部は、
情報処理装置により生成された第3演算値データを登録データとして記憶し、
前記データ検索部は、
検索時第1演算値データ及び先行第1演算値データの各々で第3の演算を行って各々の第1演算値データに対応する第3演算値データを生成し、生成した第3演算値データの少なくともいずれかと、前記登録データ記憶部内の第3演算値データとを用いてデータの検索を行うことを特徴とする請求項1〜4のいずれかに記載の情報処理システム。
【請求項6】
各情報処理装置において、
前記指示入力部は、
平文の登録対象キーワードを含み、前記サーバ装置に内容を秘匿する暗号化キーワードを登録対象キーワードから生成するよう指示するデータ生成指示と、平文の検索対象キーワードを含み、検索対象キーワードを用いて暗号化キーワードを検索するよう指示するデータ検索指示とを入力し、
前記第1演算実行部は、
前記データ生成指示の入力があった際に、前記生成時秘密情報と前記登録対象キーワードで第1の演算を行って、生成時第1演算値データを生成し、前記データ検索指示の入力があった際に、前記検索時秘密情報と検索対象キーワードで第1の演算を行って、検索時第1演算値データを生成し、
前記第3演算実行部は、
前記第1演算実行部により生成された生成時第1演算値データで第3の演算を行って、第3演算値データとして登録暗号化キーワードを生成し、
前記サーバ装置において、
前記登録データ記憶部は、
情報処理装置により生成された登録暗号化キーワードと登録暗号化キーワードに関連するID(Identification)情報とを対応付けて登録データとして記憶し、
前記データ検索部は、
検索時第1演算値データ及び先行第1演算値データの各々で第3の演算を行って各々の第1演算値データに関連する第3演算値データを生成し、生成した第3演算値データのうちのいずれかと値が一致する登録暗号化キーワードに対応付けられているID情報を検索することを特徴とする請求項5に記載の情報処理システム。
【請求項7】
前記情報処理装置において、
前記第1演算実行部は、
第1の演算として、べき乗剰余演算を行い、
前記サーバ装置において、
前記第2演算実行部は、
第2の演算として、べき乗剰余演算を行うことを特徴とする請求項1〜6のいずれかに記載の情報処理システム。
【請求項8】
前記情報処理装置において、
前記第1演算実行部は、
生成時第1演算値データ又は検索時第1演算値データをtdiとし、生成時秘密情報又は検索時秘密情報をkiとし、生成時秘密情報又は検索時秘密情の世代数の値をiとし、キーワードをWとし、秘密情報の世代数の最大値をqとし、秘密情報の生成に用いられるパラメータをe1、e2及びNとした場合に、
tdi=(ki×w^(e1q−i))e2 modN
(^はべき乗を表し、modはモジュロ演算子を表す)
により第1の演算を行って、生成時第1演算値データ又は検索時第1演算値データを生成し、
前記サーバ装置において、
前記第2演算実行部は、
生成対象の先行第1演算値データをtdj−1とし、先行第1演算値データtdj−1に対応する秘密情報の世代数の値をj−1とし、世代数j−1の秘密情報の1つ後の世代の秘密情報の世代数の値をjとし、世代数jの秘密情報に対応する第1演算値データをtdjとした場合に、
tdj−1=tdje1 modN
により第2の演算を行って、先行第1演算値データを生成することを特徴とする請求項7に記載の情報処理システム。
【請求項9】
前記情報処理装置において、
前記第1演算実行部は、
第1の演算として、双線形写像を利用する演算を行い、
前記サーバ装置において、
前記第2演算実行部は、
第2の演算として、べき乗剰余演算を行うことを特徴とする請求項1〜8のいずれかに記載の情報処理装置。
【請求項10】
前記情報処理装置において、
前記第1演算実行部は、
生成時第1演算値データ又は検索時第1演算値データをtdiとし、生成時秘密情報又は検索時秘密情報をkiとし、生成時秘密情報又は検索時秘密情の世代数の値をiとし、キーワードをWとした場合に、
tdi=E(ki,w)
(Eは双線形写像を表し、E(ga,hb)≡E(g,h)abを満たす)
により第1の演算を行って、生成時第1演算値データ又は検索時第1演算値データを生成し、
前記サーバ装置において、
前記第2演算実行部は、
生成対象の先行第1演算値データをtdj−1とし、先行第1演算値データtdj−1に対応する秘密情報の世代数の値をj−1とし、世代数j−1の秘密情報の1つ後の世代の秘密情報の世代数の値をjとし、世代数jの秘密情報に対応する第1演算値データをtdjとし、秘密情報の生成に用いられるパラメータをe1及びNとした場合に、
tdj−1=tdje1 modN
(modはモジュロ演算子を表す)
により第2の演算を行って、先行第1演算値データを生成することを特徴とする請求項9に記載の情報処理システム。
【請求項11】
サーバ装置に接続される情報処理装置であって、
更新されていく秘密情報を更新の度に記憶する秘密情報記憶部と、
データの検索を指示するデータ検索指示を入力する指示入力部と、
前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行部と、
前記第1演算実行部により生成された検索時第1演算値データを前記サーバ装置に送信する送信部とを有することを特徴とする情報処理装置。
【請求項12】
前記第1演算実行部は、
前記サーバ装置が前記検索時第1演算値データで第2の演算を行うと前記検索時秘密情報の1つ前の世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを生成でき、以降、生成された先行第1演算値データで第2の演算を行う処理を繰返すことにより秘密情報の世代を順次遡って先行世代の各々の先行第1演算値データを生成できる第1の演算を前記検索時秘密情報で行って、前記検索時第1演算値データを生成することを特徴とする請求項11に記載の情報処理装置。
【請求項13】
秘密情報が更新される度に更新後の秘密情報を記憶する情報処理装置に接続されるサーバ装置であって、
情報処理装置が、データの生成を指示するデータ生成指示を入力した時点における最新の秘密情報である生成時秘密情報で第1の演算を行って生成した生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを、登録データとして記憶する登録データ記憶部と、
情報処理装置が、データの検索を指示するデータ検索指示を入力した時点における最新の秘密情報である検索時秘密情報で第1の演算を行って生成した検索時第1演算値データを、受信する受信部と、
前記受信部により受信された検索時第1演算値データで第2の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを、先行世代の秘密情報を用いた第1の演算を行わずに先行世代の各々に対して生成する第2演算実行部と、
検索時第1演算値データ及び前記第2演算実行部により生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶部内の登録データとを用いてデータの検索を行うデータ検索部とを有することを特徴とするサーバ装置。
【請求項14】
前記第2演算実行部は、
前記検索時第1演算値データで第2の演算を行って、前記検索時秘密情報の1つ前の世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを生成し、以降、生成した先行第1演算値データで第2の演算を行う処理を繰返すことにより秘密情報の世代を順次遡って先行世代の各々の先行第1演算値データを生成することを特徴とする請求項13に記載のサーバ装置。
【請求項15】
サーバ装置に接続される情報処理装置が行う情報処理方法であって、
更新されていく秘密情報を更新の度に記憶する秘密情報記憶ステップと、
データの検索を指示するデータ検索指示を入力する指示入力ステップと、
前記データ検索指示の入力があった際に、前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行ステップと、
前記第1演算実行ステップにより生成された検索時第1演算値データを前記サーバ装置に送信する送信ステップとを有することを特徴とする情報処理方法。
【請求項16】
秘密情報が更新される度に更新後の秘密情報を記憶する情報処理装置に接続されるサーバ装置が行う情報処理方法であって、
情報処理装置が、データの生成を指示するデータ生成指示を入力した時点における最新の秘密情報である生成時秘密情報で第1の演算を行って生成した生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを、登録データとして記憶する登録データ記憶ステップと、
情報処理装置が、データの検索を指示するデータ検索指示を入力した時点における最新の秘密情報である検索時秘密情報で第1の演算を行って生成した検索時第1演算値データを、受信する受信ステップと、
前記受信ステップにより受信された検索時第1演算値データで第2の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを、先行世代の秘密情報を用いた第1の演算を行わずに先行世代の各々に対して生成する第2演算実行ステップと、
検索時第1演算値データ及び前記第2演算実行ステップにより生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶ステップにより記憶されている登録データとを用いてデータの検索を行うデータ検索ステップとを有することを特徴とする情報処理方法。
【請求項17】
サーバ装置に接続される情報処理装置に、
更新されていく秘密情報を更新の度に記憶する秘密情報記憶処理と、
データの検索を指示するデータ検索指示を入力する指示入力処理と、
前記データ検索指示の入力があった際に、前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行処理と、
前記第1演算実行処理により生成された検索時第1演算値データを前記サーバ装置に送信する送信処理とを実行させることを特徴とするプログラム。
【請求項18】
秘密情報が更新される度に更新後の秘密情報を記憶する情報処理装置に接続されるサーバ装置に、
情報処理装置が、データの生成を指示するデータ生成指示を入力した時点における最新の秘密情報である生成時秘密情報で第1の演算を行って生成した生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを、登録データとして記憶する登録データ記憶処理と、
情報処理装置が、データの検索を指示するデータ検索指示を入力した時点における最新の秘密情報である検索時秘密情報で第1の演算を行って生成した検索時第1演算値データを、受信する受信処理と、
前記受信処理により受信された検索時第1演算値データで第2の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを、先行世代の秘密情報を用いた第1の演算を行わずに先行世代の各々に対して生成する第2演算実行処理と、
検索時第1演算値データ及び前記第2演算実行処理により生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶処理により記憶されている登録データとを用いてデータの検索を行うデータ検索処理とを実行させることを特徴とするプログラム。
【請求項1】
複数の情報処理装置と、サーバ装置とを有する情報処理システムであって、
各情報処理装置は、
他の情報処理装置との間で共有され更新されていく秘密情報を更新の度に記憶する秘密情報記憶部と、
データの生成を指示するデータ生成指示と、データの検索を指示するデータ検索指示とを入力する指示入力部と、
前記データ生成指示の入力があった際に、前記データ生成指示の入力時点で最新の秘密情報である生成時秘密情報で第1の演算を行って、生成時第1演算値データを生成し、前記データ検索指示の入力があった際に、前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行部と、
前記第1演算実行部により生成された検索時第1演算値データを前記サーバ装置に送信する送信部とを有し、
前記サーバ装置は、
情報処理装置により生成された生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを登録データとして記憶する登録データ記憶部と、
情報処理装置から送信された検索時第1演算値データを受信する受信部と、
前記受信部により受信された検索時第1演算値データで第2の演算を行って、先行第1演算値データを先行世代の各々に対して生成する第2演算実行部と、
検索時第1演算値データ及び前記第2演算実行部により生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶部内の登録データとを用いてデータの検索を行うデータ検索部とを有することを特徴とする情報処理システム。
【請求項2】
各情報処理装置において、
前記第1演算実行部は、
前記サーバ装置の前記第2演算実行部が前記検索時第1演算値データで第2の演算を行うと前記検索時秘密情報の1つ前の世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを生成でき、以降、生成された先行第1演算値データで第2の演算を行う処理を繰返すことにより秘密情報の世代を順次遡って先行世代の各々の先行第1演算値データを生成できる第1の演算を前記検索時秘密情報で行って、前記検索時第1演算値データを生成し、
前記サーバ装置において、
前記第2演算実行部は、
前記検索時第1演算値データで第2の演算を行って、前記検索時秘密情報の1つ前の世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを生成し、以降、生成した先行第1演算値データで第2の演算を行う処理を繰返すことにより秘密情報の世代を順次遡って先行世代の各々の先行第1演算値データを生成することを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記サーバ装置において、
前記登録データ記憶部は、
情報処理装置により生成された生成時第1演算値データを登録データとして記憶し、
前記データ検索部は、
検索時第1演算値データ及び先行第1演算値データの少なくともいずれかと、前記登録データ記憶部内の生成時第1演算値データとを用いてデータの検索を行うことを特徴とする請求項1又は2に記載の情報処理システム。
【請求項4】
各情報処理装置において、
前記指示入力部は、
平文の登録対象キーワードを含み、前記サーバ装置に内容を秘匿する暗号化キーワードを登録対象キーワードから生成するよう指示するデータ生成指示と、平文の検索対象キーワードを含み、検索対象キーワードを用いて暗号化キーワードを検索するよう指示するデータ検索指示とを入力し、
前記第1演算実行部は、
前記データ生成指示の入力があった際に、前記生成時秘密情報と前記登録対象キーワードで第1の演算を行って、生成時第1演算値データとして登録暗号化キーワードを生成し、前記データ検索指示の入力があった際に、前記検索時秘密情報と検索対象キーワードで第1の演算を行って、検索時第1演算値データを生成し、
前記サーバ装置において、
前記登録データ記憶部は、
情報処理装置により生成された登録暗号化キーワードと登録暗号化キーワードに関連するID(Identification)情報とを対応付けて登録データとして記憶し、
前記データ検索部は、
検索時第1演算値データ及び先行第1演算値データのうちのいずれかと値が一致する登録暗号化キーワードに対応付けられているID情報を検索することを特徴とする請求項3に記載の情報処理システム。
【請求項5】
各情報処理装置は、更に、
前記第1演算実行部により生成された生成時第1演算値データで第3の演算を行って第3演算値データを生成する第3演算実行部を有し、
前記サーバ装置において、
前記登録データ記憶部は、
情報処理装置により生成された第3演算値データを登録データとして記憶し、
前記データ検索部は、
検索時第1演算値データ及び先行第1演算値データの各々で第3の演算を行って各々の第1演算値データに対応する第3演算値データを生成し、生成した第3演算値データの少なくともいずれかと、前記登録データ記憶部内の第3演算値データとを用いてデータの検索を行うことを特徴とする請求項1〜4のいずれかに記載の情報処理システム。
【請求項6】
各情報処理装置において、
前記指示入力部は、
平文の登録対象キーワードを含み、前記サーバ装置に内容を秘匿する暗号化キーワードを登録対象キーワードから生成するよう指示するデータ生成指示と、平文の検索対象キーワードを含み、検索対象キーワードを用いて暗号化キーワードを検索するよう指示するデータ検索指示とを入力し、
前記第1演算実行部は、
前記データ生成指示の入力があった際に、前記生成時秘密情報と前記登録対象キーワードで第1の演算を行って、生成時第1演算値データを生成し、前記データ検索指示の入力があった際に、前記検索時秘密情報と検索対象キーワードで第1の演算を行って、検索時第1演算値データを生成し、
前記第3演算実行部は、
前記第1演算実行部により生成された生成時第1演算値データで第3の演算を行って、第3演算値データとして登録暗号化キーワードを生成し、
前記サーバ装置において、
前記登録データ記憶部は、
情報処理装置により生成された登録暗号化キーワードと登録暗号化キーワードに関連するID(Identification)情報とを対応付けて登録データとして記憶し、
前記データ検索部は、
検索時第1演算値データ及び先行第1演算値データの各々で第3の演算を行って各々の第1演算値データに関連する第3演算値データを生成し、生成した第3演算値データのうちのいずれかと値が一致する登録暗号化キーワードに対応付けられているID情報を検索することを特徴とする請求項5に記載の情報処理システム。
【請求項7】
前記情報処理装置において、
前記第1演算実行部は、
第1の演算として、べき乗剰余演算を行い、
前記サーバ装置において、
前記第2演算実行部は、
第2の演算として、べき乗剰余演算を行うことを特徴とする請求項1〜6のいずれかに記載の情報処理システム。
【請求項8】
前記情報処理装置において、
前記第1演算実行部は、
生成時第1演算値データ又は検索時第1演算値データをtdiとし、生成時秘密情報又は検索時秘密情報をkiとし、生成時秘密情報又は検索時秘密情の世代数の値をiとし、キーワードをWとし、秘密情報の世代数の最大値をqとし、秘密情報の生成に用いられるパラメータをe1、e2及びNとした場合に、
tdi=(ki×w^(e1q−i))e2 modN
(^はべき乗を表し、modはモジュロ演算子を表す)
により第1の演算を行って、生成時第1演算値データ又は検索時第1演算値データを生成し、
前記サーバ装置において、
前記第2演算実行部は、
生成対象の先行第1演算値データをtdj−1とし、先行第1演算値データtdj−1に対応する秘密情報の世代数の値をj−1とし、世代数j−1の秘密情報の1つ後の世代の秘密情報の世代数の値をjとし、世代数jの秘密情報に対応する第1演算値データをtdjとした場合に、
tdj−1=tdje1 modN
により第2の演算を行って、先行第1演算値データを生成することを特徴とする請求項7に記載の情報処理システム。
【請求項9】
前記情報処理装置において、
前記第1演算実行部は、
第1の演算として、双線形写像を利用する演算を行い、
前記サーバ装置において、
前記第2演算実行部は、
第2の演算として、べき乗剰余演算を行うことを特徴とする請求項1〜8のいずれかに記載の情報処理装置。
【請求項10】
前記情報処理装置において、
前記第1演算実行部は、
生成時第1演算値データ又は検索時第1演算値データをtdiとし、生成時秘密情報又は検索時秘密情報をkiとし、生成時秘密情報又は検索時秘密情の世代数の値をiとし、キーワードをWとした場合に、
tdi=E(ki,w)
(Eは双線形写像を表し、E(ga,hb)≡E(g,h)abを満たす)
により第1の演算を行って、生成時第1演算値データ又は検索時第1演算値データを生成し、
前記サーバ装置において、
前記第2演算実行部は、
生成対象の先行第1演算値データをtdj−1とし、先行第1演算値データtdj−1に対応する秘密情報の世代数の値をj−1とし、世代数j−1の秘密情報の1つ後の世代の秘密情報の世代数の値をjとし、世代数jの秘密情報に対応する第1演算値データをtdjとし、秘密情報の生成に用いられるパラメータをe1及びNとした場合に、
tdj−1=tdje1 modN
(modはモジュロ演算子を表す)
により第2の演算を行って、先行第1演算値データを生成することを特徴とする請求項9に記載の情報処理システム。
【請求項11】
サーバ装置に接続される情報処理装置であって、
更新されていく秘密情報を更新の度に記憶する秘密情報記憶部と、
データの検索を指示するデータ検索指示を入力する指示入力部と、
前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行部と、
前記第1演算実行部により生成された検索時第1演算値データを前記サーバ装置に送信する送信部とを有することを特徴とする情報処理装置。
【請求項12】
前記第1演算実行部は、
前記サーバ装置が前記検索時第1演算値データで第2の演算を行うと前記検索時秘密情報の1つ前の世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを生成でき、以降、生成された先行第1演算値データで第2の演算を行う処理を繰返すことにより秘密情報の世代を順次遡って先行世代の各々の先行第1演算値データを生成できる第1の演算を前記検索時秘密情報で行って、前記検索時第1演算値データを生成することを特徴とする請求項11に記載の情報処理装置。
【請求項13】
秘密情報が更新される度に更新後の秘密情報を記憶する情報処理装置に接続されるサーバ装置であって、
情報処理装置が、データの生成を指示するデータ生成指示を入力した時点における最新の秘密情報である生成時秘密情報で第1の演算を行って生成した生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを、登録データとして記憶する登録データ記憶部と、
情報処理装置が、データの検索を指示するデータ検索指示を入力した時点における最新の秘密情報である検索時秘密情報で第1の演算を行って生成した検索時第1演算値データを、受信する受信部と、
前記受信部により受信された検索時第1演算値データで第2の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを、先行世代の秘密情報を用いた第1の演算を行わずに先行世代の各々に対して生成する第2演算実行部と、
検索時第1演算値データ及び前記第2演算実行部により生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶部内の登録データとを用いてデータの検索を行うデータ検索部とを有することを特徴とするサーバ装置。
【請求項14】
前記第2演算実行部は、
前記検索時第1演算値データで第2の演算を行って、前記検索時秘密情報の1つ前の世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを生成し、以降、生成した先行第1演算値データで第2の演算を行う処理を繰返すことにより秘密情報の世代を順次遡って先行世代の各々の先行第1演算値データを生成することを特徴とする請求項13に記載のサーバ装置。
【請求項15】
サーバ装置に接続される情報処理装置が行う情報処理方法であって、
更新されていく秘密情報を更新の度に記憶する秘密情報記憶ステップと、
データの検索を指示するデータ検索指示を入力する指示入力ステップと、
前記データ検索指示の入力があった際に、前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行ステップと、
前記第1演算実行ステップにより生成された検索時第1演算値データを前記サーバ装置に送信する送信ステップとを有することを特徴とする情報処理方法。
【請求項16】
秘密情報が更新される度に更新後の秘密情報を記憶する情報処理装置に接続されるサーバ装置が行う情報処理方法であって、
情報処理装置が、データの生成を指示するデータ生成指示を入力した時点における最新の秘密情報である生成時秘密情報で第1の演算を行って生成した生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを、登録データとして記憶する登録データ記憶ステップと、
情報処理装置が、データの検索を指示するデータ検索指示を入力した時点における最新の秘密情報である検索時秘密情報で第1の演算を行って生成した検索時第1演算値データを、受信する受信ステップと、
前記受信ステップにより受信された検索時第1演算値データで第2の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを、先行世代の秘密情報を用いた第1の演算を行わずに先行世代の各々に対して生成する第2演算実行ステップと、
検索時第1演算値データ及び前記第2演算実行ステップにより生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶ステップにより記憶されている登録データとを用いてデータの検索を行うデータ検索ステップとを有することを特徴とする情報処理方法。
【請求項17】
サーバ装置に接続される情報処理装置に、
更新されていく秘密情報を更新の度に記憶する秘密情報記憶処理と、
データの検索を指示するデータ検索指示を入力する指示入力処理と、
前記データ検索指示の入力があった際に、前記データ検索指示の入力時点で最新の秘密情報である検索時秘密情報で第1の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを先行世代の秘密情報を用いた第1の演算を伴わない前記サーバ装置における第2の演算により導出可能な検索時第1演算値データを生成する第1演算実行処理と、
前記第1演算実行処理により生成された検索時第1演算値データを前記サーバ装置に送信する送信処理とを実行させることを特徴とするプログラム。
【請求項18】
秘密情報が更新される度に更新後の秘密情報を記憶する情報処理装置に接続されるサーバ装置に、
情報処理装置が、データの生成を指示するデータ生成指示を入力した時点における最新の秘密情報である生成時秘密情報で第1の演算を行って生成した生成時第1演算値データ又は生成時第1演算値データに対して所定の演算がなされた後のデータを、登録データとして記憶する登録データ記憶処理と、
情報処理装置が、データの検索を指示するデータ検索指示を入力した時点における最新の秘密情報である検索時秘密情報で第1の演算を行って生成した検索時第1演算値データを、受信する受信処理と、
前記受信処理により受信された検索時第1演算値データで第2の演算を行って、前記検索時秘密情報に先行する先行世代の秘密情報で第1の演算を行った場合に得られる先行第1演算値データを、先行世代の秘密情報を用いた第1の演算を行わずに先行世代の各々に対して生成する第2演算実行処理と、
検索時第1演算値データ及び前記第2演算実行処理により生成された先行第1演算値データの少なくともいずれかと、前記登録データ記憶処理により記憶されている登録データとを用いてデータの検索を行うデータ検索処理とを実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2011−18976(P2011−18976A)
【公開日】平成23年1月27日(2011.1.27)
【国際特許分類】
【出願番号】特願2009−160755(P2009−160755)
【出願日】平成21年7月7日(2009.7.7)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
【公開日】平成23年1月27日(2011.1.27)
【国際特許分類】
【出願日】平成21年7月7日(2009.7.7)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
[ Back to top ]