検索可能暗号処理システム
【課題】
現実的な性能を有する、検索可能暗号方式ではサーバに預託したデータを検索するたびに、検索結果の出現頻度の漏洩や、検索結果に該当する預託データの安全性の低下を起しており、危険な状況にある。
【解決手段】
検索可能暗号処理ステムは、データを預かるDBサーバと、DBサーバにデータを預託する登録クライアントと、DBサーバにデータを検索させる検索クライアントがネットワーク経由で連携し、登録クライアントは、ハッシュ値と準同型関数を用いたマスクによる確率的暗号化方式を用いて、暗号化したデータをサーバに預託し、検索クライアントは、検索クエリの暗号化に準同型関数を用いたマスクによる確率的暗号化を用い、DBサーバにマスクを解除させずに、かつ、DBサーバに検索に該当するデータの出現頻度が漏洩しないよう、検索クエリと該当しないデータを検索結果として出力させる。
現実的な性能を有する、検索可能暗号方式ではサーバに預託したデータを検索するたびに、検索結果の出現頻度の漏洩や、検索結果に該当する預託データの安全性の低下を起しており、危険な状況にある。
【解決手段】
検索可能暗号処理ステムは、データを預かるDBサーバと、DBサーバにデータを預託する登録クライアントと、DBサーバにデータを検索させる検索クライアントがネットワーク経由で連携し、登録クライアントは、ハッシュ値と準同型関数を用いたマスクによる確率的暗号化方式を用いて、暗号化したデータをサーバに預託し、検索クライアントは、検索クエリの暗号化に準同型関数を用いたマスクによる確率的暗号化を用い、DBサーバにマスクを解除させずに、かつ、DBサーバに検索に該当するデータの出現頻度が漏洩しないよう、検索クエリと該当しないデータを検索結果として出力させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバ/クライアントモデルにおいて、サーバが、クライアントの要求に従って、暗号化データを復号せずに、預託された暗号化データを検索する、検索処理システムに関する。
【背景技術】
【0002】
情報システムの開発・運用管理費の効率化を目的に、近年、情報システムを自組織が維持するのではなく、他組織が提供する情報システムを利用する、クラウドと呼ばれる運用管理形態が脚光を浴びている。一方、クラウドにおいては、情報システムを管理する組織が、情報システムを利用する組織とは異なるため、情報漏えい等を防止する策や、事故発生後の原因究明、再発防止策等が自組織だけでは立てにくい。そのため、事前に、データの不正流出の予防策として、暗号技術を活用し、データの機密性を確保する必要がある。
【0003】
サーバ/クライアントモデルにおいて、クライアントが、サーバにデータを預託しながら、サーバに対し、預託したデータの情報漏洩を防ぐ技術として、暗号技術を利用した方式が知られている。例えば、非特許文献1や非特許文献2には、クライアントの要求に従って、暗号化データを復号せずに、預託された暗号化データを検索する、検索処理方式が記載されている。この検索処理方式は、平文と暗号文が一対一の単純な対応関係を有する決定的暗号化方式よりも安全な、平文と暗号文が一対mの複雑な対応関係を有する確率的暗号化方式を採用しており、サーバ管理者への情報漏洩を防ぎながら、かつサーバに預託したデータを安全に検索するための技術が開示されている。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Dawn Xiaodong Song, David Wagner, Arian Perrig. “Practical Techniques for Searches on Encrypted Data”. In Proceedings of the 2000 IEEE Symposium on Security and Privacy, pages 44-55(2000).
【非特許文献2】Zhiqiang Yang, Sheng Zhong, Rebecca N. Wright. “Privacy-Preserving Queries on Encrypted Data”. In Proceedings of the 11th European Symposium on Research in Computer Security (Esorics), Volume 4189 of Lecture Notes in Computer Science, pages 476-495(2006).
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1、非特許文献2に記載された技術では、サーバに預託する確率的暗号化で暗号化したデータを復号化するために必要な、運用管理が複雑、クライアント・サーバ共に複雑である。更に、擬似乱数による確率的暗号化は、クライアントが検索をするまでは有効であるが、検索後は、検索に該当した暗号文の擬似乱数のマスクが解除されてしまい、暗号文の安全性が、確率的暗号化から、決定的暗号化に低下してしまう。しかも、クライアントは、検索時の要求(検索クエリ)の暗号化には、安全性の低い決定的暗号化方式を用いているため、頻度分析等の不正攻撃に対しても、脆弱である。
【課題を解決するための手段】
【0006】
前記課題を解決するために、検索可能暗号処理システムは、データを預かるDBサーバと、DBサーバにデータを預託する登録クライアントと、DBサーバにデータを検索させる検索クライアントがネットワーク経由で連携し、登録クライアントは、ハッシュ値と準同型関数の出力値によるマスクを用いた確率的暗号化方式により、暗号化したデータを、安全にサーバに預託し、検索クライアントは、検索クエリの暗号化に、複数の異なる入力値から同一の値を出力する準同型関数を用いたマスクによる確率的暗号化を用い、DBサーバにマスクを解除させずに、かつ、DBサーバに検索に該当するデータの出現頻度が漏洩しないよう、検索クエリと該当しないデータを検索結果として出力させ、検索クライアントは、検索結果を入手後、再暗号化を行い、DBサーバにデータを再預託する。
【発明の効果】
【0007】
クライアントがDBサーバを利用した検索後も、検索に該当したデータが確率的暗号で暗号化されており、安全性が高い。また、複雑な運用管理をクライアントに強いることなく、暗号化されたデータを効率的に復号化できる。
【図面の簡単な説明】
【0008】
【図1】検索可能暗号処理システムの概略を例示する図である。
【図2】登録クライアントの機能の概略を例示する図である。
【図3】検索クライアントの機能の概略を例示する図である。
【図4】DBサーバの機能の概略を例示する図である。
【図5】コンピュータの概略構成を例示する図である。
【図6】登録クライアントの出力部の表示内容を例示する図である。
【図7A】登録クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図7B】登録クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図7C】登録クライアントが作成する秘匿登録データのデータ構成を例示するブロック図である。
【図8】登録クライアントが秘匿登録データをDBサーバへ登録する処理を例示するシーケンス図である。
【図9A】DBサーバのデータベース記憶部に記憶される、データベースの管理状態を例示する図である。
【図9B】DBサーバのデータベース記憶部に記憶される、データベースの検索手順を例示する図である。
【図10】検索クライアントの出力部の表示内容を例示する図である。
【図11A】検索クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図11B】検索クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図11C】検索クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図12】検索クライアントが、秘匿検索クエリを用い、DBサーバ内のデータベースを検索する処理を例示するシーケンス図である。
【図13A】DBサーバが通信部から受信した秘匿検索クエリを復号化した、連結データのデータ構成を例示するブロック図である。
【図13B】DBサーバが、データベース記憶部に記憶した、秘匿登録データのデータ構成を例示するブロック図である。
【図13C】DBサーバが作成する連結データのデータ構成を例示するブロック図である。
【図13D】DBサーバが作成する連結データのデータ構成を例示するブロック図である。
【図14A】検索クライアントが通信部から受信した秘匿登録データのデータ構成を例示するブロック図である。
【図14B】検索クライアントが作成するデータCRのデータ構成を例示するブロック図である。
【図14C】DBサーバが作成する連結データのデータ構成を例示するブロック図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【0010】
図1は、本実施形態の検索処理システムの概略図である。図示するように、検索処理システムは、登録クライアント100(Registration Client)と、検索クライアント200(Search Client)と、DBサーバ300(Data Base Server)とを備え、登録クライアント100とDBサーバ300、検索クライアント200とDBサーバ300は、ネットワーク400を介して相互に情報を送受信できるように構成されている。
【0011】
ここで、本実施形態における登録クライアント100は、秘匿化したデータをDBサーバ300に送信するデータ登録用の送受信装置として機能し、検索クライアント200は、秘匿化した検索クエリをDBサーバ300に送信し、検索結果を受信する、検索用の送受信装置として機能し、DBサーバ300は、秘匿化したデータをデータベースに保管し、またデータベース内のデータを検索するDB管理用の送受信装置として機能する。
【0012】
図2は、登録クライアント100の機能概略図である。図示するように、登録クライアント100は、制御部110と、記憶部120と、入力部101と、出力部102と、通信部103とを備える。
【0013】
記憶部120は、登録データ記憶部130と、秘密鍵記憶部150と、パラメータ記憶部160と、一時情報記憶部180とを備える。
【0014】
登録データ記憶部130には、DBサーバ300に送信するデータである、送信文を特定する情報が記憶される。ここで、本実施形態においては、入力部101を介して、受け付けた平文登録データ131を特定する情報と、DBサーバ300に登録する、秘匿登録データ132を特定する情報と、平文登録データ131と秘匿登録データ132の属性133を特定する情報とが記憶される。
【0015】
秘密鍵記憶部150には、安全性の観点から登録クライアント100が秘密に管理すべき、秘密鍵151を特定する情報が記憶される。ここで、本実施形態においては、暗号化部112に入力する秘密鍵151と、擬似乱数生成部114に入力する秘密鍵151と、圧縮関数部115に入力する秘密鍵151とを特定する情報が記憶される。
【0016】
パラメータ記憶部160には、データの秘匿化に用いる、パラメータを特定する情報が記憶される。ここで、本実施形態においては、準同型関数部116に入力する関数パラメータ161と、基本演算部117に入力する検査パラメータ162とを特定する情報が記憶される。また、安全性の観点から、関数パラメータ161は、登録クライアント100が秘密に管理すべき情報である。
【0017】
一時情報記憶部180には、制御部110での処理で必要となる情報が記憶される。
【0018】
制御部110は、全体処理部111と、暗号化部112と、擬似乱数生成部114と、圧縮関数部115と、準同型関数部116と、基本演算部117とを備える。
【0019】
全体処理部111は、登録クライアント100における全ての処理を制御する。
【0020】
例えば、本実施形態において、全体処理部111は、入力部101を介して入力を受け付けた情報を、登録データ記憶部130に平文登録データ131として記憶する処理を行う。
【0021】
また、本実施形態において、全体処理部111は、平文登録データ131を出力部102に表示する処理を行う。
【0022】
また、本実施形態において、全体処理部111は、登録データ記憶部130に記憶した平文登録データ131を読み込み、それぞれ、暗号化部112と、擬似乱数生成部114と、圧縮関数部115と、準同型関数部116と、基本演算部117とに入力し、出力されたデータを、登録データ記憶部130に秘匿登録データ132として記憶する処理を行う。
【0023】
また、本実施形態において、全体処理部111は、属性133と秘匿登録データ132を、通信部103を介してDBサーバ300に送信する処理を行う。
【0024】
さらに、本実施形態において、全体処理部111は、DBサーバ300より通信部103を介して受信した属性133と秘匿登録データ132を、一時情報記憶部180に記憶する処理と出力部102に表示する処理を行う。
【0025】
暗号化部112は、入力されたデータを暗号化したデータを出力する処理を行う。
【0026】
例えば、本実施形態においては、全体処理部111からデータと秘密鍵151が入力され、秘密鍵151を用い、暗号化したデータを出力する処理を行う。
【0027】
例えば、標準的な暗号化アルゴリズムの実装により、暗号化部112は実現される。
【0028】
擬似乱数生成部114は、擬似乱数を出力する処理を行う。
【0029】
例えば、擬似乱数生成部114は、温度、時間、電力量、等の物理現象から、乱数を出力する。
【0030】
本実施形態においては、擬似乱数生成部114は、全体処理部111から入力された秘密鍵151を用い、擬似乱数を出力する。また、秘密鍵151のデータ値は新しいデータ値に更新され、再び、全体処理部111により秘密鍵記憶部150に記憶される。
【0031】
例えば、標準的な擬似乱数生成アルゴリズムの実装により、擬似乱数生成部114は実現される。
【0032】
圧縮関数部115は、入力されたデータを圧縮したデータを出力する処理を行う。
【0033】
例えば、本実施形態においては、全体処理部111から入力されたデータを固定長(hビット)の別のデータに変換し、出力する処理を行う。
【0034】
例えば、標準的な暗号ハッシュ関数アルゴリズムの実装により、任意長の入力データを固定長のデータへ変換する圧縮関数部115が実現できる。
【0035】
準同型関数部116は、入力されたデータに対し、関数計算の出力結果をデータとして出力する処理を行う。
【0036】
例えば、本実施形態においては、全体処理部111から入力されたデータを、準同型の性質を有する関数の入力値とみなし、全体処理部111から入力された関数パラメータ161を用いて、関数計算の出力値をバイナリ列で表現した固定長(fビット)のデータに変換する処理を行う。
【0037】
ただし、準同型関数とは、関数Fと、入力変数x、入力変数yに対し、
F(x・y)=F(x)?F(y) (1)
が成り立つ関数を指す。ただし、・と?は、演算記号を表わし、加算用の演算記号+、乗算用の演算記号*、ビット毎の排他的論理和であるXOR(eXclusive OR)演算用の演算記号xor等が入る。
【0038】
本実施形態では、・と?にXOR演算記号xorが入る場合、即ち式(2)が成り立つ場合を示す。
F(x xor y)=F(x)xor F(y) (2)
ただし、準同型関数が式(2)以外の演算記号で成り立つ時でも、本実施形態は同様に実施できる。
【0039】
なお、準同型関数を実現するアルゴリズムの実装により、準同型関数部116は実現される。
【0040】
基本演算部117は、加算、減算、比較算等の基本的な算術演算に関する処理を行う。
【0041】
例えば、本実施形態においては、基本演算部117は、全体処理部111から入力された2つのデータのビット毎の排他的論理和であるXOR演算や、比較演算の等号成立または不成立の検証結果を、データとして出力する処理を行う。
【0042】
以上に示した登録クライアント100は、例えば、図5(コンピュータの概略図)に示すような、CPU(Central Processing Unit)501と、メモリ502と、HDD(Hard Disk Drive)等の外部記憶装置503と、CD(Compact Disk)やDVD(Digital Versatile Disk)等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)509と、を備えた一般的なコンピュータ500で実現できる。
【0043】
例えば、記憶部120は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部110と制御部110に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部101は、CPU501が入力装置506を利用することで実現可能であり、出力部102は、CPU501が出力装置505を利用することで実現可能であり、通信部103は、CPU501が通信装置504を利用することで実現可能である。
【0044】
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワークから、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して、記憶媒体508から、あるいは通信装置504を介してネットワークから、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
【0045】
図3は、検索クライアント200の機能概略図である。図示するように、検索クライアント200は、制御部210と、記憶部220と、入力部201と、出力部202と、通信部203とを備える。
【0046】
記憶部220は、検索クエリ記憶部230と、秘密鍵記憶部250と、パラメータ記憶部260と、受信データ記憶部270と、一時情報記憶部280とを備える。
【0047】
検索クエリ記憶部230には、DBサーバ300に送信するデータである、送信文を特定する情報が記憶される。ここで、本実施形態においては、検索クライアント200が、入力部201を介して受け付けた平文検索クエリ231を特定する情報と、DBサーバ300に送信する秘匿検索クエリ232と、平文検索クエリ231と秘匿検索クエリ232の属性233を特定する情報とが記憶される。
【0048】
秘密鍵記憶部250には、安全性の観点から検索クライアント200が秘密に管理すべき、秘密鍵251を特定する情報が記憶される。ここで、本実施形態においては、暗号化部212に入力する秘密鍵251と、復号化部213に入力する秘密鍵251と、擬似乱数生成部214に入力する秘密鍵251と、圧縮関数部215に入力する秘密鍵251とを特定する情報が記憶される。
【0049】
パラメータ記憶部260には、データの秘匿化と秘匿化解除とに用いるパラメータを特定する情報が記憶される。ここで、本実施形態においては、準同型関数部216に入力する関数パラメータ261を特定する情報と、基本演算部217に入力する検査パラメータ262を特定する情報とが記憶される。また、安全性の観点から、関数パラメータ261は、検索クライアント200が秘密に管理すべき情報である。
【0050】
受信データ記憶部270には、通信部203を介して受信したデータを特定する情報が記憶される。ここで、本実施形態においては、受信データ記憶部270には、通信部203を介してDBサーバ300から受信したデータを特定する情報が、秘匿登録データ271として記憶される。また、秘匿登録データ271から、秘匿化を解除したデータを、平文登録データ272として受信データ記憶部270に記憶する処理を行う。
【0051】
一時情報記憶部280には、制御部210での処理で必要となる情報が記憶される。
【0052】
制御部210は、全体処理部211と、暗号化部212と、復号化部213と、擬似乱数生成部214と、圧縮関数部215と、準同型関数部216と、基本演算部217とを備える。
【0053】
全体処理部211は、検索クライアント200における全ての処理を制御する。
【0054】
例えば、本実施形態において、全体処理部211は、入力部201を介して入力を受け付けた情報を、検索クエリ記憶部230に平文検索クエリ231として記憶する処理を行う。
【0055】
また、本実施形態において、全体処理部211は、平文検索クエリ231を出力部202に表示する処理を行う。
【0056】
また、本実施形態において、全体処理部211は、検索クエリ記憶部230に記憶した平文検索クエリ231を読み込み、それぞれ、暗号化部212と、擬似乱数生成部214と、圧縮関数部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを秘匿検索クエリ232として検索クエリ記憶部230に記憶する処理を行う。
【0057】
また、本実施形態において、全体処理部211は、通信部203を介して、属性233と秘匿検索クエリ232をDBサーバ300に送信する処理を行う。
【0058】
また、本実施形態において、全体処理部211は、通信部203を介して、秘匿登録データ271をDBサーバ300から受信する処理を行う。
【0059】
また、本実施形態において、全体処理部211は、通信部203を介して、受信した秘匿登録データ271を受信データ記憶部270に秘匿登録データ271として記憶する処理を行う。
【0060】
また、本実施形態において、全体処理部211は、受信データ記憶部270に記憶した秘匿登録データ271を読み込み、それぞれ、復号化部213と、圧縮関数部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを平文登録データ272として受信データ記憶部270に記憶する処理を行う。
【0061】
また、本実施形態において、全体処理部211は、平文登録データ272を出力部202に表示する処理を行う。
【0062】
さらに、全体処理部211は、DBサーバ300より、通信部203を介して受信したデータを、一時情報記憶部280に記憶する処理と、出力部202に表示する処理を行う。
【0063】
暗号化部212は、入力されたデータを暗号化したデータを出力する処理を行う。
【0064】
例えば、本実施形態においては、全体処理部211からデータと秘密鍵251が入力され、秘密鍵251を用い、暗号化したデータを出力する処理を行う。
【0065】
復号化部213は、入力されたデータを復号化したデータを出力する処理を行う。
【0066】
例えば、本実施形態においては、全体処理部211からデータと秘密鍵251が入力され、秘密鍵251を用い、復号化したデータを出力する処理を行う。
【0067】
擬似乱数生成部114は、擬似乱数を出力する処理を行う。
【0068】
例えば、擬似乱数生成部214は、温度、時間、電力量、等の物理現象から、乱数を出力する。
【0069】
本実施形態においては、擬似乱数生成部214は、全体処理部211から入力された秘密鍵251を用い、擬似乱数を出力する。また、秘密鍵251のデータ値は新しいデータ値に更新され、再び、全体処理部211により秘密鍵記憶部250に記憶される。
【0070】
例えば、本実施形態においては、全体処理部211から入力された秘密鍵251を用い、擬似乱数を出力する処理を行う。
【0071】
圧縮関数部215は、入力されたデータを圧縮したデータを出力する処理を行う。
【0072】
例えば、本実施形態においては、全体処理部211から入力されたデータを固定長(hビット)の別のデータに変換し、出力する処理を行う。
【0073】
準同型関数部216は、入力されたデータに対し、関数計算の出力結果をデータとして出力する処理を行う。
【0074】
例えば、本実施形態においては、全体処理部211から入力されたデータを準同型の性質を有する関数の入力値とみなし、全体処理部211から入力された関数パラメータ261を用いて、関数計算の出力値をバイナリ列で表現した固定長(fビット)のデータに変換する処理を行う。
【0075】
ただし、準同型関数は、関数Fと、入力変数x、入力変数yに対し、式(2)が成り立つ場合を示すが、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、本実施形態は同様に実施できる。
【0076】
基本演算部217は、加算、減算、比較算等の基本的な算術演算に関する処理を行う。
【0077】
例えば、本実施形態においては、基本演算部217は、全体処理部211から入力された2つのデータのバイナリ値(2進数)の減算結果を、データとして出力する処理を行う。
【0078】
以上に示した検索クライアント200は、例えば、図5(コンピュータの概略図)に示すような、CPU501と、メモリ502と、HDD等の外部記憶装置503と、CDやDVD等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)と、を備えた一般的なコンピュータで実現できる。
【0079】
例えば、記憶部220は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部210と制御部210に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部201は、CPU501が入力装置506を利用することで実現可能であり、出力部202は、CPU501が出力装置505を利用することで実現可能であり、通信部203は、CPU501が通信装置504を利用することで実現可能である。
【0080】
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワークから、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して、記憶媒体508から、あるいは通信装置504を介してネットワークから、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
【0081】
図4は、DBサーバ300の機能概略図である。図示するように、DBサーバ300は、制御部310と、記憶部320と、入力部301と、出力部302と、通信部303と、を備える。
【0082】
記憶部320は、パラメータ記憶部360と、秘密鍵記憶部350と、データベース記憶部340と、検索クエリ記憶部330と、一時情報記憶部380とを備える。
【0083】
パラメータ記憶部360には、秘匿検索クエリ332とデータベース341の関係の検査に用いる、パラメータを特定する情報が記憶される。ここで、本実施形態においては、準同型関数部316に入力する関数パラメータ361を特定する情報が記憶される。また、安全性の観点から、関数パラメータ361はDBサーバ300が秘密に管理すべき情報である。
【0084】
秘密鍵記憶部350には、安全性の観点からDBサーバ300が秘密に管理すべき、秘密鍵351を特定する情報が記憶される。ここで、本実施形態においては、復号化部313に入力する秘密鍵351とを特定する情報が記憶される。
【0085】
データベース記憶部340には、通信部303を介して受信した登録データを特定する情報が記憶される。ここで、本実施形態においては、通信部303を介して登録クライアント100から受信した情報を、データベース記憶部340にデータベース341の構成情報として記憶する処理を行う。
【0086】
検索クエリ記憶部330には、通信部303を介して受信した検索クエリを特定する情報が記憶される。ここで、本実施形態においては、通信部303を介して検索クライアント200から受信した情報を、検索クエリ記憶部330に秘匿検索クエリ332として記憶する処理を行う。
【0087】
一時情報記憶部380には、制御部310での処理で必要となる情報が記憶される。
【0088】
制御部310は、全体処理部311と、復号化部313と、圧縮関数部315と、準同型関数部316と、基本演算部317と、を備える。
【0089】
全体処理部311は、DBサーバ300における全ての処理を制御する。
【0090】
例えば、本実施形態において、全体処理部311は、通信部303を介して秘匿登録データ131を、登録クライアント100から受信する処理を行う。
【0091】
また、本実施形態において、全体処理部311は、通信部303を介して受信した秘匿登録データ131を、データベース記憶部340にデータベース341の構成情報として記憶する処理を行う。
【0092】
また、本実施形態において、全体処理部311は、通信部303を介して秘匿検索クエリ332を、検索クライアント200から受信する処理を行う。
【0093】
また、本実施形態において、全体処理部311は、通信部303を介して受信した秘匿検索クエリ332を、検索クエリ記憶部330に記憶する処理を行う。
【0094】
また、本実施形態において、全体処理部311は、検索クエリ記憶部330に記憶した秘匿検索クエリ332を読み込み、それぞれ、復号化部313と、圧縮関数部315と、準同型関数部316と、基本演算部317とに入力し、出力されたデータを、通信部303を介して、検索クライアント200に送信する処理を行う。
【0095】
さらに、全体処理部311は、検索クライアント200または登録クライアント100より、通信部303を介して受信したデータに関する情報を、一時情報記憶部380に記憶する処理と、出力部302に表示する処理を行う。
【0096】
復号化部313は、入力されたデータを復号化したデータを出力する処理を行う。
【0097】
例えば、本実施形態においては、全体処理部311からデータと秘密鍵351が入力され、秘密鍵351を用い、復号化したデータを出力する処理を行う。
【0098】
圧縮関数部315は、入力されたデータを圧縮したデータを出力する処理を行う。
【0099】
例えば、本実施形態においては、全体処理部311から入力されたデータを固定長(hビット)の別のデータに変換し、出力する処理を行う。
【0100】
準同型関数部316は、入力されたデータに対し、関数計算の出力結果をデータとして出力する処理を行う。
【0101】
例えば、本実施形態においては、全体処理部311から入力されたデータを、準同型の性質を有する関数の入力値とみなし、全体処理部311から入力された関数パラメータ361を用いて、関数計算の出力値をバイナリ列で表現したデータを固定長(fビット)のデータに変換する処理を行う。
【0102】
ただし、準同型関数は、関数Fと、入力変数x、入力変数yに対し、式(2)が成り立つ場合を示すが、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、本実施形態は同様に実施できる。
【0103】
基本演算部317は、加算、減算、比較算等の基本的な算術演算に関する処理を行う。
【0104】
例えば、本実施形態においては、基本演算部317は、全体処理部311から入力された2つのデータのバイナリ値(2進数)の減算結果をデータとして出力する処理を行う。
【0105】
また、本実施形態においては、基本演算部317は、全体処理部311から入力された2つのデータのバイナリ値(2進数)の比較結果をデータとして出力する処理を行う。
【0106】
以上に示したDBサーバ300は、例えば、図5(コンピュータの概略図)に示すような、CPU501と、メモリ502と、HDD等の外部記憶装置503と、CDやDVD等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)とを備えた一般的なコンピュータで実現できる。
【0107】
例えば、記憶部120、220、320は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部110、210、310と制御部110、210、310に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部101、201、301は、CPU501が入力装置506を利用することで実現可能であり、出力部102、202、302は、CPU501が出力装置505を利用することで実現可能であり、通信部103、203、303は、CPU501が通信装置504を利用することで実現可能である。
【0108】
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワークから、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して記憶媒体508から、あるいは通信装置504を介してネットワークから、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
【0109】
図6は、登録クライアント100の出力部102の表示内容600を例示した図である。図示するように、登録クライアント100は、管理方法の選択部610と、管理フォーム部620と、実行と表示されたボタンを指す実行ボタン650と、クリアと表示されたボタンを指すクリアボタン660とを備える。
【0110】
管理方法の選択部610は、データの登録と、データの更新と、データの削除となどの、データの管理に関する項目から構成される。例えば、本実施形態では、データ追加と、データ更新と、データ削除とを特定するラジオボタンを備える。また、入力部101を介し、各項目が選択可能である。
【0111】
管理フォーム部620は、管理方法の選択部610で特定された項目である、データの登録と、データの更新と、またはデータの削除とに応じて扱う、データの種類を示す属性621と、データの詳細内容を入力する入力フォーム622から構成される。例えば、本実施形態では、番号と、氏名と、Eメールと、所属部署とを指す属性621と、番号の入力用と、氏名の入力用と、Eメールの入力用と、所属部署の入力用とに設計された入力フォーム622を備える。各入力フォーム622に入力された情報は、記憶部120の一時情報記憶部180に記憶される。
【0112】
クリアボタン660は、入力部101を介し、選択可能である。例えば、本実施形態では、クリアボタン660が選択されると、各入力フォーム622に入力された情報を消去する。
【0113】
実行ボタン650は、入力部101を介し、選択可能である。例えば、本実施形態では、実行ボタン650が選択されると、管理方法の選択部610で特定された項目と各フォームに入力された情報を基に、秘匿登録データ131を作成し、DBサーバ300へ送信する処理を行う。以下では、管理方法の選択部610で、特定された項目がデータ登録である場合を説明するが、データ更新と、データ削除とが特定された場合も、同様の処理を行う。
【0114】
管理方法の選択部610で、特定された項目がデータ登録である場合に、実行ボタン650が選択された場合に、実施する秘匿登録データ131の処理手順をS701からS715に示す。
【0115】
図7Aは、本実施形態において、登録クライアント100が、出力部102に出力した入力フォーム622に入力された情報を基に作成する、連結データ703のデータ構成を示すブロック図の例である。
【0116】
また、図7Bは、本実施形態において、登録クライアント100が、秘匿登録データ712を作成する過程において作成する、連結データ704のデータ構成を示すブロック図の例である。
【0117】
また、図7Cは、本実施形態において、登録クライアント100が作成する、秘匿登録データ712のデータ構成を示すブロック図である。
【0118】
以下では、図7Aと、図7Bと、図7Cとを用い、入力フォーム622に入力されたデータ値によらず、登録クライアント100が、毎回、データ値の異なる秘匿登録データ712を作成する処理手順を説明する。
【0119】
登録クライアント100の全体処理部111は、入力フォーム622に入力された情報を平文登録データ701として、記憶部120の登録データ記憶部130に記憶する処理を行う。このとき、平文登録データ701は、登録クライアント100の一時情報記憶部180にmビットのバイナリ表現で構成されたデータとして記憶される。
【0120】
登録クライアント100の全体処理部111は、パラメータ記憶部160に記憶された検査パラメータ162を読み込み、誤り検査データ702として出力する処理を行う。このとき、出力された誤り検査データ702は、登録クライアント100の一時情報記憶部180に、eビットのデータとして記憶される。
【0121】
登録クライアント100の全体処理部111は、平文登録データ701と誤り検査データ702を連結する処理を行う (S701) 。
【0122】
連結処理では、平文登録データ701の各所に、分割した誤り検査データ702を挿入してもよい。例えば、平文登録データ701の初め(ヘッダ)と終わり(フッタ)に、誤り検査データ702を挿入してもよい。また、誤り検査データ702に平文登録データ701を乗算で掛け合わせるなど、混合させてもよい。
【0123】
以下では、図7Aに示すように、登録クライアント100において、全体処理部111が入力した平文登録データ701の末尾に、誤り検査データ702を連結し、連結データ703を一つのデータとみなした場合を扱う。このとき、登録クライアント100の一時情報記憶部180には、連結データ703は(m+e)ビットのデータとして記憶される。ただし、連結処理は、この場合に限定されるわけではなく、他の連結処理でも、同様に実施できる。
【0124】
次に、図7Bに示すように、登録クライアント100が作成する連結データ704のデータ構成を説明する。
【0125】
登録クライアント100の全体処理部111は、平文登録データ701と誤り検査データ702を連結したデータである連結データ703と、秘密鍵記憶部150に記憶された秘密鍵151とを暗号化部112へ入力する処理を行う(S702)。
【0126】
登録クライアント100の暗号化部112は、入力されたデータを暗号化し、データCR705を出力する処理を行う(S703)。
【0127】
登録クライアント100において、全体処理部111が入力した連結データ703を暗号化部112が暗号化し、出力したデータをデータCR705とみなす。このとき、データCR705は、登録クライアント100の一時情報記憶部180には、cビットのデータとして記憶される(S704)。
【0128】
なお、データCR705は、連結データ703に依存、即ち、入力フォーム622の入力情報に依存して構わない。例えば、同一のデータ値を持つ連結データ703からは、同一のデータCR705を出力してもよい。
【0129】
登録クライアント100の全体処理部111は、秘密鍵記憶部150から秘密鍵151を読み出し、秘密鍵151を、擬似乱数生成部114に入力する処理を行う(S705)。
【0130】
登録クライアント100の擬似乱数生成部114は、入力された秘密鍵151を用い、擬似乱数を出力する処理を行う。このとき、擬似乱数は、登録クライアント100の一時情報記憶部180には、rビットのデータPR706として記憶される(S706)。
【0131】
擬似乱数生成部114が出力する擬似乱数は、連結データ703、データCR705に依存しない。従って、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータPR706を作成できる。
【0132】
登録クライアント100の全体処理部111は、秘密鍵記憶部150から秘密鍵151を読み出し、秘密鍵151と乱数生成部から出力されたデータPR706を連結したデータを、圧縮関数部115に入力する処理を行う(S707)。
【0133】
登録クライアント100の圧縮関数部115は、入力されたデータを変換し、ハッシュ値を出力する処理を行う。このとき、ハッシュ値は、登録クライアント100の一時情報記憶部180には、hビットのデータHR707として記憶される(S708)。
【0134】
データHR707は、圧縮関数の性質から、乱数とみなせる。データHR707は、連結データ703、データCR705に依存しない。従って、データPR706同様、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータHR707を作成できる。
【0135】
登録クライアント100の全体処理部111は、データHR707と、パラメータ記憶部160に記憶された関数パラメータ161とを準同型関数部116に入力する(S709)。
【0136】
登録クライアント100の準同型関数部116は、入力されたデータを準同型の性質を有する関数の入力値とみなし、関数パラメータ161を用いて、関数計算の出力値をバイナリ列で表現した準同型関数値を出力する処理を行う。このとき、準同型関数値は、登録クライアント100の一時情報記憶部180には、fビットのデータFR708として記憶される(S710)。
【0137】
なお、準同型関数をfuncとした場合、その入力値であるデータHR707、出力値であるデータFR708には、式(3)が成り立つ(ただし、関数パラメータ161の記述は省略)。
FR = func(HR) (3)
データFR708は、準同型関数部116が処理する準同型関数の性質から、入力されたデータ値が乱数の場合、出力も乱数とみなせる。また、データFR708は、連結データ703と、データCR705に依存しない。従って、データHR707同様、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータFR707を作成できる。
【0138】
登録クライアント100の全体処理部111は、準同型関数部116から出力されたデータFR708を、圧縮関数部115へ入力する処理を行う(S711)。
【0139】
登録クライアント100の圧縮関数部115は、入力されたデータを変換し、ハッシュ値を出力する処理を行う。このとき、ハッシュ値は、登録クライアント100の一時情報記憶部180には、gビットのデータGR709として記憶される(S712)。
【0140】
データGR709は、圧縮関数の性質から、乱数である。従って、データFR707と、データHR707同様、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータGR709を作成できる。また、圧縮関数の性質から、逆像は計算困難であるため、データGR709をDBサーバ300に登録しても、データの安全性に影響を与えない。
【0141】
図7Cは、本実施形態において、登録クライアント100が作成する秘匿登録データ712のデータ構成を示すブロック図である。
【0142】
登録クライアント100の全体処理部111は、データHR707とデータCR705とを基本演算部117へ入力する処理を行う(S713)。
【0143】
登録クライアント100の基本演算部117は、入力されたデータHR707とデータCR705とのビット毎の排他的論理和であるXOR算を計算し、その計算結果を、データDR711として出力する処理を行う(S714)。
【0144】
S714のxor算により、データHR707とデータCR705とデータDR711とは式(4)を満たす。
DR =HR xor CR (4)
S714の計算は、連結データ703やデータCR705に依存しない、乱数であるデータHR707を用いている。従って、連結データ703とデータCR705の関係が一意に定まる場合でも、毎回、データ値が異なる、データHR707を用いれば、異なるデータ値のデータDR711が得られる。
【0145】
登録クライアント100の全体処理部111は、データPR706とデータDR711とデータGR709とを連結し、作成したデータを、秘匿登録データ712として登録データ記憶部130へ記憶する処理を行う(S715)。
【0146】
秘匿登録データ712は、連結データ703やデータCR705に依存しない乱数であるデータPR706、データDR711、データGR709を用いており、毎回、異なるデータ値が得られる。その結果、データPR706とデータDR711とデータGR709とを連結した秘匿登録データ712は、連結データ703とデータCR705とは独立している。即ち、入力フォーム622の入力情報に依存せず、毎回、データ値の異なる秘匿登録データ712を作成できる。
【0147】
なお、上記の処理手順は、固定されたものではなく、処理手順を変更してもよい。例えば、S713とS714の処理手順を変更し、S713でデータPR706とデータHR707とデータGR709を連結してから、S714でデータHR707とデータCR705とのXOR算を計算してもよい。同様に、他の処理手順を変更してもよい。
【0148】
また、上記の各処理を担当する制御部110は固定されたものではなく、担当する制御部110を変更してもよい。例えば、S711でデータFR708を、圧縮関数部115ではなく、暗号化部112にデータFR708を入力してもよく、S712では、暗号化部112から出力されたデータを、データGR709として一時情報記憶部180に記憶してもよい。
【0149】
また、秘匿登録データ712のデータ構成を変更し、それに併せて処理を変更してもよい。例えば、データPR706に関する情報は、記憶部120に記憶し、秘匿登録データ712に含まないように構成しても構わない。この時、S706が出力するデータをデータHR706とみなし、S707とS708に係る処理は削除可能である。また、この時、S715で登録クライアント100の全体処理部111は、秘匿登録データ712として、データDR711とデータGR709とを連結すればよい。
【0150】
図8は、本実施形態において、ネットワーク400を経由し、登録クライアント100が、秘匿登録データ132をDBサーバ300へ登録する処理を示すシーケンス図である。
【0151】
登録クライアント100は、入力部101を経由し、ユーザからフォームへ入力された情報を一時情報記憶部180に記憶する処理を行う(S801)。
【0152】
登録クライアント100は、入力部101を経由し、ユーザにより実行ボタン650が選択されたことを検知し、フォームに入力された情報を、平文登録データ131として記憶部120へ記憶する処理を行う(S802)。
【0153】
登録クライアント100は、制御部110により秘匿登録データ132を作成し、記憶部120へ記憶する処理を行う(S803)。
【0154】
登録クライアント100は、通信部103からネットワーク400を経由し、属性133と秘匿登録データ132を、DBサーバ300へ送信する処理を行う(S804)。
【0155】
DBサーバ300は、通信部303からネットワーク400を経由し、登録クライアント100が送信した属性133と秘匿登録データ132を受信する処理を行う(S805)。
【0156】
DBサーバ300は、制御部310により受信した属性133を用い、秘匿登録データ132を、データベース341の構成情報として記憶部320へ記憶する処理を行う(S806)。
【0157】
DBサーバ300は、秘匿登録データ132の登録処理の成否を、通信部303からネットワーク400を経由し、登録サーバへ送信する処理を行う(S807)。
【0158】
登録クライアント100は、通信部103からネットワーク400を経由し、DBサーバ300が送信した秘匿登録データ132の登録処理の成否を受信する処理を行う(S808)。
【0159】
登録クライアント100は、出力部102を経由し、ユーザに、登録処理の成否を含む登録情報について表示する処理を行う(S809)。
【0160】
図9Aは、DBサーバ300における、記憶部320のデータベース記憶部340に記憶されるデータベース341の管理状態を例示した構成図である。
【0161】
例えば、本実施形態において、DBサーバ300における、データベース341は、番号と、氏名と、Eメールとなどを示す属性901と、属性901に関連付けられた秘匿登録データ902(d0、d1、d2、・・・)とから構成されている。
【0162】
図10は、検索クライアント200の出力部202の表示内容1000を例示した図である。図示するように、検索クライアント200は、検索項目部1010と、検索フォーム部1020と、検索と表示されたボタンを指す検索ボタン1050と、クリアと表示されたボタンを指すクリアボタン1060とを備える。
【0163】
検索方法の選択部は、検索対象のデータの種類に関する項目から構成される。例えば、本実施形態では、番号と、氏名と、Eメールと、所属部署とを特定するラジオボタンを備える。また、入力部201を介し、各項目が複数選択可能である。
【0164】
検索フォーム部1020は、検索方法の選択部で特定された属性1011である、番号と、氏名と、Eメールと、所属部署との詳細内容を入力する入力フォーム1022から構成される。例えば、本実施形態では、番号の入力用と、氏名の入力用と、Eメールの入力用と、所属部署の入力用とに設計された入力フォーム1022を複数備える。各入力フォーム1022に入力された情報は、記憶部220の一時情報記憶部280に記憶される。
【0165】
クリアボタン1060は、入力部201を介し、選択可能である。例えば、本実施形態では、クリアボタン1060が選択されると、各入力フォーム1022の入力情報を消去する。
【0166】
検索ボタン1050は、入力部201を介し、選択可能である。例えば、本実施形態では、検索ボタン1050が選択されると、検索方法の選択部で特定された属性1011と入力フォーム1022に入力された情報を基に、秘匿検索クエリ232を作成し、DBサーバ300へ送信する処理を行う。以下では、検索方法の選択部で、ただ一つの属性1011(例えば氏名)が選択された場合を示すが、複数の入力フォーム1022に情報が入力された場合と、複数の属性1011が選択された場合も、同様の処理で実施できる。
【0167】
検索方法の選択部で、特定された属性1011が、ただ一つである場合に、検索ボタン1050が選択された場合の処理手順は、S1101〜S1112に従う。
【0168】
図11Aは、本実施形態において、検索クライアント200が、出力部202に出力した入力フォーム1022に入力された情報を基に作成する連結データ1103のデータ構成を示すブロック図の例である。
【0169】
また、図11Bは、本実施形態において、検索クライアント200が、秘匿検索クエリ1111を作成する過程において作成する連結データ1104のデータ構成を示すブロック図の例である。
【0170】
また、図11Cは、本実施形態において、検索クライアント200が作成する連結データ1108のデータ構成を示すブロック図である。
以下では、図11Aと、図11Bと、図11Cとを用い、入力フォーム1022に入力されたデータ値によらず、検索クライアント200が、毎回、データ値の異なる秘匿検索クエリ1111を作成する処理手順を説明する。
【0171】
検索クライアント200の全体処理部211は、入力フォーム1022に入力された情報を、平文検索クエリ1101として記憶部220の検索クエリ記憶部230に記憶する処理を行う。このとき、平文検索クエリ1101は、検索クライアント200の一時情報記憶部280にmビットのバイナリ表現で構成されたデータとして記憶される。
【0172】
検索クライアント200の全体処理部211は、パラメータ記憶部260に記憶された検査パラメータ262を読み込み、誤り検査データ1102として出力する処理を行う。このとき、出力された誤り検査データ1102は、検索クライアント200の一時情報記憶部280に、eビットのデータとして記憶される。
【0173】
検索クライアント200の全体処理部211は、平文検索クエリ1101と誤り検査データ1102を連結する処理を行う(S1101)。
【0174】
連結処理では、平文検索クエリ1101の各所に、分割した誤り検査データ1102を挿入してもよい。例えば、平文検索クエリ1101の初め(ヘッダ)と終わり(フッタ)に、誤り検査データ1102を挿入してもよい。また、誤り検査データ1102に平文検索クエリ1101を乗算で掛け合わせるなど、混合させてもよい。
【0175】
以下では、図11Aに示すように、検索クライアント200において、全体処理部211が入力した平文検索クエリの末尾に誤り検査データ1102を連結し、連結データ1103を一つのデータとみなした場合を扱う。このとき、検索クライアント200の一時情報記憶部280には、連結データ1103は(m+e)ビットのデータとして記憶される。ただし、連結処理は、この場合に限定されるわけではなく、他の連結処理でも、同様に実施できる。
【0176】
次に、図11Bに示すように、検索クライアント200が作成する連結データ1104のデータ構成を説明する。
【0177】
検索クライアント200の全体処理部211は、平文検索クエリ1101と誤り検査データ1102を連結したデータである連結データ1103と、秘密鍵記憶部250に記憶された秘密鍵251とを暗号化部212へ入力する処理を行う(S1102)。
【0178】
検索クライアント200の暗号化部212は、入力されたデータを暗号化し、データCS1105を出力する処理を行う(S1103)。
【0179】
検索クライアント200において、全体処理部211が入力した連結データ1103を暗号化部212が暗号化し、出力したデータをデータCS1105とみなして扱えばよい。このとき、データCS1105は、検索クライアント200の一時情報記憶部280に、cビットのデータとして記憶される(S1104)。
【0180】
なお、データCS1105は、連結データ1103に依存、即ち、入力フォーム1022の入力情報に依存してもよい。例えば、同一のデータ値を持つ連結データ1103からは、同一のデータCS1105を出力してもよい。
【0181】
検索クライアント200の全体処理部211は、秘密鍵記憶部250から秘密鍵251を読み出し、秘密鍵251を擬似乱数生成部214に入力する処理を行う(S1105)。
【0182】
検索クライアント200の擬似乱数生成部214は、入力された秘密鍵251を用い、擬似乱数を出力する処理を行う。このとき、擬似乱数は、検索クライアント200の一時情報記憶部280に、rビットのデータPS1106として記憶される(S1106)。
【0183】
擬似乱数生成部214が出力する擬似乱数は、連結データ1103、データCS1105に依存しない。従って、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なる、データPS1106を作成できる。
【0184】
データPS1106は、擬似乱数生成関数の性質から、乱数を出力する。また、データPS1106は、連結データ703、データCS705に依存しない。従って、データPS1106は、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なるデータFS1107を作成できる。
【0185】
検索クライアント200の全体処理部211は、データPS1106と、パラメータ記憶部260に記憶された関数パラメータ261とを準同型関数部216に入力する(S1107)。
【0186】
検索クライアント200の準同型関数部216は、入力されたデータを、準同型の性質を有する関数の入力値とみなし、関数パラメータ261を用いて、関数計算の出力値をバイナリ列で表現した準同型関数値を出力する処理を行う。このとき、準同型関数値は、検索クライアント200の一時情報記憶部280に、fビットのデータFS1107として記憶される(S1108)。
【0187】
なお、準同型関数をfuncとした場合、その入力値であるデータPS、出力値であるデータFSには、式(5)が成り立つ(ただし、関数パラメータ261の記述は省略)。
FS = func(PS) (5)
データFS1107は、準同型関数部216が処理する準同型関数の性質から、入力されたデータ値が一様に分布する乱数の場合、出力も同様に一様分布する。また、データFS1107は、連結データ1103とデータCS1104に依存しない。従って、データPS1106同様、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なるデータFS1107を作成できる。
【0188】
図11Cは、本実施形態において、検索クライアント200が作成する連結データ1108のデータ構成を示すブロック図である。
【0189】
検索クライアント200の全体処理部211は、データPS1106とデータFS1107とを連結し、作成した連結データ1104と、データCS1105とを基本演算部217へ入力する処理を行う(S1109)。
【0190】
検索クライアント200の基本演算部217は、入力された連結データ1104と、データCS1105とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータDS1110として出力する処理を行う(S1110)。
【0191】
S1110の計算は、連結データ1103やデータCS1105に依存しない、乱数であるデータPS1106を用いている。従って、連結データ1103とデータCS1105の関係が一意に定まる場合でも、毎回、データ値が異なる、データPS1106を用いれば、異なるデータ値のデータDS1110が得られる。
【0192】
検索クライアント200の全体処理部211は、データDS1110とデータFS1107とを連結したデータである連結データ1108と、秘密鍵記憶部250に記憶された秘密鍵251とを暗号化部212へ入力する処理を行う(S1111)。
【0193】
検索クライアント200の暗号化部212は、入力されたデータを暗号化し、暗号化したデータを、全体処理部211は、秘匿検索クエリ1111として検索クエリ記憶部230へ記憶する処理を行う(S1112)。
【0194】
秘匿検索クエリ1111は、暗号化部に入力された連結データが乱数とみなせるため、出力された秘匿検索クエリ1111も、同様に乱数とみなせる。そのため、検索クライアント200が、例え不正傍受可能なネットワーク400経由で、DBサーバ300に送信しても、秘匿検索クエリ1111は安全である。
【0195】
秘匿検索クエリ1111は、連結データ1103やデータCS1105に依存しない、乱数であるデータPS1106とデータFS1107とを用いており、毎回、異なるデータ値が得られる。その結果、データDS1106とデータFS1107とを連結した秘匿検索クエリ1111は、連結データ1103とデータCR1105とは独立している。即ち、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なる秘匿検索クエリ1111を作成できる。
【0196】
なお、上記の処理手順は、固定されたものではなく、処理手順を変更してもよい。例えば、S1109とS1110の処理手順を変更し、S1109でデータCS1105と、データPS1106と、のXOR算を計算してから、S1110でデータFS1107とデータDS1110とを連結してもよい。同様に、他の処理手順を変更してもよい。
【0197】
また、上記の各処理を担当する制御部210は固定されたものではなく、担当する制御部210を変更してもよい。例えば、S1105で、擬似乱数生成部214ではなく、圧縮関数部215に秘密鍵251を入力してもよい。
【0198】
また、秘匿検索クエリ1111のデータ構成を変更し、それに併せて処理を変更してもよい。例えば、全体処理部211がデータFS1107と、秘密鍵記憶部250に記憶された秘密鍵251とを暗号化部212へ入力する処理を行い(S1111)、暗号化部が出力したデータと、データDS1106とを、連結したデータを、秘匿検索クエリ1111とみなしてもよい (S1112)。
【0199】
図12は、本実施形態において、ネットワーク400を経由し、検索クライアント200が送信した秘匿検索クエリ232を用い、DBサーバ300がデータベース341を検索する処理を示すシーケンス図である。
【0200】
検索クライアント200は、入力部201を経由し、ユーザから、フォームへ入力された情報を一時情報記憶部280に記憶する処理を行う(S1201)。
【0201】
検索クライアント200は、入力部201を経由し、ユーザにより、検索ボタン1050が選択されたことを検知し、フォームに入力された情報を平文検索クエリ231として記憶部220へ記憶する処理を行う(S1202)。
【0202】
検索クライアント200は、制御部210により、秘匿検索クエリ232を作成し、記憶部220へ記憶する処理を行う(S1203)。
【0203】
検索クライアント200は、通信部203からネットワーク400を経由し、属性233と秘匿検索クエリ232を、DBサーバ300へ送信する処理を行う(S1204)。
【0204】
DBサーバ300は、通信部303からネットワーク400を経由し、検索クライアント200が送信した属性233と秘匿検索クエリ232を受信する処理を行う(S1205)。
【0205】
DBサーバ300は、制御部310により、属性233を用い、データベース341から、秘匿検索クエリ332に関係する秘匿登録データ902を検索する処理を行う(S1206)。
【0206】
DBサーバ300は、秘匿検索クエリ332に該当する検索結果(属性901と秘匿登録データ902の一部を抜粋)を、通信部303からネットワーク400を経由し、検索サーバへ送信する処理を行う(S1207)。
【0207】
検索クライアント200は、通信部203からネットワーク400を経由し、DBサーバ300が送信した秘匿検索クエリ232に該当する検索結果を受信する処理を行う(S1208)。
【0208】
検索クライアント200は、制御部210により、秘匿検索クエリ232に該当する検索結果から、平文登録データ272を復元する(S1209)。
【0209】
検索クライアント200は、出力部202を経由し、抽出した平文登録データ272を記憶部220に記憶する。また、抽出した平文登録データ272を、出力部202に表示する処理を行ってもよい(S1210)。
【0210】
本実施形態において、S1206で示した、DBサーバ300の制御部310が秘匿登録データ902を検索する処理手順は、以下、S1301からS1318に従う。
【0211】
なお、DBサーバ300の全体処理部311は、受信した属性233に関係する、データベース341の属性901に関連付けられた秘匿登録データ902を検索対象とする。
【0212】
図9Bは、図9Aに示した、構成図を用い、DBサーバ300の記憶部320のデータベース記憶部340に記憶された、データベース341における、検索対象を例示した構成図である。
【0213】
例えば、受信した属性233が、氏名に関する情報である場合、図9Bの太線の実線枠が囲んだ部分が示すように、DBサーバ300の全体処理部311は、データベース341の氏名に関係する属性901を、検索対象の秘匿登録データ902として扱う。
【0214】
なお、以下、秘匿登録データ902を検索するS1301からS1318の処理手順は、検索対象である秘匿登録データ902の全て、または検索対象である秘匿登録データ902から任意に抽出した秘匿登録データ902、または一定数の秘匿登録データ902に対して、実施する。
【0215】
図13Aは、本実施形態において、DBサーバ300が、通信部303から受信した秘匿検索クエリを復号化した、連結データ1301のデータ構成を示すブロック図の例である。
【0216】
また、図13Bは、本実施形態において、DBサーバ300が、データベース記憶部340に記憶した、データベース341における、秘匿登録データ1304のデータ構成を示すブロック図の例である。
【0217】
また、図13Cは、本実施形態において、DBサーバ300が、連結データ1301を用い、秘匿登録データ1304を検索する過程において作成する連結データ1308のデータ構成を示すブロック図の例である。
【0218】
また、図13Dは、本実施形態において、DBサーバ300が、連結データ1301を用い、秘匿登録データ1304を検索する過程において作成する連結データ1311のデータ構成を示すブロック図の例である。
【0219】
以下では、図13Aと、図13Bと、図13Cと、図13Dとを用い、DBサーバ300が、毎回、データ値の異なる連結データ1301を用いても、正しく秘匿登録データ1304を検索する処理手順を説明する。
【0220】
DBサーバ300の全体処理部311は、通信部303を用い、秘匿検索クエリ1300を受信する処理を行う。このとき、DBサーバ300の全体処理部311は、秘匿検索クエリ1300を、検索クエリ記憶部330に記憶する。
【0221】
DBサーバ300の全体処理部311は、秘匿検索クエリ1300と、秘密鍵記憶部350に記憶された秘密鍵351とを復号化部313へ入力する処理を行う(S1301)。
【0222】
DBサーバ300の復号化部は、入力された秘匿検索クエリ1300を復号化し、連結データ1301を出力する処理を行う(S1302)。このとき、図13Aに示すように、連結データ1301は、DBサーバ300の一時情報記憶部280に、(h+f)ビットのバイナリ表現で構成されたデータとして記憶される。
【0223】
DBサーバ300の全体処理部311は、連結データ1301からデータDS1302を取り出す処理を行う(S1303)。
【0224】
S1303は、例えば、図13Aに示すように、DBサーバ300が、全体処理部311が、連結データ1301から、データDS1302に該当する最初のhビットを、抽出すればよい。
【0225】
DBサーバ300の全体処理部311は、データベース記憶部340に記憶されている、データベース341にある秘匿登録データ1304を読み出し、秘匿登録データ1304から、データDR1306を取り出す処理を行う(S1304)。
【0226】
S1304は、例えば、図13Bに示すように、DBサーバ300が、全体処理部311が、秘匿登録データ1304から、データPR1305に該当する最初のrビットと、データGR1307に該当する最後のgビットとを取り除いたデータを、データDR1306とみなして扱えばよい。
【0227】
図13Cは、本実施形態において、DBサーバ300が作成する連結データ1308のデータ構成を示すブロック図である。
【0228】
登録クライアント100がデータCR705の確率的暗号化に利用したデータHR707と、検索クライアント200がデータCS1105の確率的暗号化に利用したデータPS1106と、の相関関係が取れるかを、準同型関数部316を利用して検査する。
【0229】
DBサーバ300の全体処理部311は、データDR711とデータDS1302とを基本演算部317へ入力する処理を行う(S1305)。
【0230】
登録クライアント100の基本演算部117は、入力されたデータDR1309とデータDS1310とのビット毎の排他的論理和であるXOR算を計算し、その計算結果を連結データ1308として出力する処理を行う(S1306)。
【0231】
S1305とS1306では、登録クライアント100の入力フォーム622に入力された情報を隠すためのデータHR707と、検索クライアント200が入力フォーム1022に入力された情報を隠すためのデータPS1106との関係式を導く。
【0232】
実際、S1306のxor算により、登録クライアント100と検索クライアント200の入力情報が等しい、即ち、データCs705とデータCR1105のデータ値が等しい場合、以下の式(6)が導ける。
Ds xor DR = PS xor HR (ただし、Cs=CRのとき) (6)
図13Dは、本実施形態において、DBサーバ300が作成する連結データ1311のデータ構成を示すブロック図の例である。
【0233】
DBサーバ300の全体処理部311は、連結データ1308と、パラメータ記憶部360に記憶された関数パラメータ361とを準同型関数部316に入力する(S1307)。
【0234】
DBサーバ300の準同型関数部316は、入力されたデータを準同型の性質を有する関数の入力値とみなし、関数パラメータ361を用いて、関数計算の出力値をバイナリ列で表現した準同型関数値を出力する処理を行う。このとき、準同型関数値は、DBサーバ300の一時情報記憶部380には、hビットのデータFD1312として記憶される(S1308)。
FD = F(PS xor HR) =FS xor FR (7)
なお、式(7)は、式(3)と、式(5)と、式(6)とより導ける。
【0235】
DBサーバ300の全体処理部311は、連結データ1301からデータFS1303を取り出す処理を行う(S1309)。
【0236】
S1309は、例えば、図13Aに示すように、DBサーバ300が、全体処理部311が入力した連結データ1301から、データFS1303に該当する最後のfビットを抽出すればよい。
【0237】
DBサーバ300の全体処理部311は、データFD1312とデータFS1303を、基本演算部317に入力する処理を行う(S1310)。
【0238】
DBサーバ300の基本演算部317は、入力されたデータFD1312とデータFS1303とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータDD1313として出力する処理を行う(S1311)。
【0239】
データCs705とデータCR1105のデータ値が同じ、即ち、式(7)が成り立つ場合、S1311の処理は、式(8)に基づく。
DR = FD xor FS= FR (8)
従って、データCs705とデータCR1105のデータ値が等しい場合、データDR1313のデータ値はデータFR708と等しい。
【0240】
DBサーバ300の全体処理部311は、データDR1313を、圧縮関数部315へ入力する処理を行う(S1312)。
【0241】
DBサーバ300の圧縮関数部315は、入力されたデータを変換し、ハッシュ値を出力する処理を行う。このとき、ハッシュ値は、登録クライアント100の一時情報記憶部180には、gビットのデータGD1314として記憶される(S1313)。
【0242】
DBサーバ300の全体処理部311は、データGD1314とデータGR1307を基本演算部317に入力する処理を行う(S1314)。
【0243】
DBサーバ300の基本演算部317は、入力されたデータGD1314と、データGR1307とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータED1315として出力する(S1315)。
【0244】
式(5)が成り立つ場合、データGD1314のデータ値はデータGR1307と等しく、式(9)より、データED1315のデータ値は0になる。
GD xor GS= 0 (9)
DBサーバ300の全体処理部311は、任意の数だけ、データED1315のビット値が0であるかを判定する(S1316)。
【0245】
S1316で調査したデータED1315のデータ値が0でない場合、DBサーバ300の全体処理部311は、秘匿検索クエリ1300と秘匿登録データ1304の関係がないと判断する。このとき、検索対象である秘匿登録データ1304の全て、または検索対象である秘匿登録データ1304から任意に抽出した秘匿登録データ1304の全て、または検索した秘匿登録データ1304が一定数に達するまで、DBサーバ300の制御部310は、S1304に戻り、秘匿登録データ1304を検索する処理を続ける(S1317)。
【0246】
S1316で調査したデータED1315のデータ値が0である場合、DBサーバ300の全体処理部311は、秘匿検索クエリ1300と秘匿登録データ1304の関係があると判断する。このとき、判断された秘匿登録データ1304と、関連する属性901に対応する秘匿登録データ1304とを、秘匿検索クエリ1300に該当する検索結果とみなす(S1318)。
【0247】
例えば、図9Bに示すように、検索結果は、検索した属性901が氏名に関する情報であり、秘匿検索クエリ1300に関係がある秘匿登録データ1304がdk+1であるとDBサーバ300の全体処理部311が判断した場合、判断された秘匿登録データ1304であるdk+1と、属性901が対応する図9Bの太枠の点線で囲まれた秘匿登録データ1304(dk、dk+2、dk+3、・・・)を、秘匿検索クエリ1300に該当する検索結果とみなす。
【0248】
以上に示したように、登録クライアント100が、毎回、異なるデータ値を有する秘匿登録データ712を作成し、検索クライアント200が、毎回、異なるデータ値を有する秘匿検索クエリ1111を作成した場合にも、受信した秘匿検索クエリ1300に該当する秘匿登録データ1304を正しく検索できる。
【0249】
また、式(6)に示したように、検索過程において、データCs705とデータCR1105のデータ値を互いに相殺しており、DBサーバ300には、データCs705とデータCR1105のデータ値が漏洩しない。
【0250】
なお、上記の処理手順は固定されたものではなく、処理手順を変更してもよい。例えば、S1303とS1305、S1304とS1306の処理手順をそれぞれ変更し、S1304でデータDR1306を取り出し、S1306でデータDS1302を取り出してもよい。同様に、他の処理手順を変更してもよい。
【0251】
また、上記の各処理を担当する制御部310は固定されたものではなく、担当する制御部310を変更してもよい。例えば、DBサーバ300が暗号化部312を備える場合、S1312でデータDR1313を、圧縮関数部315ではなく、暗号化部312に入力してもよく、S1314では、暗号化部312から出力されたデータを、データGD1314として一時情報記憶部380に記憶してもよい。
【0252】
また、検索処理に該当する判定基準を変更してもよい。例えば、S1316において、データED1315の任意のビットが0と等しいのを判定するのではなく、変更可能な特定の値と、データED1315のデータ値との大小関係等の判定式を用いて判定するようにしてもよい。
【0253】
また、秘匿検索クエリ1301に該当する、秘匿登録データ1304のデータ構成を変更し、検索結果を構成してもよい。例えば、データGR1307に関する情報は、検索結果に含まないように構成しても構わない。
【0254】
また、DBサーバ300が擬似乱数生成部314を備えるならば、全体処理部311が擬似乱数生成部314に秘密鍵351を入力し、擬似乱数生成部314が出力した擬似乱数を、データGR1307の代わりに連結したデータを、秘匿検索クエリ1301に該当する秘匿登録データ1304として、検索結果に含めてもよい。また、データGR1307と擬似乱数を、共に秘匿検索クエリ1301に該当する秘匿登録データ1304として、検索結果に含めてもよく、擬似乱数の代わりに、一般的なインデックスを用いてもよい。
【0255】
また、DBサーバ300が暗号化部313を備えるならば、全体処理部311が、秘匿検索クエリ1301に該当する秘匿登録データ1304と、秘密鍵351を暗号化部313に入力し、出力したデータを、検索結果とみなしてもよい。秘匿検索クエリ1301に該当する秘匿登録データ1304が擬似乱数または一般的なインデックスと連結されている場合、暗号化部313への入力値が随時異なるため、暗号化部313が出力するデータは、乱数とみなせる。従って、DBサーバ300が、例え不正傍受可能なネットワーク400経由で、検索クライアント200に送信しても、検索結果は安全である。
【0256】
本実施形態において、S1209で示した、検索クライアント200の制御部210が、受信した秘匿登録データ1304の全てまたは一部に対する秘匿登録データ1304を復号し、平文登録データ272を抽出する処理手順は、以下、S1401からS1411の処理手順に従う。
【0257】
図14Aは、本実施形態において、検索クライアント200が、通信部203から受信した秘匿登録データ1401のデータ構成を示すブロック図の例である。
【0258】
また、図14Bは、本実施形態において、DBサーバ300が、秘匿登録データ1401を復号化する過程において作成するデータCR1405のデータ構成を示すブロック図の例である。
【0259】
また、図14Cは、本実施形態において、DBサーバ300が、秘匿登録データ1401を復号化する過程において作成する連結データ1409のデータ構成を示すブロック図の例である。
【0260】
以下では、図14Aと、図14Bと、図14Cと、図14Dとを用い、検索クライアント200が、秘匿登録データ1401から平文登録データ1410を復号化する処理手順を説明する。
【0261】
検索クライアント200の全体処理部211は、通信部203を用い、秘匿登録データ1401を受信する処理を行う。このとき、検索クライアント200は、登録データ1401を、検索クエリ記憶部230に、(r+h+g)ビットのバイナリ表現で構成されたデータとして記憶する。
【0262】
検索クライアント200の全体処理部211は、秘匿登録データ1401からデータPR1402を取り出す処理を行う(S1401)。
【0263】
S1401は、例えば、図14に示すように、検索クライアント200が、全体処理部211が入力した秘匿登録データ1401から、データPR1402に該当する最初のrビットを抽出すればよい。
【0264】
検索クライアント200の全体処理部211は、秘密鍵記憶部250から秘密鍵251を読み出し、秘密鍵251とデータPR1402を圧縮関数部215に入力する処理を行う(S1402)。
【0265】
検索クライアント200の圧縮関数部215は、入力されたデータを変換し、ハッシュ値を出力する処理を行う(S1403)。このとき、ハッシュ値は、検索クライアント200の一時情報記憶部280には、hビットのデータHS1407として記憶される。
【0266】
図14Bは、本実施形態において、DBサーバ300が作成するデータCR1405のデータ構成を示すブロック図である。
【0267】
検索クライアント200の全体処理部211は、データDR1403とデータHS1407とを基本演算部217へ入力する処理を行う(S1404)。
【0268】
検索クライアント200の基本演算部217は、入力されたデータDR1403とデータHS1407とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータCR1405として出力する処理を行う(S1405)。
【0269】
S1407のxor算では、データHR1407とデータDR1403とデータCR1405とは式(10)を満たす。
CR =HR xor DR (10)
なお、式(10)は、式(4)を変形した数式である。
【0270】
検索クライアント200の全体処理部211は、基本演算部217が出力したデータと、秘密鍵記憶部250に記憶された秘密鍵251とを復号化部213へ入力する処理を行う(S1406)。
【0271】
検索クライアント200の復号化部は、入力されたデータCR1405を復号化し、連結データ1409を出力する処理を行う(S1407)。このとき、図14Cに示すように、連結データ1409は、検索クライアント200の一時情報記憶部280に、(m+e)ビットのデータとして記憶される。
【0272】
検索クライアント200の全体処理部211は、連結データ1409から誤り検査データ1411を取り出す処理を行う(S1408)。
【0273】
例えば、図14Cに示すように、検索クライアント200が、全体処理部211が入力した連結データ1403から、データ終わりのeビットを誤り検査データ1411とみなし抽出すればよい。
【0274】
検索クライアント200の全体処理部211は、パラメータ記憶部260に記憶された検査パラメータ262を読み込み、検査用のデータに変換したデータと、誤り検査データ1411とを基本演算部217へ入力する処理を行う(S1409)。
【0275】
検索クライアント200の基本演算部217は、入力された、検査用に変換されたデータと、誤り検査データ1411を比較し、その比較結果を出力する処理を行う(S1410)。
【0276】
例えば、バイナリ列で表わされた検査用のデータと誤り検査データが等しければ、等号を表わすビット(1)を出力し、等しくない場合は、不等号を表わすビット(0)を出力する処理を行う。
【0277】
例えば、基本演算部217が、等号を表わすビット(1)を出力した場合は、検索クライアント200の全体処理部211は、正しい検索結果であると判断する処理を行う。また、基本演算部217が、不等号を表わすビット(0)を出力した場合は、DBサーバ300の全体処理部311は、誤った検索結果であると判断する処理を行う。
【0278】
検索クライアント200の全体処理部211は、基本演算部217が出力した結果に応じ、連結データ1402から抽出した平文登録データ1410を検索結果とする処理を行い、平文登録データ1410を復元する処理(S1209)を終了する(S1411)。例えば、図14Cに示すように、検索クライアント200が、全体処理部211が入力した連結データ1409から、データ初めのmビットを平文登録データ1410とみなす。
【0279】
なお、DBサーバ300の不正対策に万全を期したい場合、検索に該当した検索結果はDBサーバ300から削除し、復号化した平文登録データ1410の順番をランダムにシャッフルした後、検索クライアント200または登録クライアント100から、DBサーバ300に秘匿登録データを再登録するように処理してもよい。
【符号の説明】
【0280】
100:登録クライアント、200:検索クライアント、300:DBサーバ、400:ネットワーク、500:コンピュータ、101、201、301:入力部、102、202、302:出力部、103、203、303:通信部、110、210、310:制御部、111、211、311:全体処理部、112、212:暗号化部、213、313:復号化部、114、214:擬似乱数生成部、115、215、315:圧縮関数部、116、216、316:準同型関数部、117、217、317:基本演算部、120、220、320:記憶部、130:登録データ記憶部、131、272、701、1410:平文登録データ、132、271、712、1304、1401:秘匿登録データ、133、233:属性、230、330:検索クエリ記憶部、231、1101:平文検索クエリ、232、332、1111、1300:秘匿検索クエリ、340:データベース記憶部、341:データベース、150、250、350:秘密鍵記憶部、151、251、351:秘密鍵、160、260、360:パラメータ記憶部、161、261、361:関数パラメータ、162、262:検査パラメータ、270:受信データ記憶部、180、280、380:一時情報記憶部、501:CPU(Central Processing Unit)、502:メモリ、503:外部記憶装置、508:記憶媒体、507:読書装置、506:入力装置、505:出力装置、504:通信装置、509:内部通信線、600:出力部101の表示内容、610:管理方法の選択部、620:管理フォーム部、621、1011:属性、622、1022:入力フォーム、650:実行ボタン、660、1060:クリアボタン、1000:出力部102の表示内容、1010:検索項目部、1020:検索フォーム部、1050:検索ボタン、702、1411:誤り検査データ、703、704、1103、1104、1108、1301、1308、1311、1409:連結データ、705:データCR、706:データPR、707:データHR、708:データFR、709:データGR、711:データDR、1102:誤り検査データ、1105:データCS、1106:データPS、1107:データFS、1110:データDS、1302:データDS、1303:データFS、1305:データPR、1306:データDR、1307:データGR、1309:データDR、1310:データDS、1312:データFD、1313:データDD、1314:データGD、1315:データED、1402:データPR、1403:データDR、1404:データGR、1405:データCR、1407:データHS。
【技術分野】
【0001】
本発明は、サーバ/クライアントモデルにおいて、サーバが、クライアントの要求に従って、暗号化データを復号せずに、預託された暗号化データを検索する、検索処理システムに関する。
【背景技術】
【0002】
情報システムの開発・運用管理費の効率化を目的に、近年、情報システムを自組織が維持するのではなく、他組織が提供する情報システムを利用する、クラウドと呼ばれる運用管理形態が脚光を浴びている。一方、クラウドにおいては、情報システムを管理する組織が、情報システムを利用する組織とは異なるため、情報漏えい等を防止する策や、事故発生後の原因究明、再発防止策等が自組織だけでは立てにくい。そのため、事前に、データの不正流出の予防策として、暗号技術を活用し、データの機密性を確保する必要がある。
【0003】
サーバ/クライアントモデルにおいて、クライアントが、サーバにデータを預託しながら、サーバに対し、預託したデータの情報漏洩を防ぐ技術として、暗号技術を利用した方式が知られている。例えば、非特許文献1や非特許文献2には、クライアントの要求に従って、暗号化データを復号せずに、預託された暗号化データを検索する、検索処理方式が記載されている。この検索処理方式は、平文と暗号文が一対一の単純な対応関係を有する決定的暗号化方式よりも安全な、平文と暗号文が一対mの複雑な対応関係を有する確率的暗号化方式を採用しており、サーバ管理者への情報漏洩を防ぎながら、かつサーバに預託したデータを安全に検索するための技術が開示されている。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Dawn Xiaodong Song, David Wagner, Arian Perrig. “Practical Techniques for Searches on Encrypted Data”. In Proceedings of the 2000 IEEE Symposium on Security and Privacy, pages 44-55(2000).
【非特許文献2】Zhiqiang Yang, Sheng Zhong, Rebecca N. Wright. “Privacy-Preserving Queries on Encrypted Data”. In Proceedings of the 11th European Symposium on Research in Computer Security (Esorics), Volume 4189 of Lecture Notes in Computer Science, pages 476-495(2006).
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1、非特許文献2に記載された技術では、サーバに預託する確率的暗号化で暗号化したデータを復号化するために必要な、運用管理が複雑、クライアント・サーバ共に複雑である。更に、擬似乱数による確率的暗号化は、クライアントが検索をするまでは有効であるが、検索後は、検索に該当した暗号文の擬似乱数のマスクが解除されてしまい、暗号文の安全性が、確率的暗号化から、決定的暗号化に低下してしまう。しかも、クライアントは、検索時の要求(検索クエリ)の暗号化には、安全性の低い決定的暗号化方式を用いているため、頻度分析等の不正攻撃に対しても、脆弱である。
【課題を解決するための手段】
【0006】
前記課題を解決するために、検索可能暗号処理システムは、データを預かるDBサーバと、DBサーバにデータを預託する登録クライアントと、DBサーバにデータを検索させる検索クライアントがネットワーク経由で連携し、登録クライアントは、ハッシュ値と準同型関数の出力値によるマスクを用いた確率的暗号化方式により、暗号化したデータを、安全にサーバに預託し、検索クライアントは、検索クエリの暗号化に、複数の異なる入力値から同一の値を出力する準同型関数を用いたマスクによる確率的暗号化を用い、DBサーバにマスクを解除させずに、かつ、DBサーバに検索に該当するデータの出現頻度が漏洩しないよう、検索クエリと該当しないデータを検索結果として出力させ、検索クライアントは、検索結果を入手後、再暗号化を行い、DBサーバにデータを再預託する。
【発明の効果】
【0007】
クライアントがDBサーバを利用した検索後も、検索に該当したデータが確率的暗号で暗号化されており、安全性が高い。また、複雑な運用管理をクライアントに強いることなく、暗号化されたデータを効率的に復号化できる。
【図面の簡単な説明】
【0008】
【図1】検索可能暗号処理システムの概略を例示する図である。
【図2】登録クライアントの機能の概略を例示する図である。
【図3】検索クライアントの機能の概略を例示する図である。
【図4】DBサーバの機能の概略を例示する図である。
【図5】コンピュータの概略構成を例示する図である。
【図6】登録クライアントの出力部の表示内容を例示する図である。
【図7A】登録クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図7B】登録クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図7C】登録クライアントが作成する秘匿登録データのデータ構成を例示するブロック図である。
【図8】登録クライアントが秘匿登録データをDBサーバへ登録する処理を例示するシーケンス図である。
【図9A】DBサーバのデータベース記憶部に記憶される、データベースの管理状態を例示する図である。
【図9B】DBサーバのデータベース記憶部に記憶される、データベースの検索手順を例示する図である。
【図10】検索クライアントの出力部の表示内容を例示する図である。
【図11A】検索クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図11B】検索クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図11C】検索クライアントが作成する連結データのデータ構成を例示するブロック図である。
【図12】検索クライアントが、秘匿検索クエリを用い、DBサーバ内のデータベースを検索する処理を例示するシーケンス図である。
【図13A】DBサーバが通信部から受信した秘匿検索クエリを復号化した、連結データのデータ構成を例示するブロック図である。
【図13B】DBサーバが、データベース記憶部に記憶した、秘匿登録データのデータ構成を例示するブロック図である。
【図13C】DBサーバが作成する連結データのデータ構成を例示するブロック図である。
【図13D】DBサーバが作成する連結データのデータ構成を例示するブロック図である。
【図14A】検索クライアントが通信部から受信した秘匿登録データのデータ構成を例示するブロック図である。
【図14B】検索クライアントが作成するデータCRのデータ構成を例示するブロック図である。
【図14C】DBサーバが作成する連結データのデータ構成を例示するブロック図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【0010】
図1は、本実施形態の検索処理システムの概略図である。図示するように、検索処理システムは、登録クライアント100(Registration Client)と、検索クライアント200(Search Client)と、DBサーバ300(Data Base Server)とを備え、登録クライアント100とDBサーバ300、検索クライアント200とDBサーバ300は、ネットワーク400を介して相互に情報を送受信できるように構成されている。
【0011】
ここで、本実施形態における登録クライアント100は、秘匿化したデータをDBサーバ300に送信するデータ登録用の送受信装置として機能し、検索クライアント200は、秘匿化した検索クエリをDBサーバ300に送信し、検索結果を受信する、検索用の送受信装置として機能し、DBサーバ300は、秘匿化したデータをデータベースに保管し、またデータベース内のデータを検索するDB管理用の送受信装置として機能する。
【0012】
図2は、登録クライアント100の機能概略図である。図示するように、登録クライアント100は、制御部110と、記憶部120と、入力部101と、出力部102と、通信部103とを備える。
【0013】
記憶部120は、登録データ記憶部130と、秘密鍵記憶部150と、パラメータ記憶部160と、一時情報記憶部180とを備える。
【0014】
登録データ記憶部130には、DBサーバ300に送信するデータである、送信文を特定する情報が記憶される。ここで、本実施形態においては、入力部101を介して、受け付けた平文登録データ131を特定する情報と、DBサーバ300に登録する、秘匿登録データ132を特定する情報と、平文登録データ131と秘匿登録データ132の属性133を特定する情報とが記憶される。
【0015】
秘密鍵記憶部150には、安全性の観点から登録クライアント100が秘密に管理すべき、秘密鍵151を特定する情報が記憶される。ここで、本実施形態においては、暗号化部112に入力する秘密鍵151と、擬似乱数生成部114に入力する秘密鍵151と、圧縮関数部115に入力する秘密鍵151とを特定する情報が記憶される。
【0016】
パラメータ記憶部160には、データの秘匿化に用いる、パラメータを特定する情報が記憶される。ここで、本実施形態においては、準同型関数部116に入力する関数パラメータ161と、基本演算部117に入力する検査パラメータ162とを特定する情報が記憶される。また、安全性の観点から、関数パラメータ161は、登録クライアント100が秘密に管理すべき情報である。
【0017】
一時情報記憶部180には、制御部110での処理で必要となる情報が記憶される。
【0018】
制御部110は、全体処理部111と、暗号化部112と、擬似乱数生成部114と、圧縮関数部115と、準同型関数部116と、基本演算部117とを備える。
【0019】
全体処理部111は、登録クライアント100における全ての処理を制御する。
【0020】
例えば、本実施形態において、全体処理部111は、入力部101を介して入力を受け付けた情報を、登録データ記憶部130に平文登録データ131として記憶する処理を行う。
【0021】
また、本実施形態において、全体処理部111は、平文登録データ131を出力部102に表示する処理を行う。
【0022】
また、本実施形態において、全体処理部111は、登録データ記憶部130に記憶した平文登録データ131を読み込み、それぞれ、暗号化部112と、擬似乱数生成部114と、圧縮関数部115と、準同型関数部116と、基本演算部117とに入力し、出力されたデータを、登録データ記憶部130に秘匿登録データ132として記憶する処理を行う。
【0023】
また、本実施形態において、全体処理部111は、属性133と秘匿登録データ132を、通信部103を介してDBサーバ300に送信する処理を行う。
【0024】
さらに、本実施形態において、全体処理部111は、DBサーバ300より通信部103を介して受信した属性133と秘匿登録データ132を、一時情報記憶部180に記憶する処理と出力部102に表示する処理を行う。
【0025】
暗号化部112は、入力されたデータを暗号化したデータを出力する処理を行う。
【0026】
例えば、本実施形態においては、全体処理部111からデータと秘密鍵151が入力され、秘密鍵151を用い、暗号化したデータを出力する処理を行う。
【0027】
例えば、標準的な暗号化アルゴリズムの実装により、暗号化部112は実現される。
【0028】
擬似乱数生成部114は、擬似乱数を出力する処理を行う。
【0029】
例えば、擬似乱数生成部114は、温度、時間、電力量、等の物理現象から、乱数を出力する。
【0030】
本実施形態においては、擬似乱数生成部114は、全体処理部111から入力された秘密鍵151を用い、擬似乱数を出力する。また、秘密鍵151のデータ値は新しいデータ値に更新され、再び、全体処理部111により秘密鍵記憶部150に記憶される。
【0031】
例えば、標準的な擬似乱数生成アルゴリズムの実装により、擬似乱数生成部114は実現される。
【0032】
圧縮関数部115は、入力されたデータを圧縮したデータを出力する処理を行う。
【0033】
例えば、本実施形態においては、全体処理部111から入力されたデータを固定長(hビット)の別のデータに変換し、出力する処理を行う。
【0034】
例えば、標準的な暗号ハッシュ関数アルゴリズムの実装により、任意長の入力データを固定長のデータへ変換する圧縮関数部115が実現できる。
【0035】
準同型関数部116は、入力されたデータに対し、関数計算の出力結果をデータとして出力する処理を行う。
【0036】
例えば、本実施形態においては、全体処理部111から入力されたデータを、準同型の性質を有する関数の入力値とみなし、全体処理部111から入力された関数パラメータ161を用いて、関数計算の出力値をバイナリ列で表現した固定長(fビット)のデータに変換する処理を行う。
【0037】
ただし、準同型関数とは、関数Fと、入力変数x、入力変数yに対し、
F(x・y)=F(x)?F(y) (1)
が成り立つ関数を指す。ただし、・と?は、演算記号を表わし、加算用の演算記号+、乗算用の演算記号*、ビット毎の排他的論理和であるXOR(eXclusive OR)演算用の演算記号xor等が入る。
【0038】
本実施形態では、・と?にXOR演算記号xorが入る場合、即ち式(2)が成り立つ場合を示す。
F(x xor y)=F(x)xor F(y) (2)
ただし、準同型関数が式(2)以外の演算記号で成り立つ時でも、本実施形態は同様に実施できる。
【0039】
なお、準同型関数を実現するアルゴリズムの実装により、準同型関数部116は実現される。
【0040】
基本演算部117は、加算、減算、比較算等の基本的な算術演算に関する処理を行う。
【0041】
例えば、本実施形態においては、基本演算部117は、全体処理部111から入力された2つのデータのビット毎の排他的論理和であるXOR演算や、比較演算の等号成立または不成立の検証結果を、データとして出力する処理を行う。
【0042】
以上に示した登録クライアント100は、例えば、図5(コンピュータの概略図)に示すような、CPU(Central Processing Unit)501と、メモリ502と、HDD(Hard Disk Drive)等の外部記憶装置503と、CD(Compact Disk)やDVD(Digital Versatile Disk)等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)509と、を備えた一般的なコンピュータ500で実現できる。
【0043】
例えば、記憶部120は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部110と制御部110に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部101は、CPU501が入力装置506を利用することで実現可能であり、出力部102は、CPU501が出力装置505を利用することで実現可能であり、通信部103は、CPU501が通信装置504を利用することで実現可能である。
【0044】
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワークから、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して、記憶媒体508から、あるいは通信装置504を介してネットワークから、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
【0045】
図3は、検索クライアント200の機能概略図である。図示するように、検索クライアント200は、制御部210と、記憶部220と、入力部201と、出力部202と、通信部203とを備える。
【0046】
記憶部220は、検索クエリ記憶部230と、秘密鍵記憶部250と、パラメータ記憶部260と、受信データ記憶部270と、一時情報記憶部280とを備える。
【0047】
検索クエリ記憶部230には、DBサーバ300に送信するデータである、送信文を特定する情報が記憶される。ここで、本実施形態においては、検索クライアント200が、入力部201を介して受け付けた平文検索クエリ231を特定する情報と、DBサーバ300に送信する秘匿検索クエリ232と、平文検索クエリ231と秘匿検索クエリ232の属性233を特定する情報とが記憶される。
【0048】
秘密鍵記憶部250には、安全性の観点から検索クライアント200が秘密に管理すべき、秘密鍵251を特定する情報が記憶される。ここで、本実施形態においては、暗号化部212に入力する秘密鍵251と、復号化部213に入力する秘密鍵251と、擬似乱数生成部214に入力する秘密鍵251と、圧縮関数部215に入力する秘密鍵251とを特定する情報が記憶される。
【0049】
パラメータ記憶部260には、データの秘匿化と秘匿化解除とに用いるパラメータを特定する情報が記憶される。ここで、本実施形態においては、準同型関数部216に入力する関数パラメータ261を特定する情報と、基本演算部217に入力する検査パラメータ262を特定する情報とが記憶される。また、安全性の観点から、関数パラメータ261は、検索クライアント200が秘密に管理すべき情報である。
【0050】
受信データ記憶部270には、通信部203を介して受信したデータを特定する情報が記憶される。ここで、本実施形態においては、受信データ記憶部270には、通信部203を介してDBサーバ300から受信したデータを特定する情報が、秘匿登録データ271として記憶される。また、秘匿登録データ271から、秘匿化を解除したデータを、平文登録データ272として受信データ記憶部270に記憶する処理を行う。
【0051】
一時情報記憶部280には、制御部210での処理で必要となる情報が記憶される。
【0052】
制御部210は、全体処理部211と、暗号化部212と、復号化部213と、擬似乱数生成部214と、圧縮関数部215と、準同型関数部216と、基本演算部217とを備える。
【0053】
全体処理部211は、検索クライアント200における全ての処理を制御する。
【0054】
例えば、本実施形態において、全体処理部211は、入力部201を介して入力を受け付けた情報を、検索クエリ記憶部230に平文検索クエリ231として記憶する処理を行う。
【0055】
また、本実施形態において、全体処理部211は、平文検索クエリ231を出力部202に表示する処理を行う。
【0056】
また、本実施形態において、全体処理部211は、検索クエリ記憶部230に記憶した平文検索クエリ231を読み込み、それぞれ、暗号化部212と、擬似乱数生成部214と、圧縮関数部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを秘匿検索クエリ232として検索クエリ記憶部230に記憶する処理を行う。
【0057】
また、本実施形態において、全体処理部211は、通信部203を介して、属性233と秘匿検索クエリ232をDBサーバ300に送信する処理を行う。
【0058】
また、本実施形態において、全体処理部211は、通信部203を介して、秘匿登録データ271をDBサーバ300から受信する処理を行う。
【0059】
また、本実施形態において、全体処理部211は、通信部203を介して、受信した秘匿登録データ271を受信データ記憶部270に秘匿登録データ271として記憶する処理を行う。
【0060】
また、本実施形態において、全体処理部211は、受信データ記憶部270に記憶した秘匿登録データ271を読み込み、それぞれ、復号化部213と、圧縮関数部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを平文登録データ272として受信データ記憶部270に記憶する処理を行う。
【0061】
また、本実施形態において、全体処理部211は、平文登録データ272を出力部202に表示する処理を行う。
【0062】
さらに、全体処理部211は、DBサーバ300より、通信部203を介して受信したデータを、一時情報記憶部280に記憶する処理と、出力部202に表示する処理を行う。
【0063】
暗号化部212は、入力されたデータを暗号化したデータを出力する処理を行う。
【0064】
例えば、本実施形態においては、全体処理部211からデータと秘密鍵251が入力され、秘密鍵251を用い、暗号化したデータを出力する処理を行う。
【0065】
復号化部213は、入力されたデータを復号化したデータを出力する処理を行う。
【0066】
例えば、本実施形態においては、全体処理部211からデータと秘密鍵251が入力され、秘密鍵251を用い、復号化したデータを出力する処理を行う。
【0067】
擬似乱数生成部114は、擬似乱数を出力する処理を行う。
【0068】
例えば、擬似乱数生成部214は、温度、時間、電力量、等の物理現象から、乱数を出力する。
【0069】
本実施形態においては、擬似乱数生成部214は、全体処理部211から入力された秘密鍵251を用い、擬似乱数を出力する。また、秘密鍵251のデータ値は新しいデータ値に更新され、再び、全体処理部211により秘密鍵記憶部250に記憶される。
【0070】
例えば、本実施形態においては、全体処理部211から入力された秘密鍵251を用い、擬似乱数を出力する処理を行う。
【0071】
圧縮関数部215は、入力されたデータを圧縮したデータを出力する処理を行う。
【0072】
例えば、本実施形態においては、全体処理部211から入力されたデータを固定長(hビット)の別のデータに変換し、出力する処理を行う。
【0073】
準同型関数部216は、入力されたデータに対し、関数計算の出力結果をデータとして出力する処理を行う。
【0074】
例えば、本実施形態においては、全体処理部211から入力されたデータを準同型の性質を有する関数の入力値とみなし、全体処理部211から入力された関数パラメータ261を用いて、関数計算の出力値をバイナリ列で表現した固定長(fビット)のデータに変換する処理を行う。
【0075】
ただし、準同型関数は、関数Fと、入力変数x、入力変数yに対し、式(2)が成り立つ場合を示すが、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、本実施形態は同様に実施できる。
【0076】
基本演算部217は、加算、減算、比較算等の基本的な算術演算に関する処理を行う。
【0077】
例えば、本実施形態においては、基本演算部217は、全体処理部211から入力された2つのデータのバイナリ値(2進数)の減算結果を、データとして出力する処理を行う。
【0078】
以上に示した検索クライアント200は、例えば、図5(コンピュータの概略図)に示すような、CPU501と、メモリ502と、HDD等の外部記憶装置503と、CDやDVD等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)と、を備えた一般的なコンピュータで実現できる。
【0079】
例えば、記憶部220は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部210と制御部210に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部201は、CPU501が入力装置506を利用することで実現可能であり、出力部202は、CPU501が出力装置505を利用することで実現可能であり、通信部203は、CPU501が通信装置504を利用することで実現可能である。
【0080】
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワークから、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して、記憶媒体508から、あるいは通信装置504を介してネットワークから、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
【0081】
図4は、DBサーバ300の機能概略図である。図示するように、DBサーバ300は、制御部310と、記憶部320と、入力部301と、出力部302と、通信部303と、を備える。
【0082】
記憶部320は、パラメータ記憶部360と、秘密鍵記憶部350と、データベース記憶部340と、検索クエリ記憶部330と、一時情報記憶部380とを備える。
【0083】
パラメータ記憶部360には、秘匿検索クエリ332とデータベース341の関係の検査に用いる、パラメータを特定する情報が記憶される。ここで、本実施形態においては、準同型関数部316に入力する関数パラメータ361を特定する情報が記憶される。また、安全性の観点から、関数パラメータ361はDBサーバ300が秘密に管理すべき情報である。
【0084】
秘密鍵記憶部350には、安全性の観点からDBサーバ300が秘密に管理すべき、秘密鍵351を特定する情報が記憶される。ここで、本実施形態においては、復号化部313に入力する秘密鍵351とを特定する情報が記憶される。
【0085】
データベース記憶部340には、通信部303を介して受信した登録データを特定する情報が記憶される。ここで、本実施形態においては、通信部303を介して登録クライアント100から受信した情報を、データベース記憶部340にデータベース341の構成情報として記憶する処理を行う。
【0086】
検索クエリ記憶部330には、通信部303を介して受信した検索クエリを特定する情報が記憶される。ここで、本実施形態においては、通信部303を介して検索クライアント200から受信した情報を、検索クエリ記憶部330に秘匿検索クエリ332として記憶する処理を行う。
【0087】
一時情報記憶部380には、制御部310での処理で必要となる情報が記憶される。
【0088】
制御部310は、全体処理部311と、復号化部313と、圧縮関数部315と、準同型関数部316と、基本演算部317と、を備える。
【0089】
全体処理部311は、DBサーバ300における全ての処理を制御する。
【0090】
例えば、本実施形態において、全体処理部311は、通信部303を介して秘匿登録データ131を、登録クライアント100から受信する処理を行う。
【0091】
また、本実施形態において、全体処理部311は、通信部303を介して受信した秘匿登録データ131を、データベース記憶部340にデータベース341の構成情報として記憶する処理を行う。
【0092】
また、本実施形態において、全体処理部311は、通信部303を介して秘匿検索クエリ332を、検索クライアント200から受信する処理を行う。
【0093】
また、本実施形態において、全体処理部311は、通信部303を介して受信した秘匿検索クエリ332を、検索クエリ記憶部330に記憶する処理を行う。
【0094】
また、本実施形態において、全体処理部311は、検索クエリ記憶部330に記憶した秘匿検索クエリ332を読み込み、それぞれ、復号化部313と、圧縮関数部315と、準同型関数部316と、基本演算部317とに入力し、出力されたデータを、通信部303を介して、検索クライアント200に送信する処理を行う。
【0095】
さらに、全体処理部311は、検索クライアント200または登録クライアント100より、通信部303を介して受信したデータに関する情報を、一時情報記憶部380に記憶する処理と、出力部302に表示する処理を行う。
【0096】
復号化部313は、入力されたデータを復号化したデータを出力する処理を行う。
【0097】
例えば、本実施形態においては、全体処理部311からデータと秘密鍵351が入力され、秘密鍵351を用い、復号化したデータを出力する処理を行う。
【0098】
圧縮関数部315は、入力されたデータを圧縮したデータを出力する処理を行う。
【0099】
例えば、本実施形態においては、全体処理部311から入力されたデータを固定長(hビット)の別のデータに変換し、出力する処理を行う。
【0100】
準同型関数部316は、入力されたデータに対し、関数計算の出力結果をデータとして出力する処理を行う。
【0101】
例えば、本実施形態においては、全体処理部311から入力されたデータを、準同型の性質を有する関数の入力値とみなし、全体処理部311から入力された関数パラメータ361を用いて、関数計算の出力値をバイナリ列で表現したデータを固定長(fビット)のデータに変換する処理を行う。
【0102】
ただし、準同型関数は、関数Fと、入力変数x、入力変数yに対し、式(2)が成り立つ場合を示すが、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、本実施形態は同様に実施できる。
【0103】
基本演算部317は、加算、減算、比較算等の基本的な算術演算に関する処理を行う。
【0104】
例えば、本実施形態においては、基本演算部317は、全体処理部311から入力された2つのデータのバイナリ値(2進数)の減算結果をデータとして出力する処理を行う。
【0105】
また、本実施形態においては、基本演算部317は、全体処理部311から入力された2つのデータのバイナリ値(2進数)の比較結果をデータとして出力する処理を行う。
【0106】
以上に示したDBサーバ300は、例えば、図5(コンピュータの概略図)に示すような、CPU501と、メモリ502と、HDD等の外部記憶装置503と、CDやDVD等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)とを備えた一般的なコンピュータで実現できる。
【0107】
例えば、記憶部120、220、320は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部110、210、310と制御部110、210、310に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部101、201、301は、CPU501が入力装置506を利用することで実現可能であり、出力部102、202、302は、CPU501が出力装置505を利用することで実現可能であり、通信部103、203、303は、CPU501が通信装置504を利用することで実現可能である。
【0108】
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワークから、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して記憶媒体508から、あるいは通信装置504を介してネットワークから、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
【0109】
図6は、登録クライアント100の出力部102の表示内容600を例示した図である。図示するように、登録クライアント100は、管理方法の選択部610と、管理フォーム部620と、実行と表示されたボタンを指す実行ボタン650と、クリアと表示されたボタンを指すクリアボタン660とを備える。
【0110】
管理方法の選択部610は、データの登録と、データの更新と、データの削除となどの、データの管理に関する項目から構成される。例えば、本実施形態では、データ追加と、データ更新と、データ削除とを特定するラジオボタンを備える。また、入力部101を介し、各項目が選択可能である。
【0111】
管理フォーム部620は、管理方法の選択部610で特定された項目である、データの登録と、データの更新と、またはデータの削除とに応じて扱う、データの種類を示す属性621と、データの詳細内容を入力する入力フォーム622から構成される。例えば、本実施形態では、番号と、氏名と、Eメールと、所属部署とを指す属性621と、番号の入力用と、氏名の入力用と、Eメールの入力用と、所属部署の入力用とに設計された入力フォーム622を備える。各入力フォーム622に入力された情報は、記憶部120の一時情報記憶部180に記憶される。
【0112】
クリアボタン660は、入力部101を介し、選択可能である。例えば、本実施形態では、クリアボタン660が選択されると、各入力フォーム622に入力された情報を消去する。
【0113】
実行ボタン650は、入力部101を介し、選択可能である。例えば、本実施形態では、実行ボタン650が選択されると、管理方法の選択部610で特定された項目と各フォームに入力された情報を基に、秘匿登録データ131を作成し、DBサーバ300へ送信する処理を行う。以下では、管理方法の選択部610で、特定された項目がデータ登録である場合を説明するが、データ更新と、データ削除とが特定された場合も、同様の処理を行う。
【0114】
管理方法の選択部610で、特定された項目がデータ登録である場合に、実行ボタン650が選択された場合に、実施する秘匿登録データ131の処理手順をS701からS715に示す。
【0115】
図7Aは、本実施形態において、登録クライアント100が、出力部102に出力した入力フォーム622に入力された情報を基に作成する、連結データ703のデータ構成を示すブロック図の例である。
【0116】
また、図7Bは、本実施形態において、登録クライアント100が、秘匿登録データ712を作成する過程において作成する、連結データ704のデータ構成を示すブロック図の例である。
【0117】
また、図7Cは、本実施形態において、登録クライアント100が作成する、秘匿登録データ712のデータ構成を示すブロック図である。
【0118】
以下では、図7Aと、図7Bと、図7Cとを用い、入力フォーム622に入力されたデータ値によらず、登録クライアント100が、毎回、データ値の異なる秘匿登録データ712を作成する処理手順を説明する。
【0119】
登録クライアント100の全体処理部111は、入力フォーム622に入力された情報を平文登録データ701として、記憶部120の登録データ記憶部130に記憶する処理を行う。このとき、平文登録データ701は、登録クライアント100の一時情報記憶部180にmビットのバイナリ表現で構成されたデータとして記憶される。
【0120】
登録クライアント100の全体処理部111は、パラメータ記憶部160に記憶された検査パラメータ162を読み込み、誤り検査データ702として出力する処理を行う。このとき、出力された誤り検査データ702は、登録クライアント100の一時情報記憶部180に、eビットのデータとして記憶される。
【0121】
登録クライアント100の全体処理部111は、平文登録データ701と誤り検査データ702を連結する処理を行う (S701) 。
【0122】
連結処理では、平文登録データ701の各所に、分割した誤り検査データ702を挿入してもよい。例えば、平文登録データ701の初め(ヘッダ)と終わり(フッタ)に、誤り検査データ702を挿入してもよい。また、誤り検査データ702に平文登録データ701を乗算で掛け合わせるなど、混合させてもよい。
【0123】
以下では、図7Aに示すように、登録クライアント100において、全体処理部111が入力した平文登録データ701の末尾に、誤り検査データ702を連結し、連結データ703を一つのデータとみなした場合を扱う。このとき、登録クライアント100の一時情報記憶部180には、連結データ703は(m+e)ビットのデータとして記憶される。ただし、連結処理は、この場合に限定されるわけではなく、他の連結処理でも、同様に実施できる。
【0124】
次に、図7Bに示すように、登録クライアント100が作成する連結データ704のデータ構成を説明する。
【0125】
登録クライアント100の全体処理部111は、平文登録データ701と誤り検査データ702を連結したデータである連結データ703と、秘密鍵記憶部150に記憶された秘密鍵151とを暗号化部112へ入力する処理を行う(S702)。
【0126】
登録クライアント100の暗号化部112は、入力されたデータを暗号化し、データCR705を出力する処理を行う(S703)。
【0127】
登録クライアント100において、全体処理部111が入力した連結データ703を暗号化部112が暗号化し、出力したデータをデータCR705とみなす。このとき、データCR705は、登録クライアント100の一時情報記憶部180には、cビットのデータとして記憶される(S704)。
【0128】
なお、データCR705は、連結データ703に依存、即ち、入力フォーム622の入力情報に依存して構わない。例えば、同一のデータ値を持つ連結データ703からは、同一のデータCR705を出力してもよい。
【0129】
登録クライアント100の全体処理部111は、秘密鍵記憶部150から秘密鍵151を読み出し、秘密鍵151を、擬似乱数生成部114に入力する処理を行う(S705)。
【0130】
登録クライアント100の擬似乱数生成部114は、入力された秘密鍵151を用い、擬似乱数を出力する処理を行う。このとき、擬似乱数は、登録クライアント100の一時情報記憶部180には、rビットのデータPR706として記憶される(S706)。
【0131】
擬似乱数生成部114が出力する擬似乱数は、連結データ703、データCR705に依存しない。従って、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータPR706を作成できる。
【0132】
登録クライアント100の全体処理部111は、秘密鍵記憶部150から秘密鍵151を読み出し、秘密鍵151と乱数生成部から出力されたデータPR706を連結したデータを、圧縮関数部115に入力する処理を行う(S707)。
【0133】
登録クライアント100の圧縮関数部115は、入力されたデータを変換し、ハッシュ値を出力する処理を行う。このとき、ハッシュ値は、登録クライアント100の一時情報記憶部180には、hビットのデータHR707として記憶される(S708)。
【0134】
データHR707は、圧縮関数の性質から、乱数とみなせる。データHR707は、連結データ703、データCR705に依存しない。従って、データPR706同様、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータHR707を作成できる。
【0135】
登録クライアント100の全体処理部111は、データHR707と、パラメータ記憶部160に記憶された関数パラメータ161とを準同型関数部116に入力する(S709)。
【0136】
登録クライアント100の準同型関数部116は、入力されたデータを準同型の性質を有する関数の入力値とみなし、関数パラメータ161を用いて、関数計算の出力値をバイナリ列で表現した準同型関数値を出力する処理を行う。このとき、準同型関数値は、登録クライアント100の一時情報記憶部180には、fビットのデータFR708として記憶される(S710)。
【0137】
なお、準同型関数をfuncとした場合、その入力値であるデータHR707、出力値であるデータFR708には、式(3)が成り立つ(ただし、関数パラメータ161の記述は省略)。
FR = func(HR) (3)
データFR708は、準同型関数部116が処理する準同型関数の性質から、入力されたデータ値が乱数の場合、出力も乱数とみなせる。また、データFR708は、連結データ703と、データCR705に依存しない。従って、データHR707同様、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータFR707を作成できる。
【0138】
登録クライアント100の全体処理部111は、準同型関数部116から出力されたデータFR708を、圧縮関数部115へ入力する処理を行う(S711)。
【0139】
登録クライアント100の圧縮関数部115は、入力されたデータを変換し、ハッシュ値を出力する処理を行う。このとき、ハッシュ値は、登録クライアント100の一時情報記憶部180には、gビットのデータGR709として記憶される(S712)。
【0140】
データGR709は、圧縮関数の性質から、乱数である。従って、データFR707と、データHR707同様、入力フォーム622の入力情報に依存せず、毎回、データ値の異なるデータGR709を作成できる。また、圧縮関数の性質から、逆像は計算困難であるため、データGR709をDBサーバ300に登録しても、データの安全性に影響を与えない。
【0141】
図7Cは、本実施形態において、登録クライアント100が作成する秘匿登録データ712のデータ構成を示すブロック図である。
【0142】
登録クライアント100の全体処理部111は、データHR707とデータCR705とを基本演算部117へ入力する処理を行う(S713)。
【0143】
登録クライアント100の基本演算部117は、入力されたデータHR707とデータCR705とのビット毎の排他的論理和であるXOR算を計算し、その計算結果を、データDR711として出力する処理を行う(S714)。
【0144】
S714のxor算により、データHR707とデータCR705とデータDR711とは式(4)を満たす。
DR =HR xor CR (4)
S714の計算は、連結データ703やデータCR705に依存しない、乱数であるデータHR707を用いている。従って、連結データ703とデータCR705の関係が一意に定まる場合でも、毎回、データ値が異なる、データHR707を用いれば、異なるデータ値のデータDR711が得られる。
【0145】
登録クライアント100の全体処理部111は、データPR706とデータDR711とデータGR709とを連結し、作成したデータを、秘匿登録データ712として登録データ記憶部130へ記憶する処理を行う(S715)。
【0146】
秘匿登録データ712は、連結データ703やデータCR705に依存しない乱数であるデータPR706、データDR711、データGR709を用いており、毎回、異なるデータ値が得られる。その結果、データPR706とデータDR711とデータGR709とを連結した秘匿登録データ712は、連結データ703とデータCR705とは独立している。即ち、入力フォーム622の入力情報に依存せず、毎回、データ値の異なる秘匿登録データ712を作成できる。
【0147】
なお、上記の処理手順は、固定されたものではなく、処理手順を変更してもよい。例えば、S713とS714の処理手順を変更し、S713でデータPR706とデータHR707とデータGR709を連結してから、S714でデータHR707とデータCR705とのXOR算を計算してもよい。同様に、他の処理手順を変更してもよい。
【0148】
また、上記の各処理を担当する制御部110は固定されたものではなく、担当する制御部110を変更してもよい。例えば、S711でデータFR708を、圧縮関数部115ではなく、暗号化部112にデータFR708を入力してもよく、S712では、暗号化部112から出力されたデータを、データGR709として一時情報記憶部180に記憶してもよい。
【0149】
また、秘匿登録データ712のデータ構成を変更し、それに併せて処理を変更してもよい。例えば、データPR706に関する情報は、記憶部120に記憶し、秘匿登録データ712に含まないように構成しても構わない。この時、S706が出力するデータをデータHR706とみなし、S707とS708に係る処理は削除可能である。また、この時、S715で登録クライアント100の全体処理部111は、秘匿登録データ712として、データDR711とデータGR709とを連結すればよい。
【0150】
図8は、本実施形態において、ネットワーク400を経由し、登録クライアント100が、秘匿登録データ132をDBサーバ300へ登録する処理を示すシーケンス図である。
【0151】
登録クライアント100は、入力部101を経由し、ユーザからフォームへ入力された情報を一時情報記憶部180に記憶する処理を行う(S801)。
【0152】
登録クライアント100は、入力部101を経由し、ユーザにより実行ボタン650が選択されたことを検知し、フォームに入力された情報を、平文登録データ131として記憶部120へ記憶する処理を行う(S802)。
【0153】
登録クライアント100は、制御部110により秘匿登録データ132を作成し、記憶部120へ記憶する処理を行う(S803)。
【0154】
登録クライアント100は、通信部103からネットワーク400を経由し、属性133と秘匿登録データ132を、DBサーバ300へ送信する処理を行う(S804)。
【0155】
DBサーバ300は、通信部303からネットワーク400を経由し、登録クライアント100が送信した属性133と秘匿登録データ132を受信する処理を行う(S805)。
【0156】
DBサーバ300は、制御部310により受信した属性133を用い、秘匿登録データ132を、データベース341の構成情報として記憶部320へ記憶する処理を行う(S806)。
【0157】
DBサーバ300は、秘匿登録データ132の登録処理の成否を、通信部303からネットワーク400を経由し、登録サーバへ送信する処理を行う(S807)。
【0158】
登録クライアント100は、通信部103からネットワーク400を経由し、DBサーバ300が送信した秘匿登録データ132の登録処理の成否を受信する処理を行う(S808)。
【0159】
登録クライアント100は、出力部102を経由し、ユーザに、登録処理の成否を含む登録情報について表示する処理を行う(S809)。
【0160】
図9Aは、DBサーバ300における、記憶部320のデータベース記憶部340に記憶されるデータベース341の管理状態を例示した構成図である。
【0161】
例えば、本実施形態において、DBサーバ300における、データベース341は、番号と、氏名と、Eメールとなどを示す属性901と、属性901に関連付けられた秘匿登録データ902(d0、d1、d2、・・・)とから構成されている。
【0162】
図10は、検索クライアント200の出力部202の表示内容1000を例示した図である。図示するように、検索クライアント200は、検索項目部1010と、検索フォーム部1020と、検索と表示されたボタンを指す検索ボタン1050と、クリアと表示されたボタンを指すクリアボタン1060とを備える。
【0163】
検索方法の選択部は、検索対象のデータの種類に関する項目から構成される。例えば、本実施形態では、番号と、氏名と、Eメールと、所属部署とを特定するラジオボタンを備える。また、入力部201を介し、各項目が複数選択可能である。
【0164】
検索フォーム部1020は、検索方法の選択部で特定された属性1011である、番号と、氏名と、Eメールと、所属部署との詳細内容を入力する入力フォーム1022から構成される。例えば、本実施形態では、番号の入力用と、氏名の入力用と、Eメールの入力用と、所属部署の入力用とに設計された入力フォーム1022を複数備える。各入力フォーム1022に入力された情報は、記憶部220の一時情報記憶部280に記憶される。
【0165】
クリアボタン1060は、入力部201を介し、選択可能である。例えば、本実施形態では、クリアボタン1060が選択されると、各入力フォーム1022の入力情報を消去する。
【0166】
検索ボタン1050は、入力部201を介し、選択可能である。例えば、本実施形態では、検索ボタン1050が選択されると、検索方法の選択部で特定された属性1011と入力フォーム1022に入力された情報を基に、秘匿検索クエリ232を作成し、DBサーバ300へ送信する処理を行う。以下では、検索方法の選択部で、ただ一つの属性1011(例えば氏名)が選択された場合を示すが、複数の入力フォーム1022に情報が入力された場合と、複数の属性1011が選択された場合も、同様の処理で実施できる。
【0167】
検索方法の選択部で、特定された属性1011が、ただ一つである場合に、検索ボタン1050が選択された場合の処理手順は、S1101〜S1112に従う。
【0168】
図11Aは、本実施形態において、検索クライアント200が、出力部202に出力した入力フォーム1022に入力された情報を基に作成する連結データ1103のデータ構成を示すブロック図の例である。
【0169】
また、図11Bは、本実施形態において、検索クライアント200が、秘匿検索クエリ1111を作成する過程において作成する連結データ1104のデータ構成を示すブロック図の例である。
【0170】
また、図11Cは、本実施形態において、検索クライアント200が作成する連結データ1108のデータ構成を示すブロック図である。
以下では、図11Aと、図11Bと、図11Cとを用い、入力フォーム1022に入力されたデータ値によらず、検索クライアント200が、毎回、データ値の異なる秘匿検索クエリ1111を作成する処理手順を説明する。
【0171】
検索クライアント200の全体処理部211は、入力フォーム1022に入力された情報を、平文検索クエリ1101として記憶部220の検索クエリ記憶部230に記憶する処理を行う。このとき、平文検索クエリ1101は、検索クライアント200の一時情報記憶部280にmビットのバイナリ表現で構成されたデータとして記憶される。
【0172】
検索クライアント200の全体処理部211は、パラメータ記憶部260に記憶された検査パラメータ262を読み込み、誤り検査データ1102として出力する処理を行う。このとき、出力された誤り検査データ1102は、検索クライアント200の一時情報記憶部280に、eビットのデータとして記憶される。
【0173】
検索クライアント200の全体処理部211は、平文検索クエリ1101と誤り検査データ1102を連結する処理を行う(S1101)。
【0174】
連結処理では、平文検索クエリ1101の各所に、分割した誤り検査データ1102を挿入してもよい。例えば、平文検索クエリ1101の初め(ヘッダ)と終わり(フッタ)に、誤り検査データ1102を挿入してもよい。また、誤り検査データ1102に平文検索クエリ1101を乗算で掛け合わせるなど、混合させてもよい。
【0175】
以下では、図11Aに示すように、検索クライアント200において、全体処理部211が入力した平文検索クエリの末尾に誤り検査データ1102を連結し、連結データ1103を一つのデータとみなした場合を扱う。このとき、検索クライアント200の一時情報記憶部280には、連結データ1103は(m+e)ビットのデータとして記憶される。ただし、連結処理は、この場合に限定されるわけではなく、他の連結処理でも、同様に実施できる。
【0176】
次に、図11Bに示すように、検索クライアント200が作成する連結データ1104のデータ構成を説明する。
【0177】
検索クライアント200の全体処理部211は、平文検索クエリ1101と誤り検査データ1102を連結したデータである連結データ1103と、秘密鍵記憶部250に記憶された秘密鍵251とを暗号化部212へ入力する処理を行う(S1102)。
【0178】
検索クライアント200の暗号化部212は、入力されたデータを暗号化し、データCS1105を出力する処理を行う(S1103)。
【0179】
検索クライアント200において、全体処理部211が入力した連結データ1103を暗号化部212が暗号化し、出力したデータをデータCS1105とみなして扱えばよい。このとき、データCS1105は、検索クライアント200の一時情報記憶部280に、cビットのデータとして記憶される(S1104)。
【0180】
なお、データCS1105は、連結データ1103に依存、即ち、入力フォーム1022の入力情報に依存してもよい。例えば、同一のデータ値を持つ連結データ1103からは、同一のデータCS1105を出力してもよい。
【0181】
検索クライアント200の全体処理部211は、秘密鍵記憶部250から秘密鍵251を読み出し、秘密鍵251を擬似乱数生成部214に入力する処理を行う(S1105)。
【0182】
検索クライアント200の擬似乱数生成部214は、入力された秘密鍵251を用い、擬似乱数を出力する処理を行う。このとき、擬似乱数は、検索クライアント200の一時情報記憶部280に、rビットのデータPS1106として記憶される(S1106)。
【0183】
擬似乱数生成部214が出力する擬似乱数は、連結データ1103、データCS1105に依存しない。従って、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なる、データPS1106を作成できる。
【0184】
データPS1106は、擬似乱数生成関数の性質から、乱数を出力する。また、データPS1106は、連結データ703、データCS705に依存しない。従って、データPS1106は、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なるデータFS1107を作成できる。
【0185】
検索クライアント200の全体処理部211は、データPS1106と、パラメータ記憶部260に記憶された関数パラメータ261とを準同型関数部216に入力する(S1107)。
【0186】
検索クライアント200の準同型関数部216は、入力されたデータを、準同型の性質を有する関数の入力値とみなし、関数パラメータ261を用いて、関数計算の出力値をバイナリ列で表現した準同型関数値を出力する処理を行う。このとき、準同型関数値は、検索クライアント200の一時情報記憶部280に、fビットのデータFS1107として記憶される(S1108)。
【0187】
なお、準同型関数をfuncとした場合、その入力値であるデータPS、出力値であるデータFSには、式(5)が成り立つ(ただし、関数パラメータ261の記述は省略)。
FS = func(PS) (5)
データFS1107は、準同型関数部216が処理する準同型関数の性質から、入力されたデータ値が一様に分布する乱数の場合、出力も同様に一様分布する。また、データFS1107は、連結データ1103とデータCS1104に依存しない。従って、データPS1106同様、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なるデータFS1107を作成できる。
【0188】
図11Cは、本実施形態において、検索クライアント200が作成する連結データ1108のデータ構成を示すブロック図である。
【0189】
検索クライアント200の全体処理部211は、データPS1106とデータFS1107とを連結し、作成した連結データ1104と、データCS1105とを基本演算部217へ入力する処理を行う(S1109)。
【0190】
検索クライアント200の基本演算部217は、入力された連結データ1104と、データCS1105とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータDS1110として出力する処理を行う(S1110)。
【0191】
S1110の計算は、連結データ1103やデータCS1105に依存しない、乱数であるデータPS1106を用いている。従って、連結データ1103とデータCS1105の関係が一意に定まる場合でも、毎回、データ値が異なる、データPS1106を用いれば、異なるデータ値のデータDS1110が得られる。
【0192】
検索クライアント200の全体処理部211は、データDS1110とデータFS1107とを連結したデータである連結データ1108と、秘密鍵記憶部250に記憶された秘密鍵251とを暗号化部212へ入力する処理を行う(S1111)。
【0193】
検索クライアント200の暗号化部212は、入力されたデータを暗号化し、暗号化したデータを、全体処理部211は、秘匿検索クエリ1111として検索クエリ記憶部230へ記憶する処理を行う(S1112)。
【0194】
秘匿検索クエリ1111は、暗号化部に入力された連結データが乱数とみなせるため、出力された秘匿検索クエリ1111も、同様に乱数とみなせる。そのため、検索クライアント200が、例え不正傍受可能なネットワーク400経由で、DBサーバ300に送信しても、秘匿検索クエリ1111は安全である。
【0195】
秘匿検索クエリ1111は、連結データ1103やデータCS1105に依存しない、乱数であるデータPS1106とデータFS1107とを用いており、毎回、異なるデータ値が得られる。その結果、データDS1106とデータFS1107とを連結した秘匿検索クエリ1111は、連結データ1103とデータCR1105とは独立している。即ち、入力フォーム1022の入力情報に依存せず、毎回、データ値の異なる秘匿検索クエリ1111を作成できる。
【0196】
なお、上記の処理手順は、固定されたものではなく、処理手順を変更してもよい。例えば、S1109とS1110の処理手順を変更し、S1109でデータCS1105と、データPS1106と、のXOR算を計算してから、S1110でデータFS1107とデータDS1110とを連結してもよい。同様に、他の処理手順を変更してもよい。
【0197】
また、上記の各処理を担当する制御部210は固定されたものではなく、担当する制御部210を変更してもよい。例えば、S1105で、擬似乱数生成部214ではなく、圧縮関数部215に秘密鍵251を入力してもよい。
【0198】
また、秘匿検索クエリ1111のデータ構成を変更し、それに併せて処理を変更してもよい。例えば、全体処理部211がデータFS1107と、秘密鍵記憶部250に記憶された秘密鍵251とを暗号化部212へ入力する処理を行い(S1111)、暗号化部が出力したデータと、データDS1106とを、連結したデータを、秘匿検索クエリ1111とみなしてもよい (S1112)。
【0199】
図12は、本実施形態において、ネットワーク400を経由し、検索クライアント200が送信した秘匿検索クエリ232を用い、DBサーバ300がデータベース341を検索する処理を示すシーケンス図である。
【0200】
検索クライアント200は、入力部201を経由し、ユーザから、フォームへ入力された情報を一時情報記憶部280に記憶する処理を行う(S1201)。
【0201】
検索クライアント200は、入力部201を経由し、ユーザにより、検索ボタン1050が選択されたことを検知し、フォームに入力された情報を平文検索クエリ231として記憶部220へ記憶する処理を行う(S1202)。
【0202】
検索クライアント200は、制御部210により、秘匿検索クエリ232を作成し、記憶部220へ記憶する処理を行う(S1203)。
【0203】
検索クライアント200は、通信部203からネットワーク400を経由し、属性233と秘匿検索クエリ232を、DBサーバ300へ送信する処理を行う(S1204)。
【0204】
DBサーバ300は、通信部303からネットワーク400を経由し、検索クライアント200が送信した属性233と秘匿検索クエリ232を受信する処理を行う(S1205)。
【0205】
DBサーバ300は、制御部310により、属性233を用い、データベース341から、秘匿検索クエリ332に関係する秘匿登録データ902を検索する処理を行う(S1206)。
【0206】
DBサーバ300は、秘匿検索クエリ332に該当する検索結果(属性901と秘匿登録データ902の一部を抜粋)を、通信部303からネットワーク400を経由し、検索サーバへ送信する処理を行う(S1207)。
【0207】
検索クライアント200は、通信部203からネットワーク400を経由し、DBサーバ300が送信した秘匿検索クエリ232に該当する検索結果を受信する処理を行う(S1208)。
【0208】
検索クライアント200は、制御部210により、秘匿検索クエリ232に該当する検索結果から、平文登録データ272を復元する(S1209)。
【0209】
検索クライアント200は、出力部202を経由し、抽出した平文登録データ272を記憶部220に記憶する。また、抽出した平文登録データ272を、出力部202に表示する処理を行ってもよい(S1210)。
【0210】
本実施形態において、S1206で示した、DBサーバ300の制御部310が秘匿登録データ902を検索する処理手順は、以下、S1301からS1318に従う。
【0211】
なお、DBサーバ300の全体処理部311は、受信した属性233に関係する、データベース341の属性901に関連付けられた秘匿登録データ902を検索対象とする。
【0212】
図9Bは、図9Aに示した、構成図を用い、DBサーバ300の記憶部320のデータベース記憶部340に記憶された、データベース341における、検索対象を例示した構成図である。
【0213】
例えば、受信した属性233が、氏名に関する情報である場合、図9Bの太線の実線枠が囲んだ部分が示すように、DBサーバ300の全体処理部311は、データベース341の氏名に関係する属性901を、検索対象の秘匿登録データ902として扱う。
【0214】
なお、以下、秘匿登録データ902を検索するS1301からS1318の処理手順は、検索対象である秘匿登録データ902の全て、または検索対象である秘匿登録データ902から任意に抽出した秘匿登録データ902、または一定数の秘匿登録データ902に対して、実施する。
【0215】
図13Aは、本実施形態において、DBサーバ300が、通信部303から受信した秘匿検索クエリを復号化した、連結データ1301のデータ構成を示すブロック図の例である。
【0216】
また、図13Bは、本実施形態において、DBサーバ300が、データベース記憶部340に記憶した、データベース341における、秘匿登録データ1304のデータ構成を示すブロック図の例である。
【0217】
また、図13Cは、本実施形態において、DBサーバ300が、連結データ1301を用い、秘匿登録データ1304を検索する過程において作成する連結データ1308のデータ構成を示すブロック図の例である。
【0218】
また、図13Dは、本実施形態において、DBサーバ300が、連結データ1301を用い、秘匿登録データ1304を検索する過程において作成する連結データ1311のデータ構成を示すブロック図の例である。
【0219】
以下では、図13Aと、図13Bと、図13Cと、図13Dとを用い、DBサーバ300が、毎回、データ値の異なる連結データ1301を用いても、正しく秘匿登録データ1304を検索する処理手順を説明する。
【0220】
DBサーバ300の全体処理部311は、通信部303を用い、秘匿検索クエリ1300を受信する処理を行う。このとき、DBサーバ300の全体処理部311は、秘匿検索クエリ1300を、検索クエリ記憶部330に記憶する。
【0221】
DBサーバ300の全体処理部311は、秘匿検索クエリ1300と、秘密鍵記憶部350に記憶された秘密鍵351とを復号化部313へ入力する処理を行う(S1301)。
【0222】
DBサーバ300の復号化部は、入力された秘匿検索クエリ1300を復号化し、連結データ1301を出力する処理を行う(S1302)。このとき、図13Aに示すように、連結データ1301は、DBサーバ300の一時情報記憶部280に、(h+f)ビットのバイナリ表現で構成されたデータとして記憶される。
【0223】
DBサーバ300の全体処理部311は、連結データ1301からデータDS1302を取り出す処理を行う(S1303)。
【0224】
S1303は、例えば、図13Aに示すように、DBサーバ300が、全体処理部311が、連結データ1301から、データDS1302に該当する最初のhビットを、抽出すればよい。
【0225】
DBサーバ300の全体処理部311は、データベース記憶部340に記憶されている、データベース341にある秘匿登録データ1304を読み出し、秘匿登録データ1304から、データDR1306を取り出す処理を行う(S1304)。
【0226】
S1304は、例えば、図13Bに示すように、DBサーバ300が、全体処理部311が、秘匿登録データ1304から、データPR1305に該当する最初のrビットと、データGR1307に該当する最後のgビットとを取り除いたデータを、データDR1306とみなして扱えばよい。
【0227】
図13Cは、本実施形態において、DBサーバ300が作成する連結データ1308のデータ構成を示すブロック図である。
【0228】
登録クライアント100がデータCR705の確率的暗号化に利用したデータHR707と、検索クライアント200がデータCS1105の確率的暗号化に利用したデータPS1106と、の相関関係が取れるかを、準同型関数部316を利用して検査する。
【0229】
DBサーバ300の全体処理部311は、データDR711とデータDS1302とを基本演算部317へ入力する処理を行う(S1305)。
【0230】
登録クライアント100の基本演算部117は、入力されたデータDR1309とデータDS1310とのビット毎の排他的論理和であるXOR算を計算し、その計算結果を連結データ1308として出力する処理を行う(S1306)。
【0231】
S1305とS1306では、登録クライアント100の入力フォーム622に入力された情報を隠すためのデータHR707と、検索クライアント200が入力フォーム1022に入力された情報を隠すためのデータPS1106との関係式を導く。
【0232】
実際、S1306のxor算により、登録クライアント100と検索クライアント200の入力情報が等しい、即ち、データCs705とデータCR1105のデータ値が等しい場合、以下の式(6)が導ける。
Ds xor DR = PS xor HR (ただし、Cs=CRのとき) (6)
図13Dは、本実施形態において、DBサーバ300が作成する連結データ1311のデータ構成を示すブロック図の例である。
【0233】
DBサーバ300の全体処理部311は、連結データ1308と、パラメータ記憶部360に記憶された関数パラメータ361とを準同型関数部316に入力する(S1307)。
【0234】
DBサーバ300の準同型関数部316は、入力されたデータを準同型の性質を有する関数の入力値とみなし、関数パラメータ361を用いて、関数計算の出力値をバイナリ列で表現した準同型関数値を出力する処理を行う。このとき、準同型関数値は、DBサーバ300の一時情報記憶部380には、hビットのデータFD1312として記憶される(S1308)。
FD = F(PS xor HR) =FS xor FR (7)
なお、式(7)は、式(3)と、式(5)と、式(6)とより導ける。
【0235】
DBサーバ300の全体処理部311は、連結データ1301からデータFS1303を取り出す処理を行う(S1309)。
【0236】
S1309は、例えば、図13Aに示すように、DBサーバ300が、全体処理部311が入力した連結データ1301から、データFS1303に該当する最後のfビットを抽出すればよい。
【0237】
DBサーバ300の全体処理部311は、データFD1312とデータFS1303を、基本演算部317に入力する処理を行う(S1310)。
【0238】
DBサーバ300の基本演算部317は、入力されたデータFD1312とデータFS1303とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータDD1313として出力する処理を行う(S1311)。
【0239】
データCs705とデータCR1105のデータ値が同じ、即ち、式(7)が成り立つ場合、S1311の処理は、式(8)に基づく。
DR = FD xor FS= FR (8)
従って、データCs705とデータCR1105のデータ値が等しい場合、データDR1313のデータ値はデータFR708と等しい。
【0240】
DBサーバ300の全体処理部311は、データDR1313を、圧縮関数部315へ入力する処理を行う(S1312)。
【0241】
DBサーバ300の圧縮関数部315は、入力されたデータを変換し、ハッシュ値を出力する処理を行う。このとき、ハッシュ値は、登録クライアント100の一時情報記憶部180には、gビットのデータGD1314として記憶される(S1313)。
【0242】
DBサーバ300の全体処理部311は、データGD1314とデータGR1307を基本演算部317に入力する処理を行う(S1314)。
【0243】
DBサーバ300の基本演算部317は、入力されたデータGD1314と、データGR1307とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータED1315として出力する(S1315)。
【0244】
式(5)が成り立つ場合、データGD1314のデータ値はデータGR1307と等しく、式(9)より、データED1315のデータ値は0になる。
GD xor GS= 0 (9)
DBサーバ300の全体処理部311は、任意の数だけ、データED1315のビット値が0であるかを判定する(S1316)。
【0245】
S1316で調査したデータED1315のデータ値が0でない場合、DBサーバ300の全体処理部311は、秘匿検索クエリ1300と秘匿登録データ1304の関係がないと判断する。このとき、検索対象である秘匿登録データ1304の全て、または検索対象である秘匿登録データ1304から任意に抽出した秘匿登録データ1304の全て、または検索した秘匿登録データ1304が一定数に達するまで、DBサーバ300の制御部310は、S1304に戻り、秘匿登録データ1304を検索する処理を続ける(S1317)。
【0246】
S1316で調査したデータED1315のデータ値が0である場合、DBサーバ300の全体処理部311は、秘匿検索クエリ1300と秘匿登録データ1304の関係があると判断する。このとき、判断された秘匿登録データ1304と、関連する属性901に対応する秘匿登録データ1304とを、秘匿検索クエリ1300に該当する検索結果とみなす(S1318)。
【0247】
例えば、図9Bに示すように、検索結果は、検索した属性901が氏名に関する情報であり、秘匿検索クエリ1300に関係がある秘匿登録データ1304がdk+1であるとDBサーバ300の全体処理部311が判断した場合、判断された秘匿登録データ1304であるdk+1と、属性901が対応する図9Bの太枠の点線で囲まれた秘匿登録データ1304(dk、dk+2、dk+3、・・・)を、秘匿検索クエリ1300に該当する検索結果とみなす。
【0248】
以上に示したように、登録クライアント100が、毎回、異なるデータ値を有する秘匿登録データ712を作成し、検索クライアント200が、毎回、異なるデータ値を有する秘匿検索クエリ1111を作成した場合にも、受信した秘匿検索クエリ1300に該当する秘匿登録データ1304を正しく検索できる。
【0249】
また、式(6)に示したように、検索過程において、データCs705とデータCR1105のデータ値を互いに相殺しており、DBサーバ300には、データCs705とデータCR1105のデータ値が漏洩しない。
【0250】
なお、上記の処理手順は固定されたものではなく、処理手順を変更してもよい。例えば、S1303とS1305、S1304とS1306の処理手順をそれぞれ変更し、S1304でデータDR1306を取り出し、S1306でデータDS1302を取り出してもよい。同様に、他の処理手順を変更してもよい。
【0251】
また、上記の各処理を担当する制御部310は固定されたものではなく、担当する制御部310を変更してもよい。例えば、DBサーバ300が暗号化部312を備える場合、S1312でデータDR1313を、圧縮関数部315ではなく、暗号化部312に入力してもよく、S1314では、暗号化部312から出力されたデータを、データGD1314として一時情報記憶部380に記憶してもよい。
【0252】
また、検索処理に該当する判定基準を変更してもよい。例えば、S1316において、データED1315の任意のビットが0と等しいのを判定するのではなく、変更可能な特定の値と、データED1315のデータ値との大小関係等の判定式を用いて判定するようにしてもよい。
【0253】
また、秘匿検索クエリ1301に該当する、秘匿登録データ1304のデータ構成を変更し、検索結果を構成してもよい。例えば、データGR1307に関する情報は、検索結果に含まないように構成しても構わない。
【0254】
また、DBサーバ300が擬似乱数生成部314を備えるならば、全体処理部311が擬似乱数生成部314に秘密鍵351を入力し、擬似乱数生成部314が出力した擬似乱数を、データGR1307の代わりに連結したデータを、秘匿検索クエリ1301に該当する秘匿登録データ1304として、検索結果に含めてもよい。また、データGR1307と擬似乱数を、共に秘匿検索クエリ1301に該当する秘匿登録データ1304として、検索結果に含めてもよく、擬似乱数の代わりに、一般的なインデックスを用いてもよい。
【0255】
また、DBサーバ300が暗号化部313を備えるならば、全体処理部311が、秘匿検索クエリ1301に該当する秘匿登録データ1304と、秘密鍵351を暗号化部313に入力し、出力したデータを、検索結果とみなしてもよい。秘匿検索クエリ1301に該当する秘匿登録データ1304が擬似乱数または一般的なインデックスと連結されている場合、暗号化部313への入力値が随時異なるため、暗号化部313が出力するデータは、乱数とみなせる。従って、DBサーバ300が、例え不正傍受可能なネットワーク400経由で、検索クライアント200に送信しても、検索結果は安全である。
【0256】
本実施形態において、S1209で示した、検索クライアント200の制御部210が、受信した秘匿登録データ1304の全てまたは一部に対する秘匿登録データ1304を復号し、平文登録データ272を抽出する処理手順は、以下、S1401からS1411の処理手順に従う。
【0257】
図14Aは、本実施形態において、検索クライアント200が、通信部203から受信した秘匿登録データ1401のデータ構成を示すブロック図の例である。
【0258】
また、図14Bは、本実施形態において、DBサーバ300が、秘匿登録データ1401を復号化する過程において作成するデータCR1405のデータ構成を示すブロック図の例である。
【0259】
また、図14Cは、本実施形態において、DBサーバ300が、秘匿登録データ1401を復号化する過程において作成する連結データ1409のデータ構成を示すブロック図の例である。
【0260】
以下では、図14Aと、図14Bと、図14Cと、図14Dとを用い、検索クライアント200が、秘匿登録データ1401から平文登録データ1410を復号化する処理手順を説明する。
【0261】
検索クライアント200の全体処理部211は、通信部203を用い、秘匿登録データ1401を受信する処理を行う。このとき、検索クライアント200は、登録データ1401を、検索クエリ記憶部230に、(r+h+g)ビットのバイナリ表現で構成されたデータとして記憶する。
【0262】
検索クライアント200の全体処理部211は、秘匿登録データ1401からデータPR1402を取り出す処理を行う(S1401)。
【0263】
S1401は、例えば、図14に示すように、検索クライアント200が、全体処理部211が入力した秘匿登録データ1401から、データPR1402に該当する最初のrビットを抽出すればよい。
【0264】
検索クライアント200の全体処理部211は、秘密鍵記憶部250から秘密鍵251を読み出し、秘密鍵251とデータPR1402を圧縮関数部215に入力する処理を行う(S1402)。
【0265】
検索クライアント200の圧縮関数部215は、入力されたデータを変換し、ハッシュ値を出力する処理を行う(S1403)。このとき、ハッシュ値は、検索クライアント200の一時情報記憶部280には、hビットのデータHS1407として記憶される。
【0266】
図14Bは、本実施形態において、DBサーバ300が作成するデータCR1405のデータ構成を示すブロック図である。
【0267】
検索クライアント200の全体処理部211は、データDR1403とデータHS1407とを基本演算部217へ入力する処理を行う(S1404)。
【0268】
検索クライアント200の基本演算部217は、入力されたデータDR1403とデータHS1407とのビット毎の排他的論理和であるXOR算を計算し、その計算結果をデータCR1405として出力する処理を行う(S1405)。
【0269】
S1407のxor算では、データHR1407とデータDR1403とデータCR1405とは式(10)を満たす。
CR =HR xor DR (10)
なお、式(10)は、式(4)を変形した数式である。
【0270】
検索クライアント200の全体処理部211は、基本演算部217が出力したデータと、秘密鍵記憶部250に記憶された秘密鍵251とを復号化部213へ入力する処理を行う(S1406)。
【0271】
検索クライアント200の復号化部は、入力されたデータCR1405を復号化し、連結データ1409を出力する処理を行う(S1407)。このとき、図14Cに示すように、連結データ1409は、検索クライアント200の一時情報記憶部280に、(m+e)ビットのデータとして記憶される。
【0272】
検索クライアント200の全体処理部211は、連結データ1409から誤り検査データ1411を取り出す処理を行う(S1408)。
【0273】
例えば、図14Cに示すように、検索クライアント200が、全体処理部211が入力した連結データ1403から、データ終わりのeビットを誤り検査データ1411とみなし抽出すればよい。
【0274】
検索クライアント200の全体処理部211は、パラメータ記憶部260に記憶された検査パラメータ262を読み込み、検査用のデータに変換したデータと、誤り検査データ1411とを基本演算部217へ入力する処理を行う(S1409)。
【0275】
検索クライアント200の基本演算部217は、入力された、検査用に変換されたデータと、誤り検査データ1411を比較し、その比較結果を出力する処理を行う(S1410)。
【0276】
例えば、バイナリ列で表わされた検査用のデータと誤り検査データが等しければ、等号を表わすビット(1)を出力し、等しくない場合は、不等号を表わすビット(0)を出力する処理を行う。
【0277】
例えば、基本演算部217が、等号を表わすビット(1)を出力した場合は、検索クライアント200の全体処理部211は、正しい検索結果であると判断する処理を行う。また、基本演算部217が、不等号を表わすビット(0)を出力した場合は、DBサーバ300の全体処理部311は、誤った検索結果であると判断する処理を行う。
【0278】
検索クライアント200の全体処理部211は、基本演算部217が出力した結果に応じ、連結データ1402から抽出した平文登録データ1410を検索結果とする処理を行い、平文登録データ1410を復元する処理(S1209)を終了する(S1411)。例えば、図14Cに示すように、検索クライアント200が、全体処理部211が入力した連結データ1409から、データ初めのmビットを平文登録データ1410とみなす。
【0279】
なお、DBサーバ300の不正対策に万全を期したい場合、検索に該当した検索結果はDBサーバ300から削除し、復号化した平文登録データ1410の順番をランダムにシャッフルした後、検索クライアント200または登録クライアント100から、DBサーバ300に秘匿登録データを再登録するように処理してもよい。
【符号の説明】
【0280】
100:登録クライアント、200:検索クライアント、300:DBサーバ、400:ネットワーク、500:コンピュータ、101、201、301:入力部、102、202、302:出力部、103、203、303:通信部、110、210、310:制御部、111、211、311:全体処理部、112、212:暗号化部、213、313:復号化部、114、214:擬似乱数生成部、115、215、315:圧縮関数部、116、216、316:準同型関数部、117、217、317:基本演算部、120、220、320:記憶部、130:登録データ記憶部、131、272、701、1410:平文登録データ、132、271、712、1304、1401:秘匿登録データ、133、233:属性、230、330:検索クエリ記憶部、231、1101:平文検索クエリ、232、332、1111、1300:秘匿検索クエリ、340:データベース記憶部、341:データベース、150、250、350:秘密鍵記憶部、151、251、351:秘密鍵、160、260、360:パラメータ記憶部、161、261、361:関数パラメータ、162、262:検査パラメータ、270:受信データ記憶部、180、280、380:一時情報記憶部、501:CPU(Central Processing Unit)、502:メモリ、503:外部記憶装置、508:記憶媒体、507:読書装置、506:入力装置、505:出力装置、504:通信装置、509:内部通信線、600:出力部101の表示内容、610:管理方法の選択部、620:管理フォーム部、621、1011:属性、622、1022:入力フォーム、650:実行ボタン、660、1060:クリアボタン、1000:出力部102の表示内容、1010:検索項目部、1020:検索フォーム部、1050:検索ボタン、702、1411:誤り検査データ、703、704、1103、1104、1108、1301、1308、1311、1409:連結データ、705:データCR、706:データPR、707:データHR、708:データFR、709:データGR、711:データDR、1102:誤り検査データ、1105:データCS、1106:データPS、1107:データFS、1110:データDS、1302:データDS、1303:データFS、1305:データPR、1306:データDR、1307:データGR、1309:データDR、1310:データDS、1312:データFD、1313:データDD、1314:データGD、1315:データED、1402:データPR、1403:データDR、1404:データGR、1405:データCR、1407:データHS。
【特許請求の範囲】
【請求項1】
確率的暗号化方式により暗号化された登録データを記憶するDBサーバと、
検索クライアントとを含み、
前記検索クライアントから受信した、前記DBサーバが記憶するデータの検索を要求する検索クエリに従い、前記DBサーバが記憶する前記データの暗号化を解除せずに、検索する検索可能暗号処理システムであって、
前記確率的暗号化方式は、同一のデータ値の平文から異なるデータ値の暗号文を生成するデータの暗号化方式であり、
前記検索クライアントは、前記検索クエリを記憶する記憶部と、前記検索クエリを暗号化する制御部と、暗号化した前記検索クエリを送信する通信部とを備え、
前記検索クライアントにおける前記制御部は、第1の乱数を生成する乱数生成部と、前記第1の乱数により前記検索クエリを前記確率的暗号化方式で暗号化する基本演算部と、前記第1の乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
前記検索クライアントにおける前記制御部は、前記準同型関数部が出力した前記関数値を変換し、ハッシュ値を出力する圧縮関数部を備え、
前記DBサーバは、前記検索クエリを受信する通信部と、暗号化された前記検索クエリと暗号化された前記登録データを記憶する記憶部と、記憶する前記登録データが前記検索クエリに該当するかを決定する制御部とを備え、
前記DBサーバにおける前記制御部は、暗号化された前記登録データと暗号化された前記検索クエリとの乱数の相関を導出する全体処理部と、前記相関を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
前記検索クライアントが送信する暗号化された前記検索クエリは、前記基本演算部により、前記確率的暗号化方式で暗号化された暗号文と、前記圧縮関数部が出力する前記ハッシュ値から構成されるデータが暗号化されていることを特徴とする検索可能暗号処理ステム。
【請求項2】
確率的暗号化方式により、暗号化された登録データを記憶するDBサーバと、
検索クライアントとを含み、
前記検索クライアントから受信した、前記DBサーバが記憶するデータの検索を要求する検索クエリに従い、前記DBサーバが記憶する前記データの暗号化を解除せずに、検索する検索可能暗号処理システムであって、
前記確率的暗号化方式は、同一のデータ値の平文から異なるデータ値の暗号文を生成するデータの暗号化方式であり、
前記検索クライアントは、前記検索クエリを記憶する記憶部と、前記検索クエリを暗号化する制御部と、暗号化した前記検索クエリを送信する通信部とを備え、
前記検索クライアントにおける前記制御部は、乱数を生成する乱数生成部と、前記乱数により前記検索クエリを前記確率的暗号化方式で暗号化する基本演算部と、前記乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
前記DBサーバは、前記検索クエリを受信する通信部と、暗号化された前記検索クエリと暗号化された前記登録データを記憶する記憶部と、記憶する前記登録データが前記検索クエリに該当するかを決定する制御部とを備え、
前記DBサーバにおける前記制御部は、暗号化された前記登録データと、暗号化された前記検索クエリとの乱数の相関を導出する全体処理部と、前記相関を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
前記検索クライアントが送信する暗号化された前記検索クエリは、前記基本演算部により、前記確率的暗号化方式で暗号化された前記データと、前記準同型関数部が出力した前記関数値から構成されるデータが暗号化されることを特徴とする検索可能暗号処理ステム。
【請求項3】
請求項1記載の検索可能暗号処理システムであって、
、前記確率的暗号化方式により、前記登録データを暗号化する登録クライアントを有し、
前記DBサーバの前記通信部は、暗号化した前記登録データを受信し、前記DBサーバの前記記憶部は前記登録データを記憶し、
前記登録クライアントは、前記登録データを記憶する記憶部と、前記登録データを暗号化する制御部と、暗号化した前記登録データを送信する通信部とを備え、
前記登録クライアントにおける前記制御部は、第2の乱数を生成する乱数生成部と、前記第2の乱数により前記登録データを前記確率的暗号化方式で暗号化する基本演算部と、前記第2の乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部と、を備えることを特徴とする検索可能暗号処理ステム。
【請求項4】
請求項3記載の検索可能暗号処理システムであって、
前記登録クライアントが送信する暗号化された前記登録データは、前記乱数部が出力した前記第2の乱数と、前記基本演算部により前記確率的暗号化方式で暗号化された暗号文と、前記準同型関数部が出力する前記関数値から構成されることを特徴とする検索可能暗号処理システム。
【請求項5】
請求項4記載の検索可能暗号処理システムであって、
前記DBサーバの前記通信部は、前記検索クエリに該当する、暗号化された前記登録データを送信し、
前記検索クライアントの前記通信部は、暗号化された前記登録データを受信し、前記検索クライアントの前記制御部は、前記登録データを復号化し、
前記検索クライアントの前記制御部は、暗号化された前記登録データを暗号化した第3の乱数を出力する圧縮関数部を備え、前記検索クライアントの前記基本演算部は、前記登録データの暗号化を解除することを特徴とする検索可能暗号処理ステム。
【請求項6】
請求項5記載の検索可能暗号処理システムであって、
前記DBサーバの前記基本演算部は、前記登録データから任意のデータを抽出し、前記圧縮関数部が出力した前記第3の乱数から、指定されたデータ長分を検査することを特徴とする検索可能暗号処理ステム。
【請求項7】
請求項6記載の検索可能暗号処理システムであって、
前記登録クライアントの前記記憶部は、前記登録クライアントの前記準同型関数部に入力可能な関数パラメータを記憶し、
前記検索クライアントの前記記憶部は、前記検索クライアントの前記準同型関数部に入力可能な関数パラメータを記憶し、
前記DBサーバの前記記憶部は、前記DBサーバの前記準同型関数部に入力可能な関数パラメータを記憶することを特徴とする検索可能暗号処理システム。
【請求項8】
請求項7記載の検索可能暗号処理システムであって、
前記検索クライアントの前記記憶部は、暗号化を解除した前記登録データの検査用のパラメータを記憶し、
前記検索クライアントは、暗号化を解除した前記登録データから検査用のデータを抽出し、前記検査用のパラメータとの関係を検査する全体処理部を備えることを特徴とする検索可能暗号処理ステム。
【請求項9】
請求項8記載の検索可能暗号処理システムであって、
前記登録クライアントは、前記登録データを決定的暗号化方式で暗号化する暗号化部を備え、
前記決定的暗号化方式は、同一のデータ値の平文からデータ値が等しい暗号文を生成するデータの暗号化方式であることを特徴とする検索可能暗号処理ステム。
【請求項10】
請求項9記載の検索可能暗号処理システムであって、
前記登録クライアントの前記記憶部は、暗号化されていない、登録用のデータを記憶し、前記登録クライアントの前記記憶部に記憶した検査用のパラメータから、誤り検査用のデータを抽出し、前記登録用のデータと結合させる全体制御部を備えることを特徴とする検索可能暗号処理ステム。
【請求項1】
確率的暗号化方式により暗号化された登録データを記憶するDBサーバと、
検索クライアントとを含み、
前記検索クライアントから受信した、前記DBサーバが記憶するデータの検索を要求する検索クエリに従い、前記DBサーバが記憶する前記データの暗号化を解除せずに、検索する検索可能暗号処理システムであって、
前記確率的暗号化方式は、同一のデータ値の平文から異なるデータ値の暗号文を生成するデータの暗号化方式であり、
前記検索クライアントは、前記検索クエリを記憶する記憶部と、前記検索クエリを暗号化する制御部と、暗号化した前記検索クエリを送信する通信部とを備え、
前記検索クライアントにおける前記制御部は、第1の乱数を生成する乱数生成部と、前記第1の乱数により前記検索クエリを前記確率的暗号化方式で暗号化する基本演算部と、前記第1の乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
前記検索クライアントにおける前記制御部は、前記準同型関数部が出力した前記関数値を変換し、ハッシュ値を出力する圧縮関数部を備え、
前記DBサーバは、前記検索クエリを受信する通信部と、暗号化された前記検索クエリと暗号化された前記登録データを記憶する記憶部と、記憶する前記登録データが前記検索クエリに該当するかを決定する制御部とを備え、
前記DBサーバにおける前記制御部は、暗号化された前記登録データと暗号化された前記検索クエリとの乱数の相関を導出する全体処理部と、前記相関を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
前記検索クライアントが送信する暗号化された前記検索クエリは、前記基本演算部により、前記確率的暗号化方式で暗号化された暗号文と、前記圧縮関数部が出力する前記ハッシュ値から構成されるデータが暗号化されていることを特徴とする検索可能暗号処理ステム。
【請求項2】
確率的暗号化方式により、暗号化された登録データを記憶するDBサーバと、
検索クライアントとを含み、
前記検索クライアントから受信した、前記DBサーバが記憶するデータの検索を要求する検索クエリに従い、前記DBサーバが記憶する前記データの暗号化を解除せずに、検索する検索可能暗号処理システムであって、
前記確率的暗号化方式は、同一のデータ値の平文から異なるデータ値の暗号文を生成するデータの暗号化方式であり、
前記検索クライアントは、前記検索クエリを記憶する記憶部と、前記検索クエリを暗号化する制御部と、暗号化した前記検索クエリを送信する通信部とを備え、
前記検索クライアントにおける前記制御部は、乱数を生成する乱数生成部と、前記乱数により前記検索クエリを前記確率的暗号化方式で暗号化する基本演算部と、前記乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
前記DBサーバは、前記検索クエリを受信する通信部と、暗号化された前記検索クエリと暗号化された前記登録データを記憶する記憶部と、記憶する前記登録データが前記検索クエリに該当するかを決定する制御部とを備え、
前記DBサーバにおける前記制御部は、暗号化された前記登録データと、暗号化された前記検索クエリとの乱数の相関を導出する全体処理部と、前記相関を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、
前記検索クライアントが送信する暗号化された前記検索クエリは、前記基本演算部により、前記確率的暗号化方式で暗号化された前記データと、前記準同型関数部が出力した前記関数値から構成されるデータが暗号化されることを特徴とする検索可能暗号処理ステム。
【請求項3】
請求項1記載の検索可能暗号処理システムであって、
、前記確率的暗号化方式により、前記登録データを暗号化する登録クライアントを有し、
前記DBサーバの前記通信部は、暗号化した前記登録データを受信し、前記DBサーバの前記記憶部は前記登録データを記憶し、
前記登録クライアントは、前記登録データを記憶する記憶部と、前記登録データを暗号化する制御部と、暗号化した前記登録データを送信する通信部とを備え、
前記登録クライアントにおける前記制御部は、第2の乱数を生成する乱数生成部と、前記第2の乱数により前記登録データを前記確率的暗号化方式で暗号化する基本演算部と、前記第2の乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部と、を備えることを特徴とする検索可能暗号処理ステム。
【請求項4】
請求項3記載の検索可能暗号処理システムであって、
前記登録クライアントが送信する暗号化された前記登録データは、前記乱数部が出力した前記第2の乱数と、前記基本演算部により前記確率的暗号化方式で暗号化された暗号文と、前記準同型関数部が出力する前記関数値から構成されることを特徴とする検索可能暗号処理システム。
【請求項5】
請求項4記載の検索可能暗号処理システムであって、
前記DBサーバの前記通信部は、前記検索クエリに該当する、暗号化された前記登録データを送信し、
前記検索クライアントの前記通信部は、暗号化された前記登録データを受信し、前記検索クライアントの前記制御部は、前記登録データを復号化し、
前記検索クライアントの前記制御部は、暗号化された前記登録データを暗号化した第3の乱数を出力する圧縮関数部を備え、前記検索クライアントの前記基本演算部は、前記登録データの暗号化を解除することを特徴とする検索可能暗号処理ステム。
【請求項6】
請求項5記載の検索可能暗号処理システムであって、
前記DBサーバの前記基本演算部は、前記登録データから任意のデータを抽出し、前記圧縮関数部が出力した前記第3の乱数から、指定されたデータ長分を検査することを特徴とする検索可能暗号処理ステム。
【請求項7】
請求項6記載の検索可能暗号処理システムであって、
前記登録クライアントの前記記憶部は、前記登録クライアントの前記準同型関数部に入力可能な関数パラメータを記憶し、
前記検索クライアントの前記記憶部は、前記検索クライアントの前記準同型関数部に入力可能な関数パラメータを記憶し、
前記DBサーバの前記記憶部は、前記DBサーバの前記準同型関数部に入力可能な関数パラメータを記憶することを特徴とする検索可能暗号処理システム。
【請求項8】
請求項7記載の検索可能暗号処理システムであって、
前記検索クライアントの前記記憶部は、暗号化を解除した前記登録データの検査用のパラメータを記憶し、
前記検索クライアントは、暗号化を解除した前記登録データから検査用のデータを抽出し、前記検査用のパラメータとの関係を検査する全体処理部を備えることを特徴とする検索可能暗号処理ステム。
【請求項9】
請求項8記載の検索可能暗号処理システムであって、
前記登録クライアントは、前記登録データを決定的暗号化方式で暗号化する暗号化部を備え、
前記決定的暗号化方式は、同一のデータ値の平文からデータ値が等しい暗号文を生成するデータの暗号化方式であることを特徴とする検索可能暗号処理ステム。
【請求項10】
請求項9記載の検索可能暗号処理システムであって、
前記登録クライアントの前記記憶部は、暗号化されていない、登録用のデータを記憶し、前記登録クライアントの前記記憶部に記憶した検査用のパラメータから、誤り検査用のデータを抽出し、前記登録用のデータと結合させる全体制御部を備えることを特徴とする検索可能暗号処理ステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図8】
【図9A】
【図9B】
【図10】
【図11A】
【図11B】
【図11C】
【図12】
【図13A】
【図13B】
【図13C】
【図13D】
【図14A】
【図14B】
【図14C】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図8】
【図9A】
【図9B】
【図10】
【図11A】
【図11B】
【図11C】
【図12】
【図13A】
【図13B】
【図13C】
【図13D】
【図14A】
【図14B】
【図14C】
【公開番号】特開2012−123614(P2012−123614A)
【公開日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願番号】特願2010−273556(P2010−273556)
【出願日】平成22年12月8日(2010.12.8)
【国等の委託研究の成果に係る記載事項】(出願人による申告)国等の委託研究の成果に係る特許出願(平成22年度 総務省「大規模仮想化サーバ環境におけるセキュリティ対策技術の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願日】平成22年12月8日(2010.12.8)
【国等の委託研究の成果に係る記載事項】(出願人による申告)国等の委託研究の成果に係る特許出願(平成22年度 総務省「大規模仮想化サーバ環境におけるセキュリティ対策技術の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]