(57)【要約】  サーバにデータを秘匿化して預託するシステムにおいて、検索処理の問い合わせを行うクライアントが秘密鍵を持つことなく、高速にデータ抽出するサーバ装置等を提供する。  本発明によるサーバ装置１は、登録データの秘密分散法による分散情報と登録データの検索可能暗号による暗号文とを含む秘匿登録データを保持するデータ記憶部２と、外部サーバと通信を行い、検索クエリと秘密分散された分散情報とを用いて秘密計算を実行することで検索可能暗号のデータ検索トークンを生成するトークン計算部３と、トークン計算部３から受信するデータ検索トークンと、データ記憶部２から取得する秘匿登録データとから、データ検索を実行し検索結果を出力するデータ検索部４とを備える。
2016129259.tif 000002
【特許請求の範囲】
【請求項１】
登録データの秘密分散法による分散情報と、前記登録データの検索可能暗号による暗号文とを含む秘匿登録データを保持するデータ記憶手段と、
外部のサーバ装置と通信を行い、検索クエリと前記分散情報とを用いて秘密計算を実行することで、前記検索可能暗号のデータ検索トークンを生成するトークン計算手段と、
前記トークン計算手段から受信する前記データ検索トークンと、前記データ記憶手段から取得する前記秘匿登録データとから、データ検索を実行し検索結果を出力するデータ検索手段と、
を備えるサーバ装置。
【請求項２】
前記データ検索手段によって抽出された前記検索結果から、要求に応じて前記秘密計算を用いて分析処理を行う分析処理手段
をさらに備える請求項１に記載のサーバ装置。
【請求項３】
前記データ検索手段は、前記データ記憶手段に保持された前記秘匿登録データの各行に対する検索処理を、ゲート単位の処理によって並列して前記秘密計算を行う、
請求項１又は２に記載のサーバ装置。
【請求項４】
ネットワークで接続された請求項１乃至３のいずれか一項に記載の複数のサーバ装置とプロキシ装置とを備えるデータ検索システムであって、
前記プロキシ装置は、
前記複数のサーバ装置に登録される前記秘匿登録データを生成する登録データ生成手段と、
外部から入力される分析処理要求を、前記複数のサーバ装置へ送信する秘匿化されたクエリデータへと変換するクエリデータ生成手段と、
前記複数のサーバ装置から受信する秘匿検索結果から処理結果を復元する秘密分散復号手段と、
を有するデータ検索システム。
【請求項５】
外部サーバから取得する検索クエリと、登録データの秘密分散法による分散情報と前記登録データの検索可能暗号による暗号文とを含む秘匿登録データを格納するデータ記憶手段から取得する前記分散情報と、を用いて秘密計算を実行することで前記検索可能暗号のデータ検索トークンを生成し、
生成された前記データ検索トークンと、前記データ記憶手段から取得する前記秘匿登録データとから、データ検索を実行し、検索結果を出力する
検索方法。
【請求項６】
前記検索結果から、要求に応じて前記秘密計算を用いて分析処理を行う
ことを更に含む請求項５に記載の検索方法。
【請求項７】
前記データ検索手段が、前記データ記憶手段に保持された前記秘匿登録データの各行に対する検索処理を、ゲート単位の処理によって並列して前記秘密計算を行う、
請求項５又は６に記載の検索方法。
【請求項８】
外部サーバから取得する検索クエリと、登録データの秘密分散法による分散情報と前記登録データの検索可能暗号による暗号文とを含む秘匿登録データを格納するデータ記憶手段から取得する前記分散情報と、を用いて秘密計算を実行することで前記検索可能暗号のデータ検索トークンを生成する機能と、
生成された前記データ検索トークンと、前記データ記憶手段から取得する前記秘匿登録データとから、データ検索を実行し検索結果を出力する機能
とをコンピュータに実現させる検索プログラムを格納する記録媒体。
【請求項９】
前記検索結果から、要求に応じて前記秘密計算を用いて分析処理を行う機能
を更に含む請求項８に記載の記録媒体。
【請求項１０】
保持された前記秘匿登録データのデータベースの各行に対する検索処理を、ゲート単位の処理によって並列して前記秘密計算を行う機能
を更に含む請求項８又は９に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバにデータを秘匿化して預託するシステムにおいて、データを抽出するためのサーバ装置等に関する。
【背景技術】
【０００２】
クライアント（ユーザ）が外部の第三者にデータを預託できるサービスがある。このようなサービスで使用されるデータベースサーバにおいては、クライアントから預託されたデータは、当該サーバ内のデータベースに保存される。この際、データを格納するデータベース内の情報が、サーバ側から漏えい、窃盗等されることを防ぐために、当該データを秘匿化する必要がある。特に、サーバ側から特定の性質を満たす（属性がある値を持つなど）データを抽出する処理において、情報漏洩が発生し易い。これを防ぐためには、正当なクライアント以外に、当該データを保管するデータベースにアクセスできる権限を与えないことが望ましい。しかし、サーバの管理者には、当該データの管理のために当該データベースへのアクセス許可が必要な時がある。このため、このようなサーバまたはサーバを含むシステムにおいて、当該データを秘匿したまま、ユーザが所望のデータを抽出できる技術が開発されている。【０００３】
上記のようなシステム内のサーバに、データを秘匿したままデータの抽出を行う方法として、検索可能暗号（Searchable Encryption: ＳＥ）を用いた方法がある。ＳＥを用いた方法は、検索対象の平文とその平文に含まれるキーワード（検索単語）とを暗号化したままの状態で、検索単語を含む文章を検索できる暗号である。暗号化された検索対象の平文を暗号文と呼ぶ。ＳＥを用いた方法では、データベースに問い合わせる際に、検索単語と暗号化に用いた秘密鍵とを含む、検索トークンを生成する。更に、生成された検索トークンに含まれる暗号鍵を用いて暗号文を復号し、復号結果の平文内に検索単語が存在するかを確認する。このＳＥ方法の処理は高速である。しかしながら、ＳＥ方法においては、クライアントがシステムに問い合わせるための検索トークンを生成するために、クライアントの端末が秘密鍵を保持し、管理する必要がある。【０００４】
一方で、秘密鍵を用いずにデータの抽出を行う方法として、秘密分散法を用いた秘密計算という技術がある。まず、秘密分散法について説明する。秘密分散法は、ある秘密情報（例えば秘密鍵など）を複数個の分散情報に変換し、ある条件を満たした組み合わせの分散情報を集めることによって、もとの秘密情報を復元することが出来る方法である。このとき、ある条件を満たさない組み合わせの分散情報を集めても、もとの秘密情報に関する情報は洩れないことが保障される。秘密分散法の代表的な方式としては、非特許文献１に記載のShamirのしきい値型秘密分散法（Shamir’s Secret Sharing：SSS）を用いる手法がある。ここで、しきい値型秘密分散法とは、複数個の分散情報のうち、ある個数以上の分散情報を集めることによって秘密情報を復元できる秘密分散法である。【０００５】
次に、秘密計算について説明を行う。秘密計算は、それぞれ秘密情報を持つ２台以上のサーバ装置が協力して計算することで、それぞれの秘密情報を漏らすことなく、秘密情報を入力とする任意の関数値を計算できる技術である。秘密分散法を利用した秘密計算の方法は、非特許文献２や非特許文献３に記載されている方法などがある。【０００６】
秘密情報であるデータを複数のサーバ装置で秘密分散法を利用して分散（以下、秘密分散と記載する）して保持すれば、第三者であるシステムの管理者から、預託データを秘匿することができ、ひいては、預託されるデータの窃盗を防ぐことができる。秘密分散法においては、指定した条件を満たすかどうかを判定する関数を秘密計算によって計算することで、データを抽出することができ、このデータの抽出において、問い合わせを行うクライアントの端末側が鍵を持つ必要がないという利点がある。しかし一方で、秘密計算の算出処理に時間がかかるという問題がある。【０００７】
秘密鍵を用いずに、ＳＥを利用してデータの抽出を行う方法として、ＳＥにおける検索用のトークンを、秘密計算技術を用いて計算する方法が考えられる。この方法では、ＳＥの秘密鍵をデータベースの秘密情報とともに秘密分散して各サーバが保持する。検索を要求する際には、先ず、問い合わせ側が秘密分散された検索条件の秘密分散データをそれぞれのサーバに送信する。各サーバは検索条件の秘密分散データとＳＥの秘密鍵の秘密分散データとを用いて、秘密計算を実行し、検索トークンを生成する。【０００８】
この方法では、問い合わせ側が秘密鍵を持たずにデータ抽出を行うことができる。しかし、抽出されたデータを復号する際には、サーバは秘密鍵の秘密分散データを用いて秘密計算を行う必要があり、やはりデータ抽出結果を得るのに時間がかかるという問題がある。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Ａｄｉ  Ｓｈａｍｉｒ、  “Ｈｏｗ  ｔｏ  Ｓｈａｒｅ  ａ  Ｓｅｃｒｅｔ、”  Ｃｏｍｍｕｎ．  ＡＣＭ  ２２（１１）、  ｐｐ．６１２−６１３、  １９７９.
【非特許文献２】Ｍｉｃｈａｅｌ  Ｂｅｎ−Ｏｒ、  Ｓｈａｆｉ  Ｇｏｌｄｗａｓｓｅｒ  ａｎｄ  Ａｖｉ  Ｗｉｇｄｅｒｓｏｎ、  “Ｃｏｍｐｌｅｔｅｎｅｓｓ  Ｔｈｅｏｒｅｍｓ  ｆｏｒ  Ｎｏｎ−Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｆａｕｌｔ−Ｔｏｌｅｒａｎｔ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｕｔａｔｉｏｎ  （Ｅｘｔｅｎｄｅｄ  Ａｂｓｔｒａｃｔ）、”  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２０ｔｈ  Ａｎｎｕａｌ  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｔｈｅｏｒｙ  ｏｆ  Ｃｏｍｐｕｔｉｎｇ、  １９８８．
【非特許文献３】Ｏｄｅｄ  ｇｏｌｄｒｅｉｃｈ、  Ｓｉｌｖｉｏ  Ｍｉｃａｌｉ、  Ａｖｉ  Ｗｉｇｄｅｒｓｏｎ、  ”Ｈｏｗ  ｔｏ  Ｐｌａｙ  ａｎｙ  Ｍｅｎｔａｌ  ｇａｍｅ  ｏｒ  Ａ  Ｃｏｍｐｌｅｔｅｎｅｓｓ  Ｔｈｅｏｒｅｍ  ｆｏｒ  Ｐｒｏｔｏｃｏｌｓ  ｗｉｔｈ  Ｈｏｎｅｓｔ  Ｍａｊｏｒｉｔｙ、”  ＳＴＯＣ１９８７、  ｐｐ．２１８−２２９、  １９８７．
【非特許文献４】Ｒｅｚａ  Ｃｕｒｔｍｏｌａ、  Ｊｕａｎ  Ａ．  Ｇａｒａｙ、  Ｓｅｎｙ  Ｋａｍａｒａ、  Ｒａｆａｉｌ  Ｏｓｔｒｏｖｓｋｙ、   ”Ｓｅａｒｃｈａｂｌｅ  Ｓｙｍｍｅｔｒｉｃ  Ｅｎｃｒｙｐｔｉｏｎ：  Ｉｍｐｒｏｖｅｄ  Ｄｅｆｉｎｉｔｉｏｎｓ  ａｎｄ  Ｅｆｆｉｃｉｅｎｔ  Ｃｏｎｓｔｒｕｃｔｉｏｎｓ、”  Ｊｏｕｒｎａｌ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ  １９（５）：  ８９５−９３４、  ２０１１．
【発明の概要】
【発明が解決しようとする課題】
【００１０】
このように、上述の非特許文献１〜３には以下の問題があった。すなわち、秘匿化されたデータに対して検索を行う技術は、秘密計算を用いた方法とＳＥを用いる方法がある。秘密計算を用いた方法では処理速度が遅くなるという問題があり、一方で、ＳＥを用いた方法では、クライアント側が秘密鍵を持つ必要があるという問題がある。ＳＥのデータ検索処理を秘密計算で行う方法は、検索結果の復号にも秘密計算を必要とするため、やはり、処理速度が遅くなるという問題がある。【００１１】
上記の問題点を鑑み、本発明は、検索処理の問い合わせを行うクライアント側が秘密鍵を持つことなく、高速にデータを抽出できるサーバ装置等を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述の課題に鑑み、本発明の第１の特徴は、
登録データの秘密分散法による分散情報と、登録データの検索可能暗号による暗号文とを含む秘匿登録データを保持するデータ記憶手段と、
外部サーバ装置と通信を行い、検索クエリと秘密分散された分散情報とを用いて秘密計算を実行することで検索可能暗号のデータ検索トークンを生成するトークン計算手段と、
トークン計算手段から受信するデータ検索トークンと、データ記憶手段から取得する秘匿登録データとから、データ検索を実行し検索結果を出力するデータ検索手段と、
を備えるサーバ装置である。【００１３】
本発明の第２の特徴は、
ネットワークで接続された上記の複数のサーバ装置とプロキシ装置とを備えるデータ検索システムであって、
プロキシ装置は、
複数のサーバ装置に登録される秘匿登録データを生成する登録データ生成手段と、
外部から入力される分析処理要求を、複数のサーバ装置へ送信する秘匿化されたクエリデータへと変換するクエリデータ生成手段と、
複数のサーバ装置から受信する秘匿検索結果から処理結果を復元する秘密分散復号手段と、
を有するデータ検索システムである。【００１４】
本発明の第３の特徴は、
外部サーバから取得する検索クエリと、登録データの秘密分散法による分散情報と登録データの検索可能暗号による暗号文とを含む秘匿登録データを格納するデータ記憶手段から取得する分散情報と、を用いて秘密計算を実行することで検索可能暗号のデータ検索トークンを生成し、
生成されたデータ検索トークンと、データ記憶手段から取得する秘匿登録データとから、データ検索を実行し、検索結果を出力する
検索方法である。【００１５】
本発明の第４の特徴は、
外部サーバから取得する検索クエリと、登録データの秘密分散法による分散情報と登録データの検索可能暗号による暗号文とを含む秘匿登録データを格納するデータ記憶手段から取得する分散情報と、を用いて秘密計算を実行することで検索可能暗号のデータ検索トークンを生成する機能と、
生成されたデータ検索トークンと、データ記憶手段から取得する秘匿登録データとから、データ検索を実行し検索結果を出力する機能
とをコンピュータに実現させる検索プログラムである。
尚、検索プログラムは、記録媒体に格納されていてもよい。
【発明の効果】
【００１６】
本発明によれば、検索処理の問い合わせを行うクライアント側が秘密鍵を持つことなく、高速にデータを抽出することができる。【００１７】
本発明の更なる利点及び実施形態を、記述と図面を用いて下記に詳細に説明する。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態におけるデータ検索システムの機能構成例を示すブロック図である。
【図２】本発明の第１の実施形態によるサーバ装置の機能構成例を示すブロック図である。
【図３】図１における秘密分散プロキシ装置の機能構成例を示す図である。
【図４】本発明の第２の実施形態におけるデータ検索システムの機能構成例を示すブロック図である。
【図５】本発明の第２の実施形態によるサーバ装置の機能構成例を示すブロック図である。
【図６】図４における秘密分散プロキシ装置の機能構成例を示す図である。
【図７】本発明の第１の実施形態におけるデータ検索システムのデータ登録動作を例示するフローチャートである。
【図８】本発明の第１の実施形態におけるデータ検索システムのデータ検索動作を例示するフローチャートである。
【図９】本発明の第２の実施形態におけるデータ検索システムのデータ登録動作を例示するフローチャートである。
【図１０】本発明の第２の実施形態におけるデータ検索システムのデータ検索動作を例示するフローチャートである。
【図１１】本発明の第３の実施形態によるサーバ装置の構成例を示すブロック図である。
【図１２】各実施形態において実用可能な情報処理装置の一例を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について図面を参照しつつ説明する。但し、以下に説明する実施形態によって本発明の技術的範囲は何ら限定解釈されることはない。図１〜６の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【００２０】
（第１の実施の形態）
まず、本発明の第１の実施形態について説明する。
【００２１】
図１は、第１の実施形態にかかるデータ検索システム１０の機能構成例を示すブロック図である。
【００２２】
データ検索システム１０は、複数のサーバ装置１００_ｎ（１≦ｎ≦Ｎ：Ｎは２以上の整数）と、秘密分散プロキシ装置２００とを備える。以下、サーバ装置１００_ｎと秘密分散プロキシ装置２００とについて、図面を参照して詳細に説明する。
【００２３】
（サーバ装置）
図２は、図１に示したサーバ装置１００_ｎの機能構成例を詳細に示したブロック図である。サーバ装置１００_ｎは、データ記憶部１０１_ｎと、トークン計算部１０２_ｎと、データ検索部１０３_ｎとを備える。
【００２４】
データ記憶部１０１_ｎは、秘密分散データと、ＳＥ暗号文とを格納する。秘密分散データは、秘密分散された登録データの分散情報である。ＳＥ暗号文は、ＳＥにより暗号化された後述する登録データ（暗号文）である。更に、データ記憶部１０１_ｎは、データ検索部１０３_ｎによって抽出されたデータを受信し、格納する。
【００２５】
トークン計算部１０２_ｎは、秘密分散プロキシ装置２００から入力されるクエリデータ（検索クエリ）１２０_ｎを用いて、外部の他のサーバ装置(例えばサーバ装置１００_１〜１００_（ｎ−１）、１００_（ｎ＋１）〜１００_Ｎ)と通信を行いながら、データ検索用の検索トークンを生成する。
【００２６】
データ検索部１０３_ｎは、データ記憶部１０１_ｎに記憶されたデータから、トークン計算部１０２_ｎから受けた検索トークンと一致するデータを検索し、検索結果をデータ記憶部１０１_ｎに返す。
【００２７】
（秘密分散プロキシ装置）
図３に、図１に示した秘密分散プロキシ装置２００の内部構成の一例を詳細に示す。秘密分散プロキシ装置２００は、登録データ生成部２０１、クエリデータ生成部２０２、および、秘密分散復号部２０３を備える。
登録データ生成部２０１は、外部のクライアント端末（不図示）等から入力された登録対象のデータである登録データ２１０を受信すると、登録データ２１０を秘密分散し、複数の秘匿登録データ１１０_１〜１１０_Ｎを生成する。秘匿登録データ１１０_１〜１１０_Ｎは、それぞれ秘密分散された登録データの分散情報と、ＳＥにより暗号化された登録データ（暗号文）とを含む。
【００２８】
クエリデータ生成部２０２は、外部のクライアント端末等から受けた検索処理要求２２０を受信すると、検索処理要求２２０から複数のクエリデータ１２０_１〜１２０_Ｎを生成する。クエリデータ生成部２０２は、生成したクエリデータ１２０_１〜１２０_Ｎをサーバ装置１００_１〜１００_Ｎに送信する。
【００２９】
秘密分散復号部２０３は、サーバ装置１００_１〜１００_Ｎから秘匿検索結果１３０_１〜１３０_Ｎを受信すると、受信した複数の秘匿検索結果１３０_１〜１３０_Ｎから処理結果２３０（検索結果）を生成し、外部のクライアント端末等に対して出力する。
【００３０】
次に、本発明の第１の実施の形態におけるデータ検索システム１０の動作について詳細に説明する。本実施形態におけるデータ検索システム１０は、主に(1)データ登録時の処理、 (2)データ検索時の処理の２種類の処理を行う。以下、これらの動作について図７および図８に示すフローチャートを参照して説明する。
【００３１】
まず、データ検索システム１０のデータ登録時の処理について図７を参照して説明する。
【００３２】
ステップＳ１０１において、秘密分散プロキシ装置２００は、外部のクライアント端末等から入力された登録対象のデータである登録データ２１０を登録データ生成部２０１に入力する。登録データ生成部２０１は、登録データ２１０を秘密分散し、複数の秘匿登録データ１１０_１〜１１０_Ｎを生成する。秘匿登録データ１１０_１〜１１０_Ｎは、それぞれ秘密分散された登録データの分散情報と、ＳＥによる登録データの暗号文とを含む。秘密分散プロキシ装置２００の登録データ生成部２０１は、複数の秘匿登録データ１１０_１〜１１０_Ｎをサーバ装置１００_１〜１００_Ｎに送信する。
【００３３】
ステップＳ１０２において、サーバ装置１００_ｎは、秘密分散プロキシ装置２００から受けた秘匿登録データ１１０_ｎを、データ記憶部１０１_ｎに保存する。
【００３４】
次に、データ検索システム１０のデータ検索時の処理について図８のフローチャートを参照して説明する。
【００３５】
ステップＳ２０１において、秘密分散プロキシ装置２００のクエリデータ生成部２０２は、複数のクエリデータ１２０_１〜１２０_Ｎを生成する。具体的に、クエリデータ生成部２０２は、外部のクライアント端末等から検索処理要求２２０を受けると、当該検索処理要求２２０を基に、秘密分散された登録データを得るための、複数のクエリデータ１２０_１〜１２０_Ｎを生成する。クエリデータ生成部２０２は、生成したクエリデータ１２０_１〜１２０_Ｎをサーバ装置１００_１〜１００_Ｎに送信する。
【００３６】
ステップＳ２０２において、サーバ装置１００_ｎは、クエリデータ１２０_ｎに対し秘密計算を実行し、検索トークンを出力する。具体的には、サーバ装置１００_ｎは、秘密分散プロキシ装置２００から受けたクエリデータ１２０_ｎを、トークン計算部１０２_ｎに入力する。トークン計算部１０２_ｎは、他のサーバ装置と互いに通信を行いながら、非特許文献２や非特許文献３の方法などを用いて、秘密計算を実行し、ＳＥを用いた方法で第ｎの検索トークンを出力する。サーバ装置１００_ｎは、トークン計算部１０２_ｎから出力された第ｎの検索トークンと、データ記憶部１０１_ｎに保存された秘匿登録データ１１０_ｎとを、データ検索部１０３_ｎに入力する。
【００３７】
ステップＳ２０３において、入力された第ｎの検索トークンおよび第ｎの秘匿登録データに含まれるＳＥの暗号文を基に、データ検索部１０３_ｎは非特許文献４の方法などを用いてＳＥのデータ検索を実行し、入力された検索トークンに対応する暗号文を検索して、その検索結果を出力する。
【００３８】
尚、データ検索部１０３_ｎは、上記のステップＳ２０２に記載した秘密計算を、ゲート処理（与えられた性質を満たすかを判定する関数を実行する処理）においても実行する。この際、データ検索部１０３_ｎは、複数のクエリデータ１２０_１〜１２０_Ｎに対するゲート処理を纏めて秘密分散しても良い。このことで、データ検索部１０３_ｎは、高速な検索手段であるＳＥを活用して、高速にデータ抽出を行うことができる。また、データ検索部１０３_ｎは、データの各ビットに対するゲート処理を，ビットスライス法と呼ばれる手法によって並列に実行することができ、これによって複数のデータに対する検索処理を、ゲート単位の処理により並列して実行することができる。データ検索部１０３_ｎは、検索されたデータの復号を、秘密分散されたデータを復元することによって行う。また、検索されたデータ自身は秘密分散法で分散しているため、データ検索部１３０は、復号処理に秘密計算を必要としない。したがって、復号が早い。また計算結果の復号に関して鍵を要しない。具体的には、本実施形態では、キーワード（検索単語）に対する検索トークンの生成を、秘密計算技術を用いて行うことで、クライアント端末において鍵が無くとも検索トークンを生成することが可能になる。これにより、秘密計算において負荷の大きかったデータ抽出処理を、ＳＥを用いた手法で高速に行うことができる。
【００３９】
ステップＳ２０４において、サーバ装置１００_ｎはデータ記憶部１０１_ｎに保存されたデータのうち、データ検索部１０３_ｎの検索結果に対応する第ｎの秘密分散データを秘匿検索結果１３０_ｎとして出力する。サーバ装置１００_ｎは秘匿検索結果１３０_ｎを、秘密分散プロキシ装置２００に送信する。
ステップＳ２０５において、秘密分散プロキシ装置２００の秘密分散復号部２０３は、サーバ装置１００_ｎから受けた秘匿検索結果１３０_ｎを受信すると、秘匿検索結果１３０_ｎから処理結果２３０を生成して出力する。
【００４０】
本発明の第１の実施の形態によると、検索処理の問い合わせを行うクライアントが秘密鍵を持つことなく、高速にデータを抽出することができる。
【００４１】
より詳細に説明すると、第１に、検索処理の問い合わせを行うクライアントが、高速にデータを抽出できる。即ち、ＳＥを用いて抽出したデータに対して秘密計算を実行することにより、秘密計算による検索処理の時間を削減できる。その理由は、サーバ装置に預託したデータをサーバ装置の管理者に開示することなく、秘密計算による検索処理を実行するからである。尚、一般的に、サーバ装置に預託したデータのすべてに対して秘密計算を用いて検索処理を行う場合、データの量が多くなればなるほど時間を要する。
【００４２】
第２に、検索処理の問い合わせを行うクライアントが秘密鍵を持つ必要が無い。これにより、サーバ管理者等に対するデータの情報漏えいを防止する効果がある。その理由は、データを秘密分散して保持するからである。
【００４３】
（第２の実施の形態）
続いて、本発明の第２の実施形態について説明する。本発明の第２の実施形態は、上述した第１の実施形態の変形例である。以下、本実施形態において、第１の実施形態においてすでに説明した部分と同様な機能を有する部分には同一符号を付し、説明は省略する。
【００４４】
図４は、第２の実施形態によるデータ検索システム２０の機能構成例を示すブロック図である。データ検索システム２０は、複数のサーバ装置３００_１〜３００_Ｎと、秘密分散プロキシ装置４００とを備える。
【００４５】
図５は、第２の実施形態によるサーバ装置３００_ｎの機能構成例を示すブロック図である。サーバ装置３００_ｎは、データ記憶部１０１_ｎと、トークン計算部１０２_ｎと、データ検索部１０３_ｎと、分析処理部１０４_ｎとを備えている。
【００４６】
データ記憶部１０１_ｎは、外部から入力として受けた秘匿登録データ１１０_ｎを記憶する。
【００４７】
トークン計算部１０２_ｎは、外部から入力として受けたクエリデータ１２０_ｎを用いて、外部のサーバ装置と通信を行いながら、第ｎのデータ検索用の検索トークンを生成する。
【００４８】
データ検索部１０３_ｎは、トークン計算部１０２_ｎから受けた第ｎの検索トークンと、データ記憶部１０１_ｎに記憶されたデータから、要求された処理に必要なデータを検索し、検索結果を第ｎのデータ記憶部１０１_ｎに返す。
【００４９】
分析処理部１０４_ｎは、データ検索部１０３_ｎによって抽出されたデータに対して、外部のサーバ装置と通信を行いながら、クライアント端末からの要求に応じた所定の分析処理を、検索結果を用いて行い、秘匿分析結果１４０_ｎを出力する。
【００５０】
図６は、第２の実施形態による秘密分散プロキシ装置４００の機能構成例を示すブロック図である。秘密分散プロキシ装置４００は後述する登録データ生成部２０１、クエリデータ生成部２０２、および、秘密分散復号部２０４を有する。
【００５１】
秘密分散復号部２０４は、サーバ装置３００_１〜３００_Ｎから受けた複数の秘匿分析結果１４０_１〜１４０_Ｎを受信すると、複数の秘匿分析結果１４０_１〜１４０_Ｎから分析結果２４０を生成して出力する。
その他は第１の実施形態と同様である。
【００５２】
次に、本発明の第２の実施の形態におけるデータ検索システム２０の動作について図９および図１０のフローチャートを用いて詳細に説明する。本実施形態における秘匿データ検索システム２０は、(1)データ登録時の処理、(2)データ分析時の処理の２種類の処理を行う。
【００５３】
まず、データ登録時の処理について図９を参照して説明する。
ステップＳ３０１において、秘密分散プロキシ装置４００は、外部から入力された登録データ２１０を登録データ生成部２０１に入力する。登録データ生成部２０１は、登録データ２１０から複数の秘匿登録データ１１０_１〜１１０_Ｎを生成する。秘密分散プロキシ装置４００の登録データ生成部２０１は、秘匿登録データ１１０_１〜１１０_Ｎをサーバ装置３００_１〜３００_Ｎに送信する。
【００５４】
ステップＳ３０２において、サーバ装置３００_ｎは、秘密分散プロキシ装置４００から受けた秘匿登録データ１１０_ｎを、データ記憶部１０１_ｎに保存する。
【００５５】
次に、データ分析時の処理について図１０を参照して説明する。
ステップＳ４０１において、秘密分散プロキシ装置４００のクエリデータ生成部２０２は、外部から受けた検索処理要求２２０を受信し、受信した検索処理要求２２０を基に、複数のクエリデータ１２０_１〜１２０_Ｎを生成する。秘密分散プロキシ装置４００のクエリデータ生成部２０２は、クエリデータ１２０_１〜１２０_Ｎをサーバ装置３００_１〜３００_Ｎに送信する。
【００５６】
ステップＳ４０２において、サーバ装置３００_ｎのトークン計算部１０２_ｎは、秘密分散プロキシ装置４００_ｎから受けたクエリデータ１２０_ｎを、受信する。トークン計算部１０２_ｎは、他のサーバ装置と互いに通信を行いながら、非特許文献２や非特許文献３の方法などを用いて、秘密計算を実行し、ＳＥの第ｎの検索トークンを出力する。
【００５７】
ステップＳ４０３において、サーバ装置３００_ｎは、トークン計算部１０２_ｎから出力された第ｎの検索トークンと、データ記憶部１０１_ｎに保存された秘匿登録データ１１０_ｎをデータ検索部１０３_ｎに入力する。入力された第ｎの検索トークンおよび第ｎの秘匿登録データ１１０_ｎを基に、第ｎのデータ検索部１０３_ｎは、非特許文献４の方法などを用いてデータ検索を実行し、検索結果を出力する。この秘密計算時に、第ｎのデータ検索部１０３_ｎは与えられた性質を満たすかを判定する関数を構成する各ゲート処理を秘密計算する。この時、複数の行に関して同時に、本関数の同じゲートを秘密分散してもよい。
【００５８】
ステップＳ４０４において、サーバ装置３００_ｎは、データ記憶部１０１_ｎに保存されたデータのうち、データ検索部１０３_ｎの検索結果に対応する第ｎの秘密分散データを分析処理部１０４_ｎ（１≦ｎ≦Ｎ）に出力する。分析処理部１０４_ｎは、他のサーバ装置と互いに通信を行いながら、秘密計算を用いて検索されたデータに対する所定の分析処理を行い、秘匿分析結果１４０_ｎを出力する。
【００５９】
ステップＳ４０５において、サーバ装置３００_ｎの分析処理部１０４_ｎは、秘匿分析結果１４０_ｎを、秘密分散プロキシ装置４００に送信する。秘密分散プロキシ装置４００は、サーバ装置３００_１〜３００_Ｎから受けた秘匿分析結果１４０_１〜１４０_Ｎを秘密分散復号部２０４に入力する。秘密分散復号部２０４は、複数の秘匿分析結果１４０_１〜１４０_Ｎから分析結果２４０を生成して出力する。
【００６０】
以上説明した本発明の第２の実施形態においては、第１の実施形態で述べた第１及び第２の効果の他に以下に記載するような第３の効果を奏する。
【００６１】
第３の効果は、秘密計算を用いて、第三者のサーバ装置に処理の内容を秘匿しながら、検索結果を基に、分析処理を委託するといった用途に適用できる。その理由は、検索したデータに対して秘密計算による分析処理を行うことができるため、情報の漏洩なく、分析処理の速度を向上させるからである。
【００６２】
（第３の実施の形態）
本発明の第３の実施形態に係るサーバ装置１について図１１を参照して説明する。本発明の第３実施形態は、上述した第１および２の実施形態の機能を実施する為の最小構成例である。サーバ装置１は、サーバ装置側にデータを秘匿化して預託するシステム等において使用される。サーバ装置１は、データ記憶部２と、トークン計算部３と、データ検索部４とを備える。
【００６３】
データ記憶部２は、登録データの秘密分散法による分散情報と、登録データの検索可能暗号による暗号文とを含む秘匿登録データを保持する。
【００６４】
トークン計算部３は、外部サーバ装置と通信を行い、検索クエリと秘密分散された分散情報とを用いて秘密計算を実行することで検索可能暗号のデータ検索トークンを生成する。
【００６５】
データ検索部４は、トークン計算部３から受信するデータ検索トークンと、データ記憶部２から取得する秘匿登録データとを用いて、データ検索を実行し検索結果を出力する。
【００６６】
本実施形態に係るサーバ装置１は、検索処理の問い合わせを行うクライアントが秘密鍵を持つことなく、高速にデータを抽出することができる。この理由は、データ記憶部２が、秘密分散のための秘匿登録データを保持し、トークン計算部３が、サーバ装置１に預託したデータを、サーバ装置１の管理者に開示することなく、秘密計算による分析処理を実行するからである。
【００６７】
なお、上記のデータ検索システム１０、２０やサーバ装置１００_ｎにおいて行われる検索方法は、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【００６８】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(Ｎon-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ(Compact Disk-Read Only Memory)、ＣＤ−Ｒ(Read)、ＣＤ−Ｒ／Ｗ(Write)、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、フラッシュＲＯＭ、ＲＡＭ(Random access memory)）を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００６９】
本発明の各実施形態において、各装置（システム）の各構成要素は、機能単位のブロックを示している。各装置（システム）の各構成要素の一部又は全部は、例えば図１２に示すような情報処理装置５００とプログラムとの任意の組み合わせにより実現される。情報処理装置５００は、一例として、以下のような構成を含む。
・ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１
・ＲＯＭ５０２
・ＲＡＭ５０３
・ＲＡＭ５０３にロードされるプログラム５０４
・プログラム５０４を格納する記憶装置５０５
・記録媒体５０６の読み書きを行うドライブ装置５０７
・通信ネットワーク５０９と接続する通信インターフェース５０８
・データの入出力を行う入出力インターフェース５１０
・各構成要素を接続するバス５１１
【００７０】
各実施形態における各装置の各構成要素は、これらの機能を実現するプログラム５０４をＣＰＵ５０１が取得して実行することで実現される。各装置の各構成要素の機能を実現するプログラム５０４は、例えば、予め記憶装置５０５やＲＡＭ５０３に格納されており、必要に応じてＣＰＵ５０１が読み出す。なお、プログラム５０４は、通信ネットワーク５０９を介してＣＰＵ５０１に供給されてもよいし、予め記録媒体５０６に格納されており、ドライブ装置５０７が当該プログラムを読み出してＣＰＵ５０１に供給してもよい。
【００７１】
各装置の実現方法には、様々な変形例がある。例えば、各装置は、構成要素毎にそれぞれ別個の情報処理装置５００とプログラムとの任意の組み合わせにより実現されてもよい。また、各装置が備える複数の構成要素が、一つの情報処理装置５００とプログラムとの任意の組み合わせにより実現されてもよい。
【００７２】
また、各装置の各構成要素の一部又は全部は、その他の汎用または専用の回路 、プロセッサ等やこれらの組み合わせによって実現される。これらは、単一のチップ によって構成されてもよいし、バスを介して接続される複数のチップ によって構成されてもよい。
【００７３】
各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【００７４】
各装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【産業上の利用可能性】
【００７５】
本発明によれば、第三者のサーバに秘匿化して預託したデータに対して、データを開示せずに検索処理を依頼するといった用途に適用できる。【００７６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は２０１５年２月９日に出願された日本出願特願２０１５−０２２８９１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００７７】
１００_ｎ  サーバ装置
１０１_ｎ  データ記憶部
１０２_ｎ  トークン計算部
１０３_ｎ  データ検索部
１０４_ｎ  分析処理部
１１０_ｎ  秘匿登録データ
１２０_ｎ  クエリデータ
１３０_ｎ  秘匿検索結果
１４０_ｎ  秘匿分析結果
２００  秘密分散プロキシ装置
２０１  登録データ生成部
２０２  クエリデータ生成部
２０３  秘密分散復号部
２１０  登録データ
２２０  検索処理要求
２３０  処理結果
２４０  分析結果
【図１】
2016129259.tif 000003
【図２】
2016129259.tif 000004
【図３】
2016129259.tif 000005
【図４】
2016129259.tif 000006
【図５】
2016129259.tif 000007
【図６】
2016129259.tif 000008
【図７】
2016129259.tif 000009
【図８】
2016129259.tif 000010
【図９】
2016129259.tif 000011
【図１０】
2016129259.tif 000012
【図１１】
2016129259.tif 000013
【図１２】
2016129259.tif 000014
【国際調査報告】
2016129259.tif 000015
2016129259.tif 000016
2016129259.tif 000017
2016129259.tif 000018