JP6381128B2 - 検索システム、クライアント、サーバ、検索プログラムおよび検索方法 - Google Patents

検索システム、クライアント、サーバ、検索プログラムおよび検索方法 Download PDF

Info

Publication number
JP6381128B2
JP6381128B2 JP2015021572A JP2015021572A JP6381128B2 JP 6381128 B2 JP6381128 B2 JP 6381128B2 JP 2015021572 A JP2015021572 A JP 2015021572A JP 2015021572 A JP2015021572 A JP 2015021572A JP 6381128 B2 JP6381128 B2 JP 6381128B2
Authority
JP
Japan
Prior art keywords
value
client
polynomial
server
attribute name
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015021572A
Other languages
English (en)
Other versions
JP2016143048A (ja
Inventor
ナッタポン アッタラパドゥン
ナッタポン アッタラパドゥン
花岡 悟一郎
悟一郎 花岡
光司 縫田
光司 縫田
隆宏 松田
隆宏 松田
唯紀 照屋
唯紀 照屋
祐介 坂井
祐介 坂井
チョンヤン チャン
チョンヤン チャン
佳奈 清水
佳奈 清水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Institute of Advanced Industrial Science and Technology AIST
Original Assignee
National Institute of Advanced Industrial Science and Technology AIST
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Institute of Advanced Industrial Science and Technology AIST filed Critical National Institute of Advanced Industrial Science and Technology AIST
Priority to JP2015021572A priority Critical patent/JP6381128B2/ja
Publication of JP2016143048A publication Critical patent/JP2016143048A/ja
Application granted granted Critical
Publication of JP6381128B2 publication Critical patent/JP6381128B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、検索システム、クライアント、サーバ、検索プログラムおよび検索方法に関する。
データベースを持つサーバに対して、クライアントから検索を行うシステムがある。このようなシステムにおいて、クライアントは検索キーをサーバに知られたくない場合や、サーバは不必要にデータをクライアントに知られたくない場合もある(例えば、特許文献1)。このような検索は秘匿検索とも呼ばれる。秘匿検索に関連して、特許文献2および非特許文献1〜15が知られている。
国際公開第2013/098698号 米国特許第8045711号
Nergiz, A. E., Nergiz, M. E., Pedersen, T., & Clifton, C., "Practical and Secure Integer Comparison and Interval Check", In Proc. of IEEE Second International Conference on Social Computing 2010, pp. 791-799 (2010) http://eprint.iacr.org/2005/043.pdf http://www.win.tue.nl/~berry/papers/pkc07intcomp.pdf http://arxiv.org/pdf/1401.3768v1.pdf http://arxiv.org/pdf/1310.8063v1.pdf http://www.internetsociety.org/sites/default/files/04_1.pdf Boyang W., Yantian H., Ming L., Haitao W., Hui L., "Maple Scalable Multi-Dimensional Range Search over Encrypted Cloud Data with Tree-based Index", In Proc. of ASIACCS 2014, pp. 111-122 http://www.cs.ucr.edu/~ravi/Papers/DBConf/rhat_trees.pdf Kaghazgaran P., "Secure two party comparison over encrypted data", In Proc. of IEEE WICT 2010, pp. 1123-1126 Zhenmin L., Jaromczyk J.W., "An efficient secure comparison protocol", In Proc. of IEEE ISI 2012, pp. 30-35 Freedman, M., Ishai, Y., Pinkas, B., Reingold, O., "Keyword search and oblivious pseudorandom functions", In TCC 2005, pp.303-324 Jarecki S., Liu X., "Efficient oblivious pseudorandom function with applications to adaptive ot and secure computation of set intersection", In TCC 2005, pp.577-594 Blake I., Kolesnikov V., "Strong conditional oblivious transfer and computing on intervals", In Asiacrypt 2004, pp. 515-529 Cristofaro D.E., Lu Y., Tsudik G, "Efficient Techniques for Privacy-Preserving Sharing of Sensitive Information", In Trust 2011, pp. 239-253 Boneh D., Gentry C., Halevi S., Wang F., Wu D., "Private Database Queries Using Somewhat Homomorphic Encryption", In ACNS 2013, pp.102-118
しかしながら、これらの文献に記載の検索では、特定条件での検索しかできないことや、検索の処理量が多いことが問題となる。
本発明はこのような問題点に鑑みてなされたものであり、本発明の課題は汎用的かつ効率的な秘匿検索を実現する検索システム、クライアント、サーバ、検索プログラムおよび検索方法を提供することである。
本発明の一態様によれば、クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索システムであって、前記クライアントは、前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式を生成する多項式生成手段と、加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記多項式の係数を暗号化してクライアント側暗号値を生成する暗号化手段と、を有し、前記サーバは、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記クライアント側暗号値を用い、前記多項式の係数が暗号化された状態で、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を生成する暗号化状態処理手段を有し、前記クライアントは、さらに、前記サーバ側暗号値を解読する復号手段と、解読結果に前記チェックサムが含まれる場合に、前記解読結果から前記データを取得するデータ取得手段と、を有する、検索システムが提供される。
前記所定の条件は、前記クライアントへの入力と前記属性名の値とが第1条件および第2条件の少なくとも一方を満たすことであり、前記多項式生成手段は、前記第1条件を満たす場合に0となる第1多項式と、前記第2条件を満たす場合に0となる第2多項式と、を生成し、前記第1多項式および前記第2多項式を乗じて、前記多項式を生成してもよい。
前記所定の条件は、前記クライアントへの入力と前記属性名の値とが第1条件および第2条件の一方のみを満たすことであり、前記多項式生成手段は、前記多項式として、前記第1条件を満たす場合に0となる第1多項式と、前記第2条件を満たす場合に0となる第2多項式と、を生成し、前記暗号化手段は、前記クライアント側暗号値として、前記第1多項式の係数および前記第2多項式の係数を暗号化して第1クライアント側暗号値および第2クライアント側暗号値をそれぞれ生成し、前記暗号化状態処理手段は、前記第1クライアント側暗号値を用い、前記第1多項式における変数を前記属性名の値で置き換えた値と第1ランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値である第1サーバ側暗号値を生成するとともに、前記第2クライアント側暗号値を用い、前記第2多項式における変数を前記属性名の値で置き換えた値と第2ランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値である第2サーバ側暗号値を生成し、前記第1サーバ側暗号値および前記第2サーバ側暗号値をシャッフルして、これらを前記サーバ側暗号値としてもよい。
前記所定の条件は、前記クライアントへの入力と前記属性名の値とが第1条件および第2条件の両方を満たすことであり、前記多項式生成手段は、前記第1条件を満たす場合に0となる第1多項式と、前記第2条件を満たす場合に0となる第2多項式と、を生成し、前記第1多項式と第1ランダム値との積と、前記第2多項式と第2ランダム値との積とを加えて前記多項式を生成してもよい。
前記所定の条件は、前記クライアントへの入力と前記属性名の値とが第1条件および第2条件の両方を満たすことであり、前記多項式生成手段は、前記多項式として、前記第1条件を満たす場合に0となる第1多項式と、前記第2条件を満たす場合に0となる第2多項式と、を生成し、前記暗号化手段は、前記クライアント側暗号値として、前記第1多項式の係数および前記第2多項式の係数を暗号化して第1クライアント側暗号値および第2クライアント側暗号値をそれぞれ生成し、前記暗号化状態処理手段は、前記第1クライアント側暗号値および前記第2クライアント側暗号値を用い、前記第1多項式における変数を前記属性名の値で置き換えた値と第1ランダム値との積と、前記第2多項式における変数を前記属性名の値で置き換えた値と第2ランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値を前記サーバ側暗号値として生成してもよい。
前記サーバへの入力には、複数のインデックスに対応する複数の前記属性名の値が含まれ、前記暗号化状態処理手段は、前記複数のインデックスのそれぞれに対して、前記データを所定の仮想値とする前記サーバ側暗号値を生成し、前記復号手段は、前記サーバ側暗号値のそれぞれを解読し、前記データ取得手段は、前記データが前記所定の仮想値である解読結果の数に基づいて、前記所定の関係を満たすインデックスの数を算出してもよい。
前記所定の条件は、前記クライアントへの入力が前記属性名の値と一致することであってもよい。
前記クライアントへの入力は2つの値で定められる範囲であり、前記所定の条件は、前記範囲に前記属性名の値が含まれることであってもよい。
この場合、前記2つの値および属性名がとり得る値の数はn個(nは2以上の整数)であり、前記多項式生成手段は、レベル数が(logn+1)以上の最小の整数である2分木であって、各ノードにはユニークなノード名が割り当てられており、最下位レベルにおけるノードのそれぞれが前記クライアントへの入力がとり得る値のそれぞれに対応付けられる2分木において、前記範囲をカバーするノードのノード名が、前記属性名の値に基づく所定のノード名と一致する場合に0となる前記多項式を生成し、前記暗号化状態処理手段は、前記多項式生成手段の2分木と同じ構造の2分木であって、最下位レベルにおけるノードのそれぞれが前記属性名が取り得る値のそれぞれに対応付けられる2分木において、前記最下位レベルにおける前記属性名の値に対応付けられたノードに到達するまでに経由されるノードのノード名で、前記多項式における変数を置き換えた値から前記サーバ側暗号値を生成してもよい。
さらにこの場合、前記多項式生成手段は、前記範囲をカバーするノードをレベルごとに特定し、特定されたノードが2つ未満であるレベルについては、ノード名として用いられていないダミーのノード名を用いて各ノードの変数を2つずつとして、前記多項式を生成するのが望ましい。
前記属性名の範囲は2つの値で定められ、前記所定の条件は、前記範囲に前記クライアントへの入力が含まれることであってもよい。
この場合、前記クライアントへの入力および前記2つの値がとり得る値の数はn個(nは2以上の整数)であり、前記多項式生成手段は、レベル数が(logn+1)以上の最小の整数である2分木であって、各ノードにはユニークなノード名が割り当てられており、最下位レベルにおけるノードのそれぞれが前記クライアントへの入力がとり得る値のそれぞれに対応付けられる2分木において、前記最下位レベルにおける前記属性名の値に対応付けられたノードに到達するまでに経由されるノードのノード名が、前記範囲に基づく所定のノード名と一致する場合に0となる前記多項式を生成し、前記暗号化状態処理手段は、前記多項式生成手段の2分木と同じ構造の2分木であって、最下位レベルにおけるノードのそれぞれが前記属性名が取り得る値のそれぞれに対応付けられる2分木において、前記範囲をカバーするノードのノード名で、前記多項式における変数を置き換えた値から前記サーバ側暗号値を生成してもよい。
前記クライアントへの入力は第1入力値および第2入力値で定められる第1範囲であり、前記属性の範囲は第1属性値および第2属性値で定められる第2範囲であり、前記所定の条件は、前記第1範囲および前記第2範囲の少なくとも一部が重複することであってもよい。
この場合、前記多項式生成手段は、前記第1入力値が前記第2範囲に含まれること、前記第2入力値が前記第2範囲に含まれること、前記第1属性値が前記第1範囲に含まれること、および、前記第2属性値が前記第1範囲に含まれること、の少なくとも1つが満たされる場合に0となる前記多項式を生成してもよい。
前記クライアントへの入力は前記サーバには知られないのが望ましい。また、前記所定の関係を満たさない場合、前記データは前記クライアントには知られないのが望ましい。
また、本発明の別の態様によれば、クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバからデータを取得可能な検索システムにおけるクライアントであって、前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式を生成する多項式生成手段と、加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記多項式の係数を暗号化してクライアント側暗号値を生成する暗号化手段と、前記サーバが、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記クライアント側暗号値を用い、前記多項式の係数が暗号化された状態で生成した、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を解読する復号手段と、解読結果に前記チェックサムが含まれる場合に、前記解読結果から前記データを取得するデータ取得手段と、を有する、クライアントが提供される。
また、本発明の別の態様によれば、クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索システムにおけるクライアントを、前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式を生成する多項式生成手段と、加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記多項式の係数を暗号化してクライアント側暗号値を生成する暗号化手段と、前記サーバが、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記クライアント側暗号値を用い、前記多項式の係数が暗号化された状態で生成した、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を解読する復号手段と、解読結果に前記チェックサムが含まれる場合に、前記解読結果から前記データを取得するデータ取得手段と、として機能させる、検索プログラムが提供される。
また、本発明の別の態様によれば、クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索システムにおけるサーバであって、前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式の係数を、加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記クライアントが暗号化したクライアント側暗号値を用い、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記多項式の係数が暗号化された状態で、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を生成する暗号化状態処理手段を有する、サーバが提供される。
また、本発明の別の態様によれば、クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索システムにおけるサーバを、前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式の係数を、加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記クライアントが暗号化したクライアント側暗号値を用い、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記多項式の係数が暗号化された状態で、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を生成する暗号化状態処理手段として機能させる、検索プログラムが提供される。
また、本発明の別の態様によれば、クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索方法であって、前記クライアントが、前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式を生成し、前記クライアントが、加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記多項式の係数を暗号化してクライアント側暗号値を生成し、前記サーバが、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記クライアント側暗号値を用い、前記多項式の係数が暗号化された状態で、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を生成し、前記クライアントが、前記サーバ側暗号値を解読し、前記クライアントが、解読結果に前記チェックサムが含まれる場合に、前記解読結果から前記データを取得する、検索方法が提供される。
クライアントへの入力と、サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に0となる多項式を生成する。検索条件に応じた多項式を生成することで、汎用的な秘匿検索が可能となる。また、複数の条件を多項式として表現することで、効率的な秘匿検索が可能となる。
本発明に係る検索システムの概念を説明する図。 サーバ2への入力bのデータ形式の一例を示す図。 検索システムの関数fを説明する図。 述語Paの具体例を示す図。 論理式P(Predicate)、結合C(Conjunction)および関数fの出力の種類Y(Return Type)の組み合わせを示す図。 論理式Pの具体例を説明する図。 結合Cの具体例を説明する図。 論理式Pが「Equal」であり、結合Cが「None」(論理式が1つのみ)である場合の検索を説明する図。 論理式Pが「Equal」であり、結合Cが「None」(論理式が1つのみ)である場合の検索を説明する図。 論理式Pが「Equal」であり、結合Cが「OR」(属性は1つ)である場合の検索を説明する図。 検索システムにおけるクライアント1およびサーバ2の内部構成の一例を示すブロック図。 結合Cが「OR」および「AND」である場合の検索手法を概説する図。 結合Cが「OR」である場合の検索手法を説明する図。 結合Cが「OR」である場合の検索手法を説明する図。 結合Cが「AND」である場合の検索手法を説明する図。 結合Cが「AND」である場合の検索手法を説明する図。 論理式Pが「Range/Point inclusion」である場合の検索手法を説明する図。 「OR」の処理と、クライアント1サーバ2間の通信量との関係を模式的に示す図。 OR1,OR2とも手法1で行う場合の通信量を説明する図。 OR1を手法1で行い、OR2を手法2で行う場合の通信量を説明する図。 OR1,OR2とも手法2で行う場合の通信量を説明する図。 論理式Pが「Range/Point inclusion」であり、結合Cが「AND」である場合の検索手法を説明する図。 「AND」および「OR」の処理と、クライアント1サーバ2間の通信量との関係を模式的に示す図。 OR1を手法1で行い、OR2を手法2で行い、ANDを手法1で行う場合の通信量を説明する図。 OR1を手法1で行い、OR2を手法2で行い、ANDを手法2で行う場合の通信量を説明する図。 OR1,OR2を手法2で行い、ANDを手法1で行う場合の通信量を説明する図。 OR1,OR2を手法2で行い、ANDを手法2で行う場合の通信量を説明する図。 論理式Pが「Point/Range inclusion」である場合の検索手法を説明する図。 論理式Pが「Range/Range intersect」である場合の検索手法を説明する図。 論理式Pが「Range/Range intersect」である場合の検索手法を説明する図。
以下、本発明に係る実施形態について、図面を参照しながら具体的に説明する。
図1は、本発明に係る検索システムの概念を説明する図である。検索システムはクライアント1およびサーバ2から構成され、関数fによって定義される。クライアント1にはユーザから入力aが指定される。そして、検索を実行すべく、クライアント1は入力aに基づくクエリQをサーバ2に送信する。また、クライアント1は内部の秘密情報Kを持っている。そして、サーバ2は、入力bおよび送信されたクエリQに基づいて、レスポンスRをクライアント1に返す。そして、クライアント1は、レスポンスRおよび内部の秘密情報Kを使って出力Tを生成し、これをユーザに提示する。
この処理過程において、以下の秘匿条件を満たさなければならないとする。
I.完全性:
クライアント1の出力Tはf(a,b)である。
II.安全性:
(1)クライアント1の安全性:入力aをサーバ2に知られてはならない。
(2)サーバ2の安全性:入力bや、出力f(a,b)から計算できる情報以外をクライアント1に知られてはならない。
図2は、サーバ2への入力bのデータ形式の一例を示す図である。このデータ形式はn行(k+1)列の行列である。1つの行は1つのデータの組であり、列1から列kまでのデータは「属性値」を示し、列k+1は「ペイロード」を示す。行iの名前を「インデックスi」と呼ぶ。列jの名前は属性名jであり、それぞれを特定の名前で定義することができる。
図2(b)は、図2(a)のデータが衛星写真である場合の具体例である。この例において、属性名は撮影時刻(time)撮影を行った衛星の緯度(X-axis position)、衛星の経度(Y-axis position)、衛星の高度(level)である。また、ペイロードは撮影により得られた写真である。
図3は、検索システムの関数fを説明する図である。クライアント1の入力aの形式は述語であり、Paと表す。述語Paの入力はk個の属性値であり、出力は「真」もしくは「偽」である。関数fは次のように定義される。関数fはaとbを入力とする。入力aは述語Paであり、入力bは行列である。行列bの行iの列1〜kまでの属性値をVi1,・・・,Vikとし、列k+1のペイロードをdiとする。関数fは、すべての行iに対してPa(vi1,・・・,vik)が真となるペイロードdiのみからなる集合を出力する。
図4は、述語Paの具体例を示す図である。図4(a)において、クライアント1の入力aは(a1,a2)からなり、述語Paは次のように定義される。(v1,v2)に対し、もしa1=v1かつa2=v2であれば、Pa(v1,v2)=True(真)であり、それ以外の場合はPa(v1,v2)=False(偽)である。この述語Paは「AND」の機能を果たしていることから、述語Paを「Pa1(x1) AND Pa2(x2)」と表す。ここで、x1,x2は属性1および属性2の各属性名である(以下、「属性iの属性名」を「属性名xi」と表記する)。
図4(b)は、図3の検索システムに図4(a)の述語Paの定義を適用したシステムである。この処理過程において、上記の「完全性」と「安全性」を満たさなければならないとする。すなわち、
I.完全性:
クライアント1は、述語Pa1(x1)が真(つまり入力a1が属性名x1の値と一致)であり、かつ、述語Pa2(x2)が真(つまり入力a2が属性名x2の値と一致)となるインデックスiにおけるデータdiを、サーバ2から取得する。(例えば、v21=a1かつv22=a2である場合、クライアント1はサーバ2からデータd2を取得できる。)
II.安全性:
(1)クライアント1の安全性:入力a1,a2をサーバ2に知られてはならない。なお、検索の述語が結合が「AND」であることは関数fの定義に含まれているので、知られてもよい。
(2)サーバ2の安全性:行列bの属性値v11,・・・,vnkをクライアント1に知られてはならない。また、上記述語Paが真にならないインデックスjにおけるデータdjをクライアント1に知られてはならない。
図4は1つの例であるが、検索の種類として、述語P、述語どうしの結合CおよびレスポンスRには種々なパターンが考えられる。
図5は、述語P(Predicate、論理式とも呼ぶ)、結合C(Conjunction)および関数fの出力の種類Y(Return Type、戻り値とも呼ぶ)の組み合わせを示す図である。また、図6および図7は、論理式Pおよび結合Cの具体例をそれぞれ説明する図である。
まずは図6を用いて論理式Pについて説明する。説明の簡略化のために属性は1つでありその属性名はxのみであるとする。
論理式Pの一例は「Equal」(一致)である(図6(a))。サーバ2に入力される属性名xの値が1つの値(vとする)である場合に設定可能な論理式であり、クライアント1にも入力として1つの値(aとする)がユーザから与えられる。そして、入力aと属性名xの値vとが一致(a=v)する場合に、論理式Pは真となる。
論理式Pの別の例は「Range/Point inclusion」(範囲が点を包含)である(図6(b))。サーバ2に入力される属性名xの値が1つの値(vとする)である場合に設定可能な論理式であり、クライアント1には入力としては2つの値で定まる範囲([a,b]すなわち「a以上b以下」とする)がユーザから与えられる。そして、属性名xの値vがa以上b以下(v∈[a,b])である場合に、論理式Pは真となる。
論理式Pのまた別の例は「Point/Range inclusion」(点が範囲に被包含)である(図6(c))。サーバ2に入力される属性名xの範囲が2つの値で定まる([va,vb]すなわち「va以上vb以下」とする)場合に設定可能な論理式であり、クライアント1には入力として1つの値(aとする)がユーザから与えられる。そして、入力aがva以上vb以下(a∈[va,vb])である場合に、論理式Pは真となる。
論理式Pのまた別の例は「Range/Range intersect」(範囲と範囲が交差)である(図6(d))。サーバ2に入力される属性名xの範囲が2つの値で定まる([va,vb]すなわち「va以上vb以下」とする)場合に設定可能な論理式であり、クライアント1にも入力として2つの値で定まる範囲([a,b]すなわち「a以上b以下」とする)がユーザから与えられる。そして、範囲「a以上b以下」と範囲「va以上vb以下」の少なくとも一部が重複(交差)([a,b]∩[va,vb]≠0)する場合に、論理式Pは真となる。
なお、以下の説明のために、クライアント1側の入力(例えば上記aや、aとbとの組)を単にaとして論理式をPa(x)と表記する。そして、サーバ2側の入力の属性名xの値(例えば、上記vや、vaとvbとの組)を単にvとし、クライアント1側の入力aと、サーバ2側の属性名xの値vとが所定の条件を満たす場合(Pa(v)となるとき)に、論理式Pa(x)は真となるものとする。
続いて、図7を用いて結合Cについて説明する。結合Cは論理式Pが複数ある場合の論理式どうしの関係を示すものである。説明の簡略化のために、属性名は、x1,x2の2つ、あるいは、x1〜x3の3つであるとする。そして、属性名xjの値をvjと表す。なお、属性名xが1つしかない場合、結合Cは存在しない(「None」、図7(a))。
結合Cの一例は「AND」(論理積)である(図7(b))。この場合、2つの論理式Pa(x1),Pb(x2)の「AND」をPとすると、
P=Pa(x1) AND Pb(x2)
と表される。そして、2つの論理式Pa(x1),Pb(x2)がともに真である場合に論理式Pが真となる。
結合Cの別の例は「OR」(論理和)である(図7(c))。この場合、2つの論理式Pa(x1),Pb(x2)の「OR」をPとすると、
P=Pa(x1) OR Pb(x2)
と表される。そして、2つの論理式Pa(x1),Pb(x2)の少なくとも一方が真である場合に論理式Pが真となる。
また、結合Cは「AND」および「OR」の任意に組み合わせであってもよい。図7(d)の例では、論理式Pは、
P=(Pa(x1) AND Pb(x2))OR
(Pa(x1) AND Pc(x3))
と表される。そして、「2つの論理式Pa(x1),Pb(x2)がともに真」および「2つの論理式Pa(x1),Pc(x3)がともに真」の少なくとも一方が真である場合に論理式Pが真となる。
続いて、図5を用いて戻り値Yについて説明する。
戻り値Yの一例は「Search Payload」(ペイロード検索)である。この場合、サーバ2は論理式Pおよび結合Cに基づく条件を満たすインデックスiのすべてについて、データdiをクライアント1によって解読可能な状態で返す。図4は「Search Payload」の一例である。
戻り値Yの別の例は「Count Match」(一致数カウント)である。この場合、サーバ2は論理式Pおよび結合Cに基づく条件を満たすインデックスiの数を返す。
以上説明したように、本発明に係る検索システムは、上記秘匿条件(I),(II)を満たしつつ、上述した論理式Pおよび結合Cの任意の組み合わせからなるクライアント1からのクエリに対して、「Search Payload」または「Count Match」における戻り値Yを返すシステムである。
なお、データdiをクライアント1およびサーバ2間で予め定めた仮想値(例えば0)として戻り値Yを「Search Payload」とする検索を行うと、クライアント1は、条件を満たすインデックスの数だけ、仮想値と一致するデータを取得する。すなわち、クライアント1は、仮想値と一致するデータの数から、条件を満たすインデックスの数を把握できる。よって、戻り値Yが「Search Payload」である検索を行うことで、戻り値Yが「Count Match」である検索を行うこともできる。したがって、以下では戻り値Yとして「Search Payload」のみを考える。
また、インデックスの数が複数ある場合でも、インデックスのそれぞれに対して検索を行えばよいだけなので、以下ではインデックスの数を1つとする。
以上から、インデックスの数が1つであり、戻り値Yを「Search Data」とする検索ができれば、図5に示す任意の組み合わせの汎用的な検索を実現できる。
以下、本発明に係る秘匿検索の詳細を説明する。秘匿条件を満たすために、本発明では任意の値pを暗号化して暗号値Enc(p)を生成するが、前提として暗号化処理Encおよびそれに対応する復号処理Enc−1は以下の性質を持つものとする。
・Encは公開鍵暗号方式(Public-key Encryption)による暗号化処理(Encryption)であり、クライアント1もサーバ2も値pを暗号化して暗号値Enc(p)を生成できる。
・Enc−1は復号処理(Decryption)であり、復号用の秘密情報を持つクライアント1は暗号値Enc(p)を復号して値pをEnc−1{Enc(p)}=pと復元できるが、サーバ2は復元できない。
・Encは加法準同型性(Additively Homomorphic Property)を有し、任意の値p,q,rに対して下記(1)〜(3)式を満たす。
g(Enc(p),Enc(q))=Enc(p+q) ・・・(1)
h(r,Enc(p))=Enc(rp) ・・・(2)
i(Enc(p),Enc(q))=Enc(p−q) ・・・(3)
すなわち、2つの暗号値Enc(p),Enc(q)から所定の関数gを用いて暗号値Enc(p+q)を算出できる。また、1つの定数rおよび1つの暗号値Enc(p)から所定の関数hを用いて暗号値Enc(rp)を算出できる。これらのことから、2つの暗号値Enc(p),Enc(q)から所定の関数iを用いて暗号値Enc(p−q)を算出できるのは明らかである。ただし、2つの暗号値Enc(p),Enc(q)からEnc(pq)やEnc(p/q)を算出することはできない。関数g,h,iは暗号化方式に応じて定まる関数であり、クライアント1もサーバ2も知っている。
加法準同型性を有する暗号として、Lifted ElGamal暗号、Paillier暗号、Damgard−Jurik暗号などが知られている。
図8は、論理式Pが「Equal」であり、結合Cが「None」(論理式が1つのみ)である場合の検索を説明する図である。この例では、クライアント1側の入力aと、サーバ2側の属性名xの値vとが一致する場合に、クライアント1はサーバ2からペイロードdを取得する。まずはこの単純な例を説明する。
クライアント1は入力aを暗号化してEnc(a)をクエリQとしてサーバ2に送信する。サーバ2はEnc(a)を解読できないため入力aが分からず、上記秘匿条件II(1)を満たす。
続いて、サーバ2は、戻り値Rとして、下記(4)式に示す暗号値Yを算出してクライアント1に送信する。なお、rはサーバ2が定める任意のランダムな値である。
Y=Enc{r(v−a)+(d||0,0,・・・,0)} ・・・(4)
この(4)式は、上記(1)式によれば、Enc(r(v−a))およびEnc(d||0,0,・・・,0)から算出できる。
ここでEnc(r(v−a))は上記(1),(3)式によれば下記のように変形できる。
Enc(r(v−a))=g(r,i(Enc(v),Enc(a)))
Enc(v)はサーバ2が属性値vを暗号化して得ることができる。Enc(a)はクライアント1から受信する。これにより、サーバ2はEnc(r(v−a))を算出できる。
また、Enc(d||0,0,・・・,0)は、サーバ2に入力されるデータdに、m個の0を下位ビットに結合したものを暗号化して得られる。m個の0はチェックサムの例であり、予めクライアント1とサーバ2との間で定めた値であれば他の値でもよい。
クライアント1は受信した暗号値Yを解読し、下記(5)式に示す解読結果Enc−1(Y)を出力Tとして得る。
T=Enc−1(Y)=r(v−a)+(d||0,0,・・・,0) ・・・(5)
ここで、入力aと属性値vとが一致する場合、解読結果Enc−1(Y)は下記(6)式のように変形できる。
T=Enc−1(Y)=d||0,0,・・・,0 ・・・(6)
よって、解読結果Enc−1(Y)の下位ビットにチェックサム(m個の0)が存在することに基づいて、クライアント1は入力aと属性値vとが一致したことを把握できる。そして、上記(6)式からチェックサム(m個の0)を除くことで、クライアント1はデータdを取得できる。これにより、上記秘匿条件Iを満たす。
一方、入力aと属性値vとが一致しない場合、上記(5)式に示すように、解読結果Enc−1(Y)はランダムな値rを含んだ値となる。よって、解読結果Enc−1(Y)の下位ビットにチェックサム(m個の0)は存在せず、クライアント1は入力aと属性値vとが不一致であることを把握できる。この場合、解読結果Enc−1(Y)はランダムな値rを含むため、クライアント1は属性値vやデータdを知ることができず、上記秘匿条件II(2)を満たす。
なお、入力aと属性値vとが一致しない場合でも、解読結果Enc−1(Y)に偶然チェックサムが現れる可能性もなくはない。しかしながら、mを十分大きく(例えば80ビット程度)することで実用上問題ない程度にこの可能性を低くできる。
以上図8を用いて説明してきたことは、図9のように考えることもできる。クライアント1は、属性名xの値vが入力aと一致した場合に0となる多項式P(x)を下記(7)式のように定義する。この多項式P(x)の変数は属性名xである。
P(x)=x−a ・・・(7)
なお、属性名xの最高次数の係数は1とすることをサーバ2との間で予め取り決めておく。そして、クライアント1は多項式P(x)におけるxの係数aを暗号化した暗号値Enc(a)をサーバ2に送信する。また、クライアント1は結合Cが「None」であることをサーバ2に送信する。すなわち、クエリQは、暗号値Enc(a)および結合Cが「None」であることである。
サーバ2はEnc(a)から入力aを復元できないため、サーバ2は多項式P(x)を復元できない。しかしながら、サーバ2は、以下のようにして、多項式P(x)における属性名xをその値vで置き換えた値P(v)の暗号値Enc(P(v))を算出できる。
すなわち、サーバ2は、送信された値がEnc(a)1つのみであり、結合Cが「None」であることから、クライアント1が定義した多項式P(x)が1次式であることが分かる。そこで、サーバ2は、属性名xをその値vで置き換えた値P(v)を暗号化したEnc(P(v))を下記(8)式のように算出する。
Enc(P(v))=Enc(v−a)
=i(Enc(v),Enc(a)) ・・・(8)
このように、サーバ2は、入力aや「v−a」は分からないが、属性値vを自身で暗号化して得られる暗号値Enc(v)と、クライアント1から受信する暗号値Enc(a)とから、暗号値Enc(v−a)すなわちEnc(P(v))を算出できる。
ここで、多項式P(x)を用いると、上記(4)式および(5)式は下記(9)式および(10)式のようにそれぞれ表される。
R=Y=Enc{rP(v)+(d||0,0,・・・,0)} ・・・(9)
T=Enc−1(Y)=rP(v)+(d||0,0,・・・,0) ・・・(10)
上記(10)式において、P(v)=v−a=0の場合(すなわち入力aと属性名xの値vとが一致する場合)、解読結果Enc−1(Y)は、右辺第1項が0となり、データdが得られる。
このような多項式P(x)を利用することで、結合Cが「None」の場合のみならず「OR」である場合にも拡張でき、汎用性があることを説明する。
図10は、論理式Pが「Equal」であり、結合Cが「OR」(属性は1つ)である場合の検索を説明する図である。この例では、サーバ2に入力される属性名xの値vが、クライアント1側の入力aまたはbと一致する場合に、クライアント1はサーバ2からペイロードdを取得できる。
クライアント1は、属性名xの値vが入力aまたはbと一致した場合に0となる多項式P(x)を下記(11)式のように定義する。
P(x)=(x−a)(x−b)=x−(a+b)x+ab ・・・(11)
そして、クライアント1は、多項式P(x)におけるxの係数(a+b)およびxの係数abをそれぞれ暗号化した暗号値Enc(a+b),Enc(ab)と、結合Cが「OR」であることを、クエリQとしてサーバ2に送信する。
サーバ2は、送信された値がEnc(a+b),Enc(ab)の2つであり、結合Cが「OR」であることから、クライアント1が定義した多項式P(x)が2次式であることが分かる。そして、サーバ2は、属性名xをその値vで置き換えた値P(v)を暗号化した暗号値Enc(P(v))を、下記(12)式のように算出できる。
Y=Enc(P(v))=Enc{v−(a+b)v+ab}
=g{i{Enc(v),h(v,Enc(a+b)},Enc(ab)}
・・・(12)
上記(12)式において、Enc(v)はサーバ2に入力される属性値vの2乗を暗号化したものであり、サーバ2が生成できる。Enc(a+b),Enc(ab)はクライアント1から送信される。
このようにして、サーバ2はEnc(P(v))を算出できる。このEnc(P(v))を用いて、サーバ2は上記(9)式に示す暗号値Yを算出する。そして、クライアント1はYを解読して、上記(10)式に示す解読結果Enc−1(Y)を出力Tとして算出する。
上記(10)式において、P(v)=(v−a)(v−b)=0の場合(すなわち入力aまたはbが属性名xの値vとが一致する場合)、Enc−1(Y)は、右辺第1項のP(v)が0となり、データdが得られる。
以上のようにして、結合Cが「OR」である場合でも、多項式P(x)を用いることで検索を行うことができる。なお、この手法によれば、サーバ2は、属性値vが入力aおよびbのいずれと一致したかを知られることなく、データdをクライアント1に知らせることができる。
以上、図9および図10で説明したことを、述語Pが「Equal」であり、結合Cが任意であり、属性の数がk(kは2以上の整数)である場合にまで拡張する。
図11は、検索システムにおけるクライアント1およびサーバ2の内部構成の一例を示すブロック図である。クライアント1は、多項式生成手段11と、暗号化手段12と、復号手段13と、データ取得手段14とを有する。また、サーバ2はデータベース3と暗号化状態処理手段21とを有する。
クライアント1の多項式生成手段11は、結合Cを考慮し、(a1〜ak)からなる入力aとサーバ2に入力される属性名x1〜xkの値とが所定の関係を満たす場合に0となる多項式P(x1,・・・,xk)を生成する。この多項式における変数は属性名x1〜xkの一部または全部であり、下記(13)式で表される。
上記(13)式における各係数ae1,・・・,ekの数は結合Cで定まり、それぞれの値は入力a1〜akによって定まる。
暗号化手段12は、多項式P(x1,・・・,xk)の各係数を暗号化する。暗号化の方式は、加法準同型性を有し、かつ、クライアント1は解読できるがサーバ2は解読できない公開鍵暗号方式とする。暗号された値および結合Cは、クエリQとして、クライアント1からサーバ2に送信される。係数が複数ある場合、各暗号値は、どの変数の係数を暗号化したものであるかを示す情報も付加される。
サーバ2のデータベース3は、サーバへの入力b、すなわち各属性名xiの値viと、データdiとを関連付けて記憶している。
暗号化状態処理手段21は、
(1)多項式P(x1,・・・,xk)における変数x1〜xkを、データベース3に記憶された属性値v1〜vkでそれぞれ置き換えた値P(v1,・・・,vk)と、ランダム値rとの積rP(v1,・・・,vk)と、
(2)データベース3に記憶されたdと、チェックサムであるm個の0とを連結した値(d||0,・・・,0)と、
の和の暗号化値を演算し、下記(14)式に示す暗号値Yを生成する。この暗号値はクライアント1に送信される。
Y=Enc{rP(v1,・・・,vk)+(d||0,・・・,0)} ・・・(14)
この暗号化方式はクライアント1と同様であり、演算にあたって加法準同型性が利用される。
上記(14)式の第1項について説明する。暗号化状態処理手段21は、クライアント1から送信される暗号値の数および結合Cから、多項式P(x1,・・・,xk)における各変数の次数が分かる。また、暗号化状態処理手段21は、係数そのものは分からないが、係数の暗号値を受信する。よって、上記(1)〜(3)式に示す加法準同型性を利用することで、暗号化状態処理手段21は、多項式P(v1,・・・,vk)の係数は分からなくてもこれらが暗号化された状態で、暗号値Enc(P(v1,・・・,vk))を生成できる。
クライアント1の復号手段13は、上記(14)式に示す暗号値Yを解読して、下記(15)式に示す解読結果Tを得る。
Enc−1(Y)=rP(v1,・・・,vk)+(d||0,・・・,0)
・・・(15)
データ取得手段14は解読結果に基づいて以下のようにデータdを取得する。
すなわち、サーバ2が持つ属性名x1〜xkの値v1〜vkと、入力a1〜akとが所定の関係を満たす場合、多項式P(v1,・・・,vk)=0となるから、上記(15)式右辺第1項は0となり、解析結果Enc−1(Y)にチェックサム(0,・・・,0)が現れる。よって、解析結果Enc−1(Y)にチェックサム(0,・・・,0)が含まれることから、データ取得手段14は属性名xiの値viと入力aiとが所定の関係を満たしたことを把握できるとともに、このチェックサムを除くことでデータdiを取得できる。
一方、上記所定の関係を満たさない場合、上記(15)式の右辺第1項が0とならず、解析結果にチェックサム(0,・・・,0)が現れない。よって、解析結果にチェックサム(0,・・・,0)が含まれないことから、データ取得手段14は属性名xiの値viと入力aiとが所定の関係を満たさないことを把握できる。なお、このとき、上記(15)式にはランダム値rが含まれるため、データ取得手段14はデータdを取得できないし属性値vも分からない。
なお、「Count Match」の検索を行う場合、データ取得手段14は、仮想値と一致するデータdの数から、条件を満たすインデックスの数を算出できる。
以上のようなクライアント1およびサーバ2の処理を「ゼロ多項式評価」(Zero Polynomial Evaluation(以下、ZPE処理))と呼ぶことにする。
このような検索システムにおいて、論理式Pが「Equal」であり、結合Cを「None」としたものが、図8および図9の例である。また、論理式Pが「Equal」であり、結合Cを「OR」としたものが、図10の例である。以下、結合Cが「OR」や「AND」である場合をより一般的に考える。
図12は、結合Cが「OR」および「AND」である場合の検索手法を概説する図である。図示のように、「OR」および「AND」に相当する処理をクライアント1で行う手法1と、サーバ2で行う手法2がある。
図13は、結合Cが「OR」である場合の検索手法を説明する図であり、クライアント1側で「OR」に相当する処理を行う手法1を示している。「条件1を満たす」または「条件2を満たす」ときに0になる多項式Pは、条件1を満たすときに0になる多項式P1(x)と、条件2を満たすときに0になる多項式P2(x)との積で表すことができる。
よって、クライアント1の多項式生成手段11は、多項式P1(x),P2(x)を生成し、これらを乗じて多項式P(x)を生成すればよい。そして、暗号化手段12は多項式P(x)の係数を暗号化してサーバ2に送信すればよい(このことを、図13では便宜上Enc(P(x))と表記している)。その後、クライアント1およびサーバ2は上述した通りのZPE処理を行う。この手法によれば、サーバ2は、条件1,2のいずれが満たされたのかをクライアント1に知られることはない。
図14は、結合Cが「OR」である場合の検索手法を説明する図であり、サーバ2側で「OR」に相当する処理する手法2を示している。手法2では、「条件1」と「条件2」の両方が同時には満たされないことが前提となる。
本手法2では、クライアント1側の多項式生成手段11は、条件1を満たすときに0になる多項式P1(x)と、条件2を満たすときに0となるP2(x)とを生成する。そして、暗号化手段12は各多項式P1(x),P2(x)の係数をそれぞれ暗号化してサーバ2に送信する(このことを、図14では便宜上Enc(P1(x)),Enc(P2(x))と表記している)。そして、サーバ2側の暗号化状態処理手段21は、上記(14)式に基づく多項式P1からの暗号値と多項式P2からの暗号値とをシャッフルし、そのいずれか一方をY1,他方をY2としてクライアント1に送信する。
そして、クライアント1の復号手段13はY1,Y2をそれぞれ解読する。そして、データ取得手段14は、暗号値Y1,Y2の解読結果のいずれかにチェックサムが含まれる場合に、データdを取得できる。暗号値Y1,Y2はシャッフルされているため、サーバ2は、条件1および条件2のいずれが満たされたかを知られることはない。
なお、「条件1」と「条件2」の両条件が同時に満たされ得る場合に本手法2による検索を行うのは望ましくない。その理由は、暗号値Y1,Y2の解読結果の両方にチェックサムが含まれていると、両条件がともに満たされたことをクライアント1に知られてしまうことになるためである。
図15は、結合Cが「AND」である場合の検索手法を説明する図であり、クライアント1側で「AND」に相当する処理を行う手法1を示している。なお、本例では属性名が2つ(x1,x2)であるとしている。
「条件1を満たす」かつ「条件2を満たす」ときに0となる多項式Pは、条件1を満たす時に0になる多項式P1(x1,x2)と、条件2を満たす時に0になる多項式P2(x1,x2)との和で表すことができ、具体的には下記(16)式に示す多項式P(x1,x2)で表される。
P(x1,x2)=r1P1(x1,x2)+r2P2(x1,x2) ・・・(16)
r1,r2はランダムな値である。そして、クライアント1の暗号化手段12は多項式P(x1,x2)の係数を暗号化してサーバ2に送信すればよい(このことを、図15では便宜上Enc(P(x1,x2))と表記している)。その後、クライアント1およびサーバ2は上述したZPE処理を行う。
なお、ランダム値r1,r2を用いる理由は、ランダム値r1,r2を用いない場合、偶然P1(x1,x2)=−P2(x1,x2)となって、条件1,2の両方を満たさないにも関わらずP(x1,x2)=0となってしまうことがあるためである。ランダム値r1,r2を適切な値に設定することで、高い確率で条件1,2の両方を満たす場合にのみ、P(x1,x2)=0となる。
図16は、結合Cが「AND」である場合の検索手法を説明する図であり、サーバ2側で「AND」に相当する処理を行う手法2を示している。
本手法2では、クライアント1側の多項式生成手段11は、条件1を満たすときに0になる多項式P1(x1,x2)と、条件2を満たすときに0となるP2(x1,x2)を生成する。そして、暗号化手段12は各多項式P1(x1,x2),P2(x1,x2)の係数を暗号化してサーバ2に送信する(このことを、図16では便宜上Enc(P1(x1,x2)),Enc(P2(x1,x2))と表記している)。そして、サーバ2側の暗号化状態処理手段21は、多項式P1(x1,x2),多項式P2(x1,x2)および属性値v1,v2から下記(17)式に示す暗号値Yを生成する。なお、r1,r2はランダム値である。
Y=Enc{r1P1(v1,v2)+r2P2(v1,v2)
+(d||0,・・・,0)} ・・・(17)
そして、クライアント1の復号手段13はYを解読する。条件1および条件2の両方を満たす場合にP1(v1,v2),P2(v1,v2)は0となり、データ取得手段14はデータdを取得できる。一方、条件1および条件2の少なくとも一方が満たされない場合、解読結果にはランダムな値r1および/またはr2を含むため、クライアント1はデータdを取得できない。
図13〜図16で説明したことに基づけば、「AND」と「OR」の任意に組み合わせに適用できることは明らかである。
以上、図11に示す検索システムによって、図5における論理式Pが「Equal」である場合に、結合Cのいずれの検索も可能であることを示した。続いて、論理式Pが「Range/Point inclusion」などである場合について説明する。説明を簡略化するため、属性名xは1つのみで、結合Cは「None」であるとする。
図17は、論理式Pが「Range/Point inclusion」である場合の検索手法を説明する図である。「Range/Point inclusion」の場合、クライアント1が指定する入力aの範囲(同図の例では[3,7]すなわち「3以上7以下」)に、サーバ2が持つ属性名xの値v(同図の例では5)が含まれる場合に、クライアント1はサーバ2からデータを取得できる。なお本例では、入力aおよび属性名xがとり得る値は1〜8の8個であるとする。
入力3〜7のそれぞれについて、論理式Pを「Equal」とする検索を行うのでは計算量が多く、処理時間が長くなってしまう。そこで、本実施形態では2分木を用いてより少ない計算量で効率的に検索を行う。
クライアント1およびサーバ2は同じ構造の2分木を持つ。入力aおよび属性名xがとり得る値がn個である場合、2分木のレベル数を(logn+1)とする。(logn+1)が非整数の場合、レベル数を(logn+1)以上の最小の整数とする。また、各ノードには下位レベルに2つのノードが接続される。そのため、レベルLには2L−1個のノードがあり、各ノードにはユニークなノード名として順に2L−1〜2−1が割り当てられている。
このような2分木において、最下位レベルにおけるノードの数は入力aおよび属性名xがとり得る値の数以上となる。そこで、最下位レベルにおける各ノードを、クライアント1側の2分木においては入力aがとり得る値のそれぞれと対応付け、サーバ2側の2分木においては属性名xがとり得る値のそれぞれと対応付ける。
図17の例では、入力aおよび属性名xがとり得る値の数nが8であるから、レベル数は4である。最下位レベル4には8個のノードがあり、そのノード名は8〜15である。そして、ノード8〜15が、それぞれ入力aおよび属性名xの値1〜8に対応付けられる。
ここで、あるノードAと、ノードAの下位レベルに(直接または間接的に)接続されるノードBとの関係を「ノードAはノードBをカバーする」と表現する。なお、最下位レベルにおける各ノードは自身をカバーするものとする。図17において、例えばノード2はノード4,5,8〜11をカバーしており、ノード6はノード12,13をカバーしており、ノード14はノード14をカバーしている。
クライアント1側の2分木において、入力aの範囲[3,7]に対応するノード10〜14を最小数のノードで過不足なくカバーするには、ノード5,6,14、より詳細には、レベル3におけるノード5,6と、レベル4におけるノード14が必要である。このように、クライアント1は入力範囲をカバーする最小数のノードをレベルごとに特定する。ただし、最上位レベルのノードは用いないこととする。このようにして特定されるノードには、レベルごとに最大2ノードが含まれる。
一方、サーバ2側の2分木において、最上位レベルのノード1から、属性名xの値「5」に対応するノード12に到達するためには、ノード3,6,12を、より具体的には、レベル2のノード3と、レベル3のノード6と、レベル4のノード12とを経由する。このように、サーバ2は属性名xの値に到達するために経由するノードをレベルごとに特定する。
クライアント1側の入力範囲にサーバ2側の属性の値が含まれる場合、クライアント1が特定したノード(上記の例では、ノード5,6,14)のうちの1つと、サーバ2が特定したノード(上記の例では、ノード3,6,12)のうちの1つとが一致する。よって、上述した論理式Pが「Equal」で、結合Cが「OR」である検索と同様のZPE処理を適用できる。
まずは「OR」の処理として図12および図13の手法1を適用する場合を説明する。クライアント1の多項式生成手段11は、クライアント1側が特定した入力範囲に基づくレベルごとのノード名のいずれかが、属性名xの値に基づくノード名のいずれかと一致する場合に0となる多項式P(x)を生成する。
上記の例では、多項式生成手段11は、クライアント1側が特定した入力範囲[3,7]に基づく「レベル3のノード5,6、および、レベル4のノード14」のいずれかが、属性名xの値「5」に基づくノード名のいずれかと一致する、という条件を満たす場合に0となる多項式P(x)を生成する。「属性名xの値「5」に基づくノード名のいずれか」がいくつであるかは、サーバ2はクライアント1に知られてはならないし、クライアント1が知る必要もない。
レベル2〜4に対応する変数をそれぞれX2〜X4とすると、上記の条件は「X3=5」、「X3=6」、「X4=14」の3条件のORであり、多項式生成手段11はこの条件を満たす下記(18)式に示す多項式P(X2,X3,X4)を生成する。
P(X2,X3,X4)=(X3−5)(X3−6)(X4−14) ・・・(18)
そして、サーバ2の暗号化部は、この多項式P(X2,X3,X4)のX2,X3,X4をそれぞれ3,6,12で置き換えて(実際にはX2は含まれないが)、上記(14)式に相当する暗号値Yを生成する。以降の処理は上述した通りである。
続いて、図12および図14の手法2を適用する場合を説明する。なお、「X3=5」、「X3=6」、「X4=14」は、そのうちの2つ以上が同時に満たされることはないから、手法2を適用できる。
多項式生成手段11は、各条件を満たす場合に0となる下記(19)式に示す3つの多項式P1(X3),P2(X3),P3(X4)を生成する。
P1(X3)=X3−5
P2(X3)=X3−6
P3(X4)=X4−14 ・・・(19)
そして、サーバ2の暗号化部は、この多項式P1(X3),P2(X3),P3(X4)のX2,X3,X4をそれぞれ3,6,12で置き換えて3つの暗号値を生成し、これらをシャッフルしてクライアント1に送信する。以降の処理は上述した通りである。
ところで、上記(18)式や(19)式をサーバ2に送信する場合、多項式P(X2,X3,X4)やP1(X3),P2(X3),P3(X4)から、クライアント1の入力範囲がサーバ2に知られてしまうおそれがある。そこで、クライアント1はノード名として用いられない値(例えば0)をダミーとして用い、各レベルに対応する変数に関する条件を2つ設定するのが望ましい。2つとする理由は、上述したように各レベルで最大2ノードがクライアント1によって特定され得るためである。
このような条件は、
(X2=0 OR X2=0)OR
(X3=5 OR X3=6)OR
(X4=14 OR X4=0)
と表現できる。よって、多項式生成手段11は、上記(18)式に代えて、下記(18’)式に示す多項式P(X2,X3,X4)を生成するのが望ましい。
P(X2,X3,X4)=
(X2−0)(X2−0)(X3−5)(X3−6)(X4−14)(X4−0)
・・・(18’)
また、多項式生成手段11は、上記(19)式に代えて、下記(19’)式に示す6個の多項式を生成するのが望ましい。
P1(X2)=X2−0
P2(X2)=X2−0
P3(X3)=X3−5
P4(X3)=X3−6
P5(X4)=X4−14
P6(X4)=X4−0 ・・・(19’)
ここで、上記(18’)式や(19’)式は6つの条件を5つの「OR」で結合したものであり、(18’)式に示すように各「OR」に相当する処理をすべてクライアント1で行ってもよいし、(19’)式に示すように各「OR」に相当する処理をすべてサーバ2で行ってもよいし、一部をクライアント1で行い他の一部をサーバ2で行ってもよい。しかしながら、いずれで処理するかに応じてクライアント1とサーバ2間での通信量が異なる。
図18は、「OR」の処理と、クライアント1サーバ2間の通信量との関係を模式的に示す図である。図17の例を用いており、変数は各レベルに対応するX2〜X4であり、各変数につき2つの条件がある。そして、図18に示すように、「OR」は2種類に分類できる。すなわち、1つは同じ変数どうしを結ぶ「OR」(図18の実線で囲んだORであり、「OR1」と呼ぶ)、もう1つは異なる変数どうしを結ぶ「OR」(同図の破線で囲んだORであり、「OR2」と呼ぶ)である。各「OR」に相当する処理をクライアント1で行う(手法1)か、サーバ2で行う(手法2)か、によって、4通りの処理が考えられる。ただし、OR1を手法2で行い、OR2を手法1で行うことはできないので、実際は3通りである。
以下、変数xが8通りの値をとり得る(つまりレベル数が3)として、通信量を見積もる。
なお、図18の各欄の上段はクライアント1からサーバ2への通信量であり、下段はサーバ2からクライアント1への通信量である。
図19は、OR1,OR2とも手法1で行う場合の通信量を説明する図である。この場合の多項式P(X2,X3,X4)は以下のようになる。
P(X2,X3,X4)
=(X2−0)(X2−0)(X3−5)(X3−6)(X4−14)(X4−0)
より一般的には、下式となる。
P(X2,X3,X4)
=(X2−a1)(X2−a2)(X3−b1)(X3−b2)(X4−c1)(X4−c2)
={X2−(a1+a2)X2+a1a2}{X3−(b1+b2)X3+b1b2}{X4−(c1+c2)X4+c1c2}
=Σqi,j,kX2X3X4
係数qi,j,kの数は3=27である。より一般的には、変数xがとり得る値がR通りであるとすると、3^logR個の係数が生じる。3^logR>2^logR=Rであり、クライアント1からサーバ2への通信量のオーダーはRと見積もられる。
一方、手法1によればサーバ2からクライアント1への通信量のオーダーは1である(図13参照)。
図20は、OR1を手法1で行い、OR2を手法2で行う場合の通信量を説明する図である。この場合、下記3個の多項式がクライアント1からサーバ2へ送信される。
P1(X2)=(X2−0)(X2−0)
P2(X3)=(X3−5)(X3−6)
P3(X4)=(X4−14)(X3−0)
より一般的には、下式となる。
P1(X2)=(X2−a1)(X2−a2)=X2−(a1+a2)X2+a1a2
P2(X3)=(X3−b1)(X3−b2)=X3−(b1+b2)X3+b1b2
P3(X4)=(X4−c1)(X4−c2)=X4−(c1+c2)X4+c1c2
P1(X2)の係数は(a1+a2)およびa1a2の2つである。同様に、P2(X3),P3(X4)の係数も2つずつであるから、係数の総数は2*3=6個、より一般的には2logRである。よって、クライアント1からサーバ2への通信量のオーダーは2logRと見積もられる。
一方、クライアント1からサーバ2への通信量のオーダーは、多項式の数(すなわちレベル数)から、logRと見積もられる。
図21は、OR1,OR2とも手法2で行う場合の通信量を説明する図である。この場合、下記6個の多項式(各レベルにつき2つ)がクライアント1からサーバ2へ送信される。
P1(X2)=X2−0
P2(X2)=X2−0
P3(X3)=X3−5
P4(X3)=X3−6
P5(X4)=X4−14
P6(X4)=X3−0
各多項式における係数は1つであり、その総数は1*6=6個である。より一般的には、2logR個であり、クライアント1からサーバ2への通信量のオーダーは2logRと見積もられる。
一方、サーバ2からクライアント1への通信量のオーダーは、多項式の数から、2logRと見積もられる。
以上により、図18に示すように、OR1(すなわち同変数どうしを結ぶOR)を手法1で行い、OR2(すなわち異なる変数どうしを結ぶOR)を手法2で行うのが最も効率的であり、望ましい。
次に、図17の応用として、論理式Pが「Range/Point inclusion」であり、結合Cが「AND」である場合について、図22を用いて説明する。同図は、属性名がx1〜xkのk個であり、そのそれぞれに対してクライアント1が入力範囲を指定する例を示している。すなわち、条件Q:「属性名x1の値v1がa1以上b1以下であり、かつ、・・・かつ、属性名xkの値vkがak以上bk以下」を満たす場合に、クライアント1はサーバ2からデータdを取得できる。この場合、クライアント1およびサーバ2は、属性名x1〜xkのそれぞれと対応するk個の2分木を内部に持っている。
各2分木のレベル数が4(つまり、a1〜ak、b1〜bk、v1〜vkのそれぞれがとり得る値の数が8個)であるとし、クライアント1が特定した、入力範囲[aj,bj]をカバーするノードのノード名を単にsj1〜sj6(ダミーを含む)とする。また、属性名xiにおけるレベルjの変数をXijとする。
「属性名x1の値v1がa1以上b1以下」に対応する条件をQ1とすると、Q1は、
Q1:(X12=s11 OR X12=s12)OR
(X13=s13 OR X12=s14)OR
(X14=s15 OR X12=s16)
である。同様に、「属性名xjの値vjがaj以上bj以下」に対応する条件をQjとすると、上記の条件Qは、
Q:Q1 AND ・・・ AND Qk
である。条件Qは「AND」と「OR」の組合せにすぎないから、ZPE処理によって検索を行うことができる。「AND」および「OR」に相当する処理をクライアント1およびサーバ2のいずれで行うかに応じてクライアント1とサーバ2間での通信量が異なる。
図23は、「AND」および「OR」の処理と、クライアント1サーバ2間の通信量との関係を模式的に示す図である。図22の例を用いており、変数はk個の属性名および3つのレベルのそれぞれに対応するX12〜Xk4であり、各変数につき2つの条件がある。そして、図18と同様に、「OR」は2種類に分類できる。すなわち、1つは同じ変数どうしを結ぶ「OR」(図23の実線で囲んだORであり、「OR1」と呼ぶ)、もう1つは異なる変数どうしを結ぶ「OR」(同図の破線で囲んだORであり、「OR2」と呼ぶ)である。各「OR」に相当する処理をクライアント1で行う(手法1)か、サーバ2で行う(手法2)か、によって、4通りの処理が考えられる。ただし、OR1を手法2で行い、OR2を手法1で行うことはできないので、実際は3通りである。そして、「AND」に相当する処理をクライアント1で行う(手法1)か、サーバ2で行う(手法2)か、によって2通りの処理が考えられる。よって、合計6通りの処理がある。以下、各処理での通信量を見積もる。
まず、OR1,OR2とも手法1で行い、ANDを手法1で行う場合を説明する。この場合、クライアント1からサーバ2へ送信される係数の数は、図18に比べて属性の数がk倍になっているから、クライアント1からサーバ2への通信量のオーダーはRkと見積もられる。
一方、手法1によればサーバ2からクライアント1への通信量のオーダーは1である(図15参照)。
次に、OR1,OR2とも手法1で行い、ANDを手法2で行う場合であるが、クライアント1でORに相当する処理を行うため、クライアント1からサーバ2への通信量のオーダーはやはりRkと見積もられる。また、手法2によればサーバ2からクライアント1への通信量のオーダーは1である(図16参照)。
図24は、OR1を手法1で行い、OR2を手法2で行い、ANDを手法1で行う場合の通信量を説明する図である。上記の条件Qは下記のように変形される。
Q:{f1(X12) OR g1(X13) OR h1(X14)}AND
{f2(X22) OR g2(X23) OR h2(X24)}AND
・・・
{fk(Xk2) OR gk(Xk3) OR hk(Xk4)}={f1(X12) AND f2(X22) ・・・ AND fk(Xk2)}OR
{g1(X13) AND g2(X23) ・・・ AND gk(Xk3)}OR
{h1(X14) AND h2(X24) ・・・ AND hk(Xk4)}
・・・(20)
ここで、f,g,hはOR1をクライアント1で処理した結果の2次式であり、便宜上「小多項式」とも呼ぶ。例えばf1(X12)=(X12−s11)(X12−s12)である。この(20)式において、波括弧{}内の「AND」はクライアント1によって行われ、各波括弧{}内の係数の数は2k個である。また、「AND」を展開すると多項式の数は3個、より一般的には(logR)個である。よって、クライアント1からサーバ2への通信量のオーダーは2k(logR)と見積もられる。
一方、クライアント1からサーバ2への通信量のオーダーは、多項式の数から(logR)と見積もられる。
図25は、OR1を手法1で行い、OR2を手法2で行い、ANDを手法2で行う場合の通信量を説明する図である。上記(20)式において、波括弧{}内の「AND」はサーバ2によって行われる。各小多項式f,g,hは2次式であるから2つの係数を含む。また、合計3k個、より一般的には(logR)k個の小多項式がある。よって、クライアント1からサーバ2への通信量のオーダーは2k(logR)と見積もられる。
一方、クライアント1からサーバ2への通信量のオーダーは、多項式の数から(logR)と見積もられる。
図26は、OR1,OR2を手法2で行い、ANDを手法1で行う場合の通信量を説明する図である。上記の条件Qは下記のように変形される。
Q:{(X12−s11)・・・OR・・・(X14−s16)}・・・AND・・・
{(Xk2−sk1)・・・OR・・・(Xk4−sk6)}
={(X12−s11)・・・AND・・・(Xk2−sk1)}OR
{(X13−s12)・・・AND・・・(Xk3−sk2)}OR
{(X14−s13)・・・AND・・・(Xk4−sk3)}
・・・(21)
ここで、各波括弧{}内の「AND」はクライアント1によって行われ、各波括弧{}内の係数の数はk個である。また、「AND」を展開すると多項式の数は6個、より一般的には(2logR)個である。よって、クライアント1からサーバ2への通信量のオーダーはk(2logR)と見積もられる。
一方、サーバ2からクライアント1への通信量のオーダーは、多項式の数から(2logR)と見積もられる。
図27は、OR1,OR2を手法2で行い、ANDを手法2で行う場合の通信量を説明する図である。上記(21)式において、各波括弧{}内の「AND」はサーバ2によって行われる。各丸括弧()内の係数の数は1個であり、合計6k個、より一般的には(logR)2k個の丸括弧()がある。よって、クライアント1からサーバ2への通信量のオーダーは(logR)2kと見積もられる。
一方、サーバ2からクライアント1への通信量のオーダーは、多項式の数から(2logR)と見積もられる。
以上により、図23に示すように、OR1は手法1で行い、OR2は手法2で行い、ANDは手法2で行うのが最も効率的であり、望ましい。
続いて、論理式Pが「Point/Range inclusion」である場合について説明する。説明を簡略化するため、属性名はxのみで、結合Cは「None」であるとする。
図28は、論理式Pが「Point/Range inclusion」である場合の検索手法を説明する図である。「Point/Range inclusion」の場合、クライアント1が指定する入力a(同図の例では5)が、サーバ2が持つ属性名xの値の範囲(同図の例では[3,7])に含まれる場合に、クライアント1はサーバ2からデータを取得できる。
具体的な処理は図17で説明した「Range/Point inclusion」と類似している。クライアント1は入力aに到達するために経由するノードをレベルごとに特定する(同図の例では、レベル2のノード3と、レベル3のノード6と、レベル4のノード12)。また、サーバ2は属性名の範囲をカバーする最小数のノードをレベルごとに特定する(同図の例では、レベル3におけるノード5,6と、レベル4におけるノード14)。
そして、クライアント1の多項式生成手段11は、クライアント1側が特定した入力に基づくレベルごとのノード名のいずれかが、属性名の範囲に基づくノード名のいずれかと一致する場合に0となる多項式P(x)を生成する。ただし、サーバ2では各レベルで最大2ノードがクライアント1によって特定され得るため、クライアント1でもレベルごとに変数を2つ設定する。レベルiに対応する変数をXi,Xi’とすると、
(X2=3 OR X2’=3)OR
(X3=6 OR X3’=6)OR
(X4=12 OR X4’=12)
という条件が満たされる場合に真となる多項式P(X2,X2’,X3,X3’,X4,X4’)を多項式生成手段11は生成する。
一方、サーバ2の暗号化状態処理手段21は、レベル2のノード5,6およびレベル3のノード14を特定しているため、変数X3,X3’,X4をそれぞれ5,6,14で置き換え、他の変数X2,X2’,X4’をダミーである0で置き換えて暗号値を生成する。
以下は図17と同様の処理となる。なお、図23〜図27と同様の考察により、「Point/Range inclusion」の最も効率的な処理では、クライアント1からサーバ2への通信量のオーダーは2klogRであり、サーバ2からクライアント1への通信量のオーダーは(2logR)である。
続いて、論理式Pが「Range/Range intersect」である場合について説明する。
図29および図30は、論理式Pが「Range/Range intersect」である場合の検索手法を説明する図である。「Range/Range intersect」の場合、条件「クライアント1が指定する入力の範囲[a,b]と、サーバ2が持つ属性名xの範囲[u,v]と、が少なくとも一部重複している」を満たす場合に、クライアント1はサーバ2からデータを取得できる。
上記の条件は、「
uがa以上b以下、または、
vがa以上b以下、または、
aがu以上v以下、または、
bがu以上v以下
」と言い換えることができる。このそれぞれに対応して条件Q1〜Q4を
Q1:[a,b]∋u
Q2:[a,b]∋v
Q3:a∈[u,v]
Q4:b∈[u,v]
と定義すると、上記条件はQ1〜Q4のORで表される。Q1,Q2は「Range/Point inclusion」を適用し、Q3,Q4は「Point/Range inclusion」を適用すればよい。
ここで、上記条件を満たす場合には、図30に示すように4パターンあり、条件Q1〜Q4のうちの2つが必ず満たされる。よって、「OR」の処理として、図14に示す手法2を適用しても、Q1〜Q4のいずれが満たされたかは秘匿される。
ここで「Range/Range intersect」の最も効率的な処理の通信量のオーダーは以下のように見積もられる。まずは、クライアント1からサーバ2への通信量であるが、条件Q1,Q2は「Range/Point inclusion」であるから、図18より通信量のオーダーはそれぞれ2klog2Rである。また、条件Q3,Q4は「Point/Range inclusion」であるから、通信量のオーダーはそれぞれ2klogRである。よって、合計の通信量のオーダーは8klogRと見積もられる。
次に、サーバ2からクライアント1への通信量であるが、条件Q1,Q2は「Range/Point inclusion」であるから、図18より通信量のオーダーはそ(logR)である。また、条件Q3,Q4は「Point/Range inclusion」であるから、通信量のオーダーはそれぞれ(2logR)である。よって、合計の通信量のオーダーは(2+2)(logR)と見積もられる。
以上説明したように、本実施形態によれば、クライアント1への入力と、サーバ2への入力に含まれる属性名の値とが所定の関係を満たす場合に0となる多項式を生成する。検索条件に応じた多項式を生成することで、汎用的な秘匿検索が可能となる。また、複数の条件を多項式として表現することで、通信量のオーダーはR(線形)ではなくlog2Rに抑えられ、効率的な秘匿検索が可能となる。
上述した実施形態は、本発明が属する技術分野における通常の知識を有する者が本発明を実施できることを目的として記載されたものである。上記実施形態の種々の変形例は、当業者であれば当然になしうることであり、本発明の技術的思想は他の実施形態にも適用しうることである。したがって、本発明は、記載された実施形態に限定されることはなく、特許請求の範囲によって定義される技術的思想に従った最も広い範囲とすべきである。
上述した実施形態は、例として、ゲノム計算、データマイニング、顔・虹彩・声紋認識、遠隔診断、クレジットチェック、医療診断、化合物データベース検索などに利用できる。
1 クライアント
2 サーバ
3 データベース
11 多項式生成手段
12 暗号化手段
13 復号手段
14 データ取得手段
21 暗号化状態処理手段

Claims (21)

  1. クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索システムであって、
    前記クライアントは、
    前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式を生成する多項式生成手段と、
    加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記多項式の係数を暗号化してクライアント側暗号値を生成する暗号化手段と、を有し、
    前記サーバは、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記クライアント側暗号値を用い、前記多項式の係数が暗号化された状態で、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を生成する暗号化状態処理手段を有し、
    前記クライアントは、さらに、
    前記サーバ側暗号値を解読する復号手段と、
    解読結果に前記チェックサムが含まれる場合に、前記解読結果から前記データを取得するデータ取得手段と、を有する、検索システム。
  2. 前記所定の条件は、前記クライアントへの入力と前記属性名の値とが第1条件および第2条件の少なくとも一方を満たすことであり、
    前記多項式生成手段は、前記第1条件を満たす場合に0となる第1多項式と、前記第2条件を満たす場合に0となる第2多項式と、を生成し、前記第1多項式および前記第2多項式を乗じて、前記多項式を生成する、請求項1に記載の検索システム。
  3. 前記所定の条件は、前記クライアントへの入力と前記属性名の値とが第1条件および第2条件の一方のみを満たすことであり、
    前記多項式生成手段は、前記多項式として、前記第1条件を満たす場合に0となる第1多項式と、前記第2条件を満たす場合に0となる第2多項式と、を生成し、
    前記暗号化手段は、前記クライアント側暗号値として、前記第1多項式の係数および前記第2多項式の係数を暗号化して第1クライアント側暗号値および第2クライアント側暗号値をそれぞれ生成し、
    前記暗号化状態処理手段は、
    前記第1クライアント側暗号値を用い、前記第1多項式における変数を前記属性名の値で置き換えた値と第1ランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値である第1サーバ側暗号値を生成するとともに、
    前記第2クライアント側暗号値を用い、前記第2多項式における変数を前記属性名の値で置き換えた値と第2ランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値である第2サーバ側暗号値を生成し、
    前記第1サーバ側暗号値および前記第2サーバ側暗号値をシャッフルして、これらを前記サーバ側暗号値とする、請求項1に記載の検索システム。
  4. 前記所定の条件は、前記クライアントへの入力と前記属性名の値とが第1条件および第2条件の両方を満たすことであり、
    前記多項式生成手段は、前記第1条件を満たす場合に0となる第1多項式と、前記第2条件を満たす場合に0となる第2多項式と、を生成し、前記第1多項式と第1ランダム値との積と、前記第2多項式と第2ランダム値との積とを加えて前記多項式を生成する、請求項1に記載の検索システム。
  5. 前記所定の条件は、前記クライアントへの入力と前記属性名の値とが第1条件および第2条件の両方を満たすことであり、
    前記多項式生成手段は、前記多項式として、前記第1条件を満たす場合に0となる第1多項式と、前記第2条件を満たす場合に0となる第2多項式と、を生成し、
    前記暗号化手段は、前記クライアント側暗号値として、前記第1多項式の係数および前記第2多項式の係数を暗号化して第1クライアント側暗号値および第2クライアント側暗号値をそれぞれ生成し、
    前記暗号化状態処理手段は、前記第1クライアント側暗号値および前記第2クライアント側暗号値を用い、
    前記第1多項式における変数を前記属性名の値で置き換えた値と第1ランダム値との積と、
    前記第2多項式における変数を前記属性名の値で置き換えた値と第2ランダム値との積と、
    前記データと予め定めたチェックサムとを連結した値と、
    の和の暗号化値を前記サーバ側暗号値として生成する、請求項1に記載の検索システム。
  6. 前記サーバへの入力には、複数のインデックスに対応する複数の前記属性名の値が含まれ、
    前記暗号化状態処理手段は、前記複数のインデックスのそれぞれに対して、前記データを所定の仮想値とする前記サーバ側暗号値を生成し、
    前記復号手段は、前記サーバ側暗号値のそれぞれを解読し、
    前記データ取得手段は、前記データが前記所定の仮想値である解読結果の数に基づいて、前記所定の関係を満たすインデックスの数を算出する、請求項1乃至5の何れかに記載の検索システム。
  7. 前記所定の条件は、前記クライアントへの入力が前記属性名の値と一致することである、請求項1乃至5のいずれかに記載の検索システム。
  8. 前記クライアントへの入力は2つの値で定められる範囲であり、
    前記所定の条件は、前記範囲に前記属性名の値が含まれることである、請求項1乃至5のいずれかに記載の検索システム。
  9. 前記2つの値および属性名がとり得る値の数はn個(nは2以上の整数)であり、
    前記多項式生成手段は、レベル数が(logn+1)以上の最小の整数である2分木であって、各ノードにはユニークなノード名が割り当てられており、最下位レベルにおけるノードのそれぞれが前記クライアントへの入力がとり得る値のそれぞれに対応付けられる2分木において、前記範囲をカバーするノードのノード名が、前記属性名の値に基づく所定のノード名と一致する場合に0となる前記多項式を生成し、
    前記暗号化状態処理手段は、前記多項式生成手段の2分木と同じ構造の2分木であって、最下位レベルにおけるノードのそれぞれが前記属性名が取り得る値のそれぞれに対応付けられる2分木において、前記最下位レベルにおける前記属性名の値に対応付けられたノードに到達するまでに経由されるノードのノード名で、前記多項式における変数を置き換えた値から前記サーバ側暗号値を生成する、請求項8に記載の検索システム。
  10. 前記多項式生成手段は、前記範囲をカバーするノードをレベルごとに特定し、特定されたノードが2つ未満であるレベルについては、ノード名として用いられていないダミーのノード名を用いて各ノードの変数を2つずつとして、前記多項式を生成する、請求項9に記載の検索システム。
  11. 前記属性名の範囲は2つの値で定められ、
    前記所定の条件は、前記範囲に前記クライアントへの入力が含まれることである、請求項1乃至5のいずれかに記載の検索システム。
  12. 前記クライアントへの入力および前記2つの値がとり得る値の数はn個(nは2以上の整数)であり、
    前記多項式生成手段は、レベル数が(logn+1)以上の最小の整数である2分木であって、各ノードにはユニークなノード名が割り当てられており、最下位レベルにおけるノードのそれぞれが前記クライアントへの入力がとり得る値のそれぞれに対応付けられる2分木において、前記最下位レベルにおける前記属性名の値に対応付けられたノードに到達するまでに経由されるノードのノード名が、前記範囲に基づく所定のノード名と一致する場合に0となる前記多項式を生成し、
    前記暗号化状態処理手段は、前記多項式生成手段の2分木と同じ構造の2分木であって、最下位レベルにおけるノードのそれぞれが前記属性名が取り得る値のそれぞれに対応付けられる2分木において、前記範囲をカバーするノードのノード名で、前記多項式における変数を置き換えた値から前記サーバ側暗号値を生成する、請求項11に記載の検索システム。
  13. 前記クライアントへの入力は第1入力値および第2入力値で定められる第1範囲であり、
    前記属性の範囲は第1属性値および第2属性値で定められる第2範囲であり、
    前記所定の条件は、前記第1範囲および前記第2範囲の少なくとも一部が重複することである、請求項1乃至5のいずれかに記載の検索システム。
  14. 前記多項式生成手段は、
    前記第1入力値が前記第2範囲に含まれること、
    前記第2入力値が前記第2範囲に含まれること、
    前記第1属性値が前記第1範囲に含まれること、および、
    前記第2属性値が前記第1範囲に含まれること、
    の少なくとも1つが満たされる場合に0となる前記多項式を生成する、請求項13に記載の検索システム。
  15. 前記クライアントへの入力は前記サーバには知られない、請求項1乃至14のいずれかに記載の検索システム。
  16. 前記所定の関係を満たさない場合、前記データは前記クライアントには知られない、請求項1乃至15に記載の検索システム。
  17. クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバからデータを取得可能な検索システムにおけるクライアントであって、
    前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式を生成する多項式生成手段と、
    加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記多項式の係数を暗号化してクライアント側暗号値を生成する暗号化手段と、
    前記サーバが、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記クライアント側暗号値を用い、前記多項式の係数が暗号化された状態で生成した、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を解読する復号手段と、
    解読結果に前記チェックサムが含まれる場合に、前記解読結果から前記データを取得するデータ取得手段と、を有する、クライアント。
  18. クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索システムにおけるクライアントを、
    前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式を生成する多項式生成手段と、
    加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記多項式の係数を暗号化してクライアント側暗号値を生成する暗号化手段と、
    前記サーバが、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記クライアント側暗号値を用い、前記多項式の係数が暗号化された状態で生成した、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を解読する復号手段と、
    解読結果に前記チェックサムが含まれる場合に、前記解読結果から前記データを取得するデータ取得手段と、として機能させる、検索プログラム。
  19. クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索システムにおけるサーバであって、
    前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式の係数を、加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記クライアントが暗号化したクライアント側暗号値を用い、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記多項式の係数が暗号化された状態で、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を生成する暗号化状態処理手段を有する、サーバ。
  20. クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索システムにおけるサーバを、
    前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式の係数を、加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記クライアントが暗号化したクライアント側暗号値を用い、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記多項式の係数が暗号化された状態で、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を生成する暗号化状態処理手段として機能させる、検索プログラム。
  21. クライアントおよびサーバから構成され、前記クライアントへの入力と、前記サーバへの入力に含まれる属性名の値とが所定の関係を満たす場合に、前記属性名に関連付けられたデータを前記クライアントが前記サーバから取得可能な検索方法であって、
    前記クライアントが、前記クライアントへの入力と前記属性名の値とが前記所定の関係を満たす場合に0となる、前記属性名を変数とする多項式を生成し、
    前記クライアントが、加法準同型性を有し、前記クライアントは解読できるが前記サーバは解読できない所定の公開鍵暗号方式で前記多項式の係数を暗号化してクライアント側暗号値を生成し、
    前記サーバが、前記所定の公開鍵暗号方式の加法準同型性を利用して、前記クライアント側暗号値を用い、前記多項式の係数が暗号化された状態で、前記多項式における変数を前記属性名の値で置き換えた値とランダム値との積と、前記データと予め定めたチェックサムとを連結した値と、の和の暗号化値であるサーバ側暗号値を生成し、
    前記クライアントが、前記サーバ側暗号値を解読し、
    前記クライアントが、解読結果に前記チェックサムが含まれる場合に、前記解読結果から前記データを取得する、検索方法。


JP2015021572A 2015-02-05 2015-02-05 検索システム、クライアント、サーバ、検索プログラムおよび検索方法 Active JP6381128B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015021572A JP6381128B2 (ja) 2015-02-05 2015-02-05 検索システム、クライアント、サーバ、検索プログラムおよび検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015021572A JP6381128B2 (ja) 2015-02-05 2015-02-05 検索システム、クライアント、サーバ、検索プログラムおよび検索方法

Publications (2)

Publication Number Publication Date
JP2016143048A JP2016143048A (ja) 2016-08-08
JP6381128B2 true JP6381128B2 (ja) 2018-08-29

Family

ID=56570496

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015021572A Active JP6381128B2 (ja) 2015-02-05 2015-02-05 検索システム、クライアント、サーバ、検索プログラムおよび検索方法

Country Status (1)

Country Link
JP (1) JP6381128B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017122326A1 (ja) 2016-01-14 2017-07-20 三菱電機株式会社 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
EP3392865B1 (en) 2016-01-15 2021-06-02 Mitsubishi Electric Corporation Encryption device, encryption method, and encryption program
JP6522263B2 (ja) 2017-01-18 2019-05-29 三菱電機株式会社 準同型演算装置、暗号システム及び準同型演算プログラム
US11106740B2 (en) 2017-04-25 2021-08-31 Mitsubishi Electric Corporation Search device, search system, search method, and computer readable medium
JP6775231B2 (ja) * 2017-08-24 2020-10-28 Kddi株式会社 計算システム、計算方法及び計算プログラム
DE112018007468T5 (de) * 2018-05-15 2021-01-21 Mitsubishi Electric Corporation Geheime-Suche-Einrichtung und Geheime-Suche-Verfahren
US10972252B2 (en) * 2019-06-18 2021-04-06 International Business Machines Corporation Compressible (F)HE with applications to PIR
CN114726522B (zh) * 2022-04-24 2024-02-20 中国传媒大学 一种保护双方隐私的不经意可搜索加密方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8065332B2 (en) * 2005-05-19 2011-11-22 Ntt Docomo, Inc. Method and apparatus for communication efficient private information retrieval and oblivious transfer
JP5400809B2 (ja) * 2011-01-11 2014-01-29 日本電信電話株式会社 検索可能暗号システム、ストレージ装置、それを検索する装置、検索可能暗号方法、及びプログラム
US9002007B2 (en) * 2011-02-03 2015-04-07 Ricoh Co., Ltd. Efficient, remote, private tree-based classification using cryptographic techniques
US10027486B2 (en) * 2012-06-22 2018-07-17 Commonwealth Scientific And Industrial Research Organisation Homomorphic encryption for database querying

Also Published As

Publication number Publication date
JP2016143048A (ja) 2016-08-08

Similar Documents

Publication Publication Date Title
JP6381128B2 (ja) 検索システム、クライアント、サーバ、検索プログラムおよび検索方法
Cui et al. Efficient and expressive keyword search over encrypted data in cloud
WO2021208690A1 (zh) 数据加解密方法、装置、设备及存储介质
Bost et al. Forward and backward private searchable encryption from constrained cryptographic primitives
Ahmad et al. Bijective S-boxes method using improved chaotic map-based heuristic search and algebraic group structures
Van Liesdonk et al. Computationally efficient searchable symmetric encryption
Abadi et al. O-PSI: delegated private set intersection on outsourced datasets
US7558970B2 (en) Privacy-enhanced searches using encryption
Noura et al. A new efficient lightweight and secure image cipher scheme
CN102176709A (zh) 一种带隐私保护的数据共享与发布的方法和装置
JP2010237653A (ja) 第1の信号と第2の信号との間の類似性を検証するための方法及びシステム
Brakerski et al. Multi-input functional encryption in the private-key setting: Stronger security from weaker assumptions
CN114826703A (zh) 基于区块链的数据搜索细粒度访问控制方法及系统
Sokouti et al. Medical image encryption: an application for improved padding based GGH encryption algorithm
CN111431705A (zh) 一种适用于可搜索加密的密码逆向防火墙方法
Yagoub et al. An adaptive and efficient fully homomorphic encryption technique
Ma et al. Efficient public key encryption with outsourced equality test for cloud-based IoT environments
Hayata et al. Generic construction of adaptively secure anonymous key-policy attribute-based encryption from public-key searchable encryption
KR100951034B1 (ko) 암호문 크기를 줄이기 위한 공개키 기반의 검색가능암호문생성 방법과, 그에 따른 공개키 기반의 데이터 검색 방법
Carbunar et al. Joining privately on outsourced data
Yousefipoor et al. A secure attribute based keyword search scheme against keyword guessing attack
CN113132345B (zh) 具有可搜索功能的代理隐私集合求交方法
JP7440662B2 (ja) マルチキー情報検索
de Oliveira et al. Privacy-preserving techniques and system for streaming databases
Sharma et al. Making data in cloud secure and usable: fully homomorphic encryption with symmetric keys

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180620

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180717

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180730

R150 Certificate of patent or registration of utility model

Ref document number: 6381128

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250