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

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

▶ 国立大学法人茨城大学の特許一覧

特許6095057検索システム、検索方法および検索プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6095057
(24)【登録日】2017年2月24日
(45)【発行日】2017年3月15日
(54)【発明の名称】検索システム、検索方法および検索プログラム
(51)【国際特許分類】
   G06F 17/30 20060101AFI20170306BHJP
【FI】
   G06F17/30 120A
   G06F17/30 414Z
【請求項の数】10
【全頁数】39
(21)【出願番号】特願2013-45246(P2013-45246)
(22)【出願日】2013年3月7日
(65)【公開番号】特開2014-174661(P2014-174661A)
(43)【公開日】2014年9月22日
【審査請求日】2016年2月4日
(73)【特許権者】
【識別番号】504203572
【氏名又は名称】国立大学法人茨城大学
(74)【代理人】
【識別番号】100077838
【弁理士】
【氏名又は名称】池田 憲保
(74)【代理人】
【識別番号】100129023
【弁理士】
【氏名又は名称】佐々木 敬
(72)【発明者】
【氏名】黒澤 馨
(72)【発明者】
【氏名】大瀧 保広
【審査官】 吉田 誠
(56)【参考文献】
【文献】 特開2010−205258(JP,A)
【文献】 特開2010−262455(JP,A)
【文献】 特開2010−164874(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
ユーザ端末がサーバに複数のファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、ファイルの更新をも行う検索システムであって、前記ユーザ端末は、
前記複数のファイルをそれらのファイル番号と共に前記サーバに保管するファイル保管手段と、
キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、前記サーバに保管する索引保管手段と、
前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成し、該生成した索引検証情報を前記サーバに保管する索引検証情報生成部と、
検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルおよび当該ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得するファイル取得手段と、
該取得した索引検証情報が、前記検索キーワードと前記取得したファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認し、そうでなければ拒否する索引検証部と、
更新すべきファイルをそのファイル番号と共に前記サーバへ送って更新する更新手段と、
を有する検索システム。
【請求項2】
前記ユーザ端末は、
秘密鍵と所定の公開情報とを保持するユーザ鍵保持部と、
前記所定の公開情報と前記複数のファイルとから全ファイルの蓄積値を計算するファイル蓄積値計算部と、
前記全ファイルの蓄積値を保持する蓄積値保持部と、
を更に備え、
前記サーバは、
前記所定の公開情報を保持するサーバ鍵保持部と、
前記所定の公開情報に基づいて、当該サーバに保管された全ファイルの内、前記検索キーワードを含むファイルの集合以外のファイルを使用して、ファイル検証情報を生成して前記ユーザ端末へ送出するファイル検証情報生成部と、
を備え、
前記ユーザ端末は、
前記索引検証部で承認された場合、前記所定の公開情報に基づいて、前記取得したファイルの集合と前記ファイル検証情報とを使用して、ファイルの蓄積値を計算し、該計算したファイルの蓄積値と前記保持した全ファイルの蓄積値とが等しければ、前記取得したファイルの集合を前記所望のファイルの集合として得、そうでなければ拒否するファイル検証部を更に有する、
請求項1に記載の検索システム。
【請求項3】
前記ユーザ端末は、
前記所定の公開情報に基づいて、前記更新すべきファイル、更新前のファイル、そのファイル番号、および前記蓄積値保持部に保持された全ファイルの蓄積値を使用して、新しい全ファイルの蓄積値を計算し、該計算した新しい全ファイルの蓄積値を前記蓄積保持部に保持する蓄積値更新部を更に有する、
請求項2に記載の検索システム。
【請求項4】
ユーザ端末がサーバに複数のファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、ファイルの更新をも行う検索方法であって、
前記ユーザ端末が、前記複数のファイルをそれらのファイル番号と共に前記サーバに保管するステップと、
前記ユーザ端末が、キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、前記サーバに保管するステップと、
前記ユーザ端末が、前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成するステップと、
前記ユーザ端末が、前記生成した索引検証情報を前記サーバに保管するステップと、
前記ユーザ端末が、検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルおよび当該ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得するステップと、
前記ユーザ端末が、前記取得した索引検証情報が、前記検索キーワードと前記取得したファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックするステップと、
前記ユーザ端末が、チェックの結果が正しければ承認し、そうでなければ拒否するステップと、
前記ユーザ端末が、更新すべきファイルをそのファイル番号と共に前記サーバへ送って更新するステップと、
を含む検索方法。
【請求項5】
サーバに複数のファイルを保管し、キーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、ファイルの更新をも行う処理を、コンピュータであるユーザ端末に実行させる検索プログラムであって、前記コンピュータに、
前記複数のファイルをそれらのファイル番号と共に前記サーバに保管する手順と、
キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、前記サーバに保管する手順と、
前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成する手順と、
前記生成した索引検証情報を前記サーバに保管する手順と、
検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルおよび当該ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得する手順と、
前記取得した索引検証情報が、前記検索キーワードと前記取得したファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックする手順と、
チェックの結果が正しければ承認し、そうでなければ拒否する手順と、
更新すべきファイルをそのファイル番号と共に前記サーバへ送って更新する手順と、
を実行させるための検索プログラム。
【請求項6】
ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、暗号ファイルの更新をも行う検索システムであって、前記ユーザ端末は、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルをそれらの暗号ファイルのファイル番号と共に前記サーバに保管する暗号ファイル保管手段と、
キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、所定の秘密鍵を使って暗号化し、前記キーワードの暗号文と該キーワードを含むファイルのファイル番号の暗号文とから成る暗号化索引を前記サーバに保管する暗号化索引保管手段と、
前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成し、該生成した索引検証情報を前記サーバに保管する索引検証情報生成部と、
前記所定の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルおよび当該暗号ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得する暗号ファイル取得手段と、
該取得した索引検証情報が、前記検索キーワードと前記取得した暗号ファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認し、そうでなければ拒否する索引検証部と、
更新すべきファイルを前記暗号化の秘密鍵を使って暗号化して得られる、更新すべき暗号ファイルをそのファイル番号と共に前記サーバに送って更新する更新手段と、
を有する検索システム。
【請求項7】
前記ユーザ端末は、
前記暗号化の秘密鍵と前記所定の秘密鍵と所定の公開情報とを保持するユーザ鍵保持部と、
前記所定の公開情報と前記複数の暗号ファイルとから全暗号ファイルの蓄積値を計算するファイル蓄積値計算部と、
前記全暗号ファイルの蓄積値を保持する蓄積値保持部と、
を更に備え、
前記サーバは、
前記所定の公開情報を保持するサーバ鍵保持部と、
前記所定の公開情報に基づいて、当該サーバに保管された全暗号ファイルの内、前記暗号検索キーワードを含む暗号ファイルの集合以外の暗号ファイルを使用して、ファイル検証情報を生成して前記ユーザ端末へ送出するファイル検証情報生成部と、
を備え、
前記ユーザ端末は、
前記索引検証部で承認された場合、前記所定の公開情報に基づいて、前記取得した暗号ファイルの集合と前記ファイル検証情報とを使用して、暗号ファイルの蓄積値を計算し、該計算した暗号ファイルの蓄積値と前記保持した全暗号ファイルの蓄積値とが等しければ、前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否するファイル検証部を更に有する、
請求項6に記載の検索システム。
【請求項8】
前記ユーザ端末は、
前記所定の公開情報に基づいて、前記更新すべき暗号ファイル、更新前の暗号ファイル、そのファイル番号、および前記蓄積値保持部に保持された全暗号ファイルの蓄積値を使用して、新しい全暗号ファイルの蓄積値を計算し、該計算した新しい全暗号ファイルの蓄積値を前記蓄積保持部に保持する蓄積値更新部を更に有する、
請求項7に記載の検索システム。
【請求項9】
ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、暗号ファイルの更新をも行う検索方法であって、
前記ユーザ端末が、暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルをそれらの暗号ファイルのファイル番号と共に前記サーバに保管するステップと、
前記ユーザ端末が、キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、所定の秘密鍵を使って暗号化し、前記キーワードの暗号文と該キーワードを含むファイルのファイル番号の暗号文とから成る暗号化索引を前記サーバに保管するステップと、
前記ユーザ端末が、前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成するステップと、
前記ユーザ端末が、前記生成した索引検証情報を前記サーバに保管するステップと、
前記ユーザ端末が、前記所定の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルおよび当該暗号ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得するステップと、
前記ユーザ端末が、前記取得した索引検証情報が、前記検索キーワードと前記取得した暗号ファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックするステップと、
前記ユーザ端末が、チェックの結果が正しければ承認し、そうでなければ拒否するステップと、
前記ユーザ端末が、更新すべきファイルを前記暗号化の秘密鍵を使って暗号化して得られる、更新すべき暗号ファイルをそのファイル番号と共に前記サーバに送って更新するステップと、
を含む検索方法。
【請求項10】
サーバに複数の暗号ファイルを保管し、キーワード検索によって前記サーバから所望のファイルの集合を取得すると共に、暗号ファイルの更新をも行う処理を、コンピュータであるユーザ端末に実行させる検索プログラムであって、前記コンピュータに、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルをそれらの暗号ファイルのファイル番号と共に前記サーバに保管する手順と、
キーワードと該キーワードに対応するファイルのファイル番号との対応表である索引を、所定の秘密鍵を使って暗号化し、前記キーワードの暗号文と該キーワードを含むファイルのファイル番号の暗号文とから成る暗号化索引を前記サーバに保管する手順と、
前記キーワードと該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成する手順と、
前記生成した索引検証情報を前記サーバに保管する手順と、
前記所定の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルおよび該暗号ファイルのファイル番号の集合と前記検索キーワードに対応する索引検証情報とを取得する手順と、
前記取得した索引検証情報が、前記検索キーワードと前記取得した暗号ファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックする手順と、
チェックの結果が正しければ承認し、そうでなければ拒否する手順と、
更新すべきファイルを前記暗号化の秘密鍵を使って暗号化して得られる、更新すべき暗号ファイルをそのファイル番号と共に前記サーバに送って更新する手順と、
を実行させるための検索プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検索システム、検索方法、および、検索プログラムに関し、特に、キーワード検索におけるサーバの不正を検出可能なだけでなく、ファイルの更新(削除を含む)をも行える検索システム、検索方法、および、検索プログラムに関する。
【背景技術】
【0002】
この技術分野において周知のように、Yahoo!データボックスなどのデータストレージ(データ保管)サービスにおいては、ユーザ端末は、写真などの多くのファイルを(Yahoo!データボックスなどの)サーバに格納し、保管することができる。また、ユーザ端末は、ファイル名についてキーワード検索を行って、サーバから所望のファイルの集合を取得することもできる。尚、ユーザ端末は、クライアントとも呼ばれる。
【0003】
これに対して、非特許文献1は、ファイルおよびキーワード検索の際、サーバに対し内容を秘匿する暗号化検索方式を開示している。この暗号化検索方式は、ファイルとキーワードとを暗号化する方式である。
【0004】
一方、悪意のあるサーバ、あるいはウィルスに汚染されたサーバは、キーワード検索の際、対応する全てのファイルを正しく返すのではなく、ファイルの一部を削除、追加、改ざん、あるいはすり替えてしまう、といった不正を行うことが考えられる。
【0005】
この問題に対し、上記非特許文献1では、ファイルの削除、追加、改ざんをユーザ端末が検出できる検索システムを開示している。以下では、この非特許文献1に開示された検索システムを「第1の先行検索システム」と呼ぶことにする。しかしながら、非特許文献1に開示された第1の先行検索システムでは、サーバの不正として、ファイルのすり替えを検出することができない。
【0006】
そこで、本発明者らは、サーバの不正として、ファイルの削除、追加、改ざんのみならず、ファイルのすり替えをも検出できる、検索システムを既に提供した(非特許文献2)。以下では、この非特許文献2に開示された検索システムを「第2の先行検索システム」と呼ぶことにする。しかしながら、非特許文献2に開示された第2の先行検索システムでは、ファイルを更新(削除も含む)する場合、その更新(削除)すべきファイルに含まれる全てのキーワードについて索引中の検証情報を変更しなければならない。その結果、通信量が多く、非効率になるという問題がある。
【0007】
一方、非特許文献3は、ファイルの更新を容易に行える検索システムを開示している。以下では、この非特許文献3に開示された検索システムを「第3の先行検索システム」と呼ぶことにする。しかしながら、非特許文献3に開示された第3の先行検索システムでは、サーバの不正を検出することができない。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】Y. Chang and M. Mitzenmacher, “Privacy Preserving Keyword Searches on Remote Encrypted Data”, ACNS 2005: pp. 442-455 (2005)
【非特許文献2】Kaoru Kurosawa and Yasuhiro Ohtaki, “UC-Secure Searchable Symmetric Encryption”, Financial Cryptography 2012: pp. 285-298
【非特許文献3】Seny Kamara, Charalampos Papamanthou, and Tom Roeder, “Dynamic Searchable Symmetric Encryption”, ACM Conference on Computer and Communications Security 2012: pp. 965-976
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述したように、非特許文献1に開示された第1の先行検索システムでは、サーバの不正として、ファイルのすり替えを検出することができない。
【0010】
一方、非特許文献2に開示された第2の先行検索システムでは、サーバの不正(ファイルの削除、追加、改ざん、すり替え)を検出できるが、ファイルの更新(削除)を効率的に行えない。
【0011】
さらに、非特許文献3に開示された第3の先行検索システムでは、ファイルの更新を容易に行えるが、ファイルの不正を検出することができない。
【0012】
したがって本発明の目的は、サーバの不正(ファイルの削除、追加、改ざん、すり替え)を検出でき、かつファイルの更新(削除)も効率的に行える、検索システム、検索方法、および検索プログラムを提供することにある。
【0013】
本発明の他の目的は、リプレイ・アタックも検出できる、検索システム、検索方法、および検索プログラムを提供することにある。
【課題を解決するための手段】
【0014】
本発明の第1の態様に係る検索システムは、ユーザ端末がサーバに複数のファイルを保管し、ユーザ端末がキーワード検索によってサーバから所望のファイルの集合を取得すると共に、ファイルの更新(削除を含む)をも行う検索システムであって、ユーザ端末は、複数のファイルをそれらのファイル番号と共にサーバに保管するファイル保管手段と;キーワードとそのキーワードに対応するファイルのファイル番号との対応表である索引を、サーバに保管する索引保管手段と;キーワードと当該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成し、この生成した索引検証情報をサーバに保管する索引検証情報生成部と;検索キーワードをサーバへ送って、サーバから検索キーワードを含むファイルおよび当該ファイルのファイル番号の集合と検索キーワードに対応する索引検証情報とを取得するファイル取得手段と;この取得した索引検証情報が、検索キーワードと取得したファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認し、そうでなければ拒否する索引検証部と;更新(削除)すべきファイルをそのファイル番号と共にサーバへ送って更新する更新手段と;を備える。
【0015】
本発明の第2の態様による検索システムは、ユーザ端末がサーバに複数の暗号ファイルを保管し、ユーザ端末がキーワード検索によってサーバから所望のファイルの集合を取得すると共に、暗号ファイルの更新(削除を含む)をも行う検索システムであって、ユーザ端末は、暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、複数の暗号ファイルをそれらの暗号ファイルのファイル番号と共にサーバに保管する暗号ファイル保管手段と;キーワードとそのキーワードに対応するファイルのファイル番号との対応表である索引を、所定の秘密鍵を使って暗号化し、キーワードの暗号文とそのキーワードを含むファイルのファイル番号の暗号文とから成る暗号化索引をサーバに保管する暗号化索引保管手段と;キーワードと当該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定の生成アルゴリズムに従って索引検証情報を生成し、その生成した索引検証情報をサーバに保管する索引検証情報生成部と;所定の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードをサーバへ送って、サーバから暗号検索キーワードを含む暗号ファイルおよび当該暗号ファイルのファイル番号の集合と検索キーワードに対応する索引検証情報とを取得する暗号ファイル取得手段と;その取得した索引検証情報が、検索キーワードと取得した暗号ファイルのファイル番号の集合との検証用組の索引検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認し、そうでなければ拒否する索引検証部と;更新(削除)すべきファイルを暗号化の秘密鍵を使って暗号化して得られる、更新(削除)すべき暗号ファイルをそのファイル番号と共にサーバに送って更新する更新手段と;を備える。
【発明の効果】
【0016】
本発明では、キーワードと当該キーワードを含む全てのファイル(暗号ファイル)のファイル番号の集合との生成用組に対して所定のアルゴリズムに従って索引検証情報を生成し、その生成した索引検証情報をサーバに保管しているので、サーバの不正(ファイルの削除、追加、改ざん、すり替え)を検出するだけでなく、更新(削除)すべきファイル(暗号ファイル)をそのファイル番号と共にサーバに送出するだけで、ファイルの更新(削除)も効率的に行うことができる。
【図面の簡単な説明】
【0017】
図1】本発明の第1の実施例に係る検索システムの格納フェーズと検索フェーズの構成を示すブロック図である。
図2図1に示した検索システムに使用される索引の一具体例を示す図である。
図3図1に示した検索システムに使用される、クライアントの索引検証情報生成部の動作を説明するためのフローチャートである。
図4図3に示した索引検証情報生成部の動作の一具体例を示す図である。
図5図1に示した検索システムに使用される、クライアントのファイル蓄積値計算部の動作を説明するためのフローチャートである。
図6図5に示したファイル蓄積値計算部の動作の一具体例を示す図である。
図7図1に示した検索システムに使用される、クライアントの索引検証部の動作を説明するためのフローチャートである。
図8図7に示した索引検証部の動作の一具体例を示す図である。
図9図1に示した検索システムに使用される、サーバのファイル検証情報生成部の動作を説明するためのフローチャートである。
図10図9に示したファイル検証情報生成部の動作の一具体例を示す図である。
図11図1に示した検索システムに使用される、クライアントのファイル検証部の動作を説明するためのフローチャートである。
図12図11に示したファイル検証部の動作の一具体例を示す図である。
図13】本発明の第1の実施例に係る検索システムの更新フェーズの構成を示すブロック図である。
図14図13に示した検索システムに使用される、クライアントのAcc更新部の動作を説明するためのフローチャートである。
図15】本発明の第2の実施例に係る検索システムの格納フェーズと検索フェーズの構成を示すブロック図である。
図16図15に示した検索システムに使用される、クライアントの索引暗号部の動作を説明するためのフローチャートである。
図17図16に示した索引暗号部の動作の一具体例を示す図である。
図18図15に示した検索システムに使用される、クライアントのファイル蓄積値計算部の動作を説明するためのフローチャートである。
図19図18に示したファイル蓄積値計算部の動作の一具体例を示す図である。
図20図15に示した検索システムに使用される、クライアントのキーワード暗号部の動作を説明するためのフローチャートである。
図21図20に示したキーワード暗号部の動作の一具体例を示す図である。
図22図15に示した検索システムに使用される、サーバの暗号検索部の動作を説明するためのフローチャートである。
図23図22に示した暗号検索部の動作の一具体例を示す図である。
図24図15に示した検索システムに使用される、サーバのファイル検証情報生成部の動作を説明するためのフローチャートである。
図25図24に示したファイル検証情報生成部の動作の一具体例を示す図である。
図26図15に示した検索システムに使用される、クライアントのファイル検証部の動作を説明するためのフローチャートである。
図27図26に示したファイル検証部の動作の一具体例を示す図である。
図28】本発明の第2の実施例に係る検索システムの更新フェーズの構成を示すブロック図である。
図29図28に示した検索システムに使用される、クライアントのAcc更新部の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0018】
[概要]
以下、本発明の実施形態の概要について説明する。
【0019】
本発明の実施形態による検索システムは、キーワード検索におけるサーバの不正(ファイルの「削除」、「追加」、「改ざん」、「すり替え」)を検出するだけでなく、ファイルの更新(削除を含む)を効率的に行える検索システムである。
【0020】
本実施形態に係る検索システムは、ファイルが暗号化されている場合と、ファイルが暗号化されていない場合との両者に適用できる。尚、この技術分野において周知のように、メッセージの認証機能には、デジタル署名を利用する場合と、メッセージ認証コード(Message Authentication code,MAC)を利用して認証子を生成する場合とがある。なお、デジタル署名と認証子とは、総称して、検証情報と呼ばれる。
【0021】
一般に、検証情報は、所定の生成アルゴリズムによって生成され、所定の検証アルゴリズムによって検証(チェック)される。検証情報がデジタル署名の場合、所定の生成アルゴリズムは署名生成アルゴリズムから成り、所定の検証アルゴリズムは署名検証アルゴリズムから成る。一方、検証情報が認証子の場合、所定の生成アルゴリズムはMAC生成アルゴリズムから成り、所定の検証アルゴリズムはMAC検証アルゴリズムから成る。
【0022】
本実施形態に係る検索システムは、以下の第1および第2の実施形態に分けられる。
【0023】
本発明の第1の実施形態に係る検索システムは、ユーザ端末がファイルを暗号化せずにサーバに保管すると共に、ファイルの更新(削除を含む)をも行う検索システムである。
【0024】
第1の実施形態に係る検索システムでは、ユーザ端末が、キーワードと当該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定のアルゴリズムに従って索引検証情報を生成し、その生成した索引検証情報をサーバに保管する。これにより、サーバの不正(ファイルの削除、追加、改ざん、すり替え)を検出するだけでなく、更新(削除)すべきファイルをそのファイル番号と共にサーバに送出するだけで、ファイルの更新(削除)も効率的に行うことができる。
【0025】
本発明の第2の実施形態に係る検索システムは、ユーザ端末がファイルおよびキーワードを暗号化してサーバに保管すると共に、暗号ファイルの更新(削除)をも行う検索システムである。
【0026】
第2の実施形態に係る検索システムでは、ユーザ端末が、キーワードと当該キーワードを含む全てのファイルのファイル番号の集合との生成用組に対して所定のアルゴリズムに従って索引検証情報を生成し、その生成した索引検証情報をサーバに保管する。これにより、サーバの不正(ファイルの削除、追加、改ざん、すり替え)を検出するだけでなく、更新(削除)すべき暗号ファイルをそのファイル番号と共にサーバに送出するだけで、暗号ファイルの更新(削除)も効率的に行うことができる。
【0027】
尚、検索システムの動作は、ユーザ端末がファイル(暗号ファイル)をサーバに格納する「格納フェーズ」と、ユーザ端末がサーバから所望のファイルを検索する「検索フェーズ」と、ユーザ端末がファイル(暗号ファイル)を更新(削除を含む)する「更新フェーズ」と、に分けられる。
【0028】
また、ファイル更新固有の問題として、「リプレイ・アタック」が知られている。ここで、リプレイ・アタックとは、不正なサーバが、更新した新しいファイルの代わりに、古いファイルを返すことをいう。
【0029】
後述する本発明の実施例においては、この「リプレイ・アタック」をRSA(Rivest-Shamir-Adleman) accumulatorを使用することによって解決している。
【0030】
従って、本発明の実施例の理解を容易にするために、以下、RSA accumulatorの概要について説明する。
【0031】
p=2p’+1,q=2q’+1は素数である。ただし、p’,q’も素数で、pqは3λビットである。N=pqとおく。
【0032】
mod Nにおいて、位数がp’q’となる要素をgとする。すなわち、
p’q’=1mod N
である。
【0033】
3λビットの正整数aをランダムに選ぶ。
3λビットの正整数xに対し、h(x)を、
(x)=a×x の下位λビットと定義する。なお、この乗算×は、有限体(あるいはガロア体)GF(23λ)上の乗算である。
【0034】
このとき、λビットの任意のyに対し、
(x)=y
となる3λビットの素数xを効率よく求めることができる。
そのような素数xをprime(y)と書く。
【0035】
λビットのyの集合をE={y,・・・,y}とする(1≦i≦n)。
【0036】
Aliceは、Eの蓄積値
Acc(E)=gprime(y1)×・・・×prime(yn)mod N
をBobに送る。
【0037】
∈Eを証明したいとき、Aliceは、prime(y)と、
π=gΠi≠j prime(yi)mod N
と、をBobに送る。
【0038】
Bobは、
Acc(E)=(π)prime(yj)mod N
が成り立つかどうかをチェックする。
【0039】
強RSA仮定が成り立つと仮定する。
公開情報N,g,hおよびλビットのyの集合E={y,・・・,y}が与えられたとき、
Acc(E)=(π)prime(y)mod N
を満たすEに属さないyとπを見つけることは困難である。
【実施例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とを生成する。クライアント200の鍵保持部204は、これら生成された検証用の秘密鍵Kと秘密情報p,qと公開情報N,g,hとを保持する。また、鍵保持部204に保持された公開情報N,g,hは、サーバ300の鍵保持部306へ送られる。したがって、サーバ300の鍵保持部306は、公開情報N,g,hを保持する。
【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について以下の処理を実行する(S104)。ここでは、キーワードWを含むファイルの集合{Dj1,Dj2,・・・}に関し、その添字(すなわち、ファイル番号)の集合を{j1、j2、…}とする。この場合、索引検証情報生成部206は、検証用の秘密鍵Kを使い、生成用組(W、j1、j2、…)に対応する索引検証情報tagを下記の数式によって計算する。
tag=f(W、j1、j2、…)
ここで、fはMAC生成アルゴリズムまたは署名生成アルゴリズムから成る所定の生成アルゴリズムである。
【0052】
所定の生成アルゴリズムがMAC生成アルゴリズムから成るとする。この場合、索引検証情報生成部206は、検証用の秘密鍵KとしてMACの秘密鍵を使って、MAC生成アルゴリズムに従って、索引検証情報tagとして生成用組(W、j1、j2、…)に対する認証子を生成する。
【0053】
一方、所定のアルゴリズムが署名生成アルゴリズムから成るとする。この場合、索引検証情報生成部206は、検証用の秘密鍵Kとしてデジタル署名の秘密鍵を使って、署名生成アルゴリズムに従って、索引検証情報tagとして生成用組(W、j1、j2、…)に対するデジタル署名を生成する。
【0054】
索引検証情報生成部206は、計算して得られた索引検証情報(tag、tag、…)を出力する(ステップ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を、所定の生成アルゴリズムfに従って、下記数式で示されるように生成する。
tag=f(茨城大学、3、6、10)
【0058】
索引検証情報生成部206は、このようにして、キーワードi毎の索引検証情報tagを生成する。生成された索引検証情報tagは、サーバ300へ送られ、サーバ300は、送られてきた索引検証情報tagを記憶領域302に記憶する。
【0059】
図5を参照して、クライアント200のファイル蓄積値計算部216の動作について説明する。ここでは、ファイルの総数がnであるとする。
【0060】
先ず、ファイル蓄積値計算部216は、全ファイルの集合{(1,D),(2,D),・・・}および公開情報N,g、hを読み込む(ステップS202)。次に、ファイル蓄積値計算部216は、各ファイルD(1≦i≦n)について、素数pを下記の数式によって求める(ステップS204)。
=prime(H(i,D))
ここで、Hはハッシュ関数である。
【0061】
そして、ファイル蓄積値計算部216は、ファイルの蓄積値Accを下記の数式によって計算する(ステップS206)。
Acc=gp1p2p3...pnmod N
【0062】
ファイル蓄積値計算部216は、この計算して得られたファイルの蓄積値Accを出力する(ステップS208)。ファイルの蓄積値Accは、Acc保持部218で保持される。
【0063】
図6に、ファイル蓄積値計算部216の動作の具体例を示す。
【0064】
すなわち、ファイル蓄積値計算部216は、各ファイルD、D、・・・、Dについて、それぞれ、素数p=prime(H(1,D))、p=prime(H(2,D))、・・・、p=prime(H(n,D))を求め、ファイルの蓄積値Acc=gp1p2p3...pnmod Nを計算し、ファイルの蓄積値Accを出力する。
【0065】
検索時、クライアント200は、検索キーワードWを第3の信号線(伝送線)214を介してサーバ300に送る。サーバ300においては、検索キーワードWに応答して、検索部304は、その検索キーワードWを含むファイルおよびファイル番号の集合(i1,Di1),(i2,Di2),・・・と、その索引検証情報tagとをクライアント200へ返す。したがって、クライアント200は、ファイルおよびファイル番号の集合(i1,Di1),(i2,Di2),・・・とその索引検証情報tagとを取得する。すなわち、第2の信号線(伝送線)214は、検索キーワードWをサーバ300へ送って、サーバ300から、検索キーワードWを含むファイルおよびファイル番号の集合(i1,Di1),(i2,Di2),・・・と、その索引検証情報tagとを取得するファイル取得手段として働く。
【0066】
尚、以下の説明では、検索キーワードWを含むファイルおよびファイル番号の集合(i1,Di1),(i2,Di2),・・・を、単に、検索キーワードWを含むファイルの集合とも略称する。
【0067】
次に、図7を参照して、クライアント200の索引検証部208の動作について説明する。
【0068】
索引検証部208は、先ず、検索キーワードWと、鍵保持部204に保持された検証用の秘密鍵Kとを読み込む(S302)。次に、検索検証部208は、サーバ300から、検索キーワードWを含むファイルの集合(i1,Di1),(i2,Di2),・・・と、その索引検証情報tagとを受け取る(ステップS304)。
【0069】
索引検証部208は、検証用の秘密鍵Kを使い、索引検証情報tagが検証用組(W、i1、i2、…)の索引検証情報であるか否かを、所定の検証アルゴリズムに従って、下記の数式に示されるように計算する(ステップS306)。
Verify(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、D、D10)に対応するファイル番号の集合(3、6、10)と索引検証情報tagとを読み込む。
【0075】
そして、索引検証部208は、検証用の秘密鍵Kを使い、索引検証情報tagが検証用組(茨城大学、3、6、10)の索引検証情報であるか否かを、所定の検証アルゴリズムに従って、下記の数式に示されるように計算する。
Verify(茨城大学、3、6、10、tag)=accept or reject
【0076】
索引検証部208は、acceptなら、accept(承認)を出力し、rejectなら、reject(拒否)を出力する。
【0077】
図9を参照して、サーバ300のファイル検証情報生成部308の動作について説明する。
【0078】
先ず、ファイル検証情報生成部308は、検索部304からファイルの集合S={(j1,Dj1),(j2,Dj2),・・・}を読み込む(ステップS402)。引き続いて、ファイル検証情報生成部308は、記憶領域302から全ファイル{(1、D),(2,D),・・・}を読み込む(ステップS404)。そして、ファイル検証情報生成部308は、鍵保持部306から公開情報N,g,hを読み込む(ステップS406)。
【0079】
次に、ファイル検証情報生成部308は、ファイルの集合Sに含まれない各添字(i1,i2,・・・)について下記の数式に従って素数p(i=i1,i2,・・・)を計算し、さらに、ファイル検証情報πを下記の数式に従って計算する(ステップS408)。
=prime(H(i,D))
π=gpi1pi2・・・mod N
【0080】
そして、ファイル検証情報生成部308は、ファイル検証情報πを出力する(ステップS410)。このファイル検証情報πは、クライアント200へ送出される。
【0081】
図10に、ファイル検証情報生成部308の動作の具体例を示す。この例では、検索部304からファイルの集合S={(2,D),(4,D)}が出力される場合を示している。
【0082】
この場合、ファイル検索情報生成部308は、ファイル番号が2,4以外のすべてのファイルについて、p=prime(H(1,D)),p=prime(H(3,D)),p=prime(H(5,D)),p=prime(H(6,D)),・・・を計算し、ファイル検証情報π=gp1p3p5p6・・・mod Nを計算して出力する。
【0083】
図11を参照して、クライアント200のファイル検証部220の動作について説明する。
【0084】
ファイル検証部220は、先ず、索引検証部208の結果がaccept(承認)であるか否かを判断する(ステップS502)。accept(承認)なら、ファイル検証部220はステップS504に進み、reject(拒否)なら、ファイル検証部220はreject(拒否)を出力する(ステップS514)。
【0085】
ステップS504において、ファイル検証部220は、サーバ300からファイルの集合S={(i1,Di1),(i2,Di2),・・・}と、そのファイル検証情報πを読み込む。そして、ファイル検証部220は、鍵保持部204から公開情報N,g,hを読み込む。
【0086】
引き続いて、ファイル検証部220は、ファイルの集合Sに含まれる各ファイルD(Di1,Di2,・・・)について、下記の数式に従って素数pを計算する(ステップS506)。
=prime(H(i,D))
【0087】
次に、ファイル検証部220は、下記の数式に従ってファイルの蓄積値Aを計算する(ステップS508)。
A=πpi1pi2・・・mod N
【0088】
そして、ファイル検証部220は、この計算したファイルの蓄積値Aが、Acc保持部218に保持されている全ファイルの蓄積値Accと等しいか否か判断する(ステップS510)。
【0089】
A=Accの場合(ステップS510のYes)、ファイル検証部220は、サーバ300から取得したファイルの集合S={(i1,Di1),(i2,Di2),・・・}を所望のファイルの集合として出力する(ステップS512)。A≠Accの場合(ステップS510のNo)、ファイル検証部220は、reject(拒否)を出力する(ステップS514)。
【0090】
図12に、ファイル検証部220の動作の具体例を示す。この例では、サーバ300からファイルの集合S={(2,D),(4,D)}を受け取った場合の例を示している。
【0091】
この場合、ファイル検証部220は、素数p=prime(H(2,D))およびp=prime(H(4,D))を計算した後、ファイルの蓄積値A=πp2p4mod Nを計算し、計算したファイルの蓄積値Aが保持している全ファイルの蓄積値Accと等しいか否か判断し、等しければ、取得したファイルの集合D、Dを所望のファイルの集合として得、等しくなければ、reject(拒否)する。
【0092】
図13を参照して、本発明の第1の実施例に係る検索システム100の更新フェーズについて説明する。図13は、本発明の第1の実施例に係る検索システム100の更新フェーズのブロック図である。
【0093】
図13に示されるように、クライアント(ユーザ端末)200は、第4及び第5の信号線(伝送線)222、224と、Acc更新部226と、を更に有する。
【0094】
本例では、ファイル番号jを持つ現ファイルDを、新ファイルD’に更新するか又は削除する場合の例を示している。すなわち、本例では、ファイル番号jを持つファイルが、更新(又は削除)すべきファイルであり、現ファイルDが更新前のファイルである。
【0095】
この場合、クライアント200は、新ファイルD’又は「削除」を示すデータを第4の信号線(伝送線)222を介してサーバ300へ送信すると共に、ファイル番号jを第5の信号線(伝送線)224を介してサーバ300へ送信する。サーバ300は、その送られてきた新ファイルD’又は「削除」を示すデータをそのファイル番号jと共に記憶領域302に保管する。
【0096】
したがって、第4及び第5の信号線(伝送線)222、224の組み合わせは、更新(削除)すべきファイルをそのファイル番号jと共にサーバ300へ送って更新(削除)する更新手段として働く。
【0097】
サーバ300において、第5の信号線(伝送線)224を介してファイル番号jが渡されると、検索部304は、記憶領域302に既に格納されている現ファイル(更新前のファイル)Dを検索して、そのファイル番号jが付加された現ファイル(j、D)をクライアント200へ返す。
【0098】
図14を参照して、クライアント200のAcc更新部226の動作について説明する。
【0099】
先ず、Acc更新部226は、ファイル番号j、現ファイルD、新ファイルD’(又は「削除」を示すデータ)を読み込み、Acc保持部218から全ファイルの蓄積値Accを読み込み、鍵保持部204から秘密情報p,qと公開情報N,g,hを読み込む(ステップS602)。
【0100】
引き続いて、Acc更新部226は、下記の数式に従って、x、x’、およびdを計算する(ステップS604)。
x=prime(H(j,D))
x’=prime(H(j,D’))
d=x’/x mod (p−1)(q−1)
【0101】
次に、Acc更新部226は、下記の数式に従って、新しい全ファイルの蓄積値Acc’を計算する(ステップS606)。
Acc’=Accmod N
【0102】
最後に、Acc更新部226は、計算した新しい全ファイルの蓄積値Acc’をAcc保持部218に保持することにより、古い全ファイルの蓄積値Accを新しい全ファイルの蓄積値Acc’に更新する(ステップS608)。
【0103】
このように、ファイルを更新(又は削除)しようとする場合、クライアント200は、更新すべきファイル(又は「削除」を示すデータ)をそのファイル番号と共にサーバ300へ送出し、全ファイルの蓄積値を更新するだけで良いので、ファイルの更新を効率的に行なうことができる。
【0104】
次に、本第1の実施例の効果について説明する。
【0105】
第1の実施例の検索システム100の第1の効果は、サーバ300の不正(ファイルの削除、追加、改ざん、すり替え)を検出できるだけでなく、ファイルの更新(削除を含む)を効率的に行なうことができることである。その理由は、クライアント(ユーザ端末)200が各キーワードWと当該キーワードWを含む全てのファイルのファイル番号の集合(j1、j2、…)とを一組(生成用組)として、それに対する索引検証情報tagを生成し、生成した索引検証情報tagをサーバ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と、検証用の秘密鍵Kと、所定の秘密鍵K0、K1と、秘密情報p,qと、公開情報N,g,hとを生成する。鍵保持部204Aは、この生成された暗号化の秘密鍵Kと、検証用の秘密鍵Kと、所定の秘密鍵K0、K1と、秘密情報p,qと公開情報N,g,hとを保持する。また、鍵保持部204Aに保持された公開情報N,g,hは、サーバ300Aの鍵保持部306Aへ送られる。したがって、サーバ300Aの鍵保持部306Aは、公開情報N,g,hを保持する。
【0115】
ファイル暗号化部210Aは、暗号化の秘密鍵Kを使い、複数のファイルの暗号文である暗号ファイル{E(D)、E(D)、…}を計算する。これら暗号ファイル{E(D)、E(D)、…}は、それらのファイル番号と共にサーバ300Aへ送られ、サーバ300Aは、その送られてきた暗号ファイル{E(D)、E(D)、…}をそれらのファイル番号と共に記憶領域302Aに記憶する。したがって、ファイル暗号化部210Aは、暗号化の秘密鍵Kを使って複数のファイルをそれぞれ暗号化し、複数の暗号ファイルをそれらのファイル番号と共にサーバ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は鍵である。
[PRF(W)]により、PRF(W)の先頭のuビットを表す。
文書(ファイル)の総数をnとする。
キーワードWがファイルDに含まれるなら、ei,j=1と表し、そうでなければ、ei,j=0と表す。
【0122】
先ず、索引暗号化部212Aは、索引と所定の秘密鍵K0、K1とを読み込む(ステップS702)。
【0123】
引き続いて、索引暗号化部212Aは、各キーワードWiについて、下記の数式で表される、label、PAD、およびOTPを計算する(ステップS704)。
label=[PRFK0(W)]128
PAD=[PRFK1(W)]
OTP=PAD+(ei,1,・・・、ei,n)mod 2
ここで、labelは、キーワードWの暗号文を表し、OTPは、キーワードWを含むファイルのファイル番号の暗号文を表す。
【0124】
そして、索引暗号化部212Aは、暗号化索引={(label,OTP),(label,OTP),・・・}を出力する(ステップS706)。
【0125】
このように、索引暗号化部212Aは、キーワードWとそのキーワードWに対応するファイルのファイル番号との対応表である索引を、所定の秘密鍵K0,K1を使って暗号化し、キーワードWの暗号文labelとそのキーワードWを含むファイルのファイル番号の暗号文OTPとから成る暗号化索引をサーバ300Aに保管する暗号化索引保管手段として働く。
【0126】
次に、図17を参照して、索引暗号化部212Aの動作について具体例を挙げて説明する。ここでは、ファイル(文書)の総数n=12で、キーワードが索引番号2の「茨城大学」である場合を例に挙げて説明する。したがって、この場合、索引番号2のファイル番号には、「3」、「6」、「10」が記憶されている。
【0127】
この場合、索引暗号化部212Aは、キーワードWの暗号文labelと、ファイル番号の暗号文OTPとを計算する。
【0128】
ただし、キーワードWの暗号文labelは、下記の数式で表される。
label=[PRFK0(茨城大学)]128
【0129】
また、(e2,1,・・・,e2,12)は、(001001000100)に等しい。また、PADは下記の数式で表され、ここで(110101011110)であったとする。
PAD=[PRFK1(茨城大学)]12
=(110101011110)
【0130】
よって、ファイル番号の暗号文OTPは、それらの排他的論理和(xor)であるので、本例では、下記の数式で表される。
OTP=(111100011010)
【0131】
クライアント200Aの索引検証情報生成部206Aの動作は、図3および図4に示したものと同様であるので、重複を避けるためにその説明を省略する。
【0132】
図18を参照して、クライアント200Aのファイル蓄積値計算部216Aの動作について説明する。
【0133】
先ず、ファイル蓄積値計算部216Aは、全暗号ファイルの集合{(1、E(D)),(2,E(D)),・・・}および公開情報N,g、hを読み込む(ステップS202A)。次に、ファイル蓄積値計算部216Aは、各暗号ファイルE(D)(1≦i≦n)について、素数pを下記の数式によって求める(ステップS204A)。
=prime(H(i,E(D)))
ここで、Hはハッシュ関数である。
【0134】
そして、ファイル蓄積値計算部216Aは、ファイルの蓄積値Accを下記の数式によって計算する(ステップS206A)。
Acc=gp1p2p3...pnmod N
【0135】
ファイル蓄積値計算部216Aは、この計算して得られたファイルの蓄積値Accを出力する(ステップS208A)。ファイルの蓄積値Accは、Acc保持部218Aで保持される。
【0136】
図19に、ファイル蓄積値計算部216Aの動作の具体例を示す。
【0137】
すなわち、ファイル蓄積値計算部216は、各暗号ファイルE(D)、E(D)、・・・、E(D)について、それぞれ、素数p=prime(H(1,E(D)))、p=prime(H(2,E(D)))、・・・、p=prime(H(n,E(D)))を求め、ファイルの蓄積値Acc=gp1p2p3...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=[PRFK0(W)]128
PAD=[PRFK1(W)]
【0141】
そして、キーワード暗号化部214Aは、計算により得られた暗号検索キーワード(label,PAD)をサーバ300Aへ送信する(ステップS806)。
【0142】
図21に、キーワード暗号化部214Aの動作の具体例を示す。本例では、検索キーワードWが「茨城大学」であって、ファイルの総数nが12に等しい場合の例を示している。
【0143】
この場合、キーワード暗号化部214Aは、下記の数式に従って、暗号検索キーワード(label,PAD)を計算する。
label=[PRFK0(茨城大学)]128
PAD=[PRFK1(茨城大学)]12
(=110101011110)
【0144】
キーワード暗号化部214Aは、計算により得られた暗号検索キーワード(label,PAD)をサーバ300Aへ送信する。
【0145】
サーバ300Aにおいては、暗号検索キーワード(label,PAD)に応答して、暗号検索部304Aは、その検索キーワードWを含む暗号ファイルの集合{(j1,E(Dj1)),(j2,E(Dj2)),・・・}とその索引検証情報tagとをクライアント200Aへ返す。
【0146】
図22を参照して、サーバ300Aの暗号検索部304Aの動作について説明する。
【0147】
先ず、暗号検索部304Aは、クライアント200Aから送出されてきた暗号検索キーワード(label,PAD)を検索用データとして読み込む(ステップS902)。
【0148】
引き続いて、暗号検索部304Aは、記憶領域302Aに格納されている暗号化索引の中からlabel=labelとなるjを見つけて、(label,OTP,tag)を見つける(ステップS904)。
【0149】
次に、暗号検索部304Aは、下記の数式を計算する(ステップS906)。
(e,・・・,e)=OTP+PADmod 2
【0150】
そして、暗号検索部304Aは、e=1となるjの集合{j1,j2,・・・}を求める(ステップS908)。
【0151】
次に、暗号検索部304Aは、検索キーワードWを含む暗号ファイルの集合{(j1,E(Dj1)),(j2,E(Dj2)),・・・}とその索引検証情報tagとを出力する(ステップS910)。
【0152】
したがって、クライアント200Aは、暗号ファイルの集合{(j1,E(Dj1)),(j2,E(Dj2)),・・・}とその索引検証情報tagとを取得する。
【0153】
図23に暗号検索部304Aの動作の具体例を示す。本例では、jが2に等しく、nが12に等しい場合の例を示している。
【0154】
j=2であるので、暗号検索部304Aは、暗号化索引の中から(label,OTP,tag)を見つける。そして、暗号検索部304Aは、下記の数式を計算する。
(e,・・・,e12)=OTP+PADmod 2
【0155】
本例では、PADおよびOTPは、それぞれ、下記の数式に等しいとする。
PAD=(110101011110)
OTP=(111100011010)
【0156】
この場合、(e,・・・,e12)は、それらの排他的論理和xorであるので、下記の数式で表される。
(e,・・・,e12)=(001001000100)
【0157】
よって、e=1、e=1、e10=1であるので、該当する文書番号(ファイル番号は、(3,6,10)となる。
【0158】
したがって、暗号検索部304Aは、検索キーワードWを含む暗号ファイルの集合{(3,E(D)),(6,E(D)),(10,E(D10))}とその索引検証情報tagとを出力する。
【0159】
上述したように、キーワード暗号化部214Aは、所定の秘密鍵K0、K1を使って検索キーワードWを暗号化して得られる暗号検索キーワード(label,PAD)をサーバ300Aへ送って、サーバ300Aから、暗号ファイルの集合{(j1,E(Dj1)),(j2,E(Dj2)),・・・}と検索キーワードWに対応する索引検証情報tagとを取得する暗号ファイル取得手段として働く。
【0160】
クライアント200Aの索引検証部208Aの動作は、図7および図8と実質的に同様なので、その詳細な動作説明については省略する。相違点は、図7のステップS304における「ファイルの集合」が、「暗号ファイルの集合」に変更されていることだけである。
【0161】
図24を参照して、サーバ300Aのファイル検証情報生成部308Aの動作について説明する。
【0162】
先ず、ファイル検証情報生成部308Aは、暗号検索部304Aから暗号ファイルの集合S={(j1,E(Dj1)),(j2,E(Dj2)),・・・}を読み込む(ステップS402A)。引き続いて、ファイル検証情報生成部308Aは、記憶領域302Aから全暗号ファイル{(1、E(D)),(2,E(D)),・・・}を読み込む(ステップS404A)。そして、ファイル検証情報生成部308Aは、鍵保持部306Aから公開情報N,g,hを読み込む(ステップS406A)。
【0163】
次に、ファイル検証情報生成部308Aは、暗号ファイルの集合Sに含まれない各添字(すなわち、ファイル番号)(i1,i2,・・・)について下記の数式に従って素数p(i=i1,i2,・・・)を計算し、さらに、ファイル検証情報πを下記の数式に従って計算する(ステップS408A)。
=prime(H(i,E(D)))
π=gpi1pi2・・・mod N
【0164】
そして、ファイル検証情報生成部308Aは、ファイル検証情報πを出力する(ステップS410A)。このファイル検証情報πは、クライアント200Aへ送出される。
【0165】
図25に、ファイル検証情報生成部308Aの動作の具体例を示す。この例では、暗号検索部304Aから暗号ファイルの集合S={(2,E(D)),(4,E(D))}が出力された場合の例を示している。
【0166】
この場合、ファイル検索情報生成部308Aは、ファイル番号が2,4以外のすべての暗号ファイルについて、p=prime(H(1,E(D))),p=prime(H(3,E(D))),p=prime(H(5,E(D))),p=prime(H(6,E(D))),・・・を計算し、ファイル検証情報π=gp1p3p5p6・・・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(Di1)),(i2,E(Di2)),・・・}と、そのファイル検証情報πを読み込む。そして、ファイル検証部220Aは、鍵保持部204Aから公開情報N,g,hを読み込む。
【0170】
引き続いて、ファイル検証部220Aは、暗号ファイルの集合Sに含まれる各暗号ファイルE(D)(E(Di1),E(Di2),・・・)について、下記の数式に従って素数pを計算する(ステップS506A)。
=prime(H(i,E(D)))
【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(Di1)),(i2,E(Di2)),・・・}を復号して、所望のファイルの集合{(i1,Di1),(i2,Di2),・・・}として出力する(ステップS512A)。A≠Accの場合(ステップS510AのNo)、ファイル検証部220Aは、reject(拒否)を出力する(ステップS514A)。
【0174】
図27に、ファイル検証部220Aの動作の具体例を示す。この例では、サーバ300Aから暗号ファイルの集合S={(2,E(D)),(4,E(D))}を受け取った場合を示している。
【0175】
この場合、ファイル検証部220Aは、素数p=prime(H(2,E(D)))およびp=prime(H(4,E(D)))を計算した後、ファイルの蓄積値A=πp2p4mod Nを計算し、計算したファイルの蓄積値Aが保持している全ファイルの蓄積値Accと等しいか否か判断し、等しければ、取得した暗号ファイルの集合E(D)、E(D)を復号して、所望のファイルの集合D、Dを得、等しくなければ、reject(拒否)する。
【0176】
図28を参照して、本発明の第2の実施例に係る検索システム100Aの更新フェーズについて説明する。図28は、本発明の第2の実施例に係る検索システム100Aの更新フェーズのブロック図である。
【0177】
図28に示されるように、クライアント(ユーザ端末)200Aは、第1及び第2の信号線(伝送線)222A、224Aと、Acc更新部226Aと、を更に有する。
【0178】
本例では、ファイル番号jを持つ現暗号ファイルE(D)を、新暗号ファイルE(D’)に更新するか又は削除する場合を示している。すなわち、本例では、ファイル番号jを持つ暗号ファイルが、更新(又は削除)すべき暗号ファイルであり、現暗号ファイルE(D)が更新前の暗号ファイルである。
【0179】
この場合、クライアント200Aは、新暗号ファイルE(D’)又は「削除」を示すデータを第1の信号線(伝送線)222Aを介してサーバ300Aへ送信すると共に、ファイル番号jを第2の信号線(伝送線)224Aを介してサーバ300Aへ送信する。サーバ300Aは、その送られてきた新暗号ファイルE(D’)又は「削除」を示すデータをそのファイル番号jと共に記憶領域302Aに保管する。
【0180】
したがって、第1及び第2の信号線(伝送線)222A、224Aの組み合わせは、更新(削除)すべき暗号ファイルをそのファイル番号jと共にサーバ300Aへ送って更新(削除)する更新手段として働く。
【0181】
尚、新暗号ファイルE(D’)は、図15に示すファイル暗号化部210Aを使用して、新ファイルD’を暗号化することによって生成してよい。
【0182】
サーバ300Aにおいて、第2の信号線(伝送線)224Aを介してファイル番号jが渡されると、暗号検索部304Aは、記憶領域302Aに既に格納されている現暗号ファイル(更新前の暗号ファイル)E(D)を検索して、そのファイル番号jが付加された現暗号ファイル(j、E(D))をクライアント200Aへ返す。
【0183】
図29を参照して、クライアント200AのAcc更新部226Aの動作について説明する。
【0184】
先ず、Acc更新部226Aは、ファイル番号j、現暗号ファイルE(D)、新暗号ファイルE(D’)(又は「削除」を示すデータ)を読み込み、Acc保持部218Aから全暗号ファイルの蓄積値Accを読み込み、鍵保持部204Aから秘密情報p,qと公開情報N,g,hを読み込む(ステップS602A)。
【0185】
引き続いて、Acc更新部226Aは、下記の数式に従って、x、x’、およびdを計算する(ステップS604A)。
x=prime(H(j,E(D)))
x’=prime(H(j,E(D’)))
d=x’/x mod (p−1)(q−1)
【0186】
次に、Acc更新部226Aは、下記の数式に従って、新しい全暗号ファイルの蓄積値Acc’を計算する(ステップS606A)。
Acc’=Accmod N
【0187】
最後に、Acc更新部226Aは、計算した新しい全暗号ファイルの蓄積値Acc’をAcc保持部218Aに保持することにより、古い全暗号ファイルの蓄積値Accを新しい全暗号ファイルの蓄積値Acc’に更新する(ステップS608A)。
【0188】
このように、暗号ファイルを更新(又は削除)しようとする場合、クライアント200Aは、更新すべき暗号ファイル(又は「削除」を示すデータ)をそのファイル番号と共にサーバ300Aへ送出し、全暗号ファイルの蓄積値を更新するだけで良いので、暗号ファイルの更新(削除)を効率的に行なうことができる。
【0189】
次に、本第2の実施例の効果について説明する。
【0190】
第2の実施例の検索システム100Aの第1の効果は、サーバの不正(ファイルの削除、追加、改ざん、すり替え)を検出ことができるだけでなく、ファイルの更新(削除を含む)を効率的に行うことができることである。その理由は、クライアント(ユーザ端末)200Aが各キーワードWと当該キーワードWを含む全てのファイルの集合を暗号化して得られる暗号ファイル{E(Dj1)、E(Dj2)、…}のファイル番号の集合(j1、j2、…)とを一組(生成用組)として、それに対する索引検証情報tagを生成し、生成した索引検証情報tagをサーバ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に記載の検索プログラム。
【産業上の利用可能性】
【0216】
本発明は、キーワード検索におけるサーバの不正を検出し、ファイルを更新(削除を含む)する方式に利用可能である。
【符号の説明】
【0217】
100、100A 検索システム
200、200A クライアント(ユーザ端末)
202、202A 鍵生成部
204、204A 鍵保持部
206、206A 索引検証情報生成部
208、208A 索引検証部
210 第1の信号線(ファイル保管手段)
210A ファイル暗号化部(暗号ファイル保管手段)
212 第2の信号線(索引保管手段)
212A 索引暗号化部(暗号索引保管手段)
214 第3の信号線(ファイル取得手段)
214A キーワード暗号化部(暗号ファイル取得手段)
216、216A ファイル蓄積値計算部
218、218A Acc保持部
220、220A ファイル検証部
222、222A 信号線
224、224A 信号線
226、226A Acc更新部
300、300A サーバ
302、302A 記憶領域
304 検索部
304A 暗号検索部
306、306A 鍵保持部
308、308A ファイル検証情報生成部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29