【実施例1】
【0040】
図1を参照して、本発明の第1の実施例に係る検索システム100の格納フェーズおよび検索フェーズについて説明する。
図1は、本発明の第1の実施例に係る検索システム100の格納フェーズと検索フェーズのブロック図である。図示の検索システム100は、上述した本発明の第1の実施形態に係る検索システムに相当する検証システムである。検索システム100は、クライアント200とサーバ300とから構成される。クライアント200は、ユーザ端末とも呼ばれる。
【0041】
図示の検索システム100は、クライアント(ユーザ端末)200がサーバ300に複数のファイルを保管し、クライアント(ユーザ端末)200がキーワード検索によってサーバ300から所望のファイルの集合を取得するシステムである。
【0042】
尚、クライアント(ユーザ端末)200がサーバ300に格納されたファイルを更新(削除を含む)する更新フェーズのブロック図については、後で
図13を参照して説明する。
【0043】
クライアント200は、鍵生成部202と、鍵保持部204と、索引検証情報生成部206と、索引検証部208と、第1乃至第3の信号線(伝送線)210、212、214と、ファイル蓄積値計算部216と、Acc保持部218と、ファイル検証部220と、から構成されている。
【0044】
一方、サーバ300は、記憶領域302と、検索部304と、鍵保持部306と、ファイル検証情報生成部308と、から構成されている。
【0045】
鍵生成部202は、検証用の秘密鍵Kと秘密情報p,qと公開情報N,g,h
aとを生成する。クライアント200の鍵保持部204は、これら生成された検証用の秘密鍵Kと秘密情報p,qと公開情報N,g,h
aとを保持する。また、鍵保持部204に保持された公開情報N,g,h
aは、サーバ300の鍵保持部306へ送られる。したがって、サーバ300の鍵保持部306は、公開情報N,g,h
aを保持する。
【0046】
クライアント200は、複数のファイルをそれらのファイル番号と共に第1の信号線(伝送線)210を介してサーバ300へ送信する。サーバ300は、その送られてきた複数のファイルをそれらのファイル番号と共に記憶領域302に保管する。したがって、第1の信号線(伝送線)210は、サーバ300に複数のファイルをそれらのファイル番号と共に保管するファイル保管手段として働く。
【0047】
また、クライアント200は、索引(後述する)を生成し、生成した索引を第2の信号線(伝送線)212を介してサーバ300へ送信する。サーバ300は、その送られてきた索引を記憶領域302に記憶する。したがって、第2の信号線(伝送線)212は、生成した索引をサーバ300に保管する索引保管手段として働く。
【0048】
図2に索引の具体例を示す。索引は、キーワードと、それに対応するファイルの番号(ファイル番号)の対応表である。
【0049】
図示の例では、索引の番号1には、キーワードとして「情報工学」が記憶され、そのキーワードに対応するファイル番号として、「1」、「6」、「8」、「11」が記憶されている。また、索引の番号2には、キーワードとして「茨城大学」が記憶され、そのキーワードに対応するファイル番号として、「3」、「6」、「10」が記憶されている。
【0050】
図3を参照して、クライアント200の索引検証情報生成部206の動作について説明する。
【0051】
索引検証情報生成部206は、索引と検証用の秘密鍵Kとを読み込む(S102)。次に、索引検証情報生成部206は、各キーワードW
iについて以下の処理を実行する(S104)。ここでは、キーワードW
iを含むファイルの集合{D
j1,D
j2,・・・}に関し、その添字(すなわち、ファイル番号)の集合を{j1、j2、…}とする。この場合、索引検証情報生成部206は、検証用の秘密鍵Kを使い、生成用組(W
i、j1、j2、…)に対応する索引検証情報tag
iを下記の数式によって計算する。
tag
i=f
K(W
i、j1、j2、…)
ここで、fはMAC生成アルゴリズムまたは署名生成アルゴリズムから成る所定の生成アルゴリズムである。
【0052】
所定の生成アルゴリズムがMAC生成アルゴリズムから成るとする。この場合、索引検証情報生成部206は、検証用の秘密鍵KとしてMACの秘密鍵を使って、MAC生成アルゴリズムに従って、索引検証情報tag
iとして生成用組(W
i、j1、j2、…)に対する認証子を生成する。
【0053】
一方、所定のアルゴリズムが署名生成アルゴリズムから成るとする。この場合、索引検証情報生成部206は、検証用の秘密鍵Kとしてデジタル署名の秘密鍵を使って、署名生成アルゴリズムに従って、索引検証情報tag
iとして生成用組(W
i、j1、j2、…)に対するデジタル署名を生成する。
【0054】
索引検証情報生成部206は、計算して得られた索引検証情報(tag
1、tag
2、…)を出力する(ステップS106)。これら索引検証情報は、サーバ300に送られ、サーバ300は、これら索引検証情報を記憶領域302に記憶する。
【0055】
次に、
図4を参照して、索引検証情報生成部206の動作について具体例を挙げて説明する。ここでは、キーワードが索引番号2の「茨城大学」である場合を例に挙げて説明する。
【0056】
この場合、索引検証情報生成部206は、索引を参照して、キーワード「茨城大学」を含む、該当するファイルのファイル番号を選択する。この場合、索引番号2のファイル番号には、「3」、「6」、「10」が記憶されているので、索引検証情報生成部206は、該当ファイル番号として、「3」、「6」、「10」を選択する。
【0057】
そして、索引検証情報生成部206は、検証用の秘密鍵Kを使い、生成用組(茨城大学、3、6、10)に対する検証情報tag
2を、所定の生成アルゴリズムfに従って、下記数式で示されるように生成する。
tag
2=f
K(茨城大学、3、6、10)
【0058】
索引検証情報生成部206は、このようにして、キーワードi毎の索引検証情報tag
iを生成する。生成された索引検証情報tag
iは、サーバ300へ送られ、サーバ300は、送られてきた索引検証情報tag
iを記憶領域302に記憶する。
【0059】
図5を参照して、クライアント200のファイル蓄積値計算部216の動作について説明する。ここでは、ファイルの総数がnであるとする。
【0060】
先ず、ファイル蓄積値計算部216は、全ファイルの集合{(1,D
1),(2,D
2),・・・}および公開情報N,g、h
aを読み込む(ステップS202)。次に、ファイル蓄積値計算部216は、各ファイルD
i(1≦i≦n)について、素数p
iを下記の数式によって求める(ステップS204)。
p
i=prime(H(i,D
i))
ここで、Hはハッシュ関数である。
【0061】
そして、ファイル蓄積値計算部216は、ファイルの蓄積値Accを下記の数式によって計算する(ステップS206)。
Acc=g
p1p2p3...pnmod N
【0062】
ファイル蓄積値計算部216は、この計算して得られたファイルの蓄積値Accを出力する(ステップS208)。ファイルの蓄積値Accは、Acc保持部218で保持される。
【0063】
図6に、ファイル蓄積値計算部216の動作の具体例を示す。
【0064】
すなわち、ファイル蓄積値計算部216は、各ファイルD
1、D
2、・・・、D
nについて、それぞれ、素数p
1=prime(H(1,D
1))、p
2=prime(H(2,D
2))、・・・、p
n=prime(H(n,D
n))を求め、ファイルの蓄積値Acc=g
p1p2p3...pnmod Nを計算し、ファイルの蓄積値Accを出力する。
【0065】
検索時、クライアント200は、検索キーワードWを第3の信号線(伝送線)214を介してサーバ300に送る。サーバ300においては、検索キーワードWに応答して、検索部304は、その検索キーワードWを含むファイルおよびファイル番号の集合(i1,D
i1),(i2,D
i2),・・・と、その索引検証情報tagとをクライアント200へ返す。したがって、クライアント200は、ファイルおよびファイル番号の集合(i1,D
i1),(i2,D
i2),・・・とその索引検証情報tagとを取得する。すなわち、第2の信号線(伝送線)214は、検索キーワードWをサーバ300へ送って、サーバ300から、検索キーワードWを含むファイルおよびファイル番号の集合(i1,D
i1),(i2,D
i2),・・・と、その索引検証情報tagとを取得するファイル取得手段として働く。
【0066】
尚、以下の説明では、検索キーワードWを含むファイルおよびファイル番号の集合(i1,D
i1),(i2,D
i2),・・・を、単に、検索キーワードWを含むファイルの集合とも略称する。
【0067】
次に、
図7を参照して、クライアント200の索引検証部208の動作について説明する。
【0068】
索引検証部208は、先ず、検索キーワードWと、鍵保持部204に保持された検証用の秘密鍵Kとを読み込む(S302)。次に、検索検証部208は、サーバ300から、検索キーワードWを含むファイルの集合(i1,D
i1),(i2,D
i2),・・・と、その索引検証情報tagとを受け取る(ステップS304)。
【0069】
索引検証部208は、検証用の秘密鍵Kを使い、索引検証情報tagが検証用組(W、i1、i2、…)の索引検証情報であるか否かを、所定の検証アルゴリズムに従って、下記の数式に示されるように計算する(ステップS306)。
Verify
K(W、i1、i2、…、tag)=accept or reject
ここで、Verifyは、MAC検証アルゴリズムまたは署名検証アルゴリズムから成る所定の検証アルゴリズムである。
【0070】
所定の検証アルゴリズムがMAC検証アルゴリズムから成るとする。この場合、索引検証部208は、検証用の秘密鍵KとしてMACの秘密鍵を使って、MAC検証アルゴリズムに従って、取得した認証子が検証用組(W、i1、i2、…)の認証子であるか否かをチェックする。
【0071】
一方、所定の検証アルゴリズムが署名検証アルゴリズムから成るとする。この場合、索引検証部208は、デジタル署名の公開鍵を使って、署名検証アルゴリズムに従って、取得したデジタル署名が検証用組(W、i1、i2、…)のデジタル署名であるか否かをチェックする。
【0072】
索引検証部208は、acceptなら、accept(承認)を出力し(ステップS310)、rejectなら、reject(拒否)を出力する(ステップS312)。
【0073】
次に、
図8を参照して、索引検証部208の動作について具体例を挙げて説明する。ここでは、検索キーワードWが索引番号2の「茨城大学」である場合を例に挙げて説明する。
【0074】
この場合、索引検証部208は、鍵保持部204から検証用の秘密鍵Kを読み込み、検索キーワードとして「茨城大学」を読み込み、サーバ300から送られてきた、ファイルの集合(D
3、D
6、D
10)に対応するファイル番号の集合(3、6、10)と索引検証情報tagとを読み込む。
【0075】
そして、索引検証部208は、検証用の秘密鍵Kを使い、索引検証情報tagが検証用組(茨城大学、3、6、10)の索引検証情報であるか否かを、所定の検証アルゴリズムに従って、下記の数式に示されるように計算する。
Verify
K(茨城大学、3、6、10、tag)=accept or reject
【0076】
索引検証部208は、acceptなら、accept(承認)を出力し、rejectなら、reject(拒否)を出力する。
【0077】
図9を参照して、サーバ300のファイル検証情報生成部308の動作について説明する。
【0078】
先ず、ファイル検証情報生成部308は、検索部304からファイルの集合S={(j1,D
j1),(j2,D
j2),・・・}を読み込む(ステップS402)。引き続いて、ファイル検証情報生成部308は、記憶領域302から全ファイル{(1、D
1),(2,D
2),・・・}を読み込む(ステップS404)。そして、ファイル検証情報生成部308は、鍵保持部306から公開情報N,g,h
aを読み込む(ステップS406)。
【0079】
次に、ファイル検証情報生成部308は、ファイルの集合Sに含まれない各添字(i1,i2,・・・)について下記の数式に従って素数p
i(i=i1,i2,・・・)を計算し、さらに、ファイル検証情報πを下記の数式に従って計算する(ステップS408)。
p
i=prime(H(i,D
i))
π=g
pi1pi2・・・mod N
【0080】
そして、ファイル検証情報生成部308は、ファイル検証情報πを出力する(ステップS410)。このファイル検証情報πは、クライアント200へ送出される。
【0081】
図10に、ファイル検証情報生成部308の動作の具体例を示す。この例では、検索部304からファイルの集合S={(2,D
2),(4,D
4)}が出力される場合を示している。
【0082】
この場合、ファイル検索情報生成部308は、ファイル番号が2,4以外のすべてのファイルについて、p
1=prime(H(1,D
1)),p
3=prime(H(3,D
3)),p
5=prime(H(5,D
5)),p
6=prime(H(6,D
6)),・・・を計算し、ファイル検証情報π=g
p1p3p5p6・・・mod Nを計算して出力する。
【0083】
図11を参照して、クライアント200のファイル検証部220の動作について説明する。
【0084】
ファイル検証部220は、先ず、索引検証部208の結果がaccept(承認)であるか否かを判断する(ステップS502)。accept(承認)なら、ファイル検証部220はステップS504に進み、reject(拒否)なら、ファイル検証部220はreject(拒否)を出力する(ステップS514)。
【0085】
ステップS504において、ファイル検証部220は、サーバ300からファイルの集合S={(i1,D
i1),(i2,D
i2),・・・}と、そのファイル検証情報πを読み込む。そして、ファイル検証部220は、鍵保持部204から公開情報N,g,h
aを読み込む。
【0086】
引き続いて、ファイル検証部220は、ファイルの集合Sに含まれる各ファイルD
i(D
i1,D
i2,・・・)について、下記の数式に従って素数p
iを計算する(ステップS506)。
p
i=prime(H(i,D
i))
【0087】
次に、ファイル検証部220は、下記の数式に従ってファイルの蓄積値Aを計算する(ステップS508)。
A=π
pi1pi2・・・mod N
【0088】
そして、ファイル検証部220は、この計算したファイルの蓄積値Aが、Acc保持部218に保持されている全ファイルの蓄積値Accと等しいか否か判断する(ステップS510)。
【0089】
A=Accの場合(ステップS510のYes)、ファイル検証部220は、サーバ300から取得したファイルの集合S={(i1,D
i1),(i2,D
i2),・・・}を所望のファイルの集合として出力する(ステップS512)。A≠Accの場合(ステップS510のNo)、ファイル検証部220は、reject(拒否)を出力する(ステップS514)。
【0090】
図12に、ファイル検証部220の動作の具体例を示す。この例では、サーバ300からファイルの集合S={(2,D
2),(4,D
4)}を受け取った場合の例を示している。
【0091】
この場合、ファイル検証部220は、素数p
2=prime(H(2,D
2))およびp
4=prime(H(4,D
4))を計算した後、ファイルの蓄積値A=π
p2p4mod Nを計算し、計算したファイルの蓄積値Aが保持している全ファイルの蓄積値Accと等しいか否か判断し、等しければ、取得したファイルの集合D
2、D
4を所望のファイルの集合として得、等しくなければ、reject(拒否)する。
【0092】
図13を参照して、本発明の第1の実施例に係る検索システム100の更新フェーズについて説明する。
図13は、本発明の第1の実施例に係る検索システム100の更新フェーズのブロック図である。
【0093】
図13に示されるように、クライアント(ユーザ端末)200は、第4及び第5の信号線(伝送線)222、224と、Acc更新部226と、を更に有する。
【0094】
本例では、ファイル番号jを持つ現ファイルD
jを、新ファイルD
j’に更新するか又は削除する場合の例を示している。すなわち、本例では、ファイル番号jを持つファイルが、更新(又は削除)すべきファイルであり、現ファイルD
jが更新前のファイルである。
【0095】
この場合、クライアント200は、新ファイルD
j’又は「削除」を示すデータを第4の信号線(伝送線)222を介してサーバ300へ送信すると共に、ファイル番号jを第5の信号線(伝送線)224を介してサーバ300へ送信する。サーバ300は、その送られてきた新ファイルD
j’又は「削除」を示すデータをそのファイル番号jと共に記憶領域302に保管する。
【0096】
したがって、第4及び第5の信号線(伝送線)222、224の組み合わせは、更新(削除)すべきファイルをそのファイル番号jと共にサーバ300へ送って更新(削除)する更新手段として働く。
【0097】
サーバ300において、第5の信号線(伝送線)224を介してファイル番号jが渡されると、検索部304は、記憶領域302に既に格納されている現ファイル(更新前のファイル)D
jを検索して、そのファイル番号jが付加された現ファイル(j、D
j)をクライアント200へ返す。
【0098】
図14を参照して、クライアント200のAcc更新部226の動作について説明する。
【0099】
先ず、Acc更新部226は、ファイル番号j、現ファイルD
j、新ファイルD
j’(又は「削除」を示すデータ)を読み込み、Acc保持部218から全ファイルの蓄積値Accを読み込み、鍵保持部204から秘密情報p,qと公開情報N,g,h
aを読み込む(ステップS602)。
【0100】
引き続いて、Acc更新部226は、下記の数式に従って、x、x’、およびdを計算する(ステップS604)。
x=prime(H(j,D
j))
x’=prime(H(j,D
j’))
d=x’/x mod (p−1)(q−1)
【0101】
次に、Acc更新部226は、下記の数式に従って、新しい全ファイルの蓄積値Acc’を計算する(ステップS606)。
Acc’=Acc
dmod N
【0102】
最後に、Acc更新部226は、計算した新しい全ファイルの蓄積値Acc’をAcc保持部218に保持することにより、古い全ファイルの蓄積値Accを新しい全ファイルの蓄積値Acc’に更新する(ステップS608)。
【0103】
このように、ファイルを更新(又は削除)しようとする場合、クライアント200は、更新すべきファイル(又は「削除」を示すデータ)をそのファイル番号と共にサーバ300へ送出し、全ファイルの蓄積値を更新するだけで良いので、ファイルの更新を効率的に行なうことができる。
【0104】
次に、本第1の実施例の効果について説明する。
【0105】
第1の実施例の検索システム100の第1の効果は、サーバ300の不正(ファイルの削除、追加、改ざん、すり替え)を検出できるだけでなく、ファイルの更新(削除を含む)を効率的に行なうことができることである。その理由は、クライアント(ユーザ端末)200が各キーワードW
iと当該キーワードW
iを含む全てのファイルのファイル番号の集合(j1、j2、…)とを一組(生成用組)として、それに対する索引検証情報tag
iを生成し、生成した索引検証情報tag
iをサーバ300に保管しているからである。
【0106】
第1の実施例の検索システム100の第2の効果は、リプレイ・アタックを検出できることである。その理由は、RSA accumulatorを利用してファイルの蓄積値Accをチェックしているからである。
【0107】
尚、リプレイ・アタックを検出しない場合には、クライアント200から、ファイル蓄積値計算部216、Acc保持部218、ファイル検証部220、およびAcc更新部226を省略し、サーバ300から鍵保持部306およびファイル検証情報生成部308を省略することができる。
【0108】
また、上記本発明の第1の実施例に係る検索システム100は、検索方法として実現され得る。さらに、上記本発明の第1の実施例に係る検索システム100のうちのクライアント(ユーザ端末)200が実施する部分は、当該クライアント(ユーザ端末)200に含まれるメモリ(ROM等)に格納された検索プログラムによって実行されるようにしてもよい。
【実施例2】
【0109】
図15を参照して、本発明の第2の実施例に係る検索システム100Aの格納フェーズと検索フェーズについて説明する。
図15は、本発明の第2の実施例に係る検索システム100Aの格納フェーズと検索フェーズのブロック図である。図示の検索システム100Aは、上述した本発明の第2の実施形態に係る検索システムに相当する検索システムである。検索システム100Aは、クライアント200Aとサーバ300Aとから構成される。クライアント200Aは、ユーザ端末とも呼ばれる。
【0110】
検索システム100Aは、クライアント(ユーザ端末)200Aがサーバ300Aに複数の暗号ファイルを保管し、クライアント(ユーザ端末)200Aがキーワード検索によってサーバ300Aから所望のファイルの集合を取得するシステムである。
【0111】
尚、クライアント(ユーザ端末)200Aがサーバ300Aに格納された暗号ファイルを更新する更新フェーズのブロック図については、後で
図28を参照して説明する。
【0112】
クライアント200Aは、鍵生成部202Aと、鍵保持部204Aと、索引検証情報生成部206Aと、索引検証部208Aと、ファイル暗号化部210Aと、索引暗号化部212Aと、キーワード暗号化部214Aと、ファイル蓄積値計算部216Aと、Acc保持部218Aと、ファイル検証部220Aと、から構成されている。
【0113】
一方、サーバ300Aは、記憶領域302Aと、暗号検索部304Aと、鍵保持部306Aと、ファイル検証情報生成部308Aと、から構成されている。
【0114】
鍵生成部202Aは、暗号化の秘密鍵K
eと、検証用の秘密鍵Kと、所定の秘密鍵K0、K1と、秘密情報p,qと、公開情報N,g,h
aとを生成する。鍵保持部204Aは、この生成された暗号化の秘密鍵K
eと、検証用の秘密鍵Kと、所定の秘密鍵K0、K1と、秘密情報p,qと公開情報N,g,h
aとを保持する。また、鍵保持部204Aに保持された公開情報N,g,h
aは、サーバ300Aの鍵保持部306Aへ送られる。したがって、サーバ300Aの鍵保持部306Aは、公開情報N,g,h
aを保持する。
【0115】
ファイル暗号化部210Aは、暗号化の秘密鍵K
eを使い、複数のファイルの暗号文である暗号ファイル{E(D
1)、E(D
2)、…}を計算する。これら暗号ファイル{E(D
1)、E(D
2)、…}は、それらのファイル番号と共にサーバ300Aへ送られ、サーバ300Aは、その送られてきた暗号ファイル{E(D
1)、E(D
2)、…}をそれらのファイル番号と共に記憶領域302Aに記憶する。したがって、ファイル暗号化部210Aは、暗号化の秘密鍵K
eを使って複数のファイルをそれぞれ暗号化し、複数の暗号ファイルをそれらのファイル番号と共にサーバ300Aに保管する暗号ファイル保管手段として働く。
【0116】
また、クライアント200Aは、索引を生成する。索引の具体例は、前述した
図2と同一である。前述したように、索引は、キーワードと、それに対応するファイルの番号(ファイル番号)の対応表である。
【0117】
図2に示されるように、図示の例では、索引の番号1には、キーワードとして「情報工学」が記憶され、そのキーワードに対応するファイル番号として、「1」、「6」、「8」、「11」が記憶されている。また、索引の番号2には、キーワードとして「茨城大学」が記憶され、そのキーワードに対応するファイル番号として、「3」、「6」、「10」が記憶されている。
【0118】
索引暗号化部212Aは、所定の秘密鍵K0、K1を使い、生成した索引を暗号化して、暗号化索引をサーバ300Aへ送信する。サーバ300Aは、その送られてきた暗号化索引を記憶領域302Aに記憶する。したがって、索引暗号化部212Aは、生成した索引を暗号化して、暗号化索引をサーバ300Aへ保管する暗号化索引保管手段として働く。
【0119】
図16を参照して、クライアント200Aの索引暗号化部212Aの動作について説明する。
【0120】
ここでは、索引暗号化部212Aの動作について説明する前に、先ず、記法について説明する。
【0121】
PRF
k(・)は擬似ランダム関数を表す。ただし、kは鍵である。
[PRF
k(W)]
uにより、PRF
k(W)の先頭のuビットを表す。
文書(ファイル)の総数をnとする。
キーワードW
iがファイルD
jに含まれるなら、e
i,j=1と表し、そうでなければ、e
i,j=0と表す。
【0122】
先ず、索引暗号化部212Aは、索引と所定の秘密鍵K0、K1とを読み込む(ステップS702)。
【0123】
引き続いて、索引暗号化部212Aは、各キーワードWiについて、下記の数式で表される、label
i、PAD
i、およびOTP
iを計算する(ステップS704)。
label
i=[PRF
K0(W
i)]
128
PAD
i=[PRF
K1(W
i)]
n
OTP
i=PAD
i+(e
i,1,・・・、e
i,n)mod 2
ここで、label
iは、キーワードW
iの暗号文を表し、OTP
iは、キーワードW
iを含むファイルのファイル番号の暗号文を表す。
【0124】
そして、索引暗号化部212Aは、暗号化索引={(label
1,OTP
1),(label
2,OTP
2),・・・}を出力する(ステップS706)。
【0125】
このように、索引暗号化部212Aは、キーワードW
iとそのキーワードW
iに対応するファイルのファイル番号との対応表である索引を、所定の秘密鍵K0,K1を使って暗号化し、キーワードW
iの暗号文label
iとそのキーワードW
iを含むファイルのファイル番号の暗号文OTP
iとから成る暗号化索引をサーバ300Aに保管する暗号化索引保管手段として働く。
【0126】
次に、
図17を参照して、索引暗号化部212Aの動作について具体例を挙げて説明する。ここでは、ファイル(文書)の総数n=12で、キーワードが索引番号2の「茨城大学」である場合を例に挙げて説明する。したがって、この場合、索引番号2のファイル番号には、「3」、「6」、「10」が記憶されている。
【0127】
この場合、索引暗号化部212Aは、キーワードW
2の暗号文label
2と、ファイル番号の暗号文OTP
2とを計算する。
【0128】
ただし、キーワードW
2の暗号文label
2は、下記の数式で表される。
label
2=[PRF
K0(茨城大学)]
128
【0129】
また、(e
2,1,・・・,e
2,12)は、(001001000100)に等しい。また、PAD
2は下記の数式で表され、ここで(110101011110)であったとする。
PAD
2=[PRF
K1(茨城大学)]
12
=(110101011110)
【0130】
よって、ファイル番号の暗号文OTP
2は、それらの排他的論理和(xor)であるので、本例では、下記の数式で表される。
OTP
2=(111100011010)
【0131】
クライアント200Aの索引検証情報生成部206Aの動作は、
図3および
図4に示したものと同様であるので、重複を避けるためにその説明を省略する。
【0132】
図18を参照して、クライアント200Aのファイル蓄積値計算部216Aの動作について説明する。
【0133】
先ず、ファイル蓄積値計算部216Aは、全暗号ファイルの集合{(1、E(D
1)),(2,E(D
2)),・・・}および公開情報N,g、h
aを読み込む(ステップS202A)。次に、ファイル蓄積値計算部216Aは、各暗号ファイルE(D
i)(1≦i≦n)について、素数p
iを下記の数式によって求める(ステップS204A)。
p
i=prime(H(i,E(D
i)))
ここで、Hはハッシュ関数である。
【0134】
そして、ファイル蓄積値計算部216Aは、ファイルの蓄積値Accを下記の数式によって計算する(ステップS206A)。
Acc=g
p1p2p3...pnmod N
【0135】
ファイル蓄積値計算部216Aは、この計算して得られたファイルの蓄積値Accを出力する(ステップS208A)。ファイルの蓄積値Accは、Acc保持部218Aで保持される。
【0136】
図19に、ファイル蓄積値計算部216Aの動作の具体例を示す。
【0137】
すなわち、ファイル蓄積値計算部216は、各暗号ファイルE(D
1)、E(D
2)、・・・、E(D
n)について、それぞれ、素数p
1=prime(H(1,E(D
1)))、p
2=prime(H(2,E(D
2)))、・・・、p
n=prime(H(n,E(D
n)))を求め、ファイルの蓄積値Acc=g
p1p2p3...pnmod Nを計算し、ファイルの蓄積値Accを出力する。
【0138】
検索時、クライアント200Aでは、キーワード暗号化部214Aが、所定の秘密鍵K0、K1を使って検索キーワードWを暗号化し、暗号検索キーワード(label
*,PAD
*)をサーバ300Aに送る。
【0139】
図20を参照して、クライアント200Aのキーワード暗号化部214Aの動作について説明する。
【0140】
キーワード暗号化部214Aは、先ず、検索キーワードWと所定の秘密鍵K0,K1とを読み込む(ステップS802)。引き続いて、キーワード暗号化部214Aは、下記の数式に従って、暗号検索キーワード(label
*,PAD
*)を計算する(ステップS804)。
label
*=[PRF
K0(W)]
128
PAD
*=[PRF
K1(W)]
n
【0141】
そして、キーワード暗号化部214Aは、計算により得られた暗号検索キーワード(label
*,PAD
*)をサーバ300Aへ送信する(ステップS806)。
【0142】
図21に、キーワード暗号化部214Aの動作の具体例を示す。本例では、検索キーワードWが「茨城大学」であって、ファイルの総数nが12に等しい場合の例を示している。
【0143】
この場合、キーワード暗号化部214Aは、下記の数式に従って、暗号検索キーワード(label
*,PAD
*)を計算する。
label
*=[PRF
K0(茨城大学)]
128
PAD
*=[PRF
K1(茨城大学)]
12
(=110101011110)
【0144】
キーワード暗号化部214Aは、計算により得られた暗号検索キーワード(label
*,PAD
*)をサーバ300Aへ送信する。
【0145】
サーバ300Aにおいては、暗号検索キーワード(label
*,PAD
*)に応答して、暗号検索部304Aは、その検索キーワードWを含む暗号ファイルの集合{(j1,E(D
j1)),(j2,E(D
j2)),・・・}とその索引検証情報tag
jとをクライアント200Aへ返す。
【0146】
図22を参照して、サーバ300Aの暗号検索部304Aの動作について説明する。
【0147】
先ず、暗号検索部304Aは、クライアント200Aから送出されてきた暗号検索キーワード(label
*,PAD
*)を検索用データとして読み込む(ステップS902)。
【0148】
引き続いて、暗号検索部304Aは、記憶領域302Aに格納されている暗号化索引の中からlabel
*=label
jとなるjを見つけて、(label
j,OTP
j,tag
j)を見つける(ステップS904)。
【0149】
次に、暗号検索部304Aは、下記の数式を計算する(ステップS906)。
(e
1,・・・,e
n)=OTP
j+PAD
*mod 2
【0150】
そして、暗号検索部304Aは、e
j=1となるjの集合{j1,j2,・・・}を求める(ステップS908)。
【0151】
次に、暗号検索部304Aは、検索キーワードWを含む暗号ファイルの集合{(j1,E(D
j1)),(j2,E(D
j2)),・・・}とその索引検証情報tag
jとを出力する(ステップS910)。
【0152】
したがって、クライアント200Aは、暗号ファイルの集合{(j1,E(D
j1)),(j2,E(D
j2)),・・・}とその索引検証情報tag
jとを取得する。
【0153】
図23に暗号検索部304Aの動作の具体例を示す。本例では、jが2に等しく、nが12に等しい場合の例を示している。
【0154】
j=2であるので、暗号検索部304Aは、暗号化索引の中から(label
2,OTP
2,tag
2)を見つける。そして、暗号検索部304Aは、下記の数式を計算する。
(e
1,・・・,e
12)=OTP
2+PAD
*mod 2
【0155】
本例では、PAD
*およびOTP
2は、それぞれ、下記の数式に等しいとする。
PAD
*=(110101011110)
OTP
2=(111100011010)
【0156】
この場合、(e
1,・・・,e
12)は、それらの排他的論理和xorであるので、下記の数式で表される。
(e
1,・・・,e
12)=(001001000100)
【0157】
よって、e
3=1、e
6=1、e
10=1であるので、該当する文書番号(ファイル番号は、(3,6,10)となる。
【0158】
したがって、暗号検索部304Aは、検索キーワードWを含む暗号ファイルの集合{(3,E(D
3)),(6,E(D
6)),(10,E(D
10))}とその索引検証情報tag
2とを出力する。
【0159】
上述したように、キーワード暗号化部214Aは、所定の秘密鍵K0、K1を使って検索キーワードWを暗号化して得られる暗号検索キーワード(label
*,PAD
*)をサーバ300Aへ送って、サーバ300Aから、暗号ファイルの集合{(j1,E(D
j1)),(j2,E(D
j2)),・・・}と検索キーワードWに対応する索引検証情報tag
jとを取得する暗号ファイル取得手段として働く。
【0160】
クライアント200Aの索引検証部208Aの動作は、
図7および
図8と実質的に同様なので、その詳細な動作説明については省略する。相違点は、
図7のステップS304における「ファイルの集合」が、「暗号ファイルの集合」に変更されていることだけである。
【0161】
図24を参照して、サーバ300Aのファイル検証情報生成部308Aの動作について説明する。
【0162】
先ず、ファイル検証情報生成部308Aは、暗号検索部304Aから暗号ファイルの集合S={(j1,E(D
j1)),(j2,E(D
j2)),・・・}を読み込む(ステップS402A)。引き続いて、ファイル検証情報生成部308Aは、記憶領域302Aから全暗号ファイル{(1、E(D
1)),(2,E(D
2)),・・・}を読み込む(ステップS404A)。そして、ファイル検証情報生成部308Aは、鍵保持部306Aから公開情報N,g,h
aを読み込む(ステップS406A)。
【0163】
次に、ファイル検証情報生成部308Aは、暗号ファイルの集合Sに含まれない各添字(すなわち、ファイル番号)(i1,i2,・・・)について下記の数式に従って素数p
i(i=i1,i2,・・・)を計算し、さらに、ファイル検証情報πを下記の数式に従って計算する(ステップS408A)。
p
i=prime(H(i,E(D
i)))
π=g
pi1pi2・・・mod N
【0164】
そして、ファイル検証情報生成部308Aは、ファイル検証情報πを出力する(ステップS410A)。このファイル検証情報πは、クライアント200Aへ送出される。
【0165】
図25に、ファイル検証情報生成部308Aの動作の具体例を示す。この例では、暗号検索部304Aから暗号ファイルの集合S={(2,E(D
2)),(4,E(D
4))}が出力された場合の例を示している。
【0166】
この場合、ファイル検索情報生成部308Aは、ファイル番号が2,4以外のすべての暗号ファイルについて、p
1=prime(H(1,E(D
1))),p
3=prime(H(3,E(D
3))),p
5=prime(H(5,E(D
5))),p
6=prime(H(6,E(D
6))),・・・を計算し、ファイル検証情報π=g
p1p3p5p6・・・mod Nを計算して出力する。
【0167】
図26を参照して、クライアント200Aのファイル検証部220Aの動作について説明する。
【0168】
ファイル検証部220Aは、先ず、索引検証部208Aの結果がaccept(承認)であるか否かを判断する(ステップS502A)。accept(承認)なら、ファイル検証部220AはステップS504Aに進み、reject(拒否)なら、ファイル検証部220Aはreject(拒否)を出力する(ステップS514A)。
【0169】
ステップS504Aにおいて、ファイル検証部220Aは、サーバ300Aから暗号ファイルの集合S={(i1,E(D
i1)),(i2,E(D
i2)),・・・}と、そのファイル検証情報πを読み込む。そして、ファイル検証部220Aは、鍵保持部204Aから公開情報N,g,h
aを読み込む。
【0170】
引き続いて、ファイル検証部220Aは、暗号ファイルの集合Sに含まれる各暗号ファイルE(D
i)(E(D
i1),E(D
i2),・・・)について、下記の数式に従って素数p
iを計算する(ステップS506A)。
p
i=prime(H(i,E(D
i)))
【0171】
次に、ファイル検証部220Aは、下記の数式に従ってファイルの蓄積値Aを計算する(ステップS508A)。
A=π
pi1pi2・・・mod N
【0172】
そして、ファイル検証部220Aは、この計算したファイルの蓄積値Aが、Acc保持部218Aに保持されている全ファイルの蓄積値Accと等しいか否か判断する(ステップS510A)。
【0173】
A=Accの場合(ステップS510AのYes)、ファイル検証部220Aは、サーバ300Aから取得した暗号ファイルの集合S={(i1,E(D
i1)),(i2,E(D
i2)),・・・}を復号して、所望のファイルの集合{(i1,D
i1),(i2,D
i2),・・・}として出力する(ステップS512A)。A≠Accの場合(ステップS510AのNo)、ファイル検証部220Aは、reject(拒否)を出力する(ステップS514A)。
【0174】
図27に、ファイル検証部220Aの動作の具体例を示す。この例では、サーバ300Aから暗号ファイルの集合S={(2,E(D
2)),(4,E(D
4))}を受け取った場合を示している。
【0175】
この場合、ファイル検証部220Aは、素数p
2=prime(H(2,E(D
2)))およびp
4=prime(H(4,E(D
4)))を計算した後、ファイルの蓄積値A=π
p2p4mod Nを計算し、計算したファイルの蓄積値Aが保持している全ファイルの蓄積値Accと等しいか否か判断し、等しければ、取得した暗号ファイルの集合E(D
2)、E(D
4)を復号して、所望のファイルの集合D
2、D
4を得、等しくなければ、reject(拒否)する。
【0176】
図28を参照して、本発明の第2の実施例に係る検索システム100Aの更新フェーズについて説明する。
図28は、本発明の第2の実施例に係る検索システム100Aの更新フェーズのブロック図である。
【0177】
図28に示されるように、クライアント(ユーザ端末)200Aは、第1及び第2の信号線(伝送線)222A、224Aと、Acc更新部226Aと、を更に有する。
【0178】
本例では、ファイル番号jを持つ現暗号ファイルE(D
j)を、新暗号ファイルE(D
j’)に更新するか又は削除する場合を示している。すなわち、本例では、ファイル番号jを持つ暗号ファイルが、更新(又は削除)すべき暗号ファイルであり、現暗号ファイルE(D
j)が更新前の暗号ファイルである。
【0179】
この場合、クライアント200Aは、新暗号ファイルE(D
j’)又は「削除」を示すデータを第1の信号線(伝送線)222Aを介してサーバ300Aへ送信すると共に、ファイル番号jを第2の信号線(伝送線)224Aを介してサーバ300Aへ送信する。サーバ300Aは、その送られてきた新暗号ファイルE(D
j’)又は「削除」を示すデータをそのファイル番号jと共に記憶領域302Aに保管する。
【0180】
したがって、第1及び第2の信号線(伝送線)222A、224Aの組み合わせは、更新(削除)すべき暗号ファイルをそのファイル番号jと共にサーバ300Aへ送って更新(削除)する更新手段として働く。
【0181】
尚、新暗号ファイルE(D
j’)は、
図15に示すファイル暗号化部210Aを使用して、新ファイルD
j’を暗号化することによって生成してよい。
【0182】
サーバ300Aにおいて、第2の信号線(伝送線)224Aを介してファイル番号jが渡されると、暗号検索部304Aは、記憶領域302Aに既に格納されている現暗号ファイル(更新前の暗号ファイル)E(D
j)を検索して、そのファイル番号jが付加された現暗号ファイル(j、E(D
j))をクライアント200Aへ返す。
【0183】
図29を参照して、クライアント200AのAcc更新部226Aの動作について説明する。
【0184】
先ず、Acc更新部226Aは、ファイル番号j、現暗号ファイルE(D
j)、新暗号ファイルE(D
j’)(又は「削除」を示すデータ)を読み込み、Acc保持部218Aから全暗号ファイルの蓄積値Accを読み込み、鍵保持部204Aから秘密情報p,qと公開情報N,g,h
aを読み込む(ステップS602A)。
【0185】
引き続いて、Acc更新部226Aは、下記の数式に従って、x、x’、およびdを計算する(ステップS604A)。
x=prime(H(j,E(D
j)))
x’=prime(H(j,E(D
j’)))
d=x’/x mod (p−1)(q−1)
【0186】
次に、Acc更新部226Aは、下記の数式に従って、新しい全暗号ファイルの蓄積値Acc’を計算する(ステップS606A)。
Acc’=Acc
dmod N
【0187】
最後に、Acc更新部226Aは、計算した新しい全暗号ファイルの蓄積値Acc’をAcc保持部218Aに保持することにより、古い全暗号ファイルの蓄積値Accを新しい全暗号ファイルの蓄積値Acc’に更新する(ステップS608A)。
【0188】
このように、暗号ファイルを更新(又は削除)しようとする場合、クライアント200Aは、更新すべき暗号ファイル(又は「削除」を示すデータ)をそのファイル番号と共にサーバ300Aへ送出し、全暗号ファイルの蓄積値を更新するだけで良いので、暗号ファイルの更新(削除)を効率的に行なうことができる。
【0189】
次に、本第2の実施例の効果について説明する。
【0190】
第2の実施例の検索システム100Aの第1の効果は、サーバの不正(ファイルの削除、追加、改ざん、すり替え)を検出ことができるだけでなく、ファイルの更新(削除を含む)を効率的に行うことができることである。その理由は、クライアント(ユーザ端末)200Aが各キーワードW
iと当該キーワードW
iを含む全てのファイルの集合を暗号化して得られる暗号ファイル{E(D
j1)、E(D
j2)、…}のファイル番号の集合(j1、j2、…)とを一組(生成用組)として、それに対する索引検証情報tag
iを生成し、生成した索引検証情報tag
iをサーバ300Aに保管しているからである。
【0191】
第2の実施例の検索システム100Aの第2の効果は、リプレイ・アタックを検出できることである。その理由は、RSA accumulatorを利用してファイルの蓄積値Accをチェックしているからである。
【0192】
尚、リプレイ・アタックを検出しない場合には、クライアント200Aから、ファイル蓄積値計算部216A、Acc保持部218A、ファイル検証部220A、およびAcc更新部226Aを省略し、サーバ300Aから鍵保持部306Aおよびファイル検証情報生成部308Aを省略することができる。
【0193】
また、上記本発明の第2の実施例に係る検索システム100Aは、検索方法として実現され得る。さらに、上記本発明の第2の実施例に係る検索システム100Aのうちのクライアント(ユーザ端末)200Aが実施する部分は、当該クライアント(ユーザ端末)200Aに含まれるメモリ(ROM等)に格納された検索プログラムによって実行されるようにしてもよい。
【0194】
以上、実施形態(実施例)を参照して本発明を説明したが、本発明は上記実施形態(実施例)に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0195】
上記の実施形態(実施例)の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0196】
(付記1) ユーザ端末がサーバに複数のファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、ファイルの更新をも行う検索システムであって、前記ユーザ端末は、
前記複数のファイルをそれらのファイル番号と共に前記サーバに保管するファイル保管手段と、
キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、前記サーバに保管する索引保管手段と、
前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成し、該生成した索引検証情報を前記サーバに保管する索引検証情報生成部と、
検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルおよび当該ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得するファイル取得手段と、
該取得した索引検証情報が、前記検索キーワードと前記取得したファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認し、そうでなければ拒否する索引検証部と、
更新すべきファイルをそのファイル番号と共に前記サーバへ送って更新する更新手段と、
を有する検索システム。
【0197】
(付記2) 前記更新すべきファイルが削除を示すデータから成る、付記1に記載の検索システム。
【0198】
(付記3) 前記ユーザ端末は、
秘密鍵と所定の公開情報とを保持するユーザ鍵保持部と、
前記所定の公開情報と前記複数のファイルとから全ファイルの蓄積値を計算するファイル蓄積値計算部と、
前記全ファイルの蓄積値を保持する蓄積値保持部と、
を更に備え、
前記サーバは、
前記所定の公開情報を保持するサーバ鍵保持部と、
前記所定の公開情報に基づいて、当該サーバに保管された全ファイルの内、前記検索キーワードを含むファイルの集合以外のファイルを使用して、ファイル検証情報を生成して前記ユーザ端末へ送出するファイル検証情報生成部と、
を備え、
前記ユーザ端末は、
前記索引検証部で承認された場合、前記所定の公開情報に基づいて、前記取得したファイルの集合と前記ファイル検証情報とを使用して、ファイルの蓄積値を計算し、該計算したファイルの蓄積値と前記保持した全ファイルの蓄積値とが等しければ、前記取得したファイルの集合を前記所望のファイルの集合として得、そうでなければ拒否するファイル検証部を更に有する、
付記1又は2に記載の検索システム。
【0199】
(付記4) 前記ユーザ端末は、
前記所定の公開情報に基づいて、前記更新すべきファイル、更新前のファイル、そのファイル番号、および前記蓄積値保持部に保持された全ファイルの蓄積値を使用して、新しい全ファイルの蓄積値を計算し、該計算した新しい全ファイルの蓄積値を前記蓄積
値保持部に保持する蓄積値更新部を更に有する、
付記3に記載の検索システム。
【0200】
(付記5) 前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記索引検証情報生成部は、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記索引検証情報として前記生成用組に対するデジタル署名を生成し、
前記索引検証部は、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックする、
付記1乃至4のいずれか1つに記載の検索システム。
【0201】
(付記6) 前記所定の生成アルゴリズムがMAC(Message Authentication Code)生成アルゴリズムから成り、
前記所定の検証アルゴリズムがMAC検証アルゴリズムから成り、
前記索引検証情報生成部は、MACの秘密鍵を使って、前記MAC生成アルゴリズムに従って、前記索引検証情報として前記生成用組に対する認証子を生成し、
前記索引検証部は、前記MACの秘密鍵を使って、前記MAC検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックする、
付記1乃至4のいずれか1つに記載の検索システム。
【0202】
(付記7) ユーザ端末がサーバに複数のファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、ファイルの更新をも行う検索方法であって、
前記ユーザ端末が、前記複数のファイルをそれらのファイル番号と共に前記サーバに保管するステップと、
前記ユーザ端末が、キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、前記サーバに保管するステップと、
前記ユーザ端末が、前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成するステップと、
前記ユーザ端末が、前記生成した索引検証情報を前記サーバに保管するステップと、
前記ユーザ端末が、検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルおよび当該ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得するステップと、
前記ユーザ端末が、前記取得した索引検証情報が、前記検索キーワードと前記取得したファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックするステップと、
前記ユーザ端末が、チェックの結果が正しければ承認し、そうでなければ拒否するステップと、
前記ユーザ端末が、更新すべきファイルをそのファイル番号と共に前記サーバへ送って更新するステップと、
を含む検索方法。
【0203】
(付記8) 前記更新すべきファイルが削除を示すデータから成る、付記7に記載の検索方法。
【0204】
(付記9) サーバに複数のファイルを保管し、キーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、ファイルの更新をも行う処理を、コンピュータであるユーザ端末に実行させる検索プログラムであって、前記コンピュータに、
前記複数のファイルをそれらのファイル番号と共に前記サーバに保管する手順と、
キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、前記サーバに保管する手順と、
前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成する手順と、
前記生成した索引検証情報を前記サーバに保管する手順と、
検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルおよび当該ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得する手順と、
前記取得した索引検証情報が、前記検索キーワードと前記取得したファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックする手順と、
チェックの結果が正しければ承認し、そうでなければ拒否する手順と、
更新すべきファイルをそのファイル番号と共に前記サーバへ送って更新する手順と、
を実行させるための検索プログラム。
【0205】
(付記10) 前記更新すべきファイルが削除を示すデータから成る、付記9に記載の検索プログラム。
【0206】
(付記11) ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、暗号ファイルの更新をも行う検索システムであって、前記ユーザ端末は、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルをそれらの暗号ファイルのファイル番号と共に前記サーバに保管する暗号ファイル保管手段と、
キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、所定の秘密鍵を使って暗号化し、前記キーワードの暗号文と該キーワードを含むファイルのファイル番号の暗号文とから成る暗号化索引を前記サーバに保管する暗号化索引保管手段と、
前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成し、該生成した索引検証情報を前記サーバに保管する索引検証情報生成部と、
前記所定の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルおよび当該暗号ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得する暗号ファイル取得手段と、
該取得した索引検証情報が、前記検索キーワードと前記取得した暗号ファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認し、そうでなければ拒否する索引検証部と、
更新すべきファイルを前記暗号化の秘密鍵を使って暗号化して得られる、更新すべき暗号ファイルをそのファイル番号と共に前記サーバに送って更新する更新手段と、
を有する検索システム。
【0207】
(付記12) 前記更新すべき暗号ファイルが削除を示すデータから成る、付記11に記載の検索システム。
【0208】
(付記13) 前記ユーザ端末は、
前記暗号化の秘密鍵と前記所定の秘密鍵と所定の公開情報とを保持するユーザ鍵保持部と、
前記所定の公開情報と前記複数の暗号ファイルとから全暗号ファイルの蓄積値を計算するファイル蓄積値計算部と、
前記全暗号ファイルの蓄積値を保持する蓄積値保持部と、
を更に備え、
前記サーバは、
前記所定の公開情報を保持するサーバ鍵保持部と、
前記所定の公開情報に基づいて、当該サーバに保管された全暗号ファイルの内、前記暗号検索キーワードを含む暗号ファイルの集合以外の暗号ファイルを使用して、ファイル検証情報を生成して前記ユーザ端末へ送出するファイル検証情報生成部と、
を備え、
前記ユーザ端末は、
前記索引検証部で承認された場合、前記所定の公開情報に基づいて、前記取得した暗号ファイルの集合と前記ファイル検証情報とを使用して、暗号ファイルの蓄積値を計算し、該計算した暗号ファイルの蓄積値と前記保持した全暗号ファイルの蓄積値とが等しければ、前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否するファイル検証部を更に有する、
付記11又は12に記載の検索システム。
【0209】
(付記14) 前記ユーザ端末は、
前記所定の公開情報に基づいて、前記更新すべき暗号ファイル、更新前の暗号ファイル、そのファイル番号、および前記蓄積値保持部に保持された全暗号ファイルの蓄積値を使用して、新しい全暗号ファイルの蓄積値を計算し、該計算した新しい全暗号ファイルの蓄積値を前記蓄積
値保持部に保持する蓄積値更新部を更に有する、
付記13に記載の検索システム。
【0210】
(付記15) 前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記索引検証情報生成部は、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記索引検証情報として前記生成用組に対するデジタル署名を生成し、
前記索引検証部は、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックする、
付記11乃至14のいずれか1つに記載の検索システム。
【0211】
(付記16) 前記所定の生成アルゴリズムがMAC(Message Authentication Code)生成アルゴリズムから成り、
前記所定の検証アルゴリズムがMAC検証アルゴリズムから成り、
前記索引検証情報生成部は、MACの秘密鍵を使って、前記MAC生成アルゴリズムに従って、前記索引検証情報として前記生成用組に対する認証子を生成し、
前記索引検証部は、前記MACの秘密鍵を使って、前記MAC検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックする、
付記11乃至14のいずれか1つに記載の検索システム。
【0212】
(付記17) ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、暗号ファイルの更新をも行う検索方法であって、
前記ユーザ端末が、暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルをそれらの暗号ファイルのファイル番号と共に前記サーバに保管するステップと、
前記ユーザ端末が、キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、所定の秘密鍵を使って暗号化し、前記キーワードの暗号文と該キーワードを含むファイルのファイル番号の暗号文とから成る暗号化索引を前記サーバに保管するステップと、
前記ユーザ端末が、前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成するステップと、
前記ユーザ端末が、前記生成した索引検証情報を前記サーバに保管するステップと、
前記ユーザ端末が、前記所定の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルおよび当該暗号ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得するステップと、
前記ユーザ端末が、前記取得した索引検証情報が、前記検索キーワードと前記取得した暗号ファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックするステップと、
前記ユーザ端末が、チェックの結果が正しければ承認し、そうでなければ拒否するステップと、
前記ユーザ端末が、更新すべきファイルを前記暗号化の秘密鍵を使って暗号化して得られる、更新すべき暗号ファイルをそのファイル番号と共に前記サーバに送って更新するステップと、
を含む検索方法。
【0213】
(付記18) 前記更新すべき暗号ファイルが削除を示すデータから成る、付記17に記載の検索方法。
【0214】
(付記19) サーバに複数の暗号ファイルを保管し、キーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、暗号ファイルの更新をも行う処理を、コンピュータであるユーザ端末に実行させる検索プログラムであって、前記コンピュータに、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルをそれらの暗号ファイルのファイル番号と共に前記サーバに保管する手順と、
キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、所定の秘密鍵を使って暗号化し、前記キーワードの暗号文と該キーワードを含むファイルのファイル番号の暗号文とから成る暗号化索引を前記サーバに保管する手順と、
前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成する手順と、
前記生成した索引検証情報を前記サーバに保管する手順と、
前記所定の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルおよび該暗号ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得する手順と、
前記取得した索引検証情報が、前記検索キーワードと前記取得した暗号ファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックする手順と、
チェックの結果が正しければ承認し、そうでなければ拒否する手順と、
更新すべきファイルを前記暗号化の秘密鍵を使って暗号化して得られる、更新すべき暗号ファイルをそのファイル番号と共に前記サーバに送って更新する手順と、
を実行させるための検索プログラム。
【0215】
(付記20) 前記更新すべき暗号ファイルが削除を示すデータから成る、付記19に記載の検索プログラム。