"サービス提供装置と、データ登録装置と、データベース装置と、ユーザ装置と、プロキシ装置とを備え、前記サービス提供装置は、データを暗号化するためのサービス公開鍵および該サービス公開鍵に対応したサービス秘密鍵を生成し、データの検索を要求する前記ユーザ装置が生成したユーザ秘密鍵と前記サービス秘密鍵とを入力として、前記ユーザ装置ごとのプロキシ鍵を生成し、前記プロキシ装置に送信し、前記データ登録装置は、前記サービス公開鍵およびデータを入力として、検索可能暗号データを生成し、前記データベース装置は、前記検索可能暗号データを記憶し、前記ユーザ装置は、前記データベース装置に記憶された前記検索可能暗号データに対して、データの検索を要求するためのユーザクエリを生成し、前記プロキシ装置に送信し、前記プロキシ装置は、前記ユーザ装置から受信した前記ユーザクエリと前記サービス提供装置から受信した前記ユーザ装置ごとのプロキシ鍵とを入力として、前記データベース装置に記憶されている前記検索可能暗号データの検索を要求するための検索クエリを生成し、前記ユーザ装置は、さらに、前記ユーザ秘密鍵を用いて前記ユーザクエリを生成することを特徴とする暗号データ検索システム。サービス提供装置は、サービス秘密鍵とユーザ秘密鍵とを入力として、ユーザ装置ごとのプロキシ鍵を生成し、プロキシ装置は、ユーザクエリおよび前記プロキシ鍵を入力として、検索クエリを生成し、データベース装置は、前記検索クエリと当該データベース装置が記憶する検索可能暗号データとを入力として、検索結果を生成する請求項1記載の暗号データ検索システム。データ登録装置は、素数位数qを持つ群G,GT、eをGの元2つを入力としてGTの群への写像であるペアリング関数、gを群Gの生成元、H1を任意のビット列からG上へのハッシュ関数、H2をGTからkビットのビット列上へのハッシュ関数、Mをメッセージ、Zqの乱数r、sをサービス秘密鍵、gsをサービス公開鍵としたとき、H2gsrgrを含む検索可能暗号データを生成し、ユーザ装置は、aをユーザ秘密鍵、gaをユーザ公開鍵とし、検索キーワードをKWとしたとき、H1aを含むユーザクエリを生成する請求項1記載の暗号データ検索システム。プロキシ装置は、ユーザ装置のプロキシ鍵がsaを含み、検索キーワードをKWとしたとき、H1sを含む検索クエリを生成する請求項3記載の暗号データ検索システム。ユーザ装置は、検証鍵と署名鍵とを生成し、プロキシ装置が生成した検索クエリと前記署名鍵とを入力として、署名データを生成し、データベース装置は、前記署名データと前記検証鍵とを入力として、署名検証を行う請求項1から請求項4のうちのいずれか1項に記載の暗号データ検索システム。データを暗号化するためのサービス公開鍵および該サービス公開鍵に対応したサービス秘密鍵を生成し、データの検索を要求するユーザ装置が生成したユーザ秘密鍵と前記サービス秘密鍵とを入力として、前記ユーザ装置ごとのプロキシ鍵を生成し、前記サービス公開鍵およびデータを入力として、検索可能暗号データを生成し、前記検索可能暗号データを記憶し、記憶された前記検索可能暗号データに対して、前記ユーザ秘密鍵を用いてデータの検索を要求するためのユーザクエリを生成し、前記ユーザクエリと前記ユーザ装置ごとのプロキシ鍵とを入力として、記憶されている前記検索可能暗号データの検索を要求するための検索クエリを生成することを特徴とする暗号データ検索装置。データを暗号化するためのサービス公開鍵および該サービス公開鍵に対応したサービス秘密鍵を生成し、データの検索を要求するユーザ装置が生成したユーザ秘密鍵と前記サービス秘密鍵とを入力として、前記ユーザ装置ごとのプロキシ鍵を生成し、前記サービス公開鍵およびデータを入力として、検索可能暗号データを生成し、前記検索可能暗号データを記憶し、記憶された前記検索可能暗号データに対して、前記ユーザ秘密鍵を用いてデータの検索を要求するためのユーザクエリを生成し、前記ユーザクエリと前記ユーザ装置ごとのプロキシ鍵とを入力として、記憶されている前記検索可能暗号データの検索を要求するための検索クエリを生成することを特徴とする暗号データ検索方法。コンピュータに、データを暗号化するためのサービス公開鍵および該サービス公開鍵に対応したサービス秘密鍵を生成する処理と、データの検索を要求するユーザ装置が生成したユーザ秘密鍵と前記サービス秘密鍵とを入力として、前記ユーザ装置ごとのプロキシ鍵を生成する処理と、前記サービス公開鍵およびデータを入力として、検索可能暗号データを生成する処理と、前記検索可能暗号データを記憶する処理と、記憶された前記検索可能暗号データに対して、前記ユーザ秘密鍵を用いてデータの検索を要求するためのユーザクエリを生成する処理と、前記ユーザクエリと前記ユーザ装置ごとのプロキシ鍵とを入力として、記憶されている前記検索可能暗号データの検索を要求するための検索クエリを生成する処理とを実行させるための暗号データ検索プログラム。一般的な検索可能暗号方式の多くは、あるユーザの公開鍵を用いてデータを暗号化することにより暗号データを生成し、そのユーザの秘密鍵を用いて検索クエリを生成することで暗号化したまま検索を可能としている。したがって、1つの暗号データに対して、検索可能なユーザは秘密鍵を有するユーザのみに限定される。ところが、企業での文書管理などを考慮すると、1つのデータに対して複数人がアクセスする権限を持ち、権限を持つ複数人のみが検索可能であることが望まれる場合がある。上記の一般的な検索可能暗号方式を利用した場合、1つのデータに対して権限を持つ複数人による検索を許可するためには、権限を持つ複数人で秘密鍵を共有するなどの方法を用いて実現する必要がある。しかし、この方法は、秘密鍵漏洩の危険性を高めるため、一般に望ましくない。また、秘密鍵を保有するサーバを設置し、そのサーバへのアクセス権を管理することで複数人に対して暗号データの検索を許可することを実現することも可能である。しかし、この方法では、サーバが秘密鍵を保有するため、サーバを乗っ取ることにより、すべての暗号データの検索が可能になる。そのため、サーバが攻撃の標的とされやすく、セキュリティ対策が重要となり、コスト増につながる。また、この方法では、サーバの管理者はサーバへの任意のアクセスが可能であるため、管理者が悪意を持ってアクセスした場合には、安全性を担保できない。非特許文献1には、サービスプロバイダとユーザの秘密鍵からなるプロキシ鍵を用いて、1つのデータに対して複数人に検索を許可する検索可能暗号システムが記載されている。しかしながら、非特許文献1に記載された方式では、データベースにアクセスできるすべてのユーザが検索を行うことが可能である。そのため、データベースに記憶されているデータが漏洩した場合には、そのデータを入手できた人は誰でも検索を行うことができてしまうこととなり、甚大な被害が生ずる可能性がある。そこで、本発明は、異なる公開鍵秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答でき、かつデータ漏洩による被害を低減することができる暗号データ検索システム、暗号データ検索装置、暗号データ検索方法及び暗号データ検索プログラムを提供することを目的とする。本発明による暗号データ検索システムは、サービス提供装置と、データ登録装置と、データベース装置と、ユーザ装置と、プロキシ装置とを備え、サービス提供装置は、データを暗号化するためのサービス公開鍵およびサービス公開鍵に対応したサービス秘密鍵を生成し、データの検索を要求するユーザ装置が生成したユーザ秘密鍵とサービス秘密鍵とを入力として、ユーザ装置ごとのプロキシ鍵を生成し、プロキシ装置に送信し、データ登録装置は、サービス公開鍵およびデータを入力として、検索可能暗号データを生成し、データベース装置は、検索可能暗号データを記憶し、ユーザ装置は、データベース装置に記憶された検索可能暗号データに対して、データの検索を要求するためのユーザクエリを生成し、プロキシ装置に送信し、プロキシ装置は、ユーザ装置から受信したユーザクエリとサービス提供装置から受信したユーザ装置ごとのプロキシ鍵とを入力として、データベース装置に記憶されている検索可能暗号データの検索を要求するための検索クエリを生成し、ユーザ装置は、さらに、ユーザ秘密鍵を用いてユーザクエリを生成することを特徴とする。本発明による暗号データ検索装置は、データを暗号化するためのサービス公開鍵およびサービス公開鍵に対応したサービス秘密鍵を生成し、データの検索を要求するユーザ装置が生成したユーザ秘密鍵とサービス秘密鍵とを入力として、ユーザ装置ごとのプロキシ鍵を生成し、サービス公開鍵およびデータを入力として、検索可能暗号データを生成し、検索可能暗号データを記憶し、記憶された検索可能暗号データに対して、ユーザ秘密鍵を用いてデータの検索を要求するためのユーザクエリを生成し、ユーザクエリとユーザ装置ごとのプロキシ鍵とを入力として、記憶されている検索可能暗号データの検索を要求するための検索クエリを生成することを特徴とする。本発明による暗号データ検索方法は、データを暗号化するためのサービス公開鍵およびサービス公開鍵に対応したサービス秘密鍵を生成し、データの検索を要求するユーザ装置が生成したユーザ秘密鍵とサービス秘密鍵とを入力として、ユーザ装置ごとのプロキシ鍵を生成し、サービス公開鍵およびデータを入力として、検索可能暗号データを生成し、検索可能暗号データを記憶し、記憶された検索可能暗号データに対して、ユーザ秘密鍵を用いてデータの検索を要求するためのユーザクエリを生成し、ユーザクエリとユーザ装置ごとのプロキシ鍵とを入力として、記憶されている検索可能暗号データの検索を要求するための検索クエリを生成することを特徴とする。本発明による暗号データ検索プログラムは、コンピュータに、データを暗号化するためのサービス公開鍵およびサービス公開鍵に対応したサービス秘密鍵を生成する処理と、データの検索を要求するユーザ装置が生成したユーザ秘密鍵とサービス秘密鍵とを入力として、ユーザ装置ごとのプロキシ鍵を生成する処理と、サービス公開鍵およびデータを入力として、検索可能暗号データを生成する処理と、検索可能暗号データを記憶する処理と、記憶された検索可能暗号データに対して、ユーザ秘密鍵を用いてデータの検索を要求するためのユーザクエリを生成するユーザクエリ生成処理と、ユーザクエリとユーザ装置ごとのプロキシ鍵とを入力として、記憶されている検索可能暗号データの検索を要求するための検索クエリを生成する処理とを実行させることを特徴とする。本発明によれば、異なる公開鍵秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答でき、かつデータ漏洩による被害を低減することができる。実施形態1.以下、本発明の実施形態について図面を参照して説明する。図1は、本発明による暗号データ検索システムの構成例を示すブロック図である。本実施形態の暗号データ検索システムは、図1に示すように、暗号データを登録するデータ登録装置10と、暗号データを記憶するデータベース装置50と、サービスプロバイダ装置20と、1つ以上のユーザ装置401,402,...,40Nと、プロキシサーバ装置30とを含む。また、各装置は、LANやインターネット等の通信ネットワークを介して相互に接続されている。サービスプロバイダ装置20は、暗号データを生成するために用いる公開鍵pksおよびそれに対応する秘密鍵sksを生成する。サービスプロバイダ装置20は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。図2は、サービスプロバイダ装置の構成例を示すブロック図である。サービスプロバイダ装置20は、図2に示すように、鍵生成部201と、プロキシ鍵生成部202と、データ登録部203とを含む。鍵生成部201は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。鍵生成部201は、データを暗号化するために用いるサービスプロバイダの公開鍵pksおよびそれに対応する秘密鍵sksを生成する機能を備えている。プロキシ鍵生成部202は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。プロキシ鍵生成部202は、秘密鍵sksと、ユーザiの秘密鍵skiとを入力として、暗号化したまま暗号データの検索を可能とするプロキシ鍵rkiを生成する機能を備えている。データ登録部203は、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。データ登録部203は、プロキシ鍵rkiをプロキシサーバ装置30に登録する機能を備えている。プロキシサーバ装置30は、ユーザ装置40iユーザ装置401~403を包括的に表現したものであって、i=1~3であるから受信した検索要求に対して、サービスプロバイダの秘密鍵およびユーザiの秘密鍵から生成されたユーザiに対応するプロキシ鍵を用いて、暗号化したまま検索を可能とする検索クエリを生成する。また、プロキシサーバ装置30は、データベース装置50から検索クエリに対応した暗号データを検索する。プロキシサーバ装置30は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。図3は、プロキシサーバ装置の構成例を示すブロック図である。プロキシサーバ装置30は、図3に示すように、クエリ変換部301と、検索要求部302と、検索結果送信部303とを含む。クエリ変換部301は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。クエリ変換部301は、ユーザ装置40iから受信したユーザクエリQiと、記憶しているプロキシ鍵rkiとを入力として、データベース装置50が記憶する暗号データに対して暗号化したまま検索を行うための検索クエリQsを生成する機能を備えている。検索要求部302は、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。検索要求部302は、検索クエリQsを用いてデータベース装置50に検索要求を行う機能を備えている。検索結果送信部303は、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。検索結果送信部303は、検索要求に応じてデータベース装置50から抽出された検索結果をユーザ装置40iに送信する機能を備えている。ユーザ装置40iは、暗号データに対して暗号化したまま検索を行う検索要求を発行する。ユーザ装置40iは、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。図4は、ユーザ装置の構成例を示すブロック図である。ユーザ装置40iは、図4に示すように、登録要求部401iと、鍵生成部402iと、プロキシ鍵生成部403iと、クエリ生成部404iとを含む。登録要求部401iは、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。登録要求部401iは、サービスへの登録を要求する機能を備えている。鍵生成部402iは、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。鍵生成部402iは、ユーザiの公開鍵pkiおよびそれに対応する秘密鍵skiを生成する機能を備えている。プロキシ鍵生成部403iは、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。プロキシ鍵生成部403iは、サービスプロバイダの秘密鍵sksと、ユーザiの秘密鍵skiとを入力として、暗号化したまま暗号データの検索を可能とするプロキシ鍵rkiを生成する機能を備えている。クエリ生成部404iは、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。クエリ生成部404iは、データを検索するためのユーザクエリQiを生成する機能を備えている。図5は、データ登録装置10の構成例を示すブロック図である。データ登録装置10は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。データ登録装置10は、図5に示すように、サービスプロバイダの公開鍵pksおよびデータM以下、メッセージMともいうを入力として、暗号データ以下、検索可能暗号データともいうを生成する検索可能暗号データ生成部101を含む。検索可能暗号データ生成部101は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。なお、本実施形態では、検索可能暗号データとは、所定の条件下で検索可能な暗号化されたデータである。ただし、検索可能暗号データは、所定の条件下で検索可能であり、無条件に検索可能であるわけではない。データベース装置50は、光ディスク装置や磁気ディスク装置等の記憶装置を備えている。データベース装置50の記憶装置は、検索可能暗号化データを含むデータベースを記憶している。データベース装置50は、例えば、データベースサーバであり、パーソナルコンピュータ等の情報処理装置によって実現される。データベース装置50は、データの検索や登録などの要求を受信して処理を行い、結果を返信する機能を備えている。次に、暗号データ検索システムの動作について説明する。本実施形態の暗号データ検索システムは、サービスプロバイダ鍵生成処理、ユーザ登録処理、データ登録処理および検索処理を実行する。以下、各処理について説明する。サービスプロバイダ鍵生成処理サービスプロバイダ鍵生成処理について説明する。図6は、サービスプロバイダ鍵生成処理の一例を示す流れ図である。サービス管理者が入力操作を行うと、サービスプロバイダ装置20は、サービス管理者の入力操作に従って、セキュリティパラメータを入力とし、サービスプロバイダの公開鍵pksおよび秘密鍵sksを生成する図6のKEYGEN1。次いで、サービスプロバイダ装置20は、公開鍵pksを公開しすなわち、ネットワークを介したアクセスに応じて配信可能とする、秘密鍵sksを秘密裏にすなわち、公開せずに管理する。ユーザ登録処理次に、ユーザ登録処理について説明する。図7は、ユーザ登録処理の一例を示す流れ図である。ユーザiが入力操作を行うと、ユーザ装置40iは、ユーザiの入力操作に従って、セキュリティパラメータを入力し、ユーザiの公開鍵pkiおよび秘密鍵skiを生成する。図7に示す例では、ユーザ装置40Aは、ユーザAの入力操作に従って、セキュリティパラメータを入力し、ユーザAの公開鍵pkAおよび秘密鍵skAを生成する図7のUREG1。次いで、ユーザ装置40iは、サービスプロバイダ装置20に対して、ユーザ登録要求を送信する。図7に示す例では、ユーザ装置40Aは、サービスプロバイダ装置20に対して、ユーザ登録要求を送信する図7のUREG2。ユーザ登録要求を受信したサービスプロバイダ装置20と、ユーザ装置40iとは、対話しながら具体的には、相互に通信を行いながらプロキシ鍵rkiを生成する。このとき、ユーザ登録要求にユーザiの秘密鍵skiを含めて送信することにより、サービスプロバイダ装置20は、単独でプロキシ鍵rkiを生成することができる。その場合には、サービスプロバイダ装置20とユーザ装置40iとは、特に対話を行わない。図7に示す例では、サービスプロバイダ装置20とユーザ装置40Aとは、対話しながらプロキシ鍵rkAを生成する。次いで、サービスプロバイダ装置20は、プロキシサーバ装置30に、ユーザを識別するデータと生成したプロキシ鍵rkiとを対応付けたデータユーザi,rkiを送信し、記憶させる。図7に示す例では、サービスプロバイダ装置20は、プロキシサーバ装置30に、ユーザを識別するデータと生成したプロキシ鍵rkAとを対応付けたデータユーザA,rkAを送信し、記憶させる。データ登録処理次に、データ登録処理について説明する。図8は、データ登録処理の一例を示す流れ図である。データ登録者が登録操作を行うと、データ登録装置10は、データ登録者の登録操作に従って、サービスプロバイダの公開鍵pksと、登録したいメッセージMとを入力として、検索可能暗号文Eを生成する図8のDREG1。次いで、データ登録装置10は、検索可能暗号文Eをデータベース装置50に送信し、記憶させる図8のDREG2。検索処理次に、検索処理について説明する。図9は、検索処理の一例を示す流れ図である。ユーザiが入力操作を行うと、ユーザ装置40iは、ユーザiの入力操作に従って、ユーザiの秘密鍵skiと、検索対象キーワードKWとを入力し、ユーザクエリTRを生成する。そして、ユーザ装置40iは、生成したユーザクエリTRをプロキシサーバ装置30に送信する。図9に示す例では、ユーザAが入力操作を行うと、ユーザ装置40Aは、ユーザAの入力操作に従って、ユーザAの秘密鍵skAと、検索対象キーワードKWとを入力し、ユーザクエリTRを生成する図9のSRC1。そして、ユーザ装置40Aは、生成したユーザクエリTRをプロキシサーバ装置30に送信する。次いで、プロキシサーバ装置30は、受信したユーザクエリTRと、記憶しているプロキシ鍵rkiとを入力として、検索クエリTRを生成し、データベース装置50に送信する。例えば、プロキシサーバ装置30は、受信したユーザクエリTRと、記憶しているユーザを識別するデータと生成したプロキシ鍵rkiとを対応付けたデータユーザi,rkiとに基づいて、プロキシ鍵を特定する。そして、プロキシサーバ装置30は、受信したユーザクエリTRと、特定したプロキシ鍵rkiとを入力として、検索クエリTRを生成する。図9に示す例では、プロキシサーバ装置30は、受信したユーザクエリTRと、記憶しているプロキシ鍵rkAとを入力として、検索クエリTRを生成し、データベース装置50に送信する図9のSRC2。次いで、データベース装置50は、内部に記憶した暗号文の集合および検索クエリTRを入力として、検索結果Resultを生成し、検索結果Resultをプロキシサーバ装置30に送信する図9のSRC3。具体的には、データベース50装置は、記憶している検索可能暗号化データから受信した検索クエリTRに基づいてデータを検索して抽出し、検索結果としてプロキシサーバ装置30に送信する。次いで、プロキシサーバ装置30は、検索結果Resultをユーザ装置40iに送信する。図9に示す例では、プロキシサーバ装置30は、検索結果Resultをユーザ装置40Aに送信する図9のSRC4。次に、具体例を用いて暗号データ検索システムの動作を説明する。なお、以降、abと記載することでaのb乗を表す。まず、ペアリング関数について説明する。GGTを位数qを持つ巡回群とし、g1g2をそれぞれGの生成元としたとき、ペアリング関数eG×G→GTは、任意のZqの元abに対して以下の性質を満たす2入力1出力の関数である。eeabe≠1次に、非特許文献1に記載された検索可能暗号方式について説明する。非特許文献1に記載された方式は、秘密鍵を持つユーザのみが検索可能な検索可能暗号方式である。各エンティティに対してシステムパラメータとしてqGGTGの生成元gペアリング関数eG×G→GT、任意のビット列からGへのハッシュ関数H1、GTの元からkビットのビット列へのハッシュ関数H2が与えられている。非特許文献1に記載された鍵生成処理ユーザは、Zqからランダムにxを選択する。次いで、ユーザは、gxを計算する。そして、ユーザは、秘密鍵をx、公開鍵をgxとし、公開鍵を公開する。なお、具体的には、情報処理装置がユーザの操作に従ってこれらの処理を実行する。非特許文献1に記載された検索可能暗号データ生成処理データ登録者は、公開鍵gxと、登録したいデータMとを入力として、Zqからランダムにrを選択し、検索可能暗号データrgrを生成し、データベースに送信して記憶させる。なお、具体的には、情報処理装置がデータ登録者の操作に従ってこれらの処理を実行する。非特許文献1に記載された検索処理ユーザは、検索キーワードKWと、秘密鍵xとを入力として、QH1sを生成し、検索クエリとしてデータベースに送信する。なお、具体的には、情報処理装置がユーザの操作に従ってこれらの処理を実行する。データベースは、自身が記憶している検索可能暗号データの集合の各要素に対して、C1H2が成立するか否かを確認する。そして、データベースは、等号が成立した検索可能暗号データを検索結果として出力する。なお、具体的には、データベースを記憶する記憶装置を備えた情報処理装置が検索クエリを受信し、これらの処理を実行する。次に、本実施形態の暗号データ検索システムが実行するサービスプロバイダ鍵生成、ユーザ登録、データ登録および検索の各処理について説明する。各エンティティに対して、システムパラメータとして、qGGTGの生成元gペアリング関数eG×G→GT、任意のビット列からGへのハッシュ関数H1、GTの元からkビットのビット列へのハッシュ関数H2が与えられている。サービスプロバイダ鍵生成処理サービスプロバイダ鍵生成処理の具体例について説明する。図10は、サービスプロバイダ鍵生成処理の具体例を示す流れ図である。図10に示すように、サービスプロバイダ装置20は、非特許文献1に記載された鍵生成処理と同様の処理を実行する図10のKEYGEN1。次いで、サービスプロバイダ装置20は、生成したサービスプロバイダの公開鍵をpksgsとして公開し、秘密鍵をskssとして保管する図10のKEYGEN2。ユーザ登録処理次に、ユーザ登録処理の具体例について説明する。図11は、ユーザ登録処理の具体例を示す流れ図である。ユーザ装置40iは、ユーザiの操作に従って、非特許文献1の鍵生成処理と同様の処理を実行し、公開鍵pkigxiと、秘密鍵とを生成する。次いで、ユーザ装置40iは、ユーザ登録要求をサービスプロバイダ装置20に送信する。さらに、ユーザ装置40iは、秘密鍵xiをサービスプロバイダ装置20に送信する。すると、サービスプロバイダ装置20は、プロキシ鍵rkisxiを生成し、プロキシサーバ装置30にユーザを識別するデータと生成したプロキシ鍵とを対応付けたデータユーザirkiを送信する。データ登録処理次に、データ登録処理の具体例について説明する。図12は、データ登録処理の具体例を示す流れ図である。データ登録装置10は、データ登録者の登録操作に従って、サービスプロバイダの公開鍵pksおよび登録するデータMを入力として、非特許文献1の検索可能暗号データ生成処理を実行する図12のDREG1。具体的には、データ登録装置10は、検索可暗号データとしてpksrgrを生成する。次いで、データ登録装置10は、検索可能暗号データをデータベース装置50に送信し、記憶させる図12のDREG2。検索処理次に、検索処理の具体例について説明する。図13は、検索処理の具体例を示す流れ図である。ここでは、データベース装置50は、データ登録処理によってN個の検索可能暗号データiを記憶しているとする。ユーザ装置40iは、ユーザiの入力操作に従って、秘密鍵skiと、検索対象キーワードKWとを入力として、ユーザクエリTRH1xiを生成し、プロキシサーバ装置30に送信する図13のSRC1。次いで、プロキシサーバ装置30は、受信したユーザクエリTRと、プロキシ鍵rkiとを入力として、検索クエリTRTRrkiH1sを生成し、データベース装置50に送信する図13のSRC2。次いで、データベース装置50は、自身が記憶している検索可能暗号データの集合の各要素に対して、C1H2C2が成立するか否かを確認する。そして、データベース装置50は、等号が成立した検索可能暗号データを検索結果としてプロキシサーバ装置30に送信する図13のSRC3。次いで、プロキシサーバ装置30は、受信した検索結果をユーザ装置40iに送信する図13のSRC4。なお、プロキシサーバ装置30は、安全のために、検索を行う前にユーザ認証を行うことが望ましい。ユーザ認証の方法として、例えば、既存のIDPasswordを用いた方法や、電子署名を用いた方法などを用いることができる。また、プロキシ鍵生成処理に関しては、マルチパーティ計算を行うことにより、サービスプロバイダの秘密鍵s、ユーザiの秘密鍵xiを互いに秘密にしたままsxiを計算できることが知られている。本システムにおいても、マルチパーティ計算を利用してsxiを計算してもよい。さらに、本実施形態では、検索可能暗号データのデータサイズを小さくするためにハッシュ関数H2を用いているが、H2を省略しても構わない。本実施形態では、検索可能暗号データはpksrgrとなる。秘密鍵sksまたはユーザiの秘密鍵skiおよびプロキシ鍵rkiを用いずに、サービスプロバイダの公開鍵およびだけを用いて、検索処理を行うことは難しい。また、プロキシサーバ装置はsaを保持するが、sまたはaすなわち、サービスプロバイダの秘密鍵またはユーザの秘密鍵が分からない限り、検索クエリを生成することもできない。したがって、プロキシサーバ装置の管理者が悪意を持って行動した場合でも、データベースに記憶された検索可能暗号データの集合に対して、任意のキーワードに対する検索を行うことができない。以上に説明したように、本実施形態の第1の効果は、異なる公開鍵秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答できることにある。これにより、1つのデータに対して複数ユーザが暗号化したまま検索を行うことが可能となる。また、本実施形態の第2の効果は、データベース内に記憶された検索可能暗号データが漏洩した場合であっても、サービスプロバイダの秘密鍵が漏洩しなければ、データの内容に関するいかなる情報も漏えいしないことにある。これにより、万が一データベース内のデータが漏洩した場合にも、情報漏えいの被害を軽減できる。したがって、本実施形態の暗号データ検索システムは、異なる公開鍵秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答でき、かつデータ漏洩による被害を低減することができる。実施形態2.次に、本発明の第2の実施形態について説明する。本実施形態の暗号データ検索システムは、第1の実施形態と同様の構成を備えている。また、本実施形態では、ユーザ装置は、図14に示すように、第1の実施形態の構成に加えて、署名検証鍵生成部405iと、署名データ生成部406iとを含む。署名検証鍵生成部405iおよび署名データ生成部406iは、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。本実施形態では、電子署名を利用する。まず、電子署名について説明する。電子署名には、鍵生成、署名生成および署名検証の3つのアルゴリズムがある。鍵生成アルゴリズムは、セキュリティパラメータを入力とし、署名を生成するための鍵である署名鍵skと、署名を検証するための鍵である検証鍵vkとを生成する。例えば、本実施形態では、署名検証鍵生成部405iが、セキュリティパラメータを入力とし、署名鍵skと検証鍵vkとを生成する。署名生成アルゴリズムは、署名対象メッセージMと、署名者の署名鍵skとを入力とし、署名データM,σを出力する。例えば、本実施形態では、署名データ生成部406iが、署名対象メッセージMと署名者の署名鍵skとを入力とし、署名データM,σを生成して出力する。署名検証アルゴリズムは、署名データM,σと、署名者の検証鍵vkとを入力とし、受理または不受理を示す検証結果を出力する。例えば、本実施形態では、データベース装置50が、署名データM,σと、署名者の検証鍵vkとを入力とし、受理または不受理を示す検証結果を出力する。次に、本実施形態の暗号データ検索システムのサービスプロバイダ鍵生成、ユーザ登録、データ登録、検索の各処理について説明する。ここでは、各エンティティに対してシステムパラメータとして、qGGTGの生成元gペアリング関数eG×G→GT、任意のビット列からGへのハッシュ関数H1、GTの元からkビットのビット列へのハッシュ関数H2が与えられている。サービスプロバイダ鍵生成処理本実施形態のサービスプロバイダ鍵生成処理について説明する。サービスプロバイダ装置20は、非特許文献1に記載された鍵生成処理と同様の処理を実行する。次いで、サービスプロバイダ装置20は、生成したサービスプロバイダの公開鍵をpksgsとして公開し、秘密鍵をskssとして保管する。ユーザ登録処理次に、ユーザ登録処理について説明する。ユーザ装置40iは、ユーザiの操作に従って、署名生成の鍵生成を行い、検証鍵vkiと秘密鍵skiとを生成する。次いで、ユーザ装置40iは、ユーザ登録要求をサービスプロバイダ装置20に送信する。さらに、ユーザ装置40iは、検証鍵vkiをサービスプロバイダ装置20に送信する。次いで、サービスプロバイダ装置20は、サービスプロバイダの秘密鍵sksおよびユーザの検証鍵vkiを、プロキシサーバ装置30に送信する。次いで、プロキシサーバ装置30は、ユーザを識別する情報と検証鍵とを対応付けたデータpksrgrを生成する。次いで、データ登録装置10は、検索可能暗号データをデータベース装置50に送信し、記憶させる。検索処理次に、検索処理について説明する。ここでは、データベース装置50は、データ登録処理によってN個の検索可能暗号データiを記憶しているとする。ユーザ装置40iは、ユーザiの入力操作に従って、検索対象キーワードKWを入力として、ユーザクエリH1を生成し、プロキシサーバ装置30に送信する。次いで、プロキシサーバ装置30は、受信したユーザクエリH1と、サービスプロバイダの秘密鍵sksとを入力として、検索クエリTRH1sを生成し、ユーザ装置40iに送信する。次いで、ユーザ装置40iは、受信した検索クエリTRと、署名鍵skiとを入力として、検索クエリTRに対して署名データTR,σを生成し、データベース装置50に送信する。次いで、データベース装置50は、ユーザ装置40iから受信した署名データTR,σと、ユーザiの検証鍵vkiとを入力として、署名検証を行う。署名検証結果が拒否であった場合、データベース装置50は、ユーザiに署名が拒否であった旨を通知し、動作を停止する。一方、署名検証結果が受理であった場合、データベース装置50は、自身が記憶している検索可能暗号データの集合の各要素に対して、C1H2C2が成立するか否かを確認する。そして、データベース装置50は、等号が成立した検索可能暗号データを検索結果としてユーザ装置40iに送信する。プロキシサーバ装置30は、安全のために、検索を行う前にユーザ認証を行うことが望ましい。ユーザ認証の方法として、例えば、既存のIDPasswordを用いた方法や、電子署名を用いた方法などを用いることができる。本実施形態では、データベースが検索を行う際に、検索クエリに付与された電子署名の検証を行う。また、プロキシサーバ装置はsすなわち、サービスプロバイダの秘密鍵を保持するため、任意のキーワードに対する検索クエリを生成できるが、ユーザの電子署名を生成することができない。そのため、プロキシサーバ装置の管理者が悪意を持って行動した場合であっても、データベースに記憶された検索可能暗号データの集合に対して、任意のキーワードに対する検索を行うことができない。したがって、本実施形態の暗号データ検索システムは、異なる公開鍵秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答でき、かつデータ漏洩による被害を低減することができる。なお、本発明は、上記に示した実施形態に限定されるものではなく、本発明の技術思想の範囲内において、実施例を適宜変更して実施可能である。次に、本発明による暗号データ検索システムの最小構成について説明する。図15は、暗号データ検索システムの最小の構成例を示すブロック図である。図15に示すように、暗号データ検索システムは、最小の構成要素として、サービス提供装置2と、データ登録装置1と、データベース装置5と、ユーザ装置4と、プロキシ装置3とを備えている。図15に示す最小構成の暗号データ検索システムでは、サービス提供装置2は、データを暗号化するためのサービス公開鍵およびサービス公開鍵に対応したサービス秘密鍵を生成する。また、サービス提供装置2は、データの検索を要求するユーザ装置4が生成したユーザ秘密鍵とサービス秘密鍵とを入力として、ユーザ装置4ごとのプロキシ鍵を生成し、プロキシ装置3に送信する。また、データベース装置5は、データ登録装置1がサービス公開鍵およびデータを入力として生成した検索可能暗号データを記憶する。ユーザ装置4は、データベース装置5に記憶された検索可能暗号データに対して、データの検索を要求するためのユーザクエリを、ユーザ秘密鍵を用いて生成し、プロキシ装置3に送信する。すると、プロキシ装置3は、ユーザ装置4から受信したユーザクエリとサービス提供装置2から受信したユーザ装置4ごとのプロキシ鍵とを入力として、データベース装置5に記憶されている検索可能暗号データの検索を要求するための検索クエリを生成する。従って、最小構成の暗号データ検索システムによれば、異なる公開鍵秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答でき、かつデータ漏洩による被害を低減することができる。なお、本実施形態では、以下の1~5に示すような暗号データ検索システムの特徴的構成が示されている。1暗号データ検索システムは、サービス提供装置例えば、サービスプロバイダ装置20によって実現されると、データ登録装置例えば、データ登録装置10によって実現されると、データベース装置例えば、データベース装置50によって実現されると、ユーザ装置例えば、ユーザ装置40iによって実現されると、プロキシ装置例えば、プロキシサーバ装置30によって実現されるとを備え、サービス提供装置は、データを暗号化するためのサービス公開鍵例えば、pksおよびサービス公開鍵に対応したサービス秘密鍵例えば、sksを生成し例えば、鍵生成部201によって実現される、データの検索を要求するユーザ装置が生成したユーザ秘密鍵例えば、pkiとサービス秘密鍵とを入力として、ユーザ装置ごとのプロキシ鍵例えば、rkiを生成し、プロキシ装置に送信し例えば、プロキシ鍵生成部202によって実現される、データ登録装置は、サービス公開鍵およびデータ例えば、データMを入力として、検索可能暗号データを生成し例えば、検索可能暗号データ生成部101によって実現される、データベース装置は、検索可能暗号データを記憶し、ユーザ装置は、データベース装置に記憶された検索可能暗号データに対して、データの検索を要求するためのユーザクエリ例えば、Qiを生成し、プロキシ装置に送信し例えば、クエリ生成部404iによって実現される、プロキシ装置は、ユーザ装置から受信したユーザクエリとサービス提供装置から受信したユーザ装置ごとのプロキシ鍵とを入力として、データベース装置に記憶されている検索可能暗号データの検索を要求するための検索クエリ例えば、Qsを生成し例えば、クエリ変換部301によって実現される、ユーザ装置は、さらに、ユーザ秘密鍵を用いてユーザクエリを生成することを特徴とする。2暗号データ検索システムにおいて、サービス提供装置は、サービス秘密鍵とユーザ秘密鍵とを入力として、ユーザ装置ごとのプロキシ鍵を生成し、プロキシ装置は、ユーザクエリおよびプロキシ鍵を入力として、検索クエリを生成し、データベース装置は、検索クエリとデータベース装置が記憶する検索可能暗号データとを入力として、検索結果を生成するように構成されていてもよい。3暗号データ検索システムにおいて、データ登録装置は、素数位数qを持つ群G,GT、eをGの元2つを入力としてGTの群への写像であるペアリング関数、gを群Gの生成元、H1を任意のビット列からG上へのハッシュ関数、H2をGTからkビットのビット列上へのハッシュ関数、Mをメッセージ、Zqの乱数r、sをサービス秘密鍵、gsをサービス公開鍵としたとき、H2gsrgrを含む検索可能暗号データを生成し、ユーザ装置は、aをユーザ秘密鍵、gaをユーザ公開鍵とし、検索キーワードをKWとしたとき、H1aを含むユーザクエリを生成するように構成されていてもよい。4暗号データ検索システムにおいて、プロキシ装置は、ユーザ装置のプロキシ鍵がsaを含み、検索キーワードをKWとしたとき、H1sを含む検索クエリを生成するように構成されていてもよい。5暗号データ検索システムにおいて、ユーザ装置は、検証鍵と署名鍵とを生成し例えば、検証署名鍵生成405iによって実現される、プロキシ装置が生成した検索クエリと署名鍵とを入力として、署名データを生成し例えば、署名データ生成406iによって実現される、データベース装置は、署名データと検証鍵とを入力として、署名検証を行うように構成されていてもよい。"