説明

データ格納システム及び情報送信装置及びサーバ装置

【課題】サーバに保存された秘密情報をキーワードを指定して検索でき、その際に秘密情報・キーワードをサーバに対して秘匿する秘匿検索システムにおいて、サーバの暗号化バッファ容量を低減する。
【解決手段】送信側演算部はサーバ装置から要素a1を受信すると暗号化バッファ222にa1を暗号化したE(a1)を書き込む。次にa2を受信すると同様にE(a2)を書き込む。インデックス3の格納領域にE(a2)を書き込もうとするときに既にE(a1)が書き込まれているとE(a1)をE(a1+a2)と上書きする。情報検索装置は例えばインデックス3、5のE(a1+a2)、E(a1)を取得すると復号してa1+a2、a1を得る。a1、a2等は部分和問題を解くことができる集合の要素なので情報検索装置401はa1+a2からa1、a2を特定し、a1、a2とa1との共通要素a1を特定し、a1に対応する秘密情報をサーバ装置から取得する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、サーバに保存された秘密情報をキーワードを指定して検索でき、その際に秘密情報・キーワードをサーバに対して秘匿する秘匿検索システムに関する。
【背景技術】
【0002】
サーバに保存された秘密情報を、検索者がキーワードを指定して検索でき、かつその際に秘密情報・キーワードをサーバに対して秘匿する秘匿検索システムは、秘密情報管理のアウトソーシングや、メールサーバにおける暗号化メールのフィルタリングへの応用が期待されている。この秘匿検索システムについては、種々の安全性要件を達成するための技術や、サーバや検索者のストレージ・通信オーバーヘッド・演算オーバーヘッドを削減するための様々な技術が提案されている。非特許文献1では、Bloom Filterをベースとした、キーワードに複数のハッシュ関数を作用させ、この出力が指定する複数の暗号化バッファに秘密情報を登録することで、秘匿されたキーワードからの秘密情報検索が可能となる方式が開示されている。また、特許文献1では、キーワードを暗号化したものにハッシュ関数を作用させ、生成されたインデックスを類似性に基づきグルーピングすることで、高速な検索を可能とする方式が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−052698号公報
【非特許文献】
【0004】
【非特許文献1】D.Boneh, E.Kushilevitz, R.Ostrovsky, and W.Skeith, “Public Key Encryption that Allows PIR Queries,” Advances in Cryptology − CRYPTO 2007, LNCS vol.4622, pp.50−67, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般に、秘匿検索システムでは、複数の文書がサーバに格納され、これに伴いキーワード格納処理も繰り返し実行される。非特許文献1にて開示されている方式では、同一の暗号化バッファに複数の秘密情報が書き込まれるため、上書きによる情報の消失を防ぐために、各暗号化バッファのサイズを十分大きく確保する必要がある。この結果、サーバに必要なストレージが増大し、また通信オーバーヘッドも増大するという課題があった。
【0006】
本発明は、暗号化バッファに書き込む情報として、部分和問題が解けるような特別な値を利用し、同一の暗号化バッファに複数の秘密情報が書き込まれた際にも各秘密情報が復元可能となるようにすることで、各暗号化バッファのサイズを削減し、サーバに必要なストレージや通信オーバーヘッドを小さく抑えることを目的とする。
【課題を解決するための手段】
【0007】
この発明のデータ格納システムは、
データに検索用のキーワードが付加され暗号化された暗号化キーワード付加データを送信する情報送信装置と、前記情報送信装置から送信された暗号化キーワード付加データを受信して格納するサーバ装置とを備えたデータ格納システムにおいて、
前記情報送信装置は、
処理を実行する送信側演算部を備え、
前記サーバ装置は、
アドレスが付与されたそれぞれの格納領域を有するサーバ側格納部と、
前記サーバ側格納部の各アドレスに対して、集合の要素のうち互いに異なる要素の和からその和をなす要素を特定する部分和問題が解ける集合を示す部分和問題対象集合の要素をアドレス対応要素として対応付けたアドレス対応情報を格納するサーバ側対応情報格納部と、
所定の暗号化データを格納する格納領域であって暗号化データの格納箇所を示すインデックスが付与された格納領域を有するサーバ側暗号化バッファと、
処理を実行するサーバ側演算部と
を備え、
前記送信側演算部は、
前記暗号化キーワード付加データを前記サーバ装置に送信し、
前記サーバ側演算部は、
前記暗号化キーワード付加データを受信すると、受信された前記暗号化キーワード付加データを前記サーバ側格納部のいずれかの格納領域に格納し、前記暗号化キーワード付加データが格納された格納領域のアドレスに対応する前記アドレス対応要素を前記アドレス対応情報から特定し、特定された前記アドレス対応要素を前記情報送信装置に送信し、
前記送信側演算部は、
前記アドレス対応要素を受信すると、前記サーバ装置に送信した前記暗号化キーワード付加データのキーワードを、入力値に対して前記サーバ側暗号化バッファの前記インデックスの示す値の範囲のいずれかの値を出力値として出力する複数の関数であって少なくとも2つの関数は異なる出力値を出力する複数の関数の各関数に入力値として入力して出力値を取得し、取得された前記出力値の示すインデックスの前記サーバ側暗号化バッファの前記格納領域に前記サーバ装置から受信した前記アドレス対応要素を所定の暗号化方式により暗号化して暗号化データとして書き込むと共に、前記インデックスの示す前記格納領域に暗号化データを既に書き込んでいる場合には、前記暗号化方式を用いることにより、既に書き込んでいる前記暗号化データの平文の示す値に新たに格納しようとする前記アドレス対応要素の平文の示す値が加算され、かつ、暗号化された暗号化データを上書きすることを特徴とする。
【発明の効果】
【0008】
この発明により、サーバ装置の備える暗号化バッファのサイズを削減し、サーバ装置に必要なストレージや通信オーバーヘッドを小さく抑えることができる。
【図面の簡単な説明】
【0009】
【図1】実施の形態1における秘匿検索システム1000の構成図。
【図2】実施の形態1におけるサーバ装置201のブロック図。
【図3】実施の形態1における情報送信装置301のブロック図。
【図4】実施の形態1における情報検索装置401のブロック図。
【図5】実施の形態1におけるアドレス対応情報を示す図。
【図6】実施の形態1における秘密情報記憶領域221を示す図。
【図7】実施の形態1における暗号化バッファ222を示す図。
【図8】実施の形態1における秘匿検索システム1000の動作概要のシーケンス。
【図9】実施の形態1におけるサーバ装置201の設定動作のフローチャート。
【図10】実施の形態1におけるサーバ装置201の設定後の各記憶領域状態を示す図。
【図11】実施の形態1における暗号化バッファ222を示す図。
【図12】実施の形態1における情報送信装置301の動作を示すシーケンス。
【図13】実施の形態1における暗号化バッファ222を示す図。
【図14】実施の形態1における暗号化バッファ222を示す図。
【図15】実施の形態1における暗号化バッファ222を示す図。
【図16】実施の形態1における情報検索装置401の動作のシーケンス。
【図17】実施の形態1における取得した暗号化データを示す図。
【図18】実施の形態1における復号されたデータを示す図。
【図19】実施の形態1における部分和として分解されたデータを示す図。
【図20】実施の形態1における暗号化バッファ222の容量削減を示す図。
【図21】実施の形態2におけるサーバ装置201の外観の一例。
【図22】実施の形態1におけるサーバ装置201のハードウェア資源の例を示す図。
【発明を実施するための形態】
【0010】
実施の形態1.
図1〜図20を参照して実施の形態1を説明する。図1は、秘匿検索システム1000(データ格納システム)の構成を示す図である。秘匿検索システム1000は、サーバ装置201に保存された秘密情報を、検索者がキーワードwを指定して検索でき、かつその際に秘密情報及びキーワードをサーバ装置201に対して秘匿可能な秘匿検索システムである。秘匿検索システム1000は、サーバ装置201、複数の情報送信装置301、情報検索装置401から構成される。サーバ装置201、情報送信装置301、情報検索装置401は互いにネットワーク101を介して通信可能である。
【0011】
図2は、秘密情報を保持し、および保持する秘密情報を検索されるサーバ装置201のブロック図である。
【0012】
(サーバ装置201)
サーバ装置201は、処理を実行するサーバ側演算部232、サーバ側演算部232の制御により他の装置と通信を行うサーバ側通信部231、情報を記憶するサーバ側記憶部250を備えている。サーバ側記憶部250は、後述のハッシュ関数を格納するハッシュ関数記憶領域211、後述するアドレス対応情報を格納するアドレス対応記憶領域212(サーバ側対応情報格納部)、後述の秘密情報c1等を格納する秘密情報記憶領域221(サーバ側格納部)、後述の暗号化データEを格納する暗号化バッファ222(サーバ側暗号化バッファ)を備えている。
【0013】
(サーバ側記憶部250)
(1)ハッシュ関数記憶領域211は、キーワードwに作用させる複数のハッシュ関数hを記憶するデータ記憶手段であり、ここに記憶されるデータは公開情報として一般に公開される。このハッシュ関数hは、情報送信装置301、情報検索装置401が使用する。(2)アドレス対応記憶領域212は、秘密情報記憶領域221のアドレスρと、部分和問題の対象となる集合の要素a(アドレス対応要素)との対応付けを示すアドレス対応情報を記憶するデータ記憶手段であり、ここに記憶されるデータは公開情報として一般に公開される。アドレス対応情報は、サーバ装置201、情報検索装置401が利用する。図5は、アドレス対応記憶領域212が記憶するデータ(アドレス対応情報)を表す。
(3)秘密情報記憶領域221は、情報送信装置301から受信した秘密情報(後述のc1等)を記憶するデータ記憶手段である。図6は、秘密情報記憶領域221が記憶するデータを表している。図6は、情報送信装置301から送信された秘密情報ciがアドレスρiに格納された状態を示している。
(4)暗号化バッファ222は、キーワードと、部分和問題の対象となる集合の要素との対応付けを行うためのデータ記憶手段である。図7は、暗号化バッファ222が記憶するデータを表す。暗号化バッファ222には情報送信装置301によって後述の暗号化データE(a1)等が書き込まれる。
(5)サーバ側通信部231は、情報送信装置301や情報検索装置401と通信を行う手段である。
(6)サーバ側演算部232は、共通鍵・公開鍵暗号の鍵生成・暗号化・復号、及びハッシュ関数処理、集合生成、乱数生成などの演算を行う手段である。
【0014】
(情報送信装置301)
図3は、秘匿検索システム1000において、秘密情報をサーバ装置201に送信する情報送信装置301のブロック図である。情報送信装置301は、送信側通信部331、送信側演算部332を備えている。送信側通信部331は、送信側演算部332の制御により他の装置とネットワーク101を介して通信を行う。送信側演算部332は、共通鍵・公開鍵暗号の鍵生成・暗号化・復号、ハッシュ関数、乱数生成などの演算や処理を行う。
【0015】
(情報検索装置401)
図4は、秘匿検索システム1000において、サーバ装置201に格納された秘密情報を検索・取得する情報検索装置401のブロック図である。情報検索装置401は、検索側通信部431、検索側演算部432、検索側記憶部420を備えている。検索側記憶部420は、秘密鍵記憶領域421、検索側関数格納部422、検索側対応情報格納部423を備えている。
【0016】
(1)図4において、秘密鍵記憶領域421は、自身(その情報検索装置401)が利用する公開鍵暗号の「秘密鍵」を記憶するデータ記憶手段である。
(2)検索側関数格納部422は、サーバ装置201から取得されたハッシュ関数(公開情報)を格納する記憶領域である。
(3)検索側対応情報格納部423は、サーバ装置201から取得されたアドレス対応情報(公開情報)を格納する記憶領域である。
【0017】
検索側通信部431は、サーバ装置201と通信を行う手段である。検索側演算部432は、共通鍵・公開鍵暗号の鍵生成・暗号化・復号、ハッシュ関数、乱数生成などの演算を行う手段である。
【0018】
(秘匿検索システム1000の動作概要)
図8は秘匿検索システム1000の動作概要を示すシーケンスである。図8に示すように、秘匿検索システム1000のシステムの動作は、
(1)サーバ装置201の初期設定を行う部分(ステップS10)、
(2)情報送信装置301が秘密情報をサーバ装置201に送信・格納する部分(ステップS20)、
(3)情報検索装置401が秘密情報をサーバ装置201から検索・取得する部分(ステップS30)に大別される。以下、それぞれの手続きについて説明する。
【0019】
(S10:サーバの初期設定)
図9は、サーバ装置201の初期設定を示すフローチャートである。また、図10は、初期設定の終了後の各記憶領域の状態を示す図である。
これらを参照して説明する。
【0020】
(S11:ハッシュ関数hiの定義)
S11において、サーバ装置201は、キーワードwを入力値とした場合に、1からtのいずれかを出力値とする、k個の独立なハッシュ関数hi(i=1、2、・・・k)を定義し、ハッシュ関数記憶領域211に格納して公開情報とする。ハッシュ関数hi(i=1、2、・・・k)のうち少なくとも2つの関数は、同一のキーワードwを入力値とする場合、異なる出力値を出力するものとする。ここで「1からt」は、暗号化バッファ222のインデックスである。すなわち、同一のキーワードwを入力とする場合、ハッシュ関数hi(i=1、2、・・・k)のうち2つは、異なる2つのインデックス値を出力する。またキーワードwとは、後述のように、情報送信装置301から送信されるデータに含まれるキーワードである。
【0021】
(S12:アドレス対応情報の生成)
次に、S12において、サーバ側演算部232は、部分和問題が解けるような
集合A={a1,a2・・・・・・,an}
を生成する。部分和問題とは、与えられたn個の整数a1,a2,・・・anから部分集合を選び、その部分集合の和が与えられた整数Nに等しくなるようにする問題である。サーバ側演算部232は、図10に示すように、秘密情報記憶領域221の
アドレス{ρ1,ρ2,・・・,ρn}
に集合Aの要素ai(アドレス対応要素)を対応付けたアドレス対応情報をアドレス対応記憶領域212に格納して公開情報とする。部分和問題が解ける集合の生成については後述する。
【0022】
なお、これらの公開情報(複数のハッシュ関数、アドレス対応情報)は、別の場所で公開しても良いし、情報送信装置301や情報検索装置401とあらかじめ共有しておいても良い。
【0023】
(S13:初期値E(0)の設定)
最後に、S13において、サーバ側演算部232は、情報検索装置401に対応する暗号化バッファ222の各インデックスに対し、情報検索装置401に対応する公開鍵で、0(ゼロ)を暗号化した結果E(0)を格納する。図10の暗号化バッファ222(図11そのもの)は、その状態を示している。
【0024】
(部分和問題が解ける集合について)
部分和問題が解けるような集合としては、
(1)必ず解が一意に定まるように、例えば集合Aを超増加列となるように取ることが可能である。
(2)また、実用上では、例えば「和がm個以下の要素からなる部分和であるという条件下で解が一意に定まる」ような集合Aを利用することも可能である。このような集合Aとしては、フィボナッチ数列やトリボナッチ数列をベースとする集合が利用できる。また、互いに素である値(例えばそれぞれ異なる素数)の離散対数をとったものを各要素とする集合も利用可能である。具体的には、
n個の互いに素な数{p1,p2,・・・,pn}
を選び、この中から選んだ任意のm個の積よりも大きくなるような素数pを選ぶ。群Z/pZの生成元gを選び、
pi≡g^ai(mod p)
を満たすaiを全てのpiについて求め、これを、
A={a1,a2,・・・,an}
として利用する。部分和問題を解く際には、集合Aの部分和uに対し、
r=g^u(mod p)
を求め、rがpiで割り切れた場合に限りaiを部分集合の要素と判定すれば良い。
【0025】
(S20:サーバ装置201への秘密情報の格納)
図12は、サーバ装置201への秘密情報の格納動作を示すシーケンスである。図12、及び図10を参照して秘密情報の格納動作を説明する。
【0026】
情報送信装置301の送信側演算部332は、秘密情報にキーワードw1を追加したものを、情報検索装置401に対応する公開鍵で暗号化し、その結果である暗号化データc1(暗号化キーワード付加データ)を送信側通信部331を介してサーバ装置201に送信する(S21)。次に、サーバ装置201のサーバ側演算部232は、図10に示すように、受信した暗号文c1を秘密情報記憶領域221に格納し(S22)、格納したアドレスρx(この例ではρ1とする)をもとに、アドレス対応記憶領域212のアドレス対応情報から対応する集合Aの要素axを取得し、ax(アドレス対応要素)をサーバ側通信部231を介して情報送信装置301に送信する(S23)。図10の例ではアドレスρ1には要素a1が対応するので、情報送信装置301には要素a1が送信される。以下、axを要素a1として説明する。
【0027】
情報送信装置301では要素a1を受信すると、送信側演算部332がサーバ装置201の暗号化バッファ222に要素a1の情報を書き込む(S24)。具体的には、送信側演算部332がハッシュ関数h1(w1)の値を計算し、暗号化バッファ222のインデックスh1(w1)の箇所にa1の情報E(a1)を書き込む。なお情報送信装置301は、図示していない送信側記憶部にサーバ装置201から取得した公開情報であるハッシュ関数を格納している。E(a1)は所定の暗号化方式によってa1を暗号化した暗号化データである。この際、非特許文献1にて開示されているModifyプロトコル(所定の暗号化方式の一例)を用いることで、サーバ装置201が変更内容(どこの値がどう変わったか)を知ることなく、平文の値に要素axを加算する変更を行うことができる。すなわちE(a1)が既に存在するような場合においてa1にa2を加算する場合は、サーバ装置201に変更内容を知られることなく、平文a1の値に平文a2を加算した暗号化データE(a1+a2)をE(a1)を復号することなく得ることができる。
【0028】
例えば、暗号化バッファ222が図11のようにすべてE(0)の内容である場合に、インデックス3の箇所にa1を暗号化した暗号化データE(a1)を書き込んだ場合(要素a1を受信し、h1(w1)=3となった場合)、暗号化バッファ222の内容は図13のように、インデックス3の格納領域にE(a1)が格納される。以上の書き込みをk個のハッシュ関数hiのすべてについて行う(S25)。例えば、単純な場合を例にとれば、要素a1を受信した場合において、
h1(w1)=3、
h2(w1)=t、
h3(w1)=5
である場合、
暗号化バッファ222の内容は図14のようになる。ただし、hi(w1)の値によって同一のインデックスが複数回指定された場合でも、同一インデックスの箇所への書き込みは一度だけとする。
例えば、
h1(w1)=3、
h2(w1)=3
となったような場合は、同一インデックス3の箇所へのE(a1)の書き込みは一度だけとする。この結果、暗号化バッファ222の内容は例えば図13のようになる。
【0029】
同様の書き込みは別の秘密情報およびキーワードw2についても行われる。例えば、暗号化バッファ222が図14の内容である場合に、別のキーワードw2について上記S21〜S25を行い、k個のハッシュ関数hiについて要素a2の情報E(a2)を書き込んだ場合、暗号化バッファ222の内容は、例えば図15のようになる。すなわち、図12において、送信側演算部332が送信側通信部331を介してキーワードw2を含む暗号文c2をサーバ装置201に送信し、サーバ装置201から要素a2を受信した場合である。この場合も同様にh1(w2)等を計算する。例えば下記のようになったとする。
h1(w2)=3、
h2(w2)=6、
h3(w2)=t−1
となったとする。この場合、送信側演算部332は、暗号化バッファ222のインデックス3、6、t−1に、E(a2)を格納する。図15に示すように、インデックス3には既にE(a1)が書き込まれているが、送信側演算部332は、上記で述べたように、Modifyプロトコルに基づいて、サーバ装置201に変更内容を知られることなく、平文a1の値に平文a2を加算した暗号化データE(a1+a2)をE(a1)を復号することなく生成して格納する。
【0030】
(S30:情報検索装置401による秘密情報の取得)
図16は、情報検索装置401による秘密情報の取得を示すシーケンスである。次に図16を参照して情報検索装置401による秘密情報の取得を説明する。情報検索装置401の目的は、あるキーワードwiに対し、これに関連する秘密情報をサーバ装置201から取得することである。これを達成するために、サーバ装置201の暗号化バッファ222から、「キーワードwiに関連する秘密情報が格納されたアドレスρxに対応付けられた値ax」の取得を行う。
【0031】
以下の説明では、キーワードをw1とする。まず、検索側演算部432がk個のハッシュ関数hi(w1)の値を計算し、暗号化バッファ222のインデックスhi(w1)の箇所に格納されている情報Eを取得する(hi(w1)の値に同一のものが含まれる場合は、取得される情報はハッシュ関数の個数k個よりも少なくなる)(S31)。ハッシュ関数hiは、公開情報としてサーバ装置201が生成したものである。この際、非特許文献1などで開示されているPIRプロトコルを用いることで、サーバ装置201が取得内容(情報検索装置401がどの値を取得したか)を知ることなく、暗号化データEを取得できる。例えば、暗号化バッファ222が図7の内容である場合には、インデックス3、5、tの暗号化データである、
E(a1+a2),E(a1+a4+a5),E(a1+a6)
を取得する。取得した内容は図17のようになる。
【0032】
次に、検索側演算部432は、秘密鍵記憶領域421が保持する秘密鍵を用いて、取得した暗号化データを復号する(S32)。例えば、図17の内容を復号した場合、結果は図18のようになる。この結果、それぞれの値は部分和問題対象集合Aの部分和となっている。このため、検索側演算部432は部分和問題を解くことで、部分和をAの要素に分解することができる(S33)。例えば、図18の内容に対して部分和問題を解いた場合、結果は図19のようになる。すなわち、検索側演算部432は部分和問題を解くことにより、例えば、図18の「a1+a2」については、この値を、要素a1と要素a2とに分解する。
【0033】
この結果に対し、検索側演算部432が共通部分を計算することで、「キーワードw1に関連する秘密情報が格納されたアドレスρxに対応付けられた値ax」が取得できる(S34)。例えば、図19の内容からは、「a1、a2」、「a1、a4、a5」、「a1、a6」の共通部分(共通要素)としてa1が取得される。
【0034】
その後、情報検索装置401は、取得した値a1をもとに、サーバ装置201のアドレス対応記憶領域212から対応するアドレスρ1を取得する(S35)。すなわち、情報検索装置401は、検索側対応情報格納部423にサーバ装置201のアドレス対応記憶領域212に格納されているアドレス対応情報と同一のアドレス対応情報(検索側アドレス対応情報という)を保有している。検索側演算部432は、検索側アドレス対応情報を参照して「a1」から「ρ1」を特定する。アドレス対応記憶領域212のアドレス対応情報は公開情報であるが、検索側アドレス対応情報は、前もって取得しておき検索側対応情報格納部423に格納してもよいし、「a1」を特定したときに、サーバ装置201から取得して格納しても構わない。
【0035】
最後に、検索側通信部431と検索側演算部432がPIRプロトコルを実行し、サーバ装置201の秘密情報記憶領域221のアドレスρ1に格納されている情報c1を(サーバ装置201に内容を知られることなく)取得し、秘密鍵記憶領域421が保持する秘密鍵で復号することで目的の(キーワードw1に関連する)秘密情報を得ることができる(S36)。
【0036】
非特許文献1にて開示されている方式では、情報送信装置が暗号化バッファへ書き込みを行う際に、上書きによる情報の消失を防ぐために、暗号化バッファの各インデックスに対し、複数個の格納場所を確保する必要があり、結果的に暗号化バッファのサイズを十分大きく確保する必要があった。この結果、サーバに必要なストレージが増大し、またModifyプロトコルにおける通信オーバーヘッドが非常に大きくなるという課題もあった。本実施の形態1のように、部分和問題が解けるような特別な値axを書き込むことで、上書きによる情報の消失を防ぐことができ、暗号化バッファのサイズ、およびModifyプロトコルなどでの通信オーバーヘッドを大幅に削減することが可能となる。
【0037】
図20を参照してこの効果を簡単に説明する。図20は暗号化バッファ222を示す図である。実施の形態1の方式(部分和問題対象集合)を採用しない場合は、暗号化バッファ222には、インデックスごとに1〜qの格納領域を用意する必要があった。そして、情報送信装置301は、要素aにキーワードw1が対応する場合において、
h1(w1)=2、
h2(w1)=t、
hk(w1)=1
である場合、E(a)をインデックス1に複数個書き込み、インデックス2にも複数個書き込み、インデックスtにも複数個書き込んだ。そして、情報送信装置301は、要素bにキーワードw2が対応する場合において、
h1(w2)=2
である場合、例えば、インデックス2のq列の格納領域に書き込まれているE(a)をE(a+b)と上書きしたが、E(a+b)からは要素a,bを取り出すことはできず、E(a+b)のデータは使用できなかった。言い換えれば、E(a+b)のように使用できないデータが発生したとしても他の格納領域にE(b)が書き込めるようにするため、インデックスごとに1〜qの格納領域を用意することで、E(a+b)のようなデータの発生の手当をしていた。このため暗号化バッファのサイズを十分大きく確保する必要があった。しかし、実施の形態1の方式では要素a,bは部分和問題対象集合Aの要素であるので、上記のように、情報検索装置401はE(a+b)を要素a,bに分解することが可能である。このため、図20の暗号化バッファにおいて、インデックスごとに2〜qの格納領域は不要となるので、暗号化バッファのサイズを削減できる。
【0038】
なお、本実施の形態1では、各秘密情報に対し一つのキーワードを対応付けているが、複数のキーワードを対応付けるようにしても良い。
【0039】
また、本実施の形態1では、各暗号化バッファは値を一つだけ格納できるものとなっているが、複数個の格納場所を確保したうえで、非特許文献1の内容と組み合わせることも可能である。
【0040】
実施の形態2.
図21、図22を参照して実施の形態2を説明する。
【0041】
実施の形態2は、サーバ装置201、情報送信装置301、あるいは情報検索装置401をコンピュータで実現する具体的な実施形態を示す。サーバ装置201、情報送信装置301、情報検索装置401はずれもコンピュータで実現可能であるので、サーバ装置201を想定して説明する。
【0042】
図21は、サーバ装置201の外観の一例を示す図である。図21において、サーバ装置201は、システムユニット830、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置813、キーボード814(Key・Board:K/B)、マウス815、FDD817(Flexible・Disk・ Drive)、コンパクトディスク装置818(CDD:Compact Disk Drive)、プリンタ装置819などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
【0043】
図22は、コンピュータで実現されるサーバ装置201のハードウェア資源の一例を示す図である。図22において、サーバ装置201は、プログラムを実行するCPU810(Central Processing Unit)を備えている。CPU810は、バス825を介してROM(Read Only Memory)811、RAM(Random Access Memory)812、表示装置813、キーボード814、マウス815、通信ボード816、FDD817、CDD818、プリンタ装置819、磁気ディスク装置820と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置820の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【0044】
RAM812は、揮発性メモリの一例である。ROM811、FDD817、CDD818、磁気ディスク装置820等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部、バッファの一例である。通信ボード816、キーボード814、FDD817などは、入力部、入力装置の一例である。また、通信ボード816、表示装置813、プリンタ装置819などは、出力部、出力装置の一例である。
【0045】
通信ボード816(通信部の一例)は、ネットワーク(LAN等)に接続されている。通信ボード816は、LANに限らず、インターネット、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。
【0046】
磁気ディスク装置820には、オペレーティングシステム821(OS)、ウィンドウシステム822、プログラム群823、ファイル群824が記憶されている。プログラム群823のプログラムは、CPU810、オペレーティングシステム821、ウィンドウシステム822により実行される。
【0047】
上記プログラム群823には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、CPU810により読み出され実行される。
【0048】
ファイル群824には、以上の実施の形態の説明において、「ハッシュ関数」、「アドレス対応情報」、「秘密情報」、「暗号化データ」として説明した情報や、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU810によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【0049】
また、以上に述べた実施の形態の説明において、データや信号値は、RAM812のメモリ、FDD817のフレキシブルディスク、CDD818のコンパクトディスク、磁気ディスク装置820の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス825や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0050】
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」、「〜回路」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ROM811に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU810により読み出され、CPU810により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
【0051】
以上の実施の形態1では、サーバ装置201、情報送信装置301、情報検索装置401として装置を説明したが、実施の形態2のように、サーバ装置201等の動作をコンピュータに実行させるプログラムとして把握することも可能である。あるいは、プログラムを記録したコンピュータ読み取り可能な記録媒体として把握することも可能である。さらに、サーバ装置201、情報送信装置301、情報検索装置401の動作をサーバ装置201等の行う方法として把握することも可能である。
【0052】
以上の実施の形態1では、
(1)サーバに保存された秘密情報を、検索者がキーワードを指定して検索でき、かつその際に秘密情報・キーワードをサーバに対して秘匿する秘匿検索システムにおいて、検索対象の値をBloom Filterを利用して格納する際、格納する値の集合を、部分和問題が解けるような集合とすることで、複数の値が同一の箇所に格納された場合でもそれぞれの値が得られるようにし、結果としてバッファサイズや通信量を削減する方式を説明した。
(2)また(1)において、部分和問題として、解が一意に定まるものを利用する方式を説明した。
(3)また、(1)において、部分和問題として、ある条件のもとで解が一意に定まるものを利用する方式を説明した。
なお、部分和問題として、ある条件のもとで解が一意に定まるものを利用する具体例としては、次のような場合がある。
m=2の場合、すなわち2個までの要素の和であれば解ける場合を例に挙げる。例えばフィボナッチ数列をベースとした集合として以下の集合Aを考える。集合Aは、通常のフィボナッチ数列の各項から1を引いた数列である。
A={1,2,4,7,12,20,33,54,...}
このように集合Aを定めると、与えられた部分和に対し、これを2個までの要素の部分和に分解する方法が高々1とおりに定まる。
例えば、
11=7+4、
12=12、
13=12+1、
14=12+2、
15=(解なし)、
16=12+4、
となる。
従って、検索側演算部432は、「部分和が2個までの要素からなることを仮定して」、上記のような分解(=部分和問題を解くこと)を行う。
なお、実際には、情報格納時に(確率は低いながら)3個以上の衝突が生じ、例えば以下のようなケースが生じることが考えられる。
(a)同一箇所に2,4,7を書き込んだ場合。
復号して得られる部分和は13となるため、上記に従い、「1,12」が書き込まれたと判断してそのまま処理を続行する(誤り)。
(13=12+1=7+4+2)
(b)同一箇所に1,2,12を書き込んだ場合。
復号して得られる部分和は15となり、2個までの要素の部分和で表すことができないため、処理を終了する(失敗)。
3個以上の衝突が生じたことは検出できる。
いずれの場合も本来期待する結果を得ることはできないが、これは3個以上の衝突が生じた場合に限られる。これらの場合には解けないことを犠牲にしながら、衝突が2個までの場合は正しい結果が得られ、また集合Aの増加スピードを緩やかにできるのが本方式(部分和問題として、ある条件のもとで解が一意に定まるものを利用する場合)の特徴である。
(4)また(3)において、部分和問題として、互いに素である値の離散対数をとったものを各要素とする集合を考えるものを利用する方式を説明した。
【符号の説明】
【0053】
201 サーバ装置、231 サーバ側通信部、232 サーバ側演算部、211 ハッシュ関数記憶領域、212 アドレス対応記憶領域、221 秘密情報記憶領域、222 暗号化バッファ、250 サーバ側記憶部、301 情報送信装置、331 送信側通信部、332 送信側演算部、401 情報検索装置、31 検索側通信部、432 検索側演算部、420 検索側記憶部、421 秘密鍵記憶領域、422 検索側関数格納部、423 検索側対応情報格納部、1000 秘匿検索システム。

【特許請求の範囲】
【請求項1】
データに検索用のキーワードが付加され暗号化された暗号化キーワード付加データを送信する情報送信装置と、前記情報送信装置から送信された暗号化キーワード付加データを受信して格納するサーバ装置とを備えたデータ格納システムにおいて、
前記情報送信装置は、
処理を実行する送信側演算部を備え、
前記サーバ装置は、
アドレスが付与されたそれぞれの格納領域を有するサーバ側格納部と、
前記サーバ側格納部の各アドレスに対して、集合の要素のうち互いに異なる要素の和からその和をなす要素を特定する部分和問題が解ける集合を示す部分和問題対象集合の要素をアドレス対応要素として対応付けたアドレス対応情報を格納するサーバ側対応情報格納部と、
所定の暗号化データを格納する格納領域であって暗号化データの格納箇所を示すインデックスが付与された格納領域を有するサーバ側暗号化バッファと、
処理を実行するサーバ側演算部と
を備え、
前記送信側演算部は、
前記暗号化キーワード付加データを前記サーバ装置に送信し、
前記サーバ側演算部は、
前記暗号化キーワード付加データを受信すると、受信された前記暗号化キーワード付加データを前記サーバ側格納部のいずれかの格納領域に格納し、前記暗号化キーワード付加データが格納された格納領域のアドレスに対応する前記アドレス対応要素を前記アドレス対応情報から特定し、特定された前記アドレス対応要素を前記情報送信装置に送信し、
前記送信側演算部は、
前記アドレス対応要素を受信すると、前記サーバ装置に送信した前記暗号化キーワード付加データのキーワードを、入力値に対して前記サーバ側暗号化バッファの前記インデックスの示す値の範囲のいずれかの値を出力値として出力する複数の関数であって少なくとも2つの関数は異なる出力値を出力する複数の関数の各関数に入力値として入力して出力値を取得し、取得された前記出力値の示すインデックスの前記サーバ側暗号化バッファの前記格納領域に前記サーバ装置から受信した前記アドレス対応要素を所定の暗号化方式により暗号化して暗号化データとして書き込むと共に、前記インデックスの示す前記格納領域に暗号化データを既に書き込んでいる場合には、前記暗号化方式を用いることにより、既に書き込んでいる前記暗号化データの平文の示す値に新たに格納しようとする前記アドレス対応要素の平文の示す値が加算され、かつ、暗号化された暗号化データを上書きすることを特徴とするデータ格納システム。
【請求項2】
前記データ格納システムは、さらに、
前記サーバ装置と通信することにより前記サーバ装置に格納されている暗号化キーワード付加データを検索して取得する情報検索装置を備え、
前記情報検索装置は、
前記情報送信装置が使用する前記複数の関数と同一の複数の関数を格納する検索側関数格納部と、
前記サーバ側格納部に格納された前記アドレス対応情報と同一の情報である検索側アドレス対応情報を格納する検索側対応情報格納部と、
取得対象の暗号化キーワード付加データのキーワードを前記検索側関数格納部の前記複数の関数の各関数に入力値として入力して出力値を取得し、取得された前記出力値の示すインデックスの格納領域に格納されている暗号化データを前記サーバ側暗号化バッファからすべて取得し、取得されたすべての暗号化データを復号し、復号された各暗号化データの値を対象として部分和問題を解くことにより復号後の暗号化データを部分和をなす要素に分解し、復号後のどの暗号化データにも共通して存在するアドレス対応要素を共通要素として特定し、特定された共通要素に対応するアドレスを前記検索側対応情報格納部の検索側アドレス対応情報を参照することにより特定し、特定されたアドレスに格納されている暗号化キーワード付加データを前記サーバ側格納部から取得し、取得された前記暗号化キーワード付加データを復号する検索側演算部と
を備えたことを特徴とする請求項1記載のデータ格納システム。
【請求項3】
前記部分和問題対象集合は、
部分和問題として解が一意に定まる集合と、部分和問題として所定の条件のもとで解が一意に定まる集合とのいずかであることを特徴とする請求項1または2のいずれかに記載のデータ格納システム。
【請求項4】
前記部分和問題対象集合は、
部分和問題として、互いに素である値の離散対数をとった値を各要素とすることを特徴とする請求項1または2のいずれかに記載のデータ格納システム。
【請求項5】
データに検索用のキーワードが付加され暗号化された暗号化キーワード付加データを送信する情報送信装置を送信する情報送信装置において、
前記暗号化キーワード付加データを受信するサーバ装置であって、
前記アドレスが付与されたそれぞれの格納領域を有するサーバ側格納部と、
前記サーバ側格納部の各アドレスに対して、集合の要素のうち互いに異なる要素の和からその和をなす要素を特定する部分和問題が解ける集合を示す部分和問題対象集合の要素をアドレス対応要素として対応付けたアドレス対応情報を格納するサーバ側対応情報格納部と、
所定の暗号化データを格納する格納領域であって暗号化データの格納箇所を示すインデックスが付与された格納領域を有するサーバ側暗号化バッファと、
前記暗号化キーワード付加データを受信すると、受信された前記暗号化キーワード付加データを前記サーバ側格納部のいずれかの格納領域に格納し、前記暗号化キーワード付加データが格納された格納領域のアドレスに対応する前記アドレス対応要素を前記アドレス対応情報から特定し、特定された前記アドレス対応要素を前記暗号化キーワード付加データの送信元に送信するサーバ側演算部と
を備えたサーバ装置から、
前記アドレス対応要素を受信すると、前記サーバ装置に送信した前記暗号化キーワード付加データのキーワードを、入力値に対して前記サーバ側暗号化バッファの前記インデックスの示す値の範囲のいずれかの値を出力値として出力する複数の関数であって少なくとも2つの関数は異なる出力値を出力する複数の関数の各関数に入力値として入力して出力値を取得し、取得された前記出力値の示すインデックスの前記サーバ側暗号化バッファの前記格納領域に前記サーバ装置から受信した前記アドレス対応要素を所定の暗号化方式により暗号化して暗号化データとして書き込むと共に、前記インデックスの示す前記格納領域に暗号化データを既に書き込んでいる場合には、前記暗号化方式を用いることにより、既に書き込んでいる前記暗号化データの平文の示す値に新たに格納しようとする前記アドレス対応要素の平文の示す値が加算され、かつ、暗号化された暗号化データを上書きする送信側演算部
を備えたことを特徴とする情報送信装置。
【請求項6】
データに検索用のキーワードが付加され暗号化された暗号化キーワード付加データを送信する情報送信装置から暗号化キーワード付加データを受信して格納するサーバ装置において、
アドレスが付与されたそれぞれの格納領域を有するサーバ側格納部と、
前記サーバ側格納部の各アドレスに対して、集合の要素のうち互いに異なる要素の和からその和をなす要素を特定する部分和問題が解ける集合を示す部分和問題対象集合の要素をアドレス対応要素として対応付けたアドレス対応情報を格納するサーバ側対応情報格納部と、
前記情報送信装置から前記暗号化キーワード付加データを受信すると、受信された前記暗号化キーワード付加データを前記サーバ側格納部のいずれかの格納領域に格納し、前記暗号化キーワード付加データが格納された格納領域のアドレスに対応する前記アドレス対応要素を前記アドレス対応情報から特定し、特定された前記アドレス対応要素を前記情報送信装置に送信するサーバ側演算部と、
前記アドレス対応要素を受信した前記情報送信装置によって暗号化データが格納されるサーバ側暗号化バッファと
を備えたことを特徴とするサーバ装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図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

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2010−165275(P2010−165275A)
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願番号】特願2009−8609(P2009−8609)
【出願日】平成21年1月19日(2009.1.19)
【出願人】(000006013)三菱電機株式会社 (33,312)
【出願人】(504133110)国立大学法人電気通信大学 (383)
【Fターム(参考)】