JP6009697B2 - 秘密計算方法、秘密計算システム、ソート装置及びプログラム - Google Patents

秘密計算方法、秘密計算システム、ソート装置及びプログラム Download PDF

Info

Publication number
JP6009697B2
JP6009697B2 JP2015557796A JP2015557796A JP6009697B2 JP 6009697 B2 JP6009697 B2 JP 6009697B2 JP 2015557796 A JP2015557796 A JP 2015557796A JP 2015557796 A JP2015557796 A JP 2015557796A JP 6009697 B2 JP6009697 B2 JP 6009697B2
Authority
JP
Japan
Prior art keywords
random
replacement
string
sequence
value
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
JP2015557796A
Other languages
English (en)
Other versions
JPWO2015107951A1 (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
Application granted granted Critical
Publication of JP6009697B2 publication Critical patent/JP6009697B2/ja
Publication of JPWO2015107951A1 publication Critical patent/JPWO2015107951A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

この発明は、秘密計算技術に関し、特に、秘密ソートを行う技術に関する。
秘密計算とは、秘密分散によりデータを秘匿しつつデータ処理を行う技術である。秘密分散は、データを複数の分散値に変換し、一定個数以上の分散値を用いれば元のデータを復元でき、一定個数未満の分散値からは元のデータを一切復元できなくする技術である。秘密分散はいくつかの種類に分類でき、例えば、(k,n)-秘密分散、置換データ秘密分散などがある。
(k,n)-秘密分散とは、入力された平文をn個のシェアに分割し、n個のパーティP=(p0,…,p n-1 )に分散しておき、任意のk個のシェアが揃えば平文を復元でき、k個未満のシェアからは平文に関する一切の情報を得られないような秘密分散である。(k,n)-秘密分散の具体的な方式には、例えば、Shamir秘密分散、複製秘密分散などがある。
置換データ秘密分散は、置換データを秘匿して行う秘密分散である。置換データとは、データ列を並び替えるときの並び替え方を表すデータである。m個のデータ列を並び替えるとき、大きさmの置換データπは全単射写像π:Nm→Nmを表すデータである。ただし、任意の整数mに対して、Nmはm未満の非負整数の集合である。例えば、ベクトルx∈(Nm)mで各要素が互いに異なるデータは大きさmのランダム置換データと見なせる。
より具体的には、ベクトルx=(3,0,2,1)を大きさ4のランダム置換データと見なすことができる。例えば、データ列y=(1,5,7,10)をベクトルxによって並び替えるとする。データ列yの0番目の要素である1を、ベクトルxの0番目の要素が示す3番目に移動する。データ列yの1番目の要素である5を、ベクトルxの1番目の要素が示す0番目に移動する。同様に、7を2番目に移動し、10を1番目に移動する。結果として、置換後のデータ列z=(5,10,7,1)が得られる。
置換データ秘密分散は、以下の手順により置換データを秘匿する。N個のkパーティ組の列Ρ=ρ0,…,ρ N-1 があるとする。例えば、k=2のとき、各kパーティ組ρiは、パーティp0とパーティp1の組(p0,p1)や、パーティp0とパーティp2の組(p0,p2)などである。各kパーティ組ρi内の全パーティが互いに置換データπρiを共有し、補集合ρ iには知らさないものとする。そして、対応する平文をπ01(…(π N-1 (I))…))とする。ただし、Iは入力と同じ並びでそのまま出力する置換、つまり恒等置換である。このとき、kパーティ組の列Ρ=ρ0,…,ρ N-1 を、「(条件1)任意のk-1パーティ組ρに対して、いずれかの補集合ρ iがρ⊆ρ iを満たす」ように設定すれば、どのようにk-1パーティが結託しても、いずれかの置換データπρiを知らないことになる。
例えば、パーティ数nがn≧2k-1を満たすとき、kパーティ組の列Ρを全てのkパーティ組を含む集合とすれば上記の条件1を満たす。また、パーティ数nがn>2k-1を満たすときは、すべてのkパーティ組を含まなくても上記の条件1が実現されることがある。例えば、k=2, n=4のとき、{(p0,p1),(p2,p3)}は全てのkパーティ組を含みはしないが条件1を満たす。
秘密ソートとは、秘密分散されたキーとバリューを秘匿したままキーの順序関係に基づいて一定の規則に従ってバリューを並び替える処理である。秘密ソートを行う従来技術として非特許文献1に記載の技術がある。
非特許文献1に記載の秘密ソートは、バリュー列vの秘密分散値[v]とキー列kの秘密分散値[k L-1],…,[k 0]を入力とし、整列されたバリュー列σvの秘密分散値[σv]を出力する。ここで、σはソートを表す置換関数である。まず、(1)置換関数σ0をZm上の恒等写像とする。ここで、Zmは0以上m未満の整数の集合である。(2)ランダムID列[h]:=[I]とする。ここで、Iは恒等置換である。(3)i=0,…,L-1について、下記の(4)から(14)までの処理を実行する。(4)置換データ<π0>,<π1>,<π2>を生成する。(5)[σi-1k i]を1ビット安定ソートして順位表[s]を生成する。(6)([σih],[s])を置換データ<π0>により秘密ランダム置換して([π0σih],[π0s])を生成する。(7)i=Lであれば下記の(15)へ進む。(8)([h],[k i+1])を置換データ<π1>により秘密ランダム置換して([π1h],[π1k i+1])を生成する。(9)[π1h],[π0σih]を復元する。(10)[π0σik i+1]:=π0σih1h)-11k i+1]を計算する。(11)([π0σih],[π0s],[π0σik i+1])を置換データ<π2>により秘密ランダム置換して([π20σih],[π20s],[π20σik i+1])を生成する。ただし、π202π0である。(12)[π20s]を復元する。(13)([s→-1σih],[s→-1σik i+1]):=(π20s)-1([π20σih],[π20σik i+1])を計算する。(14)置換関数σi+1:=s→-1σiとおく。(15)[π0s],[s→-1σih]を復元する。(16)置換関数σL:=s→-1σL-1とおく。(17)置換データ<π3>を生成する。(18)[h],[v]を置換データ<π3>により置換して([π3h],[π3v])を生成する。(19)[π3h],[σLh]を復元し、[σv]:=σLh3h)-13v]を出力する。ここで、置換関数σ=σLである。
濱田浩気、五十嵐大、千田浩司、高橋克巳、"秘匿関数計算上の線形時間ソート"、コンピュータセキュリティシンポジウム2011、2011年
非特許文献1に記載の秘密ソート技術は、ランダムID列の作成と秘密ランダム置換を逐次的に繰り返し実行するため通信段数が大きいという問題がある。
この発明の目的は、秘密ソートに要する通信段数を低減し、秘密ソートが含まれる秘密計算を高速に行うことである。
上記の課題を解決するために、この発明の一態様の秘密計算方法は、Lビットのm個のキーk0,…,km-1の列kの秘密分散値[k]及びm個のバリューv0,…,vm-1の列vの秘密分散値[v]の組を入力とし、バリュー列vを整列するためのソート置換σπ-1 Lを生成する秘密計算方法であって、置換データ生成部が、i=1,…,L-1について、置換データ<πi>,<π’i>を生成し、置換データ<πL>を生成する置換データ生成ステップと、ランダムID列生成部が、i=1,…,L-1について、互いに重複した値を含まないランダムID列[r i]を生成し、互いに重複した値を含まないランダムID列[r L]を生成するランダムID列生成ステップと、秘密ランダム置換部が、i=1,…,L-1について、ランダムID列[r i-1]、キー列[k i]及びランダムID列[r i]の組を置換データ<πi>により秘密ランダム置換して置換後ランダムID列πir i-1、置換後キー列[πik i]及び置換後ランダムID列[πir i]の組を生成し、ランダムID列[r L-1]を置換データ<πL>により秘密ランダム置換して置換後ランダムID列πLr L-1を生成する秘密ランダム置換ステップと、フラグ作成部が、j=0,…,m-1及びh=0,…,L-1について、キー[kj]=([kj,0],…,[kj,L-1])に対して、kj=hであるか否かを判定してフラグ[fj,h]を設定するフラグ作成ステップと、順位表作成部が、フラグ[fj,h]を用いてキーk0,…,km-1それぞれの昇順の順位が設定された順位表[s:=(s0,…,sm-1)]を作成する順位表作成ステップと、ソート置換生成部が、i=0,…,L-1について、ランダムID列[r i]を置換関数σiにより置換して置換後ランダムID列[σir i]を生成し、順位表[s]及び置換後ランダムID列[σir i]を置換データ<π’i>により秘密ランダム置換して置換後順位表π’is及び置換後ランダムID列π’iσir iを生成し、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列して整列後ランダムID列σi+1r iを生成し、置換関数σi+1=s→-1σiを設定し、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]及び置換後ランダムID列[πi+1r i+1]の組と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]及び整列後ランダムID列[σi+1r i+1]の組を生成し、置換後ランダムID列πLr L-1と整列後ランダムID列σLr L-1とを等結合してソート置換σπ-1 Lを生成するソート置換生成ステップと、を含む。
この発明の他の態様の秘密計算方法は、Lビットのm個のキーk0,…,km-1の列kの秘密分散値[k]及びm個のバリューv0,…,vm-1の列vの秘密分散値[v]の組を入力とし、整列後バリュー列[σv]Vを生成する秘密計算方法であって、置換データ生成部が、i=1,…,L-1について、置換データ<πi>,<π’i>を生成し、置換データ<πL>を生成する置換データ生成ステップと、ランダムID列生成部が、i=1,…,L-1について、互いに重複した値を含まないランダムID列[r i]を生成し、互いに重複した値を含まないランダムID列[r L]を生成するランダムID列生成ステップと、秘密ランダム置換部が、i=1,…,L-1について、ランダムID列[r i-1]、キー列[k i]及びランダムID列[r i]の組を置換データ<πi>により秘密ランダム置換して置換後ランダムID列πir i-1、置換後キー列[πik i]及び置換後ランダムID列[πir i]の組を生成し、ランダムID列[r L-1]及びバリュー列[v]Vを置換データ<πL>により秘密ランダム置換して置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vを生成する秘密ランダム置換ステップと、フラグ作成部が、j=0,…,m-1及びh=0,…,L-1について、キー[kj]=([kj,0],…,[kj,L-1])に対して、kj=hであるか否かを判定してフラグ[fj,h]を設定するフラグ作成ステップと、順位表作成部が、フラグ[fj,h]を用いてキーk0,…,km-1それぞれの昇順の順位が設定された順位表[s:=(s0,…,sm-1)]を作成する順位表作成ステップと、整列部が、i=0,…,L-1について、ランダムID列[r i]を置換関数σiにより置換して置換後ランダムID列[σir i]を生成し、順位表[s]及び置換後ランダムID列[σir i]を置換データ<π’i>により秘密ランダム置換して置換後順位表π’is及び置換後ランダムID列π’iσir iを生成し、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列して整列後ランダムID列σi+1r iを生成し、置換関数σi+1=s→-1σiを設定し、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]及び置換後ランダムID列[πi+1r i+1]の組と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]及び整列後ランダムID列[σi+1r i+1]の組を生成し、置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vの組と、整列後ランダムID列σLr L-1とを、置換後ランダムID列πLr L-1をキーとして等結合して整列後バリュー列[σv]Vを生成する整列ステップと、を含む。
この発明の秘密計算技術によれば、秘密ソートを行う際の通信段数を低減することができる。したがって、秘密ソートが含まれる秘密計算を高速に実行できる。
図1は、秘密計算システムの機能構成を例示する図である。 図2は、第一実施形態のソート装置の機能構成を例示する図である。 図3は、第一実施形態の秘密計算方法の処理フローを例示する図である。 図4は、第二実施形態のソート装置の機能構成を例示する図である。 図5は、第二実施形態の秘密計算方法の処理フローを例示する図である。 図6は、第三実施形態のソート装置の機能構成を例示する図である。 図7は、第三実施形態の秘密計算方法の処理フローを例示する図である。 図8は、第四実施形態のソート装置の機能構成を例示する図である。 図9は、第四実施形態の秘密計算方法の処理フローを例示する図である。
実施形態の説明に先立ち、この明細書で用いる表記方法及び用語を定義する。
[表記方法]
pは、シェアを所持するパーティを表す。
P=(p0,…,pn-1)は、シェアを所持するnパーティ全体の集合を表す。
ρ=(p0,…,pk-1)は、置換処理を実行するkパーティ組の集合を表す。
[x]は、平文x∈Gの(k,n)-秘密分散値を表す。ここで、Gは可換群である。(k,n)-秘密分散値は、平文xを(k,n)-秘密分散で分散したシェアすべてを集めた組である。秘密分散値[x]は、普段はnパーティ集合Pに分散されて所持されているため、一か所ですべてを所持されることはなく、仮想的である。
[x]IDは、m種類のIDを表現しうる空間上の秘密分散値を表す。
[x]Oは、m種類の順序集合を表現しうる空間上の秘密分散値を表す。
[x]Bは、ビットの秘密分散値を表す。
[x]Vは、ソート対象のバリューを表現しうる空間上の秘密分散値を表す。
[x]Kは、ソート順を決定するキーの一部を表現しうる空間上の秘密分散値を表し、L個の組み合わせでキー空間全体を表現する(例えば、[x]Kがビット列の秘密分散値であり、キーがLビットである場合など)。
≪x≫ρは、平文x∈Gの加法的秘密分散値を表す。加法的秘密分散値とは、平文xを加法的秘密分散で分散したシェアすべてを集めた組を表す。
≪x≫ρ pは、加法的秘密分散値≪x≫ρのうち、パーティp∈ρが所持するシェアを表す。
≪xρは、平文の列がxとなる加法的秘密分散値の列を表す。
≪G≫ρは、可換群G上の加法的秘密分散値全体の集合を表す。
<π>は、置換データπの置換データ秘密分散値を表す。
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
[第一実施形態]
図1を参照して、第一実施形態に係る秘密計算システムの構成例を説明する。秘密計算システムは、n(≧2)台のソート装置11,…,1nとネットワーク9を含む。ソート装置11,…,1nはネットワーク9にそれぞれ接続される。ネットワーク9はソート装置11,…,1nそれぞれが相互に通信可能なように構成されていればよく、例えばインターネットやLAN、WANなどで構成することができる。また、ソート装置11,…,1nそれぞれは必ずしもネットワーク9を介してオンラインで通信可能である必要はない。例えば、あるソート装置1i(1≦i≦n)が出力する情報をUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から異なるソート装置1j(1≦j≦n、i≠j)へオフラインで入力するように構成してもよい。
図2を参照して、秘密計算システムに含まれるソート装置1の構成例を説明する。ソート装置1は、置換データ生成部10、ランダムID列生成部12、秘密ランダム置換部14、フラグ作成部16、順位表作成部18、ソート置換生成部20及びバリュー整列部22を含む。ソート装置1は、例えば、中央演算処理装置(Central Processing Unit、CPU)、主記憶装置(Random Access Memory、RAM)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。ソート装置1は、例えば、中央演算処理装置の制御のもとで各処理を実行する。ソート装置1に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて読み出されて他の処理に利用される。
図3を参照しながら、第一実施形態に係る秘密計算システムが実行する秘密計算方法の処理フローの一例を、実際に行われる手続きの順に従って説明する。
ソート装置1は、キー列kの秘密分散値[k]Kとバリュー列vの秘密分散値[v]Vの組([k]K,[v]V)を入力とし、整列後バリュー列σvの秘密分散値[σv]Vを出力する。ここで、σはソートを表す置換関数である。キー列kはm個のキーk0,…,km-1の列である。各キーkiのビット長はLである。すなわち、各キーki=(ki,0,…,ki,L-1)と表すことができる。キー列kのビット毎の分散値の列を[k 0]K,…,[k L-1]Kと表す。バリュー列vはm個のバリューv0,…,vm-1の列である。各バリューviは少なくとも一つの値であり、複数の値の組み合わせであってもよい。キー列kとバリュー列vは同一であってもよい。
ステップS10において、置換データ生成部10は、i=0,…,L-1について、置換データ<πi>,<π’i>を並列かつ同時に生成する。続いて、置換データ<πL>を生成する。
ステップS12において、ランダムID列生成部12は、i=0,…,L-1について、互いに重複した値を含まないランダムID列[r i]IDを並列かつ同時に生成する。続いて、互いに重複した値を含まないランダムID列[r L]IDを生成する。
ステップS14において、秘密ランダム置換部14は、i=1,…,L-1について、ランダムID列[r i-1]ID、キー列[k i]K及びランダムID列[r i]IDの組([r i-1]ID,[k i]K,[r i]ID)を置換データ<πi>により並列かつ同時に秘密ランダム置換し、置換後ランダムID列πir i-1、置換後キー列[πik i]K及び置換後ランダムID列[πir i]IDの組(πir i-1,[πik i]K,[πir i]ID)を生成する。続いて、ランダムID列[r L-1]IDを置換データ<πL>により秘密ランダム置換し、置換後ランダムID列πLr L-1を生成する。
秘密ランダム置換の方法は、任意の秘密ランダム置換を利用することができる。例えば、下記参考文献1に記載の方法を用いることができる。また、置換回路による置換も適用することができる。
〔参考文献1〕濱田浩気、五十嵐大、千田浩司、高橋克巳、“3パーティ秘匿関数計算のランダム置換プロトコル”、コンピュータセキュリティシンポジウム2010、2010年
さらに、秘密ランダム置換は、以下の1-加法的再分散プロトコルを用いて行うこともできる。1-加法的再分散プロトコルは、kパーティ組ρ=p0,…,pk-1が所持する秘密分散値≪a≫ρ∈≪G≫ρを入力とし、以下の手順でデータ処理を行い、他のkパーティ組ρ’=p1,…,pkが所持する秘密分散値≪a≫ρ’∈≪G≫ρ’を出力する秘密ランダム置換である。1-加法的再分散プロトコルでは、kパーティ組ρとkパーティ組ρ’とで1パーティだけが異なるため、通信量及び通信段数を低減することができ、効率的に秘密ランダム置換を行うことができる。ただし、パーティの役割は適切に変更されるものとする。
まず、パーティp0は、i=1,…,k-1について、パーティpiと乱数ri∈Gを共有する。次に、パーティp0は、次式により秘密分散値≪a≫ρ' pkを計算してパーティpkに送信する。
Figure 0006009697
パーティpkは、受信した≪a≫ρ' pkを出力する。パーティpi(i=1,…,k-1)は、次式により秘密分散値≪a≫ρ' piを計算して出力する。
Figure 0006009697
ステップS16において、フラグ作成部16は、j=0,…,m-1及びh=0,…,L-1について、キー[kj]K=([kj,0]B,…,[kj,L-1]B)に対して、kj=hであるか否かを判定して、並列かつ同時にフラグ[fj,h]を設定する。具体的には、kj=hであればフラグ[fj,h]B=[1]Bを、kj≠hであればフラグ[fj,h]B=[0]Bを設定する。フラグの設定は等号判定回路を利用すればよい。
続いて、フラグ作成部16は、フラグ[fj,h]Bをフラグ[fj,h]Oに変換する。値aの秘密分散値[a]Bを秘密分散値[a]Oに変換する方法は、例えば、[a]BがZ2を部分群として持つ秘密分散(例えば、mod 2の複製秘密分散、2の拡大体上のShamir秘密分散など)のとき、以下のように行えばよい。まず、パーティpiは乱数riを生成し、二通りの秘密分散により秘密分散値[ri]B,[ri]Oを生成する。次に、秘密計算により次式を計算し、乱数rの秘密分散値[r]B,[r]Oを生成する。
Figure 0006009697
続いて、秘密分散値[a]Bと秘密分散値[r]Bを用いて、値aと値rの排他的論理和[a'=a XOR r]Bを計算し、値a'を復元する。そして、値a'と秘密分散値[r]Oの排他的論理和[a]O=a' XOR [r]Oを計算する。つまり、a XOR r=0なら、[a]O:=[r]Oであり、a XOR r=1なら、[a]O:=1-[r]Oである。
ステップS18において、順位表作成部18は、フラグ[fj,h]Oを用いて、順位表[s]Oを作成する。まず、[S]O=[0]Oを設定する。次に、j=0,…,m-1について、[sj,h]O=[Sj,h-1]O+[fj,h]O(ただし、0≦h<2Lの各整数)を設定する。続いて、j=0,…,m-1について、次式を並列かつ同時に計算し、順位表[s:=(s0,…,sm-1)]Oを設定する。作成された順位表[s]Oは、キー列k=k0,…,km-1の各要素の昇順の順位が設定されたベクトルとなる。
Figure 0006009697
ステップS20において、ソート置換生成部20は、順位表[s]O、ランダムID列[r i]、置換データ<π’i>、置換後キー列[πik i]K及び置換後ランダムID列[σir i]IDを用いて、ソート置換σπ-1 Lを生成する。まず、置換関数σ0=Iを設定する。ただし、Iは恒等置換である。次に、i=0,…,L-1について、ランダムID列[r i]IDを置換関数σiにより置換し、置換後ランダムID列[σir i]IDを生成する。続いて、順位表[s]O及び置換後ランダムID列[σir i]IDを置換データ<π’i>により秘密ランダム置換し、置換後順位表π’is及び置換後ランダムID列π’iσir iを生成する。次に、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列し、整列後ランダムID列σi+1r iを生成する。ここで、置換関数σi+1=s→-1σiである。さらに、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]K及び置換後ランダムID列[πi+1r i+1]IDの組(πi+1r i,[πi+1k i+1]K,[πi+1r i+1]ID)と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]K及び整列後ランダムID列[σi+1r i+1]IDの組(σi+1r i,[σi+1k i+1]K,[σi+1r i+1]ID)を生成する。続いて、置換後ランダムID列πLr L-1と整列後ランダムID列σLr L-1とを等結合し、ソート置換σπ-1 Lを生成する。ここで、置換関数σ=σLである。
ステップS22において、バリュー整列部22は、バリュー列[v]Vを置換データ<πL>により秘密ランダム置換し、置換後バリュー列[πLv]Vを生成する。続いて、置換後バリュー列[πLv]Vをソート置換σπ-1 Lに基づいて整列し、整列後バリュー列[σv]を生成する。
従来の秘密ソート技術ではランダムID列の生成と秘密ランダム置換を逐次的に行っていた。第一実施形態の秘密計算システムでは最初に必要な個数のランダムID列を生成することで、ランダムID列を用いた秘密ランダム置換を並列かつ同時に行うことが可能となっている。さらに、順位表作成に必要とするフラグも並列かつ同時に生成する。これにより、秘密ソートの通信段数を低減することができ、秘密ソートが含まれる秘密計算を高速に実行することができる。
[第二実施形態]
図4を参照して、第二実施形態に係るソート装置2の構成例を説明する。ソート装置2は、第一実施形態に係るソート装置1と同様に、置換データ生成部10、ランダムID列生成部12、フラグ作成部16及び順位表作成部18を含み、秘密ランダム置換部24及び整列部26をさらに含む。
図5を参照しながら、第二実施形態に係る秘密計算システムが実行する秘密計算方法の処理フローの一例を、実際に行われる手続きの順に従って説明する。
ステップS10からステップS12までの処理は第一実施形態に係る秘密計算方法と同様である。
ステップS24において、秘密ランダム置換部24は、i=1,…,L-1について、ランダムID列[r i-1]ID、キー列[k i]K及びランダムID列[r i]IDの組([r i-1]ID,[k i]K,[r i]ID)を置換データ<πi>で並列かつ同時に秘密ランダム置換し、置換後ランダムID列πir i-1、置換後キー列[πik i]K及び置換後ランダムID列[πir i]IDの組(πir i-1,[πik i]K,[πir i]ID)を生成する。続いて、ランダムID列[r L-1]ID及びバリュー列[v]Vの組([r L-1]ID,[v]V)を置換データ<πL>により秘密ランダム置換し、置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vの組(πLr L-1,[πLv]V)を生成する。
ステップS16からステップS18の処理は第一実施形態に係る秘密計算方法と同様である。
ステップS26において、整列部26は、順位表[s]O、ランダムID列[r i]、置換データ<π’i>、置換後キー列[πik i]K、置換後ランダムID列[σir i]ID及び置換後バリュー列[πLv]Vを用いて、整列後バリュー列[σv]を生成する。まず、置換関数σ0=Iを設定する。ただし、Iは恒等置換である。次に、i=0,…,L-1について、ランダムID列[r i]IDを置換関数σiにより置換し、置換後ランダムID列[σir i]IDを生成する。続いて、順位表[s]O及び置換後ランダムID列[σir i]IDを置換データ<π’i>により秘密ランダム置換し、置換後順位表π’is及び置換後ランダムID列π’iσir iを生成する。次に、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列し、整列後ランダムID列σi+1r iを生成する。ここで、置換関数σi+1=s→-1σiである。さらに、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]K及び置換後ランダムID列[πi+1r i+1]IDの組(πi+1r i,[πi+1k i+1]K,[πi+1r i+1]ID)と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]K及び整列後ランダムID列[σi+1r i+1]IDの組(σi+1r i,[σi+1k i+1]K,[σi+1r i+1]ID)を生成する。続いて、置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vの組(πLr L-1,[πLv]V)と、整列後ランダムID列σLr L-1とを、置換後ランダムID列πLr L-1をキーとして等結合し、整列後バリュー列[σv]Vを生成する。ここで、置換関数σ=σLである。
第一実施形態の秘密計算システムでは、キー列[k]Kに基づいてソート置換σπ-1 Lを生成する処理と、ソート置換σπ-1 Lに基づいて整列後バリュー列[σv]Vを得る処理とが分かれていた。このような構成とすることで、例えば、キー列kとバリュー列vが同一でありキー列kのみをソートしたい場合などは、バリュー整列部の処理を省略することができる。第二実施形態の秘密計算システムでは、秘密ランダム置換部において、バリュー列[v]VをランダムID列[r L-1]IDと同じ置換データ<πL>で同時に秘密ランダム置換するため、キー列kとバリュー列vをいずれもソートしたい場合には、より通信段数を低減することができる。
[第三実施形態]
図6を参照して、第三実施形態に係るソート装置3の構成例を説明する。ソート装置3は、第一実施形態に係るソート装置1と同様に、置換データ生成部10、ランダムID列生成部12、秘密ランダム置換部14、順位表作成部18、ソート置換生成部20及びバリュー整列部22を含み、フラグ作成部28をさらに含む。第三実施形態の構成は第二実施形態に応用することもできる。すなわち、第二実施形態に係るソート装置2と同様に、置換データ生成部10、ランダムID列生成部12、秘密ランダム置換部24、順位表作成部18及び整列部26を含み、フラグ作成部28をさらに含むように構成してもよい。
図7を参照しながら、第三実施形態に係る秘密計算システムが実行する秘密計算方法の処理フローの一例を、実際に行われる手続きの順に従って説明する。
第一実施形態に係るソート装置1及び第二実施形態に係るソート装置2は、入力されるキー列kの秘密分散値[k]Kが、ビットの秘密分散値であった。すなわち、j=0,…,m-1について、キー[kj]K=([kj,0]B,…,[kj,L-1]B)と表すことができた。一方、第三実施形態に係るソート装置3では、入力されるキー列kの秘密分散値[k]Kが、m種類の順序集合を表現しうる空間上の秘密分散値である。すなわち、j=0,…,m-1について、キー[kj]K=([kj,0]O,…,[kj,L-1]O)と表すことができる。
ステップS10からステップS14までの処理は第一実施形態に係る秘密計算方法と同様である。
ステップS28において、フラグ作成部28は、j=0,…,m-1及びh=0,…,L-1について、キー[kj]K=([kj,0]O,…,[kj,L-1]O)に対して、kj=hであるか否かを判定して、並列かつ同時にフラグ[fj,h]を設定する。具体的には、kj=hであればフラグ[fj,h]O=[1]Oを、kj≠hであればフラグ[fj,h]O=[0]Oを設定する。フラグの設定は等号判定回路を利用すればよい。
ステップS18からステップS22までの処理は第一実施形態に係る秘密計算方法と同様である。
第一実施形態の秘密計算システムでは、キーkjをビット毎に秘密分散した秘密分散値[kj,0]B,…,[kj,L-1]Bからフラグ[fj,h]Bを設定するため、フラグ[fj,h]Bをフラグ[fj,h]Oへ変換する必要があった。第三実施形態の秘密計算システムでは、キーkjの各ビットをより広い空間上の秘密分散値[kj,0]O,…,[kj,L-1]Oとして取り扱い、直接フラグ[fj,h]Oを設定するため変換が不要である。これにより、第一実施形態よりも単純な構成となっており、実装が容易である。ただし、計算に用いる空間が広くなることで計算量は増えるため、第一実施形態の方が効率的に計算することができる。
[第四実施形態]
第四実施形態は、この発明の秘密ソートに対して秘密計算中の改ざんを検知することを可能とする実施形態である。秘密計算中の改ざんを検知する秘密改ざん検知方法として、下記参考文献2に記載の方法が提案されている。参考文献2では、3つのフェーズで秘密計算中の改ざん検知を行う。ランダム化フェーズでは、分散値を正当性検証可能なランダム化分散値へと変換する。計算フェーズでは、semi-honestの演算により構成されるランダム化分散値用の演算を用いて所望の秘密計算を実行する。このとき、後続の正当性証明フェーズでチェックサムを計算するために必要となるランダム化分散値を収集しながら計算が行われる。正当性証明フェーズでは、計算フェーズで収集されたランダム化分散値に対して、一括でチェックサムを計算し正当性証明を行う。チェックサムが正当であれば計算フェーズによる計算結果を出力し、正当でなければ計算結果は出力せずに正当でない旨のみを出力する。
〔参考文献2〕五十嵐大、千田浩司、濱田浩気、菊池亮、“非常に高効率なn≧2k-1 malicious モデル上秘密分散ベースマルチパーティ計算の構成法”、SCIS2013、2013年
しかしながら、参考文献2に記載の方法を適用するためには、秘密計算で実行する各演算がtamper-simulatableである必要がある(参考文献3)。
〔参考文献3〕D. Ikarashi, R. Kikuchi, K. Hamada, and K. Chida, “Actively Private and Correct MPC Scheme in t<n/2 from Passively Secure Schemes with Small Overhead”, IACR Cryptology ePrint Archive, vol. 2014, p. 304, 2014
そこで、第四実施形態では、参考文献2に記載の秘密改ざん検知方法を上記の条件を満たすように第一実施形態の秘密ソートに適用した構成例を示す。なお、以下では第一実施形態に適用した例を示すが、同様の考え方により、第二実施形態及び第三実施形態に適用することも可能である。
図8を参照して、第四実施形態に係るソート装置4の構成例を説明する。ソート装置4は、第一実施形態に係るソート装置1と同様に、置換データ生成部10、ランダムID列生成部12、秘密ランダム置換部14、フラグ作成部16、順位表作成部18及びバリュー整列部22を含み、ランダム化部32、ソート置換生成部34及び正当性証明部36をさらに含む。第四実施形態の構成は第二実施形態及び第三実施形態に応用することもできる。すなわち、第二実施形態に係るソート装置2または第三実施形態に係るソート装置3が備える各構成部に加えて、ランダム化部32及び正当性証明部36をさらに含み、ソート置換生成部20をソート置換生成部34へ変更するように構成することができる。
図9を参照しながら、第四実施形態に係る秘密計算システムが実行する秘密計算方法の処理フローの一例を、実際に行われる手続きの順に従って説明する。
ステップS32において、ランダム化部32は、入力されたキーkの分散値[k]Kとバリューvの分散値[v]Vの組([k]K,[v]V)をランダム化分散値へ変換する。ランダム化分散値とは、値x∈Rの分散値[x]と、値x∈Rと乱数r∈Aとの積算値xrの分散値[xr]との組([x],[xr])である。ここで、Rは環であり、Aは環R上の結合多元環である。結合多元環とは、結合的な環であって、かつそれと両立するような、何らかの体上の線型空間の構造を備えたものである。結合多元環は、ベクトル空間で扱う値が体ではなく環でよくなったものと言える。ランダム化分散値の第0成分([x])はR成分、第1成分([xr])はA成分とも呼ぶ。
ランダム化分散値を生成する際に用いる乱数は、同一の環上の秘密分散を複数利用する場合には、一方の秘密分散のための分散値を他方の秘密分散のための分散値に変換することで、乱数の値が同一となるように生成する。この形式変換においても、改ざん検知が可能もしくは改ざんが不可能でなければならない。例えば、複製型秘密分散(replicated secret sharing)から線形秘密分散(linear secret sharing)へ変換する改ざん不可能な方法は下記参考文献4に記載されている。
〔参考文献4〕R. Cramer, I. Damgard, and Y. Ishai, “Share conversion, pseudorandom secret-sharing and applications to secure computation”, TCC, Vol. 3378 of Lecture Notes in Computer Science, pp. 342-362, Springer, 2005.
ステップS14からステップS18において、秘密ランダム置換部14、フラグ作成部16及び順位表作成部18は、計算対象のランダム化分散値と計算結果のランダム化分散値を秘密分散の種類ごとに用意したチェックサムCj(j=0,…,J-1、Jは秘密分散の種類の数)へ含めながら、所定の秘密計算を実行する。
ステップS34において、ソート置換生成部34は、順位表[s]O及び置換後ランダムID列[σir i]IDを置換データ<π’i>により秘密ランダム置換する際に、改ざん検知が可能な秘密ランダム置換方法を用いる。順位表[s]O及び置換後ランダムID列[σir i]IDに改ざんがあった場合、秘匿性が破られる可能性があるためである。改ざん検知が可能なランダム置換方法は、例えば、(k,n)-秘密分散値を加法的秘密分散値に変換し、置換と再分散を繰り返すようなランダム置換方法において、入力をランダム化分散値に変換し、一回の置換が終了するたびにランダム化分散値を加法的秘密分散値から(k,n)-秘密分散値へ変換してチェックサムに含め、反復するすべての置換が終了した後に下記ステップS36と同様の正当性証明を行う。なお、ランダム置換の中では任意のタイミングでチェックサムの取得と正当性証明を繰り返すことが可能である。このとき、ランダム化分散値の生成は少なくとも入力に対して一回行っていればよい。
ステップS36において、正当性証明部36は、すべての秘密分散についてすべての秘密計算が終了するまで待機する同期処理(SYNC)を実行する。すべての秘密分散についてすべての秘密計算が終了したことを検知すると、ランダム化部32で用いた乱数r0,…,rJ-1の分散値[r0],…,[rJ-1]を用いてチェックサムC0,…,CJ-1を検証し、秘密ソートの結果として得られる整列後バリュー列[σv]Vの正当性を検証する。J個のチェックサムC0,…,CJ-1すべてを検証した結果、改ざんがないと判定した場合は整列後バリュー列[σv]Vを出力する。改ざんがあったと判断した場合はその旨を示す情報(例えば、「⊥」など)を出力する。
チェックサムの検証は、j=0,…,J-1について、チェックサムCjに含まれるランダム化分散値のR成分の総和に分散値[rj]を乗じた分散値[φj]と、チェックサムCjに含まれるランダム化分散値のA成分の総和である分散値[ψj]とを計算し、分散値[φj]と分散値[ψj]を減算した分散値[δj]=[φj]-[ψj]を復元して、値δ0,…,δJ-1がすべて0であれば秘密ソート全体を通して改ざんがなかったものと判定する。いずれかの値δjが0以外であれば、秘密ソートのいずれかの演算において改ざんがあったものと判定する。
J個の秘密分散のうち同一の環上の秘密分散が存在する場合には、可能な限りまとめて正当性証明を行うと、公開される値の数が少なくなるため、より秘匿性を向上することができる。例えば、α(α=0,…,J-1)番目の秘密分散とβ(β=0,…,J-1、α≠β)番目の秘密分散が同一の環上の秘密分散である場合には、以下のように正当性証明を行う。まず、チェックサムCαから上述のように算出した分散値[φα]と、チェックサムCαから上述のように算出した分散値[ψα]とをそれぞれβ番目の秘密分散へ変換する。そして、変換後の分散値[φα]とチェックサムCβから同様に算出した分散値[φβ]とを合算した分散値[φαβ]と、変換後の分散値[ψα]とβ番目のチェックサムCβから同様に算出した分散値[ψβ]とを合算した分散値[ψαβ]とを減算した分散値[δ]=([φα]+[φβ])-([ψα]+[ψβ])を復元し、復元値δが0であれば改ざんがなかったものと判定し、復元値δが0以外であれば改ざんがあったものと判定する。このようにして、すべての同一の環上の秘密分散の組み合わせについて検証し、秘密ソート全体で改ざんがなかったことを検証する。本形態では2個の秘密分散が同一の環上の秘密分散である例を説明したが、3個以上の秘密分散が同一の環上の秘密分散である場合でも、同様の方法により正当性証明を行うことができる。
本形態のように構成すれば、この発明の秘密ソートにおいて、改ざん検知が可能となり、安全性が向上する。
この発明は上述の実施形態に限定されるものではなく、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。上記実施形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
[プログラム、記録媒体]
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (8)

  1. Lビットのm個のキーk0,…,km-1の列kの秘密分散値[k]及びm個のバリューv0,…,vm-1の列vの秘密分散値[v]の組を入力とし、バリュー列vを整列するためのソート置換σπ-1 Lを生成する秘密計算方法であって、
    置換データ生成部が、i=1,…,L-1について、置換データ<πi>,<π’i>を生成し、置換データ<πL>を生成する置換データ生成ステップと、
    ランダムID列生成部が、i=1,…,L-1について、互いに重複した値を含まないランダムID列[r i]を生成し、互いに重複した値を含まないランダムID列[r L]を生成するランダムID列生成ステップと、
    秘密ランダム置換部が、i=1,…,L-1について、ランダムID列[r i-1]、キー列[k i]及びランダムID列[r i]の組を置換データ<πi>により秘密ランダム置換して置換後ランダムID列πir i-1、置換後キー列[πik i]及び置換後ランダムID列[πir i]の組を生成し、ランダムID列[r L-1]を置換データ<πL>により秘密ランダム置換して置換後ランダムID列πLr L-1を生成する秘密ランダム置換ステップと、
    フラグ作成部が、j=0,…,m-1及びh=0,…,L-1について、キー[kj]=([kj,0],…,[kj,L-1])に対して、kj=hであるか否かを判定してフラグ[fj,h]を設定するフラグ作成ステップと、
    順位表作成部が、フラグ[fj,h]を用いてキーk0,…,km-1それぞれの昇順の順位が設定された順位表[s:=(s0,…,sm-1)]を作成する順位表作成ステップと、
    ソート置換生成部が、i=0,…,L-1について、ランダムID列[r i]を置換関数σiにより置換して置換後ランダムID列[σir i]を生成し、順位表[s]及び置換後ランダムID列[σir i]を置換データ<π’i>により秘密ランダム置換して置換後順位表π’is及び置換後ランダムID列π’iσir iを生成し、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列して整列後ランダムID列σi+1r iを生成し、置換関数σi+1=s→-1σiを設定し、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]及び置換後ランダムID列[πi+1r i+1]の組と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]及び整列後ランダムID列[σi+1r i+1]の組を生成し、置換後ランダムID列πLr L-1と整列後ランダムID列σLr L-1とを等結合してソート置換σπ-1 Lを生成するソート置換生成ステップと、
    を含む秘密計算方法。
  2. Lビットのm個のキーk0,…,km-1の列kの秘密分散値[k]及びm個のバリューv0,…,vm-1の列vの秘密分散値[v]の組を入力とし、バリュー列vを整列した整列後バリュー列[σv]Vを生成する秘密計算方法であって、
    置換データ生成部が、i=1,…,L-1について、置換データ<πi>,<π’i>を生成し、置換データ<πL>を生成する置換データ生成ステップと、
    ランダムID列生成部が、i=1,…,L-1について、互いに重複した値を含まないランダムID列[r i]を生成し、互いに重複した値を含まないランダムID列[r L]を生成するランダムID列生成ステップと、
    秘密ランダム置換部が、i=1,…,L-1について、ランダムID列[r i-1]、キー列[k i]及びランダムID列[r i]の組を置換データ<πi>により秘密ランダム置換して置換後ランダムID列πir i-1、置換後キー列[πik i]及び置換後ランダムID列[πir i]の組を生成し、ランダムID列[r L-1]及びバリュー列[v]Vの組を置換データ<πL>により秘密ランダム置換して置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vの組を生成する秘密ランダム置換ステップと、
    フラグ作成部が、j=0,…,m-1及びh=0,…,L-1について、キー[kj]=([kj,0],…,[kj,L-1])に対して、kj=hであるか否かを判定してフラグ[fj,h]を設定するフラグ作成ステップと、
    順位表作成部が、フラグ[fj,h]を用いてキーk0,…,km-1それぞれの昇順の順位が設定された順位表[s:=(s0,…,sm-1)]を作成する順位表作成ステップと、
    整列部が、i=0,…,L-1について、ランダムID列[r i]を置換関数σiにより置換して置換後ランダムID列[σir i]を生成し、順位表[s]及び置換後ランダムID列[σir i]を置換データ<π’i>により秘密ランダム置換して置換後順位表π’is及び置換後ランダムID列π’iσir iを生成し、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列して整列後ランダムID列σi+1r iを生成し、置換関数σi+1=s→-1σiを設定し、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]及び置換後ランダムID列[πi+1r i+1]の組と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]及び整列後ランダムID列[σi+1r i+1]の組を生成し、置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vの組と、整列後ランダムID列σLr L-1とを、置換後ランダムID列πLr L-1をキーとして等結合して整列後バリュー列[σv]Vを生成する整列ステップと、
    を含む秘密計算方法。
  3. 請求項1に記載の秘密計算方法であって、
    バリュー整列部が、バリュー列[v]を置換データ<πL>により秘密ランダム置換して置換後バリュー列[πLv]を生成し、置換後バリュー列[πLv]をソート置換σπ-1 Lに基づいて整列して整列後バリュー列[σv]を生成するバリュー整列ステップ
    をさらに含む秘密計算方法。
  4. 複数のソート装置を含み、Lビットのm個のキーk0,…,km-1の列kの秘密分散値[k]及びm個のバリューv0,…,vm-1の列vの秘密分散値[v]の組を入力とし、バリュー列vを整列するためのソート置換σπ-1 Lを生成する秘密計算システムであって、
    上記ソート装置は、
    i=1,…,L-1について、置換データ<πi>,<π’i>を生成し、置換データ<πL>を生成する置換データ生成部と、
    i=1,…,L-1について、互いに重複した値を含まないランダムID列[r i]を生成し、互いに重複した値を含まないランダムID列[r L]を生成するランダムID列生成部と、
    i=1,…,L-1について、ランダムID列[r i-1]、キー列[k i]及びランダムID列[r i]の組を置換データ<πi>により秘密ランダム置換して置換後ランダムID列πir i-1、置換後キー列[πik i]及び置換後ランダムID列[πir i]の組を生成し、ランダムID列[r L-1]を置換データ<πL>により秘密ランダム置換して置換後ランダムID列πLr L-1を生成する秘密ランダム置換部と、
    j=0,…,m-1及びh=0,…,L-1について、キー[kj]=([kj,0],…,[kj,L-1])に対して、kj=hであるか否かを判定してフラグ[fj,h]を設定するフラグ作成部と、
    フラグ[fj,h]を用いてキーk0,…,km-1それぞれの昇順の順位が設定された順位表[s:=(s0,…,sm-1)]を作成する順位表作成部と、
    i=0,…,L-1について、ランダムID列[r i]を置換関数σiにより置換して置換後ランダムID列[σir i]を生成し、順位表[s]及び置換後ランダムID列[σir i]を置換データ<π’i>により秘密ランダム置換して置換後順位表π’is及び置換後ランダムID列π’iσir iを生成し、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列して整列後ランダムID列σi+1r iを生成し、置換関数σi+1=s→-1σiを設定し、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]及び置換後ランダムID列[πi+1r i+1]の組と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]及び整列後ランダムID列[σi+1r i+1]の組を生成し、置換後ランダムID列πLr L-1と整列後ランダムID列σLr L-1とを等結合してソート置換σπ-1 Lを生成するソート置換生成部と、
    を含む秘密計算システム。
  5. 複数のソート装置を含み、Lビットのm個のキーk0,…,km-1の列kの秘密分散値[k]及びm個のバリューv0,…,vm-1の列vの秘密分散値[v]の組を入力とし、バリュー列vを整列した整列後バリュー列[σv]を生成する秘密計算システムであって、
    上記ソート装置は、
    i=1,…,L-1について、置換データ<πi>,<π’i>を生成し、置換データ<πL>を生成する置換データ生成部と、
    i=1,…,L-1について、互いに重複した値を含まないランダムID列[r i]を生成し、互いに重複した値を含まないランダムID列[r L]を生成するランダムID列生成部と、
    i=1,…,L-1について、ランダムID列[r i-1]、キー列[k i]及びランダムID列[r i]の組を置換データ<πi>により秘密ランダム置換して置換後ランダムID列πir i-1、置換後キー列[πik i]及び置換後ランダムID列[πir i]の組を生成し、ランダムID列[r L-1]及びバリュー列[v]Vを置換データ<πL>により秘密ランダム置換して置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vを生成する秘密ランダム置換部と、
    j=0,…,m-1及びh=0,…,L-1について、キー[kj]=([kj,0],…,[kj,L-1])に対して、kj=hであるか否かを判定してフラグ[fj,h]を設定するフラグ作成部と、
    フラグ[fj,h]を用いてキーk0,…,km-1それぞれの昇順の順位が設定された順位表[s:=(s0,…,sm-1)]を作成する順位表作成部と、
    i=0,…,L-1について、ランダムID列[r i]を置換関数σiにより置換して置換後ランダムID列[σir i]を生成し、順位表[s]及び置換後ランダムID列[σir i]を置換データ<π’i>により秘密ランダム置換して置換後順位表π’is及び置換後ランダムID列π’iσir iを生成し、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列して整列後ランダムID列σi+1r iを生成し、置換関数σi+1=s→-1σiを設定し、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]及び置換後ランダムID列[πi+1r i+1]の組と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]及び整列後ランダムID列[σi+1r i+1]の組を生成し、置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vの組と、整列後ランダムID列σLr L-1とを、置換後ランダムID列πLr L-1をキーとして等結合して整列後バリュー列[σv]Vを生成する整列部と、
    を含む秘密計算システム。
  6. Lビットのm個のキーk0,…,km-1の列kの秘密分散値[k]及びm個のバリューv0,…,vm-1の列vの秘密分散値[v]の組を入力とし、バリュー列vを整列するためのソート置換σπ-1 Lを生成するソート装置であって、
    i=1,…,L-1について、置換データ<πi>,<π’i>を生成し、置換データ<πL>を生成する置換データ生成部と、
    i=1,…,L-1について、互いに重複した値を含まないランダムID列[r i]を生成し、互いに重複した値を含まないランダムID列[r L]を生成するランダムID列生成部と、
    i=1,…,L-1について、ランダムID列[r i-1]、キー列[k i]及びランダムID列[r i]の組を置換データ<πi>により秘密ランダム置換して置換後ランダムID列πir i-1、置換後キー列[πik i]及び置換後ランダムID列[πir i]の組を生成し、ランダムID列[r L-1]を置換データ<πL>により秘密ランダム置換して置換後ランダムID列πLr L-1を生成する秘密ランダム置換部と、
    j=0,…,m-1及びh=0,…,L-1について、キー[kj]=([kj,0],…,[kj,L-1])に対して、kj=hであるか否かを判定してフラグ[fj,h]を設定するフラグ作成部と、
    フラグ[fj,h]を用いてキーk0,…,km-1それぞれの昇順の順位が設定された順位表[s:=(s0,…,sm-1)]を作成する順位表作成部と、
    i=0,…,L-1について、ランダムID列[r i]を置換関数σiにより置換して置換後ランダムID列[σir i]を生成し、順位表[s]及び置換後ランダムID列[σir i]を置換データ<π’i>により秘密ランダム置換して置換後順位表π’is及び置換後ランダムID列π’iσir iを生成し、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列して整列後ランダムID列σi+1r iを生成し、置換関数σi+1=s→-1σiを設定し、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]及び置換後ランダムID列[πi+1r i+1]の組と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]及び整列後ランダムID列[σi+1r i+1]の組を生成し、置換後ランダムID列πLr L-1と整列後ランダムID列σLr L-1とを等結合してソート置換σπ-1 Lを生成するソート置換生成部と、
    を含むソート装置。
  7. Lビットのm個のキーk0,…,km-1の列kの秘密分散値[k]及びm個のバリューv0,…,vm-1の列vの秘密分散値[v]の組を入力とし、バリュー列vを整列した整列後バリュー列[σv]Vを生成するソート装置であって、
    i=1,…,L-1について、置換データ<πi>,<π’i>を生成し、置換データ<πL>を生成する置換データ生成部と、
    i=1,…,L-1について、互いに重複した値を含まないランダムID列[r i]を生成し、互いに重複した値を含まないランダムID列[r L]を生成するランダムID列生成部と、
    i=1,…,L-1について、ランダムID列[r i-1]、キー列[k i]及びランダムID列[r i]の組を置換データ<πi>により秘密ランダム置換して置換後ランダムID列πir i-1、置換後キー列[πik i]及び置換後ランダムID列[πir i]の組を生成し、ランダムID列[r L-1]及びバリュー列[v]Vを置換データ<πL>により秘密ランダム置換して置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vを生成する秘密ランダム置換部と、
    j=0,…,m-1及びh=0,…,L-1について、キー[kj]=([kj,0],…,[kj,L-1])に対して、kj=hであるか否かを判定してフラグ[fj,h]を設定するフラグ作成部と、
    フラグ[fj,h]を用いてキーk0,…,km-1それぞれの昇順の順位が設定された順位表[s:=(s0,…,sm-1)]を作成する順位表作成部と、
    i=0,…,L-1について、ランダムID列[r i]を置換関数σiにより置換して置換後ランダムID列[σir i]を生成し、順位表[s]及び置換後ランダムID列[σir i]を置換データ<π’i>により秘密ランダム置換して置換後順位表π’is及び置換後ランダムID列π’iσir iを生成し、置換後順位表π’isに基づいて置換後ランダムID列π’iσir iを整列して整列後ランダムID列σi+1r iを生成し、置換関数σi+1=s→-1σiを設定し、i=0,…,L-2について、置換後ランダムID列πi+1r i、置換後キー列[πi+1k i+1]及び置換後ランダムID列[πi+1r i+1]の組と、整列後ランダムID列σi+1r iとを、置換後ランダムID列πi+1r iをキーとして等結合し、整列後ランダムID列σi+1r i、整列後キー列[σi+1k i+1]及び整列後ランダムID列[σi+1r i+1]の組を生成し、置換後ランダムID列πLr L-1及び置換後バリュー列[πLv]Vの組と、整列後ランダムID列σLr L-1とを、置換後ランダムID列πLr L-1をキーとして等結合して整列後バリュー列[σv]Vを生成する整列部と、
    を含むソート装置。
  8. 請求項6または7に記載のソート装置としてコンピュータを機能させるためのプログラム。
JP2015557796A 2014-01-17 2015-01-07 秘密計算方法、秘密計算システム、ソート装置及びプログラム Active JP6009697B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014006334 2014-01-17
JP2014006334 2014-01-17
PCT/JP2015/050230 WO2015107951A1 (ja) 2014-01-17 2015-01-07 秘密計算方法、秘密計算システム、ソート装置及びプログラム

Publications (2)

Publication Number Publication Date
JP6009697B2 true JP6009697B2 (ja) 2016-10-19
JPWO2015107951A1 JPWO2015107951A1 (ja) 2017-03-23

Family

ID=53542841

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015557796A Active JP6009697B2 (ja) 2014-01-17 2015-01-07 秘密計算方法、秘密計算システム、ソート装置及びプログラム

Country Status (5)

Country Link
US (1) US10074293B2 (ja)
EP (1) EP3096309B1 (ja)
JP (1) JP6009697B2 (ja)
CN (1) CN105900164B (ja)
WO (1) WO2015107951A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105027180B (zh) * 2013-01-17 2017-03-29 日本电信电话株式会社 保密计算系统、运算装置、以及保密计算方法
JP5957126B1 (ja) * 2015-06-24 2016-07-27 日本電信電話株式会社 秘密計算装置、秘密計算方法、およびプログラム
US11250004B2 (en) * 2016-09-27 2022-02-15 Nippon Telegraph And Telephone Corporation Secure equijoin system, secure equijoin device, secure equijoin method, and program
CN110800034B (zh) * 2017-07-05 2023-05-02 日本电信电话株式会社 秘密计算系统、秘密计算装置、秘密计算方法、程序以及记录介质
AU2018349997B2 (en) * 2017-10-13 2021-07-22 Nippon Telegraph And Telephone Corporation Confidential sort system and method
JP7147840B2 (ja) * 2018-03-26 2022-10-05 日本電信電話株式会社 秘密重複排除フィルタ生成システム、秘密重複排除システム、これらの方法、秘密計算装置及びプログラム
JP6973629B2 (ja) * 2018-04-20 2021-12-01 日本電信電話株式会社 秘密集約順位システム、秘密計算装置、秘密集約順位方法、およびプログラム
AU2019259261B2 (en) * 2018-04-25 2021-07-08 Nippon Telegraph And Telephone Corporation Secure aggregate maximum system, secure aggregate minimum system, secure computation apparatus, secure aggregate maximum method, secure aggregate minimum method, and program
CN112020737B (zh) * 2018-04-25 2023-08-08 日本电信电话株式会社 秘密聚合总计系统及其方法、秘密计算装置、记录介质
WO2019208486A1 (ja) * 2018-04-26 2019-10-31 日本電信電話株式会社 秘密集約中央値システム、秘密計算装置、秘密集約中央値方法、およびプログラム
EP3796290B1 (en) * 2018-05-17 2023-07-12 Nippon Telegraph And Telephone Corporation Secret cross tabulation system, secret calculation device, secret cross tabulation method, and program
JP6989006B2 (ja) * 2018-05-25 2022-01-05 日本電信電話株式会社 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム
US11886876B2 (en) * 2018-08-13 2024-01-30 Nippon Telegraph And Telephone Corporation Secure strong mapping computing systems, methods, secure computing apparatus and program
US20220006614A1 (en) * 2018-10-04 2022-01-06 Nippon Telegraph And Telephone Corporation Secret sigmoid function calculation system, secret logistic regression calculation system, secret sigmoid function calculation apparatus, secret logistic regression calculation apparatus, secret sigmoid function calculation method, secret logistic regression calculation method, and program
WO2021144840A1 (ja) * 2020-01-14 2021-07-22 日本電信電話株式会社 暗号化データ分析装置、暗号化データ分析方法、プログラム
CN114172648B (zh) * 2022-02-10 2022-05-31 支付宝(杭州)信息技术有限公司 一种基于秘密分享的排序方法和系统
CN114282255B (zh) * 2022-03-04 2022-05-31 支付宝(杭州)信息技术有限公司 一种基于秘密分享的排序序列合并方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1835657A1 (en) * 2006-03-16 2007-09-19 Sap Ag Methods and systems for multi-party sorting of private values
JP2012154990A (ja) * 2011-01-24 2012-08-16 Nippon Telegr & Teleph Corp <Ntt> 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム
JP5411994B2 (ja) * 2010-10-06 2014-02-12 日本電信電話株式会社 秘密分散システム、秘密分散装置、秘密分散方法、秘密ソート方法、秘密分散プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901145B1 (en) * 1999-04-08 2005-05-31 Lucent Technologies Inc. Generation of repeatable cryptographic key based on varying parameters
JP4292835B2 (ja) * 2003-03-13 2009-07-08 沖電気工業株式会社 秘密再構成方法、分散秘密再構成装置、及び秘密再構成システム
CN1845214A (zh) * 2006-04-30 2006-10-11 张剑 可随机更换的非线性正形置换生成器
JP4304215B2 (ja) * 2007-03-23 2009-07-29 株式会社東芝 秘密分散装置、方法及びプログラム
US8064696B2 (en) * 2007-04-10 2011-11-22 Microsoft Corporation Geometric parsing of mathematical expressions
EP2423904B1 (en) * 2009-04-24 2015-01-07 Nippon Telegraph And Telephone Corporation Secret sharing system, sharing apparatus, share management apparatus, acquisition apparatus, processing methods therefore, secret sharing method, program, and recording medium
US8918897B2 (en) * 2009-11-24 2014-12-23 Cleversafe, Inc. Dispersed storage network data slice integrity verification
JP5379914B2 (ja) * 2010-07-23 2013-12-25 日本電信電話株式会社 秘密分散システム、分散装置、分散管理装置、取得装置、秘密分散方法、プログラム、及び記録媒体
IL213662A0 (en) * 2011-06-20 2011-11-30 Eliphaz Hibshoosh Key generation using multiple sets of secret shares
US9411982B1 (en) * 2013-08-07 2016-08-09 Amazon Technologies, Inc. Enabling transfer of digital assets
US9158925B2 (en) * 2013-11-27 2015-10-13 Microsoft Technology Licensing, Llc Server-aided private set intersection (PSI) with data transfer
US10002547B2 (en) * 2014-01-17 2018-06-19 Nippon Telegraph And Telephone Corporation Secret calculation method, secret calculation system, random permutation device, and program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1835657A1 (en) * 2006-03-16 2007-09-19 Sap Ag Methods and systems for multi-party sorting of private values
JP5411994B2 (ja) * 2010-10-06 2014-02-12 日本電信電話株式会社 秘密分散システム、秘密分散装置、秘密分散方法、秘密ソート方法、秘密分散プログラム
JP2012154990A (ja) * 2011-01-24 2012-08-16 Nippon Telegr & Teleph Corp <Ntt> 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6016035566; Jonsson, K. V. et al.: 'Secure Multi-Party Sorting and Applications' Cryptology ePrint Archive Report 2011/122, 20111104, [online] *
JPN7016002746; Wang, G. et al.: 'Bureaucratic Protocols for Secure Two-Party Sorting' Proceedings of the 5th ACM Symposium onInformation, Computer and Communications Security , 201004, p.226-237 *

Also Published As

Publication number Publication date
EP3096309B1 (en) 2018-10-31
JPWO2015107951A1 (ja) 2017-03-23
WO2015107951A1 (ja) 2015-07-23
EP3096309A4 (en) 2017-09-13
CN105900164B (zh) 2019-03-08
US20160321958A1 (en) 2016-11-03
US10074293B2 (en) 2018-09-11
CN105900164A (zh) 2016-08-24
EP3096309A1 (en) 2016-11-23

Similar Documents

Publication Publication Date Title
JP6009697B2 (ja) 秘密計算方法、秘密計算システム、ソート装置及びプログラム
JP6009698B2 (ja) 秘密計算方法、秘密計算システム、ランダム置換装置及びプログラム
JP5860556B1 (ja) 不整合検知方法、不整合検知システム、不整合検知装置、およびプログラム
JP6016948B2 (ja) 秘匿計算システム、演算装置、秘匿計算方法、およびプログラム
JP6095792B2 (ja) 秘密ビット分解装置、秘密モジュラス変換装置、秘密ビット分解方法、秘密モジュラス変換方法、プログラム
WO2014007310A1 (ja) 秘密分散システム、データ分散装置、分散データ変換装置、秘密分散方法、およびプログラム
JP2020074039A (ja) データを暗号化する方法およびシステム
JP6040320B2 (ja) 秘密並列処理装置、秘密並列処理方法、プログラム
Salam et al. Investigating cube attacks on the authenticated encryption stream cipher ACORN
JP5860557B1 (ja) 秘密公開方法、秘密公開システム、秘密公開装置、およびプログラム
JP5944841B2 (ja) 秘密分散システム、データ分散装置、分散データ保有装置、秘密分散方法、およびプログラム
WO2016104476A1 (ja) 秘密改ざん検知システム、秘密計算装置、秘密改ざん検知方法、およびプログラム
JP2016173533A (ja) 分散値変換システム、分散値変換装置、分散値変換方法、およびプログラム
JP6053238B2 (ja) 秘密改ざん検知システム、秘密計算装置、秘密改ざん検知方法、およびプログラム
JP5480828B2 (ja) 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム
WO2018216512A1 (ja) 秘密改ざん検知システム、秘密改ざん検知装置、秘密改ざん検知方法、およびプログラム
JPWO2012121152A1 (ja) 代理計算システム、方法、依頼装置及びプログラム
Deryabin et al. Secure verifiable secret short sharing scheme for multi-cloud storage
Ganorkar et al. An information security scheme for cloud based environment using 3DES encryption algorithm
Corena et al. Pollution-free regenerating codes with fast reconstruction verification for verifiable cloud storage
Bedmutha et al. A Review on User Privacy Preserving and Auditing for Secure Data Storage System in Cloud
WO2019039381A1 (ja) 秘密計算装置、秘密計算方法、プログラム、および記録媒体
Ganorkar Achieve Date Integrity and Security on Cloud Storage using 3DES Encryption Algorithm

Legal Events

Date Code Title Description
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: 20160913

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160914

R150 Certificate of patent or registration of utility model

Ref document number: 6009697

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150