(57)【要約】【課題】属性ベース暗号方式および属性ベース検索可能暗号方式の一部をユーザ端末の外部に委託する属性ベース秘匿検索システムを提供する。【解決手段】属性ベース秘匿検索システムＳＡは、２つの暗号方式の公開鍵および属性付き秘密鍵を生成する鍵生成装置１と、２つの暗号方式の暗号化処理の一部を行うユーザ端末となる中間暗号化装置２と、暗号化処理の残りの処理を行い暗号化データを生成する委託暗号化装置４と、キーワードから生成される検索トークンにより暗号化データを検索するデータ検索装置６と、検索トークンに対応する暗号化データを取得し、２つの暗号方式により、キーワードに対応する暗号化データを復号する復号装置７と、を備える。【選択図】図１
2018148493.tif 000002
【特許請求の範囲】
【請求項１】
属性ベース暗号方式および属性ベース検索可能暗号方式の鍵情報を生成する鍵生成装置であって、
前記属性ベース暗号方式の第１公開鍵および第１マスタ鍵を生成する第１公開鍵・マスタ鍵生成手段と、
前記第１公開鍵および前記第１マスタ鍵を用いて前記属性ベース暗号方式の第１秘密鍵を生成する第１秘密鍵生成手段と、
前記属性ベース検索可能暗号方式の第２公開鍵および第２マスタ鍵を生成する第２公開鍵・マスタ鍵生成手段と、
前記第２公開鍵および前記第２マスタ鍵を用いて前記属性ベース検索可能暗号方式の第２秘密鍵を生成する第２秘密鍵生成手段と、
検索結果の正当性を検証するためのブルームフィルタに使用する予め定めた複数のハッシュ関数を公開鍵の一部として選択するハッシュ関数選択手段と、
前記データを復号する受信者の属性を前記第１秘密鍵および前記第２秘密鍵に付加する属性付き秘密鍵生成手段と、
前記受信者を識別する識別子から、前記データを検索する検索トークンを生成するためのトークン生成鍵を、前記属性ベース検索可能暗号方式により生成するトークン生成鍵生成手段と、
を備えることを特徴とする鍵生成装置。
【請求項２】
請求項１に記載の鍵生成装置で生成された公開鍵を用いて、属性ベース暗号方式によるデータの暗号化処理の一部と、属性ベース検索可能暗号方式の前記データに対応するインデックスの暗号化処理の一部を行う中間暗号化装置であって、
暗号化の対象となる前記データを復号条件となるポリシーと対応付けて、前記属性ベース暗号方式における予め定めた中間暗号化を行うことで中間暗号化データを生成する中間暗号化データ生成手段と、
前記データに対応するキーワードを含むインデックスを前記ポリシーと対応付けて、前記属性ベース検索可能暗号方式における予め定めた中間暗号化を行うことで、中間暗号化インデックスを生成する中間暗号化インデックス生成手段と、
電子署名の署名用公開鍵と署名用秘密鍵とを生成する署名用鍵生成手段と、
前記公開鍵の一部であるハッシュ関数により、前記インデックスからブルームフィルタを生成し、乱数により暗号化して暗号化ブルームフィルタを生成し、前記署名用秘密鍵により署名を付加した署名付き暗号化ブルームフィルタを生成する署名付き暗号化ブルームフィルタ生成手段と、
前記乱数を前記ポリシーと対応付けて、前記属性ベース暗号方式における予め定めた中間暗号化を行うことで中間暗号化乱数を生成する中間暗号化乱数生成手段と、
前記ポリシー、前記中間暗号化データ、前記中間暗号化インデックス、前記中間暗号化乱数および前記署名付き暗号化ブルームフィルタを合成した合成中間暗号化データを生成するデータ合成手段と、
を備えることを特徴とする中間暗号化装置。
【請求項３】
請求項１に記載の鍵生成装置で生成された公開鍵を用いて、請求項２に記載の中間暗号化装置によって属性ベース暗号方式および属性ベース検索可能暗号方式の一部が処理された残りの暗号化処理を行う委託暗号化装置であって、
前記中間暗号化装置で生成された合成中間暗号化データを、ポリシー、中間暗号化データ、中間暗号化インデックス、中間暗号化乱数および署名付き暗号化ブルームフィルタに分離するデータ分離手段と、
前記公開鍵と前記ポリシーとにより、前記中間暗号化データに前記属性ベース暗号方式における暗号化を行うことで暗号化データを生成するデータ暗号化手段と、
前記公開鍵と前記ポリシーとにより、前記中間暗号化インデックスに前記属性ベース検索可能暗号方式における暗号化を行うことで暗号化インデックスを生成するインデックス暗号化手段と、
前記公開鍵と前記ポリシーとにより、前記中間暗号化乱数に前記属性ベース暗号方式における暗号化を行うことで暗号化乱数を生成する乱数暗号化手段と、
前記ポリシー、前記暗号化データ、前記暗号化インデックス、前記暗号化乱数および前記署名付き暗号化ブルームフィルタを合成した合成暗号化データを生成するデータ合成手段と、
を備えることを特徴とする委託暗号化装置。
【請求項４】
請求項１に記載の鍵生成装置で生成された公開鍵および属性付き秘密鍵を用いて、請求項２に記載の中間暗号化装置および請求項３に記載の委託暗号化装置で暗号化された合成暗号化データを検索するデータ検索装置であって、
前記合成暗号化データを要求する復号装置から送信された、前記トークン生成鍵を用いて生成された検索トークンを含んだデータ要求を受信するデータ要求受信手段と、
前記検索トークンに対応する前記合成暗号化データを検索する検索手段と、
この検索手段で検索された合成暗号化データを前記復号装置に送信するデータ送信手段と、
を備えることを特徴とするデータ検索装置。
【請求項５】
請求項１に記載の鍵生成装置で生成された公開鍵および属性付き秘密鍵を用いて、請求項２に記載の中間暗号化装置および請求項３に記載の委託暗号化装置で暗号化され、データ記憶装置に記憶された合成暗号化データを、請求項４に記載のデータ検索装置を介して検索し復号する復号装置であって、
キーワードを入力するキーワード入力手段と、
このキーワード入力手段で入力されたキーワードと、前記鍵生成装置で生成されたトークン生成鍵と、前記公開鍵とから、属性ベース検索可能暗号方式により検索トークンを生成する検索トークン生成手段と、
前記検索トークンを含んだデータ要求を前記データ検索装置に送信するデータ要求送信手段と、
前記合成暗号化データを受信するデータ受信手段と、
前記合成暗号化データが、前記検索トークンに対応するデータか否かを、前記属性ベース検索可能暗号方式の検索手法により検証する検索結果検証手段と、
前記検索結果検証手段で正しく検証された合成暗号化データに含まれる署名付き暗号化ブルームフィルタに対して、前記中間暗号化装置で生成された署名用公開鍵により、署名検証を行う署名検証手段と、
前記署名検証手段で正しく署名検証された暗号化ブルームフィルタに対して、属性がポリシーを満たすか否かを判定するポリシー判定手段と、
前記ポリシーを満たした暗号化ブルームフィルタに対して、前記合成暗号化データに含まれる暗号化乱数を復号した乱数でブルームフィルタを復号し、前記キーワードがインデックスに含まれているか否かを検証するブルームフィルタ検証手段と、
前記キーワードに対応する暗号化データを、属性ベース暗号方式により復号するデータ復号手段と、
を備えることを特徴とする復号装置。
【請求項６】
コンピュータを、請求項１に記載の鍵生成装置として機能させるための鍵生成プログラム。
【請求項７】
コンピュータを、請求項２に記載の中間暗号化装置として機能させるための中間暗号化プログラム。
【請求項８】
コンピュータを、請求項３に記載の委託暗号化装置として機能させるための委託暗号化プログラム。
【請求項９】
コンピュータを、請求項４に記載のデータ検索装置として機能させるためのデータ検索プログラム。
【請求項１０】
コンピュータを、請求項５に記載の復号装置として機能させるための復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、属性情報を利用して、データの暗号化および復号を行うための鍵生成装置、中間暗号化装置、委託暗号化装置、データ検索装置、復号装置およびそれらのプログラムに関する。
【背景技術】
【０００２】
従来、秘密鍵や暗号文にユーザの属性（居住地、性別等）を関連付け、復号条件（ポリシー）を満たすユーザのみが暗号文を復号可能な暗号方式である属性ベース暗号（ＡＢＥ：Attribute-Based Encryption）に関する方式が種々提案されている。この属性ベース暗号は、１つの暗号文を復号することができるユーザを複数存在させることができるため、ファイル共有システムのアクセス制御、コンテンツ配信サービス等への応用が期待されている。
【０００３】
この属性ベース暗号には、大きく２つの方式が存在する。第１の方式は、属性に基づいてデータを暗号化し、ポリシーに基づいて発行された秘密鍵を有するユーザのみが暗号文を復号することが可能な鍵ポリシー属性ベース暗号（ＫＰ−ＡＢＥ：Key-Policy Attribute-Based Encryption）である。第２の方式は、ポリシーに基づいてデータを暗号化し、属性に基づいて発行された秘密鍵を有するユーザのみが暗号文を復号することが可能な暗号文ポリシー属性ベース暗号（ＣＰ−ＡＢＥ：Ciphertext-Policy Attribute-Based Encryption）である。
【０００４】
以下、本発明が対象とするＣＰ−ＡＢＥについて説明する。
ＣＰ−ＡＢＥは、数多くの方式が提案されている（例えば、非特許文献１等）。このＣＰ−ＡＢＥを用いると、例えば、放送通信連携サービスにおいて、視聴履歴を暗号化してクラウドサーバ上に保存するとともに、視聴者が指定したポリシーを満たす属性を有するサービスプロバイダのみが視聴履歴を復号し、個人向けサービスに活用することが可能なプライバシー保護システムを実現することができる。
【０００５】
しかし、ＣＰ−ＡＢＥは、従来の公開鍵暗号方式（ＲＳＡ暗号、ＥｌＧａｍａｌ暗号等）に比べ、暗号化処理の負荷が大きいという欠点がある。例えば、非特許文献１の方式では、暗号文サイズが属性の数のオーダで増加してしまうため、暗号化処理時間が属性の数に比例して長くなってしまう。また、放送通信連携サービスにおいて前記したプライバシー保護システムを実現する場合、テレビ受信機、スマートフォン等のユーザ端末上で暗号化処理を実行することになるが、これらのユーザ端末は、ＰＣ（Personal Computer）に比べてＣＰＵ性能が低いため、暗号化処理時間が長くなってしまう。
【０００６】
このような欠点を克服するため、近年、暗号化処理をクラウドサーバに委託することが可能なＣＰ−ＡＢＥが提案されている（例えば、非特許文献２）。この方式では、ＣＰ−ＡＢＥの暗号化処理の一部をユーザ端末上で実行し、残りの暗号化処理をクラウドサーバに委託することにより、ユーザ端末の負荷を軽減することができる。また、この方式では、悪意のあるクラウドサーバが暗号プロトコルを忠実に実行せず、データの改ざん等を行った場合、それらを検出することが可能である。
【０００７】
しかし、非特許文献２の方式を放送通信連携サービスにおける視聴履歴の暗号化に用いた場合、サービスプロバイダはクラウド上に保存されている特定ユーザの視聴履歴をすべて受信する必要があった。例えば、スポーツ番組に関連する視聴履歴のみを取得してサービスに利活用したいサービスプロバイダにとって、スポーツ番組以外の視聴履歴はデータとしての価値がないため、効率的なデータ分析ができないという課題があった。また、不必要な視聴履歴がサービスプロバイダに提供されるため、ユーザのプライバシーリスクが増大するという課題があった。
【０００８】
これらの課題を解決するため、検索結果の正当性を検証可能な属性ベース検索可能暗号（ＶＡＢＫＳ：Verifiable Attribute-Based Keyword Search）が提案されている（非特許文献３）。この方式では、属性を用いたデータのアクセス制御と、データを暗号化したままキーワード検索する機能の両方が備わっており、効率的なデータ分析とプライバシーリスクの低減が可能である。また、クラウドサーバから受信した検索結果の正当性をデータ利用者側で検証することが可能であり、クラウドサーバによる改ざん等の攻撃に耐性を有する。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】B. Waters, “Ciphertext-Policy Attribute-Based Encryption: An Expressive, Efficient, and Provably Secure Realization,” eprint 2008/290, 2008.
【非特許文献２】大竹剛、レイハネー サファヴィナイニ、リャンフェン チャン,“委託先の攻撃に対して耐性のある委託可能な属性ベース暗号,” 2016年暗号と情報セキュリティシンポジウム（SCIS2016）, 2E4-5, 2016.
【非特許文献３】Q. Zheng, S. Xu, and G. Ateniese, “VABKS: Verifiable Attribute-based Keyword Search over Outsourced Encrypted Data,” Proc. of IEEE Infocom’14, pp. 522-530, 2014.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、非特許文献３の方式は、属性ベース暗号、属性ベース検索可能暗号、電子署名、ブルームフィルタのアルゴリズムを用いて構成されており、特に属性ベース暗号と属性ベース検索可能暗号における暗号化処理負荷が大きい。また、電子署名の署名生成アルゴリズムも複数回用いられており、ユーザ端末への負荷が大きい。
このように、従来の方式は、データ所有者による暗号化インデックス生成処理の負荷が大きく、テレビ受信機、スマートフォン等、ＰＣ（パーソナルコンピュータ）に比べてＣＰＵ性能が低いユーザ端末では処理時間が長くなるという問題があった。
【００１１】
本発明は、このような問題に鑑みてなされたものであり、属性を用いたデータのアクセス制御と、データを暗号化したままキーワード検索する機能を両立させるとともに、暗号化処理の一部をクラウドに委託することによりユーザ端末の負荷を軽減することが可能な属性ベース秘匿検索システムを提供することを課題とする。
【課題を解決するための手段】
【００１２】
前記課題を解決するため、本発明に係る鍵生成装置は、属性ベース暗号方式および属性ベース検索可能暗号方式の鍵情報を生成する鍵生成装置であって、第１公開鍵・マスタ鍵生成手段と、第１秘密鍵生成手段と、第２公開鍵・マスタ鍵生成手段と、第２秘密鍵生成手段と、ハッシュ関数選択手段と、属性付き秘密鍵生成手段と、トークン生成鍵生成手段と、を備える構成とした。
【００１３】
かかる構成において、鍵生成装置は、第１公開鍵・マスタ鍵生成手段によって、属性ベース暗号方式の第１公開鍵および第１マスタ鍵を生成する。そして、鍵生成装置は、第１秘密鍵生成手段によって、第１公開鍵および第１マスタ鍵を用いて属性ベース暗号方式の第１秘密鍵を生成する。
また、鍵生成装置は、第２公開鍵・マスタ鍵生成手段によって、属性ベース検索可能暗号方式の第２公開鍵および第２マスタ鍵を生成する。そして、鍵生成装置は、第２秘密鍵生成手段によって、第２公開鍵および第２マスタ鍵を用いて属性ベース検索可能暗号方式の第２秘密鍵を生成する。
【００１４】
さらに、鍵生成装置は、ハッシュ関数選択手段によって、検索結果の正当性を検証するためのブルームフィルタに使用する予め定めた複数のハッシュ関数を公開鍵の一部として選択する。
そして、鍵生成装置は、属性付き秘密鍵生成手段によって、データを復号する受信者の属性を第１秘密鍵および第２秘密鍵に付加する。
また、鍵生成装置は、トークン生成鍵生成手段によって、受信者を識別する識別子から、データを検索する検索トークンを生成するためのトークン生成鍵を、属性ベース検索可能暗号方式により生成する。
これによって、鍵生成装置は、属性ベース暗号方式および属性ベース検索可能暗号方式の両方式に対応した鍵情報を生成する。
【００１５】
また、本発明に係る中間暗号化装置は、鍵生成装置で生成された公開鍵を用いて、属性ベース暗号方式によるデータの暗号化処理の一部と、属性ベース検索可能暗号方式の前記データに対応するインデックスの暗号化処理の一部を行う中間暗号化装置であって、中間暗号化データ生成手段と、中間暗号化インデックス生成手段と、署名用鍵生成手段と、署名付き暗号化ブルームフィルタ生成手段と、中間暗号化乱数生成手段と、データ合成手段と、を備える構成とした。
【００１６】
かかる構成において、中間暗号化装置は、中間暗号化データ生成手段によって、暗号化の対象となるデータを復号条件となるポリシーと対応付けて、属性ベース暗号方式における予め定めた中間暗号化を行うことで中間暗号化データを生成する。
そして、中間暗号化装置は、中間暗号化インデックス生成手段によって、データに対応するキーワードを含むインデックスをポリシーと対応付けて、属性ベース検索可能暗号方式における予め定めた中間暗号化を行うことで中間暗号化インデックスを生成する。
さらに、中間暗号化装置は、署名用鍵生成手段によって、電子署名の署名用公開鍵と署名用秘密鍵とを生成する。
【００１７】
そして、中間暗号化装置は、署名付き暗号化ブルームフィルタ生成手段によって、公開鍵の一部であるハッシュ関数により、インデックスからブルームフィルタを生成し、乱数により暗号化して暗号化ブルームフィルタを生成し、署名用秘密鍵により署名を付加した署名付き暗号化ブルームフィルタを生成する。
そして、中間暗号化装置は、中間暗号化乱数生成手段によって、乱数をポリシーと対応付けて、属性ベース暗号方式における予め定めた中間暗号化を行うことで中間暗号化乱数を生成する
そして、中間暗号化装置は、データ合成手段によって、ポリシー、中間暗号化データ、中間暗号化インデックス、中間暗号化乱数および署名付き暗号化ブルームフィルタを合成した合成中間暗号化データを生成する。
【００１８】
また、本発明に係る委託暗号化装置は、鍵生成装置で生成された公開鍵を用いて、中間暗号化装置によって属性ベース暗号方式および属性ベース検索可能暗号方式の一部が処理された残りの暗号化処理を行う委託暗号化装置であって、データ分離手段と、データ暗号化手段と、インデックス暗号化手段と、乱数暗号化手段と、データ合成手段と、を備える構成とした。
【００１９】
かかる構成において、委託暗号化装置は、データ分離手段によって、中間暗号化装置で生成された合成中間暗号化データを、ポリシー、中間暗号化データ、中間暗号化インデックス、中間暗号化乱数および署名付き暗号化ブルームフィルタに分離する。
そして、委託暗号化装置は、データ暗号化手段によって、公開鍵とポリシーとにより、中間暗号化データに属性ベース暗号方式における暗号化を行うことで暗号化データを生成する。
【００２０】
また、委託暗号化装置は、インデックス暗号化手段によって、公開鍵とポリシーとにより、中間暗号化インデックスに属性ベース検索可能暗号方式における暗号化を行うことで暗号化インデックスを生成する。
さらに、委託暗号化装置は、乱数暗号化手段によって、公開鍵とポリシーとにより、中間暗号化乱数に属性ベース暗号方式における暗号化を行うことで暗号化乱数を生成する。
そして、委託暗号化装置は、データ合成手段によって、ポリシー、暗号化データ、暗号化インデックス、暗号化乱数および署名付き暗号化ブルームフィルタを合成した合成暗号化データを生成する。
【００２１】
また、本発明に係るデータ検索装置は、鍵生成装置で生成された公開鍵および属性付き秘密鍵を用いて、中間暗号化装置および委託暗号化装置で暗号化された合成暗号化データを検索するデータ検索装置であって、データ要求受信手段と、検索手段と、データ送信手段と、を備える構成とした。
【００２２】
かかる構成において、データ検索装置は、データ要求受信手段によって、合成暗号化データを要求する復号装置から送信された、トークン生成鍵を用いて生成された検索トークンを含んだデータ要求を受信する。
そして、データ検索装置は、検索手段によって、検索トークンに対応する合成暗号化データを検索する。
そして、データ検索装置は、データ送信手段によって、検索手段で検索された合成暗号化データを復号装置に送信する。
【００２３】
また、本発明に係る復号装置は、鍵生成装置で生成された公開鍵および属性付き秘密鍵を用いて、中間暗号化装置および委託暗号化装置で暗号化され、データ記憶装置に記憶された合成暗号化データを、請求項４に記載のデータ検索装置を介して検索し復号する復号装置であって、キーワード入力手段と、検索トークン生成手段と、データ要求送信手段と、データ受信手段と、検索結果検証手段と、署名検証手段と、ポリシー判定手段と、ブルームフィルタ検証手段と、データ復号手段と、を備える構成とした。
【００２４】
かかる構成において、復号装置は、キーワード入力手段によって、検索対象のデータを特定するキーワードを入力する。
そして、復号装置は、検索トークン生成手段によって、キーワード入力手段で入力されたキーワードと、鍵生成装置で生成されたトークン生成鍵と、公開鍵とから、属性ベース検索可能暗号方式により検索トークンを生成する。
そして、復号装置は、データ要求送信手段によって、検索トークンを含んだデータ要求をデータ検索装置に送信する。
【００２５】
また、復号装置は、データ受信手段によって、データ要求の結果として合成暗号化データを受信する。
そして、復号装置は、検索結果検証手段によって、合成暗号化データが、検索トークンに対応するデータか否かを、属性ベース検索可能暗号方式の検索手法により検証する。
そして、復号装置は、署名検証手段によって、検索結果検証手段で正しく検証された合成暗号化データに含まれる署名付き暗号化ブルームフィルタに対して、中間暗号化装置で生成された署名用公開鍵により、署名検証を行う。
そして、復号装置は、ポリシー判定手段によって、署名検証手段で正しく署名検証された暗号化ブルームフィルタに対して、属性がポリシーを満たすか否かを判定する。
【００２６】
さらに、復号装置は、ブルームフィルタ検証手段によって、ポリシーを満たした暗号化ブルームフィルタに対して、合成暗号化データに含まれる暗号化乱数を復号した乱数でブルームフィルタを復号し、キーワードがインデックスに含まれているか否かを検証する。
そして、復号装置は、キーワードに対応する暗号化データを、属性ベース暗号方式により復号する。
【００２７】
なお、鍵生成装置、中間暗号化装置、委託暗号化装置、データ検索装置および復号装置は、それぞれ、コンピュータを、前記した各手段として機能させるためのプログラムで動作させることができる。
【発明の効果】
【００２８】
本発明は、以下に示す優れた効果を奏するものである。
本発明によれば、属性ベース暗号と属性ベース検索可能暗号とで使用するそれぞれの公開鍵と秘密鍵とにより、暗号処理の一部を委託可能な属性ベース暗号と委託可能属性ベース検索可能暗号とを実現することができる。
これによって、本発明は、暗号化処理の一部を外部のサーバに委託してユーザ端末の負荷を軽減することができるとともに、ユーザのデータを暗号化により秘匿したままキーワード検索することができ、ユーザのプライバシーを保護することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施形態に係る属性ベース秘匿検索システムの構成を示すシステム構成図である。
【図２】アクセス行列の生成手法の例を説明するための図であって、（ａ）は属性の例、（ｂ）はポリシーの例、（ｃ）はポリシーのツリー構造、（ｄ）はポリシーのツリー構造に対応したアクセス行列を示す図である。
【図３】本発明の実施形態に係る鍵生成装置の構成を示すブロック構成図である。
【図４】本発明の実施形態に係る中間暗号化装置の構成を示すブロック構成図である。
【図５】本発明の実施形態に係る委託暗号化装置の構成を示すブロック構成図である。
【図６】本発明の実施形態に係るデータ検索装置の構成を示すブロック構成図である。
【図７】本発明の実施形態に係る復号装置の構成を示すブロック構成図である。
【図８】本発明の実施形態に係る属性ベース秘匿検索システムにおける鍵生成および鍵配信の動作を示すフローチャートである。
【図９】図８の動作において、公開鍵・マスタ鍵を生成する動作を詳細に示すフローチャートである。
【図１０】図９の動作において、第１公開鍵・第１マスタ鍵を生成する動作を詳細に示すフローチャートである。
【図１１】図９の動作において、第２公開鍵・第２マスタ鍵を生成する動作を詳細に示すフローチャートである。
【図１２】図８の動作において、秘密鍵を生成する動作を詳細に示すフローチャートである。
【図１３】図１２の動作において、第１秘密鍵を生成する動作を詳細に示すフローチャートである。
【図１４】図１２の動作において、第２秘密鍵を生成する動作を詳細に示すフローチャートである。
【図１５】本発明の実施形態に係る属性ベース秘匿検索システムにおけるデータの中間暗号化および暗号化の動作を示すフローチャートである。
【図１６】図１５の動作において、中間暗号化データを生成する動作を詳細に示すフローチャートである。
【図１７】図１６の動作において、ＡＢＥＯの中間暗号化動作を詳細に示すフローチャートである。
【図１８】図１５の動作において、中間暗号化インデックスを生成する動作を詳細に示すフローチャートである。
【図１９】図１８の動作において、ＡＢＫＳＯの中間暗号化動作を詳細に示すフローチャートである。
【図２０】図１５の動作において、暗号化ブルームフィルタを生成する動作を詳細に示すフローチャートである。
【図２１】図１５の動作において、中間暗号化乱数を生成する動作を詳細に示すフローチャートである。
【図２２】図１５の動作において、暗号化データを生成する動作を詳細に示すフローチャートである。
【図２３】図２２の動作において、ＡＢＥＯの暗号化動作を詳細に示すフローチャートである。
【図２４】図１５の動作において、暗号化インデックスを生成する動作を詳細に示すフローチャートである。
【図２５】図２４の動作において、ＡＢＫＳＯの暗号化動作を詳細に示すフローチャートである。
【図２６】図１５の動作において、暗号化乱数を生成する動作を詳細に示すフローチャートである。
【図２７】本発明の実施形態に係る属性ベース秘匿検索システムにおけるデータの復号の動作を示すフローチャートである。
【図２８】図２７の動作において、検索トークンを生成する動作を詳細に示すフローチャートである。
【図２９】図２７の動作において、暗号化データを検索する動作を詳細に示すフローチャートである。
【図３０Ａ】図２７の動作において、検証動作を詳細に示すフローチャート（１／３）である。
【図３０Ｂ】図２７の動作において、検証動作を詳細に示すフローチャート（２／３）である。
【図３０Ｃ】図２７の動作において、検証動作を詳細に示すフローチャート（３／３）である。
【図３１】図３０Ａおよび図３０Ｃの動作において、ＡＢＫＳＯの検索動作を詳細に示すフローチャートである。
【図３２】図３０Ａおよび図３０Ｃの動作において、ＡＢＫＳＯの検証動作を詳細に示すフローチャートである。
【図３３】図２７および図３０Ｂの動作において、ＡＢＥＯの復号動作を詳細に示すフローチャートである。
【図３４】本発明の実施形態に係る属性ベース秘匿検索システムを個人情報保護システムとして構成した例を示すシステム構成図である。
【発明を実施するための形態】
【００３０】
以下、本発明の実施形態について図面を参照して説明する。
［属性ベース秘匿検索システムの構成］
まず、図１を参照して、本発明の実施形態に係る属性ベース秘匿検索システムＳＡの構成について説明する。
属性ベース秘匿検索システムＳＡは、復号条件となる属性の属性値を示すポリシーに基づいて送信者のデータを暗号化し、受信者の属性の属性値が、ポリシーに適合した場合だけ、キーワードに対応する暗号化データを復号するシステムである。
【００３１】
ここでは、属性ベース秘匿検索システムＳＡは、鍵生成装置１と、中間暗号化装置２と、クラウドサーバ３（委託暗号化装置４、データ記憶装置５、データ検索装置６）と、復号装置７とを、ネットワーク（通信回線）Ｎを介して接続して構成している。なお、ここでは、説明を簡略化するため、各装置を１台ずつ図示しているが、これらは、ネットワークＮに複数接続することとしてもよい。
【００３２】
鍵生成装置１は、暗号化処理をクラウドサーバ３に委託可能な属性ベース暗号および属性ベース検索可能暗号における暗号化処理に用いる公開鍵および秘密鍵を生成するものである。公開鍵は、中間暗号化装置２、クラウドサーバ３および復号装置７に対して公開される情報であって、ここでは、ネットワークＮを介して中間暗号化装置２、クラウドサーバ３および復号装置７に送信される。また、秘密鍵は、暗号化データを復号する復号装置７ごとに秘密情報として送信される情報である。
なお、ここでは、鍵生成装置１は、種別情報（属性種別）とその内容を示す値（属性値）とからなる属性を秘密鍵に関連付け、属性付き秘密鍵として、復号装置７に送信する。
【００３３】
中間暗号化装置２は、属性ベース暗号および属性ベース検索可能暗号の暗号化処理の一部を行うものである。なお、ここでは、中間暗号化装置２は、中間暗号化データを生成し、証明書および署名を付与して、ポリシー（復号条件）とともに、クラウドサーバ３に送信する。また、中間暗号化データには、当該データを検索するためのインデックスが対応付けられている。このインデックスは、１つ以上のキーワードで構成され、データを検索するための索引情報である。
【００３４】
クラウドサーバ３は、クラウド上に配置され、委託暗号化装置４とデータ記憶装置５とデータ検索装置６とで構成される。
委託暗号化装置４は、属性ベース暗号および属性ベース検索可能暗号の暗号化処理の一部を行うものである。この委託暗号化装置４は、中間暗号化装置２で暗号化された中間暗号化データの残りの暗号処理を行い、データ記憶装置５に記憶する。
データ記憶装置５は、委託暗号化装置で暗号化されたデータを記憶するデータベースである。このデータ記憶装置５は、ハードディスク等の一般的な記憶装置で構成することができる。
データ検索装置６は、復号装置７からのデータ要求（検索トークン）に適合するデータを検索して、復号装置７に送信するものである。
【００３５】
復号装置７は、中間暗号化装置２および委託暗号化装置４において生成された暗号化データを元のデータに復号するものである。この復号装置７は、キーワードを含むデータ要求（検索トークン）をクラウドサーバ３に送信することで、暗号化データを取得する。
そして、復号装置７は、ポリシー（復号条件）が、鍵生成装置１で生成される属性付き秘密鍵で特定される属性の属性値に適合し、証明書が正しく検証され、かつ、指定されたキーワードがインデックスに含まれている場合のみ復号を行う。
【００３６】
〔属性およびポリシーについて〕
以下、属性ベース秘匿検索システムＳＡの各構成について説明する前に、属性ベース秘匿検索システムＳＡで使用する属性およびポリシーについて、具体例を挙げて説明する。
【００３７】
（属性）
属性は、暗号化データを復号するユーザ（受信者）を区分するための個別情報である。
この属性は、属性種別に対する属性値で構成される。属性種別は、属性の種類を示す識別情報であって、例えば、図２（ａ）に示すように、会員種別、居住地、性別、年齢等である。また、属性値は、個々の属性種別の内容を示す値であって、例えば、図２（ａ）に示すように、属性種別を、「会員種別」としたときの、通常会員およびプレミアム会員を示す数値｛１，２｝等である。
なお、図２（ａ）では、属性値として、属性種別を「居住地」としたときの東日本および西日本を示す数値｛３，４｝、属性種別を「性別」としたときの男性および女性を示す数値｛５，６｝、属性種別を「年齢」としたときの未成年および成人を示す数値｛７，８｝を例示している。
【００３８】
（ポリシー）
ポリシーは、暗号化データを復号するための条件（復号条件）を示す情報である。すなわち、ポリシーは、どの属性のどの属性値を有するユーザに対して復号の許可を与えるかを示す情報である。
ここでは、ポリシーは、線形秘密分散法（Linear Secret Sharing Scheme：ＬＳＳＳ）によって生成されるアクセス行列Ａと、アクセス行列Ａの各行に対応する属性の属性種別を属性値に変換する写像ρとで構成される。
【００３９】
このアクセス行列は、例えば、「A. Lewko and B. Waters, “Decentralizing Attribute-Based Encryption,” Proc. of Eurocrypt’ 11, LNCS 6632, pp. 568-588, 2011.」に記載の方法によって生成される行列である。
【００４０】
ここで、図２を参照して、アクセス行列Ａと写像ρの内容について具体的に説明する。
まず、アクセス行列Ａの生成手法の例について説明する。
ここでは、図２（ａ）に示した属性を例とし、ポリシーを図２（ｂ）で表した論理形式で示す条件とする。
【００４１】
図２（ｃ）に示すように、図２（ｂ）のポリシーは、「ＡＮＤ」，「ＯＲ」をノード、属性値を葉ノードとするツリー構造（アクセス木）で記述することができる。
このとき、ルートノードには、ＬＳＳＳの秘密情報ｓを設定する。そして、親ノードが「ＯＲ」となる子ノードには、親ノードに設定された情報（秘密情報ｓまたは乱数）をそのまま引き継いで設定する。また、親ノードが「ＡＮＤ」となる一方の子ノードには、新たな乱数を設定し、他方の子ノードには、一方の子ノードに設定された乱数と親ノードに設定された情報（秘密情報ｓまたは乱数）との和を設定する。
例えば、図２（ｃ）に示すように、属性値「２：プレミアム」に秘密情報ｓと乱数ｙ２との和を設定し、属性値「３：東日本」に乱数ｙ２を設定すれば、「プレミアム」ＡＮＤ「東日本」を満たすユーザは、（ｓ＋ｙ２）−（ｙ２）によって、秘密情報ｓを取得することができる。
このように、ＬＳＳＳは、乱数によって秘密情報ｓを分散することができる。
【００４２】
そして、図２（ｄ）に示すように、アクセス行列Ａは、秘密情報ｓと乱数（ここではｙ２，ｙ３）から、葉ノードの属性値に設定される情報に変換する“０”，“１”を要素とする変換行列として生成することができる。
このとき、アクセス行列Ａの行数は、ポリシーのツリー構造における葉ノードの数と一致し、列数は、ポリシーの「ＡＮＤ」のノード数に“１”を加算した数となる。
なお、ここでは、アクセス行列Ａの生成手法を説明するため、各ノードに設定する情報を秘密情報ｓと乱数ｙ２，ｙ３として説明したが、本発明においては、それらの情報にさらに乱数を加算する。その内容については、後記する。
【００４３】
次に、写像ρについて説明する。
この写像ρは、アクセス行列Ａの行のインデックスをｊとしたとき、ρ（ｊ）を属性値に変換する写像である。
例えば、図２で説明したアクセス行列Ａの場合、ρ（１）は、アクセス行列Ａの１行目のポリシーである「会員種別」の属性値「２：プレミアム」を示す。すなわち、図２の例では、ρ（１）＝２、ρ（２）＝３、ρ（３）＝６、ρ（４）＝８となる。
以下、図１に示した属性ベース秘匿検索システムＳＡの各構成について説明する。
【００４４】
〔鍵生成装置の構成〕
まず、図３を参照（適宜図１参照）して、本発明の実施形態に係る鍵生成装置１の構成について説明する。ここでは、鍵生成装置１は、第１鍵生成手段１０と、第２鍵生成手段１１と、を備える。
【００４５】
第１鍵生成手段１０は、外部から入力されるセキュリティパラメータに基づいて、属性ベース暗号方式および属性ベース検索可能暗号方式における公開鍵およびマスタ鍵を生成するものである。ここでは、第１鍵生成手段１０は、パラメータ入力手段１００と、公開鍵・マスタ鍵生成手段１０１と、公開鍵記憶手段１０２と、マスタ鍵記憶手段１０３と、公開鍵送信手段１０４と、を備える。
【００４６】
パラメータ入力手段１００は、セキュリティパラメータを外部からパラメータとして入力するものである。
ここで、セキュリティパラメータは、セキュリティのレベルを示す数値（例えば、鍵長）である。より具体的には、セキュリティパラメータは、後記する公開鍵・マスタ鍵生成手段１０１で使用される素数位数ｐの大きさ（ビット長；ここではｓｐとする）である。
このパラメータ入力手段１００は、入力されたセキュリティパラメータを、公開鍵・マスタ鍵生成手段１０１に出力する。
【００４７】
公開鍵・マスタ鍵生成手段１０１は、公開鍵およびマスタ鍵を生成するものである。ここでは、公開鍵・マスタ鍵生成手段１０１は、ハッシュ関数選択手段１０１ａと、第１公開鍵・マスタ鍵生成手段１０１ｂと、第２公開鍵・マスタ鍵生成手段１０１ｃと、を備える。
【００４８】
ハッシュ関数選択手段１０１ａは、後記するブルームフィルタの生成および検証を行うための複数のハッシュ関数を生成するものである。このハッシュ関数選択手段１０１ａは、予め準備した複数のハッシュ関数の中からｋ個のハッシュ関数（ｈ１′，…，ｈｋ′）を選択する。なお、ブルームフィルタが、キーワードに一致するインデックスが存在しないのに、「インデックスが存在する」と誤って出力する確率（偽陽性発生率）と、ブルームフィルタのビット長と、インデックスの個数とは、所定の関係がある。よって、ハッシュ関数の個数（ｋ）は、予め定めた偽陽性発生率から求めることができる。
また、ハッシュ関数選択手段１０１ａは、セキュリティパラメータのビット長のデータを、ブルームフィルタと同じビット長のデータに変換するハッシュ関数ｈを、予め準備した複数のハッシュ関数の中から選択する。
このハッシュ関数（ｈ，ｈ１′，…，ｈｋ′）は、公開鍵として、公開鍵記憶手段１０２に記憶される。
【００４９】
第１公開鍵・マスタ鍵生成手段１０１ｂは、委託可能な属性ベース暗号方式（ＡＢＥＯ）における公開鍵とマスタ鍵とを生成するものである。この第１公開鍵・マスタ鍵生成手段１０１ｂは、ＡＢＥＯのＳｅｔｕｐアルゴリズムを実行することで、第１公開鍵ＡＢＥＯ．ｐｋと第１マスタ鍵ＡＢＥＯ．ｍｋを生成する。なお、ＡＢＥＯのＳｅｔｕｐアルゴリズムについては、動作の説明において詳細に説明する。
【００５０】
第２公開鍵・マスタ鍵生成手段１０１ｃは、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）における公開鍵とマスタ鍵とを生成するものである。この第２公開鍵・マスタ鍵生成手段１０１ｃは、ＡＢＫＳＯのＳｅｔｕｐアルゴリズムを実行することで、第２公開鍵ＡＢＫＳＯ．ｐｋと第２マスタ鍵ＡＢＫＳＯ．ｍｋを生成する。なお、ＡＢＫＳＯのＳｅｔｕｐアルゴリズムについては、動作の説明において詳細に説明する。
【００５１】
公開鍵・マスタ鍵生成手段１０１は、第１公開鍵ＡＢＥＯ．ｐｋと、第２公開鍵ＡＢＫＳＯ．ｐｋと、ハッシュ関数（ｈ，ｈ１′，…，ｈｋ′）とを、公開鍵ＰＫとして、公開鍵記憶手段１０２に書き込み記憶する。また、公開鍵・マスタ鍵生成手段１０１は、第１マスタ鍵ＡＢＥＯ．ｍｋと、第２マスタ鍵ＡＢＫＳＯ．ｍｋとを、マスタ鍵ＭＫとして、マスタ鍵記憶手段１０３に書き込み記憶する。
【００５２】
公開鍵記憶手段１０２は、公開鍵・マスタ鍵生成手段１０１で生成された第１公開鍵および第２公開鍵を記憶するものである。この公開鍵記憶手段１０２は、半導体メモリ等の一般的な記憶媒体で構成することができる。
この公開鍵記憶手段１０２に記憶された第１公開鍵および第２公開鍵は、公開鍵送信手段１０４および第２鍵生成手段１１によって読み出される。
【００５３】
マスタ鍵記憶手段１０３は、公開鍵・マスタ鍵生成手段１０１で生成された第１マスタ鍵および第２マスタ鍵を記憶するものである。このマスタ鍵記憶手段１０３は、半導体メモリ等の一般的な記憶媒体で構成することができる。
このマスタ鍵記憶手段１０３に記憶された第１マスタ鍵および第２マスタ鍵は、第２鍵生成手段１１によって読み出される。
【００５４】
公開鍵送信手段１０４は、公開鍵・マスタ鍵生成手段１０１で生成され、公開鍵記憶手段１０２に記憶された公開鍵を、中間暗号化装置２、委託暗号化装置４および復号装置７に公開するものである。
ここでは、公開鍵送信手段１０４は、公開鍵記憶手段１０２から公開鍵を読み出し、ネットワークＮを介して、読み出した公開鍵を中間暗号化装置２、委託暗号化装置４および復号装置７に送信する。この公開鍵送信手段１０４は、例えば、中間暗号化装置２、委託暗号化装置４および復号装置７から、それぞれ公開鍵を要求されたタイミングで、公開鍵を送信する。
【００５５】
第２鍵生成手段１１は、外部から入力される復号装置７のユーザの属性に基づいて、復号装置７が使用する、委託可能な属性ベース暗号方式（ＡＢＥＯ）および委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）における秘密鍵を生成するものである。ここでは、第２鍵生成手段１１は、属性入力手段１１０と、秘密鍵生成手段１１１と、属性付き秘密鍵生成手段１１２と、属性付き秘密鍵送信手段１１３と、受信者リスト記憶手段１１４と、トークン生成鍵生成配信手段１１５と、を備える。
【００５６】
属性入力手段１１０は、復号装置７のユーザ（受信者）に対する属性Ｓを、ユーザの識別子（受信者ｉｄ）とともに入力するものである。ここで、属性は、予め定めた属性種別に対応するユーザの属性値である。受信者ｉｄは、ユーザ個別の識別情報である。
ここでは、属性入力手段１１０は、復号装置７から、登録要求を受信することで、その登録要求に含まれる属性Ｓと受信者ｉｄとを入力する。もちろん、属性Ｓと受信者ｉｄとを、操作者がキーボード等の入力手段を介して入力することとしてもよい。
この属性入力手段１１０は、入力された属性を、秘密鍵生成手段１１１および属性付き秘密鍵生成手段１１２に出力する。
【００５７】
秘密鍵生成手段１１１は、公開鍵・マスタ鍵生成手段１０１で生成される公開鍵の対となる秘密鍵を生成するものである。ここでは、秘密鍵生成手段１１１は、第１秘密鍵生成手段１１１ａと、第２秘密鍵生成手段１１１ｂと、を備える。
【００５８】
第１秘密鍵生成手段１１１ａは、委託可能な属性ベース暗号方式（ＡＢＥＯ）における秘密鍵を生成するものである。この第１秘密鍵生成手段１１１ａは、公知の手法により秘密鍵を生成することができる。
すなわち、第１秘密鍵生成手段１１１ａは、属性Ｓを用いて、ＡＢＥＯのＫｅｙＧｅｎアルゴリズムを実行することで、第１秘密鍵ＡＢＥＯ．ｓｋを生成する。なお、ＡＢＥＯのＫｅｙＧｅｎアルゴリズムについては、動作の説明において詳細に説明する。
【００５９】
第２秘密鍵生成手段１１１ｂは、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）における秘密鍵を生成するものである。この第２秘密鍵生成手段１１１ｂは、公知の手法により秘密鍵を生成することができる。
すなわち、第２秘密鍵生成手段１１１ｂは、属性Ｓを用いて、ＡＢＫＳＯのＫｅｙＧｅｎアルゴリズムを実行することで、第２秘密鍵ＡＢＫＳＯ．ｓｋを生成する。なお、ＡＢＫＳＯのＫｅｙＧｅｎアルゴリズムについては、動作の説明において詳細に説明する。
この第２秘密鍵生成手段１１１ｂは、第２秘密鍵の生成途中における値を、受信者ｉｄと対応付けて、受信者リスト記憶手段１１４に記憶しておく。この第２秘密鍵の生成途中の値は、検索トークンを生成するための第１の情報（トークン生成第１情報）であって、後で詳述する公開鍵と、乱数とから所定の演算式で求められる値である。
秘密鍵生成手段１１１は、第１秘密鍵ＡＢＥＯ．ｓｋと、第２秘密鍵ＡＢＫＳＯ．ｓｋとを、秘密鍵ＳＫとして、属性付き秘密鍵生成手段１１２に出力する。
【００６０】
属性付き秘密鍵生成手段１１２は、秘密鍵生成手段１１１で生成された秘密鍵ＳＫに、属性入力手段１１０で入力された属性Ｓを関連付けて、属性付き秘密鍵を生成するものである。例えば、属性付き秘密鍵生成手段１１２は、秘密鍵ＳＫと属性Ｓとを予め定めたデータフォーマットで連結することで、属性付き秘密鍵を生成する。もちろん、秘密鍵ＳＫと属性Ｓとを予め定めた固有の識別子で対応付けることとしてもよい。
この属性付き秘密鍵生成手段１１２は、生成した属性付き秘密鍵を属性付き秘密鍵送信手段１１３に出力する。
【００６１】
属性付き秘密鍵送信手段１１３は、属性付き秘密鍵生成手段１１２で生成された属性付き秘密鍵を、復号装置７に送信するものである。
ここでは、属性付き秘密鍵送信手段１１３は、属性付き秘密鍵を、ネットワークＮを介して、例えば、ＳＳＬ／ＴＬＳ（Secure Sockets Layer／Transport Layer Security）等の暗号化通信プロトコルを用いて復号装置７に送信する。なお、復号装置７の送信先については、外部から設定されるものとする。
【００６２】
受信者リスト記憶手段１１４は、属性入力手段１１０で入力された受信者ｉｄと、第２秘密鍵生成手段１１１ｂで生成されたトークン生成第１情報とを対応付けて記憶するものである。この受信者リスト記憶手段１１４は、半導体メモリ等の一般的な記憶媒体で構成することができる。
この受信者リスト記憶手段１１４は、トークン生成鍵生成配信手段１１５によって、受信者ｉｄに対応したトークン生成第１情報が読み出される。
【００６３】
トークン生成鍵生成配信手段１１５は、復号装置７からの要求に基づいて、検索トークンを生成するための鍵（トークン生成鍵）を生成し、復号装置７に配信するものである。
このトークン生成鍵生成配信手段１１５は、復号装置７から、トークン生成鍵の要求として通知される受信者ｉｄと、トークン生成第２情報とを受信する。
このトークン生成第２情報は、検索トークンを生成するための第２の情報であって、復号装置７において、公開鍵から所定の演算式で求められる値である。
【００６４】
トークン生成鍵生成配信手段１１５は、受信者ｉｄに対応するトークン生成第１情報を受信者リスト記憶手段１１４から読み出し、トークン生成第２情報と、公開鍵の一部である乱数とから、トークン生成鍵を生成する。このトークン生成鍵を生成する演算については、動作の説明において行う。
トークン生成鍵生成配信手段１１５は、生成したトークン生成鍵を要求のあった復号装置７に送信する。
【００６５】
このように鍵生成装置１を構成することで、鍵生成装置１は、属性ベース暗号方式および属性ベース検索可能暗号方式で使用する公開鍵および秘密鍵（属性付き秘密鍵）を生成することができる。
また、鍵生成装置１は、復号装置７に対して、検索トークンを生成するための鍵となるトークン生成鍵を生成することができる。
【００６６】
この鍵生成装置１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ＨＤＤ（Hard Disk Drive）、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（鍵生成プログラム）をＲＡＭに展開することにより、ＣＰＵを、前記した各手段として機能させることができる。
【００６７】
〔中間暗号化装置の構成〕
次に、図４を参照（適宜図１参照）して、本発明の実施形態に係る中間暗号化装置２の構成について説明する。ここでは、中間暗号化装置２は、ポリシー入力手段２０と、データ入力手段２１と、インデックス入力手段２２と、公開鍵受信手段２３と、公開鍵記憶手段２４と、中間暗号化データ生成手段２５と、中間暗号化インデックス生成手段２６と、暗号化ブルームフィルタ生成手段２７と、中間暗号化乱数生成手段２８と、データ合成手段２９と、データ送信手段３０と、署名用鍵生成手段３１と、署名用公開鍵記憶手段３２と、署名用公開鍵送信手段３３と、を備える。
【００６８】
ポリシー入力手段２０は、復号装置７において、暗号化データを復号するための条件（復号条件）となるポリシーを外部から入力するものである。ここでは、ポリシー入力手段２０は、線形秘密分散法（ＬＳＳＳ）によって予め生成されたアクセス行列Ａと、そのアクセス行列Ａの各行に対応する属性の属性種別を属性値に変換する写像ρとを、外部から入力する。
このポリシー入力手段２０は、入力されたポリシーを中間暗号化データ生成手段２５と、中間暗号化インデックス生成手段２６と、中間暗号化乱数生成手段２８と、データ合成手段２９とに出力する。
【００６９】
データ入力手段２１は、暗号化の対象となるデータを外部から入力するものである。このデータ入力手段２１は、入力されたデータを中間暗号化データ生成手段２５に出力する。
【００７０】
インデックス入力手段２２は、暗号化の対象となるデータを検索するためのインデックスを入力するものである。インデックスは、データの索引として、複数のキーワードを含む。このインデックス入力手段２２は、入力されたインデックスを中間暗号化インデックス生成手段２６と、暗号化ブルームフィルタ生成手段２７とに出力する。
【００７１】
公開鍵受信手段２３は、鍵生成装置１で生成された属性ベース暗号方式および属性ベース検索可能暗号方式の公開鍵を受信するものである。ここでは、公開鍵受信手段２３は、ネットワークＮを介して、公開鍵を受信し、受信した公開鍵を公開鍵記憶手段２４に書き込み記憶する。
なお、公開鍵受信手段２３は、定期的に公開鍵を鍵生成装置１に要求し取得することとしてもよいし、中間暗号化データ生成手段２５、中間暗号化インデックス生成手段２６、中間暗号化乱数生成手段２８が公開鍵を参照するタイミングで鍵生成装置１に要求し取得することとしてもよい。
【００７２】
公開鍵記憶手段２４は、公開鍵受信手段２３で受信した公開鍵を記憶するものである。この公開鍵記憶手段２４は、半導体メモリ等の一般的な記憶媒体で構成することができる。この公開鍵記憶手段２４に記憶された公開鍵は、中間暗号化データ生成手段２５、中間暗号化インデックス生成手段２６、中間暗号化乱数生成手段２８によって読み出される。
【００７３】
中間暗号化データ生成手段２５は、公開鍵記憶手段２４に記憶されている公開鍵と、ポリシー入力手段２０で入力されたポリシーとに基づいて、データ入力手段２１で入力されたデータに対して属性ベース暗号方式における中間的な暗号化を行い、証明書を付与した証明書付き中間暗号化データを生成するものである。なお、証明書付き中間暗号化データの生成については、動作の説明において詳細に説明する。
この中間暗号化データ生成手段２５は、生成した証明書付き中間暗号化データを、データ合成手段２９に出力する。
【００７４】
中間暗号化インデックス生成手段２６は、公開鍵記憶手段２４に記憶されている公開鍵と、ポリシー入力手段２０で入力されたポリシーとに基づいて、インデックス入力手段２２で入力されたインデックスに対して属性ベース検索可能暗号方式における中間的な暗号化を行い、証明書を付与した証明書付き中間暗号化インデックスを生成するものである。なお、中間暗号化インデックスの生成については、動作の説明において詳細に説明する。
こ中間暗号化インデックス生成手段２６は、生成した証明書付き中間暗号化データを、データ合成手段２９に出力する。
【００７５】
暗号化ブルームフィルタ生成手段２７は、インデックス入力手段２２で入力されたインデックスと、署名用鍵生成手段３１で生成された署名用秘密鍵とを用いて、署名付き暗号化ブルームフィルタを生成するものである。ここでは、暗号化ブルームフィルタ生成手段２７は、ブルームフィルタ生成手段２７０と、ブルームフィルタ暗号化手段２７１と、署名付与手段２７２と、を備える。
【００７６】
ブルームフィルタ生成手段２７０は、インデックス入力手段で入力されたインデックスごとに、インデックス内にキーワード（キーワードごとに予め定めた固有の値）が含まれるか否かを判定するためのブルームフィルタを生成するものである。
ここでは、ブルームフィルタ生成手段２７０は、インデックスに含まれるキーワードと、公開鍵記憶手段２４に記憶されている公開鍵の一部であるハッシュ関数（ｈ１′，…，ｈｋ′）とを用いて、ブルームフィルタを生成する。このブルームフィルタによって、復号装置７において、インデックス内にキーワードが含まれていないこと（陰性）、または、インデックス内にキーワードが含まれている可能性があること（偽陽性、真陽性）を判定することが可能になる。
このブルームフィルタ生成手段２７０は、生成したブルームフィルタをブルームフィルタ暗号化手段２７１に出力する。
【００７７】
ブルームフィルタ暗号化手段２７１は、ブルームフィルタ生成手段２７０で生成されたブルームフィルタを暗号化するものである。このブルームフィルタ暗号化手段２７１は、乱数Ｍを生成し、公開鍵の一部であるハッシュ関数により乱数のハッシュ値を演算し、ブルームフィルタと排他的論理和演算を行うことで、暗号化ブルームフィルタを生成する。
このブルームフィルタ暗号化手段２７１は、生成した暗号化ブルームフィルタを署名付与手段２７２に出力する。また、ブルームフィルタ暗号化手段２７１は、暗号化ブルームフィルタを生成するために使用した乱数を、証明書付き中間暗号化乱数生成手段２８に出力する。
【００７８】
署名付与手段２７２は、ブルームフィルタ暗号化手段２７１で生成された暗号化ブルームフィルタに電子署名を付与するものである。この署名付与手段２７２は、署名用鍵生成手段３１に署名鍵の生成を指示し、署名用秘密鍵を取得し、当該署名用秘密鍵を用いて、暗号化ブルームフィルタに電子署名を付与する。
この署名付与手段２７２は、生成した署名付き暗号化ブルームフィルタを、データ合成手段２９に出力する。
【００７９】
中間暗号化乱数生成手段２８は、公開鍵記憶手段２４に記憶されている公開鍵と、ポリシー入力手段２０で入力されたポリシーとに基づいて、暗号化ブルームフィルタ生成手段２７で用いた乱数に対して属性ベース検索可能暗号方式における中間的な暗号化を行い、証明書を付与した証明書付き中間暗号化インデックスを生成するものである。なお、証明書付き中間暗号化乱数の生成については、動作の説明において詳細に説明する。
この中間暗号化乱数生成手段２８は、生成した証明書付き中間暗号化乱数を、データ合成手段２９に出力する。
【００８０】
データ合成手段２９は、ポリシー入力手段２０で入力されたポリシーと、中間暗号化データ生成手段２５で生成された証明書付き中間暗号化データと、中間暗号化インデックス生成手段２６で生成された証明書付き中間暗号化インデックスと、暗号化ブルームフィルタ生成手段２７で生成された署名付き暗号化ブルームフィルタと、中間暗号化乱数生成手段２８で生成された証明書付き中間暗号化乱数とを合成するものである。
このデータ合成手段２９における合成は、それぞれのデータを予め定めたデータフォーマットで連結することとしてもよいし、予め定めた固有の識別子で対応付けることとしてもよい。
このデータ合成手段２９は、合成したデータ（合成中間暗号化データ）をデータ送信手段３０に出力する。
【００８１】
データ送信手段３０は、データ合成手段２９で合成された合成中間暗号化データ（ポリシー、証明書付き中間暗号化データ、証明書付き中間暗号化インデックス、署名付き暗号化ブルームフィルタ、証明書付き中間暗号化乱数）を、ネットワークＮを介して、委託暗号化装置４に送信するものである。なお、委託暗号化装置４の送信先については、外部から設定されるものとする。
【００８２】
署名用鍵生成手段３１は、電子署名で使用する署名用鍵（署名用秘密鍵、署名用公開鍵）を生成するものである。
この署名用鍵生成手段３１は、署名付与手段２７２の指示により、署名用鍵を生成し、生成した署名用秘密鍵を署名付与手段２７２に出力し、署名用公開鍵を署名用公開鍵記憶手段３２に書き込み記憶する。
なお、署名用鍵生成手段３１が署名用鍵を生成する署名方式は、復号装置７と同じものであれば、一般的な署名方式、例えば、ＲＳＡ、ＥＣＤＳＡ（Elliptic Curve Digital Signature Algorithm）等、その方式は問わない。
【００８３】
署名用公開鍵記憶手段３２は、署名用鍵生成手段３１で生成された署名用公開鍵を記憶するものである。この署名用公開鍵記憶手段３２は、半導体メモリ等の一般的な記憶媒体で構成することができる。
この署名用公開鍵記憶手段３２に記憶された署名用公開鍵は、署名用公開鍵送信手段３３によって読み出される。
【００８４】
署名用公開鍵送信手段３３は、署名用鍵生成手段３１で生成され、署名用公開鍵記憶手段３２に記憶された署名用公開鍵を、復号装置７に公開するものである。
ここでは、署名用公開鍵送信手段３３は、署名用公開鍵記憶手段３２から署名用公開鍵を読み出し、ネットワークＮを介して、読み出した署名用公開鍵を復号装置７に送信する。この署名用公開鍵送信手段３３は、例えば、復号装置７から、署名用公開鍵を要求されたタイミングで、署名用公開鍵を送信する。
【００８５】
このように、中間暗号化装置２を構成することで、中間暗号化装置２は、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定してデータ、インデックスおよび乱数を暗号化することができる。また、中間暗号化装置２は、インデックス内にキーワードが含まれるか否かを判定するためのブルームフィルタを生成し、暗号化することができる。
【００８６】
なお、この中間暗号化装置２における暗号化は、属性ベース暗号方式および属性ベース検索可能暗号方式における暗号化処理の一部を実施するもので、中間暗号化装置２をユーザ端末とする際の処理を軽減することができる。また、中間暗号化装置２は、中間暗号化したデータ等に証明書を付与することで、復号装置７において、クラウドサーバ３におけるデータ改ざんを検出することが可能になる。
【００８７】
この中間暗号化装置２は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（中間暗号化プログラム）をＲＡＭに展開することにより、ＣＰＵ（コンピュータ）を、前記した各手段として機能させることができる。
【００８８】
〔委託暗号化装置の構成〕
次に、図５を参照（適宜図１参照）して、本発明の実施形態に係る委託暗号化装置４の構成について説明する。ここでは、委託暗号化装置４は、公開鍵受信手段４０と、公開鍵記憶手段４１と、公開鍵送信手段４２と、データ受信手段４３と、データ分離手段４４と、暗号化手段４５と、データ合成手段４６と、データ書込手段４７と、を備える。
【００８９】
公開鍵受信手段４０は、鍵生成装置１で生成された属性ベース暗号および属性ベース検索可能暗号の公開鍵を受信するものである。ここでは、公開鍵受信手段４０は、ネットワークＮを介して、公開鍵を受信し、受信した公開鍵を公開鍵記憶手段４１に書き込み記憶する。
なお、公開鍵受信手段４０は、定期的に公開鍵を鍵生成装置１に要求し取得することとしてもよいし、暗号化手段４５が公開鍵を参照するタイミングで鍵生成装置１に要求し取得することとしてもよい。
【００９０】
公開鍵記憶手段４１は、公開鍵受信手段４０で受信した公開鍵を記憶するものである。この公開鍵記憶手段４１は、半導体メモリ等の一般的な記憶媒体で構成することができる。この公開鍵記憶手段４１に記憶された公開鍵は、暗号化手段４５によって読み出される。
公開鍵送信手段４２は、公開鍵受信手段４０で受信した公開鍵を、同じクラウドサーバ３内のデータ検索装置６に送信するものである。
【００９１】
データ受信手段４３は、中間暗号化装置２で生成された合成中間暗号化データ（ポリシー、証明書付き中間暗号化データ、証明書付き合成中間暗号化インデックス、署名付き暗号化ブルームフィルタ、証明書付き中間暗号化乱数）を、ネットワークＮを介して受信するものである。
このデータ受信手段４３は、受信した合成中間暗号化データを、データ分離手段４４に出力する。
【００９２】
データ分離手段４４は、データ受信手段４３で受信した合成中間暗号化データを、個々のデータ（ポリシー、証明書付き中間暗号化データ、証明書付き中間暗号化インデックス、証明書付き中間暗号化乱数、署名付き暗号化ブルームフィルタ）に分離するものである。
このデータ分離手段４４は、分離したポリシーを暗号化手段４５およびデータ合成手段４６に出力する。また、データ分離手段４４は、分離した証明書付き中間暗号化データ、証明書付き中間暗号化インデックスおよび証明書付き中間暗号化乱数を、暗号化手段４５に出力する。また、また、データ分離手段４４は、分離した署名付き暗号化ブルームフィルタを、データ合成手段４６に出力する。
【００９３】
暗号化手段４５は、データ分離手段４４で分離された証明書付き中間暗号化データ、証明書付き中間暗号化インデックスおよび証明書付き中間暗号化乱数の暗号化処理を継続して実行するものである。ここでは、暗号化手段４５は、データ暗号化手段４５０と、インデックス暗号化手段４５１と、乱数暗号化手段４５２と、を備える。
【００９４】
データ暗号化手段４５０は、データ分離手段４４で分離された証明書付き中間暗号化データに対して、属性ベース暗号方式における暗号化を行い、証明書付き暗号化データを生成するものである。なお、証明書付き暗号化データの生成については、動作の説明において行う。
このデータ暗号化手段４５０は、生成した証明書付き暗号化データを、データ合成手段４６に出力する。
【００９５】
インデックス暗号化手段４５１は、データ分離手段４４で分離された証明書付き中間暗号化インデックスに対して、属性ベース検索可能暗号方式における暗号化を行い、証明書付き暗号化インデックスを生成するものである。なお、証明書付き暗号化インデックスの生成については、動作の説明において詳細に説明する。
このインデックス暗号化手段４５１は、生成した証明書付き暗号化インデックスを、データ合成手段４６に出力する。
【００９６】
乱数暗号化手段４５２は、データ分離手段４４で分離された証明書付き中間暗号化乱数に対して、属性ベース暗号方式における暗号化を行い、証明書付き暗号化乱数を生成するものである。なお、証明書付き暗号化乱数の生成については、動作の説明において詳細に説明する。
この乱数暗号化手段４５２は、生成した証明書付き暗号化乱数を、データ合成手段４６に出力する。
【００９７】
データ合成手段４６は、データ分離手段４４で分離されたポリシーおよび署名付き暗号化ブルームフィルタと、暗号化手段４５で生成された証明書付き暗号化データ、証明書付き暗号化インデックスおよび証明書付き暗号化乱数とを合成するものである。このデータ合成手段４６における合成は、それぞれのデータ（ポリシー、署名付き暗号化ブルームフィルタ、証明書付き暗号化データ、証明書付き暗号化インデックス、証明書付き暗号化乱数）を予め定めたデータフォーマットで連結することとしてもよいし、予め定めた固有の識別子で対応付けることとしてもよい。
このデータ合成手段４６は、合成したデータ（合成暗号化データ）を、データ書込手段４７に出力する。
【００９８】
データ書込手段４７は、データ合成手段４６で合成された合成暗号化データ（ポリシー、署名付き暗号化ブルームフィルタ、証明書付き暗号化データ、証明書付き暗号化インデックス、証明書付き暗号化乱数）を、データ記憶装置５に書き込むものである。
このように、委託暗号化装置４を構成することで、委託暗号化装置４は、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定してデータ、インデックスおよび乱数を暗号化することができる。なお、この委託暗号化装置４における暗号化は、属性ベース暗号方式および属性ベース検索可能暗号方式における暗号化処理の一部を実施するもので、中間暗号化装置２の暗号化処理を補完するものである。これによって、委託暗号化装置４は、データを送信する中間暗号化装置２の処理を軽減させることができる。
【００９９】
この委託暗号化装置４は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（委託暗号化プログラム）をＲＡＭに展開することにより、ＣＰＵ（コンピュータ）を、前記した各手段として機能させることができる。
【０１００】
〔データ検索装置の構成〕
次に、図６を参照（適宜図１参照）して、本発明の実施形態に係るデータ検索装置６の構成について説明する。ここでは、データ検索装置６は、公開鍵受信手段６０と、公開鍵記憶手段６１と、データ要求受信手段６２と、検索手段６３と、データ読出手段６４と、データ送信手段６５と、を備える。
【０１０１】
公開鍵受信手段６０は、鍵生成装置１で生成された属性ベース暗号および属性ベース検索可能暗号の公開鍵を受信するものである。ここでは、公開鍵受信手段６０は、ネットワークＮを介して、公開鍵を受信し、受信した公開鍵を公開鍵記憶手段６１に書き込み記憶する。
なお、公開鍵受信手段６０は、定期的に公開鍵を委託暗号化装置４に要求し取得することとしてもよいし、検索手段６３が公開鍵を参照するタイミングで委託暗号化装置４に要求し取得することとしてもよい。
【０１０２】
公開鍵記憶手段６１は、公開鍵受信手段６０で受信した公開鍵を記憶するものである。この公開鍵記憶手段６１は、半導体メモリ等の一般的な記憶媒体で構成することができる。この公開鍵記憶手段６１に記憶された公開鍵は、検索手段６３によって読み出される。
【０１０３】
データ要求受信手段６２は、復号装置７から、ネットワークＮを介して、暗号化データの要求（データ要求）を受信するものである。このデータ要求には、暗号化データを特定するための検索トークンが含まれている。
このデータ要求受信手段６２は、データ要求を検索手段６３に出力する。
【０１０４】
検索手段６３は、データ要求受信手段６２を介して受信した、復号装置７からのデータ要求に基づいて、データ記憶装置５に記憶されている暗号化データ（合成暗号化データ）を検索するものである。すなわち、検索手段６３は、データ記憶装置５に記憶されている暗号化データの中から、データ読出手段６４を介して、データ要求に含まれている検索トークンに対応するデータを読み出して検索する。なお、検索手段６３の検索手法については、動作の説明において詳細に説明する。
この検索手段６３は、検索したデータに、検索結果を検証するための検証用データを付加して、復号装置７に送信する。
【０１０５】
データ読出手段６４は、データ記憶装置５に記憶されている合成暗号化データ（ポリシー、署名付き暗号化ブルームフィルタ、証明書付き暗号化データ、証明書付き暗号化インデックス、証明書付き暗号化乱数）を読み出すものである。
データ送信手段６５は、検索手段６３で検索された暗号化データを、ネットワークＮを介して、当該データを要求した復号装置７に送信するものである。
このようにデータ検索装置６を構成することで、データ検索装置６は、クラウドサーバとして機能し、復号装置７から要求のあった暗号化データを提供することができる。
【０１０６】
このデータ検索装置６は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（データ検索プログラム）をＲＡＭに展開することにより、ＣＰＵ（コンピュータ）を、前記した各手段として機能させることができる。
【０１０７】
〔復号装置の構成〕
次に、図７を参照（適宜図１参照）して、本発明の実施形態に係る復号装置７の構成について説明する。ここで、復号装置７は、公開鍵受信手段７０と、公開鍵記憶手段７１と、登録要求送信手段７２と、属性付き秘密鍵受信手段７３と、属性付き秘密鍵記憶手段７４と、キーワード入力手段７５と、検索トークン生成手段７６と、トークン生成鍵取得手段７７と、データ要求送信手段７８と、データ受信手段７９と、署名用公開鍵受信手段８０と、検証・復号手段８１と、を備える。
【０１０８】
公開鍵受信手段７０は、鍵生成装置１で生成された属性ベース暗号および属性ベース検索可能暗号の公開鍵を受信するものである。ここでは、公開鍵受信手段７０は、ネットワークＮを介して、公開鍵を受信し、受信した公開鍵を公開鍵記憶手段７１に書き込み記憶する。
なお、公開鍵受信手段７０は、定期的に公開鍵を鍵生成装置１に要求し取得することとしてもよいし、検索トークン生成手段７６および検証・復号手段８１が公開鍵を参照するタイミングで鍵生成装置１に要求し取得することとしてもよい。
【０１０９】
公開鍵記憶手段７１は、公開鍵受信手段７０で受信した公開鍵を記憶するものである。この公開鍵記憶手段７１は、半導体メモリ等の一般的な記憶媒体で構成することができる。この公開鍵記憶手段７１に記憶された公開鍵は、検索トークン生成手段７６および検証・復号手段８１によって読み出される。
【０１１０】
登録要求送信手段７２は、復号装置７のデータの受信者を識別する識別子（受信者ｉｄ）と、受信者の属性Ｓとを含んだ登録要求を、ネットワークＮを介して、鍵生成装置１に送信するものである。
【０１１１】
属性付き秘密鍵受信手段７３は、鍵生成装置１で生成された属性付き秘密鍵を受信するものである。ここでは、属性付き秘密鍵受信手段７３は、ネットワークＮを介して、例えば、ＳＳＬ／ＴＬＳ等の暗号化通信プロトコルを用いて属性付き秘密鍵を受信し、受信した属性付き秘密鍵を属性付き秘密鍵記憶手段７４に書き込み記憶する。
【０１１２】
属性付き秘密鍵記憶手段７４は、属性付き秘密鍵受信手段７３で受信した属性付き秘密鍵を記憶するものである。この属性付き秘密鍵記憶手段７４は、半導体メモリ等の一般的な記憶媒体で構成することができる。この属性付き秘密鍵記憶手段７４に記憶された属性付き秘密鍵は、検索トークン生成手段７６および検証・復号手段８１によって読み出される。
【０１１３】
キーワード入力手段７５は、取得するデータに対するキーワードを入力するものである。このキーワード入力手段７５は、入力されたキーワードを、検索トークン生成手段７６および検証・復号手段８１に出力する。
【０１１４】
検索トークン生成手段７６は、入力されたキーワードから、取得するデータを特定するための検索トークンを生成するものである。
この検索トークン生成手段７６は、受信者ｉｄに対応するトークン生成鍵ｑｉｄを、トークン生成鍵取得手段７７を介して、鍵生成装置１から取得し、検索トークンを生成する。なお、検索トークンの生成については、動作の説明において詳細に説明する。
この検索トークン生成手段７６は、生成した検索トークンを、データ要求送信手段７８および検証・復号手段８１に出力する。
【０１１５】
トークン生成鍵取得手段７７は、入力されたキーワードに対応するトークン生成鍵を、ネットワークＮを介して、鍵生成装置１から取得するものである。このトークン生成鍵取得手段７７は、検索トークン生成手段７６からの要求に基づいて要求を鍵生成装置１に送信することで、トークン生成鍵を取得する。そして、トークン生成鍵取得手段７７は、取得したトークン生成鍵を検索トークン生成手段７６に出力する。
【０１１６】
データ要求送信手段７８は、検索トークン生成手段７６で生成された検索トークンを含んだデータ要求を、ネットワークＮを介して、データ検索装置６に送信するものである。
【０１１７】
データ受信手段７９は、データ要求送信手段７８で要求した暗号化データを、ネットワークＮを介して、データ検索装置６から受信するものである。
このデータ受信手段７９は、受信した暗号化データを、検証・復号手段８１に出力する。
【０１１８】
署名用公開鍵受信手段８０は、中間暗号化装置２で生成された署名用公開鍵を受信するものである。この署名用公開鍵受信手段８０は、受信した署名用公開鍵を検証・復号手段８１に出力する。
この署名用公開鍵受信手段は、検証・復号手段８１が署名用公開鍵を参照するタイミングで中間暗号化装置２に要求し取得する。
【０１１９】
検証・復号手段８１は、データ受信手段７９で受信した暗号化データ（合成暗号化データ）を検証し、復号するものである。ここでは、検証・復号手段８１は、検索結果検証手段８１０と、署名検証手段８１１と、ポリシー判定手段８１２と、ブルームフィルタ検証手段８１３と、データ復号手段８１４と、を備える。
【０１２０】
検索結果検証手段８１０は、暗号化データに付加されている検証用データに基づいて、検索結果が要求した検索トークンに対応する検索結果であるか否かを検証するものである。ここでは、検索結果検証手段８１０は、属性ベース検索可能暗号方式の検証を行う。この検証方式については、動作の説明において詳細に行う。
この検索結果検証手段８１０は、検証が正しく行われた暗号化データを署名検証手段８１１に出力する。
【０１２１】
署名検証手段８１１は、暗号化データに付加されている署名を検証するものである。この署名検証手段８１１は、署名用公開鍵受信手段８０を介して、中間暗号化装置２から、署名用公開鍵を取得し、署名の検証を行う。なお、署名方式は、中間暗号化装置２との間で予め共有しておく。
この署名検証手段８１１は、署名が正しく検証された暗号化データをポリシー判定手段８１２に出力する。
【０１２２】
ポリシー判定手段８１２は、受信者の属性が、暗号化データに付加されているポリシーを満たすか否かを判定するものである。このポリシー判定手法については、動作の説明において詳細に行う。
このポリシー判定手段８１２は、属性がポリシーを満たす暗号化データをブルームフィルタ検証手段８１３に出力する。
【０１２３】
ブルームフィルタ検証手段８１３は、暗号化データに付加されている暗号化ブルームフィルタを検証するものである。ブルームフィルタは、インデックス内にキーワードが含まれていない（陰性）場合を、１００％の確率で確認することができる。そこで、ブルームフィルタ検証手段８１３は、インデックス内にキーワードが含まれていない場合を除外する処理を行う。このブルームフィルタ検証手段８１３の処理については、動作の説明において詳細に行う。
このブルームフィルタ検証手段８１３は、最終的にキーワードに対応する暗号化データをデータ復号手段８１４に出力する。
【０１２４】
データ復号手段８１４は、暗号化データを復号するものである。この復号処理については、動作の説明において詳細に行う。
なお、検証・復号手段８１の各手段において、検証で失敗した場合、図示を省略した表示装置にエラーメッセージを表示することとしてもよい。
【０１２５】
このように復号装置７を構成することで、復号装置７は、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定して暗号化されたデータを、復号装置７のユーザの属性に応じて復号することができる。また、復号装置７は、指定されたキーワードに合致するデータを復号することができる。
【０１２６】
この復号装置７は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（復号プログラム）をＲＡＭに展開することにより、ＣＰＵ（コンピュータ）を、前記した各手段として機能させることができる。
【０１２７】
［属性ベース秘匿検索システムの動作］
次に、本発明の実施形態に係る属性ベース秘匿検索システムＳＡの動作について説明する。ここでは、鍵（公開鍵、秘密鍵）の生成・配信動作と、データの中間暗号化および暗号化動作と、データの復号動作とに分けて説明する。
【０１２８】
〔鍵（公開鍵、秘密鍵）生成・配信動作〕
最初に、図８を参照（構成については、適宜図３〜図７参照）して、属性ベース秘匿検索システムＳＡの鍵（公開鍵、秘密鍵）の生成・配信動作について説明する。
まず、鍵生成装置１は、パラメータ入力手段１００によって、セキュリティパラメータを外部から入力する（Ｓ１０）。
そして、鍵生成装置１は、公開鍵・マスタ鍵生成手段１０１によって、Ｓ１０で入力されたパラメータに基づいて、公開鍵およびマスタ鍵を生成する（Ｓ１１）。なお、このＳ１１における公開鍵・マスタ鍵生成動作については、図９を参照して後で詳細に説明する。
【０１２９】
そして、鍵生成装置１は、公開鍵・マスタ鍵生成手段１０１によって、生成した公開鍵を公開鍵記憶手段１０２に書き込み記憶し、生成したマスタ鍵をマスタ鍵記憶手段１０３に書き込み記憶する（Ｓ１２）。
その後、鍵生成装置１は、公開鍵送信手段１０４によって、Ｓ１２で公開鍵記憶手段１０２に記憶されている公開鍵を、中間暗号化装置２、委託暗号化装置４および復号装置７に送信（公開）する（Ｓ１３）。
【０１３０】
そして中間暗号化装置２は、公開鍵受信手段２３によって、Ｓ１３で送信された公開鍵を受信し、公開鍵記憶手段２４に書き込み記憶する（Ｓ１４）。
また、委託暗号化装置４は、公開鍵受信手段４０によって、Ｓ１３で送信された公開鍵を受信し、公開鍵記憶手段４１に書き込み記憶する（Ｓ１５）。さらに、委託暗号化装置４は、公開鍵送信手段４２によって、Ｓ１５で受信した公開鍵を、同じクラウドサーバ３内のデータ検索装置６に送信する（Ｓ１６）。
そして、データ検索装置６は、公開鍵受信手段６０によって、Ｓ１６で送信された公開鍵を受信し、公開鍵記憶手段６１に書き込み記憶する（Ｓ１７）。
ここでは、データ検索装置６は、鍵生成装置１の負荷を減らすために、委託暗号化装置４から公開鍵を取得しているが、もちろん、直接、鍵生成装置１から取得することとしてもよい。
【０１３１】
また、復号装置７は、公開鍵受信手段７０によって、Ｓ１３で送信された公開鍵を受信し、公開鍵記憶手段７１に書き込み記憶する（Ｓ１８）。
そして、復号装置７は、登録要求送信手段７２によって、受信者の属性Ｓと受信者ｉｄとを含んだ登録要求を、ネットワークＮを介して、鍵生成装置１に送信する（Ｓ１９）。
さらに、鍵生成装置１は、以下の動作によって、個別の復号装置７を対象として属性付き秘密鍵を生成する。
すなわち、鍵生成装置１は、属性入力手段１１０によって、個別の復号装置７からの登録要求（受信者に対する属性Ｓおよび受信者ｉｄ）を受信する（Ｓ２０）。
【０１３２】
そして、鍵生成装置１は、秘密鍵生成手段１１１によって、Ｓ１２で公開鍵記憶手段１０２に記憶された公開鍵と、マスタ鍵記憶手段１０３に記憶されたマスタ鍵と、Ｓ２０で受信した登録要求内の属性Ｓおよび受信者ｉｄとに基づいて、秘密鍵を生成する（Ｓ２１）。なお、このＳ２１における秘密鍵生成動作については、図１２を参照して後で詳細に説明する。
さらに、鍵生成装置１は、属性付き秘密鍵生成手段１１２によって、Ｓ２１で生成された秘密鍵に、Ｓ２０で入力された属性Ｓを関連付けて、属性付き秘密鍵を生成する（Ｓ２２）。
その後、鍵生成装置１は、属性付き秘密鍵送信手段１１３によって、Ｓ２２で生成された属性付き秘密鍵を、復号装置７に送信する（Ｓ２３）。
【０１３３】
一方、復号装置７は、属性付き秘密鍵受信手段７３によって、Ｓ２３で送信された属性付き秘密鍵を受信し、属性付き秘密鍵記憶手段７４に書き込み記憶する（Ｓ２４）。
【０１３４】
以上の動作により、属性ベース秘匿検索システムＳＡは、鍵生成装置１によって、属性ベース暗号および属性ベース検索可能暗号における鍵（公開鍵、秘密鍵）を生成し、鍵を必要とする中間暗号化装置２、クラウドサーバ３（委託暗号化装置４、データ検索装置６）、および復号装置７に送信することができる。
【０１３５】
（公開鍵・マスタ鍵生成動作）
次に、図９を参照（構成については、適宜図３参照）して、図８のＳ１１の動作（公開鍵・マスタ鍵生成動作）について詳細に説明する。
まず、鍵生成装置１は、ハッシュ関数選択手段１０１ａによって、予め準備した複数のハッシュ関数の中から、ブルームフィルタで使用するｋ個のハッシュ関数（ｈ１′，…，ｈｋ′）を選択する（Ｓ１１０）。さらに、鍵生成装置１は、ハッシュ関数選択手段１０１ａによって、セキュリティパラメータのビット長ｓｐのデータを、ブルームフィルタのビット長ｍのデータに変換するハッシュ関数ｈを、予め準備した複数のハッシュ関数の中から選択する（Ｓ１１１）。
そして、鍵生成装置１は、第１公開鍵・マスタ鍵生成手段１０１ｂによって、委託可能な属性ベース暗号方式（ＡＢＥＯ）における公開鍵（第１公開鍵）とマスタ鍵（第１マスタ鍵）とを生成する（Ｓ１１２）。
【０１３６】
この第１公開鍵・マスタ鍵生成手段１０１ｂの動作（ＡＢＥＯのＳｅｔｕｐアルゴリズム）については、さらに、図１０を参照して説明する。
図１０に示すように、第１公開鍵・マスタ鍵生成手段１０１ｂは、セキュリティパラメータで特定される大きさ（ビット長ｓｐ）の素数ｐを選択し、当該素数ｐを位数（素数位数ｐ）とする巡回群Ｇ，ＧＴを選択する（Ｓ１１２０）。
また、第１公開鍵・マスタ鍵生成手段１０１ｂは、巡回群Ｇ，ＧＴがＧ×Ｇ→ＧＴとなる双線形写像ｅを選択する（Ｓ１１２１）。例えば、第１公開鍵・マスタ鍵生成手段１０１ｂは、ｅ：Ｇ×Ｇ→ＧＴとなる双線形写像ｅとして、一般的な“Ｗｅｉｌ  Ｐａｉｒｉｎｇ”、“Ｔａｔｅ  Ｐａｉｒｉｎｇ”等に基づいて楕円曲線のパラメータを選択する。ここで、双線形写像ｅは、２つの引数を持つｅ（・，・）で表される写像である。
【０１３７】
そして、第１公開鍵・マスタ鍵生成手段１０１ｂは、巡回群Ｇの中からランダムに１つの生成元ｇを選択（ｇ∈Ｇ）する（Ｓ１１２２）。
また、第１公開鍵・マスタ鍵生成手段１０１ｂは、乱数α，ａを、Ｚｐからランダムに選択する（Ｓ１１２３）。なお、Ｚｐは、｛０，…，ｐ−１｝の整数の集合である。
さらに、第１公開鍵・マスタ鍵生成手段１０１ｂは、以下の式（１）〜式（３）のハッシュ関数Ｈ，Ｈ′，Ｈ″を予め準備した複数のハッシュ関数の中から選択する（Ｓ１１２４）。
【０１３８】
【数１】
2018148493.tif 000003
【０１３９】
ここで、｛０，１｝＊は、任意のビット列を示す。
すなわち、式（１）のハッシュ関数（第１ハッシュ関数）Ｈは、引数が１つ（Ｈ（・））で、任意のビット列の値を与えたとき、巡回群Ｇに属する値を返す関数である。式（２）のハッシュ関数（第２ハッシュ関数）Ｈ′は、引数が４つ（Ｈ′（・，・，・，・））で、第１，第２引数として巡回群ＧＴに属する値、第３，第４引数として任意のビット列の値を与えたとき、任意のビット列の値を返す関数である。また、式（３）のハッシュ関数（第３ハッシュ関数）Ｈ″は、引数が１つ（Ｈ″（・））で、任意のビット列の値を与えたとき、任意のビット列の値を返す関数である。
【０１４０】
そして、第１公開鍵・マスタ鍵生成手段１０１ｂは、Ｓ１１２１からＳ１１２３で選択されたｅ，ｇ，α，ａに基づいて、ｅ（ｇ，ｇ）のα乗およびｇのａ乗を演算する（Ｓ１１２５）。
そして、第１公開鍵・マスタ鍵生成手段１０１ｂは、以下の式（４）に示すように、素数位数ｐ、巡回群Ｇ，ＧＴ、双線形写像ｅ、生成元ｇ、演算値ｅ（ｇ，ｇ）α、ｇａおよびハッシュ関数Ｈ，Ｈ′，Ｈ″を、第１公開鍵ＡＢＥＯ．ｐｋとして生成する（Ｓ１１２６）。
【０１４１】
【数２】
2018148493.tif 000004
【０１４２】
また、第１公開鍵・マスタ鍵生成手段１０１ｂは、以下の式（５）に示すように、生成元ｇのα乗を演算して第１マスタ鍵ＡＢＥＯ．ｍｋを生成する（Ｓ１１２７）。
【０１４３】
【数３】
2018148493.tif 000005
【０１４４】
図９に戻って、公開鍵・マスタ鍵生成動作について説明を続ける。
鍵生成装置１は、第２公開鍵・マスタ鍵生成手段１０１ｃによって、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）における公開鍵（第２公開鍵）とマスタ鍵（第２マスタ鍵）とを生成する（Ｓ１１３）。
【０１４５】
この第２公開鍵・マスタ鍵生成手段１０１ｃの動作（ＡＢＫＳＯのＳｅｔｕｐアルゴリズム）については、さらに、図１１を参照して説明する。なお、図１１のＳ１１３０〜Ｓ１１３３の動作は、図１０のＳ１１２０〜Ｓ１１２３の動作と同じであるため、説明を省略する。
そして、第２公開鍵・マスタ鍵生成手段１０１ｃは、以下の式（６）〜式（８）のハッシュ関数Ｈ，Ｈ′，Ｈ″を予め準備した複数のハッシュ関数の中から選択する（Ｓ１１３４）。
【０１４６】
【数４】
2018148493.tif 000006
【０１４７】
なお、式（６）は式（１）、式（８）は式（３）と同じであるため、説明を省略する。式（７）のハッシュ関数（第２ハッシュ関数）Ｈ′は、引数が２つ（Ｈ′（・，・））で、第１引数として巡回群ＧＴに属する値、第２引数として任意のビット列の値を与えたとき、任意のビット列の値を返す関数である。
そして、第２公開鍵・マスタ鍵生成手段１０１ｃは、Ｓ１１３１からＳ１１３３で選択されたｅ，ｇ，α，ａに基づいて、ｅ（ｇ，ｇ）のα乗およびｇのａ乗を演算する（Ｓ１１３５）。
さらに、第２公開鍵・マスタ鍵生成手段１０１ｃは、以下の式（９）のメッセージ認証子を生成する関数（メッセージ認証子生成関数）Ｆを予め準備した関数の中から選択する（Ｓ１１３６）。
【０１４８】
【数５】
2018148493.tif 000007
【０１４９】
この式（９）のメッセージ認証子生成関数Ｆは、引数が２つ（Ｆ（・，・））で、第１引数として巡回群ＧＴに属する値、第２引数として任意のビット列の値を与えたとき、長さｍのビット列の値を返す関数である。
そして、第２公開鍵・マスタ鍵生成手段１０１ｃは、以下の式（１０）に示すように、素数位数ｐ、巡回群Ｇ，ＧＴ、双線形写像ｅ、生成元ｇ、演算値ｅ（ｇ，ｇ）α、ｇａ、メッセージ認証子生成関数Ｆおよびハッシュ関数Ｈ，Ｈ′，Ｈ″を、第２公開鍵ＡＢＫＳＯ．ｐｋとして生成する（Ｓ１１３７）。
【０１５０】
【数６】
2018148493.tif 000008
【０１５１】
また、第２公開鍵・マスタ鍵生成手段１０１ｃは、以下の式（１１）に示すように、Ｓ１１３３で選択した乱数αを第２マスタ鍵ＡＢＫＳＯ．ｍｋとする（Ｓ１１３８）。
【０１５２】
【数７】
2018148493.tif 000009
【０１５３】
図９に戻って、公開鍵・マスタ鍵生成動作について説明を続ける。
公開鍵・マスタ鍵生成手段１０１は、以下の式（１２）に示すように、Ｓ１１２で生成された第１公開鍵ＡＢＥＯ．ｐｋと、Ｓ１１３で生成された第２公開鍵ＡＢＫＳＯ．ｐｋと、Ｓ１１０およびＳ１１１で選択されたハッシュ関数ｈ，ｈ１′，…，ｈｋ′を、公開鍵ＰＫとして生成する（Ｓ１１４）。
【０１５４】
【数８】
2018148493.tif 000010
【０１５５】
さらに、公開鍵・マスタ鍵生成手段１０１は、以下の式（１３）に示すように、Ｓ１１２で生成された第１マスタ鍵ＡＢＥＯ．ｍｋと、Ｓ１１３で生成された第２マスタ鍵ＡＢＫＳＯ．ｍｋとを、マスタ鍵ＭＫとして生成する（Ｓ１１５）。
【０１５６】
【数９】
2018148493.tif 000011
【０１５７】
以上の動作により、鍵生成装置１は、属性ベース暗号および属性ベース検索可能暗号における公開鍵およびマスタ鍵を生成することができる。
【０１５８】
（秘密鍵生成動作）
次に、図１２を参照（構成については、適宜図３参照）して、図８のＳ２１の動作（秘密鍵生成動作）について詳細に説明する。
まず、鍵生成装置１は、第１秘密鍵生成手段１１１ａによって、委託可能な属性ベース暗号方式（ＡＢＥＯ）における秘密鍵（第１秘密鍵）を生成する（Ｓ２１０）。
【０１５９】
この第１秘密鍵生成手段１１１ａの動作については、さらに、図１３を参照して説明する。
図１３に示すように、第１秘密鍵生成手段１１１ａは、乱数ｔをＺｐからランダムに選択する（Ｓ２１００）。
そして、第１秘密鍵生成手段１１１ａは、公開鍵記憶手段１０２に記憶されている第１公開鍵の一部であるｇａと、マスタ鍵記憶手段１０３に記憶されている第１マスタ鍵（＝ｇα）を用いて、以下の式（１４）の演算を行い、第１秘密鍵の要素Ｋを求める（Ｓ２１０１）。
【０１６０】
【数１０】
2018148493.tif 000012
【０１６１】
そして、第１秘密鍵生成手段１１１ａは、公開鍵記憶手段１０２に記憶されている第１公開鍵の一部であるｇを用いて、以下の式（１５）の演算を行い、秘密鍵の要素Ｌを求める（Ｓ２１０２）。
【０１６２】
【数１１】
2018148493.tif 000013
【０１６３】
さらに、第１秘密鍵生成手段１１１ａは、属性Ｓのすべての属性値ｘにおいて、公開鍵記憶手段１０２に記憶されている第１公開鍵の一部であるハッシュ関数Ｈを用いて、以下の式（１６）の演算を行い、第１秘密鍵の要素Ｋｘ、すなわち、属性Ｓの属性値の個数分のハッシュ値を求める（Ｓ２１０３）。
【０１６４】
【数１２】
2018148493.tif 000014
【０１６５】
そして、第１秘密鍵生成手段１１１ａは、前記式（１４）〜式（１６）で演算された各要素で構成される以下の式（１７）に示す第１秘密鍵ＡＢＥＯ．ｓｋを生成する（Ｓ２１０４）。
【０１６６】
【数１３】
2018148493.tif 000015
【０１６７】
図１２に戻って、秘密鍵生成動作の説明を続ける。
鍵生成装置１は、第２秘密鍵生成手段１１１ｂによって、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）における秘密鍵（第２秘密鍵）を生成する（Ｓ２１１）。
【０１６８】
この第２秘密鍵生成手段１１１ｂの動作については、さらに、図１４を参照して説明する。
図１４のＳ２１１０〜Ｓ２１１３の動作は、図１３のＳ２１００〜Ｓ２１０３の第１公開鍵、第１マスタ鍵を用いる代わりに、第２公開鍵、第２マスタ鍵を用いる点が異なっているだけである。ただし、Ｓ２１１１の演算において、第２秘密鍵生成手段１１１ｂは、ｇαを、第２公開鍵の一部であるｇと第２マスタ鍵のαとで演算する。
そして、第２秘密鍵生成手段１１１ｂは、Ｓ２１１１の演算途中で生成されるｇａｔを、受信者ｉｄに対応付けて、受信者リスト記憶手段１１４に記憶する（Ｓ２１１４）。
そして、第２秘密鍵生成手段１１１ｂは、第２公開鍵、第２マスタ鍵を用いて、前記式（１４）〜式（１６）で演算された各要素で構成される以下の式（１８）に示す第２秘密鍵ＡＢＫＳＯ．ｓｋを生成する（Ｓ２１１５）。
【０１６９】
【数１４】
2018148493.tif 000016
【０１７０】
図１２に戻って、秘密鍵生成動作の説明を続ける。
秘密鍵生成手段１１１は、以下の式（１９）に示すように、Ｓ２１０で生成された第１秘密鍵ＡＢＥＯ．ｓｋと、Ｓ２１１で生成された第２秘密鍵ＡＢＫＳＯ．ｓｋとを、秘密鍵ＳＫとして生成する（Ｓ２１２）。
【０１７１】
【数１５】
2018148493.tif 000017
【０１７２】
以上の動作により、鍵生成装置１は、属性ベース暗号および属性ベース検索可能暗号における秘密鍵を生成することができる。
【０１７３】
〔データ暗号化（中間暗号化を含む）動作〕
次に、図１５を参照（構成については、適宜図４〜図６参照）して、属性ベース秘匿検索システムＳＡのデータの中間暗号化および暗号化動作について説明する。
まず、中間暗号化装置２は、ポリシー入力手段２０によって、暗号化データを復号するための条件（復号条件）となるポリシーを外部から入力する（Ｓ４０）。なお、このポリシーは、線形秘密分散法（ＬＳＳＳ）によって予め生成されたアクセス行列Ａと、アクセス行列Ａの各行に対応する属性の属性種別を属性値に変換する写像ρとで構成される。
また、中間暗号化装置２は、データ入力手段２１によって、暗号化の対象となるデータを外部から入力する（Ｓ４１）。
さらに、中間暗号化装置２は、インデックス入力手段２２によって、暗号化の対象となるデータを検索するためのインデックスを入力する（Ｓ４２）。
【０１７４】
ここでは、Ｓ４１では、ｄ個のデータ集合ＦＳ（ＦＳ＝｛Ｆ１，…，Ｆｄ｝）が入力されることとする。また、Ｓ４２では、ｎ個のインデックス（インデックス内には、複数のキーワードを含む）集合ＫＧ（ＫＧ＝｛ＫＧ１，…，ＫＧｎ｝）が入力されることとする。ここで、ＫＧｎは、同じポリシーで暗号化を行うキーワードの集合である。さらに、Ｓ４１では、キーワードｗを含むデータを識別する識別子の集合ＭＰ（ｗ）が入力されることとする。
【０１７５】
また、Ｓ４０では、インデックスＫＧｎを暗号化するためのポリシー（Ａ，ρ）＝｛（Ａ１，ρ１），…，（Ａｎ，ρｎ）｝と、データＦｄを暗号化するためのポリシー（Ａ′，ρ′）＝｛（Ａ１′，ρ１′），…，（Ａｄ′，ρｄ′）｝が入力されることとする。
そして、中間暗号化装置２は、中間暗号化データ生成手段２５によって、公開鍵記憶手段２４に記憶されている公開鍵と、ポリシー入力手段２０で入力されたポリシーとに基づいて、Ｓ４１で入力されたデータに対して、属性ベース暗号方式における中間的な暗号化を行う（Ｓ４３）。なお、このＳ４３におけるデータを証明書付き中間暗号化する動作については、図１６を参照して後で詳細に説明する。
【０１７６】
そして、中間暗号化装置２は、中間暗号化インデックス生成手段２６によって、公開鍵記憶手段２４に記憶されている公開鍵と、Ｓ４０で入力されたポリシーとに基づいて、Ｓ４２で入力されたインデックスに対して、属性ベース検索可能暗号方式における中間的な暗号化を行う（Ｓ４４）。なお、このＳ４４におけるインデックスを証明書付き中間暗号化する動作については、図１８を参照して後で詳細に説明する。
ここで、中間暗号化装置２は、署名用鍵生成手段３１によって、電子署名で使用する署名用鍵（署名用秘密鍵、署名用公開鍵）を生成する（Ｓ４５）。
【０１７７】
そして、中間暗号化装置２は、暗号化ブルームフィルタ生成手段２７によって、Ｓ４２で入力されたインデックスと、Ｓ４５で生成された署名用秘密鍵と、乱数とを用いて、署名付き暗号化ブルームフィルタを生成する（Ｓ４６）。なお、このＳ４６におけるブルームフィルタを暗号化する動作については、図２０を参照して後で詳細に説明する。
【０１７８】
続けて、中間暗号化装置２は、中間暗号化乱数生成手段２８によって、Ｓ４６で署名付き暗号化ブルームフィルタを生成する際に用いた乱数に対して、属性ベース暗号方式における中間的な暗号化を行う（Ｓ４７）。なお、このＳ４７における乱数を証明書付き中間暗号化する動作については、図２１を参照して後で詳細に説明する。
そして、中間暗号化装置２は、データ合成手段２９によって、Ｓ４０で入力されたポリシーと、Ｓ４３で生成された証明書付き中間暗号化データと、Ｓ４４で生成された証明書付き中間暗号化インデックスと、Ｓ４６で生成された署名付き暗号化ブルームフィルタと、Ｓ４７で生成された証明書付き中間暗号化乱数とを合成する（Ｓ４８）。
【０１７９】
そして、中間暗号化装置２は、データ送信手段３０によって、Ｓ４８で合成された中間暗号化データ（ポリシー、証明書付き中間暗号化データ、証明書付き中間暗号化インデックス、署名付き暗号化ブルームフィルタ、証明書付き中間暗号化乱数）を、ネットワークＮを介して、委託暗号化装置４に送信する（Ｓ４９）。
そして、委託暗号化装置４は、データ受信手段４３によって、Ｓ４９で送信された中間暗号化データ（ポリシー、証明書付き中間暗号化データ、証明書付き中間暗号化インデックス、署名付き暗号化ブルームフィルタ、証明書付き中間暗号化乱数）を受信する（Ｓ５０）。
その後、委託暗号化装置４は、データ分離手段４４によって、Ｓ５０で受信した中間暗号化データを、個々のデータ（ポリシー、証明書付き中間暗号化データ、証明書付き中間暗号化インデックス、署名付き暗号化ブルームフィルタ、証明書付き中間暗号化乱数）に分離する（Ｓ５１）。
【０１８０】
そして、委託暗号化装置４は、データ暗号化手段４５０によって、公開鍵記憶手段４１に記憶されている公開鍵と、Ｓ５１で分離されたポリシーとに基づいて、Ｓ５１で分離された証明書付き中間暗号化データにさらに暗号化処理を継続して実行して、暗号化データを生成する（Ｓ５２）。なお、このＳ５２における暗号化データ生成動作については、図２２を参照して後で詳細に説明する。
また、委託暗号化装置４は、インデックス暗号化手段４５１によって、公開鍵記憶手段４１に記憶されている公開鍵と、Ｓ５１で分離されたポリシーとに基づいて、Ｓ５１で分離された証明書付き中間暗号化インデックスにさらに暗号化処理を継続して実行して、暗号化インデックスを生成する（Ｓ５３）。なお、このＳ５３における暗号化インデックス生成動作については、図２４を参照して後で詳細に説明する。
【０１８１】
さらに、委託暗号化装置４は、乱数暗号化手段４５２によって、公開鍵記憶手段４１に記憶されている公開鍵と、Ｓ５１で分離されたポリシーとに基づいて、Ｓ５１で分離された証明書付き中間暗号化乱数にさらに暗号化処理を継続して実行して、暗号化乱数を生成する（Ｓ５４）。なお、このＳ５４における暗号化乱数生成動作については、図２６を参照して後で詳細に説明する。
【０１８２】
そして、委託暗号化装置４は、データ合成手段４６によって、Ｓ５１で分離されたポリシーおよび署名付き暗号化ブルームフィルタと、Ｓ５２で生成された証明書付き暗号化データと、Ｓ５３で生成された証明書付き暗号化インデックスと、Ｓ５４で生成された証明書付き暗号化乱数とを合成する（Ｓ５５）。
そして、委託暗号化装置４は、データ書込手段４７によって、Ｓ５５で合成された暗号化データ（ポリシー、証明書付き暗号化データ、証明書付き暗号化インデックス、証明書付き暗号化乱数、署名付き暗号化ブルームフィルタ）を、データ記憶装置５に書き込み、記憶する（Ｓ５６）。
【０１８３】
以上の動作により、属性ベース秘匿検索システムＳＡは、中間暗号化装置２と委託暗号化装置４とで暗号化処理を分散して行い、暗号化データをデータ記憶装置５に記憶させることができる。
【０１８４】
（中間暗号化データ生成動作）
次に、図１６を参照（構成については、適宜図４参照）して、中間暗号化装置２の中間暗号化データ生成手段２５が行う図１５のＳ４３の動作（中間暗号化データ生成動作）について詳細に説明する。
まず、中間暗号化データ生成手段２５は、データ集合ＦＳのデータの個数を計数するカウンタｉを初期化（ｉ＝１）する（Ｓ４３０）。
そして、中間暗号化データ生成手段２５は、予め定めた共通鍵暗号化方式により、共通鍵ＳＥ．ｓｋｉを生成する（Ｓ４３１）。
そして、中間暗号化データ生成手段２５は、データＦｉを共通鍵ＳＥ．ｓｋｉで暗号化して、暗号化データｃｐｈＳＥｉを生成する（Ｓ４３２）。
そして、中間暗号化データ生成手段２５は、委託可能な属性ベース暗号方式（ＡＢＥＯ）の中間暗号化処理（ABEO.Encryptu）により、Ｓ４３１で生成した共通鍵ＳＥ．ｓｋｉを、ポリシー（Ａｉ′，ρｉ′）で中間暗号化して、中間暗号化共通鍵ｃｐｈｓｋｉ′と証明書πｓｋｉを生成する（Ｓ４３３）。
【０１８５】
このＡＢＥＯの中間暗号化処理（ABEO.Encryptu）について、さらに、図１７を参照して説明する。
図１７に示すように、ＡＢＥＯの中間暗号化処理（以下、ＡＢＥＯ中間暗号化）は、ポリシーとして入力されるアクセス行列の列の数をｎとしたとき、（２×ｎ）個分の乱数ｓ，ｙ２，…，ｙｎ，β１，β２，…，βｎを、Ｚｐからランダムに選択する（Ｓ４３３０）。なお、Ｚｐは、第１公開鍵の一部である素数位数ｐに対する｛０，…，ｐ−１｝の整数の集合である。
そして、ＡＢＥＯ中間暗号化は、選択した乱数から、以下の式（２０）により、中間暗号化データの要素となるベクトルｖを求める（Ｓ４３３１）。
【０１８６】
【数１６】
2018148493.tif 000018
【０１８７】
また、ＡＢＥＯ中間暗号化は、乱数ｓと、公開鍵記憶手段２４に記憶されている第１公開鍵の一部であるｅ（ｇ，ｇ）αおよびｇとにより、以下の式（２１）を演算することで、中間暗号化データの要素Ｃ，Ｃ′を求める（Ｓ４３３２）。
【０１８８】
【数１７】
2018148493.tif 000019
【０１８９】
ここで、Ｍは、暗号化対象である共通鍵である。
さらに、ＡＢＥＯ中間暗号化は、ポリシーに含まれるアクセス行列Ａをｍ行ｎ列としたとき、以下の式（２２）に示すように、アクセス行列Ａの行ｉごとに、要素の値が“１”である列番号Ｊｉを選択する（Ｓ４３３３）。
【０１９０】
【数１８】
2018148493.tif 000020
【０１９１】
例えば、アクセス行列Ａが、以下の式（２３）に示す３行２列の行列であった場合、Ｊ１＝｛２｝、Ｊ２＝｛１，２｝、Ｊ３＝｛１｝となる。
【０１９２】
【数１９】
2018148493.tif 000021
【０１９３】
そして、ＡＢＥＯ中間暗号化は、以下の式（２４）を演算することで、中間暗号化データの要素Ｅｉ（１≦ｉ≦ｍ）を求める（Ｓ４３３４）。
【０１９４】
【数２０】
2018148493.tif 000022
【０１９５】
そして、ＡＢＥＯ中間暗号化は、前記式（２０），式（２１），式（２４）で演算された各要素で構成される以下の式（２５）に示す中間暗号化データｃｐｈ′を生成する（Ｓ４３３５）。
【０１９６】
【数２１】
2018148493.tif 000023
【０１９７】
ここで、＜＞は、データの連結を示し、予め定めたデータフォーマットで連結することを意味する。なお、連結の順番は、予めデータを利用する側と共通であれば、どのような順番でも構わない。
そして、ＡＢＥＯ中間暗号化は、中間暗号化データｃｐｈ′の正当性を検証するための情報である証明書πを、以下の式（２６）を演算することで生成する（Ｓ４３３６）。
【０１９８】
【数２２】
2018148493.tif 000024
【０１９９】
ここで、ｅ（ｇ，ｇ）α、ハッシュ関数Ｈ′，Ｈ″は、公開鍵記憶手段２４に記憶されている第１公開鍵の一部である。ｓは、Ｓ４３３０で選択された乱数である。ｓｉｄは、送信者を識別する識別子である。
【０２００】
また、ｐｏｓＡは、アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報（文字列）である。例えば、アクセス行列Ａが前記式（２３）の場合、ｐｏｓＡは、アクセス行列Ａの要素が“１”となるすべての位置を文字列で表した、｛（１，２），（２，１），（２，２），（３，１）｝となる。
図１６に戻って、中間暗号化データ生成動作について、説明を続ける。
中間暗号化データ生成手段２５は、Ｓ４３２で生成されたｃｐｈＳＥｉと、Ｓ４３３で生成されたｃｐｈｓｋｉ′とを対応付ける（ｃｐｈＦｉ′＝（ｃｐｈｓｋｉ′，ｃｐｈＳＥｉ）；Ｓ４３４）。
そして、中間暗号化データ生成手段２５は、入力されるすべてのデータ（ｄ個）に対して、中間暗号化を行ったか否かを判定する（Ｓ４３５）。
【０２０１】
ここで、すべてのデータについて中間暗号化が終了していない場合（Ｓ４３５でＮｏ）、中間暗号化データ生成手段２５は、ｉに“１”を加算して（Ｓ４３６）、Ｓ４３１に戻って動作を継続する。
一方、すべてのデータについて中間暗号化が終了した場合（Ｓ４３５でＹｅｓ）、中間暗号化データ生成手段２５は、動作を終了する。
【０２０２】
（中間暗号化インデックス生成動作）
次に、図１８を参照（構成については、適宜図４参照）して、中間暗号化装置２の中間暗号化インデックス生成手段２６が行う図１５のＳ４４の動作（中間暗号化インデックス生成動作）について詳細に説明する。
【０２０３】
まず、中間暗号化インデックス生成手段２６は、インデックス集合ＫＧの個数を計数するカウンタｉを初期化（ｉ＝１）する（Ｓ４４０）。
中間暗号化インデックス生成手段２６は、インデックス集合ＫＧｉに含まれるすべてのキーワードｗについて、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）の中間暗号化処理（ABEO.EncDO）により、ポリシー（Ａｉ，ρｉ）で中間暗号化して、中間暗号化インデックスｃｐｈｗ′と証明書πｗを生成する（Ｓ４４１）。
【０２０４】
このＡＢＫＳＯの中間暗号化処理（ABEO.EncDO）について、さらに、図１９を参照して説明する。
図１９に示すように、ＡＢＫＳＯの中間暗号化処理（以下、ＡＢＫＳＯ中間暗号化）は、ポリシーとして入力されるアクセス行列の列の数をｎとしたとき、（２×ｎ）個分の乱数ｓ，ｙ２，…，ｙｎ，β１，β２，…，βｎを、Ｚｐからランダムに選択する（Ｓ４４１０）。なお、Ｚｐは、第２公開鍵の一部である素数位数ｐに対する｛０，…，ｐ−１｝の整数の集合である。
そして、ＡＢＫＳＯ中間暗号化は、選択した乱数から、前記式（２０）と同様に、中間暗号化インデックスの要素となるベクトルｖを求める（Ｓ４４１１）。
そして、ＡＢＫＳＯ中間暗号化は、乱数ｓと、公開鍵記憶手段２４に記憶されている第２公開鍵の一部であるｇとにより、以下の式（２７）を演算することで、中間暗号化データの要素Ｃ′を求める（Ｓ４４１２）。
【０２０５】
【数２３】
2018148493.tif 000025
【０２０６】
また、ＡＢＫＳＯ中間暗号化は、ランダムなビット列ｔ＾（ｔハット）を選択する（Ｓ４４１３）。
そして、ＡＢＫＳＯ中間暗号化は、乱数ｓと、公開鍵記憶手段２４に記憶されている第２公開鍵の一部であるｅ，ｅ（ｇ，ｇ）αおよびＨとにより、以下の式（２８）を演算することで、ｋ＾を求める（Ｓ４４１４）。
【０２０７】
【数２４】
2018148493.tif 000026
【０２０８】
さらに、ＡＢＫＳＯ中間暗号化は、Ｓ４４１４の演算結果ｋ＾と、Ｓ４４１３で選択したビット列ｔ＾とを引数として、公開鍵記憶手段２４に記憶されている第２公開鍵の一部である関数Ｆを演算し、以下の式（２９）に示すように、キーワードｗごとの変数ｉｄｘ（ｗ）に、ｔ＾とＦの演算結果とを設定する（Ｓ４４１５）。
【０２０９】
【数２５】
2018148493.tif 000027
【０２１０】
さらに、ＡＢＫＳＯ中間暗号化は、ポリシーに含まれるアクセス行列Ａをｍ行ｎ列としたとき、前記式（２１）に示すように、アクセス行列Ａの行ｉごとに、要素の値が“１”である列番号Ｊｉを選択する（Ｓ４４１６）。
そして、ＡＢＫＳＯ中間暗号化は、前記式（２３）を演算することで、中間暗号化インデックスの要素Ｅｉ（１≦ｉ≦ｍ）を求める（Ｓ４４１７）。
そして、ＡＢＫＳＯ中間暗号化は、以下の式（３０）に示す中間暗号化インデックスｃｐｈ′を生成する（Ｓ４４１８）。
【０２１１】
【数２６】
2018148493.tif 000028
【０２１２】
そして、ＡＢＫＳＯ中間暗号化は、中間暗号化インデックスｃｐｈ′の正当性を検証するための情報である証明書πを、以下の式（３１）を演算することで生成する（Ｓ４４１９）。
【０２１３】
【数２７】
2018148493.tif 000029
【０２１４】
これによって、インデックス集合ＫＧｉに含まれるすべてのキーワードｗについて、中間暗号化インデックスｃｐｈｗ′と証明書πｗが生成される。
図１８に戻って、中間暗号化インデックス生成動作について、説明を続ける。
中間暗号化インデックス生成手段２６は、以下の式（３２）に示すように、キーワードｗを含むデータＦを識別する識別子の集合ＭＰ（ｗ）を、中間暗号化インデックスｃｐｈｗ′に対応するように、中間暗号化インデックスｃｐｈｗ′に対するデータＦを識別する識別子の集合ＭＰ（ｃｐｈｗ′）を設定する（Ｓ４４２）。
【０２１５】
【数２８】
2018148493.tif 000030
【０２１６】
そして、中間暗号化インデックス生成手段２６は、入力されるすべてのインデックス（ｎ個）に対して、中間暗号化を行ったか否かを判定する（Ｓ４４３）。
ここで、すべてのインデックスについて中間暗号化が終了していない場合（Ｓ４４３でＮｏ）、中間暗号化インデックス生成手段２６は、ｉに“１”を加算して（Ｓ４４４）、Ｓ４４１に戻って動作を継続する。
一方、すべてのインデックスについて中間暗号化が終了した場合（Ｓ４４３でＹｅｓ）、中間暗号化インデックス生成手段２６は、動作を終了する。
【０２１７】
（暗号化ブルームフィルタ生成動作）
次に、図２０を参照（構成については、適宜図４参照）して、中間暗号化装置２の暗号化ブルームフィルタ生成手段２７が行う図１５のＳ４６の動作（暗号化ブルームフィルタ生成動作）について詳細に説明する。
まず、暗号化ブルームフィルタ生成手段２７は、インデックス集合ＫＧの個数を計数するカウンタｉを初期化（ｉ＝１）する（Ｓ４６０）。
【０２１８】
そして、暗号化ブルームフィルタ生成手段２７のブルームフィルタ生成手段２７０は、公開鍵記憶手段２４に記憶されているハッシュ関数（ｈ１′，…，ｈｋ′）を用いて、インデックス入力手段２２から入力されたインデック集合ＫＧ（ＫＧ＝｛ＫＧ１，…，ＫＧｎ｝）のｉ番目のインデックスＫＧｉから、ブルームフィルタＢＦｉを生成する（Ｓ４６１）。すなわち、ブルームフィルタ生成手段２７０は、初期状態のビットがすべて“０”のブルームフィルタＢＦｉに，ハッシュ関数（ｈ１′，…，ｈｋ′）のそれぞれの演算を行ったＫＧｉのハッシュ値に対応するビットをセットすることで、ブルームフィルタＢＦｉを生成する。
【０２１９】
そして、暗号化ブルームフィルタ生成手段２７は、公開鍵記憶手段２４に記憶されている第２公開鍵の一部であるＧＴから、乱数Ｍをランダムに選択する（Ｓ４６２）。
そして、暗号化ブルームフィルタ生成手段２７のブルームフィルタ暗号化手段２７１は、以下の式（３３）に示すように、公開鍵記憶手段２４に記憶されているハッシュ関数ｈにより、Ｓ４６０で選択された乱数Ｍのハッシュ値を演算し、Ｓ４６２で生成されたブルームフィルタＢＦｉと排他的論理和演算することで、暗号化ブルームフィルタＢＦｉ′を生成する（Ｓ４６３）。
【０２２０】
【数２９】
2018148493.tif 000031
【０２２１】
さらに、暗号化ブルームフィルタ生成手段２７の署名付与手段２７２は、署名用鍵生成手段３１で生成された署名用秘密鍵により、Ｓ４６３で生成された暗号化ブルームフィルタＢＦｉ′の署名σＢＦｉを生成する（Ｓ４６４）。
これによって、インデックスＫＧｉに対応する暗号化ブルームフィルタＢＦｉ′と、その署名σＢＦｉとが生成される。
【０２２２】
ここで、すべてのインデックスについてブルームフィルタの暗号化が終了していない場合（Ｓ４６５でＮｏ）、暗号化ブルームフィルタ生成手段２７は、ｉに“１”を加算して（Ｓ４６６）、Ｓ４６１に戻って動作を継続する。
一方、すべてのインデックスについてブルームフィルタの暗号化が終了した場合（Ｓ４６５でＹｅｓ）、暗号化ブルームフィルタ生成手段２７は、動作を終了する。
【０２２３】
（中間暗号化乱数生成動作）
次に、図２１を参照（構成については、適宜図４参照）して、中間暗号化装置２の中間暗号化乱数生成手段２８が行う図１５のＳ４７の動作（中間暗号化乱数生成動作）について詳細に説明する。
まず、中間暗号化乱数生成手段２８は、インデックス集合ＫＧの個数を計数するカウンタｉを初期化（ｉ＝１）する（Ｓ４７０）。
中間暗号化乱数生成手段２８は、図２０のＳ４６２で選択された乱数Ｍについて、委託可能な属性ベース暗号方式（ＡＢＥＯ）の中間暗号化処理（ABEO.Encryptu）により、ポリシー（Ａｉ，ρｉ）で中間暗号化して、ブルームフィルタＢＦｉに対応する中間暗号化乱数ｃｐｈＢＦｉ′と証明書πＢＦｉを生成する（Ｓ４７１）。
なお、このＳ４７１の中間暗号化処理は、図１７の動作と同じであるため、説明を省略する。
【０２２４】
ここで、すべてのインデックスについて乱数の中間暗号化が終了していない場合（Ｓ４７２でＮｏ）、中間暗号化乱数生成手段２８は、ｉに“１”を加算して（Ｓ４７３）、Ｓ４７１に戻って動作を継続する。
一方、すべてのインデックスについて乱数の中間暗号化が終了した場合（Ｓ４７２でＹｅｓ）、中間暗号化乱数生成手段２８は、動作を終了する。
【０２２５】
（暗号化データ生成動作）
次に、図２２を参照（構成については、適宜図５参照）して、委託暗号化装置４のデータ暗号化手段４５０が行う図１５のＳ５２の動作（暗号化データ生成動作）について詳細に説明する。
まず、データ暗号化手段４５０は、データ集合ＦＳの個数を計数するカウンタｉを初期化（ｉ＝１）する（Ｓ５２０）。
そして、データ暗号化手段４５０は、委託可能な属性ベース暗号方式（ＡＢＥＯ）の暗号化処理（ABEO.Encryptc）により、図１６のＳ４３３で生成された中間暗号化共通鍵ｃｐｈｓｋｉ′を暗号化する（Ｓ５２１）。
【０２２６】
このＡＢＥＯの暗号化処理（ABEO.Encryptc）について、さらに、図２３を参照して説明する。
このＡＢＥＯの暗号化処理（以下、ＡＢＥＯ暗号化）は、ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行ｉ（１≦ｉ≦ｍ）ごとに、Ａｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）をアクセス行列Ａのｉ行目ベクトルとして、以下の式（３４）に示すように、中間暗号化データｃｐｈ′（式（２４）参照）に含まれるベクトルｖとの内積λｉ′を演算する（Ｓ５２１０）。
【０２２７】
【数３０】
2018148493.tif 000032
【０２２８】
また、ＡＢＥＯ暗号化は、ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行数分（ｍ個）の乱数ｒ１，ｒ２，…，ｒｍを、Ｚｐからランダムに選択する（Ｓ５２１１）。なお、Ｚｐは、第１公開鍵の一部である素数位数ｐに対する｛０，…，ｐ−１｝の整数の集合である。
そして、ＡＢＥＯ暗号化は、選択した乱数ｒ１，ｒ２，…，ｒｍと、公開鍵記憶手段４１に記憶されている第１公開鍵の一部であるｇａ、ｇおよびハッシュ関数Ｈと、ポリシーに含まれる写像ρと、中間暗号化データｃｐｈ′（式（２５）参照）に含まれる要素Ｅｉとにより、以下の式（３５）を演算することで、暗号化データの要素｛Ｃｉ，Ｄｉ｝（１≦ｉ≦ｍ）を求める（Ｓ５２１２）。
【０２２９】
【数３１】
2018148493.tif 000033
【０２３０】
そして、ＡＢＥＯ暗号化は、中間暗号化データに含まれている要素Ｃ，Ｃ′と、前記式（３５）で演算された各要素とで構成される以下の式（３６）に示す暗号化データｃｐｈを生成する（Ｓ５２１３）。
【０２３１】
【数３２】
2018148493.tif 000034
【０２３２】
図２２に戻って、暗号化データ生成動作について、説明を続ける。
データ暗号化手段４５０は、Ｓ４３２（図１６参照）で生成されたｃｐｈＳＥｉと、Ｓ５２１で生成されたｃｐｈｓｋｉとを対応付ける（ｃｐｈＦｉ＝（ｃｐｈｓｋｉ，ｃｐｈＳＥｉ）；Ｓ５２２）。
そして、データ暗号化手段４５０は、すべてのデータ（ｄ個）に対して、暗号化を行ったか否かを判定する（Ｓ５２３）。
【０２３３】
ここで、すべてのデータについて暗号化が終了していない場合（Ｓ５２３でＮｏ）、データ暗号化手段４５０は、ｉに“１”を加算して（Ｓ５２４）、Ｓ５２１に戻って動作を継続する。
一方、すべてのデータについて暗号化が終了した場合（Ｓ５２３でＹｅｓ）、データ暗号化手段４５０は、動作を終了する。
【０２３４】
（暗号化インデックス生成動作）
次に、図２４を参照（構成については、適宜図５参照）して、委託暗号化装置４のインデックス暗号化手段４５１が行う図１５のＳ５３の動作（暗号化インデックス生成動作）について詳細に説明する。
まず、インデックス暗号化手段４５１は、インデックス集合ＫＧの個数を計数するカウンタｉを初期化（ｉ＝１）する（Ｓ５３０）。
そして、インデックス暗号化手段４５１は、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）の暗号化処理（ABKSO.EncCloud）により、図１８のＳ４４１で生成された中間暗号化インデックスｃｐｈｗ′を暗号化する（Ｓ５３１）。
【０２３５】
このＡＢＫＳＯの暗号化処理（ABKSO.EncCloud）について、さらに、図２５を参照して説明する。
図２５のＳ５３１０〜Ｓ５３１２の動作は、図２３のＳ５２１０〜Ｓ５２１２の第１公開鍵を用いる代わりに、第２公開鍵を用いる点が異なっているだけである。
そして、インデックス暗号化手段４５１は、中間暗号化インデックスに含まれている要素Ｃ′と、Ｓ５３１２で演算された各要素と、ポリシーと、Ｓ４４１５で演算されたｉｄｘ（ｗ）とで構成される以下の式（３７）に示す暗号化インデックスｃｐｈを生成する（Ｓ５３１３）。
【０２３６】
【数３３】
2018148493.tif 000035
【０２３７】
図２４に戻って、暗号化インデックス生成動作について、説明を続ける。
インデックス暗号化手段４５１は、以下の式（３８）に示すように、中間暗号化インデックスｃｐｈｗ′を含むデータＦを識別する識別子の集合ＭＰ（ｃｐｈｗ′）を、インデックスｃｐｈｗに対応するように、インデックスｃｐｈｗに対するデータＦを識別する識別子の集合ＭＰ（ｃｐｈｗ）を設定する（Ｓ５３２）。
【０２３８】
【数３４】
2018148493.tif 000036
【０２３９】
インデックス暗号化手段４５１は、すべてのインデックス（ｎ個）に対して、暗号化を行ったか否かを判定する（Ｓ５３３）。
ここで、すべてのインデックスについて暗号化が終了していない場合（Ｓ５３３でＮｏ）、インデックス暗号化手段４５１は、ｉに“１”を加算して（Ｓ５３４）、Ｓ５３１に戻って動作を継続する。
一方、すべてのインデックスについて暗号化が終了した場合（Ｓ５３３３でＹｅｓ）、インデックス暗号化手段４５１は、動作を終了する。
【０２４０】
（暗号化乱数生成動作）
次に、図２６を参照（構成については、適宜図５参照）して、委託暗号化装置４の乱数暗号化手段４５２が行う図１５のＳ５４の動作（暗号化乱数生成動作）について詳細に説明する。
まず、乱数暗号化手段４５２は、インデックス集合ＫＧの個数を計数するカウンタｉを初期化（ｉ＝１）する（Ｓ５４０）。
乱数暗号化手段４５２は、委託可能な属性ベース暗号方式（ＡＢＥＯ）の暗号化処理（ABEO.Encryptc）により、図２１のＳ４７１で生成された中間暗号化乱数ｃｐｈＢＦｉ′を暗号化する（Ｓ５４１）。
なお、このＳ５４１のＡＢＥＯの暗号化処理（ABEO.Encryptc）は、図２３の動作と同じであるため、説明を省略する。
【０２４１】
ここで、すべてのインデックスについて乱数の暗号化が終了していない場合（Ｓ５４２でＮｏ）、乱数暗号化手段４５２は、ｉに“１”を加算して（Ｓ５２３）、Ｓ５４１に戻って動作を継続する。
一方、すべてのインデックスについて乱数の暗号化が終了した場合（Ｓ５４２でＹｅｓ）、乱数暗号化手段４５２は、動作を終了する。
【０２４２】
〔データ復号動作〕
次に、図２７を参照（構成については、適宜図４，図６，図７参照）して、属性ベース秘匿検索システムＳＡの暗号化データの復号動作について説明する。
まず、復号装置７は、キーワード入力手段７５によって、取得するデータに対するキーワードを入力する（Ｓ６０）。
そして、復号装置７は、検索トークン生成手段７６によって、キーワードから、取得するデータを特定するための検索トークンを生成する（Ｓ６１）。なお、このＳ６０における検索トーン生成動作については、図２８を参照して後で詳細に説明する。
そして、復号装置７は、データ要求送信手段７８によって、検索トークンを含んだデータ要求をデータ検索装置６に送信する（Ｓ６２）。
【０２４３】
一方、データ検索装置６は、データ要求受信手段６２によって、復号装置７から送信されたデータ要求を受信する（Ｓ６３）。
そして、データ検索装置６は、検索手段６３によって、データ記憶装置５に記憶されている暗号化データを検索する（Ｓ６４）。なお、このＳ６４における暗号化データ検索動作については、図２９を参照して後で詳細に説明する。
そして、データ検索装置６は、データ送信手段６５によって、Ｓ６４で検索された暗号化データ（検索結果および検証用データを含む）を、復号装置７に送信する（Ｓ６５）。
【０２４４】
一方、復号装置７は、データ受信手段７９によって、Ｓ６５で送信された暗号化データを受信する（Ｓ６６）。
ここで、復号装置７は、署名用公開鍵受信手段８０によって、中間暗号化装置２に、署名用公開鍵を要求する（Ｓ６７）。
これに対し、中間暗号化装置２は、署名用公開鍵送信手段３３によって、署名用公開鍵要求を受信する（Ｓ６８）。そして、中間暗号化装置２は、署名用公開鍵送信手段３３によって、署名用公開鍵記憶手段３２に記憶されている署名用公開鍵を読み出し、復号装置７に送信する（Ｓ６９）。
【０２４５】
そして、復号装置７は、署名用公開鍵受信手段８０によって、Ｓ６９で送信された署名用公開鍵を受信する（Ｓ７０）。
そして、復号装置７は、検証・復号手段８１によって、暗号化データの検証を行う（Ｓ７１）。なお、このＳ７１における検証動作については、図３０Ａ〜図３０Ｃを参照して後で詳細に説明する。
そして、復号装置７は、Ｓ７１の検証に成功した場合（Ｓ７２でＹｅｓ）、検証・復号手段８１によって、暗号化データの復号を行う（Ｓ７３）。なお、このＳ７３における暗号化データ復号動作については、図３３を参照して後で詳細に説明する。
【０２４６】
以上の動作により、属性ベース秘匿検索システムＳＡは、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定して暗号化された暗号化データを、属性に応じて復号することができる。また、属性ベース秘匿検索システムＳＡは、指定されたキーワードに対応する暗号化データのみを復号することができる。
【０２４７】
（検索トークン生成動作）
次に、図２８を参照（構成については、適宜図３，図７参照）して、図２７のＳ６１の動作（検索トークン生成動作）について詳細に説明する。
まず、データ検索装置６は、検索トークン生成手段７６によって、公開鍵記憶手段７１に記憶されている第２公開鍵の一部である素数位数ｐに対する｛０，…，ｐ−１｝の整数の集合であるＺｐから、ランダムに乱数ｕを選択する（Ｓ６１０）。
そして、検索トークン生成手段７６は、選択した乱数ｕと、第２公開鍵の一部であるｇとにより、以下の式（３９）を演算することで、トークン生成第２情報ｑｕを求める（Ｓ６１１）。
【０２４８】
【数３５】
2018148493.tif 000037
【０２４９】
そして、検索トークン生成手段７６は、受信者ｉｄと、Ｓ６１１で生成したトークン生成第２情報ｑｕとを、検索トークンを生成する鍵を要求するトークン生成鍵要求として、トークン生成鍵取得手段７７を介して、鍵生成装置１に送信する（Ｓ６１２）。
【０２５０】
一方、鍵生成装置１は、トークン生成鍵生成配信手段１１５によって、トークン生成鍵要求（ｉｄ，ｑｕ）を受信する（Ｓ６１３）。
そして、トークン生成鍵生成配信手段１１５は、受信者リスト記憶手段１１４から、受信者ｉｄに対応するトークン生成第１情報ｇａｔを検索し、読み出す（Ｓ６１４）。
さらに、トークン生成鍵生成配信手段１１５は、Ｓ６１４で取得したトークン生成第１情報ｇａｔと、Ｓ６１３で受信したトークン生成第２情報ｑｕと、マスタ鍵記憶手段１０３に記憶されている第２マスタ鍵のαとにより、以下の式（４０）を演算することで、トークン生成鍵ｑｉｄを生成する（Ｓ６１５）。
【０２５１】
【数３６】
2018148493.tif 000038
【０２５２】
そして、トークン生成鍵生成配信手段１１５は、生成したトークン生成鍵ｑｉｄを、復号装置７に送信する（Ｓ６１６）。
一方、復号装置７の検索トークン生成手段７６は、トークン生成鍵取得手段７７を介して、トークン生成鍵ｑｉｄを受信する（Ｓ６１７）。
そして、検索トークン生成手段７６は、入力したキーワードｗと、第２公開鍵の一部であるハッシュ関数Ｈと、Ｓ６１７で受信したトークン生成鍵ｑｉｄと、Ｓ６１０で選択した乱数ｕとにより、以下の式（４１）の演算を行うことで、検索トークンの要素となるＴｑ（ｗ）を生成する（Ｓ６１８）。
【０２５３】
【数３７】
2018148493.tif 000039
【０２５４】
また、検索トークン生成手段７６は、第２秘密鍵の一部であるＬと、乱数ｕとにより、以下の式（４２）の演算を行うことで、検索トークンの要素となるＬ′を生成する（Ｓ６１９）。
【０２５５】
【数３８】
2018148493.tif 000040
【０２５６】
さらに、検索トークン生成手段７６は、第２秘密鍵である属性Ｓの属性値の個数分のＫｘに対して、乱数ｕにより、以下の式（４３）の演算を行うことで、検索トークンの要素となるＫｘ′を生成する（Ｓ６２０）。
【０２５７】
【数３９】
2018148493.tif 000041
【０２５８】
そして、検索トークン生成手段７６は、前記式（４１）〜式（４３）で演算された各要素で構成される以下の式（４４）に示す検索トークンｔｋを生成する（Ｓ６２１）。
【０２５９】
【数４０】
2018148493.tif 000042
【０２６０】
（暗号化データ検索動作）
次に、図２９を参照（構成については、適宜図６参照）して、図２７のＳ６４の動作（暗号化データ検索動作）について詳細に説明する。
まず、データ検索装置６は、検索手段６３によって、検索結果となる暗号化インデックスｃｐｈｗを格納する検索結果ｒｓｌｔを空に設定し、検索結果を検証するための検証用データｐｒｏｏｆを空に設定する（Ｓ６４０）。
そして、検索手段６３は、インデックス集合ＫＧの個数を計数するカウンタｉを初期化（ｉ＝１）する（Ｓ６４１）。
そして、検索手段６３は、インデックス集合ＫＧｉごとに、暗号化データｃｐｈを、データ記憶装置５から読み出して配列する（Ｓ６４２）。
そして、検索手段６３は、Ｓ６４２に配列した暗号化インデックスｃｐｈｗが、検索トークンｔｋに対応するものであるか否かを、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）の検索処理（ABKSO.Search）により検索する（Ｓ６４３）。
【０２６１】
このＡＢＫＳＯの検索処理（ABKSO.Search）については、さらに、図３１を参照して説明する。
まず、ＡＢＫＳＯの検索処理（以下、ＡＢＫＳＯ検索処理）は、暗号化データｃｐｈに含まれる属性がポリシーを満たすか否かを判定する（Ｓ６４３０）。
具体的には、ＡＢＫＳＯ検索処理は、以下の式（４５）に示すように、アクセス行列Ａの行のインデックス｛１，２，…，ｍ｝の中から、写像ρ（ｉ）の値が属性Ｓに含まれるｉを集合Ｉとして選択する。
【０２６２】
【数４１】
2018148493.tif 000043
【０２６３】
そして、ＡＢＫＳＯ検索処理は、以下の式（４６）に示すように、アクセス行列Ａの行ベクトルＡｉ（ｉ∈Ｉ）を用いて、Ｚｐに属する値ｗｉとして、アクセス行列Ａのｉ行目のベクトルＡｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）との積の集合Ｉの要素数分の総和が（１，０，…，０）となるｗｉを求める。
【０２６４】
【数４２】
2018148493.tif 000044
【０２６５】
この式（４６）において、「Ｘ  ｓ．ｔ．  Ｙ」は、Ｙを満たすＸを示す。
このとき、ＡＢＫＳＯ検索処理は、式（４６）の条件を満たす値ｗｉが存在する場合、属性がポリシーを満たすと判定する。
一方、ＡＢＫＳＯ検索処理は、式（４６）の条件を満たす値ｗｉが存在しない場合、属性がポリシーを満たさないと判定する。
ここで、属性がポリシーを満たさない場合（Ｓ６４３０でＮｏ）、ＡＢＫＳＯ検索処理は、検索結果として、（γ＝０，ａｕｘ＝⊥）を設定して（Ｓ６４３１）、当該検索処理を終了する。ここで、“⊥”は、予め定めたエラーコードとする。
一方、属性がポリシーを満たす場合（Ｓ６４３０でＹｅｓ）、ＡＢＫＳＯ検索処理は、Ｓ６４３２に動作を進める。
そして、ＡＢＫＳＯ検索処理は、以下の式（４７）により、補助データａｕｘを演算する（Ｓ６４３２）。
【０２６６】
【数４３】
2018148493.tif 000045
【０２６７】
そして、ＡＢＫＳＯ検索処理は、以下の式（４８）により、ｋを演算する（Ｓ６４３３）。
【０２６８】
【数４４】
2018148493.tif 000046
【０２６９】
ここで、ＡＢＫＳＯ検索処理は、第２公開鍵の一部であるメッセージ認証子生成関数Ｆを用いて、以下の式（４９）が満たされるか否かを判定する（Ｓ６４３４）。
【０２７０】
【数４５】
2018148493.tif 000047
【０２７１】
この式（４９）が満たされる場合（Ｓ６４３４でＹｅｓ）、ＡＢＫＳＯ検索処理は、検索結果として、（γ＝１、ａｕｘ）を設定して（Ｓ６４３５）、当該検索処理を終了する。一方、式（４９）が満たされない場合（Ｓ６４３４でＮｏ）、ＡＢＫＳＯ検索処理は、検索結果として、（γ＝０、ａｕｘ）を設定して（Ｓ６４３６）、当該検索処理を終了する。
図２９に戻って、暗号化データ検索動作について説明を続ける。
【０２７２】
検索手段６３は、検索結果として、γの値が“１”であるか否かを判定する（Ｓ６４４）。
ここで、γ≠１であれば（Ｓ６４４でＮｏ）、検索手段６３は、Ｓ６４６に動作を進める。
一方、γ＝１であれば（Ｓ６４４でＹｅｓ）、検索手段６３は、検索結果ｒｓｌｔに、暗号化インデックスｃｐｈｗと、当該暗号化インデックスｃｐｈｗに対応する識別子の集合ＭＰ（ｃｐｈｗ）に含まれる識別子に対応するｃｐｈＦｉ（＝（暗号化共通鍵ｃｐｈｓｋｉ，暗号化データｃｐｈＳＥｉ））を加える。
さらに、検索手段６３は、検証用データｐｒｏｏｆに、証明書πｗと暗号化乱数ｃｐｈＢＦｉを加える（Ｓ６４５）。
そして、ＫＧｉに次キーワードがある場合（Ｓ６４６でＹｅｓ）、検索手段６３は、Ｓ６４３に戻る。
【０２７３】
一方、ＫＧｉに次キーワードがない場合（Ｓ６４６でＮｏ）、検索手段６３は、検索結果ｒｓｌｔが空のままであるか否かを判定する（Ｓ６４７）。
ここで、検索結果ｒｓｌｔが空でなければ（Ｓ６４７でＮｏ）、検索手段６３は、Ｓ６４９に動作を進める。
一方、検索結果ｒｓｌｔが空の場合（Ｓ６４７でＹｅｓ）、検索手段６３は、検証用データｐｒｏｏｆに、インデックスＫＧｉに対応する暗号化ブルームフィルタＢＦｉ′、暗号化乱数ｃｐｈＢＦｉ、署名σＢＦｉ、証明書πＢＦｉを追加する（Ｓ６４８）。
【０２７４】
ここで、すべてのインデックス集合について検索が終了していない場合（Ｓ６４９でＮｏ）、検索手段６３は、ｉに“１”を加算して（Ｓ６５０）、Ｓ６４２に戻って動作を継続する。
一方、すべてのインデックス集合について検索が終了した場合（Ｓ６４９でＹｅｓ）、検索手段６３は、動作を終了する。
【０２７５】
（検証動作）
次に、図３０Ａ〜図３０Ｃを参照（構成については、適宜図７参照）して、図２７のＳ７１の動作（検証動作）について詳細に説明する。
図３０Ａに示すように、復号装置７は、検証・復号手段８１によって、インデックス集合ＫＧの個数を計数するカウンタｉを初期化（ｉ＝１）する（Ｓ７１００）。
【０２７６】
ここで、後記する処理によって、すべてのインデックス集合について検索結果の検証が終了している場合（Ｓ７１０１でＹｅｓ）、復号装置７は、検索結果検証手段８１０によって、検証結果に“１（検証成功）”を設定して（Ｓ７１０２）、検証処理を終了する。
一方、すべてのインデックス集合について検索結果の検証が終了していない場合（ステップＳ７１０１でＮｏ）、検索結果検証手段８１０は、Ｓ７１０３に動作を進める。
【０２７７】
検索結果検証手段８１０は、検索結果ｒｓｌｔが空でなく、データ（暗号化インデックスｃｐｈｗ、暗号化共通鍵ｃｐｈｓｋｉ，暗号化データｃｐｈＳＥｉ）が含まれているか否かを判定する（Ｓ７１０３）。
ここで、検索結果ｒｓｌｔにデータが含まれている場合（Ｓ７１０３でＹｅｓ）、検索結果検証手段８１０は、暗号化インデックスｃｐｈｗが検索トークンｔｋに対応するものであるか否かを、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）の検索処理（ABKSO.Search）により検索する。また、検索結果検証手段８１０は、その検索結果である補助データａｕｘ、暗号化インデックスｃｐｈｗ、検索トークンｔｋ、証明書πｗを引数として、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）の検証処理（ABKSO.Verify）により検証を行う（Ｓ７１０４）。
なお、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）の検索処理（ABKSO.Search）については、図３１ですでに説明したため、ここでは説明を省略する。
【０２７８】
ここで、ＡＢＫＳＯの検証処理（ABKSO.Vrify）について、さらに、図３２を参照して説明する。
まず、ＡＢＫＳＯの検証処理（以下、ＡＢＫＳＯ検証）は、検索処理（ABKSO.Search）の結果の補助データａｕｘが⊥（エラーコード）であるか否かを判定する（Ｓ６４２０）。
ここで、ａｕｘが⊥であれば（Ｓ６４２０でＹｅｓ）、検索結果検証手段８１０は、検証結果に“０”を設定して（Ｓ６４２１）、検証処理を終了する。
一方、ａｕｘが⊥でなければ（Ｓ６４２０でＮｏ）、検索結果検証手段８１０は、以下の式（５０）を演算し、証明書π（πｗ）と一致するか否かを判定する（Ｓ６４２２）。
【０２７９】
【数４６】
2018148493.tif 000048
【０２８０】
ここで、証明書πと一致する場合、検索結果検証手段８１０は、検証結果に“１”を設定して（Ｓ６４２３）、検証処理を終了する。一方、証明書πと一致しない場合、検索結果検証手段８１０は、検証結果に“０”を設定して（Ｓ６４２１）、検証処理を終了する。
図３０Ａに戻って、検証動作について説明を続ける。
【０２８１】
検索結果検証手段８１０は、Ｓ７１０４の検索処理の結果を示すγが“０”、または、検証処理の結果を示すγ′が“０”であるか否かを判定する（Ｓ７１０５）。
ここで、γおよびγ′のいずれかが“０”の場合（Ｓ７１０５でＹｅｓ）、検索結果検証手段８１０は、検証結果に“０”を設定して（Ｓ７１０６）、検証動作を終了する。
一方、γおよびγ′のいずれも“０”でない場合（Ｓ７１０５でＮｏ）、検索結果検証手段８１０は、カウンタｉに“１”を加算して（Ｓ７１０７）、Ｓ７１０１に動作を戻す。
【０２８２】
また、Ｓ７１０３において、検索結果ｒｓｌｔが空の場合（Ｓ７１０３でＮｏ）、検索結果検証手段８１０は、検証用データｐｒｏｏｆに、暗号化ブルームフィルタＢＦｉ′、暗号化乱数ｃｐｈＢＦｉ、署名σＢＦｉ、証明書πＢＦｉが設定されているか否かを判定する（Ｓ７１０８）。
ここで、ｐｒｏｏｆが空の場合（Ｓ７１０８でＮｏ）、検索結果検証手段８１０は、検証結果に“０”を設定して（Ｓ７１０９）、検証動作を終了する。
一方、ｐｒｏｏｆにデータ（ＢＦｉ′、ｃｐｈＢＦｉ、σＢＦｉ、πＢＦｉ）が設定されている場合（Ｓ７１０８でＹｅｓ）、検索結果検証手段８１０は、署名検証手段８１１に制御を移す。
【０２８３】
図３０Ｂに示すように、署名検証手段８１１は、署名用公開鍵Ｓｉｇ．ｐｋにより、暗号化ブルームフィルタＢＦｉ′の署名検証（Sig.Verify）を行う（Ｓ７１１０）。この署名検証（Sig.Verify）は、検証に成功すればγ′＝１、失敗すればγ′＝０を返すものとする。
ここで、γ′の値を判定し（Ｓ７１１１）、γ′が“１”でなければ（Ｓ７１１１でＮｏ）、署名検証手段８１１は、検証結果に“０”を設定して（Ｓ７１１２）、検証動作を終了する。
一方、γ′が“１”の場合（Ｓ７１１１でＹｅｓ）、署名検証手段８１１は、ポリシー判定手段８１２に制御を移す。
そして、ポリシー判定手段８１２は、属性付き秘密鍵記憶手段７４に記憶されている属性付き秘密鍵の属性が、受信した暗号化データに付加されているポリシーを満たすか以下かを判定する（Ｓ７１１３）。
【０２８４】
ここで、属性がポリシーを満たさない場合（Ｓ７１１３でＮｏ）、ポリシー判定手段８１２は、カウンタｉに“１”を加算して（Ｓ７１１４）、図３０ＡのＳ７１０１に動作を戻す。
一方、属性がポリシーを満たす場合（Ｓ７１１３でＹｅｓ）、ポリシー判定手段８１２は、ブルームフィルタ検証手段８１３に制御を移す。
【０２８５】
そして、ブルームフィルタ検証手段８１３は、属性付き秘密鍵記憶手段７４に記憶されている属性付き秘密鍵の秘密鍵ＡＢＥＯ．ｓｋを用いて、委託可能な属性ベース暗号方式（ＡＢＥＯ）の復号処理（ABEO.Dec）により、暗号化乱数ｃｐｈＢＦｉを復号する（Ｓ７１１５）。
このＡＢＥＯの復号処理（ABEO.Dec）については、さらに、図３３を参照して説明する。このＡＢＥＯの復号処理（以下、ＡＢＥＯ復号）は、第１公開鍵ＡＢＥＯ．ｓｋ（前記式（１７）参照）と、暗号化データ（暗号化乱数）ｃｐｈ（前記式（３６）参照）と、証明書πとを入力し、元のデータ（元の乱数）Ｍを出力するものである。なお、ＡＢＥＯ復号は、証明書が正しくない場合、⊥（エラーコード）を出力する。
【０２８６】
まず、ＡＢＥＯ復号は、アクセス行列Ａの行のインデックス｛１，２，…，ｍ｝の中から、写像ρ（ｉ）の値が属性Ｓに含まれるｉを集合Ｉとして選択する（Ｓ７３０）。
また、ＡＢＥＯ復号は、アクセス行列Ａの行ベクトルＡｉ（ｉ∈Ｉ）を用いて、Ｚｐに属する値ｗｉとして、アクセス行列Ａのｉ行目のベクトルＡｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）との積の集合Ｉの要素数分の総和が（１，０，…，０）となるｗｉを求める（Ｓ７３１）。
そして、ＡＢＥＯ復号は、公開鍵の一部である双線形写像ｅ、第１秘密鍵の各要素であるＫ、Ｌ、Ｋｘ、暗号化データ（ここでは、暗号化乱数）の要素Ｃ′，Ｃｉ，Ｄｉと、Ｓ７３１で求めたｗｉを用いて、以下の式（５１）の演算を行う（Ｓ７３２）。
【０２８７】
【数４７】
2018148493.tif 000049
【０２８８】
そして、ＡＢＥＯ復号は、暗号化データ（暗号化乱数）の要素Ｃと、Ｓ７３２の演算結果Ｂと、アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報をハッシュ関数Ｈ″で演算したハッシュ値と、送信者識別子ｓｉｄとを４つの引数とし、第１公開鍵のハッシュ関数Ｈ′によるハッシュ値として証明書検証データπ′を生成する（Ｓ７３３）。
そして、ＡＢＥＯ復号は、入力した証明書πと、証明書検証データπ′とが一致するか否かを判定する（Ｓ７３４）。
ここで、証明書πと証明書検証データπ′とが一致しなければ（Ｓ７３４でＮｏ）、ＡＢＥＯ復号は、⊥を出力する。
【０２８９】
一方、証明書πと証明書検証データπ′とが一致する場合（Ｓ７３４でＹｅｓ）、ＡＢＥＯ復号は、Ｍ＝Ｃ／Ｂの演算結果を出力する（Ｓ７３６）。
図３０Ｂに戻って、検証動作について説明を続ける。
ブルームフィルタ検証手段８１３は、Ｓ７１１５の復号結果が、正しく復号されたか否かを判定する（Ｓ７１１６）。
ここで、復号結果が⊥の場合（Ｓ７１１６でＹｅｓ）、ブルームフィルタ検証手段８１３は、検証結果に“０”を設定して（Ｓ７１１７）、検証動作を終了する。
一方、復号結果で、Ｍとして正しく乱数が復号された場合（Ｓ７１１６でＮｏ）、ブルームフィルタ検証手段８１３は、図３０ＣのＳ７１１８に動作を進める。
【０２９０】
図３０Ｃに示すように、ブルームフィルタ検証手段８１３は、以下の式（５２）に示すように、公開鍵であるハッシュ関数ｈを用いて、Ｓ７１１５で復号された乱数Ｍのハッシュ値と、暗号化ブルームフィルタＢＦｉ′と排他的論理和演算を行うことで、ブルームフィルタＢＦｉを復号する（Ｓ７１１８）。
【０２９１】
【数４８】
2018148493.tif 000050
【０２９２】
さらに、ブルームフィルタ検証手段８１３は、Ｓ７１１８で復号されたブルームフィルタＢＦｉに対して、入力されたキーワードｗがインデックスＫＧｉに含まれているか否かの検証を行う（Ｓ７１１９）。
ここで、δ＝０、すなわち、キーワードｗがインデックスＫＧｉに含まれていないと判定された場合（Ｓ７１２０でＮｏ）、ブルームフィルタ検証手段８１３は、カウンタｉに“１”を加算して（Ｓ７１２１）、図３０ＡのＳ７１０１に動作を戻す。
一方、δ＝１、すなわち、キーワードｗがインデックスＫＧｉに含まれていると判定された場合（Ｓ７１２０でＹｅｓ）、ブルームフィルタ検証手段８１３は、さらに、インデックスＫＧｉに含まれるキーワードｗに対応する暗号化インデックスｃｐｈｗ、証明書πｗを、データ検索装置６から取得する（Ｓ７１２２）。
そして、ブルームフィルタ検証手段８１３は、インデックスＫＧｉに含まれるキーワードｗに対応するすべての暗号化インデックスｃｐｈｗについて、委託可能な属性ベース検索可能暗号方式（ＡＢＫＳＯ）の検索処理（ABKSO.Search）と検証処理（ABKSO.Verify）とを実行する（Ｓ７１２３）。なお、この検索処理（ABKSO.Search）と検証処理（ABKSO.Verify）は、Ｓ７１０４の処理と同じであるため、説明を省略する。
【０２９３】
そして、ブルームフィルタ検証手段８１３は、Ｓ７１２３の検証処理（ABKSO.Verify）が失敗（τ′＝０）した暗号化インデックスｃｐｈｗが存在するか否かを判定する（Ｓ７１２４）。
ここで、検証処理に失敗した暗号化インデックスｃｐｈｗが存在する場合（Ｓ７１２４でＹｅｓ）、ブルームフィルタ検証手段８１３は、検証結果に“０”を設定して（Ｓ７１２５）、検証処理を終了する。
一方、検証処理に失敗した暗号化インデックスｃｐｈｗが存在しない場合（Ｓ７１２４でＮｏ）、さらに、ブルームフィルタ検証手段８１３は、Ｓ７１２３の検索処理（ABKSO.Search）で検索される（τ＝１）暗号化インデックスｃｐｈｗが存在するか否かを判定する（Ｓ７１２６）。
【０２９４】
ここで、検索処理（ABKSO.Search）で検索される暗号化インデックスｃｐｈｗが存在する場合（Ｓ７１２６でＹｅｓ）、ブルームフィルタ検証手段８１３は、検証結果に“０”を設定して（Ｓ７１２７）、検証処理を終了する。
一方、検索処理で検索される暗号化インデックスｃｐｈｗが存在しなかった場合（Ｓ７１２６でＮｏ）、ブルームフィルタ検証手段８１３は、カウンタｉに“１”を加算して（Ｓ７１２８）、図３０ＡのＳ７１０１に動作を戻す。
【０２９５】
［属性ベース秘匿検索システムの応用例］
次に、図３４を参照して、本発明の実施形態に係る属性ベース秘匿検索システムの応用例について説明する。
図３４は、属性ベース秘匿検索システムＳＡ（図１参照）を、個人情報を保護してサービスを提供する個人情報保護システムとして構成した例を示している。
ここで、個人情報とは、個人のプライバシー保護の対象となる情報であって、例えば、放送番組の視聴履歴、ユーザの嗜好等である。
【０２９６】
図３４に示す個人情報保護システムＳＢは、ユーザがサービス事業者の評価（信頼度等）をポリシーとして設定することで、そのポリシーを満たす属性のサービス事業者のみが、ユーザに対してサービスを提供することを可能にするシステムである。
ここでは、サービスとして、レコメンド情報（例えば、ユーザの放送番組の視聴履歴を分析した結果から得られるそのユーザにお勧めの番組案内等）を提供するサービスを一例に説明する。
【０２９７】
個人情報保護システムＳＢは、鍵生成装置１と、中間暗号化装置２と、クラウドサーバ３（委託暗号化装置４、データ記憶装置５およびデータ検索装置６）と、復号装置７とを、ネットワーク（通信回線）Ｎを介して接続して構成している。
鍵生成装置１、中間暗号化装置２、クラウドサーバ３（委託暗号化装置４，データ記憶装置５，データ検索装置６）および復号装置７は、それぞれ、図３〜図７で説明した各装置と同じものである。
【０２９８】
以下、個人情報保護システムＳＢの動作について説明する。
鍵生成装置１は、サービス事業者ごとに予め定めた評価を属性として、サービス事業者の復号装置７に送信する。
例えば、属性の属性種別を、「プライバシーマーク」と「ユーザ評価」とし、「プライバシーマーク」の属性値を「６：あり」、「７：なし」、「ユーザ評価」の属性値を「１」〜「５」の５段階とする。そして、鍵生成装置１は、あるサービス事業者Ａ，Ｂ，Ｃに対する属性ＳＡ，ＳＢ，ＳＣを、それぞれ以下のように設定して、サービス事業者Ａ，Ｂ，Ｃのそれぞれの復号装置７に送信する。
【０２９９】
ＳＡ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，５）｝
ＳＢ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，２）｝
ＳＣ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，３）｝
【０３００】
なお、ここで、プライバシーマークは、個人情報について適切な保護措置を講ずる体制を整備している事業者等を認定するものとして一般的に用いられる属性である。すなわち、この属性値が「６：あり」であれば、そのサービス事業者は、個人情報について適切な保護措置を講ずる体制を整備している事業者ということになる。
また、ここで、ユーザ評価は、サービス事業者に対する評価（信頼度等）を示す属性種別であって、５段階（１〜５）の属性値（評価値）を有することとする。なお、この属性値は、その値が大きいほど、高評価であることを示す。
【０３０１】
中間暗号化装置２は、例えば、図示を省略したテレビ受信機等に備えられ、ユーザの視聴履歴等の個人情報を暗号化対象のデータとする。
また、中間暗号化装置２は、ユーザがサービスの提供を許可するサービス事業者の評価（評価値）をポリシーとして設定する。例えば、レコメンド情報の提供を許可するサービス事業者の評価を“５”とする場合、中間暗号化装置２は、ポリシーを（‘プライバシーマーク’＝６）ＡＮＤ（‘ユーザ評価’＝５）のように設定する。
そして、中間暗号化装置２は、個人情報を暗号化したポリシー・証明書・署名付き中間暗号化個人情報を、委託暗号化装置４に送信する。
【０３０２】
委託暗号化装置４は、さらに暗号化を行い、ポリシー・証明書・署名付き暗号化個人情報を、データ記憶装置５に記憶する。
データ検索装置６は、復号装置７から、キーワードに対応した検索トークンを受信し、データ記憶装置５に保存されているデータから、暗号化したままで、キーワードに対応する暗号化個人情報を検索し、復号装置７に送信する。
復号装置７は、例えば、図示を省略したサービス提供装置等に備えられ、データ検索装置６からキーワードを含むポリシー・証明書・署名付き暗号化個人情報を取得する。このとき、復号装置７は、指定したキーワードに合致し、自身の属性がポリシーを満たす場合のみ、個人情報を復号することができる。
【０３０３】
例えば、前記のようにポリシーが（‘プライバシーマーク’＝６）ＡＮＤ（‘ユーザ評価’＝５）のとき、サービス事業者Ａの復号装置７は、自身に設定された属性が、前記ＳＡ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，５）｝であるので、個人情報を復号することができるが、サービス事業者Ｂの復号装置７は、自身に設定された属性が、前記ＳＢ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，２）｝であるので、個人情報を復号することができない。
そして、サービス提供装置（不図示）は、例えば、「スポーツ」というキーワードを指定した場合、復号装置７で「スポーツ」のキーワードに対応した個人情報（視聴履歴等）のみを復号し、解析を行うことで、お勧め番組等のレコメンド情報をユーザのテレビ受信機（不図示）に送信する。
このように、ユーザは、希望するサービス事業者のみから、サービス（レコメンド情報）の提供を受けることができる。
【０３０４】
以上説明した個人情報保護システムＳＢによれば、中間暗号化装置２においてデータ（ここでは個人情報）を暗号化する際に、一部の暗号化処理をクラウドサーバ３の委託暗号化装置４が処理し、データ記憶装置５に保存することにより、ユーザの中間暗号化装置２の負荷を抑え、膨大な個人情報をサービス事業者の属性に応じて適切にアクセス管理することが可能になる。また、サービス事業者は、自身に対する評価に応じて、これまでアクセスできなかった個人情報にアクセスすることができるようになるため、顧客の新規開拓が可能になる。
【符号の説明】
【０３０５】
ＳＡ    属性ベース秘匿検索システム
ＳＢ    個人情報保護システム
１      鍵生成装置
１００  パラメータ入力手段
１０１  公開鍵・マスタ鍵生成手段
１０１ａ  ハッシュ関数選択手段
１０１ｂ  第１公開鍵・マスタ鍵生成手段
１０１ｃ  第２公開鍵・マスタ鍵生成手段
１０２  公開鍵記憶手段
１０３  マスタ鍵記憶手段
１０４  公開鍵送信手段
１１０  属性入力手段
１１１  秘密鍵生成手段
１１１ａ  第１秘密鍵生成手段
１１１ｂ  第２秘密鍵生成手段
１１２  属性付き秘密鍵生成手段
１１３  属性付き秘密鍵送信手段
１１４  受信者リスト記憶手段
１１５  トークン生成鍵配信手段
２      中間暗号化装置
２０    ポリシー入力手段
２１    データ入力手段
２２    インデックス入力手段
２３    公開鍵受信手段
２４    公開鍵記憶手段
２５    中間暗号化データ生成手段
２６    中間暗号化インデックス生成手段
２７    暗号ブルームフィルタ生成手段
２７０  ブルームフィルタ生成手段
２７１  ブルームフィルタ暗号化手段
２７２  署名付与手段
２８    中間暗号化手段
２９    データ合成手段
３０    データ送信手段
３１    署名用鍵生成手段
３２    署名用公開鍵記憶手段
３３    署名用公開鍵送信手段
３      クラウドサーバ
４      委託暗号化装置
４０    公開鍵受信手段
４１    公開鍵記憶手段
４２    公開鍵送信手段
４３    データ受信手段
４４    データ分離手段
４５    暗号化手段
４５０  データ暗号化手段
４５１  インデックス暗号化手段
４５２  乱数暗号化手段
４６    データ合成手段
４７    データ書込手段
５      データ記憶装置
６      データ検索装置
６０    公開鍵受信手段
６１    公開鍵記憶手段
６２    データ要求受信手段
６３    検索手段
６４    データ読出手段
６５    データ送信手段
７      復号装置
７０    公開鍵受信手段
７１    公開鍵記憶手段
７２    登録要求送信手段
７３    属性付き秘密鍵受信手段
７４    属性付き秘密鍵記憶手段
７５    キーワード入力手段
７６    検索トークン生成手段
７７    トークン生成鍵取得手段
７８    データ要求送信手段
７９    データ受信手段
８０    署名用公開鍵受信手段
８１    検証・復号手段
８１０  検索結果検証手段
８１１  署名検証手段
８１２  ポリシー判定手段
８１３  ブルームフィルタ検証手段
８１４  データ復号手段
【図１】
2018148493.tif 000051
【図２】
2018148493.tif 000052
【図３】
2018148493.tif 000053
【図４】
2018148493.tif 000054
【図５】
2018148493.tif 000055
【図６】
2018148493.tif 000056
【図７】
2018148493.tif 000057
【図８】
2018148493.tif 000058
【図９】
2018148493.tif 000059
【図１０】
2018148493.tif 000060
【図１１】
2018148493.tif 000061
【図１２】
2018148493.tif 000062
【図１３】
2018148493.tif 000063
【図１４】
2018148493.tif 000064
【図１５】
2018148493.tif 000065
【図１６】
2018148493.tif 000066
【図１７】
2018148493.tif 000067
【図１８】
2018148493.tif 000068
【図１９】
2018148493.tif 000069
【図２０】
2018148493.tif 000070
【図２１】
2018148493.tif 000071
【図２２】
2018148493.tif 000072
【図２３】
2018148493.tif 000073
【図２４】
2018148493.tif 000074
【図２５】
2018148493.tif 000075
【図２６】
2018148493.tif 000076
【図２７】
2018148493.tif 000077
【図２８】
2018148493.tif 000078
【図２９】
2018148493.tif 000079
【図３０Ａ】
2018148493.tif 000080
【図３０Ｂ】
2018148493.tif 000081
【図３０Ｃ】
2018148493.tif 000082
【図３１】
2018148493.tif 000083
【図３２】
2018148493.tif 000084
【図３３】
2018148493.tif 000085
【図３４】
2018148493.tif 000086