(57)【特許請求の範囲】
【請求項１】
ユーザ端末がサーバに複数のファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索システムであって、前記ユーザ端末は、
前記複数のファイルを前記サーバに保管するファイル保管手段と、
キーワードと該キーワードを含む全てのファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成し、該生成した検証情報を前記サーバに保管する検証情報生成部と、
検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルの集合と前記検索キーワードに対応する検証情報とを取得するファイル取得手段と、
該取得した検証情報が、前記検索キーワードと前記取得したファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認して前記取得したファイルの集合を前記所望のファイルの集合として得、そうでなければ拒否する検証部と、
を有する検索システム。
【請求項２】
前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記検証情報生成部は、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記検証情報として前記生成用組に対するデジタル署名を生成し、
前記検証部は、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックする、
請求項１に記載の検索システム。
【請求項３】
前記所定の生成アルゴリズムがＭＡＣ（Message Authentication Code）生成アルゴリズムから成り、
前記所定の検証アルゴリズムがＭＡＣ検証アルゴリズムから成り、
前記検証情報生成部は、ＭＡＣの秘密鍵を使って、前記ＭＡＣ生成アルゴリズムに従って、前記検証情報として前記生成用組に対する認証子を生成し、
前記検証部は、前記ＭＡＣの秘密鍵を使って、前記ＭＡＣ検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックする、
請求項１に記載の検索システム。
【請求項４】
ユーザ端末がサーバに複数のファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索方法であって、
前記ユーザ端末が、前記複数のファイルを前記サーバに保管するステップと、
前記ユーザ端末が、キーワードと該キーワードを含む全てのファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成するステップと、
前記ユーザ端末が、前記生成した検証情報を前記サーバに保管するステップと、
前記ユーザ端末が、検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルの集合と前記検索キーワードに対応する検証情報とを取得するステップと、
前記ユーザ端末が、前記取得した検証情報が、前記検索キーワードと前記取得したファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックするステップと、
前記ユーザ端末が、チェックの結果が正しければ承認して前記取得したファイルの集合を前記所望のファイルの集合として得、そうでなければ拒否するステップと、
を含む検索方法。
【請求項５】
サーバに複数のファイルを保管し、キーワード検索によって前記サーバから所望のファイルの集合を取得する処理を、コンピュータであるユーザ端末に実行させる検索プログラムであって、前記コンピュータに、
前記複数のファイルを前記サーバに保管する手順と、
キーワードと該キーワードを含む全てのファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成する手順と、
前記生成した検証情報を前記サーバに保管する手順と、
検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルの集合と前記検索キーワードに対応する検証情報とを取得する手順と、
前記取得した検証情報が、前記検索キーワードと前記取得したファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックする手順と、
チェックの結果が正しければ承認して前記取得したファイルの集合を前記所望のファイルの集合として得、そうでなければ拒否する手順と、
を実行させるための検索プログラム。
【請求項６】
ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索システムであって、前記ユーザ端末は、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルを前記サーバに保管する暗号ファイル保管手段と、
キーワードと該キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成し、該生成した検証情報を前記サーバに保管する検証情報生成部と、
前記暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルの集合と前記検索キーワードに対応する検証情報とを取得する暗号ファイル取得手段と、
該取得した検証情報が、前記検索キーワードと前記取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認して前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否する検証部と、
を有する検索システム。
【請求項７】
前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記検証情報生成部は、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記検証情報として前記生成用組に対するデジタル署名を生成し、
前記検証部は、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックする、
請求項６に記載の検索システム。
【請求項８】
前記所定の生成アルゴリズムがＭＡＣ（Message Authentication Code）生成アルゴリズムから成り、
前記所定の検証アルゴリズムがＭＡＣ検証アルゴリズムから成り、
前記検証情報生成部は、ＭＡＣの秘密鍵を使って、前記ＭＡＣ生成アルゴリズムに従って、前記検証情報として前記生成用組に対する認証子を生成し、
前記検証部は、前記ＭＡＣの秘密鍵を使って、前記ＭＡＣ検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックする、
請求項６に記載の検索システム。
【請求項９】
ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索方法であって、
前記ユーザ端末が、暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルを前記サーバに保管するステップと、
前記ユーザ端末が、キーワードと該キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成するステップと、
前記ユーザ端末が、前記生成した検証情報を前記サーバに保管するステップと、
前記ユーザ端末が、前記暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルの集合と前記検索キーワードに対応する検証情報とを取得するステップと、
前記ユーザ端末が、前記取得した検証情報が、前記検索キーワードと前記取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックするステップと、
前記ユーザ端末が、チェックの結果が正しければ承認して前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否するステップと、
を含む検索方法。
【請求項１０】
サーバに複数の暗号ファイルを保管し、キーワード検索によって前記サーバから所望のファイルの集合を取得する処理を、コンピュータであるユーザ端末に実行させる検索プログラムであって、前記コンピュータに、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルを前記サーバに保管する手順と、
キーワードと該キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成する手順と、
前記生成した検証情報を前記サーバに保管する手順と、
前記暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルの集合と前記検索キーワードに対応する検証情報とを取得する手順と、
前記取得した検証情報が、前記検索キーワードと前記取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックする手順と、
チェックの結果が正しければ承認して前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否する手順と、
を実行させるための検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索システム、検索方法、および、検索プログラムに関し、特に、キーワード検索におけるサーバの不正を検出可能な検索システム、検索方法、および、検索プログラムに関する。
【背景技術】
【０００２】
この技術分野において周知のように、Yahoo!データボックスなどのデータストレージ（データ保管）サービスにおいては、ユーザ端末は、写真などの多くのファイルを（Yahoo!データボックスなどの）サーバに格納し、保管することができる。また、ユーザ端末は、ファイル名についてキーワード検索を行って、サーバから所望のファイルの集合を取得することもできる。尚、ユーザ端末は、クライアントとも呼ばれる。
【０００３】
これに対して、非特許文献１は、ファイルおよびキーワード検索の際、サーバに対し内容を秘匿する暗号化検索方式を開示している。この暗号化検索方式は、ファイルとキーワードとを暗号化する方式である。
【０００４】
一方、悪意のあるサーバ、あるいはウィルスに汚染されたサーバは、キーワード検索の際、対応する全てのファイルを正しく返すのではなく、ファイルの一部を削除、追加、改ざん、あるいはすり替えてしまう、といった不正を行うことが考えられる。
【０００５】
この問題に対し、上記非特許文献１では、ファイルの削除、追加、改ざんをユーザ端末が検出できる検索システムを開示している。以下では、この非特許文献１に開示された検索システムを、「先行検索システム」と呼ぶことにする。
【０００６】
尚、一般に、検索システムの動作は、ユーザ端末がファイルをサーバに格納する「格納フェーズ」と、ユーザ端末がサーバから所望のファイルを検索する「検索フェーズ」と、に分けられる。
【０００７】
以下、先行検索システムの概略の動作について説明する。
【０００８】
格納フェーズにおいて、ユーザ端末は、各ファイルＤｎの暗号文Ｅ（Ｄｎ）と当該暗号文のデジタル署名sign（Ｅ（Ｄｎ））とを一組（Ｅ（Ｄｎ）, sign（Ｅ（Ｄｎ）））として、サーバに格納する。ここで、ｎは１以上Ｎ以下の整数であって（１≦ｎ≦Ｎ）、Ｎはファイルの総数である。また、ユーザ端末は、各キーワードｉを含むファイル数のデジタル署名Ｙｉも、サーバに格納する。ここで、ｉはは１以上Ｉ以下の整数であって（１≦ｉ≦Ｉ）、Ｉはキーワードの総数である。
【０００９】
検索フェーズにおいて、ユーザ端末は、キーワードｉの暗号文Ｅ（キーワードｉ）をサーバへ送る。そのとき、サーバは、キーワードｉを含む各組（Ｅ（Ｄｎ）, sign（Ｅ（Ｄｎ）））とその対応するデジタル署名Ｙｉと、をユーザ端末へ返す。ユーザ端末では、返送された各組のデジタル署名sign（Ｅ（Ｄｎ））をチェックすることにより、当該ファイルＤｎの改ざんを検出することができる。また、ユーザ端末は、返送されたデジタル署名Ｙｉをチェックすることにより、キーワードｉを含むファイル数の変化を検出することができる。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Y.Chang and M. Mitzenmacher, “Privacy Preserving Keyword Searches on Remote Encrypted Data”, ACNS 2005: pp. 442-455 (2005)
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、非特許文献１に開示された先行検索システムでは、サーバの不正として、ファイルのすり替えを検出することができない。その理由は、次の通りである。
【００１２】
例えば、ファイルＤｎが別のファイルＤｍにすり替えられたとする（ｎ≠ｍ）。この場合、上記キーワードｉの暗号文Ｅ（キーワードｉ）に応答して、サーバは、ユーザ端末へ各組（Ｅ（Ｄｎ）, sign（Ｅ（Ｄｎ）））のいずれか１つを別の組（Ｅ（Ｄｍ）, sign（Ｅ（Ｄｍ）））にすり替えて返送することになる。ユーザ端末では、上述したように、デジタル署名sign（Ｅ（Ｄｎ））またはsign（Ｅ（Ｄｍ））をチェックするだけなので、ファイルＤｎが別のファイルＤｍにすり替えられたのを判断することができない。また、ユーザ端末には、デジタル署名Ｙｉが返送されるが、すり替えの場合はファイル数が変化しないので、正しいと判断してしまう。よって、ファイルのすり替えを自動的に検出することができない。
【００１３】
尚、非特許文献１では、ユーザ自身が、人手により、ファイルＤｍがキーワードｉを含むかをチェックすることにより、ファイルのすり替えをチェックできると記載（主張）している。しかしながら、ファイルＤｎ、Ｄｍが写真などの場合、そのようなチェックを行うことは不可能である。
【００１４】
したがって本発明の目的は、サーバの不正として、ファイルの削除、追加、改ざんのみならず、ファイルのすり替えをも検出できる、検索システム、検索方法、および検索プログラムを提供することにある。
【課題を解決するための手段】
【００１５】
本発明の第１の態様に係る検索システムは、ユーザ端末がサーバに複数のファイルを保管し、ユーザ端末がキーワード検索によってサーバから所望のファイルの集合を取得する検索システムであって、ユーザ端末は、複数のファイルをサーバに保管するファイル保管手段と、キーワードと当該キーワードを含む全てのファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成し、この生成した検証情報をサーバに保管する検証情報生成部と、検索キーワードをサーバへ送って、サーバから検索キーワードを含むファイルの集合と検索キーワードに対応する検証情報とを取得するファイル取得手段と、この取得した検証情報が、検索キーワードと取得したファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認して取得したファイルの集合を所望のファイルの集合として得、そうでなければ拒否する検証部と、を備える。
【００１６】
本発明の第２の態様による検索システムは、ユーザ端末がサーバに複数の暗号ファイルを保管し、ユーザ端末がキーワード検索によってサーバから所望のファイルの集合を取得する検索システムであって、ユーザ端末は、暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、複数の暗号ファイルをサーバに保管する暗号ファイル保管手段と、キーワードと当該キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成し、その生成した検証情報をサーバに保管する検証情報生成部と、暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードをサーバへ送って、サーバから暗号検索キーワードを含む暗号ファイルの集合と検索キーワードに対応する検証情報とを取得する暗号ファイル取得手段と、その取得した検証情報が、検索キーワードと取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認して取得した暗号ファイルの集合を復号して所望のファイルの集合を得、そうでなければ拒否する検証部と、を備える。
【発明の効果】
【００１７】
本発明では、キーワードと当該キーワードを含む全てのファイル（暗号ファイル）の集合との生成用組に対して所定のアルゴリズムに従って検証情報を生成し、その生成した検証情報をサーバに保管しているので、サーバの不正として、ファイルの削除、追加、改ざんばかりでなく、ファイルのすり替えをも検出することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態に係る検索システムの格納フェーズの動作を説明するための概略ブロック図である。
【図２】本発明の第１の実施形態に係る検索システムの検索フェーズの動作を説明するための概略ブロック図である。
【図３】本発明の第２の実施形態に係る検索システムの格納フェーズの動作を説明するための概略ブロック図である。
【図４】本発明の第２の実施形態に係る検索システムの検索フェーズの動作を説明するための概略ブロック図である。
【図５】本発明の第３の実施形態に係る検索システムの格納フェーズの動作を説明するための概略ブロック図である。
【図６】本発明の第３の実施形態に係る検索システムの検索フェーズの動作を説明するための概略ブロック図である。
【図７】本発明の第４の実施形態に係る検索システムの格納フェーズの動作を説明するための概略ブロック図である。
【図８】本発明の第４の実施形態に係る検索システムの検索フェーズの動作を説明するための概略ブロック図である。
【図９】本発明の第１の実施例に係る検索システムの構成を示すブロック図である。
【図１０】図９に示した検索システムに使用される索引の一具体例を示す図である。
【図１１】図９に示した検索システムに使用される、クライアントの検証情報生成部の動作を説明するためのフローチャートである。
【図１２】図１１に示した検証情報生成部の動作の一具体例を示す図である。
【図１３】図９に示した検索システムに使用される、クライアントの検証部の動作を説明するためのフローチャートである。
【図１４】図１３に示した検証部の動作の一具体例を示す図である。
【図１５】本発明の第２の実施例に係る検索システムの構成を示すブロック図である。
【図１６】図１５に示した検索システムに使用される索引の一具体例を示す図である。
【図１７】図１５に示した検索システムに使用される、クライアントの検証情報生成部の動作を説明するためのフローチャートである。
【図１８】図１７に示した検証情報生成部の動作の一具体例を示す図である。
【図１９】図１５に示した検索システムに使用される、クライアントの検証部の動作を説明するためのフローチャートである。
【図２０】図１９に示した検証部の動作の一具体例を示す図である。
【発明を実施するための形態】
【００１９】
［概要］
以下、本発明の実施形態の概要について説明する。
【００２０】
本発明の実施形態による検索システムは、キーワード検索におけるサーバの不正を検出するシステムであるが、サーバの不正として、ファイルの「削除」、「追加」、「改ざん」のみならず、ファイルの「すり替え」をも検出できる検索システムである。
【００２１】
本実施形態に係る検索システムは、ファイルが暗号化されている場合と、ファイルが暗号化されていない場合との両者に適用できる。また、この技術分野において周知のように、メッセージの認証機能には、デジタル署名を利用する場合と、メッセージ認証コード（Message Authentication code,ＭＡＣ）を利用して認証子を生成する場合とがある。なお、デジタル署名と認証子とは、総称して、検証情報と呼ばれる。従って、本実施形態に係る検索システムは、以下の第１乃至第４の実施形態に分けられる。
【００２２】
一般に、検証情報は、所定の生成アルゴリズムによって生成され、所定の検証アルゴリズムによって検証（チェック）される。検証情報がデジタル署名の場合、所定の生成アルゴリズムは署名生成アルゴリズムから成り、所定の検証アルゴリズムは署名検証アルゴリズムから成る。一方、検証情報が認証子の場合、所定の生成アルゴリズムはＭＡＣ生成アルゴリズムから成り、所定の検証アルゴリズムはＭＡＣ検証アルゴリズムから成る。
【００２３】
本発明の第１の実施形態に係る検索システムは、ユーザ端末がファイルを暗号化せずにサーバに保管する場合であって、メッセージの認証機能（検証情報）としてデジタル署名を利用する検索システムである。
【００２４】
このようなユーザ端末がファイルを暗号化せずにサーバに保管する場合、従来においては、サーバの不正を検出する方法は知られていない。本第１の実施形態に係る検索システムでは、このような場合においても、後述するように、サーバの不正を検出することができる。
【００２５】
本発明の第２の実施形態に係る検索システムは、ユーザ端末がファイルを暗号化せずにサーバに保管する場合であって、メッセージの認証機能（検証情報）としてＭＡＣ（認証子）を利用する検索システムである。
【００２６】
この技術分野において周知のように、デジタル署名とは異なり、ＭＡＣは裁判での証拠能力がない。その代わりに、デジタル署名と比較して、ＭＡＣは高速であるという利点がある。
【００２７】
本発明の第３の実施形態に係る検索システムは、ユーザ端末がファイルおよびキーワードを暗号化してサーバに保管する場合であって、メッセージの認証機能（検証情報）としてデジタル署名を利用する検索システムである。
【００２８】
前述したように、先行検索システムでは、ユーザ端末は、サーバの不正として、ファイルの削除、追加、改ざんのみを検出できる。これに対して、本第３の実施形態に係る検索システムでは、それらに加え、ファイルのすり替えをも検出できる。また、先行検索システムに比べ、本第３の実施形態に係る検索システムは通信量も少ない。
【００２９】
本発明の第４の実施形態に係る検索システムは、ユーザ端末がファイルおよびキーワードを暗号化してサーバに保管する場合であって、メッセージの認証機能（検証情報）としてＭＡＣ（認証子）を利用する検索システムである。
【００３０】
尚、前述したように、検索システムの動作は、ユーザ端末がファイル（暗号ファイル）をサーバに格納する「格納フェーズ」と、ユーザ端末がサーバから所望のファイルを検索する「検索フェーズ」と、に分けられる。
【００３１】
以下、図面を参照して、本発明の第１乃至第４の実施形態に係る検索システムについて説明する。
【００３２】
［第１の実施形態］
図１および図２を参照して、本発明の第１の実施形態に係る検索システム１００について説明する。図示の第１の実施形態に係る検索システム１００は、ユーザ端末２００と、サーバ３００とから構成される。
【００３３】
検索システム１００は、ユーザ端末２００が複数のファイルをサーバ３００に保管し、ユーザ端末２００がキーワード検索によってサーバ３００から所望のファイルの集合を取得するシステムである。
【００３４】
先ず、図１を参照して、本発明の第１の実施形態に係る検索システム１００における格納フェーズについて説明する。
【００３５】
格納フェーズにおいては、ユーザ端末２００は、以下の動作を行う。
【００３６】
先ず、ユーザ端末２００は、Ｎ（Ｎは１以上の整数）個のファイルである、ファイル１、・・・、ファイルＮをサーバ３００に保管する。また、必要に応じ、ユーザ端末２００は、索引を生成し、その生成した索引をサーバ３００に保管する。ここで、索引とは、キーワードとファイルとの対応表のことをいう。
【００３７】
ユーザ端末２００は、鍵生成アルゴリズムに従って、デジタル署名の公開鍵ｖｋと秘密鍵ｓｋとを生成する。ここで、ユーザ端末２００は、公開鍵ｖｋを公開し、秘密鍵ｓｋを秘密に保持する。尚、公開鍵ｖｋは検証鍵又は検査鍵とも呼ばれ、秘密鍵ｓｋは署名鍵又は生成鍵とも呼ばれる。
【００３８】
次に、ユーザ端末２００は、各キーワードについて、以下の動作を行う。ここで、キーワードの総数がＩ（Ｉは１以上の整数）個であるとし、キーワード１、・・・、キーワードＩから成るとする。キーワードｉ（１≦ｉ≦Ｉ）を含むファイルの集合Ｐｉを下記の数式のようにおく。 
Ｐｉ＝｛ファイルｊ｜ファイルｊはキーワードｉを含む｝
【００３９】
ユーザ端末２００は、秘密鍵ｓｋを使い、キーワードｉと当該キーワードｉを含む全てのファイルの集合Ｐｉとの生成用組（キーワードｉ、Ｐｉ）に対するデジタル署名σｉを、署名生成アルゴリズムに従って下記の数式のように生成する。 
σｉ＝ｓｉｇｎ｛キーワードｉ、Ｐｉ｝
【００４０】
そして、ユーザ端末２００は、この生成したデジタル署名σｉをサーバ３００に保管する。
【００４１】
次に、図２を参照して、本発明の第１の実施形態に係る検索システム１００における検索フェーズについて説明する。
【００４２】
検索フェーズにおいて、ユーザ端末２００のユーザがキーワードｉについて検索したいと仮定する。したがって、キーワードｉが検索キーワードｉである。
【００４３】
この場合、ユーザ端末２００は、検索キーワードｉをサーバ３００に送る。図２では、検索キーワードとしてキーワード１をサーバ３００に送る場合の例を示している。この例では、キーワード１を含むファイルの集合Ｐ１が、以下の数式であるとしている。 
Ｐ１＝｛ファイル２、ファイル５｝
【００４４】
したがって、そのデジタル署名σ１は、以下の数式で表わされる。 
σ１＝ｓｉｇｎ（キーワード１、ファイル２、ファイル５）
【００４５】
サーバ３００は、検索キーワードｉを含むファイルの集合Ｐｉと当該検索キーワードｉに対応するデジタル署名σｉとをユーザ端末２００へ返す。したがって、ユーザ端末２００は、ファイルの集合Ｐｉとデジタル署名σｉとを取得する。
【００４６】
次に、ユーザ端末２００は、公開鍵ｖｋを使い、取得したデジタル署名σｉが検索キーワードｉと取得したファイルの集合Ｐｉとの検証用組（キーワードｉ、Ｐｉ）のデジタル署名であるか否かを、署名生成アルゴリズムに従ってチェックする。ユーザ端末２００は、チェックの結果が正しければ、承認して（accept）、取得したファイルの集合Ｐｉを所望のファイルの集合として得、そうでなければ拒否する（reject）。
【００４７】
このように、本発明の第１の実施形態では、ユーザ端末２００が各キーワードｉと当該キーワードｉを含む全てのファイルの集合Ｐｉとを一組（生成用組）として、それに対するデジタル署名σｉを生成し、生成したデジタル署名σｉをサーバ３００に保管しているので、検索時に、サーバ３００の不正として、ファイルの削除、追加、改ざんばかりでなく、ファイルのすり替えも検出することができる。
【００４８】
［第２の実施形態］
図３および図４を参照して、本発明の第２の実施形態に係る検索システム１００Ａについて説明する。図示の第２の実施形態に係る検索システム１００Ａは、ユーザ端末２００Ａと、サーバ３００Ａとから構成される。
【００４９】
検索システム１００Ａは、ユーザ端末２００Ａが複数のファイルをサーバ３００Ａに保管し、ユーザ端末２００Ａがキーワード検索によってサーバ３００Ａから所望のファイルの集合を取得するシステムである。
【００５０】
先ず、図３を参照して、本発明の第２の実施形態に係る検索システム１００Ａにおける格納フェーズについて説明する。
【００５１】
格納フェーズにおいては、ユーザ端末２００Ａは、以下の動作を行う。
【００５２】
先ず、ユーザ端末２００Ａは、Ｎ（Ｎは１以上の整数）個のファイルである、ファイル１、・・・、ファイルＮをサーバ３００Ａに保管する。また、必要に応じ、ユーザ端末２００Ａは、索引を生成し、その生成した索引をサーバ３００Ａに保管する。ここで、索引とは、キーワードとファイルの対応表のことをいう。
【００５３】
ユーザ端末２００Ａは、ＭＡＣの秘密鍵Ｋを生成し、秘密鍵Ｋを秘密に保持する。
【００５４】
次に、ユーザ端末２００Ａは、各キーワードについて、以下の動作を行う。ここで、キーワードの総数がＩ（Ｉは１以上の整数）個であるとし、キーワード１、・・・、キーワードＩから成るとする。キーワードｉ（１≦ｉ≦Ｉ）を含むファイルの集合Ｐｉを下記の数式のようにおく。 
Ｐｉ＝｛ファイルｊ｜ファイルｊはキーワードｉを含む｝
【００５５】
ユーザ端末２００Ａは、ＭＡＣの秘密鍵Ｋを使い、キーワードｉと当該キーワードｉを含む全てのファイルの集合Ｐｉとの生成用組（キーワードｉ、Ｐｉ）に対する認証子Ｔａｇｉを、ＭＡＣ生成アルゴリズムに従って、下記の数式によって生成する。 
Ｔａｇｉ＝ｓｉｇｎ｛キーワードｉ、Ｐｉ｝
【００５６】
そして、ユーザ端末２００Ａは、この生成した認証子Ｔａｇｉをサーバ３００Ａに保管する。
【００５７】
次に、図４を参照して、本発明の第２の実施形態に係る検索システム１００Ａにおける検索フェーズについて説明する。
【００５８】
検索フェーズにおいて、ユーザ端末２００Ａのユーザがキーワードｉについて検索したいと仮定する。したがって、キーワードｉが検索キーワードｉである。
【００５９】
この場合、ユーザ端末２００Ａは、検索キーワードｉをサーバ３００に送る。図４では、ユーザ端末２００Ａが検索キーワードとしてキーワード１をサーバ３００Ａに送る場合の例を示している。この例では、キーワード１を含むファイルの集合Ｐ１が、下記の数式であるとしている。 
Ｐ１＝｛ファイル２、ファイル５｝
【００６０】
したがって、その認証子Ｔａｇ１は、下記の数式で表わされる。 
Ｔａｇ１＝ｓｉｇｎ（キーワード１、ファイル２、ファイル５）
【００６１】
サーバ３００Ａは、検索キーワードｉを含むファイルの集合Ｐｉと、当該検索キーワードｉに対応する認証子Ｔａｇｉとをユーザ端末２００Ａへ返す。したがって、ユーザ端末２００Ａは、ファイルの集合Ｐｉと認証子Ｔａｇｉと取得する。
【００６２】
ユーザ端末２００Ａは、ＭＡＣの秘密鍵Ｋを使い、取得した認証子Ｔａｇｉが、検索キーワードｉと取得したファイルの集合Ｐｉとの検証用組（キーワードｉ、Ｐｉ）の認証子であるか否かを、ＭＡＣ検証アルゴリズムに従ってチェックする。ユーザ端末２００Ａは、チェックの結果が正しければ、承認して（accept）、取得したファイルの集合Ｐｉを所望のファイルの集合として得、そうでなければ拒否する（reject）。
【００６３】
このように、本発明の第２の実施形態では、ユーザ端末２００Ａが各キーワードｉと当該キーワードｉを含む全てのファイルの集合Ｐｉとを一組（生成用組）として、それに対する認証子Ｔａｇｉを生成して、生成した認証子Ｔａｇｉをサーバ３００Ａに保管しているので、検索時に、サーバ３００Ａの不正として、ファイルの削除、追加、改ざんばかりでなく、ファイルのすり替えも検出することができる。
【００６４】
［第３の実施形態］
図５および図６を参照して、本発明の第３の実施形態に係る検索システム１００Ｂについて説明する。図示の第３の実施形態に係る検索システム１００Ｂは、ユーザ端末２００Ｂと、サーバ３００Ｂとから構成される。
【００６５】
検索システム１００Ｂは、ユーザ端末２００Ｂがサーバ３００Ｂに複数の暗号ファイルを保管し、ユーザ端末２００Ｂがキーワード検索によってサーバ３００Ｂから所望のファイルの集合を取得するシステムである。
【００６６】
先ず、図５を参照して、本発明の第３の実施形態に係る検索システム１００Ｂにおける格納フェーズについて説明する。
【００６７】
格納フェーズにおいては、ユーザ端末２００Ｂは、以下の動作を行う。
【００６８】
先ず、ユーザ端末２００Ｂは、暗号化の秘密鍵Ｋを生成し、その秘密鍵Ｋを秘密に保持する。
【００６９】
次に、ユーザ端末２００Ｂは、暗号化の秘密鍵Ｋを使い、Ｎ（Ｎは１以上の整数）個のファイルである、ファイル１、・・・、ファイルＮの暗号文Ｅ（ファイル１）、・・・、Ｅ（ファイルＮ）を計算し、それら暗号文（暗号ファイル）をサーバ３００Ｂに保管する。また、必要に応じ、ユーザ端末２００Ｂは、索引を生成し、その生成した索引を、暗号化して、サーバ３００Ｂに保管する。ここで、索引とは、キーワードとファイルの対応表のことをいう。
【００７０】
また、ユーザ端末２００Ｂは、デジタル署名の公開鍵（検証鍵）ｖｋと秘密鍵（署名鍵）ｓｋとを鍵生成アルゴリズムに従って生成する。ここで、ユーザ端末２００Ｂは、公開鍵（検証鍵）ｖｋを公開し、秘密鍵（署名鍵）ｓｋを秘密に保持する。
【００７１】
次に、ユーザ端末２００Ｂは、各キーワードについて、以下の動作を行う。ここで、キーワードの総数がＩ（Ｉは２以上の整数）個であるとし、キーワード１、・・・、キーワードＩから成るとする。キーワードｉ（１≦ｉ≦Ｉ）を含むファイルの暗号文（暗号ファイル）の集合Ｑｉを、下記の数式のようにおく。 
Ｑｉ＝｛Ｅ（ファイルｊ）｜ファイルｊはキーワードｉを含む｝
【００７２】
ユーザ端末２００Ｂは、デジタル署名の秘密鍵ｓｋを使い、キーワードｉと当該キーワードｉを含む全ての暗号ファイルの集合Ｑｉとの生成用組（キーワードｉ、Ｑｉ）に対するデジタル署名σｉを、署名生成アルゴリズムに従って、下記の数式のように生成する。
σｉ＝ｓｉｇｎ｛キーワードｉ、Ｑｉ｝
【００７３】
そして、ユーザ端末２００Ｂは、この生成したデジタル署名σｉをサーバ３００Ｂに保管する。
【００７４】
その代わりに、ユーザ端末２００Ｂは、デジタル署名の秘密鍵ｓｋを使い、暗号化の秘密鍵Ｋを使ってキーワードｉを暗号化して得られる暗号キーワードＥ’（キーワードｉ）と当該暗号キーワードＥ’（キーワードｉ）を含む全ての暗号ファイルの集合Ｑｉとの生成用組（Ｅ’（キーワードｉ）、Ｑｉ）に対するデジタル署名σｉを、署名生成アルゴリズムに従って、下記の数式のように生成し、
σｉ＝ｓｉｇｎ｛Ｅ’（キーワードｉ）、Ｑｉ｝
この生成したデジタル署名σｉをサーバ３００Ｂに保管してもよい。
【００７５】
次に、図６を参照して、本発明の第３の実施形態に係る検索システム１００Ｂにおける検索フェーズについて説明する。
【００７６】
検索フェーズにおいて、ユーザ端末２００Ｂのユーザがキーワードｉについて検索したいと仮定する。したがって、キーワードｉが検索キーワードｉである。
【００７７】
この場合、ユーザ端末２００Ｂは、暗号化の秘密鍵Ｋを使って検索キーワードｉを暗号化して得られる暗号検索キーワードＥ’（キーワードｉ）をサーバ３００Ｂに送る。図６では、検索キーワードとしてキーワード１の暗号文である暗号検索キーワードＥ’（キーワード１）をサーバ３００Ｂに送る場合の例を示している。この例では、キーワード１を含むファイルの暗号文（暗号ファイル）の集合Ｑ１が、下記の数式であるとしている。 
Ｑ１＝｛Ｅ（ファイル２）、Ｅ（ファイル５）｝
【００７８】
したがって、そのデジタル署名σ１は、下記の数式で表わされる。 
σ１＝ｓｉｇｎ（キーワード１、Ｅ（ファイル２）、Ｅ（ファイル５））
【００７９】
または、そのデジタル署名σ１は、下記の数式で表わされる。 
σ１＝ｓｉｇｎ（Ｅ’（キーワード１）、Ｅ（ファイル２）、Ｅ（ファイル５））
【００８０】
サーバ３００Ｂは、キーワードｉを含むファイルの暗号文（暗号ファイル）の集合Ｑｉとそのデジタル署名σｉとをユーザ端末２００Ｂへ返す。したがって、ユーザ端末２００Ｂは、暗号ファイルの集合Ｑｉとそのデジタル署名σｉとを取得する。
【００８１】
ユーザ端末２００Ｂは、デジタル署名の公開鍵ｖｋを使い、取得したデジタル署名σｉが、検索キーワードｉと取得した暗号ファイルの集合Ｑｉとの検証用組（キーワードｉ、Ｑｉ）のデジタル署名であるか否かを、署名検証アルゴリズムに従ってチェックする。
【００８２】
或いは、ユーザ端末２００Ｂは、デジタル署名の公開鍵ｖｋを使い、取得したデジタル署名σｉが、暗号検索キーワード（Ｅ’（キーワードｉ）と取得した暗号ファイルの集合Ｑｉとの検証用組（Ｅ’（キーワードｉ）、Ｑｉ）のデジタル署名であるか否かを、署名検証アルゴリズムに従ってチェックする。
【００８３】
ユーザ端末２００Ｂは、チェックした結果が正しければ、承認して（accept）、取得した暗号ファイルの集合Ｑｉを復号して所望のファイルの集合Ｐｉを得、そうでなければ拒否する（reject）。
【００８４】
このように、本発明の第３の実施形態では、ユーザ端末２００Ｂが各キーワードｉ（又は暗号キーワード）と当該キーワードｉ（又は暗号キーワード）を含む全てのファイルの暗号文（暗号ファイル）の集合Ｑｉとを一組（生成用組）として、それに対するデジタル署名σｉを生成し、生成したデジタル署名σｉをサーバ３００Ｂに保管しているので、検索時に、サーバ３００Ｂの不正として、ファイルの削除、追加、改ざんばかりでなく、ファイルのすり替えも検出することができる。
【００８５】
［第４の実施形態］
図７および図８を参照して、本発明の第４の実施形態に係る検索システム１００Ｃについて説明する。図示の第４の実施形態に係る検索システム１００Ｃは、ユーザ端末２００Ｃと、サーバ３００Ｃとから構成される。
【００８６】
検索システム１００Ｃは、ユーザ端末２００Ｃがサーバ３００Ｃに複数の暗号ファイルを保管し、ユーザ端末２００Ｃがキーワード検索によってサーバ３００Ｃから所望のファイルの集合を取得するシステムである。
【００８７】
先ず、図７を参照して、本発明の第４の実施形態に係る検索システム１００Ｃにおける格納フェーズについて説明する。
【００８８】
格納フェーズにおいては、ユーザ端末２００Ｃは、以下の動作を行う。
【００８９】
先ず、ユーザ端末２００Ｃは、暗号化の秘密鍵Ｋ０およびＭＡＣの秘密鍵Ｋ１を生成し、両者を秘密に保持する。
【００９０】
次に、ユーザ端末２００Ｃは、暗号化の暗号鍵Ｋ０を使い、Ｎ（Ｎは１以上の整数）個のファイルである、ファイル１、・・・、ファイルＮの暗号文（暗号ファイル）Ｅ（ファイル１）、・・・、Ｅ（ファイルＮ）をサーバ３００Ｃに保管する。また、必要に応じ、ユーザ端末２００Ｃは、索引を生成し、その生成した索引を暗号化して、サーバ３００Ｃに保管する。ここで、索引とは、キーワードとファイルの対応表のことをいう。
【００９１】
次に、ユーザ端末２００Ｃは、各キーワードについて、以下の動作を行う。ここで、キーワードの総数がＩ（Ｉは１以上の整数）個であるとし、キーワード１、・・・、キーワードＩから成るとする。キーワードｉ（１≦ｉ≦Ｉ）を含むファイルの暗号文（暗号ファイル）の集合Ｑｉを下記の数式のようにおく。 
Ｑｉ＝｛Ｅ（ファイルｊ）｜ファイルｊはキーワードｉを含む｝
【００９２】
ユーザ端末２００Ｃは、ＭＡＣの秘密鍵Ｋ１を使い、キーワードｉと当該キーワードｉを含む全ての暗号ファイルの集合Ｑｉとの生成用組（キーワードｉ、Ｑｉ）に対する認証子Ｔａｇｉを、ＭＡＣ生成アルゴリズムに従って、下記の数式のように生成する。 
Ｔａｇｉ＝ｓｉｇｎ｛キーワードｉ、Ｑｉ｝
【００９３】
そして、ユーザ端末２００Ｃは、この生成した認証子Ｔａｇｉをサーバ３００Ｃに保管する。
【００９４】
その代わりに、ユーザ端末２００Ｃは、ＭＡＣの秘密鍵Ｋ１を使い、暗号化の暗号鍵Ｋ０を使ってキーワードｉを暗号化して得られる暗号キーワードＥ’（キーワードｉ）と当該暗号キーワードＥ’（キーワードｉ）を含む全ての暗号ファイルの集合Ｑｉとの生成用組（Ｅ’（キーワードｉ）、Ｑｉ）に対する認証子Ｔａｇｉを、ＭＡＣ生成アルゴリズムに従って、下記の数式のように生成し、
Ｔａｇｉ＝ｓｉｇｎ｛Ｅ’（キーワードｉ）、Ｑｉ｝
この生成した認証子Ｔａｇｉをサーバ３００Ｃに保管してもよい。
【００９５】
次に、図８を参照して、本発明の第４の実施形態に係る検索システム１００Ｃにおける検索フェーズについて説明する。
【００９６】
検索フェーズにおいて、ユーザ端末２００Ｃのユーザがキーワードｉについて検索したいと仮定する。したがって、キーワードｉが検索キーワードｉである。
【００９７】
この場合、ユーザ端末２００Ｃは、暗号化の秘密鍵Ｋ０を使って検索キーワードｉを暗号して得られる暗号検索キーワードＥ’（キーワードｉ）をサーバ３００Ｃに送る。図８では、検索キーワードとしてキーワード１の暗号文である暗号検索キーワードＥ’（キーワード１）をサーバ３００Ａに送る場合の例を示している。この例では、キーワード１を含むファイルの暗号文（暗号ファイル）の集合Ｑ１が、下記の数式であるとしている。 
Ｑ１＝｛Ｅ（ファイル２）、Ｅ（ファイル５）｝
【００９８】
したがって、その認証子Ｔａｇ１は、下記の数式で表わされる。 
Ｔａｇ１＝
ｓｉｇｎ（キーワード１、Ｅ（ファイル２）、Ｅ（ファイル５））
【００９９】
または、その認証子Ｔａｇ１は、下記の数式で表わされる。 
Ｔａｇ１＝
ｓｉｇｎ（Ｅ’（キーワード１）、Ｅ（ファイル２）、Ｅ（ファイル５））
【０１００】
サーバ３００Ｃは、検索キーワードｉを含むファイルの暗号文（暗号ファイル）の集合Ｑｉとその認証子Ｔａｇｉとをユーザ端末２００Ｃへ返す。したがって、ユーザ端末２００Ｃは、暗号ファイルの集合Ｑｉとその認証子Ｔａｇｉとを取得する。
【０１０１】
ユーザ端末２００Ｃは、ＭＡＣの秘密鍵Ｋ１を使い、取得した認証子Ｔａｇｉが、検索キーワードｉと取得した暗号ファイルの集合Ｑｉとの検証用組（キーワードｉ、Ｑｉ）の認証子であるか否かを、ＭＡＣ検証アルゴリズムに従ってチェックする。
【０１０２】
或いは、ユーザ端末２００Ｃは、ＭＡＣの秘密鍵Ｋ１を使い、取得した認証子Ｔａｇｉが、暗号検索キーワードＥ’（キーワードｉ）と取得した暗号ファイルの集合Ｑｉとの検証用組（Ｅ’（キーワードｉ）、Ｑｉ）の認証子であるか否かを、ＭＡＣ検証アルゴリズムに従ってチェックする。
【０１０３】
ユーザ端末２００Ｃは、チェックした結果が正しければ、承認して（accept）、取得した暗号ファイルの集合Ｑｉを復号して所望のファイルの集合Ｐｉを得、そうでなければ拒否する（reject）。
【０１０４】
このように、本発明の第４の実施形態では、ユーザ端末２００Ｃが各キーワードｉ（又は暗号キーワード）と当該キーワードｉ（又は暗号キーワード）を含む全てのファイルの暗号文（暗号ファイル）の集合Ｑｉとを一組（生成用組）として、それに対する認証子Ｔａｇｉを生成し、生成した認証子Ｔａｇｉをサーバ３００Ｃに保管しているので、検索時に、サーバ３００Ｃの不正として、ファイルの削除、追加、改ざんばかりでなく、ファイルのすり替えも検出することができる。
【実施例１】
【０１０５】
図９を参照して、本発明の第１の実施例に係る検索システム１００Ｄについて説明する。図示の検索システム１００Ｄは、上述した本発明の第２の実施形態（又は、第１の実施形態）に係る検索システムに相当する検証システムである。検索システム１００Ｄは、クライアント２００Ｄとサーバ３００Ｄとから構成される。クライアント２００Ｄは、ユーザ端末とも呼ばれる。
【０１０６】
図示の検索システム１００Ｄは、クライアント（ユーザ端末）２００Ｄがサーバ３００Ｄに複数のファイルを保管し、クライアント（ユーザ端末）２００Ｄがキーワード検索によってサーバ３００Ｄから所望のファイルの集合を取得するシステムである。
【０１０７】
クライアント２００Ｄは、秘密鍵生成部２１０と、秘密鍵保持部２２０と、検証情報生成部２３０と、検証部２４０と、第１乃至第３の信号線（伝送線）２６０、２７０、２８０と、から構成されている。一方、サーバ３００Ｄは、記憶領域３１０と、検索部３２０とから構成されている。
【０１０８】
秘密鍵生成部２１０は、ＭＡＣの秘密鍵Ｋを生成する。秘密鍵保持部２２０は、この生成されたＭＡＣの秘密鍵Ｋを保持する。
【０１０９】
クライアント２００Ｄは、Ｎ個のファイルを第１の信号線（伝送線）２６０を介してサーバ３００Ｄへ送信する。サーバ３００Ｄは、その送られてきたＮ個のファイルを記憶領域３１０に保管する。したがって、第１の信号線（伝送線）２６０は、サーバ３００ＤにＮ個のファイルを保管するファイル保管手段として働く。
【０１１０】
また、クライアント２００Ｄは、索引を生成し、生成した索引を第２の信号線（伝送線）２７０を介してサーバ３００Ｄへ送信する。サーバ３００Ｄは、その送られてきた索引を記憶領域３１０に記憶する。したがって、第２の信号線（伝送線）２７０は、生成した索引をサーバ３００Ｄに保管する索引保管手段として働く。
【０１１１】
図１０に索引の具体例を示す。前述したように、索引は、キーワードと、それに対応するファイルの番号（ファイル番号）の対応表である。
【０１１２】
図示の例では、索引の番号１には、キーワードとして「情報工学」が記憶され、そのキーワードに対応するファイル番号として、「１」、「６」、「８」、「１１」が記憶されている。また、索引の番号２には、キーワードとして「茨城大学」が記憶され、そのキーワードに対応するファイル番号として、「３」、「６」、「１０」が記憶されている。
【０１１３】
図１１を参照して、クライアント２００Ｄの検索情報生成部２３０の動作について説明する。
【０１１４】
検証情報生成部２３０は、ＭＡＣの秘密鍵Ｋ、索引、ファイルの集合｛Ｄ１、Ｄ２、…｝を読み込む（ステップＳ１１０）。次に、検証情報生成部２３０は、各キーワードＷｉについて以下の処理を実行する（ステップＳ１２０）。ここでは、キーワードＷｉに対応するファイル番号を（ｉ１、ｉ２、…）とする。この場合、検索情報生成部２３０は、ＭＡＣの秘密鍵Ｋを使い、生成用組（Ｗｉ、Ｄｉ１、Ｄｉ２、…）に対応する認証子Ｔａｇｉを下記の数式によって計算する。 
Ｔａｇｉ＝ｆＫ（Ｗｉ、Ｄｉ１、Ｄｉ２、…）
ここで、ｆはＭＡＣ生成アルゴリズムである。
【０１１５】
尚、検証情報として、認証子Ｔａｇｉの代わりにデジタル署名σｉを使用する場合、ｆは署名生成アルゴリズムであって、検索情報生成部２３０は、ＭＡＣの秘密鍵Ｋの代わりにデジタル署名の秘密鍵ｓｋを使用し、生成用組（Ｗｉ、Ｄｉ１、Ｄｉ２、…）に対応するデジタル署名σｉを下記の数式によって計算する。 
σｉ＝ｆｓｋ（Ｗｉ、Ｄｉ１、Ｄｉ２、…）
【０１１６】
検索情報生成部２３０は、計算して得られた検証情報（Ｔａｇ１、Ｔａｇ２、…）を出力する（ステップＳ１３０）。これら検証情報（認証子）は、サーバ３００Ｄに送られ、サーバ３００Ｄは、これら検証情報（認証子）を記憶領域３１０に記憶する。
【０１１７】
次に、図１２を参照して、検証情報生成部２３０の動作について具体例を挙げて説明する。ここでは、キーワードが索引番号２の「茨城大学」である場合を例に挙げて説明する。
【０１１８】
この場合、検証情報生成部２３０は、索引を参照して、キーワード「茨城大学」を含む、該当するファイルの集合を選択する。この場合、索引番号２のファイル番号には、「３」、「６」、「１０」が記憶されているので、検索情報生成部２３０は、該当ファイルの集合Ｐ２として、ファイルＤ３、Ｄ６、およびＤ１０を選択する。
【０１１９】
そして、検証情報生成部２３０は、ＭＡＣの秘密鍵Ｋを使い、生成用組（茨城大学、Ｄ３、Ｄ６、Ｄ１０）に対する検証情報（認証子）Ｔａｇ２を、ＭＡＣ生成アルゴリズムに従って、下記数式で示されるように生成する。 
Ｔａｇ２＝ｆＫ（茨城大学、Ｄ３、Ｄ６、Ｄ１０）
【０１２０】
検証情報生成部２３０は、このようにして、キーワードｉ毎の検証情報（認証子）Ｔａｇｉを生成する。生成された検証情報（認証子）Ｔａｇｉは、サーバ３００Ｄへ送られ、サーバ３００Ｄは、送られてきた検証情報（認証子）Ｔａｇｉを記憶領域３１０に記憶する。
【０１２１】
尚、検証情報がデジタル署名σｉの場合、サーバ３００Ｄはデジタル署名σｉを記憶領域３１０に記憶する。
【０１２２】
検索時、クライアント２００Ｄは、検索キーワードＷを第３の信号線（伝送線）２８０を介してサーバ３００Ｄに送る。サーバ３００Ｄにおいては、検索キーワードＷに応答して、検索部３２０は、その検索キーワードＷを含むファイルの集合Ｐｉ＝（Ｄｉ１、Ｄｉ２、…）とその検証情報（認証子）Ｔａｇとをクライアント２００Ｄへ返す。したがって、クライアント２００Ｄは、ファイルの集合Ｐｉ＝（Ｄｉ１、Ｄｉ２、…）とその検証情報（認証子）Ｔａｇとを取得する。すなわち、第２の信号線（伝送線）２８０は、検索キーワードＷをサーバ３００Ｄへ送って、サーバ３００Ｄから、検索キーワードＷを含むファイルの集合Ｐｉ＝（Ｄｉ１、Ｄｉ２、…）とその検証情報（認証子）Ｔａｇとを取得するファイル取得手段として働く。
【０１２３】
次に、図１３を参照して、クライアント２００Ｄの検証部２４０の動作について説明する。
【０１２４】
検証部２４０は、秘密鍵保持部２２０に保持されたＭＡＣの秘密鍵Ｋと、検索キーワードＷとを読み込む（ステップＳ２１０）。次に、検証部２４０は、サーバ３００Ｄから送られてきたファイルの集合Ｐｉ＝（Ｄｉ１、Ｄｉ２、…）とその検証情報（認証子）Ｔａｇとを読み込む（ステップＳ２２０）。
【０１２５】
検証部２４０は、ＭＡＣの秘密鍵Ｋを使い、検証情報（認証子）Ｔａｇが検証用組（Ｗ、Ｄｉ１、Ｄｉ２、…）の認証子であるか否かを、ＭＡＣ検証アルゴリズムに従って、下記の数式に示されるように計算する（ステップＳ２３０）。 
VerifyＫ（Ｗ、Ｄｉ１、Ｄｉ２、…、Ｔａｇ）＝accept or reject
【０１２６】
検証部２４０は、acceptなら（ステップＳ２４０のＹｅｓ）、取得したファイルの集合Ｐｉ＝（Ｄｉ１、Ｄｉ２、…）を所望のファイルの集合として出力し（ステップＳ２５０）、rejectなら（ステップＳ２４０のＮｏ）、rejectを出力する（ステップＳ２６０）。
【０１２７】
尚、検証情報がデジタル署名σである場合、検証部２４０は、デジタル署名の公開鍵（検証鍵）ｖｋを使い、デジタル署名σが、検証用組（Ｗ、Ｄｉ１、Ｄｉ２、…）の認証子であるか否かを、署名検証アルゴリズムに従って、下記の数式に示されるように計算する。 
Verifyｖｋ（Ｗ、Ｄｉ１、Ｄｉ２、…、σ）＝accept or reject
【０１２８】
次に、図１４を参照して、検証部２４０の動作について具体例を挙げて説明する。ここでは、検索キーワードＷが索引番号２の「茨城大学」である場合を例に挙げて説明する。
【０１２９】
この場合、検証部２４０は、秘密鍵保持部２２０からＭＡＣの秘密鍵Ｋを読み込み、検索キーワードとして「茨城大学」を読み込み、サーバ３００Ｄから送られてきた、ファイルの集合Ｐ２＝（Ｄ３、Ｄ６、Ｄ１０）と検証情報（認証子）Ｔａｇ２とを読み込む。
【０１３０】
そして、検証部２４０は、ＭＡＣの秘密鍵Ｋを使い、検証情報（認証子）Ｔａｇ２が検証用組（茨城大学、Ｄ３、Ｄ６、Ｄ１０）の認証子であるか否かを、ＭＡＣ検証アルゴリズムに従って、下記の数式に示されるように計算する。 
VerifyＫ（茨城大学、Ｄ３、Ｄ６、Ｄ１０、Ｔａｇ２）＝accept or reject
【０１３１】
検証部２４０は、acceptなら、取得したファイルの集合Ｐ２＝（Ｄ３、Ｄ６、Ｄ１０）を所望のファイルの集合として出力し、rejectなら、rejectを出力する。
【０１３２】
次に、本第１の実施例の効果について説明する。
【０１３３】
本第１の実施例の検索システム１００Ｄは、サーバ３００Ｄの不正として、ファイルの削除、追加、改ざんのみならず、ファイルのすり替えをも検出できる。その理由は、クライアント（ユーザ端末）２００Ｄが各キーワードＷｉと当該キーワードＷｉを含む全てのファイルの集合Ｐｉ＝（Ｄｉ１、Ｄｉ２、…）とを一組（生成用組）として、それに対する検証情報Ｔａｇｉ（又はσｉ）を生成し、生成した検証情報Ｔａｇｉ（又はσｉ）をサーバ３００Ｄに保管しているからである。
【実施例２】
【０１３４】
図１５を参照して、本発明の第２の実施例に係る検索システム１００Ｅについて説明する。図示の検索システム１００Ｅは、上述した本発明の第４の実施形態（又は、第３の実施形態）に係る検索システムに相当する検証システムである。検索システム１００Ｅは、クライアント２００Ｅとサーバ３００Ｅとから構成される。クライアント２００Ｅは、ユーザ端末とも呼ばれる。
【０１３５】
検索システム１００Ｅは、クライアント（ユーザ端末）２００Ｅがサーバ３００Ｅに複数の暗号ファイルを保管し、クライアント（ユーザ端末）２００Ｅがキーワード検索によってサーバ３００Ｅから所望のファイルの集合を取得するシステムである。
【０１３６】
クライアント２００Ｅは、秘密鍵生成部２１０Ａと、秘密鍵保持部２２０Ａと、検証情報生成部２３０Ａと、検証部２４０Ａと、第１乃至第３の暗号化部２６０Ａ、２７０Ａ、および２８０Ａと、から構成されている。一方、サーバ３００Ｅは、記憶領域３１０と、検索部３２０とから構成されている。
【０１３７】
秘密鍵生成部２１０Ａは、暗号化の秘密鍵Ｋ０とＭＡＣの秘密鍵Ｋ１とを生成する。秘密鍵保持部２２０は、この生成された暗号化の秘密鍵Ｋ０とＭＡＣの秘密鍵Ｋ１とを保持する。
【０１３８】
尚、検証情報がデジタル署名である場合、秘密鍵生成部２１０Ａは、暗号化の秘密鍵Ｋとデジタル署名の公開鍵ｖｋと秘密鍵ｓｋとを生成する。
【０１３９】
第１の暗号化部２６０Ａは、暗号化の秘密鍵Ｋ０を使い、Ｎ個のファイルの暗号文である暗号ファイル｛Ｅ（Ｄ１）、Ｅ（Ｄ２）、…｝を計算する。これら暗号ファイル｛Ｅ（Ｄ１）、Ｅ（Ｄ２）、…｝は、サーバ３００Ｅへ送られ、サーバ３００Ｅは、その送られてきた暗号ファイル｛Ｅ（Ｄ１）、Ｅ（Ｄ２）、…｝を記憶領域３１０に記憶する。したがって、第１の暗号化部２６０Ａは、暗号化の秘密鍵Ｋ０を使って複数のファイルをそれぞれ暗号化し、複数の暗号ファイルをサーバ３００Ｅに保管する暗号ファイル保管手段として働く。
【０１４０】
尚、検証情報がデジタル署名である場合、第１の暗号化部２６０Ａは、暗号化の秘密鍵Ｋを使い、Ｎ個のファイルの暗号文（暗号ファイル）を計算する。
【０１４１】
また、クライアント２００Ｅは、索引を生成する。
【０１４２】
図１６に索引の具体例を示す。前述したように、索引は、キーワードと、それに対応するファイルの番号（ファイル番号）の対応表である。
【０１４３】
図示の例では、索引の番号１には、キーワードとして「情報工学」が記憶され、そのキーワードに対応するファイル番号として、「１」、「６」、「８」、「１１」が記憶されている。また、索引の番号２には、キーワードとして「茨城大学」が記憶され、そのキーワードに対応するファイル番号として、「３」、「６」、「１０」が記憶されている。
【０１４４】
第２の暗号化部２７０Ａは、暗号化の秘密鍵Ｋ０を使い、生成した索引を暗号化して、暗号索引をサーバ３００Ｅへ送信する。サーバ３００Ｅは、その送られてきた暗号索引を記憶領域３１０に記憶する。したがって、第２の暗号化部２７０Ａは、生成した索引を暗号化して、暗号索引をサーバ３００Ｅへ保管する暗号索引保管手段として働く。
【０１４５】
図１７を参照して、クライアント２００Ｅの検証情報生成部２３０Ａの動作について説明する。
【０１４６】
検証情報生成部２３０Ａは、ＭＡＣの秘密鍵Ｋ１、索引、暗号ファイルの集合｛Ｅ（Ｄ１）、Ｅ（Ｄ２）、…｝を読み込む（ステップＳ１１０Ａ）。次に、検証情報生成部２３０Ａは、各キーワードＷｉについて以下の処理を実行する（ステップＳ１２０Ａ）。ここでは、キーワードＷｉに対応するファイル番号を（ｉ１、ｉ２、…）とする。この場合、検索情報生成部２３０は、ＭＡＣの秘密鍵Ｋ１を使い、生成用組（Ｗｉ、Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）に対応する検証情報（認証子）Ｔａｇｉを下記の数式のように計算する。 
Ｔａｇｉ＝ｆＫ１（Ｗｉ、Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）
ここで、ｆはＭＡＣ生成アルゴリズムである。
【０１４７】
尚、検証情報として、認証子Ｔａｇｉの代わりにデジタル署名σｉを使用する場合、ｆは署名生成アルゴリズムであって、検証情報生成部２３０Ａは、ＭＡＣの暗号鍵Ｋ１の代わりにデジタル署名の秘密鍵ｓｋを使用して、生成用組（Ｗｉ、Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）に対応するデジタル署名σｉを下記の数式のように計算する。 
σｉ＝ｆｓｋ（Ｗｉ、Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）
【０１４８】
検索情報生成部２３０Ａは、計算して得られた検証情報（Ｔａｇ１、Ｔａｇ２、…）を出力する（ステップＳ１３０Ａ）。これら検証情報（認証子）は、サーバ３００Ｅに送られ、サーバ３００Ｅは、これら検証情報（認証子）を記憶領域３１０に記憶する。
【０１４９】
次に、図１８を参照して、検証情報生成部２３０Ａの動作について具体例を挙げて説明する。ここでは、キーワードが索引番号２の「茨城大学」である場合を例に挙げて説明する。
【０１５０】
この場合、検証情報生成部２３０Ａは、索引を参照して、キーワード「茨城大学」を含む、該当する暗号化されたファイル（暗号ファイル）の集合Ｑ２を選択する。この場合、索引番号２のファイル番号には、「３」、「６」、「１０」が記憶されているので、検索情報生成部２３０Ａは、該当暗号ファイルの集合Ｑ２として、暗号ファイルＥ（Ｄ３）、Ｅ（Ｄ６）、およびＥ（Ｄ１０）を選択する。
【０１５１】
そして、検証情報生成部２３０Ａは、ＭＡＣの秘密鍵Ｋ１を使い、生成用組（茨城大学、Ｅ（Ｄ３）、Ｅ（Ｄ６）、Ｅ（Ｄ１０））に対する検証情報（認証子）Ｔａｇ２を、ＭＡＣ生成アルゴリズムに従って、下記数式で示されるように生成する。 
Ｔａｇ２＝ｆＫ１（茨城大学、Ｅ（Ｄ３）、Ｅ（Ｄ６）、Ｅ（Ｄ１０））
【０１５２】
検証情報生成部２３０Ａは、このようにして、キーワードｉ毎の検証情報（認証子）Ｔａｇｉを生成する。生成された検証情報（認証子）Ｔａｇｉは、サーバ３００Ｅへ送られ、サーバ３００Ｅは、送られてきた検証情報（認証子）Ｔａｇｉを記憶領域３１０に記憶する。
【０１５３】
尚、検証情報がデジタル署名σｉの場合、サーバ３００Ｅは、デジタル署名σｉを記憶領域３１０に記憶する。
【０１５４】
検索時、クライアント２００Ｅでは、第３の暗号化部２８０Ａが、暗号化の秘密鍵Ｋ０を使って検索キーワードＷを暗号化し、暗号検索キーワードＥ’（Ｗ）をサーバ３００Ｅに送る。サーバ３００Ｅにおいては、暗号検索キーワードＥ’（Ｗ）に応答して、検索部３２０は、その検索キーワードＷを含む暗号ファイルの集合Ｑｉ＝（Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）とその検証情報（認証子）Ｔａｇとをクライアント２００Ｅへ返す。したがって、クライアント２００Ｅは、暗号ファイルの集合Ｑｉ＝（Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）とその検証情報（認証子）Ｔａｇとを取得する。すなわち、第３の暗号化部２８０Ａは、暗号化の秘密鍵Ｋ０を使って検索キーワードＷを暗号化して得られる暗号検索キーワードＥ’（Ｗ）をサーバ３００Ｅへ送って、サーバ３００Ｅから、暗号ファイルの集合Ｑｉ＝（Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）と検索キーワードＷに対応する検証情報（認証子）Ｔａｇとを取得する暗号ファイル取得手段として働く。
【０１５５】
次に、図１９を参照して、クライアント２００Ｅの検証部２４０Ａの動作について説明する。
【０１５６】
検証部２４０Ａは、秘密鍵保持部２２０Ａに保持されたＭＡＣの秘密鍵Ｋ１と、検索キーワードＷとを読み込む（ステップＳ２１０Ａ）。次に、検証部２４０Ａは、サーバ３００Ｅから送られてきた暗号ファイルの集合Ｑｉである暗号ファイル（Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）とその検証情報（認証子）Ｔａｇとを読み込む（ステップＳ２２０Ａ）。
【０１５７】
検証部２４０Ａは、ＭＡＣの秘密鍵Ｋ１を使い、検証情報（認証子）Ｔａｇが検証用組（Ｗ、Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）の認証子であるか否かを、ＭＡＣ検証アルゴリズムに従って、下記の数式に示されるように計算する（Ｓ２３０Ａ）。 
VerifyＫ１（Ｗ、Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…、Ｔａｇ）＝accept or reject
【０１５８】
検証部２４０Ａは、計算結果がacceptなら（ステップＳ２４０ＡのＹｅｓ）、取得した暗号ファイルの集合Ｑｉ＝（Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）を復号して、所望のファイルの集合Ｐｉ＝（Ｄｉ１、Ｄｉ２、…）を出力し（ステップＳ２５０Ａ）、rejectなら（ステップＳ２４０ＡのＮｏ）、rejectを出力する（ステップＳ２６０Ａ）。
【０１５９】
尚、検証情報がデジタル署名σである場合、検証部２４０Ａは、デジタル署名の公開鍵ｖｋを使い、デジタル署名σが検証用組（Ｗ、Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…）のデジタル署名であるか否かを、署名検証アルゴリズムに従って、下記の数式に示されるように計算する。 
Verifyｖｋ（Ｗ、Ｅ（Ｄｉ１）、Ｅ（Ｄｉ２）、…、σ）＝accept or reject
【０１６０】
次に、図２０を参照して、検証部２４０Ａの動作について具体例を挙げて説明する。ここでは、検索キーワードＷが索引番号２の「茨城大学」である場合を例に挙げて説明する。
【０１６１】
この場合、検証部２４０Ａは、秘密鍵保持部２２０ＡからＭＡＣの秘密鍵Ｋ１を読み込み、検索キーワードとして「茨城大学」を読み込み、サーバ３００Ｅから送られてきた、暗号ファイルの集合Ｑ２である暗号ファイル（Ｅ（Ｄ３）、Ｅ（Ｄ６）、Ｅ（Ｄ１０））と検証情報（認証子）Ｔａｇ２とを読み込む。
【０１６２】
そして、検証部２４０Ａは、ＭＡＣの秘密鍵Ｋ１を使い、検証情報（認証子）Ｔａｇ２が検証用組（茨城大学、Ｅ（Ｄ３）、Ｅ（Ｄ６）、Ｅ（Ｄ１０））の認証子であるか否かを、ＭＡＣ検証アルゴリズムに従って下記の数式のように計算する。 
VerifyＫ１（茨城大学、Ｅ（Ｄ３）、Ｅ（Ｄ６）、Ｅ（Ｄ１０）、Ｔａｇ２）
＝accept or reject
【０１６３】
検証部２４０Ａは、計算結果がacceptなら、暗号ファイルの集合Ｑ２＝（Ｅ（Ｄ３）、Ｅ（Ｄ６）、Ｅ（Ｄ１０））を復号して、所望のファイルの集合Ｐ２＝（Ｄ３、Ｄ６、Ｄ１０）を出力し、rejectなら、rejectを出力する。
【０１６４】
次に、本第２の実施例の効果について説明する。
【０１６５】
本第２の実施例の検索システム１００Ｅは、サーバの不正として、ファイルの削除、追加、改ざんばかりでなく、ファイルのすり替えも検出することができる。その理由は、クライアント（ユーザ端末）２００Ｅが各キーワードＷｉと当該キーワードＷｉを含む全てのファイルを暗号化して得られる暗号ファイルの集合Ｑｉ＝｛Ｅ（Ｄｉ１、Ｅ（Ｄｉ２）、…｝とを一組（生成用組）として、それに対する検証情報Ｔａｇｉ（又はσｉ）を生成し、生成した検証情報Ｔａｇｉ（又はσｉ）をサーバ３００Ｅに保管しているからである。
【０１６６】
以上、実施形態（実施例）を参照して本発明を説明したが、本発明は上記実施形態（実施例）に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１６７】
上記の実施形態（実施例）の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１６８】
（付記１）  ユーザ端末がサーバに複数のファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索システムであって、前記ユーザ端末は、
前記複数のファイルを前記サーバに保管するファイル保管手段と、
キーワードと該キーワードを含む全てのファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成し、該生成した検証情報を前記サーバに保管する検証情報生成部と、
検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルの集合と前記検索キーワードに対応する検証情報とを取得するファイル取得手段と、
該取得した検証情報が、前記検索キーワードと前記取得したファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認して前記取得したファイルの集合を前記所望のファイルの集合として得、そうでなければ拒否する検証部と、
を有する検索システム。
【０１６９】
(付記２)  前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記検証情報生成部は、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記検証情報として前記生成用組に対するデジタル署名を生成し、
前記検証部は、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックする、
付記１に記載の検索システム。
【０１７０】
（付記３）  前記所定の生成アルゴリズムがＭＡＣ（Message Authentication Code）生成アルゴリズムから成り、
前記所定の検証アルゴリズムがＭＡＣ検証アルゴリズムから成り、
前記検証情報生成部は、ＭＡＣの秘密鍵を使って、前記ＭＡＣ生成アルゴリズムに従って、前記検証情報として前記生成用組に対する認証子を生成し、
前記検証部は、前記ＭＡＣの秘密鍵を使って、前記ＭＡＣ検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックする、
付記１に記載の検索システム。
【０１７１】
（付記４）  ユーザ端末がサーバに複数のファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索方法であって、
前記ユーザ端末が、前記複数のファイルを前記サーバに保管するステップと、
前記ユーザ端末が、キーワードと該キーワードを含む全てのファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成するステップと、
前記ユーザ端末が、前記生成した検証情報を前記サーバに保管するステップと、
前記ユーザ端末が、検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルの集合と前記検索キーワードに対応する検証情報とを取得するステップと、
前記ユーザ端末が、前記取得した検証情報が、前記検索キーワードと前記取得したファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックするステップと、
前記ユーザ端末が、チェックの結果が正しければ承認して前記取得したファイルの集合を前記所望のファイルの集合として得、そうでなければ拒否するステップと、
を含む検索方法。
【０１７２】
（付記５）  前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記生成するステップは、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記検証情報として前記生成用組に対するデジタル署名を生成し、
前記チェックするステップは、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックする、
付記４に記載の検索方法。
【０１７３】
（付記６）  前記所定の生成アルゴリズムがＭＡＣ（Message Authentication Code）生成アルゴリズムから成り、
前記所定の検証アルゴリズムがＭＡＣ検証アルゴリズムから成り、
前記生成するステップは、ＭＡＣの秘密鍵を使って、前記ＭＡＣ生成アルゴリズムに従って、前記検証情報として前記生成用組に対する認証子を生成し、
前記チェックするステップは、前記ＭＡＣの秘密鍵を使って、前記ＭＡＣ検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックする、
付記４に記載の検索方法。
【０１７４】
（付記７）  サーバに複数のファイルを保管し、キーワード検索によって前記サーバから所望のファイルの集合を取得する処理を、コンピュータであるユーザ端末に実行させる検索プログラムであって、前記コンピュータに、
前記複数のファイルを前記サーバに保管する手順と、
キーワードと該キーワードを含む全てのファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成する手順と、
前記生成した検証情報を前記サーバに保管する手順と、
検索キーワードを前記サーバへ送って、前記サーバから前記検索キーワードを含むファイルの集合と前記検索キーワードに対応する検証情報とを取得する手順と、
前記取得した検証情報が、前記検索キーワードと前記取得したファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックする手順と、
チェックの結果が正しければ承認して前記取得したファイルの集合を前記所望のファイルの集合として得、そうでなければ拒否する手順と、
を実行させるための検索プログラム。
【０１７５】
（付記８）  前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記生成する手順は、前記コンピュータに、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記検証情報として前記生成用組に対するデジタル署名を生成させ、
前記チェックする手順は、前記コンピュータに、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックさせる、
付記７に記載の検索プログラム。
【０１７６】
（付記９）  前記所定の生成アルゴリズムがＭＡＣ（Message Authentication Code）生成アルゴリズムから成り、
前記所定の検証アルゴリズムがＭＡＣ検証アルゴリズムから成り、
前記生成する手順は、前記コンピュータに、ＭＡＣの秘密鍵を使って、前記ＭＡＣ生成アルゴリズムに従って、前記検証情報として前記生成用組に対する認証子を生成させ、
前記チェックする手順は、前記コンピュータに、前記ＭＡＣの秘密鍵を使って、前記ＭＡＣ検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックさせる、
付記７に記載の検索プログラム。
【０１７７】
（付記１０）  ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索システムであって、前記ユーザ端末は、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルを前記サーバに保管する暗号ファイル保管手段と、
キーワードと該キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成し、該生成した検証情報を前記サーバに保管する検証情報生成部と、
前記暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルの集合と前記検索キーワードに対応する検証情報とを取得する暗号ファイル取得手段と、
該取得した検証情報が、前記検索キーワードと前記取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認して前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否する検証部と、
を有する検索システム。
【０１７８】
（付記１１）  ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索システムであって、前記ユーザ端末は、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルを前記サーバに保管する暗号ファイル保管手段と、
前記暗号化の秘密鍵を使ってキーワードを暗号化して得られる暗号キーワードと該暗号キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成し、該生成した検証情報を前記サーバに保管する検証情報生成部と、
前記暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルの集合と前記暗号検索キーワードに対応する検証情報とを取得する暗号ファイル取得手段と、
該取得した検証情報が、前記暗号検索キーワードと前記取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックし、チェックの結果が正しければ承認して前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否する検証部と、
を有する検索システム。
【０１７９】
（付記１２）  前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記検証情報生成部は、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記検証情報として前記生成用組に対するデジタル署名を生成し、
前記検証部は、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックする、
付記１０又は１１に記載の検索システム。
【０１８０】
（付記１３）  前記所定の生成アルゴリズムがＭＡＣ（Message Authentication Code）生成アルゴリズムから成り、
前記所定の検証アルゴリズムがＭＡＣ検証アルゴリズムから成り、
前記検証情報生成部は、ＭＡＣの秘密鍵を使って、前記ＭＡＣ生成アルゴリズムに従って、前記検証情報として前記生成用組に対する認証子を生成し、
前記検証部は、前記ＭＡＣの秘密鍵を使って、前記ＭＡＣ検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックする、
付記１０又は１１に記載の検索システム。
【０１８１】
（付記１４）  ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索方法であって、
前記ユーザ端末が、暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルを前記サーバに保管するステップと、
前記ユーザ端末が、キーワードと該キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成するステップと、
前記ユーザ端末が、前記生成した検証情報を前記サーバに保管するステップと、
前記ユーザ端末が、前記暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルの集合と前記検索キーワードに対応する検証情報とを取得するステップと、
前記ユーザ端末が、前記取得した検証情報が、前記検索キーワードと前記取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックするステップと、
前記ユーザ端末が、チェックの結果が正しければ承認して前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否するステップと、
を含む検索方法。
【０１８２】
（付記１５）  ユーザ端末がサーバに複数の暗号ファイルを保管し、前記ユーザ端末がキーワード検索によって前記サーバから所望のファイルの集合を取得する検索方法であって、
前記ユーザ端末が、暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルを前記サーバに保管するステップと、
前記ユーザ端末が、前記暗号化の秘密鍵を使って暗号化して得られる暗号キーワードと該暗号キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成するステップと、
前記ユーザ端末が、前記生成した検証情報を前記サーバに保管するステップと、
前記ユーザ端末が、前記暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルの集合と前記暗号検索キーワードに対応する検証情報とを取得するステップと、
前記ユーザ端末が、前記取得した検証情報が、前記暗号検索キーワードと前記取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックするステップと、
前記ユーザ端末が、チェックの結果が正しければ承認して前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否するステップと、
を含む検索方法。
【０１８３】
（付記１６）  前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記生成するステップは、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記検証情報として前記生成用組に対するデジタル署名を生成し、
前記チェックするステップは、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックする、
付記１４又は１５に記載の検索方法。
【０１８４】
（付記１７）  前記所定の生成アルゴリズムがＭＡＣ（Message Authentication Code）生成アルゴリズムから成り、
前記所定の検証アルゴリズムがＭＡＣ検証アルゴリズムから成り、
前記生成するステップは、ＭＡＣの秘密鍵を使って、前記ＭＡＣ生成アルゴリズムに従って、前記検証情報として前記生成用組に対する認証子を生成し、
前記チェックするステップは、前記ＭＡＣの秘密鍵を使って、前記ＭＡＣ検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックする、
付記１４又は１５に記載の検索方法。
【０１８５】
（付記１８）  サーバに複数の暗号ファイルを保管し、キーワード検索によって前記サーバから所望のファイルの集合を取得する処理を、コンピュータであるユーザ端末に実行させる検索プログラムであって、前記コンピュータに、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルを前記サーバに保管する手順と、
キーワードと該キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成する手順と、
前記生成した検証情報を前記サーバに保管する手順と、
前記暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルの集合と前記検索キーワードに対応する検証情報とを取得する手順と、
前記取得した検証情報が、前記検索キーワードと前記取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックする手順と、
チェックの結果が正しければ承認して前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否する手順と、
を実行させるための検索プログラム。
【０１８６】
（付記１９）  サーバに複数の暗号ファイルを保管し、キーワード検索によって前記サーバから所望のファイルの集合を取得する処理を、コンピュータであるユーザ端末に実行させる検索プログラムであって、前記コンピュータに、
暗号化の秘密鍵を使って複数のファイルをそれぞれ暗号化し、前記複数の暗号ファイルを前記サーバに保管する手順と、
前記暗号化の秘密鍵を使ってキーワードを暗号化して得られる暗号キーワードと該暗号キーワードを含む全ての暗号ファイルの集合との生成用組に対して所定の生成アルゴリズムに従って検証情報を生成する手順と、
前記生成した検証情報を前記サーバに保管する手順と、
前記暗号化の秘密鍵を使って検索キーワードを暗号化して得られる暗号検索キーワードを前記サーバへ送って、前記サーバから前記暗号検索キーワードを含む暗号ファイルの集合と前記暗号検索キーワードに対応する検証情報とを取得する手順と、
前記取得した検証情報が、前記暗号検索キーワードと前記取得した暗号ファイルの集合との検証用組の検証情報であるか否かを所定の検証アルゴリズムによってチェックする手順と、
チェックの結果が正しければ承認して前記取得した暗号ファイルの集合を復号して前記所望のファイルの集合を得、そうでなければ拒否する手順と、
を実行させるための検索プログラム。
【０１８７】
（付記２０）  前記所定の生成アルゴリズムが署名生成アルゴリズムから成り、
前記所定の検証アルゴリズムが署名検証アルゴリズムから成り、
前記生成する手順は、前記コンピュータに、デジタル署名の秘密鍵を使って、前記署名生成アルゴリズムに従って、前記検証情報として前記生成用組に対するデジタル署名を生成させ、
前記チェックする手順は、前記コンピュータに、デジタル署名の公開鍵を使って、前記署名検証アルゴリズムに従って、取得したデジタル署名が前記検証用組のデジタル署名であるか否かをチェックせる、
付記１８又は１９に記載の検索プログラム。
【０１８８】
（付記２１）  前記所定の生成アルゴリズムがＭＡＣ（Message Authentication Code）生成アルゴリズムから成り、
前記所定の検証アルゴリズムがＭＡＣ検証アルゴリズムから成り、
前記生成する手順は、前記コンピュータに、ＭＡＣの秘密鍵を使って、前記ＭＡＣ生成アルゴリズムに従って、前記検証情報として前記生成用組に対する認証子を生成させ、
前記チェックする手順は、前記コンピュータに、前記ＭＡＣの秘密鍵を使って、前記ＭＡＣ検証アルゴリズムに従って、取得した認証子が前記検証用組の認証子であるか否かをチェックさせる、
付記１８又は１９に記載の検索プログラム。
【産業上の利用可能性】
【０１８９】
本発明は、キーワード検索におけるサーバの不正を検出する方式に利用可能である。
【符号の説明】
【０１９０】
１００、１００Ａ、１００Ｂ、１００Ｃ、１００Ｄ、１００Ｅ    検索システム
２００、２００Ａ、２００Ｂ、２００Ｃ    ユーザ端末
２００Ｄ、２００Ｅ    クライアント
２１０、２１０Ａ    秘密鍵生成部
２２０、２２０Ａ    秘密鍵保持部
２３０、２３０Ａ    検証情報生成部
２４０、２４０Ａ    検証部
２６０    第１の信号線（ファイル保管手段）
２６０Ａ    第１の暗号化部（暗号ファイル保管手段）
２７０    第２の信号線（索引保管手段）
２７０Ａ    第２の暗号化部（暗号索引保管手段）
２８０    第３の信号線（ファイル取得手段）
２８０Ａ    第３の暗号化部（暗号ファイル取得手段）
３００、３００Ａ、３００Ｂ、３００Ｃ、３００Ｄ、３００Ｅ    サーバ
３１０    記憶領域
３２０    検索部
【図１】
0005970193.tif 000002
【図２】
0005970193.tif 000003
【図３】
0005970193.tif 000004
【図４】
0005970193.tif 000005
【図５】
0005970193.tif 000006
【図６】
0005970193.tif 000007
【図７】
0005970193.tif 000008
【図８】
0005970193.tif 000009
【図９】
0005970193.tif 000010
【図１０】
0005970193.tif 000011
【図１１】
0005970193.tif 000012
【図１２】
0005970193.tif 000013
【図１３】
0005970193.tif 000014
【図１４】
0005970193.tif 000015
【図１５】
0005970193.tif 000016
【図１６】
0005970193.tif 000017
【図１７】
0005970193.tif 000018
【図１８】
0005970193.tif 000019
【図１９】
0005970193.tif 000020
【図２０】
0005970193.tif 000021