JP5907902B2 - 秘密計算による表の等結合システム、方法 - Google Patents

秘密計算による表の等結合システム、方法 Download PDF

Info

Publication number
JP5907902B2
JP5907902B2 JP2013008704A JP2013008704A JP5907902B2 JP 5907902 B2 JP5907902 B2 JP 5907902B2 JP 2013008704 A JP2013008704 A JP 2013008704A JP 2013008704 A JP2013008704 A JP 2013008704A JP 5907902 B2 JP5907902 B2 JP 5907902B2
Authority
JP
Japan
Prior art keywords
secret
vector
value
records
create
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
JP2013008704A
Other languages
English (en)
Other versions
JP2014139640A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2013008704A priority Critical patent/JP5907902B2/ja
Publication of JP2014139640A publication Critical patent/JP2014139640A/ja
Application granted granted Critical
Publication of JP5907902B2 publication Critical patent/JP5907902B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、秘密計算によって、表に含まれる情報を秘密にしたまま、複数の表に共通のキー属性を鎹として複数の表の等結合を行う等結合技術に関する。
暗号化された数値を復元することなく指定された演算の演算結果を得る方法として、秘密計算と呼ばれる方法がある(例えば非特許文献1参照)。非特許文献1の方法では、数値を復元することのできる複数の情報を3つの秘密計算装置に分散するという暗号化を行い、数値を復元することなく、加減算、定数和、乗算、定数倍、論理演算(否定、論理積、論理和、排他的論理和)、データ形式変換(整数、二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。一般に、分散数は3に限らずP(Pは3以上の所定の定数)とすることができ、P個の秘密計算装置による協調計算によって秘密計算を実現するプロトコルはマルチパーティプロトコルと呼ばれる。
ところで、表に対するデータベース処理では多くの場合、データは複数の属性値(属性に対応する値であり、表1の例では属性であるID、契約、住所、身長、体重のそれぞれの具体的な値“1”,“東京都”,“182”,“62”などである)の組からなるレコード(表1に例示される表の各行のこと)の集合からなる表単位で管理される。データベース処理で重要な処理の一つに等結合がある。等結合は、表1のような複数の表を入力とし、キーと呼ばれる属性(キー属性)の値(キー属性値)がすべての表で共通のレコードを抜き出して、これらを横に並べた新しい表を得る計算である。例えば、表1の各表を、各表に共通のキー属性(この例ではID)を基準として等結合を行うと表2のような表が得られる。関係データベースではデータを多くの小さな表に分割して管理し、利用時に必要な表を等結合して処理を行うことが一般的であり、等結合は非常に重要な処理である。
Figure 0005907902
秘密計算によって表の結合を実現した方法として、非特許文献2の方法や非特許文献3の方法がある。非特許文献2の方法では、まず入力された複数の表の直積を計算し、その後、結合後の表に含まれない行を削除することにより、出力の表の大きさを秘密にしたまま表の結合を実現している。非特許文献3の方法では、各表のキー属性値を並べてソートすることによって効率よく表の結合を実現している。
千田浩司、濱田浩気、五十嵐大、高橋克巳、"軽量検証可能3パーティ秘匿関数計算の再考"、In CSS、2010. 志村正法、遠藤つかさ、宮崎邦彦、吉浦裕、"安全で機能制限のないデータベースを実現するマルチパーティプロトコルを用いた関係代数演算"、情報処理学会研究報告、CSEC、Vol. 2008、No. 71、pp.187-193、2008. 濱田浩気、菊池亮、五十嵐大、千田浩司、"秘匿計算上の結合アルゴリズム"、人工知能学会全国大会(第26回)論文集、June 2012.
しかしながら、従来技術は表の大きさを秘密にすることと計算効率を両立させることができなかった。
秘密計算がマルチパーティプロトコルで実現されるものとして計算効率の評価を行う場合、マルチパーティプロトコルは複数のパーティ間で通信を行いながら協調計算を行う方式であり、一般的なシステム構成では各パーティが単独で行うローカルの計算に比べて通信に要する時間が著しく大きいので、ローカルの計算は無視できるものとみなせる。従って、通信したデータの量(通信量)の尺度で計算効率の評価を行う。このとき、非特許文献2の方法は、出力の表の大きさを秘密にすることができるが、表の数をh、各表の行数をそれぞれmi(1≦i≦h)とすると、通信量がO(Π1≦i≦h mi)と膨大になってしまうという課題がある。非特許文献3の方法は、m=Σ1≦i≦h miとすると、通信量がO(m log m)であるが、入出力の表の大きさを秘密にすることができない。また、非特許文献3の方法は3つ以上の表の等結合が可能であるが、非特許文献2の方法は2つの表の等結合を行う方法であり、3つ以上の表の等結合を行う場合、2つの表の等結合を繰り返し実行しなくてはならず非効率である。
そこで本発明は、秘密計算によって、表に含まれる情報を秘密にしたまま、効率良く、2つ以上の表を、表の大きさが秘密にされた表に等結合する等結合技術を提供することを目的とする。
本発明の等結合技術は、次のとおりである。
複数の秘密計算装置による協調計算によって、q個の行列表示された表S,T1,…,Tq-1(ただし、Sはm0×n0行列、Tiはmi×ni行列(1≦i<q)とする)の秘匿文[[S]],[[T1]],…,[[Tq-1]]に対して、S,T1,…,Tq-1を等結合してダミーの行(以下、行をレコードといい、ダミーの行を空レコードという)を加えた表R(ただし、mをm=min(m0,…,mq-1)、nをn=Σi=0 q-1 niとして、Rはm×n行列である)の秘匿文[[R]]と、表Rの空レコードの位置を特定するためのベクトルg(以下、空フラグという)の秘匿文[[g]]を出力する等結合技術であり、複数の秘密計算装置の協調計算によって、各整数i∈[1,q)について、[[S]]と[[Ti]]とに共通の属性については、その属性値として[[S]]の値を用い、[[S]]と[[Ti]]とに共通しない属性については、その属性値として任意の秘匿値を用いることによって、レコード数が[[S]]と同じで、[[S]]と[[Ti]]に共通の属性を含む秘匿化された表[[Si']]を[[Ti]]に接続した表[[Ti']]を作成し、[[S]],[[T1']],…,[[Tq-1']]に対して、対応する表のレコード数と同じ要素数を持ち、対応する表に含まれるレコードを識別するための任意の値を要素に持つベクトルを秘匿化およびランダム置換したタグベクトル[[t S]],[[t T1']],…,[[t Tq-1']]を作成し、各整数i∈[1,q)について、
(a) [[t]]:=[[t S]]||[[t Ti']]、[[s]]:=[[1]]m0||[[0]]mi+m0、[[s']]:=[[0]]m0+mi||[[1]]m0、[[S]]と[[Ti']]のキー属性を連結したベクトル[[k]]を作成し、
(b) ([[t]],[[s]],[[s']])を[[k]]に従って安定ソートし、
(c) [[u]]を、
Figure 0005907902

として定め、
(d) [[u]],[[t]],[[s']]を並べた([[u]],[[t]],[[s']])をランダム置換し、
(e) [[u]]を復元してuを得て、
(f) u[j]≠0を満たす各jについて、[[t]][j]を復元して並べたベクトルt i、u[j]を並べたベクトルu i、[[s']][j]を並べたベクトル[[f i]]を作成し、各([[S]],[[t S]]),([[T1']],[[t T1']]),…,([[Tq-1']],[[t Tq-1']])をそれぞれランダム置換してから、[[tS]],[[t T1']],…,[[t Tq-1']]を復元してタグベクトルの平文tS,t T1',…,t Tq-1'を得て、[[R]]の第j行(1≦j≦m0)である[[R]][j]を、[[R]][j]=[[S]][j]||[[T1']][wj,1]||…||[[Tq-1']][wj,q-1]で計算することによって出力の表[[R]]を作成し(ただし、ここでの記号||は行ベクトルの列方向の連結を表す。また、wj,iは、ti[hj,i]=TTi'[wj,i]を満たす値であり、hj,iは、tS[j]=ui[hj,i]を満たす値である)、[[g]]の第j要素である[[g]][j]を、[[g]][j]=[[f 1]][y1,j]∨…∨[[f q-1]][yq-1,j]で計算することによって出力の空フラグ[[g]]を作成する(ただし、yi,jは、tS[j]=ui[y1,j]を満たす値である)。
あるいは、複数の秘密計算装置による協調計算によって、大きさが秘匿されたq個の行列表示された表S,T1,…,Tq-1(ただし、Sはm0×n0行列、Tiはmi×ni行列(1≦i<q)とし、各表は、行にダミーの行(以下、ダミーの行を空レコードという)を含み、列に空レコードの位置を特定するための列ベクトルである空フラグを含んでいるとする)の秘匿文[[S]],[[T1]],…,[[Tq-1]]に対して、S,T1,…,Tq-1を等結合してダミーの行(以下、行をレコードという)を加えた表R(ただし、mをm=min(m0,…,mq-1)、nをn=Σi=0 q-1 niとして、Rはm×n行列である)の秘匿文[[R]]と、表Rの空レコードの位置を特定するための空フラグgの秘匿文[[g]]を出力する等結合技術であって、複数の秘密計算装置の協調計算によって、各整数i∈[1,q)について、[[S]]と[[Ti]]とに共通の属性については、その属性値として[[S]]の値を用い、[[S]]と[[Ti]]とに共通しない属性については、その属性値として任意の秘匿値を用いることによって、レコード数が[[S]]と同じで、[[S]]と[[Ti]]に共通の属性を含む秘匿化された表[[Si']]を[[Ti]]に接続した表[[Ti']]を作成し、[[S]],[[T1']],…,[[Tq-1']]に対して、対応する表のレコード数と同じ要素数を持ち、対応する表に含まれるレコードを識別するための任意の値を要素に持つベクトルを秘匿化およびランダム置換したタグベクトル[[t S]],[[t T1']],…,[[t Tq-1']]を作成し、
各整数i∈[1,q)について、
(a) [[t]]:=[[t S]]||[[t Ti']]、[[s]]:=[[1]]m0||[[0]]mi+m0、[[s']]:=[[0]]m0+mi||[[1]]m0、[[t']]:=[[*]]m0+mi||[[t S]]、[[S]]と[[Ti']]のキー属性値を連結したベクトル[[k]]、[[S]]と[[Ti]]と[[Si']]の空フラグを連結したベクトル[[z]]を作成し(ただし、[[*]]は任意の秘匿文である)、
(b) ([[t]],[[s]],[[s']],[[z]],[[t']])を([[z]],[[k]])に従って安定ソートし(ただし、([[z]],[[k]])は、[[z]][j]||[[k]][j]をj番目の要素とする(m0+mi+m0)行1列の列ベクトルである)、
(c) [[u]]を
Figure 0005907902

として定め、
(d) [[u]],[[t]],[[s']]を並べた([[u]],[[t]],[[s']])をランダム置換し、
(e) [[u]]を復元してuを得て、
(f) u[j]≠0を満たす各jについて、[[t]][j]を復元して並べたベクトルt i、u[j]を並べたベクトルu i、[[s']][j]∨[[z]][j]を計算して並べたベクトル[[f i]]を作成し、各([[S]],[[t S]]),([[T1']],[[t T1']]),…,([[Tq-1']],[[t Tq-1']])をそれぞれランダム置換してから、[[tS]],[[t T1']],…,[[t Tq-1']]を復元してタグベクトルの平文tS,t T1',…,t Tq-1'を得て、[[R]]の第j行(1≦j≦m0)である[[R]][j]を、[[R]][j]=[[S]][j]||[[T1']][wj,1]||…||[[Tq-1']][wj,q-1]で計算することによって出力の表[[R]]を作成し(ただし、ここでの記号||は行ベクトルの列方向の連結を表す。また、wj,iは、ti[hj,i]=TTi'[wj,i]を満たす値であり、hj,iは、tS[j]=ui[hj,i]を満たす値である)、[[g]]の第j要素である[[g]][j]を、[[g]][j]=[[f 1]][y1,j]∨…∨[[f q-1]][yq-1,j]で計算することによって出力の空フラグ[[g]]を作成する(ただし、yi,jは、tS[j]=ui[y1,j]を満たす値である)。
本発明に拠れば、詳細は後述の実施形態に譲るが、秘密計算によって、表に含まれる情報を秘密にしたまま、効率良く、2つ以上の表を、表の大きさが秘密にされた表に等結合することができる。
実施形態における等結合の処理手順を示す図。
本発明の実施形態を説明する。
後述する等結合アルゴリズムは、既存の秘密計算上の演算の組み合わせで構築される。この等結合アルゴリズムが必要とする演算は、秘匿化、復元、加算、減算、乗算、ランダム置換、安定ソートである。秘匿化、復元、加算、減算、乗算は例えば上記非特許文献1を、ランダム置換は例えば参考文献1を、安定ソートは例えば参考文献2に従えばよい。
(参考文献1)Sven Laur, Jan Willemson, and Bingsheng Zhang. "Round-efficient oblivious database manipulation" In Xuejia Lai, Jianying Zhou, and Hui Li, editors, ISC, Vol. 7001 of LNCS, pp. 262-277. Springer, 2011.
(参考文献2)濱田浩気、五十嵐大、千田浩司、高橋克巳、“秘匿関数計算上の線形時間ソート”、In SCIS、pp.1-7、2011.
<定義と記法>
以下、値はすべて有限環ZN上の値とする。ベクトルaとベクトルbを連結したベクトルをa||bと書く。すなわち、a=(a1,…,am)T、b=(b1,…,bn)Tのとき、a||b=(a1,…,am,b1,…,bn)Tである。Tは転置の記号である。特に断りがない限り、(a 1,…,a Z)は、a i=(a1,i,…,am,i)T(i=1,…,Z)とすると、m行Z列の行列を表す。行列Mのi行目の行ベクトルをM[i]と表記する。ベクトルvのj番目の要素をv[j]と表記する。
<秘匿化と復元>
a∈ZNを暗号化や秘密分散などの手段で秘匿化して得られた情報を[[a]]と表記する。ここで、P個の秘密計算装置による秘密計算を前提とすると、a∈ZNは複数(例えばP1個)の秘密値に分散されており、[[a]]は複数の秘密値ai(i∈{1,2,…,P1})の集合を表している。各秘密計算装置は、各装置に割り当てられた秘密値ai(i∈{1,2,…,P1})の一部を保有しているが、秘密値ai(i∈{1,2,…,P1})の全部を保有していないものとする。[[a]]をaの秘匿文などと呼称し、aを秘匿文[[a]]の平文などと呼称する。ベクトルv=(v1,…,vn)の各要素を秘匿化したベクトル([[v1]],…,[[vn]])を[[v]]と表記する。ベクトル[[u]]=([[u1]],…,[[um]])とベクトル[[v]]=([[v1]],…,[[vn]])を結合したベクトル([[u1]],…,[[um]],[[v1]],…,[[vn]])を[[u]]||[[v]]と書く。aの秘匿文[[a]]をn個並べた秘匿文のベクトル([[a]],…,[[a]])を[[a]]nと略記する。行列Aの各要素を秘匿化した行列を[[A]]と表記する。
<加算、減算、乗算>
加算、減算、乗算の各演算は2つの値a,b∈ZNの秘匿文[[a]],[[b]]を入力とし、それぞれa+b、a-b、abの計算結果cの秘匿文[[c]]を計算する。これらの演算の実行をそれぞれ
[[c]] ← Add([[a]],[[b]]),
[[c]] ← Sub([[a]],[[b]]),
[[c]] ← Mul([[a]],[[b]])
と記述する。誤解を招く恐れのない場合は、Add([[a]],[[b]])、Sub([[a]],[[b]])、Mul([[a]],[[b]])をそれぞれ[[a]]+[[b]]、[[a]]-[[b]]、[[a]]×[[b]]と略記する。
<論理和>
論理和の演算は2つの値a,b∈{0,1}の秘匿文[[a]],[[b]]を入力とし、aとbの論理和cの秘匿文[[c]]を計算する。この演算の実行を
[[c]] ← [[a]] OR [[b]]
と記述し、ここでは
[[c]] ← [[a]]+[[b]]-[[a]]×[[b]]
の計算によって実現する。
<ランダム置換>
ランダム置換はベクトルの要素をランダムな順序で並べ替えたベクトルを出力する演算である。ここで扱う秘密計算でのランダム置換演算は、複数の秘匿化されたベクトルに対して同一のランダム置換を施す。すなわち、k個(1≦k)の大きさnのベクトルa→(1),…,a→(k)∈ZN nの秘匿文[[a→(1)]],…,[[a→(k)]]を入力とし、等結合システムに含まれるいずれの装置(全ての秘密計算装置を含む)も知ることのできないランダムな全単射πr:{1,…,n}→{1,…,n}についてb(i) πr(j)=a(i) j(1≦i≦k;1≦j≦n)を満たすベクトルb→(1),…,b→(k)∈ZN nの秘匿文[[b→(1)]],…,[[b→(k)]]を計算する。
<安定ソート>
ソートはベクトルの要素を昇順に並べ替えたベクトルを出力する演算である。入力のベクトルk=(k1,…,kn)に対して出力されるベクトルh=(h1,…,hn)はh1≦…≦hnを満たすkの要素を並べ替えたベクトルである。安定ソートは、ソート演算で同じ値が存在した場合に同じ値の要素同士の順序を保存する演算である。kとhの各要素はある全単射πs:{1,…,n}→{1,…,n}についてhπs(i)=ki(1≦i≦n)を満たしており、安定ソートでは
πs(i)<πs(j) ⇔ (ki<kj) ∨ (ki=kj ∧ i<j)
が成り立つ。
ここで扱う秘密計算上の安定ソート演算は、複数のベクトルを入力とし、キーとするベクトルの要素の並べ替えに従って他のベクトルの要素の並べ替えを行う。すなわち、安定ソートのキーとする大きさnのベクトルk∈ZN nとg個(1≦g)の大きさnのベクトルa→(1),…,a→(g)∈ZN nの秘匿文[[k]],[[a→(1)]],…,[[a→(g)]]を入力とし、ベクトルkを安定ソートしたときの並べ替えに従って各ベクトルa→(1),…,a→(g)の要素を並べ替えたベクトルb→(1),…,b→(g)∈ZN nの秘匿文[[b→(1)]],…,[[b→(g)]]を計算する。
<表の大きさの秘匿>
次に、表の大きさを秘密にする方法を説明する。ここで、表の大きさは表に含まれる行の数、つまり、レコード数である。表の大きさの秘匿は、本来の表に余分な偽物(ダミー)のレコード(空レコードと呼称する)を追加することによって実現する。表の真の大きさを推測できないようにするためには、表の大きさが本来の表が取り得る最大のレコード数以上となるように空レコードを追加すればよい。等結合は入力の表T0,…,Tq-1を等結合して得られる出力の表Rが|R|≦min(|T0|,…,|Tq-1|)を満たすので、出力の表の大きさがmin(|T0|,…,|Tq-1|)となるように空レコードを追加することで本来の出力の表の大きさを秘匿できる。
空レコードと通常のレコードの区別のため、大きさを秘匿された表に対して、空フラグと呼ぶベクトルを付与する。空フラグは、表の(見かけ上の)レコード数と同じ数の要素を持ち、第iレコードが空レコードならば第i要素が1、第iレコードが空レコードでないならば第i要素が0であるベクトルの秘匿文である。
《実施形態1》
実施形態1の等結合処理の入力はそれぞれ行列として与えられたq個の表T0,…,Tq-1の秘匿文[[T0]],…,[[Tq-1]]である。一般性を失うことなく、T0をレコード数が最小の表、各表の1列目を各表に共通のキー属性(例えばID)を表す列とする。実施形態1では、これら入力の表は大きさが秘匿されていない表である。
実施形態1では、等結合システムに含まれる複数の秘密計算装置の協調計算による秘密計算によって、q個の表T0,…,Tq-1から、各表に共通のキー属性値(例えばIDの値)を持つ行(レコード)を抜き出して、キー属性値ごとに同じ行になるように並べ替え、空レコードが追加された新しい表R(等結合された表)と空フラグを表す列ベクトルgの秘匿文である[[R]]と[[g]]を得る。但し、各表は属性値を要素とする行列として表示され、Tiはmi×ni行列(0≦i<q)、Rはm×n行列とする。ここで、mはm=min(m0,…,mq-1)、nはn=Σi=0 q-1 niである。また、各表では、それぞれ、キー属性値に重複はないものとする。すなわち、Ti(0≦i<q)の1列目の値はすべて異なるものとする。なお、キー属性値を有限環ZNの要素として扱うことから、Nはレコード数の総和m=Σi=0 q-1 miに対してm<Nとなるように決められているとする。
実施形態1では、上記非特許文献3と同様に、各表のレコードにタグを付与し、秘密計算によって、異なる表の間で同一のキー属性値を持つレコードのタグ同士を対応付け、後の処理でタグを公開してレコードの並べ替えを行うことによって等結合処理を実現する。ただし、等結合後の表の大きさを秘匿するために、秘匿された表[[T0]]に含まれるレコードに対応するレコードが[[Ti]]に含まれない場合にもタグの対応付けを行う必要がある。この問題を解決するために、表Tiに表T0と同じレコード数の表Si'を加えて拡張し、必ず対応付けができるようにする。
実施形態1の等結合アルゴリズムを以下に示す。
入力はq個の表T0,…,Tq-1の秘匿文[[T0]],…,[[Tq-1]]であり、特にT0をSと表記することにする。出力はT0,…,Tq-1を等結合して空レコードを加えた表Rの秘匿文[[R]]と、表Rの空フラグを表す列ベクトルgの秘匿文[[g]]である。
ステップS1
各整数i∈[1,q)について、レコード数が[[S]]のレコード数と同じで、[[S]]と[[Ti]]とに共通の属性を含む秘匿化された表[[Si']]を作成する。表[[Si']]は、[[S]]と[[Ti]]とに共通の属性については、その属性値として[[S]]の値をそのまま用い、[[S]]と[[Ti]]とに共通しない属性については、その属性値として任意の秘匿値を用いることによって、作られる。この結果、[[Si']]の属性の数は[[Ti]]の属性の数と等しくなる。[[Ti]]と[[Si']]を縦に並べて接続した表を[[Ti']]とする。
この処理を平文の状態で例示する。ここではq=3、表T0=Sの属性を1列目から順にキー属性、X、Yとし、表T1の属性を1列目から順にキー属性、Z、Yとし、表T2の属性を1列目から順にキー属性、Wとして、具体的には、下記のとおりに与えられているとする。
Figure 0005907902
[[S]]と[[T1]]とに共通の属性(キー属性とY)については、その属性値として[[S]]の値をそのまま用い、[[S]]と[[T1]]とに共通しない属性については、その属性値として任意の秘匿値を用いて、表[[S1']]が作成されるので、任意の秘匿値の平文を*と表記すると、表S1'は下記のようになる。同様に、[[S]]と[[T2]]とに共通の属性(キー属性)については、その属性値として[[S]]の値をそのまま用い、[[S]]と[[T2]]とに共通しない属性については、その属性値として任意の秘匿値を用いて、表[[S2']]が作成されるので、任意の秘匿値の平文を*と表記すると、表S2'は下記のようになる。よって、[[T1]]と[[S1']]を縦に並べて接続した表[[T1']]と、[[T2]]と[[S2']]を縦に並べて接続した表[[T2']]の、それぞれの平文T1'、T2'は下記のようになる。
Figure 0005907902
ステップS2
[[S]],[[T1']],…,[[Tq-1']]に対してランダム置換済みの秘匿化されたベクトル[[t S]],[[t T1']],…,[[t Tq-1']]を作成する。具体的には、まず、表[[S]],[[T1']],…,[[Tq-1']]のそれぞれに対して対応する表の各レコードに対応する要素を持つ任意のベクトルt S,t T1',…,t Tq-1'を定め、これらのベクトルt S,t T1',…,t Tq-1'を秘匿化して[[t S]],[[t T1']],…,[[t Tq-1']]を得て、次いで、[[t S]],[[t T1']],…,[[t Tq-1']]をそれぞれランダム置換して、ランダム置換後のベクトル[[t S]],[[t T1']],…,[[t Tq-1']]を得る。これらベクトル[[t S]],[[t T1']],…,[[t Tq-1']]をタグベクトルと呼称する。各タグベクトルは対応する表のレコード数と同じ要素数のベクトルの秘匿文である。各タグベクトルの平文の要素(タグ)は同じ値を含まない。また、第1実施形態では、各タグベクトルの平文の要素は、後に説明するステップS3(c)の処理で、j≠0のときに[[u]][j]の平文が0にならないような値とする。ここで説明する例であれば、各タグベクトルの平文の要素はゼロを含まないようにすればよい。
上記の例に対応するタグベクトルの平文の例を下記に示す。
Figure 0005907902
ステップS3
各整数i∈[1,q)について、以下を実行する。
(a) [[t]]:=[[t S]]||[[t Ti']]、[[s]]:=[[1]]m0||[[0]]mi+m0、[[s']]:=[[0]]m0+mi||[[1]]m0、[[S]]と[[Ti']]のキー属性値を連結したベクトル[[k]]を作成する。
(b) ([[t]],[[s]],[[s']])を[[k]]に従って安定ソートする。
(c) 以下のように定めた[[u]]を作成する。
Figure 0005907902

(d) [[u]],[[t]],[[s']]を列方向に並べた([[u]],[[t]],[[s']])をランダム置換する。
(e) [[u]]を復元してuを得る。
(f) u[j]≠0を満たす各jについて、[[t]][j]を復元して並べたベクトルt i、u[j]を並べたベクトルu i、[[s']][j]を並べたベクトル[[f i]]を作成する。
上記の例に対応するステップS3の処理結果の平文の例を下記に示す。
i=1の場合は、(a)の終了段階では下記のベクトルが得られる。
Figure 0005907902
i=1の場合は、(b)(c)の終了段階では下記のベクトルが得られる。
Figure 0005907902
i=1の場合は、(f)の終了段階では下記のベクトルが得られる。なお、この例では簡単のため、(d)のランダム置換は無変換とした(ランダム置換の結果が偶然にも元の状態と同じになったと考える)。
Figure 0005907902
同様に、i=2の場合は、(f)の終了段階では下記のベクトルが得られる。
Figure 0005907902
ステップS4
各([[S]],[[t S]]),([[T1']],[[t T1']]),…,([[Tq-1']],[[t Tq-1']])をそれぞれランダム置換し、タグベクトル[[tS]],[[t T1']],…,[[t Tq-1']]を復元してタグベクトルの平文tS,t T1',…,t Tq-1'を得る。
ステップS5
[[R]]の第j行(1≦j≦m0)である[[R]][j]を、
[[R]][j]=[[S]][j]||[[T1']][wj,1]||…||[[Tq-1']][wj,q-1]
で計算することによって出力の表[[R]]を作成する。ただし、ここでの記号||は行ベクトルの列方向の連結を表す。また、wj,iは、t i[hj,i]=t Ti'[wj,i]を満たす値であり、hj,iは、t S[j]=u i[hj,i]を満たす値である。この処理の具体的な手順としては、最初にjを定め、次いで、t S[j]=u i[hj,i]を満たす値hj,iをステップS3(f)の処理で得られたu iから探し出し、次いで、t i[hj,i]=t Ti'[wj,i]を満たす値wj,iをステップS3(f)の処理で得られたt iとステップS4の処理で得られたt Ti'とを用いて探し出し、[[Ti']][wj,i]を特定する。
また、[[g]]の第j要素である[[g]][j]を、
[[g]][j]=[[f 1]][y1,j]∨…∨[[f q-1]][yq-1,j]で計算することによって出力の空フラグ[[g]]を作成する。ただし、yi,jは、t S[j]=u i[y1,j]を満たす値である。この処理の具体的な手順としては、最初にjを定め、次いで、t S[j]=u i[y1,j]を満たす値yi,jをステップS3(f)の処理で得られたu iから探し出し、[[f i]][yi,j]を特定する。
上記の例に対応する表[[R]]と空フラグ[[g]]の平文の例を下記に示す。
Figure 0005907902
<正当性>
秘匿化された表[[S]]と[[Ti']]に対する処理の結果、Sのレコードの各タグに対して対応するTi'のレコードの異なるタグが計算され、さらにTiに含まれないTi'のレコードに限って対応するベクトルf iの要素が1となっていることを確認する。
キー属性値はS、Ti、Si'の各表で重複がないため、キー属性値はどの値も高々3回しか現れず、さらに、ステップS3(b)での安定ソート後には、ソートの安定性から、ベクトルkにて同じキー属性値はSのキー属性値、Tiのキー属性値、Si'のキー属性値の順で連続出現する。具体的には、Sに含まれるキー属性値aがTiに含まれる場合、キー属性値aはステップS3(b)での安定ソート後にはベクトルkにてSのキー属性値a、Tiのキー属性値a、Si'のキー属性値aの順で連続出現し、Sに含まれるキー属性値aがTiに含まれない場合、キー属性値aはステップS3(b)での安定ソート後にはベクトルkにてSのキー属性値a、Si'のキー属性値aの順で連続出現する。よって、安定ソート直後の列ベクトルkにおいてSのキー属性値の一つ下のキー属性値に対応するタグベクトルt iの要素(タグ)で指定されるレコードは、元々TiまたはSi'に含まれていたレコードである(復元されるu iはSに含まれるレコードに対応する全てのタグを要素に持つタグベクトルであり、復元されるt iはTi'に含まれるレコードに対応するタグの全部または一部を要素に持つベクトルであり、u[j]≠0を満たす各jについて、u i[j]とt i[j]の対はSの各タグと対応するTi'の異なるタグの対になっている)。さらに、f iの各要素の値はs'の対応する要素の値と一致するため、Tiに含まれないTi'のレコードに限って対応するベクトルf iの要素が1となる。
<安全性>
上記の等結合アルゴリズムが用いたプロトコルはすべてsemi-honestな攻撃者に対して安全である。従って、等結合アルゴリズムの安全性を確認するには、等結合アルゴリズム中で開示される値から情報が漏れていないことを確認すれば十分である。等結合アルゴリズム中で開示されるのは、ステップS3(e)のu、ステップS3(f)のt i、ステップS4のタグである。uはu iと0のみからなり、既述のように、u i[j]とt i[j]の対はSの各タグと対応するTi'の異なるタグの対になっている。タグの値は表のデータ(属性値)との相関性が無い。また、ステップS4で復元されるタグベクトルも、タグベクトルをランダム置換してから復元したものである。これらの値はタグの対応と順序を一様ランダムに決めたものと区別ができない。従って、等結合アルゴリズム中で開示される値から情報が漏れておらず、この等結合アルゴリズムはsemi-honestな攻撃者に対して安全である。
<計算コスト>
既述の秘密計算の場合を例にして計算コストの評価を行う。多くのデータベース処理では属性数がレコード数に比べて非常に小さい表を対象とするため、表の属性数すなわち行列の列数は定数とみなす。また、属性値を環ZNの要素として扱うため、環ZNはレコード数の総和mに対してm<Nとなるように決められているとする。参考文献3による比較プロトコルを単位とすると、秘匿化、復元、加算、減算、乗算の通信量は比較プロトコル換算で定数である。要素数nのランダム置換の通信量は比較プロトコル換算でO(n)、要素数nの安定ソートの通信量は比較プロトコル換算でO(n log n)である。従って、実施形態1の等結合アルゴリズムの通信量は比較プロトコル換算でO(m log m)である。
《実施形態2》
実施形態2では、大きさが秘匿された表が入力された場合にも対応できるように実施形態1を拡張する。入力の表の大きさを秘匿する方法は、前述の表の大きさを秘匿する方法と同じである。すなわち、入力の各表[[Ti]]は、行に空レコードを含み、列に属性として空フラグを含んでいるとする。実施形態1からの変更点は、入力の表が大きさの秘匿された表であることとステップS3の処理である(ステップS1、ステップS2、ステップS4、ステップS5の各処理は実施形態1と同じである)。
ステップS3は以下のように変更される。
ステップS3
各整数i∈[1,q)について、以下を実行する。
(a) [[t]]:=[[t S]]||[[t Ti']]、[[s]]:=[[1]]m0||[[0]]mi+m0、[[s']]:=[[0]]m0+mi||[[1]]m0、[[t']]:=[[*]]m0+mi||[[t S]]、[[S]]と[[Ti']]のキー属性値を連結したベクトル[[k]]、[[S]]と[[Ti]]と[[Si']]の空フラグを連結したベクトル[[z]]を作成する。ただし、[[*]]は任意の秘匿文である。
(b) ([[t]],[[s]],[[s']],[[z]],[[t']])を([[z]],[[k]])に従って安定ソートする。ただし、([[z]],[[k]])は、[[z]][j]||[[k]][j]をj番目の要素とする(m0+mi+m0)行1列の列ベクトルである。
(c) 以下のように定めた[[u]]を作成する。
Figure 0005907902

(d) [[u]],[[t]],[[s']]を列方向に並べた([[u]],[[t]],[[s']])をランダム置換する。
(e) [[u]]を復元してuを得る。
(f) u[j]≠0を満たす各jについて、[[t]][j]を復元して並べたベクトルt i、u[j]を並べたベクトルu i、[[s']][j]∨[[z]][j]を計算して並べたベクトル[[f i]]を作成する。
実施形態2の処理の具体例を平文の状態で例示する。ここではq=2、表T0=Sの属性を1列目から順に空フラグ、キー属性、X、Yとし、表T1の属性を1列目から順に空フラグ、キー属性、Z、Yとして、具体的には、下記のとおりに与えられているとする。
Figure 0005907902
このときステップS1の処理の終了段階では下記の情報が得られる。
Figure 0005907902
上記の例に対応するタグベクトルの平文の例を下記に示す。
Figure 0005907902
上記の例に対応するステップS3の処理結果の平文の例を下記に示す。
(a)の終了段階では下記のベクトルが得られる。
Figure 0005907902
(b)(c)の終了段階では下記のベクトルが得られる。
Figure 0005907902
(f)の終了段階では下記のベクトルが得られる。
Figure 0005907902
上記の例に対応する表[[R]]と空フラグ[[g]]の平文の例を下記に示す。
Figure 0005907902
<正当性、秘匿性>
実施形態2の等結合アルゴリズムの正当性と秘匿性は実施形態1と同様に確認できる。
<計算コスト>
実施形態1からの変更点はステップS3の処理である。この変更によって、秘匿された値の個数が定数倍、[[u]]の計算は定数倍、ソート対象データが定数倍、ランダム置換対象データが定数倍、それぞれ増加しており、[[f i]]の計算には新たに入力の表のレコード数の総和に比例する論理和の計算が追加されている。従って、実施形態2の等結合アルゴリズムも実施形態1の等結合アルゴリズムと同様に、入力の表のレコード数の総和をmとすると通信量は比較プロトコル換算でO(m log m)である。
[等結合システム]
実施形態の等結合システムは、P個(Pは3以上の所定の整数)の秘密計算装置を含む。これらの各秘密計算装置は、例えば、インターネットなどの通信網あるいは同報通信路などを経由して、相互に通信可能とされている。
各秘密計算装置は、等結合アルゴリズムで必要とされる演算、つまり、少なくとも秘匿化、復元、加算、減算、乗算、ランダム置換、安定ソートを実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば上記非特許文献1、上記参考文献1、上記参考文献2のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから説明を省略する。
<補記>
等結合システムに含まれうるハードウェアエンティティ(秘密計算装置)は、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit)〔キャッシュメモリやレジスタなどを備えていてもよい〕、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD−ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けるとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくなどでもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
ハードウェアエンティティでは、外部記憶装置〔あるいはROMなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。
各実施形態で説明したハードウェアエンティティの細部においては、数論における数値計算処理が必要となる場合があるが、数論における数値計算処理自体は、周知技術と同様にして達成されるので、その演算処理方法などの詳細な説明は省略した(この点の技術水準を示す数論における数値計算処理が可能なソフトウェアとしては、例えばPARI/GP、KANT/KASHなどが挙げられる。PARI/GPについては、例えばインターネット〈URL: http://pari.math.u-bordeaux.fr/〉[平成24年12月26日検索]を参照のこと。KANT/KASHについては、例えばインターネット〈http://www.math.tu-berlin.de/~kant/kash.html〉[平成24年12月26日検索]を参照のこと)。
また、この点に関する文献として、参考文献Aを挙げることができる。
(参考文献A)H. Cohen, "A Course in Computational Algebraic Number Theory", GTM 138, Springer-Verlag, 1993.
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
また、上記実施形態において説明したハードウェアエンティティにおける処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (4)

  1. 複数の秘密計算装置を含み、当該秘密計算装置は通信部を用いて相互に通信可能となるよう通信網または同報通信路に接続し、これら秘密計算装置間で通信を行いながら実行される協調計算によって、q個の行列表示された表S,T1,…,Tq-1(ただし、Sはm0×n0行列、Tiはmi×ni行列(1≦i<q)とする)の秘匿文[[S]],[[T1]],…,[[Tq-1]]に対して、S,T1,…,Tq-1を等結合してダミーの行(以下、行をレコードといい、ダミーの行を空レコードという)を加えた表R(ただし、mをm=min(m0,…,mq-1)、nをn=Σi=0 q-1 niとして、Rはm×n行列である)の秘匿文[[R]]と、表Rの空レコードの位置を特定するためのベクトルg(以下、空フラグという)の秘匿文[[g]]を出力する等結合システムであって、
    上記等結合システムでは、上記複数の秘密計算装置間で通信を行いながら実行される協調計算によって、
    各整数i∈[1,q)について、[[S]]と[[Ti]]とに共通の属性については、その属性値として[[S]]の値を用い、[[S]]と[[Ti]]とに共通しない属性については、その属性値として任意の秘匿値を用いることによって、レコード数が[[S]]と同じで、[[S]]と[[Ti]]に共通の属性を含む秘匿化された表[[Si']]を[[Ti]]に接続した表[[Ti']]を作成し、
    [[S]],[[T1']],…,[[Tq-1']]に対して、対応する表のレコード数と同じ要素数を持ち、対応する表に含まれるレコードを識別するための任意の値を要素に持つベクトルを秘匿化およびランダム置換したタグベクトル[[t S]],[[t T1']],…,[[t Tq-1']]を作成し、
    各整数i∈[1,q)について、
    (a) [[t]]:=[[t S]]||[[t Ti']]、[[s]]:=[[1]]m0||[[0]]mi+m0、[[s']]:=[[0]]m0+mi||[[1]]m0、[[S]]と[[Ti']]のキー属性を連結したベクトル[[k]]を作成し、
    (b) ([[t]],[[s]],[[s']])を[[k]]に従って安定ソートし、
    (c) [[u]]を、
    Figure 0005907902

    として定め、
    (d) [[u]],[[t]],[[s']]を並べた([[u]],[[t]],[[s']])をランダム置換し、
    (e) [[u]]を復元してuを得て、
    (f) u[j]≠0を満たす各jについて、[[t]][j]を復元して並べたベクトルt i、u[j]を並べたベクトルu i、[[s']][j]を並べたベクトル[[f i]]を作成し、
    各([[S]],[[t S]]),([[T1']],[[t T1']]),…,([[Tq-1']],[[t Tq-1']])をそれぞれランダム置換してから、[[tS]],[[t T1']],…,[[t Tq-1']]を復元してタグベクトルの平文tS,t T1',…,t Tq-1'を得て、
    [[R]]の第j行(1≦j≦m0)である[[R]][j]を、[[R]][j]=[[S]][j]||[[T1']][wj,1]||…||[[Tq-1']][wj,q-1]で計算することによって出力の表[[R]]を作成し(ただし、ここでの記号||は行ベクトルの列方向の連結を表す。また、wj,iは、ti[hj,i]=TTi'[wj,i]を満たす値であり、hj,iは、tS[j]=ui[hj,i]を満たす値である)、[[g]]の第j要素である[[g]][j]を、[[g]][j]=[[f 1]][y1,j]∨…∨[[f q-1]][yq-1,j]で計算することによって出力の空フラグ[[g]]を作成する(ただし、yi,jは、tS[j]=ui[y1,j]を満たす値である)ことを特徴とし、
    上記各秘密計算装置は、上記秘密計算を計算するための手段を備えている等結合システム。
  2. 複数の秘密計算装置を含み、当該秘密計算装置は通信部を用いて相互に通信可能となるよう通信網または同報通信路に接続し、これら秘密計算装置間で通信を行いながら実行される協調計算によって、大きさが秘匿されたq個の行列表示された表S,T1,…,Tq-1(ただし、Sはm0×n0行列、Tiはmi×ni行列(1≦i<q)とし、各表は、行にダミーの行(以下、ダミーの行を空レコードという)を含み、列に空レコードの位置を特定するための列ベクトルである空フラグを含んでいるとする)の秘匿文[[S]],[[T1]],…,[[Tq-1]]に対して、S,T1,…,Tq-1を等結合してダミーの行(以下、行をレコードという)を加えた表R(ただし、mをm=min(m0,…,mq-1)、nをn=Σi=0 q-1 niとして、Rはm×n行列である)の秘匿文[[R]]と、表Rの空レコードの位置を特定するための空フラグgの秘匿文[[g]]を出力する等結合システムであって、
    上記等結合システムでは、上記複数の秘密計算装置間で通信を行いながら実行される協調計算によって、
    各整数i∈[1,q)について、[[S]]と[[Ti]]とに共通の属性については、その属性値として[[S]]の値を用い、[[S]]と[[Ti]]とに共通しない属性については、その属性値として任意の秘匿値を用いることによって、レコード数が[[S]]と同じで、[[S]]と[[Ti]]に共通の属性を含む秘匿化された表[[Si']]を[[Ti]]に接続した表[[Ti']]を作成し、
    [[S]],[[T1']],…,[[Tq-1']]に対して、対応する表のレコード数と同じ要素数を持ち、対応する表に含まれるレコードを識別するための任意の値を要素に持つベクトルを秘匿化およびランダム置換したタグベクトル[[t S]],[[t T1']],…,[[t Tq-1']]を作成し、
    各整数i∈[1,q)について、
    (a) [[t]]:=[[t S]]||[[t Ti']]、[[s]]:=[[1]]m0||[[0]]mi+m0、[[s']]:=[[0]]m0+mi||[[1]]m0、[[t']]:=[[*]]m0+mi||[[t S]]、[[S]]と[[Ti']]のキー属性値を連結したベクトル[[k]]、[[S]]と[[Ti]]と[[Si']]の空フラグを連結したベクトル[[z]]を作成し(ただし、[[*]]は任意の秘匿文である)、
    (b) ([[t]],[[s]],[[s']],[[z]],[[t']])を([[z]],[[k]])に従って安定ソートし(ただし、([[z]],[[k]])は、[[z]][j]||[[k]][j]をj番目の要素とする(m0+mi+m0)行1列の列ベクトルである)、
    (c) [[u]]を
    Figure 0005907902

    として定め、
    (d) [[u]],[[t]],[[s']]を並べた([[u]],[[t]],[[s']])をランダム置換し、
    (e) [[u]]を復元してuを得て、
    (f) u[j]≠0を満たす各jについて、[[t]][j]を復元して並べたベクトルt i、u[j]を並べたベクトルu i、[[s']][j]∨[[z]][j]を計算して並べたベクトル[[f i]]を作成し、
    各([[S]],[[t S]]),([[T1']],[[t T1']]),…,([[Tq-1']],[[t Tq-1']])をそれぞれランダム置換してから、[[tS]],[[t T1']],…,[[t Tq-1']]を復元してタグベクトルの平文tS,t T1',…,t Tq-1'を得て、
    [[R]]の第j行(1≦j≦m0)である[[R]][j]を、[[R]][j]=[[S]][j]|| [[T1']][wj,1]||…||[[Tq-1']][wj,q-1]で計算することによって出力の表[[R]]を作成し(ただし、ここでの記号||は行ベクトルの列方向の連結を表す。また、wj,iは、ti[hj,i]=TTi'[wj,i]を満たす値であり、hj,iは、tS[j]=ui[hj,i]を満たす値である)、[[g]]の第j要素である[[g]][j]を、[[g]][j]=[[f 1]][y1,j]∨…∨[[f q-1]][yq-1,j]で計算することによって出力の空フラグ[[g]]を作成する(ただし、yi,jは、tS[j]=ui[y1,j]を満たす値である)ことを特徴とし、
    上記各秘密計算装置は、上記秘密計算を計算するための手段を備えている等結合システム。
  3. 複数の秘密計算装置を含み、当該秘密計算装置は通信部を用いて相互に通信可能となるよう通信網または同報通信路に接続した等結合システムにおいて、これら秘密計算装置間で通信を行いながら実行される協調計算によって、q個の行列表示された表S,T1,…,Tq-1(ただし、Sはm0×n0行列、Tiはmi×ni行列(1≦i<q)とする)の秘匿文[[S]],[[T1]],…,[[Tq-1]]に対して、S,T1,…,Tq-1を等結合してダミーの行(以下、行をレコードといい、ダミーの行を空レコードという)を加えた表R(ただし、mをm=min(m0,…,mq-1)、nをn=Σi=0 q-1 niとして、Rはm×n行列である)の秘匿文[[R]]と、表Rの空レコードの位置を特定するためのベクトルg(以下、空フラグという)の秘匿文[[g]]を出力する等結合方法であって、
    上記複数の秘密計算装置間で通信を行いながら実行される協調計算によって、
    各整数i∈[1,q)について、[[S]]と[[Ti]]とに共通の属性については、その属性値として[[S]]の値を用い、[[S]]と[[Ti]]とに共通しない属性については、その属性値として任意の秘匿値を用いることによって、レコード数が[[S]]と同じで、[[S]]と[[Ti]]に共通の属性を含む秘匿化された表[[Si']]を[[Ti]]に接続した表[[Ti']]を作成するステップと、
    [[S]],[[T1']],…,[[Tq-1']]に対して、対応する表のレコード数と同じ要素数を持ち、対応する表に含まれるレコードを識別するための任意の値を要素に持つベクトルを秘匿化およびランダム置換したタグベクトル[[t S]],[[t T1']],…,[[t Tq-1']]を作成するステップと、
    各整数i∈[1,q)について、
    (a) [[t]]:=[[t S]]||[[t Ti']]、[[s]]:=[[1]]m0||[[0]]mi+m0、[[s']]:=[[0]]m0+mi||[[1]]m0、[[S]]と[[Ti']]のキー属性を連結したベクトル[[k]]を作成し、
    (b) ([[t]],[[s]],[[s']])を[[k]]に従って安定ソートし、
    (c) [[u]]を、
    Figure 0005907902

    として定め、
    (d) [[u]],[[t]],[[s']]を並べた([[u]],[[t]],[[s']])をランダム置換し、
    (e) [[u]]を復元してuを得て、
    (f) u[j]≠0を満たす各jについて、[[t]][j]を復元して並べたベクトルt i、u[j]を並べたベクトルu i、[[s']][j]を並べたベクトル[[f i]]を作成するステップと、
    各([[S]],[[t S]]),([[T1']],[[t T1']]),…,([[Tq-1']],[[t Tq-1']])をそれぞれランダム置換してから、[[tS]],[[t T1']],…,[[t Tq-1']]を復元してタグベクトルの平文tS,t T1',…,t Tq-1'を得るステップと、
    [[R]]の第j行(1≦j≦m0)である[[R]][j]を、[[R]][j]=[[S]][j]|| [[T1']][wj,1]||…||[[Tq-1']][wj,q-1]で計算することによって出力の表[[R]]を作成し(ただし、ここでの記号||は行ベクトルの列方向の連結を表す。また、wj,iは、ti[hj,i]=TTi'[wj,i]を満たす値であり、hj,iは、tS[j]=ui[hj,i]を満たす値である)、[[g]]の第j要素である[[g]][j]を、[[g]][j]= [[f 1]][y1,j]∨…∨[[f q-1]][yq-1,j]]で計算することによって出力の空フラグ[[g]]を作成する(ただし、yi,jは、tS[j]=ui[y1,j]を満たす値である)ステップと
    を有する等結合方法。
  4. 複数の秘密計算装置を含み、当該秘密計算装置は通信部を用いて相互に通信可能となるよう通信網または同報通信路に接続した等結合システムにおいて、これら秘密計算装置間で通信を行いながら実行される協調計算によって、大きさが秘匿されたq個の行列表示された表S,T1,…,Tq-1(ただし、Sはm0×n0行列、Tiはmi×ni行列(1≦i<q)とし、各表は、行にダミーの行(以下、ダミーの行を空レコードという)を含み、列に空レコードの位置を特定するための列ベクトルである空フラグを含んでいるとする)の秘匿文[[S]],[[T1]],…,[[Tq-1]]に対して、S,T1,…,Tq-1を等結合してダミーの行(以下、行をレコードという)を加えた表R(ただし、mをm=min(m0,…,mq-1)、nをn=Σi=0 q-1 niとして、Rはm×n行列である)の秘匿文[[R]]と、表Rの空レコードの位置を特定するための空フラグgの秘匿文[[g]]を出力する等結合方法であって、
    上記複数の秘密計算装置間で通信を行いながら実行される協調計算によって、
    各整数i∈[1,q)について、[[S]]と[[Ti]]とに共通の属性については、その属性値として[[S]]の値を用い、[[S]]と[[Ti]]とに共通しない属性については、その属性値として任意の秘匿値を用いることによって、レコード数が[[S]]と同じで、[[S]]と[[Ti]]に共通の属性を含む秘匿化された表[[Si']]を[[Ti]]に接続した表[[Ti']]を作成するステップと、
    [[S]],[[T1']],…,[[Tq-1']]に対して、対応する表のレコード数と同じ要素数を持ち、対応する表に含まれるレコードを識別するための任意の値を要素に持つベクトルを秘匿化およびランダム置換したタグベクトル[[t S]],[[t T1']],…,[[t Tq-1']]を作成するステップと、
    各整数i∈[1,q)について、
    (a)[[t]]:=[[t S]]||[[t Ti']]、[[s]]:=[[1]]m0||[[0]]mi+m0、[[s']]:=[[0]]m0+mi||[[1]]m0、[[t']]:=[[*]]m0+mi||[[t S]]、[[S]]と[[Ti']]のキー属性値を連結したベクトル[[k]]、[[S]]と[[Ti]]と[[Si']]の空フラグを連結したベクトル[[z]]を作成し(ただし、[[*]]は任意の秘匿文である)、
    (b) ([[t]],[[s]],[[s']],[[z]],[[t']])を([[z]],[[k]])に従って安定ソートし(ただし、([[z]],[[k]])は、[[z]][j]||[[k]][j]をj番目の要素とする(m0+mi+m0)行1列の列ベクトルである)、
    (c) [[u]]を
    Figure 0005907902

    として定め、
    (d) [[u]],[[t]],[[s']]を並べた([[u]],[[t]],[[s']])をランダム置換し、
    (e) [[u]]を復元してuを得て、
    (f) u[j]≠0を満たす各jについて、[[t]][j]を復元して並べたベクトルt i、u[j]を並べたベクトルu i、[[s']][j]∨[[z]][j]を計算して並べたベクトル[[f i]]を作成するステップと、
    各([[S]],[[t S]]),([[T1']],[[t T1']]),…,([[Tq-1']],[[t Tq-1']])をそれぞれランダム置換してから、[[tS]],[[t T1']],…,[[t Tq-1']]を復元してタグベクトルの平文tS,t T1',…,t Tq-1'を得るステップと、
    [[R]]の第j行(1≦j≦m0)である[[R]][j]を、[[R]][j]=[[S]][j]|| [[T1']][wj,1]||…||[[Tq-1']][wj,q-1]で計算することによって出力の表[[R]]を作成し(ただし、ここでの記号||は行ベクトルの列方向の連結を表す。また、wj,iは、ti[hj,i]=TTi'[wj,i]を満たす値であり、hj,iは、tS[j]=ui[hj,i]を満たす値である)、[[g]]の第j要素である[[g]][j]を、[[g]][j]= [[f 1]][y1,j]∨…∨[[f q-1]][yq-1,j]で計算することによって出力の空フラグ[[g]]を作成する(ただし、yi,jは、tS[j]=ui[y1,j]を満たす値である)ステップと
    を有する等結合方法。
JP2013008704A 2013-01-21 2013-01-21 秘密計算による表の等結合システム、方法 Active JP5907902B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013008704A JP5907902B2 (ja) 2013-01-21 2013-01-21 秘密計算による表の等結合システム、方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013008704A JP5907902B2 (ja) 2013-01-21 2013-01-21 秘密計算による表の等結合システム、方法

Publications (2)

Publication Number Publication Date
JP2014139640A JP2014139640A (ja) 2014-07-31
JP5907902B2 true JP5907902B2 (ja) 2016-04-26

Family

ID=51416370

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013008704A Active JP5907902B2 (ja) 2013-01-21 2013-01-21 秘密計算による表の等結合システム、方法

Country Status (1)

Country Link
JP (1) JP5907902B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10333697B2 (en) * 2014-10-08 2019-06-25 Nippon Telegraph And Telephone Corporation Nondecreasing sequence determining device, method and program
JP6321216B2 (ja) * 2015-01-15 2018-05-09 日本電信電話株式会社 行列・キー生成装置、行列・キー生成システム、行列結合装置、行列・キー生成方法、プログラム
JP6534778B2 (ja) * 2016-07-06 2019-06-26 日本電信電話株式会社 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
JP6605746B2 (ja) * 2016-09-27 2019-11-13 日本電信電話株式会社 秘密等結合システム、秘密等結合装置、秘密等結合方法、プログラム
US11157612B2 (en) * 2017-05-25 2021-10-26 Nippon Telegraph And Telephone Corporation Secret tampering detection system, secret tampering detection apparatus, secret tampering detection method, and program
WO2019225401A1 (ja) * 2018-05-25 2019-11-28 日本電信電話株式会社 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム
US11797540B2 (en) 2018-06-20 2023-10-24 Nippon Telegraph And Telephone Corporation Secret joining system, method, secret calculation apparatus and program
CN112567443B (zh) * 2018-08-13 2024-05-14 日本电信电话株式会社 秘密联接信息生成系统及方法、秘密联接系统及方法、秘密计算装置、记录介质
WO2020246018A1 (ja) * 2019-06-07 2020-12-10 日本電信電話株式会社 秘密共役勾配法計算システム、秘密計算装置、共役勾配法計算装置、秘密共役勾配法計算方法、共役勾配法計算方法、およびプログラム
CN117561557A (zh) * 2021-07-02 2024-02-13 日本电信电话株式会社 秘密等结合装置、秘密等结合方法、以及程序

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002169808A (ja) * 2000-11-30 2002-06-14 Hitachi Ltd セキュアマルチデータベースシステム
US9147079B2 (en) * 2010-09-28 2015-09-29 Nec Corporation Encrypted database system, client terminal, encrypted database server, natural joining method, and program
JP5727258B2 (ja) * 2011-02-25 2015-06-03 ウイングアーク1st株式会社 分散型データベースシステム

Also Published As

Publication number Publication date
JP2014139640A (ja) 2014-07-31

Similar Documents

Publication Publication Date Title
JP5907902B2 (ja) 秘密計算による表の等結合システム、方法
CN111784001B (zh) 一种模型训练方法、设备及计算机可读存储介质
US9875370B2 (en) Database server and client for query processing on encrypted data
Lueks et al. Sublinear scaling for multi-client private information retrieval
Cheon et al. Search-and-compute on encrypted data
JP5878462B2 (ja) 難読化された値の生成
EP3096309B1 (en) Secret calculation method, secret calculation system, sorting device, and program
CN107409040A (zh) 用于推荐数据加密而不影响程序语义的代码分析工具
JP6971926B2 (ja) 暗号化データベースに関する解析のためのシステムおよびアーキテクチャ
Knapp et al. Toric Methods in F‐Theory Model Building
WO2018102861A1 (en) Secure text analytics
WO2016181904A1 (ja) データベースシステム、データベース処理方法
US11250004B2 (en) Secure equijoin system, secure equijoin device, secure equijoin method, and program
JP2014164145A (ja) 秘密集合演算装置及び方法
JP5969716B1 (ja) データ管理システム、データ管理プログラム、通信端末及びデータ管理サーバ
JP5961571B2 (ja) 秘密表除算装置及び方法
JP7060115B2 (ja) 秘密配列アクセス装置、秘密配列アクセス方法、およびプログラム
Gouveia et al. Reverse multistar inequalities and vehicle routing problems with a lower bound on the number of customers per route
WO2018008547A1 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
US20210314145A1 (en) Secure joining system, method, secure computing apparatus and program
WO2016056502A1 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
Kadak et al. On the Classical Paranormed Sequence Spaces and Related Duals over the Non‐Newtonian Complex Field
CN105917400A (zh) 元素复制装置、元素复制方法、以及程序
JP5689845B2 (ja) 秘密計算装置、秘密計算方法、およびプログラム
US20180270056A1 (en) Matrix and key generation device, matrix and key generation system, matrix coupling device, matrix and key generation method, and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151217

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: 20160315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160322

R150 Certificate of patent (=grant) or registration of utility model

Ref document number: 5907902

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150