説明

検索方法、検索装置、索引生成方法、索引生成装置

【課題】 索引を生成する方法と装置、検索方法と検索装置を提供する。
【解決手段】 索引エントリは、少なくとも検索項目に対応する検索項目識別子、1又は複数の検索情報から生成された1又は複数の索引項目、検索情報についての累積情報を有する。累積情報は、検索情報を含む情報の暗号文を累積し、あるいは検索情報を含む情報からマッピングすることにより取得されたデータを累積することにより生成される。検索時、索引項目と累積情報が検索者に提供される。検索者は索引項目から検索情報を抽出し、累積情報を使用して抽出された検索情報が完全かどうかを検証する。一例として、累積情報は暗号化された逆索引に組み込まれる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に情報処理技術に関し、特に、検索方法、検索装置及び検索結果についての十分検証を可能にする索引の生成方法と装置に関する。
【背景技術】
【0002】
様々なアプリケーションプログラムにおいて、大量の情報についての検索が、特別条件を満たす情報を取得するために必要である。一般に、索引は、もとの情報について予め構築されている。その後、検索要求に応じて一致する項目を見つけ出すために索引内で検索が実行され、その結果、関連情報が取り出される。様々な理由から、検索者は、検索から完全な結果情報、すなわち、検索条件を満たす全ての情報を得たいと希望する。しかしながら、索引作業と検索についての既存の手法は、検索の完全性を保証しない。
【0003】
コンピュータネットワークと通信技術の幅広い利用に伴い、データ所有者は、多くの場合、第三者機関によって維持されるサーバ上にデータファイルを格納する。そのような状況では、サーバ上に格納されたデータファイルを検索するサービスも、第三者機関によって提供されている。すなわち、検索サービスを提供する第三者機関は、検索者からの要求に応じて索引を使用することによりサーバ上に格納されたデータファイルを調べ、検索者に検索結果を提供する。検索における実質的な作業が第三者によって実行されるがため、検索の正確さおよび完全性が検証されかつ保証されるような状況がさらに一層要望されている。
【0004】
さらに、プライバシーと安全性の懸念により、データファイルは、多くの場合暗号化された後に格納される。特に、ストレージサービスの上記のケースにおいては、ファイルの内容が無許可のユーザ(場合によっては、ストレージサービスと検索サービスを提供する第三者を含む)に露呈するのを防ぐために、ファイルはしばしば暗号化テキスト形式でサーバ上に格納される。しかしながら、ファイルが暗号化されたストレージは、ファイルの検索を困難にし、検索結果の正確さおよび完全性を検証することを特に難しくする。
【0005】
本発明は、検索方法と検索装置及び索引生成方法と索引生成装置を提供する。
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したように、索引作業と検索についての既存の手法は、検索結果の完全性を保証しない。また、検索における実質的な作業が第三者によって実行されるがために、検索の正確さおよび完全性が検証されかつ保証されることが望まれている。さらに、ファイルを暗号化してサーバに格納する場合、ファイルの検索を困難にし、検索結果の正確さおよび完全性を検証することを難しくするという問題がある。
【課題を解決するための手段】
【0007】
本発明による索引生成方法は、検索項目に対応する検索項目識別子を生成するステップと、検索項目と関連する1以上の検索情報に従って1つ以上の索引項目を生成するステップと、1以上の検索情報について累積情報を生成するステップと、索引を形成するために少なくとも検索項目識別子、1つ以上の索引項目および累積情報を有する索引エントリを生成するステップとを含む。
【0008】
本発明による索引生成装置は、検索項目に対応する検索項目識別子を生成する検索項目識別子生成ユニットと、検索項目と関連する1以上の検索情報に従って1つ以上の索引項目を生成する索引項目生成ユニットと、1以上の検索情報について累積情報を生成する累積情報生成ユニットと、少なくとも検索項目識別子、1つ以上の索引項目および累積情報を有する索引エントリを生成して、索引を形成する索引形成ユニットとを備える。
【0009】
本発明による検索方法は、検索要求を生成するステップと、1以上の索引項目および1つの累積情報を受信するステップと、受信した1以上の索引項目から1以上の検索情報を抽出するステップと、受信した累積情報によって抽出した検索情報を検証するステップとを含む。
【0010】
本発明による検索装置は、検索要求を生成する検索要求ユニットと、1以上の受信した索引項目から1以上の検索情報を抽出する検索情報抽出ユニットと、受信した累積情報によって抽出した検索情報を検証する検証ユニットとを備える。
【発明の効果】
【0011】
本発明の方法によれば、累積情報を使用することにより、検索結果の完全性および正確さを証明することが可能となる。本発明は、逆索引、特に暗号化された逆索引に適用することができる。プライバシー・レベルに設定された暗号化逆索引により、良好なプライバシー管理及び機密性が検索結果の検証に基づいて提供される。
【図面の簡単な説明】
【0012】
本発明の前述した特徴及び他の特徴は、以下の説明と添付図面とを参照することにより、さらに明らかになるであろう。
【図1】検索システムの一例を示すブロック図である。
【図2】本発明の実施の形態によるデータ所有者端末の構成例の概略を示すブロック図である。
【図3】本発明の実施の形態による索引を生成する処理を説明するフローチャートである。
【図4】本発明の実施の形態による検索者端末の構成例の概略を示すブロック図である。
【図5】本発明の実施の形態による検索処理を説明するフローチャートである。
【発明を実施するための形態】
【0013】
本発明の種々の特徴および典型的な実施の形態については、図面を参照して以下にその詳細を説明する。以下の詳細な説明においては、多くの具体的な詳細が本発明を十分に理解するために提供される。しかしながら、これらの具体的詳細のうちのいくつかがなくとも本発明を実現できることは、当業者にとって明白である。実施の形態の以下の説明は、本発明の一例を示すことにより、本発明をよりよく理解するためになされている。本発明は、以下に説明されたどんな特定の構成およびアルゴリズムにも限定されない。本発明の範囲から外れない限り、構成要素、構成部品およびアルゴリズムのいかなる変形、代替案および改良も包含する。図面および以下の説明において、周知の構成および技術については、本発明を不必要に不明瞭にしないために詳細には説明しない。
【0014】
図1は、本発明を適用した典型的な検索システムを概略的に示すブロック図である。
図1に示すように、データ所有者の装置或いは端末、サービスプロバイダによって管理されるサーバおよび1以上の検索者の装置或いは端末が、通信ネットワークによって接続され、互いに通信することができる。データ所有者は、ファイルおよびそれらのファイルの索引をサーバに格納する。サーバは、検索者端末からの検索要求に応じて索引を使用することによりファイルの検索を実行し、検索者に検索結果を提供する。
【0015】
ここで使用される用語「サーバ」は、ストレージサービスと検索サービスの両方を提供する単一の装置、あるいはストレージサービス、データ検索、ユーザー管理などの種々のサービスを負担し、又はそれらのサービスを分担する互いに隣接し又は遠隔に位置する複数の装置の集合を意味する。

例えば、データ所有者端末は、ストレージサーバ上にファイルを格納し、ストレージサーバと通信し合うファイル検索サーバ上に索引を格納する。説明を簡単にするために、説明と図面においてサービスを提供するそのような全ての装置を「サーバ」と呼ぶことにする。
データ所有者端末とサーバは、図において個別の装置として示されている。しかしながら、以下に説明するように、本発明におけるデータ所有者端末とサーバの両機能は、単一の装置によって実現できることを十分に理解できるであろう。
【0016】
データ所有者と検索者の装置或いは端末は、それぞれ、情報を処理することができかつ情報を通信することができる装置として実現される。例えば、パーソナルコンピュータ(PC)、携帯情報端末(PDA)、スマートフォン(smart mobile phone)或いはその他のデータ処理装置等である。
一般に、サーバは、データを格納し維持することが可能であり、また、端末によるデータの条件付きアクセスを可能にする、サービスプロバイダによって管理される単一の装置或いは装置の集合として実現される。
【0017】
図示のシステムにおいて、データ所有者は、自身のファイルに索引を付け、サーバ上にファイルと索引を格納する。検索時、検索者は、検索項目の情報(例えば、検索項目識別情報)を含む要求を送信する。サーバは、検索項目の情報に従って一致する索引エントリについて索引を調べ、関連情報の検索のために、索引エントリ中の索引項目(検索項目に関連する)を検索者に提供する。
特に、本発明による解決方法においては、累積情報も、検索結果の完全性の証明のために索引エントリに含まれている。サーバは、また検索者に索引エントリ中の累積情報(Accumulator)を提供する。検索者は、累積情報の利用により検索結果が完全で正確かどうかを検証する。
【0018】
一般的な用途において、キーワードに基づいてそのキーワードを含んでいるファイルを検索する場合、逆索引がしばしば利用される。
以下の説明において、逆索引の利用を例として挙げる。しかしながら、本発明が、同様の方法で非逆索引に適用可能であることも言うまでもない。
【0019】
図2は、本発明の実施の形態によるデータ所有者端末100の構成例を示している。
図2に示すように、データ所有者端末100は主に検索項目識別情報生成ユニット101、索引項目生成ユニット102、累積情報生成ユニット103および索引形成ユニット104を含む。
【0020】
図3は、本実施の形態によるデータ所有者端末100によって索引を生成する処理の概略を示す。
【0021】
まず、ステップS201で、データ所有者のファイルに関する検索項目がセットされ、検索項目識別子生成ユニット101は検索項目に従ってそれぞれの検索項目識別情報を生成する。逆索引の利用において、検索項目はキーワードである。
例えば、データ所有者端末は、各ファイル内のキーワードを抽出し、検索項目としてそれらを採用する。あるいは、データ所有者が、端末への入力によって検索項目を手作業でセットする。
互いに異なるキーワードが、検索項目としてセットされれば、各検索項目(keyword) KWについて、検索項目識別子生成ユニット101が検索項目の対応する一意の識別子KLを生成する。
【0022】
検索項目識別子KLは、例えば、検索項目kWそのもの、あるいは検索項目kWにマッピングされるデータである。暗号化された索引の利用において、検索項目識別子KLは、kWの暗号化テキスト、あるいはkWの情報を含んでいるデータである。
例えば、KLは次のように計算される。
KL = Hash(MEK||KW) (式1)
ここで、Hash()はハッシュ関数を表わす。MEKは特定のパラメータ(例えば、データ所有者の親鍵(マスターキー))である。
「||」は、事前に設定された順序の文字列あるいは数字の組合せを表わす。
あるいは、KL = E(EKey, KW)
ここで、EKeyは特定の鍵である。E(EKey, KW)は、EKeyによるKWの暗号化を表す。
【0023】
ステップS202で、各検索項目に関する検索情報がセットされ、索引項目生成ユニット102は、各検索情報に対応する索引項目を生成する。検索項目はそれぞれ1つあるいは複数の検索情報に対応する。検索情報は、その検索項目と一致する検索結果を提供するための何らかの情報である。
例えば、逆索引においては、検索項目(キーワード)kWについて、キーワードkWを含む各ファイルのファイル名あるいは場所(あるいは、そのファイルに関する他の情報)が、検索項目に関する1つの検索情報としてセットされる。
例えば、検索項目kWについて、キーワードkWを含んでいるn個のファイルのファイル名は、検索項目kWに関するn個の検索情報I1, I2, …Inのようにセットされる。
【0024】
暗号化ストレージの利用において、データ所有者がサーバ上にファイルの平文ではなく暗号化テキストを格納することに留意する必要がある。その場合、上述のファイル名は暗号化されたファイルの暗号文ファイル名かもしれない。
【0025】
各検索情報について、索引項目生成ユニット102は、検索情報を含む、あるいは検索情報が導き出される索引項目を生成する。
1個の検索情報Ij (j=1, 2,…, n)について、索引項目生成ユニット102は索引項目FLjを生成する。
索引項目FLjは、例えば、検索情報Ijそのもの、あるいはある変換によって検索情報Ijが取得される何らかの値である。暗号化索引の利用において、索引項目FLjは情報Ijを含む暗号文データかもしれない。
例えば、索引項目FLjは以下のように計算される。
FLj = E(EKey, Ij||Key) (式2)
ここで、EKeyは特定の鍵である。Keyは、特定のパラメータ(例えば、ファイルを暗号化するのにデータ所有者によって使用される鍵)である。E(EKey, Ij||Key)は、EKeyによるIjとKeyの組合せの暗号化を表わす。
【0026】
次に、ステップS203で、累積情報生成ユニット103は、検索結果の完全性の検証のために、検索項目に関するすべての検索情報を累積する累積情報を生成する。
各検索情報を含む検索結果が完全かどうかを検索者端末が検証することができさえすれば、累積情報は様々な方法で生成することが可能である。
累積情報の演算は、排他的OR(XOR)演算、剰余演算(modular operation)および累積シグネチャ(Accumulation
signature)の具体例を用いて以下に説明する。
当業者は、累積情報を生成するために他のアルゴリズムを利用可能であることは十分に理解するであろう。
具体例1−XOR演算
【0027】
検索項目KWに関するすべての検索情報I1, I2,
…Inについて、累積情報生成ユニット103は、XOR演算により完全性累積情報ICを以下のように生成する。
【数1】


ここで、
【数2】

はXOR演算を表わす。
【0028】
式3は、反復演算によって以下のように計算される。
set IC = 0
for j=1 to n

【数3】


next j

具体例2−剰余(Mod)演算
【0029】
剰余演算により、累積情報生成ユニット103は完全性累積情報ICを以下のように生成する。
【数4】


あるいは
【数5】


ここで、pは、大きな素数である。
【0030】
式4は、反復演算によって以下のように計算される。
set IC = 1
for j=1 to n
IC = (IC * Ij)
mod p
next j

【0031】
式5は、反復演算によって以下のように計算される。
set IC = 0
for j=1 to n
IC = (IC + Ij)
mod p
next j

具体例3−累積シグネチャ(Accumulation
signature)
【0032】
以下のセキュリティパラメータ(security
parameter)があらかじめセットされると想定する。
大きな素数p、位数pの2つのグループG1とG2、G1とG2のジェネレータであるg1およびg2、p未満でpと互いに素であるすべての正整数の集合であるZp*、G1×G2→GTと定義される双線型写像(bilinear mapping)e
双線型写像は以下の特徴を有する。
(1)双線型性 (bilinearity)
全てのg1およびg2及びZp*に属する全てのaとbについて、
e(g1a,
g2b) = e(g1, g2)abの関係がある。
(2)非縮退(nondegeneracy)
g1=0 if e(g1, g2)
= 1 g2はG2に属する。
Gに対して{0,1}*をマッピングするハッシュ関数がセットされ、乱数KがZp*から選択される。秘密キーskがセットされる。
ここで、g2と乱数Kは検索者に公開される。そうでなければ、g2Kが検索者に公開される。
【0033】
次に、累積情報生成ユニット103は累積情報ICを以下のように生成する。
【数6】

【0034】
式6は、反復演算によって以下のように計算される。
set IC = 1
for j = 1 to n
IC = (IC * H(Ij)1/(sk+K))
mod p
next j

【0035】
累積情報が生成された後、索引形成ユニット104は、各検索項目について索引エントリを生成する。索引エントリはそれぞれ、少なくとも、検索項目の検索項目識別子と、検索項目に関する全ての索引項目と、検索項目に関する全ての検索情報を累積することにより取得された累積情報を含んでいる。
次に、索引形成ユニット104は、各索引エントリを含む索引を形成する。それぞれ異なる索引項目の累積が各累積情報を生成するため、乱数Kはそれぞれ別に選択される場合があることに留意すべきである。
【0036】
このように、累積情報を含む索引が、データ所有者端末100で生成される。その後、データ所有者端末は、ファイルと生成された索引を将来の利用のためにサーバに格納することが可能である。
【0037】
累積情報の利用について、図4及び図5を参照して以下に説明する。
【0038】
図4は、本発明の実施の形態による検索者端末300の構成例を示している。図4に示すように、検索者端末300は、主に、検索要求ユニット301と、検索情報抽出ユニット302と、検証ユニット303を含む。
【0039】
図5は、本実施の形態による検索を実行する検索者端末300の処理の概略を示す図である。
【0040】
まず、ステップS401で、検索要求ユニット301は、少なくとも1つの検索項目識別子を含む検索要求を生成し、サーバに検索要求を送信する。
検索者端末は、データ所有者から検索項目識別子を取得し、あるいは、データ所有者から検索項目識別子の計算に必要なデータを取得し、データ所有者端末で索引を形成する時に検索項目識別子を生成する方法に相当する方法によって検索項目識別子を計算する。
【0041】
検索要求を受け取った後に、サーバは、受信した検索項目識別子と一致する検索項目識別子を有する索引エントリのために索引を調べる、検索者端末にその索引エントリ内の累積情報だけでなく索引項目もすべてを返却する。
認証が必要である場合、サーバは、上述のルックアップを実行する前に検索者を認証することも可能である。サーバが一致する索引エントリを発見できず、あるいは検索者の認証に失敗すると、サーバは、否定的な結果を返却するか、あるいはエラー処理に移行し、検索者端末に通知を送信する。そのような状態において、検索者端末は、エラー手順を実行し、例えば、手順を再試行しあるいは終了する。
【0042】
サーバが検索結果を返却すれば、ステップS402で、検索者端末は、対応する累積情報だけでなく1つ或いは複数の索引項目も受け取る。
【0043】
次に、ステップS403で、検索者端末の検索情報抽出ユニット302が、受信した各索引項目から検索情報を抽出する。上述したように、索引項目が検索情報そのものかもしれない。その場合、検索情報が直ちに取得される。
索引項目が検索情報の暗号文の形式であるか、あるいは変換によって検索情報が取得される値である場合、検索情報抽出ユニット302は対応する暗号解読あるいは変換によって検索情報を抽出する。暗号解読あるいは変換用に必要なパラメータは、データ所有者から取得することが可能である。
【0044】
各索引項目に含まれる検索情報を取得した後、検索者端末の検証ユニット303は、受信した累積情報を使用することにより検索結果が完全でかつ正確かどうかを検証する(ステップS404)。
【0045】
正確であると確認されれば、処理手続きはステップS405に移行し、取得した検索情報が、例えば、検索情報に従って対応するファイルを引き出すことあるいは追加の情報の処理に使用される。
検索情報の利用については、本発明と直接関係しないので、対応するユニットあるいはモジュールは、図面に示しておらず、かつその詳細な説明も省略している。
しかしながら、特定の用途に応じて必要とする処理を実行するために、他の必要なユニットあるいはモジュールが追加されるであろうことは十分に理解されるべきである。
【0046】
検証が否定的であれば、不完全あるいは不正確であるとの検索結果が示される。多くの場合、それはデータの改ざんあるいはデータ通信におけるエラーに起因する。そのような状態において、処理手続きは、エラー処理のためにステップS406に移行し、例えば、検索要求の再送、再送信の要求、あるいは処理の終了を行う。
【0047】
累積情報を用いた検証方法については、累積情報の生成においてデータ所有者端末で使用された方法に応じて決定される。
【0048】
例えば、検証ユニット303は、データ所有者端末によって使用された方法と同じ方法によって抽出した検索情報に基づいて累積情報を計算し、その累積情報をサーバから受信した累積情報と比較する。
それらが一致すれば、検証が肯定的となり、そうでなければ、検証は否定的となる。幾つかの具体例を以下に示す。
【0049】
ここで、検索情報抽出ユニットが受信した全ての索引項目から検索情報I'1, I'2,
…I'mを抽出すると仮定する。
累積情報が上記の式3に従って計算される場合、検証ユニット303は、
【数7】

,を計算し、そのIC'をサーバから受信した累積情報ICと比較する。
【0050】
同様に、累積情報が上記の式4に従って計算される場合、検証ユニット303は、
【数8】

を計算し、そのIC'をサーバから受信した累積情報ICと比較する。
あるいは、累積情報が上記の式5に従って計算される場合、検証ユニット303は、
【数9】

を計算し、そのIC'をサーバから受信した累積情報ICと比較する。
【0051】
上記の式6に従って累積シグネチャ(Accumulation signature)の形式で累積情報が生成される場合、検証は累積シグネチャを検証することにより実行される。
特に、検証ユニット303は、
【数10】

を計算し、関係e(IC', g2) = e(IC, g2sk * g2K)が成り立つかどうかを検証する。
関係が成り立てば、正確であると検証され、そうでなければ、検証は否定的となる。
【0052】
累積情報を生成するために他の方法が使用される場合、検証ユニット303は、対応する方法を用いることにより検索情報が累積情報により完全かどうか検証する。
【0053】
ある状況では、索引を更新する必要が発生する。例えば、新たなファイルが追加され、あるいは、既存ファイルが削除されと、検索情報が変換する。その結果、索引は正確な検索を保証するために更新される。索引項目はファイルの追加あるいは削除に応じて更新され、同時に、関連する索引エントリ内の累積情報もそれに応じて更新される。
【0054】
例えば、一つの新たな検索情報Iaを検索項目KWに対応する索引エントリに追加する必要があるならば、上記の式3に従って計算された累積情報ICは、式7のように更新される。
【数11】


上記の式4に従って計算された累積情報ICは、式8のように更新される。
ICupdated = (IC * Ia) mod p (式8)
上記の式5に従って計算された累積情報ICは、式9のように更新される。
ICupdated = (IC+Ia)
mod p (式9)
また、上記の式6に従って計算された累積情報ICは、式10のように更新される。
ICupdated = [IC * H(Ia)1/(sk+K)] mod p (式10)
【0055】
上記の式6に従って計算された累積情報ICについては、以下に示すように別の方法を用いて更新することが可能である。
まず、新たな公開乱数K'を選択し、次に、更新累積情報ICupdatedを以下のように計算する。
IC updated = [IC(sk+K) * H(Ia) mod p]1/(sk+K’) (式11)
【0056】
他方、一つの既存の検索情報が検索項目KWに対応する索引エントリから削除されるならば、
上記の式3に従って計算された累積情報ICは、式12のように更新される。
【数12】


上記の式4に従って計算された累積情報ICは、式13のように更新される。
ICupdated = (IC * Ib-1) mod p (式13)
上記の式5に従って計算された累積情報ICは、式14のように更新される。
ICupdated = (IC - Ib) mod p (式14)
また、上記の式6に従って計算された累積情報ICは、式15のように更新される。
ICupdated = [IC * H(Ib)-1/(sk+K)] mod p (式15)
【0057】
上記の式6に従って計算された累積情報ICについては、以下に示すように別の方法を用いて更新することが可能である。
まず、新たな公開乱数K'を選択し、次に、次に、更新累積情報ICupdatedを以下のように計算する。
IC updated = [IC(sk+K) * H(Ib)-1 mod p]1/(sk+K’) (式16)
【0058】
索引エントリの更新はデータ所有者端末によって実行することが可能であり、更新された索引エントリは、以前のものと置き換えるためにサーバに送信される。あるいは、サーバによって更新を実行することが可能である。従って、索引更新のための更新ユニット(図示せず)は、データ所有者端末あるいはサーバに設けられる。
【0059】
本発明による索引における累積は様々な索引に適用することが可能である。例えば、累積情報は暗号化索引に同様に適用することが可能である。例えば、索引エントリ内の索引項目は検索情報を含む情報を暗号化することにより取得された暗号文であり、また、累積情報は、検索情報が暗号化ファイルの暗号化されたファイル名である検索情報を累積することによって取得される。
そのような暗号化索引においては、データ所有者および権限を与えられた検索者を除いて、サーバを含む他の当事者は、索引項目を暗号化して検索情報を得ることができないし、暗号化処理のシミュレーションによって正確に解読することができる索引項目を取得することもできない。その結果、索引項目および累積情報の改ざんが防止される。
【0060】
高速検索可能な暗号化方法を以下に示す。改良した暗号化逆索引が使用され、累積情報が検索結果の完全性の検証を与えるために使用される。
【0061】
この方法において、データ所有者端末は、同じあるいは異なる鍵で各ファイルを暗号化し、サーバにファイルの暗号文を格納する。この例において、上記検索情報Ijは、ファイルFILEjの暗号化されたファイル名CFNjである。
暗号化されたファイル名に基づいて、サーバは、格納された暗号化ファイルの中で一致するファイルを即座に発見し、要求者にそのファイルを提供する。
【0062】
指標付けの段階では、検索項目のように挙げられたキーワードKWについて、データ所有者端末は、キーワードKWを含む情報を暗号化することにより、あるいは値にキーワードKWを含む情報をマッピングすることにより、検索項目識別子を計算する。
例えば、MEKがデータ所有者のマスターキーである場合、検索項目識別子はKL = Hash(MEK||KW)のように計算される。
【0063】
ファイルFILEj (j = 1, 2, … n)がキーワードKWを含むと仮定すると、データ所有者端末は、KWに関連するFILEjの索引項目FLJを以下のように計算する。
FLj = E(EKey, Ij||Kfilej) (式17)
ここで、KfilejはファイルFILEjのための解読キーである。IjはファイルFILEjの暗号化されたファイル名である。EKeyは、索引項目を生成するための暗号鍵(データ所有者によってセットされる)である。また、E(EKey, Ij||Kfilej)は、IjとKfilejの組合せのEKeyによる暗号化を表わす。
【0064】
その後、Ij (j = 1, 2, … n)が、検索項目KWの累積情報ICを生成するために累積される。例えば、それは、上述した式3から式6の何れかあるいは他の方法に従って計算される。
【0065】
その後、少なくともKL、FLj (j = 1, 2, … n)及びICを含む索引エントリが、キーワードKWについて生成される。この索引エントリによって形成された暗号化された逆索引が、サーバに格納される。
【0066】
データ所有者が検索者にキーワードによる検索を実行させる場合、データ所有者は安全な方法で、検索者に対してキーワードの検索項目識別子KLを公開し、索引項目の解読のための解読キーDKeyを検索者に公開する。
【0067】
検索の段階では、検索者端末は、サーバに対して検索項目識別子KLを含む検索要求を送信する。
サーバは、受信した検索項目識別子KLに従って、一致する索引エントリについて格納した暗号化索引を調べ、一致する索引エントリに含まれる累積情報ICだけでなく全ての索引項目FLjを検索者端末に返却する。
【0068】
サーバから各索引項目FLjを受け取った後、検索者端末は、索引項目の解読のためにデータ所有者によって公開された解読キーDKeyにより各索引項目FLjを解読し、暗号化されたファイル名およびファイル、すなわちIj とKfilejの対応する解読キーを取得する。
【0069】
その後、データ所有者端末は、受信した累積情報ICを使用し、取得した暗号化ファイル名Ijがすべて完全かどうかを検証する。
正確であると認定されれば、検索者端末は、それらの暗号化ファイル名Ijを利用する。例えば、対応する暗号化ファイル名を有する暗号化ファイルを引き出すためにサーバに対して暗号化ファイル名Ijを送信し、その後、対応するファイル解読鍵Kfilejで暗号化されたファイルを解読し、ファイルのプレーンテキストを取得する。検証が否定的であれば、上述したエラー処理を実行する。
【0070】
上記の説明において、ファイルと検索情報はサーバ上に暗号化された形式で格納される。このため、サーバに対してファイル情報が漏洩することが防止される。
【0071】
上記の例の改良した形態においては、検索情報Ijから直接累積情報を計算する代わりに、検索情報Ijを含む情報の暗号文あるいは検索情報Ijを含む情報からマッピングされたデータが、累積情報ICを計算し、検証し及び更新するのに、Ijの代わりに使用される。
例えば、Ij' = Ij||Xが、累積情報を計算するのに前述のIjの代わりに使用される。ここで、Xは予め設定された情報、例えば、上記の例におけるDKeyである。
また、Ij' = Ij||Xは、上記したXOR演算、剰余演算等によって累積情報を計算する式のIjの代わりに使用することが可能である。ここで、Xは予め設定された情報、例えば、上記の例におけるDKeyである。
【0072】
上述したように、索引項目が検索情報を含む情報の暗号文であり、かつ、累積情報が検索情報の累積によって形成されるので、権限外の第三者は索引項目あるいは累積情報を改ざんすることができない。
【0073】
他の改良した形態において、データ所有者は、異なるプライバシー・レベル(privacy level)を設定し、その異なるプライバシー・レベル毎に別々に索引項目の暗号化キーEKeyと解読キーDKeyを設定することが可能である。
索引を生成する場合、あるプライバシー・レベルで開示することが可能なファイルに関して、そのプライバシー・レベルの索引項目暗号鍵がそのファイルについて索引項目を生成するのに使用される。
このように、検索項目(キーワード)と関連する索引エントリに、異なるプライバシー・レベルの索引項目が存在することになる。このような場面においては、各プライバシー・レベルの索引項目について、累積情報が生成される。
すなわち、1つの検索項目に対応する索引エントリにおいて、ある1つのプライバシー・レベルの累積情報が、そのプライバシー・レベルの全ての索引項目に含まれる検索情報を累積することによって生成される。このようにして、異なるプライバシー・レベルの複数の累積情報が生成される。
【0074】
上述した改良した方法においては、データ所有者はプライバシー・レベルに応じて検索者に権限を与える。すなわち、検索者のプライバシー・レベルに適した索引項目解読キーDKeyが検索者に公開される。
検索時、検索者は、公開された索引項目解読キーDKeyで、サーバから受信したすべての索引項目のうち、同じプライバシー・レベルの索引項目暗号鍵EKeyを使用してもともと生成された検索項目を解読する。これにより、検索者は、そのプライバシー・レベルの検索項目に関する検索情報を取得することができる。
暗号解読の正確さの検証のために索引項目に所定のフラグを設定することもできる。例えば、索引項目を以下のように生成する。
FLj = E(EKey, FLAG||Ij||Kfilej) (式18)
ここで、FLAGは検索者に認識されているパラメータである。
これによって、解読された情報内における正しいFLAGの存在を検証することによって、検索者は、暗号解読が正確に実行されているかどうかを判定することができる。
【0075】
また、暗号解読によって対応するプライバシー・レベルの検索情報を取得した後、検索者は、そのプライバシー・レベルに対応する受信した累積情報を使用することで、そのプライバシー・レベルの検索情報が完全かどうかを検証する。
検索者は、受信した索引エントリに含まれる複数累積情報を使用して検証を実行してもよい。そして、累積情報のいずれかの1つが正しいと確認されれば、検証は肯定的となる。
それは、計算された累積情報が異なるプライバシー・レベルの受信した累積情報と等しくなるという確率が非常に低いためである。
あるいは、索引エントリはセクションに分けられる。すなわち、同じプライバシー・レベルの索引項目は同じセクションに加えられる。その結果として、検索者は、どのセクションで索引項目が正確に解読されているかを判定することで、検証においてどの累積情報を使用するかを決定することができる。
あるいは、検索者が使用すべき正しい累積情報を決定するのを支援するために、各累積情報に付加情報(例えば、プライバシー・レベルを示すパラメータ)を付与することも可能である。
あるいは、サーバは、検索時に、検索者のプライバシー・レベルを判定する処理を実行し、次に、検索者のプライバシー・レベルに応じて対応するプライバシー・レベルの累積情報を検索者に返却する。そのような場合、受信した累積情報から累積情報を選択する処理は検索者にとって不要となる。
【0076】
本発明によるいくつかの実施の形態について図面を参照して上記のように説明した。しかしながら、本発明は、上記実施の形態で説明した特定の構成および処理に何ら限定されるものではない。上述した構成、アルゴリズム、動作及び処理について、本発明の精神の範囲内で、種々の代替案、変更あるいは変形が可能であることは、当業者によって十分に理解できるであろう。
例えば、上記の説明では、逆索引の具体例について詳細に説明した。しかし、本発明を非可逆索引(non-inverted index)に適用することも可能である。さらに、例えば、上述した例における検索項目は、ファイル名あるいは暗号化されたファイル名でもよいし、また、検索情報は、ファイルに含まれるキーワードあるいは暗号化されたキーワード等でもよい。
非可逆索引において、累積情報は同様の方法で適用することが可能である。
さらに、上述した例では、索引エントリが少なくとも1つの検索項目識別子、索引項目および累積情報を含んでいる。しかしながら、特定のアプリケーションの要求によって他の必要な情報およびデータを索引エントリに追加することも可能である。
【0077】
本明細書で使用される、いわゆる「ファイル」は、幅の広い概念として解釈されるべきである。それは、例えば、テキストファイル、ビデオ/オーディオ・ファイル、写真/図、および他のデータあるいは情報を含むが、これらに限定されない。
【0078】
データ所有者端末、検索者端末およびサーバの構成として、相互に接続された幾つかのユニットを図面に示した。
これらのユニットは、それらの間で信号を転送するために、バスあるいは他の信号ライン、あるいは無線によって接続することができる。しかしながら、各装置に含まれる構成要素は、上述したユニットに限定されないし、特定の構成については変更しあるいは差し替えることが可能である。各装置は、装置の操作者に対して情報を表示するための表示ユニット、操作者の入力を受け付ける入力ユニット、各ユニットの演算を制御する制御装置、他の記憶装置等のような、他のユニットを含むことも考えられる。それらの構成要素については、当業界において公知であるので詳細は説明しない。また、当業者であれば、上述した装置にそれらの構成要素を追加することは容易に理解するであろう。
さらに、上述したユニットは、図面において個別のブロックとして示しているけれども、どのユニットも1つの構成要素として他のものと組み合わせることが可能あるし、さらにいくつかの構成要素に分けることも可能である。
【0079】
さらに、データ所有者端末、検索者端末およびサーバは、上述した例において別個の装置として説明しかつ示したが、それらは通信ネットワークで互いに遠隔に設置される可能性もある。しかしながら、それらは、機能の強化に伴って1つの装置として組み合わせることも可能である。
例えば、ある場合には、データ所有者端末として動作する新たな装置を作成する際にデータ所有者端末と検索者端末を組み合わせることも可能であるし、一方、他の場合には、検索者端末として検索を実行することができる新たな装置を作成する際にデータ所有者端末と検索者端末を組み合わせることも可能である。他の例としては、サーバとデータ所有者端末あるいは検索者端末を、それがアプリケーションでそれらの機能を代行すれば、互いに組み合わせることが可能である。また、異なる処理においてデータ所有者端末、検索者端末およびサーバとして機能する装置を作成することも可能である。
【0080】
上述した通信ネットワークは、あらゆる種類の電気通信ネットワークあるいはコンピュータネットワークを含むあらゆる種類のネットワークである。また、通信ネットワークは、例えば、データ所有者端末、検索者端末およびサーバが、単一の装置のパーツとして実施される場合、データバスあるいはハブ等の内部データ転送機構を含む。
【0081】
本発明に要素は、ハードウェア、ソフトウェア、ファームウェアあるいはそれの組み合わせにおいて実現され、それのシステム、サブシステム、構成部品あるいはサブコンポーネントにおいて利用することができる。ソフトウェア中で実現された時、本発明に要素は、必要なタスクを実行するためのプログラム、あるいはコードセグメントである。プログラムまたはコードセグメントは、コンピュータ読み取り可能な媒体に格納するか、あるいは伝送ケーブルか通信リンク上の搬送波に包含されたデータ信号によって送信することが可能である。コンピュータ読み取り可能な媒体には、情報を格納するか転送することが可能であるすべての媒体を含む。コンピュータ読み取り可能な媒の具体例は、電子回路、半導体記憶装置、ROM、フラッシュ・メモリー、消去可能ROM(EROM)、フロッピー・ディスク、CD−ROM光ディスク、ハードディスク、光ファイバー媒体、無線周波数(RF)リンクなどを含む。コードセグメントは、インターネット、イントラネットなどのようなコンピュータネットワークを経由してダウンロードすることも可能である。
【0082】
本発明は、本発明の精神および本質的な機能から外れずに、他の特定の形態で実装可能である。例えば、特徴が本発明に基本的な範囲から外れない限り、特定の実施の形態で述べられたアルゴリズムは修正することが可能である。従って、現在の実施の形態は、全ての点において例示でありかつ限定的でないとして考慮されるべきである。本発明の範囲は、前述の説明によってではなく添付された請求項によって示される。また、したがって、請求項と同等の意味と範囲の内で生ずる変更は全て本発明の範囲に包含される。
【符号の説明】
【0083】
101:検索項目識別情報生成ユニット
102:索引項目生成ユニット
103:累積情報生成ユニット
104:索引形成ユニット
301:検索要求ユニット
302:検索情報抽出ユニット
303:検証ユニット


【特許請求の範囲】
【請求項1】
検索項目に対応する検索項目識別子を生成するステップと、
前記検索項目と関連する1以上の検索情報に従って1つ以上の索引項目を生成するステップと、
1以上の前記検索情報について累積情報を生成するステップと、
索引を形成するために少なくとも検索項目識別子、1つ以上の索引項目および累積情報を有する索引エントリを生成するステップと
を含むことを特徴とする索引生成方法。
【請求項2】
前記累積情報の生成ステップが、集合署名、XOR演算および剰余演算の少なくとも1つによって1以上の情報を累積することを特徴とする請求項1に記載の索引生成方法。
【請求項3】
前記検索項目がキーワードであり、前記検索情報が前記キーワードを含むファイルの暗号化されたファイル名であることを特徴とする請求項1に記載の索引生成方法。
【請求項4】
前記検索項目識別子の生成ステップが、前記検索項目を含む情報の暗号文を生成し、又は、前記検索項目を含む情報からマッピングして取得されるデータを生成することを特徴とする請求項1に記載の索引生成方法。
【請求項5】
前記索引項目の生成ステップが、前記検索情報を含む情報の暗号文を生成することを特徴とする請求項1に記載の索引生成方法。
【請求項6】
前記索引項目の生成ステップが、索引項目暗号鍵で対応する前記検索情報を含む情報を暗号化することを特徴とする請求項1に記載の索引生成方法。
【請求項7】
前記累積情報の生成ステップが、前記検索情報を含む情報の暗号文を累積し、又は、前記検索情報を含む情報からマッピングすることにより取得されるデータを累積することを特徴とする請求項1に記載の索引生成方法。
【請求項8】
1の前記検索情報が追加され又は削除された場合に、前記累積情報を更新するステップをさらに有することを特徴とする請求項1に記載の索引生成方法。
【請求項9】
前記累積情報は、
【数13】

として計算され(ここで、I1, I2,
…Inは累積される検索情報であり、
【数14】

はXOR演算を表わす)、
検索情報Iaが追加され又は削除される場合、累積情報を、
【数15】

と更新することを特徴とする請求項8に記載の索引生成方法。
【請求項10】
前記累積情報は、
【数16】

として計算され(ここで、Ijは、累積される検索情報であり、pは大きな素数である。)、
検索情報Iaが追加される場合、累積情報を、ICupdated = (IC * Ia) mod p
と更新し、
検索情報Ib が追加される場合、累積情報を、ICupdated = (IC * Ib-1)
mod pと更新することを特徴とする請求項8に記載の索引生成方法。
【請求項11】
前記累積情報は、
【数17】

として計算され(ここで、Ijは、累積される検索情報であり、pは大きな素数である。)、
検索情報Iaが追加される場合、累積情報を、ICupdated = (IC + Ia) mod p
と更新し、
検索情報Ib が追加される場合、累積情報を、ICupdated = (IC - Ib) mod pと更新することを特徴とする請求項8に記載の索引生成方法。
【請求項12】
前記累積情報は、
g2とKが公開され、あるいはg2kが公開された場合、
【数18】

として計算され(ここで、Ijは、累積される検索情報であり、skは、秘密キーであり、pは大きな素数、HはG1に文字列をマッピングするハッシュ関数、KはZp*内の乱数、Zp*はp未満でpと互いに素であるすべての正整数の集合、g2はG2のジェネレータ、G1とG2は位数pのグループであり、G1とG2について双線型写像が存在する)、
検索情報Iaが追加される場合、累積情報を、
ICupdated = [IC(sk+K) * H(Ia) mod p]1/(sk+K’)
と更新し、K’あるいはg2k’を公開し(ここで、K’はZp*内のKと異なる乱数)、
検索情報Ib が追加される場合、
[IC(sk+K) * H(Ib)-1 mod p]1/(sk+K’)
と更新し、K’あるいはg2k’を公開する(ここで、K’はZp*内のKと異なる乱数)
ことを特徴とする請求項8に記載の索引生成方法。
【請求項13】
検索項目に対応する検索項目識別子を生成する検索項目識別子生成ユニットと、
前記検索項目と関連する1以上の検索情報に従って1つ以上の索引項目を生成する索引項目生成ユニットと、
1以上の前記検索情報について累積情報を生成する累積情報生成ユニットと、
少なくとも検索項目識別子、1つ以上の索引項目および累積情報を有する索引エントリを生成して、索引を形成する索引形成ユニットと
を備えることを特徴とする索引生成装置。
【請求項14】
前記累積情報生成ユニットは、集合署名、XOR演算および剰余演算の少なくとも1つによって1以上の情報を累積することを特徴とする請求項13に記載の索引生成装置。
【請求項15】
前記検索項目がキーワードであり、前記検索情報が前記キーワードを含むファイルの暗号化されたファイル名であることを特徴とする請求項13に記載の索引生成装置。
【請求項16】
前記検索項目識別子生成ユニットが、前記検索項目を含む情報の暗号文を生成し、又は、前記検索項目を含む情報からマッピングして取得されるデータを生成するように構成されることを特徴とする請求項13に記載の索引生成装置。
【請求項17】
前記索引項目生成ユニットが、前記検索情報を含む情報の暗号文を生成することにより前記索引項目を生成するように構成されることを特徴とする請求項13に記載の索引生成装置。
【請求項18】
前記索引項目生成ユニットが、索引項目暗号鍵で対応する前記検索情報を含む情報を暗号化することにより前記索引項目を生成するように構成されることを特徴とする請求項13に記載の索引生成装置。
【請求項19】
前記累積情報生成ユニットが、前記検索情報を含む情報の暗号文を累積し、又は、前記検索情報を含む情報からマッピングすることにより取得されるデータを累積することにより前記累積情報を生成するように構成されることを特徴とする請求項13に記載の索引生成装置。
【請求項20】
1の前記検索情報が追加され又は削除された場合に、前記累積情報を更新する更新ユニットをさらに備えることを特徴とする請求項13に記載の索引生成装置。
【請求項21】
前記累積情報生成ユニットが、前記累積情報を、
【数19】

として計算するように構成され(ここで、I1, I2,
…Inは、累積される検索情報であり、
【数20】

はXOR演算を表わす)、
前記更新ユニットが、検索情報Iaが追加され又は削除される場合、累積情報を、
【数21】

と更新するように構成されることを特徴とする請求項20に記載の索引生成装置。
【請求項22】
前記累積情報生成ユニットが、
前記累積情報を、
【数22】

として計算するように構成され(ここで、Ijは、累積される検索情報であり、pは大きな素数である。)、
前記更新ユニットが、検索情報Iaが追加される場合、累積情報を、ICupdated = (IC * Ia) mod p
と更新し、検索情報Ib が追加される場合、累積情報を、ICupdated = (IC * Ib-1) mod pと更新するように構成されることを特徴とする請求項20に記載の索引生成装置。
【請求項23】
前記累積情報生成ユニットが、
前記累積情報を、
【数23】

として計算するように構成され(ここで、Ijは、累積される検索情報であり、pは大きな素数である。)、
前記更新ユニットが、検索情報Iaが追加される場合、累積情報を、
ICupdated = (IC + Ia) mod p
と更新し、検索情報Ib が追加される場合、累積情報を、
ICupdated = (IC - Ib) mod p
と更新するように構成されることを特徴とする請求項20に記載の索引生成装置。
【請求項24】
前記累積情報生成ユニットが、
前記累積情報を、
g2とKが公開され、あるいはg2kが公開された場合、
【数24】

として計算するように構成され(ここで、Ijは、累積される検索情報であり、skは、秘密キーであり、pは大きな素数、HはG1に文字列をマッピングするハッシュ関数、KはZp*内の乱数、Zp*はp未満でpと互いに素であるすべての正整数の集合、g2はG2のジェネレータ、G1とG2は位数pのグループであり、G1とG2について双線型写像が存在する)、
前記更新ユニットが、
検索情報Iaが追加される場合、累積情報を、
ICupdated = [IC(sk+K) * H(Ia) mod p]1/(sk+K’)
と更新し、K’あるいはg2k’を公開し(ここで、K’はZp*内のKと異なる乱数)、
検索情報Ib が追加される場合、
[IC(sk+K) * H(Ib)-1 mod p]1/(sk+K’)
と更新し、K’あるいはg2k’を公開する(ここで、K’はZp*内のKと異なる乱数)ように構成されることを特徴とする請求項20に記載の索引生成装置。
【請求項25】
検索要求を生成するステップと、
1以上の索引項目および1つの累積情報を受信するステップと、
受信した1以上の前記索引項目から1以上の検索情報を抽出するステップと、
受信した前記累積情報によって抽出した前記検索情報を検証するステップと
を含むことを特徴とする検索方法。
【請求項26】
前記検索情報を検証するステップが、
抽出した前記検索情報によって累積情報を計算するステップと、
計算した累積情報を受信した累積情報と照合するステップを含むことを特徴とする請求項25に記載の検索方法。
【請求項27】
前記検索情報を検証するステップが、集合署名を検証するステップを含むことを特徴とする請求項25に記載の検索方法。
【請求項28】
前記検索情報を抽出するステップが、1以上の索引項目を解読するステップを含むことを特徴とする請求項25に記載の検索方法。
【請求項29】
前記累積情報を計算するステップが、集合署名、XOR演算および剰余演算の少なくとも1つによって検索情報を累積するステップを含むことを特徴とする請求項26に記載の検索方法。
【請求項30】
前記累積情報を計算するステップが、
前記検索情報を含む情報の暗号文を累積し、あるいは前記検索情報を含む情報からマッピングすることにより取得されたデータを累積するステップを含むことを特徴とする請求項26に記載の検索方法。
【請求項31】
検索要求を生成する検索要求ユニットと、
1以上の受信した索引項目から1以上の検索情報を抽出する検索情報抽出ユニットと、
受信した前記累積情報によって抽出した前記検索情報を検証する検証ユニットと
を備えることを特徴とする検索装置。
【請求項32】
前記検証ユニットは、
抽出した前記検索情報によって累積情報を計算し、計算した累積情報を受信した累積情報と照合するように構成されることを特徴とする請求項31に記載の検索装置。
【請求項33】
前記検証ユニットは、集合署名を検証するように構成されることを特徴とする請求項31に記載の検索装置。
【請求項34】
前記検索情報抽出ユニットは、1以上の索引項目を解読することにより前記検索情報を抽出するように構成されることを特徴とする請求項31に記載の検索装置。
【請求項35】
前記検証ユニットは、集合署名、XOR演算および剰余演算の少なくとも1つによって検索情報を累積することにより、累積情報を計算するように構成されることを特徴とする請求項32に記載の検索装置。
【請求項36】
前記検証ユニットは、
前記検索情報を含む情報の暗号文を累積し、あるいは前記検索情報を含む情報からマッピングすることにより取得されたデータを累積することにより、累積情報を計算するように構成されることを特徴とする請求項32に記載の検索装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2010−205258(P2010−205258A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【外国語出願】
【出願番号】特願2009−257645(P2009−257645)
【出願日】平成21年11月11日(2009.11.11)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(505418870)エヌイーシー(チャイナ)カンパニー, リミテッド (108)
【氏名又は名称原語表記】NEC(China)Co.,Ltd.
【Fターム(参考)】