JP6493402B2 - 追加装置、削除装置、追加依頼装置、データ検索システム、データ検索方法、および、コンピュータプログラム - Google Patents

追加装置、削除装置、追加依頼装置、データ検索システム、データ検索方法、および、コンピュータプログラム Download PDF

Info

Publication number
JP6493402B2
JP6493402B2 JP2016531110A JP2016531110A JP6493402B2 JP 6493402 B2 JP6493402 B2 JP 6493402B2 JP 2016531110 A JP2016531110 A JP 2016531110A JP 2016531110 A JP2016531110 A JP 2016531110A JP 6493402 B2 JP6493402 B2 JP 6493402B2
Authority
JP
Japan
Prior art keywords
identifier
information
encrypted
key information
start point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016531110A
Other languages
English (en)
Other versions
JPWO2016002198A1 (ja
Inventor
俊則 荒木
俊則 荒木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2016002198A1 publication Critical patent/JPWO2016002198A1/ja
Application granted granted Critical
Publication of JP6493402B2 publication Critical patent/JP6493402B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、対象データに対して完全一致検索を行う技術に関する。
完全一致検索処理は、複数のデータから特定のキーワードに完全に一致するデータを抽出する処理である。この処理は、データそれぞれについてキーワードと完全に一致するかどうかを判定することで実行できる。しかし、検索処理のたびに検索対象データをすべて解析して特定のキーワードと完全に一致しているかどうかを判定する方法は、非効率的である。
そこで、完全一致検索処理を効率的に実行する方法の一例として、検索対象のデータ自体に加えて、キーワードに対する検索結果を示す情報を保管することが知られている。この方法の利点は、検索処理のたびにデータを解析する必要が無く、キーワードについて保管している検索結果が示すデータをそのまま返答すればよい点である。一方、この方法の欠点は、検索対象のデータ自体および検索結果を保管するため、多くの記憶容量が必要となる点である。
また、ここで、検索対象のデータを暗号化することを考える。上述の検索対象のデータおよび検索結果を保管しておく方法において、検索対象のデータのみを暗号化しても、保管されている検索結果から、どのキーワードがどの暗号化されたデータと完全に一致するのかといった情報が漏えいする。また、検索対象のデータに加えて検索結果を暗号化しても、それを復号しないかぎり、検索の補助に用いることができず、復号した検索結果から情報が漏えいする点は同様である。
また、検索対象のデータとともに、検索結果に限らず他の形式で検索を補助するデータ(検索補助データ)を保管する方法も考えられる。しかしながら、検索補助データのみで検索を実行できるような方法では、検索対象のデータを暗号化しても、検索補助データから情報が漏えいするという上述と同様の問題が生じる。
このように、検索対象データに関する情報漏えい対策としては、暗号化されたデータベース用に特化された方法を用いることが好ましい。
例えば、情報の漏えいを防ぎながらキーワード検索を効率化する方法としては、SSE(Searchable Symmetric Encryption)と呼ばれる技術がある。SSEは、暗号化されたデータに対するキーワード検索を可能とする技術である。例えば、特許文献1には、SSEに関連する技術が記載されている。さらに、非特許文献1では、SSEを実現する各種技術の問題に対応するDSSE(Dynamic SSE)が提案されている。DSSEは、暗号化されたデータの削除を柔軟に実行でき、且つ、検索の処理効率が良い。
DSSEは、暗号化されたデータを検索するための検索補助データとして、検索結果配列および始点配列を用いる。さらに、検索補助データからデータに関する情報が漏えいすることを防止するため、DSSEは、検索結果配列および始点配列を暗号化する。さらに、DSSEは、データの追加・検索だけでなく削除を容易にするため、削除配列を用いる。また、DSSEは、削除配列も暗号化する。
以下に、DSSEについて詳細に説明する。
まず、DSSEで用いられるデータおよびキーワードについて説明する。
ここでは、検索の対象データ群をD = {D_1,...,D_n}(nは1以上の整数)と表し、各対象データD_j(j=1,...,n)は、区別に利用できる識別子を有するものとする。なお、識別子は、通し番号などであってもよいが、機密情報を含まないものとする。対象データDの識別子をid(D)と表す。
また、検索可能なキーワードの集合をΔ = {w_1,..., w_d}(dは1以上の整数)と表し、キーワードw_i(i=1,...,d)を含むDの部分集合をD(w_i)と表す。また、D(w_i)に含まれるj番目の対象データの識別子を、id(D(w_i, j))と表すものとする。そして、Dに対するキーワードw_iによる検索結果を、D中のw_iを含む対象データの識別子の集合で表す。図19は,対象データ群Dに対するキーワードw_iによる検索結果の一例である。図19において、各行は、Dに対するw_iによる検索結果を表す。例えば、Dに対するw_1の検索結果は、{id(D(w_1, 1)), id(D(w_1, 2)),...}と表されている。このような検索結果を表すデータ構造の具体例としては、線形リストと呼ばれるものがある。DSSEは、線形リストを暗号化した情報を検索補助データとして用いることにより、キーワード検索を実現している。
次に、DSSEで用いられる線形リストについて説明する。線形リストの一例を図20に模式的に示す。図20において、線形リストAおよび線形リストBは、それぞれ、3つの整数値を格納した線形リストを表している。2つの並んだ四角形は、線形リストを構成する1要素を表す。この1要素をノードとよぶ。左側の四角形に記載された整数値は、ノードが持つデータである。右側の四角形に記載された矢印は、線形リスト上での次のノードを指す情報である。例えば、ノードを指す情報は、該当するノードが記憶されているメモリ上のアドレス等といった、記憶装置上の位置であってもよい。あるいは、ノードを指す情報は、データベースにおけるテーブルの行に振られた識別情報であってもよい。以降、ノードを指す情報を番地ともいう。線形リストにおけるi番目のノードの番地および値をそれぞれadr_i, val_iとすれば、i番目のノードは、該ノードの番地と、記憶している値と、次のノードの番地との三つ組みによって(adr_i, val_i, adr_{i+1})のように表すことができる。以降、この三つ組みについて、一つ目の要素を番地、二つ目の要素をデータ、三つ目の要素を次番地と呼ぶ。線形リストの終端は、線形リストAのように、次番地として特別な記号Nullを有するノードによって表されていてもよい。あるいは、線形リストの終端は、線形リストBのように、データおよび次番地としてNullを有する空のノードによって表されていてもよい。なお、図20において、Xは、Null値を表している。以降、説明のため、線形リストの先頭のノードを始点と呼び、終端のノードを終点と呼ぶ。
次に、検索結果を表す線形リストについて説明する。DSSEでは、検索結果は、検索結果配列および始点配列として記録される。検索結果配列は、各キーワードについての検索結果を線形リストとして記録した情報である。この検索結果配列は、各キーワードに対する検索結果を線形リストとして格納するが、各キーワードに関する検索結果としての線形リストの始点がどの番地であるかという情報は記憶しない。始点に関する情報は、もう一つの配列である始点配列に記憶される。
図21は、検索結果配列および始点配列に格納される情報を説明するための図である。図21において、検索結果配列の各行は、Dに対するw_iによる検索結果としての線形リストの各ノードを表している。なお、ここでは、id(D(w_i, j))を、単にid_{i,j}と表している。例えば、この検索結果配列によれば、対象データ群Dのうちw_iを含む1番目の対象データの識別子はid_{i,1}であり、この識別子が格納された番地はadr_{i,1}であり、w_iを含む次の(2番目の)対象データの識別子が格納された番地はadr_{i,2}である。
また、図21において、始点配列の各行は、キーワードw_iによる検索結果の始点の番地を表す。例えば、この始点配列によれば、w_1による検索結果の始点の番地はadr_{1,1}である。
このような検索結果配列および始点配列を用いると、次のような検索処理が可能である。以下に、これらの配列からw_iに関する検索結果を読み出す検索処理について記載する。
1.まず、始点配列において、キーワード列がw_iである行の番地列adr_{i,1}を読み出す。
2.次に、検索結果配列において、番地列がadr_{i,1}である行を参照することにより、データ列のid_{i,1}と、次番地列のadr_{i,2}を得る。得られたid_{i,1}は、1つ目の検索結果であり、adr_{i,2}は、2つめの検索結果が記憶されている検索結果配列の番地である。
3.次に、検索結果配列において、番地列がadr_{i,2}である行を参照することにより、データ列のid_{i,2}と、次番地列のadr_{i,3}を得る。得られたid_{i,2}は、2つ目の検索結果であり、adr_{i,3}は、3つ目の検索結果が記憶されている検索結果配列の番地である。
4.次に、検索結果配列において、番地列がadr_{i,3}である行を参照することにより、データ列のid_{i,3}と、次番地列のNULL値を得る。得られたid_{i,3}は、3つ目の検索結果である。また、次番地がNull値であるので、このノードが終端である。そこで、id_{i,1}, id_{i,2}, id_{i,3}が、w_iに関する検索結果となる。
このような検索処理が可能な検索結果配列および始点配列は、データが追加された場合にも記憶容量に空きがある限り追加が容易であるため、データベース等のように次々とデータが追加される用途に有用である。しかしながら、これらの配列は、どの対象データがどのキーワードを含んでいるかという情報を含んでいる。そこで、DSSEは、これらの配列から対象データに関する情報が漏えいしないよう、始点配列および検索結果配列を暗号化情報と組み合わせた検索補助データを用いる。以降、暗号化情報と組み合わせた始点配列を、暗号化始点配列と記載し、暗号化情報と組み合わせた検索結果配列を、暗号化検索結果配列と記載する。以下、DSSEにおける暗号化始点配列および暗号化検索結果配列のデータ構造について説明する。
ここでは、暗号化情報の生成に、鍵付き関数および鍵付き置換が用いられる。鍵付き関数は、入力および鍵情報によって出力が定まる関数である。また、鍵付き置換は、入力および鍵情報によって出力が定まる置換である。鍵付き関数Fにおいて、鍵をkとし、入力をxとするとき、出力をF(k;x)と表す。入力が複数組みから成る場合(例えば、n個組のx_1,...,x_nである場合)には、出力をF(k;x_1,...,x_n)と表す。つまり、括弧内の第1変数が鍵を表し、セミコロンで区切った右側の変数群が入力を表す。鍵付き置換についても同じように表記する。
また、ここでは、値を暗号化するために、暗号化処理および復号処理を共通の秘密鍵で行う共通鍵暗号方式が用いられる。共通鍵暗号の暗号化関数をEnc()と記載し,復号関数をDec()と記載する。また、鍵kでデータdを暗号化した結果をEnc(k;d)と記載し、鍵kで暗号文cを復号した結果をDec(k;c)と記載する。また、以下の説明では、排他的論理和演算を◎で表す。また、データの連結演算を||で表す。
まず、DSSEの暗号化検索結果配列について説明する。
暗号化検索結果配列では、線形リストを基にしたリスト状のデータ構造(以降、暗号化線形リストと呼ぶ)が用いられている。ここで、検索結果配列を表す線形リストのノードは、上述したように、i番目のノードの番地と、i番目のノードの値と、次ノードの番地との三つ組み(adr_i, val_i, adr_{i+1})であった。暗号化検索結果配列を表す暗号化線形リストでは、各ノードは、次式(10)で表されるデータ構造によって構成される。
(adr_i, F1(F2(k_s;w);non)◎(val_i||adr_{i+1}), non)・・・(10)
ここで、wは、キーワードを表す。また、val_iは、キーワードwに関するi番目の検索結果の識別子を格納する。また、val_iは、Lビット列で表されるものとする。また、k_sは、暗号化線形リストの検索鍵を生成するための鍵を表す。また、nonは、ノード毎にランダムに生成される値(nonce)を表す。また、F1,F2は、鍵付き関数を表す。
つまり、暗号化線形リストの各ノードにおいて、1つ目の要素は、i番目のノードの番地を表す。また、3つ目の要素は、nonceを表す。また、2つ目の要素は、i番目のノードの値val_iおよび次のノードの番地adr_{i+1}をF1,F2,k_sを用いた暗号化情報と組み合わせて算出される。ここで、F1,F2およびk_sがわかっていれば、この2つ目の要素から、val_iおよびadr_{i+1}を得ることが可能である。具体的には、nonceおよびF2(k_s;w)を組み合わせることにより算出されるF1(F2(k_s;w);non)と、2つ目の要素との排他的論理和演算により、val_i||adr_{i+1}が得られる。すなわち、排他的論理和演算の性質により、
F1(F2(k_s;w);non)◎[2つ目の要素]
=F1(F2(k_s;w);non)◎F1(F2(k_s;w);non)◎(val_i||adr_{i+1})
=val_i||adr_{i+1} ・・・(11)
となる。ここで、F2(k_s;w)は、キーワードwおよび上述の鍵k_sを用いて鍵付き関数F2により生成される情報である。F2(k_s;w)を、キーワードwについての検索鍵と呼ぶ。
したがって、キーワードwの検索鍵F2(k_s;w)と、キーワードwに対する検索結果の始点の番地adr_1とを用いれば、wの検索結果としての暗号化線形リストに含まれるすべての値を得ることができる。
このような暗号化検索結果配列の一例を図22に示す。図22において、暗号化検索結果配列の番地列は、キーワードw_iの検索結果リストにおけるj番目のノードの番地adr_{i,j}を格納する。また、暗号化データ識別子・次番地の列は、j番目のノードの値id_{i,j}(対象データの識別子)および次番地adr_{i,j+1}を、暗号化情報F1(F2(k_s;w_i);non_j)で暗号化した値を格納する。そのような値は、ここでは、F1(F2(k_s;w_i);non_j)◎(id_{i,j}||adr_{i,j+1})と表される。また、nonce列は、ノード毎のランダムな値non_jを格納する。このような形式で、複数のキーワードについての暗号化線形リストを記憶した配列が、DSSEの暗号化検索結果配列となる。
このような暗号化検索結果配列は、キーワードに対する始点番地および検索鍵により、そのキーワードに関する検索結果を抽出可能とする。
次に、DSSEの暗号化始点配列について説明する。
暗号化始点配列は、各キーワードw_iと、w_iに関する暗号化線形リストの始点情報であるadr_{i,1}とを、キーワード暗号化鍵k_pおよび始点番地暗号化鍵を生成するための鍵k_eを用いて加工してから格納する。加工されたキーワードを、暗号化キーワードと呼ぶ。また、加工された始点情報を、暗号化始点番地と呼ぶ。
このような暗号化始点配列の一例を図22に示している。図22において、暗号化始点配列の暗号化キーワード列は、キーワードw_iの暗号化キーワードを格納する。また、暗号化始点番地列は、w_iに関する暗号化始点番地を格納している。ここでは、Pを鍵付き置換とすると、暗号化キーワードは、P(k_p; w_i)のように表される。また、暗号化始点番地は、F3を鍵付き関数とすると、F3(k_e; w_i)◎adr_{i,1}のように表される。ここで、F3(k_e; w_i)は、キーワードw_iおよび上述の鍵k_eを用いて鍵付き関数F3により生成される情報である。F3(k_e; w_i)を、キーワードw_iについての始点番地暗号化鍵と呼ぶ。
このような暗号化始点配列は、暗号化キーワードP(k_p; w_i)およびキーワードw_iの始点番地暗号化鍵F3(k_e; w_i)により、キーワードw_iに関する暗号化線形リストの始点番地を抽出可能とする。詳細には、暗号化始点配列において、P(k_p; w_i)が格納された行の暗号化始点番地(F3(k_e; w_i)◎adr_{i,1}が得られる。そして、得られた暗号化始点番地および始点番地暗号化鍵F3(k_e; w_i)の排他的論理和演算により、adr_{i,1}が得られる。
そして、上述したように、暗号化検索結果配列は、キーワードw_iについて暗号化始点配列から得られる始点番地adr_{i,1}と、キーワードw_iの検索鍵F2(k_s;w_i)とにより、キーワードw_iに関する検索結果を抽出可能とする。
ここで、前述したように、始点配列および検索結果配列を検索補助データとして用いると、データベースが暗号化されていても、キーワード以外の特別な情報を用いることなく検索結果が得られてしまう。一方、暗号化始点配列および暗号化検索結果配列を検索補助データとして用いると、各種の鍵k_p、k_eおよびk_sがわからない限り、どのキーワードに関する検索結果も参照されない。
ここで、データベースが暗号化始点配列および暗号化検索結果配列を保持し、ユーザがk_p,k_e,k_sを保持している場合を想定する。この場合、ユーザは、あるキーワードw_iに関して暗号化キーワードP(k_p; w_i), 始点番地暗号化鍵F3(k_e; w_i), 検索鍵F2(k_s;w_i)を計算してデータベースに送付すればよい。すると、データベースは、これらの情報から、w_iに関する検索結果を求めることができる。しかし、データベースは、他のキーワードに関する検索結果を求めることはできない。
以上に示した暗号化始点配列および暗号化検索結果配列は、DSSEによりキーワード検索を行うためのデータ構造である。さらに、DSSEは、対象データを削除するために、削除配列を用いる。
削除配列について詳細に説明する。
上述のような検索補助データを用いる際に、ある対象データが削除されると、その対象データが含む各キーワードに対して、暗号化始点配列および暗号化検索結果配列を更新する必要がある。更新処理について具体的に述べる。
ここでは、あるキーワードwに関し、暗号化検索結果配列に以下のような情報が記憶されているとする。
1つ目のノード:(adr_1, F1(F2(k_s;w);non_1)◎(D1||adr_2), non_1)
2つ目のノード:(adr_2, F1(F2(k_s;w);non_2)◎(D2||adr_3), non_2)
3つ目のノード:(adr_3, F1(F2(k_s;w);non_3)◎(D3||NULL), non_3)
ここで、文書D2が削除される場合、番地がadr_2である2つめのノードを格納した行を暗号化検索結果配列から削除する必要がある。しかし、2つめのノードを格納した行を削除するだけでは、
1つ目のノード:(adr_1, F1(F2(k_s;w);non_1)◎(D1||adr_2), non_1)
3つ目のノード:(adr_3, F1(F2(k_s;w);non_3)◎(D3||NULL), non_3)
となり、暗号化線形リストの構造が壊れてしまう。つまり、1つ目のノードから得られる次番地adr_2に、次のノードが存在しないことになる。adr_2に記憶されているデータを削除する場合,線形リスト構造を壊さないようにadr_1に記憶されている値を更新する必要がある。具体的にはadr_1に記憶されている値を、以下のように更新すればよい。
1つ目のノード:(adr_1, F1(F2(k_s;w);non1)◎(D1||adr_3), non1)
このような更新は、adr_1とadr_2とadr_3とを用いて実行可能である。具体的には、adr_1に記憶されているF1(F2(k_s;w);nonce1)◎(D1||adr_2)に対し、(0^L||adr_2)および(0^L||adr_3)を、次式(12)のように排他的に加算すればよい。
F1(F2(k_s;w);nonce1)◎(D1||adr_2)◎(0^L||adr_2)◎(0^L||adr_3)
=F1(F2(k_s;w);nonce1)◎(D1||adr_3) ・・・(12)
ここで、0^Lは、0をL個並べたビット列とする。また、以降、adr_2に対するadr_1を前番地と呼び、adr_2に対するadr_3を後番地と呼び、adr_2自体を中番地と呼ぶ。
このように、削除する対象データに関するノードの前番地および後番地がわかれば、暗号化検索結果配列から、任意のデータに関する情報を削除可能である。ここで、上述した暗号化検索結果配列および暗号化始点配列だけでは、特定の対象データに関連するノードの番地およびその前番地および後番地を抽出できない。そこで、DSSEは、削除のために用いるこれらの情報を、削除配列に格納する。DSSEは、この削除配列も暗号化しておく。
ここでは、まず、暗号化する前の削除配列について説明した後に、暗号化した削除配列について説明する。なお、DSSEでは、各対象データが複数のキーワードを含む可能性があるため、削除配列に線形リスト構造を採用しているが、ここでは、説明を簡単にするため、各対象データが1つのみキーワードを含むものと仮定した場合の削除配列について説明する。この場合、データ識別子から、検索結果配列においてその対象データに関する情報が記憶された番地が一意に定まるため、削除配列は、線形リスト構造でなくてよい。
図23に、まず、各対象データが1つのみキーワードを含むものと仮定した場合の暗号化されていない始点配列および検索結果配列の一例を示す。ここでは、対象データD_1、D_2、D_3がキーワードw_1を含み、対象データD_4がキーワードw_2を含むものとする。なお、図23では、対象データD_iのデータ識別子を「D_i」と記載している。
また、図24に、図23の始点配列および検索結果配列に対応する削除配列の一例を示す。各データ識別子に対応付けて、検索結果配列においてその対象データに関する情報が記憶されている番地(中番地)と、その前番地と、その後番地とを格納している。
このような削除配列を用いて、例えば、対象データD_2が削除される場合、以下のように削除処理が可能である。
1.削除配列から、データ識別子列がD_2である行を探し、その前番地adr_1、中番地adr_3、後番地adr_4を得る。
2.検索結果配列において、番地列が中番地adr_3の行を削除する。
3.検索結果配列において、番地が前番地adr_1の行の次番地をadr_4に変更する。
次に、このような削除配列を暗号化した暗号化削除配列について説明する。ここでは、削除配列が線形リスト構造ではないものとして説明しているため、各データ識別子について、前番地、中番地および後番地の値がそれぞれ暗号化されればよい。なお、データ識別子は、機密情報を含まないものとして、暗号化は不要であるとする。この場合、暗号化削除配列は、各対象データの識別子に対応して、前番地、中番地および後番地を次式(13)のように暗号化した情報を格納すればよい。
F4(k_d;D_i)◎(p_adr||i_adr||a_adr) ・・・(13)
ここで、D_iは、データ識別子を表す。また、p_adrは前番地を表し、i_adrは中番地を表し、a_adrは後番地を表す。また、F4は鍵付き関数である。また、k_dは、削除鍵を生成するための鍵である。ここで、F4(k_d;D_i)は、データ識別子D_iおよび上述の鍵k_dを用いて鍵付き関数F4により生成される情報である。F4(k_d;D_i)を、データD_iについての削除鍵と呼ぶ。
このような暗号化削除配列の一例を図25に示す。このような暗号化削除配列は、削除鍵F4(k_d;D_i)により、D_iの削除に必要な情報である前番地p_adr,中番地i_adr,後番地a_adrを抽出可能とする。詳細には、次式(14)により、前番地p_adr,中番地i_adr,後番地a_adrが抽出される。
F4(k_d;D_i)◎[暗号化された前・中・後番地]
=F4(k_d;D_i)◎F4(k_d;D_i)◎(p_adr||i_adr||a_adr)
=p_adr||i_adr||a_adr ・・・(14)
以上に説明したように,DSSEは3つの配列(暗号化始点配列、暗号化検索結果配列、暗号化削除配列)を用いて、キーワード検索、および、登録されている対象データの削除を行う。
特許第5392439号公報
Seny Kamara, Charalampos Papamanthou, Tom Roeder,"Dynamic Searchable Symmetric Encryption",CCS'12 Proceedings of the 2012 ACM conference on Computer and communications security, Pages 965-976
しかしながら、非特許文献1に記載されたDSSEを、完全一致検索に適用するには、以下の課題がある。
DSSEは、各対象データに複数のキーワードが含まれうることを前提としている。そのため、本発明が対象とする完全一致検索にDSSEを適用する場合、暗号化始点配列、暗号化検索結果配列および暗号化削除配列の内容に重複が生じ、記憶容量の面で非効率的であるという問題がある。
この問題について説明する。
上述したように、DSSEでは、1つの対象データに関して、以下の情報を各配列に記憶している。
・暗号化検索結果配列に、番地、暗号化データ識別子・次番地、nonce
・暗号化削除配列に、データ識別子、暗号化前・中・後番地
つまり、1つの対象データに関して、番地を1つ,データ識別子を1つ,暗号化された番地を4つ,暗号化された識別子を1つ、および、nonceを1つ記憶している。
ここで、完全一致検索の場合、各文書がひとつのキーワードを含む。そこで、DSSEにおいて各文書が1つのキーワードを含むことを仮定した図23、図24の始点配列、検索結果配列、および、削除配列を参照すると、重複して記憶している情報があることがわかる。
具体的には、図23の検索結果配列において番地がadr_1の行には、adr_1に記憶されているのはD_1に関する情報であり、次の番地はadr_3であるという情報が格納されている。一方、図24の削除配列において、データ識別子がD_1の行には、D_1に関する情報が検索結果配列のadr_1に記憶されており、次の番地はadr_3であるという情報が記憶されている。これらの情報は、同一の内容を表している。つまり、同一の情報が2重に管理されていることになる。このように、完全一致検索にDSSEを適用する場合、図23および図24に示した始点配列、検索結果配列、削除配列を基にした暗号化始点配列、暗号化検索結果配列、暗号化削除配列を用いることになり、記憶する情報に重複が生じて非効率的である。
本発明は、上述の課題を解決するためになされたもので、暗号化された対象データに対する完全一致検索処理において用いられる暗号化された検索補助データの記憶容量を削減する技術を提供することを目的とする。
上記目的を達成するために、本発明の検索補助データ格納装置は、対象データ群に対する完全一致検索に用いられうる各キーワードをキーワード鍵情報により暗号化した暗号化キーワード情報と、前記対象データ群のうち該キーワードに完全一致する対象データのデータ識別子のリスト(検索結果リスト)における始点のデータ識別子に始点鍵情報を組み合わせて暗号化した暗号化始点情報とを対応付けた暗号化始点配列を格納する暗号化始点配列格納手段と、前記検索結果リストにおける各データ識別子と、前記検索結果リストにおいて該データ識別子の1つ前のデータ識別子(前識別子)および1つ後のデータ識別子(後識別子)に対して前後識別子鍵情報を組み合わせて暗号化した暗号化前後識別子情報と、前記前後識別子鍵情報を検索鍵情報により暗号化した暗号化前後識別子鍵情報とを対応付けた暗号化検索結果配列を格納する暗号化検索結果配列格納手段と、を備える。
また、本発明の検索装置は、上述の検索補助データ格納装置を用いて、前記暗号化キーワード情報と、前記始点鍵情報と、前記検索鍵情報とを検索要求として受信する検索要求受信手段と、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納されている暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、前記検索結果リストにおいて始点となるデータ識別子を得て検索結果に加える始点復号手段と、前記暗号化検索結果配列格納手段において、前記検索結果に加えられたデータ識別子に対応付けて格納された暗号化前後識別子情報および暗号化前後識別子鍵情報を取得し、取得した暗号化前後識別子鍵情報を、受信された検索鍵情報を用いて復号して前後識別子鍵情報を取得し、取得した前後識別子鍵情報を用いて暗号化前後識別子情報を復号することにより、該データ識別子の1つ後のデータ識別子を得て前記検索結果に加える検索結果抽出処理を、1つ後のデータ識別子が得られなくなるまで繰り返す検索結果抽出手段と、前記検索結果抽出手段によって抽出された検索結果を出力する検索結果出力手段と、を備える。
また、本発明の追加装置は、上述の検索補助データ格納装置を用いて、追加される対象データのデータ識別子(追加識別子)と、前記暗号化キーワード情報と、前記始点鍵情報と、前記前後識別子鍵情報と、前記暗号化前後識別子鍵情報とを追加要求として受信する追加要求受信手段と、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、更新前の始点のデータ識別子(更新前始点識別子)を取得する始点抽出手段と、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けられた暗号化始点情報を、前記追加識別子に前記始点鍵情報を組み合わせて暗号化した暗号化始点情報に更新する暗号化始点配列更新手段と、前記暗号化検索結果配列格納手段において、前記更新前始点識別子に対応付けられて格納されている暗号化前後識別子情報を、該暗号化前後識別子情報に前記追加識別子を前識別子として組み合わせた情報に更新するとともに、前記追加識別子に対して、受信された前後識別子鍵情報に前記更新前始点識別子を後識別子として組み合わせて生成した前記暗号化前後識別子情報と、受信された暗号化前後識別子鍵情報とを対応付けた情報を追加する暗号化検索結果配列追加手段と、を備える。
また、本発明の削除装置は、上述の検索補助データ格納装置を用いて、削除される対象データのデータ識別子(削除識別子)と、前記前後識別子鍵情報とを削除要求として受信する削除要求受信手段と、前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられて格納されている暗号化前後識別子情報を、受信された前後識別子鍵情報を用いて復号することにより、前記削除識別子の前識別子および後識別子を取得する前後識別子抽出手段と、前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられた情報を削除するとともに、前記削除識別子の前識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の後識別子を組み合わせることにより、該暗号化前後識別子情報が後識別子として前記削除識別子の後識別子を示すよう更新し、前記削除識別子の後識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の前識別子を組み合わせることにより、該暗号化前後識別子情報が前識別子として前記削除識別子の前識別子を示すよう更新する暗号化検索結果配列削除手段と、を備える。
また、本発明の検索依頼装置は、キーワードおよび鍵情報を入力する入力手段と、前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記暗号化キーワード情報を算出する暗号化キーワード算出手段と、前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記始点鍵情報を算出する始点鍵算出手段と、前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記検索鍵情報を算出する検索鍵算出手段と、前記暗号化キーワード算出手段、前記始点鍵算出手段および前記検索鍵算出手段によって算出された前記暗号化キーワード情報と、前記始点鍵情報と、前記検索鍵情報とを、前記検索要求として上述の検索装置に送信する検索要求送信手段と、を備える。
また、本発明の追加依頼装置は、前記追加識別子と、前記追加識別子の示す対象データが完全一致するキーワードと、鍵情報とを入力する入力手段と、前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記暗号化キーワード情報を算出する暗号化キーワード算出手段と、前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記始点鍵情報を算出する始点鍵算出手段と、前記入力手段に入力された前記追加識別子および前記鍵情報に基づいて、前記前後識別子鍵情報を算出する前後識別子鍵算出手段と、前記前後識別子鍵算出手段によって算出された前後識別子鍵情報と、前記入力手段に入力された前記キーワードおよび前記鍵情報とに基づいて、前記暗号化前後識別子鍵情報を算出する暗号化前後識別子鍵算出手段と、前記入力手段に入力された前記追加識別子と、前記暗号化キーワード算出手段、前記始点鍵算出手段、前記前後識別子鍵算出手段、および、前記暗号化前後識別子鍵算出手段によって算出された前記暗号化キーワード情報と、前記始点鍵情報と、前記前後識別子鍵情報と、前記暗号化前後識別子鍵情報とを、前記追加要求として上述の追加装置に送信する追加要求送信手段と、を備える。
また、本発明の削除依頼装置は、前記削除識別子および鍵情報を入力する入力手段と、前記入力手段に入力された前記削除識別子および前記鍵情報に基づいて、前記前後識別子鍵情報を算出する前後識別子鍵算出手段と、前記入力手段に入力された前記削除識別子と、前記前後識別子鍵算出手段によって算出された前記前後識別子鍵情報とを、前記削除要求として上述の削除装置に送信する削除要求送信手段と、を備える。
また、本発明のデータ検索システムは、上述の検索補助データ格納装置と、上述の検索装置と、上述の追加装置と、上述の削除装置と、上述の検索依頼装置と、上述の追加依頼装置と、上述の削除依頼装置と、を備える。
また、本発明のデータ検索方法は、上述の検索補助データ格納装置を用いて、前記暗号化キーワード情報と、前記始点鍵情報と、前記検索鍵情報とを検索要求として受信すると、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納されている暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、前記検索結果リストにおいて始点となるデータ識別子を得て検索結果に加え、前記暗号化検索結果配列格納手段において、前記検索結果に加えられたデータ識別子に対応付けて格納された暗号化前後識別子情報および暗号化前後識別子鍵情報を取得し、取得した暗号化前後識別子鍵情報を、受信された検索鍵情報を用いて復号して前後識別子鍵情報を取得し、取得した前後識別子鍵情報を用いて暗号化前後識別子情報を復号することにより、該データ識別子の1つ後のデータ識別子を得て前記検索結果に加える検索結果抽出処理を、1つ後のデータ識別子が得られなくなるまで繰り返し、抽出した検索結果を出力するとともに、追加される対象データのデータ識別子(追加識別子)と、前記暗号化キーワード情報と、前記始点鍵情報と、前記前後識別子鍵情報と、前記暗号化前後識別子鍵情報とを追加要求として受信すると、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、更新前の始点のデータ識別子(更新前始点識別子)を取得し、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けられた暗号化始点情報を、前記追加識別子に前記始点鍵情報を組み合わせて暗号化した暗号化始点情報に更新し、前記暗号化検索結果配列格納手段において、前記更新前始点識別子に対応付けられて格納されている暗号化前後識別子情報を、該暗号化前後識別子情報に前記追加識別子を前識別子として組み合わせた情報に更新するとともに、前記追加識別子に対して、受信された前後識別子鍵情報に前記更新前始点識別子を後識別子として組み合わせて生成した前記暗号化前後識別子情報と、受信された暗号化前後識別子鍵情報とを対応付けた情報を追加するとともに、削除される対象データのデータ識別子(削除識別子)と、前記前後識別子鍵情報とを削除要求として受信すると、前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられて格納されている暗号化前後識別子情報を、受信された前後識別子鍵情報を用いて復号することにより、前記削除識別子の前識別子および後識別子を取得し、前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられた情報を削除するとともに、前記削除識別子の前識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の後識別子を組み合わせることにより、該暗号化前後識別子情報が後識別子として前記削除識別子の後識別子を示すよう更新し、前記削除識別子の後識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の前識別子を組み合わせることにより、該暗号化前後識別子情報が前識別子として前記削除識別子の前識別子を示すよう更新する。
また、本発明の記憶媒体は、上述の検索補助データ格納装置を用いて、前記暗号化キーワード情報と、前記始点鍵情報と、前記検索鍵情報とを検索要求として受信する検索要求受信ステップと、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納されている暗号化始点情報を、受信された始点鍵情報を用いて復号することにより前記検索結果リストにおいて始点となるデータ識別子を得て検索結果に加える始点復号ステップと、前記暗号化検索結果配列格納手段において、前記検索結果に加えられたデータ識別子に対応付けて格納された暗号化前後識別子情報および暗号化前後識別子鍵情報を取得し、取得した暗号化前後識別子鍵情報を、受信された検索鍵情報を用いて復号して前後識別子鍵情報を取得し、取得した前後識別子鍵情報を用いて暗号化前後識別子情報を復号することにより、該データ識別子の1つ後のデータ識別子を得て前記検索結果に加える検索結果抽出処理を、1つ後のデータ識別子が得られなくなるまで繰り返す検索結果抽出ステップと、前記検索結果抽出ステップで抽出された検索結果を出力する検索結果出力ステップと、追加される対象データのデータ識別子(追加識別子)と、前記暗号化キーワード情報と、前記始点鍵情報と、前記前後識別子鍵情報と、前記暗号化前後識別子鍵情報とを追加要求として受信する追加要求受信ステップと、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、更新前の始点のデータ識別子(更新前始点識別子)を取得する始点抽出ステップと、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けられた暗号化始点情報を、前記追加識別子に前記始点鍵情報を組み合わせて暗号化した暗号化始点情報に更新する暗号化始点配列更新ステップと、前記暗号化検索結果配列格納手段において、前記更新前始点識別子に対応付けられて格納されている暗号化前後識別子情報を、該暗号化前後識別子情報に前記追加識別子を前識別子として組み合わせた情報に更新するとともに、前記追加識別子に対して、受信された前後識別子鍵情報に前記更新前始点識別子を後識別子として組み合わせて生成した前記暗号化前後識別子情報と、受信された暗号化前後識別子鍵情報とを対応付けた情報を追加する暗号化検索結果配列追加ステップと、削除される対象データのデータ識別子(削除識別子)と、前記前後識別子鍵情報とを削除要求として受信する削除要求受信ステップと、前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられて格納されている暗号化前後識別子情報を、受信された前後識別子鍵情報を用いて復号することにより、前記削除識別子の前識別子および後識別子を取得する前後識別子抽出ステップと、前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられた情報を削除するとともに、前記削除識別子の前識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の後識別子を組み合わせることにより、該暗号化前後識別子情報が後識別子として前記削除識別子の後識別子を示すよう更新し、前記削除識別子の後識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の前識別子を組み合わせることにより、該暗号化前後識別子情報が前識別子として前記削除識別子の前識別子を示すよう更新する暗号化検索結果配列削除ステップと、をコンピュータ装置に実行させるコンピュータ・プログラムを記憶している。
本発明は、暗号化された対象データに対する完全一致検索処理において用いられる暗号化された検索補助データの記憶容量を削減する技術を提供することができる。
本発明の実施の形態としてのデータ検索システムの構成を示すブロック図である。 本発明の実施の形態としてのデータ検索システムのハードウェア構成図である。 本発明の実施の形態としての検索補助データ格納装置の機能ブロック構成図である。 本発明の実施の形態としての検索補助データ格納装置に格納される情報を説明する図である。 本発明の実施の形態としての検索補助データ格納装置に格納される暗号化始点配列の一例を示す図である。 本発明の実施の形態としての検索補助データ格納装置に格納される暗号化検索結果配列の一例を示す図である。 本発明の実施の形態としての検索装置および検索依頼装置の機能ブロック構成図である。 本発明の実施の形態としての追加装置および追加依頼装置の機能ブロック構成図である。 本発明の実施の形態としての削除装置および削除依頼装置の機能ブロック構成図である。 本発明の実施の形態としての検索依頼装置の検索依頼動作を説明するフローチャートである。 本発明の実施の形態としての検索装置の検索動作を説明するフローチャートである。 本発明の実施の形態としての追加依頼装置の追加依頼動作を説明するフローチャートである。 本発明の実施の形態としての追加装置の追加動作を説明するフローチャートである。 本発明の実施の形態における追加動作によって更新された暗号化始点配列の一例を示す図である。 本発明の実施の形態における追加動作によって更新された暗号化検索結果配列の一例を示す図である。 本発明の実施の形態としての削除依頼装置の削除依頼動作を説明するフローチャートである。 本発明の実施の形態としての削除装置の削除動作を説明するフローチャートである。 本発明の実施の形態における削除動作によって更新された暗号化検索結果配列の一例を示す図である。 キーワードに対して検索結果を保存しておく一般的な手法を説明する図である。 関連技術において用いられる線形リストを説明する模式図である。 関連技術において用いられる始点配列および検索結果配列を説明する図である。 関連技術において用いられる暗号化始点配列および暗号化検索結果配列を説明する図である。 関連技術において各対象データが1つのキーワードを含むと仮定した場合の始点配列および検索結果配列を説明する図である。 関連技術において各対象データが1つのキーワードを含むと仮定した場合の削除配列を説明する図である。 関連技術において用いられる暗号化削除配列を説明する図である。
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
本発明の実施の形態としてのデータ検索システム1は、対象データ群からキーワードに完全一致するデータを検索するシステムである。データ検索システム1の構成を図1に示す。
図1において、データ検索システム1は、検索補助データ格納装置10と、検索装置20と、追加装置30と、削除装置40と、検索依頼装置50と、追加依頼装置60と、削除依頼装置70とを備える。また、検索補助データ格納装置10は、検索装置20、追加装置30および削除装置40と、それぞれ通信可能に接続される。また、検索装置20および検索依頼装置50は、通信可能に接続されている。また、追加装置30および追加依頼装置60は、通信可能に接続されている。また、削除装置40および削除依頼装置70は、通信可能に接続されている。なお、図1には、検索補助データ格納装置10と、検索装置20と、追加装置30と、削除装置40と、検索依頼装置50と、追加依頼装置60と、削除依頼装置70とを1つずつ示したが、本発明のデータ検索システムが備える各装置の数を限定するものではない。
例えば、データ検索システム1は、図2に示すように、サーバ100および端末200によって構成可能である。サーバ100は、CPU(Central Processing Unit)1001と、RAM(Random Access Memory)1002と、ROM(Read Only Memory)1003と、ハードディスク等の記憶装置1004と、ネットワークインタフェース1005とを含む。また、端末200は、CPU2001と、RAM2002と、ROM2003と、ハードディスク等の記憶装置2004と、ネットワークインタフェース2005と、入力装置2006と、出力装置2007とを含む。
この場合、検索補助データ格納装置10、検索装置20、追加装置30および削除装置40は、サーバ100によって構成可能である。また、検索依頼装置50、追加依頼装置60および削除依頼装置70は、端末200によって構成可能である。
なお、データ検索システム1のハードウェア構成は、上述の構成に限定されない。例えば、データ検索システム1を構成する各装置は、同一のコンピュータ装置上に実現されていてもよい。また、例えば、データ検索システム1を構成する各装置は、それぞれが他と異なるコンピュータ装置によって構成されていてもよい。また、さらに他の例としては、検索依頼装置50がユーザ端末として機能するコンピュータ装置上に実現され、追加依頼装置60および削除依頼装置70が、管理端末として機能するコンピュータ装置上に実現されていてもよい。
次に、データ検索システム1を構成する各装置の機能ブロックについて説明する。
まず、検索補助データ格納装置10の機能ブロックを図3に示す。図3において、検索補助データ格納装置10は、暗号化始点配列格納部11と、暗号化検索結果配列格納部12とを備える。ここで、検索補助データ格納装置10が上述のサーバ100によって構成される場合、暗号化始点配列格納部11および暗号化検索結果配列格納部12は、記憶装置1004によって構成される。なお、検索補助データ格納装置10の各機能ブロックのハードウェア構成は、上述の構成に限定されない。
ここで、各機能ブロックについて説明する前に、暗号化始点配列格納部11が格納する暗号化始点配列の元となる始点配列、および、暗号化検索結果配列格納部12が格納する暗号化検索結果配列の元となる検索結果配列について、図4を参照して説明する。図4に示すように、本実施の形態では、暗号化始点配列の元となる始点配列は、図21に示した非特許文献1に記載の始点配列に対して、各キーワードについて番地ではなくデータ識別子を格納する点が異なる。また、本実施の形態では、暗号化検索結果配列の元となる検索結果配列は、図21に示した非特許文献1に記載の検索結果配列に対して、番地毎ではなくデータ識別子毎に情報を格納する点と、後識別子(次番地)だけでなく前識別子も格納する点とが異なる。
ここで、非特許文献1に記載のDSSEでは、対象データのデータ識別子とは別に、ノードを記憶する場所を示す番地を用いていた。これは、DSSEでは、一つの対象データが複数のキーワードを含む可能性を想定しているため、検索結果配列の行数が、登録されている対象データの数よりも多くなる可能性があるからであった。そのため、DSSEでは、検索結果配列における行を一意に特定する情報として、データ識別子を用いることができず、別の情報(番地)を用いていた。本実施の形態では、対象データに対する完全一致検索を想定しているため、検索結果配列の行数は、対象データ数と一致する。したがって、この場合、データ識別子は、検索結果配列における行を一意に特定する情報(番地)として用いられることが可能となる。そこで、本実施の形態は、検索結果配列のデータ構造として、DSSEのように番地とデータ識別子とを別の列で管理する構造とは異なり、データ識別子のみで管理可能なデータ構造を採用する。
また、本実施の形態は、検索結果配列に、DSSEの検索結果配列には格納されていなかった前識別子に相当する情報を含むデータ構造を採用している。前識別子の情報を検索結果配列に追加することにより、検索結果配列の各行は、ある対象データと、それにつながる前の対象データおよび後の対象データとを示すことになる。このような情報は、DSSEにおいて削除配列によって管理されていた情報に相当する。したがって、このような検索結果配列は、ある対象データを削除したい場合に、更新が必要となる前の対象データおよび後の対象データを示すことになり、削除配列を不要とする。
本実施の形態は、図4に示したような始点配列を暗号化した情報を暗号化始点配列格納部11に格納し、図4に示したような検索結果配列を暗号化した情報を暗号化検索結果配列格納部12に格納する。次に、各機能ブロックについて説明する。
暗号化始点配列格納部11は、暗号化キーワード情報と、暗号化始点情報とを対応付けた暗号化始点配列を格納する。ここで、暗号化キーワード情報とは、対象データ群に対する完全一致検索に用いられうる各キーワードをキーワード鍵情報により暗号化した情報である。例えば、暗号化キーワード情報は、次式(1)により表される。
P(k_p;W) ・・・(1)
ここで、Pは、鍵付き置換を表す。また、k_pは、キーワード鍵情報を表す。また、Wは、キーワードを表す。
また、暗号化始点情報とは、キーワードについての検索結果リストにおける始点のデータ識別子を、始点鍵情報と組み合わせることにより暗号化した情報である。なお、検索結果リストとは、対象データ群のうちキーワードに完全一致する対象データのデータ識別子のリストをいう。例えば、始点鍵情報は、次式(2)により表される。
F1(k_e;W) ・・・(2)
ここで、k_eは、始点鍵情報を生成するための鍵(始点鍵情報生成鍵)を表し、F1は、鍵付き関数を表す。このように、始点鍵情報は、該当するキーワードWを始点鍵情報生成鍵k_eによって鍵付き関数F1を用いて暗号化することによって生成された情報であってもよい。この場合、始点鍵情報は、キーワード毎に生成される。始点鍵情報が式(2)により表される場合、暗号化始点情報は、次式(3)により表される。
F1(k_e;W)◎D ・・・(3)
ここで、“◎”は、排他的論理和を表す。また、Dは、対象データ群のうちキーワードWに完全一致する検索結果リストにおける始点のデータ識別子を表す。
暗号化始点配列格納部11に格納される情報の一例を図5に示す。図5において、例えば、1行目は、キーワードw_1についての暗号化キーワード情報と、暗号化始点情報とを表している。1行目の暗号化キーワード情報は、キーワードw_1をキーワード鍵情報k_pにより鍵付き置換Pを用いて暗号化した情報である。また、1行目の暗号化始点情報は、対象データ群のうちキーワードw_1に完全一致する検索結果リストにおいて始点となる対象データの識別子D_1を、始点鍵情報F1(k_e;w_1)と組み合わせることにより暗号化した情報である。
暗号化検索結果配列格納部12は、データ識別子と、暗号化前後識別子情報と、暗号化前後識別子鍵情報とを対応付けた暗号化検索結果配列を格納する。ここで、データ識別子は、任意のキーワードについての上述の検索結果リストに含まれる各対象データのデータ識別子を表す。
また、暗号化前後識別子情報とは、上述の検索結果リストにおいて、該当するデータ識別子の1つ前のデータ識別子(前識別子)および1つ後のデータ識別子(後識別子)を、前後識別子鍵情報と組み合わせて暗号化した情報である。例えば、前後識別子鍵情報は、次式(4)により表される。
F2(k_d;D) ・・・(4)
ここで、Dは、該当するデータ識別子である。また、k_dは、前後識別子鍵情報を生成するための鍵(前後識別子鍵情報生成鍵)を表し、F2は、鍵付き関数を表す。このように、前後識別子鍵情報は、該当するデータ識別子Dを前後識別子鍵情報生成鍵k_dによって鍵付き関数F2を用いて暗号化することによって生成された情報であってもよい。この場合、前後識別子鍵情報は、データ識別子毎に生成される。前後識別子鍵情報が式(4)により表される場合、暗号化前後識別子情報は、次式(5)により表される。
F2(k_d;D)◎(D_p||D_a) ・・・(5)
ここで、“||”は、連結を表す。また、Dは、該当するデータ識別子である。また、D_pは、Dが含まれる検索結果リストにおいてDの前識別子を表し、D_aはDの後識別子を表す。
また、暗号化前後識別子鍵情報とは、前後識別子鍵情報を検索鍵情報により暗号化した情報である。例えば、検索鍵情報は、次式(6)により表される。
F3(k_s;W) ・・・(6)
ここで、k_sは、検索鍵情報を生成するための鍵(検索鍵情報生成鍵)を表し、F3は、鍵付き関数を表す。このように、検索鍵情報は、該当するキーワードWを検索鍵情報生成鍵k_sによって鍵付き関数F3を用いて暗号化することによって生成された情報であってもよい。この場合、検索鍵情報は、キーワード毎に生成される。前後識別子鍵情報が式(4)により表され、検索鍵情報が式(6)によって表される場合、暗号化前後識別子鍵情報は、次式(7)により表される。
Enc(F3(k_s;W);F2(k_d;D)) ・・・(7)
ここで、Encは、共通鍵暗号の暗号化関数を表す。
暗号化検索結果配列格納部12に格納される情報の一例を図6に示す。図6において、例えば、1行目は、キーワードw_1についての検索結果リストに含まれるデータ識別子D_1についての暗号化前後識別子情報と、暗号化前後識別子鍵情報とを表している。この例では、キーワードw_1についての検索結果リストにおいて、データ識別子D_1は始点であるため、前識別子としては、前識別子が無いことを表す0^Lを適用している。なお、データ識別子はLビットであるものとし、0^Lは、0をL個並べたビット列を表す。このように、1行目の暗号化前後識別子情報は、データ識別子D_1の前識別子0^Lおよび後識別子D_2を連結した情報を、前後識別子鍵情報F3(k_d;D_1)と組み合わせることにより生成した情報である。また、1行目の暗号化前後識別子鍵情報は、前後識別子鍵情報F3(k_d;D_1)を、検索鍵情報F3(k_s;w_1)で暗号化した情報である。
次に、検索装置20および検索依頼装置50の機能ブロックを図7に示す。
図7において、検索装置20は、検索要求受信部21と、始点復号部22と、検索結果抽出部23と、検索結果出力部24とを備える。ここで、検索装置20が上述のサーバ100によって構成される場合、各機能ブロックは、次のように構成される。検索要求受信部21および検索結果出力部24は、ネットワークインタフェース1005と、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001とによって構成される。また、始点復号部22および検索結果抽出部23は、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。なお、検索装置20の各機能ブロックのハードウェア構成は、上述の構成に限定されない。
検索要求受信部21は、暗号化キーワード情報と、始点鍵情報と、検索鍵情報とを検索要求として受信する。具体的には、検索要求受信部21は、後述の検索依頼装置50から、このような検索要求を受信する。
始点復号部22は、上述の検索補助データ格納装置10の暗号化始点配列格納部11を参照し、受信された暗号化キーワード情報および始点鍵情報に基づいて、始点のデータ識別子を復号する。具体的には、始点復号部22は、暗号化始点配列格納部11において、受信された暗号化キーワード情報に対応付けて格納されている暗号化始点情報を取得する。そして、始点復号部22は、取得した暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、始点のデータ識別子を得て検索結果に加える。このようにして得られる始点のデータ識別子は、受信された暗号化キーワード情報の元となるキーワードについての検索結果リストの始点である。
例えば、暗号化始点配列格納部11が、式(1)に示した暗号化キーワード情報P(k_p;W)と、式(3)に示した暗号化始点情報F1(k_e;W)◎Dとを対応付けて格納しているとする。このとき、検索要求として、暗号化キーワード情報P(k_p;W)および始点鍵情報F1(k_e;W)が受信されたとする。この場合、始点復号部22は、次の手順a1〜a3により、始点のデータ識別子を検索結果に加えることができる。
a1:暗号化始点配列格納部11において、暗号化キーワード情報P(k_p;W)に対応付けられている暗号化始点情報X=F1(k_e;W)◎Dを取得する。
a2:Xと始点鍵情報F1(k_e;W)との排他的論理和F1(k_e;W)◎Xを計算する。
ここで、排他的論理和演算の性質により、F1(k_e;W)◎X=F1(k_e;W)◎F1(k_e;W)◎D=Dとなり、始点Dが得られる。
a3:始点Dを検索結果に加える。
検索結果抽出部23は、暗号化検索結果配列格納部12を参照し、受信された検索鍵情報に基づいて、始点のデータ識別子に続くデータ識別子を順次求めて検索結果に加える。具体的には、検索結果抽出部23は、以下の検索結果抽出処理を繰り返し行う。ここでは、検索結果抽出部23は、暗号化検索結果配列格納部12において、検索結果に加えられたデータ識別子に対応付けて格納された暗号化前後識別子情報および暗号化前後識別子鍵情報を取得する。そして、検索結果抽出部23は、取得した暗号化前後識別子鍵情報を、受信された検索鍵情報を用いて復号することにより、前後識別子鍵情報を得る。そして、検索結果抽出部23は、得られた前後識別子鍵情報を用いて、暗号化検索結果配列格納部12から取得した暗号化前後識別子情報を復号することにより、該データ識別子の1つ後のデータ識別子を得る。そして、検索結果抽出部23は、得られたデータ識別子を検索結果に加える。このような検索結果抽出処理を、検索結果抽出部23は、1つ後のデータ識別子が得られなくなるまで繰り返す。このようにして得られる検索結果リストは、受信された暗号化キーワード情報の元となるキーワードについての検索結果リストである。
例えば、暗号化検索結果配列格納部12が、データ識別子Dに対して、式(5)に示した暗号化前後識別子情報F2(k_d;D)◎(D_p||D_a)と、式(7)に示した暗号化前後識別子鍵情報Enc(F3(k_s;W);F2(k_d;D))とを対応付けて格納しているとする。このとき、検索要求として受信された検索鍵情報がF3(k_s;W)であるとする。この場合、検索結果抽出部23は、次の手順b1〜b4により、始点のデータ識別子Dに続くデータ識別子を順次求めることができる。
b1:暗号化検索結果配列格納部12において、データ識別子Dに対応付けられた暗号化前後識別子情報Y=F2(k_d;D)◎(D_p||D_a)および暗号化前後識別子鍵情報Z=Enc(F3(k_s;W);F2(k_d;D))を得る。
b2:Zを検索鍵情報F3(k_s;W)で復号する。すなわち、Dec(F3(k_s;W);Z)により、前後識別子鍵情報F2(k_d;D)が得られる。
b3:Yと前後識別子鍵情報F2(k_d;D)との排他的論理和F2(k_d;D)◎Yを計算する。ここで、排他的論理和演算の性質により、F2(k_d;D)◎Y=F2(k_d;D)◎F2(k_d;D)◎(D_p||D_a)=D_p||D_aとなり、前識別子D_pおよび後識別子D_aが得られる。
b4:D_aがNullでなければ、D_aをDとして検索結果に加え、手順b1から繰り返す。
検索結果出力部24は、検索結果抽出部23によって抽出された検索結果を出力する。例えば、検索結果出力部24は、ネットワークインタフェース1005を介して接続された後述の検索依頼装置50に対して、検索結果を出力してもよい。
また、図7において、検索依頼装置50は、入力部51と、暗号化キーワード算出部52と、始点鍵算出部53と、検索鍵算出部54と、検索要求送信部55とを備える。ここで、検索依頼装置50が上述の端末200によって構成される場合、各機能ブロックは次のように構成される。入力部51は、入力装置2006と、ROM2003および記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001とによって構成される。また、暗号化キーワード算出部52、始点鍵算出部53および検索鍵算出部54は、ROM2003および記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001によって構成される。また、検索要求送信部55は、ネットワークインタフェース2005と、ROM2003および記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001とによって構成される。なお、検索依頼装置50の各機能ブロックのハードウェア構成は、上述の構成に限定されない。
入力部51は、キーワードおよび鍵情報を入力情報として取得する。キーワードは、対象データ群に対する完全一致検索のために入力される情報である。また、鍵情報は、後述の検索要求を生成するための情報である。例えば、入力部51は、鍵情報として、前述のキーワード鍵情報k_p、始点鍵情報生成鍵k_eおよび検索鍵情報生成鍵k_sを取得してもよい。また、例えば、入力部51は、鍵情報として、これらの情報k_p、k_eおよびk_sを生成可能な1つの鍵Kを取得してもよい。
暗号化キーワード算出部52は、入力部51に入力されたキーワードおよび鍵情報に基づいて、暗号化キーワード情報を算出する。ここで、キーワードとしてWが入力され、鍵情報としてキーワード鍵情報k_pが入力されている場合、暗号化キーワード算出部52は、前述の式(1)を用いて暗号化キーワード情報P(k_p;W)を算出すればよい。また、鍵情報として、1つの鍵Kが入力されている場合、暗号化キーワード算出部52は、キーワード鍵情報の生成用にあらかじめ定められたデータを、入力された鍵Kを用いて暗号化することにより、キーワード鍵情報k_pを生成してもよい。その後、暗号化キーワード算出部52は、入力されたキーワードWと、生成したキーワード鍵情報k_pとを式(1)に適用することにより、暗号化キーワード情報を算出すればよい。
始点鍵算出部53は、入力部51に入力されたキーワードおよび鍵情報に基づいて、始点鍵情報を算出する。ここで、キーワードとしてWが入力され、鍵情報として始点鍵情報生成鍵k_eが入力されている場合、始点鍵算出部53は、前述の式(2)を用いて始点鍵情報F1(k_e; W)を算出すればよい。また、鍵情報として1つの鍵Kが入力されている場合、始点鍵算出部53は、始点鍵情報生成鍵の生成用にあらかじめ定められたデータを、入力された鍵Kを用いて暗号化することにより、始点鍵情報生成鍵k_eを生成してもよい。その後、始点鍵算出部53は、入力されたキーワードWと、生成した始点鍵情報生成鍵k_eとを式(2)に適用することにより、始点鍵情報を算出すればよい。
検索鍵算出部54は、入力部51に入力されたキーワードおよび鍵情報に基づいて、検索鍵情報を算出する。ここで、キーワードとしてWが入力され、鍵情報として検索鍵情報生成鍵k_sが入力されている場合、検索鍵算出部54は、前述の式(6)を用いて検索鍵情報F3(k_s;W)を算出すればよい。また、鍵情報として1つの鍵Kが入力されている場合、検索鍵算出部54は、検索鍵情報生成鍵の生成用にあらかじめ定められたデータを、入力された鍵Kを用いて暗号化することにより、検索鍵情報生成鍵k_sを生成してもよい。その後、検索鍵算出部54は、入力されたキーワードWと、生成した検索鍵情報生成鍵k_sとを式(6)に適用することにより、検索鍵情報を算出すればよい。
検索要求送信部55は、暗号化キーワード算出部52、始点鍵算出部53および検索鍵算出部54によって算出された暗号化キーワード情報と、始点鍵情報と、検索鍵情報とを、検索要求として検索装置20に送信する。
次に、追加装置30および追加依頼装置60の機能ブロックを図8に示す。図8において、追加装置30は、追加要求受信部31と、始点抽出部32と、暗号化始点配列更新部33と、暗号化検索結果配列追加部34とを備える。ここで、追加装置30が上述のサーバ100によって構成される場合、各機能ブロックは次のように構成される。追加要求受信部31は、ネットワークインタフェース1005と、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001とによって構成される。また、始点抽出部32、暗号化始点配列更新部33および暗号化検索結果配列追加部34は、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。なお、追加装置30の各機能ブロックのハードウェア構成は、上述の構成に限定されない。
追加要求受信部31は、追加識別子と、暗号化キーワード情報と、始点鍵情報と、前後識別子鍵情報と、暗号化前後識別子鍵情報とを、追加要求として受信する。ここで、追加識別子とは、完全一致検索の対象データ群に追加される対象データのデータ識別子を表す。追加要求受信部31は、後述の追加依頼装置60から、このような追加要求を受信する。
始点抽出部32は、検索補助データ格納装置10の暗号化始点配列格納部11を参照し、受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を取得する。そして、始点抽出部32は、取得した暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、更新前の始点のデータ識別子を取得する。以降、更新前の始点のデータ識別子を、更新前始点識別子ともいう。
例えば、暗号化始点配列格納部11が、式(1)に示した暗号化キーワード情報P(k_p;W)と、式(3)に示した暗号化始点情報F1(k_e;W)◎Dとを対応付けて格納しているとする。また、追加要求として、暗号化キーワード情報P(k_p;W)および始点鍵情報F1(k_e;W)が受信されているとする。この場合、始点抽出部32は、検索装置20の始点復号部22と略同様の手順a1〜a2により、更新前始点識別子を抽出可能である。ここでは、得られた更新前始点識別子をD_fとする。
暗号化始点配列更新部33は、暗号化始点配列格納部11において、受信された暗号化キーワード情報に対応付けられた暗号化始点情報を更新する。具体的には、暗号化始点配列更新部33は、受信された追加識別子に、受信された始点鍵情報を組み合わせて新たな暗号化始点情報を算出する。そして、暗号化始点配列更新部33は、該当する暗号化キーワード情報に対応付けられた暗号化始点情報を、新たな暗号化始点情報に更新する。これにより、受信された暗号化キーワード情報の元となるキーワードについての検索結果リストにおいて、追加識別子が新たな始点として登録されたことになる。
例えば、暗号化始点配列格納部11が、式(1)に示した暗号化キーワード情報P(k_p;W)と、式(3)に示した暗号化始点情報F1(k_e;W)◎Dとを対応付けて格納しているとする。また、追加要求として、追加識別子D_new、暗号化キーワード情報P(k_p;W)および始点鍵情報F1(k_e;W)が受信されたとする。この場合、暗号化始点配列更新部33は、次の手順c1〜c2により、暗号化始点配列格納部11を更新する。
c1:始点鍵情報F1(k_e;W)および追加識別子D_newを式(3)に適用し、新たな暗号化始点情報F1(k_e;W)◎D_newを算出する。
c2:暗号化始点配列格納部11において、暗号化キーワード情報P(k_p;W)に対応付けられた情報を、手順c1で算出した暗号化始点情報F1(k_e;W)◎D_newに更新する。
暗号化検索結果配列追加部34は、暗号化検索結果配列格納部12において、更新前始点識別子に対応付けられて格納されている暗号化前後識別子情報を更新する。具体的には、暗号化検索結果配列追加部34は、更新前始点識別子に対応付けられた暗号化前後識別子情報に、追加識別子を前識別子として組み合わせることにより、新たな暗号化前後識別子情報を算出する。そして、暗号化検索結果配列追加部34は、更新前始点識別子に、新たな暗号化前後識別子情報を対応付ければよい。
また、暗号化検索結果配列追加部34は、暗号化検索結果配列格納部12に、追加識別子に対応する情報を追加する。具体的には、暗号化検索結果配列追加部34は、受信された前後識別子鍵情報に、更新前始点識別子を後識別子として組み合わせて暗号化前後識別子情報を算出する。そして、暗号化検索結果配列追加部34は、追加識別子に対して、算出した暗号化前後識別子情報と、受信された暗号化前後識別子鍵情報とを対応付けた情報を、暗号化検索結果配列格納部12に追加すればよい。これにより、受信された暗号化キーワード情報の元となるキーワードについての検索結果リストにおいて、更新前始点識別子の前に、新たな始点として追加識別子が登録されたことになる。
例えば、暗号化検索結果配列格納部12が、データ識別子Dに対して、式(5)に示した暗号化前後識別子情報と、式(7)に示した暗号化前後識別子鍵情報とを格納しているとする。この場合、更新前始点識別子D_fに対応する暗号化前後識別子情報は、式(5)において前識別子が無いことを示すF2(k_d;D_f)◎(0^L||D_a)となる。このとき、追加要求として、追加識別子D_new、始点鍵情報F1(k_e;W)、前後識別子鍵情報F2(k_d;D_new)、暗号化前後識別子鍵情報Enc(F3(k_s;W);F2(k_d;D_new))が受信されたとする。この場合、始点抽出部32は、次の手順e1〜e5により、暗号化検索結果配列格納部12を更新する。
e1:暗号化検索結果配列格納部12において、更新前始点識別子D_fに対応付けられている暗号化前後識別子情報F2(k_d;D_f)◎(0^L ||D_a)を取得する。
e2:取得したF2(k_d;D_f)◎(0^L ||D_a)および追加識別子を前識別子として表す情報(D_new||0^L)の排他的論理和を演算することにより、更新前始点識別子D_fに対応する新たな暗号化前後識別子情報F2(k_d;D_f)◎(D_new||D_a)を算出する。
e3:暗号化検索結果配列格納部12において、更新前始点識別子D_fに対応付けられた暗号化前後識別子情報を、手順e2で算出した値に更新する。
e4:前後識別子鍵情報F2(k_d;D_new)および更新前始点識別子(0^L ||D_f)の排他的論理和を演算することにより、追加識別子D_fに対応する暗号化前後識別子情報としてF2(k_d;D_new)◎(0^L||D_f)を算出する。
e5:暗号化検索結果配列格納部12に、追加識別子D_newと、手順e4で算出した暗号化前後識別子情報F2(k_d;D_new)◎(0^L||D_f)と、暗号化前後識別子鍵情報Enc(F3(k_s;W);F2(k_d;D_new))とを対応付けた情報を追加する。
また、図8において、追加依頼装置60は、入力部61と、暗号化キーワード算出部62と、始点鍵算出部63と、前後識別子鍵算出部64と、暗号化前後識別子鍵算出部65と、追加要求送信部66とを備える。ここで、追加依頼装置60が上述の端末200によって構成される場合、各機能ブロックは次のように構成される。入力部61は、入力装置2006と、ROM2003および記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001とによって構成される。また、暗号化キーワード算出部62、始点鍵算出部63、前後識別子鍵算出部64および暗号化前後識別子鍵算出部65は、次のように構成される。すなわち、これらの各機能ブロックは、ROM2003および記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001によって構成される。また、追加要求送信部66は、ネットワークインタフェース2005と、ROM2003および記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001とによって構成される。なお、追加依頼装置60の各機能ブロックのハードウェア構成は、上述の構成に限定されない。
入力部61は、追加識別子と、キーワードと、鍵情報とを入力情報として取得する。追加識別子は、追加される対象データのデータ識別子である。また、キーワードは、追加識別子の示す対象データが完全一致するキーワードである。また、鍵情報は、後述の追加要求を生成するための情報である。例えば、入力部61は、鍵情報として、前述のキーワード鍵情報k_p、始点鍵情報生成鍵k_e、検索鍵情報生成鍵k_s、および、前後識別子鍵情報生成鍵k_dを取得してもよい。また、例えば、入力部61は、鍵情報として、これらの情報k_p、k_e、k_s、および、k_dを生成可能な1つの鍵Kを取得してもよい。
暗号化キーワード算出部62は、入力部61に入力されたキーワードおよび鍵情報に基づいて、暗号化キーワード情報を算出する。暗号化キーワード算出部62の具体的な構成例については、検索依頼装置50の暗号化キーワード算出部52の具体的構成例と略同様であるため、詳細な説明を省略する。
始点鍵算出部63は、入力部61に入力されたキーワードおよび鍵情報に基づいて、始点鍵情報を算出する。始点鍵算出部63の具体的な構成例については、検索依頼装置50の始点鍵算出部53の具体的構成例と略同様であるため、詳細な説明を省略する。
前後識別子鍵算出部64は、入力部61に入力された追加識別子および鍵情報に基づいて、前後識別子鍵情報を算出する。ここで、追加識別子としてDが入力され、鍵情報として前後識別子鍵情報生成鍵k_dが入力されている場合、前後識別子鍵算出部64は、前述の式(4)を用いて前後識別子鍵情報F2(k_d;D)を算出すればよい。また、鍵情報として1つの鍵Kが入力されている場合、前後識別子鍵算出部64は、前後識別子鍵情報生成鍵の生成用にあらかじめ定められたデータを、入力された鍵Kを用いて暗号化することにより、前後識別子鍵情報生成鍵k_dを生成してもよい。その後、前後識別子鍵算出部64は、入力された追加識別子Dと、生成した前後識別子鍵情報生成鍵k_dとを式(4)に適用することにより、前後識別子鍵情報を算出すればよい。
暗号化前後識別子鍵算出部65は、前後識別子鍵算出部64によって算出された前後識別子鍵情報と、入力部61に入力されたキーワードおよび鍵情報とに基づいて、暗号化前後識別子鍵情報を算出する。ここで、キーワードとしてWが入力され、鍵情報として検索鍵情報生成鍵k_sが入力されている場合、暗号化前後識別子鍵算出部65は、前述の式(6)を用いて、まず検索鍵情報F3(k_s;W)を生成する。そして、暗号化前後識別子鍵算出部65は、生成した検索鍵情報F3(k_s;W)と、前後識別子鍵算出部64により算出された前後識別子鍵情報F2(k_d;D)とを式(7)に適用し、暗号化前後識別子鍵情報Enc(F3(k_s;W);F2(k_d;D))を算出すればよい。また、鍵情報として1つの鍵Kが入力されている場合、暗号化前後識別子鍵算出部65は、検索鍵情報生成鍵の生成用にあらかじめ定められたデータを、入力された鍵Kを用いて暗号化することにより、検索鍵情報生成鍵k_sを生成してもよい。その後、暗号化前後識別子鍵算出部65は、式(6)および(7)を用いて、暗号化前後識別子鍵情報を算出すればよい。
追加要求送信部66は、入力部61に入力された追加識別子と、算出された暗号化キーワード情報、始点鍵情報、前後識別子鍵情報および暗号化前後識別子鍵情報とを、追加要求として追加装置30に送信する。
次に、削除装置40および削除依頼装置70の機能ブロックを図9に示す。
図9において、削除装置40は、削除要求受信部41と、前後識別子抽出部42と、暗号化検索結果配列削除部43とを備える。ここで、削除装置40が上述のサーバ100によって構成される場合、各機能ブロックは次のように構成される。削除要求受信部41は、ネットワークインタフェース1005と、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001とによって構成される。また、前後識別子抽出部42および暗号化検索結果配列削除部43は、ROM1003および記憶装置1004に記憶されたコンピュータ・プログラムおよび各種データをRAM1002に読み込んで実行するCPU1001によって構成される。なお、削除装置40の各機能ブロックのハードウェア構成は、上述の構成に限定されない。
削除要求受信部41は、削除識別子と、前後識別子鍵情報とを削除要求として受信する。削除識別子とは、削除される対象データのデータ識別子を表す。具体的には、削除要求受信部41は、このような削除要求を、後述の削除依頼装置70から受信する。
前後識別子抽出部42は、検索補助データ格納装置10の暗号化検索結果配列格納部12を参照し、削除識別子の前識別子および後識別子を取得する。具体的には、前後識別子抽出部42は、暗号化検索結果配列格納部12において、削除識別子に対応付けられて格納されている暗号化前後識別子情報を取得する。そして、前後識別子抽出部42は、取得した暗号化前後識別子情報を、受信された前後識別子鍵情報を用いて復号することにより、削除識別子の前識別子および後識別子を取得する。
例えば、暗号化検索結果配列格納部12が、データ識別子Dに対して、式(5)に示した暗号化前後識別子情報と、式(7)に示した暗号化前後識別子鍵情報とを対応付けて格納しているとする。このとき、削除要求として、削除識別子D_delと、前後識別子鍵情報F2(k_d;D_del)とが受信されたとする。この場合、前後識別子抽出部42は、次の手順g1〜g2により、削除識別子の前識別子および後識別子を取得する。
g1:暗号化検索結果配列格納部12において、削除識別子D_delに対応する暗号化前後識別子情報Y=F2(k_d;D_del)◎(D_p||D_a)を取得する。
g2:Yおよび前後識別子鍵情報F2(k_d;D_del)の排他的論理和F2(k_d;D_del)◎Yを計算する。ここで、排他的論理和の性質により、F2(k_d;D_del)◎Y=F2(k_d;D_del)◎F2(k_d;D_del)◎(D_p||D_a)=D_p||D_aとなり、前識別子D_pおよび後識別子D_aが得られる。
暗号化検索結果配列削除部43は、暗号化検索結果配列格納部12において、削除識別子に対応付けられた情報を削除する。また、暗号化検索結果配列削除部43は、暗号化検索結果配列格納部12において、削除識別子の前識別子に対応付けられていた暗号化前後識別子情報において、後識別子の情報を更新する。また、暗号化検索結果配列削除部43は、暗号化検索結果配列格納部12において、削除識別子の後識別子に対応付けられていた暗号化前後識別子情報において、前識別子の情報を更新する。具体的には、暗号化検索結果配列削除部43は、削除識別子の前識別子に対応付けられた暗号化前後識別子情報に、削除識別子および削除識別子の後識別子を組み合わせることにより、該暗号化前後識別子情報が後識別子として削除識別子の後識別子を示すよう更新する。また、暗号化検索結果配列削除部43は、削除識別子の後識別子に対応付けられた暗号化前後識別子情報に、削除識別子および削除識別子の前識別子を組み合わせることにより、該暗号化前後識別子情報が前識別子として削除識別子の前識別子を示すよう更新する。
例えば、暗号化検索結果配列格納部12が、データ識別子Dに対して、式(5)に示した暗号化前後識別子情報と、式(7)に示した暗号化前後識別子鍵情報とを対応付けて格納しているとする。このとき、削除要求として、削除識別子D_delと、前後識別子鍵情報F2(k_d;D_del)とが受信されたとする。この場合、暗号化検索結果配列削除部43は、次の手順h1〜h7により、暗号化検索結果配列格納部12を更新する。
h1:暗号化検索結果配列格納部12において、削除識別子D_delの行を削除する。
h2:暗号化検索結果配列格納部12において、削除識別子の前識別子D_pに対応付けられた暗号化前後識別子情報F2(k_d;D_p)◎(D_pp||D_del)を得る。
h3:手順h2で得られた暗号化前後識別子F2(k_d;D_p)◎(D_pp||D_del)に、削除識別子を後識別子として表す情報(0^L ||D_del)と、削除識別子の後識別子を後識別子として表す情報(0^L||D_a)とを排他的に加算する。これにより、削除識別子の前識別子D_pに対応する新たな暗号化前後識別子情報F2(k_d;D_p)◎(D_pp||D_a)が算出される。
h4:暗号化検索結果配列格納部12において、削除識別子の前識別子D_pに対応づけられた暗号化前後識別子情報を、手順h3で算出された値に更新する。
h5:暗号化検索結果配列格納部12において、削除識別子の後識別子D_aに対応付けられた暗号化前後識別子情報F2(k_d;D_a)◎(D_del||D_aa)を得る。
h6:手順h5で得られた暗号化前後識別子F2(k_d;D_a)◎(D_del||D_aa)に、削除識別子を前識別子として表す情報(D_del||0^L)と、削除識別子の前識別子を前識別子として表す情報(D_p||0^L)とを排他的に加算する。これにより、削除識別子の後識別子D_aに対応する新たな暗号化前後識別子情報F2(k_d;D_a)◎(D_p||D_aa)が算出される。
h7:暗号化検索結果配列格納部12において、削除識別子の後識別子D_aに対応づけられた暗号化前後識別子情報を、手順h6で算出された値に更新する。
また、図9において、削除依頼装置70は、入力部71と、前後識別子鍵算出部72と、削除要求送信部73とを備える。ここで、削除依頼装置70が上述の端末200によって構成される場合、各機能ブロックは次のように構成される。入力部71は、入力装置2006と、ROM2003および記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001とによって構成される。また、前後識別子鍵算出部72は、ROM2003および記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001によって構成される。また、削除要求送信部73は、ネットワークインタフェース2005と、ROM2003および記憶装置2004に記憶されたコンピュータ・プログラムおよび各種データをRAM2002に読み込んで実行するCPU2001とによって構成される。なお、削除依頼装置70の各機能ブロックのハードウェア構成は、上述の構成に限定されない。
入力部71は、削除識別子および鍵情報を入力情報として取得する。削除識別子は、削除される対象データのデータ識別子である。また、鍵情報は、後述の削除要求を生成するための情報である。例えば、入力部71は、鍵情報として、前述の前後識別子鍵情報生成鍵k_dを取得してもよい。また、例えば、入力部71は、鍵情報として、前後識別子鍵情報生成鍵k_dを生成可能な鍵Kを取得してもよい。
前後識別子鍵算出部72は、入力部71に入力された削除識別子および鍵情報に基づいて、前後識別子鍵情報を算出する。前後識別子鍵算出部72の具体的な構成例については、追加依頼装置60の前後識別子鍵算出部64の具体的構成例の説明において追加識別子を削除識別子と読み替えることにより説明されるため、詳細な説明を省略する。
削除要求送信部73は、入力部71に入力された削除識別子と、前後識別子鍵算出部72によって算出された前後識別子鍵情報とを、削除要求として削除装置40に送信する。
以上のように構成されたデータ検索システム1の動作について、図面を参照して説明する。なお、以下の動作の説明において、検索補助データ格納装置10には、図5および図6に示した暗号化始点配列および暗号化検索結果配列が格納されているものとする。
まず、検索依頼装置50の検索依頼動作を、図10に示す。
図10において、まず、検索依頼装置50の入力部51は、キーワードおよび鍵情報を入力情報として取得する(ステップA1)。ここでは、キーワードとしてw_1、鍵情報としてKが取得されたものとする。
次に、暗号化キーワード算出部52は、ステップA1で取得されたキーワードおよび鍵情報に基づいて、暗号化キーワード情報を算出する(ステップA2)。
例えば、前述のように、暗号化キーワード算出部52は、キーワード鍵情報の生成用にあらかじめ定められた所定の値を、入力された鍵情報Kを用いて暗号化することにより、キーワード鍵情報k_pを生成してもよい。そして、暗号化キーワード算出部52は、生成したキーワード鍵情報k_pおよび入力されたキーワードw_1を式(1)に適用することにより、暗号化キーワード情報P(k_p;w_1)を算出したものとする。
次に、始点鍵算出部53は、ステップA1で取得されたキーワードおよび鍵情報に基づいて、始点鍵情報を算出する(ステップA3)。
例えば、前述のように、始点鍵算出部53は、始点鍵情報生成鍵の生成用にあらかじめ定められた所定の値を、入力された鍵情報Kを用いて暗号化することにより、始点鍵情報生成鍵k_eを生成してもよい。そして、始点鍵算出部53は、生成した始点鍵情報生成鍵k_eおよび入力されたキーワードw_1を式(2)に適用することにより、始点鍵情報F1(k_e;w_1)を算出する。
次に、検索鍵算出部54は、ステップA1で取得されたキーワードおよび鍵情報に基づいて、検索鍵情報を算出する(ステップA4)。
例えば、前述のように、検索鍵算出部54は、検索鍵情報生成鍵の生成用にあらかじめ定められた所定の値を、入力された鍵情報Kを用いて暗号化することにより、検索鍵情報生成鍵k_sを生成してもよい。そして、検索鍵算出部54は、生成した検索鍵情報生成鍵k_sおよび入力されたキーワードw_1を式(6)に適用することにより、検索鍵情報F3(k_s;w_1)を算出する。
次に、検索要求送信部55は、ステップA2〜A4でそれぞれ算出された暗号化キーワード情報と、始点鍵情報と、検索鍵情報とを、検索要求として検索装置20に送信する(ステップA5)。
以上で、検索依頼装置50は、検索依頼動作を終了する。
次に、検索装置20の検索動作を、図11に示す。
図11において、まず、検索装置20の検索要求受信部21は、検索依頼装置50から、検索要求を受信する(ステップA6)。
ここでは、前述の暗号化キーワード情報P(k_p;w_1)と、始点鍵情報F1(k_e;w_1)と、検索鍵情報F3(k_s;w_1)とが受信されたものとする。
次に、始点復号部22は、暗号化始点配列格納部11において、ステップA6で受信された暗号化キーワード情報に対応付けて格納されている暗号化始点情報を、ステップA6で受信された始点鍵情報を用いて復号することにより始点のデータ識別子を得る。そして、始点復号部22は、始点のデータ識別子を検索結果に加える(ステップA7)。
例えば、ここでは、始点復号部22は、図5の暗号化始点配列において、暗号化キーワード情報P(k_p;w_1)および始点鍵情報F1(k_e;w_1)を用いて、前述の手順a1〜a3を実行することにより、始点D_1を得て検索結果に加える。
次に、検索結果抽出部23は、暗号化検索結果配列格納部12において、検索結果に加えられたデータ識別子に対応付けて格納された暗号化前後識別子情報および暗号化前後識別子鍵情報を取得する(ステップA8)。
次に、検索結果抽出部23は、取得した暗号化前後識別子鍵情報を、ステップA6で受信された検索鍵情報を用いて復号し、前後識別子鍵情報を得る(ステップA9)。
次に、検索結果抽出部23は、復号した前後識別子鍵情報を用いて、暗号化前後識別子情報を復号することにより、該当するデータ識別子の1つ後のデータ識別子を得る(A10)。
例えば、ステップA8〜A10において、検索結果抽出部23は、図6の暗号化検索結果配列において、始点D_1について前述の手順b1〜b3を実行することにより、後識別子D_2を得る。
次に、検索結果抽出部23は、ステップA10で後識別子が得られていれば(ステップA11でYes)、後識別子を検索結果に加えて(ステップA12)、ステップA8からの処理を繰り返す。
ここでは、検索結果抽出部23は、後識別子D_2を検索結果に加え、ステップA8からの処理を繰り返す。そして、検索結果抽出部23は、ステップA10で、次の後識別子としてD_3を得る。そこで、検索結果抽出部23は、後識別子D_3を検索結果に加え、再度、ステップA8からの処理を繰り返す。
一方、ステップA10で後識別子が得られていない場合(ステップA11でNo)、検索結果出力部24は、検索結果を出力し、動作を終了する。
ここでは、検索結果にD_3が加えられた後でのステップA8からの処理では、図6の暗号化検索結果配列において、検索結果抽出部23は、後識別子として0を求めることになる。すなわち、ステップA10で後識別子が得られなかったため、検索結果出力部24は、検索結果として、{D_1,D_2,D_3}を出力する。
なお、検索結果出力部24は、検索結果を、ネットワークインタフェース1005を介して検索依頼装置50等の他の装置に送信してもよい。また、検索結果出力部24は、検索結果を、記憶装置1004に出力してもよいし、表示装置(図示せず)等の出力装置に出力してもよい。
以上で、検索装置20は、検索動作を終了する。
次に、追加依頼装置60の追加依頼動作を、図12に示す。
図12において、まず、追加依頼装置60の入力部61は、追加識別子、キーワードおよび鍵情報を入力情報として取得する(ステップB1)。ここでは、追加識別子としてD_0、キーワードとしてw_1、鍵情報としてKが取得されたものとする。
次に、暗号化キーワード算出部62は、ステップB1で取得されたキーワードおよび鍵情報に基づいて、暗号化キーワード情報を算出する(ステップB2)。
例えば、前述のように、暗号化キーワード算出部62は、キーワード鍵情報の生成用にあらかじめ定められた所定の値を、入力された鍵情報Kを用いて暗号化することにより、キーワード鍵情報k_pを生成してもよい。そして、暗号化キーワード算出部62は、生成したキーワード鍵情報k_pおよび入力されたキーワードw_1を式(1)に適用することにより、暗号化キーワード情報P(k_p;w_1)を算出したものとする。
次に、始点鍵算出部63は、ステップB1で取得されたキーワードおよび鍵情報に基づいて、始点鍵情報を算出する(ステップB3)。
例えば、前述のように、始点鍵算出部63は、始点鍵情報生成鍵の生成用にあらかじめ定められた所定の値を、入力された鍵情報Kを用いて暗号化することにより、始点鍵情報生成鍵k_eを生成してもよい。そして、始点鍵算出部63は、生成した始点鍵情報生成鍵k_eおよび入力されたキーワードw_1を式(2)に適用することにより、始点鍵情報F1(k_e;w_1)を算出する。
次に、前後識別子鍵算出部64は、ステップB1で取得された追加識別子および鍵情報に基づいて、前後識別子鍵情報を算出する(ステップB4)。
例えば、前述のように、前後識別子鍵算出部64は、前後識別子鍵情報生成鍵の生成用にあらかじめ定められた所定の値を、入力された鍵情報Kを用いて暗号化することにより、前後識別子鍵情報生成鍵k_dを生成してもよい。そして、前後識別子鍵算出部64は、生成した前後識別子鍵情報生成鍵k_dおよび入力された追加識別子D_0を式(4)に適用することにより、前後識別子鍵情報F2(k_d,D_0)を算出する。
次に、暗号化前後識別子鍵算出部65は、ステップB1で取得されたキーワードおよび鍵情報と、ステップB4で算出された前後識別子鍵情報とを用いて、暗号化前後識別子鍵情報を算出する(ステップB5)。
例えば、前述のように、前後識別子鍵算出部64は、検索鍵情報生成鍵の生成用にあらかじめ定められた所定の値を、入力された鍵情報Kを用いて暗号化することにより、検索鍵情報生成鍵k_sを生成してもよい。この場合、前後識別子鍵算出部64は、生成した検索鍵情報生成鍵k_sおよび入力されたキーワードw_1を式(6)に適用することにより、検索鍵情報F3(k_s;w_1)を生成する。そして、前後識別子鍵算出部64は、生成した検索鍵情報F3(k_s;w_1)と、ステップB4で算出された前後識別子鍵情報F2(k_d,D_0)とを式(7)に適用することにより、暗号化前後識別子鍵情報Enc(F3(k_s;w_1);F2(k_d;D_0))を算出する。
次に、追加要求送信部66は、ステップB1で入力された追加識別子と、ステップB2〜B5でそれぞれ算出された暗号化キーワード情報と、始点鍵情報と、前後識別子鍵情報と、暗号化前後識別子鍵情報とを、追加要求として追加装置30に送信する(ステップB6)。
以上で、追加依頼装置60は、追加依頼動作を終了する。
次に、追加装置30の追加動作を、図13に示す。
図13において、追加要求受信部31は、追加依頼装置60から追加要求を受信する(ステップB7)。
ここでは、追加識別子D_0と、暗号化キーワード情報P(k_p;w_1)と、始点鍵情報F1(k_e;w_1)と、前後識別子鍵情報F2(k_d,D_0)と、暗号化前後識別子鍵情報Enc(F3(k_s;w_1);F2(k_d;D_0))とが受信されたものとする。
次に、始点抽出部32は、検索補助データ格納装置10の暗号化始点配列格納部11を参照し、ステップB7で受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を、ステップB7で受信された始点鍵情報を用いて復号する。これにより、始点抽出部32は、更新前始点識別子を取得する(ステップB8)。
ここでは、始点抽出部32は、図5の暗号化始点配列において、暗号化キーワード情報P(k_p;w_1)および始点鍵情報F1(k_e;w_1)を用いて上述の手順a1〜a2を実行することにより、更新前始点識別子D_1を得る。
次に、暗号化始点配列更新部33は、ステップB7で受信された追加識別子および始点鍵情報を組み合わせて暗号化した暗号化始点情報を算出する。そして、暗号化始点配列更新部33は、暗号化始点配列格納部11において、ステップB7で受信された暗号化キーワード情報に対応付けられた暗号化始点情報を、算出した値に更新する(ステップB9)。
ここでは、始点抽出部32は、図5の暗号化始点配列において、暗号化キーワード情報P(k_p;w_1)について、追加識別子D_0および始点鍵情報F1(k_e;w_1)を用いて前述の手順c1〜c2を実行する。これにより、図14に示すように暗号化始点配列が更新され、暗号化キーワード情報P(k_p;w_1)には、F1(k_e;w_1)◎D_0が対応付けられて格納される。
次に、暗号化検索結果配列追加部34は、暗号化検索結果配列格納部12において、ステップB8で得られた更新前始点識別子に対応付けられている暗号化前後識別子情報を更新する。具体的には、暗号化検索結果配列追加部34は、該暗号化前後識別子情報を、該暗号化前後識別子情報に追加識別子を前識別子として組み合わせた情報に更新する(ステップB10)。
ここでは、暗号化検索結果配列追加部34は、図6の暗号化検索結果配列において、更新前始点識別子D_1について、追加識別子D_0を用いて前述の手順e1〜e3を実行する。これにより、図6の暗号化検索結果配列において更新前始点識別子D_1に対応付けられていた暗号化前後識別子情報F2(k_d;D_1)◎(0^L||D_2)は、図15に示すようにF2(k_d;D_1)◎(D_0||D_2)に更新される。
次に、暗号化検索結果配列追加部34は、暗号化検索結果配列格納部12に、追加識別子と、追加識別子に対応する暗号化前後識別子情報と、ステップB7で受信された暗号化前後識別子鍵情報とを対応付けた情報を追加する(ステップB11)。詳細には、暗号化検索結果配列追加部34は、追加識別子に対応する暗号化前後識別子情報として、ステップB7で受信された前後識別子鍵情報に、ステップB8で得られた更新前始点識別子を後識別子として組み合わせた情報を算出する。
ここでは、暗号化検索結果配列追加部34は、図6の暗号化検索結果配列において、ステップB7で受信された前後識別子鍵情報F2(k_d,D_0)および追加識別子D_0を用いて、前述の手順e4〜e5を実行する。これにより、図15に示すように暗号化検索結果配列が更新され、追加識別子D_0と、暗号化前後識別子情報F2(k_d;D_0)◎(0^L||D_1)と、暗号化前後識別子鍵情報Enc(F3(k_s;w_1);F2(k_d;D_0))とが、対応付けて格納される。
なお、追加装置30は、追加処理の結果を、ネットワークインタフェース1005を介して追加依頼装置60等の他の装置に送信してもよい。また、追加装置30は、追加処理の結果を、記憶装置1004に出力してもよいし、表示装置(図示せず)等の出力装置に出力してもよい。
以上で、追加装置30は、追加動作を終了する。
次に、削除依頼装置70の追加依頼動作を、図16に示す。
図16において、まず、削除依頼装置70の入力部71は、削除識別子および鍵情報を入力情報として取得する(ステップC1)。ここでは、削除識別子としてD_2、鍵情報としてKが取得されたものとする。
次に、前後識別子鍵算出部72は、ステップC1で取得された削除識別子および鍵情報に基づいて、前後識別子鍵情報を算出する(ステップC2)。
例えば、前述のように、前後識別子鍵算出部72は、前後識別子鍵情報生成鍵の生成用にあらかじめ定められた所定の値を、入力された鍵情報Kを用いて暗号化することにより、前後識別子鍵情報生成鍵k_dを生成してもよい。そして、前後識別子鍵算出部72は、生成した前後識別子鍵情報生成鍵k_dおよび入力された削除識別子D_2を式(4)に適用することにより、前後識別子鍵情報F2(k_d;D_2)を算出したものとする。
次に、削除要求送信部73は、ステップC1で入力された削除識別子と、ステップC2で算出された前後識別子鍵情報とを、削除要求として削除装置40に送信する(ステップC3)。
以上で、削除依頼装置70は、削除依頼動作を終了する。
次に、削除装置40の削除動作を、図17に示す。
図17において、まず、削除要求受信部41は、削除依頼装置70から削除要求を受信する(ステップC4)。
ここでは、削除要求として、削除識別子D_2と、前後識別子鍵情報F2(k_d;D_2)とが受信されたものとする。
次に、前後識別子抽出部42は、暗号化検索結果配列格納部12において、削除識別子に対応付けられて格納されている暗号化前後識別子情報を、前後識別子鍵情報を用いて復号し、削除識別子の前識別子および後識別子を取得する(ステップC5)。
ここでは、前後識別子抽出部42は、図15の暗号化検索結果配列において、削除識別子D_2について、前後識別子鍵情報F2(k_d;D_2)を用いて前述の手順g1〜g2を実行する。これにより、削除識別子D_2の前識別子D_1および後識別子D_3が得られる。
次に、暗号化検索結果配列削除部43は、暗号化検索結果配列格納部12において、削除識別子に対応付けられた情報を削除する(ステップC6)。
ここでは、暗号化検索結果配列削除部43は、図15の暗号化検索結果配列において、前述の手順h1を実行する。これにより、図18に示すように暗号化検索結果配列が更新され、削除識別子D_2の行が削除される。
次に、暗号化検索結果配列削除部43は、暗号化検索結果配列格納部12において、削除識別子の前識別子に対応付けられた暗号化前後識別子情報に、削除識別子および削除識別子の後識別子を組み合わせて更新する(ステップC7)。これにより、削除識別子の前識別子に対応付けられた暗号化前後識別子情報は、後識別子として削除識別子の後識別子を示すようになる。
ここでは、暗号化検索結果配列削除部43は、図15の暗号化検索結果配列において、前識別子D_1について、削除識別子D_2および後識別子D_3を用いて前述の手順h2〜h4を実行する。これにより、図18に示すように暗号化検索結果配列が更新され、前識別子D_1に対応する暗号化前後識別子情報は、F2(k_d;D_1)◎(D_0||D_3)となった。
次に、暗号化検索結果配列削除部43は、暗号化検索結果配列格納部12において、削除識別子の後識別子に対応付けられた暗号化前後識別子情報に、削除識別子および削除識別子の前識別子を組み合わせて更新する(ステップC8)。これにより、削除識別子の後識別子に対応付けられた暗号化前後識別子情報は、前識別子として削除識別子の前識別子を示すようになる。
ここでは、暗号化検索結果配列削除部43は、図15の暗号化検索結果配列において、後識別子D_3について、削除識別子D_2および前識別子D_1を用いて前述の手順h5〜h7を実行する。これにより、図18に示すように暗号化検索結果配列が更新され、後識別子D_3に対応する暗号化前後識別子情報は、F2(k_d;D_3)◎(D_1||0^L)となった。
なお、削除装置40は、削除処理の結果を、ネットワークインタフェース1005を介して削除依頼装置70等の他の装置に送信してもよい。また、削除装置40は、削除処理の結果を、記憶装置1004に出力してもよいし、表示装置(図示せず)等の出力装置に出力してもよい。
以上で、削除装置40は、削除動作を終了する。
以上、データ検索システム1が、検索補助データ格納装置10を用いて完全一致検索、対象データ追加、対象データ削除を行う動作について説明した。なお、本実施の形態において、データ検索システム1は、対象データの更新について、更新前の対象データを削除する動作を実行してから、更新後の対象データを追加する動作を実行することで実現可能である。
次に、本発明の実施の形態の効果について述べる。
本発明の実施の形態としてのデータ検索システムは、暗号化された対象データに対する完全一致検索処理において用いられる暗号化された検索補助データの記憶容量を削減することができる。
その理由について述べる。本実施の形態では、検索補助データ格納装置において、暗号化始点配列格納部が、暗号化キーワード情報と暗号化始点情報とを対応付けた暗号化始点配列を格納するからである。ここで、暗号化キーワード情報は、対象データ群に対する完全一致検索に用いられうる各キーワードをキーワード鍵情報により暗号化した情報である。また、暗号化始点情報は、対象データ群のうち該キーワードに完全一致する検索結果リストにおける始点のデータ識別子に始点鍵情報を組み合わせて暗号化した情報である。また、暗号化検索結果配列格納部が、検索結果リストにおける各データ識別子と、暗号化前後識別子情報と、暗号化前後識別子鍵情報とを対応付けた暗号化検索結果配列を格納するからである。ここで、暗号化前後識別子情報は、検索結果リストにおいて該データ識別子の1つ前のデータ識別子(前識別子)および1つ後のデータ識別子(後識別子)に対して前後識別子鍵情報を組み合わせて暗号化した情報である。また、暗号化前後識別子鍵情報は、前後識別子鍵情報を検索鍵情報により暗号化した情報である。
このように、本実施の形態は、対象データ毎に記憶が必要な情報としては、暗号化検索結果配列に、データ識別子、暗号化前後識別子(暗号化された前識別子および暗号化された後識別子)、暗号化前後識別子鍵情報を記憶するだけでよい。一方、非特許文献1に記載されたDSSEを完全一致検索に適用する場合、対象データ毎に記憶が必要な情報には次のものがある。まず、暗号化検索結果配列には、対象データ毎に、式(10)に示した番地、暗号化されたデータ識別子、暗号化された次の番地、および、nonceの記憶が必要である。また、暗号化削除配列には、対象データ毎に、番地と、式(13)に示した暗号化された前番地、中番地、および、後番地の記憶が必要である。
ここで、説明を簡単にするため、番地とデータ識別子とを表すためにそれぞれ必要な記憶容量は同程度であるとする。また、情報が暗号化される前と後とでそれぞれ必要な記憶容量は同程度であるとする。すると、DSSEでは、対象データ毎に記憶が必要な情報は、番地、暗号化されたデータ識別子、暗号化された次の番地、番地、暗号化された前番地、暗号化された中番地、および、暗号化された後番地の7個である。これに対して、本実施の形態では、対象データ毎に記憶が必要な情報は、データ識別子、暗号化された前識別子、暗号化された後識別子、および、暗号化された前後識別子鍵情報の4個である。したがって、本実施の形態は、非特許文献1に記載されたDSSEを完全一致検索に適用する場合と比較して、検索補助データの記憶容量を大幅に削減することができる。
また、本実施の形態は、より少ない容量の暗号化された検索補助データを用いて、情報を漏えいさせることなく、対象データに対する完全一致検索を行うことができる。
その理由について述べる。本実施の形態では、上述の検索補助データ格納装置を用いた検索装置において、検索要求受信部が、検索依頼装置から、暗号化キーワード情報と、始点鍵情報と、検索鍵情報とを検索要求として受信する。そして、始点復号部が、暗号化始点配列格納部において、受信された暗号化キーワード情報に対応付けて格納されている暗号化始点情報を、受信された始点鍵情報を用いて復号する。このようにして、始点復号部が、検索結果リストにおいて始点となるデータ識別子を得て検索結果に加えるからである。そして、検索結果抽出部が、暗号化検索結果配列格納部において、検索結果に加えられたデータ識別子に対応付けて格納された暗号化前後識別子情報および暗号化前後識別子鍵情報を取得する。そして、検索結果抽出部が、暗号化前後識別子鍵情報を、受信された検索鍵情報を用いて復号して前後識別子鍵情報を得る。そして、検索結果抽出部が、得られた前後識別子鍵情報を用いて、暗号化前後識別子情報を復号する。このようにして、検索結果抽出部が、該データ識別子の1つ後のデータ識別子を得て検索結果に加える処理を繰り返すからである。そして、検索結果出力部が、検索結果抽出部により1つ後のデータ識別子が得られなくなると、検索結果を出力するからである。
また、本実施の形態は、対象データに対する完全一致検索を行うためのより少ない容量の暗号化された検索補助データに対して、情報を漏えいさせることなく、対象データを追加することができる。
その理由について述べる。本実施の形態では、上述の検索補助データ格納装置を用いた追加装置において、追加要求受信部が、追加識別子と、暗号化キーワード情報と、始点鍵情報と、前後識別子鍵情報と、暗号化前後識別子鍵情報とを追加要求として受信する。そして、始点抽出部が、暗号化始点配列格納部において、受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を、受信された始点鍵情報を用いて復号する。このようにして、始点抽出部が、更新前始点識別子を取得するからである。そして、暗号化始点配列更新部が、暗号化始点配列格納部において、受信された暗号化キーワード情報に対応付けられた暗号化始点情報を、追加識別子に始点鍵情報を組み合わせて暗号化した暗号化始点情報に更新するからである。そして、暗号化検索結果配列追加部が、暗号化検索結果配列格納部において、更新前始点識別子に対応付けられて格納されている暗号化前後識別子情報を、該暗号化前後識別子情報に追加識別子を前識別子として組み合わせた情報に更新するからである。さらに、暗号化検索結果配列追加部が、受信された前後識別鍵情報に更新前始点識別子を後識別子として組み合わせて、追加識別子に対する暗号化前後識別子情報を生成する。そして、暗号化検索結果配列追加部が、暗号化検索結果配列格納部において、追加識別子と、生成した暗号化前後識別子情報と、受信された暗号化前後識別子鍵情報とを対応付けた情報を追加するからである。
また、本実施の形態は、対象データに対する完全一致検索を行うためのより少ない容量の暗号化された検索補助データから、情報を漏えいさせることなく、対象データを削除することができる。
その理由について述べる。本実施の形態では、上述の検索補助データ格納装置を用いた削除装置において、削除要求受信部が、削除識別子と、前後識別子鍵情報とを削除要求として受信する。そして、前後識別子抽出部が、暗号化検索結果配列格納部において、削除識別子に対応付けられて格納されている暗号化前後識別子情報を、前後識別子鍵情報を用いて復号する。このようにして、前後識別子抽出部が、削除識別子の前識別子および後識別子を取得するからである。そして、暗号化検索結果配列削除部が、暗号化検索結果配列格納部において、削除識別子に対応付けられた情報を削除する。そして、暗号化検索結果配列削除部が、暗号化検索結果配列格納部において、削除識別子の前識別子に対応付けられた暗号化前後識別子情報に、削除識別子および削除識別子の後識別子を組み合わせる。これにより、削除識別子の前識別子に対応付けられた暗号化前後識別子情報が、後識別子として削除識別子の後識別子を示すよう更新されるからである。さらに、暗号化検索結果配列削除部が、暗号化検索結果配列格納部において、削除識別子の後識別子に対応付けられた暗号化前後識別子情報に、削除識別子および削除識別子の前識別子を組み合わせる。これにより、削除識別子の後識別子に対応付けられた暗号化前後識別子情報が、前識別子として削除識別子の前識別子を示すよう更新されるからである。
このように、本実施の形態は、暗号化検索結果配列に前識別子の情報を含ませることで、削除配列を記憶する必要がなく、暗号化始点配列および暗号化検索結果配列を用いて、対象データの検索・追加・削除を行うことができる。その結果、本実施の形態は、検索補助データの記憶容量を大幅に削減している。
このような本実施の形態では、鍵情報を有するユーザは、端末の検索依頼装置、追加依頼装置または削除依頼装置を介して、対象データの完全一致検索、追加、削除を、データベースサーバに要求することができる。なお、ユーザが有する鍵情報とは、キーワード鍵情報k_p、始点鍵情報生成鍵k_e、検索鍵情報生成鍵k_s、および、前後識別子鍵情報生成鍵k_dである。または、ユーザが有する鍵情報は、これらの鍵情報を生成可能な1つの鍵情報Kであればよい。そして、ユーザは、データベースサーバから、検索装置によって検索補助データ格納装置から抽出された検索結果を得ることができるとともに、データベースサーバにおける対象データの追加・削除等の管理を行うことができる。
なお、本実施の形態において、検索補助データ格納装置における暗号化始点配列格納部が、式(1)によって算出される暗号化キーワード情報と、式(3)によって算出される暗号化始点情報とを格納する例を中心に説明した。これに限らず、暗号化キーワード情報は、キーワードをキーワード鍵情報により暗号化するその他の手法により算出された情報でもよい。また、暗号化始点情報は、始点のデータ識別子を始点鍵情報により暗号化するその他の手法により算出された情報であってもよい。
また、本実施の形態において、検索補助データ格納装置における暗号化検索結果配列格納部が、式(5)によって算出される暗号化前後識別子情報と、式(7)によって算出される暗号化前後識別子鍵情報とを格納する例を中心に説明した。これに限らず、暗号化前後識別子情報は、前後識別子情報を前後識別子鍵情報により暗号化するその他の手法により算出された情報でもよい。また、暗号化前後識別子鍵情報は、前後識別子鍵情報を検索鍵情報により暗号化するその他の手法により算出された情報であってもよい。
また、本実施の形態において、検索補助データ格納装置が、検索装置、追加装置、および、削除装置を実現するコンピュータ装置の記憶装置によって構成される例を中心に説明した。これに限らず、検索補助データ格納装置は、検索装置、追加装置、および、削除装置とは異なるコンピュータ装置によって構成されていてもよい。
また、本実施の形態において、検索装置、検索依頼装置、追加装置、追加依頼装置、削除装置、および、削除依頼装置の各機能ブロックが、記憶装置またはROMに記憶されたコンピュータ・プログラムを実行するCPUによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
また、本実施の形態において、各フローチャートを参照して説明した各装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置(記憶媒体)に格納しておく。そして、係るコンピュータ・プログラムを当該CPUが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
この出願は、2014年7月2日に出願された日本出願特願2014−137024を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、暗号化された検索補助データの記憶容量を削減しながら、暗号化された対象データを格納するデータベースに対して、対象データに関する情報を漏えいさせることがなく、完全一致検索、対象データの追加・削除を行うことができる。したがって、本発明は、例えば、ネットーワークを介した外部サーバに機密情報を保管するシステム等として好適である。
1 データ検索システム
10 検索補助データ格納装置
11 暗号化始点配列格納部
12 暗号化検索結果配列格納部
20 検索装置
21 検索要求受信部
22 始点復号部
23 検索結果抽出部
24 検索結果出力部
30 追加装置
31 追加要求受信部
32 始点抽出部
33 暗号化始点配列更新部
34 暗号化検索結果配列追加部
40 削除装置
41 削除要求受信部
42 前後識別子抽出部
43 暗号化検索結果配列削除部
50 検索依頼装置
51 入力部
52 暗号化キーワード算出部
53 始点鍵算出部
54 検索鍵算出部
55 検索要求送信部
60 追加依頼装置
61 入力部
62 暗号化キーワード算出部
63 始点鍵算出部
64 前後識別子鍵算出部
65 暗号化前後識別子鍵算出部
66 追加要求送信部
70 削除依頼装置
71 入力部
72 前後識別子鍵算出部
73 削除要求送信部
100 サーバ
200 端末
1001、2001 CPU
1002、2002 RAM
1003、2003 ROM
1004、2004 記憶装置
1005、2005 ネットワークインタフェース
2006 入力装置
2007 出力装置

Claims (9)

  1. 対象データ群に対する完全一致検索に用いられうる各キーワードをキーワード鍵情報により暗号化した暗号化キーワード情報と、前記対象データ群のうち該キーワードに完全一致する対象データのデータ識別子のリスト(検索結果リスト)における始点のデータ識別子に始点鍵情報を組み合わせて暗号化した暗号化始点情報とを対応付けた暗号化始点配列を格納する暗号化始点配列格納手段と前記検索結果リストにおける各データ識別子と、前記検索結果リストにおいて該データ識別子の1つ前のデータ識別子(前識別子)および1つ後のデータ識別子(後識別子)に対して前後識別子鍵情報を組み合わせて暗号化した暗号化前後識別子情報と、前記前後識別子鍵情報を検索鍵情報により暗号化した暗号化前後識別子鍵情報とを対応付けた暗号化検索結果配列を格納する暗号化検索結果配列格納手段とを備えた検索補助データ格納装置を用いる追加装置であって、
    追加される対象データのデータ識別子(追加識別子)と、前記暗号化キーワード情報と、前記始点鍵情報と、前記前後識別子鍵情報と、前記暗号化前後識別子鍵情報とを追加要求として受信する追加要求受信手段と、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、更新前の始点のデータ識別子(更新前始点識別子)を取得する始点抽出手段と、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けられた暗号化始点情報を、前記追加識別子に前記始点鍵情報を組み合わせて暗号化した暗号化始点情報に更新する暗号化始点配列更新手段と、
    前記暗号化検索結果配列格納手段において、前記更新前始点識別子に対応付けられて格納されている暗号化前後識別子情報を、該暗号化前後識別子情報に前記追加識別子を前識別子として組み合わせた情報に更新するとともに、前記追加識別子に対して、受信された前後識別子鍵情報に前記更新前始点識別子を後識別子として組み合わせて生成した前記暗号化前後識別子情報と、受信された暗号化前後識別子鍵情報とを対応付けた情報を追加する暗号化検索結果配列追加手段と、
    を備えた追加装置
  2. 前記追加識別子と、前記追加識別子の示す対象データが完全一致するキーワードと、鍵情報とを入力する入力手段と、
    前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記暗号化キーワード情報を算出する暗号化キーワード算出手段と、
    前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記始点鍵情報を算出する始点鍵算出手段と、
    前記入力手段に入力された前記追加識別子および前記鍵情報に基づいて、前記前後識別子鍵情報を算出する前後識別子鍵算出手段と、
    前記前後識別子鍵算出手段によって算出された前後識別子鍵情報と、前記入力手段に入力された前記キーワードおよび前記鍵情報とに基づいて、前記暗号化前後識別子鍵情報を算出する暗号化前後識別子鍵算出手段と、
    前記入力手段に入力された前記追加識別子と、前記暗号化キーワード算出手段、前記始点鍵算出手段、前記前後識別子鍵算出手段、および、前記暗号化前後識別子鍵算出手段によって算出された前記暗号化キーワード情報と、前記始点鍵情報と、前記前後識別子鍵情報と、前記暗号化前後識別子鍵情報とを、前記追加要求として請求項に記載の追加装置に送信する追加要求送信手段と、
    を備えた追加依頼装置。
  3. 対象データ群に対する完全一致検索に用いられうる各キーワードをキーワード鍵情報により暗号化した暗号化キーワード情報と、前記対象データ群のうち該キーワードに完全一致する対象データのデータ識別子のリスト(検索結果リスト)における始点のデータ識別子に始点鍵情報を組み合わせて暗号化した暗号化始点情報とを対応付けた暗号化始点配列を格納する暗号化始点配列格納手段と;前記検索結果リストにおける各データ識別子と、前記検索結果リストにおいて該データ識別子の1つ前のデータ識別子(前識別子)および1つ後のデータ識別子(後識別子)に対して前後識別子鍵情報を組み合わせて暗号化した暗号化前後識別子情報と、前記前後識別子鍵情報を検索鍵情報により暗号化した暗号化前後識別子鍵情報とを対応付けた暗号化検索結果配列を格納する暗号化検索結果配列格納手段と;を備えた検索補助データ格納装置を用いる削除装置であって、
    削除される対象データのデータ識別子(削除識別子)と、前記前後識別子鍵情報とを削除要求として受信する削除要求受信手段と、
    前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられて格納されている暗号化前後識別子情報を、受信された前後識別子鍵情報を用いて復号することにより、前記削除識別子の前識別子および後識別子を取得する前後識別子抽出手段と、
    前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられた情報を削除するとともに、前記削除識別子の前識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の後識別子を組み合わせることにより、該暗号化前後識別子情報が後識別子として前記削除識別子の後識別子を示すよう更新し、前記削除識別子の後識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の前識別子を組み合わせることにより、該暗号化前後識別子情報が前識別子として前記削除識別子の前識別子を示すよう更新する暗号化検索結果配列削除手段と、
    を備えた削除装置。
  4. 対象データ群に対する完全一致検索に用いられうる各キーワードをキーワード鍵情報により暗号化した暗号化キーワード情報と、前記対象データ群のうち該キーワードに完全一致する対象データのデータ識別子のリスト(検索結果リスト)における始点のデータ識別子に始点鍵情報を組み合わせて暗号化した暗号化始点情報とを対応付けた暗号化始点配列を格納する暗号化始点配列格納手段と;前記検索結果リストにおける各データ識別子と、前記検索結果リストにおいて該データ識別子の1つ前のデータ識別子(前識別子)および1つ後のデータ識別子(後識別子)に対して前後識別子鍵情報を組み合わせて暗号化した暗号化前後識別子情報と、前記前後識別子鍵情報を検索鍵情報により暗号化した暗号化前後識別子鍵情報とを対応付けた暗号化検索結果配列を格納する暗号化検索結果配列格納手段と;を備えた検索補助データ格納装置と、
    前記検索補助データ格納装置を用いる検索装置と、
    前記検索補助データ格納装置を用いる追加装置と
    を備え、
    前記検索装置は、
    前記暗号化キーワード情報と、前記始点鍵情報と、前記検索鍵情報とを検索要求として受信する検索要求受信手段と、前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納されている暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、前記検索結果リストにおいて始点となるデータ識別子を得て検索結果に加える始点復号手段と、
    前記暗号化検索結果配列格納手段において、前記検索結果に加えられたデータ識別子に対応付けて格納された暗号化前後識別子情報および暗号化前後識別子鍵情報を取得し、取得した暗号化前後識別子鍵情報を、受信された検索鍵情報を用いて復号して前後識別子鍵情報を取得し、取得した前後識別子鍵情報を用いて暗号化前後識別子情報を復号することにより、該データ識別子の1つ後のデータ識別子を得て前記検索結果に加える検索結果抽出処理を、1つ後のデータ識別子が得られなくなるまで繰り返す検索結果抽出手段と、
    前記検索結果抽出手段によって抽出された検索結果を出力する検索結果出力手段と、
    を備え
    前記追加装置は、
    追加される対象データのデータ識別子(追加識別子)と、前記暗号化キーワード情報と、前記始点鍵情報と、前記前後識別子鍵情報と、前記暗号化前後識別子鍵情報とを追加要求として受信する追加要求受信手段と、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、更新前の始点のデータ識別子(更新前始点識別子)を取得する始点抽出手段と、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けられた暗号化始点情報を、前記追加識別子に前記始点鍵情報を組み合わせて暗号化した暗号化始点情報に更新する暗号化始点配列更新手段と、
    前記暗号化検索結果配列格納手段において、前記更新前始点識別子に対応付けられて格納されている暗号化前後識別子情報を、該暗号化前後識別子情報に前記追加識別子を前識別子として組み合わせた情報に更新するとともに、前記追加識別子に対して、受信された前後識別子鍵情報に前記更新前始点識別子を後識別子として組み合わせて生成した前記暗号化前後識別子情報と、受信された暗号化前後識別子鍵情報とを対応付けた情報を追加する暗号化検索結果配列追加手段と、
    を備えた
    データ検索システム
  5. キーワードおよび鍵情報を入力する入力手段と、前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記暗号化キーワード情報を算出する暗号化キーワード算出手段と前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記始点鍵情報を算出する始点鍵算出手段と前記入力手段に入力された前記キーワードおよび前記鍵情報に基づいて、前記検索鍵情報を算出する検索鍵算出手段と前記暗号化キーワード算出手段、前記始点鍵算出手段および前記検索鍵算出手段によって算出された前記暗号化キーワード情報と、前記始点鍵情報と、前記検索鍵情報とを、前記検索要求として前記検索装置に送信する検索要求送信手段とを備えた検索依頼装置をさらに備える請求項4に記載のデータ検索システム
  6. 請求項3に記載の削除装置と、
    請求項2に記載の追加依頼装置と
    をさらに備えた請求項4又は請求項5に記載のデータ検索システム
  7. 前記削除識別子および鍵情報を入力する入力手段と前記入力手段に入力された前記削除識別子および前記鍵情報に基づいて、前記前後識別子鍵情報を算出する前後識別子鍵算出手段と前記入力手段に入力された前記削除識別子と、前記前後識別子鍵算出手段によって算出された前記前後識別子鍵情報とを、前記削除要求として前記削除装置に送信する削除要求送信手段とを備えた削除依頼装置をさらに備える請求項6に記載のデータ検索システム
  8. 対象データ群に対する完全一致検索に用いられうる各キーワードをキーワード鍵情報により暗号化した暗号化キーワード情報と、前記対象データ群のうち該キーワードに完全一致する対象データのデータ識別子のリスト(検索結果リスト)における始点のデータ識別子に始点鍵情報を組み合わせて暗号化した暗号化始点情報とを対応付けた暗号化始点配列を格納する暗号化始点配列格納手段と;前記検索結果リストにおける各データ識別子と、前記検索結果リストにおいて該データ識別子の1つ前のデータ識別子(前識別子)および1つ後のデータ識別子(後識別子)に対して前後識別子鍵情報を組み合わせて暗号化した暗号化前後識別子情報と、前記前後識別子鍵情報を検索鍵情報により暗号化した暗号化前後識別子鍵情報とを対応付けた暗号化検索結果配列を格納する暗号化検索結果配列格納手段と;を備えた検索補助データ格納装置を用いるデータ検索方法であって、
    前記暗号化キーワード情報と、前記始点鍵情報と、前記検索鍵情報とを検索要求として受信すると、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納されている暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、前記検索結果リストにおいて始点となるデータ識別子を得て検索結果に加え、
    前記暗号化検索結果配列格納手段において、前記検索結果に加えられたデータ識別子に対応付けて格納された暗号化前後識別子情報および暗号化前後識別子鍵情報を取得し、取得した暗号化前後識別子鍵情報を、受信された検索鍵情報を用いて復号して前後識別子鍵情報を取得し、取得した前後識別子鍵情報を用いて暗号化前後識別子情報を復号することにより、該データ識別子の1つ後のデータ識別子を得て前記検索結果に加える検索結果抽出処理を、1つ後のデータ識別子が得られなくなるまで繰り返し、
    抽出した検索結果を出力するとともに、
    追加される対象データのデータ識別子(追加識別子)と、前記暗号化キーワード情報と、前記始点鍵情報と、前記前後識別子鍵情報と、前記暗号化前後識別子鍵情報とを追加要求として受信すると、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、更新前の始点のデータ識別子(更新前始点識別子)を取得し、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けられた暗号化始点情報を、前記追加識別子に前記始点鍵情報を組み合わせて暗号化した暗号化始点情報に更新し、
    前記暗号化検索結果配列格納手段において、前記更新前始点識別子に対応付けられて格納されている暗号化前後識別子情報を、該暗号化前後識別子情報に前記追加識別子を前識別子として組み合わせた情報に更新するとともに、前記追加識別子に対して、受信された前後識別子鍵情報に前記更新前始点識別子を後識別子として組み合わせて生成した前記暗号化前後識別子情報と、受信された暗号化前後識別子鍵情報とを対応付けた情報を追加するとともに、
    削除される対象データのデータ識別子(削除識別子)と、前記前後識別子鍵情報とを削除要求として受信すると、
    前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられて格納されている暗号化前後識別子情報を、受信された前後識別子鍵情報を用いて復号することにより、前記削除識別子の前識別子および後識別子を取得し、
    前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられた情報を削除するとともに、前記削除識別子の前識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の後識別子を組み合わせることにより、該暗号化前後識別子情報が後識別子として前記削除識別子の後識別子を示すよう更新し、前記削除識別子の後識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の前識別子を組み合わせることにより、該暗号化前後識別子情報が前識別子として前記削除識別子の前識別子を示すよう更新する、データ検索方法。
  9. 対象データ群に対する完全一致検索に用いられうる各キーワードをキーワード鍵情報により暗号化した暗号化キーワード情報と、前記対象データ群のうち該キーワードに完全一致する対象データのデータ識別子のリスト(検索結果リスト)における始点のデータ識別子に始点鍵情報を組み合わせて暗号化した暗号化始点情報とを対応付けた暗号化始点配列を格納する暗号化始点配列格納手段と;前記検索結果リストにおける各データ識別子と、前記検索結果リストにおいて該データ識別子の1つ前のデータ識別子(前識別子)および1つ後のデータ識別子(後識別子)に対して前後識別子鍵情報を組み合わせて暗号化した暗号化前後識別子情報と、前記前後識別子鍵情報を検索鍵情報により暗号化した暗号化前後識別子鍵情報とを対応付けた暗号化検索結果配列を格納する暗号化検索結果配列格納手段と;を備えた検索補助データ格納装置を用いるコンピュータプログラムであって、
    前記暗号化キーワード情報と、前記始点鍵情報と、前記検索鍵情報とを検索要求として受信する検索要求受信ステップと、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納されている暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、前記検索結果リストにおいて始点となるデータ識別子を得て検索結果に加える始点復号ステップと、
    前記暗号化検索結果配列格納手段において、前記検索結果に加えられたデータ識別子に対応付けて格納された暗号化前後識別子情報および暗号化前後識別子鍵情報を取得し、取得した暗号化前後識別子鍵情報を、受信された検索鍵情報を用いて復号して前後識別子鍵情報を取得し、取得した前後識別子鍵情報を用いて暗号化前後識別子情報を復号することにより、該データ識別子の1つ後のデータ識別子を得て前記検索結果に加える検索結果抽出処理を、1つ後のデータ識別子が得られなくなるまで繰り返す検索結果抽出ステップと、
    前記検索結果抽出ステップで抽出された検索結果を出力する検索結果出力ステップと、
    追加される対象データのデータ識別子(追加識別子)と、前記暗号化キーワード情報と、前記始点鍵情報と、前記前後識別子鍵情報と、前記暗号化前後識別子鍵情報とを追加要求として受信する追加要求受信ステップと、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けて格納された暗号化始点情報を、受信された始点鍵情報を用いて復号することにより、更新前の始点のデータ識別子(更新前始点識別子)を取得する始点抽出ステップと、
    前記暗号化始点配列格納手段において、受信された暗号化キーワード情報に対応付けられた暗号化始点情報を、前記追加識別子に前記始点鍵情報を組み合わせて暗号化した暗号化始点情報に更新する暗号化始点配列更新ステップと、
    前記暗号化検索結果配列格納手段において、前記更新前始点識別子に対応付けられて格納されている暗号化前後識別子情報を、該暗号化前後識別子情報に前記追加識別子を前識別子として組み合わせた情報に更新するとともに、前記追加識別子に対して、受信された前後識別子鍵情報に前記更新前始点識別子を後識別子として組み合わせて生成した前記暗号化前後識別子情報と、受信された暗号化前後識別子鍵情報とを対応付けた情報を追加する暗号化検索結果配列追加ステップと、
    削除される対象データのデータ識別子(削除識別子)と、前記前後識別子鍵情報とを削除要求として受信する削除要求受信ステップと、
    前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられて格納されている暗号化前後識別子情報を、受信された前後識別子鍵情報を用いて復号することにより、前記削除識別子の前識別子および後識別子を取得する前後識別子抽出ステップと、
    前記暗号化検索結果配列格納手段において、前記削除識別子に対応付けられた情報を削除するとともに、前記削除識別子の前識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の後識別子を組み合わせることにより、該暗号化前後識別子情報が後識別子として前記削除識別子の後識別子を示すよう更新し、前記削除識別子の後識別子に対応付けられた暗号化前後識別子情報に、前記削除識別子および前記削除識別子の前識別子を組み合わせることにより、該暗号化前後識別子情報が前識別子として前記削除識別子の前識別子を示すよう更新する暗号化検索結果配列削除ステップと、
    をコンピュータ装置に実行させるコンピュータプログラム。
JP2016531110A 2014-07-02 2015-06-30 追加装置、削除装置、追加依頼装置、データ検索システム、データ検索方法、および、コンピュータプログラム Active JP6493402B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014137024 2014-07-02
JP2014137024 2014-07-02
PCT/JP2015/003270 WO2016002198A1 (ja) 2014-07-02 2015-06-30 検索補助データ格納装置、検索装置、追加装置、削除装置、検索依頼装置、追加依頼装置、削除依頼装置、データ検索システム、データ検索方法、および、記憶媒体

Publications (2)

Publication Number Publication Date
JPWO2016002198A1 JPWO2016002198A1 (ja) 2017-05-25
JP6493402B2 true JP6493402B2 (ja) 2019-04-03

Family

ID=55018775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016531110A Active JP6493402B2 (ja) 2014-07-02 2015-06-30 追加装置、削除装置、追加依頼装置、データ検索システム、データ検索方法、および、コンピュータプログラム

Country Status (2)

Country Link
JP (1) JP6493402B2 (ja)
WO (1) WO2016002198A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018211670A1 (ja) 2017-05-18 2018-11-22 三菱電機株式会社 検索装置、タグ生成装置、クエリ生成装置、秘匿検索システム、検索プログラム、タグ生成プログラム及びクエリ生成プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2778953A4 (en) * 2011-12-09 2015-09-09 Nec Corp CODED SEARCH DATABASE DEVICE, METHOD FOR ADDING AND DELETING DATA FOR CODED SEARCH, AND ADD / REMOVE PROGRAM

Also Published As

Publication number Publication date
WO2016002198A1 (ja) 2016-01-07
JPWO2016002198A1 (ja) 2017-05-25

Similar Documents

Publication Publication Date Title
CN110337649B (zh) 用于搜索模式未察觉的动态对称可搜索加密的方法和系统
CN106815350B (zh) 一种云环境中动态的密文多关键词模糊搜索方法
US10489604B2 (en) Searchable encryption processing system and searchable encryption processing method
US8533489B2 (en) Searchable symmetric encryption with dynamic updating
US10664610B2 (en) Method and system for range search on encrypted data
WO2015055762A1 (en) System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption
JP6239213B1 (ja) 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
JP5348337B2 (ja) 暗号化データベース管理システム、クライアントおよびサーバ、自然結合方法およびプログラム
JP5392439B2 (ja) 暗号化検索データベース装置、暗号化検索用データの追加削除方法および追加削除プログラム
KR101979267B1 (ko) 클라우드 저장 기반 암호화 시스템 및 방법
CN115225409B (zh) 基于多备份联合验证的云数据安全去重方法
WO2014141802A1 (ja) 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム
JP2017044779A (ja) 検索可能暗号処理システム
JP6672451B2 (ja) 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法
CN104794243A (zh) 基于文件名的第三方密文检索方法
JP6493402B2 (ja) 追加装置、削除装置、追加依頼装置、データ検索システム、データ検索方法、および、コンピュータプログラム
KR102602189B1 (ko) 클라우드 기반의 문서 공유 서비스를 운영하기 위한 문서 공유 서비스 서버 및 그 동작 방법
JP7217844B1 (ja) 秘匿検索システムおよび秘匿検索方法
US9058507B2 (en) Signal processor with an encrypting or decrypting device in a memory system
CN114124469A (zh) 数据处理的方法、装置和设备
JP6462968B1 (ja) データ管理装置、データ管理方法及びデータ管理プログラム
TWI558152B (zh) Key replacement method and computer program products
KR20180099310A (ko) 검색 가능 암호 시스템에서의 검색 장치 및 방법
JP7217836B1 (ja) データ管理装置、秘匿検索システム、秘匿検索方法、および、秘匿検索プログラム
CN117494159A (zh) 可实现密文批量分享的动态可搜索对称加密方法及系统

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190218

R150 Certificate of patent or registration of utility model

Ref document number: 6493402

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150