特許第6011533号(P6011533)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許6011533情報処理装置、情報処理方法およびプログラム
<>
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000002
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000003
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000004
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000005
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000006
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000007
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000008
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000009
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000010
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000011
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000012
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000013
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000014
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000015
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000016
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000017
  • 特許6011533-情報処理装置、情報処理方法およびプログラム 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6011533
(24)【登録日】2016年9月30日
(45)【発行日】2016年10月19日
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
   G06F 17/30 20060101AFI20161006BHJP
   G09C 1/00 20060101ALI20161006BHJP
【FI】
   G06F17/30 120A
   G06F17/30 414A
   G09C1/00 660D
【請求項の数】9
【全頁数】27
(21)【出願番号】特願2013-523064(P2013-523064)
(86)(22)【出願日】2012年7月6日
(86)【国際出願番号】JP2012067294
(87)【国際公開番号】WO2013005825
(87)【国際公開日】20130110
【審査請求日】2015年6月4日
(31)【優先権主張番号】特願2011-150595(P2011-150595)
(32)【優先日】2011年7月7日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【弁理士】
【氏名又は名称】加藤 朝道
(72)【発明者】
【氏名】荒木 俊則
(72)【発明者】
【氏名】寺西 勇
(72)【発明者】
【氏名】古川 潤
【審査官】 小太刀 慶明
(56)【参考文献】
【文献】 特開2010−61103(JP,A)
【文献】 米国特許出願公開第2006/0075228(US,A1)
【文献】 Eu-Jin Goh,Secure Indexes,2004年 5月 5日,pp.1-19,URL,http://crypto.stanford.edu/~eujin/papers/secureindex/secureindex.pdf
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
文書を識別するための識別情報をノードに格納した木構造を保持する記憶部と、
前記記憶部に文書を登録する登録部と、を備え、
前記登録部は、文書を識別するための識別情報と単語の集合を含む文書と、鍵とを受け付ける受付部と、
受け付けた識別情報を前記木構造の葉ノードに登録する識別情報登録部と、
前記木構造の根ノードから該葉ノードまでの各ノードに登録された識別情報に対するセキュアインデックスを前記単語の集合と前記鍵に基づいて求め、求めたセキュアインデックスを加算したものを前記文書の検索用インデックスとして生成するセキュアインデックス生成部と、
受け付けた複数の文書のそれぞれに対して生成された検索用インデックスを加算したものを該複数の文書に対する検索用インデックスとして前記記憶部に格納するインデックス登録部と、を有し
前記インデックス登録部は、前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として前記記憶部に格納する、情報処理装置。
【請求項2】
削除すべき文書を識別するための識別情報と前記暗号化を解除するための復号情報とを受け付け、前記木構造から該識別情報を削除するとともに、前記削除情報において該識別情報に関連付けられた暗号文を、該復号情報を用いて復号することにより、該文書に対して生成された検索用インデックスを求め、求めた検索用インデックスを、前記複数の文書に対する検索用のインデックスから減算する削除部をさらに備える、請求項1に記載の情報処理装置。
【請求項3】
文書を識別するための識別情報をノードに格納した木構造を保持する記憶部と、
前記記憶部に文書を登録する登録部と、を備える情報処理装置であって、
前記登録部は、文書を識別するための識別情報と単語の集合を含む文書と、鍵とを受け付ける受付部と、
受け付けた識別情報を前記木構造の葉ノードに登録する識別情報登録部と、
前記木構造の根ノードから該葉ノードまでの各ノードに登録された識別情報に対するセキュアインデックスを前記単語の集合と前記鍵に基づいて求め、求めたセキュアインデックスを加算したものを前記文書の検索用インデックスとして生成するセキュアインデックス生成部と、
受け付けた複数の文書のそれぞれに対して生成された検索用インデックスを加算したものを該複数の文書に対する検索用インデックスとして前記記憶部に格納するインデックス登録部と、を有し、
前記情報処理装置は、単語と鍵とを受け付け、該鍵を用いて該単語に対するトラップドアを生成する検索依頼部と、
前記トラップドアを受け付け、前記複数の文書に対する検索用インデックスと前記木構造とを前記記憶部から読み出し、フラグが割り当てられていないノードのうちの最も根ノードに近いノードを前記木構造から選択し、選択したノードに登録された識別情報と前記トラップドアと該検索用インデックスとに基づいてセキュアインデックス判定を行い、前記単語が該識別情報によって識別される文書に含まれる判定された場合には、該ノードに第1のフラグを割り当てるとともに、それ以外の場合には、該ノードおよび該ノードの子孫のノードに第2のフラグを割り当てる処理を、前記木構造に含まれるすべてのノードにフラグが割り当てられるまで繰り返し、前記木構造に含まれるノードのうちの該第1のフラグが割り当てられたノードに登録された識別情報を出力する検索部と、
削除すべき文書を識別するための識別情報と前記暗号化を解除するための復号情報とを受け付け、前記木構造から該識別情報を削除するとともに、前記削除情報において該識別情報に関連付けられた暗号文を、該復号情報を用いて復号することにより、該文書に対して生成された検索用インデックスを求め、求めた検索用インデックスを、前記複数の文書に対する検索用のインデックスから減算する削除部と、をさらに備える、情報処理装置。
【請求項4】
前記削除部によって第1の文書を削除するとともに、前記登録部によって第2の文書を登録することで、該第1の文書を該第2の文書に更新する、請求項2または3に記載の情報処理装置。
【請求項5】
前記木構造は2分木構造である、請求項1ないし4のいずれか1項に記載の情報処理装置。
【請求項6】
前記検索部は、幅優先探索法に基づいて、前記木構造からノードを選択する、請求項3に記載の情報処理装置。
【請求項7】
前記検索部は、深さ優先探索法に基づいて、前記木構造からノードを選択することを特徴とする、請求項3に記載の情報処理装置。
【請求項8】
文書を識別するための識別情報と単語の集合を含む文書と、鍵とを受け付ける工程と、
文書を識別するための識別情報をノードに格納した木構造の葉ノードに対して、受け付けた識別情報を登録する工程と、
前記木構造の根ノードから前記葉ノードまでの各ノードに登録された識別情報に対するセキュアインデックスを前記単語の集合と前記鍵に基づいて求め、求めたセキュアインデックスを加算したものを前記文書の検索用インデックスとして生成する工程と、
受け付けた複数の文書のそれぞれに対して生成された検索用インデックスを加算したものを該複数の文書に対する検索用インデックスとして記憶部に格納する工程と、
前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として前記記憶部に格納する工程と、を含む、情報処理方法。
【請求項9】
文書を識別するための識別情報と単語の集合を含む文書と、鍵とを受け付ける処理と、
文書を識別するための識別情報をノードに格納した木構造の葉ノードに対して、受け付けた識別情報を登録する処理と、
前記木構造の根ノードから前記葉ノードまでの各ノードに登録された識別情報に対するセキュアインデックスを前記単語の集合と前記鍵に基づいて求め、求めたセキュアインデックスを加算したものを前記文書の検索用インデックスとして生成する処理と、
受け付けた複数の文書のそれぞれに対して生成された検索用インデックスを加算したものを該複数の文書に対する検索用インデックスとして記憶部に格納する処理と、
前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として前記記憶部に格納する処理と、をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願についての記載]
本発明は、日本国特許出願:特願2011−150595号(2011年 7月 7日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、情報処理装置、情報処理方法およびプログラムに関し、特に、データベースの機能を保ちながら登録されているデータを暗号化し、情報漏洩に耐性を有する、キーワード検索用のインデックスを生成する情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
データの集合に対して生成されるデータであるインデックスを用いると、生成元のデータ集合から、所望の部分情報を含むデータを抽出することができる。データに文書を用い、部分情報に単語を用いることで、データベースにおいてキーワード検索を行うことが可能となる。
【0003】
情報漏洩を防ぐために文書を暗号化する場合においても、インデックスを暗号化しないときには、キーワード検索の機能には影響が及ばない。しかし、インデックスは対応する文書の情報を含むことから、情報漏洩への対策を施したインデックスを用いなければ、情報漏洩を防止することができない。
【0004】
非特許文献1、2において、情報漏洩に耐性を有するインデックスの生成方法が記載されている。非特許文献1に記載された方法は、非特許文献2に記載された方法と比較して、計算量および記憶容量の点で効率的である。そこで、以下では、非特許文献1に記載された方法について説明する。これらの文献に記載された方法は、いずれも非特許文献3に記載されたブルームフィルタ(Bloom Filter)という技術を用いる。本発明においても、ブルームフィルタを利用しうることから、まず、ブルームフィルタについて説明する。
【0005】
「ブルームフィルタ」
ブルームフィルタとは、値の集合を入力として生成されるビット列である。ブルームフィルタは、要素が集合に含まれているかどうかを効率的に判定するために用いることができる。ここでは、関数Genおよび関数Checkの2つを用いて、ブルームフィルタに関する処理を説明する。関数Genは、値の集合{w_1,…,w_n}を入力としてビット列を出力する関数である。一方、関数Checkは、値w_iおよびビット列を入力として値w_iがビット列に対応する集合に含まれているかどうかを判定する関数である。
【0006】
集合{w_1,…,w_n}に対する関数Genは、集合の要素w_iを入力としてビット列を出力するフィルタ関数Fを用い、w_1からw_nをフィルタ関数Fに入力して得られたビット列の論理和を出力する関数として表される。
【0007】
図1は、ブルームフィルタの生成方法を説明するための図である。図1を参照して、一例として、集合{w_1,w_2,_w3}が入力された場合における関数Genの処理について説明する。図1を参照すると、F(w_1)が01001001であり、F(w_2)が00010010であり、F(w_3)が10000101である場合には、集合{w_1,w_2,w_3}に対するブルームフィルタは、3つのビット列の各ビット同士の論理和をとることで、11011111となる。
【0008】
フィルタfと集合の要素wに対する関数Checkは、フィルタ関数Fを用い、F(w)において1である箇所のすべてがfにおいても1であるかを調べ、すべて1であるときには1を、それ以外の場合0を出力する関数として表される。ここで、関数Checkは1か0を出力する関数とし、要素w_iが文書dに含まれている場合には関数Checkは1を出力し、要素w_iが文書dに含まれていない場合には関数Checkは0を出力する。
【0009】
図2は、ブルームフィルタの判定方法を説明するための図である。図2を参照して、図1の集合{w_1,w_2,w_3}に対して生成されたブルームフィルタ11011111と要素w_2が関数Checkに入力された場合と、集合{w_1,w_3}に対して生成されたブルームフィルタ10001101と要素w_2が関数Checkに入力された場合について説明する。
【0010】
図2(a)を参照すると、ブルームフィルタが11011111であり、F(w_2)が00010010である場合には、4ビット目と7ビット目がともに1である(一致)ことから、関数Checkは1を出力する。
【0011】
一方、図2(b)を参照すると、ブルームフィルタが11001101であり、F(w_2)が00010010である場合には、4ビット目と7ビット目がともに1とはならない(すなわち、不一致である)ことから、関数Checkは0を出力する。
【0012】
関数Checkを用いると、1つの単語に関するフィルタ値を計算し、これを入力されたブルームフィルタと比較するだけでよい。したがって、集合の各要素がw_iであるか否かを1つずつ調べる場合と比較して、処理が効率的である。
【0013】
ブルームフィルタは、以下の特徴を有することが知られている。
【0014】
「特徴1」
関数Checkは、入力された要素w_iが含まれていない集合に対して計算されたブルームフィルタに対しても1を出力する場合がある。一方、関数Checkは、要素w_iが集合に含まれている場合には必ず1を出力する。
【0015】
非特許文献3には、関数Checkが誤って1を出力することが少なくなる、性質の良いフィルタ関数Fを選ぶ方法が記載されている。
【0016】
「特徴1」を利用すると、文書を単語の集合とみなし、単語の集合を入力としたブルームフィルタを作成し、各文書とブルームフィルタとを対応付けて保管することで、文書のキーワード検索を効率化することができる。
【0017】
各文書に対応するブルームフィルタがキーワードを含んでいるか否かを、関数Checkによって判定し、1が出力されたブルームフィルタに対応する文書を抽出することにより、各文書がキーワードを含んでいるかどうかを直接調べる必要が無くなるからである。
【0018】
ブルームフィルタは、さらに、次の特徴を有する。
【0019】
「特徴2」
集合S_1に対して生成されたブルームフィルタf_{S_1}と集合S_2についてのブルームフィルタf_{S_2}の論理和をとると、集合S_1と集合S_2の和集合に対するブルームフィルタが得られる。したがって、集合を文書とし、要素を単語とすると、論理和をとったブルームフィルタは、両方の文書に含まれる単語の和集合によって表される文書に対するブルームフィルタとなる。
【0020】
「特徴2」は、異なる文書に対して同一のフィルタ関数Fを用いることに起因する。ここでは、文書D_1と文書D_2に対するブルームフィルタの論理和を、文書D_1、D_2のブルームフィルタと記載する。また、下つきの文字が2つ以上連番になっている場合には、文書D_1,…,D_4のブルームフィルタと記載する。
【0021】
ここで、簡単な事例に基づいて、論理和演算を説明する。論理和演算は次のように行われる。
ブルームフィルタA:010001
ブルームフィルタB:010100
A○B :010101
【0022】
以下では、ブルームフィルタf_{S_1}とブルームフィルタf_{S_2}の論理和をとる演算を、f_{S_1}○f_{S_2}と記述する。
【先行技術文献】
【非特許文献】
【0023】
【非特許文献1】Eu-Jin Goh,"Secure Indexes," May 5,2004[online],[平成23年6月21日検索],インターネット<URL:http://crypto.stanford.edu/~eujin/papers/secureindex/secureindex.pdf>
【非特許文献2】Y.-C.Chang and M.Mitzenmacher,"Privacy Preserving Keyword Searches on Remote Encrypted Data," Cryptology ePrint Archive, Report 2004/051, Feb.2004. [online],[平成23年6月21日検索],インターネット<URL:http://eprint.iacr.org/2004/051.pdf>
【非特許文献3】B.Bloom,"Space/Time Trade-offs in Hash Coding with Allowable Errors," Communications of the ACM, vol.13, No.7, pp.422-426, July 1970.
【発明の概要】
【発明が解決しようとする課題】
【0024】
以下の分析は、本発明者によってなされたものである。
【0025】
上述のキーワード検索の方法によると、すべてのブルームフィルタに対して関数Checkを実行する必要がある。「特徴2」を用いると、多くの文書に含まれていない単語に関するキーワード検索を効率化することができる。
【0026】
この効率化手法では、まず、各文書に対して1つずつブルームフィルタを生成した後、検索を補助するブルームフィルタを生成する。具体的には、複数のブルームフィルタを入力とし、複数のブルームフィルタを出力する処理Concを導入する。処理Concは、複数のブルームフィルタF_1,…,F_nを入力とする。ここで、_{}の内部に記載されている文字1,…,nは、ブルームフィルタに振られた識別情報として用いる。識別情報は、対応させた文書のファイル名等であってもよい。処理Concにおいては、処理の途中で、集合tmpを用いる。
【0027】
処理Conc:
1.集合tmpを空集合(φ)とする。
2.ブルームフィルタF_1〜F_nが入力される。
3.ブルームフィルタF_1〜F_nを集合tmpに加える。
4.集合tmpから2つの要素F_i,F_jを選択する。
5.論理和F_i○F_jを計算し、集合tmpに加える。
6.要素F_i,F_jを集合tmpから取り除く。
7.(F_i,(i,j))と(F_j,(i,j))を出力する。
8.F_{i,j}を集合tmpに加える。
9.集合tmpに含まれている要素数が1つの場合には、その要素と根ノードを表す識別情報を組として出力して、処理を終了する。それ以外の場合には、4の処理に戻る。
【0028】
以上の処理によって生成されたブルームフィルタは、入力されたブルームフィルタを葉ノードとし、それらの論理和を中間のノードとし、すべてのフィルタの論理和が根ノードである木構造に対応付けることができる。また、各中間のノードのブルームフィルタは親ノードの識別情報との組として出力される。したがって、親ノードの識別情報から、その子ノードに対応するフィルタを容易に選び出すことができる。ブルームフィルタと親の識別情報を組にしているのは、後に根ノードからの検索処理を行う際に利用するためである。ただし、根ノードから葉ノードに向かってたどることができる方法であれば、これ以外の方法であってもよい。
【0029】
図3は、8つのブルームフィルタF_{1},…,F_{8}を処理Concに入力した場合に出力されるフィルタを、一例として木構造に表した図である。図3は、一例として、2分木構造を示す。
【0030】
「特徴2」によると、以上の方法で生成された各ブルームフィルタF_{i,…}は、{}内に記載された文書が含む単語の和集合を単語の集合として有する文書に対するブルームフィルタとなる。
【0031】
まず、根ノードのフィルタから幅優先で検索処理を行い、0が出力された場合には、どの文書にも含まれていないと判断し、1が出力された場合には、その子のノードに対して検索処理を行い、順に葉ノードまで下って行き、どの文書が対象の単語を含むかを調べることが可能となる。
【0032】
次に、この検索処理を実行する処理TSについて説明する。処理TSには、文書に対して処理Concを用いて生成された複数のブルームフィルタと、キーワードwとが入力される。
【0033】
処理TS:
1.入力されたブルームフィルタから、根ノードを表す識別情報*を組として持つ(F_{i,…,j},(*))を捜し、集合tmp1に挿入する。
2.集合tmp1が空集合でない場合には、集合tmp1からブルームフィルタF_{i,…}を1つ選択する。それ以外の場合には、処理を終了する。
3.Check(F_{i,…},w)=1の場合には、(F_{i,…,j},(*))を集合tmp1から取り除き、集合tmp2に{i,…}を親ノードの識別情報として持つブルームフィルタをすべて挿入する。また、F_{i,…}が単一の文書に対するブルームフィルタである場合には、{i,…}を出力する。一方、Check(F_{i,…},w)=0である場合には、(F_{i,…,j},(*))を集合tmp1から取り除く。
4.集合tmp1が空集合でない場合には、2の処理に戻る。一方、集合tmp1が空集合の場合には、集合tmp2の要素のすべてを集合tmp1に移し、2の処理に戻る。
【0034】
多くの文書が登録されており、かつ、検索対象のキーワードを含む文書の数が少ない場合には、この方法を用いたキーワード検索を効率的に実行することができる。図3は、2分木構造となっている。しかし、処理Concの設計によっては2分木構造とならないこともある。登録文書数がnであり、2分木構造でフィルタを生成する処理Concを用いた場合において、検索対象のキーワードを含む文書の数がxであるときには、高々2*x*(log_2 n)個のフィルタをチェックすればよいという効果がもたらされる。ここでは、説明の便宜上、2分木構造を用いるものとする。
【0035】
以上の方法によると、検索処理を効率化することが可能となる。しかしながら、この方法では、文書が削除される場合、および、文書が更新される場合が考慮されていないという問題がある。
【0036】
例えば、文書D_1について作成されたブルームフィルタがF_1=10110であり、文書D_{2,…}について作成されたブルームフィルタがF_{2,…}=01110である場合には、文書D_{1,2,…}に対するブルームフィルタはF_{1,2,…}=11110となる。このとき、F_{1,2,…}からF_{1}に関する情報を消去し、F_{2,…}に関するブルームフィルタを求める場合、F_{1,2,…}とF_{1}だけでは不十分である。1,3,4ビット目のようにF_{1,2}とF_{1}の両方が1である箇所について、F_{2,…}が0または1のいずれであるかを判定できないからである。
【0037】
この問題は、ブルームフィルタが有する次の特徴を用いて解決することができる。
【0038】
「特徴3」
ブルームフィルタの各ビットを値とした配列として扱い、集合S_1,S_2に対して生成されたブルームフィルタF_{S_1}とF_{S_2}の配列の各要素を加算した配列を配列Cとする。配列C中の各要素を、要素が0である場合には0とみなし、要素が1以上である場合には1とみなすと、配列Cは集合S_1,S_2の和集合に対して生成したブルームフィルタとなる。また、配列Cの各要素からF_{S_1}の配列の各要素を減算した配列において、配列中の各要素を、要素が0である場合には0とみなし、要素が1以上である場合には1とみなすと、集合S_2のブルームフィルタとなる。
【0039】
以下では、このような配列同士の減算をf_{S_1}−f_{S_2}と記述する。
【0040】
次に、簡単な例に基づいて、配列の加算および減算について説明する。配列同士の加算および減算は、次のように行われる。
配列A :020101
配列B :010100
配列C=配列A+配列B:030201
配列C−配列B :020101
【0041】
なお、複数の配列同士の加算を行う場合には、記憶容量を抑える目的で、各配列の要素の値に上限を定めることがある。上限が定められている場合には、上限値に到達した値に加算するときには上限値のままとし、上限値に到達した値から減算するときにも上限値のままとする。このようにすると、演算後の配列から「特徴3」が失われないことが知られている。なお、非特許文献1においても、本発明においても、処理が正常に行われている限り、0からさらに減算を行うような処理は生じない。
【0042】
本発明において、ブルームフィルタや配列の加算を行う場合に、配列の要素の上限値に関しては、特に説明しない。ただし、加算を行う場合の上限値を定めてもよい。上限値を定めた場合には、上述の方法に従って加算を行うものとする。
【0043】
次に、「特徴3」を用いて、検索を効率化しつつ、登録された文書の削除および更新を可能とする方法について説明する。
【0044】
まず、最初の段階として、複数の文書が登録され、これらに対して検索を補助する情報を生成する場合について説明する。
【0045】
この方法においても、まず、各文書に対して一つずつブルームフィルタを生成した後、検索を補助する配列を生成する。具体的には、複数のブルームフィルタを入力とし、複数の配列を出力するアルゴリズムを用いる。ただし、上述の処理Concのステップ5の○処理を+処理に置き換えるのみであることから、詳細な説明を省略する。
【0046】
図4は、8つのブルームフィルタF_{1},…,F_{8}を処理Conc2に入力した場合に出力される配列を木構造に表した図である。図4は、処理Concの場合(図3)と同様に、2分木構造を示す。
【0047】
検索処理も、上述の処理TSと同様の処理に基づいて実行することができる。関数Checkを実行する際に配列が入力されていた場合には、上述の方法においてブルームフィルタとして取り扱う処理を追加するのみであることから、詳細な説明を省略する。
【0048】
次に、上述のようにして作成したデータ列から、文書を削除する方法について説明する。図5は、図4で作成したデータ列からF_{8}に関する情報を削除する方法を示す。
【0049】
「特徴3」により、F_{8}を子に持つデータ列からF_{8}を減算すればよい。したがって、F_{7,8},{5,…,8}と,F_{5,…,8},{1,…,8}と、F_{1,…,8},{*}のそれぞれから、F_{8}を減算すれば、それぞれのビット列をブルームフィルタとみなした場合に、F_{8}に関する情報が含まれなくなる。なお、木構造の左側は関与しないため、図5において、木構造の左側を省略した。ここで、F_{8}以外のブルームフィルタの値は一切必要とされない。したがって、文書の削除を容易に行うことができる。
【0050】
一般に、F_{i}に関する情報を消去する場合には、{,…,}内にiを含むビット列からF_{i}を減算すればよい。
【0051】
次に、文書を更新する方法について説明する。文書の更新は、文書を削除した後に、文書を追加することで実現し得る。図5に示すように、データ列からF_{8}に関する情報を削除した後、別のF_{8}を追加する方法を、図6を参照して説明する。図6を参照すると、「特徴3」により、F_{8}を子に持つデータ列に新規のF_{8}を加算すればよい。
【0052】
一般に、F_{i}に関する情報を追加する場合には、{,…,}内にiを含むビット列にF_{i}を加算すればよい。
【0053】
以上の方法によると、中間ノードは、ビット列ではなくデータ列となる。したがって、以上の方法によると、「特徴2」を用いて検索を効率化した場合と比較して、検索を補助するデータに要する記憶容量が増大するものの、文書の削除および更新が容易となるという効果がもたらされる。
【0054】
ブルームフィルタは、キーワード検索に有用である。しかし、情報漏洩を防ぐ上で、ブルームフィルタには以下の2つの問題がある。
【0055】
「ブルームフィルタの第1の問題」
ブルームフィルタのフィルタ関数に入力されるのは、単語のみである。したがって、文書が異なる場合においても、同一の単語が含まれるときには、ブルームフィルタに現れる特徴は同一となる。したがって、ブルームフィルタ間の類似度は、もとの文書間の類似度と関係し、ブルームフィルタ間の類似度から情報が漏洩する。
【0056】
「ブルームフィルタの第2の問題」
検索処理は、単語とブルームフィルタを入力として行われる。すなわち、ブルームフィルタの情報があれば、誰でも検索を行なうことができる。したがって、フィルタに対応する文書が暗号化された状態で保存されていても、フィルタから多くの情報を取り出すことができる。
【0057】
非特許文献1、2において、これらの問題を解決する方法が記載されている。非特許文献1に記載された方法は、効率および安全性の点で、非特許文献2に記載された方法よりも優れている。そこで、以下では、非特許文献1に記載された2つの方法について説明する。
【0058】
「第1の方法」
第1の方法では、文書を、単語の集合と識別情報の組として扱う。識別情報として、文書を区別するためのファイル名、通し番号等の情報を用いることができる。識別情報がzであって、単語としてw_1,…,w_nを含む文書Dを({w_1,…,w_n},z)とする。
【0059】
第1の方法は、フィルタを生成する主体のみが所有する秘密の情報(以下、「鍵K」とする。)を用いる。鍵Kは、文書に含まれている各単語w_iをトラップドアと呼ばれる値に変換するために用いられる。この変換処理は、鍵と単語を入力とするトラップドア生成関数Trによって実現しうる。トラップドア生成関数Trに、鍵Kと単語wを入力したときの出力を、単語wのトラップドアという。以下では、トラップドア生成関数Trにより単語のトラップドアを生成する処理を、トラップドア生成処理という。
【0060】
また、第1の方法では、文書ごとに異なるフィルタ関数が用いられる。フィルタ関数として、ビット列を出力する関数であって、識別情報zとトラップドアとを入力とする関数を用いる。この関数を、識別情報依存フィルタ関数F’とする。
【0061】
第1の方法において、フィルタを生成する関数をGen2とする。関数Gen2は、次のように表すことができる。
【0062】
関数Gen2:
1.文書({w_1,…,w_n},z)と鍵Kが入力される。
2.トラップドアx_1=Tr(K,w_1),…,x_n=Tr(K,w_n)を計算する。
3.ビット列y_1=F’(z,x_1),…,y_n=F’(z,x_n)を計算する。
4.ビット列y_1〜y_nの論理和を求めて出力する。
【0063】
以上の処理によって生成されるフィルタを、セキュアインデックスという。ここでは、セキュアインデックスを生成する処理をセキュアインデックス生成処理という。
【0064】
図7は、第1の方法におけるセキュアインデックスの生成方法を説明するための図である。図7は、文書({w_1,w_2,_3},z)と鍵Kが関数Gen2に入力された場合の処理を示す。
【0065】
次に、識別情報zに対応するフィルタfが単語wを含んでいるかを調べる処理について説明する。ブルームフィルタでは、上述のように、単語とフィルタを入力とする関数Checkを用いる。一方、第1の方法では、トラップドアxとフィルタfと識別情報zを入力とする関数Check2を用いる。関数Check2は、次のように表すことができる。
【0066】
関数Check2:
1.フィルタfと識別情報zとトラップドアxが入力される。
2.ビット列y=F’(z,x)を計算する。
3.ビット列yにおいて1である箇所のすべてがフィルタfにおいても1であるかを調べ、すべてが1である場合には1を出力し、それ以外の場合には0を出力する。
【0067】
以上の処理を、セキュアインデックス判定処理という。図8は、第1の方法におけるセキュアインデックスの判定方法を説明するための図である。図8は、関数Check2の動作を一例として示す。トラップドアは、単語と鍵Kを用いて計算される。したがって、ある単語に関する検索を実行しようとしても、鍵Kを持っていない場合には、その単語に対応するトラップドアを計算することができず、関数Check2を使用することができない。
【0068】
したがって、鍵Kを持っている主体のみが、トラップドアを計算し、文書とフィルタを保管しているデータベース等に検索処理を依頼することができる。ブルームフィルタを用いる場合には、データベースはどのような単語に関する検索も単独で実行することができた。一方、第1の方法によって生成されたフィルタに対しては、トラップドアを知っている値に関する検索しか行うことができない。なお、関数Check2に入力されたフィルタがビット列ではなく、データ配列である場合には、各配列の値が0のときには0とみなし、それ以外のときには1とみなして、関数Check2に記載された処理を実行するものとする。以上の方法によって、「ブルームフィルタの第2の問題」が解決される。
【0069】
また、「ブルームフィルタの第1の問題」は、すべての文書に関するフィルタ関数が同一であることに起因する。しかし、関数Gen2によると、識別情報が異なる場合には、識別情報依存フィルタ関数F’も異なる出力を行う。したがって、「ブルームフィルタの第1の問題」も解決される。
【0070】
第1の方法では、単語がトラップドアに変換される点でブルームフィルタと相違する。しかし、単語毎にビット列を計算し、その論理和をとるという点では、第1の方法はブルームフィルタと同一である。したがって、第1の方法は、ブルームフィルタが有する「特徴1」を備えている。すなわち、第1の方法はトラップドアを用いる点でブルームフィルタと相違するものの、すべてのフィルタに対して関数Check2を適用することで、ブルームフィルタと同様にキーワード検索を実行することができる。
【0071】
また、第1の方法では、文書毎にフィルタ関数が異なる。したがって、2つの文書に対して生成された2つのフィルタの論理和を計算しても、2つの文書の持つ単語の和集合によって構成される文書のフィルタにはならない。したがって、第1の方法は、ブルームフィルタが有する「特徴2」を備えていない。同様の理由で、第1の方法は、ブルームフィルタが有する「特徴3」も備えていない。したがって、第1の方法によると、ブルームフィルタのように、検索を効率化する技術や、文書の削除、更新を容易化する技術を適用することができないという問題がある。
【0072】
この問題を解決するための方法も、非特許文献1に記載されている。以下では、非特許文献1に記載された方法を第2の方法として説明する。
【0073】
「第2の方法」
第2の方法では、文書を単語の集合として扱う。第2の方法でも、第1の方法と同様に、フィルタを生成する主体のみが所有する秘密の情報(すなわち鍵K)を用いるとともに、トラップドア生成関数Trを用いる。しかし、第2の方法では、ブルームフィルタと同様に、すべての文書に対して共通のフィルタ関数Fを用いる。
【0074】
第2の方法において、フィルタを生成する関数をGen3とする。関数Gen3は、次のように表すことができる。
【0075】
関数Gen3:
1.文書{w_1,…,w_n}と鍵Kが入力される。
2.トラップドアx_1=Tr(K,w_1),…,x_n=Tr(K,w_n)を計算する。
3.ビット列y_1=F(x_1),…,y_n=F(x_n)を計算する。
4.ビット列y_1〜y_nの論理和を求めて出力する。
【0076】
図9は、第2の方法におけるセキュアインデックスの生成方法を説明するための図である。図9は、文書{w_1,w_2,_3}と鍵Kが関数Gen3に入力された場合の処理を示す。
【0077】
次に、あるフィルタyが単語wを含んでいるか否かを調べる処理について説明する。第2の方法では、トラップドアとフィルタを入力とする関数Check3を用いる。関数Check3は、次のように表すことができる。
【0078】
関数Check3:
1.フィルタfとトラップドアxが入力される。
2.ビット列y=F(x)を計算する。
3.ビット列yにおいて1である箇所のすべてがフィルタfにおいても1であるかを調べ、すべてが1である場合には1を出力し、それ以外の場合には0を出力する。
【0079】
図10は、関数Check3の動作を一例として示す。第2の方法によると、第1の方法と同様の理由により、「ブルームフィルタの第2の問題」が解決される。
【0080】
また、第2の方法では、すべての文書に対して同一のフィルタ関数Fを用いる。したがって、第2の方法は、ブルームフィルタの有する「特徴2」および「特徴3」を備えている。これらの特徴を用いることで、第2の方法によると、ブルームフィルタと同様に、検索を効率化する技術や、文書の削除更新を容易化する技術を適用することができる。
【0081】
しかし、第2の方法では、すべての文書で同一のフィルタ関数Fを用いるため、「ブルームフィルタの第1の問題」が生じる。
【0082】
以上により、第1の方法によると、情報漏洩に対する耐性が高い。しかし、第1の方法によると、出現率の低い単語に関する検索であっても、すべての文書に対応するインデックスを調べる必要があり、検索に時間を要するという問題がある。一方、第2の方法によると、検索を効率的に実行することができ、文書の削除や更新も容易に行うことができる。しかし、第2の方法によると、情報漏洩に対する耐性が弱いという問題がある。
【0083】
そこで、情報漏洩に耐性を有する、キーワード検索用のインデックスを生成することが課題となる。本発明の目的は、かかる課題を解決する情報処理装置、情報処理方法およびプログラムを提供することにある。
【課題を解決するための手段】
【0084】
本発明の第1の視点に係る情報処理装置は、
文書を識別するための識別情報をノードに格納した木構造を保持する記憶部と、
前記記憶部に文書を登録する登録部と、を備え、
前記登録部は、文書を識別するための識別情報と単語の集合を含む文書と、鍵とを受け付ける受付部と、
受け付けた識別情報を前記木構造の葉ノードに登録する識別情報登録部と、
前記木構造の根ノードから該葉ノードまでの各ノードに登録された識別情報に対するセキュアインデックスを該単語の集合と該鍵に基づいて求め、求めたセキュアインデックスを加算したものを該文書の検索用インデックスとして生成するセキュアインデックス生成部と、
受け付けた複数の文書のそれぞれに対して生成された検索用インデックスを加算したものを該複数の文書に対する検索用インデックスとして前記記憶部に格納するインデックス登録部と、を有し、
前記インデックス登録部は、前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として前記記憶部に格納する。
本発明の第2の視点に係る情報処理装置は、
文書を識別するための識別情報をノードに格納した木構造を保持する記憶部と、
前記記憶部に文書を登録する登録部と、を備える情報処理装置であって、
前記登録部は、文書を識別するための識別情報と単語の集合を含む文書と、鍵とを受け付ける受付部と、
受け付けた識別情報を前記木構造の葉ノードに登録する識別情報登録部と、
前記木構造の根ノードから該葉ノードまでの各ノードに登録された識別情報に対するセキュアインデックスを前記単語の集合と前記鍵に基づいて求め、求めたセキュアインデックスを加算したものを前記文書の検索用インデックスとして生成するセキュアインデックス生成部と、
受け付けた複数の文書のそれぞれに対して生成された検索用インデックスを加算したものを該複数の文書に対する検索用インデックスとして前記記憶部に格納するインデックス登録部と、を有し、
前記情報処理装置は、単語と鍵とを受け付け、該鍵を用いて該単語に対するトラップドアを生成する検索依頼部と、
前記トラップドアを受け付け、前記複数の文書に対する検索用インデックスと前記木構造とを前記記憶部から読み出し、フラグが割り当てられていないノードのうちの最も根ノードに近いノードを前記木構造から選択し、選択したノードに登録された識別情報と前記トラップドアと該検索用インデックスとに基づいてセキュアインデックス判定を行い、前記単語が該識別情報によって識別される文書に含まれる判定された場合には、該ノードに第1のフラグを割り当てるとともに、それ以外の場合には、該ノードおよび該ノードの子孫のノードに第2のフラグを割り当てる処理を、前記木構造に含まれるすべてのノードにフラグが割り当てられるまで繰り返し、前記木構造に含まれるノードのうちの該第1のフラグが割り当てられたノードに登録された識別情報を出力する検索部と、
削除すべき文書を識別するための識別情報と前記暗号化を解除するための復号情報とを受け付け、前記木構造から該識別情報を削除するとともに、前記削除情報において該識別情報に関連付けられた暗号文を、該復号情報を用いて復号することにより、該文書に対して生成された検索用インデックスを求め、求めた検索用インデックスを、前記複数の文書に対する検索用のインデックスから減算する削除部と、をさらに備える。
【0085】
本発明の第2の視点に係る情報処理方法は、
文書を識別するための識別情報と単語の集合を含む文書と、鍵とを受け付ける工程と、
文書を識別するための識別情報をノードに格納した木構造の葉ノードに対して、受け付けた識別情報を登録する工程と、
前記木構造の根ノードから前記葉ノードまでの各ノードに登録された識別情報に対するセキュアインデックスを前記単語の集合と前記鍵に基づいて求め、求めたセキュアインデックスを加算したものを前記文書の検索用インデックスとして生成する工程と、
受け付けた複数の文書のそれぞれに対して生成された検索用インデックスを加算したものを該複数の文書に対する検索用インデックスとして記憶部に格納する工程と、
前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として前記記憶部に格納する工程と、を含む。
【0086】
本発明の第3の視点に係るプログラムは、
文書を識別するための識別情報と単語の集合を含む文書と、鍵とを受け付ける処理と、
文書を識別するための識別情報をノードに格納した木構造の葉ノードに対して、受け付けた識別情報を登録する処理と、
前記木構造の根ノードから前記葉ノードまでの各ノードに登録された識別情報に対するセキュアインデックスを前記単語の集合と前記鍵に基づいて求め、求めたセキュアインデックスを加算したものを前記文書の検索用インデックスとして生成する処理と、
受け付けた複数の文書のそれぞれに対して生成された検索用インデックスを加算したものを該複数の文書に対する検索用インデックスとして記憶部に格納する処理と、
前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として前記記憶部に格納する処理と、をコンピュータに実行させる。
【0087】
なお、プログラムは、非トランジエントな(non−transient)コンピュータ読み取り可能な記録媒体(computer-readable storage medium)に記録されていてもよい。
【発明の効果】
【0088】
本発明に係る情報処理装置、情報処理方法およびプログラムによると、情報漏洩に耐性を有する、キーワード検索用のインデックスを生成することが可能となる。
【図面の簡単な説明】
【0089】
図1】ブルームフィルタの生成方法を説明するための図である。
図2】ブルームフィルタの判定方法を説明するための図である。
図3】ブルームフィルタの木構造管理を説明するための図(その1)である。
図4】ブルームフィルタの木構造管理を説明するための図(その2)である。
図5】木構造を用いて管理しているブルームフィルタにおける文書の削除方法を示す図である。
図6】木構造を用いて管理しているブルームフィルタにおける文書の追加方法を示す図である。
図7】非特許文献1に記載された第1の方法におけるセキュアインデックスの生成方法を説明するための図である。
図8】非特許文献1に記載された第1の方法におけるセキュアインデックスの判定方法を説明するための図である。
図9】非特許文献1に記載された第2の方法におけるセキュアインデックスの生成方法を説明するための図である。
図10】非特許文献1に記載された第2の方法におけるセキュアインデックスの判定方法を説明するための図である。
図11】第1の実施形態に係る情報処理装置の構成を一例として示すブロック図である。
図12】第1の実施形態に係る情報処理装置における登録部の構成を一例として示すブロック図である。
図13】第1の実施形態に係る情報処理装置における登録部の動作を一例として示すフローチャートである。
図14】第1の実施形態に係る情報処理装置における検索依頼部および検索部の構成を一例として示すブロック図である。
図15】第1の実施形態に係る情報処理装置における検索依頼部および検索部の動作を一例として示すフローチャートである。
図16】第1の実施形態に係る情報処理装置における削除部の動作を一例として示すフローチャートである。
図17】第2の実施形態に係る情報処理装置の構成を一例として示すブロック図である。
【発明を実施するための形態】
【0090】
はじめに、本発明の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【0091】
本発明の情報処理装置は、文書の識別情報を木構造の葉ノードに対応させ、木構造の根ノードから葉ノードまでのそれぞれのノード情報を識別情報としたセキュアインデックスを生成し、加算したものを文書のインデックスとし、複数の文書についてのインデックスを生成した場合、それらを加算した値を記憶する。また、本発明の情報処理装置は、各文書に関連して生成した値を、削除用情報として暗号化して管理する。なお、上記においては、非特許文献1に記載された方法に基づいて説明したが、同様の性質を持つインデックス生成方法であれば、どのような方法を用いてもよい。
【0092】
図11および図12を参照すると、本発明の情報処理装置(50)は、文書を識別するための識別情報をノードに格納した木構造を保持する記憶部(500)と、記憶部(500)に文書を登録する登録部(100)と、を備え、登録部(100)は、文書を識別するための識別情報と単語の集合を含む文書と、鍵とを受け付ける受付部(111)と、受け付けた識別情報を前記木構造の葉ノードに登録する識別情報登録部(112)と、前記木構造の根ノードから該葉ノードまでの各ノードに登録された識別情報に対するセキュアインデックスを前記単語の集合と前記鍵に基づいて求め、求めたセキュアインデックスを加算したものを前記文書の検索用インデックスとして生成するセキュアインデックス生成部(102)と、受け付けた複数の文書のそれぞれに対して生成された検索用インデックスを加算したものを該複数の文書に対する検索用インデックスとして記憶部(501)に格納するインデックス登録部(113)と、を備える。
【0093】
また、インデックス登録部(113)は、前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として記憶部(500)に格納することが好ましい。
【0094】
さらに、情報処理装置(50)は、単語と鍵とを受け付け、該鍵を用いて該単語に対するトラップドアを生成する検索依頼部(200)と、前記トラップドアを受け付け、前記複数の文書に対する検索用インデックスと前記木構造とを記憶部(500)から読み出し、フラグが割り当てられていないノードのうちの最も根ノードに近いノードを前記木構造から選択し、選択したノードに登録された識別情報と前記トラップドアと該検索用インデックスとに基づいてセキュアインデックス判定を行い、前記単語が該識別情報によって識別される文書に含まれる判定された場合には、該ノードに第1のフラグを割り当てるとともに、それ以外の場合には、該ノードおよび該ノードの子孫のノードに第2のフラグを割り当てる処理を、前記木構造に含まれるすべてのノードにフラグが割り当てられるまで繰り返し、前記木構造に含まれるノードのうちの該第1のフラグが割り当てられたノードに登録された識別情報を出力する検索部(300)と、をさらに備えることが好ましい。
【0095】
また、情報処理装置(50)は、削除すべき文書を識別するための識別情報と前記暗号化を解除するための復号情報とを受け付け、前記木構造から該識別情報を削除するとともに、前記削除情報において該識別情報に関連付けられた暗号文を、該復号情報を用いて復号することにより、該文書に対して生成された検索用インデックスを求め、求めた検索用インデックスを、前記複数の文書に対する検索用のインデックスから減算する削除部(400)をさらに備えることが好ましい。
【0096】
なお、情報処理装置(50)は、削除部(400)によって第1の文書を削除するとともに、登録部(100)によって第2の文書を登録することで、該第1の文書を該第2の文書に更新するようにしてもよい。
【0097】
本発明の情報処理装置によると、各文書に関連して文書登録木の根ノードから葉ノードに至るノードそれぞれを識別情報としたセキュアインデックスがインデックスに加算されているので、各文書に含まれている単語に関するキーワード検索を正しく処理することが可能となる。かかる情報処理装置によると、ブルームフィルタにおいて特徴2や特徴3を利用した場合のように、文書登録木に沿った検索処理を実行することができる。また、本発明の情報処理装置によると、各文書に関連してインデックスに加算された値は削除情報記憶部に記録されているので、各文書を容易に削除することができる。さらに、本発明の情報処理装置では、すべての文書の検索に用いる情報が1つのインデックスにまとめられ、文書ごとの情報に分けられていない。
【0098】
本発明において、下記の形態が可能である。
[形態1]
上記第1の視点に係る情報処理装置のとおりである。
[形態2]
前記登録部は、前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として前記記憶部に格納するようにしてもよい。
[形態3]
上記の情報処理装置は、単語と鍵とを受け付け、該鍵を用いて該単語に対するトラップドアを生成する検索依頼部と、
前記トラップドアを受け付け、前記複数の文書に対する検索用インデックスと前記木構造とを前記記憶部から読み出し、フラグが割り当てられていないノードのうちの最も根ノードに近いノードを前記木構造から選択し、選択したノードに登録された識別情報と前記トラップドアと該検索用インデックスとに基づいてセキュアインデックス判定を行い、前記単語が該識別情報によって識別される文書に含まれる判定された場合には、該ノードに第1のフラグを割り当てるとともに、それ以外の場合には、該ノードおよび該ノードの子孫のノードに第2のフラグを割り当てる処理を、前記木構造に含まれるすべてのノードにフラグが割り当てられるまで繰り返し、前記木構造に含まれるノードのうちの該第1のフラグが割り当てられたノードに登録された識別情報を出力する検索部と、をさらに備えていてもよい。
[形態4]
上記の情報処理装置は、削除すべき文書を識別するための識別情報と前記暗号化を解除するための復号情報とを受け付け、前記木構造から該識別情報を削除するとともに、前記削除情報において該識別情報に関連付けられた暗号文を、該復号情報を用いて復号することにより、該文書に対して生成された検索用インデックスを求め、求めた検索用インデックスを、前記複数の文書に対する検索用のインデックスから減算する削除部をさらに備えていてもよい。
[形態5]
前記削除部によって第1の文書を削除するとともに、前記登録部によって第2の文書を登録することで、該第1の文書を該第2の文書に更新するようにしてもよい。
[形態6]
前記木構造は2分木構造であってもよい。
[形態7]
前記検索部は、幅優先探索法に基づいて、前記木構造からノードを選択するようにしてもよい。
[形態8]
前記検索部は、深さ優先探索法に基づいて、前記木構造からノードを選択するようにしてもよい。
[形態9]
上記第2の視点に係る情報処理方法のとおりである。
[形態10]
上記情報処理方法は、前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として前記記憶部に格納する工程をさらに含んでいてもよい。
[形態11]
上記情報処理方法は、単語と鍵とを受け付け、該鍵を用いて該単語に対するトラップドアを生成する工程と、
フラグが割り当てられていないノードのうちの最も根ノードに近いノードを前記木構造から選択し、選択したノードに登録された識別情報と前記トラップドアと前記複数の文書に対する検索用インデックスとに基づいてセキュアインデックス判定を行い、前記単語が該識別情報によって識別される文書に含まれる判定された場合には、該ノードに第1のフラグを割り当てるとともに、それ以外の場合には、該ノードおよび該ノードの子孫のノードに第2のフラグを割り当てる処理を、前記木構造に含まれるすべてのノードにフラグが割り当てられるまで繰り返す工程と、
前記木構造に含まれるノードのうちの前記第1のフラグが割り当てられたノードに登録された識別情報を出力する工程と、をさらに含んでいてもよい。
[形態12]
上記情報処理方法は、削除すべき文書を識別するための識別情報と前記暗号化を解除するための復号情報とを受け付ける工程と、
受け付けた識別情報を前記木構造から削除するとともに、前記削除情報において該識別情報に関連付けられた暗号文を、前記復号情報を用いて復号することにより、前記文書に対して生成された検索用インデックスを求め、求めた検索用インデックスを、前記複数の文書に対する検索用のインデックスから減算する工程と、をさらに含んでいてもよい。
[形態13]
上記第3の視点に係るプログラムのとおりである。
[形態14]
上記プログラムは、前記複数の文書のそれぞれの文書に対して生成された検索用インデックスを暗号化した暗号文と該文書の識別情報とを関連付けた情報を、該文書を削除するための削除情報として前記記憶部に格納する処理を、さらにコンピュータに実行させるようにしてもよい。
[形態15]
上記プログラムは、単語と鍵とを受け付け、該鍵を用いて該単語に対するトラップドアを生成する処理と、
フラグが割り当てられていないノードのうちの最も根ノードに近いノードを前記木構造から選択し、選択したノードに登録された識別情報と前記トラップドアと前記複数の文書に対する検索用インデックスとに基づいてセキュアインデックス判定を行い、前記単語が該識別情報によって識別される文書に含まれる判定された場合には、該ノードに第1のフラグを割り当てるとともに、それ以外の場合には、該ノードおよび該ノードの子孫のノードに第2のフラグを割り当てる処理を、前記木構造に含まれるすべてのノードにフラグが割り当てられるまで繰り返す処理と、
前記木構造に含まれるノードのうちの前記第1のフラグが割り当てられたノードに登録された識別情報を出力する処理と、をさらにコンピュータに実行させるようにしてもよい。
[形態16]
上記プログラムは、削除すべき文書を識別するための識別情報と前記暗号化を解除するための復号情報とを受け付ける処理と、
受け付けた識別情報を前記木構造から削除するとともに、前記削除情報において該識別情報に関連付けられた暗号文を、前記復号情報を用いて復号することにより、前記文書に対して生成された検索用インデックスを求め、求めた検索用インデックスを、前記複数の文書に対する検索用のインデックスから減算する処理と、をさらにコンピュータに実行させるようにしてもよい。
【0099】
(実施形態1)
第1の実施形態に係る情報処理装置について、図面を参照して詳細に説明する。図11は、本実施形態に係る情報処理装置50の構成を一例として示すブロック図である。
【0100】
図11を参照すると、情報処理装置50は、文書を登録する登録部100と、キーワード検索を実行するための情報を生成する検索依頼部200と、キーワード検索を実行する検索部300と、登録された文書を削除する削除部400と、インデックス情報等を記憶する記憶部500とを備えている。
【0101】
本実施形態では、文書は、文書を識別するための識別情報と単語の集合とを含むものとする。文書登録木は、木構造のデータの葉ノードに識別情報が割り振られた木とする。識別情報が登録されていない葉ノードには未登録を表すデータが割り当てられ、木構造の内部ノードにも固有の値が割り振られているものとする。葉ノードの関連ノード集合を、葉ノードと根ノード間の最短パスのノードの識別情報の集合とする。
【0102】
記憶部500は、インデックス記憶部501、文書登録木記憶部502、および、複数の削除情報記憶部503を備えている。
【0103】
インデックス記憶部501は、登録されている文書毎に生成されたインデックス情報を加算した情報を記憶する。文書登録木記憶部502は、登録文書の識別情報を葉ノードとして持つ木構造を記憶する。削除情報記憶部503は、登録されている各文書と対応付けられた削除情報を記憶する。
【0104】
図12は、登録部100の構成を一例として示すブロック図である。図12を参照すると、登録部100は、登録処理制御部101と、セキュアインデックス生成部102とを備えている。登録部100は、鍵と、登録する文書とを入力とし、記憶部500に記録された値を更新する。
【0105】
登録処理制御部101は、文書Dと鍵Kを入力とし、記憶部500に記録された各値を更新する。セキュアインデックス生成部102は、鍵とノード情報と単語集合を入力とし、入力内容に応じて、セキュアインデックスを生成して出力する。
【0106】
図13は、登録部100の動作を一例として示すフローチャートである。図13を参照して、登録部100の動作について説明する。
【0107】
登録処理制御部101は、識別情報D_idと単語集合D_setを含む文書Dと、鍵Kを入力とする(ステップA1)。登録処理制御部101は、文書登録木記憶部502から文書登録木を読み出し、文書登録木において識別情報が登録されていない葉ノードを選択し、識別情報D_idに書き換える(ステップA2)。次に、識別情報D_idを登録した葉ノードの関連ノード集合R={r_1,…}を導出し(ステップA3)、内部記憶装置(非図示)に記憶する。また、処理途中値を記憶するための領域を内部記憶装置に用意して初期化する。次に、登録処理制御部101は、関連ノード集合Rが空集合であるか否かを調べる(ステップA4)。
【0108】
関連ノード集合Rが空集合でない場合には(ステップA4のNO)、登録処理制御部101は、関連ノード集合Rの1要素r_iを削除し、r_iを識別情報、Kを鍵、単語集合をD_setとして、セキュアインデックス生成部102に入力する。セキュアインデックス生成部102は、識別情報と鍵と単語集合に応じて、セキュアインデックスを生成して出力する(ステップA5)。登録処理制御部101は、セキュアインデックス生成部102より生成されたセキュアインデックスを受け取り、処理途中値を記憶する領域に加算した後(ステップA6)、ステップA5に戻る。
【0109】
一方、関連ノード集合Rが空集合である場合には(ステップS4のYES)、登録処理制御部101は、処理途中値を記憶する領域に記憶されている値を、インデックス記憶部501に記録されたインデックスに加算するとともに、この値を識別情報D_idと対応付けて削除情報として削除情報記憶部503に記録する(ステップA7)。
【0110】
図14は、検索依頼部200および検索部300の構成を一例として示すブロック図である。図14を参照すると、検索依頼部200は、トラップドア生成部201を備えている。トラップドア生成部201は、鍵Kと単語wを入力とし、単語wに対するトラップドアtを出力する。
【0111】
図14を参照すると、検索部300は、検索処理制御部301とセキュアインデックス判定部302を備え、文書の識別情報の集合を出力する。
【0112】
検索処理制御部301は、トラップドアtを入力とし、複数の識別情報を集合として出力する。セキュアインデックス判定部302は、識別情報、トラップドアおよびインデックスを入力とし、入力に応じて、セキュアインデックス判定処理を実行し、判定結果を出力する。
【0113】
図15は、検索依頼部200および検索部300の動作を一例として示すフローチャートである。図15を参照して、検索依頼部200および検索部300の動作について説明する。なお、検索依頼部200は、図15のステップB1およびB2の処理を行う。一方、検索部300は、ステップB3〜B10の処理を行う。
【0114】
検索依頼部200は、単語wと鍵Kを入力とする(ステップB1)。検索依頼部200は、鍵Kを入力として、単語wに対するトラップドアtを生成する(ステップB2)。
【0115】
検索処理制御部301は、トラップドアtを入力とする(ステップB3)。検索処理制御部301は、文書登録木記憶部502から文書登録木を読み出す(ステップB4)。検索処理制御部301は、文書登録木の葉ノードのすべてが判定済みかどうかを調べる(ステップB5)。
【0116】
未判定のノードが存在する場合には(ステップB5のNO)、検索処理制御部301は、文書登録木に含まれるノードのうちの判定情報(例えばフラグ)が付されていないノードであって最も根ノードに近いノードを選ぶ(ステップB6)。セキュアインデックス判定部302は、ノードに登録された識別情報をrとし、トラップドア情報をtとし、インデックス記憶部501に記録された値をセキュアインデックスとして、セキュアインデックス判定処理を実行する(ステップB6)。判定処理結果が0である場合には(ステップB7の「0」)、検索処理制御部301は、ノードrとその子孫のノードのすべてにフラグ0を付する(ステップB8)。一方、判定処理結果が1の場合には(ステップB7の「1」)、検索処理制御部301は、ノードにフラグ1を付する(ステップB9)。
【0117】
一方、文書登録木に含まれるすべてのノードが判定済みである場合には(ステップB5のYES)、セキュアインデックス判定部302は、フラグ1が付された葉ノードに対応する識別情報を出力する(ステップB10)。
【0118】
図16は、削除部400の動作を一例として示すフローチャートである。図16を参照して、削除部400の動作について説明する。
【0119】
削除部400は、識別情報を入力とする(ステップC1)。次に、削除部400は、文書登録木を読み出し、入力識別情報に対応する葉ノードを未登録とし、入力識別情報に対応する削除情報記憶部から削除情報を読み出し、読み出した削除情報は消去し、読み出した削除情報をインデックスから減算する(ステップC2)。
【0120】
本実施形態の情報処理装置50によると、各文書に関連して文書登録木の根ノードから葉ノードに至るノードそれぞれを識別情報としたセキュアインデックスがインデックスに加算されているので、各文書に含まれている単語に関するキーワード検索を正しく処理することができる。したがって、本実施形態によると、ブルームフィルタにおいて「特徴2」や「特徴」3を利用した場合と同様に、文書登録木に沿った検索処理を実行することができる。また、本実施形態では、各文書に関連してインデックスに加算された値が削除情報記憶部に記録されているため、各文書を容易に削除することができる。
【0121】
さらに、本実施形態の情報処理装置50によると、すべての文書の検索に用いる情報が1つのインデックスにまとめられ、文書ごとの情報に分けられていない。
【0122】
(実施形態2)
第2の実施形態に係る情報処理装置について、図面を参照して詳細に説明する。図17は、本実施形態に係る情報処理装置10の構成を一例として示すブロック図である。
【0123】
図17を参照すると、情報処理装置10は、CPU11と、CPU11の処理に必要な情報を一時的に記憶する主記憶部12と、第1の実施形態に係る情報処理装置50(図11)の登録部100、検索依頼部200、検索部300、削除部400および記憶部500の処理とこれらに付随する処理とをCPU11に実行させるためのプログラムが記録された記録媒体13と、インデックス記憶部501の記憶する値等が格納されるデータ蓄積部14と、主記憶部12、記録媒体13およびデータ蓄積部14とのデータ転送を制御するメモリ制御インタフェース部15と、入力装置20および出力装置30とのインタフェース装置であるI/Oインタフェース部16とを備え、これらの各部はバスを介して接続されている。なお、データ蓄積部14は、情報処理装置10内に設ける必要はなく、情報処理装置10とは別個に設けられていてもよい。
【0124】
情報処理装置10は、第1の実施形態に係る情報処理装置50の登録部100、検索依頼部200、検索部300、削除部400および記憶部500の各部の機能を実現する。
【0125】
記録媒体13は、磁気ディスク、半導体メモリ、光ディスクあるいはその他の記録媒体であってもよい。
【実施例】
【0126】
次に、上記の実施形態に係る情報処理装置の具体的な実施例について説明する。
【0127】
文書登録木の構成に応じて、各文書の登録に要するセキュアインデックスの生成処理の回数が決まる。どの文書に関しても同一の回数の生成処理を実現するには、どの葉ノードに関しても根ノードからのノード数が一定数になるような木構造を用いればよい。そのような木構造として、例えば、2分木構造がある。このような木構造を用いると、2^n個の文書を登録する場合に、文書ごとのセキュアインデックス生成処理をn回に抑えることができる。
【0128】
また、上記の検索処理における木構造の判定順序として、例えば、幅優先探索または深さ優先探索を用いることができる。
【0129】
文書毎に生成される削除情報は、対応する各文書の情報を含むことから、そのまま保存することは望ましくない。したがって、文書を登録する側の装置で暗号化して記録し、削除する場合には復号するために必要な情報を識別情報とあわせて送付することが望ましい。文書ごとに異なる鍵を準備することは困難であることから、マスター鍵と識別情報から鍵が決定される関数を用いて鍵を生成すると、文書を登録する側の管理が容易となる。セキュアインデックスを生成するための鍵も、同様の方法で決定するようにしてもよい。この場合には、文書を登録する側でマスター鍵の値のみを記憶すれば十分となるため、管理する値の数をさらに削減することが可能となる。
【0130】
上述の削除部400および登録部100を順に用いることで、文書の更新処理を実現することもできる。
【0131】
本発明の情報処理装置によると、登録文書に含まれていない単語に関する検索が効率的に実行でき、かつ、記憶されているインデックス情報から登録された文書に関する情報が漏れることが無くなる。本発明のインデックス生成方法をデータベースにおけるインデックス生成方法として用いることにより、情報漏洩に耐性のあるデータベースを構築することも可能となる。
【0132】
なお、上記の非特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【0133】
10 情報処理装置
11 CPU
12 主記憶部
13 記録媒体
14 データ蓄積部
15 メモリ制御インタフェース部
16 I/Oインタフェース部
18 バス
20 入力装置
30 出力装置
50 情報処理装置
100 登録部
101 登録処理制御部
102 セキュアインデックス生成部
111 受付部
112 識別情報登録部
113 インデックス登録部
200 検索依頼部
201 トラップドア生成部
300 検索部
301 検索処理制御部
302 セキュアインデックス判定部
400 削除部
500 記憶部
501 インデックス記憶部
502 文書登録木記憶部
503 削除情報記憶部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17