(57)【特許請求の範囲】
【請求項１】
秘匿検索を実行するサーバ装置において、
検索装置から秘匿検索要求として、キーワードから確率的暗号化方式によって生成されるトラップドアであって、前記秘匿検索における検索対象データのキーワードが確率的暗号化方式によって暗号化された暗号化キーワードとの一致判定に使用されるトラップドアと、前記トラップドアの生成の元となる前記キーワードから確定的暗号化方式によって生成される確定的暗号化キーワードとの組を受信するサーバ側通信部と、
過去の秘匿検索要求の履歴として、前記サーバ側通信部によって受信された前記トラップドアと前記確定的暗号化キーワードとの組を格納する検索履歴記憶部と、
検索対象データと、この検索対象データの暗号化キーワードとが関連付けられると共に、判明している場合には、前記暗号化キーワードに対応する前記確定的暗号化キーワードがさらに関連付けられたキーワード情報を格納するデータ記憶部と、
前記サーバ側通信部が受信した前記確定的暗号化キーワードと一致する前記確定的暗号化キーワードが、前記検索履歴記憶部に存在するかどうかを判定し、存在すると判定した場合には、前記データ記憶部を対象として、前記検索履歴記憶部に存在する前記確定的暗号化キーワードを用いて、確定的暗号化方式に基づく検索対象データの秘匿検索を実行し、存在しないと判定した場合には、前記データ記憶部を対象として、受信した前記トラップドアと、前記データ記憶部に格納されている前記キーワード情報の前記暗号化キーワードとを用いて、確率的暗号化方式に基づく検索対象データの秘匿検索を実行する判定部と
を備えたことを特徴とするサーバ装置。
【請求項２】
前記サーバ装置は、さらに、
前記サーバ側通信部によって受信された前記トラップドアと前記確定的暗号化キーワードとの組を前記検索履歴記憶部に格納するかどうかの履歴ポリシーを格納するポリシー記憶部と、
前記判定部が、前記サーバ側通信部が受信した前記確定的暗号化キーワードと一致する前記確定的暗号化キーワードが前記検索履歴記憶部に存在しないと判定した場合には、受信した前記トラップドアと前記確定的暗号化キーワードとの組を前記検索履歴記憶部に格納するかどうかを前記ポリシー記憶部の前記履歴ポリシーに従って決定するキャッシュ処理部と
を備えたことを特徴とする請求項１記載のサーバ装置。
【請求項３】
前記判定部は、
前記サーバ側通信部が受信した前記確定的暗号化キーワードと一致する前記確定的暗号化キーワードが前記検索履歴記憶部に存在しないと判定した場合には、前記データ記憶部を対象として、受信した前記トラップドアと、前記データ記憶部に格納されている前記キーワード情報の前記暗号化キーワードとの一致判定を実行し、
前記ポリシー記憶部は、
前記判定部が前記一致判定によって、受信した前記トラップドアと一致する前記暗号化キーワードを前記データ記憶部から検出した場合には、検出された前記暗号化キーワードに、受信した前記トラップドアの組の前記確定的暗号化キーワードを関連付けるかどうかの関連付けポリシーを含み、
前記キャッシュ処理部は、
前記判定部が前記一致判定によって、受信した前記トラップドアと一致する前記暗号化キーワードを前記データ記憶部から検出した場合には、検出された前記暗号化キーワードの前記キーワード情報に、受信した前記トラップドアの組の前記確定的暗号化キーワードを関連付けるかどうかを前記関連付けポリシーに従って決定することを特徴とする請求項２記載のサーバ装置。
【請求項４】
前記サーバ側通信部は、
検索対象データの登録を要求する登録装置から、検索対象データと、この検索対象データの暗号化キーワードとを受信し、
前記サーバ装置は、さらに、
前記サーバ側通信部が受信した前記検索対象データと前記暗号化キーワードとを関連付けて前記データ記憶部に格納する登録部を
備え、
前記判定部は、
前記サーバ側通信部が受信した前記暗号化キーワードと、前記検索履歴記憶部に格納された前記トラップドアとの一致判定を実行し、前記一致判定によって前記サーバ側通信部が受信した前記暗号化キーワードと一致する前記トラップドアを検出した場合には、検出された前記トラップドアと組をなす前記確定的暗号化キーワードを、前記登録部によって前記データ記憶部に格納された前記暗号化キーワードに関連付けることを特徴とする請求項１〜３のいずれか１項に記載のサーバ装置。
【請求項５】
コンピュータに、
検索装置から秘匿検索要求として、キーワードから確率的暗号化方式によって生成されるトラップドアであって、秘匿検索における検索対象データのキーワードが確率的暗号化方式によって暗号化された暗号化キーワードとの一致判定に使用されるトラップドアと、前記トラップドアの生成の元となる前記キーワードから確定的暗号化方式によって生成される確定的暗号化キーワードとの組を受信する処理、
過去の秘匿検索要求の履歴として、受信された前記トラップドアと前記確定的暗号化キーワードとの組を検索履歴記憶部に格納する処理、
検索対象データと、この検索対象データの暗号化キーワードとが関連付けられると共に、判明している場合には、前記暗号化キーワードに対応する前記確定的暗号化キーワードがさらに関連付けられたキーワード情報をデータ記憶部に格納する処理、
受信された前記確定的暗号化キーワードと一致する前記確定的暗号化キーワードが、前記検索履歴記憶部に存在するかどうかを判定し、存在すると判定した場合には、前記データ記憶部を対象として、前記検索履歴記憶部に存在する前記確定的暗号化キーワードを用いて、確定的暗号化方式に基づく検索対象データの秘匿検索を実行し、存在しないと判定した場合には、前記データ記憶部を対象として、受信した前記トラップドアと、前記データ記憶部に格納されている前記キーワード情報の前記暗号化キーワードとを用いて、確率的暗号化方式に基づく検索対象データの秘匿検索を実行する処理、
を実行させるための秘匿検索プログラム。
【請求項６】
請求項５記載の秘匿検索プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項７】
秘匿検索要求をサーバ装置に送信する検索装置と、前記秘匿検索要求に応じて秘匿検索を実行するサーバ装置とを備えた秘匿検索システムにおいて、
前記検索装置は、
前記秘匿検索要求として、キーワードから確率的暗号化方式によって生成されるトラップドアであって、前記秘匿検索における検索対象データのキーワードが確率的暗号化方式によって暗号化された暗号化キーワードとの一致判定に使用されるトラップドアと、前記トラップドアの生成の元となる前記キーワードから確定的暗号化方式によって生成される確定的暗号化キーワードとの組を送信する検索側送信部を備え、
前記サーバ装置は、
前記検索側送信部が送信した前記トラップドアと、前記確定的暗号化キーワードとの組を受信するサーバ側通信部と、
過去の秘匿検索要求の履歴として、前記サーバ側通信部によって受信された前記トラップドアと前記確定的暗号化キーワードとの組を格納する検索履歴記憶部と、
検索対象データと、この検索対象データの暗号化キーワードとが関連付けられると共に、判明している場合には、前記暗号化キーワードに対応する前記確定的暗号化キーワードがさらに関連付けられたキーワード情報を格納するデータ記憶部と、
前記サーバ側通信部が受信した前記確定的暗号化キーワードと一致する前記確定的暗号化キーワードが、前記検索履歴記憶部に存在するかどうかを判定し、存在すると判定した場合には、前記データ記憶部を対象として、前記検索履歴記憶部に存在する前記確定的暗号化キーワードを用いて、確定的暗号化方式に基づく検索対象データの秘匿検索を実行し、存在しないと判定した場合には、前記データ記憶部を対象として、受信した前記トラップドアと、前記データ記憶部に格納されている前記キーワード情報の前記暗号化キーワードとを用いて、確率的暗号化方式に基づく検索対象データの秘匿検索を実行する判定部と
を備えたことを特徴とする秘匿検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、秘匿検索を行うサーバ装置、秘匿検索プログラム、記録媒体及び秘匿検索システムに関する。
【背景技術】
【０００２】
秘匿検索システムは、サーバに保存されたデータを、検索者がキーワードを指定して検索でき、かつその際にデータ、キーワードをサーバに対して秘匿する。秘匿検索システムは、機密データ管理のアウトソーシングや、メールサーバにおける暗号化メールのフィルタリングへの応用が期待されている。秘匿検索システムには、種々の安全性要件を達成するための技術や、サーバや検索者のストレージ、通信オーバーヘッド、演算オーバーヘッドを削減するための様々な技術が提案されている。【０００３】
秘匿検索は、確定的暗号をベースとしたもの、確率的暗号をベースとしたものに大別できる。確定的暗号をベースとした秘匿検索では、同じキーワードが同じ暗号化キーワードに対応するため、サーバは指定された暗号化キーワードに基づくバイナリ一致判定を行うだけで良く、既存の検索技術を用いた高速化が可能というメリットを持つ。しかし、キーワードの頻度情報がそのまま暗号化キーワードの頻度情報として現れるため、サーバが暗号化キーワードの頻度を調べることによって対応するキーワードを推測する「頻度分析」と呼ばれる攻撃が可能となるデメリットもある。【０００４】
一方で、確率的暗号をベースとした秘匿検索では、同じキーワードから異なる暗号化キーワードが生成されるため、キーワードの頻度情報が保存されず、上記の頻度分析攻撃を受けることがない。かわりに、暗号化キーワードと検索要求（トラップドア）の照合に、バイナリ一致判定ではない特別な演算を必要とし、さらに通常の検索で用いられる高速化技術も適用できないため、検索完了までに非常に多くの時間を要するという課題がある。この課題への対策として、確率的暗号と確定的暗号とを併用することで、確率的暗号の安全性と、確定的暗号の高速性との両面を活かす方法がある。【０００５】
特許文献１では、確率的暗号の値を格納するテーブル、確定的暗号の値を格納するテーブルを用意し、さらに両テーブル間の関係を暗号化して保持するテーブルを利用することで、確率的暗号の値を高速に検索する方式が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１９８０７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の方式では、データ登録処理において、確率的暗号の値と、確定的暗号の値との両方をサーバに送信する。これらの対応に関する情報は、その後の処理で暗号化されるため、データが外部の攻撃者に漏えいした場合には、攻撃者は確率的暗号の値と確定的暗号の値を紐付けすることができず、データの安全性は確率的暗号と同程度に保たれることになる。一方、サーバ自身は、データ登録処理の時点で確率的暗号の値と確定的暗号の値とを紐付けできており、悪意を持ったサーバであればこの情報を用いた頻度分析攻撃が可能である。このため、サーバに対する安全性は確定的暗号と同程度まで低下してしまうという課題があった。【０００８】
本発明は上記の課題を解決するためになされたもので、サーバに対する安全性を確率的暗号ベースの秘匿検索から低下させることなく、確定的暗号の要素を取り入れることで、秘匿検索システム全体の検索速度を向上することを目的とする。
【課題を解決するための手段】
【０００９】
この発明のサーバ装置は、
秘匿検索を実行するサーバ装置において、
検索装置から秘匿検索要求として、キーワードから確率的暗号化方式によって生成されるトラップドアであって、前記秘匿検索における検索対象データのキーワードが確率的暗号化方式によって暗号化された暗号化キーワードとの一致判定に使用されるトラップドアと、前記トラップドアの生成の元となる前記キーワードから確定的暗号化方式によって生成される確定的暗号化キーワードとの組を受信するサーバ側通信部と、
過去の秘匿検索要求の履歴として、前記サーバ側通信部によって受信された前記トラップドアと前記確定的暗号化キーワードとの組を格納する検索履歴記憶部と、
検索対象データと、この検索対象データの暗号化キーワードとが関連付けられると共に、判明している場合には、前記暗号化キーワードに対応する前記確定的暗号化キーワードがさらに関連付けられたキーワード情報を格納するデータ記憶部と、
前記サーバ側通信部が受信した前記確定的暗号化キーワードと一致する前記確定的暗号化キーワードが、前記検索履歴記憶部に存在するかどうかを判定し、存在すると判定した場合には、前記データ記憶部を対象として、前記検索履歴記憶部に存在する前記確定的暗号化キーワードを用いて、確定的暗号化方式に基づく検索対象データの秘匿検索を実行し、存在しないと判定した場合には、前記データ記憶部を対象として、受信した前記トラップドアと、前記データ記憶部に格納されている前記キーワード情報の前記暗号化キーワードとを用いて、確率的暗号化方式に基づく検索対象データの秘匿検索を実行する判定部と
を備えたことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、サーバに対する安全性を確率的暗号ベースの秘匿検索から低下させることなく、秘匿検索システム全体の検索速度を向上することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１の秘匿検索システム１００の構成を示す図。
【図２】実施の形態１のサーバ装置２０１のブロック図。
【図３】実施の形態１の登録装置３０１のブロック図。
【図４】実施の形態１の検索装置４０１のブロック図。
【図５】実施の形態１の暗号化キーワード記憶領域２１１を示す図。
【図６】実施の形態１のデータ記憶領域２１２を示す図。
【図７】実施の形態１の検索履歴記憶領域２１３を示す図。
【図８】実施の形態１の暗号化キーワード記憶領域２１１を示す図。
【図９】実施の形態１のデータ記憶領域２１２を示す図。
【図１０】実施の形態１の暗号化キーワード記憶領域２１１を示す図。
【図１１】実施の形態１のデータ記憶領域２１２を示す図。
【図１２】実施の形態１の検索履歴記憶領域２１３を示す図。
【図１３】実施の形態１の暗号化キーワード記憶領域２１１を示す図。
【図１４】実施の形態１の暗号化キーワード記憶領域２１１を示す図。
【図１５】実施の形態１の検索履歴記憶領域２１３を示す図。
【図１６】実施の形態１の暗号化キーワード記憶領域２１１を示す図。
【図１７】実施の形態１の検索履歴記憶領域２１３を示す図。
【図１８】実施の形態１の暗号化キーワード記憶領域２１１とデータ記憶領域２１２とを併せた内容の記憶領域を示す図。
【図１９】実施の形態１の暗号化キーワード記憶領域２１１を示す図。
【図２０】実施の形態１の暗号化キーワード記憶領域２１１を示す図。
【図２１】実施の形態１のサーバ装置２０１、登録装置３０１、検索装置４０１の初期設定を示すフロー。
【図２２】実施の形態１の登録装置３０１の送信処理のフローを示す図。。
【図２３】実施の形態１のサーバ装置２０１の登録処理のフローを示す図。。
【図２４】実施の形態１の検索装置４０１の検索要求の送信処理のフローを示す図。。
【図２５】実施の形態１の検索装置４０１の秘匿検索のフローを示す図。
【図２６】実施の形態２のサーバ装置２０１等の外観の一例を示す図。
【図２７】実施の形態２のサーバ装置２０１等のハードウェア構成を示す図。
【発明を実施するための形態】
【００１２】
実施の形態１．
図１〜図２５を参照して実施の形態１を説明する。
図１〜図４は秘匿検索システム１００及び各装置の構成を示す図である。
図５〜図２０は、各記憶領域の状態を示す図である。
図２１〜図２５は、各装置の動作を示すフローである。なお、各フローに（）で構成要素が示されている場合は、その構成要素が処理の主体であることを示す。
【００１３】
図１は、秘匿検索システム１００の構成例である。秘匿検索システム１００は、サーバ装置２０１に保存されたデータ（検索対象データ）を、ユーザがキーワードを指定して検索できる。かつその際に、秘匿検索システム１００は、データ、キーワードをサーバ装置２０１に対して秘匿する。秘匿検索システム１００は、サーバ装置２０１、情報登録装置３０１、情報検索装置４０１を備える。サーバ装置２０１、情報登録装置３０１、情報検索装置４０１はネットワーク１０１に接続しており、これらは、ネットワーク１０１を介して通信する。以下、情報登録装置３０１、情報検索装置４０１は、登録装置３０１、検索装置４０１と呼ぶ。
【００１４】
図２は、秘匿検索システム１００において、データ、キーワードを保持し、検索を行うサーバ装置２０１の構成例を表すブロック図である。図２に示す各装置の構成要素を以下に説明する。
【００１５】
（１）暗号化キーワード記憶領域２１１は、確率的暗号によって暗号化されたキーワード（以降、暗号化キーワード）と、確定的暗号によって暗号化されたキーワード（以降、確定的暗号化キーワード）を、対応するデータＩＤと関連付けて記憶する。
図５は、暗号化キーワード記憶領域２１１が記憶するデータの一例を表す。
（２）データ記憶領域２１２は、データを、対応するデータＩＤと関連付けて記憶する。
図６は、データ記憶領域２１２が記憶するデータの一例を表す。なお、データの例としては年齢などの数値、性別などの属性、氏名などの文字列、文書などのファイルなどが挙げられる。また、一つのデータＩＤに対して複数種類のデータを保持しても良い。暗号化キーワード記憶領域２１１とデータ記憶領域２１２とは、データ記憶部２１０を構成する。なお、後述の図２３のＳ２０１で述べるように、暗号化キーワード記憶領域２１１とデータ記憶領域２１２において、データＩＤを介して暗号化キーワードとデータとは関連付けられている。例えば図５、図６において、データＩＤ（ｉｄ１）を介して暗号化キーワード（ｃ１）とデータ（ｄ１）とが関連付けられている。また関連する確定的暗号化キーワード（ｄｅｔ）が判明している場合には、図１３の説明で後述するように、暗号化キーワード（ｃ）とデータ（ｄ）とに対して、判明している確定的暗号化キーワード（ｄｅｔ）が関連づけられる。この関係を有する情報をキーワード情報という。キーワード情報は暗号化キーワード記憶領域２１１とデータ記憶領域２１２とで実現してもよいし、図１８で後述する内容で実現してもよい。
（３）検索履歴記憶領域２１３（検索履歴記憶部）は、検索装置４０１から送られてきた過去の検索要求を、検索履歴として記憶する。
図７は、検索履歴記憶領域２１３が記憶するデータの一例を表す。
（４）キャッシュポリシー記憶領域２１４（ポリシー記憶部）は、検索装置４０１から送られてきた検索要求や、検索処理の結果を、検索履歴記憶領域２１３や暗号化キーワード記憶領域２１１に記憶するか否かのポリシーを記憶する。
ポリシーの例としては、
「全ての検索要求と検索結果をキャッシュする」、
「検索者から指定があった場合に限り、検索要求と検索結果をキャッシュする」、
「全ての検索要求をキャッシュするとともに、ｎ回以上実行された検索要求に対する検索結果もキャッシュする」、
「検索要求のうち確定的暗号化キーワード、および全ての検索結果をキャッシュする」、
などの例が挙げられる。
（５）確率的暗号照合部２２１は、検索装置４０１から送られてきた検索要求に含まれるトラップドアと、暗号化キーワード記憶領域２１１が記憶する、（確率的暗号による）暗号化キーワードについて、キーワードが一致するかどうかを判定する。また、検索履歴記憶領域２１３が記憶するトラップドアと、登録装置３０１から送られてきた暗号化キーワードについての、キーワード一致判定も行う。これらの処理は、既存の暗号技術（確率的暗号ベースの秘匿検索技術）を用いて実現できる。
（６）確定的暗号照合部２２２は、検索装置４０１が送信した検索要求に含まれる確定的暗号化キーワードと、暗号化キーワード記憶領域２１１が記憶する、確定的暗号化キーワードについて、キーワードが一致するかどうかを判定する。この処理は、バイナリ一致判定を用いて実現できる。確率的暗号照合部２２１と確定的暗号照合部２２２とは、判定部２２０を構成する。
（７）キャッシュ処理部２２３は、キャッシュポリシー記憶領域２１４の内容に基づき、検索装置４０１から送られてきた検索要求や、検索処理の結果を、検索履歴記憶領域２１３や暗号化キーワード記憶領域２１１に記憶する。
（８）登録部２２４は登録装置３０１から受信した暗号化キーワード、暗号化データ等を暗号化キーワード記憶領域２１１、データ記憶領域２１２に格納する。
（９）通信部２３１（サーバ側通信部）は、登録装置３０１や検索装置４０１と通信を行う。
【００１６】
図３は、本秘匿検索システム１００において、サーバ装置２０１への暗号化データ（検索対象データ）の登録を行う登録装置３０１の構成例を表すブロック図である。
【００１７】
（１）図３において、登録用暗号鍵記憶領域３１１は、データ登録の際のデータ暗号化、暗号化キーワード生成に用いる暗号鍵を記憶する。
（２）データ暗号処理部３２１は、登録用暗号鍵記憶領域３１１が記憶するデータ暗号化鍵を用い、データを暗号化する。この処理は、既存の暗号技術（例えばＲＳＡ（登録商標）などの公開鍵暗号技術）を用いて実現できる。
（３）暗号化キーワード生成部３２２は、登録用暗号鍵記憶領域３１１が記憶する暗号化キーワード生成鍵を用い、キーワードから、秘匿検索用の暗号化キーワードを生成する。この処理は、既存の暗号技術（確率的暗号ベースの秘匿検索技術）を用いて実現できる。
（４）通信部３３１は、サーバ装置２０１と通信を行う。
【００１８】
図４は、本秘匿検索システム１００において、サーバ装置２０１に暗号化データの検索を依頼する検索装置４０１の構成例を表すブロック図である。
【００１９】
（１）図４において、検索用暗号鍵記憶領域４１１は、データ検索の際のトラップドア生成、確定的暗号化キーワード生成、およびデータ復号に用いる秘密情報を記憶する。
（２）データ復号処理部４２１は、検索用暗号鍵記憶領域４１１が記憶するデータ復号鍵を用い、データを復号する。この処理は、既存の暗号技術（例えばＲＳＡ（登録商標）などの公開鍵暗号技術）を用いて実現できる。
（３）トラップドア生成部４２２は、検索用暗号鍵記憶領域４１１が記憶するトラップドア生成鍵を用い、キーワードから、秘匿検索用の検索要求（トラップドア）を生成する。この処理は、既存の暗号技術（確率的暗号ベースの秘匿検索技術）を用いて実現できる。
（４）確定的暗号化キーワード生成部４２３は、検索用暗号鍵記憶領域４１１が記憶する確定的暗号化キーワード生成鍵を用い、キーワードから、確定的暗号化キーワードを生成する。この処理は、既存の暗号技術（例えばＡＥＳなどの共通鍵暗号技術）を用いて実現できる。
（５）通信部４３１（検索側送信部）は、サーバ装置２０１と通信を行う。
【００２０】
秘匿検索システム１００における手続きは、
（Ａ）各装置の初期設定を行う部分、
（Ｂ）登録装置３０１が検索対象データをサーバ装置２０１に送信、格納する部分、
（Ｃ）検索装置４０１がサーバ装置２０１上にあるデータを検索、取得する部分、
に大別される。以下、それぞれの手続きについて説明する。
【００２１】
（Ａ．各装置の初期設定）
図２１は、サーバ装置２０１等の初期設定を示す。図２１に示すように、サーバ装置２０１は、キャッシュポリシーをキャッシュポリシー記憶領域２１４に格納する。キャッシュポリシーは、例えば、「検索装置４０１から送られてきた検索要求や、検索処理の結果を、検索履歴記憶領域２１３や暗号化キーワード記憶領域２１１に記憶するか否か」のポリシーである。キャッシュポリシーは、検索装置４０１や、秘匿検索システム１００を利用する企業などの管理者が決定してサーバ装置２０１に送付しても良い。あるいは、サーバ装置２０１自身が決定しても良い。なお、以降の説明では、キャッシュポリシーが「全ての検索要求と検索結果をキャッシュする」であるとして説明を行う。
【００２２】
図２１に示すように、検索装置４０１は、データ復号、トラップドア生成、および確定的暗号化キーワード生成に用いる秘密情報を、検索用暗号鍵記憶領域４１１に格納する。これはデータ復号処理部４２１、トラップドア生成部４２２、確定的暗号化キーワード生成部４２３が自ら生成しても良い。あるいは、外部で適切に生成された秘密情報を取得しても良い。データ復号、トラップドア生成用の秘密情報を自ら生成する場合は、対応するデータ暗号化、暗号化キーワード生成用の暗号鍵を公開、もしくは登録装置３０１に送付する。
【００２３】
図２１に示すように、登録装置３０１は、データ暗号化、および暗号化キーワード生成に用いる暗号鍵を、登録用暗号鍵記憶領域３１１に格納する。通常は、正当な検索装置４０１が検索・復号処理を正しく行えるよう、登録装置３０１は、検索装置４０１の検索用暗号鍵記憶領域４１１が記憶する秘密情報に対応する暗号鍵を取得し、格納する。以上で本手続きは完了である。
【００２４】
（Ｂ．検索対象データの送信、格納）
登録装置３０１がデータをサーバ装置２０１に送信する場合、登録装置３０１は、後に検索装置４０１による秘匿検索が行えるよう、キーワードとデータを別々に暗号化したものを送信する。これらを受信したサーバ装置２０１は、必要に応じて検索履歴記憶領域２１３を参照しながら、暗号化キーワード記憶領域２１１、データ記憶領域２１２への格納を行う。以下、本手続きの手順を具体例とともに説明する。
【００２５】
図２２は、登録装置３０１による送信処理のフローである。図２２を参照して、登録装置３０１によるサーバ装置２０１へのデータの送信処理を説明する。
（１）まず、Ｓ１０１において、登録装置３０１のデータ暗号処理部３２１が、データに対し、ユニークなデータＩＤ（ｉｄｘとする）を割り当てる。
（２）次にＳ１０２において、データ暗号処理部３２１が、登録用暗号鍵記憶領域３１１が記憶するデータ暗号化鍵を用いて、データの暗号化を行う。ここでは、正当な検索装置４０１だけが復号できるような、既存の暗号技術を利用する（暗号化データをｄｘとする）。
（３）その後、Ｓ１０３において、暗号化キーワード生成部３２２が、データに関連付けられたキーワードを、登録用暗号鍵記憶領域３１１が記憶する暗号化キーワード生成鍵を用いて暗号化する。ここでは、正当な検索装置４０１だけが検索できるような、既存の暗号技術（確率的暗号ベースの秘匿検索技術）を利用する（暗号化キーワードをｃｘとする）。
（４）そしてＳ１０４において、通信部３３１が、データＩＤ、暗号化キーワード、暗号化データの組（ｉｄｘ，ｃｘ，ｄｘ）をサーバ装置２０１に送信する。
【００２６】
（サーバ装置２０１）
図２３は、サーバ装置２０１によるデータの登録処理のフローである。図２３を参照して、サーバ装置２０１のデータ登録処理を説明する。
（１）通信部２３１が登録装置３０１から（ｉｄｘ，ｃｘ，ｄｘ）を受信すると、登録部２２４は、暗号化キーワード（ｃｘ）をデータＩＤ（ｉｄｘ）と関連付けて暗号化キーワード記憶領域２１１に格納し、暗号化データ（ｄｘ）をデータＩＤ（ｉｄｘ）と関連付けてデータ記憶領域２１２に格納する（Ｓ２０１）。つまり登録部２２４は、（ｃｘ、ｉｄｘ）、（ｄｘ、ｉｄｘ）の様に対応付けて格納する。例えば、本手続き前の暗号化キーワード記憶領域２１１、データ記憶領域２１２の内容がそれぞれ図８、図９のとおりであったとする。この場合、サーバ装置２０１が（ｉｄ６，ｃ６，ｄ６）を受信して処理を行うと、暗号化キーワード記憶領域２１１、データ記憶領域２１２の内容はそれぞれ図１０、図１１のように更新される。
（２）Ｓ２０２において、確率的暗号照合部２２１は、検索履歴記憶領域２１３にトラップドアが存在するかどうかを判定する。「トラップドア」とは、検索装置４０１からサーバ装置２０１に、秘匿検索要求として送信される情報である。トラップドアについては、図２４のＳ３０１で後述する。トラップドアが存在する場合（Ｓ２０２でＹＥＳ）、確率的暗号照合部２２１がトラップドアを用いた照合処理を行う（トラップドアが存在しない場合は本処理をスキップする）。
（３）トラップドアが存在する場合、Ｓ２０３において、確率的暗号照合部２２１が、検索履歴記憶領域２１３が記憶する各トラップドア（ｔｄｉ）と、受信した暗号化キーワード（ｃｘ）とについて、キーワードが一致するかどうかの一致判定を実行（照合処理を実行）する。
（４）確率的暗号照合部２２１は、Ｓ２０４において、検索履歴記憶領域２１３のトラップドア（ｔｄｉ）の中に一致するものがあるかどうか判定する。一致するものがあれば（ｔｄｙとする）、確率的暗号照合部２２１は、検索履歴記憶領域２１３でトラップドア（ｔｄｙ）と関連付けて格納されている、確定的暗号化キーワード（ｄｅｔｙ）を特定する。確率的暗号照合部２２１は、特定した（ｄｅｔｙ）を、暗号化キーワード記憶領域２１１内の確定的暗号化キーワードとして、受信した暗号化キーワード（ｃｘ）と関連付けて格納する（Ｓ２０５）。
【００２７】
例えば上述の例の続きとして、検索履歴記憶領域２１３の内容が図１２のとおりであった場合、確率的暗号照合部２２１は、トラップドア（ｔｄ１）〜（ｔｄ５）と暗号化キーワード（ｃ６）のキーワード一致判定を行う。ここで（ｔｄ２）と（ｃ６）のキーワード一致が確認されれば、暗号化キーワード（ｃ６）に対応する確定的暗号化キーワードが（ｄｅｔ２）であることが分かる。このため、暗号化キーワード記憶領域２１１に（ｃ６）と（ｄｅｔ２）を関連付けて格納する。結果、暗号化キーワード記憶領域２１１は図１３のように更新される。なお、キーワード一致が見つからなかった場合は、特に処理を行わない。以上で本手続きは完了である。
【００２８】
（Ｃ．データの検索、取得）
正当な検索装置４０１は、サーバ装置２０１に格納されたデータに対し、キーワードを指定して秘匿検索を行うことができる。以下、本手続きの手順を具体例とともに説明する。
【００２９】
（検索装置４０１による検索要求）
図２４は、検索装置４０１による検索要求の処理のフローである。図２４を参照して、検索装置４０１による検索要求の送信処理を説明する。
（１）まず、Ｓ３０１において、検索装置４０１のトラップドア生成部４２２が、検索用暗号鍵記憶領域４１１が記憶するトラップドア生成鍵を用いて、検索したいキーワードからトラップドアを生成する。ここでは、既存の暗号技術（確率的暗号ベースの秘匿検索技術）を利用する（トラップドアをｔｄｘとする）。トラップドアとは、検索したいキーワードから確率的暗号化方式によって生成される情報である。トラップドアは、秘匿検索における検索対象データのキーワードが確率的暗号化方式によって暗号化された暗号化キーワードとの一致判定に使用される。同時に、Ｓ３０２において、確定的暗号化キーワード生成部４２３が、検索用暗号鍵記憶領域４１１が記憶する確定的暗号化キーワード生成鍵を用いて、検索したいキーワードから確定的暗号化キーワードを生成する。ここでは、確定的暗号化方式として既存の暗号技術（例えばＡＥＳなどの共通鍵暗号技術）を利用する（確定的暗号化キーワードをｄｅｔｘとする）。つまり確定的暗号化キーワード生成部４２３は、トラップドアｄｘの生成の元となるキーワードｔｄｘから、確定的暗号化方式によって確定的暗号化キーワード（ｄｅｔｘ）を生成する。
そして、
（２）通信部４３１が、トラップドア（ｔｄｘ）、確定的暗号化キーワード（ｄｅｔｘ）の組（ｔｄｘ，ｄｅｔｘ）を、秘匿検索要求としてサーバ装置２０１に送信する（Ｓ３０３）。
なお、（ｄｅｔｘ）は確定的暗号によって生成されるため、検索したいキーワードが同一であれば、常に同一の値が得られることになる。
（３）検索装置４０１は、サーバ装置２０１から検索結果を受信する（Ｓ４０１）。
【００３０】
（サーバ装置２０１）
図２５は、サーバ装置２０１による秘匿検索の処理フローである。図２５を参照して、サーバ装置２０１による秘匿検索処理を説明する。
（１）通信部２３１は検索装置４０１から検索要求（ｔｄｘ，ｄｅｔｘ）を受信する。
（２）この検索要求を受信したサーバ装置２０１は、まず、検索しようとするキーワードが、これまでの検索履歴に含まれているか否かを判定する。具体的には、確定的暗号照合部２２２が、検索履歴記憶領域２１３が記憶する各確定的暗号化キーワード（ｄｅｔｉ）と、検索要求（ｔｄｘ，ｄｅｔｘ）に含まれる確定的暗号化キーワード（ｄｅｔｘ）について、キーワードが一致するかどうかを判定する（Ｓ３０４、Ｓ３０５）。この判定（検索）はバイナリ一致判定で良いため、既存の（暗号化を考えない場合の）検索技術が利用できる。既存の検索技術の例としては、データをあらかじめソートしておくことによる高速化や、ハッシュテーブルの利用による高速化などが挙げられる。
【００３１】
（３）ここでバイナリ一致が見つかった場合（Ｓ３０５でＹＥＳ）は、以前の検索結果が利用できることが分かる。以前の検索結果が利用できることが分かるのは、後述するキャッシュ処理部によるキャッシュ処理（Ｓ３１２）に基づく。確定的暗号照合部２２２が、暗号化キーワード記憶領域２１１から、確定的暗号化キーワードが検索要求に含まれる確定的暗号化キーワード（ｄｅｔｘ）と一致するレコードを抽出する。この抽出処理は上記（Ｓ３０４）と同様、バイナリ一致判定で良いため、既存の検索技術が利用できる。そして、確定的暗号照合部２２２は、一致したレコードからデータＩＤ（ｉｄ）を取得し（Ｓ３０６）、データ記憶領域２１２から、取得したデータＩＤに対応する暗号化データ（ｄ）を取得する（Ｓ３０７）。
（４）その後、通信部２３１が検索装置４０１に、Ｓ３０７で取得された暗号化データを送信する（Ｓ３０８）。なお。複数取得された場合は全て送信するようにしても、一部を送信するようにしても良い。
【００３２】
（５）一方、バイナリ一致が見つからなかった場合は（Ｓ３０５でＮＯ）、既存の秘匿検索技術を利用して、暗号化キーワード記憶領域２１１のレコードを１件ずつ検索する。具体的には、確率的暗号照合部２２１が、暗号化キーワード記憶領域２１１に含まれる全ての暗号化キーワード（ｃｉ）を対象として、検索要求（ｔｄｘ，ｄｅｔｘ）に含まれるトラップドア（ｔｄｘ）とのキーワード一致判定を行う（Ｓ３０９）。そして、受信したトラップドア（ｔｄｘ）と一致する暗号化キーワード（ｃ）がヒットした場合（Ｓ３１０でＹＥＳ）、確率的暗号照合部２２１は、暗号化キーワード記憶領域２１１から、一致したレコードからデータＩＤ（ｉｄ）を取得し、データ記憶領域２１２からデータＩＤ（ｉｄ）に対応する暗号化データを取得する（Ｓ３１１）。その後、通信部２３１が検索装置４０１に、上記で取得された暗号化データを送信する（Ｓ３０８）
【００３３】
（６）なお、検索要求に対応する暗号化キーワードが存在しなかった場合は（Ｓ３１０でＮＯ）、その旨を送信する。
【００３４】
（７）＜キャッシュ処理＞
確定的暗号化キーワードのバイナリ一致が見つからなかった場合（Ｓ３０５でＮＯ）では、さらに、「検索要求および検索結果」のキャッシュ処理を実施する（Ｓ３１２）。具体的には、キャッシュ処理部２２３が、キャッシュポリシー記憶領域２１４に格納されたキャッシュポリシー（履歴ポリシー）の内容に従って、検索要求を検索履歴記憶領域２１３に格納する。また、キャッシュ処理部２２３は、暗号化キーワード記憶領域２１１のレコードのうち、キーワードが一致したレコードについて、確定的暗号化キーワード（ｄｅｔ）として、検索要求に含まれる確定的暗号化キーワード（ｄｅｔｘ）を格納する（Ｓ３１１，Ｓ３１２）。この場合、Ｓ３１０の判定で暗号化キーワード記憶領域２１１に検索要求（ｔｄｘ、ｄｅｔｘ）の（ｔｄｘ）に対応する暗号化キーワード（ｃ）がヒットした場合には（ヒットしたｃをｃｋとする）、キャッシュ処理部２２３は、キャッシュポリシー記憶領域２１４に格納されたキャッシュポリシー（関連付けポリシー）の内容に従って、検索要求（ｔｄｘ、ｄｅｔｘ）に含まれるｄｅｔｘを格納するかどうかを決定する。キャッシュポリシーが格納を指示する場合は、キャッシュ処理部２２３は検索要求のｄｅｔｘを、暗号化キーワード記憶領域２１１の（ｃｋ）に対応付けて格納する。Ｓ３１２のキャッシュ処理によって、次回以降、同じキーワードで検索が行われる際に、確定的暗号化キーワード（ｄｅｔ）を利用した高速な検索（バイナリ一致検索）が可能となる（Ｓ３０６，Ｓ３０７）。また、登録装置３０１からの送信により、データ（ｉｄ，ｃ，ｄ）が追加で登録された際にも、検索履歴記憶領域２１３のトラップドアを利用して、過去の検索キーワード（ｔｄ）と一致する暗号化キーワード（ｃ）をあらかじめ洗い出すことができるので、検索処理に要する時間を短縮できる（図２３のＳ２０２〜Ｓ２０５）。
【００３５】
（検索装置４０１）
最後に、図２４のＳ４０１に示すように、検索結果である暗号化データを受信した検索装置４０１のデータ復号処理部４２１が、検索用暗号鍵記憶領域４１１が記憶するデータ復号鍵を用いて、暗号化データを復号する。ここでは、正当な検索装置４０１だけが復号できるような、既存の暗号技術を利用する。以上で本手続きは完了である。
【００３６】
ここで、本手続きについて、例を使って補足説明を行う。あらかじめ、サーバ装置２０１の暗号化キーワード記憶領域２１１、データ記憶領域２１２、検索履歴記憶領域２１３の内容がそれぞれ図１０、図１１、図１２のとおりであるとする。また、キャッシュポリシー記憶領域２１４には、手続き（Ａ．各装置の初期設定）で述べたように「全ての検索要求と検索結果をキャッシュする」というポリシーが記憶されているものとする。検索装置４０１が、初めて検索されるキーワードから検索要求（ｔｄ６，ｄｅｔ６）を生成し、これをサーバ装置２０１に送信したときを考える。すなわち、（ｄｅｔ６）は、（ｄｅｔ１）〜（ｄｅｔ５）とは異なる値である。このとき、サーバ装置２０１の確定的暗号照合部２２２が検索履歴記憶領域２１３（図１２）から確定的暗号化キーワード（ｄｅｔ６）を検索しても見つからない。したがって、確率的暗号照合部２２１が、暗号化キーワード記憶領域２１１（図１０）からトラップドア（ｔｄ６）とマッチする暗号化キーワードを検索する。この結果、例えば（ｃ２）と（ｃ５）がマッチしたとすると、サーバ装置２０１はこれらに対応する暗号化データ（ｄ２）と（ｄ５）を、検索結果として検索装置４０１に送信する。また、サーバ装置２０１のキャッシュ処理部２２３は、キャッシュポリシーに基づき、暗号化キーワード記憶領域２１１（図１０）のマッチしたレコードに確定的暗号化キーワード（ｄｅｔ６）を格納し、検索履歴記憶領域２１３（図１２）に検索要求（ｔｄ６，ｄｅｔ６）を格納する。その結果、暗号化キーワード記憶領域２１１および検索履歴記憶領域２１３はそれぞれ図１４、図１５のように更新される。
【００３７】
この状況で、さらに検索装置４０１が、同じキーワードから生成された検索要求（ｔｄ７，ｄｅｔ６）をサーバ装置２０１に送信したとする（確定的暗号化キーワードは同一の値となるが、トラップドアは異なる値となることに注意）。サーバ装置２０１の確定的暗号照合部２２２が検索履歴記憶領域２１３（図１５）から確定的暗号化キーワード（ｄｅｔ６）を検索すると、上で格納したものが見つかる。したがって、確定的暗号照合部２２２が、暗号化キーワード記憶領域２１１（図１４）から確定的暗号化キーワード（ｄｅｔ６）を含むレコードを検索する。結果、（ｃ２）と（ｃ５）を含むレコードがマッチするため、サーバ装置２０１はこれらに対応する暗号化データ（ｄ２）と（ｄ５）を、検索結果として検索装置４０１に送信する。今回は検索履歴記憶領域２１３（図１５）のバイナリ一致判定で確定的暗号化キーワードが見つかったため、検索要求・検索結果に関するキャッシュ処理は行わない。
【００３８】
以上、上記（Ａ．各装置の初期設定）〜（Ｃ．データの検索、取得）の手続きによって、検索装置４０１がデータ・キーワードをサーバ装置２０１に対して秘匿したまま検索できる秘匿検索システムが実現できる。（Ｃ．データの検索、取得）で説明した例からも分かるように、同じキーワードの２回目以降の検索では確率的暗号照合部２２１による処理（確率的暗号ベースの秘匿検索）が一切行われず、キーワード一致判定は全て確定的暗号照合部２２２によるバイナリ一致判定のみである。このため、検索処理に要する時間を大幅に短縮することが可能である。同時に、安全性について考えると、本実施の形態で示した方式が、従来の（確率的暗号だけを用いる）秘匿検索と比べて余分にサーバ装置２０１に開示する情報は、検索要求に含まれる確定的暗号化キーワード（ｄｅｔｘ）のみである。したがって、確定的暗号化キーワードとして安全なものを利用すれば、サーバ装置２０１に対する安全性は全く低下しないことになる。なお、システム運用の途中で、例えば図１４のように、暗号化キーワード記憶領域２１１が記憶する一部の暗号化キーワード（図１４では（ｃ２）と（ｃ５））について、キーワードの同一性が漏れた状態になることがある。しかし、これは従来の（確率的暗号だけを用いる）秘匿検索であってもサーバ装置２０１が取得可能な情報であるため、サーバ装置２０１に対する安全性が低下しているわけではない。
【００３９】
一方で、サーバ装置２０１が確定的暗号化キーワードを記憶することによって、データが外部の攻撃者に漏えいした場合、攻撃者に余分な情報が漏れることになる。すなわち、従来の（確率的暗号だけを用いる）秘匿検索ではデータ漏えい時に外部の攻撃者が頻度分析攻撃をすることはできないが、本実施の形態で示した方式では、検索済みキーワードに関して頻度分析攻撃が可能となる。ここには「検索の高速性」「外部攻撃者に対する安全性」のトレードオフがあるが、これをコントロールするのがキャッシュポリシー記憶領域２１４、キャッシュ処理部２２３の一つの役割である。すなわち、秘匿検索システム１００を利用する側で、検索の高速性を最優先したいのであれば、本実施の形態のように全ての検索履歴、検索結果をキャッシュすれば良い。あるいは、頻繁に使われる検索キーワードだけの高速化で十分ならば、そのようなキャッシュポリシーを設定すれば良い。
【００４０】
キャッシュポリシーのもう一つの意義は、検索履歴記憶領域２１３に記憶するトラップドアの数をコントロールすることである。本実施の形態１のように、全ての検索履歴（に含まれるトラップドア）をキャッシュすると、トラップドアの数が増えた際、手続き（Ｂ．検索対象データの送信、格納）のデータ登録で、暗号化キーワードと各トラップドアとの照合処理（Ｓ２０３）に時間を要してしまう。そこで、データ登録に時間をかけすぎないよう、検索履歴記憶領域２１３に記憶するトラップドアの数を制限するようなキャッシュポリシーを設定することが考えられる。
【００４１】
この場合、暗号化キーワード記憶領域２１１の中に、あるトラップドア（ｔｄｘ）に対して照合済み（Ｓ３０９の照合）の暗号化キーワード（ｃ）と、未照合の暗号化キーワード（ｃ）が混在することがある。このため、これらを区別するための情報が必要となる。例えば、暗号化キーワード記憶領域２１１が図１６のような内容を記憶し、検索履歴記憶領域２１３が図１７のような内容を記憶するとする。この図１６、図１７により、次の内容が表現できる。図１７から次のことがいえる。暗号化キーワード記憶領域２１１（図１６）のレコードＩＤ１〜５（ｃ１〜ｃ５）については（ｄｅｔ１）〜（ｄｅｔ６）に対応するトラップドア、すなわち（ｔｄ１）〜（ｔｄ６）を用いた照合（検索照合）が行われたが、その後（ｔｄ１）と（ｔｄ２）が削除され、図１６のレコードＩＤ６については（ｔｄ３）〜（ｔｄ６）での照合だけが行われたという状況を表現できる。この場合、例えば検索要求として検索装置４０１から（ｔｄ７，ｄｅｔ１）を受信したサーバ装置２０１は、図１６のレコードＩＤ１〜５については（トラップドア（ｔｄ７）を用いることなく）検索にマッチしないことが分かる。これは、図１７から、（ｄｅｔ１）に対応するトラップドアは、図１６のレコードＩＤ１〜５（ｃ１〜ｃ５）と検索照合処理（Ｓ３０９）されていることがわかる。また、図１６から、暗号化キーワード（ｃ１〜ｃ５）は、いずれも（ｄｅｔ１）と対応付けられていないので、暗号化キーワード（ｃ１〜ｃ５）は、（ｄｅｔ１）に対応する（ｔｄ７）にマッチしない。よって、暗号化キーワード（ｃ６）とトラップドア（ｔｄ７）の照合処理（検索時の照合）だけを実行すれば良いことになる。なお、トラップドアの数が上限に達した際の、トラップドアの取捨選択については、既存のキャッシュ技術が利用できる。
【００４２】
なお、本実施の形態では、登録装置３０１は、検索に用いないデータ（暗号化データの暗号化前のデータ）も暗号化してサーバ装置２０１に送信している。しかし、データの秘匿が不要であれば暗号化せずにサーバ装置２０１にデータを送信しても良い。また、検索に用いないデータの中に秘匿が必要なものと不要なものとが混在している場合、秘匿が必要なものだけを暗号化してサーバ装置２０１に送信するようにしても良い。
【００４３】
また、本実施の形態では、確定的暗号化キーワードを生成する手段として、同一キーワ―ドが常に同一の値に変換される暗号化（例えばＡＥＳなどの共通鍵暗号化）を用いている。しかし、同一キーワードが同一の値に変換され、かつ元のキーワードが秘匿されるのであれば、必ずしも暗号化でなくても良い。すなわち、確定的暗号化キーワードから元のキーワードを復元する必要がないため、ＨＭＡＣなどの鍵付きハッシュ関数を利用しても良い。
【００４４】
また、本実施の形態では、検索要求として、キーワードから確率的に生成されるトラップドアと、確定的暗号化キーワードを併用している。しかし、（確率的に生成される）暗号化キーワードと照合できるトラップドアをキーワードから確定的に生成できれば、確定的トラップドア一つに、トラップドア・確定的暗号化キーワード両方の役割を持たせることも可能である。これは、例えば確率的トラップドア生成に用いる乱数を、（キーワードにハッシュ関数を適用するなどして）確定的に生成するなどして実現できる。ただし、この場合、乱数を確定的に生成することによって、方式の安全性が低下する可能性があるため注意が必要である。
【００４５】
また、本実施の形態では、手続き（Ａ．各装置の初期設定）で決定したキャッシュポリシーはシステム全体で不変としている。しかし、システム運用の途中で、例えばシステム利用企業の管理者によって変更が行われても良い。
【００４６】
また、本実施の形態では、手続き（Ｂ．検索対象データの送信、格納）でサーバ装置２０１が暗号化キーワードを受け取るたびに、検索履歴記憶領域２１３が記憶する各トラップドアとの照合処理を行っている。しかし、この照合処理を例えば（サーバ装置２０１の処理能力に余裕があると思われる）夜中に一括で行うようにしても良い。この場合、暗号化キーワード記憶領域２１１の中に、検索履歴記憶領域２１３中のトラップドアに対して照合済みの暗号化キーワードと、未照合の暗号化キーワードが混在することになるため、これらを区別するための情報が必要となる。
【００４７】
また、本実施の形態では、登録装置３０１がデータごとにデータＩＤを割り当て、暗号化キーワードと暗号化データの対応付けを行っている。しかし、これをサーバ装置２０１が行っても良い。具体的には、登録装置３０１が暗号化キーワード、暗号化データの組（ｃｘ，ｄｘ）をサーバ装置２０１に送信し、サーバ装置２０１がこれにユニークなデータＩＤ（ｉｄｘ）を割り当てたうえで、（ｃｘ，ｉｄｘ）を暗号化キーワード記憶領域２１１に、（ｉｄｘ，ｄｘ）をデータ記憶領域２１２に格納する。
【００４８】
また、本実施の形態では、サーバ装置２０１において、暗号化キーワードと暗号化データを、暗号化キーワード記憶領域２１１とデータ記憶領域２１２に分けて格納している。しかし、これを一元的に管理することも可能である。この場合、格納されるデータは例えば図１８のようになる。
【００４９】
また、本実施の形態では、一つのデータに対して一つのキーワードが対応する例を示した。しかし、一つのデータに複数のキーワードを対応させても良い。この場合、例えば図１９のデータを暗号化キーワード記憶領域２１１に格納する。図１９の例では、（ｉｄ３）に対応付けられたデータに、暗号化キーワード（ｃ３）、（ｃ４）が対応することになる。また、図２０のように、キーワードの種類が複数あっても良い。
【００５０】
また、本実施の形態では、検索結果として暗号化データを返すためにデータ記憶領域２１２を利用している。しかし、暗号化データを返す必要がない場合、サーバ装置２０１がデータ記憶領域２１２を持たなくても良い。例えば、暗号化データは別の装置が保持し、そこへのアクセスを可能とするためにデータＩＤだけを返すようにしても良い。
【００５１】
また、本実施の形態では、登録装置３０１と検索装置４０１を別々の装置としている。しかし、情報検索者のみが情報登録可能である場合など、これらを一つの装置にまとめても良い。この場合、暗号化キーワード生成鍵などを外部に公開する必要がなくなるため、攻撃者に余分な情報を与えることなく秘匿検索システム１００を運用することができる。
【００５２】
また、本実施の形態では、登録装置３０１の登録用暗号鍵記憶領域３１１や、検索装置４０１の検索用暗号鍵記憶領域４１１に暗号鍵や秘密情報を記憶している。しかし、これらを記憶せずに、必要時に外部から取得するようにしても良い。例えば、ＩＣカードからの取得や、パスワード・生体情報からの自動生成などを実行しても良い。
【００５３】
また、本実施の形態では、登録装置３０１や検索装置４０１を１個だけ利用している。しかし、複数の登録装置３０１や検索装置４０１を利用して、データの登録や検索をそれぞれが実行できるようにしても良い。この場合、複数の検索装置４０１間でトラップドア生成鍵や確定的暗号化キーワード生成鍵を共有することで、異なる装置からでも同じ検索結果を得ることが可能となる。一方で、同じ検索キーワードでも、装置ごとに検索結果を変えたい場合は、トラップドア生成鍵を装置ごとに変えるのに加えて、確定的暗号化キーワード生成鍵も変える必要がある。
【００５４】
実施の形態２．
図２６、図２７を参照して実施の形態２を説明する。実施の形態２は、コンピュータであるサーバ装置２０１，登録装置３０１，検索装置４０１のハードウェア構成を説明する。サーバ装置２０１，登録装置３０１，検索装置４０１はいずれもコンピュータであるので、以下ではサーバ装置２０１を想定して説明する。以下のサーバ装置２０１の説明は登録装置３０１，検索装置４０１にも当てはまる。
【００５５】
図２６は、コンピュータであるサーバ装置２０１の外観の一例を示す図である。
図２７は、サーバ装置２０１のハードウェア資源の一例を示す図である。
【００５６】
外観を示す図２６において、サーバ装置２０１は、システムユニット８３０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置８１３、キーボード８１４（ＫｅｙＢｏａｒｄ：Ｋ／Ｂ）、マウス８１５、コンパクトディスク装置８１８（ＣＤＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット８３０はネットワークに接続している。
【００５７】
またハードウェア資源を示す図２７において、サーバ装置２０１は、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＣＤＤ８１８、磁気ディスク装置８２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【００５８】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＣＤＤ８１８、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部、バッファ、記憶領域の一例である。通信ボード８１６、キーボード８１４などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３などは、出力部、出力装置の一例である。通信ボード８１６（通信部）は、ネットワークに接続されている。
【００５９】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００６０】
上記プログラム群８２３には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【００６１】
ファイル群８２４には、以上の実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。また、ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００６２】
また、以上に述べた実施の形態の説明において、データや信号値は、ＲＡＭ８１２のメモリ、ＣＤＤ８１８のコンパクトディスク、磁気ディスク装置８２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００６３】
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ソフトウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
【００６４】
以上の実施の形態では、例えばサーバ装置２０１を説明したが、サーバ装置２０１は、サーバ装置２０１として機能させるための秘匿検索プログラムとしても把握できることは以上の説明から当然である。また、サーバ装置２０１の各「〜部」の動作は、秘匿検索方法としても把握できることは以上の説明により明らかである。
【符号の説明】
【００６５】
１００  秘匿検索システム、２０１  サーバ装置、２１０  データ記憶部、２１１  暗号化キーワード記憶領域、２１２  データ記憶領域、２１３  検索履歴記憶領域、２１４  キャッシュポリシー記憶領域、２２０  判定部、２２１  確率的暗号照合部、２２２  確定的暗号照合部、２２３  キャッシュ処理部、２２４  登録部、２３１  通信部、３０１  情報登録装置、３１１  登録用暗号鍵記憶領域、３２１  データ暗号処理部、３２２  暗号化キーワード生成部、３３１  通信部、４０１  情報検索装置、４１１  検索用暗号鍵記憶領域、４２１  データ復号処理部、４２２  トラップドア生成部、４２３  確定的暗号化キーワード生成部、４３１  通信部。
【図１】
0005963936.tif 000002
【図２】
0005963936.tif 000003
【図３】
0005963936.tif 000004
【図４】
0005963936.tif 000005
【図５】
0005963936.tif 000006
【図６】
0005963936.tif 000007
【図７】
0005963936.tif 000008
【図８】
0005963936.tif 000009
【図９】
0005963936.tif 000010
【図１０】
0005963936.tif 000011
【図１１】
0005963936.tif 000012
【図１２】
0005963936.tif 000013
【図１３】
0005963936.tif 000014
【図１４】
0005963936.tif 000015
【図１５】
0005963936.tif 000016
【図１６】
0005963936.tif 000017
【図１７】
0005963936.tif 000018
【図１８】
0005963936.tif 000019
【図１９】
0005963936.tif 000020
【図２０】
0005963936.tif 000021
【図２１】
0005963936.tif 000022
【図２２】
0005963936.tif 000023
【図２３】
0005963936.tif 000024
【図２４】
0005963936.tif 000025
【図２５】
0005963936.tif 000026
【図２６】
0005963936.tif 000027
【図２７】
0005963936.tif 000028