(57)【要約】  登録装置（２００）は、キーワードを登録鍵で暗号化して暗号化キーワードを生成し、暗号化キーワードと、対応する暗号文を識別する識別情報とを含む索引を生成し、登録鍵と検索鍵とから、変換鍵を生成し、複数の暗号文と索引と変換鍵とをサーバ装置（４００）に登録する。検索装置（３００）は、キーワードを暗号化して検索クエリを生成し、検索クエリをサーバ装置（４００）に送信する。サーバ装置（４００）は、検索クエリを登録した変換鍵で再暗号化して再暗号化キーワードを生成し、登録した索引を再暗号化キーワードで検索し、検索結果として暗号化キーワードが得られれば、索引から識別情報を取得し、登録した複数の暗号文の中から、識別情報によって識別される暗号文を抽出し、抽出した暗号文を検索装置（３００）に送信する。
2019215818.tif 000002
【特許請求の範囲】
【請求項１】
複数の暗号文のうち１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成し、生成した暗号化キーワードと、前記１つ以上の暗号文を識別する識別情報とを含む索引を生成する索引生成部と、
前記登録鍵と、検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから、前記検索クエリを再暗号化して再暗号化キーワードを生成し前記索引を前記再暗号化キーワードで検索するサーバ装置により代理人再暗号化に用いられる変換鍵を生成する鍵生成部と、
前記複数の暗号文と、前記索引生成部により生成された索引と、前記鍵生成部により生成された変換鍵とを前記サーバ装置に送信する登録部と
を備える登録装置。
【請求項２】
前記索引生成部は、前記１つ以上の暗号文に対応するキーワードを前記登録鍵で暗号化して得られた結果データに対し、第１変換処理と、前記第１変換処理とは異なる第２変換処理とを別々に実行し、前記第１変換処理を実行して得られた第１変換データを前記暗号化キーワードとして利用し、前記第２変換処理を実行して得られた第２変換データを、前記１つ以上の暗号文の組み合わせを一意に表す暗号文識別子で符号化して前記識別情報を生成する請求項１に記載の登録装置。
【請求項３】
前記第１変換処理は、前記結果データに第１値を連結し、前記第１値を連結したデータのハッシュ値を前記第１変換データとして算出する処理であり、
前記第２変換処理は、前記結果データに前記第１値とは異なる第２値を連結し、前記第２値を連結したデータのハッシュ値を前記第２変換データとして算出する処理である請求項２に記載の登録装置。
【請求項４】
前記索引生成部は、前記第２変換データと前記暗号文識別子との排他的論理和を前記識別情報として算出する請求項２または３に記載の登録装置。
【請求項５】
複数の暗号文と、１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成する登録装置が生成した、前記暗号化キーワードと前記１つ以上の暗号文を識別する識別情報とを含む索引と、前記登録装置が前記登録鍵と検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから生成した、代理人再暗号化に用いられる変換鍵とを受信する第１受信部と、
前記第１受信部により受信された複数の暗号文と索引と変換鍵とをデータベースに登録する管理部と、
前記検索クエリを受信する第２受信部と、
前記第２受信部により受信された検索クエリを前記管理部により登録された変換鍵で再暗号化して再暗号化キーワードを生成し、前記管理部により登録された索引を前記再暗号化キーワードで検索し、検索結果として前記暗号化キーワードが得られれば、前記索引から前記識別情報を取得し、前記管理部により登録された複数の暗号文の中から、前記識別情報によって識別される暗号文を抽出する検索部と、
前記検索部により抽出された暗号文を前記検索装置に送信する送信部と
を備えるサーバ装置。
【請求項６】
前記検索部は、前記検索クエリを再暗号化して得られた結果データに対し、第１変換処理と、前記第１変換処理とは異なる第２変換処理とを別々に実行し、前記第１変換処理を実行して得られた第１変換データを前記再暗号化キーワードとして利用し、前記検索結果として前記暗号化キーワードが得られれば、前記第２変換処理を実行して得られた第２変換データを前記識別情報で復号して、前記１つ以上の暗号文の組み合わせを一意に表す暗号文識別子を取得し、前記複数の暗号文の中から、前記暗号文識別子によって表される組み合わせに含まれる暗号文を抽出する請求項５に記載のサーバ装置。
【請求項７】
前記第１変換処理は、前記結果データに第１値を連結し、前記第１値を連結したデータのハッシュ値を前記第１変換データとして算出する処理であり、
前記第２変換処理は、前記結果データに前記第１値とは異なる第２値を連結し、前記第２値を連結したデータのハッシュ値を前記第２変換データとして算出する処理である請求項６に記載のサーバ装置。
【請求項８】
前記検索部は、前記第２変換データと前記識別情報との排他的論理和を前記暗号文識別子として算出する請求項６または７に記載のサーバ装置。
【請求項９】
前記登録装置と、
前記検索装置と、
請求項５から８のいずれか１項に記載のサーバ装置と
を備える秘匿検索システム。
【請求項１０】
登録装置が、複数の暗号文のうち１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成し、生成した暗号化キーワードと、前記１つ以上の暗号文を識別する識別情報とを含む索引を生成し、前記登録鍵と、検索装置により暗号化に用いられる検索鍵とから、サーバ装置により代理人再暗号化に用いられる変換鍵を生成し、前記複数の暗号文と、生成した索引と、生成した変換鍵とを前記サーバ装置に送信し、
前記サーバ装置が、前記複数の暗号文と前記索引と前記変換鍵とをデータベースに登録し、
前記検索装置が、検索に用いるキーワードを暗号化して検索クエリを生成し、生成した検索クエリを前記サーバ装置に送信し、
前記サーバ装置が、前記検索クエリを前記データベースに登録した変換鍵で再暗号化して再暗号化キーワードを生成し、前記データベースに登録した索引を前記再暗号化キーワードで検索し、検索結果として前記暗号化キーワードが得られれば、前記索引から前記識別情報を取得し、前記データベースに登録した複数の暗号文の中から、前記識別情報によって識別される暗号文を抽出し、抽出した暗号文を前記検索装置に送信する秘匿検索方法。
【請求項１１】
コンピュータに、
複数の暗号文のうち１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成し、生成した暗号化キーワードと、前記１つ以上の暗号文を識別する識別情報とを含む索引を生成する索引生成手順と、
前記登録鍵と、検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから、前記検索クエリを再暗号化して再暗号化キーワードを生成し前記索引を前記再暗号化キーワードで検索するサーバ装置により代理人再暗号化に用いられる変換鍵を生成する鍵生成手順と、
前記複数の暗号文と、前記索引生成手順により生成された索引と、前記鍵生成手順により生成された変換鍵とを前記サーバ装置に送信する登録手順と
を実行させる登録プログラム。
【請求項１２】
コンピュータに、
複数の暗号文と、１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成する登録装置が生成した、前記暗号化キーワードと前記１つ以上の暗号文を識別する識別情報とを含む索引と、前記登録装置が前記登録鍵と検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから生成した、代理人再暗号化に用いられる変換鍵とを受信する第１手順と、
前記第１手順により受信された複数の暗号文と索引と変換鍵とをデータベースに登録する管理手順と、
前記検索クエリを受信する第２手順と、
前記第２手順により受信された検索クエリを前記管理手順により登録された変換鍵で再暗号化して再暗号化キーワードを生成し、前記管理手順により登録された索引を前記再暗号化キーワードで検索し、検索結果として前記暗号化キーワードが得られれば、前記索引から前記識別情報を取得し、前記管理手順により登録された複数の暗号文の中から、前記識別情報によって識別される暗号文を抽出する検索手順と、
前記検索手順により抽出された暗号文を前記検索装置に送信する送信手順と
を実行させるサーバプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、登録装置、サーバ装置、秘匿検索システム、秘匿検索方法、登録プログラムおよびサーバプログラムに関するものである。
【背景技術】
【０００２】
特許文献１、特許文献２および特許文献３には、秘匿検索に関する技術が開示されている。【０００３】
秘匿検索は、検索可能暗号とも呼ばれる。秘匿検索は、暗号化したままデータを検索できる暗号技術である。実際には、暗号化データそのものは検索されない。検索対象のデータから関連するキーワードが事前に抽出され、そのキーワードが検索できる特殊な暗号技術を使って暗号化される。そして、その暗号化キーワードに対して検索クエリで検索が行われる。検索クエリとは、暗号化された検索用のキーワードのことである。【０００４】
秘匿検索には、共通鍵方式と公開鍵方式とがある。共通鍵方式では、共通鍵暗号技術が利用され、登録者および検索者が限定される。公開鍵方式では、公開鍵暗号技術が利用され、検索者は限定されるが、登録者は限定されない。登録者は暗号化データを登録するユーザであり、検索者は暗号化データを検索するユーザである。【０００５】
秘匿検索には、タグ型と索引型とがある。タグ型では、暗号文であるデータに検索できる暗号化キーワードが付加される。１つの暗号文に複数のキーワードが紐付くため、検索が低速になる。索引型では、暗号化キーワードごとに、暗号文であるデータが関連付けられる。１つのキーワードに複数の暗号文が紐付くため、検索が高速になる。【０００６】
近年、秘匿検索は、クラウドサービスにおいてサーバ管理者による盗聴から機密情報を守るためのセキュリティ技術として注目されている。様々なサービスに適用するために、高速に検索ができ、かつ、アクセス制御ができる秘匿検索技術が求められている。【０００７】
共通鍵方式では、通常、高速な秘匿検索ができるが、アクセス制御ができない。公開鍵方式では、通常、アクセス制御ができるが、高速な秘匿検索ができない。【０００８】
共通鍵方式では、通常、登録者と検索者とが互いに同じ秘密情報を共有する。非特許文献１には、秘密情報の共有コストと秘密情報の漏洩時の影響度とを下げるため、登録者と検索者とが同じ秘密情報を共有しない共通鍵方式が開示されている。【０００９】
非特許文献１には、マルチユーザ型共有鍵方式がさらに開示されている。マルチユーザ型共有鍵方式では、検索が許可されるユーザと検索が許可されないユーザとを設定することができる。つまり、マルチユーザ型共有鍵方式では、互いに異なる秘密情報を持っている複数のユーザが同じキーワードで検索した場合に、あるユーザの検索ではヒットするが、別のユーザの検索ではヒットしない暗号化データを生成することが可能である。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−０６１１０３号公報
【特許文献２】特開２０１６−０１２８９７号公報
【特許文献３】特開２０１７−０３７１８０号公報
【非特許文献】
【００１１】
【非特許文献１】Ｒ．  Ａ．  Ｐｏｐａ，  Ｎ．  Ｚｅｌｄｏｖｉｃｈ，  “Ｍｕｌｔｉ−Ｋｅｙ  Ｓｅａｒｃｈａｂｌｅ  Ｅｎｃｒｙｐｔｉｏｎ”，  ＩＡＣＲ  Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ：  Ｒｅｐｏｒｔ  ２０１３／５０８
【発明の概要】
【発明が解決しようとする課題】
【００１２】
非特許文献１に記載の技術では、複数の鍵を使ってアクセス制御を達成しているが、方式がタグ型のため、共通鍵ベースとはいえ効率が悪い。【００１３】
特許文献１、特許文献２および特許文献３に記載の技術では、信頼できる第三者を使ってアクセス制御を達成しているが、信頼できる第三者の存在の許容はユースケースに強く依存するため、汎用性が低い。【００１４】
本発明は、アクセス制御ができる秘匿検索の高速化および汎用性の向上を目的とする。
【課題を解決するための手段】
【００１５】
本発明の一態様に係る登録装置は、
複数の暗号文のうち１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成し、生成した暗号化キーワードと、前記１つ以上の暗号文を識別する識別情報とを含む索引を生成する索引生成部と、
前記登録鍵と、検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから、前記検索クエリを再暗号化して再暗号化キーワードを生成し前記索引を前記再暗号化キーワードで検索するサーバ装置により代理人再暗号化に用いられる変換鍵を生成する鍵生成部と、
前記複数の暗号文と、前記索引生成部により生成された索引と、前記鍵生成部により生成された変換鍵とを前記サーバ装置に送信する登録部と
を備える。【００１６】
本発明の一態様に係るサーバ装置は、
複数の暗号文と、１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成する登録装置が生成した、前記暗号化キーワードと前記１つ以上の暗号文を識別する識別情報とを含む索引と、前記登録装置が前記登録鍵と検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから生成した、代理人再暗号化に用いられる変換鍵とを受信する第１受信部と、
前記第１受信部により受信された複数の暗号文と索引と変換鍵とをデータベースに登録する管理部と、
前記検索クエリを受信する第２受信部と、
前記第２受信部により受信された検索クエリを前記管理部により登録された変換鍵で再暗号化して再暗号化キーワードを生成し、前記管理部により登録された索引を前記再暗号化キーワードで検索し、検索結果として前記暗号化キーワードが得られれば、前記索引から前記識別情報を取得し、前記管理部により登録された複数の暗号文の中から、前記識別情報によって識別される暗号文を抽出する検索部と、
前記検索部により抽出された暗号文を前記検索装置に送信する送信部と
を備える。
【発明の効果】
【００１７】
本発明では、複数の鍵を使ってアクセス制御を達成しながら、方式に索引型を適用しているため、秘匿検索の高速化を達成できる。また、共通鍵ベース索引方式のほとんどを適用できるため、汎用性が高い。
【図面の簡単な説明】
【００１８】
【図１】実施の形態１に係る秘匿検索システムの構成を示すブロック図。
【図２】実施の形態１に係る登録装置の構成を示すブロック図。
【図３】実施の形態１に係る検索装置の構成を示すブロック図。
【図４】実施の形態１に係るサーバ装置の構成を示すブロック図。
【図５】実施の形態１に係る登録装置の動作を示すフローチャート。
【図６】実施の形態１に係る索引の例を示す表。
【図７】実施の形態１に係る索引の例を示す表。
【図８】実施の形態１に係るサーバ装置の動作を示すフローチャート。
【図９】実施の形態１に係る登録装置の動作を示すフローチャート。
【図１０】実施の形態１に係るサーバ装置の動作を示すフローチャート。
【図１１】実施の形態１に係る検索装置の動作を示すフローチャート。
【図１２】実施の形態１に係るサーバ装置の動作を示すフローチャート。
【図１３】実施の形態１に係る検索装置の動作を示すフローチャート。
【図１４】実施の形態１に係る秘匿検索システムのデータの流れを示す図。
【図１５】実施の形態１に係る索引の例を示す表。
【図１６】実施の形態１に係る索引の例を示す表。
【図１７】実施の形態１に係る登録装置の構成を示すブロック図。
【図１８】実施の形態１に係る検索装置の構成を示すブロック図。
【図１９】実施の形態１に係るサーバ装置の構成を示すブロック図。
【図２０】実施の形態１に係る、データのアクセス権限情報と、対応する暗号鍵および登録鍵との例を示す表。
【図２１】実施の形態１に係る、検索者に配布される検索鍵の例を示す表。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。なお、本発明は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態は、部分的に実施されても構わない。
【００２０】
実施の形態１．
本実施の形態について、図１から図１６を用いて説明する。
【００２１】
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係る秘匿検索システム１００の構成を説明する。
【００２２】
秘匿検索システム１００は、登録装置２００と、検索装置３００と、サーバ装置４００とを備える。
【００２３】
秘匿検索システム１００の各装置は、インターネット等のネットワーク１０１を介して互いに通信を行う。
【００２４】
図２を参照して、本実施の形態に係る登録装置２００の構成を説明する。
【００２５】
登録装置２００は、コンピュータである。登録装置２００は、具体的には、登録者によって利用されるＰＣ等の端末である。「ＰＣ」は、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒの略語である。登録装置２００は、プロセッサ２０１を備えるとともに、メモリ２０２、補助記憶装置２０３、入出力インタフェース２０４および通信装置２０５といった他のハードウェアを備える。プロセッサ２０１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００２６】
登録装置２００は、機能要素として、入力部２１０と、暗号文生成部２２０と、索引生成部２３０と、鍵生成部２４０と、配布部２５０と、登録部２６０とを備える。入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の機能は、ソフトウェアにより実現される。具体的には、入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の機能は、登録プログラムにより実現される。登録プログラムは、入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０により行われる手順をそれぞれ入力手順、暗号文生成手順、索引生成手順、鍵生成手順、配布手順および登録手順としてコンピュータに実行させるプログラムである。登録プログラムは、コンピュータ読取可能な媒体に記録されて提供されてもよいし、記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【００２７】
プロセッサ２０１は、登録プログラムを実行する装置である。プロセッサ２０１は、例えば、ＣＰＵである。「ＣＰＵ」は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略語である。
【００２８】
メモリ２０２は、登録プログラムを一時的に記憶する装置である。メモリ２０２は、例えば、ＲＡＭ、フラッシュメモリまたはこれらの組み合わせである。「ＲＡＭ」は、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略語である。
【００２９】
補助記憶装置２０３は、登録プログラムをあらかじめ記憶する装置である。補助記憶装置２０３は、例えば、ＨＤＤ、フラッシュメモリまたはこれらの組み合わせである。「ＨＤＤ」は、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。
【００３０】
入出力インタフェース２０４は、図示していない入力機器およびディスプレイが接続されるポートである。入出力インタフェース２０４は、例えば、ＵＳＢ端子である。「ＵＳＢ」は、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略語である。入力機器は、登録プログラムへのデータの入力のために登録者により操作される機器である。入力機器は、例えば、マウス、キーボード、タッチパネル、または、これらのうちいくつか、もしくは、すべての組み合わせである。ディスプレイは、登録プログラムから出力されるデータを画面に表示する機器である。ディスプレイは、例えば、ＬＣＤである。「ＬＣＤ」は、Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙの略語である。
【００３１】
通信装置２０５は、登録プログラムに入力されるデータを受信するレシーバと、登録プログラムから出力されるデータを送信するトランスミッタとを備える。通信装置２０５は、例えば、通信チップまたはＮＩＣである。「ＮＩＣ」は、Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄの略語である。
【００３２】
登録プログラムは、補助記憶装置２０３からメモリ２０２にロードされ、メモリ２０２からプロセッサ２０１に読み込まれ、プロセッサ２０１によって実行される。補助記憶装置２０３には、登録プログラムだけでなく、ＯＳも記憶されている。「ＯＳ」は、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略語である。プロセッサ２０１は、ＯＳを実行しながら、登録プログラムを実行する。なお、登録プログラムの一部または全部がＯＳに組み込まれていてもよい。登録プログラムおよびＯＳは、メモリ２０２にあらかじめ記憶されていてもよく、その場合、補助記憶装置２０３を省略することができる。
【００３３】
登録装置２００は、プロセッサ２０１を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、登録プログラムの実行を分担する。それぞれのプロセッサは、例えば、ＣＰＵである。
【００３４】
登録プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、補助記憶装置２０３、メモリ２０２、または、プロセッサ２０１内のレジスタまたはキャッシュメモリに記憶される。
【００３５】
登録装置２００は、１台のコンピュータで構成されていてもよいし、複数台のコンピュータで構成されていてもよい。登録装置２００が複数台のコンピュータで構成されている場合は、入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の機能が、各コンピュータに分散されて実現されてもよい。
【００３６】
図３を参照して、本実施の形態に係る検索装置３００の構成を説明する。
【００３７】
検索装置３００は、コンピュータである。検索装置３００は、具体的には、検索者によって利用されるＰＣ等の端末である。検索装置３００は、プロセッサ３０１を備えるとともに、メモリ３０２、補助記憶装置３０３、入出力インタフェース３０４および通信装置３０５といった他のハードウェアを備える。プロセッサ３０１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００３８】
検索装置３００は、機能要素として、取得部３１０と、入力部３２０と、暗号化部３３０と、要求部３４０と、復号部３５０と、出力部３６０とを備える。取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の機能は、ソフトウェアにより実現される。具体的には、取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の機能は、検索プログラムにより実現される。検索プログラムは、取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０により行われる手順をそれぞれ取得手順、入力手順、暗号化手順、要求手順、復号手順および出力手順としてコンピュータに実行させるプログラムである。検索プログラムは、コンピュータ読取可能な媒体に記録されて提供されてもよいし、記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【００３９】
プロセッサ３０１は、検索プログラムを実行する装置である。プロセッサ３０１は、例えば、ＣＰＵである。
【００４０】
メモリ３０２は、検索プログラムを一時的に記憶する装置である。メモリ３０２は、例えば、ＲＡＭ、フラッシュメモリまたはこれらの組み合わせである。
【００４１】
補助記憶装置３０３は、検索プログラムをあらかじめ記憶する装置である。補助記憶装置３０３は、例えば、ＨＤＤ、フラッシュメモリまたはこれらの組み合わせである。
【００４２】
入出力インタフェース３０４は、図示していない入力機器およびディスプレイが接続されるポートである。入出力インタフェース３０４は、例えば、ＵＳＢ端子である。入力機器は、検索プログラムへのデータの入力のために検索者により操作される機器である。入力機器は、例えば、マウス、キーボード、タッチパネル、または、これらのうちいくつか、もしくは、すべての組み合わせである。ディスプレイは、検索プログラムから出力されるデータを画面に表示する機器である。ディスプレイは、例えば、ＬＣＤである。
【００４３】
通信装置３０５は、検索プログラムに入力されるデータを受信するレシーバと、検索プログラムから出力されるデータを送信するトランスミッタとを備える。通信装置３０５は、例えば、通信チップまたはＮＩＣである。
【００４４】
検索プログラムは、補助記憶装置３０３からメモリ３０２にロードされ、メモリ３０２からプロセッサ３０１に読み込まれ、プロセッサ３０１によって実行される。補助記憶装置３０３には、検索プログラムだけでなく、ＯＳも記憶されている。プロセッサ３０１は、ＯＳを実行しながら、検索プログラムを実行する。なお、検索プログラムの一部または全部がＯＳに組み込まれていてもよい。検索プログラムおよびＯＳは、メモリ３０２にあらかじめ記憶されていてもよく、その場合、補助記憶装置３０３を省略することができる。
【００４５】
検索装置３００は、プロセッサ３０１を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、検索プログラムの実行を分担する。それぞれのプロセッサは、例えば、ＣＰＵである。
【００４６】
検索プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、補助記憶装置３０３、メモリ３０２、または、プロセッサ３０１内のレジスタまたはキャッシュメモリに記憶される。
【００４７】
検索装置３００は、１台のコンピュータで構成されていてもよいし、複数台のコンピュータで構成されていてもよい。検索装置３００が複数台のコンピュータで構成されている場合は、取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の機能が、各コンピュータに分散されて実現されてもよい。
【００４８】
図４を参照して、本実施の形態に係るサーバ装置４００の構成を説明する。
【００４９】
サーバ装置４００は、コンピュータである。サーバ装置４００は、具体的には、クラウドサーバである。サーバ装置４００は、プロセッサ４０１を備えるとともに、メモリ４０２、補助記憶装置４０３、入出力インタフェース４０４および通信装置４０５といった他のハードウェアを備える。プロセッサ４０１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００５０】
サーバ装置４００は、機能要素として、第１受信部４１０と、管理部４２０と、第２受信部４３０と、検索部４４０と、送信部４５０とを備える。第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の機能は、ソフトウェアにより実現される。具体的には、第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の機能は、サーバプログラムにより実現される。サーバプログラムは、第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０により行われる手順をそれぞれ第１手順、管理手順、第２手順、検索手順および送信手順としてコンピュータに実行させるプログラムである。サーバプログラムは、コンピュータ読取可能な媒体に記録されて提供されてもよいし、記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【００５１】
プロセッサ４０１は、サーバプログラムを実行する装置である。プロセッサ４０１は、例えば、ＣＰＵである。
【００５２】
メモリ４０２は、サーバプログラムを一時的に記憶する装置である。メモリ４０２は、例えば、ＲＡＭ、フラッシュメモリまたはこれらの組み合わせである。
【００５３】
補助記憶装置４０３は、サーバプログラムをあらかじめ記憶する装置である。補助記憶装置４０３は、例えば、ＨＤＤ、フラッシュメモリまたはこれらの組み合わせである。
【００５４】
補助記憶装置４０３には、データベース４６０が構築される。なお、メモリ４０２にデータベース４６０が構築されていてもよい。
【００５５】
入出力インタフェース４０４は、図示していない入力機器およびディスプレイが接続されるポートである。入出力インタフェース４０４は、例えば、ＵＳＢ端子である。入力機器は、サーバプログラムへのデータの入力のためにサーバ管理者により操作される機器である。入力機器は、例えば、マウス、キーボード、タッチパネル、または、これらのうちいくつか、もしくは、すべての組み合わせである。ディスプレイは、サーバプログラムから出力されるデータを画面に表示する機器である。ディスプレイは、例えば、ＬＣＤである。
【００５６】
通信装置４０５は、サーバプログラムに入力されるデータを受信するレシーバと、サーバプログラムから出力されるデータを送信するトランスミッタとを備える。通信装置４０５は、例えば、通信チップまたはＮＩＣである。
【００５７】
サーバプログラムは、補助記憶装置４０３からメモリ４０２にロードされ、メモリ４０２からプロセッサ４０１に読み込まれ、プロセッサ４０１によって実行される。補助記憶装置４０３には、サーバプログラムだけでなく、ＯＳも記憶されている。プロセッサ４０１は、ＯＳを実行しながら、サーバプログラムを実行する。なお、サーバプログラムの一部または全部がＯＳに組み込まれていてもよい。サーバプログラムおよびＯＳは、メモリ４０２にあらかじめ記憶されていてもよく、その場合、補助記憶装置４０３を省略することができる。
【００５８】
サーバ装置４００は、プロセッサ４０１を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、サーバプログラムの実行を分担する。それぞれのプロセッサは、例えば、ＣＰＵである。
【００５９】
サーバプログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、補助記憶装置４０３、メモリ４０２、または、プロセッサ４０１内のレジスタまたはキャッシュメモリに記憶される。
【００６０】
サーバ装置４００は、１台のコンピュータで構成されていてもよいし、複数台のコンピュータで構成されていてもよい。サーバ装置４００が複数台のコンピュータで構成されている場合は、第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の機能が、各コンピュータに分散されて実現されてもよい。
【００６１】
＊＊＊動作の説明＊＊＊
図５から図１４を参照して、本実施の形態に係る秘匿検索システム１００の動作を説明する。秘匿検索システム１００の動作は、本実施の形態に係る秘匿検索方法に相当する。
【００６２】
図５は、登録装置２００が複数の暗号文と索引とをサーバ装置４００に登録する動作を示している。
【００６３】
ステップＳ１１において、入力部２１０は、複数の平文の入力を受ける。具体的には、入力部２１０は、入出力インタフェース２０４を介して、平文Ｄ１，Ｄ２，Ｄ３，・・・の入力を受ける。本実施の形態では、入力部２１０は、それぞれの平文に対してどの検索者にアクセスを許可するかを示す属性集合Ｓ１，Ｓ２，・・・の入力も受ける。
【００６４】
ステップＳ１２において、暗号文生成部２２０は、入力部２１０に入力された複数の平文を暗号鍵で暗号化して複数の暗号文を生成する。具体的には、暗号文生成部２２０は、平文Ｄ１を暗号鍵ＥＫ１で暗号化し、暗号化によって得られたデータを暗号文Ｃ１としてメモリ２０２に書き込む。暗号文生成部２２０は、平文Ｄ２を暗号鍵ＥＫ１で暗号化し、暗号化によって得られたデータを暗号文Ｃ２としてメモリ２０２に書き込む。暗号文生成部２２０は、平文Ｄ３を暗号鍵ＥＫ２で暗号化し、暗号化によって得られたデータを暗号文Ｃ３としてメモリ２０２に書き込む。各暗号鍵は、補助記憶装置２０３にあらかじめ記憶されているか、入出力インタフェース２０４を介して適宜入力される。どの平文の暗号化にどの暗号鍵を用いるかは、あらかじめ指定されるか、平文の入力時または暗号鍵の入力時に指定される。本実施の形態では、どの平文の暗号化にどの暗号鍵を用いるかは、ステップＳ１１で入力された属性集合によって決定される。
【００６５】
ステップＳ１３において、入力部２１０は、入力部２１０に入力された複数の平文のうち１つ以上の平文に対応するキーワードの入力を受ける。すなわち、入力部２１０は、入力部２１０に入力された複数の暗号文のうち１つ以上の暗号文に対応するキーワードの入力を受ける。具体的には、入力部２１０は、入出力インタフェース２０４を介して、キーワードＷ１，Ｗ２，Ｗ３，・・・の入力を受ける。キーワードＷ１は、平文Ｄ１に対応する。すなわち、キーワードＷ１は、暗号文Ｃ１に対応する。キーワードＷ２は、平文Ｄ１および平文Ｄ２に対応する。すなわち、キーワードＷ２は、暗号文Ｃ１および暗号文Ｃ２に対応する。キーワードＷ３は、平文Ｄ３に対応する。すなわち、キーワードＷ３は、暗号文Ｃ３に対応する。各キーワードは、平文に対して手動で設定されてもよいし、平文から自動で抽出されてもよい。
【００６６】
ステップＳ１４において、索引生成部２３０は、入力部２１０に入力されたキーワードを登録鍵で暗号化して暗号化キーワードを生成する。具体的には、索引生成部２３０は、キーワードＷ１のハッシュ値と、あらかじめ定められた値ｇとをペアリング関数ｅに与え、ペアリング関数ｅより得られた値を底とし、登録鍵ＳＫ１を指数とする、べき乗を算出し、算出結果を暗号化キーワードＶ１としてメモリ２０２に書き込む。索引生成部２３０は、キーワードＷ２のハッシュ値と、値ｇとをペアリング関数ｅに与え、ペアリング関数ｅより得られた値を底とし、登録鍵ＳＫ１を指数とする、べき乗を算出し、算出結果を暗号化キーワードＶ２としてメモリ２０２に書き込む。索引生成部２３０は、キーワードＷ２のハッシュ値と、値ｇとをペアリング関数ｅに与え、ペアリング関数ｅより得られた値を底とし、登録鍵ＳＫ２を指数とする、べき乗を算出し、算出結果を暗号化キーワードＶ３としてメモリ２０２に書き込む。索引生成部２３０は、キーワードＷ３のハッシュ値と、値ｇとをペアリング関数ｅに与え、ペアリング関数ｅより得られた値を底とし、登録鍵ＳＫ２を指数とする、べき乗を算出し、算出結果を暗号化キーワードＶ４としてメモリ２０２に書き込む。各登録鍵は、各暗号鍵と対になっており、各暗号鍵と同じように、補助記憶装置２０３にあらかじめ記憶されているか、入出力インタフェース２０４を介して適宜入力される。どのキーワードの暗号化にどの登録鍵を用いるかは、キーワードに対応する平文がどの暗号鍵で暗号化されたかによって決定される。
【００６７】
データのアクセス権限情報と、対応する暗号鍵および登録鍵との例を図２０に示す。この例では、平文Ｄ１と平文Ｄ２とが属性集合Ｓ１に対応し、平文Ｄ３が属性集合Ｓ２に対応しているとする。すなわち、平文Ｄ１および平文Ｄ２へのアクセスが属性集合Ｓ１に属する検索者Ｐａおよび検索者Ｐｂに許可され、平文Ｄ３へのアクセスが属性集合Ｓ２に属する検索者Ｐｂのみに許可されているとする。ステップＳ１２では、属性集合Ｓ１と属性集合Ｓ２とに対応した暗号鍵および登録鍵のペアとして、それぞれ暗号鍵ＥＫ１および登録鍵ＳＫ１のペアと暗号鍵ＥＫ２および登録鍵ＳＫ２のペアとが生成される。暗号鍵ＥＫ１および登録鍵ＳＫ１のペアは、属性集合Ｓ１と対応付けて保管される。暗号鍵ＥＫ２および登録鍵ＳＫ２のペアは、属性集合Ｓ２と対応付けて保管される。すでに同じ属性集合を使って暗号鍵および登録鍵のペアが登録されていた場合は、暗号鍵および登録鍵のペアが生成される代わりに、保管されている暗号鍵および登録鍵が読み出される。
【００６８】
ステップＳ１５において、索引生成部２３０は、ステップＳ１４で生成した暗号化キーワードと、対応する１つ以上の暗号文を識別する識別情報とを含む索引を生成する。具体的には、索引生成部２３０は、図６に示すように、暗号化キーワードＶ１と、平文Ｄ１の識別子との組み合わせを１つのエントリとして含み、暗号化キーワードＶ２と、平文Ｄ１および平文Ｄ２の識別子との組み合わせを別のエントリとして含む索引を生成する。索引生成部２３０は、図７に示すように、暗号化キーワードＶ３と、平文Ｄ３の識別子との組み合わせを１つのエントリとして含み、暗号化キーワードＶ４と、平文Ｄ３の識別子との組み合わせを別のエントリとして含む索引を生成する。なお、図６および図７に示した索引の構造をそのまま適用することもできるが、頻度分析に対する安全性を確保するために、後述する、図１５および図１６に示すような索引を適用することが望ましい。
【００６９】
ステップＳ１６において、登録部２６０は、暗号文生成部２２０により生成された複数の暗号文と、索引生成部２３０により生成された索引とをサーバ装置４００に送信する。具体的には、登録部２６０は、図１４に示すように、暗号文Ｃ１および暗号文Ｃ２と、図６の索引とをまとめてサーバ装置４００に送信する。登録部２６０は、暗号文Ｃ３と、図７の索引とをまとめてサーバ装置４００に送信する。
【００７０】
図８は、サーバ装置４００が複数の暗号文と索引とをデータベース４６０に登録する動作を示している。
【００７１】
ステップＳ２１において、第１受信部４１０は、登録装置２００から送信された複数の暗号文と索引とを受信する。具体的には、第１受信部４１０は、図１４に示すように、暗号文Ｃ１および暗号文Ｃ２と、図６の索引とをまとめて登録装置２００から受信する。第１受信部４１０は、暗号文Ｃ３と、図７の索引とをまとめて登録装置２００から受信する。
【００７２】
ステップＳ２２において、管理部４２０は、第１受信部４１０により受信された複数の暗号文と索引とをデータベース４６０に登録する。具体的には、管理部４２０は、図１４に示すように、暗号文Ｃ１および暗号文Ｃ２と、図６の索引とをまとめてデータベース４６１に登録する。管理部４２０は、暗号文Ｃ３と、図７の索引とをまとめてデータベース４６１に登録する。なお、データベース４６０は、本実施の形態のように、暗号文と索引のデータベース４６１と、後述する変換鍵のデータベース４６２とに分かれていることが望ましいが、１つに統合されていてもよい。
【００７３】
図９は、登録装置２００が変換鍵をサーバ装置４００に登録するとともに検索鍵を検索装置３００に配布する動作を示している。
【００７４】
ステップＳ３１において、鍵生成部２４０は、登録鍵と、検索装置３００により暗号化に用いられる検索鍵とから、サーバ装置４００により代理人再暗号化に用いられる変換鍵を生成する。具体的には、鍵生成部２４０は、前述した値ｇを底とし、登録鍵ＳＫ１を検索鍵Ｋａで割った値を指数とする、べき乗を算出し、算出結果を変換鍵Ｋ１ａとしてメモリ２０２に書き込む。鍵生成部２４０は、値ｇを底とし、登録鍵ＳＫ１を検索鍵Ｋｂで割った値を指数とする、べき乗を算出し、算出結果を変換鍵Ｋ１ｂとしてメモリ２０２に書き込む。鍵生成部２４０は、値ｇを底とし、登録鍵ＳＫ２を検索鍵Ｋｂで割った値を指数とする、べき乗を算出し、算出結果を変換鍵Ｋ２ｂとしてメモリ２０２に書き込む。各検索鍵は、補助記憶装置２０３にあらかじめ記憶されているか、入出力インタフェース２０４を介して適宜入力される。どの登録鍵にどの検索鍵を組み合わせるかは、あらかじめ指定されるか、登録鍵の入力時または検索鍵の入力時に指定される。ある登録鍵と、ある検索鍵との組み合わせから生成された変換鍵を用いれば、その検索鍵で暗号化されたキーワードを、復号することなく、その登録鍵で暗号化されたキーワードに変換することができる。図２０の例では、登録鍵ＳＫ１で生成された索引は属性集合Ｓ１に含まれる検索者Ｐａと検索者Ｐｂとが検索できる。そのため、検索者Ｐａに配布予定の検索鍵Ｋａと、検索者Ｐｂに配布予定の検索鍵Ｋｂとのそれぞれでの検索が可能となるように、それぞれに対応する変換鍵Ｋ１ａおよび変換鍵Ｋ１ｂが生成される。登録鍵ＳＫ２で生成された索引は属性集合Ｓ２に含まれる検索者Ｐｂのみが検索できる。そのため、検索者Ｐｂに配布予定の検索鍵Ｋｂでの検索が可能となるように、検索鍵Ｋｂに対応する変換鍵Ｋ２ｂが生成される。
【００７５】
ステップＳ３２において、登録部２６０は、鍵生成部２４０により生成された変換鍵をサーバ装置４００に送信する。具体的には、登録部２６０は、図１４に示すように、変換鍵Ｋ１ａ，Ｋ１ｂ，Ｋ２ｂ，・・・をサーバ装置４００に送信する。
【００７６】
ステップＳ３３において、配布部２５０は、鍵生成部２４０により変換鍵の生成に用いられた検索鍵を検索装置３００に送信する。具体的には、配布部２５０は、図１４に示すように、検索鍵Ｋａを、検索者Ｐａの検索装置３００である検索装置３００ａに送信する。配布部２５０は、検索鍵Ｋｂを、検索者Ｐｂの検索装置３００である検索装置３００ｂに送信する。検索者に配布される検索鍵の例を図２１に示す。この例では、検索者Ｐａには検索鍵Ｋａが配布され、検索者Ｐｂには検索鍵Ｋｂが配布される。このように、検索鍵は検索者ごとに異なる。
【００７７】
ステップＳ３３の処理は、ステップＳ３１の処理より前に行われてもよい。
【００７８】
図１０は、サーバ装置４００が変換鍵をデータベース４６０に登録する動作を示している。
【００７９】
ステップＳ４１において、第１受信部４１０は、登録装置２００から送信された変換鍵を受信する。具体的には、第１受信部４１０は、図１４に示すように、変換鍵Ｋ１ａ，Ｋ１ｂ，Ｋ２ｂ，・・・を登録装置２００から受信する。
【００８０】
ステップＳ４２において、管理部４２０は、第１受信部４１０により受信された変換鍵をデータベース４６０に登録する。具体的には、管理部４２０は、図１４に示すように、変換鍵Ｋ１ａ，Ｋ１ｂ，Ｋ２ｂ，・・・をデータベース４６２に登録する。前述したように、本実施の形態では、データベース４６０が、暗号文と索引のデータベース４６１と、変換鍵のデータベース４６２とに分かれている。
【００８１】
図１１は、検索装置３００が検索クエリをサーバ装置４００に送付して検索を要求する動作を示している。
【００８２】
ステップＳ５１において、取得部３１０は、登録装置２００から送信された検索鍵を受信する。具体的には、検索装置３００ａの取得部３１０は、図１４に示すように、検索鍵Ｋａを登録装置２００から受信する。あるいは、検索装置３００ｂの取得部３１０は、検索鍵Ｋｂを登録装置２００から受信する。
【００８３】
ステップＳ５２において、入力部３２０は、検索に用いられるキーワードの入力を受ける。具体的には、入力部３２０は、入出力インタフェース３０４または通信装置３０５を介して、キーワードｗの入力を受ける。
【００８４】
ステップＳ５３において、暗号化部３３０は、入力部３２０に入力されたキーワードを取得部３１０により受信された検索鍵で暗号化して検索クエリを生成する。具体的には、検索装置３００ａの暗号化部３３０は、キーワードｗのハッシュ値を底とし、検索鍵Ｋａを指数とする、べき乗を算出し、算出結果を検索クエリＱとしてメモリ３０２に書き込む。あるいは、検索装置３００ｂの暗号化部３３０は、キーワードｗのハッシュ値を底とし、検索鍵Ｋｂを指数とする、べき乗を算出し、算出結果を検索クエリＱとしてメモリ３０２に書き込む。
【００８５】
ステップＳ５４において、要求部３４０は、暗号化部３３０により生成された検索クエリをサーバ装置４００に送信して検索を要求する。具体的には、検索装置３００ａまたは検索装置３００ｂの要求部３４０は、図１４に示すように、検索クエリＱをサーバ装置４００に送信する。
【００８６】
図１２は、サーバ装置４００が検索を行う動作を示している。
【００８７】
ステップＳ６１において、第２受信部４３０は、検索装置３００から送信された検索クエリを受信する。具体的には、第２受信部４３０は、図１４に示すように、検索クエリＱを検索装置３００ａまたは検索装置３００ｂから受信する。
【００８８】
ステップＳ６２において、検索部４４０は、第２受信部４３０により受信された検索クエリを管理部４２０により登録された変換鍵で再暗号化して再暗号化キーワードを生成する。具体的には、検索部４４０は、図１４に示すように、検索装置３００ａまたは検索装置３００ｂから送信された検索クエリＱをデータベース４６２に登録されている変換鍵Ｋ１ａ，Ｋ１ｂ，Ｋ２ｂ，・・・で再暗号化し、代理人再暗号化によって得られたデータを再暗号化キーワードｖとしてメモリ４０２に書き込む。代理人再暗号化は、変換鍵Ｋ１ａの場合、検索クエリＱと変換鍵Ｋ１ａとをペアリング関数ｅに与え、ペアリング関数ｅより得られた値のハッシュ値を算出することで行われる。代理人再暗号化は、変換鍵Ｋ１ｂの場合、検索クエリＱと変換鍵Ｋ１ｂとをペアリング関数ｅに与え、ペアリング関数ｅより得られた値のハッシュ値を算出することで行われる。代理人再暗号化は、変換鍵Ｋ２ｂの場合、検索クエリＱと変換鍵Ｋ２ｂとをペアリング関数ｅに与え、ペアリング関数ｅより得られた値のハッシュ値を算出することで行われる。
【００８９】
ステップＳ６３において、検索部４４０は、管理部４２０により登録された索引をステップＳ６２で生成した再暗号化キーワードで検索する。具体的には、検索部４４０は、図１４に示すように、データベース４６１に登録されている図６の索引から、再暗号化キーワードｖと一致する暗号化キーワードを含むエントリを抽出する。検索部４４０は、データベース４６１に登録されている図７の索引から、再暗号化キーワードｖと一致する暗号化キーワードを含むエントリを抽出する。
【００９０】
検索結果として暗号化キーワードが得られなければ、検索の動作が終了する。検索結果として暗号化キーワードが得られれば、ステップＳ６４の処理が行われる。再暗号化キーワードｖが暗号化キーワードＶ１と一致する場合、図６の索引から、検索結果として暗号化キーワードＶ１を含むエントリが抽出される。再暗号化キーワードｖが暗号化キーワードＶ２と一致する場合、図６の索引から、検索結果として暗号化キーワードＶ２を含むエントリが抽出される。再暗号化キーワードｖが暗号化キーワードＶ３と一致する場合、図７の索引から、検索結果として暗号化キーワードＶ３を含むエントリが抽出される。再暗号化キーワードｖが暗号化キーワードＶ４と一致する場合、図７の索引から、検索結果として暗号化キーワードＶ４を含むエントリが抽出される。
【００９１】
ステップＳ６４において、検索部４４０は、ステップＳ６３で検索結果として得られた暗号化キーワードを含む索引から識別情報を取得する。そして、検索部４４０は、管理部４２０により登録された複数の暗号文の中から、取得した識別情報によって識別される暗号文を抽出する。具体的には、検索部４４０は、図１４に示すように、検索結果として暗号化キーワードＶ１を含むエントリを抽出した場合、そのエントリに平文Ｄ１の識別子が含まれているため、データベース４６１に登録されている暗号文Ｃ１を抽出する。検索部４４０は、検索結果として暗号化キーワードＶ２を含むエントリを抽出した場合、そのエントリに平文Ｄ１および平文Ｄ２の識別子が含まれているため、データベース４６１に登録されている暗号文Ｃ１および暗号文Ｃ２を抽出する。検索部４４０は、検索結果として暗号化キーワードＶ３を含むエントリを抽出した場合、そのエントリに平文Ｄ３の識別子が含まれているため、データベース４６１に登録されている暗号文Ｃ３を抽出する。検索部４４０は、検索結果として暗号化キーワードＶ４を含むエントリを抽出した場合、そのエントリに平文Ｄ３の識別子が含まれているため、データベース４６１に登録されている暗号文Ｃ３を抽出する。
【００９２】
送信部４５０は、検索部４４０により抽出された暗号文を検索装置３００に送信する。具体的には、送信部４５０は、図１４に示すように、キーワードｗがキーワードＷ１と一致する場合、検索装置３００ａから送信された検索クエリＱに対しては、検索結果として暗号文Ｃ１が抽出されるため、暗号文Ｃ１を検索装置３００ａに送信する。送信部４５０は、キーワードｗがキーワードＷ２と一致する場合、検索装置３００ａから送信された検索クエリＱに対しては、検索結果として暗号文Ｃ１および暗号文Ｃ２が抽出されるため、暗号文Ｃ１および暗号文Ｃ２を検索装置３００ａに送信する。送信部４５０は、キーワードｗがキーワードＷ３と一致する場合、検索装置３００ａから送信された検索クエリＱに対しては、検索結果として暗号文が抽出されないため、暗号文を検索装置３００ａに送信しない。あるいは、送信部４５０は、キーワードｗがキーワードＷ１と一致する場合、検索装置３００ｂから送信された検索クエリＱに対しては、検索結果として暗号文Ｃ１が抽出されるため、暗号文Ｃ１を検索装置３００ｂに送信する。送信部４５０は、キーワードｗがキーワードＷ２と一致する場合、検索装置３００ｂから送信された検索クエリＱに対しては、検索結果として暗号文Ｃ１および暗号文Ｃ２が抽出されるため、暗号文Ｃ１および暗号文Ｃ２を検索装置３００ｂに送信する。送信部４５０は、キーワードｗがキーワードＷ３と一致する場合、検索装置３００ｂから送信された検索クエリＱに対しては、検索結果として暗号文Ｃ３が抽出されるため、暗号文Ｃ３を検索装置３００ｂに送信する。
【００９３】
図１３は、検索装置３００が検索結果を取得する動作を示している。
【００９４】
ステップＳ７１において、要求部３４０は、サーバ装置４００から送信された暗号文を受信する。具体的には、検索装置３００ａまたは検索装置３００ｂの要求部３４０は、キーワードｗがキーワードＷ１と一致する場合、暗号文Ｃ１をサーバ装置４００から受信する。検索装置３００ａまたは検索装置３００ｂの要求部３４０は、キーワードｗがキーワードＷ２と一致する場合、暗号文Ｃ１および暗号文Ｃ２をサーバ装置４００から受信する。検索装置３００ｂの要求部３４０は、キーワードｗがキーワードＷ３と一致する場合、暗号文Ｃ３をサーバ装置４００から受信する。
【００９５】
ステップＳ７２において、復号部３５０は、要求部３４０により受信された暗号文を暗号鍵で復号する。具体的には、検索装置３００ａまたは検索装置３００ｂの復号部３５０は、ステップＳ７１で暗号文Ｃ１が受信されていれば、暗号文Ｃ１を暗号鍵ＥＫ１で復号し、復号によって得られたデータを平文Ｄ１としてメモリ３０２に書き込む。検索装置３００ａまたは検索装置３００ｂの復号部３５０は、ステップＳ７１で暗号文Ｃ２が受信されていれば、暗号文Ｃ２を暗号鍵ＥＫ１で復号し、復号によって得られたデータを平文Ｄ２としてメモリ３０２に書き込む。検索装置３００ｂの復号部３５０は、ステップＳ７１で暗号文Ｃ３が受信されていれば、暗号文Ｃ３を暗号鍵ＥＫ２で復号し、復号によって得られたデータを平文Ｄ３としてメモリ３０２に書き込む。各暗号鍵は、補助記憶装置３０３にあらかじめ記憶されているか、入出力インタフェース３０４または通信装置３０５を介して適宜入力される。本実施の形態では、ステップＳ１２で生成された暗号鍵が、ステップＳ１２以後に、対応する検索者に配布される。図２０の例では、暗号鍵ＥＫ１は検索者Ｐａおよび検索者Ｐｂに送付され、暗号鍵ＥＫ２は検索者Ｐｂのみに送付される。すなわち、暗号鍵ＥＫ１は登録装置２００から検索装置３００ａおよび検索装置３００ｂに送信され、暗号鍵ＥＫ２は登録装置２００から検索装置３００ｂのみに送信される。登録装置２００から送信された暗号鍵ＥＫ１は、ステップＳ７２以前に、検索装置３００ａおよび検索装置３００ｂで受信される。登録装置２００から送信された暗号鍵ＥＫ２は、ステップＳ７２以前に、検索装置３００ｂで受信される。
【００９６】
ステップＳ７３において、出力部３６０は、復号部３５０により得られた平文を出力する。具体的には、検索装置３００ａまたは検索装置３００ｂの出力部３６０は、ステップＳ７２で平文Ｄ１が得られていれば、入出力インタフェース２０４を介して、平文Ｄ１を画面に表示するか、ファイルに出力する。検索装置３００ａまたは検索装置３００ｂの出力部３６０は、ステップＳ７２で平文Ｄ２が得られていれば、入出力インタフェース２０４を介して、平文Ｄ２を画面に表示するか、ファイルに出力する。検索装置３００ｂの出力部３６０は、ステップＳ７２で平文Ｄ３が得られていれば、入出力インタフェース２０４を介して、平文Ｄ３を画面に表示するか、ファイルに出力する。
【００９７】
図１５を参照して、より具体的な索引の生成のしかたを説明する。
【００９８】
ステップＳ１４およびステップＳ１５において、登録装置２００の索引生成部２３０は、入力部２１０に入力されたキーワードを登録鍵で暗号化して得られた結果データに対し、第１変換処理と第２変換処理とを別々に実行する。索引生成部２３０は、第１変換処理を実行して得られた第１変換データを暗号化キーワードとして利用する。索引生成部２３０は、第２変換処理を実行して得られた第２変換データを暗号文識別子で符号化して識別情報を生成する。暗号文識別子は、入力部２１０に入力されたキーワードに対応する暗号文の組み合わせを一意に表すデータである。
【００９９】
本実施の形態では、第１変換処理は、結果データに第１値を連結し、第１値を連結したデータのハッシュ値を第１変換データとして算出する処理である。第２変換処理は、結果データに第１値とは異なる第２値を連結し、第２値を連結したデータのハッシュ値を第２変換データとして算出する処理である。
【０１００】
なお、第１変換処理と第２変換処理は、互いに異なる処理であればよく、種々の変形例が実施可能である。１つの例において、第１変換処理は、結果データを第１ハッシュ関数によってハッシュ値である第１変換データに変換する処理である。第２変換処理は、結果データを第１ハッシュ関数とは異なる第２ハッシュ関数によってハッシュ値である第２変換データに変換する処理である。
【０１０１】
本実施の形態では、第２変換データの符号化は、第２変換データと暗号文識別子との排他的論理和を識別情報として算出することで行われる。
【０１０２】
以下の記号を定義する。
λ：セキュリティパラメータ
Ｗ：登録時のキーワード
ｗ：検索時のキーワード
Ｄ：平文
Ｇ１，Ｇ２，ＧＴ：巡回群
Ｈ１，Ｈ２：ハッシュ関数
ｅ：ペアリング関数
【０１０３】
Ｇ１，Ｇ２，ＧＴともに大きな素数ｐを位数として持つ。Ｇ２の生成元はｇである。つまり、ｇｘ≠１（１≦ｘ≦ｐ−１）かつｇｐ＝１である。
【０１０４】
ハッシュ関数Ｈ１，Ｈ２は、以下のような関数である。
Ｈ１：｛０，１｝＊→Ｇ１（｛０，１｝＊は任意のビット列）
Ｈ２：｛０，１｝＊→｛０，１｝λ
【０１０５】
ペアリング関数ｅは、以下のような関数である。
ｅ：Ｇ１×Ｇ２→ＧＴ
ｅ（Ｈ（ｗ）ｘ，ｇｙ）＝ｅ（Ｈ（ｗ），ｇ）ｘｙが成立する。
【０１０６】
具体的な索引の生成の手順は、以下のとおりである。
１．平文Ｄ１，・・・，Ｄｎから相異なるキーワードＷ１，・・・，ＷＬを抽出する。Ｌは正の整数である。
２．鍵ｓｋ＿Ｓに対応する索引ｉｎｄ＿Ｓ＝｛（キーワード，識別子）｝を生成する。ただし、このＳは、平文Ｄ１，・・・，Ｄｎへのアクセスが許可される検索者を示す属性情報の集合を意味する。例えば、検索者Ｐａおよび検索者Ｐｂに対して平文Ｄ１，・・・，Ｄｎへのアクセスが許可されている場合、Ｓ＝｛Ｐａ，Ｐｂ｝である。この場合、図２０の例を用いると、Ｓ＝Ｓ１、ｓｋ＿Ｓ＝ＳＫ１である。
３．各キーワードに対応する識別子をベクトルで表現する。例えば、平文数ｎ＝５、ハッシュ関数Ｈ２の出力ビット長λ＝１０のとき、キーワードＷ１に平文Ｄ１、平文Ｄ３および平文Ｄ５が対応することは、
（１，０，１，０，１，０，０，０，０，０）
と表現される。キーワードＷＬに平文Ｄ２および平文Ｄ３が対応することは、
（０，１，１，０，０，０，０，０，０，０）
と表現される。すなわち、各ベクトルの順番がヒットする平文の識別子と対応しており、平文Ｄ１、平文Ｄ３および平文Ｄ５の識別子がヒットする場合は、ベクトルの１番目、３番目および５番目の成分が１となり、それ以外の成分がすべて０になる。このとき、ｉｎｄ＿Ｓ＝｛（Ｗ１，（１，０，１，０，１，０，０，０，０，０）），・・・，（ＷＬ，（０，１，１，０，０，０，０，０，０，０））｝が構成される。
４．各Ｗｉ（１≦ｉ≦Ｌ）に対して、ペアリング関数ｅとハッシュ関数Ｈ１，Ｈ２とを用いて、以下のｔ｛ｉ，０｝およびｔ｛ｉ，１｝を計算する。
ｔ｛ｉ，０｝＝Ｈ２（ｅ（Ｈ１（Ｗｉ），ｇｓｋ＿Ｓ）｜｜０）
ｔ｛ｉ，１｝＝Ｈ２（ｅ（Ｈ１（Ｗｉ），ｇｓｋ＿Ｓ）｜｜１）
「｜｜」は連結を表す。ｔ｛ｉ，０｝の計算は、第１変換処理に相当する。ｔ｛ｉ，１｝の計算は、第２変換処理に相当する。この例では、第１値を０、第２値を１としている。なお、ハッシュ関数Ｈ１とハッシュ関数Ｈ２は同じ関数でもよい。
５．各ｉ（１≦ｉ≦Ｌ）に対して、ｔ｛ｉ，１｝のハッシュ値をベクトル表現にする。例えば、ｔ｛１，１｝＝１０１０１０１０１０であれば、これは、
（１，０，１，０，１，０，１，０，１，０）
と表現される。ｔ｛Ｌ，１｝＝１１１１１０００００であれば、これは、
（１，１，１，１，１，０，０，０，０，０）
と表現される。
６．各Ｗｉ（１≦ｉ≦Ｌ）の識別子に対して、ベクトル表現されたｔ｛ｉ，１｝と各成分との排他的論理和を計算する。例えば、Ｗ１について、
（１，０，１，０，１，０，０，０，０，０）＋（１，０，１，０，１，０，１，０，１，０）＝（０，０，０，０，０，０，１，０，１，０）
が計算される。この計算されたベクトルをＴ｛１，１｝と定義する。ＷＬについて、
（０，１，１，０，０，０，０，０，０，０）＋（１，１，１，１，１，０，０，０，０，０）＝（１，０，０，１，１，０，０，０，０，０）
が計算される。この計算されたベクトルをＴ｛Ｌ，１｝と定義する。
７．ｉｎｄ＿Ｓを図１５に示すように更新し、ＩＮＤ＿Ｓ＝（ｉｎｄ＿Ｓ，Ｓ）を出力する。
【０１０７】
図１６を参照して、上述した索引の生成のしかたに対応する、索引の検索のしかたを説明する。
【０１０８】
ステップＳ６２からステップＳ６４において、サーバ装置４００の検索部４４０は、検索装置３００から送信された検索クエリを再暗号化して得られた結果データに対し、第１変換処理と第２変換処理とを別々に実行する。検索部４４０は、第１変換処理を実行して得られた第１変換データを再暗号化キーワードとして利用する。検索部４４０は、検索結果として暗号化キーワードが得られれば、第２変換処理を実行して得られた第２変換データを識別情報で復号して暗号文識別子を取得する。そして、検索部４４０は、管理部４２０により登録された複数の暗号文の中から、取得した暗号文識別子によって表される組み合わせに含まれる暗号文を抽出する。
【０１０９】
前述したように、本実施の形態では、第１変換処理は、結果データに第１値を連結し、第１値を連結したデータのハッシュ値を第１変換データとして算出する処理である。第２変換処理は、結果データに第１値とは異なる第２値を連結し、第２値を連結したデータのハッシュ値を第２変換データとして算出する処理である。
【０１１０】
本実施の形態では、第２変換データの復号は、第２変換データと識別情報との排他的論理和を暗号文識別子として算出することで行われる。
【０１１１】
具体的な索引の検索の手順は、以下のとおりである。
１．検索クエリｑ＿Ｕと変換鍵ｃｋ＿Ｕとに対して、ペアリング関数ｅとハッシュ関数Ｈ１，Ｈ２とを用いて、以下のｔ０およびｔ１を計算する。
ｔ０＝Ｈ２（ｅ（ｑ＿Ｕ，ｃｋ＿Ｕ）｜｜１）＝Ｈ２（ｅ（Ｈ１（ｗ），ｇｓｋ＿Ｓ）｜｜０）
ｔ１＝Ｈ２（ｅ（ｑ＿Ｕ，ｃｋ＿Ｕ）｜｜１）＝Ｈ２（ｅ（Ｈ１（ｗ），ｇｓｋ＿Ｓ）｜｜１）
２．索引ｉｎｄ＿Ｓ＝｛（ｋｅｙ，ｖａｌｕｅ）｝に対して、ｔ０＝ｋｅｙとなるｋｅｙがあるか、バイナリ比較等を用いてチェックする。
３．もしなければ、ＩＤ＝０（空集合）として出力する。もしあれば、（ｋｅｙ，ｖａｌｕｅ）とそのｋｅｙに対応したｖａｌｕｅに対して、ｔ１をベクトル表現した値とｖａｌｕｅとの排他的論理和を計算し、成分が１となっている部分に対応した識別子をすべてＩＤに含め、ＩＤを出力する。例えば、ｉｎｄ＿Ｓが図１６に示すとおりとし、ｔ｛１，０｝＝ｔ０かつｔ１＝（１，０，１，０，１，０，１，０，１，０）とする。このとき、ｔ｛１，０｝に対応した（０，０，０，０，０，０，１，０，１，０）とｔ１＝（１，０，１，０，１，０，１，０，１，０）との排他的論理和を成分ごとに計算し、（１，０，１，０，１，０，０，０，０，０）を得る。よって、平文Ｄ１、平文Ｄ３および平文Ｄ５の識別子をＩＤに含めて、ＩＤを出力する。
【０１１２】
上記のような索引技術を適用することで安全性を高めることができる。
【０１１３】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、複数の鍵を使ってアクセス制御を達成しながら、方式に索引型を適用しているため、秘匿検索の高速化を達成できる。また、共通鍵ベース索引方式のほとんどを適用できるため、汎用性が高い。
【０１１４】
本実施の形態では、特に、公開鍵暗号技術と複数の秘密鍵とを使って、共通鍵暗号ベースの秘匿検索技術におけるアクセス制御を実現することができる。公開鍵暗号技術としては、ペアリングによる代理人再暗号化技術が用いられている。代理人再暗号化技術では、ある変換鍵を使えば、検索者が暗号化したデータを復号せずに、登録者が暗号化したデータへ変換できる。
【０１１５】
本実施の形態では、データ登録時に、タグ型ではなく、索引型のデータが生成され、データ検索時に、索引型の検索クエリが生成される。よって、効率が良い。
【０１１６】
本実施の形態では、データ登録時に同じ暗号化キーワードはまとめて索引に登録されるとともに、既存の安全な索引構成手法を適用して高安全化が可能となる。例えば、索引にダミーを追加したり、ヒットするデータ名も暗号化して隠したりする手法を適用することができる。
【０１１７】
本実施の形態は、既存の共通鍵暗号ベースの索引型の方式に適用できるため、部分一致検索等、柔軟な検索機能付きの索引方式も構成することが可能である。
【０１１８】
＊＊＊他の構成＊＊＊
本実施の形態では、登録装置２００の入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の機能がソフトウェアにより実現されるが、変形例として、入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の機能がハードウェアにより実現されてもよい。この変形例について、主に本実施の形態との差異を説明する。
【０１１９】
図１７を参照して、本実施の形態の変形例に係る登録装置２００の構成を説明する。
【０１２０】
登録装置２００は、電子回路２０９、補助記憶装置２０３、入出力インタフェース２０４および通信装置２０５といったハードウェアを備える。
【０１２１】
電子回路２０９は、入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の機能を実現する専用のハードウェアである。電子回路２０９は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＦＰＧＡ、ＡＳＩＣ、または、これらのうちいくつか、もしくは、すべての組み合わせである。「ＩＣ」は、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。「ＧＡ」は、Ｇａｔｅ  Ａｒｒａｙの略語である。「ＦＰＧＡ」は、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。「ＡＳＩＣ」は、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。
【０１２２】
登録装置２００は、電子回路２０９を代替する複数の電子回路を備えていてもよい。これら複数の電子回路は、全体として入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の機能を実現する。それぞれの電子回路は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＦＰＧＡ、ＡＳＩＣ、または、これらのうちいくつか、もしくは、すべての組み合わせである。
【０１２３】
別の変形例として、入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。すなわち、入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の機能の一部が専用のハードウェアにより実現され、残りがソフトウェアにより実現されてもよい。
【０１２４】
プロセッサ２０１および電子回路２０９は、いずれも処理回路である。すなわち、登録装置２００の構成が図２および図１７のいずれに示した構成であっても、入力部２１０、暗号文生成部２２０、索引生成部２３０、鍵生成部２４０、配布部２５０および登録部２６０の動作は、処理回路により行われる。
【０１２５】
本実施の形態では、検索装置３００の取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の機能がソフトウェアにより実現されるが、変形例として、取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の機能がハードウェアにより実現されてもよい。この変形例について、主に本実施の形態との差異を説明する。
【０１２６】
図１８を参照して、本実施の形態の変形例に係る検索装置３００の構成を説明する。
【０１２７】
検索装置３００は、電子回路３０９、補助記憶装置３０３、入出力インタフェース３０４および通信装置３０５といったハードウェアを備える。
【０１２８】
電子回路３０９は、取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の機能を実現する専用のハードウェアである。電子回路３０９は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＦＰＧＡ、ＡＳＩＣ、または、これらのうちいくつか、もしくは、すべての組み合わせである。
【０１２９】
検索装置３００は、電子回路３０９を代替する複数の電子回路を備えていてもよい。これら複数の電子回路は、全体として取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の機能を実現する。それぞれの電子回路は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＦＰＧＡ、ＡＳＩＣ、または、これらのうちいくつか、もしくは、すべての組み合わせである。
【０１３０】
別の変形例として、取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。すなわち、取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の機能の一部が専用のハードウェアにより実現され、残りがソフトウェアにより実現されてもよい。
【０１３１】
プロセッサ３０１および電子回路３０９は、いずれも処理回路である。すなわち、検索装置３００の構成が図３および図１８のいずれに示した構成であっても、取得部３１０、入力部３２０、暗号化部３３０、要求部３４０、復号部３５０および出力部３６０の動作は、処理回路により行われる。
【０１３２】
本実施の形態では、サーバ装置４００の第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の機能がソフトウェアにより実現されるが、変形例として、第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の機能がハードウェアにより実現されてもよい。この変形例について、主に本実施の形態との差異を説明する。
【０１３３】
図１９を参照して、本実施の形態の変形例に係るサーバ装置４００の構成を説明する。
【０１３４】
サーバ装置４００は、電子回路４０９、補助記憶装置４０３、入出力インタフェース４０４および通信装置４０５といったハードウェアを備える。
【０１３５】
電子回路４０９は、第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の機能を実現する専用のハードウェアである。電子回路４０９は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＦＰＧＡ、ＡＳＩＣ、または、これらのうちいくつか、もしくは、すべての組み合わせである。
【０１３６】
サーバ装置４００は、電子回路４０９を代替する複数の電子回路を備えていてもよい。これら複数の電子回路は、全体として第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の機能を実現する。それぞれの電子回路は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＦＰＧＡ、ＡＳＩＣ、または、これらのうちいくつか、もしくは、すべての組み合わせである。
【０１３７】
別の変形例として、第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。すなわち、第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の機能の一部が専用のハードウェアにより実現され、残りがソフトウェアにより実現されてもよい。
【０１３８】
プロセッサ４０１および電子回路４０９は、いずれも処理回路である。すなわち、サーバ装置４００の構成が図４および図１９のいずれに示した構成であっても、第１受信部４１０、管理部４２０、第２受信部４３０、検索部４４０および送信部４５０の動作は、処理回路により行われる。
【符号の説明】
【０１３９】
１００  秘匿検索システム、１０１  ネットワーク、２００  登録装置、２０１  プロセッサ、２０２  メモリ、２０３  補助記憶装置、２０４  入出力インタフェース、２０５  通信装置、２０９  電子回路、２１０  入力部、２２０  暗号文生成部、２３０  索引生成部、２４０  鍵生成部、２５０  配布部、２６０  登録部、３００  検索装置、３００ａ  検索装置、３００ｂ  検索装置、３０１  プロセッサ、３０２  メモリ、３０３  補助記憶装置、３０４  入出力インタフェース、３０５  通信装置、３０９  電子回路、３１０  取得部、３２０  入力部、３３０  暗号化部、３４０  要求部、３５０  復号部、３６０  出力部、４００  サーバ装置、４０１  プロセッサ、４０２  メモリ、４０３  補助記憶装置、４０４  入出力インタフェース、４０５  通信装置、４０９  電子回路、４１０  第１受信部、４２０  管理部、４３０  第２受信部、４４０  検索部、４５０  送信部、４６０  データベース、４６１  データベース、４６２  データベース。
【図１】
2019215818.tif 000003
【図２】
2019215818.tif 000004
【図３】
2019215818.tif 000005
【図４】
2019215818.tif 000006
【図５】
2019215818.tif 000007
【図６】
2019215818.tif 000008
【図７】
2019215818.tif 000009
【図８】
2019215818.tif 000010
【図９】
2019215818.tif 000011
【図１０】
2019215818.tif 000012
【図１１】
2019215818.tif 000013
【図１２】
2019215818.tif 000014
【図１３】
2019215818.tif 000015
【図１４】
2019215818.tif 000016
【図１５】
2019215818.tif 000017
【図１６】
2019215818.tif 000018
【図１７】
2019215818.tif 000019
【図１８】
2019215818.tif 000020
【図１９】
2019215818.tif 000021
【図２０】
2019215818.tif 000022
【図２１】
2019215818.tif 000023
【手続補正書】
【提出日】令和1年6月25日(2019.6.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の暗号文のうち１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成し、生成した暗号化キーワードと、前記１つ以上の暗号文を識別する識別情報とを含む索引を生成する索引生成部と、
前記登録鍵と、検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから、前記検索クエリを再暗号化して再暗号化キーワードを生成し前記索引を前記再暗号化キーワードで検索するサーバ装置により代理人再暗号化に用いられる変換鍵を生成する鍵生成部と、
前記複数の暗号文と、前記索引生成部により生成された索引と、前記鍵生成部により生成された変換鍵とを前記サーバ装置に送信する登録部と
を備え、
前記索引生成部は、前記１つ以上の暗号文に対応するキーワードを前記登録鍵で暗号化して得られた結果データに対し、第１変換処理と、前記第１変換処理とは異なる第２変換処理とを別々に実行し、前記第１変換処理を実行して得られた第１変換データを前記暗号化キーワードとして利用し、前記第２変換処理を実行して得られた第２変換データを、前記１つ以上の暗号文の組み合わせを一意に表す暗号文識別子で符号化して前記識別情報を生成する登録装置。
【請求項２】
前記第１変換処理は、前記結果データに第１値を連結し、前記第１値を連結したデータのハッシュ値を前記第１変換データとして算出する処理であり、
前記第２変換処理は、前記結果データに前記第１値とは異なる第２値を連結し、前記第２値を連結したデータのハッシュ値を前記第２変換データとして算出する処理である請求項１に記載の登録装置。
【請求項３】
前記索引生成部は、前記第２変換データと前記暗号文識別子との排他的論理和を前記識別情報として算出する請求項１または２に記載の登録装置。
【請求項４】
複数の暗号文と、１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成する登録装置が生成した、前記暗号化キーワードと前記１つ以上の暗号文を識別する識別情報とを含む索引と、前記登録装置が前記登録鍵と検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから生成した、代理人再暗号化に用いられる変換鍵とを受信する第１受信部と、
前記第１受信部により受信された複数の暗号文と索引と変換鍵とをデータベースに登録する管理部と、
前記検索クエリを受信する第２受信部と、
前記第２受信部により受信された検索クエリを前記管理部により登録された変換鍵で再暗号化して再暗号化キーワードを生成し、前記管理部により登録された索引を前記再暗号化キーワードで検索し、検索結果として前記暗号化キーワードが得られれば、前記索引から前記識別情報を取得し、前記管理部により登録された複数の暗号文の中から、前記識別情報によって識別される暗号文を抽出する検索部と、
前記検索部により抽出された暗号文を前記検索装置に送信する送信部と
を備え、
前記検索部は、前記検索クエリを再暗号化して得られた結果データに対し、第１変換処理と、前記第１変換処理とは異なる第２変換処理とを別々に実行し、前記第１変換処理を実行して得られた第１変換データを前記再暗号化キーワードとして利用し、前記検索結果として前記暗号化キーワードが得られれば、前記第２変換処理を実行して得られた第２変換データを前記識別情報で復号して、前記１つ以上の暗号文の組み合わせを一意に表す暗号文識別子を取得し、前記複数の暗号文の中から、前記暗号文識別子によって表される組み合わせに含まれる暗号文を抽出するサーバ装置。
【請求項５】
前記第１変換処理は、前記結果データに第１値を連結し、前記第１値を連結したデータのハッシュ値を前記第１変換データとして算出する処理であり、
前記第２変換処理は、前記結果データに前記第１値とは異なる第２値を連結し、前記第２値を連結したデータのハッシュ値を前記第２変換データとして算出する処理である請求項４に記載のサーバ装置。
【請求項６】
前記検索部は、前記第２変換データと前記識別情報との排他的論理和を前記暗号文識別子として算出する請求項４または５に記載のサーバ装置。
【請求項７】
前記登録装置と、
前記検索装置と、
請求項４から６のいずれか１項に記載のサーバ装置と
を備える秘匿検索システム。
【請求項８】
登録装置が、複数の暗号文のうち１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成し、生成した暗号化キーワードと、前記１つ以上の暗号文を識別する識別情報とを含む索引を生成し、前記登録鍵と、検索装置により暗号化に用いられる検索鍵とから、サーバ装置により代理人再暗号化に用いられる変換鍵を生成し、前記複数の暗号文と、生成した索引と、生成した変換鍵とを前記サーバ装置に送信し、
前記サーバ装置が、前記複数の暗号文と前記索引と前記変換鍵とをデータベースに登録し、
前記検索装置が、検索に用いるキーワードを暗号化して検索クエリを生成し、生成した検索クエリを前記サーバ装置に送信し、
前記サーバ装置が、前記検索クエリを前記データベースに登録した変換鍵で再暗号化して再暗号化キーワードを生成し、前記データベースに登録した索引を前記再暗号化キーワードで検索し、検索結果として前記暗号化キーワードが得られれば、前記索引から前記識別情報を取得し、前記データベースに登録した複数の暗号文の中から、前記識別情報によって識別される暗号文を抽出し、抽出した暗号文を前記検索装置に送信する秘匿検索方法であって、
前記登録装置は、前記１つ以上の暗号文に対応するキーワードを前記登録鍵で暗号化して得られた結果データに対し、第１変換処理と、前記第１変換処理とは異なる第２変換処理とを別々に実行し、前記第１変換処理を実行して得られた第１変換データを前記暗号化キーワードとして利用し、前記第２変換処理を実行して得られた第２変換データを、前記１つ以上の暗号文の組み合わせを一意に表す暗号文識別子で符号化して前記識別情報を生成する秘匿検索方法。
【請求項９】
コンピュータに、
複数の暗号文のうち１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成し、生成した暗号化キーワードと、前記１つ以上の暗号文を識別する識別情報とを含む索引を生成する索引生成手順と、
前記登録鍵と、検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから、前記検索クエリを再暗号化して再暗号化キーワードを生成し前記索引を前記再暗号化キーワードで検索するサーバ装置により代理人再暗号化に用いられる変換鍵を生成する鍵生成手順と、
前記複数の暗号文と、前記索引生成手順により生成された索引と、前記鍵生成手順により生成された変換鍵とを前記サーバ装置に送信する登録手順と
を実行させ、
前記索引生成手順は、前記１つ以上の暗号文に対応するキーワードを前記登録鍵で暗号化して得られた結果データに対し、第１変換処理と、前記第１変換処理とは異なる第２変換処理とを別々に実行し、前記第１変換処理を実行して得られた第１変換データを前記暗号化キーワードとして利用し、前記第２変換処理を実行して得られた第２変換データを、前記１つ以上の暗号文の組み合わせを一意に表す暗号文識別子で符号化して前記識別情報を生成する登録プログラム。
【請求項１０】
コンピュータに、
複数の暗号文と、１つ以上の暗号文に対応するキーワードを登録鍵で暗号化して暗号化キーワードを生成する登録装置が生成した、前記暗号化キーワードと前記１つ以上の暗号文を識別する識別情報とを含む索引と、前記登録装置が前記登録鍵と検索に用いるキーワードを暗号化して検索クエリを生成する検索装置により暗号化に用いられる検索鍵とから生成した、代理人再暗号化に用いられる変換鍵とを受信する第１手順と、
前記第１手順により受信された複数の暗号文と索引と変換鍵とをデータベースに登録する管理手順と、
前記検索クエリを受信する第２手順と、
前記第２手順により受信された検索クエリを前記管理手順により登録された変換鍵で再暗号化して再暗号化キーワードを生成し、前記管理手順により登録された索引を前記再暗号化キーワードで検索し、検索結果として前記暗号化キーワードが得られれば、前記索引から前記識別情報を取得し、前記管理手順により登録された複数の暗号文の中から、前記識別情報によって識別される暗号文を抽出する検索手順と、
前記検索手順により抽出された暗号文を前記検索装置に送信する送信手順と
を実行させ、
前記検索手順は、前記検索クエリを再暗号化して得られた結果データに対し、第１変換処理と、前記第１変換処理とは異なる第２変換処理とを別々に実行し、前記第１変換処理を実行して得られた第１変換データを前記再暗号化キーワードとして利用し、前記検索結果として前記暗号化キーワードが得られれば、前記第２変換処理を実行して得られた第２変換データを前記識別情報で復号して、前記１つ以上の暗号文の組み合わせを一意に表す暗号文識別子を取得し、前記複数の暗号文の中から、前記暗号文識別子によって表される組み合わせに含まれる暗号文を抽出するサーバプログラム。
【国際調査報告】
2019215818.tif 000024
2019215818.tif 000025
2019215818.tif 000026
2019215818.tif 000027
2019215818.tif 000028
2019215818.tif 000029