(57)【要約】【課題】検索クエリを暗号化したまま暗号化データの検索を行うシステムにおいて、大規模データに対する検索処理を高速化可能とする。【解決手段】検索可能暗号処理システム１０において、他装置と通信する通信装置５０４と、検索対象データとして平文データを秘匿化した秘匿データと平文データを分類する平文インデックスを秘匿化した秘匿化インデックスとを格納した記憶装置５０３と、検索クライアントより平文クエリを秘匿化した秘匿データ用クエリ及び平文インデックスを秘匿化した秘匿化インデックス用クエリを受信し、所定の検索可能暗号技術に基づき、秘匿化インデックス用クエリに該当する秘匿化インデックスを記憶装置にて検索し、該当秘匿化インデックスに分類された秘匿データ群を対象として秘匿データ用クエリに該当する秘匿データを検索し、検索した秘匿データを検索クライアントに返信する処理を実行する演算装置５０１を備えるサーバ３００を含む構成とする。【選択図】図５
2015135541.tif 000002
【特許請求の範囲】
【請求項１】
他装置と通信する通信装置と、
検索対象データとして、平文データを秘匿化した秘匿データと、平文データを分類する平文インデックスを秘匿化した秘匿化インデックスとを格納した記憶装置と、
検索クライアントより、平文クエリを秘匿化した秘匿データ用クエリ、および平文インデックスを秘匿化した秘匿化インデックス用クエリを受信し、所定の検索可能暗号技術に基づいて、前記秘匿化インデックス用クエリに該当する秘匿化インデックスを前記記憶装置において検索し、該当秘匿化インデックスに分類された秘匿データ群を対象として、前記秘匿データ用クエリに該当する秘匿データを検索し、当該検索した秘匿データを前記検索クライアントに返信する処理を実行する演算装置と、
を備えるサーバを含むことを特徴とする検索可能暗号処理システム。
【請求項２】
前記サーバの記憶装置は、
前記秘匿化インデックスと対応付けて、当該秘匿化インデックスに分類される前記平文データを示す識別子を暗号化した暗号化識別子を更に格納し、
前記平文データを示す識別子と、該当平文データを起源とする秘匿データのアドレスとの対応関係を示す関係表を更に格納しており、
前記サーバの演算装置は、
前記検索した該当秘匿化インデックスに対応する暗号化識別子を記憶装置にて取得し、当該取得した暗号化識別子を所定鍵で復号して平文データの識別子を取得し、当該平文データの識別子を前記関係表に照合して、前記平文データの識別子に対応する秘匿データのアドレスを特定し秘匿データを取得する処理を実行するものである、
ことを特徴とする請求項１に記載の検索可能暗号処理システム。
【請求項３】
前記サーバの記憶装置において、各秘匿化インデックスに対応付けた前記暗号化識別子の数が、秘匿化インデックス間で同数であることを特徴とする請求項２に記載の検索可能暗号処理システム。
【請求項４】
前記サーバの演算装置は、
前記検索クライアントより受信した前記秘匿化インデックス用クエリから秘密鍵情報を抽出し、前記秘密鍵情報により前記暗号化識別子を復号するものである、
ことを特徴とする請求項３に記載の検索可能暗号処理システム。
【請求項５】
前記サーバの記憶装置において、
前記秘匿化インデックスが、前記平文データの分類概念の大小に従った複数階層で構成されており、
前記サーバの演算装置は、
前記秘匿化インデックス用クエリに該当する秘匿化インデックスの検索を、前記複数階層のうち最上位階層の秘匿化インデックスから下位階層の秘匿化インデックスに向けて順次実行し、当該検索で特定した最下位階層の秘匿化インデックスに分類された秘匿データ群を対象として、前記秘匿データ用クエリに該当する秘匿データを検索し、当該検索した秘匿データを前記検索クライアントに返信するものである、
ことを特徴とする請求項４に記載の検索可能暗号処理システム。
【請求項６】
他装置と通信する通信装置と、
平文データを秘匿化して秘匿データを生成し、前記平文データを分類する平文インデックスを秘匿化して秘匿化インデックスを生成し、前記秘匿データおよび前記秘匿化インデックスを前記検索対象データとして前記サーバに送信する処理を実行する演算装置と、
を備える登録クライアントを更に含むことを特徴とする請求項５に記載の検索可能暗号処理システム。
【請求項７】
前記登録クライアントの演算装置は、
前記平文データを所定アルゴリズムに適用して前記平文インデックスを生成するものであることを特徴とする請求項６に記載の検索可能暗号処理システム。
【請求項８】
前記登録クライアントの演算装置は、
前記平文データをハッシュ関数またはｎ−ｇｒａｍに適用して前記平文インデックスを生成するものであることを特徴とする請求項７に記載の検索可能暗号処理システム。
【請求項９】
前記登録クライアントの演算装置は、
前記平文データを示す識別子を暗号化して暗号化識別子を生成し、当該暗号化識別子を前記サーバに送信するものである、
ことを特徴とする請求項８に記載の検索可能暗号処理システム。
【請求項１０】
前記登録クライアントの演算装置は、
前記暗号化識別子を、各秘匿化インデックスの間で同数だけ生成するものであることを特徴とする請求項９に記載の検索可能暗号処理システム。
【請求項１１】
前記登録クライアントの演算装置は、
前記秘匿化インデックスを、前記平文データの分類概念の大小に従って複数階層で構成し、当該複数階層の秘匿化インデックスおよび前記秘匿データを前記検索対象データとして前記サーバに送信するものであることを特徴とする請求項１０に記載の検索可能暗号処理システム。
【請求項１２】
他装置と通信する通信装置と、検索対象データとして、平文データを秘匿化した秘匿データと、平文データを分類する平文インデックスを秘匿化した秘匿化インデックスとを格納した記憶装置を備えた情報処理装置が、
検索クライアントより、平文クエリを秘匿化した秘匿データ用クエリ、および平文インデックスを秘匿化した秘匿化インデックス用クエリを受信し、所定の検索可能暗号技術に基づいて、前記秘匿化インデックス用クエリに該当する秘匿化インデックスを前記記憶装置において検索し、該当秘匿化インデックスに分類された秘匿データ群を対象として、前記秘匿データ用クエリに該当する秘匿データを検索し、当該検索した秘匿データを前記検索クライアントに返信する処理を実行する、
ことを特徴とする検索可能暗号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索可能暗号処理システムおよび検索可能暗号処理方法に関するものであり、具体的には、サーバ／クライアントモデルにおいて、サーバが、クライアントの要求に従って、暗号化データを復号せずに、預託された暗号化データを検索する、検索処理システムの技術に関する。
【背景技術】
【０００２】
サーバ／クライアントモデルにおいて、クライアントがサーバにデータを預託しながらも、該当サーバにおける預託データの情報漏洩を防ぐ技術として、例えば、クライアントの要求に従い、暗号化データを復号せずに、かつ、ペアリング等の計算負荷の重い演算を用いずに、預託された暗号化データを高速に検索する検索処理技術（特許文献１参照）などが提案されている。
【０００３】
この技術においては、平文と暗号文が一対一の単純な対応関係を有する決定的暗号化方式よりも安全な、平文と暗号文が一対ｍの複雑な対応関係を有する確率的暗号化方式を採用している。このように、よりセキュアな暗号化方式の下、暗号化データの復号を伴わない検索が可能となるため、データ預託先たるサーバでの情報漏洩を防ぎつつ、該当サーバにおける預託データの検索をセキュアに行うことが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】ＷＯ２０１２／０７７５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の如き従来技術においては、暗号化された検索クエリに対応する暗号化データを、預託された全てのデータ中で逐次検索する方式となっており、サーバでのデータ数が大規模な暗号化データ群に対する検索処理に関しては問題が残されている。具体的には、暗号化データの数と検索回数が比例することになるため、例えば、１億件の暗号化データを検索母集団とする場合、１億回の検索動作が必要となるなど、預託データ数が大規模になるほど、検索処理の手順が増大し、処理に要する時間も膨大なものとなってしまう問題がある。従って、データ数が大規模な暗号化データに対し従来技術による検索を実行するとしても、現実的な時間（例えば、１秒以内）で検索処理を完了することは困難である。
【０００６】
そこで本発明の目的は、検索クエリを暗号化したまま暗号化データの検索を行うシステムにおいて、大規模データに対する検索処理を高速化可能とする技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決する本発明の検索可能暗号処理システムは、他装置と通信する通信装置と、検索対象データとして、平文データを秘匿化した秘匿データと、平文データを分類する平文インデックスを秘匿化した秘匿化インデックスとを格納した記憶装置と、検索クライアントより、平文クエリを秘匿化した秘匿データ用クエリ、および平文インデックスを秘匿化した秘匿化インデックス用クエリを受信し、所定の検索可能暗号技術に基づいて、前記秘匿化インデックス用クエリに該当する秘匿化インデックスを前記記憶装置において検索し、該当秘匿化インデックスに分類された秘匿データ群を対象として、前記秘匿データ用クエリに該当する秘匿データを検索し、当該検索した秘匿データを前記検索クライアントに返信する処理を実行する演算装置と、を備えるサーバを含むことを特徴とする。
【０００８】
また、本発明の検索可能暗号処理方法は、他装置と通信する通信装置と、検索対象データとして、平文データを秘匿化した秘匿データと、平文データを分類する平文インデックスを秘匿化した秘匿化インデックスとを格納した記憶装置を備えた情報処理装置が、検索クライアントより、平文クエリを秘匿化した秘匿データ用クエリ、および平文インデックスを秘匿化した秘匿化インデックス用クエリを受信し、所定の検索可能暗号技術に基づいて、前記秘匿化インデックス用クエリに該当する秘匿化インデックスを前記記憶装置において検索し、該当秘匿化インデックスに分類された秘匿データ群を対象として、前記秘匿データ用クエリに該当する秘匿データを検索し、当該検索した秘匿データを前記検索クライアントに返信する処理を実行する、ことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、検索クエリを暗号化したまま暗号化データの検索を行うシステムにおいて、大規模データに対する検索処理を高速化できる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の検索可能暗号処理システムを含むネットワーク構成図である。
【図２】本実施形態における登録クライアントの機能の概略を例示する図である。
【図３】本実施形態における検索クライアントの機能の概略を例示する図である。
【図４】本実施形態における管理サーバの機能の概略を例示する図である。
【図５】本実施形態におけるコンピュータのハードウェア構成例を示す図である。
【図６】本実施形態の登録クライアントと管理サーバとの間での処理手順の概要を示す図である。
【図７】本実施形態の検索クライアントと管理サーバとの間での処理手順の概要を示す図である。
【図８】本実施形態の平文インデックス、平文データ、平文データの識別子の例を示す図である。
【図９】本実施形態の秘匿化インデックス、秘匿データ、暗号化識別子の例を示す図である。
【図１０】本実施形態の秘匿化インデックスの概要を示す図である。
【図１１】本実施形態における検索可能暗号処理方法の処理手順例１を示すフロー図である。
【図１２】本実施形態における検索可能暗号処理方法の処理手順例２を示すフロー図である。
【図１３】本実施形態の秘匿データの概要を示す図である。
【図１４】本実施形態における検索可能暗号処理方法の処理手順例３を示すフロー図である。
【図１５】本実施形態の管理サーバの記憶部に格納される秘匿化インデックス、暗号化識別子、秘匿データ、暗号化識別子の例を示す図である。
【図１６】本実施形態の管理サーバの記憶部に格納される秘匿化インデックスと暗号化識別子の関係例を示す図である。
【図１７】本実施形態の秘匿データ用クエリの概要を示す図である。
【図１８】本実施形態における検索可能暗号処理方法の処理手順例４を示すフロー図である。
【図１９】本実施形態の秘匿化インデックス用クエリの概要を示す図である。
【図２０】本実施形態における検索可能暗号処理方法の処理手順例５を示すフロー図である。
【図２１】本実施形態における検索可能暗号処理方法の処理手順例６を示すフロー図である。
【図２２】本実施形態における検索可能暗号処理方法の処理手順例７を示すフロー図である。
【図２３】本実施形態における検索可能暗号処理方法の処理手順例８を示すフロー図である。
【図２４】本実施形態における検索可能暗号処理方法の処理手順例９を示すフロー図である。
【図２５】本実施形態における検索可能暗号処理方法の処理手順例１０を示すフロー図である。
【発明を実施するための形態】
【００１１】
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は、本実施形態の検索可能暗号処理システム１０を含むネットワーク構成図である。図１に示す検索可能暗号処理システム１０は、検索クエリを暗号化したまま暗号化データの検索を行うシステムにおいて、大規模データに対する検索処理を高速化可能とするコンピュータシステムである。
【００１２】
図１にて示すように、検索可能暗号処理システム１０は、登録クライアント１００（Ｒｅｇｉｓｔｒａｔｉｏｎ  Ｃｌｉｅｎｔ）と、検索クライアント２００（Ｓｅａｒｃｈ  Ｃｌｉｅｎｔ）と、管理サーバ３００（Ｍａｎａｇｅｍｅｎｔ  Ｓｅｒｖｅｒ）とを備え、登録クライアント１００と管理サーバ３００、検索クライアント２００と管理サーバ３００は、ネットワーク４００を介して相互に情報を送受信できるように構成されている。なお、図１における検索可能暗号処理システム１０の構成では、登録クライアント１００、検索クライアント２００、および管理サーバ３００を全て含む形態となっているが、検索可能暗号処理システム１０の最小構成となる管理サーバ３００のみ、または登録クライアント１００と管理サーバ３００のみ、といった構成で検索可能暗号処理システム１０を成すとしてもよい。
【００１３】
ここで、本実施形態における登録クライアント１００は、平文を秘匿化したデータ（以降、秘匿データと呼ぶ）と、平文を分類するインデックスを秘匿化したデータ（以降、秘匿化インデックスと呼ぶ）を管理サーバ３００に送信して登録させる、データ登録用の送受信装置として機能する。また、検索クライアント２００は、秘匿化した平文クエリ（以降、秘匿化クエリと呼ぶ）を管理サーバ３００に送信し、管理サーバ３００から返信される検索結果を受信する、検索用の送受信装置として機能する。また、管理サーバ３００は、上述の登録クライアント１００から送信されてくる秘匿データと秘匿化インデックスを記憶し、また検索クライアント２００の要求に応じて秘匿データを検索する送受信装置として機能する。
【００１４】
続いて、本実施形態の検索可能暗号処理システム１０を構成する各装置の機能構成について説明する。上述したように、以下に説明する機能は、例えば検索可能暗号処理システム１０を構成する各装置が備えるプログラムを実行することで実装される機能と言える。
【００１５】
図２は本実施形態における登録クライアント１００の機能の概略を例示する図である。本実施形態の検索可能暗号処理システム１０を構成する登録クライアント１００は、制御部１１０と、記憶部１２０と、入力部１０１と、出力部１０２と、通信部１０３とを備えている。
【００１６】
このうち記憶部１２０には、入力部１０１を介して受け付けた平文データ１３１と平文データの識別子１３８が記憶されている。また記憶部１２０には、平文データ１３１から作成したる平文インデックス１３３も記憶されている。また記憶部１２０には、情報セキュリティの観点から、登録クライアント１００が秘密に管理すべきデータである、乱数用秘密鍵１５１や、データ暗号化鍵１５２、マスク用秘密鍵１５３、および複数個のインデックス用秘密鍵１５５も記憶されている。また記憶部１２０には、平文データ１３１や平文インデックス１３３に基づいて秘匿データや秘匿化インデックスを作成する際に用いられるデータである、パラメータ１６０も記憶されている。
【００１７】
また、制御部１１０は、全体処理部１１１と、暗号化部１１２と、擬似乱数生成部１１４と、圧縮関数部１１５と、準同型関数部１１６と、基本演算部１１７とを備えている。このうち全体処理部１１１は、登録クライアント１００における全ての処理を制御するものとなる。例えば、この全体処理部１１１は、入力部１０１を介して受け付けた情報を、記憶部１２０において平文データ１３１として記憶する処理を行う。また、全体処理部１１１は、平文データ１３１を出力部１０２に表示する処理を行う。また、全体処理部１１１は、記憶部１２０に記憶している平文データ１３１を読み込み、それぞれ、暗号化部１１２と、擬似乱数生成部１１４と、圧縮関数部１１５と、準同型関数部１１６と、基本演算部１１７とに入力し、出力されたデータを、記憶部１２０に秘匿データとして記憶する処理を行う。また、全体処理部１１１は、上述の秘匿データを通信部１０３を介して管理サーバ３００に送信する処理を行う。
【００１８】
また、暗号化部１１２は、入力されたデータに対する暗号化の処理を行う。暗号化部１１２は、例えば、全体処理部１１１から入力された平文データ１３１と乱数用秘密鍵１５１に基づいて暗号化データを出力する処理を行う。この暗号化部１１２は、例えば、標準的な暗号化アルゴリズムの実装により実現される。
【００１９】
また、擬似乱数生成部１１４は、擬似乱数を出力する処理を行う。擬似乱数生成部１１４は、例えば、標準的な擬似乱数生成アルゴリズムの実装により実現される。本実施形態における擬似乱数生成部１１４は、全体処理部１１１から入力された乱数用秘密鍵１５１を用い、擬似乱数を出力する。なお、乱数用秘密鍵１５１のデータ値は、疑似乱数生成部１１４において擬似乱数を生成するたびに新しいデータ値に更新される。
【００２０】
また、圧縮関数部１１５は、入力されたデータについて不可逆変換な圧縮をしたデータを出力する処理を行う。この圧縮関数部１１５は、例えば、全体処理部１１１から入力されたデータを固定長の別のデータに変換する。例えば、標準的な暗号ハッシュ関数アルゴリズムであるＳＨＡ−２５６関数の実装により、任意長の入力データを２５６ビットのデータへ変換する圧縮関数部１１５が実現できる。
【００２１】
また、準同型関数部１１６は、入力データに対し、準同型性を有する関数の出力結果をデータとして出力する処理を行う。ただし、準同型を有する関数（以降、準同型関数と呼ぶ）とは、関数Ｆと、入力変数ｘ、入力変数ｙに対し、
Ｆ（ｘ・ｙ）＝Ｆ（ｘ）？Ｆ（ｙ）−−−−（数１）
が成り立つ関数を指す。ただし、“・”と“？”は、演算記号を表わし、加算用の演算記号＋、乗算用の演算記号＊、ビット毎の排他的論理和であるＸＯＲ（ｅＸｃｌｕｓｉｖｅ  ＯＲ）演算用の演算記号ｘｏｒ等が入る。
【００２２】
このとき、上述の［数１］において、“・”と“？”にＸＯＲ演算記号ｘｏｒが入る場合、即ち以下の［数２］が成り立つ。
【００２３】
Ｆ（ｘ  ｘｏｒ  ｙ）＝Ｆ（ｘ）ｘｏｒ  Ｆ（ｙ）−−−−（数２）
また、基本演算部１１７は、加算、減算、比較算や、ＡＮＤ、ＯＲ、ＸＯＲ等の基本的な算術演算に関する処理を行う。例えば、基本演算部１１７は、全体処理部１１１から入力された２つのデータのビット毎の排他的論理和であるＸＯＲ演算や、比較演算の等号成立または不成立の検証結果を、データとして出力する処理を行う。
【００２４】
以上に示した登録クライアント１００は、例えば、図５にて示すように、演算装置たるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１と、メモリ５０２と、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の外部記憶装置５０３と、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）やＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等の可搬性を有する記憶媒体５０８に対して情報を読み書きする読書装置５０７と、キーボードやマウス等の入力装置５０６と、ディスプレイ等の出力装置５０５と、ネットワーク４００に接続するためのＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等の通信装置５０４と、これらを連結するシステムバス等の内部通信線（システムバスという）５０９と、を備えた一般的なコンピュータ５００で実現できる。
【００２５】
例えば、記憶部１２０は、ＣＰＵ５０１がメモリ５０２または外部記憶装置５０３を利用することにより実現可能である。また、制御部１１０と制御部１１０に含まれる各処理部は、外部記憶装置５０３に記憶されている所定のプログラムをメモリ５０２にロードしてＣＰＵ５０１で実行することで実現可能である。また、入力部１０１は、ＣＰＵ５０１が入力装置５０６を利用することで実現可能であり、出力部１０２は、ＣＰＵ５０１が出力装置５０５を利用することで実現可能である。また、通信部１０３は、ＣＰＵ５０１が通信装置５０４を利用することで実現可能である。
【００２６】
上述した所定のプログラムは、読書装置５０７を介して記憶媒体５０８から、あるいは、通信装置５０４を介してネットワーク４００から、外部記憶装置５０３に記憶（ダウンロード）され、必要なタイミングでメモリ５０２上にロードされてＣＰＵ５０１により実行されるとしてもよい。また、所定のプログラムは、読書装置５０７を介して記憶媒体５０８から、あるいは通信装置５０４を介してネットワーク４００から、メモリ５０２上に直接ロードされ、ＣＰＵ５０１により実行されるようにしてもよい。
【００２７】
続いて、検索クライアント２００について説明する。図３は本実施形態における検索クライアント２００の機能の概略を例示する図である。図示するように、検索クライアント２００は、制御部２１０と、記憶部２２０と、入力部２０１と、出力部２０２と、通信部２０３とを備えている。
【００２８】
このうち記憶部２２０は、登録クライアント１００の記憶部１２０で保持するものと同様の働きをする、乱数用秘密鍵２５１や、秘匿データや秘匿化インデックスを作成する際に用いられるデータであるパラメータ２６０も記憶されている。また記憶部２２０には、データの秘匿化に用いるデータ暗号化鍵２５２と、マスク用秘密鍵２５３、データ復号化鍵２５８、関数値暗号化鍵２５４、秘密鍵暗号化鍵２５７、クエリ暗号化鍵２５９も記憶される。
【００２９】
また制御部２１０は、全体処理部２１１と、暗号化部２１２と、復号化部２１３と、擬似乱数生成部２１４と、圧縮関数部２１５と、準同型関数部２１６と、基本演算部２１７とを備えている。
【００３０】
このうち全体処理部２１１は、上述した登録クライアント１００の全体処理部１１１と同様、検索クライアント２００における全ての処理を制御する。
【００３１】
また、暗号化部２１２は、上述した登録クライアント１００の暗号化部１１２と同様、入力されたデータの暗号化データを出力する処理を行う。
【００３２】
また、復号化部２１３は、入力されたデータを用い、暗号化データを復号する処理を行う。この復号化部２１３は、例えば、標準的な復号化アルゴリズムの実装により実現される。
【００３３】
また、擬似乱数生成部２１４は、上述した登録クライアント１００の擬似乱数生成部１１４と同様、擬似乱数を出力する処理を行う。また、圧縮関数部２１５は、上述した登録クライアント１００の圧縮関数部１１５と同様、入力されたデータについて不可逆変換な圧縮をしたデータを出力する処理を行う。
【００３４】
また、準同型関数部２１６は、上述した登録クライアント１００の準同型関数１１６同様、入力されたデータに対し、準同型性関数の出力結果をデータとして出力する処理を行う。また、基本演算部２１７は、上述した登録クライアント１００の基本演算部１１７同様、基本的な算術演算に関する処理を行う。
【００３５】
以上に示した検索クライアント２００は、登録クライアント１００と同様、図５に示す一般的なコンピュータで実現できる。
【００３６】
続いて管理サーバ３００について説明する。図４は本実施形態における管理サーバ３００の機能の概略を例示する図である。図示するように、本実施形態における管理サーバ３００は、制御部３１０と、記憶部３２０と、入力部３０１と、出力部３０２と、通信部３０３を備えている。
【００３７】
このうち記憶部３２０は、秘匿データ３４１、秘匿化インデックス３４２、関係表３８２、暗号化識別子３８１、関数値復号鍵３５４、および秘密鍵暗号化鍵３５６を記憶する。
【００３８】
また、制御部３１０は、全体処理部３１１と、復号化部３１３と、圧縮関数部３１５と、準同型関数部３１６と、基本演算部３１７を備えている。
【００３９】
このうち全体処理部３１１は、上述の登録クライアント１００の全体処理部１１１と同様、管理サーバ３００における全ての処理を制御する。また、復号化部３１３は、上述の検索クライアント２００の復号化部２１３と同様、暗号化されたデータを復号する処理を行う。
【００４０】
また、圧縮関数部３１５は、上述の登録クライアント１００の圧縮関数部１１５と同様、入力されたデータについて不可逆変換な圧縮をしたデータを出力する処理を行う。
【００４１】
また、準同型関数部３１６は、上述の登録クライアントの準同型関数部１１６と同様、入力されたデータに対し、準同型関数の出力結果をデータとして出力する処理を行う。
【００４２】
また、基本演算部３１７は、上述の登録クライアント１００の基本演算部１１７と同様、基本的な算術演算に関する処理を行う。
【００４３】
以上に示した検索クライアント２００は、登録クライアント同様、図５に示す一般的なコンピュータで実現できる。
【００４４】
ここで、本実施形態における検索可能暗号処理方法の概略について説明する。図６は本実施形態の登録クライアント１００と管理サーバ３００との間での処理手順の概要を示す図である。この場合、登録クライアント１００は、入力部１０１においてユーザが入力した情報を平文データ１３１とし、この平文データ１３１の識別子１３８と共に記憶部１２０へ格納しているものとする。登録クライアント１００は、上述の平文データ１３１を秘匿化して秘匿データを生成し、この秘匿データと平文データの識別子１３８の組を、通信部１０３によって、ネットワーク４００経由で管理サーバ３００に送信する。
【００４５】
一方、管理サーバ３００は、通信部３０３により、秘匿データと平文データの識別子１３８を受信し、秘匿データのアドレスと平文データの識別子１３８の変換表すなわち関係表３８２を作成したのち、該当秘匿データと関係表３８２を記憶部３２０へ格納する。
【００４６】
また、登録クライアント１００は、記憶部１２０に格納された平文インデックス１３３を秘匿化して秘匿化インデックスとし、また、平文データの識別子１３８を暗号化して暗号化識別子とし、これら秘匿化インデックスおよび暗号化識別子を、通信部１０３により、ネットワーク４００経由で管理サーバ３００に送信する。管理サーバ３００は、秘匿化インデックスおよび暗号化識別子を受信し、記憶部３２０に格納する。
【００４７】
図７は本実施形態の検索クライアント２００と管理サーバ３００との間での処理手順の概要を示す図である。ここでは、検索クライアント２００による要求に応じて実行される管理サーバ３００での検索処理の概要について示している。ここで、検索クライアント２００は、ユーザが入力した情報を平文クエリ２４１として記憶部１２０に記憶しているものとする。
【００４８】
検索クライアント２００は、平文クエリ２４１に基づいて、秘匿データ用クエリと秘匿化インデックス用クエリを生成し、通信部１０３により、ネットワーク４００経由で管理サーバ３００に送信する。一方、管理サーバは、通信部３０３により、秘匿データ用クエリと秘匿化インデックス用クエリを受信し、記憶部３２０へ格納する。
【００４９】
また、管理サーバ３００は、記憶部３２０に格納された秘匿化インデックスを用い、秘匿化インデックス用クエリに該当する秘匿化インデックスを探し出し、次に、秘匿データ用クエリに該当する秘匿データを検索し、検索結果に該当する秘匿データを、通信部３０３により、ネットワーク４００経由で検索クライアント２００に送信する。他方、検索クライアント２００は、管理サーバ３００から送信されてきた秘匿データを復号し、平文データを得ることになる。
【００５０】
ここで、平文データ、平文インデックス、および平文データの識別子、の間の関係について説明する。図８は、平文データと平文インデックスの関係の一例を示している。本実施形態における平文インデックスは、登録クライアント１００によって、平文データとの関係が直接的または間接的に定義されおり、図８の例では、平文データのハッシュ値の最下位３ビットによって平文データをグループ分けするものとなっている。この場合、８種類の平文インデックス（２進表記で“０００”から“１１１”まで８種）があり、平文インデックスの値によって最大ｎ個の平文データ１３１がグループ分けされている。例えば、“０００”の値を持つ平文インデックスにより、ｎ個の平文データ（川嶋、長友、・・・、香川、吉田、本田）が１グループとして分類されている。同様に、“００１”の値の平文インデックスにより、（ｎ−２）個の平文データ（内田、前田、・・・、遠藤）がグループ分けされている。また、平文データの識別子１３８は、各平文データ１３１を指し示すｉｄ（またはデータアドレス）であり、例えば、平文データ“川嶋”の識別子は（１，１）、平文データ“長友”の識別子は（１，２）である。
【００５１】
なお、情報セキュリティの観点では、平文インデックスに対応する平文データ１３１の数が同じである方が望ましい。そのため登録クライアント１００は、各平文インデックスに関して、全てｎ個の平文データが対応付けされるよう、ｎ個より平文データ数が少ない平文インデックスに関して、乱数を生成して平文データまたは秘匿データとして追加するとしてもよい。その場合、平文インデックスに対応する平文データの数が一定になるため、平文インデックスの人気度が外部漏洩（平文データの数が多いほど検索対象となりやすく、その場合、インデックスに有用なデータが含まれていることを類推されやすい）せずに済む。もちろん、全て一律にｎ個の平文データが関連付けられるように追加する必要はなく、不均等に増加させても構わない。
【００５２】
また、登録クライアント１００は、平文インデックスに対応付ける平文データとして乱数を追加するのではなく、例えば“川嶋”を３種類の平文インデックス“０００”、“００１”、“０１０”に関連付けるといったように、同一の平文データに複数の平文インデックスを関連付けるとしても構わない。但しこの場合、上述の平文データ“川嶋”は、平文インデックス“０００”に該当するときのみ検索結果に反映されるものとする。
【００５３】
なお、登録クライアント１００における平文インデックスの作成方法は、上述で例示したように、平文データをハッシュ関数に適用してハッシュ値を取得し、このハッシュ値の最下位３ビットをインデックスの値として採用する手法のみならず、例えば、ハッシュ値の任意桁のビットを用いてもよい。また、ハッシュ関数ではなく、別の関数を用いても良い。例えば、ｎ−ｇｒａｍを用い、平文データを一定のデータ長で区切り、区切られたそのデータを平文インデックスとしてもよい。
【００５４】
続いて秘匿データ、秘匿化インデックス、および暗号化識別子の関係について説明する。図９は、平文データを秘匿化した秘匿データと、平文インデックスを秘匿化した秘匿化インデックスの関係の一例を示している。この場合、登録クライアント１００において、例えば、平文インデックス“０００”の値を秘匿化した秘匿化インデックスがＩ（１）であり、同様に平文インデックス“１１１”の値を秘匿化した秘匿化インデックスがＩ（８）である。また“川嶋”の値を持つ平文データを秘匿化した秘匿データがＤ（１，１）であり、同様に“本田”の値をもつ平文データを秘匿化した秘匿データがＤ（１，ｎ）である。また登録クライアント１００は、空欄の値を持つ平文データに関しては、秘匿データとして乱数を置く（これにより、秘匿化インデックス１つにつき、同数の秘匿データがグルーピングされているように見える）。また登録クライアント１００は、各平文データの識別子を暗号化し、これを記憶部１２０に格納する。登録クライアント１００は、例えば平文データの識別子（１，１）のアドレスを暗号化し、記憶部１２０に格納する。
【００５５】
続いて、登録クライアント１００による秘匿化インデックスの構成手順について説明する。図１０は本実施形態の秘匿化インデックスの概要を示す図である。また、図１１は本実施形態における検索可能暗号処理方法の処理手順例１を示すフロー図である。この場合、登録クライアント１００の全体処理部１１１は、記憶部１２０に記憶されているパラメータ１６０を読み込み、平文インデックス１３３に０値（バイナリ）をパディングし、平文インデックス１３３のサイズを調整する（ｓ１００）。また、全体処理部１１１は、サイズ調整後の平文インデックス１３３と、記憶部１２０から読み出したインデックス用暗号化鍵１５５とを暗号化部１１２へ入力する（ｓ１０１）。
【００５６】
登録クライアント１００の暗号化部１１２は、上述の全体処理部１１１から得た平文インデックス１３３を暗号化し、暗号化インデックスＣを出力する（ｓ１０２）。
【００５７】
また、登録クライアント１００の全体処理部１１１は、記憶部１２０から乱数用秘密鍵１５１を読み出して擬似乱数生成部１１４に入力する（ｓ１０３）。擬似乱数生成部１１４は、全体処理部１１１から入力された乱数用秘密鍵１５１を用い、擬似乱数Ｒを出力する（ｓ１０４）。全体処理部１１１は、この擬似乱数Ｒを記憶部１２０に初期ベクトルＩＶとして記憶する。
【００５８】
続いて登録クライアント１００の基本演算部１１７は、上述の暗号化インデックスＣと擬似乱数Ｒを二つの入力とみなし、ＸＯＲした結果である暗号化インデックスＤを出力する（ｓ１０５）。一方、全体処理部１１１は、暗号化インデックスＤを記憶部１２０に格納する（ｓ１０６）。このとき、暗号化インデックスＣ、擬似乱数Ｒ、暗号化インデックスＤには、以下の［数３］が成り立つ。
【００５９】
Ｄ＝  Ｃ  ｘｏｒ  Ｒ−−−−（数３）
また、登録クライアント１００の全体処理部１１１は、上述の擬似乱数Ｒを準同型関数部１１６に入力する（ｓ１０７）。準同型関数部１１６は、入力された疑似乱数Ｒのハッシュ値について、準同型性を保有するデータの出力値である準同型関数値を出力する（ｓ１０８）。なお、準同型関数をｆｕｎｃとした場合、その入力である疑似乱数Ｒのハッシュ値Ｈ１、出力である準同型関数値Ｆには、以下の［数４］が成り立つ。
【００６０】
Ｆ＝  ｆｕｎｃ（Ｈ１）−−−−（数４）
登録クライアント１００の全体処理部１１１は、上述の準同型関数値Ｆを圧縮関数部１１５へ入力する（ｓ１０９）。一方、圧縮関数部１１５は、準同型関数値Ｆを変換し、ハッシュ値Ｈ２を出力する（ｓ１１０）。全体処理部１１１は、このハッシュ値Ｈ２を検索タグとみなし、記憶部１２０へ格納する（ｓ１１１）。
【００６１】
また、登録クライアント１００の全体処理部１１１は、パラメータ１６０を記憶部１２０から呼び出し、上述の準同型関数値Ｆと連結させたデータを、圧縮関数部１１５に入力する（ｓ１１２）。この場合、圧縮関数部１１５は、連結された準同型関数値ＦとパラメータＰＡを変換し、ハッシュ値Ｈ３を出力する（ｓ１１３）。圧縮関数をｈａｓｈとした場合、パラメータＰＡ、準同型関数値Ｆ、出力されるハッシュ値Ｈ３には、以下の［数５］が成り立つ。
【００６２】
Ｈ３＝  ｈａｓｈ（Ｆ｜｜ＰＡ）−−−−（数５）
この時、全体処理部１１１は、平文インデックス１３３の値に応じて、インデックス用秘密鍵１５５を取得する（ｓ１１４）。基本的には、一つの平文インデックス１３３につき、同一のインデックス秘密鍵１５５を利用し、異なる値の平文インデックスには、異なるインデックスを利用する。
【００６３】
全体処理部１１１は、上述のハッシュ値Ｈ３に対し、記憶部１２０に格納されたインデックス用秘密鍵１５５をｘｏｒした値を、鍵埋込タグＥとみなし、記憶部１２０へ格納する（ｓ１１５）。このとき、インデックス用秘密鍵ＩＫ、ハッシュ値Ｈ３、鍵埋込タグＥには、以下の［数６］が成り立つ。
【００６４】
Ｅ＝  ＩＫ  ｘｏｒ  Ｈ３−−−−（数６）
続いて登録クライアント１００の全体処理部１１１は、上述までの処理で得た、暗号化インデックスＤ、検索タグＨ２、鍵埋込タグＥを連結したデータを、秘匿化インデックスとし記憶部１２０に格納する（ｓ１１６）。なお、上記の処理手順は、実行手順を変更してもよい。
【００６５】
続いて、暗号化識別子の構成方法について説明する。図１２は本実施形態における検索可能暗号処理方法の処理手順例２を示すフロー図である。この場合、登録クライアント１００の全体処理部１１１は、記憶部１２０に記憶されたパラメータ１６０を読み込み、平文データの識別子１３８に０値（バイナリ）をパディングし、データサイズを調整する（ｓ１２０）。また、全体処理部１１１は、上述の平文データの識別子１３８と、記憶部１２０から読み出した例えばデータ暗号化鍵１５２を暗号化部１１２へ入力する（ｓ１２１）。
【００６６】
一方、登録クライアント１００の暗号化部１１２は、平文データの識別子１３８を暗号化してデータＣ’を出力する（ｓ１２２）。また、全体処理部１１１は、このデータＣ’を暗号化識別子として記憶部１２０へ格納する（ｓ１２３）。なお、上述のパディングに際しては、０値を書き込むだけでなく、他のパディング方法を実装してもよい。例えば、他の定数や、乱数を追加してもよい。
【００６７】
続いて登録クライアント１００による秘匿データの構成方法について説明する。図１３は本実施形態の秘匿データの概要を示す図である。また、図１４は本実施形態における検索可能暗号処理方法の処理手順例３を示すフロー図である。
【００６８】
この場合、登録クライアント１００の全体処理部１１１は、記憶部１２０に記憶されたパラメータ１６０を読み込み、平文データ１３１に０値（バイナリ）をパディングし、データサイズを調整し、このデータサイズ調整後の平文データ１３１と、記憶部１２０から読み出したデータ暗号化鍵１５２を暗号化部１１２へ入力する（ｓ１３０）。
【００６９】
一方、登録クライアント１００の暗号化部１１２は、上述のデータサイズ調整後の平文データ１３１を暗号化し、暗号化データＣ’を出力する（ｓ１３１）。
【００７０】
また、登録クライアント１００の全体処理部１１１は、記憶部１２０から乱数用秘密鍵１５１を読み出し、これを擬似乱数生成部１１４に入力する（ｓ１３２）。他方、擬似乱数生成部１１４は、全体処理部１１１から入力された乱数用秘密鍵１５１を用い、擬似乱数を出力する（ｓ１３３）。全体処理部１１１は、この擬似乱数を記憶部１２０にて初期ベクトルＩＶとして記憶する（ｓ１３４）。
【００７１】
続いて登録クライアント１００の全体処理部１１１は、上述の初期ベクトルＩＶとマスク用秘密鍵１５３を連結し、圧縮関数部１１５に入力する（ｓ１３５）。一方、圧縮関数部１１５は、全体処理部１１１から入力された初期ベクトルＩＶとマスク用秘密鍵１５３を変換し、ハッシュ値Ｈ１’を出力する（ｓ１３６）。このとき、ハッシュ値Ｈ１’は、圧縮関数の性質から、乱数とみなせる。
【００７２】
次に、基本演算部１１７は、上述の暗号化データＣ’とハッシュ値Ｈ１’を二つの入力とみなし、ＸＯＲした結果である暗号化データＤ’を出力する（ｓ１３７）。また、全体処理部１１１は、この暗号化データＤ’を記憶部１２０に格納する（ｓ１３８）。このとき、暗号化データＣ’、ハッシュ値Ｈ１’、暗号化データＤ’には、以下の［数７］が成り立つ。
【００７３】
Ｄ’＝  Ｃ’  ｘｏｒ  Ｈ１’−−−−（数７）
続いて登録クライアント１００の全体処理部１１１は、上述のハッシュ値Ｈ１’を準同型関数部１１６に入力する（ｓ１３９）。準同型関数部１１６は、全体処理部１１１から入力されたハッシュ値Ｈ１’について、準同型性を保有するデータの出力値である、準同型関数値を出力する（ｓ１４０）。なお、準同型関数をｆｕｎｃとした場合、その入力であるハッシュ値Ｈ１’、出力である準同型関数値Ｆ’には、以下の［数８］が成り立つ。
【００７４】
Ｆ’＝  ｆｕｎｃ（Ｈ１’）−−−−（数８）
この場合、登録クライアント１００の全体処理部１１１は、上述の準同型関数値Ｆ’を圧縮関数部１１５へ入力する（ｓ１４１）。圧縮関数部１１５は、準同型関数値Ｆ’を変換し、ハッシュ値Ｈ２’を出力する（ｓ１４２）。全体処理部１１１は、このハッシュ値Ｈ２’を検索タグとみなし、記憶部１２０へ格納する（ｓ１４３）。
【００７５】
続いて登録クライアント１００の全体処理部１１１は、上述までの処理で得た、初期ベクトルＩＶ、暗号化データＤ’、検索タグＨ２’を連結したデータを秘匿データとし、記憶部１２０に格納する（ｓ１４４）。なお、上記の処理手順は、処理手順を変更してもよい。また、パディングには、０値を書き込むだけでなく、他のパディング方法を実装してもよい。例えば、他の定数や、乱数を追加してもよい。
【００７６】
ここで、管理サーバ３００が、上述までの処理で得た各種データの記憶部３２０の記憶領域での配置関係について説明する。図１５に管理サーバ３００の記憶部３２０に格納された、秘匿化インデックス３４２、暗号化識別子３８１、秘匿データ３４１、平文データの識別子と秘匿データ３４１のアドレスとの関係表３８２を示す。管理サーバ３００は、上述のごとく登録クライアント１００から得た、“Ｉ（１）”といった秘匿化インデックス３４２に、“Ｅ（１，１）”〜“Ｅ（１，ｎ）”といった（該当する平文インデックスが分類する平文に関する）識別子暗号化識別子３８１を対応付けて記憶している。
【００７７】
一方、“Ｅ（１，１）”〜“Ｅ（１，ｎ）”といった識別子暗号化識別子３８１のそれぞれとは、該当する平文インデックスが分類する平文を暗号化した、“Ｄ（１，１）”〜“Ｄ（１，ｎ）”といった秘匿データ３４１を対応付けて記憶している。
【００７８】
この場合、関係表３８２においては、“Ｅ（１，１）”〜“Ｅ（１，ｎ）”の暗号化前、つまり平文データの識別子“（１，１）”〜“（１，ｎ）”のそれぞれは、該当平文データを起源する秘匿データ３４１、つまり“Ｄ（１，１）”〜“Ｄ（１，ｎ）”の格納場所たるアドレス、“（１，１）”〜“（１，ｎ）”と対応付けされている。このため、管理サーバ３００は、秘匿データ３４１を記憶部３２０格納後、関係表３８２において、この秘匿データ３４１と組となる平文データの識別子１３８と同じ行に、該当秘匿データ３４１のアドレスを記入することとなる。
【００７９】
なお、図１６にて示すように、階層化された秘匿化インデックス３４２と暗号化識別子３８１が対応付けされた関係も想定できる。この場合、秘匿化インデックス３４２において、例えば、平文データのハッシュ値の先頭ビット（例：２進表記で“０００”のうち左端の“０”）に対応する“Ｉ（０）”を最上位階層とし、平文データのハッシュ値の２番目ビット（例：２進表記で“０１０”、“０００”のうち中央の“１”または“０”、）に対応する“Ｉ（０１）”、“Ｉ（００）”を中位階層とし、平文データのハッシュ値の最下位ビット（例：２進表記で“０１０”、“０１１”）に対応する“Ｉ（０１０）”または“Ｉ（０１１）”を最下位階層とし、すなわち、平文データの分類概念の大小に従った複数階層が構成されている。
【００８０】
また、登録クライアント１００から得た、“Ｉ（０１０）”すなわち最下位階層の秘匿化インデックス３４２には、“Ｅ（１，１）”〜“Ｅ（１，ｎ）”といった（該当する平文インデックスが分類する平文に関する）識別子暗号化識別子３８１を対応付けて記憶している。同様に、“Ｉ（０１１）”すなわち最下位階層の秘匿化インデックス３４２には、“Ｅ（２，１）”〜“Ｅ（２，ｎ）”といった識別子暗号化識別子３８１を対応付けて記憶している。
【００８１】
一方、中位階層“Ｉ（０１）”なる秘匿化インデックス３４２には、上述の“Ｅ（１，１）”〜“Ｅ（１，ｎ）”、と、“Ｅ（２，１）”〜“Ｅ（２，ｎ）”の各暗号化識別子３８１が対応付けて記憶されている。
【００８２】
従って、こうした階層化された秘匿インデックスが構成されている場合、管理サーバ３００は、秘匿化インデックス用クエリに該当する秘匿化インデックスの検索を、記憶部３２０において、平文データのハッシュ値の先頭ビットが一致する秘匿化インデックス３４２を、複数階層のうち最上位階層の秘匿化インデックス中で検索して、該当秘匿化インデックス３４２を特定し、ここで特定した最上位階層の秘匿化インデックス３４２の下位にあたる中位階層の秘匿化インデックス中から、平文データのハッシュ値の先頭および２番目のビットが一致する秘匿化インデックス３４２を検索して特定し、ここで特定した中位位階層の秘匿化インデックス３４２の下位にあたる最下位階層の秘匿化インデックス中から、平文データのハッシュ値の全ビットが一致する秘匿化インデックス３４２を検索して特定し、該当秘匿化インデックス３４２に分類された秘匿データ群を対象として、秘匿データ用クエリに該当する秘匿データを検索し、当該検索した秘匿データを検索クライアント２００に返信することができる。つまり、検索対象となるデータ群において総当たり的な検索を実行する必要が無く、検索の高速がより一層図れることになる。
【００８３】
続いて、検索クライアント２００における秘匿データ用クエリの構成方法について説明する。図１７は本実施形態の秘匿データ用クエリの概要を示す図である。また、図１８は本実施形態における検索可能暗号処理方法の処理手順例４を示すフロー図である。
【００８４】
この場合、検索クライアント２００の全体処理部２１１は、記憶部２２０に記憶されているパラメータ２６０を読み込み、平文クエリ２４１に０値（バイナリ）をパディングし、データサイズを調整し、この平文クエリ２４１と記憶部２２０から読み出したデータ暗号化鍵２５２を暗号化部２１２へ入力する（ｓ１５０）。
【００８５】
次に、検索クライアント２００の暗号化部２１２は、上述の全体処理部２１１から入力された平文クエリ２４１を暗号化し、秘匿データ用暗号化クエリＣ’’を出力する（ｓ１５１）。
【００８６】
また、検索クライアント２００の全体処理部２１１は、記憶部２２０から乱数用秘密鍵２５１を読み出し、これを擬似乱数生成部２１４に入力する（ｓ１５２）。この時、擬似乱数生成部２１４は、全体処理部２１１から入力された乱数用秘密鍵１５１を用い、擬似乱数Ｒ’’を出力する（ｓ１５３）。
【００８７】
続いて検索クライアント２００の全体処理部２１１は、この擬似乱数Ｒ’’と、秘匿データ用暗号化クエリＣ’’を二つの入力とみなし、ＸＯＲした結果である秘匿データ用暗号化クエリＤ’’を出力する（ｓ１５４）。また、全体処理部２１１は、秘匿データ用暗号化クエリＤ’’を記憶部２２０に格納する（ｓ１５５）。このとき、秘匿データ用暗号化クエリＣ’’、擬似乱数Ｒ’’、秘匿データ用暗号化クエリＤ’’には、以下の［数１０］が成り立つ。
【００８８】
Ｄ’’＝  Ｃ’’  ｘｏｒ  Ｒ’’−−−−（数１０）
次に、検索クライアント２００の全体処理部２１１は、上述の擬似乱数Ｒ’’を準同型関数部２１６に入力する（ｓ１５６）。一方、準同型関数部２１６は、全体処理部２１１から入力された擬似乱数Ｒ’’について、準同型性を保有するデータの出力値である、準同型関数値を出力する（ｓ１５７）。なお、準同型関数をｆｕｎｃとした場合、その入力である擬似乱数Ｒ’’、出力である準同型関数値Ｆ’’には、以下の［数１１］が成り立つ。
【００８９】
Ｆ’’＝  ｆｕｎｃ（Ｒ’’）−−−−（数１１）
続いて検索クライアント２００の全体処理部２１１は、上述の準同型関数値Ｆ’’と、記憶部２２０から読み込んだ関数値暗号化鍵２５４を暗号化部２１２へ入力する（ｓ１５８）。一方、暗号化部２１２は、準同型関数値Ｆ’’を暗号化し、暗号化されたデータＨ２’’を出力する（ｓ１５９）。全体処理部２１１は、このデータＨ２’’を秘匿データ用検索タグクエリとみなし、記憶部２２０へ格納する（ｓ１６０）。
【００９０】
続いて検索クライアント２００の全体処理部２１１は、上述の秘匿データ用暗号化クエリＤ’’、秘匿データ用検索タグＨ２’’を連結したデータを、秘匿データ用クエリとし記憶部２２０に格納する（ｓ１６１）。なお、上記の処理手順は、処理手順を変更してもよい。また、パディングには、０値を書き込むだけでなく、他のパディング方法を実装してもよい。例えば、他の定数や、乱数を追加してもよい。
【００９１】
次に、検索クライアント２００における秘匿化インデックス用クエリの構成方法について説明する。図１９は本実施形態の秘匿化インデックス用クエリの概要を示す図である。また、図２０は本実施形態における検索可能暗号処理方法の処理手順例５を示すフロー図である。
【００９２】
この場合、検索クライアント２００の全体処理部２１１は、平文クエリ２４１を圧縮関数２１５に入力し、最下位ｎビット（例：３ビット）を秘匿化インデックス用の平文クエリとみなし、記憶部２２０に格納する（ｓ１６５）。また、全体処理部２１１は、平文クエリ２４１に０値（バイナリ）をパディングし、データサイズを調整する（ｓ１６６）。以降の手順は、秘匿データ用クエリの構成手順と同様である。すなわち、検索クライアント２００の全体処理部２１１は、擬似乱数Ｒ’’’等を作りながら、秘匿化インデックス用暗号化クエリＤ’’’、秘匿化インデックス用検索タグＨ２’’’を記憶部２２０に格納する（ｓ１６７）。
【００９３】
また、検索クライアント２００の全体処理部２１１は、秘匿化インデックス用暗号化クエリＤ’’’、秘匿化インデックス用検索タグＨ２’’’を連結したデータを秘匿化インデックス用クエリとし、記憶部２２０に格納する（ｓ１６８）。なお、パディングには、０値を書き込むだけでなく、他のパディング方法を実装してもよい。例えば、他の定数や、乱数を追加してもよい。
【００９４】
次に、秘匿化インデックス用クエリに該当する秘匿化インデックスの検索方法について説明する。図２１は本実施形態における検索可能暗号処理方法の処理手順例６を示すフロー図である。ここでは、管理サーバ３００における、秘匿化インデックス用クエリを用いた、秘匿化インデックスの検索手順を示す。ここにおける管理サーバ３００は、秘匿データ３４１、秘匿データ用クエリ、秘匿化インデックス３４２、秘匿化インデックス用クエリを用い、平文データと平文クエリのデータ値が同一であるかを検知し、同一である場合は、該当する秘匿データ３４１を探し出すこととなる。
【００９５】
この場合、管理サーバ３００の全体処理部３１１は、検索クライアント２００から受信した秘匿化インデックス用クエリから、秘匿化インデックス用検索タグクエリＨ２’’’を取得し、関数値復号化鍵３５４と共に、復号化部３１３へ入力して、出力された関数値Ｆ’’’を取得する（ｓ２００）。この関数値Ｆ’’’は、乱数Ｒ’’’と準同型関数Ｆを用い、以下の［数１３］で表わされる。
【００９６】
Ｆ’’’＝ｆｕｎｃ（Ｒ’’’）−−−−（数１３）
次に、管理サーバ３００の全体処理部３１１は、上述の秘匿化インデックス用クエリから秘匿化インデックス用暗号化クエリＤ’’’を取り出し、更に、記憶部３２０における秘匿化インデックス３４２から暗号化インデックスＤを取り出す（ｓ２０１）。
【００９７】
続いて管理サーバ３００の基本演算部３１７は、上述の秘匿化インデックス用暗号化クエリＤ’’’と暗号化インデックスＤを入力として、その排他的論理和（ＸＯＲ算）を計算し、以下の［数１４］に沿って、出力結果を取得する（ｓ２０２）。
【００９８】
Ｄ  ｘｏｒ  Ｄ’’’＝（Ｃ  ｘｏｒ  Ｒ）  ｘｏｒ  （Ｃ’’’  ｘｏｒ  Ｒ’’’）
−−−−（数１４）
ここで、平文インデックスと平文クエリのデータ値が同一である場合、それらを暗号化したデータも値が等しいため、以下の［数１５］が導ける。
【００９９】
Ｄ  ｘｏｒ  Ｄ’’’＝Ｒ  ｘｏｒ  Ｒ’’’−−−−（数１５）
即ち、乱数（Ｒ  ｘｏｒ  Ｒ’’）の情報のみが残る。この場合、管理サーバ３００の全体処理部３１１は、上述の基本演算部３１７の出力結果を準同型関数部３１６に入力し、準同型関数部３１６の出力結果である関数値Ｙを取得する（ｓ２０３）。このとき、関数値Ｙの値は以下の［数１６］に従う。
【０１００】
Ｙ＝ｆｕｎｃ（Ｄ  ｘｏｒ  Ｄ’’  ）−−−−（数１６）
続いて管理サーバ３００の全体処理部３１１は、基本演算部３１７に上述の関数値Ｆ’’’と関数値Ｙを入力し、基本演算部３１７で計算された、その排他的論理和（ＸＯＲ算）たる関数値Ｚを取得する（ｓ２０４）。ここで、平文インデックスと平文インデックスのデータ値が同一である場合、即ち上述の［数１５］が成り立つ場合、関数値Ｚには以下の［数１７］が成り立つ。
【０１０１】
Ｚ  ＝  Ｆ’’’  ｘｏｒ  Ｙ
＝  ｆｕｎｃ（Ｒ’’’）  ｘｏｒ  （ｆｕｎｃ（Ｄ  ｘｏｒ  Ｄ’’  ）
＝  ｆｕｎｃ（Ｒ’’’）  ｘｏｒ  （ｆｕｎｃ（  Ｒ  ｘｏｒ  Ｒ’’’）
＝  ｆｕｎｃ（Ｒｎ）  ｘｏｒ  ｆｕｎｃ（Ｒ）  ｘｏｒ    ｆｕｎｃ（Ｒ’’’）
＝  ｆｕｎｃ（Ｒ’’’）
−−−−（数１７）
次に、管理サーバ３００の全体処理部３１１は、圧縮関数部３１５に上述の関数値Ｚを入力し、圧縮関数部３１５から出力されたデータをハッシュ値Ｈとして取得する（ｓ２０５）。
【０１０２】
また、管理サーバ３００の全体処理部３１１は、上述のハッシュ値Ｈから、パラメータに記録されたビット長を取得し検索タグとする（ｓ２０６）。例えば、図１０にて示すように、最下位３ビットを抽出する。
【０１０３】
続いて管理サーバ３００の全体処理部３１１は、基本演算部３１７に上述の暗号化インデックスＤと秘匿データの検索タグを入力する（ｓ２０７）。一方、基本演算部３１７は上述の暗号化インデックスＤと秘匿データの検索タグの比較を行い（ｓ２０８）、同一であれば（ｓ２０８：Ｙ）、以下のステップｓ２０９の処理を行う。他方、異なる場合（ｓ２０８：Ｎ）、基本演算部３１７は、処理を中断して、別の秘匿化インデックスと秘匿化インデックス用クエリとの検索処理を行うべく、処理を上述のステップｓ２００に戻す。
【０１０４】
管理サーバ３００の全体処理部３１１は、パラメータＰＡを記憶部３２０から呼び出し、準同型関数値Ｆと連結したデータを圧縮関数部３１５に入力する（ｓ２０９）。圧縮関数部３１５は、連結された準同型関数値ＦとパラメータＰＡを変換し、ハッシュ値Ｇを出力する（ｓ２１０）。圧縮関数をｈａｓｈとした場合、パラメータＰＡ、準同型関数値Ｆ、出力されるハッシュ値Ｇには、以下の［数１８］が成り立つ。
【０１０５】
Ｇ＝  ｈａｓｈ（Ｆ｜｜ＰＡ）−−−−（数１８）
続いて管理サーバ３００の全体処理部３１１は、秘匿化インデックス３４２から、鍵埋込タグＥを取得し、基本演算部３１７に、ハッシュ値Ｇと鍵埋込タグＥとのｘｏｒを計算させる（ｓ２１１）。このとき、以下の［数１９］より、出力されるデータはインデックス用秘密鍵ＩＫに該当するとき、ハッシュ値Ｈ３、鍵埋込タグＥには、以下の［数１９］が成り立つ。
【０１０６】
Ｅ  ｘｏｒ  Ｇ
＝ｈａｓｈ（Ｆ｜｜ＰＡ）ｘｏｒ（  ＩＫ  ｘｏｒ  Ｈ３）
＝ｈａｓｈ（Ｆ｜｜ＰＡ）ｘｏｒ（  ＩＫ  ｘｏｒ    ｈａｓｈ（Ｆ｜｜ＰＡ））
＝ｈａｓｈ（Ｆ｜｜ＰＡ）ｘｏｒ    ＩＫ  ｘｏｒ    ｈａｓｈ（Ｆ｜｜ＰＡ）
＝  ＩＫ
−−−−（数１９）
従って、平文インデックスと平文クエリのデータ値が同一である場合、管理サーバ３００の全体処理部３１１は、インデックス用秘密鍵ＩＫを取得できる（ｓ２１２）。なお、上記の処理手順は、処理手順を変更してもよい。また、秘匿化インデックスが図１６のごとく階層化されたものである場合、上述のステップｓ２０８の処理は、最初に、検索タグのビットのうち先頭１ビットを抽出し、ここで抽出したビットと、階層中の最上位階層の暗号化インデックスとの同一判定を行い、この判定で特定された所定暗号化インデックスの配下にあたる第二位階層の暗号化インデックス群に対し、検索タグのビットのうち先頭から２番目までの２ビットとの同一判定を行い、この判定で特定された所定暗号化インデックスの配下にあたる最下位階層の暗号化インデックス群に対し、検索タグの３ビットとの同一判定を行い、その結果を当該ステップｓ２０８の結果とする。この場合、当該ステップｓ２０８で“Ｎ”判定の結果、ステップ２００へ処理が戻るのは、最上位階層から最下位階層までのいずれかの判定で、一致判定が得られなかった、すなわちビットと一致する暗号化インデックスが無かった場合に該当することになる。こうした階層化されたインデックス構造を用いた処理は、以降の検索処理に際しても同様に実行出来る。
【０１０７】
次に、秘匿化インデックスに該当する秘匿データの検索方法について説明する。図２２は本実施形態における検索可能暗号処理方法の処理手順例７を示すフロー図である。この場合、管理サーバ３００の全体処理部３１１は、秘匿化インデックス用クエリに該当する、秘匿化インデックスに関連付けられた暗号化識別子３８１を取得し、記憶部３２０に格納する（ｓ２２０）。例えば、図１５に示した例の場合、Ｉ（１）が秘匿化インデックス用クエリに該当する場合、関連付けられた暗号化識別子であるＥ（１，１）、Ｅ（１，２）、・・・、Ｅ（１，ｎ）を取得する。
【０１０８】
続いて管理サーバ３００の全体処理部３１１は、記憶部３２０に格納された暗号化識別子３８１を取得し、インデックス用秘密鍵ＩＫと共に、復号化部３１３へ入力し、平文データの識別子を取得する（ｓ２２１）。
【０１０９】
続いて管理サーバ３００の全体処理部３１１は、関係表３８２を用い、平文データの識別子に該当する秘匿データ３４１のアドレスを参照し、該当秘匿データ３４１を取得する（ｓ２２２）。例えば、図１５で示した例の場合、平文データの識別子（１，１）が該当した場合、関係表８３２の同行にある秘匿データのアドレス＆Ｄ（１，１）から、秘匿データＤ（１，１）を取得する。
【０１１０】
次に、管理サーバ３００における秘匿データによる検索方法について説明する。図２３は本実施形態における検索可能暗号処理方法の処理手順例８を示すフロー図である。ここでは、管理サーバ３００における、秘匿データと秘匿化インデックスを用いた、秘匿データの検索手順を示す。管理サーバ３００は、秘匿データ３４１、秘匿データ用クエリ、秘匿化インデックス３４２、秘匿インデックス用クエリを用い、平文データと平文クエリのデータ値が同一であるかを検知し、同一である場合は、該当する秘匿データを探し出すこととなる。
【０１１１】
この場合、管理サーバ３００の全体処理部３１１は、検索クライアント２００より受信した秘匿化インデックス用クエリから、秘匿化インデックス用検索タグクエリＨ２’’’を取得し、関数値復号化鍵３５４と共に、復号化部３１３へ入力し、出力された関数値Ｆ’’’を取得する（ｓ２３０）。この関数値Ｆ’’’は、乱数Ｒ’’’と準同型関数Ｆを用い、以下の［数２０］で表わされる。
【０１１２】
Ｆ’’’＝ｆｕｎｃ（Ｒ’’’）−−−−（数２０）
次に、管理サーバ３００の全体処理部３１１は、秘匿化インデックス用クエリから秘匿化インデックス用暗号化クエリＤ’’’と、秘匿化インデックスから暗号化インデックスＤを取り出す（ｓ２３１）。また、管理サーバ３００の基本演算部３１７は、秘匿化インデックス用暗号化クエリＤ’’’と暗号化インデックスＤを入力として、その排他的論理和（ＸＯＲ算）を計算し、以下の［数２１］に沿って、出力結果を取得する（ｓ２３２）。
【０１１３】
Ｄ  ｘｏｒ  Ｄ’’’  ＝  （Ｃ  ｘｏｒ  Ｒ）  ｘｏｒ  （Ｃ’’’  ｘｏｒ  Ｒ’’’）
−−−−（数２１）
ここで、平文インデックスと平文クエリのデータ値が同一である場合、それらを暗号化したデータも値が等しいため、以下の［数２２］が導ける。
【０１１４】
Ｄ  ｘｏｒ  Ｄ’’’  ＝  Ｒ  ｘｏｒ  Ｒ’’’−−−−（数２２）
即ち、乱数（Ｒ  ｘｏｒ  Ｒ’’）の情報のみが残る。
【０１１５】
続いて管理サーバ３００の全体処理部３１１は、基本演算部３１７の出力結果を準同型関数部３１６に入力し、準同型関数部３１６の出力結果である関数値Ｙを取得する（ｓ２３３）。このとき、関数値Ｙの値は以下の［数２３］に従う。
【０１１６】
Ｙ＝ｆｕｎｃ（Ｄ  ｘｏｒ  Ｄ’’）−−−−（数２３）
続いて管理サーバ３００の全体処理部３１１は、基本演算部３１７に関数値Ｆ’’’と関数値Ｙを入力し、基本演算部３１７による、その排他的論理和（ＸＯＲ算）たる関数値Ｚを取得する（ｓ２３４）。ここで、平文インデックスと平文インデックスのデータ値が同一である場合、即ち上述の［数２２］が成り立つ場合、関数値Ｚには以下の［数２４］が成り立つ。
【０１１７】
Ｚ  ＝  Ｆ’’’  ｘｏｒ  Ｙ  
＝  ｆｕｎｃ（Ｒ’’’）  ｘｏｒ  （ｆｕｎｃ（Ｄ  ｘｏｒ  Ｄ’’  ）
＝  ｆｕｎｃ（Ｒ’’’）  ｘｏｒ  （ｆｕｎｃ（  Ｒ  ｘｏｒ  Ｒ’’’）
＝  ｆｕｎｃ（Ｒｎ）  ｘｏｒ  ｆｕｎｃ（Ｒ）  ｘｏｒ    ｆｕｎｃ（Ｒ’’’）
＝  ｆｕｎｃ（Ｒ’’’）
−−−−（数２４）
次に、管理サーバ３００の全体処理部３１１は、圧縮関数部３１５に関数値Ｚを入力し、出力されたデータをハッシュ値Ｈとして取得する（ｓ２３５）。また、管理サーバ３００の全体処理部３１１は、上述のハッシュ値Ｈから、パラメータに記録されたビット長を取得し検索タグとする（ｓ２３６）。例えば、図１０に示すように、最下位３ビットを抽出する。
【０１１８】
また、管理サーバ３００の全体処理部３１１は、基本演算部３１７に暗号化インデックスＤと秘匿データの検索タグを入力し、両者の比較を行う（ｓ２３７）。基本演算部３１７における比較結果が同一であれば（ｓ２３７：Ｙ）、以下のステップｓ２３８を実行する。他方、比較結果が異なる場合（ｓ２３７：Ｎ）、全体処理部３１１は、処理を中断し、別の秘匿化インデックスと秘匿化インデックス用クエリとの検索処理を行うべく処理をステップｓ２３０に戻す。
【０１１９】
管理サーバ３００の全体処理部３１１は、パラメータＰＡを記憶部３２０から呼び出し、準同型関数値Ｆと連結したデータを圧縮関数部３１５に入力する（ｓ２３８）。圧縮関数部３１５は、連結された準同型関数値ＦとパラメータＰＡを変換し、ハッシュ値Ｇを出力する（ｓ２３９）。圧縮関数をｈａｓｈとした場合、パラメータＰＡ、準同型関数値Ｆ、出力されるハッシュ値Ｇには、以下の［数２５］が成り立つ。
【０１２０】
Ｇ＝  ｈａｓｈ（Ｆ｜｜ＰＡ）−−−−（数２５）
次に、全体処理部３１１は、秘匿化インデックス３４２から鍵埋込タグＥを取得し、基本演算部３１７に、ハッシュ値Ｇと鍵埋込タグＥとのｘｏｒを計算させる（ｓ２４０）。このとき、以下の［数２６］より、出力されるデータはインデックス用秘密鍵ＩＫに該当する。こののとき、ハッシュ値Ｈ３、鍵埋込タグＥには、以下の［数２６］が成り立つ。
【０１２１】
Ｅ  ｘｏｒ  Ｇ
＝ｈａｓｈ（Ｆ｜｜ＰＡ）ｘｏｒ（  ＩＫ  ｘｏｒ  Ｈ３）
＝ｈａｓｈ（Ｆ｜｜ＰＡ）ｘｏｒ（  ＩＫ  ｘｏｒ    ｈａｓｈ（Ｆ｜｜ＰＡ））
＝ｈａｓｈ（Ｆ｜｜ＰＡ）ｘｏｒ    ＩＫ  ｘｏｒ    ｈａｓｈ（Ｆ｜｜ＰＡ）
＝  ＩＫ
−−−−（数２６）
従って、平文インデックスと平文クエリのデータ値が同一である場合、管理サーバ３００の全体処理部３１１は、インデックス用秘密鍵ＩＫを取得できる（ｓ２４１）。なお、上記の処理手順は、処理手順を変更してもよい。
【０１２２】
次に、秘匿化インデックスに該当する秘匿データの検索方法について説明する。図２４は本実施形態における検索可能暗号処理方法の処理手順例９を示すフロー図である。ここで示す管理サーバ３００における、秘匿データ用クエリを用いた、秘匿データの検索手順は、秘匿化インデックス用クエリを用いた、秘匿化インデックスの検索手順と同様である。この場合、管理サーバ３００は、検索クライアント２００より受信した秘匿データ用クエリから、秘匿データ用検索タグクエリＨ２’’を取得し、関数値復号鍵と共に、復号化部３１３へ入力し、出力された関数値Ｆ’’を取得する（ｓ２５０）。
【０１２３】
また、管理サーバ３００は、秘匿データ用暗号化クエリＤ’’と暗号化データＤ’のｘｏｒを計算し、その出力結果を準同型関数部３１６に入力する（ｓ２５１）。また、管理サーバ３００は、ここで出力された準同型関数値関数値Ｆ’’から、関数値Ｆ’’のｘｏｒの結果を圧縮関数部３１５に入力し、出力された結果が検索タグＨ２と等しければ、秘匿データは秘匿データ用クエリと等しいとみなす（ｓ２５２）。なお、上記の処理手順は、秘匿化インデックス用クエリを用いた、秘匿化インデックスの検索手順と同様、処理手順を変更してもよい。
【０１２４】
次に、秘匿データの復号方法について説明する。図２５は本実施形態における検索可能暗号処理方法の処理手順例１０を示すフロー図であり、検索クライアント２００における秘匿データの復号方法の処理手順を示すものである。
【０１２５】
この場合、検索クライアント２００の全体処理部２１１は、記憶部２２０からマスク用秘密鍵２５３とデータ復号化鍵２５８を取得する（ｓ３００）。
【０１２６】
また、検索クライアント２００の全体処理部２１１は、管理サーバ３００より返信されてきた秘匿データが含む初期ベクトルＩＶと、上述のステップｓ３００で得たマスク用秘密鍵２５３を連結し、圧縮関数部２１５に入力する（ｓ３０１）。この場合、圧縮関数部２１５は、全体処理部２１１から入力された上述の初期ベクトルＩＶとマスク用秘密鍵２５３を変換し、ハッシュ値Ｈ１’を出力する（ｓ３０２）。
【０１２７】
次に、検索クライアント２００の全体処理部２１１は、管理サーバ３００より得た秘匿データから暗号化データＤ’を取り出す（ｓ３０３）。また、基本演算部２１１は、上述の暗号化データＤ’と、上述のステップｓ３０２で得たハッシュ値Ｈ１’を、二つの入力とみなし、ＸＯＲした結果である暗号化データＣ’を出力する（ｓ３０４）。
【０１２８】
続いて全体処理部２１１は、上述の暗号化データＤ’を記憶部２２０に格納する（ｓ３０５）。このとき、暗号化データＤ’、ハッシュ値Ｈ１’、暗号化データＣ’には、以下の［数２７］が成り立つ。
【０１２９】
Ｃ’＝  Ｄ’  ｘｏｒ  Ｈ１’−−−−（数２７）
また、全体処理部２１１は、上述の暗号化データＣ’とデータ復号化鍵２５８を復号化部２１３へ入力する（ｓ３０６）。この場合、復号化部２１３は、上述の暗号化データＣ’を復号する（ｓ３０７）。一方、全体処理部２１１は、記憶部２２０に記憶された、パラメータ２６０を読み込み、上述のステップｓ３０７で復号したデータから、パディングされた値を取り除き、平文データｍを取得し、出力部２０２に表示する（ｓ３０８）。
【０１３０】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【０１３１】
こうした本実施形態によれば、検索クエリを暗号化したまま暗号化データの検索を行うシステムにおいて、大規模データに対する検索処理を高速化できる。
【０１３２】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態の検索可能暗号処理システムにおける前記サーバの記憶装置は、前記秘匿化インデックスと対応付けて、当該秘匿化インデックスに分類される前記平文データを示す識別子を暗号化した暗号化識別子を更に格納し、前記平文データを示す識別子と、該当平文データを起源とする秘匿データのアドレスとの対応関係を示す関係表を更に格納しており、前記サーバの演算装置は、前記検索した該当秘匿化インデックスに対応する暗号化識別子を記憶装置にて取得し、当該取得した暗号化識別子を所定鍵で復号して平文データの識別子を取得し、当該平文データの識別子を前記関係表に照合して、前記平文データの識別子に対応する秘匿データのアドレスを特定し秘匿データを取得する処理を実行するものである、としてもよい。
【０１３３】
これによれば、サーバにおいて、記憶装置内の秘匿データについて検索を行う際、該当秘匿データの格納場所すなわちアドレスを簡便に特定した上で、このアドレスに基づいて秘匿データを効率的に取得することが出来る。従って、全体の検索効率が改善される。
【０１３４】
また、本実施形態の検索可能暗号処理システムにおける前記サーバの記憶装置において、各秘匿化インデックスに対応付けた前記暗号化識別子の数が、秘匿化インデックス間で同数であるとしてもよい。
【０１３５】
これによれば、秘匿化インデックス間で秘匿データ数による相違は無くなり、例えば、検索処理の対象となる頻度が高い秘匿インデックスには秘匿データ数が多く、すなわち有用な情報が格納されている、などと類推される恐れが少なくなる。よって、検索処理のセキュア度が向上する。
【０１３６】
また、本実施形態の検索可能暗号処理システムにおける前記サーバの演算装置は、前記検索クライアントより受信した前記秘匿化インデックス用クエリから秘密鍵情報を抽出し、前記秘密鍵情報により前記暗号化識別子を復号するものである、としてもよい。これによれば、暗号化識別子をセキュアかつ効率的に復号化出来る。
【０１３７】
また、本実施形態の検索可能暗号処理システムにおける、前記サーバの記憶装置において、前記秘匿化インデックスが、前記平文データの分類概念の大小に従った複数階層で構成されており、前記サーバの演算装置は、前記秘匿化インデックス用クエリに該当する秘匿化インデックスの検索を、前記複数階層のうち最上位階層の秘匿化インデックスから下位階層の秘匿化インデックスに向けて順次実行し、当該検索で特定した最下位階層の秘匿化インデックスに分類された秘匿データ群を対象として、前記秘匿データ用クエリに該当する秘匿データを検索し、当該検索した秘匿データを前記検索クライアントに返信するものである、としてもよい。
【０１３８】
これによれば、秘匿インデックスの分類に属さない、すなわち検索対象となりえない秘匿データについて検索処理から排除する処理を、上述の階層に沿って順次行うことで、検索処理の更なる効率化が図られるため、検索に要する時間も更に低減出来る。
【０１３９】
また、本実施形態の検索可能暗号処理システムにおいて、他装置と通信する通信装置と、平文データを秘匿化して秘匿データを生成し、前記平文データを分類する平文インデックスを秘匿化して秘匿化インデックスを生成し、前記秘匿データおよび前記秘匿化インデックスを前記検索対象データとして前記サーバに送信する処理を実行する演算装置と、を備える登録クライアントを更に含むとしてもよい。
【０１４０】
これによれば、サーバが記憶装置で保持する秘匿データおよび秘匿化インデックスを、より効率的に取得し、管理することが可能となる。
【０１４１】
また、本実施形態の検索可能暗号処理システムにおいて、前記登録クライアントの演算装置は、前記平文データを所定アルゴリズムに適用して前記平文インデックスを生成するものであるとしてもよい。
【０１４２】
これによれば、サーバが記憶装置で保持する秘匿化インデックスを、登録クライアントにおいて平文データに基づく平文インデックスから効率的に生成し、登録することが可能となる。
【０１４３】
また、本実施形態の検索可能暗号処理システムにおいて、前記登録クライアントの演算装置は、前記平文データをハッシュ関数またはｎ−ｇｒａｍに適用して前記平文インデックスを生成するものであるとしてもよい。
【０１４４】
これによれば、サーバが記憶装置で保持する秘匿化インデックスを、登録クライアントにおいて平文データに基づく平文インデックスから更に効率的かつセキュアに生成し、登録することが可能となる。
【０１４５】
また、本実施形態の検索可能暗号処理システムにおいて、前記登録クライアントの演算装置は、前記平文データを示す識別子を暗号化して暗号化識別子を生成し、当該暗号化識別子を前記サーバに送信するものである、としてもよい。
【０１４６】
これによれば、上述の暗号化識別子を保持するサーバにおいて、検索時に暗号化識別子と関係表とに基づいて秘匿データのアドレスを効率的に特定することが可能となり、全体の検索効率が改善される。
【０１４７】
また、本実施形態の検索可能暗号処理システムにおいて、前記登録クライアントの演算装置は、前記暗号化識別子を、各秘匿化インデックスの間で同数だけ生成するものであるとしてもよい。
【０１４８】
これによれば、秘匿化インデックス間で秘匿データ数による相違は無くなり、例えば、検索処理の対象となる頻度が高い秘匿インデックスには秘匿データ数が多く、すなわち有用な情報が格納されている、などと類推される恐れが少なくなる。よって、検索処理のセキュア度が向上する。
【０１４９】
また、本実施形態の検索可能暗号処理システムにおいて、前記登録クライアントの演算装置は、前記秘匿化インデックスを、前記平文データの分類概念の大小に従って複数階層で構成し、当該複数階層の秘匿化インデックスおよび前記秘匿データを前記検索対象データとして前記サーバに送信するものであるとしてもよい。
【０１５０】
これによれば、上述のサーバにおいて、秘匿インデックスの分類に属さない、すなわち検索対象となりえない秘匿データについて検索処理から排除する処理を、上述の階層に沿って順次行うことが可能となり、そのため検索処理の更なる効率化が図られ、検索に要する時間も更に低減出来る。
【符号の説明】
【０１５１】
１０  検索可能暗号処理システム
１００  登録クライアント
１０１  入力部
１０２  出力部
１０３  通信部
１１０  制御部
１１１  全体処理部
１１２  暗号化部
１１４  擬似乱数生成部
１１５  圧縮関数部
１１６  準同型関数部
１１７  基本演算部
１２０  記憶部
１３１  平文データ
１３３  平文インデックス
１３８  平文データの識別子
１５１  乱数用秘密鍵
１５２  データ暗号化鍵
１５３  マスク用秘密鍵
１５５  インデックス用秘密鍵
１６０  パラメータ
２００  検索クライアント
２０１  入力部
２０２  出力部
２０３  通信部
２１０  制御部
２１１  全体処理部
２１２  暗号化部
２１３  復号化部
２１４  擬似乱数生成部
２１５  圧縮関数部
２１６  準同型関数部
２１７  基本演算部
２２０  記憶部
２４１  平文クエリ
２５１  乱数用秘密鍵
２５２  データ暗号化鍵
２５３  マスク用秘密鍵
２５４  関数値暗号化鍵
２５７  秘密鍵暗号化鍵
２５８  データ復号化鍵
２５９  クエリ暗号化鍵
２６０  パラメータ
３００  管理サーバ（サーバ）
３０１  入力部
３０２  出力部
３０３  通信部
３１０  制御部
３１１  全体処理部
３１３  復号化部
３１５  圧縮関数部
３１６  準同型関数部
３１７  基本演算部
３２０  記憶部
３４１  秘匿データ
３４２  秘匿化インデックス
３５４  関数値復号化鍵
３５６  秘密鍵暗号化鍵
３８１  暗号化識別子
３８２  関係表
４００  ネットワーク
５００  コンピュータ
５０１  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
５０２  メモリ
５０３  外部記憶装置
５０４  通信装置
５０５  出力装置
５０６  入力装置
５０７  読書装置
５０８  記憶媒体
５０９  内部通信線
【図１】
2015135541.tif 000003
【図２】
2015135541.tif 000004
【図３】
2015135541.tif 000005
【図４】
2015135541.tif 000006
【図５】
2015135541.tif 000007
【図６】
2015135541.tif 000008
【図７】
2015135541.tif 000009
【図８】
2015135541.tif 000010
【図９】
2015135541.tif 000011
【図１０】
2015135541.tif 000012
【図１１】
2015135541.tif 000013
【図１２】
2015135541.tif 000014
【図１３】
2015135541.tif 000015
【図１４】
2015135541.tif 000016
【図１５】
2015135541.tif 000017
【図１６】
2015135541.tif 000018
【図１７】
2015135541.tif 000019
【図１８】
2015135541.tif 000020
【図１９】
2015135541.tif 000021
【図２０】
2015135541.tif 000022
【図２１】
2015135541.tif 000023
【図２２】
2015135541.tif 000024
【図２３】
2015135541.tif 000025
【図２４】
2015135541.tif 000026
【図２５】
2015135541.tif 000027