"複数の暗号化データと、各暗号化データに対応付けられている、暗号化データの検索の際に照合されるタグデータとを保管するデータ保管装置に接続され、前記データ保管装置での保管の対象となる保管対象データのキーワードを保管キーワードとして指定するキーワード指定部と、前記データ保管装置へのビット値の開示を許可するビット位置を許可ビット位置として指定する許可ビット位置指定部と、所定の生成手順にて、前記保管キーワードから所定のビット列を保管インデックス導出ビット列として生成するインデックス導出ビット列生成部と、前記保管インデックス導出ビット列内の前記許可ビット位置のビット値は前記データ保管装置に開示し前記保管インデックス導出ビット列内の前記許可ビット位置以外のビット値は前記データ保管装置に秘匿する秘匿化処理を行い、前記保管対象データの暗号化データに対応付けられるタグデータを保管する際に前記データ保管装置が前記タグデータに付す保管インデックス値を、前記データ保管装置に、前記保管インデックス導出ビット列内の前記許可ビット位置の開示されたビット値から導出させる秘匿化処理部とを有することを特徴とするデータ処理装置。前記データ処理装置は、暗号化された検索キーワードと、開示が許可されているビット位置のビット値の開示により前記暗号化された検索キーワードとの照合の対象となるタグデータのインデックス値が導出される検索インデックス導出ビット列とが含まれる検索要求を受信した際に、前記検索インデックス導出ビット列内のビット値の開示により得られるインデックス値に基づき、前記暗号化された検索キーワードとの照合の対象となるタグデータを特定し、特定したタグデータと前記暗号化された検索キーワードとを照合して暗号化データを検索するデータ保管装置に接続され、前記インデックス導出ビット列生成部は、前記データ保管装置において前記検索インデックス導出ビット列から得られるインデックス値と比較される保管インデックス値が、前記秘匿処理部による前記データ保管装置への前記許可ビット位置のビット値の開示により導出される保管インデックス導出ビット列を生成することを特徴とする請求項1に記載のデータ処理装置。前記許可ビット位置指定部は、順次新たな許可ビット位置を指定し、前記秘匿化処理部は、前記許可ビット位置指定部により新たな許可ビット位置が指定された場合に、前記保管インデックス導出ビット列内の既存の許可ビット位置のビット値に加えて新たに指定された許可ビット位置のビット値を前記データ保管装置に開示する秘匿化処理を行い、保管インデックス値のビット数を増加させることを特徴とする請求項1又は2に記載のデータ処理装置。前記秘匿化処理部は、許可ビット位置ごとに、許可ビット位置の暗号化ビットの復号に用いられる復号鍵を許可ビット復号鍵として生成し、前記データ処理装置は、更に、前記許可ビット復号鍵を前記データ保管装置に対して送信する許可ビット復号鍵送信部を有し、前記秘匿化処理部は、前記許可ビット位置の暗号化ビットは前記許可ビット復号鍵により復号され、前記許可ビット位置以外の暗号化ビットは前記許可ビット復号鍵により復号されない暗号化方式にて前記保管インデックス導出ビット列を暗号化し、前記データ処理装置は、更に、前記保管対象データの暗号化データと、前記保管対象データの暗号化データに対応付けられるタグデータと、暗号化された前記保管インデックス導出ビット列とが含まれる保管要求を前記データ保管装置に対して送信する保管要求送信部を有することを特徴とする請求項1~3のいずれかに記載のデータ処理装置。前記秘匿化処理部は、前記保管対象データに対するアクセスが許可されるユーザのユーザ情報が反映されている復号鍵を、前記許可ビット復号鍵として生成し、前記保管対象データに対するアクセスが許可されるユーザのユーザ情報が反映されている暗号鍵を用いて、前記保管インデックス導出ビット列を暗号化することを特徴とする請求項4に記載のデータ処理装置。前記許可ビット位置指定部は、順次新たな許可ビット位置を指定し、前記秘匿化処理部は、前記許可ビット位置指定部により新たな許可ビット位置が指定された場合に、新たに指定された許可ビット位置の暗号化ビットの復号に用いられる許可ビット復号鍵を生成し、前記許可ビット復号鍵送信部は、前記秘匿化処理部により生成された新たな許可ビット復号鍵を前記データ保管装置に対して送信することを特徴とする請求項4又は5に記載のデータ処理装置。前記データ処理装置は、暗号化された検索キーワードとの照合の対象となるタグデータを特定し、特定したタグデータと前記暗号化された検索キーワードとを照合して暗号化データを検索するデータ保管装置に接続され、前記キーワード指定部は、前記データ保管装置に暗号化データの検索を行わせる検索キーワードを指定し、前記インデックス導出ビット列生成部は、前記保管インデックス導出ビット列と同じ生成手順にて、前記キーワード指定部により指定された前記検索キーワードから所定のビット列を検索インデックス導出ビット列として生成し、前記秘匿化処理部は、前記データ保管装置へのビット値の開示が許可されているビット位置である許可ビット位置の暗号化ビットは、前記データ保管装置が保有する許可ビット復号鍵により復号され、前記許可ビット位置以外の暗号化ビットは前記許可ビット復号鍵により復号されない暗号化方式にて前記検索インデックス導出ビット列を暗号化し、暗号化された検索キーワードとの照合の対象となるタグデータを抽出する際に前記データ保管装置が保管インデックス値と比較する検索インデックス値を、前記データ保管装置に、暗号化された前記検索インデックス導出ビット列内の前記許可ビット位置の暗号化ビットの復号により前記データ保管装置に開示される前記許可ビット位置のビット値から導出させ、前記データ処理装置は、更に、暗号化された前記検索キーワードと、暗号化された前記検索インデックス導出ビット列とが含まれる検索要求を前記データ保管装置に対して送信する検索要求送信部を有することを特徴とする請求項6に記載のデータ処理装置。前記秘匿化処理部は、前記データ処理装置のユーザのユーザ情報が反映されている暗号鍵を用いて、前記検索インデックス導出ビット列を暗号化することを特徴とする請求項7に記載のデータ処理装置。データ処理装置に接続され、前記データ処理装置から送信された暗号化データを保管するデータ保管装置であって、復号が許可されている許可ビット位置ごとに、許可ビット位置の暗号化ビットの復号に用いられる許可ビット復号鍵を保管する許可ビット復号鍵管理部と、保管対象の暗号化データと、暗号化データの検索の際に照合されるタグデータと、前記保管対象の暗号化データに指定された保管キーワードを用いて生成された暗号化されたビット列とが含まれる保管要求を前記データ処理装置から受信する保管要求受信部と、前記保管要求に含まれる前記保管対象の暗号化データを、前記タグデータと対応付けて保管する暗号化データ管理部と、前記保管要求に含まれる前記暗号化されたビット列内の許可ビット位置の暗号化ビットを前記許可ビット復号鍵を用いて復号し、復号により得られるビット値からインデックス値を導出し、導出したインデックス値と前記保管要求に含まれる前記タグデータとを対応付けて保管するインデックス管理部とを有することを特徴とするデータ保管装置。前記許可ビット復号鍵管理部は、ユーザ情報と対応付けて許可ビット復号鍵を保管し、前記保管要求受信部は、前記保管対象の暗号化データに対するアクセスが許可されるユーザのユーザ情報が含まれる保管要求を受信し、前記インデックス管理部は、前記保管要求に含まれるユーザ情報と合致するユーザ情報と対応付けられている許可ビット復号鍵を用いて、前記保管要求に含まれる前記暗号化されたビット列内の許可ビット位置の暗号化ビットを復号し、インデックス値を導出することを特徴とする請求項9に記載のデータ保管装置。前記許可ビット復号鍵管理部は、ユーザ情報が反映されている許可ビット復号鍵を、前記ユーザ情報と対応付けて保管し、前記保管要求受信部は、前記保管対象の暗号化データに対するアクセスが許可されるユーザのユーザ情報が反映されている暗号鍵により暗号化されたビット列が含まれる保管要求を受信することを特徴とする請求項10に記載のデータ保管装置。前記インデックス管理部は、前記保管要求に含まれる前記暗号化されたビット列に対する復号により得られるビット値を連結してインデックス値を導出し、前記保管要求に含まれるユーザ情報に、導出したインデックス値と、前記保管要求に含まれる前記タグデータと、前記暗号化されたビット列内の復号されていない暗号化ビットとを対応付けて保管し、前記許可ビット復号鍵管理部は、新たな許可ビット位置が指定されると、新たな許可ビット位置の暗号化ビットの復号に用いられる新たな許可ビット復号鍵と、前記新たな許可ビット復号鍵と対応付けられるユーザ情報とを取得し、前記インデックス管理部は、前記許可ビット復号鍵管理部により取得された前記ユーザ情報と合致するユーザ情報に対応付けられている暗号化ビットを抽出し、抽出した暗号化ビットのうち前記新たな許可ビット位置に対応する暗号化ビットを前記新たな許可ビット復号鍵を用いて復号し、復号により得られたビット値を、共通のユーザ情報に対応付けられているインデックス値に追加して新たなインデックス値を導出することを特徴とする請求項10又は11に記載のデータ保管装置。前記データ保管装置は、複数のデータ処理装置に接続され、前記データ保管装置は、更に、前記複数のデータ処理装置のうち暗号化データの検索を要求する検索要求データ処理装置から、暗号化された検索キーワードと、暗号化前の検索キーワードを用いて生成された暗号化されたビット列と、前記検索要求データ処理装置のユーザのユーザ情報が含まれる検索要求を受信する検索要求受信部を有し、前記インデックス管理部は、前記検索要求に含まれるユーザ情報と合致するユーザ情報と対応付けられている許可ビット復号鍵を用いて、前記検索要求に含まれる前記暗号化されたビット列内の許可ビット位置の暗号化ビットを復号し、復号により得られる前記許可ビット位置のビット値からインデックス値を導出し、導出したインデックス値と同じインデックス値と対応付けられているタグデータを抽出し、前記データ保管装置は、更に、前記インデックス管理部により抽出されたタグデータと前記検索要求に含まれる前記暗号化された検索キーワードとを照合し、前記インデックス管理部により抽出されたタグデータの中から、前記検索キーワードと同じキーワードから生成されているタグデータを特定し、特定したタグデータに対応付けられている暗号化データを前記暗号化データ管理部から取得する検索処理部を有することを特徴とする請求項10~12のいずれかに記載のデータ保管装置。前記許可ビット復号鍵管理部は、ユーザ情報が反映されている許可ビット復号鍵を、前記ユーザ情報と対応付けて保管し、前記検索要求受信部は、前記検索要求データ処理装置のユーザのユーザ情報が反映されている暗号鍵により暗号化されたビット列が含まれる検索要求を受信することを特徴とする請求項13に記載のデータ保管装置。前記インデックス管理部は、前記保管要求に含まれるユーザ情報に、導出したインデックス値と、前記保管要求に含まれる前記タグデータとを対応付けて保管し、前記検索要求受信部により前記検索要求が受信された場合に、前記検索要求に含まれるユーザ情報と合致するユーザ情報と対応付けられている許可ビット復号鍵を用いて、前記検索要求に含まれる前記暗号化されたビット列内の許可ビット位置の暗号化ビットを復号し、復号により得られる前記許可ビット位置のビット値からインデックス値を導出し、前記検索要求に含まれるユーザ情報と合致するユーザ情報と対応付けられているタグデータの中から、導出したインデックス値と同じインデックス値と対応付けられているタグデータを抽出することを特徴とする請求項13又は14に記載のデータ保管装置。秘匿検索の基本的な流れは、下記の通りである。まず、データを暗号化するユーザ暗号化者は、データを暗号化して暗号化データを作成するが、それと同時に暗号化データを検索するためのキーワードを暗号化データに関連付ける。もちろん関連付けたキーワードもデータに関する情報であるため、これも暗号化して暗号化タグを生成し、暗号化データと暗号化タグをデータセンタ装置401に保管する。暗号化タグは1個である必要はなく、複数関連付ける事ができる。また、暗号化タグからキーワードが漏れる事はない。検索を行うユーザ検索者は、検索したいキーワードを選び、そのキーワードと自身の持つ秘密鍵を用いて検索クエリを作成する。検索クエリは、秘密鍵を用いてキーワードをランダム化したものであるため、検索クエリ自身から秘密鍵を類推するのは難しい。そして、この検索クエリをデータセンタ装置401に送付し、検索を要求する。データセンタ装置401は、ユーザから保管を依頼された暗号化データと暗号化タグを関連付けて保管している。検索者から検索クエリを受け取ったら、自身が保管する暗号化タグの中から、検索クエリの生成に用いられたキーワードと同一のキーワードを含むものを検索する。この時、データセンタ装置401は秘匿検索のための特殊な演算を行う事によって、暗号化タグを復号してキーワードを取り出すことなく、暗号化タグのキーワードと、検索クエリのキーワードが同一かどうかを判定できる。そして、キーワードが検索クエリと同一と判定された暗号化タグと関連付けられた暗号化データを検索者に返却する。なお、秘匿検索には、暗号化者と検索者が同一でなければならない共通鍵方式と、暗号化者は誰でも良くて検索者のみが特定ユーザに限定された公開鍵方式の2種類がある。上述の従来技術は、いずれも公開鍵方式の秘匿検索方式である。非特許文献2にて開示されているのは、確定的暗号を用いた秘匿検索方式である。これは、前述の様に、同一のキーワードを暗号化した際に、何回繰り返して暗号化しても同一の暗号化タグが得られるという特徴を持つ。そのため、暗号化タグのデータビットを比較する事でキーワードの同一性が判定でき、かつ暗号化タグ同士で大小比較を行う事ができるため、従来のデータベースで高速化のために実現されている2分木によるインデックス情報を作成する事ができる。また、本方式では検索クエリも公開鍵を用いて生成し、暗号化タグと検索クエリの比較もバイナリデータとして完全に一致するかどうかで判断ができるため、検索処理を高速化できるという特徴がある。一方、データを保管しているデータセンタ装置401が、暗号化タグの出現頻度を計測する事で、平文を類推できてしまうというリスクがある。例えば、コンピュータのログファイルで、メッセージ種別としてInfo/Errorの2種類が保管されている事を考える。ここで、暗号化タグの統計を取った結果、AAAAAという暗号化タグが99の出現頻度、BBBBBという暗号化タグが1の出現頻度であったと仮定する。一般的に、正しく運用されたコンピュータシステムでは、Errorが発生する頻度は極めて低いと考えられる事から、AAAAAはInfoを意味しており、BBBBBはErrorを意味していると推測ができてしまう。この様に、確定的暗号は保管されるメッセージの出現頻度が知られている場合、たとえ暗号自身を破らなくても、元のデータが類推されるという危険性がある。そのため、検索が高速に実施できるというメリットがあるものの、高い機密性が求められるシステムでは確率的暗号をベースにした秘匿検索の方が推奨される事が多い。非特許文献1に記載の方式は、確率的暗号の一つであるIDベース暗号以下IBE:Identity-BasedEncryptionを用いた秘匿検索方式である。IBEは、メールアドレスや氏名などのIDを公開鍵としてデータの暗号化を行う事が可能な暗号化方式である。暗号化データは、IDに対応するユーザ秘密鍵を持つユーザだけが復号できる。なお、ユーザ秘密鍵はマスター鍵を持つPKGPrivate-KeyGeneratorによって生成され、IDと対応する正規のユーザに対してのみ発行する。秘匿検索では、暗号化データから暗号化に用いたIDが分からないというID秘匿性を持ったIBEが利用される。また、確率的暗号であるため、同一のIDで同一のメッセージを暗号化しても、常に異なる暗号文となるため、複数の暗号文を並べてみても同一のメッセージを暗号化したものかどうかの区別がつかないという特徴も持っている。はじめに、暗号化者は、乱数を生成した後、キーワードをIDとしてIDベース暗号を用いて乱数を暗号化して暗号化乱数を得る。この乱数と暗号化乱数の対を暗号化タグとして、暗号化データと共にデータセンタ装置に保管する。次に検索者は、自身が持つマスター鍵を元に、検索キーワードをIDとしてユーザ秘密鍵を生成する。このユーザ秘密鍵は、キーワードを用いて暗号化されたデータを復号できる秘密鍵であり、これを検索クエリとしてデータセンタに送付して、検索を要求する。データセンタは、保管されている暗号化タグから暗号化乱数を取り出し、取り出した暗号化乱数を検索クエリユーザ秘密鍵を用いて復号し、暗号化タグに含まれる乱数が正しく復号されるかどうかを確認する。もし、暗号化乱数を生成する際に用いたキーワードIDと、検索クエリユーザ秘密鍵を生成する際に用いたキーワードIDが同一であれば、正しく暗号化乱数を復号可能である事から、暗号化タグと検索クエリが同一のキーワードから生成されていた事が分かる。この様に、確率的暗号に基づく秘匿検索方式は、1個の暗号化タグと1個の検索クエリを比較する事で、お互いに同一のキーワードを含む事が分かる。しかし、確率的暗号である事から、暗号化タグ同士を比較しても、同一のキーワードから生成されたかの判断がつかない。そのため、従来のデータベースで高速化のために実現されている2分木によるインデックス情報を作成する事ができず、結果として保管されている全ての暗号化タグを、それぞれ検索クエリと比較する必要が生じてしまい、検索の速度が非常に遅くなってしまうとい課題ある。非特許文献3や非特許文献5は、非特許文献1に記載の方式に対して、ANDやOR等の条件を用いる事を可能にした方式であり、より柔軟な検索を可能にする。しかし、非特許文献1と同様に、保管されている全ての暗号化タグを、それぞれ検索クエリと比較する必要が生ずる点は同一であり、検索の速度が非常に遅くなってしまうという課題がある。非特許文献4は、非特許文献1に記載の方式に対して、検索復号が可能なユーザを複数人に拡張する事で、暗号化データのグループ共有を可能とした方式である。しかし、非特許文献1と同様に、保管されている全ての暗号化タグを、それぞれ検索クエリと比較する必要が生ずる点は同一であり、検索の速度が非常に遅くなってしまうとい課題がある。特許文献1は、前記の課題を解決するために、ユーザが検索した結果をキャッシュとして保存しておき、次回以降に同一のキーワードが検索された場合に、高速に検索結果を返すための仕組みを提案している。本方式は、繰り返し同一キーワードで検索される場合に有効である。しかし、特許文献1の方法は、一度検索したキーワードに対しては高速に検索結果を検索者に返却することが可能であるが、一度も検索したことのないキーワードに対しては、非特許文献1で問題であった様に、データセンタに保存された全てのタグを検索する必要がある。そのため、膨大なタグを保存するデータベースで、検索キーワードが初めて指定されるキーワードであった場合に、検索結果を得るのに多大な時間を要するという課題がある。本発明は、上記のような課題を解決することを主な目的としており、確率的暗号を利用した秘匿検索において、一度も検索を行っていないキーワードであっても、暗号化データの検索処理を高速かつ安全に行える構成を実現することを目的とする。本発明に係るデータ処理装置は、複数の暗号化データと、各暗号化データに対応付けられている、暗号化データの検索の際に照合されるタグデータとを保管するデータ保管装置に接続され、前記データ保管装置での保管の対象となる保管対象データのキーワードを保管キーワードとして指定するキーワード指定部と、前記データ保管装置へのビット値の開示を許可するビット位置を許可ビット位置として指定する許可ビット位置指定部と、所定の生成手順にて、前記保管キーワードから所定のビット列を保管インデックス導出ビット列として生成するインデックス導出ビット列生成部と、前記保管インデックス導出ビット列内の前記許可ビット位置のビット値は前記データ保管装置に開示し前記保管インデックス導出ビット列内の前記許可ビット位置以外のビット値は前記データ保管装置に秘匿する秘匿化処理を行い、前記保管対象データの暗号化データに対応付けられるタグデータを保管する際に前記データ保管装置が前記タグデータに付す保管インデックス値を、前記データ保管装置に、前記保管インデックス導出ビット列内の前記許可ビット位置の開示されたビット値から導出させる秘匿化処理部とを有することを特徴とする。本発明によれば、保管キーワードから生成した保管インデックス導出ビット列のうち許可ビット位置のビット値をデータ保管装置に開示し、データ保管装置に、タグデータを保管する際にタグデータに付与する保管インデックス値を、開示したビット値から導出させることができる。このため、データ保管装置は、保管インデックス値を付してタグデータを保管することができ、一度も検索を行っていないキーワードであっても、保管インデックス値を用いて暗号化データを高速に検索することができる。また、許可ビット位置以外のビット値は秘匿しているため、保管キーワードに関してデータ保管装置に漏洩する情報量を限定することができる。実施の形態1.実施の形態1及び2では、確率的暗号を用いた秘匿検索方式において、暗号化タグに対してキーワードの部分情報も追加で添付する事で、データセンタ装置によるインデックス作成を可能とする仕組みを説明する。更に、実施の形態1及び2では、登録された暗号化データ数が増加して検索処理が遅くなった際に、キーワードの部分情報を更に追加で開示する仕組みを提供する事で、確率的暗号を利用した秘匿検索を安全に高速化する仕組みを説明する。図1は、秘匿検索システム100の構成例を示す図である。秘匿検索システム100は、鍵管理サーバ装置201、アクセス端末装置301301a~301m、データセンタ装置401を備える。鍵管理サーバ装置201とアクセス端末装置301とは、社内LANLocalAreaNetwork102に接続されている。社内LAN102は、ネットワーク101を介してデータセンタ装置401と接続されている。なお、アクセス端末装置301はデータ処理装置の例であり、データセンタ装置401はデータ保管装置の例である。なお、アクセス端末装置301はアクセス端末と略記する場合があり、また、データセンタ装置401はデータセンタと略記する場合がある。鍵管理サーバ装置201は、暗号化などの処理を行うためにユーザアクセス端末装置301の利用者全員が共有する公開パラメータを生成するとともに、ユーザに対してユーザ秘密鍵を発行するために用いるマスター鍵を生成する。また、各ユーザのIDIdentificaitonを管理するとともに、そのIDに基づいてユーザに対してユーザ秘密鍵を発行する。アクセス端末装置301は、例えば、企業のユーザが利用するPCPersonalComputerである。アクセス端末装置301は、データセンタ装置401での保管対象となる保管対象データを作成し、生成した保管対象データを暗号化し、暗号化データをデータセンタ装置401に保管するとともに、データセンタ装置401に蓄積した暗号化データを検索し、データセンタ装置401から取り出した暗号化データを復号して編集する。データセンタ装置401は、企業内で作成された暗号化データを保管する大容量の記憶装置を持つサーバ装置である。データは暗号化された状態で保管されるため、データセンタ装置401では中身を閲覧することができない。ネットワーク101は、社内LAN102とデータセンタ装置401を接続する通信路である。例えば、インターネットなどが代表的なネットワーク101の例である。社内LAN102は、企業内に施設された通信路であり、企業内で利用される様々なサーバやパソコンが接続される。なお、複数の建物にオフィスを持つ場合は、ルータや専用線などを介して複雑な通信路構成となる。ここで、各装置の内部構成の詳細な説明を行う前に、本実施の形態における秘匿検索システム100の概要を説明する。アクセス端末装置301は、保管対象データのキーワード保管キーワードの例を暗号鍵にして乱数を暗号化してタグデータ以下、単にタグともいうを生成する。タグデータは、暗号化データの検索の際に照合されるデータである。また、アクセス端末装置301は、データセンタ装置401へのビット値の開示を許可するビット位置を許可ビット位置として指定する。更に、アクセス端末装置301は、保管対象データのキーワードに対して所定の演算を行って所定のビット列保管インデックス導出ビット列の例を生成する。そして、アクセス端末装置301は、ビット列内の許可ビット位置のビット値はデータセンタ装置401に開示しビット列内の許可ビット位置以外のビット値はデータセンタ装置401に秘匿する秘匿化処理を行う。アクセス端末装置301は、保管対象データの暗号化データに対応付けられるタグデータを保管する際にデータセンタ装置401がタグデータに付すインデックス値保管インデックス値の例を、データセンタ装置401に、ビット列内の許可ビット位置の開示されたビット値から導出させる。なお、このインデックス値は、いずれかのアクセス端末装置301から検索要求があった場合に、データセンタ装置401において、検索要求に含まれるトラップドア暗号化された検索キーワードと照合するタグデータを特定するために用いられる。ビット列に対する秘匿処理は、具体的には、アクセス端末装置301からデータセンタ装置401への復号鍵の提供及びビット列の暗号化により行われる。アクセス端末装置301は、許可ビット位置ごとに、許可ビット位置の暗号化ビットの復号に用いられる復号鍵であるグループ判定鍵許可ビット復号鍵の例を生成し、グループ判定鍵をデータセンタ装置401に送信する。本実施の形態では、1ビット単位で許可ビット位置を指定するため、例えば、アクセス端末装置301が上位3ビットのビット値をデータセンタ装置401に開示する場合は、各ビットに対応させて3つのグループ判定鍵が順にデータセンタ装置401に送信される。また、アクセス端末装置301は、保管対象データのキーワードから生成したビット列に対して暗号化を行う。より具体的には、アクセス端末装置301は、許可ビット位置の暗号化ビットはグループ判定鍵により復号され、許可ビット位置以外の暗号化ビットはグループ判定鍵により復号されない暗号化方式にてビット列を暗号化する。暗号化されたビット列は、グループ化情報という。アクセス端末装置301は、保管対象データの暗号化データとタグデータとグループ化情報をデータセンタ装置401に送信する。データセンタ装置401では、タグデータと対応付けて暗号化データを保管する。また、データセンタ装置401では、グループ判定鍵を用いてグループ化情報の許可ビット位置の暗号化ビットを復号し、復号により得られたビット値からインデックス値を生成し、タグデータとインデックス値とを対応付けて保管する。なお、グループ判定鍵及びグループ化情報におけるグループとは、タグデータのグループを意味している。例えば、許可ビット位置が上位3ビットであり、あるタグデータのグループ化情報の上位3ビットの復号から得られたインデックス値が011であれば、当該タグデータは、011のインデックス値が得られた他のタグデータと同じグループに分類されることになる。そして、データセンタ装置401に保管されている暗号化データを検索する際には、アクセス端末装置301は、検索対象のキーワード検索キーワードの例を暗号化してトラップドアを生成し、また、暗号化データの保管時のビット列と同様の生成手順にて、検索キーワードから所定のビット列検索インデックス導出ビット列の例を生成する。また、アクセス端末装置301は、許可ビット位置の暗号化ビットはグループ判定鍵により復号され、許可ビット位置以外の暗号化ビットはグループ判定鍵により復号されない暗号化方式にてビット列を暗号化して、グループ化情報を生成する。そして、アクセス端末装置301は、トラップドアとグループ化情報が含まれる検索クエリ検索要求の例をデータセンタ装置401に送信する。なお、データセンタ装置401に暗号化データを登録するアクセス端末装置301と、データセンタ装置401に暗号化データの検索を要求するアクセス端末装置301は一致していなくてもよい。データセンタ装置401は、アクセス端末装置301から検索クエリを受信した場合に、検索クエリに含まれているグループ化情報の許可ビット位置の暗号化ビットをグループ判定鍵で復号して、インデックス値検索インデックス値の例を導出する。次に、データセンタ装置401は、導出したインデックス値と同じインデックス値が付されているタグデータをトラップドアとの照合対象として選出する。例えば、グループ化情報をグループ判定鍵で復号して011のインデックス値が得られた場合には、インデックス値011が付されて保管されているタグデータが選出される。データセンタ装置401は、トラップドアとタグデータとの照合の結果、トラップドアの生成に用いられたキーワードと同じキーワードで生成されているタグデータを特定し、特定したタグデータと対応付けられている暗号化データを抽出し、抽出した暗号化データを検索要求の送信元のアクセス端末装置301に送信する。以上が、本実施の形態に係る秘匿検索システム100における動作の概要であり、以下では、鍵管理サーバ装置201、アクセス端末装置301及びデータセンタ装置401の内部構成を説明し、また、各装置の動作の詳細を説明する。図2は、鍵管理サーバ装置201の構成を示す機能ブロック図である。鍵管理サーバ装置201は、マスター鍵生成部202、鍵保管部203、ユーザ秘密鍵生成部204、PKG側データ送受信部205、ユーザID情報管理部206を備える。マスター鍵生成部202は、システムで利用する鍵長を元にして、秘匿検索を利用するユーザ全員が共通で利用する公開パラメータを生成するとともに、ユーザ秘密鍵を生成する元になるマスター鍵を生成する。鍵保管部203は、マスター鍵生成部202で生成したマスター鍵や公開パラメータを記憶装置に記憶する。ユーザ秘密鍵生成部204は、ユーザにユニークに割り当てられたIDを用いて、マスター鍵からユーザ秘密鍵を生成し、ユーザに送付する。PKG側データ送受信部205は、公開パラメータをユーザが使用するアクセス端末装置301やデータセンタ装置401に送付するための通信機能である。また、PKG側データ送受信部205は、ユーザ秘密鍵をアクセス端末装置301へ送信するためにも用いる。また、PKG側データ送受信部205は、ユーザID情報を企業内のユーザに対して開示するために、ユーザの要求によってユーザIDをアクセス端末装置301に送信する場合もある。ユーザID情報管理部206は、ユーザIDとして氏名や所属やログインIDやメールアドレスなどの属性情報を記憶装置で管理する。また、ユーザID情報管理部206は、現時点での属性情報だけでなく、過去の属性情報も履歴として管理する。図3は、アクセス端末装置301の構成を示す機能ブロック図である。アクセス端末装置301は、データ暗号化部302、暗号化タグ生成部303、タグ付き暗号化データ生成部304、ユーザ秘密鍵管理部305、検索クエリ生成部306、データ復号部307、グループ判定鍵生成部308、端末側データ送受信部309、グループ化情報生成部310を備える。データ暗号化部302は、ユーザ又はアプリケーションからデータセンタ装置401で保管する保管対象データとユーザIDを受領し、IDベース暗号を用いて保管対象データを暗号化し、保管対象データの暗号化データを得る。また、データ暗号化部302は、保管対象データから後で検索に利用されるキーワード保管キーワードを複数抽出し、またユーザからデータに関連付けるキーワードを受領する。このように、データ暗号化部302は、保管対象データからのキーワード抽出又はユーザからのキーワード受領により、保管対象データのキーワード保管キーワードを指定しており、キーワード指定部の例に相当する。暗号化タグ生成部303は、データ暗号化部302で保管対象データに関連付けた複数のキーワードと、ユーザIDと、自身で生成した乱数から複数のタグタグデータを生成する。また、後述のグループ化情報生成部310により生成されたグループ化情報とタグを結合して、複数の暗号化タグを生成する。タグ付き暗号化データ生成部304は、データ暗号化部302で生成した暗号化データと、暗号化タグ生成部303で生成した複数の暗号化タグを結合してタグ付き暗号化データを生成し、データセンタ装置401に保管を依頼する。ユーザ秘密鍵管理部305は、ユーザに個別に発行されたユーザ秘密鍵や、公開パラメータを記憶装置に記憶する。検索クエリ生成部306は、ユーザ秘密鍵管理部305が記憶したユーザ秘密鍵と公開パラメータ、ユーザから指定された検索したいキーワードを暗号化してトラップドアを生成し、更に、グループ化情報生成部310により生成されたグループ化情報とトラップドアを結合して検索クエリを生成し、データセンタ装置401に送付する。このように、検索クエリ生成部306は、ユーザの指示に従って、データセンタ装置401に暗号化データの検索を行わせるキーワード検索キーワードを指定しており、キーワード指定部の例に相当する。データ復号部307は、データセンタ装置401から受け取った暗号化データを、ユーザ秘密鍵管理部305で保管しているユーザ秘密鍵と公開パラメータを用いて復号する。グループ判定鍵生成部308は、ユーザ秘密鍵管理部305で保管しているユーザ秘密鍵と公開パラメータを用いて、検索を高速化するためのインデックス値を生成するために用いるグループ判定鍵許可ビット復号鍵の例を生成し、後述の端末側データ送受信部309を介してデータセンタ装置401に送付する。より具体的には、グループ判定鍵生成部308は、グループ化情報のうちデータセンタ装置401にビット値の開示を許可する許可ビット位置を指定し、許可ビット位置の暗号化ビットを復号化するための復号鍵であるグループ判定鍵を生成する。生成されたグループ判定鍵は、後述の端末側データ送受信部309によりデータセンタ装置401に送信され、データセンタ装置401ではグループ判定鍵を用いてグループ化情報の許可ビット位置の暗号化ビットを復号する。このように、グループ判定鍵生成部308は、許可ビット位置を指定しており、許可ビット位置指定部の例に相当する。また、グループ判定鍵生成部308は、グループ判定鍵のデータセンタ装置401への提供により、グループ化情報の許可ビット位置のビット値をデータセンタ装置401の開示し、保管対象データの暗号化データに対応付けられるタグデータを保管する際にデータセンタ装置401がタグデータに付すインデックス値保管インデックス値の例を、データセンタ装置401に、グループ化情報の許可ビット位置の開示されたビット値から導出させる。このように、グループ判定鍵生成部308は、後述するグループ化情報生成部310とともに、秘匿化処理部の例に相当する。なお、後述するように、データセンタ装置401では許可ビット位置をノードの階層構造に対応付けて管理するため、以下では、許可ビット位置を階層としても表す。例えば、上位n番目のビット位置を、第n層と表記する。端末側データ送受信部309は、鍵管理サーバ装置201から公開パラメータやユーザ秘密鍵を受信する。端末側データ送受信部309は、グループ判定鍵を送信する。また、端末側データ送受信部309は、作成したタグ付き暗号化データ保管要求の例をデータセンタ装置401に送信する。また、端末側データ送受信部309は、データセンタ装置401へ検索クエリ検索要求の例を送付したり、検索結果である暗号化データをデータセンタ装置401から受領したりする。端末側データ送受信部309は、許可ビット復号鍵送信部、保管要求送信部及び検索要求送信部の例である。グループ化情報生成部310は、データセンタ装置401でインデックス値を生成するために用いるグループ化情報を生成する。前述したように、このインデックス値は、いずれかのアクセス端末装置301から検索要求があった場合に、データセンタ装置401において、検索要求に含まれるトラップドアと照合するタグデータを特定するために用いられる。グループ化情報生成部310は、保管対象データのキーワードに対して所定の演算を行って所定のビット列保管インデックス導出ビット列の例を生成する。そして、グループ化情報生成部310は、許可ビット位置の暗号化ビットはグループ判定鍵により復号され、許可ビット位置以外の暗号化ビットはグループ判定鍵により復号されない暗号化方式にてビット列を暗号化する。暗号化されたビット列が、グループ化情報となる。このように、グループ化情報生成部310は、保管対象データのキーワードからビット列保管インデックス導出ビット列の例を生成するとともに、暗号化によりビット列を秘匿する処理を行っており、インデックス導出ビット列生成部の例に相当し、更に、前述のグループ判定鍵生成部308とともに秘匿化処理部の例に相当する。グループ化情報生成部310は、保管対象データの保管時のみならず暗号化データの検索時においてもグループ化情報を生成する。暗号化データの検索時のグループ化情報の生成手順自体は、保管対象データの保管時のグループ化情報と同じである。保管対象データの保管時のグループ化情報は保管対象データのキーワード保管キーワードから生成しているのに対し、データ検索時のグループ化情報は、ユーザから指示された検索のためのキーワード検索キーワードから生成しているという点が異なるのみである。図4は、データセンタ装置401の構成を示す機能ブロック図である。データセンタ装置401は、センタ側データ送受信部402、保管要求処理部403、暗号化データ管理部404、インデックス管理部405、検索処理部406を備える。センタ側データ送受信部402は、アクセス端末装置301からグループ判定鍵を受信する。また、センタ側データ送受信部402は、アクセス端末装置301からタグ付き暗号化データを受信する。また、センタ側データ送受信部402は、アクセス端末装置301から検索クエリを受信し、その応答として暗号化データを送信する。また、センタ側データ送受信部402は、鍵管理サーバ装置201から公開パラメータを介して受信する。センタ側データ送受信部402は、保管要求受信部及び検索要求受信部の例に相当する。保管要求処理部403は、受信したタグ付き暗号化データを解析し、暗号化データと複数の暗号化タグに分解し、暗号化データを暗号化データ管理部404に渡し、暗号化タグを暗号化データと関連付ける形でインデックス管理部405に渡す事で、タグ付き暗号化データの保管処理を行う。暗号化データ管理部404は、アクセス端末装置301から受信した暗号化データや、鍵管理サーバ装置201から受信した公開パラメータなどを記憶装置に記憶する。暗号化データ管理部404は、アクセス端末装置301から受信した暗号化データをタグと対応付けて保管する。インデックス管理部405は、アクセス端末装置301から受信したグループ判定鍵を保管する。このため、インデックス管理部405は、許可ビット復号鍵管理部の例に相当する。また、インデックス管理部405は、アクセス端末装置301から受信した暗号化タグの検索に適したデータ構造にてインデックス値を生成し、インデックス値に対応付けて暗号化タグを保管する。より具体的には、インデックス管理部405は、グループ化情報内の許可ビット位置の暗号化ビットをグループ判定鍵を用いて復号し、復号により得られるビット値からインデックス値を導出し、導出したインデックス値と暗号化タグとを対応付けて保管する。また、インデックス管理部405は、アクセス端末装置301からの検索クエリが受信された場合に、グループ判定鍵を用いて、検索クエリに含まれているグループ化情報内の許可ビット位置の暗号化ビットを復号し、復号により得られるビット値からインデックス値を導出し、導出したインデックス値と同じインデックス値と対応付けられている暗号化タグを抽出する。また、インデックス管理部405は、新しくグループ判定鍵を受信した際、暗号化タグを保管しているインデックス情報の再構成を実施する。検索処理部406は、アクセス端末装置301から受信した検索クエリと、インデックス管理部405から抽出された暗号化タグ内のタグとの照合処理を行う。検索処理部406は、この照合処理によって、タグに含まれるキーワードと、検索クエリに含まれるキーワードが一致するかどうかを判定する。その後、検索処理部406は、検索にヒットしたタグと関連付けられた暗号化データを暗号化データ管理部404から取得し、センタ側データ送受信部402を介してアクセス端末装置301に返送する。次に、図5に基づき、システム初期設定の処理について説明する。システム初期設定は、鍵管理サーバ装置201で実施される処理であり、秘匿検索システム100を利用する前に1回実施される処理である。最初に、ステップS501にて、マスター鍵生成部202は、グループ化情報を利用して生成するインデックス値の最大ツリー階層数LLは任意の整数を決定する。データN個に対して関連付けられたキーワードの合計がM個の場合、従来方式ではMに比例した検索時間を要するが、インデックス値を使う事でM/2^Lに比例した検索時間に削減する事ができる。そこで、最大ツリー階層数Lは、格納するデータの最大個数、データに関連付けるキーワード数、既存秘匿検索方式と既存暗号化方式の処理時間、および検索時に求められるレスポンス時間を加味して決定する。なお、最大ツリー階層数Lは、許可ビット位置の最大個数に相当する。次に、ステップS502にて、マスター鍵生成部202は、本秘匿検索システム100で利用する確率的暗号に基づく既存秘匿検索方式や、グループ化情報を作成するための既存暗号化方式Aや、データ本体を暗号化する既存暗号化方式Bを決定する。本実施の形態では、非特許文献4に記載のグループ共有型秘匿検索方式を既存秘匿検索方式として利用し、階層型IDベース暗号をグループ化情報生成に用いる既存暗号化方式Aとして利用し、データ本体の暗号化に利用する既存暗号化方式Bとして利用する。そして、既存秘匿検索方式の利用方法を決定する。本実施の形態で利用する既存秘匿検索方式では、マスター鍵生成部202は、タグID階層数とタグID階層構造を決定する。例えば、図12のタグID階層構造に示す様に、マスター鍵生成部202は、タグIDは3階層で構成され、検索可能なユーザが所属する部や課等のグループ名称を格納するグループ名欄、氏名などを保管するユーザ名欄、データに関連付けたキーワードを設定するキーワード欄で構成する、等を決定する。そして、マスター鍵生成部202は、グループ化情報生成のための既存暗号化方式Aの利用方法を決定する。本実施の形態で利用する既存暗号化方式Aでは、マスター鍵生成部202は、グループ化情報ID階層数とグループ化情報ID階層構造を決定する。例えば、図13の様なグループ化情報ID階層構造を利用する事を決定する。図13のグループ化情報ID階層構造において、グループ名欄とユーザ名欄は図12のタグID階層構造のグループ名欄とユーザ名欄と同一で、キーワードの代わりに階層番号を格納する点が異なる。階層番号に、インデックス値のツリー階層の番号許可ビット位置の番号を入れる事で、そのツリー階層の各層に対応したグループ化情報生成鍵が生成される。後述するように、グループ化情報生成鍵は、アクセス端末装置301においてグループ化情報を生成する際に用いられる暗号鍵である。同様に、マスター鍵生成部202は、データ本体を暗号化するための既存暗号化方式Bの利用方法を決定する。本実施の形態では、復号者ID階層数と復号者ID階層構造を決定する。例えば、図14の様な復号者ID階層構造を決定する。図14の復号者ID階層構造において、グループ名欄とユーザ名欄は図12のタグID階層構造のグループ名欄とユーザ名欄と同一である。次に、ステップS503にて、ユーザID情報管理部206は、ユーザIDや属性情報を保管するユーザID情報データベースを構築する。ユーザID情報データベースは、ユーザ秘密鍵を作成するために必要な情報、及びアクセス端末装置301がデータを暗号化する際に、相手のグループ名/ユーザ名を特定するために必要な情報が保管されているものである。例えば、図15に示すように、ユーザID情報データベースには、グループIDである部名、ユーザIDである氏名、所属情報、役職情報、その所属/役職等にいた期間、等が格納される。また、ユーザID情報データベースには、最新の状況だけでなく、過去の履歴を全て格納するようにしてもよい。次に、ステップS504にて、マスター鍵生成部202は、システムで利用する既存秘匿検索方式のマスター鍵生成アルゴリズムを実行して、秘匿検索用マスター鍵と秘匿検索用公開パラメータを生成する。同様に、マスター鍵生成部202は、既存暗号化方式Aのマスター鍵生成アルゴリズムを実行してグループ化情報用マスター鍵とグループ化情報用公開パラメータを生成し、既存暗号化方式Bのマスター鍵生成アルゴリズムを実行して暗号化用マスター鍵と暗号化用公開パラメータを生成する。以降、秘匿検索用マスター鍵とグループ化情報用マスター鍵と暗号化用マスター鍵をまとめてマスター鍵、秘匿検索用公開パラメータとグループ化情報用公開パラメータと暗号化用公開パラメータをまとめて公開パラメータと呼ぶ事とする。次に、ステップS505にて、鍵保管部203は、マスター鍵生成部202にて生成したマスター鍵と公開パラメータを記憶装置に保管する。次に、ステップS506にて、PKG側データ送受信部205は、鍵保管部203に保管された公開パラメータをアクセス端末装置301に対して公開する。以上の手順によって、本秘匿検索システムのセットアップが完了する。なお、S503で生成したユーザID情報データベースは、システムの運用において、ユーザの人事異動や入社や退社があるたびに内容がメンテナンスされる。次に、図6に基づき、ユーザ秘密鍵発行の処理について説明する。ユーザ秘密鍵発行処理は、主に鍵管理サーバ装置201とアクセス端末装置301で実施される処理であり、新規ユーザを追加した場合や、ユーザの所属するグループ名が変わった時などに実施される。最初に、ステップS601にて、鍵管理サーバ装置201のユーザ秘密鍵生成部204は、ユーザID情報管理部206が保持しているユーザID情報データベースからグループ名とユーザ名を取得する。次に、ステップS602にて、ユーザ秘密鍵生成部204は、検索クエリを生成するために用いる秘匿検索用ユーザ秘密鍵、グループ判定鍵を生成するために用いるグループ化情報用ユーザ秘密鍵、暗号化データを復号するために用いる暗号化用ユーザ秘密鍵を生成する。既存秘匿検索方式では、秘匿検索用ユーザ秘密鍵を生成する際にタグID階層構造を指定する必要があるが、S601にて取得したグループ名をグループ名欄に、同じくユーザ名をユーザ名に設定し、キーワードは委譲可能な要素アクセス端末装置301で指定可能な要素として指定する事で、秘匿検索用ユーザ秘密鍵が生成できる。既存暗号化方式Aでは、グループ化情報用ユーザ秘密鍵を生成する際にグループ化情報階層構造を指定する必要があるが、S601にて取得したグループ名をグループ名欄に、同じくユーザ名をユーザ名に設定し、階層番号は委譲可能な要素アクセス端末装置301で指定可能な要素として指定する事で、グループ化情報用ユーザ秘密鍵が生成できる。同様に、既存暗号化方式Bで暗号化用ユーザ秘密鍵を生成する際に復号者ID階層構造を指定する必要があるが、S601にて取得したグループ名をグループ名欄に、同じくユーザ名をユーザ名に指定する事で、暗号化用ユーザ秘密鍵が生成できる。上記で生成した秘匿検索用ユーザ秘密鍵、グループ化情報用ユーザ秘密鍵、暗号化用ユーザ秘密鍵の3個をまとめてユーザ秘密鍵と呼ぶ事にする。次に、ステップS603にて、PKG側データ送受信部205は、S602にて生成したユーザ秘密鍵と、鍵保管部203に保管された公開パラメータを、アクセス端末装置301に対して送付する。次に、ステップS604にて、アクセス端末装置301は、S603にて鍵管理サーバ装置201から受領したユーザ秘密鍵と公開パラメータを、ユーザ秘密鍵管理部305にて保管する。以上の手順によって、鍵管理サーバ装置201はアクセス端末装置301を操作するユーザに対してユーザ秘密鍵を発行する事ができる。次に、図7と図8に基づき、データの暗号化処理について説明する。データ暗号化処理は、主にアクセス端末装置301とデータセンタ装置401で実施される処理であり、保管対象データを暗号化してデータセンタ装置401に保管する時に実施される。最初に、ステップS701にて、アクセス端末装置301は、アクセス端末装置301を操作するユーザから、保管対象データの暗号化データを検索復号可能なユーザのグループ名およびユーザ名保管対象データにアクセス可能なユーザのユーザ情報の例を受領し、データ暗号化部302と暗号化タグ生成部303とグループ化情報生成部310に入力する。受け取るグループ名やユーザ名は一つである必要はなく、復号可能なユーザが複数名いる場合は複数受け取る事もできる。なお、本実施の形態で利用する既存秘匿検索方式や既存暗号化方式Aや既存暗号化方式Bは、グループ名やユーザ名として誰でも良い事を意味するワイルドカードを受け取る事も可能である。次に、ステップS702にて、データ暗号化部302は、ユーザから保管対象データを受け取り、保管対象データと関連付けるキーワードを決定する。キーワードは、保管対象データから自動的に抽出しても良いし、ユーザから受領する様にしても良い。また、キーワードは1個である必要はなく、複数関連付けて良い。次に、ステップS703にて、データ暗号化部302は、S701にて受け取ったグループ名とユーザ名を用いて、S702にて受け取った保管対象データを暗号化する。具体的には、データ暗号化部302は、ランダムにセッション鍵を生成し、そのセッション鍵でAESAdvancedEncryptionStandardやCamellia登録商標等の共通鍵暗号を用いて保管対象データを暗号化し、暗号化データ本体を生成する。次に、データ暗号化部302は、復号者ID階層構造のグループ名とユーザ名に、S701で受け取ったグループ名とユーザ名をそれぞれ指定して、これを暗号化用公開鍵として既存暗号化方式Bを用いてセッション鍵を暗号化し、暗号化セッション鍵を生成する。そして、データ暗号化部302は、前述の2個の暗号化結果を組み合わせる事で、暗号化データを生成する。生成した暗号化データのデータ構造を図16に示す。なお、S701にて複数のグループ名とユーザ名を受領している場合、全てのグループ名とユーザ名の組に対して暗号化セッション鍵を生成する必要がある。次に、ステップS704にて、グループ化情報生成部310は、暗号化タグを生成するためのキーワード保管対象データのキーワードを受け取り、各キーワードに対してグループ化情報を生成する。具体的には、グループ化情報生成部310は、グループ化情報ID階層構造図13のグループ名とユーザ名に、S701で受け取ったグループ名とユーザ名をそれぞれ指定して、階層番号に1からL図5のS501で決定されたインデックス情報の最大ツリー階層数までの数を文字列として設定する事で、L個のグループ化情報生成鍵を作成する。なお、階層番号に1が設定されたグループ化情報ID階層構造が第1階層のグループ化情報生成鍵となり、階層番号にLが設定されたグループ化情報ID階層構造が第L階層のグループ化情報生成鍵となる。次に、グループ化情報生成部310は、キーワードを元にLビットのビット列を生成する。これは例えば、SHA-2等のハッシュ関数を用いてキーワードのハッシュ値を生成し、その中から任意のLビットを抽出する事で作成する事ができる。このため、ハッシュ値においてLビットを連続させて選択してもよいし、例えばハッシュ値の1ビット目と3ビット目と6ビット目と11ビット目というように非連続にLビットを選択してもよい。但し、検索時に生成するグループ化情報においても、同じビット位置でLビットを選択する必要がある。また、グループ化情報生成部310は、抽出ビット列の1つ目を第1階層グループ化情報生成鍵を用いて既存暗号化方式Aにて暗号化して暗号化第1情報を作成し、2つ目を第2階層グループ化情報生成鍵を用いて既存暗号化方式Aにて暗号化して暗号化第2情報を作成し、順番にL個目まで全てを暗号化し、これらをまとめてグループ化情報とする。このように、グループ化情報生成部310は、保管対象データに対するアクセスが許可されるユーザのユーザ情報が反映されているL個のグループ化情報生成鍵を用いて、キーワードのハッシュ値のLビットを暗号化して、グループ化情報を生成する。生成したグループ化情報の構成を図17に示す。なお、S701にて複数のグループ名とユーザ名を受領している場合、全てのグループ名とユーザ名の組に対してグループ化情報を生成する。次に、ステップS705にて、暗号化タグ生成部303は、キーワードを暗号化して暗号化タグを生成する。具体的には、暗号化タグ生成部303は、タグID階層構造のグループ名とユーザ名にS701で受け取ったグループ名とユーザ名を、キーワード欄にS702にて決定したキーワードをそれぞれ指定し、このタグID階層構造を暗号鍵にして乱数を暗号化し、既存秘匿検索方式でタグを作成する。そして、暗号化タグ生成部303は、このタグと、S704にて同じキーワードから作られたグループ化情報を結合して暗号化タグとする。生成した暗号化タグの構成を図16に示す。なお、上記はキーワード1個に対する処理であるため、これをデータに関連付けられた全てのキーワードに対して実施する。また、S701にて複数のグループ名とユーザ名を受領している場合、全てのグループ名とユーザ名の組に対して暗号化タグを生成する。次に、ステップS706にて、タグ付き暗号化データ生成部304は、S703で生成した暗号化データと、S705で生成した暗号化タグを結合してタグ付き暗号化データを生成し、端末側データ送受信部309を介してタグ付き暗号化データをデータセンタ装置401に保管依頼として送付する。この時、データセンタ装置401でタグ付き暗号化データの保管を容易にするため、S701にて受領したグループ名とユーザ名を共に送付する。図16では、グループ名とユーザ名をタグ付き暗号化データに含めた構成のタグ付き暗号化データを示している。次に、ステップS707にて、データセンタ装置401の保管要求処理部403は、アクセス端末装置301から受領したタグ付き暗号化データを分解し、暗号化データと複数の暗号化タグを取り出す。そして、暗号化データ管理部404にて暗号化データを保管する。なお、暗号化データ管理部404は、S706にてタグ付き暗号化データに含められたグループ名とユーザ名ごとに暗号化データを分けて保管し、さらに保管した暗号化データに管理番号を付与して、後で管理番号から暗号化データを一意に特定できる様にする。なお、暗号化データが複数のグループ名やユーザ名と関連付けられている場合、ぞれぞれのグループ名とユーザ名に対して暗号化データを関連付けて保管する。複数のグループ名とユーザ名に関連付けられている場合、暗号化データは1個だけ格納し、他は参照情報のみを保管する様にすることでディスク容量の節約が可能である。図18は、暗号化データの保管例を示している。図18の様に、グループ名が総務部でユーザ名がワイルドカードである暗号化データと管理番号をまとめて管理し、さらにグループ名が開発部でユーザ名がである暗号化データと管理番号をまとめて管理する、という様に保管する。また、総務部と開発部の両方に開示されるデータがあった場合、例えば管理番号000002に暗号化データ本体を関連付けて保管し、管理番号100002には暗号化データとして管理番号000002を参照する様なポインタを保管する。次に、ステップS708にて、保管要求処理部403は、S706にて取得した複数の暗号化タグを、対応する暗号化データの管理番号と共にインデックス管理部405に送付する。インデックス管理部405は、S706にてタグ付き暗号化データに含められたグループ名とユーザ名ごとに分けて、受け取った暗号化タグと管理番号を保管する。なお、インデックス管理部405における暗号化タグの保管処理は複雑であるため、図8を用いて詳細を説明する。なお、図19の例に示す様に、インデックス情報もグループ名、ユーザ名ごとに管理しているものとする。また、図19のインデックス情報において、グループ判定鍵セットの第1層目用のグループ判定鍵は、グループ化情報内の暗号化第1情報図17を復号するための復号鍵、つまり、許可ビット位置の1ビット目の暗号化ビットを復号するための復号鍵である。同様に、グループ判定鍵セットの第2層目用のグループ判定鍵は、グループ化情報内の暗号化第2情報図17を復号するための復号鍵、つまり、許可ビット位置の2ビット目の暗号化ビットを復号するための復号鍵である。また、インデックス情報内のノードとは、暗号化タグタググループ化情報に対応付けられるインデックス値である。例えば、ノード01は、グループ化情報の暗号化第1情報を復号して得られたビット値が0であり、暗号化第2情報を復号して得られたビット値が1であり、これらを連結して01が得られたことを示している。つまり、図19の例では、アクセス端末装置301からは、上位2つのビット位置しかビット値の開示が許可されておらず、2つのグループ判定鍵のみがデータセンタ装置401に提供されており、このため、インデックス値は2ビットになる。図8のフローにおいて、はじめに、ステップS801にて、インデックス管理部405は、グループ名とユーザ名ごとに管理された複数のインデックス情報を検索し、S706にて受け取ったグループ名とユーザ名でアクセスが可能な暗号化データに対応するインデックス情報ワイルドカードが用いられているインデックス情報を含むを特定し、今までにアクセス端末装置301から受領したグループ判定鍵を取り出す。ここでグループ判定鍵は階層ごと許可ビット位置ごとに1個ずつ割り当てられており、後述する様に第1階層目から順番に1個ずつアクセス端末装置301から開示されるため、ここでは合計L’L’≦L個のグループ判定鍵が保管されていたと仮定する。アクセス端末装置301によるグループ判定鍵の生成、アクセス端末装置301からデータセンタ装置401へのグループ判定鍵の送付、データセンタ装置401におけるグループ判定鍵の保管は、図7及び図8に示すフローとは非同期に行われ、ここでは、既に、L’個のグループ判定鍵がアクセス端末装置301により生成され、データセンタ装置401のインデックス管理部405に保管済みであると仮定する。なお、アクセス端末装置301によるグループ判定鍵の生成、データセンタ装置401におけるグループ判定鍵の保管の詳細は図11を参照して後述する。次に、ステップS802にて、インデックス管理部405は、S707にて受領した複数の暗号化タグの中から、保管していない暗号化タグを1個取りだし、タグとグループ化情報に分解する。次に、ステップS803にて、インデックス管理部405は、グループ化情報を分解して暗号化第1情報から暗号化第L情報図17までを取り出す。そして、暗号化第1情報から暗号化第L’情報までを、第1層目用のグループ判定鍵から第L’層目用のグループ判定鍵までを用いて復号し、第1情報から第L’情報を取得する。次に、ステップS804にて、インデックス管理部405は、S803にて取り出した第1情報から第L’情報までを元にして、第1情報を第0層ノードから第1層ノードを決定するための情報として使い、第2情報を第1層ノードから第2層ノードを決定するための情報として使う。そして、インデックス管理部405は、S705にて受領したグループ名とユーザ名に対応した2分木の中から該当するノードを特定し、そのノードに関連付けてS802で取り出した暗号化タグと、S707にて受領した管理番号を保管する。例えば、図20に示す様に、最初はルートノードNRを起点として、第1情報が0か1かによって、左右のいずれかの子ノードを取り出す。同様に第2情報が0か1かによって、左右のいずれかの子ノードを取り出す。これを保有する全ての情報を用いて実施する。なお、図20の右側の矢印内の1は、第1情報によって第1層のノードが選択されることを示しており、また、矢印内の2は、第2情報によって第2層のノードが選択されることを示している。例えば、第1情報が0、第2情報が1の場合、図20に示すノード01N01が該当ノードとして検出され、そのノード01に暗号化タグと管理番号を関連付けて保管する。前述の図19では、第1情報から第L’情報図19では、L’=2までを並べて作成したノードを表す番号インデックス値と、暗号化タグと、対応する暗号化データの管理番号を、表形式にて保管しているインデックス情報の例を示している。次に、ステップS805にて、インデックス管理部405は、S707にて受領した複数の暗号化タグの中から、S802からS804までの処理を実施していない暗号化タグが残っているかどうかを判定する。もし残っていればS802の処理に戻り、残っていなければ終了する。以上の手順により、アクセス端末装置301はデータを暗号化してデータセンタ装置401に保管を要求し、データセンタ装置401は受け取ったタグ付き暗号化データの保管を行う事ができる。次に、図9に基づき、暗号化データの検索処理について説明する。暗号化データ検索処理は、主にアクセス端末装置301とデータセンタ装置401で実施される処理であり、データセンタ装置401に保管された暗号化データを取得する時に実施される。はじめにステップS901にて、アクセス端末装置301の検索クエリ生成部306は、アクセス端末装置301を操作するユーザから、検索したいキーワードを受け取る。更に、検索クエリ生成部306は、受け取った検索キーワードをグループ化情報生成部310に通知する。次に、ステップS902で、グループ化情報生成部310は、検索クエリ生成部306から通知された検索キーワードからグループ化情報を生成する。本処理は、ステップS704の処理と同一である。つまり、グループ化情報生成部310は、アクセス端末装置301のグループ名とユーザ名暗号化データを検索しようとするユーザの所属グループのグループ名と当該ユーザのユーザ名を入力し、入力したグループ名とユーザ名をグループ化情報ID階層構造図13のグループ名とユーザ名に指定して、階層番号に1からLまでの数を文字列として設定する事で、L個のグループ化情報生成鍵を作成する。次に、グループ化情報生成部310は、例えば、SHA-2等のハッシュ関数を用いて検索キーワードからLビットのビット列を生成する。なお、ハッシュ値からのLビットの抽出は、暗号化データ保管時と同じビット位置のハッシュ値を抽出する。また、グループ化情報生成部310は、抽出ビット列の1つ目を第1階層グループ化情報生成鍵を用いて既存暗号化方式Aにて暗号化して暗号化第1情報を作成し、2つ目を第2階層グループ化情報生成鍵を用いて既存暗号化方式Aにて暗号化して暗号化第2情報を作成し、順番にL個目まで全てを暗号化し、これらをまとめてグループ化情報とする。次に、ステップS903にて、検索クエリ生成部306は、S901で受け取った検索キーワードと、ユーザ秘密鍵管理部305で保管されているユーザ秘密鍵を用いて、検索クエリを生成する。具体的には、秘匿検索用ユーザ秘密鍵と検索キーワードを入力として、既存秘匿検索方式の検索クエリ生成関数を実行して、トラップドアを生成する。次に、検索クエリ生成部306は、S902にて生成したグループ化情報とトラップドアを結合して検索クエリとする。生成した検索クエリの構成を図21に示す。そして、検索クエリ生成部306は、端末側データ送受信部309を介して、生成した検索クエリをデータセンタ装置401に送付する。この時、ユーザ自身のグループ名とユーザ名も送付する。次に、ステップS904にて、データセンタ装置401の検索処理部406は、センタ側データ送受信部402を介してアクセス端末装置301から受信した検索クエリからトラップドアとグループ化情報を取り出し、インデックス情報図19から検索候補となる暗号化タグを全て取得する。なお、インデックス管理部405における暗号化タグの取得処理は複雑であるため、図10を用いて詳細を説明する。ステップS1001にて、インデックス管理部405は、グループ名とユーザ名ごとに管理された複数のインデックス情報を検索し、S903において検索クエリとともに受け取ったグループ名とユーザ名でアクセスが可能な暗号化データに対応するインデックス情報を特定する。そして、未処理のインデックス情報を、これから処理を行う対象のインデックス情報として特定する。ステップS1002とステップ1003は、それぞれステップS801とステップS803と同一である。つまり、インデックス管理部405は、グループ化情報を分解して暗号化第1情報から暗号化第L情報図17までを取り出す。そして、暗号化第1情報から暗号化第L’情報までを、第1層目用のグループ判定鍵から第L’層目用のグループ判定鍵までを用いて復号し、第1情報から第L’情報を取得する。次に、ステップS1004にて、インデックス管理部405は、ステップS804にて示した手順を用いて、2分木の中からS903にて取り出したグループ化情報と対応するノードを特定し、そこに処理中である事を示すポインタを設定する。そして、そのポインタが指すノードに関連付けられた暗号化タグと管理番号の組を全て取り出し、検索処理部406に送付する。つまり、インデックス管理部405は、第1情報から第L’情報で示されているビット値から得られる値インデックス値と同じ値のノード番号をS1001で特定したインデックス情報において特定し、特定したノード番号に対応付けられている暗号化タグと管理番号の組を全て取り出し、検索処理部406に送付する。例えば、図19の例において、総務部に所属するユーザから検索クエリが送信された場合は、S1001において、グループ名:総務部、ユーザ名:のインデックス情報が選択され、また、検索クエリ内のグループ化情報を復号して得られたインデックス値が01であれば、暗号化タグ2j0Dqと管理番号000001との組、暗号化タグ3ui8SE<と管理番号000002との組が抽出される。次に、ステップS1005にて、インデックス管理部405は、現在ポインタが指しているノードに対して、親ノードが存在するかどうかを確認する。もし存在する様であればステップS1006へ、存在しない様ならステップS1007に処理を進める。例えば、ポインタがルートノードを指している様であれば親ノードは存在しないため、ステップS1007の処理に進む。S1005及びS1006は、図11を用いて後述するインデックス再構成処理の最中に検索クエリを受信した場合に対処するための処理である。つまり、インデックス再構成処理において、全ての暗号化タグと管理番号の組が新たなノード番号L’1階層のノード番号へ振り分けられる前に、検索クエリを受信した場合には、L’1階層のノード番号についての検索のみならず、振り分けが完了していないL’階層のノード番号親ノードについての検索も必要になるため、S1005及びS1006の処理を行う。次に、ステップS1006にて、インデックス管理部405は、現在ポインタが指すノードの親ノードにポインタを移動させ、そのポインタが指すノードに関連付けられた暗号化タグと管理番号の組を全て取り出し、検索処理部406に送付する。例えば、ポインタが図20のノード01N01を指している場合は、親ノードであるノード0N0の暗号化タグと管理番号の組を取り出す。その後、S1005の処理に進む。次に、ステップS1007にて、インデックス管理部405は、S1001にて特定したアクセスが可能な暗号化データに対応するインデックス情報の中で、まだステップS1002からS1006までの処理を行っていないインデックス情報があるかどうかを判定し、存在すればステップS1001の処理へ進み、存在しなければ処理を終了する。以上により、ステップS904で実施する、インデックス情報から検索の候補となる暗号化タグを全て取得する処理が終了する。次に、ステップS905にて、検索処理部406は、S904にて取得した暗号化タグからタグを取り出し、既存秘匿検索技術の判定処理を用いて、タグに含まれるキーワードと、S904にて取り出したトラップドアに含まれるキーワードが同一であるかどうかを判定する。既存秘匿検索技術の判定処理は、1個のタグと、1個のトラップドアの比較しか実施できないため、これをS904にて取得した全ての暗号化タグに対して実施する。そして、検索処理部406は、判定処理の結果、一致と判定された暗号化タグに関連付けられた管理番号を特定する。次に、ステップS906で、検索処理部406は、S905にて特定した管理番号に対応する暗号化データを、暗号化データ管理部404から全て取得し、センタ側データ送受信部402を介してアクセス端末装置301に送付する。次に、ステップS907で、アクセス端末装置301のデータ復号部307は、S906にてデータセンタ装置401から受領した暗号化データを、ユーザ秘密鍵管理部305で保管している暗号化用ユーザ秘密鍵を用いて、既存暗号化方式の復号処理を用いて復号する。これを全ての暗号化データに対して実施する。以上の手順により、アクセス端末装置301はユーザから検索キーワードを受け取り、そのキーワードを含む暗号化データをデータセンタ装置401から取得し、取得した暗号化データを復号してデータを閲覧する事ができる。次に、図11に基づき、インデックスツリーの階層数を追加する時のインデックス再構成処理について説明する。インデックス再構成処理は、主にアクセス端末装置301とデータセンタ装置401で実施される処理である。はじめにステップS1101にて、アクセス端末装置301のグループ判定鍵生成部308は、ユーザから再構成を行うインデックス情報を特定するための情報として、グループ名とユーザ名を受け取る。データセンタ装置401では、暗号化データの開示先であるグループ名とユーザ名ごとにインデックス情報を管理しているため、ここで受け取ったグループ名とユーザ名を用いて、再構成するインデックス情報を一意に特定する事ができる。次に、ステップS1102にて、グループ判定鍵生成部308は、ユーザ秘密鍵管理部305からグループ化情報用ユーザ秘密鍵と、既に発行済みのグループ判定鍵の階層数を取り出す。そして、グループ判定鍵生成部308は、新たに発行するグループ判定鍵の階層L’1を特定する。つまり、グループ判定鍵生成部308は、新たな許可ビット位置であるL’1ビット目を指定する。グループ化情報用ユーザ秘密鍵は、グループ化情報ID階層構造図13のグループ名とユーザ名が指定された状態で発行されているため、グループ判定鍵生成部308は、新たに階層番号L’1を指定して、既存暗号化方式の鍵委譲機能を実行する事で、階層L’1に対応するグループ判定鍵を生成する。そして、グループ判定鍵生成部308は、生成したグループ判定鍵を、S1101にて受け取った再構成したいインデックス情報に関連付けられたグループ名とユーザ名と共に、端末側データ送受信部309を介してデータセンタ装置401に送付する。なお、グループ判定鍵生成部308による新たな階層L’1に対応するグループ判定鍵の生成及びデータセンタ装置401への送付は、新たな許可ビット位置を指定すること及び新たな許可ビット位置の暗号化ビットの復号を許可することに相当する。次に、ステップS1103にて、データセンタ装置401のインデックス管理部405は、S1102にて受け取ったグループ名とユーザ名から対応するインデックス情報とグループ判定鍵セットを特定し、受領した階層L’1用のグループ判定鍵を、対応する階層番号L’1と共にグループ判定鍵セット内に保管する。次に、ステップS1104にて、インデックス管理部405は、S1103にて特定したインデックス情報を取り出し、その最下層階層番号L’のノードの中から一つのノードを選択する。次に、ステップS1105にて、インデックス管理部405は、ステップS1104もしくはS1107で選択した第L’階層ノードに関連付けられた暗号化タグと管理番号を取り出し、さらに暗号化タグからグループ化情報を取り出す。そして、グループ化情報の暗号化第L’1情報を、階層L’1用のグループ判定鍵を用いて、既存暗号化方式で復号する事で、暗号化タグを第L’1階層に振り分けるための第L’1情報を取得する。そして、暗号化タグと管理番号を、選択した第L’階層ノードの子ノードのいずれに振り分けるかを第L’1情報を元に決定し、第L’階層ノードの関連付けを削除して、新たに第L’1階層ノードに関連付けて保存する。これを選択した第L’階層に関連付けられた全ての暗号化タグに対して実施する。本処理のイメージを図22に示す。次に、ステップS1106にて、インデックス管理部405は、第L’階層のノードから、ステップS1105の処理を実施していないノードが存在するかどうかを確認する。もし処理をしていないノードが存在する場合はステップS1107に進み、処理を行っていないノードが無い場合は終了する。次に、ステップS1107にて、インデックス管理部405は、第L’階層のノードから、ステップS1105の処理を実施していないノードを選択し、ステップS1105の処理に進む。図19に示すように、インデックス管理部405は、ノード番号と対応付けて暗号化タグを記憶している。暗号化タグには、グループ化情報が含まれている。図19の例では、グループ化情報の上位2ビットのみが復号され、3ビット目以降は秘匿されているままの状態である。このとき、アクセス端末装置301が、グループ化情報の上位3ビット目までのビット値の開示を許可した場合には、3ビット目の復号のためのグループ判定鍵第3層目用のグループ判定鍵がアクセス端末装置301からデータセンタ装置401に送信される。図19のグループ名:総務部、ユーザ名:のインデックス情報を例にして説明すると、1行目のレコードの暗号化タグ2j0Dqに含まれているグループ化情報の3ビット目の暗号化ビット暗号化第3情報を第3層目用のグループ判定鍵を用いて復号し、3ビット目の復号値第3情報を取得する。この結果、3ビット目の復号値が、例えば、0であれば、新たなノード番号として、010が設定され、この新たなノード番号010に対して、暗号化タグ2j0Dqと管理番号000001との組が対応付けられる。他のレコードに対しても同様の処理が行われる。例えば、グループ名:総務部、ユーザ名:のインデックス情報の2行目のレコードに対してグループ化情報の3ビット目の暗号化ビットを復号して、新たなノード番号011が得られた場合には、1行目のレコードのタグと2行目のレコードのタグは異なるグループに属することになる。このように、ノード番号のビット数が増えると、各グループに含まれるタグの数が減り、検索クエリを受信した際のトラップドアとタグとの照合処理に要する時間を低減することができる。以上の手順により、アクセス端末装置301はデータセンタ装置401に対してグループ判定鍵を新たに生成してインデックス情報の再構成を要求し、データセンタ装置401は自身が管理するインデックス情報の再構成を行う事で、インデックス情報の階層数を1階層増やす事ができる。以上の様に、暗号化タグに対してキーワードから生成したグループ化情報を含めておき、必要に応じてデータセンタ装置401がユーザからグループ判定鍵を受け取る事で、グループ化情報を用いてキーワードに応じた暗号化タグのグループ化を行う事ができる。検索の際にも、検索クエリに含まれるキーワードに応じてグループ化情報を作成しているため、必要に応じてデータセンタ装置401はこのグループ化情報とグループ判定鍵を使う事で、検索したいキーワードがどの暗号化タグのグループに対応しているかを一意に特定する事ができる。そのため、全ての暗号化タグに対して既存秘匿検索技術の判定処理を行う必要が無くなり、特定のグループに属する暗号化タグに対してのみ既存秘匿検索技術の判定処理を行えばよく、秘匿検索の時間を大きく削減する事ができる。例えば、L’個のグループ判定鍵がデータセンタ装置401に開示されている状況では、暗号化タグM個を2^L’個のグループに分割する事ができるため、各グループには平均的にM/2^L’個の暗号化タグが含まれる。そのため、本実施の形態によって、検索処理は2^L’倍に高速化される。また、グループ化を行うための情報を1ビット単位などで分割して暗号化しておき、ユーザがグループ判定鍵を開示する事で、データセンタ装置401がグループ化に用いるための情報を取得できる様にしている。そのため、開示するグループ判定鍵の数によって、ユーザがグループ化のレベルを調整する事ができる。例えば、L’個のグループ判定鍵を開示している状況で、暗号化データの保管数が増えるに従って検索時間がT時間になり、運用に支障が生じたとする。この時、新しくL’1階層目に対応したグループ判定鍵を開示する事で、暗号化タグを2倍のグループに分割する事ができるため、検索時間をT/2に削減する事ができる様になる。一方、暗号アルゴリズム開発の世界では、暗号化データ中に含まれるキーワードによって、暗号化データのグループ化ができない事が高い安全性を持つ暗号と評価される。そのため、データの機密性を保護したいユーザは、不必要にデータセンタ装置401に暗号化データをグループ化されてしまう事は望まない。本実施の形態によれば、ユーザが求める安全性のレベルと検索処理の応答時間に応じて、必要最小限のグループ判定鍵のみをデータセンタ装置401に与える様にユーザ自身が制御する事ができる。そのため、グループ化情報としてLビットの情報を付加していたとしても、開示するグループ判定鍵の数を調整する事で、ユーザ自身によって安全性と高速性のバランスを調整する事ができる。更に、開示するグループ判定鍵の数の調整は、正規のユーザ秘密鍵を持つユーザしか実施できないため、第三者によって不正にグループ判定鍵を作成開示する様な、安全性を低下させる不正を防止する事ができる。また、本実施の形態に示した方式は、既存秘匿検索のタグに対してグループ化情報を付加する事で、その検索性能を向上させる拡張方式である。そのため、本実施の形態で示した既存秘匿検索方式だけでなく、提案されている様々な既存秘匿検索方式に対して適用可能であり、その検索性能を向上させる事ができる。本実施の形態では、非特許文献4の記載の方式に適用した例を示したが、非特許文献4が実現した暗号化データのグループ共有が可能という特徴を失うことなく、秘匿検索の検索速度を高速化できる。同様に、例えば非特許文献1に記載の方式にも適用できるし、非特許文献3に記載の方式などでも適用可能であり、あらゆる既存秘匿検索方式に対して適用可能である。また、既存秘匿検索方式だけでなく、既存暗号化方式Aや既存暗号化方式Bとして何を用いるかに依存しない高速化手法とした。そのため、一般的によく利用されているRSA登録商標RivestShamirAdleman暗号などを利用する事も可能である。また、本実施の形態では確率的暗号に基づく秘匿検索技術を高速化する手法について示した。一般的に秘匿検索の検索時間だけを見れば確定的暗号に基づく方式が早いが、暗号化データの出現頻度を分析して平文を推定できるという課題がある。一方、確率的暗号に基づく方式は、暗号化データの出現頻度がキーワードの出現頻度と無関係なため、出現頻度の分析による平文の推定に対して安全であるが、検索処理にとても時間がかかるという課題がある。しかし、本実施の形態では、確率的暗号に基づいているため、検索が高速化されているにもかかわらず、出現頻度による分析に対しての安全性が残っているというメリットがある。また、暗号化データやインデックスは、グループ名とユーザ名の組ごとに作成管理を行う仕組みとした。そのため、ユーザが検索を行う場合、元々読む事ができない暗号化データが含まれるインデックス情報を検索する必要が無くなるため、検索処理を大きく向上させる事ができる。また、グループ名やユーザ名によって暗号化データの開示範囲が決められるが、一般的に開示範囲ごとに保管される暗号化データの数が異なる事が予想される。本実施の形態では、グループ判定鍵の開示は、グループ名とユーザ名の組と関連付けられたインデックスに対して実施する様な仕組みとした。そのため、開示範囲ごとに安全性と高速性のバランスを調整する事ができる。また、検索クエリに含まれるグループ化情報を用いて、インデックス情報から検索対象とすべき暗号化タグを取得する際、グループ化情報に対応したノードに関連付けられた暗号化タグだけではなく、その全ての上位ノードに関連付けられた暗号化タグも検索対象とする様にした。そのため、追加でグループ判定鍵を受け取ってインデックス情報の再構成を行っている最中に検索クエリを受け取ったとしても、検索対象とすべき暗号化タグを漏らすことなくチェックする事ができる。また、グループ化情報を生成する時に階層型IDベース暗号である非特許文献4を用いているため、ユーザに対してグループ情報生成鍵を送付する通信量を削減する事ができる。具体的には、グループ名とユーザ名と最大階層数Lだけを送付すれば、アクセス端末装置301にてグループ化情報ID階層構造に受領した値を設定する事で、L個のグループ情報生成鍵を生成する事ができるため、通信コストを削減する事ができる。また、暗号化データを生成する際に複数のグループ名とユーザ名を受け取る様な仕組みとしているため、開示先のユーザやグループが複数あったとしても、本方式で複数の開示先に暗号化データを開示すると共に、開示先数に依存せずに検索速度を向上させる事ができる。また、暗号化データに関連付けるキーワードは、本文から自動抽出しても良いし、ユーザが指定する様にしても良いし、その両者を組み合わせる事もできる様にしたため、検索時に指定されるであろうキーワードをユーザの意図通りに付加する事ができる。また、データを暗号化する際に、AESやCamellia登録商標等の高速な共通鍵暗号を利用できる仕組みとしたため、動画や音楽データなどの大きなサイズのデータであっても、高速に暗号化する事が可能である。また、鍵管理サーバ装置201にユーザID情報データベースを持たせているので、ユーザが暗号化データを復号可能なユーザのグループ名やユーザ名が分からなかったとしても、ユーザが知っているメールアドレスなどの別の情報を元にして、正しいグループ名やユーザ名を取得する事ができるので、暗号化データの開示範囲を誤って設定する事を防止する事ができる。同様に、グループ化情報を生成したり、暗号化タグを生成したりするための補助にもなる。2分木以外も適用可能なお、本実施の形態では、2分木を用いたインデックス情報を構成する例を示した。しかし、生成するインデックスは2分木に限る必要はなく、グループ化情報から生成する事ができるものであれば、より一般的な木構造であっても良く、ハッシュテーブルであっても良い。また、インデックス情報として作成した2分木は、その構造を保ったままディスクに保管する必要はなく、例として示した様にノード番号を割り当てて表形式で保管しても良いし、その他のデータ形式で保管しても良い。グループ化情報は1ビットに制約する必要はないまた、本実施の形態では、キーワードから生成したビット列の第iビットを暗号化する事で、グループ化情報の暗号化第i情報を生成する様にした。しかし、1ビットずつ暗号化する必要はなく、2ビット以上の情報を用いて暗号化第i情報を生成する様にしても良い。例えば、キーワードから2Lビットのビット列を生成し、その第2i-1ビット目と第2iビット目を暗号化して、暗号化第i情報を生成するようにすることも可能である。グループ化情報に使う情報また、本実施の形態では、グループ化情報の暗号化第i情報には、0や1といった1ビットの情報を含める例を示した。しかし、グループ化情報の暗号化第i情報を用いて2分木の子ノード左か子ノード右かを判断できればいいので、必ずしも0や1の1ビットの情報である必要はない。例えば、第i情報に任意の数値を指定して暗号化第i情報を作成しておき、偶数の場合は子ノード左、奇数の場合は子ノード右と割り振っても良い。他にも、第i情報に0から100までの数値を指定して暗号化第i情報を作成しておき、50未満の場合は子ノード左、50以上の場合は子ノード右と割り振っても良い。この様に、第i情報として指定する値は、子ノードの判定方法と関連付いていれば、どの様な情報を設定しても良い。グループ判定鍵を実施の形態2の様にしても良いまた、本実施の形態では、グループ化情報の暗号化第i情報をグループ判定鍵を用いて復号する事で、2分木の子ノード左か子ノード右かを判定する0/1の情報を得ていた。しかし、かならずしもこの様にする必要はなく、例えば実施の形態2で示す様に、グループ判定鍵暗号化タグ用とグループ判定鍵検索クエリ用を用いて、データセンタ装置401側で第i情報を生成する様な仕組みとしても良い。この場合、グループ化情報に設定した値自身もデータセンタ装置401には分からないため、それがキーワードのハッシュ値であったとしてもキーワードの推測が困難であり、安全性を向上させる事ができる。グループ化情報は全て暗号化する必要はないまた、本実施の形態では、グループ化情報を作成する際に全てのビットを暗号化する様にしたが、一部もしくは全てを暗号化せずに平文のまま送っても良い。例えば、データセンタ装置401側で保持するグループ判定鍵の数が分かっている場合、その対応するビットは暗号化してもデータセンタ装置401側で復号される事が分かるので、そこは平文のまま送る様にしても良い。ハッシュ値以外も利用可能また、本実施の形態では、キーワードからLビットのビット列を作成する際に、例えばSHA-2等のハッシュ関数を利用する事を例示したが、Lビットのビット列が作れるものであればアルゴリズムは何でも良い。例えば、SHA-2以外のハッシュ関数を用いても良いし、HMAC等の鍵付きハッシュや、AES等の共通鍵暗号や、RSA登録商標暗号等の公開鍵暗号を用いても良い。なお、鍵付きハッシュや共通鍵暗号や公開鍵暗号を用いる場合は、グループ情報生成鍵に加えてハッシュ鍵や共通鍵や秘密鍵も配布する必要がある。また、キーワードを乱数のシードとして、疑似乱数生成アルゴリズムでLビットの乱数を生成する様にしても良い。他にも、キーワードとLビット列の対応表を使う様にしても良い。特に、Lビット列の対応表を用いる場合、キーワードの出現頻度を考慮してLビット列の発生頻度を平準化できるため、安全性が更に向上する事が期待できる。グループ判定鍵の公開数また、本実施の形態では、ユーザがグループ判定鍵を1個ずつ開示する事を想定した例を記載したが、1回に1個ずつと制限する必要はなく、同時に2個や3個のグループ判定鍵を公開する様にしても良い。グループ判定鍵生成のタイミングまた、本実施の形態では、システム利用前にグループ化情報ID階層構造を定めておき、ユーザがグループ化情報を生成するタイミングでグループ名ユーザ名階層番号を指定してグループ化情報生成鍵を生成していた。しかし、グループ化情報生成鍵はシステム利用前やユーザ秘密鍵発行時などのタイミングで一括して発行しても良い。特に、既存暗号化方式としてAESやRSA登録商標暗号などを使う場合は、暗号化より前のタイミングで生成する事が必要となる。ID階層数の制約はないまた、本実施の形態では、タグID階層構造やグループ化情報ID階層構造や復号者ID階層構造にて、グループ名とユーザ名の2種類の情報を用いて復号検索が可能なユーザやグループを指定する例を示した。しかし、この2種類の情報に制限する必要はなく、例えば部名課名氏名の3種を用いても良いし、氏名だけを用いても良い。また、もっと多くの情報を用いて受信者を指定しても良い。ID共通化は不要また、本実施の形態では、タグ付き暗号化データを生成する際、タグID階層構造やグループ化情報ID階層構造や復号者ID階層構造に、グループ名とユーザ名として同じ値を設定する例を示した。しかし、これらは同じ値にせず、異なる値を設定しても良い。例えば、グループ判定鍵の生成をユーザ自身に実施させずに管理者が実施する場合は、タグID階層構造と復号者ID階層構造には開示先ユーザのグループ名とユーザ名を設定しておき、グループ化情報ID階層構造にはグループ判定鍵の生成が可能な管理者のグループ名とユーザ名を指定する様にすればよい。また、ユーザには検索だけ許可し、暗号化データ自身の復号は許可したくない場合は、タグID階層構造にはユーザのグループ名とユーザ名を設定し、復号者ID階層構造には別の復号可能なユーザのグループ名とユーザ名を設定すればよい。鍵管理サーバ装置201の階層化また、本実施の形態では、鍵管理サーバ装置201が1台の例を示したが、1台に制限する必要はない。例えば、非特許文献4の方式や、その他の秘匿検索方式では、鍵管理サーバ装置にも階層構造を持たせ、複数台に役割を分散して運用する形態も記載されている。本実施の形態でも同様にして、鍵管理サーバ装置に階層構造を持たせた形で利用する事も可能である。IDベース暗号以外も適用可能また、本実施の形態では、IDベース暗号に基づく既存秘匿検索方式や既存暗号化方式Aや既存暗号化方式Bを用いた例を示した。しかし、IDベース暗号に基づく方式に制約するものではなく、AESやCamellia登録商標やHMACなどの共通鍵暗号や、RSA登録商標暗号などの公開鍵暗号を用いる事も可能である。公開パラメータの共通化も可能また、本実施の形態では、IDベース暗号に基づく既存秘匿検索方式や既存暗号化方式Aや既存暗号化方式Bを用いた例を示したが、それぞれ異なる公開パラメータを利用する様にした。しかし、例えば利用する楕円曲線など、公開パラメータの一部の情報を共通化して利用する事も可能である。そのため、共通化できるものは共通化して利用しても構わない。キーワード数また、本実施の形態では、検索キーワードが1個の場合を示したが、必ずしも検索キーワードを1個に制限する必要はない。例えば、複数の検索キーワードがある場合、それぞれのキーワードに対して検索クエリを生成して、全ての検索クエリをデータセンタ装置401に送付しても良い。またその時、例えば1個の検索クエリでヒットと判定された暗号化データを取得するとか、検索クエリAと検索クエリBの両方がヒットした暗号化データを取得する等、任意の条件も送付して良い。タグのチェック不要化また、本実施の形態では、インデックス管理部405から取得した暗号化タグの全てを検索クエリと判定する様にした。しかし、検索にヒットしたと判定された暗号化データに関しては、それ以降、その暗号化データに関連付けられた暗号化タグのチェックをしなくても構わない。また、検索結果として例えば10件の結果を返せばいい場合においても、規定個数以上の検索結果が見つかったら、それ以降の暗号化タグのチェックを行わなくても良い。ユーザID情報データベースの必要有無また、本実施の形態では、鍵管理サーバ装置201にユーザID情報データベースを設け、その情報を元にユーザ秘密鍵の生成を行っていた。しかし、ユーザID情報データベースは必ずしも必須なものではなく、ユーザ秘密鍵を発行する際に鍵管理サーバ装置201の管理者によって指定する様にしても良いし、アクセス端末装置301から受領する様にしても良い。アクセス端末装置301=ユーザとの仮定、ICカードの利用また、本実施の形態では、アクセス端末装置301は一人のユーザが操作するものと仮定した記載とした。しかし、アクセス端末装置301自身は一人のユーザが占有するものではなく、複数名で共有する様な仕組みでも良い。この場合、ユーザ秘密鍵管理部305ではユーザごとに1個のユーザ秘密鍵が割り当てられるため、複数のユーザ秘密鍵を保管する様にして、アクセス端末装置301で操作者の認証をする事で、どのユーザ秘密鍵を利用すべきかを判断する事が好ましい。また、ユーザ秘密鍵を社員証などに保管して管理する事も可能である。この場合、ユーザ秘密鍵管理部305がICカードに相当する機能だが、ユーザ秘密鍵を用いた処理をICカードにて全て行わせる場合、必要に応じて検索クエリ生成部306やデータ復号部307やグループ判定鍵生成部308の一部の処理をICカードに実施させても良い。データ本体の暗号化方式また、本実施の形態では、データを暗号化する際にAESやCamellia登録商標を自動的に用いる事を例示したが、これはシステム内で事前に利用する方式を決定しておいても良いし、ユーザによって設定できる様にしておいても良い。検索結果の返却方法また、本実施の形態では、検索の結果、ヒットした暗号化データを全て返却する様な例を示したが、必ずしも検索時に同時に全ての暗号化データ自身を返却する必要はない。例えば、ヒットした暗号化データのうち数個を返すだけにするとか、個数だけを返す様にするとか、暗号化データのリストだけを返却する様にしても良い。システム構成のバリエーションまた、本実施の形態では、鍵管理サーバ装置201とアクセス端末装置301が企業内にあり、データセンタ装置401がインターネットなどに接続された外部サービスとして存在した例を示した。しかし、本発明はこの様なシステム構成に限定されるものではない。例えば、データセンタ装置401が企業内にあっても良いし、鍵管理サーバ装置201やアクセス端末装置301が企業外のネットワークに接続されていても良い。なお、本実施の形態では、アクセス端末装置301のグループ化情報生成部310は、保管キーワードのハッシュ値から、インデックス情報のノードの最大階層数と同数であるLビットのビット列を抽出し、抽出したLビットのビット列をIDベース暗号化方式で暗号化してグループ化情報を生成していることを説明した。換言すると、グループ化情報生成部310インデックス導出ビット列生成部、秘匿化処理部は、保管キーワードから一意に得られる乱数値のビット列から、許可ビット位置として指定できる最大数と同数のビット数のビット列を抽出して、保管インデックス導出ビット列を生成し、生成した保管インデックス導出ビット列をIDベース暗号化方式で暗号化している。また、本実施の形態では、グループ化情報生成部310が、保管キーワードのハッシュ値から連続するLビットを抽出してもよく、また、1ビット目と3ビット目と6ビット目と11ビット目というように非連続にLビットを抽出するようにしてもことを説明した。換言すると、グループ化情報生成部310は、保管インデックス導出ビット列の生成の際に、保管キーワードから一意に得られる乱数値のビット列から、許可ビット位置として指定できる最大数と同数の連続ビットを抽出してもよく、また、許可ビット位置として指定できる最大数と同数の非連続ビットを抽出してもよい。また、本実施の形態では、グループ化情報生成部310は、Lビットのビット列の各ビットで異なるグループ化情報生成鍵を用いて暗号化を行って、グループ化情報を生成していることを説明した。換言すると、グループ化情報生成部310は、保管インデックス導出ビット列の暗号化の単位ビットごとに異なる暗号鍵を用いている。また、本実施の形態では、グループ化情報生成部310は、グループ化情報ID階層構造図13のグループ名及びユーザ名の少なくともいずれかにワイルドカード指定して、L個のグループ化情報生成鍵を生成できることを説明した。換言すると、グループ化情報生成部310は、保管対象データに対するアクセスが許可されるユーザのユーザ情報をワイルドカードを用いて定義し、ワイルドカードを用いて定義されたユーザ情報が反映されている暗号鍵を用いて、保管インデックス導出ビット列を暗号化することができる。また、本実施の形態では、データセンタ装置401のインデックス管理部405は、暗号化データ管理部404が保管対象の暗号化データを暗号化タグと対応付けて保管する際に、グループ化情報をグループ判定鍵を用いて復号し、復号により得られるノード番号と暗号化タグを対応付けて保管することを説明した。換言すると、インデックス管理部405は、暗号化データ管理部404が保管対象の暗号化データをタグデータと対応付けて保管する際に、暗号化されたビット列内の許可ビット位置の暗号化ビットを許可ビット復号鍵を用いて復号し、復号により得られるビット値からインデックス値を導出し、導出したインデックス値とタグデータとを対応付けて保管している。また、本実施の形態では、インデックス管理部405は、検索クエリを受信した際に、グループ化情報の復号により得られたノードに対応付けられている暗号化タグと管理番号の組を取り出すとともに、当該ノードの親ノードに関連付けられた暗号化タグと管理番号の組を全て取り出し、検索処理部406に送付することを説明した。換言すると、インデックス管理部405は、検索要求に含まれる暗号化されたビット列内の許可ビット位置の暗号化ビットを復号し、復号により得られる許可ビット位置のビット値からインデックス値を導出し、導出したインデックス値と同じインデックス値と対応付けられているタグデータを抽出し、更に、許可ビット位置のうち最下位の許可ビット位置を除く許可ビット位置の暗号化ビットの復号により得られるビット値からインデックス値を導出し、導出したインデックス値と同じインデックス値と対応付けられているタグデータを抽出する。実施の形態2.以上の実施の形態1では、グループ化情報生成のための既存暗号化方式Aとして階層型IDベース暗号を用いたものであるが、次に非特許文献5に記載の内積述語暗号を用いて、タグ自身にグループ化情報も含める事が可能な実施の形態を示す。はじめに、非特許文献5に記載の内積述語暗号の概要を説明する。内積述語暗号では、属性ベクトルというベクトルを公開鍵として用いて、任意のメッセージを暗号化する事ができる。ユーザ秘密鍵には、述語ベクトルというベクトルが埋め込まれており、この述語ベクトルはユーザごとに異なるベクトルを用いる事が多い。そして、暗号化データに埋め込まれた属性ベクトルと、ユーザ秘密鍵に埋め込まれた述語ベクトルの内積が0となる場合にのみ、そのユーザ秘密鍵を用いて、その暗号化データを復号できる。もし内積が0にならない場合は、正しく復号できないという方式である。従来のIDベース暗号では、IDを公開鍵として用いており、ユーザ秘密鍵にもIDが埋め込まれていた。そして、そのIDが一致する時にのみ、そのユーザ秘密鍵を用いて、その暗号化データが復号できた。そのため、内積述語暗号はIDベース暗号を一般化したものと考える事ができる。さらに、ANDやOR等の論理式をベクトルの内積を用いて評価できるという特徴があるため、IDベース暗号よりも復号条件を柔軟に指定可能であるという特徴もある。本実施の形態における秘匿検索システム100の構成例は、実施の形態1で示した図1と同一であるため、説明は省略する。鍵管理サーバ装置201とデータセンタ装置401の機能ブロックに関しても、実施の形態1で示した図2と図3と同一であるため、説明は省略する。図23は、アクセス端末装置301の構成を示す機能ブロック図である。データ暗号化部302、暗号化タグ生成部303、タグ付き暗号化データ生成部304、ユーザ秘密鍵管理部305、検索クエリ生成部306、データ復号部307、端末側データ送受信部309に関しては、実施の形態1の図3で示したものと同一である。グループ化ビット列生成部2301は、キーワードから、暗号化タグや検索クエリに含めるキーワードのグループ化ビット列を生成する。グループ化ビット列生成部2301は、実施の形態1におけるグループ化情報生成部310に対応する要素であり、インデックス導出ビット列生成部の例及び秘匿化処理部の例に相当する。グループ判定鍵生成部308は、ユーザ秘密鍵管理部305で管理しているユーザ秘密鍵と公開パラメータを用いて、インデックス値を生成するためにデータセンタ装置401に送付するグループ判定鍵を生成する。なお、グループ判定鍵は、暗号化タグのグループ化に用いるグループ判定鍵暗号化タグ用と、検索クエリがどのグループの暗号化タグを参照しているかを判定するために用いるグループ判定鍵検索クエリ用の2種から構成される。なお、本実施の形態においても、グループ判定鍵生成部308は、許可ビット位置指定部の例及び秘匿化処理部の例に相当する。次に、システム初期設定の処理の流れについて説明する。なお、処理の流れ自体は実施の形態1で示した方式と類似しているが、既存秘匿検索方式や既存暗号化方式のアルゴリズムの相違から処理内容が若干異なっている。そのため、実施の形態1で示した図5の処理の流れを用いて、その差異を中心に説明する。最初にステップS501の処理は、実施の形態1と同一であるため説明は省略する。次に、ステップS502にて、マスター鍵生成部202は、秘匿検索システム100で利用する既存秘匿検索方式や既存暗号化方式として、非特許文献5に記載の内積述語暗号を用いる事を決定する。なお、既存秘匿検索方式がグループ化情報を含む暗号化タグの生成に用いるもので、既存暗号化方式がデータ本体を暗号化するために用いる方式である。そして、既存秘匿検索方式の利用方法として、タグID階層数とタグID階層構造と、内積述語暗号に与えるベクトルの構成を決定する。例えば、図29のタグID階層構造に示す様に、タグIDは3階層で構成され、検索可能なユーザが所属する部や課等のグループ名称を格納するグループ名欄、氏名などを保管するユーザ名欄、データに関連付けたキーワードを設定するキーワード欄で構成する、等を決定する。また、キーワード欄はグループ化情報とキーワード情報の2要素で構成され、グループ化情報は第1情報から第L情報までの要素で構成する、等を決定する。また、タグID階層構造の全ての要素が一致した場合に検索にヒットする事とし、それに対応したタグID述語ベクトルとタグID属性ベクトルの生成方法を決定する。このタグID述語ベクトルvTの生成例を図30に、タグID属性ベクトルxTの生成例を図31に示す。例えばタグID階層構造のグループ名からベクトルの要素を導出する場合、タグID述語ベクトルの場合はv1,v2=1,-グループ名とし、タグID属性ベクトルの場合はx1,x2=グループ名,1とする。両者のベクトルの内積を取ると、グループ名が同一であった場合のみ内積値が0となり、異なる場合は0以外の値となる。同様に、ユーザ名や第i情報や残ビット情報もベクトルの値に対応づける。なお例外として、要素がワイルドカードであった場合、そのベクトルは0,0とする。例えば、ユーザ名にワイルドカードが指定されている場合、タグID述語ベクトルならv3,v4=0,0とし、タグID属性ベクトルならx3,x4=0,0とする。他の要素にワイルドカードが指定されている場合にも、同様にベクトルに対応づける事ができる。また、図の様に対応づけた場合、非特許文献5のマスター鍵生成アルゴリズムSetupに記載の各パラメータは、n=62L、d=3L、μ1=2、μ2=4、、μ3L=62Lとなる。同様に、マスター鍵生成部202は、保管対象データを暗号化するための既存暗号化方式の利用方法として、復号者ID階層数と復号者ID階層構造を決定する。本実施の形態では、復号者ID階層数が2とし、復号者ID階層構造として、実施の形態1と同様にグループ名とユーザ名からなる復号者ID階層構造を持つものと仮定する。なお、復号者ID階層構造の全ての要素が一致した場合に検索にヒットする事とし、それに対応した復号者ID述語ベクトルと復号者ID属性ベクトルの生成方法を導出する。この復号者ID述語ベクトルvDの生成例を図32に、復号者ID属性ベクトルxDの生成例を図33に示す。ベクトルの各要素の導出方法は、タグIDの場合と同様である。また、この場合、非特許文献5のマスター鍵生成アルゴリズムに記載の各パラメータは、n=4、d=2、μ1=2、μ2=4となる。次に、ステップS503は、実施の形態1と同様であるため説明を省略する。次に、ステップS504にて、マスター鍵生成部202は、システムで利用する既存秘匿検索方式のマスター鍵生成アルゴリズムを実行して、秘匿検索用マスター鍵と秘匿検索用公開パラメータを生成する。同様に、既存暗号化方式のマスター鍵生成アルゴリズムを実行して暗号化用マスター鍵と暗号化用公開パラメータを生成する。以降、秘匿検索用マスター鍵と暗号化用マスター鍵をまとめてマスター鍵、秘匿検索用公開パラメータと暗号化用公開パラメータをまとめて公開パラメータと呼ぶ事とする。次に、ステップS505とS506は、実施の形態1と同様であるため説明を省略する。以上の手順によって、本秘匿検索システムのセットアップが完了する。次に、ユーザ秘密鍵発行の処理の流れについて説明する。なお、処理の流れ自体は実施の形態1で示した方式と類似しているが、既存秘匿検索方式や既存暗号化方式のアルゴリズムの相違から処理内容が若干異なっている。そのため、実施の形態1で示した図6の処理の流れを用いて、その差異を中心に説明する。最初に、ステップS601は、実施の形態1と同様であるため説明を省略する。次に、ステップS602にて、ユーザ秘密鍵生成部204は、検索クエリを生成するために用いる秘匿検索用ユーザ秘密鍵、暗号化データを復号するために用いる暗号化用ユーザ秘密鍵を生成する。既存秘匿検索方式では、秘匿検索用ユーザ秘密鍵を生成する際にタグID階層構造を指定する必要があるが、ユーザ秘密鍵生成部204は、S601にて取得したグループ名をグループ名欄に、同じくユーザ名をユーザ名に設定し、キーワード欄内の全ての要素は委譲可能な要素として指定する。この値を設定したタグID階層構造をステップS502で決定したベクトル生成ルールに基づいてベクトル化を行ってタグID述語ベクトルを生成し、既存秘匿検索方式のユーザ秘密鍵生成アルゴリズムGenKeyを実行する事で、秘匿検索用ユーザ秘密鍵が生成できる。同様に、既存暗号化方式で暗号化用ユーザ秘密鍵を生成する際に復号者ID階層構造を指定する必要があるが、S601にて取得したグループ名をグループ名欄に、同じくユーザ名をユーザ名に指定し、ユーザ秘密鍵生成部204は、この値を設定した復号者ID階層構造をステップS502で決定したベクトル生成ルールに基づいてベクトル化を行う事で復号者ID述語ベクトルを生成し、既存暗号化方式のユーザ秘密鍵生成アルゴリズムを実行する事で、暗号化用ユーザ秘密鍵が生成できる。上記で生成した秘匿検索用ユーザ秘密鍵、暗号化用ユーザ秘密鍵をまとめてユーザ秘密鍵と呼ぶ事にする。次に、ステップS603とステップS604は、実施の形態1と同様であるため説明を省略する。以上の手順によって、鍵管理サーバ装置201はアクセス端末装置301を操作するユーザに対してユーザ秘密鍵を発行する事ができる。次に、図24と図25を用いて、データの暗号化処理の流れについて説明する。なお、処理の流れ自体は実施の形態1で示した方式と類似しているが、既存秘匿検索方式や既存暗号化方式のアルゴリズムの相違から処理内容が若干異なっている。そのため、実施の形態1で示した処理の流れとの差異を中心に説明する。最初にステップS701とS702とS703は、実施の形態1と同様であるため説明を省略する。次に、ステップS2404にて、グループ化ビット列生成部2301は、データに関連付けるキーワードを受け取り、各キーワードに対してグループ化ビット列を生成する。具体的には、グループ化ビット列生成部2301は、キーワードを元にLビットのビット列と、任意のキーワード情報を生成する。これは例えば、SHA-2等のハッシュ関数を用いてキーワードのハッシュ値を生成し、その中から任意のLビットを抽出してLビットのビット列とし、残りのビット列を並べたもの、もしくはハッシュ値全体をキーワード情報とする事などで生成できる。次に、ステップS2405にて、暗号化タグ生成部303は、グループ化ビット列を暗号化して暗号化タグを生成する。具体的には、暗号化タグ生成部303は、タグID階層構造のグループ名とユーザ名にS701で受け取ったグループ名とユーザ名を、キーワード欄にS2404にて生成したグループ化ビット列をそれぞれ指定して、その値が設定されたタグID階層構造からタグID属性ベクトルを生成し、既存秘匿検索方式の暗号化アルゴリズムEncでタグを作成する。このタグを暗号化タグとする。非特許文献5では、秘匿検索用のタグの生成方式は明示的に記載されていないが、一般的に次の様に実施すれば良い事が知られている。最初に、乱数Rを選び、この乱数RをタグID属性ベクトルを用いて暗号化する事で暗号文Cを得る。そして、タグを乱数R、暗号文Cの組とすれば良い。なお、上記はキーワード1個に対する処理であるため、これをデータに関連付けられた全てのキーワードに対して実施する。また、S701にて複数のグループ名とユーザ名を受領している場合、全てのグループ名とユーザ名の組に対して暗号化タグを生成する。次に、ステップS706にて、タグ付き暗号化データ生成部304は、S703で生成した暗号化データと、S2405で生成した暗号化タグを結合してタグ付き暗号化データを生成し、これをデータセンタ装置401に保管依頼として送付する。この時、データセンタ装置401でタグ付き暗号化データの保管を容易にするため、タグ付き暗号化データ生成部304は、S701にて受領したグループ名とユーザ名を共に送付する。ステップS2405での暗号化タグの生成処理が若干変更になっているため、タグ付き暗号化データの構成も図34で示した様に、実施の形態1の図16から暗号化タグの構成が変わった構成となっている。次に、ステップS707の処理は、実施の形態1と同一であるため説明は省略する。次に、ステップS708の処理は、図25を用いて詳細に説明する。なお、実施の形態1と同様に、インデックス情報もグループ名、ユーザ名ごとに管理しているものとする。次に、ステップS801の処理は、実施の形態1と同様のため説明は省略する。次に、ステップS2502にて、インデックス管理部405は、S707にて受領した複数の暗号化タグの中から、保管していない暗号化タグ=タグを1個取りだす。次に、ステップS2503にて、インデックス管理部405は、ステップS801で取り出したL’個のグループ判定鍵を用いて、それぞれのグループ判定鍵暗号化タグ用でタグを復号する。具体的には、インデックス管理部405は、例えば第1階層に対応したグループ判定鍵暗号化タグ用でタグR,Cのうち暗号文Cを復号し、復号結果が乱数Rと同一であった場合、第1情報を0とし、同一でなかった場合は第1情報を1とする。同様の手順にて、第1情報から第L’情報までを決定する。次に、ステップS804とS805の処理は、実施の形態1と同様であるため説明を省略する。以上の手順により、アクセス端末装置301はデータを暗号化してデータセンタ装置401に保管を要求し、データセンタ装置401は受け取ったタグ付き暗号化データの保管を行う事ができる。次に、図26と図27に基づき、暗号化データの検索処理について説明する。なお、処理の流れ自体は実施の形態1で示した方式と類似しているが、既存秘匿検索方式や既存暗号化方式のアルゴリズムの相違から処理内容が若干異なっている。そのため、実施の形態1で示した処理の流れとの差異を中心に説明する。はじめに、ステップS901は実施の形態1と同様であるため説明は省略する。次に、ステップS2602で、グループ化ビット列生成部2301は、S901にて受け取った検索キーワードからグループ化ビット列を生成する。本処理は、ステップS2404の処理と同一であるため省略する。次に、ステップS2603にて、検索クエリ生成部306は、S2602で受け取ったグループ化ビット列と、ユーザ秘密鍵管理部305で保管されているユーザ秘密鍵を用いて、検索クエリを生成する。具体的には、秘匿検索用ユーザ秘密鍵には、タグID階層構造のグループ名とユーザ名に値が設定されているが、キーワード欄に関しては値が設定されておらず、後でユーザによって値の設定ができる様になっている。そこで、検索クエリ生成部306は、キーワード欄に設定する値であるグループ化ビット列を指定して生成したタグID述語ベクトルと、秘匿検索用ユーザ秘密鍵と入力として、既存秘匿検索方式の検索クエリ生成関数Delegate関数を実行して、生成された秘密鍵をトラップドアとする。このトラップドアは、タグID階層構造で示した全ての要素に値が設定された状態となっている。このトラップドアを検索クエリとする。そして、生成した検索クエリをデータセンタ装置401に送付する。この時、ユーザ自身のグループ名とユーザ名も送付する。次に、ステップS904にて、検索処理部406は、S903にて受け取った検索クエリからトラップドアを取り出し、インデックス情報から検索候補となる暗号化タグを全て取得する。なお、インデックス管理部405における暗号化タグの取得処理は複雑であるため、図27を用いて詳細を説明する。最初にステップS1001とステップS1002は、実施の形態1と同様であるため説明を省略する。次に、ステップS2703にて、インデックス管理部405は、ステップS801で取り出したL’個のグループ判定鍵を用いて、トラップドアを用いてそれぞれのグループ判定鍵検索クエリ用を復号する。具体的には、インデックス管理部405は、例えば第1階層に対応したグループ判定鍵検索クエリ用はR,Cから構成されているため、トラップドアを用いて暗号文Cを復号し、復号結果が乱数Rと同一であった場合、第1情報を0とし、同一でなかった場合は第1情報を1とする。同様の手順にて、第1情報から第L’情報までを決定する。次に、ステップS1004にて、インデックス管理部405は、ステップS804にて示した手順を用いて、2分木の中から対応するノードを特定し、そこに処理中である事を示すポインタを設定する。そして、そのポインタが指すノードに関連付けられた暗号化タグと管理番号の組を全て取り出し、検索処理部406に送付する。次に、ステップS1005とステップS1006とステップS1007は、実施の形態1と同様であるため説明を省略する。以上により、ステップS2604で実施する、インデックス情報から検索の候補となる暗号化タグを全て取得する処理が終了する。次に、ステップS905にて、検索処理部406は、S904にて取得した暗号化タグからタグを取り出し、既存秘匿検索技術の判定処理を用いて、タグに含まれるキーワードと、S904にて取り出したトラップドアに含まれるキーワードが同一であるかどうかを判定する。具体的には、検索処理部406は、トラップドアでタグR,Cのうち暗号文Cを復号し、復号結果が乱数Rと同一であった場合、キーワードが一致したと判定する。同一でなかった場合は、キーワードが一致しなかったと判定する。なお、既存秘匿検索技術の判定処理は、1個のタグと、1個のトラップドアの比較しか実施できないため、これをS904にて取得した全ての暗号化タグに対して実施する。そして、判定処理の結果、一致と判定された暗号化タグに関連付けられた管理番号を特定する。次に、ステップS906とステップS907は、実施の形態1と同様であるため説明を省略する。以上の手順により、アクセス端末装置301はユーザから検索キーワードを受け取り、そのキーワードを含む暗号化データをデータセンタ装置401から取得し、それを復号して閲覧する事ができる。次に、図28に基づき、インデックスツリーの階層数を追加する時のインデックス再構成処理について説明する。なお、処理の流れ自体は実施の形態1で示した方式と類似しているが、既存秘匿検索方式や既存暗号化方式のアルゴリズムの相違から処理内容が若干異なっている。そのため、実施の形態1で示した処理の流れとの差異を中心に説明する。はじめにステップ1101は、実施の形態1と同様であるため説明を省略する。次に、ステップS2802にて、グループ判定鍵生成部308は、ユーザ秘密鍵管理部305から秘匿検索用ユーザ秘密鍵と公開パラメータ、既に発行済みのグループ判定鍵の階層数を取り出す。そして、グループ判定鍵生成部308は、新たに発行するグループ判定鍵の階層L’1を特定する。次に、グループ判定鍵生成部308は、タグID階層構造のグループ化情報のうち第L’1情報に0を指定する。その他の第1情報から第L’情報と、第L’2情報から第L情報と、キーワード情報にはワイルドカードを指定する。このタグID階層構造に対して、グループ判定鍵生成部308は、ユーザ秘密鍵に埋め込まれたグループ名とユーザ名を組み合わせる事でタグID述語ベクトルを生成すると共に、S1101にて受け取ったグループ名とユーザ名を組み合わせる事でタグID属性ベクトルを生成する。そして、グループ判定鍵生成部308は、秘匿検索用ユーザ秘密鍵と、上記で生成したタグID述語ベクトルを入力として、既存秘匿検索方式の検索クエリ生成関数Delegate関数を実行する事で、第L’1階層に対応するグループ判定鍵暗号化タグ用を生成する。更に、グループ判定鍵生成部308は、ステップS2405と同様の手順にて、上記で生成したタグID属性ベクトルを入力としてタグR,Cを生成し、これをグループ判定鍵検索クエリ用とする。そして、グループ判定鍵生成部308は、生成したグループ判定鍵暗号化タグ用とグループ判定鍵検索クエリ用を合わせてグループ判定鍵として、再構成したいインデックスに関連付けられたグループ名とユーザ名と共にデータセンタ装置401に送付する。次に、ステップ1103とS1104は、実施の形態1と同様であるため説明を省略する。次に、ステップS1105にて、インデックス管理部405は、ステップS1104もしくはS1107で選択した第L’階層ノードに関連付けられた暗号化タグと管理番号を取り出し、さらに暗号化タグからタグを取り出す。そして、インデックス管理部405は、ステップS2503と同様の手順にて、タグから第L’1階層に振り分けるための第L’1情報を取得する。そして、インデックス管理部405は、暗号化タグと管理番号を、選択した第L’階層ノードの子ノードのいずれに振り分けるかを第L’1情報を元に決定し、第L’階層ノードの関連付けを削除して、新たに第L’1階層ノードに関連付けて保存する。これを選択した第L’階層に関連付けられた全ての暗号化タグに対して実施する。次に、ステップS1106とS1107は、実施の形態1と同様であるため説明を省略する。以上の手順により、アクセス端末装置301はデータセンタ装置401に対してグループ判定鍵を新たに生成してインデックス情報の再構成を要求し、データセンタ装置401は自身が管理するインデックス情報の再構成を行う事で、インデックス情報の階層数を1階層増やす事ができる。以上の様に、暗号化タグに対してキーワードから生成したグループ化情報を含めておき、データセンタ装置401がユーザからグループ判定鍵を受け取る事で、グループ化情報暗号化タグ用を用いてキーワードに応じた暗号化タグのグループ化を行う事ができる。検索の際にも、検索クエリとグループ判定鍵検索クエリ用を用いて検索対象の暗号化タグのグループを一意に特定できる様にしているため、全ての暗号化タグに対して既存秘匿検索技術の判定処理を行う必要が無くなり、特定のグループに属する暗号化タグに対してのみ既存秘匿検索技術の判定処理を行えばよく、秘匿検索の時間を大きく削減する事ができる。例えば、L’個のグループ判定鍵がデータセンタ装置401に開示されている状況では、暗号化タグM個を2^L’個のグループに分割する事ができるため、各グループには平均的にM/2^L’個の暗号化タグが含まれる。そのため、本実施の形態によって、検索処理は2^L’倍に高速化される。また、グループ化を行うための情報を1ビット単位などでタグID階層構造の異なる要素に設定して暗号化して、ユーザがタグID階層構造に含めた情報を判定するためのグループ判定鍵を開示する事で、データセンタ装置401がグループ化に用いるための情報を生成できる様にしている。そのため、開示するグループ判定鍵の数によって、ユーザがグループ化のレベルを調整する事ができる。例えば、L’個のグループ判定鍵を開示している状況で、暗号化データの保管数が増えるに従って検索時間がT時間になり、運用に支障が生じたとする。この時、新しくL’1階層目に対応したグループ判定鍵を開示する事で、暗号化タグを2倍のグループに分割する事ができるため、検索時間をT/2に削減する事ができる様になる。一方、暗号アルゴリズム開発の世界では、暗号化データ中に含まれるキーワードによって、暗号化データのグループ化ができない事が高い安全性を持つ暗号だと評価される。そのため、データの機密性を保護したいユーザからすれば、不必要にデータセンタ装置401に暗号化データをグループ化されてしまう事は望まない。本実施の形態では、ユーザが求める安全性のレベルと検索処理の応答時間に応じて、必要最小限のグループ判定鍵のみをデータセンタ装置401に与える様にユーザ自身が制御する事ができる。そのため、グループ化情報としてLビットの情報を付加していたとしても、開示するグループ判定鍵の数を調整する事で、ユーザ自身によって安全性と高速性のバランスを調整する事ができる。更に、開示するグループ判定鍵の数の調整は、正規のユーザ秘密鍵を持つユーザしか実施できないため、第三者によって不正にグループ判定鍵を作成開示する様な、安全性を低下させる不正を防止する事ができる。また、グループ判定鍵暗号化タグ用とグループ判定鍵検索クエリ用を用いて、データセンタ装置401側で第i情報を生成する様な仕組みとした。そのため、グループ化情報に設定した値自身もデータセンタ装置401には分からないため、それがキーワードのハッシュ値であったとしてもキーワードの推測が困難であり、安全性を向上させる事ができる。また、本実施の形態に係る方式は、内積述語暗号に基づく既存秘匿検索のタグに対してグループ化情報を含める事で、その検索性能を向上させる拡張方式である。そのため、本実施の形態で示した既存秘匿検索方式だけでなく、提案されている様々な既存秘匿検索方式に対して適用可能であり、その検索性能を向上させる事ができる。本実施の形態では、非特許文献5の記載の方式に適用した例を示したが、例えば非特許文献3に記載の方式にも適用できるし、その他の内積述語暗号や関数型暗号など、あらゆる既存秘匿検索方式に対して適用可能である。また、既存秘匿検索方式だけでなく、既存暗号化方式として何を用いるかに依存しない高速化手法とした。そのため、一般的によく利用されているRSA登録商標暗号などを利用する事も可能である。また、本実施の形態では確率的暗号に基づく秘匿検索技術を高速化する手法について示した。一般的に秘匿検索の検索時間だけを見れば確定的暗号に基づく方式が早いが、暗号化データの出現頻度を分析して平文を推定できるという課題がある。一方、確率的暗号に基づく方式は、暗号化データの出現頻度がキーワードの出現頻度と無関係なため、出現頻度の分析による平文の推定に対して安全であるが、検索処理にとても時間がかかるという課題がある。しかし、本実施の形態は確率的暗号に基づいているため、検索が高速化されているにもかかわらず、出現頻度による分析に対しての安全性が残っているというメリットがある。また、暗号化データやインデックスは、グループ名とユーザ名の組ごとに作成管理を行う仕組みとした。そのため、ユーザが検索を行う場合、元々読む事ができない暗号化データが含まれるインデックス情報を検索する必要が無くなるため、検索処理を大きく向上させる事ができる。また、グループ名やユーザ名によって暗号化データの開示範囲が決められるが、一般的に開示範囲ごとに保管される暗号化データの数が異なる事が予想される。本実施の形態では、グループ判定鍵の開示は、グループ名とユーザ名の組と関連付けられたインデックスに対して実施する様な仕組みとした。そのため、開示範囲ごとに安全性と高速性のバランスを調整する事ができる。また、インデックス情報から検索対象とすべき暗号化タグを取得する際、検索クエリからグループ判定鍵を用いて生成された第i情報を用いて特定されたノードに関連付けられた暗号化タグだけでなく、その全ての上位ノードに関連付けられた暗号化タグも検索対象とする様にした。そのため、追加でグループ判定鍵を受け取ってインデックス情報の再構成を行っている最中に検索クエリを受け取ったとしても、検索対象とすべき暗号化タグを漏らすことなくチェックする事ができる。また、暗号化データを生成する際に複数のグループ名とユーザ名を受け取る様な仕組みとしているため、開示先のユーザやグループが複数あったとしても、本方式で複数の開示先に暗号化データを開示すると共に、開示先数に依存せずに検索速度を向上させる事ができる。また、暗号化データに関連付けるキーワードは、本文から自動抽出しても良いし、ユーザが指定する様にしても良いし、その両者を組み合わせる事もできる様にしたため、検索時に指定されるであろうキーワードをユーザの意図通りに付加する事ができる。また、タグとグループ化情報を一体化したため、グループ化情報を差し替える様な攻撃は発生せず、安全に利用する事が可能となる。また、データを暗号化する際に、AESやCamellia登録商標等の高速な共通鍵暗号を利用できる仕組みとしたため、動画や音楽データなどの大きなサイズのデータであっても、高速に暗号化する事が可能である。また、鍵管理サーバ装置201にユーザID情報データベースを持たせているので、ユーザが暗号化データを復号可能なユーザのグループ名やユーザ名が分からなかったとしても、ユーザが知っているメールアドレスなどの別の情報を元にして、正しいグループ名やユーザ名を取得する事ができるので、暗号化データの開示範囲を誤って設定する事を防止する事ができる。同様に、暗号化タグを生成したりするための補助にもなる。2分木以外も適用可能なお、本実施の形態では、2分木を用いたインデックス情報を構成する例を示した。しかし、生成するインデックスは2分木に限る必要はなく、グループ化情報から生成する事ができるものであれば、より一般的な木構造であっても良く、ハッシュテーブルであっても良い。また、インデックス情報として作成した2分木は、その構造を保ったままディスクに保管する必要はなく、例として示した様にノード番号を割り当てて表形式で保管しても良いし、その他のデータ形式で保管しても良い。グループ化情報は1ビットに制約する必要はないまた、本実施の形態では、キーワードから生成したビット列の第iビットを第i情報として用いる様にした。しかし、1ビットずつ利用する必要はなく、2ビット以上の情報を用いて第i情報を生成する様にしても良い。例えば、キーワードから2Lビットのビット列を生成し、その第2i-1ビット目と第2iビット目を第i情報として利用することも可能である。グループ化情報に使う情報また、本実施の形態では、グループ化情報の第i情報には、0や1といった1ビットの情報を含める例を示した。しかし、本情報を用いて2分木の子ノード左か子ノード右かを判断できればいいので、必ずしも0や1の値である必要はない。例えば、1と-1でも良いし、その他の値を入れる様にしても良い。同様に、第L’1階層目のグループ判定鍵を生成する際に、第L’1情報に0を指定する様な例とした。しかし、必ずしも0を設定する必要はなく、1を設定する様にしても良い。また、第i情報が1と-1のいずれかを設定する様にした場合は-1でも良いし、その他の値を入れる様にしても良い。同様に、グループ判定鍵暗号化タグ用を用いてタグを復号した場合、もしくはトラップドアを用いてグループ判定鍵検索クエリ用を復号した場合、正しく復号した場合に第i情報を0とみなし、正しく復号できなかった場合に第i情報を1とみなす様にした。しかし、この0と1の割り振りは逆であっても良い。ハッシュ値以外も利用可能また、本実施の形態では、キーワードからLビットのビット列を作成する際に、例えばSHA-2等のハッシュ関数を利用する事を例示したが、Lビットのビット列が作れるものであればアルゴリズムは何でも良い。例えば、SHA-2以外のハッシュ関数を用いても良いし、HMAC等の鍵付きハッシュや、AES等の共通鍵暗号や、RSA登録商標暗号等の公開鍵暗号を用いても良い。なお、鍵付きハッシュや共通鍵暗号や公開鍵暗号を用いる場合は、秘匿検索用ユーザ秘密鍵に加えてハッシュ鍵や共通鍵や秘密鍵も配布する必要がある。また、キーワードを乱数のシードとして、疑似乱数生成アルゴリズムでLビットの乱数を生成する様にしても良い。他にも、キーワードとLビット列の対応表を使う様にしても良い。特に、Lビット列の対応表を用いる場合、キーワードの出現頻度を考慮してLビット列の発生頻度を平準化できるため、安全性が更に向上する事が期待できる。グループ判定鍵の公開数また、本実施の形態では、ユーザがグループ判定鍵を1個ずつ開示する事を想定した例を記載したが、1回に1個ずつと制限する必要はなく、同時に2個や3個のグループ判定鍵を公開する様にしても良い。グループ判定鍵生成のタイミングまた、本実施の形態では、ユーザがインデックス再構成を行うタイミングでグループ判定鍵を生成していた。しかし、グループ判定鍵はインデックス再構成を行う前であればいつ生成しても良い。更に、ユーザではなく、鍵管理サーバ装置201がユーザ秘密鍵発行時に代行して生成しても良い。ID階層数の制約はないまた、本実施の形態では、タグID階層構造や復号者ID階層構造にて、グループ名とユーザ名の2種類の情報を用いて復号検索が可能なユーザやグループを指定する例を示した。しかし、この2種類の情報に制限する必要はなく、例えば部名課名氏名の3種を用いても良いし、氏名だけを用いても良い。また、内積述語暗号ではANDやOR等の条件を用いて受信者の属性を指定できるので、その様に柔軟に受信者を指定できるようにしても良い。ベクトル化手法は任意また、本実施の形態では、タグID階層構造をタグID述語ベクトルやタグID属性ベクトルに変換する方式として、タグID述語ベクトルの場合はv1,v2=1,-グループ名とし、タグID属性ベクトルの場合はx1,x2=グループ名,1とする例を示した。しかし、例えばv1,v2=1,-グループ名とx1,x2=グループ名,1としても良いし、他の変換方法を用いても構わない。タグID階層構造からタグID述語ベクトルやタグID属性ベクトルへの変換方法に制約はなく、一般的に知られた様々な方法を利用する事ができる。同様に、復号者ID階層構造に関しても同様である。ID共通化は不要また、本実施の形態では、タグ付き暗号化データを生成する際、タグID階層構造や復号者ID階層構造に、グループ名とユーザ名として同じ値を設定する例を示した。しかし、これらは同じ値にせず、異なる値を設定しても良い。例えば、ユーザには検索だけ許可し、暗号化データ自身の復号は許可したくない場合は、タグID階層構造にはユーザのグループ名とユーザ名を設定し、復号者ID階層構造には別の復号可能なユーザのグループ名とユーザ名を設定すればよい。鍵管理サーバ装置201の階層化また、本実施の形態では、鍵管理サーバ装置201が1台の例を示したが、1台に制限する必要はない。例えば、非特許文献5の方式や、その他の秘匿検索方式では、鍵管理サーバ装置にも階層構造を持たせ、複数台に役割を分散して運用する形態も記載されている。本実施の形態でも同様にして、鍵管理サーバ装置に階層構造を持たせた形で利用する事も可能である。内積述語暗号以外も適用可能また、本実施の形態では、内積述語暗号に基づく既存秘匿検索方式や既存暗号化方式を用いた例を示した。しかし、内積述語暗号に基づく方式に制約するものではなく、同様の機能を実現した関数型暗号などを用いる事も可能であるし、AESやCamellia登録商標やHMACなどの共通鍵暗号や、RSA登録商標暗号などの公開鍵暗号を用いる事も可能である。公開パラメータの共通化も可能また、本実施の形態では、既存秘匿検索方式や既存暗号化方式に非特許文献5に記載の内積述語暗号を用いた例を示したが、それぞれ異なる公開パラメータを利用する様にした。しかし、例えば利用する楕円曲線など、公開パラメータの一部の情報を共通化して利用する事も可能である。そのため、共通化できるものは共通化して利用しても構わない。キーワード数また、本実施の形態では、検索キーワードが1個の場合を示したが、必ずしも検索キーワードを1個に制限する必要はない。例えば、複数の検索キーワードがある場合、それぞれのキーワードに対して検索クエリを生成して、全ての検索クエリをデータセンタ装置401に送付しても良い。またその時、例えば1個の検索クエリでヒットと判定された暗号化データを取得するとか、検索クエリAと検索クエリBの両方がヒットした暗号化データを取得する等、任意の条件も送付して良い。タグのチェック不要化また、本実施の形態では、インデックス管理部405から取得した暗号化タグの全てを検索クエリと判定する様にした。しかし、検索にヒットしたと判定された暗号化データに関しては、それ以降、その暗号化データに関連付けられた暗号化タグのチェックをしなくても構わない。また、検索結果として例えば10件の結果を返せばいい場合においても、規定個数以上の検索結果が見つかったら、それ以降の暗号化タグのチェックを行わなくても良い。ユーザID情報データベースの必要有無また、本実施の形態では、鍵管理サーバ装置201にユーザID情報データベースを設け、その情報を元にユーザ秘密鍵の生成を行っていた。しかし、ユーザID情報データベースは必ずしも必須なものではなく、ユーザ秘密鍵を発行する際に鍵管理サーバ装置201の管理者によって指定する様にしても良いし、アクセス端末装置301から受領する様にしても良い。アクセス端末装置301=ユーザとの仮定、ICカードの利用また、本実施の形態では、アクセス端末装置301は一人のユーザが操作するものと仮定した記載とした。しかし、アクセス端末装置301自身は一人のユーザが占有するものではなく、複数名で共有する様な仕組みでも良い。この場合、ユーザ秘密鍵管理部305ではユーザごとに1個のユーザ秘密鍵が割り当てられるため、複数のユーザ秘密鍵を保管する様にして、アクセス端末装置301で操作者の認証をする事で、どのユーザ秘密鍵を利用すべきかを判断する事が好ましい。また、ユーザ秘密鍵を社員証などに保管して管理する事も可能である。この場合、ユーザ秘密鍵管理部305がICカードに相当する機能だが、ユーザ秘密鍵を用いた処理をICカードにて全て行わせる場合、必要に応じて検索クエリ生成部306やデータ復号部307やグループ判定鍵生成部308の一部の処理をICカードに実施させても良い。データ本体の暗号化方式また、本実施の形態では、データを暗号化する際にAESやCamellia登録商標を自動的に用いる事を例示したが、これはシステム内で事前に利用する方式を決定しておいても良いし、ユーザによって設定できる様にしておいても良い。検索結果の返却方法また、本実施の形態では、検索の結果、ヒットした暗号化データを全て返却する様な例を示したが、必ずしも検索時に同時に全ての暗号化データ自身を返却する必要はない。例えば、ヒットした暗号化データのうち数個を返すだけにするとか、個数だけを返す様にするとか、暗号化データのリストだけを返却する様にしても良い。システム構成のバリエーションまた、本実施の形態では、鍵管理サーバ装置201とアクセス端末装置301が企業内にあり、データセンタ装置401がインターネットなどに接続された外部サービスとして存在した例を示した。しかし、本発明はこの様なシステム構成に限定されるものではない。例えば、データセンタ装置401が企業内にあっても良いし、鍵管理サーバ装置201やアクセス端末装置301が企業外のネットワークに接続されていても良い。なお、本実施の形態では、アクセス端末装置301のグループ化ビット列生成部2301インデックス導出ビット列、秘匿化処理部は、実施の形態1と異なり、内積述語暗号を用いていることを説明した。また、本実施の形態では、グループ化ビット列生成部2301は、保管キーワードのハッシュ値から、インデックス情報のノードの最大階層数と同数であるLビットのビット列を抽出するとともに、ハッシュ値の他のビット又はハッシュ値全体をキーワード情報とし、更に、暗号化タグ生成部303は、Lビットのビット列及びキーワード情報を暗号化し、暗号化したLビットのビット列及びキーワード情報を暗号化タグとし、暗号化タグをデータセンタ装置401に送信することを説明した。換言すると、グループ化情報生成部310は、保管キーワードから一意に得られる乱数値のビット列から、許可ビット位置として指定できる最大数と同数のビット数の保管インデックス導出ビット列を生成し、更に、乱数値のビット列の他のビット又は乱数値のビット列全体をキーワード情報とし、暗号化タグ生成部303は、保管インデックス導出ビット列及びキーワード情報を暗号化し、暗号化した保管インデックス導出ビット列及びキーワード情報をタグデータとし、タグデータをデータセンタ装置401データ保管装置に送信している。また、本実施の形態では、グループ化ビット列生成部2301は、検索キーワードのハッシュ値から、インデックス情報のノードの最大階層数と同数であるLビットのビット列を抽出するとともに、ハッシュ値の他のビット又はハッシュ値全体をキーワード情報とし、更に、暗号化タグ生成部303は、Lビットのビット列及びキーワード情報を暗号化し、暗号化したLビットのビット列及びキーワード情報をトラップドアとし、トラップドアをデータセンタ装置401に送信することを説明した。換言すると、グループ化情報生成部310は、検索キーワードから一意に得られる乱数値のビット列から、許可ビット位置として指定できる最大数と同数のビット数の検索インデックス導出ビット列を生成し、更に、乱数値のビット列の他のビット又は乱数値のビット列全体をキーワード情報とし、暗号化タグ生成部303は、検索インデックス導出ビット列及びキーワード情報を暗号化し、暗号化した検索インデックス導出ビット列及びキーワード情報を暗号化した検索キーワードとし、暗号化した検索キーワードをデータセンタ装置401データ保管装置に送信している。また、本実施の形態では、データセンタ装置401のインデックス管理部405は、タグ付き暗号化データを受信した際に、暗号化タグをグループ判定鍵で復号し、正しく復号できた場合にビット値0とし、復号できなかった場合にビット値を1とすることで、L’個分のビット値を導出してノード番号としている。換言すれば、インデックス管理部405は、保管要求を受信した際に、タグデータ内の暗号化ビットのうち許可ビット位置の暗号化ビットを許可ビット復号鍵で復号し、正しく復号できた場合にビット値0とし、復号できなかった場合にビット値を1とすることで、復号結果から保管インデックス値の各ビットのビット値を導出し、導出した各ビットのビット値を連結して保管インデックス値を導出している。また、本実施の形態では、データセンタ装置401のインデックス管理部405は、検索クエリを受信した際に、トラップドアをグループ判定鍵で復号し、正しく復号できた場合にビット値0とし、復号できなかった場合にビット値を1とすることで、L’個分のビット値を導出してノード番号としている。換言すれば、インデックス管理部405は、検索要求を受信した際に、暗号化された検索キーワード内の暗号化ビットのうち許可ビット位置の暗号化ビットを許可ビット復号鍵で復号し、正しく復号できた場合にビット値0とし、復号できなかった場合にビット値を1とすることで、復号結果から検索インデックス値の各ビットのビット値を導出し、導出した各ビットのビット値を連結して検索インデックス値を導出している。最後に、実施の形態1及び2に示した鍵管理サーバ装置201、アクセス端末装置301及びデータセンタ装置401のハードウェア構成例について説明する。図35は、実施の形態1及び2に示す鍵管理サーバ装置201、アクセス端末装置301及びデータセンタ装置401のハードウェア資源の一例を示す図である。なお、図35の構成は、あくまでも鍵管理サーバ装置201、アクセス端末装置301及びデータセンタ装置401のハードウェア構成の一例を示すものであり、鍵管理サーバ装置201、アクセス端末装置301及びデータセンタ装置401のハードウェア構成は図35に記載の構成に限らず、他の構成であってもよい。また、鍵管理サーバ装置201、アクセス端末装置301及びデータセンタ装置401は、それぞれ異なるハードウェア構成であってもよい。図35において、鍵管理サーバ装置201、アクセス端末装置301及びデータセンタ装置401は、プログラムを実行するCPU911CentralProcessingUnit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいうを備えている。CPU911は、バス912を介して、例えば、ROMReadOnlyMemory913、RAMRandomAccessMemory914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。更に、CPU911は、FDD904FlexibleDiskDrive、コンパクトディスク装置905CDDと接続していてもよい。また、磁気ディスク装置920の代わりに、SSDSolidStateDrive、光ディスク装置、メモリカード登録商標読み書き装置などの記憶装置でもよい。RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。例えば、実施の形態1及び2で説明した鍵保管部203、ユーザID情報管理部206、ユーザ秘密鍵管理部305、インデックス管理部405及び暗号化データ管理部404は、RAM914、磁気ディスク装置920等に、各種鍵、インデックス情報、暗号化データ、タグデータ等を保管している。通信ボード915、キーボード902、マウス903、FDD904などは、入力装置の一例である。また、通信ボード915、表示装置901などは、出力装置の一例である。通信ボード915は、図1に示すように、ネットワークに接続されている。例えば、通信ボード915は、社内LANローカルエリアネットワーク、インターネットの他、WANワイドエリアネットワーク、SANストレージエリアネットワークなどに接続されていても構わない。磁気ディスク装置920には、オペレーティングシステム921OS、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM914には、CPU911による処理に必要な各種データが格納される。また、ROM913には、BIOSBasicInputOutputSystemプログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。鍵管理サーバ装置201、アクセス端末装置301及びデータセンタ装置401の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。上記プログラム群923には、実施の形態1及び2の説明において~部として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。ファイル群924には、実施の形態1及び2の説明において、~の判断、~の計算、~の比較、~の評価、~の更新、~の設定、~の保管、~の登録、~の選択、~の導出、~の生成、~の抽出、~の取得、~の特定、~の暗号化、~の復号、~の入力、~の出力等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、~ファイルや~データベースの各項目として記憶されている。~ファイルや~データベースは、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出検索参照比較演算計算処理編集出力印刷表示などのCPUの動作に用いられる。抽出検索参照比較演算計算処理編集出力印刷表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。また、実施の形態1及び2の説明において~部として説明しているものは、~回路、~装置、~機器であってもよく、また、~ステップ、~手順、~処理であってもよい。すなわち、実施の形態1及び2で説明したフローチャートに示すステップ、手順、処理により、データ処理装置及びデータ保管装置を方法として把握することができる。また、~部として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子デバイス基板配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1及び2の~部としてコンピュータを機能させるものである。あるいは、実施の形態1及び2の~部の手順や方法をコンピュータに実行させるものである。このように、実施の形態1及び2に示す鍵管理サーバ装置201、アクセス端末装置301及びデータセンタ装置401は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。そして、上記したように~部として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。"