説明

セキュア検索システム、秘密検索装置、セキュア検索方法、セキュア検索プログラム

【課題】検索キーの大小関係の情報を漏らすことなく、対数時間での検索を行う。
【解決手段】本発明のセキュア検索システムは、ランダムスライド手段、要素探索手段、検索手段を備える。ランダムスライド手段は、乱数[r]を生成し、m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目もしくは(m+r mod M)番目に移動させ、移動後の情報を情報([k’],[v’]),…,([k’],[v’])とする。要素探索手段は、取得した値[t]と検索キー[k’]との大小比較を、t−k’ mod qとk’−k’ mod qの大小比較によって行う。検索手段は、要素探索手段の大小比較の結果に基づいて、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーkを持つ情報([k’],[v’])を検索する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを秘匿しつつデータ検索を行うセキュア検索システム、秘密検索装置、セキュア検索方法、セキュア検索プログラムに関する。
【背景技術】
【0002】
暗号化された数値を復元すること無く特定の演算結果を得る方法として、例えば非特許文献1の秘密計算と呼ばれる方法がある。非特許文献1の方法では、3つの秘密計算装置に数値の断片を分散させるという暗号化を行い、数値を復元すること無く、加減算、定数和、乗算、定数倍、論理演算(否定,論理積,論理和,排他的論理和)、データ形式変換(整数,二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。非特許文献2では、ソートの前後の値の対応を誰にも知られないように計算することを特徴とし、暗号化された複数のデータに対し、平文から計算される値でソートを行った結果の暗号文を計算する秘密ソート方法が提案されている。このような秘密計算を利用してデータ検索を行うことが可能である。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能3パーティ秘匿関数計算の再考”, In CSS, 2010.
【非特許文献2】濱田浩気, 五十嵐大, 千田浩司, 高橋克巳, “3パーティ秘匿関数計算上のランダム置換プロトコル”, In CSS, 2010.
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来技術では、(1)秘密計算で検索キー(検索対象の情報)を全てスキャンして検索結果を求める方法、(2)検索キーの大小比較を秘密計算で行うが大小比較結果は開示し二分探索を行う方法、の2つがある。しかしながら、(1)の方法は秘匿なしの通常の検索の計算量が対数時間であるのに対し、圧倒的に大きな線形時間を要することが問題である。(2)の方法は対数時間で検索を行うことができるが、大小比較結果を開示してしまうため検索キーの大小関係の情報が秘密計算の計算者に知られてしまうというセキュリティ上の欠点がある。また、他の従来技術として検索可能暗号を用いる方法もあるが、検索以外のデータ処理と組み合わせることができないという欠点がある。
【0005】
本発明は、検索キーの大小関係の情報を漏らすことなく、対数時間での検索を行う技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明のセキュア検索システムは、N個の秘密検索装置R,…,Rで構成され、検索キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーkを持つ情報([k],[v])を検索する。なお、情報([k],[v]),…,([k],[v])は検索キーkに基づいてソートされた情報である。ここで、Mは2以上の整数、Nは3以上の整数、mは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、tは検索キーkがとり得る値、qは検索キーkが取り得る最大値よりも大きい整数とする。例えば、pを検索キーkが取り得る最大値よりも大きい素数とすると、qはp以上の整数とすればよい。
【0007】
セキュア検索システムは、ランダムスライド手段、要素探索手段、検索手段を備える。ランダムスライド手段は、秘密分散された乱数[r]を生成し、m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目もしくは(m+r mod M)番目に移動させ、移動後の情報を情報([k’],[v’]),…,([k’],[v’])とする。例えば、m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目に移動させ、移動後の情報([kr+1],[vr+1]),…,([k],[v]),([k],[v]),…,([k],[v])を情報([k’],[v’]),…,([k’],[v’])とすればよい。要素探索手段は、取得した値[t]と検索キー[k’]との大小比較を、t−k’ mod qとk’−k’ mod qの大小比較によって行う。検索手段は、要素探索手段の大小比較の結果に基づいて、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーk’を持つ情報([k’],[v’])を検索する。
【発明の効果】
【0008】
本発明のセキュア検索システムによれば、ソート済の検索キーを計算者の知らないランダム数分秘密にスライドさせることで、検索によりスライド後の状態でのどの検索キーがヒットしたかが計算者に分かっても、スライド前の検索キーとの対応はつかない。つまり、計算者は元のどの検索キーが検索にヒットしたのかが分からなくなるので、1回の検索では検索キーの大小関係に関する情報が漏れない。また、検索を複数回行った場合もランダムスライドなしの場合より漏れる情報は常に小さくなる。また検索機能の計算量は対数時間である。
【図面の簡単な説明】
【0009】
【図1】本発明のセキュア検索システムの構成例を示す図。
【図2】実施例1、変形例1、変形例2のセキュア検索システムの処理フローを示す図。
【図3】変形例3のセキュア検索システムの処理フローを示す図。
【図4】本発明に利用できる秘密分散装置100の機能構成例を詳しく示したセキュア検索システムを示す図。
【図5】ランダム置換の1つ目の処理フロー例を示す図。
【図6】ランダム置換の2つ目の処理フロー例を示す図。
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0011】
図1に実施例1のセキュア検索システムの構成例を示す。図2に実施例1のセキュア検索システムの処理フローを示す。実施例1のセキュア検索システムは、N個の秘密検索装置10,…,10で構成され、検索キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーkを持つ情報([k],[v])を検索する。なお、情報([k],[v]),…,([k],[v])は検索キーkに基づいてソートされた情報である。ここで、Mは2以上の整数、Nは3以上の整数、mは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、tは検索キーkがとり得る値、qは検索キーkが取り得る最大値よりも大きい整数とする。例えば、pを検索キーkが取り得る最大値よりも大きい素数とすると、qはp以上の整数とすればよい。
【0012】
秘密検索装置10は、検索制御部300、秘密分散装置100、記録部190を備える。秘密分散装置100は、検索制御部300の指示にしたがって実施例1の処理に必要な個々の秘密計算を行う。本発明の処理に必要な個々の秘密計算としては、秘密分散、復号、ランダム置換などがある。ただし、本発明は、これらの秘密計算を利用して効率よくソートを行うものであり、秘密計算自体に特徴がある発明ではない。そこで、秘密計算については、例を後述することとし、本発明のポイントを理解しやすくするためにここでの説明は省略する。なお、後述する秘密計算の方法は、1つの例であり、実施例1が利用できる秘密計算を限定するものではない。記録部190は、秘密検索装置10の処理に必要な情報を記録する構成部である。図1に示した選択手段105は後述する秘密計算では利用するが、利用する秘密計算によっては備えなくてもよい。
【0013】
なお、秘密計算での様々な処理は、後述の秘密計算の四則演算や秘密計算の論理演算を組み合わせればよい。例えば、x=yかを秘密計算で確認する場合には、従来技術として蓄積された論理回路の技術を用いれば、実現できる。例えば、xとyを2ビット展開した各ビットの排他的論理和の論理和の否定によって次のように確認してもよい。
【0014】
C=1−{(x[∨]y)∨・・・∨(x[∨]y)} (1)
ただし、[∨]は排他的論理和(XOR)を示す記号、∨は論理和(OR)を示す記号、xは2ビット展開したときのxの下からbビット目の値、yは2ビット展開したときのyの下からbビット目の値、Bは2ビット展開したときのxとyの桁数とする。式(1)では、C=1ならばx=y(真)、C=0ならばx≠y(偽)である。また、式(1)の個々の演算は後述の秘密計算の例に示されているので、式(1)の演算は秘密計算で実行でき、秘密分散された[C]が求められる。したがって、確認後の分岐も秘密にするのであれば、[C]を用いた秘密計算をさらに組合せればよい。なお、後述する秘密計算は、数値の秘密分散、秘密分散された断片の復号、秘密分散された数値の四則計算、秘密分散されたビットごとの論理演算の基本的な計算方法を網羅して示している。したがって、従来技術として蓄積された論理回路の技術を用いれば、上述の等しいことを確認する方法のように、所望の演算を後述する秘密計算の方法の組合せで実行できる。複雑な論理回路になるので説明は省略するが、例えば大小比較などの論理回路も従来から知られている組合せ(基本的には上位のビットからビットごとに比較していく構成)の中からいずれかを選択すれば構成可能である。
【0015】
各秘密検索装置10の検索制御部300は、ランダムスライド部310、要素探索部320、検索部330を備える。そして、セキュア検索システムのランダムスライド手段310(図示していない)はランダムスライド部310,…,310で構成され、要素探索手段320(図示していない)は要素探索部320,…,320で構成され、検索手段330(図示していない)は検索部330,…,330で構成される。
【0016】
ランダムスライド手段310は、秘密分散された乱数[r]を生成し、m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目もしくは(m+r mod M)番目に移動させ、移動後の情報を情報([k’],[v’]),…,([k’],[v’])とする(S310)。より具体的には、ランダムスライド部310,…,310(ランダムスライド手段310)は、秘密分散装置100,…,100に乱数[r]を生成させ、m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目に移動させ、移動後の情報([kr+1],[vr+1]),…,([k],[v]),([k],[v]),…,([k],[v])を情報([k’],[v’]),…,([k’],[v’])とすればよい。
【0017】
要素探索手段320は、取得した値[t]と検索キー[k’]との大小比較を、t−k’ mod qとk’−k’ mod qの大小比較によって行う(S320)。より具体的には、要素探索部320,…,320(要素探索手段320)は、取得した値[t]と検索キー[k’]との大小比較を、秘密分散装置100,…,100にt−k’ mod qとk’−k’ mod qとを秘密計算で大小比較させる。
【0018】
検索手段330は、要素探索手段320の大小比較の結果に基づいて、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーk’を持つ情報([k’],[v’])を検索する(S330)。なお、情報([k’],[v’])は入力された情報([k],[v]),…,([k],[v])を乱数rだけスライドしただけであり、検索キーkと属性値vの値は変更していない。したがって、検索値や検索区間に該当する検索キーk’を持つ情報([k’],[v’])を検索することは、検索値や検索区間に該当する検索キーkを持つ情報([k],[v])を検索することと等価である。
【0019】
実施例1のセキュア検索システムによれば、ソート済の検索キーを計算者の知らないランダム数分秘密にスライドさせることで、検索によりスライド後の状態でのどの検索キーがヒットしたかが計算者に分かっても、スライド前の検索キーとの対応はつかない。つまり、計算者は元のどの検索キーが検索にヒットしたのかが分からなくなるので、1回の検索では検索キーの大小関係に関する情報が漏れない。また、検索を複数回行った場合もランダムスライドなしの場合より漏れる情報は常に小さくなる。また検索機能の計算量は対数時間である。
【0020】
[変形例1]
変形例1では、ランダムスライド手段310のより具体的な例について説明する。変形例1ではネットワーク1000に接続された3台(N=3)の秘密検索装置10,10,10で構成されたセキュア検索システムとする。セキュア検索システムの構成例は図1、処理フローは図2である。変形例1のセキュア検索システムの秘密検索装置10の秘密分散装置100と記録部190は実施例1と同じであり、検索制御部300についてもより具体的なだけである。したがって、実施例1との重複説明を避けるために説明は省略するが、実施例1と同様に要素探索手段320、検索手段330を備えている。
【0021】
変形例1のランダムスライド部310は、インデックス付加部311、スライド実行部312、比較用計算部315を有する。インデックス付加手段311(図示していない)はインデックス付加部311,311,311で構成され、スライド実行手段312(図示していない)はスライド実行部312,312,312で構成され、比較用計算手段315(図示していない)は比較用計算部315,315,315で構成される。つまり、ランダムスライド手段310は、インデックス付加手段311、スライド実行手段312、比較用計算手段315を有する。
【0022】
インデックス付加手段311は、検索キー[k]にインデックス[m]を付加し、検索キー([k],[m])を生成する(S311)。インデックス[m]は後の処理では大小比較の対象となる。大小比較では、2ビット展開した状態の方が計算量を少なくできるので、2ビット展開して秘密分散しておけばよい。このように2ビット展開して秘密分散したことを明示する記号を[]とすると、インデックス[m]を付加すればよい。なお、後述の説明の中で特に2ビット展開であることを明示していない場合でも、2ビット展開としてもかまわない。
【0023】
スライド実行手段312は、乱数r12,r23,r31を生成する。そして、情報([k],[v])を、秘密検索装置10と秘密検索装置10が秘密計算によって乱数r12分スライドさせ、移動後の情報をさらに秘密検索装置10と秘密検索装置10が秘密計算によって乱数r23分スライドさせ、移動後の情報をさらに秘密検索装置10と秘密検索装置10が秘密計算によって乱数r31分スライドさせる(S312)。このように処理することで、r12+r23+r31を乱数r(=r12+r23+r31)としてm番目の情報([k],[v])を秘密計算によって(m−r mod M)番目に移動させることができる。より具体的には、スライド実行部312,312,312(スライド実行手段312)は、秘密分散装置100,100に乱数r12を生成させ、秘密分散装置100,100に乱数r23を生成させ、秘密分散装置100,100に乱数r31を生成させる。ただし、乱数r12,r23,r31は0以上M−1以下の整数である。そして、スライド実行部312,312,312(スライド実行手段312)は、情報([k],[v])を、秘密分散装置100と秘密分散装置100に秘密計算によって乱数r12分スライドさせ、移動後の情報をさらに秘密分散装置100と秘密分散装置100に秘密計算によって乱数r23分スライドさせ、移動後の情報をさらに秘密分散装置100と秘密分散装置100に秘密計算によって乱数r31分スライドさせる。例えば、乱数rの断片を(r12,r31),(r12,r23),(r31,r12)として、記録部190,190,190に分散して記録すれば、容易に乱数rを秘密分散できる。そして、2ビット展開して秘密分散した乱数[r mod M]も求めておけば、後の大小比較に便利である。なお、乱数r12,r23,r31のそれぞれが0以上M−1以下の整数なので、[r mod M]は、[r]とMとの大小比較と減算とを2回行う処理で求めることができる。
【0024】
比較用計算手段315は、値[M−r]を秘密計算で求める(S315)。つまり、比較用計算部315,315,315(比較用計算手段315)は、秘密分散装置100,100,100に値[M−r]を秘密計算で求めさせる。なお、値[M−r]は後で大小比較に用いるので、2ビット展開した[M−r]を求めておけばよい。
【0025】
[変形例2]
変形例2では、要素探索手段320と検索手段330のより具体的な例について説明する。セキュア検索システムの構成例は図1、処理フローは図2である。変形例2のセキュア検索システムの秘密検索装置10の秘密分散装置100と記録部190は実施例1と同じであり、検索制御部300についてもより具体的なだけである。したがって、実施例1との重複説明を避けるために説明は省略するが、実施例1と同様にランダムスライド手段310を備えている。
【0026】
変形例2のセキュア検索システムは、値tを検索値として、検索キーk’,…,k’の中に検索値tと一致する検索キーがある場合には少なくとも1つの秘密分散された情報([k’],[v’])を出力する。
【0027】
ステップS310が終了すると、検索手段330は、何番目の情報([k’],[v’])と検索値[t]とを比較するのかを選択する(S331)。つまり、mの値を選択する。
【0028】
要素探索手段320は、t=k’かを秘密計算で確認する。そして、真(t=k’)ならば等しいとし、偽(t≠k’)ならばk’=k’かを秘密計算で確認する。そして、真(k’=k’)ならばm≧M−rのときは検索値[t]が小さい、m<M−rのときは検索値[t]が大きいとし、偽(k’≠k’)ならば
t−k’ mod q>k’−k’ mod q
のときは検索値[t]が小さい、
t−k’ mod q<k’−k’ mod q
のときは検索値[t]が大きい、
t−k’ mod q=k’−k’ mod q
のときは等しいとする(S320)。なお、mとM−rの大小関係の比較は、インデックス[m]と値[M−r]が2ビット展開されたインデックス[m]と値[M−r]であれば、容易に秘密計算で比較できる。
【0029】
検索手段330は、繰返し条件を満たすまで、ステップS331とS320を繰り返す(S332)。なお、繰返し条件は、検索に求められる条件から適宜決めればよい。例えば、検索値[t]と等しい検索キー[k’]を持つ情報([k’],[v’])のいずれか1つを出力するのであれば、要素探索手段320が「等しい」と判断する検索キー[k’]が1つ見つかるまで繰り返せばよい。また、検索値[t]と等しい検索キー[k’]を持つ情報([k’],[v’])すべてを出力するのであれば、すべての情報([k’],[v’])について検索キー[k’]が検索値[t]と等しいかを確認できるまで繰り返す。なお、情報([k’],[v’])はソートされた情報をスライドしたものなので、すべての検索キー[k’]と検索値[t]との比較が終了しない状態でも、比較していない情報([k’],[v’])の中に検索値[t]と等しいものは残っていないことが分かる場合があることに注意されたい。
【0030】
ステップS332がYesの場合には、情報([k’],[v’])を出力する(S333)。このように、実施例1で説明したステップS330は、例えば本変形例で説明したステップS331,S332,S333で構成すればよい。
【0031】
なお、変形例2のセキュア検索システムは、実施例1と組み合わせるだけでなく、変形例1と組み合わせてもよい。
【0032】
[変形例3]
変形例3では、要素探索手段320と検索手段330の別のより具体的な例について説明する。セキュア検索システムの構成例は図1、処理フローは図3である。変形例3のセキュア検索システムの秘密検索装置10の秘密分散装置100と記録部190は実施例1と同じであり、検索制御部300についてもより具体的なだけである。したがって、実施例1との重複説明を避けるために説明は省略するが、実施例1と同様にランダムスライド手段310を備えている。
【0033】
変形例3のセキュア検索システムは、秘密分散された検索区間に該当する検索キーk’を持つ情報([k’],[v’])を検索する。ここで、[a]は検索区間の下限、[b]は検索区間の上限、[e]は下限に等号を含むかを示すビット、[e]は上限に等号を含むかを示すビットとする。
【0034】
変形例3では、要素探索部320は、第1大小比較部321と第2大小比較部322を有する。第1大小比較手段321(図示していない)は第1大小比較部321,…,321で構成され、第2大小比較手段322(図示していない)は第2大小比較部322,…,322で構成される。つまり、要素探索手段320は、第1大小比較手段321と第2大小比較手段322を有する。
【0035】
ステップS310が終了すると、検索手段330は、検索値[t]として、上限[a]または下限[b]を設定する(S335)。次に、検索手段330は、何番目の情報([k’],[v’])を比較するのかを選択する(S331)。つまり、mの値を選択する。そして、検索手段330は、下限に該当する情報([k’],[v’])の順番mminを求める場合(ステップS335で下限[a]が検索値[t]に設定された場合)には、ビット[e]が等号を含むことを示すときは第2大小比較手段322を選択し、ビット[e]が等号を含まないことを示すときは第1大小比較手段321を選択する。また、上限に該当する情報([k’],[v’])の順番mmaxを求める場合(ステップS335で上限[b]が検索値[t]に設定された場合)には、ビット[e]が等号を含むことを示すときは第1大小比較手段321を選択し、ビット[e]が等号を含まないことを示すときは第2大小比較手段322を選択する(S336)。
【0036】
ステップS336で第1大小比較手段321が選択された場合は、第1大小比較手段321は、秘密計算で次の処理を行う。
【0037】
m≧M−rまたはt−k’ mod q>k’−k’ mod q
が真ならば値[t]が小さいとし、
m<M−rかつt=k
が真ならば等しい、偽ならば値[t]が大きいとする(S321)。
【0038】
また、ステップS336で第2大小比較手段322が選択された場合は、第2大小比較手段322は、秘密計算で次の処理を行う。
【0039】
m<M−rまたはt−k’ mod q>k’−k’ mod q
が真ならば値[t]が大きいとし、
m≧M−rかつt=k
が真ならば等しい、偽ならば値[t]が小さいとする(S322)。なお、mとM−rの大小関係の比較は、インデックス[m]と値[M−r]が2ビット展開されたインデックス[m]と値[M−r]であれば、容易に秘密計算で比較できる。変形例3の場合、実施例1で説明したステップS320は、ステップS321とS322のいずれかによって実行される。
【0040】
検索手段330は、繰返し条件を満たすまでステップS331,S336,S320を繰返す(S337)。繰返し条件は、下限または上限に該当する情報([k’],[v’])の順番が判別できるまでである。また、検索手段330は、上限と下限の両方を求めたかを確認し、Noの場合にはステップS335に戻り、Yesの場合にはステップS339に進む(S338)。
【0041】
検索手段330は、下限に該当する情報([k’],[v’])の順番mminを求める場合(ステップS335で下限[a]が検索値[t]に設定された場合)には、ステップS321またはS322の結果を用いて下限に該当する情報([k’],[v’])の順番mminを求める。また、上限に該当する情報([k’],[v’])の順番mmaxを求める場合(ステップS335で上限[b]が検索値[t]に設定された場合)には、ステップS321またはS322の結果を用いて上限に該当する情報([k’],[v’])の順番mmaxを求める。そして、検索手段330は、mmin<mmaxならば、mmin番目からmmax番目までの情報([k’],[v’])を出力し、mmin>mmaxならば、mmax番目からM番目までの情報([k’],[v’])と1番目からmmax番目までの情報([k’],[v’])を出力する(S339)。
【0042】
なお、変形例3のセキュア検索システムは、実施例1と組み合わせるだけでなく、変形例1と組み合わせてもよい。また、検索値と同じ検索キーを持つ情報([k’],[v’])を探すときは変形例2のセキュア検索システムとして動作し、検索区間に該当する情報([k’],[v’])を探すときは変形例3のセキュア検索システムとして動作してもよい。
【0043】
変形例1から3のセキュア検索システムも、ソート済の検索キーを計算者の知らないランダム数分秘密にスライドさせることで、検索によりスライド後の状態でのどの検索キーがヒットしたかが計算者に分かっても、スライド前の検索キーとの対応はつかない。つまり、計算者は元のどの検索キーが検索にヒットしたのかが分からなくなるので、1回の検索では検索キーの大小関係に関する情報が漏れない。また、検索を複数回行った場合もランダムスライドなしの場合より漏れる情報は常に小さくなる。また検索機能の計算量は対数時間である。
【0044】
[秘密計算]
上述の説明では、秘密計算については1つの方法に限定しないことを前提としており、具体例は示さなかった。以下の説明では、秘密検索装置10,…,10が実行するランダム置換とその他の秘密計算について説明する。なお、以下の秘密計算に関する説明は、1つの例でありこれに限定されるものではない。本発明のセキュア検索システムでは他の秘密計算を用いてもよい。
【0045】
ランダム置換1
図4に本発明に利用できる秘密分散装置100の機能構成例を詳しく示したセキュア検索システムを示す。図5にランダム置換の1つ目の処理フロー例を示す。この例では、セキュア検索システムは選択手段105も備える。ここで、A,…,Aを各秘密検索装置10が断片を分散して記録するK個の数値(Kは2以上の整数)、数値Aをk番目の数値(kは1以上K以下の整数)、aknを秘密検索装置10が記録するk番目の断片とする。なお、数値A,…,Aが、秘匿化したい数値群であって、例えば、ソートの対象となる数値群である。ソートの対象となる数値群としては、例えば、数値Aが各々の人の年収を示すような数値群が考えられる。選択手段105は、いずれかの秘密検索装置の内部に配置されてもよいし、単独の装置であってもよい。
【0046】
セキュア検索システムは、選択手段と断片置換手段と再分散手段を備える。また、秘密分散装置100は、少なくとも断片置換部110と再分散部120と記録部190を備える。記録部190は断片a1n,…,aKnなどを記録する。また、記録部190は、自身が記録している断片aknが数値Aの何番目の断片なのかに関する情報も記録する。
【0047】
選択手段105は、N未満の数の秘密検索装置10を選択する(S105)。例えば、N個の断片のうちN’個を集めれば数値を復元できる秘密分散であれば、断片置換手段がN’個以上N未満の秘密検索装置を選べばよい。
【0048】
断片置換手段は、少なくとも断片置換部110,…,110を含んで構成される。そして、選択手段105に選択された秘密検索装置10(ただし、iは選択された秘密検索装置を示す番号)の断片置換部110間で{1,…,K}→{1,…,K}の全単射πを作成し、選択された秘密検索装置10の記録部190が記録する断片aπ(k)iをk番目の断片にする(S110)。上記の全単射πは、1〜Kを単にランダムに並べ替えることを前提としているが、本発明の場合は、m番目の情報([k],[v])を(m−r mod M)番目または(m+r mod M)番目に移動させるような全単射πとすればよい。また、全単射πは選択された秘密検索装置10間で生成してもよいし、選択された秘密検索装置10のうちの1つの秘密検索装置が生成して、選択された秘密検索装置10間で共有してもよい。
【0049】
再分散手段は、少なくとも再分散部120,…,120を含んで構成される。再分散手段は、断片置換手段によって置換された数値Aπ(k)に対応する断片aπ(k)i(k番目に置換されている)を用いて再分散化して新しい断片bk1,…,bkNを求め、数値Bの断片とする(S120)。つまり、Aπ(k)=Bの関係が成り立つが、選ばれなかった秘密検索装置は全単射πを知らないので、Aπ(k)=Bであることを知らない。なお、各秘密検索装置10の記録部190は、断片bknを記録するだけでなく、自身が記録しているk番目の断片である断片bknが数値Bの断片であるという情報も記録する。また、数値B,…,Bを新しい数値A,…,Aとし、選択手段で選択する秘密検索装置の組み合わせを変更すれば、この処理を繰り返すことができる(S111,S112)。
【0050】
本発明のセキュア検索システムによれば、限定された秘密検索装置間で断片をシャッフルする。したがって、選ばれなかった秘密検索装置は、全単射πを知らないので、数値A,…,Aと数値B,…,Bとの対応が分からない。つまり、特定の秘密検索装置からは数値A,…,Aと数値B,…,Bとの対応が分からない状態にしたいのであれば、その秘密検索装置を選択手段105で選ばないように、選択する秘密検索装置をあらかじめ定めればよい。また、選択手段105が選ぶ秘密検索装置を変更しながらこの処理を繰り返し、全ての秘密検索装置が選ばれなかったことがある状態にすれば、全ての秘密検索装置が数値A,…,Aと対応つけることができない数値B,…,Bを得ることができる。
【0051】
ランダム置換2
次のランダム置換のためのセキュア検索システムの秘密分散装置100を詳細に示した機能構成例も図4に示す。図6にランダム置換の2つ目の処理フロー例を示す。この例でも、セキュア検索システムは選択手段105も備える。ここで、A,…,Aを各秘密検索装置10が断片を分散して記録するK個の数値(Kは2以上の整数)、数値Aをk番目の数値(kは1以上K以下の整数)、aknを秘密検索装置10が記録する数値Aの断片とする。
【0052】
本発明のセキュア検索システムは、選択手段105、初期情報分散手段、初期乗算手段、断片置換手段、再分散手段、確認分散手段、確認乗算手段、改ざん検出手段を備える。また、秘密分散装置100は、初期情報分散部130、初期乗算部140、断片置換部110、再分散部120、確認分散部150、確認乗算部160、改ざん検出部170を備える。記録部190は断片a1n,…,aKnなどを記録する。また、記録部190は、自身が記録している断片aknが数値Aの何番目の断片なのかに関する情報も記録する。
【0053】
選択手段105はランダム置換1と同じである。初期情報分散手段は、初期情報分散部130,…,130で構成される。そして、選択手段105に選択された秘密検索装置10の初期情報分散部130は、秘密検索装置10,…,10のどれも知らないK個の数値P,…,Pそれぞれの断片p1n,…,pKnを秘密計算によって求め、記録部190に記録する(S130)。具体的には、選択手段105に選択された秘密検索装置から、2つ以上の秘密検索装置を選定する。そして、選定された秘密検索装置が作った値に基づいて、どの装置も知らない値の断片を作ればよい。例えば、2つの秘密検索装置10,10を選定し(ただし、i≠j)、秘密検索装置10が生成した数値の断片と、秘密検索装置10が生成した数値の断片を分散して記録する。そして、その2つの数値の和を秘密計算によって求め、結果が分からないように断片を分散して記録すれば、全ての秘密検索装置が知らない数値の断片を分散して記録できる。この例では、選定した秘密検索装置を2つとしたが、2つ以上でもかまわない。
【0054】
初期乗算手段は、初期乗算部140,…,140で構成される。初期乗算部140,…,140は、S=P×Aである数値Sの断片sk1,…,skNを秘密計算によって求め、記録部190,…,190に分散して記録する(S140)。
【0055】
断片置換手段と再分散手段は、ランダム置換1と同じである。確認分散手段は、確認分散部150,…,150で構成される。確認分散部150,…,150は、k=1〜Kについて、Q=Pπ(k)である数値Qの断片qk1,…,qkNを秘密計算によって生成し、記録部190,…,190に分散して記録する(S150)。具体的には、ステップS130で選定された秘密検索装置が作った値に基づいて、どの装置も知らない値の別の断片を作ればよい。例えば、ステップS130で選定された秘密検索装置10が数値Pπ(k)用に生成した数値の別の断片(新しい断片)と、ステップS130で選定された秘密検索装置10が数値Pπ(k)用に生成した数値の別の断片(新しい断片)を分散して記録する。そして、その2つの数値の和を秘密計算によって求め、結果が分からないように断片を分散して記録すれば、Q=Pπ(k)であり、かつ、全ての秘密検索装置が知らない数値の断片を分散して記録できる。この例では、選定した秘密検索装置を2つとしたが、ステップS130と同じように2つ以上でもかまわない。
【0056】
確認乗算手段は、確認乗算部160,…,160で構成される。確認乗算部160,…,160は、T=Q×Bである数値Tの断片tk1,…,tkNを秘密計算によって求め、記録部190,…,190に分散して記録する(S160)。
【0057】
改ざん検出手段は、改ざん検出部170,…,170で構成される。改ざん検出部170,…,170は、k=1〜Kについて、T=Sπ(k)であることを確認する(S170)。tkn≠sπ(k)nの場合には、改ざんがあったとして異常終了する。また、数値B,…,Bを新しい数値A,…,Aとし、選択手段で選択する秘密検索装置の組み合わせを変更すれば、この処理を繰り返すことができる(S111,S112)。
【0058】
[その他の秘密計算]
ここでは、セキュア検索システムが3個の秘密検索装置で構成された場合の秘密計算の例を示す。また、秘密検索装置10,10,10の番号を固定する必要はないので、秘密検索装置10α,10β,10γと表現することにする。つまり、(α,β,γ)は、(1,2,3)、(2,3,1)、(3,1,2)のいずれかである。
【0059】
以下の秘密計算では、秘密検索装置10α,10β,10γが分散して記録する数値Aの断片を(aγα,aαβ)、(aαβ,aβγ)、(aβγ,aγα)、数値Bの断片を(bγα,bαβ)、(bαβ,bβγ)、(bβγ,bγα)、数値Cの断片を(cγα,cαβ)、(cαβ,cβγ)、(cβγ,cγα)とする。なお、以下の説明では、Wを2以上のあらかじめ定めた整数とし、計算結果はWで除した余りである。言い換えると、以下の説明の計算式では“mod W”を省略している。
【0060】
数値Aの秘密分散
(1)乱数aαβ,aβγを生成する。
(2)aγα=A−aαβ−aβγを計算し、断片を(aγα,aαβ)、(aαβ,aβγ)、(aβγ,aγα)とし、秘密検索装置10α,10β,10γに分散して記録する。
【0061】
数値Aの復元
(1)秘密検索装置10αは秘密検索装置10βにaγαを送信し、秘密検索装置10γにaαβを送信する。秘密検索装置10βは秘密検索装置10γにaαβを送信し、秘密検索装置10αにaβγを送信する。秘密検索装置10γは秘密検索装置10αにaβγを送信し、秘密検索装置10βにaγαを送信する。
(2)秘密検索装置10αは秘密検索装置10βから受信したaβγと秘密検索装置10γから受信したaβγとが一致していれば、aαβ+aβγ+aγαを計算して数値Aを復元する。秘密検索装置10βは秘密検索装置10γから受信したaγαと秘密検索装置10αから受信したaγαとが一致していれば、aαβ+aβγ+aγαを計算して数値Aを復元する。秘密検索装置10γは秘密検索装置10αから受信したaαβと秘密検索装置10βから受信したaαβとが一致していれば、aαβ+aβγ+aγαを計算して数値Aを復元する。
【0062】
C=A+Bの秘密計算
(1)秘密検索装置10αは(cγα,cαβ)=(aγα+bγα,aαβ+bαβ)を計算して記録し、秘密検索装置10βは(cαβ,cβγ)=(aαβ+bαβ,aβγ+bβγ)を計算して記録し、秘密検索装置10γは(cβγ,cγα)=(aβγ+bβγ,aγα+bγα)を計算して記録する。
【0063】
C=A−Bの秘密計算
(1)秘密検索装置10αは(cγα,cαβ)=(aγα−bγα,aαβ−bαβ)を計算して記録し、秘密検索装置10βは(cαβ,cβγ)=(aαβ−bαβ,aβγ−bβγ)を計算して記録し、秘密検索装置10γは(cβγ,cγα)=(aβγ−bβγ,aγα−bγα)を計算して記録する。
【0064】
C=A+Sの秘密計算(ただし、Sは既知の定数)
(1)秘密検索装置10αは(cγα,cαβ)=(aγα+S,aαβ)を計算して記録し、秘密検索装置10γは(cβγ,cγα)=(aβγ,aγα+S)を計算して記録する。秘密検索装置10βの処理はない。
【0065】
C=ASの秘密計算(ただし、Sは既知の定数)
(1)秘密検索装置10αは(cγα,cαβ)=(aγαS,aαβS)を計算して記録し、秘密検索装置10βは(cαβ,cβγ)=(aαβS,aβγS)を計算して記録し、秘密検索装置10γは(cβγ,cγα)=(aβγS,aγαS)を計算して記録する。
【0066】
C=ABの秘密計算
(1)秘密検索装置10αは、乱数r,r,cγαを生成し、cαβ=(aγα+aαβ)(bγα+bαβ)−r−r−cγαを計算する。そして、秘密検索装置10αは、秘密検索装置10βに(r,cαβ)を、秘密検索装置10γに(r,cγα)を送信する。
(2)秘密検索装置10βは、y=aαββγ+aβγαβ+rを計算し、秘密検索装置10γに送信する。
(3)秘密検索装置10γは、z=aβγγα+aγαβγ+rを計算し、秘密検索装置10αに送信する。
(4)秘密検索装置10βと秘密検索装置10γは、それぞれcβγ=y+z+aβγβγを計算する。
(5)秘密検索装置10αは(cγα,cαβ)を記録し、秘密検索装置10βは(cαβ,cβγ)を記録し、秘密検索装置10γは(cβγ,cγα)を記録する。
【0067】
ビットAの否定(C=1−A)の秘密計算
秘密検索装置10α
(cγα,cαβ)=(1−aγα,−aαβ mod W)
を計算して記録し、秘密検索装置10β
(cαβ,cβγ)=(−aαβ mod M,−aβγ mod W)
を計算して記録し、秘密検索装置10γ
(cβγ,cγα)=(−aβγ mod W,1−aγα
を計算して記録する。
【0068】
ビットの論理積(C=A∧B=AB)の秘密計算
秘密検索装置10α,10β,10γは、整数の乗算(C=AB mod W)の秘密計算と同じ処理を行う。
【0069】
ビットの論理和(C=A∨B=A+B−AB)の秘密計算
(1)秘密検索装置10α,10β,10γは、整数の加算(C=A+B mod W)の秘密計算と同じ処理を行い、C’=A+Bの結果として、秘密検索装置10αが断片(cγα’,cαβ’)を、秘密検索装置10βが断片(cαβ’,cβγ’)を、秘密検索装置10γが断片(cβγ’,cγα’)を記録する。また、秘密検索装置10α,10β,10γは、整数の乗算(C=AB mod W)の秘密計算と同じ処理を行い、C”=ABの結果として、秘密検索装置10αが断片(cγα”,cαβ”)を、秘密検索装置10βが断片(cαβ”,cβγ”)を、秘密検索装置10γが断片(cβγ”,cγα”)を記録する。
(2)秘密検索装置10α,10β,10γは、S=−1として整数の乗算(C=AS mod W)の秘密計算(ただし、Sは既知の定数)と同じ処理を行い、C’’’=−C”の結果として、秘密検索装置10αが断片(cγα’’’,cαβ’’’)を、秘密検索装置10βが断片(cαβ’’’,cβγ’’’)を、秘密検索装置10γが断片(cβγ’’’,cγα’’’)を記録する。
(3)秘密検索装置10α,10β,10γは、整数の加算(C=A+B mod W)の秘密計算と同じ処理を行い、C=C’+C’’’の結果として、秘密検索装置10αが断片(cγα,cαβ)を、秘密検索装置10βが断片(cαβ,cβγ)を、秘密検索装置10γが断片(cβγ,cγα)を記録する。
【0070】
ビットの排他的論理和(C=A∨B=A+B−2AB)の秘密計算
(1)秘密検索装置10α,10β,10γは、整数の加算(C=A+B mod W)の秘密計算と同じ処理を行い、C’=A+Bの結果として、秘密検索装置10αが断片(cγα’,cαβ’)を、秘密検索装置10βが断片(cαβ’,cβγ’)を、秘密検索装置10γが断片(cβγ’,cγα’)を記録する。また、秘密検索装置10α,10β,10γは、整数の乗算(C=AB mod W)の秘密計算と同じ処理を行い、C”=ABの結果として、秘密検索装置10αが断片(cγα”,cαβ”)を、秘密検索装置10βが断片(cαβ”,cβγ”)を、秘密検索装置10γが断片(cβγ”,cγα”)を記録する。
(2)秘密検索装置10α,10β,10γは、S=−2として整数の乗算(C=AS mod W)の秘密計算(ただし、Sは既知の定数)の秘密計算と同じ処理を行い、C’’’=−2C”の結果として、秘密検索装置10αが断片(cγα’’’,cαβ’’’)を、秘密検索装置10βが断片(cαβ’’’,cβγ’’’)を、秘密検索装置10γが断片(cβγ’’’,cγα’’’)を記録する。
(3)秘密検索装置10α,10β,10γは、整数の加算(C=A+B mod W)の秘密計算と同じ処理を行い、C=C’+C’’’の結果として、秘密検索装置10αが断片(cγα,cαβ)を、秘密検索装置10βが断片(cαβ,cβγ)を、秘密検索装置10γが断片(cβγ,cγα)を記録する。
【0071】
ビットA(n),n=0,…,N−1の整数変換の秘密計算
ビットA(n)の整数変換とは、
【0072】
【数1】

【0073】
を求めることである。また、秘密検索装置10α,10β,10γが分散して記録するビットA(n)の断片を(a(n)γα,a(n)αβ)、(a(n)αβ,a(n)βγ)、(a(n)βγ,a(n)γα)とする。秘密検索装置10αは、
【0074】
【数2】

を計算して記録し、秘密検索装置10β
【0075】
【数3】

を計算して記録し、秘密検索装置10γ
【0076】
【数4】

を計算して記録する。
【0077】
Nビットの整数Aの二進数変換の秘密計算
x(n)は、xの下位n+1番目のビットを示すものとする。
(1)n=0からN−1について、秘密検索装置10βが(aαβ+aβγ mod W)(n)を秘密分散し、秘密検索装置10α,10β,10γが(aαβ+aβγ mod W)(n)の断片(b(n)γα,b(n)αβ)、(b(n)αβ,b(n)βγ)、(b(n)βγ,b(n)γα)を分散して記録する。n=0からN−1について、秘密検索装置10γが(aγα)(n)を秘密分散し、秘密検索装置10α,10β,10γが(aγα)(n)の断片((aγα)(n)γα,(aγα)(n)αβ)、((aγα)(n)αβ,(aγα)(n)βγ)、((aγα)(n)βγ,(aγα)(n)γα)を分散して記録する。
(2)cγα=0とし、n=0からN−1について(2−1)から(2−3)の処理を繰返し実行する。
(2−1)d=b(n)+(aγα)(n)−2b(n)(aγα)(n)
の秘密計算を実行し、dの断片を分散して記録する。
(2−2)a(n)=d+c−2d
の秘密計算を実行し、a(n)の断片を分散して記録する。
(2−3)n<N−1であれば、
n+1=b(n)(aγα)(n)+d−b(n)(aγα)(n)d
の秘密計算を実行し、cn+1の断片を分散して記録する。
【0078】
[プログラム、記録媒体]
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0079】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0080】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0081】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0082】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0083】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0084】
10,…,10 秘密検索装置 100,…,100 秘密分散装置
105 選択手段 110,…,110 断片置換部
120,…,120 再分散部 130,…,130 初期情報分散部
140,…,140 初期乗算部 150,…,150 確認分散部
160,…,160 確認乗算部 170,…,170 改ざん検出部
190,…,190 記録部 300,…,300 検索制御部
310 ランダムスライド手段 310,…,310 ランダムスライド部
311 インデックス付加手段 311,…,311 インデックス付加部
312 スライド実行手段 312,…,312 スライド実行部
315 比較用計算手段 315,…,315 比較用計算部
320 要素探索手段 320,…,320 要素探索部
321 第1大小比較手段 321,…,321 第1大小比較部
322 第2大小比較手段 322,…,322 第2大小比較部
330 検索手段 330,…,330 検索部
1000 ネットワーク

【特許請求の範囲】
【請求項1】
N個の秘密検索装置R,…,Rで構成され、検索キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーkを持つ情報([k],[v])を検索するセキュア検索システムであって、
Mは2以上の整数、Nは3以上の整数、mは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、tは検索キーkがとり得る値、qは検索キーkが取り得る最大値よりも大きい整数、情報([k],[v]),…,([k],[v])は検索キーkに基づいてソートされた情報とし、
秘密分散された乱数[r]を生成し、m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目もしくは(m+r mod M)番目に移動させ、移動後の情報を情報([k’],[v’]),…,([k’],[v’])とするランダムスライド手段と、
取得した値[t]と検索キー[k’]との大小比較を、t−k’ mod qとk’−k’ mod qの大小比較によって行う要素探索手段と、
前記要素探索手段の大小比較の結果に基づいて、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーkを持つ情報([k’],[v’])を検索する検索手段と、
を備えるセキュア検索システム。
【請求項2】
請求項1記載のセキュア検索システムであって、
N=3であり、
前記ランダムスライド手段は、
検索キー[k]にインデックス[m]を付加し、検索キー([k],[m])を生成するインデックス付加手段と、
情報([k],[v])を、秘密検索装置Rと秘密検索装置Rが乱数r12を生成して秘密計算によって乱数r12分スライドさせ、移動後の情報をさらに秘密検索装置Rと秘密検索装置Rが乱数r23を生成して秘密計算によって乱数r23分スライドさせ、移動後の情報をさらに秘密検索装置Rと秘密検索装置Rが乱数r31を生成して秘密計算によって乱数r31分スライドさせることで、r12+r23+r31を前記のrとしてm番目の情報([k],[v])を秘密計算によって(m−r mod M)番目に移動させる処理を行うスライド実行手段と、
値[M−r]を秘密計算で求める比較用計算手段と、
を有する
ことを特徴とするセキュア検索システム。
【請求項3】
前記の値tを検索値として、検索キーk’,…,k’の中に検索値tと一致する検索キーがある場合には少なくとも1つの秘密分散された情報([k’],[v’])を出力する請求項1または2記載のセキュア検索システムであって、
前記ランダムスライド手段は、
m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目に移動させる手段であり、
前記要素探索手段は、
t=k’かを秘密計算で確認し、
真ならば等しいとし、
偽ならばk’=k’かを秘密計算で確認し、
真ならばm≧M−rのときは検索値[t]が小さい、m<M−rのときは検索値[t]が大きいとし、
偽ならば
t−k’ mod q>k’−k’ mod qのときは検索値[t]が小さい、
t−k’ mod q<k’−k’ mod qのときは検索値[t]が大きい、
t−k’ mod q=k’−k’ mod qのときは等しい
とする
ことを特徴とするセキュア検索システム。
【請求項4】
秘密分散された検索区間に該当する検索キーk’を持つ情報([k’],[v’])を検索する請求項1または2記載のセキュア検索システムであって、
[a]は検索区間の下限、[b]は検索区間の上限、[e]は下限に等号を含むかを示すビット、[e]は上限に等号を含むかを示すビットとし、
前記ランダムスライド手段は、
m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目に移動させる手段であり、
前記要素探索手段は、
m≧M−rまたはt−k’ mod q>k’−k’ mod q
が真ならば値[t]が小さいとし、
m<M−rかつt=k
が真ならば等しい、偽ならば値[t]が大きいとする第1大小比較手段と、
m<M−rまたはt−k’ mod q>k’−k’ mod q
が真ならば値[t]が大きいとし、
m≧M−rかつt=k
が真ならば等しい、偽ならば値[t]が小さいとする第2大小比較手段と、
を有し、
前記検索手段は、
下限に該当する情報([k’],[v’])の順番mminを求める場合には、下限[a]を前記要素探索手段が取得する値[t]とし、ビット[e]が等号を含むことを示すときは前記第2大小比較手段を用いた結果に従い、ビット[e]が等号を含まないことを示すときは前記第1大小比較手段を用いた結果に従って下限に該当する情報([k’],[v’])の順番mminを求め、
上限に該当する情報([k’],[v’])の順番mmaxを求める場合には、上限[b]を前記要素探索手段が取得する値[t]とし、ビット[e]が等号を含むことを示すときは前記第1大小比較手段を用いた結果に従い、ビット[e]が等号を含まないことを示すときは前記第2大小比較手段を用いた結果に従って上限に該当する情報([k’],[v’])の順番mmaxを求め、
min<mmaxならば、mmin番目からmmax番目までの情報([k’],[v’])を出力し、
min>mmaxならば、mmax番目からM番目までの情報([k’],[v’])と1番目からmmax番目までの情報([k’],[v’])を出力する
ことを特徴とするセキュア検索システム。
【請求項5】
検索キーkと属性値vを含むM個の情報(k,v),…,(k,v)が秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーkを持つ情報([k],[v])を検索するN個の秘密検索装置で構成されるセキュア検索システムの中の秘密検索装置であって、
Mは2以上の整数、Nは3以上の整数、mは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、tは検索キーkがとり得る値、qは検索キーkが取り得る最大値よりも大きい整数、情報([k],[v]),…,([k],[v])は検索キーkに基づいてソートされた情報とし、
秘密分散された乱数[r]を生成し、m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目もしくは(m+r mod M)番目に移動させ、移動後の情報を情報([k’],[v’]),…,([k’],[v’])とするためのランダムスライド部と、
取得した値[t]と検索キー[k’]との大小比較を、t−k’ mod qとk’−k’ mod qの大小比較によって行うための要素探索部と、
前記要素探索部の大小比較の結果に基づいて、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーkを持つ情報([k’],[v’])を検索する検索部と、
を備える秘密検索装置。
【請求項6】
N個の秘密検索装置R,…,Rを用いて、検索キーkと属性値vを含むM個の情報(k,v),…,(k,v)が秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーkを持つ情報([k],[v])を検索するセキュア検索方法であって、
Mは2以上の整数、Nは3以上の整数、mは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、tは検索キーkがとり得る値、qは検索キーkが取り得る最大値よりも大きい整数、情報([k],[v]),…,([k],[v])は検索キーkに基づいてソートされた情報とし、
秘密分散された乱数[r]を生成し、m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目もしくは(m+r mod M)番目に移動させ、移動後の情報を情報([k’],[v’]),…,([k’],[v’])とするランダムスライドステップと、
取得した値[t]と検索キー[k’]との大小比較を、t−k’ mod qとk’−k’ mod qの大小比較によって行う要素探索ステップと、
前記要素探索ステップの大小比較の結果に基づいて、秘密分散された検索値もしくは秘密分散された検索区間に該当する検索キーkを持つ情報([k’],[v’])を検索する検索ステップと、
を有するセキュア検索方法。
【請求項7】
請求項6記載のセキュア検索方法であって、
N=3であり、
前記ランダムスライドステップは、
検索キー[k]にインデックス[m]を付加し、検索キー([k],[m])を生成するインデックス付加サブステップと、
情報([k],[v])を、秘密検索装置Rと秘密検索装置Rが乱数r12を生成して秘密計算によって乱数r12分スライドさせ、移動後の情報をさらに秘密検索装置Rと秘密検索装置Rが乱数r23を生成して秘密計算によって乱数r23分スライドさせ、移動後の情報をさらに秘密検索装置Rと秘密検索装置Rが乱数r31を生成して秘密計算によって乱数r31分スライドさせることで、r12+r23+r31を前記のrとしてm番目の情報([k],[v])を秘密計算によって(m−r mod M)番目に移動させる処理を行うスライド実行サブステップと、
値[M−r]を秘密計算で求める比較用計算サブステップと、
を有する
ことを特徴とするセキュア検索方法。
【請求項8】
前記の値tを検索値として、検索キーk’,…,k’の中に検索値tと一致する検索キーがある場合には少なくとも1つの秘密分散された情報([k’],[v’])を出力する請求項6または7記載のセキュア検索方法であって、
前記ランダムスライドステップは、
m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目に移動させるステップであり、
前記要素探索ステップは、
t=k’かを秘密計算で確認し、
真ならば等しいとし、
偽ならばk’=k’かを秘密計算で確認し、
真ならばm≧M−rのときは検索値[t]が小さい、m<M−rのときは検索値[t]が大きいとし、
偽ならば
t−k’ mod q>k’−k’ mod qのときは検索値[t]が小さい、
t−k’ mod q<k’−k’ mod qのときは検索値[t]が大きい、
t−k’ mod q=k’−k’ mod qのときは等しい
とする
ことを特徴とするセキュア検索方法。
【請求項9】
秘密分散された検索区間に該当する検索キーk’を持つ情報([k’],[v’])を検索する請求項6または7記載のセキュア検索方法であって、
[a]は検索区間の下限、[b]は検索区間の上限、[e]は下限に等号を含むかを示すビット、[e]は上限に等号を含むかを示すビットとし、
前記ランダムスライドステップは、
m番目の情報([k],[v])を秘密計算によって(m−r mod M)番目に移動させるステップであり、
前記要素探索ステップは、
m≧M−rまたはt−k’ mod q>k’−k’ mod q
が真ならば値[t]が小さいとし、
m<M−rかつt=k
が真ならば等しい、偽ならば値[t]が大きいとする第1大小比較サブステップと、
m<M−rまたはt−k’ mod q>k’−k’ mod q
が真ならば値[t]が大きいとし、
m≧M−rかつt=k
が真ならば等しい、偽ならば値[t]が小さいとする第2大小比較サブステップと、
を有し、
前記検索ステップは、
下限に該当する情報([k’],[v’])の順番mminを求める場合には、下限[a]を前記要素探索ステップが取得する値[t]とし、ビット[e]が等号を含むことを示すときは前記第2大小比較サブステップを用いた結果に従い、ビット[e]が等号を含まないことを示すときは前記第1大小比較サブステップを用いた結果に従って下限に該当する情報([k’],[v’])の順番mminを求め、
上限に該当する情報([k’],[v’])の順番mmaxを求める場合には、上限[b]を前記要素探索ステップが取得する値[t]とし、ビット[e]が等号を含むことを示すときは前記第1大小比較サブステップを用いた結果に従い、ビット[e]が等号を含まないことを示すときは前記第2大小比較サブステップを用いた結果に従って上限に該当する情報([k’],[v’])の順番mmaxを求め、
min<mmaxならば、mmin番目からmmax番目までの情報([k’],[v’])を出力し、
min>mmaxならば、mmax番目からM番目までの情報([k’],[v’])と1番目からmmax番目までの情報([k’],[v’])を出力する
ことを特徴とするセキュア検索方法。
【請求項10】
請求項1から4のいずれかに記載のセキュア検索システムの各秘密検索装置としてコンピュータを機能させるためのセキュア検索プログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−150764(P2012−150764A)
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2011−10849(P2011−10849)
【出願日】平成23年1月21日(2011.1.21)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】