JP7031682B2 - 秘密計算装置、システム、方法、プログラム - Google Patents
秘密計算装置、システム、方法、プログラム Download PDFInfo
- Publication number
- JP7031682B2 JP7031682B2 JP2019550064A JP2019550064A JP7031682B2 JP 7031682 B2 JP7031682 B2 JP 7031682B2 JP 2019550064 A JP2019550064 A JP 2019550064A JP 2019550064 A JP2019550064 A JP 2019550064A JP 7031682 B2 JP7031682 B2 JP 7031682B2
- Authority
- JP
- Japan
- Prior art keywords
- distributed
- bit
- storage device
- information
- secret calculation
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/723—Modular exponentiation
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Storage Device Security (AREA)
Description
w = r1 + r2 + r3 mod p ・・・(1)
となるような0からp-1以下の3つの値の組(r1, r2, r3)を生成し、3つの分散情報として、(r1, r2, r3)から異なる2つの値を互いに異なる組み合わせとなるように選んだ3組を用いることで、(2,3)秘密分散を実現する。なお、このpを法と呼ぶ。
pを2以上の整数として、0以上p未満の値wを分散する場合、
w = r1 + r2 + r3 mod p
を満たすランダムに選ばれたr1、r2、r3を生成して、装置1乃至装置3に以下のように保管する。
装置2に、値wの分散値として、(r2, r3)を保管する。
装置3に、値wの分散値として、(r3, r1)を保管する。
先に示した方法によって、装置1、装置2、装置3に分散して保管されている値wと値w’に関して実行される加算処理について説明する。なお、
w’ = r1’ + r2’ + r3’ mod p
・・・(2)
とする。
wの分散値として、(s1, t1) = (r1, r2) を保管し、
w’の分散値として、(s1’, t1’) = (r1’, r2’)を保管している。
wの分散値 として、(s2, t2) = (r2, r3) を保管し、
w’の分散値 として、(s2’, t2’) = (r2’, r3’)を保管している。
wの分散値として、 (s3, t3) = (r3, r1) を保管し、
w’の分散値 として、(s3’, t3’) = (r3’, r1’)を保管している。
(s1’’, t1’’) = (r1’’ = s1 + s1’ mod p, r2’’ = t1 + t1’mod p) ・・・(3)
によって、(s1’’, t1’’)を計算し、これを加算値w + w’の分散値として保管する。
(s2’’, t2’’) = (r2’’ = s2 + s2’ mod p, r3’’ = t2 + t2’ mod p) ・・・(4)
によって、(s2’’, t2’’)を計算し、これを加算値w + w’の分散値として保管する。
(s3’’, t3’’) = (r3’’ = s3 + s3’ mod p, r1’’ = t3 + t3’ mod p) ・・・(5)
によって、(s3’’, t3’’)を計算し、これを加算値w + w’の分散値として保管する。
w + w’ = r1’’ + r2’’ + r3’’mod p ・・・(6)
となるr1’’,r2’’,r3’’を用いて分散した値となっている。これは、
r1’’ + r2’’ + r3’’
= (r1 + r2 + r3) + (r1’ + r2’ + r3’) = w + w’ mod p ・・・(7)
から確認できる。
先に示した方法によって、装置1、装置2、装置3に分散して保管されている値wと値w’に関して実行される加算処理について説明する。なお、
w = r1 + r2 + r3 mod p
w’ = r1’ + r2’ + r3’ mod p
・・・(8)
とする。
wの分散値として、(s1, t1) = (r1, r2)を保管し、
w’の分散値として、(s1’, t1’) = (r1’, r2’)を保管している。
wの分散値 として、(s2, t2) = (r2, r3) を保管し、
w’の分散値 として、(s2’, t2’) = (r2’, r3’)を保管している。
wの分散値として、(s3, t3) = (r3, r1) を保管し、
w’の分散値 として、(s3’, t3’) = (r3’, r1’)を保管している。
(s1’’, t1’’) = (r1’’ = s1-s1’ mod p, r2’’ = t1-t1’ mod p) ・・・(9)
によって、(s1’’, t1’’)を計算し、これをw-w’の分散値として保管する。
(s2’’, t2’’) = (r2’’ = s2-s2’ mod p, r3’’ = t2-t2’ mod p) ・・・(10)
によって、(s2’’, t2’’)を計算し、これをw-w’の分散値として保管する。
(s3’’, t3’’) = (r3’’ = s3-s3’ mod p, r1’’ = t3-t3’ mod p) ・・・(11)
によって、(s3’’, t3’’)を計算し、これをw-w’の分散値として保管する。
w-w’を
w-w’ = r1’’ + r2’’ + r3’’mod p ・・・(12)
となるr1’’、r2’’、r3’’を用いて分散した値となっている。
r1’’ + r2’’ + r3’’
= (r1 + r2 + r3) -(r1’ + r2’ + r3’) = w-w’ mod p ・・・(13)
から確認することができる。
先に示した方法によって、装置1、装置2、装置3に分散されて保管されているwと値w’に関して実行される乗算処理について説明する。
r1 + r2 + r3 = w mod p ・・・(14)
を満たすランダムに選ばれた値とし、
r1’、r2’、r3’を、
r1’ + r2’ + r3’ = w’ mod 2^n ・・・(15)
を満たすランダムに選ばれた値とする。
wの分散値として、(s1, t1) = (r1, r2)を保管し、
w’の分散値として、(s1’, t1’) = (r1’, r2’)を保管する。
wの分散値 として、(s2, t2) = (r2, r3)を保管し、
w’の分散値 として、(s2’, t2’) = (r2’, r3’)を保管する。
wの分散値として、 (s3, t3) = (r3, r1)を保管し
w’の分散値 として、(s3’, t3’) = (r3’, r1’)を保管する。
r1’’ + r2’’ + r3’’ = 0 mod 2^n ・・・(16)
を満たすランダムに選ばれた値として、
装置1は、r1’’を保管し、
装置2は、r2’’を保管し、
装置3は、r3’’を保管しているものとする。このような性質を満たすr1’’、r2’’、r3’’は、乗算を実行するたびに使い捨てで必要となる。このような3値を、3装置が効率的に生成する方法については後述する。
u2 = s1 * s1’ + s1 * t1’ + t1 * s1’ + r1’’ mod p ・・・(17)
を計算し、u2を装置2に送付する。
u3 = s2 * s2’ + s2 * t2’ + t2 * s2’ + r2’’ mod p ・・・(18)
を計算し、u3を装置3に送付する。
u1 = s3 * s3’ + s3 * t3’ + t3 * s3’ + r3’’ mod p ・・・(19)
を計算し、u1を装置1に送付する。
u1 + u2 + u3
= r1 * r1’ + r1 * r2’ + r2 * r1’ + r2 * r2’ + r2 * r3’ + r3 * r2’ + r3 * r3’ + r3 * r1’ + r1 * r3’ + r1’’ + r2’’ + r3’’
= (r1 + r2 + r3) * (r1’ + r2’ + r3’) + r1’’ + r2’’ + r3’’
= w * w’ mod p ・・・(20)
となっていることが確認できる.
次に、
r1 + r2 + r3 = 0 mod 2^n ・・・(21)
のように、3つ足すと0となる値を、装置1、装置2、装置3が通信することなく、また、各装置が所有する値を他の装置に知られることのない方法で、大量に生成する方法について説明する。
r[i,1] + r[i,2] + r[i,3] = 0 mod 2^n
なるr[i,1]、r[i,2]、r[i,3]を、多くのi = 1,…,Nに関して生成する方法を説明する。
装置2に、L2とL1を記憶させ、
装置3に、L3とL2を記憶させているものとする。
r[1] = r’[1] - r’[3] mod p ・・・(22)
とする。
r[2] = r’[2] - r’[1] mod p ・・・(23)
とする。
r[3] = r ’[3] - r’[2] mod p ・・・(24)
とする。
が成り立ち、N組全てが条件を満たす。
r[1] = r’[1] - r’[3] mod p
に着目すると、装置3はr’[1]を得られず、装置2はr’[3]を得られない。これより、装置1、装置2は、r[1]を計算できないことがわかる。これは、r[2]やr[3]についても同様である。
r1 + r2 + r3 = w mod p ・・・(26)
に関して、
(r1 - r2 mod p, r2),
(r2 - r3 mod p, r3),
(r3 - r1 mod p, r1)
・・・(27)
を3つの装置のそれぞれの分散情報としてもよい。
a * b mod 2^4 < c ・・・(28)
を処理する場合を考える。乗算a*bを数値演算として処理し、比較演算(<)を論理演算として実行したい。
w = r1 + r2 + r 3 mod p ・・・(29)
から,
r1 = 1, r2 = 2, r3 = 2として、
装置1が、(r1, r2) = (1, 2)を分散値として記憶し、
装置2が、(r2, r3) = (2, 2)を分散値として記憶し、
装置3が、(r3, r1) = (2, 1)を分散値として記憶しているものとする。
装置1は、
1ビット目に関して、(1, 1)、
2ビット目に関して、(0, 1)、
3ビット目に関して、(1, 0)、
4ビット目に関して、(0, 0)
を所有する。1ビット目はLSB(Least Significant Bit)である。
1ビット目に関して、(1, 1)、
2ビット目に関して、(1, 1)、
3ビット目に関して、(0, 0)、
4ビット目に関して、(0, 0)
を所有する。
1ビット目に関して、(1, 1)、
2ビット目に関して、(1, 0)、
3ビット目に関して、(0, 0)、
4ビット目に関して、(0, 0)
を所有する。
r = r1 + r2 + r3 mod p ・・・(30)
を満たすr1、r2、r3を用いて、装置1、装置2、装置3に分散されているものとする。なお、非特許文献2では、p=2^n-1によって表されるメルセンヌ素数を用いる。メルセンヌ素数の性質は、手順2において、sを効率的に計算することに作用している。
r12 = r1 + r2 mod p、および、
r3
・・・(31)
を分散する。
r12 + r3 が pよりも大であるか否かを判定し、
r12 + r3 が pよりも大きい場合(r12 + r3 > p)には、
s = 1 ・・・(32)
とし、
それ以外の場合は(r12 + r3 ≦ p)、
s = 0 ・・・(33)
となるような秘密計算を実行する。
r12 + r3 + s mod 2^n ・・・(34)
の計算を下位桁からビット毎に全加算器の秘密計算を実行する。
w= r1+r2+r3 mod 2^n (mod は剰余演算、^はべき乗演算)を満たすr1、r2、r3を用い、
前記分散情報のうち2つの値について、法2^n上の和をとり、前記和を(2,3)閾値型RSSによって分散する加算分散部と、
前記加算分散部による前記2つの値の前記和を分散した値と、前記加算分散部が用いた前記2つの値以外の残りの1つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部と、を備える。
r12 = r1+r2 mod 2^n (mod は剰余演算、^はべき乗演算)と、
r123 = r12 + r3 mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部を備えた構成としてもよい。
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、nビットの値wに関して、
w = r_1+r_2+r_3 mod 2^n (mod は剰余演算、nは2以上の整数、^はべき乗演算)
を満たすr1、r2、r3を用い、
i=1,2,3について、r_{i,x}をr_iのxビット目とし、
1桁目の桁上がり入力c_{1}、d_{1}を0とし、
xを下位桁からの桁数として、x=1,...,n について
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}
についてx桁のビット毎の加算した際の2ビットの桁上がりとして、
c_{x+1}、d_{x+1}を秘密計算する桁上がり秘密計算部と、
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}の排他的論理和に基づく分散情報を、xビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する繰り込み秘密計算部を備える。
r12 =r_{1,n}||…||r_{1,1}+ r_{2,n}||…||r_{2,1} mod 2^n (mod は剰余演算、^はべき乗演算、||はビット連結、r_{1,x}、r_{2,x}、r_{3,x}は、r1、r2、r3のxビットを表す)と
r123 = r12 + r_{3,n}||…||r_{3,1} mod 2^n (mod は剰余演算、^はべき乗演算)の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分散値保管装置に記憶する全加算器秘密計算部を備える。
w_x= r_{1,x}+r_{2,x}+r_{3,x} mod 2
を満たすr_{1,x}、r_{2,x}、r_{3,x}を用い、
c_{1},d_{1}を0とし、
xを下位桁からの桁数として、x=1,..,nについて、
w_xとc_{x}とd_{x}の排他的論理和をv_{x}とし、
v_{x}の分散情報を構成する(2,3)閾値型RSSの分散情報をv_{1,x}、v_{2,x}、v_{3,x}として、
v_{x}と、v_{1,x}、v_{2,x}、v_{3,x}、c_{x}、d_{x}について、ビット毎の加算した際の2ビットの桁上がりであるc_{x+1}、d_{x+1}を計算する秘密計算を実行し、v_{x}の分散情報を、x桁目の分散情報として前記分散値保管装置に記憶する桁上がり秘密計算部と、を備える。
w= r1+r2+r3 mod 2^n
を満たすr1、r2、r3を用い、これら3つの分散情報のうち2つの値について、法2^n(^はべき乗演算)上の和をとり、前記和を(2,3)閾値型RSSによって分散し、前記2つの値の和(r_i +r_j mod 2^n)の分散値と、加算分散部(図1の303)が用いた2つの値以外の残りの1つの値(r_k、k≠i, j)との和を全加算器の秘密計算を用いて、各桁毎に計算する構成としてもよい。
w= r1+r2+r3 mod 2^n
を満たすr1、r2、r3を用い、
r12 = r1+r2 mod 2^nと、
r123 = r12 + r3 mod 2^nの秘密計算を全加算器の秘密計算によって各桁毎に計算し、
計算結果を前記分解分散値保管装置に記憶させる全加算器秘密計算部(図3の303)を備えた構成としてもよい。前記ビット分解秘密計算装置は、(2,3)閾値型RSSの前記分散情報を構成する3つの値の各々について、各1つ以外を0とする分散情報をそれぞれ生成する部分分散情報抽出部(図3の302)を備えた構成としてもよい。全加算器秘密計算部(図3の303)は、前記部分分散情報抽出部(図3の302)で生成した3つの分散情報の2つの値に関して、下位桁から順に全加算器の秘密計算を実行し、結果の列を前記2つの値の分散情報とし、前記2つの値の和の分散情報と、前記1つの値の分散情報について、全加算器の秘密計算を用いた、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置(図3の200)に記憶する構成としてもよい。
w = r_1+r_2+r_3 mod 2^n (mod は剰余演算、nは2以上の整数、^はべき乗演算)
を満たすr1、r2、r3を用い、
i=1,2,3について、r_{i,x}をr_iのxビット目とし、
1桁目の桁上がり入力c_{1}、d_{1}を0とし、
xを下位桁からの桁数として、x=1,...,n について
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}
についてx桁のビット毎の加算した際の2ビットの桁上がりとして、
c_{x+1}、d_{x+1}を秘密計算する桁上がり秘密計算部(図7の304)と、
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}の排他的論理和に基づく分散情報を、xビット目のビット分解された値の分散情報として、分解分散値保管装置(図7の200)に記憶する繰り込み秘密計算部(図7の305)を備えた構成としてもよい。
w_x= r_{1,x} + r_{2,x} + r_{3,x} mod 2を満たすr_{1,x}、r_{2,x}、r{3,x}
を用い、
r12 =r_{1,n}||…||r_{1,1}+ r_{2,n}||…||r_{2,1} mod 2^n
(mod は剰余演算、^はべき乗演算、||はビット連結、r_{1,i}、r_{2,i}、r{3,i}は、r1、r2、r3のiビットを表す)と、
r123 = r12 + r_{3,n}||…||r_{3,1} mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を、前記分散値保管装置(図5の100)に記憶させる全加算器秘密計算部(図5の403)を備えたビット結合秘密計算装置(図5の400)を備えた構成としてもよい。
w_x= r{1,x}+r{2,x}+r{3,x} mod 2を満たすr_{1,x}、r_{2,x}、r{3,x}を用い、
c_{1},d_{1}を0とし、
xを下位桁からの桁数として、x=1,..,nについて、
w_xとc_{x}とd_{x}の排他的論理和をv_{x}とし、
v_{x}の分散情報を構成する(2,3)閾値型RSSの分散情報をv_{1,x}、v_{2,x}、v_{3,x}として、
v_{x}と、v_{1,x}、v_{2,x}、v_{3,x}、c_{x}、d_{x}について、ビット毎の加算した際の2ビットの桁上がりであるc_{x+1}、d_{x+1}を計算する秘密計算を実行し、v_{x}の分散情報を、x桁目の分散情報として、前記分散値保管装置(図9の100)に記憶する桁上がり秘密計算部(図9の404)と、を備えた構成としてもよい。
前記桁上がり秘密計算部(図9の404)は、c_{x+1}を [(v_{1,x} XOR v_{2,x} XOR 1) AND (v_{1,x} XOR v_{3,x})] XOR v_{3,x}
の秘密計算によって計算し、
d_{x+1}を [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR v_{x})] XOR v_{x}の秘密計算によって計算する構成としてもよい。
r = r1 + r2 + r3 mod p ・・・(35)
を満たすr1、r2、r3で装置1、装置2、装置3に分散されていることを想定する。
r = r1 + r2 + r3 mod pの分散情報(装置1-3に分散されている分散情報)のr1に関する箇所以外をすべて0にした値が、r1の分散情報となる。
装置1が、(r2, r3)を保管し、
装置2が、(r3, r1)を保管し、
装置3が、(r1, r2)を保管しているとする。
装置1は、(0, 0)を保有し、
装置2は、(0, r1)を保有し、
装置3は、(r1, 0)を保有する。これらは、r1に関する分散情報とすることができる。
r12 + r3 + s mod 2^n ・・・(36)
を計算している。
r12 + r3 mod p ・・・(37)
をmod 2^nにおける計算で求めるためである。
とすると、
r12 + r3 + s mod 2^n
= r’ + p + 1 mod 2^n
= r’ + 2^n mod 2^n
= r' mod 2^n ・・・(38)
となる。(∵p=2^n-1, 2^n mod 2^n=0)
r12 + r3 mod 2^n
= r’ mod 2^n ・・・(39)
となる。
r12 + r3 mod 2^n ・・・(40)
となる。
r12 = r1 + r2 mod 2^n ・・・(41)
を(2,3)閾値型RSSで分散する。
r3の分散情報(シェア)を装置1、2、3で生成する(通信無し)。
r12 + r3 mod 2^n ・・・(42)
の計算を下位桁からビット毎に全加算器の秘密計算を実行する。
を満たすランダムに選ばれr1、r2、r3を生成して、以下のように保管されているものとする。
装置2に、wの分散値として (r2, r3)を保管し、
装置3に、wの分散値として(r3, r1)を保管する。
r1 + r2 ・・・(44)
の秘密分散は、装置1によって実行される。
r12 = r1 + r2 mod 2^n ・・・(45)
を計算し、
r12A + r12B = r12 mod 2^n ・・・(46)
となるr12Aとr12Bをランダムに選択する。
r12Aを装置2に送信し(nビット)、
r12Bを装置3に送信する(nビット)。
装置1は、値r12の分散値として、(r12B, r12A)を得る。
先に示したように、r3の分散情報は、各装置1、2、3で通信を行わずに生成できる。
各装置における全加算器の秘密計算は、各桁のキャリーを計算するために1回のAND(論理積)演算が必要となる。したがって、n桁の加算の場合、(n-1)ビットのキャリーの秘密計算のために、装置1、2、3間において、3*(n-1)ビットの通信が必要となる。
2n + 3 * (n-1) = 5n - 3 (ビット) ・・・(47)
でビット分解が計算できることが分かる。
riの下位(LSB(Least Significant Bit))からj桁目をri_j、
r12 = r1 + r2 mod 8 ・・・(48)
の下位からj桁目を、
r12_j
と表記する。また、
r123 = r1 + r2 + r3 mod 8 ・・・(49)
の下位からj桁目を、
r123_j
と表記する。
r12 + r3 mod 8 = (3 + 2) + 1 mod 8 = (5 + 1) mod 8 = 6 ・・・(50)
を下位桁から順に計算する手順を示す。
r123_1 = r12_1 XOR r3_1 = 1 XOR 0 XOR 1 = 0 ・・・(51)
(r12_1は、r1_1=1とr2_1=0のXOR(排他的論理和)で与えられ、r3_1は0)。
c1 = r12_1 AND r3_1 = 1 AND 1 = 1 ・・・(52)
(1桁目では下位桁からの桁上がり(キャリー)がない)
r123_2 = r12_2 XOR r3_2 XOR c1 = 0 XOR 0 XOR 1 = 1 ・・・(53)
c2 = c1 XOR (1 XOR r12_2 XOR r3_2 ) AND (r3_2 XOR c1)= 1 XOR (1 XOR 0 XOR 0) AND (0 XOR 1) = 0 ・・・(54)
r123_3 = r12_3 XOR r2_3 XOR c2 = 1 XOR 0 XOR 0 = 1 ・・・(55)
r123_1 = 0,
r123_2 = 1,
r123_3 = 1
・・・(56)
のように、1桁から3桁までの各桁をビット毎に分解した値が計算できている。
r = r1 + r2 + r3 mod p ・・・(57)
としたとき、分散情報として、例えば、
装置1が、(r1, r2)を保管し、
装置2が、(r2, r3)を保管し、
装置3が、(r3, r1)を保管する場合の例を説明している。
装置1は、分散情報として、(r2, r3)でなく、
(r2 + r3, r3)
を保有していてもよいし、
(r2 - r3, r2 + r3)
などを保有する方法であってよい。秘密計算として加算、乗算、定数を備えていれば実施可能である。
r12 = r1 + r2 mod 2^n ・・・(58)
の計算を秘密計算によって実行してから、
r12 + r3 mod 2^n ・・・(59)
に関する演算を全加算器の秘密計算によって計算してもよい。
本発明の例示的な実施形態1の構成と動作について図面を参照して説明する。第1の実施形態は、値wを
w = r1 + r2 + r3 mod 2^n ・・・(60)
を満たすr1、r2、r3を用いた(2,3)閾値型RSSで分散されている場合に、
r12 = r1 + r2 mod2^n ・・・(61)
を1つの装置が他の装置に複製秘密分散し、
r12 + r3 mod 2^n ・・・(62)
を全加算器の秘密計算を用いて実行することによって、ビット分解された分散情報を生成する。
w = r1 + r2 + r3 mod p ・・・(63)
のpとして2^nを用いた(2,3)閾値型RSSで分散された値を保管する。
r = r_1 + r_2 + r_3 mod 2^n ・・・(64)
となるr_1、r_2、r_3を用いた(2,3)閾値型RSSで分散された値が記憶されているものとする。
r_ij = r_i + r_j mod 2^n ・・・(65)
を分散して、r_ijとr_kの加算を全加算器の秘密計算で実行する。i、j、kは互いに異なる値で1、2、3のいずれかの値の組み合わせであれば(重複なし)、どのような組み合わせでaあってもよい。
各加算分散部301は、ビット分解秘密計算装置300と対応付けられた分散値保管装置100がr_iとr_jに関する情報を記憶しているかを判定する。記憶している場合、
r_ij = r_i + r_j mod 2^n ・・・(66)
を計算し、分散情報を他のビット分解秘密計算装置300の加算分散部301に送付する。その後、各装置は、r_ijの分散情報を出力する。
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値から、r_kに関する部分以外を0とみなした部分分散情報を出力する。
次に、全加算器秘密計算部303は、r_ijの分散情報と、r_kの分散情報に関して、全加算器の秘密計算を用いた加算処理
r_ij + r_k mod 2^n ・・・(67)
を実行する。そして、全加算器秘密計算部303は、加算処理結果の列(各ビット(各桁)に関して得られたビット毎(桁毎)の計算結果の分散情報を結合した値)を分解分散値保管装置200に記憶させる。
本発明の例示的な実施形態2の構成と動作について図面を参照して説明する。実施形態2は、値wを
w = r1 + r2 + r3 mod 2^n ・・・(68)
を満たすr1、r2、r3を用いた(2,3)閾値型RSSで分散されている場合に、
r12 = r1 + r2 mod 2^n ・・・ (69)
を全加算器の秘密計算によって実行し、
r12 + r3 mod 2^n ・・・ (70)
を下位ビットから全加算器の秘密計算によって計算する。なお、式(68)-(70)自体は、式(60)-(62)と同じである。
r = r_1 + r_2 + r_3 mod 2^n ・・・ (71)
となるr_1、r_2、r_3を用いた(2,3)閾値型RSSで分散された値が記憶されているものとする。
r_ij = r_i + r_j mod 2^n ・・・ (72)
を全加算器の秘密計算で実行し、
r_ij + r_k mod 2^n ・・・ (73)
を全加算器の秘密計算で実行する。i、j、kは互いに異なる値で1、2、3のいずれか値の組み合わせとする。以下の処理は、3組の分散値保管装置100、分解分散値保管装置200、ビット分解秘密計算装置300が実行する。
まず、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_iに関する部分以外を0とみなした分散情報(「部分分散情報」という)を出力する。
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_jに関する部分以外を0とみなした分散情報(「部分分散情報」という)を出力する。
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_kに関する部分以外を0とみなした分散情報(「部分分散情報」という)を出力する。
次に、全加算器秘密計算部303は、r_iの分散情報とr_jの分散情報に関して、下位ビットから順に、
r_ij = r_i + r_j mod 2^n ・・・ (74)
を全加算器の秘密計算で実行し、その結果の列をr_ijの分散情報として出力する。
次に、全加算器秘密計算部303は、r_ijの分散情報とr_kの分散情報に関して、
r_ij + r_k mod 2^n ・・・ (75)
全加算器の秘密計算で実行し、その結果の列を分解分散値保管装置200に記憶させる。
本発明の例示的な実施形態3の構成と動作について説明する。
w_x = r_{1,x} + r_{2,x} + r_{3,x} mod 2 ・・・ (76)
を満たす分散情報(ビット分解した分散情報)r_{1,x}、r_{2,x}、r_{3,x}を用いた(2,3)閾値型RSSで分散されている場合に、
r12 = r_{1,n}||…||r_{1,1} + r_{2,n}||…||r_{2,1} mod 2^n ・・・ (77)
と、
r12 = r12 + r_{3,n}||…||r_{3,1} mod2^n ・・・ (78)
を全加算器の秘密計算によって実行することによって、ビット結合を実行する場合の実施形態である。"||"は、ビット連結(concatenation)を表す。
r_x = r_{1,x} + r_{2,x} + r_{3,x} mod 2 ・・・ (79)
となるr_{1,x}、r_{2,x}、r_{3,x}を用いた(2,3)閾値型RSSで分散された値が記憶されているものとする。r_{1,x}、r_{2,x}、r_{3,x}はr_1、r_2、r_3のx桁目(i=1,..,n)とする。
r_ij = r_{i,n}||…||r_{i,1} + r_{j,n}||…||r_{j,1} mod 2^n ・・・ (80)
を全加算器の秘密計算で実行し、
r_ij + r_{k,n}||…||r_{k,1} mod 2^n ・・・ (81)
を全加算器の秘密計算で実行する。i、j、kは互いに異なる値で1、2、3のいずれか値の組み合わせとする。以下の処理は、3組の分散値保管装置100、分解分散値保管装置200、ビット結合秘密計算装置400が実行する。
まず、部分分散情報抽出部402は、分解分散値保管装置200の記憶する値から、
r_{i,n}||…||r_{i,1} ・・・ (82)
に関する部分以外を0とみなした分散情報(r_{i,n}||…||r_{i,1}の分散情報、部分分解情報ともいう)を出力する。
次に、部分分散情報抽出部402は、分解分散値保管装置200の記憶する値から、
r_{j,n}||…||r_{j,1} ・・・ (83)
に関する部分以外を0とみなした分散情報(r_{j,n}||…||r_{j,1}の分散情報、部分分解情報ともいう)を出力する。
次に、部分分散情報抽出部402は、分解分散値保管装置200の記憶する値から、
r_{k,n}||…||r_{k,1} ・・・ (84)
に関する部分以外を0とみなした分散情報(r_{k,n}||…||r_{k,1}の分散情報、部分分解情報ともいう)を出力する(例えば(i,j,k)=(1,2,3))。
次に、全加算器秘密計算部403は、
r_{i,n}||…||r_{i,1} ・・・ (85)
の部分分解分散情報と、
r_{j,n}||…||r_{j,1} ・・・ (86)
の部分分解分散情報に関して、全加算器の秘密計算を用いて、
r_ij = r_{i,n}||…||r_{i,1} + r_{j,n}||…||r_{j,1} mod 2^n ・・・ (87)
を計算し、その結果の列をr_ijの分散情報として出力する。
次に、全加算器秘密計算部403は、
r_ijの分散情報と、
r_{k,n}||…||r_{k,1} ・・・ (88)
の部分分解分散情報に関して、
全加算器の秘密計算を用いて、
r_ij + r_{k,n}||…||r_{k,1} mod 2^n ・・・ (89)
を計算し、その結果を、分散値保管装置100に記憶させる。
前述した実施形態2のビット分解処理では、r_i、r_j、r_kについて、まず2つの値を加算し、もう1つの値を加えているが、この処理は並列に実行することもできる。本発明の例示的な実施形態4は、各桁の処理を並列に実行しながらビット分解処理を行うものである。
c_{1} = d_{1} = 0 ・・・ (90)
とする。なお、c_{n + 1}とd_{n + 1}は計算しなくてもよい。
r_{i,x}は、r_iのx桁目とする。z_{x}、v_{x}、c_{x}、d_{x}は、z、c、d、vのx桁目を表す。
w_x、r_{i,x}、r_{j,x}、r_{k,x}と表記する。なお、以下の計算ではi=1,j=2,k=3とする。
r_1 = 3 = b0011、
r_2 = 10 = b1010、
r_3 = 14 = b1110
z_{1} = 1、
c_{2} = 0、
d_{2} = 0、
v_{1} = 1
・・・ (95)
z_{2} = 1、
c_{3} = 1、
d_{3} = 0、
v_{2} = 1
・・・ (96)
z_{3} = 1、
c_{4} = 0、
d_{4} = 1、
v_{3} = 0
・・・ (97)
z_{4} = 0、
v_{4} = 1、
v_{4} = 1、
v_{3} = 0、
v_{2} = 1、
v_{1} = 1
・・・ (98)
r = r_1 + r_2 + r_3 mod 2^n ・・・ (99)
となるr_1、r_2、r_3を用いた(2,3)閾値型RSSで分散された値が記憶されているものとする。以下の処理は、3組の分散値保管装置100,分解分散値保管装置200、ビット分解秘密計算装置300Bが実行する。
c_{1}、d_{1}を0とする。
まず、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_1に関する部分以外を0とみなした部分分散情報を出力する。なお、r_1のiビット目をr_{1,i}とする。
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_2に関する部分以外を0とみなした部分分散情報を出力する。なお、r_2のiビット目をr_{2,i}とする。
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_3に関する部分以外を0とみなした部分分散情報を出力する。なお、r_3のiビット目をr_{3,i}とする。
桁上がり秘密計算部304は、部分分散情報抽出部302によって生成された
r_{1,x}、
r_{2,x}、
r_{3,x}の分散情報と、
x-1桁目から生じる2ビットの桁上がりc_{x}、d_{x}に関する分散情報を入力として、
5組の入力から発生する2ビットの桁上がりc_{x + 1}とd_{x + 1}の分散情報を計算する秘密計算を実行し、繰り込み秘密計算部305に入力する。
繰り込み秘密計算部305は、
分散値保管装置100から読み出されたrの分散情報のx桁目と、
桁上がり秘密計算部304から入力されたx-1桁目の分散情報に関する2ビットの桁上がりc_{x}、d_{x}の分散情報を入力として、これら3入力の値の排他的論理和(XOR)を計算する秘密計算を実行し、その結果をx桁目のビット分解された分散情報として、分解分散値保管装置200に記憶させる。
前述した実施形態3のビット結合処理では、r_i、r_j、r_k (i,j,k = (1,2,3))について、まず2つの値を加算し、もう1つの値を加えている。全加算器の秘密計算によって下位桁から順に計算しているが、
r_ij = r_i + r_j ・・・ (100)
の計算のx桁目に関する計算が終わった段階で、
r_ij + r_k ・・・ (101)
のx桁目に関する処理を開始することができる。
(s2) r_{ijk} = r_ij + r_kのx桁目に関する処理を開始することができる。
w = b w_n||...||w_1 ・・・ (102)
(bは2進表記)
において、x = 1,...,nについて、
w_xのそれぞれが1ビットの値として分散されてとき、以下の処理を、x = 1からnまで順に計算することで、ビット結合を実行する。c_{1} = d_{1} = 0とする。なお、c_{n + 1}とd_{n + 1}は計算しなくてもよい。
v_{1,x}、v_{2,x}、v_{3,x} ・・・ (104)
として、
c_{x + 1}、d{x + 1}を以下のように計算する。
v_{1} = 1
ここでv_{1}の分散情報を構成する3つの値を、
v_{1,1} = 1、
v_{2,1} = 1、
v_{3,1} = 1
・・・ (107)
とすると、
c_{2} = 1、
d_{2} = 0
・・・ (108)
となる。
v_{2} = 0
ここで、v_{2}の分散情報を構成する3つの値を、
v_{1,2} = 1、
v_{2,2} = 1、
v_{3,2} = 0
・・・ (109)
とすると、
c_{3} = 1、
d_{3} = 0
・・・ (110)
となる。
v_{3} = 1
ここで、v_{3}の分散情報を構成する3つの値を、
v_{1,3} = 1、
v_{2,3} = 1、
v_{3,3} = 1
・・・ (111)
とすると、
c_{4} = 1、
d_{4} = 1
・・・ (112)
となる。
v_{4} = 0
ここで、v_{4}の分散情報を構成する3つの値を、
v_{1,4} = 0、
v_{2,4} = 0、
v_{3,4} = 0
・・・ (113)
とする。
b0111、
b0111、
b0101 ・・・ (114)
がビット結合した分散情報となっている。
w_x = r_{x,1} + r_{x,2} + r_{x,3} mod 2 ・・・ (115)
を満たすr_{i,1}、r_{i,2}、r_{i,3}を用いた(2,3)閾値型RSSで分散されているとする。
r_x = r_{1,x} + r_{2,x} + r_{3,x} mod 2 ・・・(116)
となるr_{1,x}、r_{2,x}、r_{3,x}を用いた(2,3)閾値型RSSで分散された値が記憶されているものとする。
まず、繰り込み秘密計算部405は、分解分散値保管装置200から読み出された(2,3)閾値型RSSのnビットの分散情報rのx桁目r_xの分散情報にc_{x}とd_{x}を繰り込む(排他的論理和により加算する)。この計算結果r_x'の分散情報を、部分分散情報抽出部302に入力し、r_x'をビット結合結果の分散情報のxビット目として分散値保管装置100に記憶させる。
r_{1,x}' + r_{2,x}' + r_{3,x}' = r_x' mod 2 ・・・ (117)
を満たすr_{1,x}'、r_{2,x}'、r_{3,x}'によって3つの装置に分散されているものとする。
次に、部分分散情報抽出部402は、r_x'の分散情報から、r_{1,x}'に関する部分以外を0とみなした分散情報(r_{1,x}'の分散情報、部分分解情報ともいう)を出力する。
次に、部分分散情報抽出部402は、r_x'の分散情報から、r_{2,x}'に関する部分以外を0とみなした分散情報(r_{2,x}'の分散情報、部分分解情報ともいう)を出力する。
次に、部分分散情報抽出部402は、r_x'の分散情報から、r_{3,x}'に関する部分以外を0とみなした分散情報(r_{3,x}'の分散情報、部分分解情報ともいう)を出力する。
次に、桁上がり秘密計算部404は、部分分散情報抽出部402によって生成された
r_{1,x}'、r_{2,x}'、r_{3,x}' ・・・ (118)
の分散情報と、
x-1桁目から生じる2ビットの桁上がり
c_{x}、d_{x} ・・・ (119)
に関する分散情報を
入力とし、5組の入力から発生する2ビットの桁上がり
c_{x + 1}、d_{x + 1} ・・・ (120)
の分散情報を計算する秘密計算を実行し、繰り込み秘密計算部405に入力する。
2のべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
ビット分解秘密計算装置と、
を備え、
前記ビット分解秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
w= r1+r2+r3 mod 2^n (mod は剰余演算、^はべき乗演算)を満たすr1、r2、3を用い、
前記分散情報のうち2つの値について、法2^n上の和をとり、前記和を(2,3)閾値型RSSによって分散する加算分散部と、
前記加算分散部による前記2つの値の和を分散した値と、前記加算分散部が用いた前記2つの値以外の残りの1つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部と、
を備える、ことを特徴とする秘密計算装置。
前記ビット分解秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値のうち、前記1つを除いて0とし、前記1つの値の分散情報を生成する部分分散情報抽出部を備え、
前記全加算器秘密計算部は、
前記加算分散部で生成され配布された前記2つの値の和の分散情報と、
前記部分分散情報抽出部で生成した前記1つの値の分散情報について、全加算器の秘密計算を用いた加算処理を実行し、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする付記1に記載の秘密計算装置。
2のnべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
ビット分解秘密計算装置と、
を備え、
前記ビット分解秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関してw= r1+r2+r3 mod 2^nを満たすr1、r2、r3を用い、
r12 = r1+r2 mod 2^n (mod は剰余演算、^はべき乗演算)と、
r123 = r12 + r3 mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部を備える、ことを特徴とする秘密計算装置。
前記ビット分解秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値の各々について、各1つ以外を0とする分散情報をそれぞれ生成する部分分散情報抽出部を備え、
前記全加算器秘密計算部は、
前記部分分散情報抽出部で生成した3つの分散情報の2つの値に関して、下位桁から順に全加算器の秘密計算を実行し、結果の列を前記2つの値の分散情報とし、
前記2つの値の和の分散情報と、前記1つの値の分散情報について、全加算器の秘密計算を用いた、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする付記3に記載の秘密計算装置。
2を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値の列を保管する分解分散値保管装置と、
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
ビット結合秘密計算装置と、
を備え、
前記ビット結合秘密計算装置は、
前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列(nビット)のうち、第xビット(x=1,...,n)の値w_xに関して、
w_x= r_{1,x}+r_{2,x}+r_{3,x} mod 2を満たすr_{1,x}、r_{2,x}、r{3,x}を用い、
r12 =r_{1,n}||…||r_{1,1}+ r_{2,n}||…||r_{2,1} mod 2^n (mod は剰余演算、^はべき乗演算、||はビット連結、r_{1,x}、r_{2,x}、r{3,x}は、r1、r2、r3の第xビットを表す)と
r123 = r12 + r_{3,n}||…||r_{3,1} mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分散値保管装置に記憶する全加算器秘密計算部を備える、ことを特徴とする秘密計算装置。
前記ビット結合秘密計算装置は、
前記分解分散値保管装置の記憶する前記値w_xから、
前記r_{1,n}||…||r_{1,1}に関する部分以外を0とみなした分散情報、
前記r_{2,n}||…||r_{2,1}に関する部分以外を0とみなした分散情報、
前記r_{3,n}||…||r_{3,1}に関する部分以外を0とみなした分散情報、
を、それぞれ、
前記r_{1,n}||…||r_{1,1}、
前記r_{2,n}||…||r_{2,1}、
前記r_{3,n}||…||r_{3,1}の分散情報として出力する部分分散情報抽出部を備える、ことを特徴とする付記5に記載の秘密計算装置。
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
ビット分解秘密計算装置と、
を備え、
前記ビット分解秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、nビットの値wに関して、
w= r_1+r_2+r_3 mod 2^nを満たすr1、r2、r3を用い、
i=1,2,3について、
r_{i,x}をr_iのxビット目とし、
1桁目の桁上がり入力c_{1}、d_{1}を0とし、
xを下位桁からの桁数として、x=1,...,n について
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}
についてx桁のビット毎の加算した際の2ビットの桁上がりとして、
c_{x+1}、d_{x+1}を秘密計算する桁上がり秘密計算部と、
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}の排他的論理和に基づく分散情報を、xビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する繰り込み秘密計算部を備える、ことを特徴とする秘密計算装置。
前記桁上がり秘密計算部は、
c_{x+1}を [(r_{1,x} XOR r_{2,x} XOR 1) AND (r_{1,x} XOR r_{3,x})] XOR r_{3,x}
の秘密計算によって計算し、
d_{x+1}を [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR z_{x})] XOR z_{x}
の秘密計算によって計算する、ことを特徴とする付記7に記載の秘密計算装置。
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
ビット結合秘密計算装置と、
を備え、
前記ビット結合秘密計算装置は、
前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列(nビット)として、1ビット値w_xに関して、
w_x= r{1,x}+r{2,x}+r{3,x} mod 2を満たすr_{1,x}、r_{2,x}、r{3,x}を用い、
c_{1},d_{1}を0とし、
xを下位桁からの桁数として、x=1,..,nについて、
w_xとc_{x}とd_{x}の排他的論理和をv_{x}とし、
v_{x}の分散情報を構成する(2,3)閾値型RSSの分散情報をv_{1,x}、v_{2,x}、v_{3,x}として、
v_{x}と、v_{1,x}、v_{2,x}、v_{3,x}、c_{x}、d_{x}について、ビット毎の加算した際の2ビットの桁上がりであるc_{x+1}、d_{x+1}を計算する秘密計算を実行し、v_{x}の分散情報を、x桁目の分散情報として前記分散値保管装置に記憶する桁上がり秘密計算部と、を備えることを特徴とする秘密計算装置。
前記桁上がり秘密計算部は、
c_{x+1}を [(v_{1,x} XOR v_{2,x} XOR 1) AND (v_{1,x} XOR v_{3,x})] XOR v_{3,x}
の秘密計算によって計算し、
d_{x+1}を [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR v_{x})] XOR v_{x}の秘密計算によって計算する、ことを特徴とする付記9に記載の秘密計算装置。
前記ビット結合秘密計算装置は、
前記分解分散値保管装置から読み出された(2,3)閾値型RSSのrの分散情報のx桁目r_xと、前記桁上がり秘密計算部から入力された前記x桁目の分散情報に関する2ビットの桁上がりの分散情報を入力とし、これら3値の排他的論理和を計算する秘密計算を実行し、計算結果r_x'をx桁目の分散情報として分散値保管装置に記憶する繰り込み秘密計算部と、
前記r_x'の分散情報から、i=1,2,3についてr_{i,x}'に関する部分以外を0とみなした分散情報を出力する部分分散情報抽出部と、
を備え、
前記桁上がり秘密計算部は、前記部分分散情報抽出部によって生成された(2,3)閾値型RSSの分散情報の3組のx桁目と、x-1桁目から生じる2ビットの桁上がりに関する分散情報を入力として、5組の入力から発生する2ビットの桁上がりを計算する秘密計算を実行し、前記繰り込み秘密計算部へ供給する、ことを特徴とする付記9又は10に記載の秘密計算装置。
付記1乃至11のいずれかに記載の秘密計算装置を3組備えた秘密計算装システム。
2のべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、を備えた秘密計算装置を3組で秘密計算システムを構成し、
前記秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
w= r1+r2+r3 mod 2^n (mod は剰余演算、^はべき乗演算)を満たすr1、r2、3を用い、
前記分散情報のうち2つの値について、法2^n上の和をとり、前記和を(2,3)閾値型RSSによって分散し、
前記分散情報のうち前記2つの値の和を分散した値と、前記2つの値以外の残りの1つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し計算結果を、ビット分解分散値として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。
前記秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値のうち、前記1つを除いて0とし、前記1つの値の分散情報を生成し、
前記2つの値の和の分散情報と、生成した前記1つの値の分散情報について、全加算器の秘密計算を用いた加算処理を実行し、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする付記13に記載の秘密計算方法。
2のべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、を備えた秘密計算装置を3組で秘密計算システムを構成し、
前記秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
w= r1+r2+r3 mod 2^n
を満たすr1、r2、r3を用い、
r12 = r1+r2 mod 2^n (mod は剰余演算、^はべき乗演算)と、
r123 = r12 + r3 mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する、ビット分解分散値として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。
前記秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値の各々について、各1つ以外を0とする分散情報をそれぞれ生成し、
前記生成した3つの分散情報の2つの値に関して、下位桁から順に全加算器の秘密計算を実行し、結果の列を前記2つの値の分散情報とし、
前記2つの値の和の分散情報と、前記1つの値の分散情報について、全加算器の秘密計算を用いた、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする付記15に記載の秘密計算方法。
前記秘密計算装置は、前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列(nビット)のうち、第xビット(x=1,...,n)の値w_xに関して、
w_x= r_{1,x}+r_{2,x}+r_{3,x} mod 2を満たすr_{1,x}、r_{2,x}、r{3,x}を用い、
r12 =r_{1,n}||…||r_{1,1}+ r_{2,n}||…||r_{2,1} mod 2^n (mod は剰余演算、^はべき乗演算、||はビット連結、r_{1,x}、r_{2,x}、r{3,x}は、r1、r2、r3の第xビットを表す)と
r123 = r12 + r_{3,n}||…||r_{3,1} mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分散値保管装置に記憶する、ことを特徴とする付記16に記載の秘密計算方法。
前記秘密計算装置は、
前記分解分散値保管装置の記憶する前記値w_xから、
前記r_{1,n}||…||r_{1,1}に関する部分以外を0とみなした分散情報、
前記r_{2,n}||…||r_{2,1}に関する部分以外を0とみなした分散情報、
前記r_{3,n}||…||r_{3,1}に関する部分以外を0とみなした分散情報、
を、それぞれ、
前記r_{1,n}||…||r_{1,1}、
前記r_{2,n}||…||r_{2,1}、
前記r_{3,n}||…||r_{3,1}の分散情報として出力する部分分散情報抽出部を備える、ことを特徴とする付記17に記載の秘密計算方法。
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、を備えた秘密計算装置を3組で秘密計算システムを構成し、
前記秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、nビットの値wに関して、
w= r_1+r_2+r_3 mod 2^nを満たすr1、r2、r3を用い、
i=1,2,3について、
r_{i,x}をr_iのxビット目とし、
1桁目の桁上がり入力c_{1}、d_{1}を0とし、
xを下位桁からの桁数として、x=1,...,n について
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}
についてx桁のビット毎の加算した際の2ビットの桁上がりとして、
c_{x+1}、d_{x+1}を秘密計算し、
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}の排他的論理和に基づく分散情報を、xビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。
前記秘密計算装置と、
c_{x+1}を [(r_{1,x} XOR r_{2,x} XOR 1) AND (r_{1,x} XOR r_{3,x})] XOR r_{3,x}
の秘密計算によって計算し、
d_{x+1}を [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR z_{x})] XOR z_{x}
の秘密計算によって計算する、ことを特徴とする付記19に記載の秘密計算方法。
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、を備えた秘密計算装置が3組で秘密計算システムを構成し、
前記秘密計算装置は、
前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列として、1ビット値w_xに関して、
w_x= r{1,x}+r{2,x}+r{3,x} mod 2
を満たすr_{1,x}、r_{2,x}、r{3,x}を用い、
c_{1},d_{1}を0とし、
x=1,..,nについて、
w_xとc_{x}とd_{x}の排他的論理和をv_{x}とし、
v_{x}の分散情報を構成する(2,3)閾値型RSSの分散情報をv_{1,x}、v_{2,x}、v_{3,x}として、
v_{x}と、v_{1,x}、v_{2,x}、v_{3,x}、c_{x}、d_{x}について、ビット毎の加算した際の2ビットの桁上がりであるc_{x+1}、d_{x+1}を計算する秘密計算を実行し、v_{x}の分散情報を、x桁目の分散情報として前記分散値保管装置に記憶することを特徴とする秘密計算方法。
前記秘密計算装置は、
c_{x+1}を [(v_{1,x} XOR v_{2,x} XOR 1) AND (v_{1,x} XOR v_{3,x})] XOR v_{3,x}
の秘密計算によって計算し、
d_{x+1}を [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR v_{x})] XOR v_{x}の秘密計算によって計算する、ことを特徴とする付記21に記載の秘密計算方法。
前記秘密計算装置は、
前記分解分散値保管装置から読み出された(2,3)閾値型RSSのrの分散情報のx桁目r_xと、前記桁上がり秘密計算部から入力された前記x桁目の分散情報に関する2ビットの桁上がりの分散情報を入力とし、これら3値の排他的論理和を計算する秘密計算を実行し、計算結果r_x'をx桁目の分散情報として前記分散値保管装置に記憶する繰り込み秘密計算処理と、
前記r_x'の分散情報から、i=1,2,3についてr_{i,x}'に関する部分以外を0とみなした分散情報を出力する部分分散情報抽出処理を実行し、
前記生成された(2,3)閾値型RSSの分散情報の3組のx桁目と、x-1桁目から生じる2ビットの桁上がりに関する分散情報を入力として、5組の入力から発生する2ビットの桁上がりを計算する秘密計算を実行し、前記繰り込み秘密計算処理に供給する、ことを特徴とする付記21又は22に記載の秘密計算方法。
2のべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
を備えたコンピュータ装置に
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
w= r1+r2+r3 mod 2^n (mod は剰余演算、^はべき乗演算)を満たすr1、r2、3を用い、
前記分散情報のうち2つの値について、法2^n上の和をとり、前記和を(2,3)閾値型RSSによって分散する処理(加算分散処理)と、
前記加算分散処理による前記2つの値の和を分散した値と、前記加算分散処理が用いた前記2つの値以外の残りの1つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し計算結果を、ビット分解分散値として、前記分解分散値保管装置に記憶する処理(全加算器秘密計算処理)を実行させるプログラム。
(2,3)閾値型RSSの前記分散情報を構成する3つの値のうち、前記1つを除いて0とし、前記1つの値の分散情報を生成する部分分散情報抽出処理を、
前記生成され配布された前記2つの値の和の分散情報と、
前記部分分散情報抽出処理で生成した前記1つの値の分散情報について、全加算器の秘密計算を用いた加算処理を実行し、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する処理(前記全加算器秘密計算処理)と、を前記コンピュータ装置に実行させる、付記24に記載のプログラム。
2のnべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
を備えたコンピュータ装置に
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
w= r1+r2+r3 mod 2^n
を満たすr1、r2、r3を用い、
r12 = r1+r2 mod 2^n (mod は剰余演算、^はべき乗演算)と、
r123 = r12 + r3 mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する処理(全加算器秘密計算処理)を実行させるプログラム。
(2,3)閾値型RSSの前記分散情報を構成する3つの値の各々について、各1つ以外を0とする分散情報をそれぞれ生成する部分分散情報抽出処理と、
前記部分分散情報抽出処理で生成した3つの分散情報の2つの値に関して、下位桁から順に全加算器の秘密計算を実行し、結果の列を前記2つの値の分散情報とし、
前記2つの値の和の分散情報と、前記1つの値の分散情報について、全加算器の秘密計算を用いた、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する処理(前記全加算器秘密計算処理)と、を前記コンピュータ装置に実行させる付記26に記載のプログラム。
2を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値の列を保管する分解分散値保管装置と
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
を備えたコンピュータ装置に
前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列(nビット)のうち、第xビット(x=1,...,n)の値w_xに関して、
w_x= r_{1,x}+r_{2,x}+r_{3,x} mod 2を満たすr_{1,x}、r_{2,x}、r{3,x}を用い、
r12 =r_{1,n}||…||r_{1,1}+ r_{2,n}||…||r_{2,1} mod 2^n (mod は剰余演算、^はべき乗演算、||はビット連結、r_{1,x}、r_{2,x}、r{3,x}は、r1、r2、r3の第xビットを表す)と
r123 = r12 + r_{3,n}||…||r_{3,1} mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分散値保管装置に記憶する処理(全加算器秘密計算処理)を実行させるプログラム。
前記分解分散値保管装置の記憶する前記値w_xから、
前記r_{1,n}||…||r_{1,1}に関する部分以外を0とみなした分散情報、
前記r_{2,n}||…||r_{2,1}に関する部分以外を0とみなした分散情報、
前記r_{3,n}||…||r_{3,1}に関する部分以外を0とみなした分散情報、
を、それぞれ、
前記r_{1,n}||…||r_{1,1}、
前記r_{2,n}||…||r_{2,1}、
前記r_{3,n}||…||r_{3,1}の分散情報として出力する部分分散情報抽出処理を前記コンピュータ装置に実行させる付記28に記載のプログラム。
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
を備えたコンピュータ装置に
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、nビットの値wに関して、
w= r_1+r_2+r_3 mod 2^nを満たすr1、r2、r3を用い、
i=1,2,3について、
r_{i,x}をr_iのxビット目とし、
1桁目の桁上がり入力c_{1}、d_{1}を0とし、
xを下位桁からの桁数として、x=1,...,n について
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}
についてx桁のビット毎の加算した際の2ビットの桁上がりとして、
c_{x+1}、d_{x+1}を秘密計算する桁上がり秘密計算処理と、
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}の排他的論理和に基づく分散情報を、xビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する繰り込み秘密計算処理と、を実行させるプログラム。
前記桁上がり秘密計算処理は、
c_{x+1}を [(r_{1,x} XOR r_{2,x} XOR 1) AND (r_{1,x} XOR r_{3,x})] XOR r_{3,x}
の秘密計算によって計算し、
d_{x+1}を [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR z_{x})] XOR z_{x}
の秘密計算によって計算する、ことを特徴とする付記29に記載のプログラム。
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
を備えたコンピュータ装置に
前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列nビット)として、1ビット値w_xに関して、
w_x= r{1,x}+r{2,x}+r{3,x} mod 2
を満たすr_{1,x}、r_{2,x}、r{3,x}を用い、
c_{1},d_{1}を0とし、
x=1,..,nについて、
w_xとc_{x}とd_{x}の排他的論理和をv_{x}とし、
v_{x}の分散情報を構成する(2,3)閾値型RSSの分散情報をv_{1,x}、v_{2,x}、v_{3,x}として、
v_{x}と、v_{1,x}、v_{2,x}、v_{3,x}、c_{x}、d_{x}について、ビット毎の加算した際の2ビットの桁上がりであるc_{x+1}、d_{x+1}を計算する秘密計算を実行し、v_{x}の分散情報を、x桁目の分散情報として前記分散値保管装置に記憶する桁上がり秘密計算処理を実行させるプログラム。
前記桁上がり秘密計算処理は、
c_{x+1}を [(v_{1,x} XOR v_{2,x} XOR 1) AND (v_{1,x} XOR v_{3,x})] XOR v_{3,x}
の秘密計算によって計算し、
d_{x+1}を [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR v_{x})] XOR v_{x}の秘密計算によって計算する、付記31に記載のプログラム。
前記分解分散値保管装置から読み出された(2,3)閾値型RSSのrの分散情報のx桁目r_xと、前記桁上がり秘密計算部から入力された前記x桁目の分散情報に関する2ビットの桁上がりの分散情報を入力とし、これら3値の排他的論理和を計算する秘密計算を実行し、計算結果r_x'をx桁目の分散情報として分散値保管装置に記憶する繰り込み秘密計算処理と、
前記r_x'の分散情報から、i=1,2,3についてr_{i,x}'に関する部分以外を0とみなした分散情報を出力する部分分散情報抽出処理と、
前記部分分散情報抽出処理によって生成された(2,3)閾値型RSSの分散情報の3組のx桁目と、x-1桁目から生じる2ビットの桁上がりに関する分散情報を入力として、5組の入力から発生する2ビットの桁上がりを計算する秘密計算を実行し、前記繰り込み秘密計算部へ供給する前記桁上がり秘密計算処理と、
を実行させる付記31又は32に記載のプログラム。
20、20A 秘密計算装置(ビット結合を行う秘密計算装置)
100 分散値保管装置
101 第1分散値保管部
102 第2分散値保管部
200 分解分散値保管装置
201 第1分解分散値保管部
202 第2分解分散値保管部
300、300A、300B ビット分解秘密計算装置
301 加算分散部
302 部分分散情報抽出部
303 全加算器秘密計算部
304 桁上がり秘密計算部
305 繰りこみ秘密計算部
400、400A ビット結合秘密計算装置
402 部分分散情報抽出部
403 全加算器秘密計算部
404 桁上がり秘密計算部
405 繰りこみ秘密計算部
500 装置
501 プロセッサ
502 記憶装置
503 表示装置
504 通信インタフェース
Claims (18)
- 2のnべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
ビット分解秘密計算装置と、
を備え、
前記ビット分解秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
w = r1 + r2 + r3 mod 2^n (mod は剰余演算、nは2以上の整数、^はべき乗演算)を満たすr1、r2、r3を用い、
前記分散情報のうち2つの値について、法2^n上の和をとり、前記和を(2,3)閾値型RSSによって分散する加算分散部と、
前記加算分散部による前記2つの値の和を分散した値と、前記加算分散部が用いた前記2つの値以外の残りの1つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部と、
を備える、ことを特徴とする秘密計算装置。 - 前記ビット分解秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値のうち、前記1つを除いて0として、前記1つの値の分散情報を生成する部分分散情報抽出部を備え、
前記全加算器秘密計算部は、
前記加算分散部で生成され配布された前記2つの値の和の分散情報と、
前記部分分散情報抽出部で生成した前記1つの値の分散情報について、全加算器の秘密計算を用いた加算処理を実行し、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする請求項1に記載の秘密計算装置。 - 2のnべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
ビット分解秘密計算装置と、
を備え、
前記ビット分解秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
w= r1+r2+r3 mod 2^n (mod は剰余演算、nは2以上の整数、^はべき乗演算)
を満たすr1、r2、r3を用い、
r12 = r1+r2 mod 2^n と、
r123 = r12 + r3 mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部を備える、ことを特徴とする秘密計算装置。 - 前記ビット分解秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値の各々について、各1つ以外を0とする分散情報をそれぞれ生成する部分分散情報抽出部を備え、
前記全加算器秘密計算部は、
前記部分分散情報抽出部で生成した3つの分散情報の2つの値に関して、下位桁から順に全加算器の秘密計算を実行し、結果の列を前記2つの値の分散情報とし、
前記2つの値の和の分散情報と、前記1つの値の分散情報について、全加算器の秘密計算を用いた、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする請求項3に記載の秘密計算装置。 - 2を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値の列を保管する分解分散値保管装置と、
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
ビット結合秘密計算装置と、
を備え、
前記ビット結合秘密計算装置は、
前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列(nビット:nは2以上の整数)のうち、下位桁からの桁数である第xビット(x=1,...,n)の値w_xに関して、
w_x= r_{1,x}+r_{2,x}+r_{3,x} mod 2
を満たすr_{1,x}、r_{2,x}、r_{3,x}を用い、
r12 = r_{1,n}||…||r_{1,1} + r_{2,n}||…||r_{2,1} mod 2^n
(mod は剰余演算、^はべき乗演算、||はビット連結、r_{1,x}、r_{2,x}、r_{3,x}は、r1、r2、r3のxビット目を表す)と
r123 = r12 + r_{3,n}||…||r_{3,1} mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分散値保管装置に記憶する全加算器秘密計算部を備える、ことを特徴とする秘密計算装置。 - 前記ビット結合秘密計算装置は、
前記分解分散値保管装置の記憶する前記値w_xから、
前記r_{1,n}||…||r_{1,1}に関する部分以外を0とみなした分散情報、
前記r_{2,n}||…||r_{2,1}に関する部分以外を0とみなした分散情報、及び、
前記r_{3,n}||…||r_{3,1}に関する部分以外を0とみなした分散情報、
を、それぞれ、
前記r_{1,n}||…||r_{1,1}、
前記r_{2,n}||…||r_{2,1}、及び、
前記r_{3,n}||…||r_{3,1}の分散情報として出力する部分分散情報抽出部を備える、ことを特徴とする請求項5に記載の秘密計算装置。 - 2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
ビット分解秘密計算装置と、
を備え、
前記ビット分解秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、nビットの値wに関して、
w = r_1 + r_2 + r_3 mod 2^n (mod は剰余演算、nは2以上の整数、^はべき乗演算)
を満たすr_1、r_2、r_3を用い、
i=1,2,3について、r_{i,x}をr_iのxビット目とし、
1桁目の桁上がり入力c_{1}、d_{1}を0とし、
xを下位桁からの桁数として、x=1,...,n について
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}
についてx桁のビット毎の加算した際の2ビットの桁上がりとして、
c_{x+1}、d_{x+1}を秘密計算する桁上がり秘密計算部と、
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}の排他的論理和に基づく分散情報を、xビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する繰り込み秘密計算部と、
を備える、ことを特徴とする秘密計算装置。 - 前記桁上がり秘密計算部は、
c_{x+1}を [(r_{1,x} XOR r_{2,x} XOR 1) AND (r_{1,x} XOR r_{3,x})] XOR r_{3,x}
の秘密計算によって計算し、
z_{x} = r_{1,x} XOR r_{2,x} XOR r_{3,x} として、
d_{x+1}を [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR z_{x})] XOR z_{x}
の秘密計算によって計算する、ことを特徴とする請求項7に記載の秘密計算装置。 - 2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、
ビット結合秘密計算装置と、
を備え、
前記ビット結合秘密計算装置は、
前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列として、1ビット値w_xに関して、
w_x= r_{1,x}+r_{2,x}+r_{3,x} mod 2を満たすr_{1,x}、r_{2,x}、r_{3,x}を用い、
c_{1},d_{1}を0とし、
xを下位桁からの桁数として、x=1,..,nについて、
w_xとc_{x}とd_{x}の排他的論理和をv_{x}とし、
v_{x}の分散情報を構成する(2,3)閾値型RSSの分散情報をv_{1,x}、v_{2,x}、v_{3,x}として、
v_{x}と、v_{1,x}、v_{2,x}、v_{3,x}、c_{x}、d_{x}について、ビット毎の加算した際の2ビットの桁上がりであるc_{x+1}、d_{x+1}を計算する秘密計算を実行し、v_{x}の分散情報を、x桁目の分散情報として、前記分散値保管装置に記憶する桁上がり秘密計算部を備えることを特徴とする秘密計算装置。 - 前記桁上がり秘密計算部は、
c_{x+1}を [(v_{1,x} XOR v_{2,x} XOR 1) AND (v_{1,x} XOR v_{3,x})] XOR v_{3,x}
の秘密計算によって計算し、
d_{x+1}を [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR v_{x})] XOR v_{x}
の秘密計算によって計算する、ことを特徴とする請求項9に記載の秘密計算装置。 - 前記ビット結合秘密計算装置は、
前記分解分散値保管装置から読み出された(2,3)閾値型RSSのrの分散情報のx桁目r_xと、前記桁上がり秘密計算部から入力された前記x桁目の分散情報に関する2ビットの桁上がりの分散情報を入力とし、これら3値の排他的論理和を計算する秘密計算を実行し、計算結果r_x'をx桁目の分散情報として前記分散値保管装置に記憶する繰り込み秘密計算部と、
前記r_x'の分散情報r_{1,x}' 、r_{2,x}' 、 r_{3,x}' (r_{1,x}' + r_{2,x}' + r_{3,x}' = r_x' mod 2)から、i=1,2,3についてr_{i,x}'に関する部分以外を0とみなした分散情報をそれぞれ出力する部分分散情報抽出部と、
を備え、
前記桁上がり秘密計算部は、前記部分分散情報抽出部によって生成された(2,3)閾値型RSSの分散情報の3組のx桁目と、x-1桁目から生じる2ビットの桁上がりに関する分散情報を入力として、5組の入力から発生する2ビットの桁上がりを計算する秘密計算を実行し、前記繰り込み秘密計算部へ供給する、ことを特徴とする請求項9又は10に記載の秘密計算装置。 - 請求項1乃至11のいずれか1項に記載の秘密計算装置を3組備えた秘密計算システム。
- 2のべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、を備えた秘密計算装置が3組で秘密計算システムを構成し、
前記秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
w= r1+r2+r3 mod 2^n (mod は剰余演算、^はべき乗演算)を満たすr1、r2、r3を用い、
前記分散情報のうち2つの値について、法2^n上の和をとり、前記和を(2,3)閾値型RSSによって分散し、
前記2つの値の前記和を分散した値と、前記2つの値以外の残りの1つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し計算結果を、ビット分解分散値として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。 - 2のべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、を備えた秘密計算装置が3組で秘密計算システムを構成し、
前記秘密計算装置は、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、nビットの値wに関して、
w= r_1+r_2+r_3 mod 2^nを満たすr_1、r_2、r_3を用い、
i=1,2,3について、r_{i,x}をr_xのjビット目とし、
1桁目の桁上がり入力c_{1}、d_{1}を0とし、
xを下位桁からの桁数として、x=1,...,n について
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}
についてx桁のビット毎の加算した際の2ビットの桁上がりとして、
c_{x+1}、d_{x+1}を秘密計算し、
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}の排他的論理和に基づく分散情報を、xビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。 - 2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、を備えた秘密計算装置が3組で秘密計算システムを構成し、
前記秘密計算装置は、
前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列(nビット)として、1ビット値w_xに関して、
w_x= r_{1,x}+r_{2,x}+r_{3,x} mod 2
を満たすr_{1,x}、r_{2,x}、r_{3,x}を用い、
c_{1},d_{1}を0とし、
xを下位桁からの桁数として、x=1,..,nについて、
w_xとc_{x}とd_{x}の排他的論理和をv_{x}とし、
v_{x}の分散情報を構成する(2,3)閾値型RSSの分散情報をv_{1,x}、v_{2,x}、v_{3,x}として、
v_{x}と、v_{1,x}、v_{2,x}、v_{3,x}、c_{x}、d_{x}について、ビット毎の加算した際の2ビットの桁上がりであるc_{x+1}、d_{x+1}を計算する秘密計算を実行し、v_{x}の分散情報を、x桁目の分散情報として前記分散値保管装置に記憶する、ことを特徴とする秘密計算方法。 - 2のべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
を備えたコンピュータ装置に、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
w= r1+r2+r3 mod 2^n (mod は剰余演算、^はべき乗演算)を満たすr1、r2、r3を用い、
前記分散情報のうち2つの値について、法2^n上の和をとり、前記和を(2,3)閾値型RSSによって分散する処理と、
前記2つの値の前記和を分散した値と、前記2つの値以外の残りの1つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し計算結果を、ビット分解分散値として、前記分解分散値保管装置に記憶する処理を実行させるプログラム。 - 2のべき乗を法とする(2,3)閾値型RSS(Replicated Secret Sharing:複製秘密分散)で分散された値を保管する分散値保管装置と、
2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、を備えたコンピュータ装置に、
前記分散値保管装置が記憶する(2,3)閾値型RSSの分散情報として、nビットの値wに関して、
w= r_1+r_2+r_3 mod 2^n
を満たすr_1、r_2、r_3を用い、
i=1,2,3について、r_{i,x}をr_iのxビット目とし、
1桁目の桁上がり入力c_{1}、d_{1}を0とし、
xを下位桁からの桁数として、x=1,...,n について
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}
についてx桁のビット毎の加算した際の2ビットの桁上がりとして、
c_{x+1}、d_{x+1}を秘密計算する処理と、
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}の排他的論理和に基づく分散情報を、xビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する処理と、
を実行させるプログラム。 - 2を法とする(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置と、
2のnべき乗を法とする(2,3)閾値型RSSで分散された値を保管する分散値保管装置と、を備えたコンピュータ装置に、
前記分解分散値保管装置が記憶するn個の(2,3)閾値型RSSの分散情報の列(nビット)として、1ビット値w_xに関して、
w_x= r_{1,x}+r_{2,x}+r_{3,x} mod 2
を満たすr_{1,x}、r_{2,x}、r_{3,x}を用い、
c_{1},d_{1}を0とし、
xを下位桁からの桁数として、x=1,..,nについて、
w_xとc_{x}とd_{x}の排他的論理和をv_{x}とし、
v_{x}の分散情報を構成する(2,3)閾値型RSSの分散情報をv_{1,x}、v_{2,x}、v_{3,x}として、
v_{x}と、v_{1,x}、v_{2,x}、v_{3,x}、c_{x}、d_{x}について、ビット毎の加算した際の2ビットの桁上がりであるc_{x+1}、d_{x+1}を計算する秘密計算を実行し、
v_{x}の分散情報をx桁目の分散情報として、前記分散値保管装置に記憶する処理を、実行させるプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2017/039450 WO2019087317A1 (ja) | 2017-10-31 | 2017-10-31 | 秘密計算装置、システム、方法、プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2019087317A1 JPWO2019087317A1 (ja) | 2020-11-12 |
JP7031682B2 true JP7031682B2 (ja) | 2022-03-08 |
Family
ID=66333007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019550064A Active JP7031682B2 (ja) | 2017-10-31 | 2017-10-31 | 秘密計算装置、システム、方法、プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11381390B2 (ja) |
JP (1) | JP7031682B2 (ja) |
WO (1) | WO2019087317A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042358B2 (en) * | 2016-08-18 | 2021-06-22 | Nec Corporation | Secure computation system, secure computation method, secure computation apparatus, distribution information generation apparatus, and methods and programs therefor |
FR3094522B1 (fr) * | 2019-03-29 | 2021-11-19 | St Microelectronics Rousset | Protection d’un calcul itératif |
WO2021106143A1 (ja) * | 2019-11-28 | 2021-06-03 | 日本電気株式会社 | シャッフルシステム、シャッフル方法及びプログラム |
CN114981862A (zh) * | 2020-01-20 | 2022-08-30 | 日本电信电话株式会社 | 秘密指数函数计算系统、秘密指数函数计算方法、秘密计算装置以及程序 |
AU2020472724B2 (en) * | 2020-10-16 | 2024-03-28 | Nippon Telegraph And Telephone Corporation | Secret modulus conversion system, distributed processing apparatus, secret modulus conversion method, program |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015053185A1 (ja) | 2013-10-10 | 2015-04-16 | 日本電信電話株式会社 | 秘密商転移装置、秘密ビット分解装置、秘密モジュラス変換装置、秘密商転移方法、秘密ビット分解方法、秘密モジュラス変換方法、プログラム |
WO2015107952A1 (ja) | 2014-01-17 | 2015-07-23 | 日本電信電話株式会社 | 秘密計算方法、秘密計算システム、ランダム置換装置及びプログラム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7359507B2 (en) * | 2000-03-10 | 2008-04-15 | Rsa Security Inc. | Server-assisted regeneration of a strong secret from a weak secret |
WO2005076518A1 (en) * | 2004-02-10 | 2005-08-18 | Ntt Communications Corporation | Secret information management scheme based on secret sharing scheme |
JP5864004B1 (ja) | 2015-03-18 | 2016-02-17 | 日本電信電話株式会社 | 分散値変換システム、分散値変換装置、分散値変換方法、およびプログラム |
WO2017038761A1 (ja) | 2015-08-31 | 2017-03-09 | 日本電気株式会社 | 秘密計算システム、秘密計算装置、および、秘密計算方法 |
US11115196B1 (en) * | 2015-12-08 | 2021-09-07 | EMC IP Holding Company LLC | Methods and apparatus for secret sharing with verifiable reconstruction type |
US10516528B2 (en) * | 2016-08-31 | 2019-12-24 | Nicira, Inc. | System and method for managing secret information using virtualization |
-
2017
- 2017-10-31 WO PCT/JP2017/039450 patent/WO2019087317A1/ja active Application Filing
- 2017-10-31 US US16/759,876 patent/US11381390B2/en active Active
- 2017-10-31 JP JP2019550064A patent/JP7031682B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015053185A1 (ja) | 2013-10-10 | 2015-04-16 | 日本電信電話株式会社 | 秘密商転移装置、秘密ビット分解装置、秘密モジュラス変換装置、秘密商転移方法、秘密ビット分解方法、秘密モジュラス変換方法、プログラム |
WO2015107952A1 (ja) | 2014-01-17 | 2015-07-23 | 日本電信電話株式会社 | 秘密計算方法、秘密計算システム、ランダム置換装置及びプログラム |
Non-Patent Citations (1)
Title |
---|
加藤 遼 ほか,定数ラウンド(k,n)秘匿モジュロ変換プロトコルの提案,コンピュータセキュリティシンポジウム2011(CSS2011)論文集,日本,情報処理学会,2011年10月12日,pp. 427-431 |
Also Published As
Publication number | Publication date |
---|---|
US20200287711A1 (en) | 2020-09-10 |
JPWO2019087317A1 (ja) | 2020-11-12 |
US11381390B2 (en) | 2022-07-05 |
WO2019087317A1 (ja) | 2019-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7031682B2 (ja) | 秘密計算装置、システム、方法、プログラム | |
JP5957120B1 (ja) | 秘密分散方法、秘密分散システム、分散装置、およびプログラム | |
JP4559505B2 (ja) | ランダム系列の反復周期の拡張 | |
JP6095792B2 (ja) | 秘密ビット分解装置、秘密モジュラス変換装置、秘密ビット分解方法、秘密モジュラス変換方法、プログラム | |
KR20160132943A (ko) | 단열 양자 계산을 통한 디지털 로직 제한 문제 해결 | |
JP6844897B2 (ja) | ビット分解秘密計算装置、ビット結合秘密計算装置、方法およびプログラム | |
JP5872085B1 (ja) | 分散値変換システム、分散値変換装置、分散値変換方法、およびプログラム | |
WO2016148281A1 (ja) | 秘匿文字列計算システム及び方法と装置並びにプログラム | |
JP6605746B2 (ja) | 秘密等結合システム、秘密等結合装置、秘密等結合方法、プログラム | |
WO2020152831A1 (ja) | 情報処理装置、秘密計算方法及びプログラム | |
JP2023063430A (ja) | 暗号システム、鍵生成装置、暗号化装置、復号装置、方法及びプログラム | |
JP6337133B2 (ja) | 非減少列判定装置、非減少列判定方法及びプログラム | |
JP7327511B2 (ja) | 秘密乱数生成システム、秘密計算装置、秘密乱数生成方法、およびプログラム | |
JP2012154990A (ja) | 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム | |
CN103873239A (zh) | 基于偶数公钥密码体制应用的偶数素数对的快速生成方法 | |
JP6321216B2 (ja) | 行列・キー生成装置、行列・キー生成システム、行列結合装置、行列・キー生成方法、プログラム | |
JP2023064757A (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
JP3907976B2 (ja) | F関数内部にspn構造を用いた演算装置および演算方法 | |
Raviv | Asymptotically optimal regenerating codes over any field | |
WO2023281694A1 (ja) | 秘密計算システム、装置、方法及びプログラム | |
WO2023281693A1 (ja) | 秘密計算システム、装置、方法及びプログラム | |
WO2023157118A1 (ja) | 秘密計算装置、秘密計算方法、プログラム | |
KR101833954B1 (ko) | 메모리 과부하 난수 발생 장치 및 방법 | |
JP2004101846A (ja) | 暗号化・復号化装置および暗号化・復号化方法 | |
JP2005128166A (ja) | 換字置換装置、換字置換方法、換字置換プログラム及び換字置換記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200428 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210629 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210813 |
|
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: 20220125 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220207 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7031682 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |