(57)【要約】  暗号化タグの各要素とトラップドアの各要素とに関するペアリング演算を実行して秘匿検索処理を行うにあたって、ペアリング演算で使用する各要素に関して記憶部に記憶された事前計算テーブルを用いてペアリング演算を実行することで、秘匿検索処理の高速化を図る演算処理部を備え、演算処理部は、事前計算テーブルとして使用可能な空き容量に関する情報に基づいて、空き容量に収まるように事前計算テーブルのサイズ調整を実行する。
2019220531.tif 000002
【特許請求の範囲】
【請求項１】
暗号化タグの各要素とトラップドアの各要素とに関するペアリング演算を実行し、前記ペアリング演算に基づく一致判定結果を用いて秘匿検索処理を行うにあたって、前記ペアリング演算で使用する各要素に関して、各要素自身に依存する演算を事前計算し、事前計算結果と前記各要素とを関連付けた事前計算テーブルを記憶部に事前に記憶させておき、前記事前計算テーブルを用いて前記ペアリング演算を実行することで前記秘匿検索処理の高速化を図る演算処理部を備えた秘匿検索装置であって、
前記演算処理部は、
前記記憶部の容量に関して、前記事前計算テーブルとして使用可能な空き容量に関する情報を収集し、
収集した前記情報に基づいて、前記空き容量に収まるように、前記記憶部に記憶させる前記事前計算テーブルのサイズ調整を実行する
秘匿検索装置。
【請求項２】
前記演算処理部は、前記各要素の文字位置からペアリング処理の実行回数を特定し、特定した実行回数が多い要素に対応する前記事前計算テーブルのサイズを大きくし、特定した実行回数が少ない要素に対応する前記事前計算テーブルのサイズを小さくするように前記サイズ調整を実行する
請求項１に記載の秘匿検索装置。
【請求項３】
前記演算処理部は、部分一致検索手法を適用することで前記ペアリング演算を実行する
請求項１または２に記載の秘匿検索装置。
【請求項４】
演算処理部を備えた秘匿検索装置において、前記演算処理部で実行される秘匿検索方法であって、
暗号化タグの各要素とトラップドアの各要素とに関するペアリング演算を実行し、前記ペアリング演算に基づく一致判定結果を用いて秘匿検索処理を行う事前処理として、前記ペアリング演算で使用する各要素に関して、各要素自身に依存する演算を事前計算し、事前計算結果と前記各要素とを関連付けた事前計算テーブルを記憶部に事前に記憶させておく事前計算ステップと、
前記事前計算テーブルを用いて前記ペアリング演算を実行することで前記秘匿検索処理の高速化を図る演算ステップと、
を有し、
前記記憶部の容量に関して、前記事前計算テーブルとして使用可能な空き容量に関する情報を収集する情報収集ステップをさらに有し、
前記演算ステップは、前記情報収集ステップで収集された前記情報に基づいて、前記空き容量に収まるように、前記記憶部に記憶させる前記事前計算テーブルのサイズ調整を実行する
秘匿検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データが暗号化されている状態で検索を行う秘匿検索装置および秘匿検索方法に関する。
【背景技術】
【０００２】
秘匿検索とは、暗号化したまま、データを検索することができる技術である。クラウドサービスが普及し始めている現在において、安価で、かつ手間なく利用開始可能なクラウドストレージの利用が、一般的になりつつある。【０００３】
一方で、機微な情報を含むデータをクラウドで管理する場合、情報漏洩のリスクを回避するために、データを暗号化して保管する必要がある。秘匿検索は、暗号化されているデータに対して、復号することなく検索する技術である。このため、秘匿検索は、安全性と機能性とを両立することが可能な技術といえる（例えば、特許文献１〜３、非特許文献１、２参照）。【０００４】
秘匿検索では、２つの暗号化されたキーワードを用いて、暗号化されているデータの検索を実現する。１つ目は、データに関連付けるキーワードの暗号文であり、暗号化タグという。２つ目は、検索するキーワードの暗号文であり、トラップドアという。データを登録するときには、暗号化したデータと暗号化タグとが、ストレージサーバに登録される。【０００５】
暗号化タグは、関連付けられているデータ、またはデータの識別子と紐づけられて、暗号化索引として保管される。秘匿検索は、検索者が送信するトラップドアに対して、復号することなく、一致する暗号化タグを、暗号化索引から見つけることで、データおよびキーワードの情報を露出することなく、検索を実現する。【０００６】
このような秘匿検索は、公開鍵型秘匿検索と、共通鍵型秘匿検索とに大別できる。これら２つの検索は、以下のような異なる特徴をもつ。公開鍵型秘匿検索は、暗号化タグおよびトラップドアの生成に異なる鍵を使用するが、共通鍵型秘匿検索は、暗号化タグおよびトラップドアの生成に同一の鍵を使用する。【０００７】
また、一般的に、公開鍵型秘匿検索は、共通鍵型秘匿検索と比較して、部分一致検索、および柔軟なアクセス制御が可能であり、機能的に優れているメリットがある。その一方、公開鍵型秘匿検索は、共通鍵型秘匿検索と比較して、検索速度が低速であるというデメリットがある。【０００８】
特許文献１および非特許文献２では、ペアリングを用いた部分一致検索手法が示されている。しかしながら、特許文献１および非特許文献２に係る検索手法は、暗号化タグおよびトラップドアを、文字毎に暗号化する構成を備えている。従って、特許文献１および非特許文献２に係る検索手法は、暗号化タグとトラップドアの一致判定に当たって、ペアリングを頻繁に繰り返すこととなる。この結果、暗号化タグおよびトラップドアの個数あるいは文字数によっては、検索速度が大幅に遅延する可能性がある。【０００９】
ペアリングの計算を高速化する手法は、これまでにも多くのものが提案されている。また、ペアリングの入力であるツイスト曲線上の有理点が事前に得られる場合には、事前計算によりペアリングの計算量を削減できる高速化手法が知られている。そして、非特許文献２および特許文献２には、このような高速化手法が記載されている。また、特許文献３も、高速化手法について言及している。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】国際公開第２０１６−１１３８７８号
【特許文献２】特開２０１５−１３５４５２号公報
【特許文献３】国際公開第２００７−０８０６３３号
【非特許文献】
【００１１】
【非特許文献１】C. Costello, D. Stebila, "Fixed Argument Pairings," LATINCRYPT 2010, LNCS 6212, pp.92-108, 2010.
【非特許文献２】Y. Kawai, T. Hirano, Y. Koseki, T. Munaka, "SEPM: Efficient Partial Keyword Search on Encrypted Data," CANS 2015, LNCS 9476, pp.75-91, 2015.
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、従来技術には、以下のような課題がある。
上述したような、ペアリングの計算量を削減できる従来の高速化手法は、事前計算されたテーブルを保持しておく必要がある。従って、特許文献１をはじめとしたペアリングを多用する秘匿検索では、事前計算されたテーブルにより検索処理の高速化が実現できる一方で、事前計算されたテーブルを保管するために、ストレージが圧迫されるという問題がある。【００１３】
本発明は、前記のような課題を解決するためになされたものであり、秘匿検索を行う際に、検索処理の高速化と、記憶装置圧迫の回避との両立を図ることのできる秘匿検索装置および秘匿検索方法を得ることを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る秘匿検索装置は、暗号化タグの各要素とトラップドアの各要素とに関するペアリング演算を実行し、ペアリング演算に基づく一致判定結果を用いて秘匿検索処理を行うにあたって、ペアリング演算で使用する各要素に関して、各要素自身に依存する演算を事前計算し、事前計算結果と各要素とを関連付けた事前計算テーブルを記憶部に事前に記憶させておき、事前計算テーブルを用いてペアリング演算を実行することで秘匿検索処理の高速化を図る演算処理部を備えた秘匿検索装置であって、演算処理部は、記憶部の容量に関して、事前計算テーブルとして使用可能な空き容量に関する情報を収集し、収集した情報に基づいて、空き容量に収まるように、記憶部に記憶させる事前計算テーブルのサイズ調整を実行するものである。【００１５】
また、本発明に係る秘匿検索方法は、演算処理部を備えた秘匿検索装置において、演算処理部で実行される秘匿検索方法であって、暗号化タグの各要素とトラップドアの各要素とに関するペアリング演算を実行し、ペアリング演算に基づく一致判定結果を用いて秘匿検索処理を行う事前処理として、ペアリング演算で使用する各要素に関して、各要素自身に依存する演算を事前計算し、事前計算結果と各要素とを関連付けた事前計算テーブルを記憶部に事前に記憶させておく事前計算ステップと、事前計算テーブルを用いてペアリング演算を実行することで秘匿検索処理の高速化を図る演算ステップと、を有し、記憶部の容量に関して、事前計算テーブルとして使用可能な空き容量に関する情報を収集する情報収集ステップをさらに有し、演算ステップは、情報収集ステップで収集された情報に基づいて、空き容量に収まるように、記憶部に記憶させる事前計算テーブルのサイズ調整を実行するものである。
【発明の効果】
【００１６】
本発明によれば、記憶装置の空き容量の監視結果に基づいて、暗号化タグおよびトラップドアに関して、ペアリング演算に含まれる一部の演算結果を事前計算テーブルとして記憶装置に記憶させておくとともに、記憶装置の空き容量の監視結果に基づいて、事前計算テーブルのサイズを制限する構成を備えている。この結果、秘匿検索を行う際に、検索処理の高速化と、記憶装置圧迫の回避との両立を図ることのできる秘匿検索装置および秘匿検索方法を得ることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態１における秘匿検索システムのシステム構成図である。
【図２】本発明の実施の形態１における管理装置の構成を示すブロック図である。
【図３】本発明の実施の形態１における登録装置の構成を示すブロック図である。
【図４】本発明の実施の形態１における検索装置の構成を示すブロック図である。
【図５】本発明の実施の形態１における管理装置および登録装置による登録処理を示すフローチャートである。
【図６】本発明の実施の形態１における管理装置および検索装置による検索処理を示すフローチャートである。
【図７】本発明の実施の形態１における鍵生成装置、管理装置、登録装置、および検索装置のハードウェア資源の一例を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の秘匿検索装置および秘匿検索方法の好適な実施の形態につき、図面を用いて説明する。なお、以下では、非特許文献２の部分一致秘匿検索方式をもとにして、検索処理の高速化、および記憶装置圧迫の回避を実現する本発明の秘匿検索装置について、具体的に説明する。
【００１９】
実施の形態１．
図１は、本発明の実施の形態１における秘匿検索システム１００のシステム構成図である。秘匿検索システム１００は、管理装置３００、登録装置４００、および検索装置５００を、各々１つ以上有して構成されている。
【００２０】
管理装置３００と、登録装置４００と、検索装置５００とは、通信路であるインターネット１０１により相互に接続されている。なお、インターネット１０１は、ネットワークの一例であり、インターネット１０１の代わりに、他の種類のネットワークを用いることも可能である。
【００２１】
管理装置３００は、例えば、大容量の記憶媒体を持つ計算機である。管理装置３００は、保管装置として機能する。すなわち、管理装置３００は、登録装置４００から送信された登録暗号化データを受信し、登録処理を実行した後のデータを保管する機能を有する。登録処理の具体的な内容に関しては、図２のブロック図および図５のフローチャートを用いて、後で詳細に説明する。
【００２２】
さらに、管理装置３００は、検索装置としても機能する。すなわち、管理装置３００は、検索装置５００から送信されたトラップドアに関するデータを受信し、検索処理を実行して、検索結果を検索装置５００に送信する機能も有する。検索処理の具体的な内容に関しては、図２のブロック図および図６のフローチャートを用いて、後で詳細に説明する。
【００２３】
登録装置４００は、例えば、ＰＣである。登録装置４００は、登録要求装置として機能する。すなわち、登録装置４００は、登録するデータの暗号文である暗号化データＢ（Ｄ）を生成するとともに、登録するデータに関連付けるキーワードを暗号化することで暗号化タグＣ（Ｄ）を生成し、生成した暗号化データＢ（Ｄ）および暗号化タグＣ（Ｄ）を管理装置３００に送信する機能を有する。登録装置４００の具体的な機能に関しては、図３のブロック図および図５のフローチャートを用いて、後で詳細に説明する。
【００２４】
検索装置５００は、例えば、ＰＣである。検索装置５００は、検索要求装置として機能する。すなわち、検索装置５００は、検索キーワードを暗号化することで、トラップドアを生成し、生成したトラップドアを管理装置３００に送信する機能を有する。検索装置５００は、検索結果出力装置としても機能する。すなわち、検索装置５００は、管理装置３００から受信した検索結果を出力する機能も有する。検索装置５００の具体的な機能に関しては、図４のブロック図および図６のフローチャートを用いて、後で詳細に説明する。
【００２５】
なお、同じＰＣ内に、管理装置３００、登録装置４００、検索装置５００の２つ以上の組合せが同時に含まれる構成を採用してもよい。
【００２６】
以下、本実施の形態１の構成について、さらに詳細に説明する。
図１に示したように、秘匿検索システム１００は、管理装置３００と、登録装置４００と、検索装置５００とを備える。以下では、管理装置３００、登録装置４００、および検索装置５００のそれぞれの内部構成について、図面を用いて順番に説明する。
【００２７】
まず、管理装置３００について説明する。図２は、本発明の実施の形態１における管理装置３００の構成を示すブロック図である。図２に示すように、管理装置３００は、受信部３１０、送信部３２０、暗号化データ保管部３３１、トラップドア保管部３３２、照合部３４０、事前計算部３４１、および装置情報収集部３４２を備えて構成されている。なお、図示していないが、管理装置３００は、管理装置３００の各部で使用されるデータを記憶する記憶媒体をさらに備えている。
【００２８】
受信部３１０は、登録装置４００から暗号化データＢ（Ｄ）、および後述する登録暗号化データＲ（Ｄ）を受信し、検索装置５００からトラップドアを受信する。送信部３２０は、検索結果を検索装置５００に送信する。
【００２９】
事前計算部３４１は、照合部３４０における検索処理を高速化するために、事前計算テーブルを計算する。具体的には、事前計算部３４１は、受信部３１０から取得した登録暗号化データＲ（Ｄ）に対する事前計算テーブル、および受信部３１０から取得したトラップドアｔ（ｓ）に対する事前計算テーブルを計算する。
【００３０】
このとき、事前計算部３４１は、暗号化索引Ｉおよびトラップドアｔ（ｓ）を保管するそれぞれの記憶媒体の空き容量に関する情報を、装置情報収集部３４２から受信し、事前計算テーブルのサイズを調整することができる。
【００３１】
暗号化データ保管部３３１は、受信部３１０が受信した登録暗号化データＲ（Ｄ）を暗号化索引Ｉに追加して保管する。暗号化データ保管部３３１は、必要であれば、登録暗号化データＲ（Ｄ）が送信されてきた日時なども、同時に保管してもよい。また、暗号化データ保管部３３１は、登録暗号化データＲ（Ｄ）に対して計算された事前計算テーブルを事前計算部３４１から受信し、暗号化索引Ｉに追加して保管する。
【００３２】
受信部３１０は、削除データ名を受け付けることができる。この場合には、暗号化データ保管部３３１は、暗号化索引Ｉから削除データ名で特定されるデータを削除する。
【００３３】
トラップドア保管部３３２は、受信部３１０が受信したトラップドアｔ（ｓ）を保管する。また、トラップドア保管部３３２は、トラップドアｔ（ｓ）に対して計算された事前計算テーブルを事前計算部３４１から受信し、トラップドアｔ（ｓ）に追加して保管する。
【００３４】
照合部３４０は、トラップドア保管部３３２から受け取ったトラップドアｔ（ｓ）、および暗号化データ保管部３３１から受け取った暗号化索引Ｉに基づいて、検索結果Ｓ（ｓ）を計算し、検索結果Ｓ（ｓ）を送信部３２０へ出力する。
【００３５】
次に、登録装置４００について説明する。図３は、本発明の実施の形態１における登録装置４００の構成を示すブロック図である。図３に示すように、登録装置４００は、受信部４１０、送信部４２０、および暗号化部４４０を備えて構成されている。なお、図示していないが、登録装置４００は、登録装置４００の各部で使用されるデータを記憶する記憶媒体をさらに備えている。
【００３６】
受信部４１０は、データＤ、データ名ＩＤ（Ｄ）、データに関連付けるキーワード集合Ｗ（Ｄ）を、データ登録者からの入力として受け取る。また、受信部４１０は、必要に応じて、削除したいデータ名を、データ登録者からの入力として受け取ることができる。
【００３７】
暗号化部４４０は、受信部４１０からデータＤ、データ名ＩＤ（Ｄ）、およびキーワード集合Ｗ（Ｄ）を受け取り、暗号化データＢ（Ｄ）および暗号化タグＣ（Ｄ）を生成する。さらに、暗号化部４４０は、データ名ＩＤ（Ｄ）と暗号化タグＣ（Ｄ）との組（ＩＤ（Ｄ），Ｃ（Ｄ））を生成する。ここで生成された組（ＩＤ（Ｄ），Ｃ（Ｄ））が、登録暗号化データＲ（Ｄ）に相当する。
【００３８】
送信部４２０は、暗号化部４４０から受け取った暗号化データＢ（Ｄ）および登録暗号化データＲ（Ｄ）を、管理装置３００へ送信する。また、送信部４２０は、削除したい登録データ名を削除データ名として管理装置３００へ送信する。
【００３９】
次に、検索装置５００について説明する。図４は、本発明の実施の形態１における検索装置５００の構成を示すブロック図である。図４に示すように、検索装置５００は、受信部５１０、送信部５２０、出力部５２１、および暗号化部５４０を備えて構成されている。なお、図示していないが、検索装置５００は、検索装置５００の各部で使用されるデータを記憶する記憶媒体をさらに備えている。
【００４０】
受信部５１０は、データ検索者からの入力として検索キーワードｓを受信する。また、受信部５１０は、管理装置３００から送信されてきた検索結果Ｓ（ｓ）を受信する。
【００４１】
暗号化部５４０は、受信部５１０から受け取った検索キーワードｓから、トラップドアｔ（ｓ）を生成する。送信部５２０は、暗号化部５４０で生成されたトラップドアｔ（ｓ）を、管理装置３００へ送信する。
【００４２】
出力部５２１は、受信部５１０から受け取った検索結果Ｓ（ｓ）をデータ検索者に対して出力する。
【００４３】
次に、本実施の形態１に係る秘匿検索装置において実行される登録処理および検索処理の具体的な動作について、フローチャートを参照しながら説明する。なお、前提条件として、登録装置４００は、登録暗号化データＲ（Ｄ）の生成に必要な鍵を、事前に何らかの方法で取得し、記憶しているものとする。また、検索装置５００は、トラップドアｔ（ｓ）の生成に必要な鍵を、事前に何らかの方法で取得し、記憶しているものとする。さらに、管理装置３００は、トラップドアｔ（ｓ）を変換するために必要な鍵を、事前に何らかの方法で取得し、記憶しているものとする。また、これらの鍵は、図１では示したいないが、鍵生成装置２００で生成することができる。なお、鍵生成装置２００に関しては、図７を用いて、ハードウェア資源について後述する。
【００４４】
まず、登録処理について説明する。図５は、本発明の実施の形態１における管理装置３００および登録装置４００により実行される登録処理を示すフローチャートである。ステップＳ１０１において、登録装置４００は、データＤから登録暗号化データＲ（Ｄ）、および暗号化データＢ（Ｄ）を生成し、管理装置３００へ送信する。
【００４５】
登録装置４００は、登録暗号化データＲ（Ｄ）を生成するに当たり、データＤ、データ名ＩＤ（Ｄ）、およびキーワード集合Ｗ（Ｄ）を入力として受け取った後、次の処理を行う。すなわち、登録装置４００は、キーワード集合Ｗ（Ｄ）の要素の一つをキーワードｗとし、キーワードｗをｎ個に分割したものを、ｗ１，ｗ２，…，ｗｎとする。なお、分割は、文字毎でもよいし、単語毎でもよい。ｎは、キーワードｗ毎に異なった個数であってもよい。
【００４６】
始めに、登録装置４００は、全てのキーワードｗに対して、暗号文ｃｔ（ｗ）＝（ｃ０，ｃ１，…，ｃｎ，Ｉ）を生成する。ここで、ｃ１，ｃ２，…，ｃｎは、分割された部分キーワードｗ１，ｗ２，…，ｗｎの暗号文である。また、キーワード集合Ｗ（Ｄ）に対する全ての暗号文ｃｔ（ｗ）の集合を、暗号化タグＣ（Ｄ）とする。以上の手法から、登録装置４００は、登録暗号化データＲ（Ｄ）＝（ＩＤ（Ｄ），Ｃ（Ｄ））を生成する。
【００４７】
さらに、登録装置４００は、データＤを暗号化して、暗号化データＢ（Ｄ）生成する。なお、暗号化データＢ（Ｄ）を生成するための暗号化方法は、例えば、ＡＥＳのような共通鍵暗号を用いてもよく、また、ＩＤベース暗号、属性ベース暗号などを用いてもよい。
【００４８】
次に、ステップＳ１０２において、管理装置３００の受信部３１０は、登録暗号化データＲ（Ｄ）を登録装置４００から受信する。ステップＳ１０３において、管理装置３００の暗号化データ保管部３３１は、ステップＳ１０２において受信部３１０が受信した登録暗号化データＲ（Ｄ）を保管する。
【００４９】
ステップＳ１０４において、管理装置３００の事前計算部３４１は、事前計算パラメータを装置情報収集部３４２から読み込む。なお、事前計算部３４１は、受信部３１０から事前計算パラメータを受け取ってもよい。ここで、事前計算パラメータｐ＝（ｐ１，ｐ２，ｐ３、ｐ４、…）とは、例えば、最大事前計算量ｐ１、最小事前計算量ｐ２、最大使用記憶容量ｐ３、事前計算モードｐ４などの情報からなる集合である。
【００５０】
最大事前計算量ｐ１は、例えば、０以上〜１以下の実数で、ペアリング１回あたりの事前計算量の上限を割合で表したものである。同様に、最小事前計算量ｐ２は、例えば、０以上〜１以下の実数で、ペアリング１回あたりの事前計算量の下限を割合で表したものである。最大使用記憶容量ｐ３は、暗号化索引Ｉ全体の事前計算テーブルを保管するために使用可能な、記憶容量の上限である。
【００５１】
事前計算モードｐ４は、部分キーワードの暗号文ｃ０，ｃ１，…，ｃｎに対して、事前計算量を割り振る方針を規定するためのモードである。例えば、部分キーワードの暗号文のうち、末端に位置するｃ０とｃｎは、一致判定処理、すなわちペアリング処理に入力される回数が１回のみであるが、中間に位置するｃｉは、末端の暗号文よりもペアリング処理に入力される回数が多い。
【００５２】
このように、ペアリング処理に入力される回数が多い暗号文に対して、より多くの事前計算量を割り振ることで、検索処理における高速化、および記憶容量の効率化を図ることができる。すなわち、事前計算モードｐ４によって事前計算量を割り振る方針を規定することで、検索処理における高速化、および記憶容量の効率化を図ることができる。
【００５３】
ステップＳ１０５において、管理装置３００の事前計算部３４１は、ステップＳ１０３において暗号化データ保管部３３１によって保管されている登録暗号化データＲ（Ｄ）と、ステップＳ１０４において読み込んだ事前計算パラメータとにより、登録暗号化データＲ（Ｄ）に対する事前計算テーブルを生成する。なお、事前計算テーブルは、登録処理中には生成せず、検索処理において生成し、次回以降の検索処理で活用するようにしてもよい。
【００５４】
ステップＳ１０６において、管理装置３００の暗号化データ保管部３３１は、ステップＳ１０５において事前計算部３４１が生成した事前計算テーブルを、登録暗号化データＲ（Ｄ）と関連付けて、暗号化索引Ｉへ追加する。このステップＳ１０６により、管理装置３００による一連の登録処理は、終了する。
【００５５】
次に、検索処理について説明する。図６は、本発明の実施の形態１における管理装置３００および検索装置５００により実行される検索処理を示すフローチャートである。ステップＳ２０１において、検索装置５００は、検索キーワードｓからトラップドアｔ（ｓ）を生成し、管理装置３００へ送信する。
【００５６】
検索装置５００は、トラップドアｔ（ｓ）を生成するに当たり、検索キーワードｓを入力として受け取った後、次の処理を行う。すなわち、検索装置５００は、検索キーワードｓをｍ個に分割したものを、ｓ１，ｓ２，…，ｓｍとする。ここでの分割は、文字毎でもよいし、単語毎でもよい。また、ｍは、検索キーワードｓ毎に異なってもよい。
【００５７】
検索装置５００は、分割された検索キーワードｓ１，ｓ２，…，ｓｍに対して、トラップドアｔ（ｓ）＝（ｋ０，ｋ１，ｋ２，…，ｋｍ，Ｉ）を生成する。ここで、ｋ１，ｋ２，…，ｋｍは、分割された部分キーワードｓ１，ｓ２，…，ｓｍの暗号文である。
【００５８】
次に、ステップＳ２０２において、管理装置３００の受信部３１０は、トラップドアｔ（ｓ）を検索装置５００から受信する。ステップＳ２０３において、管理装置３００のトラップドア保管部３３２は、ステップＳ２０２において受信部３１０が受信したトラップドアｔ（ｓ）を保管する。
【００５９】
ステップＳ２０４において、管理装置３００の事前計算部３４１は、事前計算パラメータを装置情報収集部３４２から読み込む。なお、事前計算部３４１は、受信部３１０から事前計算パラメータを受け取ってもよい。
【００６０】
ステップＳ２０５において、管理装置３００の事前計算部３４１は、ステップＳ２０３においてトラップドア保管部３３２によって保管されているトラップドアｔ（ｓ）と、ステップＳ２０４において読み込んだ事前計算パラメータとにより、トラップドアｔ（ｓ）に対する事前計算テーブルを生成する。
【００６１】
ステップＳ２０６において、管理装置３００の照合部３４０は、ステップＳ２０５において事前計算部３４１が生成した事前計算テーブルと、トラップドア保管部３３２が保管しているトラップドアｔ（ｓ）と、暗号化データ保管部３３１が保管している暗号化索引Ｉとを用いて、トラップドアｔ（ｓ）と暗号化タグＣ（Ｄ）との一致判定を行う。このとき、暗号化索引Ｉに登録暗号化データＲ（Ｄ）と関連付けられた事前計算テーブルが含まれている場合には、照合部３４０は、この登録暗号化データＲ（Ｄ）に対する事前計算テーブルも使用して、一致判定処理を高速化することができる。
【００６２】
次に、照合部３４０は、求めた一致判定結果を検索結果として、管理装置３００の送信部３２０へ送信する。なお、ステップＳ２０６が終了した後には、照合部３４０は、トラップドアｔ（ｓ）、およびトラップドアｔ（ｓ）に対して計算された事前計算テーブルを、トラップドア保管部３３２から削除してもよい。
【００６３】
ステップＳ２０７において、管理装置３００の送信部３２０は、照合部３４０から受信した検索結果を、検索装置５００へ送信する。ステップＳ２０７により、管理装置３００による一連の検索処理は、終了する。
【００６４】
一方、ステップＳ２０８において、検索装置５００は、管理装置３００から検索結果を受信し、受信した検索結果をデータ検索者に対して出力する。ステップＳ２０８により、検索装置５００による一連の検索処理は、終了する。
【００６５】
上述した本実施の形態１における秘匿検索を整理すると、以下のようになる。
暗号化タグおよびトラップドアは、文字の暗号文であり、楕円曲線上の有理点（すなわち、楕円点）のベクトルとなっている。そして、本実施の形態１における秘匿検索は、ペアリングを用いた部分一致検索手法であり、暗号化タグＣ（Ｄ）を構成する各要素と、トラップドアｔ（ｓ）を構成する各要素とのペアリング演算を実施することで、両者の一致判定を行っている。従って、一致判定には多くのペアリング演算が必要となる。
【００６６】
そして、ペアリング演算は、２つの楕円点に対して行われることとなるが、片方の楕円点だけに依存した計算が、このペアリング演算には存在する。そこで、本実施の形態１に係る秘匿検索装置は、片方の楕円点だけに依存した計算を事前計算として実行し、その結果を楕円点と関連付けた事前計算テーブルとして記憶部に保存している。
【００６７】
従って、秘匿検索でのペアリング演算に使用する楕円点に関して、事前計算テーブルがすでに存在する場合には、その事前計算テーブルを活用することで、演算処理の高速化を図ることができる。
【００６８】
ただし、楕円点が多くなるに従って、事前計算テーブルを記憶しておくためのメモリサイズも大きくなる。従って、許容される有限のメモリサイズ内で、事前計算テーブルを作成しておく必要がある。そこで、本実施の形態１における秘匿検索は、事前計算テーブルとして使用できる空き容量を監視し、監視結果に基づいて事前計算テーブルのサイズを調整する構成を備えている。
【００６９】
例えば、管理装置３００は、ペアリングにより比較される頻度の高い文字位置を特定あるいは選定し、その文字位置に関する事前計算テーブルを優先して生成するようにして、事前計算テーブルのサイズを調整することができる。逆に、管理装置３００は、一致判定されにくい文字位置、ペアリング処理に入力される回数が少ない文字位置に関する事前計算テーブルのサイズは小さくするように調整することができる。
【００７０】
この結果、秘匿検索を行う際に、検索処理の高速化と、記憶装置圧迫の回避との両立を図ることのできる装置を実現することができる。
【００７１】
次に、鍵生成装置２００、管理装置３００、登録装置４００、および検索装置５００のハードウェア構成について、図面を用いて説明する。図７は、本発明の実施の形態１における鍵生成装置２００、管理装置３００、登録装置４００、および検索装置５００のハードウェア資源の一例を示す図である。図７において、鍵生成装置２００、管理装置３００、登録装置４００、および検索装置５００のそれぞれは、ＣＰＵ２００１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。
【００７２】
ＣＰＵ２００１は、バス２００２を介してＲＯＭ２００３、ＲＡＭ２００４、通信ボード２００５、ディスプレイ２０１１（表示装置）、キーボード２０１２、マウス２０１３、ドライブ２０１４、磁気ディスク装置２０２０などのハードウェアデバイスと接続されている。そして、ＣＰＵ２００１は、これらのハードウェアデバイスを制御する。
【００７３】
ドライブ２０１４は、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。ＲＯＭ２００３、ＲＡＭ２００４、ドライブ２０１４、および磁気ディスク装置２０２０は、記憶装置あるいは記憶部に相当する。
【００７４】
キーボード２０１２、マウス２０１３、および通信ボード２００５は、入力装置の一例である。ディスプレイ２０１１、および通信ボード２００５は、出力装置の一例である。
【００７５】
通信ボード２００５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続されている。
【００７６】
磁気ディスク装置２０２０には、ＯＳ２０２１（オペレーティングシステム）、プログラム群２０２２、ファイル群２０２３が記憶されている。
【００７７】
プログラム群２０２２には、本実施の形態１において「〜部」として説明した図２〜図４の各機能ブロックの機能を実行するプログラムが含まれる。例えば、データ検索プログラム、データ登録プログラムといったプログラムは、ＣＰＵ２００１により、プログラム群２０２２から読み出され、実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順および方法をコンピュータに実行させるものである。
【００７８】
ファイル群２０２３には、本実施の形態１において説明した「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。そして、本実施の形態１における構成図およびフローチャートに含まれている矢印は、主としてデータおよび信号の入出力を示している。
【００７９】
ブロック図およびフローチャートに基づいて説明した本実施の形態１の処理は、ＣＰＵ２００１、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。
【００８０】
なお、本実施の形態において「〜部」として説明した各構成は、「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェア、またはこれらの組み合わせのいずれで実装されても構わない。
【００８１】
以上のように、実施の形態１によれば、以下のような効果を奏する。
（効果１）検索処理の高速化
本実施の形態１に係る秘匿検索装置は、暗号化タグおよびトラップドアに関して、ペアリング演算に含まれる一部の演算を事前計算しておく構成を備えている。この結果、一致判定処理内で行うペアリングを高速化し、検索処理を高速化することができる。
【００８２】
（効果２）記憶装置圧迫の回避
本実施の形態１に係る秘匿検索装置は、ストレージおよびメモリサイズを監視して、事前計算量を調整する構成を備えている。この結果、記憶媒体の空き容量に応じて、事前計算テーブルのサイズを制御することで、記憶装置の容量圧迫を回避することができる。また、事前計算テーブルのサイズを、キーワードの文字位置に応じて調整する構成を備えている。この結果、効率的に事前計算テーブルのサイズを制御することができる。
【符号の説明】
【００８３】
１００  秘匿検索システム、３００  管理装置、４００  登録装置、５００  検索装置、２００１  ＣＰＵ（演算処理部）、２０２０  磁気ディスク装置（記憶部）。
【図１】
2019220531.tif 000003
【図２】
2019220531.tif 000004
【図３】
2019220531.tif 000005
【図４】
2019220531.tif 000006
【図５】
2019220531.tif 000007
【図６】
2019220531.tif 000008
【図７】
2019220531.tif 000009
【国際調査報告】
2019220531.tif 000010
2019220531.tif 000011