(57)【特許請求の範囲】
【請求項１】
暗号化データと前記暗号化データを検索するための暗号化されたキーワードである暗号化タグとを生成して送信する送信装置と、
前記送信装置から前記暗号化データと前記暗号化タグとを受信して保管すると共に秘匿検索の要求に応じて、前記秘匿検索を実行するサーバ装置と、
前記キーワードのデジタル署名に相当するデータであると共に前記サーバ装置に前記暗号化データの前記秘匿検索を要求するデータであるトラップドアを生成して前記サーバ装置に送信し、前記秘匿検索の結果を前記サーバ装置から受信する受信装置と
を備えた秘匿検索システムで使用される鍵情報であって、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成と、前記サーバ装置による前記秘匿検索とに使用される真の公開パラメータＰＰと、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成とに使用される保護鍵ＰＫ’と
を含む鍵情報である公開パラメータＰＫ
に含まれる前記真の公開パラメータＰＰを生成する第１生成部と、
前記公開パラメータＰＫに含まれる前記保護鍵ＰＫ’を、前記第１生成部によって生成される前記真の公開パラメータＰＰとは分離して生成する第２生成部と
を備えたことを特徴とする鍵生成装置。
【請求項２】
前記鍵生成装置は、さらに、
前記公開パラメータＰＫを入力する入力部を備え、
前記第１生成部は、
前記入力部が入力した前記公開パラメータＰＫから前記真の公開パラメータＰＰを抽出することによって、前記真の公開パラメータＰＰを生成し、
前記第２生成部は、
前記入力部が入力した前記公開パラメータＰＫから前記保護鍵ＰＫ’を抽出することによって、前記保護鍵ＰＫ’を生成する
ことを特徴とする請求項１記載の鍵生成装置。
【請求項３】
前記鍵生成装置は、さらに、
前記公開パラメータＰＫを生成する第３生成部を備え、
前記入力部は、
前記第３生成部が生成した前記公開パラメータＰＫを入力することを特徴とする請求項２記載の鍵生成装置。
【請求項４】
コンピュータに、
暗号化データと前記暗号化データを検索するための暗号化されたキーワードである暗号化タグとを生成して送信する送信装置と、
前記送信装置から前記暗号化データと前記暗号化タグとを受信して保管すると共に秘匿検索の要求に応じて、前記秘匿検索を実行するサーバ装置と、
前記キーワードのデジタル署名に相当するデータであると共に前記サーバ装置に前記暗号化データの前記秘匿検索を要求するデータであるトラップドアを生成して前記サーバ装置に送信し、前記秘匿検索の結果を前記サーバ装置から受信する受信装置と
を備えた秘匿検索システムで使用される鍵情報であって、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成と、前記サーバ装置による前記秘匿検索とに使用される真の公開パラメータＰＰと、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成とに使用される保護鍵ＰＫ’と
を含む鍵情報である公開パラメータＰＫ
に含まれる前記真の公開パラメータＰＰを生成する第１生成処理、
前記公開パラメータＰＫに含まれる前記保護鍵ＰＫ’を、前記第１生成処理によって生成される前記真の公開パラメータＰＰとは分離して生成する第２生成処理、
を実行させるための鍵生成プログラム。
【請求項５】
暗号化データと前記暗号化データを検索するための暗号化されたキーワードである暗号化タグとを生成して送信する送信装置と、
前記送信装置から前記暗号化データと前記暗号化タグとを受信して保管すると共に秘匿検索の要求に応じて、前記秘匿検索を実行するサーバ装置と、
前記キーワードのデジタル署名に相当するデータであると共に前記サーバ装置に前記暗号化データの前記秘匿検索を要求するデータであるトラップドアを生成して前記サーバ装置に送信し、前記秘匿検索の結果を前記サーバ装置から受信する受信装置と
を備えた秘匿検索システムにおいて、
前記受信装置は、
前記秘匿検索システムで使用される鍵情報であって、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成と、前記サーバ装置による前記秘匿検索とに使用される真の公開パラメータＰＰと、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成とに使用される保護鍵ＰＫ’と
を含む鍵情報である公開パラメータＰＫ
に含まれる前記真の公開パラメータＰＰを生成する第１生成部と、
前記公開パラメータＰＫに含まれる前記保護鍵ＰＫ’を、前記第１生成部によって生成される前記真の公開パラメータＰＰとは分離して生成する第２生成部と
を有する鍵生成装置
を備えたことを特徴とする秘匿検索システム。
【請求項６】
前記サーバ装置は、
前記鍵生成装置が生成した前記真の公開パラメータＰＰと前記保護鍵ＰＫ’とのうち、前記真の公開パラメータＰＰのみが配布されることを特徴とする請求項５記載の秘匿検索システム。
【請求項７】
前記送信装置は、
前記鍵生成装置の前記第２生成部が生成した前記保護鍵ＰＫ’が、オフラインで供給されることを特徴とする請求項５または６のいずれかに記載の秘匿検索システム。
【請求項８】
前記送信装置は、
前記鍵生成装置の前記第２生成部が生成した前記保護鍵ＰＫ’が、前記送信装置だけが閲覧可能な電子掲示板を介して供給されることを特徴とする請求項５または６のいずれかに記載の秘匿検索システム。
【請求項９】
暗号化データと前記暗号化データを検索するための暗号化されたキーワードである暗号化タグとを生成して送信する送信装置と、
前記送信装置から前記暗号化データと前記暗号化タグとを受信して保管すると共に秘匿検索の要求に応じて、前記秘匿検索を実行するサーバ装置と、
前記キーワードのデジタル署名に相当するデータであると共に前記サーバ装置に前記暗号化データの前記秘匿検索を要求するデータであるトラップドアを生成して前記サーバ装置に送信し、前記秘匿検索の結果を前記サーバ装置から受信する受信装置と
を備えた秘匿検索システムで使用される鍵情報であって、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成と、前記サーバ装置による前記秘匿検索とに使用される真の公開パラメータＰＰと、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成とに使用される保護鍵ＰＫ’と
を含む鍵情報である公開パラメータＰＫのうち、
前記送信装置には、前記真の公開パラメータＰＰと前記保護鍵ＰＫ’との両方が配布され、
前記サーバ装置には、前記真の公開パラメータＰＰのみが配布される
ことを特徴とする鍵配布方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、秘匿検索を実行する秘匿検索システム、秘匿検索システムで使用される鍵の鍵生成装置、鍵生成プログラム及び鍵配布方法に関する。
【背景技術】
【０００２】
公開鍵暗号（ＰＫＣ：Ｐｕｂｌｉｃ  Ｋｅｙ  Ｃｒｙｐｔｏｇｒａｐｈｙ）の分野において、暗号化したままキーワード検索することを可能にする技術として、検索可能公開鍵暗号（ＰＥＫＳ：Ｐｕｂｌｉｃ−ｋｅｙ  Ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  Ｋｅｙｗｏｒｄ  Ｓｅａｒｃｈ）が知られている（例えば非特許文献１）。以下、検索可能公開鍵暗号をＰＥＫＳと記載する。【０００３】
このＰＥＫＳは、例えば、次のようなアプリケーションを実現する。「送信者が機密情報を含んだデータファイルを外部データベース（以下、「サーバ」という）経由で受信者に送る」、という状況を考える。すなわち、送信者がサーバにデータファイルをアップロードしておき、受信者がキーワード検索により、必要なデータファイルをサーバからダウンロードする、という状況を考える。ここで、送信者と受信者は、データファイルとキーワードとの両方をサーバに知られずに共有したい。【０００４】
受信者は、公開鍵暗号の公開鍵、秘密鍵のペア（データファイル本体の暗号化、復号に使用）と、ＰＥＫＳの公開鍵、秘密鍵のペア（キーワードの暗号化、検索クエリの作成に使用）とを予め用意する。そして、受信者は、それぞれの公開鍵を公開しておく。【０００５】
送信者は、受信者の公開鍵暗号の公開鍵を用いてデータファイルを暗号化してデータファイルの暗号文を生成する。これに加えて、送信者は、ＰＥＫＳの公開鍵を用いてキーワードを暗号化してキーワードの暗号文を生成する。以下、ＰＥＫＳの公開鍵を用いて生成したキーワードの暗号文を「暗号化タグ」という。送信者は、データファイルの暗号文と暗号化タグとを合わせてサーバにアップロードする。【０００６】
受信者は、ＰＥＫＳの秘密鍵を用いてキーワードのデジタル署名に相当するデータを生成する。以下、ＰＥＫＳの秘密鍵を用いて生成したキーワードのデジタル署名に相当するデータを「トラップドア」という。受信者は、このトラップドアを検索クエリとしてサーバに送信する。サーバは、受け取ったトラップドアを用いてデータベース内の全てのデータファイルの暗号文それぞれの暗号化タグに対して秘匿検索を行う。そして、サーバは、秘匿検索でヒットしたデータファイルの暗号文を受信者に送信する。【０００７】
このように、暗号化データの外部預託アプリケーションを実現する場合には、ＰＥＫＳが本質的な役割を果たす。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−１４１４７２号公報
【特許文献２】国際公開ＷＯ２０１２／０９８６４９号
【非特許文献】
【０００９】
【非特許文献１】Ｄａｎ  Ｂｏｎｅｈ，  Ｇｉｏｖａｎｎｉ  Ｄｉ  Ｃｒｅｓｃｅｎｚｏ，  Ｒａｆａｉｌ  Ｏｓｔｒｏｖｓｋｙ  ａｎｄ  Ｇｉｕｓｅｐｐｅ  Ｐｅｒｓｉａｎｏ，  “ｕｂｌｉｃ  Ｋｅｙ  Ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  Ｋｅｙｗｏｒｄ  Ｓｅａｒｃｈ，”  Ｅｕｒｏｃｒｙｐｔ  ２００４，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  ｖｏｌ．  ３０２７，  ｐｐ．  ５０６−５２２，  ２００４．
【非特許文献２】Ｊｏｎａｔｈａｎ  Ｋａｔｚ，  Ａｍｉｔ  Ｓａｈａｉ  ａｎｄ  Ｂｒｅｎｔ  Ｗａｔｅｒｓ，  “Ｐｒｅｄｉｃａｔｅ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｕｐｐｏｒｔｉｎｇ  Ｄｉｓｊｕｎｃｔｉｏｎｓ，  Ｐｏｌｙｎｏｍｉａｌ  Ｅｑｕａｔｉｏｎｓ，  ａｎｄ  Ｉｎｎｅｒ  Ｐｒｏｄｕｃｔｓ，”  Ｅｕｒｏｃｒｙｐｔ  ２００８，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  ｖｏｌ．  ４９６５，  ｐｐ．  １４６−１６２，  ２００８．
【非特許文献３】Ｔａｔｓｕａｋｉ  Ｏｋａｍｏｔｏ  ａｎｄ  Ｋａｔｓｕｙｕｋｉ  Ｔａｋａｓｈｉｍａ，  “Ａｄａｐｔｉｖｅｌｙ  Ａｔｔｒｉｂｕｔｅ−Ｈｉｄｉｎｇ  （Ｈｉｅｒａｒｃｈｉｃａｌ）  Ｉｎｎｅｒ  Ｐｒｏｄｕｃｔ  Ｅｎｃｒｙｐｔｉｏｎ，”  Ｅｕｒｏｃｒｙｐｔ  ２０１２，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  ｖｏｌ．  ７２３７，  ｐｐ．  ５９１−６０８，  ２０１２．
【非特許文献４】Ｍｉｔｓｕｈｉｒｏ  Ｈａｔｔｏｒｉ，  Ｔａｋａｔｏ  Ｈｉｒａｎｏ，  Ｔａｋａｓｈｉ  Ｉｔｏ，  Ｎｏｒｉ  Ｍａｔｓｕｄａ，  Ｔａｋｕｍｉ  Ｍｏｒｉ，  Ｙｕｓｕｋｅ  Ｓａｋａｉ  ａｎｄ  Ｋａｚｕｏ  Ｏｈｔａ，  “Ｃｉｐｈｅｒｔｅｘｔ−Ｐｏｌｉｃｙ  Ｄｅｌｅｇａｔａｂｌｅ  Ｈｉｄｄｅｎ  Ｖｅｃｔｏｒ  Ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  Ｉｔｓ  Ａｐｐｌｉｃａｔｉｏｎ  ｔｏ  Ｓｅａｒｃｈａｂｌｅ  Ｅｎｃｒｙｐｔｉｏｎ  ｉｎ  Ｍｕｌｔｉ−ｕｓｅｒ  Ｓｅｔｔｉｎｇ，”  ＩＭＡ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  Ｃｏｄｉｎｇ，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  ｖｏｌ．  ７０８９，  ｐｐ．  １９０−２０９，  ２０１１．
【非特許文献５】Ｅｍｉｌｙ  Ｓｈｅｎ，  Ｅｌａｉｎｅ  Ｓｈｉ  ａｎｄ  Ｂｒｅｎｔ  Ｗａｔｅｒｓ，  “Ｐｒｅｄｉｃａｔｅ  Ｐｒｉｖａｃｙ  ｉｎ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｙｓｔｅｍｓ，”  Ｔｈｅｏｒｙ  ｏｆ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｃｏｎｆｅｒｅｎｃｅ  ２００９，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  ｖｏｌ．  ５４４４，  ｐｐ．  ４５７−４７３，  ２００９．
【非特許文献６】Ｍｏｔｏｔｓｕｇｕ  Ｎｉｓｈｉｏｋａ，  “Ｐｅｒｆｅｃｔ  Ｋｅｙｗｏｒｄ  Ｐｒｉｖａｃｙ  ｉｎ  ＰＥＫＳ  Ｓｙｓｔｅｍｓ，”  ＰｒｏｖＳｅｃ  ２０１２，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  ｖｏｌ．  ７４９６，  ｐｐ．  １７５−１９２，  ２０１２．
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＰＥＫＳに関して、キーワードが関係するデータである暗号化タグとトラップドアのうち、暗号化タグの安全性については、これまで数多く研究され、また安全性を満たす方式も数多く提案されてきた。例えば、特許文献１、特許文献２および非特許文献１〜非特許文献４では、ＰＥＫＳの様々な使用環境を想定した上で、「それらの環境のもとで暗号化タグが安全であるとはどういうことか」を定めた安全性モデルが提唱された。また、その安全性モデルの中で安全性が数学的に証明できるような方式が提案された。【００１１】
しかしながら、もう一方のデータである「トラップドア」については、非特許文献５、非特許文献６を除いて、安全性の研究やその安全性を満たす方式の提案がほとんどされていない。【００１２】
非特許文献５では、公開鍵をまったく公開することなく、秘密鍵と同等の扱いにすることにより、トラップドアの安全性を確保する方法が開示されている。しかしながら、公開鍵をまったく公開せずに秘密鍵と同等の扱いにするということは、送信者と受信者が同一人物であるようなアプリケーションにしか利用できないことを意味する。したがって、適用可能なアプリケーションが限定されてしまうという課題があった。【００１３】
また、非特許文献６では、安全な単射写像（ｓｅｃｕｒｅ  ｉｎｊｅｃｔｉｖｅ−ｆｕｎｃｔｉｏｎ）を用いてトラップドアの安全性を確保する方法が開示されている。しかしながら、この方法は単一キーワードの完全一致検索にしか適用できず、非特許文献２や非特許文献３に示されるようなＡＮＤ／ＯＲ検索には適用できないという課題があった。【００１４】
本発明は上記の課題を解決するためのものであり、ＰＥＫＳにおいて、トラップドアの安全性を確保するための一般的な方法を提供することを目的のひとつとする。
【課題を解決するための手段】
【００１５】
この発明の鍵生成装置は、
暗号化データと前記暗号化データを検索するための暗号化されたキーワードである暗号化タグとを生成して送信する送信装置と、
前記送信装置から前記暗号化データと前記暗号化タグとを受信して保管すると共に秘匿検索の要求に応じて、前記秘匿検索を実行するサーバ装置と、
前記キーワードのデジタル署名に相当するデータであると共に前記サーバ装置に前記暗号化データの前記秘匿検索を要求するデータであるトラップドアを生成して前記サーバ装置に送信し、前記秘匿検索の結果を前記サーバ装置から受信する受信装置と
を備えた秘匿検索システムで使用される鍵情報であって、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成とに使用される真の公開パラメータＰＰと、
前記送信装置による前記キーワードの暗号化と、前記受信装置による前記トラップドアの生成と、前記サーバ装置による前記秘匿検索とに使用される保護鍵ＰＫ’と
を含む鍵情報である公開パラメータＰＫ
に含まれる前記真の公開パラメータＰＰを生成する第１生成部と、
前記公開パラメータＰＫに含まれる前記保護鍵ＰＫ’を、前記第１生成部によって生成される前記真の公開パラメータＰＰとは分離して生成する第２生成部と
を備えたことを特徴とする。
【発明の効果】
【００１６】
本発明の鍵生成装置は、公開パラメータに含まれる真の公開パラメータＰＰと、保護鍵ＰＫ’とを分離して生成するので、トラップドアの安全性を向上できる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態１の秘匿検索システム１０００の構成図。
【図２】実施の形態１の公開パラメータＰＫとマスタ秘密鍵ＳＫの構成を示す図。
【図３】実施の形態１の暗号化タグの作成に使用される暗号化（Ｅｎｃ）アルゴリズムのフローチャート。
【図４】実施の形態１のトラップドアの作成に使用される鍵生成（ＧｅｎＫｅｙ）アルゴリズムのフローチャート。
【図５】実施の形態１のサーバ２００の秘匿検索に使用される復号（Ｄｅｃ）アルゴリズムのフローチャート。
【図６】実施の形態１の受信者３００から送信者１００およびサーバ２００への公開パラメータＰＫ等の配布方法を示すフローチャート。
【図７】実施の形態１の暗号化タグの生成、トラップドアの生成及び秘匿検索において使用される鍵情報をまとめた図。
【図８】実施の形態１の暗号化タグの生成、トラップドアの生成及び秘匿検索において使用される鍵情報をまとめた表形式の図。
【図９】実施の形態１の鍵生成装置３１０−１のブロック図。
【図１０】実施の形態１の鍵生成装置３１０−２のブロック図。
【図１１】実施の形態１の鍵生成装置３１０−３のブロック図。
【図１２】実施の形態２において、非特許文献２と非特許文献３とに関して、関数型暗号として利用する場合のアルゴリズムと、ＰＥＫＳとして利用する場合のアルゴリズムとの一覧を示す図。
【図１３】実施の形態２の公開パラメータＰＫと、マスタ秘密鍵ＳＫとの構成を示す図。
【図１４】実施の形態２の暗号化タグを生成する際に使用される暗号化（Ｅｎｃ）アルゴリズムのフローチャート。
【図１５】実施の形態２のトラップドアの作成に使用される鍵生成（ＧｅｎＫｅｙ）アルゴリズムのフローチャート。
【図１６】実施の形態２のサーバ２００の秘匿検索に使用される復号（Ｄｅｃ）アルゴリズムのフローチャート。
【図１７】実施の形態３の送信装置１００、受信装置３００等の外観を示す図。
【図１８】実施の形態３の送信装置１００、受信装置３００等のハードウェア構成を示す図。
【発明を実施するための形態】
【００１８】
以下、実施の形態を示すことにより、本発明の具体的内容を説明する。実施の形態１では、非特許文献２に記載のＰＥＫＳにおいて、トラップドアの安全性を確保する方法を開示する。実施の形態２では、非特許文献３に記載の関数型暗号をＰＥＫＳとして利用する場合において、トラップドアの安全性を確保する方法を開示する。
【００１９】
はじめに、以下で説明する各実施の形態に共通する構成を説明する。
図１は、各実施の形態に共通する秘匿検索システム１０００の構成図である。
（１）送信者１００−１から送信者１００−ｎは、暗号化タグの作成者を表す。ここでｎは任意の整数であり、ＰＥＫＳにおいて暗号化タグを作成する送信者の数を表す。なお、送信者１００−１から送信者１００−ｎの実体は、送信者の使用する送信装置である。よって送信者１００−１〜１００−ｎとは、これら送信者の使用する１〜ｎの送信装置を意味する。以下では送信者１００−１〜１００−ｎを、送信装置１００−１〜１００−ｎと記載する場合がある。また、各送信者（各送信装置）を区別する必要が無い場合には、単に、送信者１００（送信装置１００）と記載する。
（２）受信者３００は、公開鍵、マスタ秘密鍵、トラップドアの作成者を表す。なお受信者３００の実体は、受信者３００の使用する受信装置である。よって受信者３００とは、受信者３００の使用する受信装置を意味する。以下では受信者３００を受信装置３００と記載する場合がある。
（３）サーバ装置２００（以下、サーバ２００という）は、外部データベースを表す。これらはインターネットなどのネットワーク４００を介して接続されているものとする。
（４）図１に示すように、秘匿検索システム１０００は、送信装置１００−１〜１００−ｎ、サーバ２００及び受信装置３００を備えている。
【００２０】
なお、ＰＥＫＳを用いて暗号化データの外部預託アプリケーションを実現する場合、送信者１００−１から送信者１００−ｎは暗号化データの送信者となり、受信者３００は暗号化データの受信者３００となる。また、サーバ２００は外部データベースである。サーバ２００は、送信者１００から暗号化データと暗号化タグを預かる。サーバ２００は受信者３００から送信される秘匿検索要求（トラップドア）に対して、受信者３００から送信されたトラップドアと、受信者３００から配布された公開パラメータＰＫ（実際は図６で述べるように、公開パラメータＰＫのうちの真の公開パラメータＰＰ）とを用いて秘匿検索を実行し、検索にヒットした暗号化データを受信者３００に返す。
【００２１】
なお、ここでは簡単のために受信者３００が１人である場合のみを仮定しているが、受信者３００が複数存在する構成であってもよい。この場合、後述するセットアップ・アルゴリズム（図２）を各受信者が個別に実施する方法がある。また、ＰＥＫＳの拡張として、階層型内積述語暗号（Ｈｉｅｒａｒｃｈｉｃａｌ  Ｉｎｎｅｒ−ｐｒｏｄｕｃｔ  Ｅｎｃｒｙｐｔｉｏｎ）のように階層構造を含んだアルゴリズムを利用する方法により、受信者が１人である場合と同様にして暗号化データの外部預託アプリケーションを実現できる。
【００２２】
実施の形態１．
実施の形態１では、非特許文献２に記載のＰＥＫＳにおいて、トラップドアの安全性を確保する方法を開示する。まず、非特許文献２に記載のＰＥＫＳのアルゴリズムのうち、本実施の形態１に関係する部分について説明する。なお以下では、「非特許文献２に記載のＰＥＫＳのアルゴリズム」といえば、非特許文献２の４節「Ｏｕｒ  Ｍａｉｎ  Ｃｏｎｓｔｒｕｃｔｉｏｎ」に記載のｐｒｅｄｉｃａｔｅ−ｏｎｌｙ  ｖｅｒｓｉｏｎのアルゴリズムを指すものとする。非特許文献２の付録Ｂ節には「Ａ  Ｆｕｌｌ−Ｆｌｅｄｇｅｄ  Ｐｒｅｄｉｃａｔｅ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｃｈｅｍｅ」として、４節のアルゴリズムを発展させ、いわゆる関数型暗号として用いる場合のアルゴリズムが記載されているが、ＰＥＫＳとして用いる場合には４節のアルゴリズムで十分であることは、当業者であれば容易に理解できる。
【００２３】
図２は、非特許文献２に記載のＰＥＫＳのアルゴリズムのうち、セットアップ・アルゴリズムを実行して作成される、公開パラメータＰＫとマスタ秘密鍵ＳＫの構成を示す。
図２において、
（１）ｐ，ｑ，ｒはそれぞれ素数を表す。
（２）Ｇはペアリング演算ｅ＾：Ｇ×Ｇ→ＧＴ
が可能な楕円曲線上の、位数Ｎ＝ｐｑｒの巡回群を表す。
（３）ＧＴはペアリング演算後の位数Ｎの巡回群を表す。
（４）ｅ＾はペアリング演算を表す。
（５）ｇｐ，ｇｑ，ｇｒは、「それぞれ位数がｐ，ｑ，ｒであるようなＧｐ、Ｇｑ、Ｇｒ」の部分群の生成元を表す。
（６）Ｒ０は、群Ｇｒ上で一様ランダムに選ばれた要素を表す。
（７）｛ｈ１，ｉ，ｈ２，ｉ｝ｉ＝１，・・・，ｎは、群Ｇｐ上で一様ランダムに選ばれた要素を表す。
ここでｎは、暗号化タグの生成とトラップドアの生成の際に用いる述語ベクトルの次元数を表す。
（８）｛Ｒ１，ｉ，Ｒ２，ｉ｝ｉ＝１，・・・，ｎは、群Ｇｒ上で一様ランダムに選ばれた要素を表す。
【００２４】
非特許文献２に記載のＰＥＫＳのアルゴリズムでは、ＰＥＫＳを利用するすべてのエンティティ（図１の例で言えば送信者１００−１〜１００−ｎ、サーバ２００、受信者３００）が、この公開パラメータＰＫの情報を共有することが前提となっている。後述のように、サーバ２００が秘匿検索を実行する際に利用するアルゴリズムである復号（Ｄｅｃ）アルゴリズムにおいて、公開パラメータＰＫの情報が使用される。
【００２５】
実施の形態１は、公開パラメータＰＫを各エンティティに配布する方法に特徴がある。つまり、実施の形態１の目的は、公開パラメータＰＫの配布方法を工夫することにより、トラップドアの安全性を確保することにある。この詳細は図６の説明で後述する。
なお、図２に示すように、後の説明のために、本実施の形態１においては、
「Ｎ，Ｇ，ＧＴ，ｅ＾」
の部分を真の公開パラメータＰＰと呼び、
残りの構成要素、すなわち、
「ｇｐ，ｇｒ，Ｑ，｛Ｈ１，ｉ，Ｈ２，ｉ｝ｎｉ＝１，・・・，ｎ」
の部分を保護鍵ＰＫ’と呼ぶことにする。
つまり、非特許文献２に記載のセットアップ・アルゴリズムで生成される公開パラメータＰＫは、真の公開パラメータＰＰと保護鍵ＰＫ’からなるものとする。公開パラメータＰＰと保護鍵ＰＫ’との違いは、後の説明で明らかになる。
【００２６】
（暗号化タグの生成）
次に、図３を用いて、非特許文献２に記載のＰＥＫＳのアルゴリズムのうち、送信者１００が暗号化タグを生成する際に利用するアルゴリズムである暗号化（Ｅｎｃ）アルゴリズムの手順を示す。従って図３の動作の主語は送信者（送信装置）である。暗号化タグを生成する際には、送信者１００は、受信者３００から配布された公開パラメータＰＫ（ＰＰとＰＫ’の両方）を使用して、暗号化タグを生成する。
図３は、暗号化（Ｅｎｃ）アルゴリズムの手順を示したフローチャートである。
図３において、
送信者１００は
属性ベクトルｘ→＝（ｘ１，ｘ２，・・・，ｘｎ）∈ＺＮｎ
を暗号化して暗号化タグを生成したいとする。
ここで、
属性ベクトルｘ→∈ＺＮｎ
は暗号化するキーワードに対応したデータであり、完全一致検索やＡＮＤ検索、ＯＲ検索など検索する内容によって異なる形式を取るデータである。例えば１キーワードの完全一致検索の場合には、ｘ→＝（１，キーワード）
である。
なお、
ＺＮは、０からＮ−１までの整数の集合を表す。
また、上記の
ｘ→＝（１，キーワード）
における「キーワード」は、整数化されたキーワードであり、後述の他の場合も同様である。
【００２７】
（１）図３において、送信者１００は、まずステップＳ３０１にて、Ｚｎからｓ，α，βをランダムに選ぶ。
（２）次に、ステップＳ３０２にて、送信者１００は、
群Ｇｒから、 
【００２８】
【数１】
0005836506.tif 000002
をランダムに選ぶ。
（３）最後に、ステップＳ３０３にて、送信者１００は 
【００２９】
【数２】
0005836506.tif 000003
を暗号化タグとして出力する。
【００３０】
図３に示す暗号化（Ｅｎｃ）アルゴリズムの手順において、ステップＳ３０１やステップＳ３０２を実行する際に、公開パラメータＰＫが必要となる。特に、ステップＳ３０２を実行する際に
公開パラメータＰＫ＝（ＰＰ，ＰＫ’）
のうちの保護鍵ＰＫ’が必要となる。
【００３１】
（トラップドアの生成）
次に、図４を用いて、非特許文献２に記載のＰＥＫＳのアルゴリズムのうち、受信者３００がトラップドアを生成する際に利用するアルゴリズムである鍵生成（ＧｅｎＫｅｙ）アルゴリズムの手順を示す。従って図４の動作の主語は受信者（受信装置）である。受信者３００は、図２に示した公開パラメータＰＫ（ＰＰ、ＰＫ’の両方）と、マスタ秘密鍵ＳＫとを用いて、トラップドアを生成する。
図４は、鍵生成（ＧｅｎＫｅｙ）アルゴリズムの手順を示したフローチャートである。
図４において、受信者３００は
述語ベクトルｖ→＝（ｖ１，ｖ２，・・・，ｖｎ）∈ＺＮｎ
にデジタル署名してトラップドアを生成したいとする。
ここで述語ベクトルｖ→∈ＺＮｎ
は、検索するキーワードに対応したデータであり、完全一致検索やＡＮＤ検索、ＯＲ検索など検索する内容によって異なる形式を取るデータである。
例えば１キーワードの完全一致検索の場合には、
ｖ→＝（キーワード，Ｎ−１）である。
（１）図４において、受信者３００は、まずステップＳ４０１にて、Ｚｐから
【００３２】
【数３】
0005836506.tif 000004
をランダムに選ぶ。
（２）次に、ステップＳ４０２にて、受信者３００は、ＧｒからＲ５をランダムに選ぶ。
（３）次に、ステップＳ４０３にて、受信者３００は、Ｚｑからｆ１，ｆ２をランダムに選ぶ。
（４）最後に、ステップＳ４０４にて、受信者３００は、 
【００３３】
【数４】
0005836506.tif 000005
をトラップドアとして出力する。
【００３４】
（サーバ２００による秘匿検索）
次に、図５を用いて、サーバ２００が秘匿検索を実行する際に利用するアルゴリズムである復号（Ｄｅｃ）アルゴリズムの手順を示す。従って図５の動作の主語はサーバ２００である。サーバ２００による秘匿検索では、サーバ２００は、受信者から送信された一つのトラップドアを基に、複数の送信者から送信された複数の暗号化タグのそれぞれに対して秘匿検索を実行する。この秘匿検索の際に、後述のように、公開パラメータＰＫのうち、真の公開パラメータＰＰが必要となる。言い換えれば、図２のように公開パラメータＰＫは、真の公開パラメータＰＰと、保護鍵ＰＫ’とを含むが、サーバ２００の秘匿検索には、保護鍵ＰＫ’は、無くてもよい。
図５は、復号（Ｄｅｃ）アルゴリズムの手順を示したフローチャートである。
（１）図５において、サーバ２００は、まずステップＳ５０１にて、 
【００３５】
【数５】
0005836506.tif 000006
を計算する。
（２）次に、ステップＳ５０２にて、サーバ２００はＴ＝１かどうかを判断する。Ｔ＝１であれば、ステップＳ５０３にて１を返して終了する。Ｔ＝１でなければ、ステップＳ５０４にて０を返して終了する。
【００３６】
（ＰＰ，ＰＫ’との区別の基準）
この復号（Ｄｅｃ）アルゴリズムの手順において、ステップＳ５０１を実行する際に公開パラメータＰＫが必要となる。
ただし、必要となるのは、
公開パラメータＰＫ＝（ＰＰ，ＰＫ’）
のうちの真の公開パラメータＰＰの部分のみであって、保護鍵ＰＫ’の部分は必要ない。これが図２に示す、真の公開パラメータＰＰと保護鍵ＰＫ’との区別の基準である。つまり、保護鍵ＰＫ’は、公開パラメータＰＫの成分のうち、暗号化アルゴリズム（送信者の暗号化タグの生成、及び受信者のトラップドアの生成）には必要であるが、復号アルゴリズム（サーバの秘匿検索）には必要のない成分をいう。また、真の公開パラメータＰＰは、公開パラメータＰＫの成分のうち、暗号化アルゴリズムと復号アルゴリズムの両方に必要な成分をいう。
【００３７】
以上、非特許文献２に記載のＰＥＫＳのアルゴリズムのうち、本実施の形態１に関係する部分について説明した。
【００３８】
次に、図６を用いて、本実施の形態１における公開パラメータＰＫの各エンティティへの配布方法（鍵配布方法）を説明する。図６は、本実施の形態１における受信者３００から送信者１００およびサーバ２００への公開パラメータＰＫの配布手順を示したフローチャートである。
【００３９】
（受信者３００）
（１）まず受信者３００は、ステップＳ６０１において、セットアップ・アルゴリズムにより
公開パラメータＰＫ＝（ＰＰ，ＰＫ’）
を生成する。公開パラメータＰＫの具体的な生成方法は、非特許文献２に記載のセットアップ・アルゴリズムに準じる。また、真の公開パラメータＰＰと保護鍵ＰＫ’との区別は、前述のとおりである。（２）次に受信者３００は、ステップＳ６０２において、公開パラメータＰＫを送信者１００−１〜１００−ｎへ配布する。この際、保護鍵ＰＫ’がサーバ２００に漏洩しないような方法で配布することが望ましい。このような配布方法には、例えば以下の（ａ），（ｂ）がある。
なお図９〜図１１で後述する鍵生成装置３１０−１等の場合、公開パラメータＰＫは、真の公開パラメータＰＰと保護鍵ＰＫ’とが分離された状態で配布されても構わない。
（ａ）送信者に保護鍵ＰＫ’をオフラインで直接供給する方法である。例えばＩＣカードなどの格納媒体に格納して全送信者１００に直接手交する方法である。
（ｂ）あるいは、送信者１００だけが閲覧できるネットワーク上の電子掲示板に保護鍵ＰＫ’を掲示する方法などがある。送信者１００は電子掲示板を介して保護鍵ＰＫ’を取得する。
（３）最後に受信者３００は、ステップＳ６０３において、公開パラメータＰＫのうち、真の公開パラメータＰＰを、サーバ２００へ配布する。サーバ２００への配布の際は、特に漏洩の防止を図る必要はない。
【００４０】
（送信者１００）
各送信者１００−１〜１００−ｎは、ステップＳ６１１において受信者３００から公開パラメータＰＫを受け取る。受け取った公開パラメータＰＫは、ＩＣカードなどのデータ格納機器に格納される。
【００４１】
（サーバ２００）
サーバ２００は、ステップＳ６２１において受信者３００から真の公開パラメータＰＰを受け取る。受け取った真の公開パラメータＰＰは、データ格納機器に格納される。
【００４２】
図７は、図６で述べた公開パラメータＰＫ等の配布方法に関連し、送信者１００による暗号化タグの生成、受信者３００によるトラップドアの生成、及びサーバ２００による秘匿検索において使用される公開パラメータＰＫ等の鍵情報をまとめた図である。図８は、図７を表形式にした図である。図７、図８等に示すように、送信者１００は、暗号化タグの生成に、公開パラメータＰＫ＝（ＰＰ，ＰＫ’）を使用する。受信者３００は、トラップドアの生成に、公開パラメータＰＫ＝（ＰＰ，ＰＫ’）と、マスタ秘密鍵ＳＫを使用する。サーバ２００は、秘匿検索に公開パラメータＰＫ＝（ＰＰ，ＰＫ’）のうち、真の公開パラメータＰＰのみを使用する。
【００４３】
図９は、受信装置３００が備える鍵生成装置３１０−１のブロック図である。図９に示すように、受信装置３００は鍵生成装置３１０−１を備える。そして鍵生成装置３１０−１は、真の公開パラメータＰＰを生成する真の公開パラメータ生成部３１１（第１生成部）と、保護鍵ＰＫ’を生成する保護鍵生成部３１２（第２生成部）とを備えている。
【００４４】
以上に述べたように、公開パラメータＰＫとは、
暗号化データと暗号化データを検索するための暗号化されたキーワードである暗号化タグとを生成して送信する送信装置１００と、
送信装置１００から暗号化データと暗号化タグとを受信して保管すると共に秘匿検索の要求に応じて、秘匿検索を実行するサーバ２００と、
前記キーワードのデジタル署名に相当するデータであると共にサーバ２００に暗号化データの秘匿検索を要求するデータであるトラップドアを生成してサーバ２００に送信し、秘匿検索の結果をサーバ２００から受信する受信装置３００と
を備えた秘匿検索システム１０００（図７）で使用される鍵情報である。
そして、公開パラメータＰＫは、図２に示すように、真の公開パラメータＰＰと保護鍵ＰＫ’とを含む鍵情報である。また図７、図８に示すように、真の公開パラメータＰＰは、送信装置１００による暗号化タグの生成、受信装置３００によるトラップドアの生成、及びサーバ２００による秘匿検索に使用される。また保護鍵ＰＫ’は、送信装置１００による暗号化タグの生成及び受信装置３００によるトラップドアの生成に使用されるが、サーバ２００の秘匿検索には使用されない。そこで鍵生成装置３１０−１では、それぞれ、真の公開パラメータ生成部３１１と保護鍵生成部３１２とで、真の公開パラメータＰＰ、保護鍵ＰＫ’を分離して生成する。分離して生成された真の公開パラメータＰＰのみが、図６のように、受信装置３００からサーバ２００に配布される。これにより、トラップドアの安全性が高まる。
【００４５】
図１０は、受信装置３００が、鍵生成装置３１０−２を備える場合を示す図である。鍵生成装置３１０−１に対して、鍵生成装置３１０−２は、さらに、公開パラメータＰＫを入力する入力部３１３を有する。入力部３１３は、既に生成されている公開パラメータＰＫを入力する。真の公開パラメータ生成部３１１は、入力部３１３が入力した公開パラメータＰＫから真の公開パラメータＰＰを抽出することによって、真の公開パラメータＰＰを生成する。保護鍵生成部３１２は、入力部３１３が入力した公開パラメータＰＫから保護鍵ＰＫ’を抽出することによって、保護鍵ＰＫ’を生成する。鍵生成装置３１０−２によれば、既に生成された公開パラメータＰＫから、真の公開パラメータＰＰと保護鍵ＰＫ’を分離することができる。これにより、トラップドアの安全性が高まる。
【００４６】
図１１は、受信装置３００が、鍵生成装置３１０−３を備える場合を示す図である。鍵生成装置３１０−２に対して、鍵生成装置３１０−３は公開パラメータＰＫを生成する公開パラメータ生成部３１４（第３生成部）を有する。入力部３１３は公開パラメータ生成部３１４が生成した公開パラメータＰＫを入力する。真の公開パラメータ生成部３１１は入力部３１３が入力した公開パラメータＰＫから真の公開パラメータＰＰを抽出することによって真の公開パラメータＰＰを生成し、保護鍵生成部３１２は入力部３１３が入力した公開パラメータＰＫから保護鍵ＰＫ’を抽出することによって保護鍵ＰＫ’を生成する。鍵生成装置３１０−３によれば、公開パラメータ生成部３１４が生成した公開パラメータＰＫを送信者１００に配布し、真の公開パラメータ生成部３１１が生成した真の公開パラメータＰＰをサーバ２００に配布できる。よってトラップドアの安全性が高まる。
【００４７】
図６では本実施の形態１における公開パラメータＰＫの各エンティティへの配布方法を説明した。このような配布方法をとることにより、送信者１００には公開パラメータＰＫが配布され、サーバ２００には公開パラメータＰＫのうちの真の公開パラメータＰＰのみが配布される。また図９〜図１１では、公開パラメータＰＫのうち、真の公開パラメータＰＰと保護鍵ＰＫ’とを分離して生成する鍵生成装置３１０−１〜３１０−３を説明した。鍵生成装置３１０−１〜３１０−３は真の公開パラメータＰＰを保護鍵ＰＫ’と分離して生成する。よって、図６において真の公開パラメータＰＰのみをサーバ２００に配布することが可能になる。
【００４８】
以上に述べたような公開パラメータＰＫの各エンティティへの配布方法（及び鍵生成装置）を利用すれば、トラップドアを受け取るサーバ２００に対して、トラップドアの安全性が向上する効果がある。以下では、図６の配布方法よって上記効果が生じる理由を簡単に述べる。厳密な安全性証明を付けることも可能であるが、本明細書では割愛し、直感的な説明に留めるものとする。
【００４９】
非特許文献２のような従来のＰＥＫＳでは、すべてのエンティティが公開パラメータＰＫを取得できることが仮定されていた。したがって、送信者１００だけでなくサーバ２００も、本実施の形態１の保護鍵ＰＫ’（図２）を取得することができた。このことは、サーバ２００が暗号化アルゴリズムを用いて適当なキーワードを自由に暗号化できることを意味する。つまり、サーバ２００は送信者１００とまったく同じ権限を持っていることになる。
【００５０】
この場合、サーバ２００は以下に述べるような手段を用いて、受け取ったトラップドアから、その内部に含まれているキーワードに関する情報を引き出すことができてしまう。ここでは簡単のため、完全一致検索の場合で説明する。
（１）受信者３００からトラップドアを受け取ったサーバ２００は、まずトラップドアの内部に含まれているであろうキーワードを推定する。
（２）そして、サーバ２００は保護鍵ＰＫ’をも用いて、そのキーワードに対する暗号化タグを作成する。
（３）そしてサーバ２００はトラップドアと暗号化タグとを復号アルゴリズムにかけ、出力を見る。もし出力が１であれば、推定したキーワードがトラップドアの内部に含まれているキーワードと一致していることがわかる。もし出力が０であれば、推定したキーワードがトラップドアの内部に含まれているキーワードと一致していないことがわかるので、サーバ２００は次のキーワードを推定し、同じことを繰り返す。
（４）以上の処理をサーバ２００の能力の許す限り続けることで、キーワードの候補が次々に絞られていく。また、使われるキーワードの種類がある程度限られていることが事前にわかっている場合には、遅かれ早かれ、上記の方法でキーワードの情報が完全にわかってしまう。このようにして、トラップドアからその内部に含まれているキーワードに関する情報が引き出されてしまう。
【００５１】
一方、本実施の形態１の図６に示した公開パラメータＰＫの配布方法をとれば、上述のような攻撃を防ぐことができる。なぜならば、サーバ２００がキーワードを推定したとしても、それを確かめるのに必要となる保護鍵ＰＫ’をサーバ２００が持っていないからである。なお、図３から図５までの各アルゴリズムの記述を見れば、暗号化以外の手段を使ったとしても、やはり推定したキーワードを確かめる手段がないことは、当業者であれば理解できる。
【００５２】
以上、トラップドアの安全性を向上させるという効果が生じる理由を簡単に述べた。なお、本実施の形態１に示した公開パラメータＰＫの配布方法をとることにより、受信者３００とサーバ２００との間の通信量を低減できるという別の効果も生じる。
【００５３】
実施の形態２．
実施の形態１では、非特許文献２に記載のＰＥＫＳにおいて、トラップドアの安全性を確保する方法を開示した。本実施の形態２では、非特許文献３に記載の関数型暗号を、ＰＥＫＳとして利用する場合において、トラップドアの安全性を確保する方法を開示する。システム構成は、図１である。
【００５４】
まず、非特許文献３に記載の関数型暗号のアルゴリズムのうち、本実施の形態２に関係する部分について説明する。これ以降、「非特許文献３に記載の関数型暗号のアルゴリズム」といえば、非特許文献３の４節「Ｐｒｏｐｏｓｅｄ  （Ｂａｓｉｃ）  ＩＰＥ  Ｓｃｈｅｍｅ」に記載のアルゴリズムを指すものとする。なお、関数型暗号をＰＥＫＳとして利用するため、アルゴリズムの一部を変更した上で、変更後のアルゴリズムを記載する。具体的には、暗号化（Ｅｎｃ）アルゴリズムと復号（Ｄｅｃ）アルゴリズムに一部変更を加えて、簡略化したアルゴリズムとする。したがって、セットアップ（Ｓｅｔｕｐ）アルゴリズムと鍵生成（ＫｅｙＧｅｎ）アルゴリズムは非特許文献３に記載のとおりである。参考のため、図１２に、非特許文献２と非特許文献３とに関して、関数型暗号として利用する場合のアルゴリズムと、ＰＥＫＳとして利用する場合のアルゴリズムとの一覧を示す。
【００５５】
ここで、本実施の形態２の説明に必要となる概念、記号および記法を説明する。なお、簡単のため、非特許文献３と同様に対称ペアリング群の場合のみを考える。また、群演算は乗法的に記述する。
【００５６】
（１）ｑを素数とする。
（２）位数ｑの有限体をＦｑとする。
（３）位数ｑの対称ペアリング群をＧとする。
（４）Ｇの生成元をｇとする。
（５）Ｇ上のペアリング演算を、ｅ：Ｇ×Ｇ→ＧＴとする。
ここでＧＴはペアリング演算後の位数ｑの巡回群である。
（６）対称ペアリング群の直積（ｄｉｒｅｃｔ  ｐｒｏｄｕｃｔ  ｏｆ  ｓｙｍｍｅｔｒｉｃ  ｐａｉｒｉｎｇ  ｇｒｏｕｐｓ）で構成される双対ペアリングベクトル空間（ＤＰＶＳ：Ｄｕａｌ  Ｐａｉｒｉｎｇ  Ｖｅｃｔｏｒ  Ｓｐａｃｅ）を、
Ｖ＝Ｇ×…×Ｇ
とする。
（７）ＶがＮ次元のＤＰＶＳのとき、
Ｖの標準基底を
Ａ＝（ａ０，・・・，ａＮ−１）
と表す。
ここでａｉ（ｉ＝０，．．．，Ｎ−１）は
【００５７】
【数６】
0005836506.tif 000007
で構成されるＮ次元のベクトルである。
（８）Ｆｑ上の乱数からなるＮ次正則行列を、Ｘ＝（Ｘｉ，ｊ）とする。
（９）ＡにＸを掛けて得られるランダム基底ＸＡを、
Ｂ＝（ｂ０，・・・，ｂＮ−１）と表す。
すなわち、 
【００５８】
【数７】
0005836506.tif 000008
である。
ｂｉ（ｉ＝０，・・・，Ｎ−１）
は、それぞれＮ次元のベクトルである。
（１０）Ｘの転置逆行列（ＸＴ）−１に乱数ψを掛けて得られる行列を、
θ＝（θｉ，ｊ）＝ψ（ＸＴ）−１とする。
（１１）Ａにθを掛けて得られる基底を、
Ｂ＊＝（ｂ＊０，・・・，ｂ＊Ｎ−１）
と表す。
すなわち、 
【００５９】
【数８】
0005836506.tif 000009
である。ｂ＊ｉ（ｉ＝０，．．．，Ｎ−１）はそれぞれＮ次元のベクトルである。Ｂ＊をＢの双対基底と呼ぶ。
（１２）ランダム基底Ｂについて、Ｆｑ上の
ベクトルｘ→＝（ｘ０，・・・，ｘＮ−１）∈ＦｑＮ
を係数とする線型結合を
（ｘ０，・・・，ｘＮ−１）Ｂ
と表す。
すなわち、 
【００６０】
【数９】
0005836506.tif 000010
である。
（１３）同様に、Ｂの双対基底Ｂ＊について、Ｆｑ上の
ベクトルｖ→＝（ｖ０，・・・，ｖＮ−１）∈ＦｑＮ
を係数とする線型結合を
（ｖ０，・・・，ｖＮ−１）Ｂ＊と表す。
すなわち、
【００６１】
【数１０】
0005836506.tif 000011
である。
（１４）Ｖ上の２つの
ベクトルｇ＝（ｇ０，・・・，ｇＮ−１）と
ｈ＝（ｈ０，・・・，ｈＮ−１）
のペアリング演算をｅ（ｇ，ｈ）と表す。
すなわち、 
【００６２】
【数１１】
0005836506.tif 000012
である。
【００６３】
（ＰＫ、ＳＫの構成）
続いて、図１３を用いて、非特許文献３に記載の関数型暗号のアルゴリズムのうち、セットアップ・アルゴリズムを実行して作成される公開パラメータＰＫとマスタ秘密鍵ＳＫとの構成を説明する。
図１３は、本実施の形態２における公開パラメータＰＫと、マスタ秘密鍵ＳＫとの構成を示す。実施の形態１と同様に、受信者３００が公開パラメータＰＫ、マスタ秘密鍵ＳＫを生成するのは上記のとおりである。
【００６４】
図１３において、公開パラメータＰＫは、実施の形態１と同様に、真の公開パラメータＰＰと保護鍵ＰＫ’とから構成される。真の公開パラメータＰＰは、
ＰＰ＝（ｑ，Ｖ，ＧＴ，Ａ，ｅ，ｇＴ）
である。
ここで、
（１）ｑは素数、
（２）Ｖは４ｎ＋２次元（ｎは、暗号化タグの生成とトラップドアの生成の際に用いる述語ベクトルの次元数）の双対ペアリングベクトル空間、
（３）ＧＴはペアリング演算後の位数ｑの巡回群、
（４）ＡはＶの標準基底、
（５）ｅはペアリング演算、
（６）ｇＴはＧＴの生成元、
を表す。
また、
保護鍵ＰＫ’は
Ｂ＾＝（ｂ０，・・・，ｂｎ，ｂ４ｎ＋１）
で構成される。
なお、Ｂ＾の「＾」は、上記の基底Ｂの一部を用いて作ったことを示す。
また、マスタ秘密鍵ＳＫは、
Ｂ＊＾＝（ｂ＊０，・・・，ｂ＊ｎ，ｂ＊３ｎ＋１，・・・，ｂ＊４ｎ）
で構成される。
なお、Ｂ＊＾の「＾」は、上記の基底Ｂ＊の一部を用いて作ったことを示す。
なお、これらは、非特許文献３に記載のアルゴリズムＧｏｂ（λ，４ｎ＋２）により生成される。
【００６５】
（暗号化タグの生成アルゴリズム）
次に、図１４を用いて、非特許文献３に記載の関数型暗号のアルゴリズムのうち、送信者１００が暗号化タグを生成する際に利用するアルゴリズムである暗号化（Ｅｎｃ）アルゴリズムの手順を示す。従って図１４の動作の主語は送信者（送信装置）である。暗号化タグを生成する際には、送信者１００は、受信者３００から配布された図１３の公開パラメータＰＫ（ＰＰとＰＫ’の両方）を使用して、暗号化タグを生成する。なお、関数型暗号をＰＥＫＳとして利用するため、アルゴリズムの一部を変更した上で、変更後のアルゴリズムを記載する。
図１４は、暗号化（Ｅｎｃ）アルゴリズムの手順を示したフローチャートである。
図１４において、送信者１００は
属性ベクトルｘ→＝（ｘ１，ｘ２，・・・，ｘｎ）∈Ｆｑｎ
を暗号化して暗号化タグを生成したいとする。
ここで
属性ベクトルｘ→∈Ｆｑｎ
は暗号化するキーワードに対応したデータであり、完全一致検索やＡＮＤ検索、ＯＲ検索など検索する内容によって異なる形式を取るデータである。
例えば１キーワードの完全一致検索の場合には、
ｘ→＝（１，キーワード）
である。
（１）このとき、送信者１００は、まずステップＳ９０１にて、Ｆｑからω，φをランダムに選ぶ。
（２）次に、ステップＳ９０２にて、送信者１００は、
【００６６】
【数１２】
0005836506.tif 000013
を暗号化タグとして出力する。
【００６７】
この暗号化（Ｅｎｃ）アルゴリズムの手順において、ステップＳ９０１やステップＳ９０２を実行する際に図１３の公開パラメータＰＫが必要となる。特に、ステップＳ９０２を実行する際に公開パラメータＰＫのうちの保護鍵ＰＫ’が必要となる。
【００６８】
（トラップドアの生成）
次に、図１５を用いて、非特許文献３に記載の関数型暗号のアルゴリズムのうち、受信者３００がトラップドアを生成する際に利用するアルゴリズムである鍵生成（ＫｅｙＧｅｎ）アルゴリズムの手順を示す。従って図１５の動作の主語は受信者（受信装置）である。受信者３００は、図１３に示した公開パラメータＰＫ（ＰＰ、ＰＫ’の両方）と、マスタ秘密鍵ＳＫとを用いて、トラップドアを生成する。
図１５は、鍵生成（ＫｅｙＧｅｎ）アルゴリズムの手順を示したフローチャートである。
図１５において、受信者３００は、
述語ベクトルｖ→＝（ｖ１，ｖ２，・・・，ｖｎ）∈Ｆｑｎ
にデジタル署名してトラップドアを生成したいとする。
ここで、
述語ベクトルｖ→∈Ｆｑｎ
は検索するキーワードに対応したデータであり、完全一致検索やＡＮＤ検索、ＯＲ検索など検索する内容によって異なる形式を取るデータである。
例えば１キーワードの完全一致検索の場合には、
ｖ→＝（キーワード，Ｎ−１）
である。
（１）このとき、受信者３００は、まずステップＳ１００１にて、Ｆｑからσをランダムに選ぶ。
（２）次に、受信者３００は、ステップＳ１００２にて、Ｆｑｎからη→をランダムに選ぶ。
（３）最後に受信者３００は、ステップＳ１００３にて、 
【００６９】
【数１３】
0005836506.tif 000014
をトラップドアとして出力する。
【００７０】
（サーバ２００による秘匿検索）
次に、図１６を用いて、サーバ２００が秘匿検索を実行する際に利用するアルゴリズムである復号（Ｄｅｃ）アルゴリズムの手順を示す。従って図１６の動作の主語はサーバ２００である。サーバ２００による秘匿検索では、サーバ２００は、実施の形態１と同様に、受信者から送信された一つのトラップドアを基に、送信者から送信された複数の暗号化タグのそれぞれに対して秘匿検索を実行する。この秘匿検索の際に、公開パラメータＰＫ（図１３）のうち、真の公開パラメータＰＰが必要となる。サーバ２００の秘匿検索に保護鍵ＰＫ’が無くてもよいのは実施の形態１と同様である。なお、関数型暗号をＰＥＫＳとして利用するため、アルゴリズムの一部を変更した上で、変更後のアルゴリズムを記載する。
図１６は、復号（Ｄｅｃ）アルゴリズムの手順を示したフローチャートである。
【００７１】
（１）図１６において、サーバ２００は、まずステップＳ１１０１にて、
Ｔ＝ｅ（Ｃ，ｋ＊）を計算する。
（２）次に、サーバ２００は、ステップＳ１１０２にて、Ｔ＝ｇＴかどうかを判断する。Ｔ＝ｇＴであれば、ステップＳ１１０３にて１を返して終了する。Ｔ＝ｇＴでなければ、ステップＳ１１０４にて０を返して終了する。
【００７２】
この復号（Ｄｅｃ）アルゴリズムの手順において、ステップＳ１１０１とＳ１１０２を実行する際に図１３の公開パラメータＰＫが必要となる。ただし、必要となるのは公開パラメータＰＫのうちの真の公開パラメータＰＰの部分のみであって、保護鍵ＰＫ’の部分は必要ない。以上、非特許文献３に記載の関数型暗号のアルゴリズムのうち、本実施の形態２に関係する部分について説明した。
【００７３】
（公開パラメータＰＫの各エンティティへの配布方法）
次に、実施の形態２における公開パラメータＰＫの各エンティティへの配布方法を説明する。実施の形態２における公開パラメータＰＫの各エンティティへの配布方法は、実施の形態１の図６と同様である。すなわち、図６において、ステップＳ６０１からステップＳ６０３、およびステップＳ６１１とステップＳ６２１により、公開パラメータＰＫを各送信者１００に配布し、真の公開パラメータＰＰをサーバ２００に配布する。実施の形態１との違いは、公開パラメータＰＫの具体的な中身の違いであり、それはすでに述べたようなアルゴリズムの違いに起因したものである。
【００７４】
また、実施の形態２の図９〜図１１で説明した鍵生成装置３１０−１〜３１０−３は、実施の形態２にも適用できることは当然である。その場合の公開パラメータＰＫは、図１３の公開パラメータＰＫである。
【００７５】
以上の実施の形態２で述べたような公開パラメータＰＫの各エンティティへの配布方法をとれば、非特許文献３に記載の関数型暗号をＰＥＫＳとして用いた場合において、トラップドアを受け取るサーバ２００に対して、トラップドアの安全性を向上させるという効果がある。
また、本実施の形態２に示した公開パラメータＰＫの配布方法をとることにより、受信者３００とサーバ２００との間の通信量を低減できるという効果がある。
【００７６】
以上、実施の形態１および実施の形態２にわたって、それぞれの内容を説明した。まとめると、以上の実施の形態における発明は、ＰＥＫＳにおいて、トラップドアの安全性を確保するための一般的な方法を提供するものである。すなわち以上の実施の形態における発明は、実施の形態１で取り上げた非特許文献２のようなＰＥＫＳのアルゴリズムや、実施の形態２で取り上げた非特許文献３のような関数型暗号のアルゴリズムをＰＥＫＳとして用いた場合において、トラップドアの安全性を確保するための一般的な方法を提供する。
【００７７】
なお、以上の実施の形態１、実施の形態２における発明は、非特許文献２や非特許文献３に限らず、一般にＰＥＫＳや関数型暗号と呼ばれるような様々なアルゴリズムに適用できることは、当業者であれば容易に理解できる。そして、関数型暗号をＰＥＫＳとして用いた場合にはトラップドアの安全性が確保されるという効果であったが、関数型暗号そのものとして用いた場合には、ユーザの復号鍵の権限に関する情報を保護することができるという効果があることも、当業者であれば容易に理解できることである。
【００７８】
実施の形態３．
図１７、図１８を参照して実施の形態３を説明する。実施の形態３は、コンピュータである送信装置１００、受信装置３００、サーバ２００のハードウェア構成を説明する。送信装置１００、受信装置３００、サーバ２００はいずれも同様のコンピュータであるので、以下の説明では、受信装置３００を想定して説明する。受信装置３００の説明は送信装置１００、サーバ２００にも当てはまる。
【００７９】
図１７は、コンピュータである受信装置３００の外観の一例を示す図である。図１８は、受信装置３００のハードウェア資源の一例を示す図である。
【００８０】
外観を示す図１７において、受信装置３００は、システムユニット８３０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置８１３、キーボード８１４（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス８１５、コンパクトディスク装置８１８（ＣＤＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット８３０はネットワークに接続している。
【００８１】
またハードウェア資源を示す図１８において、受信装置３００は、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＣＤＤ８１８、磁気ディスク装置８２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【００８２】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＣＤＤ８１８、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、「記憶装置」あるいは記憶部、格納部、バッファの一例である。通信ボード８１６、キーボード８１４などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３などは、出力部、出力装置の一例である。通信ボード８１６は、ネットワークに接続されている。
【００８３】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００８４】
上記プログラム群８２３には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【００８５】
ファイル群８２４には、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」等の情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００８６】
また、以上に述べた実施の形態の説明において、データや信号値は、ＲＡＭ８１２のメモリ、ＣＤＤ８１８のコンパクトディスク、磁気ディスク装置８２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００８７】
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ソフトウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
【００８８】
以上の実施の形態では、受信装置３００等を説明したが、受信装置３００（鍵生成装置）は、鍵生成プログラムとしても把握できることは以上の説明から当然である。
【００８９】
以上の実施の形態では以下の鍵生成装置を説明した。関数型暗号またはＰＥＫＳの公開パラメータを、真の公開パラメータと保護鍵とに分離して生成する鍵生成装置。
【００９０】
以上の実施の形態では以下の鍵生成装置を説明した。関数型暗号またはＰＥＫＳの既存の公開パラメータを、真の公開パラメータと保護鍵とに分離する鍵生成装置。
【００９１】
以上の実施の形態では以下の公開パラメータ配布方法を説明した。送信者１００には真の公開パラメータと保護鍵とを配布するが、サーバ装置には真の公開パラメータしか配布しない公開パラメータ配布方法。
【符号の説明】
【００９２】
１０００  秘匿検索システム、１００，１０１−１，１００−ｎ  送信装置、２００  サーバ、３００  受信装置、３１０−１，３１０−２，３１０−３  鍵生成装置、３１１  真の公開パラメータ生成部、３１２  保護鍵生成部、３１３  入力部、３１４  公開パラメータ生成部、４００  ネットワーク。
【図１】
0005836506.tif 000015
【図２】
0005836506.tif 000016
【図３】
0005836506.tif 000017
【図４】
0005836506.tif 000018
【図５】
0005836506.tif 000019
【図６】
0005836506.tif 000020
【図７】
0005836506.tif 000021
【図８】
0005836506.tif 000022
【図９】
0005836506.tif 000023
【図１０】
0005836506.tif 000024
【図１１】
0005836506.tif 000025
【図１２】
0005836506.tif 000026
【図１３】
0005836506.tif 000027
【図１４】
0005836506.tif 000028
【図１５】
0005836506.tif 000029
【図１６】
0005836506.tif 000030
【図１７】
0005836506.tif 000031
【図１８】
0005836506.tif 000032