JP7031682B2 - 秘密計算装置、システム、方法、プログラム - Google Patents

秘密計算装置、システム、方法、プログラム Download PDF

Info

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
Application number
JP2019550064A
Other languages
English (en)
Other versions
JPWO2019087317A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2019087317A1 publication Critical patent/JPWO2019087317A1/ja
Application granted granted Critical
Publication of JP7031682B2 publication Critical patent/JP7031682B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/723Modular exponentiation
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure 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

本発明は、秘密計算装置、システム、方法、プログラムに関し、特に、ビット分解、ビット結合に好適な秘密計算装置、方法、プログラムに関する。
秘密計算法は、関連する主体に対して計算過程と結果を秘匿することができる技術である。データをクラウドのような第3者が管理する複数サーバに分散して保管することで、データに対してあらゆる演算を実行することができる。第3者には、データ、計算過程、計算結果を知られることがないため、個人情報のような機微な情報に対する分析処理をアウトソースするために用いることができる。
(2,3)閾値のアクセス構造を有する複製秘密分散(Replicated Secret Sharing)((2,3)閾値型RSSという)を用いた秘密計算について説明する。(2,3)閾値型RSS((2,3)型RSSとも略記される)は、(2,3)秘密分散の実現方法の一つである。(2,3)秘密分散とは、入力された値(秘密情報)から3つの分散情報を生成し、分散情報を閾値(=2)以上の個数を集めることによって元の値(秘密情報)を復元する。2つ以上の分散情報からは元の値を復元できるが、1つ以下の分散情報からは元の値はわからない。
(2,3)閾値型RSSは、0からp-1以下の値wを分散する際に、
w = r1 + r2 + r3 mod p ・・・(1)
となるような0からp-1以下の3つの値の組(r1, r2, r3)を生成し、3つの分散情報として、(r1, r2, r3)から異なる2つの値を互いに異なる組み合わせとなるように選んだ3組を用いることで、(2,3)秘密分散を実現する。なお、このpを法と呼ぶ。
秘密分散によって分散された値に関する計算を復元すること無く実行する方法は秘密計算と呼ばれている。(2, 3)複製秘密分散によって分散された値に対する秘密計算法について説明する。
まず、値の分散方法について説明し、次に加算、減算、乗算について説明する。ここでは、ある値の分散値が3台の装置に対して分散され保管され、その後、分散値に対して秘密計算を行うという手順について説明する。以下では、3台の装置を装置1、装置2、装置3と呼んで区別する。
<値の分散方法>
pを2以上の整数として、0以上p未満の値wを分散する場合、
w = r1 + r2 + r3 mod p
を満たすランダムに選ばれたr1、r2、r3を生成して、装置1乃至装置3に以下のように保管する。
装置1に、値wの分散値として、(r1, r2)を保管する。
装置2に、値wの分散値として、(r2, r3)を保管する。
装置3に、値wの分散値として、(r3, r1)を保管する。
どの装置も、r1、r2、r3のいずれかが足りない。このため、どの装置も元の値wを得られないが、2台以上の装置が保管している分散情報からなら、元の値wを復元することができることが確認できる。
<加算処理>
先に示した方法によって、装置1、装置2、装置3に分散して保管されている値wと値w’に関して実行される加算処理について説明する。なお、
w = r1 + r2 + r3 mod p
w’ = r1’ + r2’ + r3’ mod p
・・・(2)
とする。
装置1は、
wの分散値として、(s1, t1) = (r1, r2) を保管し、
w’の分散値として、(s1’, t1’) = (r1’, r2’)を保管している。
装置2は、
wの分散値 として、(s2, t2) = (r2, r3) を保管し、
w’の分散値 として、(s2’, t2’) = (r2’, r3’)を保管している。
装置3は、
wの分散値として、 (s3, t3) = (r3, r1) を保管し、
w’の分散値 として、(s3’, t3’) = (r3’, r1’)を保管している。
各装置は、以下の手順に従った処理を行う。
装置1は、
(s1’’, t1’’) = (r1’’ = s1 + s1’ mod p, r2’’ = t1 + t1’mod p) ・・・(3)
によって、(s1’’, t1’’)を計算し、これを加算値w + w’の分散値として保管する。
装置2は、
(s2’’, t2’’) = (r2’’ = s2 + s2’ mod p, r3’’ = t2 + t2’ mod p) ・・・(4)
によって、(s2’’, t2’’)を計算し、これを加算値w + w’の分散値として保管する。
装置3は、
(s3’’, t3’’) = (r3’’ = s3 + s3’ mod p, r1’’ = t3 + t3’ mod p) ・・・(5)
によって、(s3’’, t3’’)を計算し、これを加算値w + w’の分散値として保管する。
それぞれの計算結果は、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)
とする。
装置1は、
wの分散値として、(s1, t1) = (r1, r2)を保管し、
w’の分散値として、(s1’, t1’) = (r1’, r2’)を保管している。
装置2は、
wの分散値 として、(s2, t2) = (r2, r3) を保管し、
w’の分散値 として、(s2’, t2’) = (r2’, r3’)を保管している。
装置3は、
wの分散値として、(s3, t3) = (r3, r1) を保管し、
w’の分散値 として、(s3’, t3’) = (r3’, r1’)を保管している。
各装置は、以下の手順に従った処理を行う。
装置1は、
(s1’’, t1’’) = (r1’’ = s1-s1’ mod p, r2’’ = t1-t1’ mod p) ・・・(9)
によって、(s1’’, t1’’)を計算し、これをw-w’の分散値として保管する。
装置2は、
(s2’’, t2’’) = (r2’’ = s2-s2’ mod p, r3’’ = t2-t2’ mod p) ・・・(10)
によって、(s2’’, t2’’)を計算し、これをw-w’の分散値として保管する。
装置3は、
(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を、
r1 + r2 + r3 = w mod p ・・・(14)
を満たすランダムに選ばれた値とし、
r1’、r2’、r3’を、
r1’ + r2’ + r3’ = w’ mod 2^n ・・・(15)
を満たすランダムに選ばれた値とする。
装置1は、
wの分散値として、(s1, t1) = (r1, r2)を保管し、
w’の分散値として、(s1’, t1’) = (r1’, r2’)を保管する。
装置2は、
wの分散値 として、(s2, t2) = (r2, r3)を保管し、
w’の分散値 として、(s2’, t2’) = (r2’, r3’)を保管する。
装置3は、
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装置が効率的に生成する方法については後述する。
装置1は、
u2 = s1 * s1’ + s1 * t1’ + t1 * s1’ + r1’’ mod p ・・・(17)
を計算し、u2を装置2に送付する。
装置2は、
u3 = s2 * s2’ + s2 * t2’ + t2 * s2’ + r2’’ mod p ・・・(18)
を計算し、u3を装置3に送付する。
装置3は、
u1 = s3 * s3’ + s3 * t3’ + t3 * s3’ + r3’’ mod p ・・・(19)
を計算し、u1を装置1に送付する。
装置1は、(u1, u2)を、w * w’の分散値として保管する。
装置2は、(u2, u3)を、w * w’の分散値として保管する。
装置3は、(u3, u1)を、w * w’の分散値として保管する。
まず、
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)
となっていることが確認できる.
装置1と装置2の保管する値から、w * w’ mod pが同じ計算方法で計算できる。
他の装置の組み合わせについても同様である。このような方法によれば、(2,3)閾値型RSSで分散されているw、w’に関する乗算を、各値を復元することなく実行し、w * w’を(2,3)閾値型RSSで分散した値を共有することができる。
<乱数の生成>
次に、
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に関して生成する方法を説明する。
PRG(pseudo random generator)を、鍵とインデックスを入力として、nビットの数値列を出力する擬似乱数生成器とする。
インデックスは、カウンタなどでよい。この方法は、非特許文献3などに記載がある。
まず、装置のセットアップ処理として、PRGの鍵L1、L2、L3を生成する。
装置1に、L1とL3を記憶させ、
装置2に、L2とL1を記憶させ、
装置3に、L3とL2を記憶させているものとする。
各装置1、2、3は、カウンタなどで同期されたインデックスidxを共有しているものとする。
装置1は、鍵L1とインデックスidxをPRGに入力し、その出力であるnビットの数値をr’[1]を生成する。
また、装置1は、鍵L3とインデックスidxをPRGに入力し、その出力であるnビットの数値r’[3]を生成する。
そして、装置1は、
r[1] = r’[1] - r’[3] mod p ・・・(22)
とする。
装置2は、鍵L2とインデックスidxをPRGに入力し、その出力であるnビットの数値r’[2]を生成する。
また、装置2は、鍵L1とインデックスidxをPRGに入力し、その出力であるnビットの数値r’[1]を生成する。
そして、装置2は、
r[2] = r’[2] - r’[1] mod p ・・・(23)
とする。
装置3は、鍵L3とインデックスidxをPRGに入力し、その出力であるnビットの数値r’[3]を生成する。
また、装置3は、鍵L2とインデックスidxをPRGに入力し、その出力であるnビットの数値r’[2]を生成する。
そして、装置3は、
r[3] = r ’[3] - r’[2] mod p ・・・(24)
とする。
r[1] + r[2] + r[3]= r’[1] - r’[3] + r’[2] - r’[1] + r[3] - r[2] = 0 mod p ・・・(25)
が成り立ち、N組全てが条件を満たす。
装置1が生成する値(式(22))
r[1] = r’[1] - r’[3] mod p
に着目すると、装置3はr’[1]を得られず、装置2はr’[3]を得られない。これより、装置1、装置2は、r[1]を計算できないことがわかる。これは、r[2]やr[3]についても同様である。
セットアップ処理が済んでいれば、以上の処理は、計算が行われる前などにも実行可能である。
このような(2,3)閾値型RSSを用いた秘密計算において、p=2とすると、乗算は、AND処理とみなすことができ、加算・減算は、排他的論理和(exclusive OR:XOR)処理とみなすことができる。これによって、p = 2とした場合、論理演算に適した秘密計算法となる。
また、装置1、装置2、装置3の分散情報を、すべて、(1,1)、(1,1)、(1,1)とすると、これは、r1 = 1, r2 = 1, r3 = 1として、1の分散情報になっている。これは、論理積(AND)、排他的論理和(XOR)、定数1によって完全系となり、任意の演算が実行可能となる。以上の方法は、非特許文献1などが参照される。このような方法には種々のバリエーションを考えることができる。
例えば、
r1 + r2 + r3 = w mod p ・・・(26)
に関して、
(r1 - r2 mod p, r2),
(r2 - r3 mod p, r3),
(r3 - r1 mod p, r1)
・・・(27)
を3つの装置のそれぞれの分散情報としてもよい。
3つの装置が、r1、r2、r3のうち、異なる二つの組に相当する情報を保有していれば、(2,3)閾値型RSSと呼ぶことにする。つまり、任意の演算は、法(modulo) p = 2とした(2,3)閾値型RSSを用いることで、演算処理が可能である。
しかし、すべての処理を、論理演算で実行することは、非効率的である。
そこで、乗算と加減算で構成できるものは、pを大きく設定した(2,3)閾値型RSSを用いた秘密計算で実行するほうがよい。
さらに、数値演算と論理演算の組み合わせたい場合もある。
例として、それぞれが2^4より小さい値であるa、b、cを入力として、
a * b mod 2^4 < c ・・・(28)
を処理する場合を考える。乗算a*bを数値演算として処理し、比較演算(<)を論理演算として実行したい。
まず、数値演算として、a*bを計算したいが、これをcと比較する処理を数値演算として表現することは難しい。
このような問題を解決するため、非特許文献2に記載のビット分解と呼ばれる処理が知られている。ビット分解は、数値計算向けの分散情報を論理演算向けの分散情報に変換するための処理である。ビット分解は、数値を格納した1つ分散値(share)(lビット数値)を、ビットを格納したl個の分散値に変換する。
例えば、法としてp = 8を用いた(2,3)閾値型RSSによって、値w = 5を用いて、分散し、
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)を分散値として記憶しているものとする。
ビット分解を用いれば、これらの情報から、w=5の2進表記( = b0101、bは2進表記であることを示す)である1と0と1の各ビットに対する分散情報を得ることができる。
具体的には、ビット分解が実行された後、
装置1は、
1ビット目に関して、(1, 1)、
2ビット目に関して、(0, 1)、
3ビット目に関して、(1, 0)、
4ビット目に関して、(0, 0)
を所有する。1ビット目はLSB(Least Significant Bit)である。
装置2は、
1ビット目に関して、(1, 1)、
2ビット目に関して、(1, 1)、
3ビット目に関して、(0, 0)、
4ビット目に関して、(0, 0)
を所有する。
装置3は、
1ビット目に関して、(1, 1)、
2ビット目に関して、(1, 0)、
3ビット目に関して、(0, 0)、
4ビット目に関して、(0, 0)
を所有する。
ビット分解に関して非特許文献2に記載の方法の概要を以下に示す。この方法は以下のような手順でビット分解を実行する。
ビット分解を実行したい数rは、
r = r1 + r2 + r3 mod p ・・・(30)
を満たすr1、r2、r3を用いて、装置1、装置2、装置3に分散されているものとする。なお、非特許文献2では、p=2^n-1によって表されるメルセンヌ素数を用いる。メルセンヌ素数の性質は、手順2において、sを効率的に計算することに作用している。
<手順1>
r12 = r1 + r2 mod p、および、
r3
・・・(31)
を分散する。
<手順2>
r12 + r3 が pよりも大であるか否かを判定し、
r12 + r3 が pよりも大きい場合(r12 + r3 > p)には、
s = 1 ・・・(32)
とし、
それ以外の場合は(r12 + r3 ≦ p)、
s = 0 ・・・(33)
となるような秘密計算を実行する。
<手順3>
r12 + r3 + s mod 2^n ・・・(34)
の計算を下位桁からビット毎に全加算器の秘密計算を実行する。
非特許文献2の方法は、(2,3)複製秘密分散で、pがnビットの数であるとして、10n + 4ビットの総通信量によってビット分解を実行できると記載されている。
軽量検証可能3パーティ秘匿関数計算の効率化及びこれを用いたセキュアなデータベース処理、五十嵐大、千田浩司、濱田浩気、高橋克己、SCIS2011 少パーティの秘密分散ベース秘密計算のためのO(l)ビット通信ビット分解およびO(|p|’)ビット通信Modulus変換法、五十嵐大、濱田浩気、菊池亮、千田浩司、CSS2013 High-Throughput Semi-Honest Secure Three-Party Computation with an Honest Majority, Toshinori Araki, Jun Furukawa , Yehuda Lindell, Ariel Nof, Kazuma Ohara
上記非特許文献1乃至3の開示内容は、本明細書の一部を構成するものとする。 以下の分析は、本発明者らによってなされたものである。
上記非特許文献2によれば、例えばpをnビットの数として、10n + 4ビットの通信量でビット分解を行うことができる。
しかし、ビット分解が、例えば上記非特許文献2の通信量よりも少ない通信量で効率的に実行されることが望ましい。
したがって、本発明の目的は、秘密分散ベースの秘密計算において、より少ない通信量でビット分解、ビット結合の少なくとも一方を可能にする装置、方法、プログラムを提供することにある。
本発明の一態様(第1態様)によれば、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の分散情報として、値wに関してw= r1+r2+r3 mod 2^nを満たすr1、r2、r3を用い、
r12 = r1+r2 mod 2^n (mod は剰余演算、^はべき乗演算)と、
r123 = r12 + r3 mod 2^n
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部を備えた構成としてもよい。
本発明の別の態様(第3態様)によれば、前記ビット分解秘密計算装置は、
前記分散値保管装置が記憶する(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ビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する繰り込み秘密計算部を備える。
本発明の別の態様(第4態様)によれば、秘密計算装置は、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 (mod は剰余演算、^はべき乗演算)の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分散値保管装置に記憶する全加算器秘密計算部を備える。
本発明の別の態様(第5態様)によれば、前記ビット結合秘密計算装置は、前記分解分散値保管装置が記憶する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桁目の分散情報として前記分散値保管装置に記憶する桁上がり秘密計算部と、を備える。
本発明のさらに別の態様(第6-10態様)によれば、上記第1乃至第5の態様の装置による処理ステップが提供される。
本発明のさらに別の態様(第11-15態様)によれば、上記第1乃至第5の態様の装置を3組備えた秘密計算システムが提供される。
本発明のさらに別の態様(第16-20態様)によれば、上記第1乃至第5の態様の装置の処理をコンピュータ装置に実行させるプログラムが提供される。
本発明のさらに別の態様(第21-25態様)によれば、上記第1乃至第5の態様の装置の処理をコンピュータ装置に実行させるプログラムを記録したコンピュータ読み出し可能な非一時的記録媒体(non-transitory computer-readable recordimg medium)(例えば、半導体メモリ、プログラム消去可能な読み出し専用メモリ、ハードディスクドライブ、ソリッドステートドライブ、コンパクトディスク、DVD(Digital Versatile Disc)等)が提供される。
本発明によれば、秘密分散ベースの秘密計算において、より少ない通信量でビット分解とビット結合の少なくとも一方を可能としている。
本発明の例示的な実施形態1の構成を例示する図である。 本発明の例示的な実施形態1の動作を例示する流れ図である。 本発明の例示的な実施形態2の構成を例示する図である。 本発明の例示的な実施形態2の動作を例示する流れ図である。 本発明の例示的な実施形態3の構成を例示する図である。 本発明の例示的な実施形態3の動作を例示する流れ図である。 本発明の例示的な実施形態4の構成を例示する図である。 本発明の例示的な実施形態4の動作を例示する流れ図である。 本発明の例示的な実施形態5の構成を例示する図である。 本発明の例示的な実施形態5の動作を例示する流れ図である。 本発明の例示的な実施形態6を模式的に示す図である。
本発明の一形態によれば、2のべき乗を法とした(2,3)閾値型複製秘密分散(Replicated Secret Sharing:RSS)で分散された値を保管する分散値保管装置(図1の100)と、2を法とした(2,3)閾値型RSSで分散された値の列を保管する分解分散値保管装置(図1の200)と、ビット分解秘密計算装置(図1の300)とを備えた装置を3セット有する。
各装置におけるビット分解秘密計算装置(図1の300)は、分散値保管装置(図1の100)が保管する(2,3)閾値型RSSの分散情報として、値wに関して、
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)との和を全加算器の秘密計算を用いて、各桁毎に計算する構成としてもよい。
各装置におけるビット分解秘密計算装置(図3の300A)は、前記分散値保管装置(図3の100)が記憶する(2,3)閾値型RSSの分散情報として、値wに関して、
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)に記憶する構成としてもよい。
本発明の別の形態によれば、前記ビット分解秘密計算装置(図7の300B)は、前記分散値保管装置(図7の100)が記憶する(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}を秘密計算する桁上がり秘密計算部(図7の304)と、
r_{1,x}、r_{2,x}、r_{3,x}、c_{x}、d_{x}の排他的論理和に基づく分散情報を、xビット目のビット分解された値の分散情報として、分解分散値保管装置(図7の200)に記憶する繰り込み秘密計算部(図7の305)を備えた構成としてもよい。
本発明のさらに別の形態によれば、前記分解分散値保管装置(図5の200)が記憶するn個の(2,3)閾値型RSSの分散情報の列(nビット)のうち、第xビット(x=1,...,n)の値w_iに関して、
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)を備えた構成としてもよい。
本発明の別の形態によれば、ビット結合秘密計算装置(図9の400A)は、前記分解分散値保管装置(図9の200)が記憶する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桁目の分散情報として、前記分散値保管装置(図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}の秘密計算によって計算する構成としてもよい。
前記ビット結合秘密計算装置(図9の400A)は、前記分解分散値保管装置(図9の200)から読み出された(2,3)閾値型RSSのrの分散情報のx桁目r_xと、前記桁上がり秘密計算部から入力された前記x桁目の分散情報に関する2ビットの桁上がりの分散情報を入力とし、これら3値の排他的論理和を計算する秘密計算を実行し、計算結果r_x'をx桁目の分散情報として前記分散値保管装置(図9の100)に記憶する繰り込み秘密計算部(図9の405)と、前記r_x'の分散情報から、i=1,2,3についてr_{i,x}'に関する部分以外を0とみなした分散情報を出力する部分分散情報抽出部(図9の402)と、を備え、前記桁上がり秘密計算部(図9の404)は、前記部分分散情報抽出部(図9の402)によって生成された(2,3)閾値型RSSの分散情報の3組のx桁目と、x-1桁目から生じる2ビットの桁上がりに関する分散情報を入力として、5組の入力から発生する2ビットの桁上がりを計算する秘密計算を実行し、前記繰り込み秘密計算部(図9の405)へ供給する構成としてもよい。
以下には、本発明の原理を説明しておく。
非特許文献2の方法では、上記手順1において、r3を分散している。この処理を、通信無しで実行する方法について説明する。ここで、(2,3)閾値型複製秘密分散により、値rが
r = r1 + r2 + r3 mod p ・・・(35)
を満たすr1、r2、r3で装置1、装置2、装置3に分散されていることを想定する。
このとき、ri (i = 1,2.3)に関連する分散情報(share)を生成したい場合、
r = r1 + r2 + r3 mod pの分散情報(装置1-3に分散されている分散情報)のr1に関する箇所以外をすべて0にした値が、r1の分散情報となる。
値rの分散情報として、
装置1が、(r2, r3)を保管し、
装置2が、(r3, r1)を保管し、
装置3が、(r1, r2)を保管しているとする。
これらの分散情報のうち、例えばr1に関する箇所以外をゼロとすると、
装置1は、(0, 0)を保有し、
装置2は、(0, r1)を保有し、
装置3は、(r1, 0)を保有する。これらは、r1に関する分散情報とすることができる。
装置2と装置3がr1自体を保管していることは秘匿性に何ら影響を与えない。これらは、元々、把握可能な値であるためである。r2、r3についても同様に、装置1、装置2、装置3は通信することなく、その分散情報を得ることができる。
非特許文献2の方法の上記手順3では、
r12 + r3 + s mod 2^n ・・・(36)
を計算している。
sを加算している理由は、
r12 + r3 mod p ・・・(37)
をmod 2^nにおける計算で求めるためである。
s = 1の場合、r12 + r3 = r’ + p
とすると、
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)
s = 0の場合、r12 + r3 = r’とすると、
r12 + r3 mod 2^n
= r’ mod 2^n ・・・(39)
となる。
以上のように、sの値によらず、手順3の計算結果は、
r12 + r3 mod 2^n ・・・(40)
となる。
pとして、2^nを用いれば、r12 + r3がp=2^nを越えた場合の処理(上記手順2)が不要である。
以上の変更を加えた本発明の一形態のビット分解法について以下に説明する。
<手順1>
r12 = r1 + r2 mod 2^n ・・・(41)
を(2,3)閾値型RSSで分散する。
<手順2>
r3の分散情報(シェア)を装置1、2、3で生成する(通信無し)。
<手順3>
r12 + r3 mod 2^n ・・・(42)
の計算を下位桁からビット毎に全加算器の秘密計算を実行する。
以上の処理の通信量を評価する。
w = r1 + r2 + r3 mod 2^n ・・・(43)
を満たすランダムに選ばれr1、r2、r3を生成して、以下のように保管されているものとする。
装置1に、wの分散値として、(r1, r2)を保管し、
装置2に、wの分散値として (r2, r3)を保管し、
装置3に、wの分散値として(r3, r1)を保管する。
<手順1の通信量>:
r1 + r2 ・・・(44)
の秘密分散は、装置1によって実行される。
まず、装置1は、
r12 = r1 + r2 mod 2^n ・・・(45)
を計算し、
r12A + r12B = r12 mod 2^n ・・・(46)
となるr12Aとr12Bをランダムに選択する。
次に、装置1は、
r12Aを装置2に送信し(nビット)、
r12Bを装置3に送信する(nビット)。
この結果、
装置1は、値r12の分散値として、(r12B, r12A)を得る。
装置2は、値r12の分散値として、(r12A, 0)を得る。
装置3は、値r12の分散値として、(0, r12B)を得る。
この処理では、2nビットの通信を行っている。
<手順2の通信量>:
先に示したように、r3の分散情報は、各装置1、2、3で通信を行わずに生成できる。
<手順3の通信量>
各装置における全加算器の秘密計算は、各桁のキャリーを計算するために1回のAND(論理積)演算が必要となる。したがって、n桁の加算の場合、(n-1)ビットのキャリーの秘密計算のために、装置1、2、3間において、3*(n-1)ビットの通信が必要となる。
以上の結果として、総通信量
2n + 3 * (n-1) = 5n - 3 (ビット) ・・・(47)
でビット分解が計算できることが分かる。
ここで、加算器処理によって計算結果をビット単位に分解する様子を示す例を挙げる。
p = 8、w = 6 (b110) (bは2進表記)、r1 = 3(b011)、r2 = 2(b010)、 r3 = 1(b001) のビット分解の計算過程を示す(w(=6) = r1 + r2 + r3 mod p (=2^3=8) = 3 + 2 + 1 mod 8)。
なお、以下では、
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)

を下位桁から順に計算する手順を示す。
<1桁目(LSB)の計算>:
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)。
1桁目の計算に関する桁上がりc1は、
c1 = r12_1 AND r3_1 = 1 AND 1 = 1 ・・・(52)
(1桁目では下位桁からの桁上がり(キャリー)がない)
<2桁目の計算>:
r123_2 = r12_2 XOR r3_2 XOR c1 = 0 XOR 0 XOR 1 = 1 ・・・(53)
2桁目の計算に関するキャリー c2は以下で与えられる。
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)
<3桁目の計算>:
r123_3 = r12_3 XOR r2_3 XOR c2 = 1 XOR 0 XOR 0 = 1 ・・・(55)
以上のように、各桁は、ANDの処理1回で、
r123_1 = 0,
r123_2 = 1,
r123_3 = 1
・・・(56)
のように、1桁から3桁までの各桁をビット毎に分解した値が計算できている。
この処理を(2, 3))閾値型RSSに基づく秘密計算で実行すればよい。秘密計算の結果が、ビット毎に分解した値の分散値となる。
上記形態では、(2,3)閾値型RSSとして、値rを
r = r1 + r2 + r3 mod p ・・・(57)
としたとき、分散情報として、例えば、
装置1が、(r1, r2)を保管し、
装置2が、(r2, r3)を保管し、
装置3が、(r3, r1)を保管する場合の例を説明している。
しかし、本実施形態は、r1、r2、r3の3つの値のうち異なる2つに相当する情報を保有する(2,3)閾値型RSSであれば適用可能である。例えば、
装置1は、分散情報として、(r2, r3)でなく、
(r2 + r3, r3)
を保有していてもよいし、
(r2 - r3, r2 + r3)
などを保有する方法であってよい。秘密計算として加算、乗算、定数を備えていれば実施可能である。
本実施形態においては、
r12 = r1 + r2 mod 2^n ・・・(58)
の計算を秘密計算によって実行してから、
r12 + r3 mod 2^n ・・・(59)
に関する演算を全加算器の秘密計算によって計算してもよい。
この方法を用いる場合、r12を計算する通信量が3nビットとなり、装置1が分散する場合に比べて効率は悪いが、全体の通信量は、6n-3ビットである。
r1 + r2の計算を全加算器の秘密計算によって計算する場合、最上位の桁から発生するキャリーに関する計算を実行する必要が無いため、3n-3ビットの通信量で、r12に関する計算を実行できる。この場合、6n-6ビットの通信量でビット分解を実行することができる。これらの変形例も非特許文献2の方式に比べて効率的である。
また、両方の処理を全加算器の秘密計算を用いて実行することで、非特許文献3に記載されているような(2,3)閾値型RSSを用いた秘密計算法に不正耐性を付与する仕組みを用いることもできる。
さらに、ビット分解された分散情報から結合された値に対する分散情報を作るようにしてもよい。この場合、下位の桁から上位の桁への桁上がりを、桁上がり計算の秘密計算によって実行していき、すべての桁の計算を終えた段階で、各桁の秘密計算結果を結合すればよい。この手法では、r1 + r2 mod 2^n相当の情報を保有している主体が存在しない。このため、r12 = r1 + r2 mod 2^n と、r12 + r 3 mod 2^n の計算の両方を、全加算器の秘密計算によって実行することになる。
全加算器の計算を、下位桁から順番に実行する場合、n-1回のAND演算が発生する。これによって、装置間の通信の回数がn-1回となる。この回数を減らす合、キャリーセーブアダーなどを用いた加算手法を用いてもよい。この手法は、ANDの回数は増えるが。回路の深さは浅い。
<実施形態1>
本発明の例示的な実施形態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)
を全加算器の秘密計算を用いて実行することによって、ビット分解された分散情報を生成する。
図1は、実施形態1の構成を例示する図である。図1を参照すると、実施形態1において、ビット分解を行う秘密計算装置10は、分散値保管装置100、分解分散値保管装置200、ビット分解秘密計算装置300を備えている。
分散値保管装置100は、
w = r1 + r2 + r3 mod p ・・・(63)
のpとして2^nを用いた(2,3)閾値型RSSで分散された値を保管する。
分解分散値保管装置200は、ビット分解された分散情報を保管する。
ビット分解秘密計算装置300は、分散値保管装置100の記憶する値を読み出し、分解分散値保管装置200に値を記憶させる。
実施形態1のシステムは、図1の装置100、200、300の1セットが1つの装置10を構成し、3組の装置10が設けられている(3組の装置10は、(2,3)閾値型RSSに関して前述した装置1、2、3に対応する)。装置100、200、300、または装置100、200、300から選択されたいずれか2つの装置は1つのユニットに配置されていてもよいし、分散して配置されていてもよい。例えば、少なくとも装置100と装置200との間、装置200と装置300との間には、LAN(Local Area Network)および/またはWAN(Wide Area Network)どの1つ以上の通信経路が設けられてもよい。
なお、図1において、装置100と装置300と装置300と装置200との間の矢印はデータの流れの一例を模式的に示しているに過ぎない。装置100と装置300と装置300と装置200との間の通信は、矢印の方向に限定されないことは勿論である。後述する他の実施形態においても同様である。
分散値保管装置100は、(2,3)閾値型RSSで分散された第1分散値、第2分散値に関して、第1分散値を保管する第1分散値保管部101、第2分散値を保管する第2分散値保管部102を備える。第1分散値保管部101と第2分散値保管部102は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のどの値を、どのように加工した値かが分かるように保管されているものとする。
分解分散値保管装置200は、第1分散値をビット分解した列(2を法とした(2,3)閾値型RSSで分散された値の列)を保管する第1分解分散値保管部201と第2分解分散値保管部202を備える。第2分散値をビット分解した列(2を法とした(2,3)閾値型RSSで分散された値の列)を保管する第1分解分散値保管部201と第2分解分散値保管部202は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のうちどの値をどのように加工した値かが分かるように保管されているものとする。
ビット分解秘密計算装置300は、加算分散部301と、部分分散情報抽出部302と、全加算器秘密計算部303とを備える。
ビット分解秘密計算装置300は、分散値保管装置100が記憶する値を読み出し、不図示の他のビット分解秘密計算装置300と通信し、分解分散値保管装置200に情報を記憶させる。
加算分散部301は、(2,3)閾値型RSSの分散情報を構成する3つの値のうち2つのインデックスを入力として、分散値保管装置100が記憶する値を読み出す。分散値保管装置100が2つのインデックスの両方を保管している場合は、その和について(2,3)閾値型RSSの分散情報を生成し、他の2装置に送付する。
部分分散情報抽出部302は、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つのインデックスを入力として、分散値保管装置100が記憶する値を読み出し、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つを除いて0とした分散情報を出力する。
全加算器秘密計算部303は、加算分散部301によって生成配布された(2,3)閾値型RSSの分散情報と部分分散情報抽出部302によって生成された(2,3)閾値型RSSの分散情報について、全加算器の秘密計算を用いた加算処理を実行し、各ビット(各桁)に関して得られたビット毎(桁毎)の計算結果の分散情報を結合した値を、分解分散値保管装置200に記憶させる。
図2は、本発明の第1の実施形態の動作を説明する流れ図である。
分散値保管装置100には、nビットの値rを
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あってもよい。
以下の処理は、3組の分散値保管装置100、分解分散値保管装置200、ビット分解秘密計算装置300が実行する。
<ステップA1>
各加算分散部301は、ビット分解秘密計算装置300と対応付けられた分散値保管装置100がr_iとr_jに関する情報を記憶しているかを判定する。記憶している場合、
r_ij = r_i + r_j mod 2^n ・・・(66)
を計算し、分散情報を他のビット分解秘密計算装置300の加算分散部301に送付する。その後、各装置は、r_ijの分散情報を出力する。
<ステップA2>
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値から、r_kに関する部分以外を0とみなした部分分散情報を出力する。
<ステップA3>
次に、全加算器秘密計算部303は、r_ijの分散情報と、r_kの分散情報に関して、全加算器の秘密計算を用いた加算処理
r_ij + r_k mod 2^n ・・・(67)
を実行する。そして、全加算器秘密計算部303は、加算処理結果の列(各ビット(各桁)に関して得られたビット毎(桁毎)の計算結果の分散情報を結合した値)を分解分散値保管装置200に記憶させる。
<実施形態2>
本発明の例示的な実施形態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)と同じである。
図3は、実施形態2の構成を例示する図である。図3を参照すると、実施形態2の秘密計算装置10Aは、pとして2^nを用いた(2,3)閾値型RSSで分散された値を保管する分散値保管装置100と、ビット分解された分散情報を保管する分解分散値保管装置200と、分散値保管装置100の記憶する値を読み出し、分解分散値保管装置200に値を記憶させるビット分解秘密計算装置300Aを含む。また、実施形態2のシステムは、前記実施形態1と同様、それぞれの装置100、200、300Aを1セットとした装置10Aを3組備えることで構成される。
分散値保管装置100は、(2,3)閾値型RSSで分散された第1分散値、第2分散値に関して、第1分散値を保管する第1分散値保管部101と、第2分散値を保管する第2分散値保管部102を備える。第1分散値保管部101と第2分散値保管部102は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のどの値をどのように加工した値かが分かるように保管されているものとする。
分解分散値保管装置200は、第1分散値をビット分解した列(2を法とした(2,3)閾値型RSSで分散された値の列)を保管する第1分解分散値保管部201と、第2分散値をビット分解した列を保管する第2分解分散値保管部202を備える。第1分解分散値保管部201と第2分解分散値保管部202は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のどの値をどのように加工した値かが分かるように保管されているものとする。
ビット分解秘密計算装置300Aは、部分分散情報抽出部302と、全加算器秘密計算部303とを備える。
ビット分解秘密計算装置300Aは、分散値保管装置100が記憶する値を読み出し、他のビット分解秘密計算装置300と通信し、分解分散値保管装置200に情報を記憶させる。
部分分散情報抽出部302は、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つのインデックスを入力として、分散値保管装置100が記憶する値を読み出す。部分分散情報抽出部302は、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つを除いて0とした分散情報を出力する。
全加算器秘密計算部303は、部分分散情報抽出部302によって生成された(2,3)閾値型RSSの分散情報3組を入力として、3つの値に関する下位ビットから全加算器の秘密計算を実行し、各ビットに関して得られたビット毎の計算結果の分散情報を分解分散値保管装置200に記憶させる。
図4は、実施形態2の動作を説明する流れ図である。
分散値保管装置100には、nビットの値rに関して、
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が実行する。
<ステップB1>
まず、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_iに関する部分以外を0とみなした分散情報(「部分分散情報」という)を出力する。
<ステップB2>
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_jに関する部分以外を0とみなした分散情報(「部分分散情報」という)を出力する。
<ステップB3>
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_kに関する部分以外を0とみなした分散情報(「部分分散情報」という)を出力する。
<ステップB4>
次に、全加算器秘密計算部303は、r_iの分散情報とr_jの分散情報に関して、下位ビットから順に、
r_ij = r_i + r_j mod 2^n ・・・ (74)
を全加算器の秘密計算で実行し、その結果の列をr_ijの分散情報として出力する。
<ステップB5>
次に、全加算器秘密計算部303は、r_ijの分散情報とr_kの分散情報に関して、
r_ij + r_k mod 2^n ・・・ (75)
全加算器の秘密計算で実行し、その結果の列を分解分散値保管装置200に記憶させる。
<実施形態3>
本発明の例示的な実施形態3の構成と動作について説明する。
実施形態3では、x = 1,…,nについて、x桁目のビットw_x(1ビット)が
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)を表す。
図5は、実施形態3の構成を例示する図である。図5を参照すると、実施形態3の秘密計算装置(ビット結合を行う秘密計算装置)20は、pとして、2^nを用いた(2,3)閾値型RSSで分散された値を保管する分散値保管装置100と、ビット分解された分散情報を保管する分解分散値保管装置200と、分解分散値保管装置200の記憶する値を読み出し、分散値保管装置100に値を記憶させるビット結合秘密計算装置400を含む。実施形態3のシステムは、それぞれの装置100、200、400を1セットとする装置20を3組備えて構成される。
分散値保管装置100は、第1分散値保管部101と第2分散値保管部102を備える。第1分散値保管部101と第2分散値保管部102は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のどの値をどのように加工した値かが分かるように保管されているものとする。
分解分散値保管装置200は、第1分解分散値保管部201と第2分解分散値保管部202を備える。第1分解分散値保管部201と第2分解分散値保管部202は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のどの値をどのように加工した値かが分かるように保管されているものとする。
ビット結合秘密計算装置400は、部分分散情報抽出部402と、全加算器秘密計算部403とを備え、分解分散値保管装置200が記憶する値を読み出し、他の2組のビット結合秘密計算装置400と通信し、分散値保管装置100に情報を記憶させる。部分分散情報抽出部402と、全加算器秘密計算部403は、図3の部分分散情報抽出部302と、全加算器秘密計算部303で構成し、入力と出力、処理の向きを逆とするようにしてもよい。
部分分散情報抽出部402は、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つのインデックスを入力として、分解分散値保管装置200が記憶する値r_{i,n}||…||r_{i,1}を読み出し、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つを除いて0とした分散情報(「部分分解分散情報」という)を出力する。部分分散情報抽出部402は、分解分散値保管装置200が記憶する値r_{j,n}||…||r_{j,1}を読み出し、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つを除いて0とした部分分散情報を出力し、さらに、分解分散値保管装置200が記憶する値r_{k,n}||…||r_{k,1}を読み出し、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つを除いて0とした部分分散情報を出力する。
全加算器秘密計算部403は、部分分散情報抽出部402によって生成された(2,3)閾値型RSSの分散情報3組を入力として、3つの値に関する下位ビットから全加算器の秘密計算を実行し、各ビットに関して得られたビット毎の計算結果の分散情報を分解分散値保管装置200に記憶させる。
図6は、実施形態3の動作を説明する流れ図である。分解分散値保管装置200には、nビットの値rの各桁(ビット)r_xについて、
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が実行する。
<ステップC1>
まず、部分分散情報抽出部402は、分解分散値保管装置200の記憶する値から、
r_{i,n}||…||r_{i,1} ・・・ (82)
に関する部分以外を0とみなした分散情報(r_{i,n}||…||r_{i,1}の分散情報、部分分解情報ともいう)を出力する。
<ステップC2>
次に、部分分散情報抽出部402は、分解分散値保管装置200の記憶する値から、
r_{j,n}||…||r_{j,1} ・・・ (83)
に関する部分以外を0とみなした分散情報(r_{j,n}||…||r_{j,1}の分散情報、部分分解情報ともいう)を出力する。
<ステップC3>
次に、部分分散情報抽出部402は、分解分散値保管装置200の記憶する値から、
r_{k,n}||…||r_{k,1} ・・・ (84)
に関する部分以外を0とみなした分散情報(r_{k,n}||…||r_{k,1}の分散情報、部分分解情報ともいう)を出力する(例えば(i,j,k)=(1,2,3))。
<ステップC4>
次に、全加算器秘密計算部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の分散情報として出力する。
<ステップC5>
次に、全加算器秘密計算部403は、
r_ijの分散情報と、
r_{k,n}||…||r_{k,1} ・・・ (88)
の部分分解分散情報に関して、
全加算器の秘密計算を用いて、
r_ij + r_{k,n}||…||r_{k,1} mod 2^n ・・・ (89)
を計算し、その結果を、分散値保管装置100に記憶させる。
<実施形態4>
前述した実施形態2のビット分解処理では、r_i、r_j、r_kについて、まず2つの値を加算し、もう1つの値を加えているが、この処理は並列に実行することもできる。本発明の例示的な実施形態4は、各桁の処理を並列に実行しながらビット分解処理を行うものである。
具体的には、以下の処理(z、c、d、vの計算)を、x= 1からnまで順に実行する。XORは排他的論理和を表す。
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桁目を表す。
z_{x} = r_{1,x} XOR r_{2,x} XOR r_{3,x} ・・・ (91)
c_{x + 1} = [(r_{1,x} XOR r_{2,x} XOR 1) AND (r_{1,x} XOR r_{3,x})] XOR r_{3,x} ・・・ (92)
d_{x + 1} = [(c_{x} XOR d_{x} XOR 1) AND [(c_{x} XOR z_{x})] XOR z_{x} ・・・ (93)
v_{x} = z_{x} XOR c_{x} XOR d_{x} ・・・ (94)
c_{x + 1}とd_{x + 1}は、r_{1, x}, r_{2, x}、r_{3, x}、c_{x}、d_{x} を加算する際に発生する2ビットの桁上がりを表す。2ビットであるのは、5入力あるためである。
c_{x}、d_{x}をz_{x}に繰り込んだ値(z_{x} XOR c_{x} XOR d_{x})が、rのx桁目に等しく、この値を、秘密計算を用いて計算することで、v_{x}の分散情報として、rのx桁目を分散した値(分散情報)を得ることができる。
ここで、11(10進表記)の分散値をビット分解する例を示す。
w = 11、r_i = 3、r_j = 10、r_k = 14について、それぞれのx桁目を、
w_x、r_{i,x}、r_{j,x}、r_{k,x}と表記する。なお、以下の計算ではi=1,j=2,k=3とする。
w = 11 = b1011、
r_1 = 3 = b0011、
r_2 = 10 = b1010、
r_3 = 14 = b1110
<1桁目の計算結果>
z_{1} = 1、
c_{2} = 0、
d_{2} = 0、
v_{1} = 1
・・・ (95)
<2桁目の計算結果>
z_{2} = 1、
c_{3} = 1、
d_{3} = 0、
v_{2} = 1
・・・ (96)
<3桁目の計算結果>
z_{3} = 1、
c_{4} = 0、
d_{4} = 1、
v_{3} = 0
・・・ (97)
<4桁目の計算結果>
z_{4} = 0、
v_{4} = 1、
v_{4} = 1、
v_{3} = 0、
v_{2} = 1、
v_{1} = 1
・・・ (98)
以上、値w=b1011をビット毎に分解した値となる。この計算を秘密計算によって実行する。
図7は、実施形態4の構成を例示する図である。図7を参照すると、実施形態4の秘密計算装置(ビット分解を行う秘密計算装置)10Bは、pとして2^nを用いた(2,3)閾値型RSSで分散された値を保管する分散値保管装置100と、ビット分解された分散情報を保管する分解分散値保管装置200と、分散値保管装置100の記憶する値を読み出し、分解分散値保管装置200に値を記憶させるビット分解秘密計算装置300Bを含む。また、実施形態4のシステムは、それぞれの装置100、200、300を1セットとする装置10Bを3組備えて構成される。
分散値保管装置100は、第1分散値保管部101と第2分散値保管部102を備える。第1分散値保管部101と第2分散値保管部102は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のどの値をどのように加工した値かが分かるように保管されているものとする。
分解分散値保管装置200は、第1分解分散値保管部201と第2分解分散値保管部202を備える。第1分解分散値保管部201と第2分解分散値保管部202は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のどの値をどのように加工した値かが分かるように保管されているものとする。
ビット分解秘密計算装置300Bは、部分分散情報抽出部302と、桁上がり秘密計算部304と、繰り込み秘密計算部305を備える。
ビット分解秘密計算装置300Bは、分散値保管装置100が記憶する値を読み出し、他のビット分解秘密計算装置300と通信し、分解分散値保管装置200に情報を記憶させる。
部分分散情報抽出部302は、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つのインデックスを入力として、分散値保管装置100が記憶する値を読み出し、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つを除いて0とした分散情報を出力する。
桁上がり秘密計算部304は、部分分散情報抽出部302によって生成された(2,3)閾値型RSSの分散情報の3組のi桁目と、i-1桁目から生じる2ビットの桁上がりに関する分散情報を入力として、5組の入力から発生する2ビットの桁上がりを計算する秘密計算を実行し、繰り込み秘密計算部305に入力する。
繰り込み秘密計算部305は、分解分散値保管装置200から読み出された(2,3)閾値型RSSのrの分散情報のx桁目(r_x)と、桁上がり秘密計算部304から入力されたx桁目の分散情報に関する2ビットの桁上がりの分散情報を入力として、これら3値の排他的論理和を計算する秘密計算を実行し、その結果をx桁目のビット分解された分散情報として、分解分散値保管装置200に記憶させる。
図8は、実施形態4の動作を説明する流れ図である。分散値保管装置100には、nビットの値rを
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とする。
<ステップD1>
まず、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_1に関する部分以外を0とみなした部分分散情報を出力する。なお、r_1のiビット目をr_{1,i}とする。
<ステップD2>
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_2に関する部分以外を0とみなした部分分散情報を出力する。なお、r_2のiビット目をr_{2,i}とする。
<ステップD3>
次に、部分分散情報抽出部302は、分散値保管装置100の記憶する値からr_3に関する部分以外を0とみなした部分分散情報を出力する。なお、r_3のiビット目をr_{3,i}とする。
以下の処理をx = 1,...,n(1ビットからnビット)について実行する。
<ステップD4>
桁上がり秘密計算部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に入力する。
<ステップD5>
繰り込み秘密計算部305は、
分散値保管装置100から読み出されたrの分散情報のx桁目と、
桁上がり秘密計算部304から入力されたx-1桁目の分散情報に関する2ビットの桁上がりc_{x}、d_{x}の分散情報を入力として、これら3入力の値の排他的論理和(XOR)を計算する秘密計算を実行し、その結果をx桁目のビット分解された分散情報として、分解分散値保管装置200に記憶させる。
<実施形態5>
前述した実施形態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桁目に関する処理を開始することができる。
(s1) r_ij = r_i + r_jの計算のx桁目に関する計算が終わった段階で、
(s2) r_{ijk} = r_ij + r_kのx桁目に関する処理を開始することができる。
これを活用すると、(s1)に関するx + 1桁目の計算と、(s2)に関するx桁目の計算を並列に実行することができる。実施形態5は、この特徴を活用しながら、ビット結合処理を行うように構成したものである。実施形態5は、ビット結合を逐次的に実行する場合に比べて、処理時間を削減できる。
nビットの値
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_{x}の分散情報がx桁目の分散情報となる。
v_{x} = w_x XOR c_{x} XOR d_{x} ・・・ (103)
v_{x}の分散情報を構成する3つの値をそれぞれ、
v_{1,x}、v_{2,x}、v_{3,x} ・・・ (104)
として、
c_{x + 1}、d{x + 1}を以下のように計算する。
c_{x + 1} = [(v_{1,x} XOR v_{2,x} XOR 1) AND (v_{1,x} XOR v_{3,x})] XOR v_{v,3} ・・・ (105)
d_{x + 1} = [(c_{x} XOR d_{x} XOR 1) AND (c_{x} XOR v_{x})] XOR v_{x} ・・・ (106)
c_{x+1}とd_{x+1}は、v_{1,x}、v_{2,x}、v_{3,x}、c_{x}、d_{x}から発生する2ビットの桁上がりである。
v_{1,x}、v_{2,x}、v_{3,x}は、x桁目の分散情報v_{x}を3つの値に分解したものであるが、分解する前に、c_{x}とd_{x}が排他的に加えられている(XORによる加算)点が異なる。これは、x-1桁目から発生する桁上がりをx桁目に繰り込んだ結果として、x桁目の値が変化しないようにするためである。
w = 11(10進) = b1011、 w_4 = 1、 w_3 = 0、w_2 = 1、w_1 = 1について、式(99)-(102)を用いて計算する。
<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)
となる。
<2桁目の計算結果>
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)
となる。
<3桁目の計算結果>
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)
となる。
<4桁目の計算結果>
v_{4} = 0
ここで、v_{4}の分散情報を構成する3つの値を、
v_{1,4} = 0、
v_{2,4} = 0、
v_{3,4} = 0
・・・ (113)
とする。
このとき、v_{x} (x=1,..,4)を構成する分散情報を結合した3つの値
b0111、
b0111、
b0101 ・・・ (114)
がビット結合した分散情報となっている。
実施形態5の構成と動作について説明する。実施形態5は、x = 1,…,nについて、ビットw_xが
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で分散されているとする。
図9は、本発明の例示的な実施形態5の構成を例示する図である。図9を参照すると、実施形態5の秘密計算装置(ビット結合を行う秘密計算装置)20Aは、pとして2^nを用いた(2,3)閾値型RSSで分散された値を保管する分散値保管装置100と、ビット分解された分散情報を保管する分解分散値保管装置200と、分解分散値保管装置200の記憶する値を読み出し、分散値保管装置100に値を記憶させるビット結合秘密計算装置400Aを含む。実施形態5のシステムは、それぞれの装置100、200、400Aを1セットとする装置20Aを3組備えて構成される。
分散値保管装置100は、第1分散値保管部101と第2分散値保管部102を備える。第1分散値保管部101と第2分散値保管部102は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のどの値をどのように加工した値かが分かるように保管されているものとする。
分解分散値保管装置200は、第1分解分散値保管部201と第2分解分散値保管部202を備える。第1分解分散値保管部201と第2分解分散値保管部202は、それぞれの分散値が(2,3)閾値型RSSの分散情報を生成するために用いられた3つの値のどの値をどのように加工した値かが分かるように保管されているものとする。
ビット結合秘密計算装置400Aは、部分分散情報抽出部402と、桁上がり秘密計算部404と、繰り込み秘密計算部405を備え、分解分散値保管装置200が記憶する値を読み出し、他のビット結合秘密計算装置400Aと通信し、分散値保管装置100に情報を記憶させる。部分分散情報抽出部402と、桁上がり秘密計算部404と、繰り込み秘密計算部405は、前記実施形態4の部分分散情報抽出部302と、桁上がり秘密計算部304と、繰り込み秘密計算部305において入力と出力、および処理の向きを逆としてもよい。
部分分散情報抽出部402は、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つのインデックスを入力として、分散値保管装置100が記憶する値を読み出し、(2,3)閾値型RSSの分散情報を構成する3つの値のうち1つを除いて0とした分散情報を出力する。
桁上がり秘密計算部404は、部分分散情報抽出部402によって生成された(2,3)閾値型RSSの分散情報の3組のx桁目と、x-1桁目から生じる2ビットの桁上がりに関する分散情報を入力として、5組の入力から発生する2ビットの桁上がりを計算する秘密計算を実行し、繰り込み秘密計算部405に入力する。
繰り込み秘密計算部405は、分解分散値保管装置200から読み出された(2,3)閾値型RSSのrの分散情報のx桁目(r_x)と、桁上がり秘密計算部404から入力されたx桁目の分散情報に関する2ビットの桁上がりの分散情報を入力とし、それら3値の排他的論理和を計算する秘密計算を実行し、その結果をx桁目の分散情報として分散値保管装置100に記憶させる。
図10は、実施形態5の動作を説明する流れ図である。分解分散値保管装置200には、nビットの値rの各桁r_x(x=1.,..,n)について、
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で分散された値が記憶されているものとする。
以下の処理は、3組の分散値保管装置100,分解分散値保管装置200、ビット結合秘密計算装置400が実行する。
以下の処理を、x = 1,…,n(xは下位からの桁数)に対して実行する。なお、c_{1} = 0、d_{1} = 0とする。
<ステップE1>
まず、繰り込み秘密計算部405は、分解分散値保管装置200から読み出された(2,3)閾値型RSSのnビットの分散情報rのx桁目r_xの分散情報にc_{x}とd_{x}を繰り込む(排他的論理和により加算する)。この計算結果r_x'の分散情報を、部分分散情報抽出部302に入力し、r_x'をビット結合結果の分散情報のxビット目として分散値保管装置100に記憶させる。
なお、r_x'は、
r_{1,x}' + r_{2,x}' + r_{3,x}' = r_x' mod 2 ・・・ (117)
を満たすr_{1,x}'、r_{2,x}'、r_{3,x}'によって3つの装置に分散されているものとする。
<ステップE2>
次に、部分分散情報抽出部402は、r_x'の分散情報から、r_{1,x}'に関する部分以外を0とみなした分散情報(r_{1,x}'の分散情報、部分分解情報ともいう)を出力する。
<ステップE3>
次に、部分分散情報抽出部402は、r_x'の分散情報から、r_{2,x}'に関する部分以外を0とみなした分散情報(r_{2,x}'の分散情報、部分分解情報ともいう)を出力する。
<ステップE4>
次に、部分分散情報抽出部402は、r_x'の分散情報から、r_{3,x}'に関する部分以外を0とみなした分散情報(r_{3,x}'の分散情報、部分分解情報ともいう)を出力する。
<ステップE5>
次に、桁上がり秘密計算部404は、部分分散情報抽出部02によって生成された
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に入力する。
本実施形態によれば、ビット結合処理を行うように構成したものである。実施形態5は、逐次的に実行する場合に比べて、処理時間を削減できる。
図11は、前記実施形態1-5の装置10、10A、10B、20、20Aを、コンピュータ装置500で実現した構成を例示する図である。図11を参照すると、コンピュータ装置500は、プロセッサ501、記憶装置502、表示装置503、通信インタフェース504を備える。記憶装置502は、ハードディスクドライブ(HDD)、半導体メモリ(例えば、ソリッドステートドライブ(SSD)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、読み出し専用のリードオンリメモリ(ROM)、電気的に消去プログラム可能なリードオンリメモリ(Electrically Erasable Programmable Read-Only Memory)、コンパクトディスク(CD)、デジタルバーサタイルディスク(DVD)等のいずれか、または複数の組み合わせから構成され、プロセッサ501で実行されるプログラムを格納する。通信インタフェース504は、他の装置への分散情報の送信、受信等の通信を行う。プロセッサ501は、記憶装置502に格納されてプログラムを実行することで、前記実施形態1-5の各装置10、10A、10B、20、20Aの機能を実現する。記憶装置502は、分散値保管装置100、分解分散値保管装置200を含む構成としてもよい。
上記した本実施形態を用いることで、(2,3)閾値型RSSで分散された値を、各ビットが(2,3)閾値型RSSで分散された値に変換することができる。また、その逆を効率的に実行することができる。この処理が可能となると、値の秘密計算と、ビットの秘密計算を組み合わせた複雑な処理を効率的に実行することが可能となる。
なお、上記の非特許文献1-3の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
上記した態様(形態)、実施形態、実施例は例えば以下のように付記される(ただし、以下に制限されない)。
(付記1)
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)
前記ビット分解秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値のうち、前記1つを除いて0とし、前記1つの値の分散情報を生成する部分分散情報抽出部を備え、
前記全加算器秘密計算部は、
前記加算分散部で生成され配布された前記2つの値の和の分散情報と、
前記部分分散情報抽出部で生成した前記1つの値の分散情報について、全加算器の秘密計算を用いた加算処理を実行し、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする付記1に記載の秘密計算装置。
(付記3)
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
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部を備える、ことを特徴とする秘密計算装置。
(付記4)
前記ビット分解秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値の各々について、各1つ以外を0とする分散情報をそれぞれ生成する部分分散情報抽出部を備え、
前記全加算器秘密計算部は、
前記部分分散情報抽出部で生成した3つの分散情報の2つの値に関して、下位桁から順に全加算器の秘密計算を実行し、結果の列を前記2つの値の分散情報とし、
前記2つの値の和の分散情報と、前記1つの値の分散情報について、全加算器の秘密計算を用いた、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする付記3に記載の秘密計算装置。
(付記5)
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
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分散値保管装置に記憶する全加算器秘密計算部を備える、ことを特徴とする秘密計算装置。
(付記6)
前記ビット結合秘密計算装置は、
前記分解分散値保管装置の記憶する前記値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に記載の秘密計算装置。
(付記7)
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ビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する繰り込み秘密計算部を備える、ことを特徴とする秘密計算装置。
(付記8)
前記桁上がり秘密計算部は、
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に記載の秘密計算装置。
(付記9)
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桁目の分散情報として前記分散値保管装置に記憶する桁上がり秘密計算部と、を備えることを特徴とする秘密計算装置。
(付記10)
前記桁上がり秘密計算部は、
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に記載の秘密計算装置。
(付記11)
前記ビット結合秘密計算装置は、
前記分解分散値保管装置から読み出された(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に記載の秘密計算装置。
(付記12)
付記1乃至11のいずれかに記載の秘密計算装置を3組備えた秘密計算装システム。
(付記13)
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つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し計算結果を、ビット分解分散値として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。
(付記14)
前記秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値のうち、前記1つを除いて0とし、前記1つの値の分散情報を生成し、
前記2つの値の和の分散情報と、生成した前記1つの値の分散情報について、全加算器の秘密計算を用いた加算処理を実行し、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする付記13に記載の秘密計算方法。
(付記15)
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
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する、ビット分解分散値として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。
(付記16)
前記秘密計算装置は、
(2,3)閾値型RSSの前記分散情報を構成する3つの値の各々について、各1つ以外を0とする分散情報をそれぞれ生成し、
前記生成した3つの分散情報の2つの値に関して、下位桁から順に全加算器の秘密計算を実行し、結果の列を前記2つの値の分散情報とし、
前記2つの値の和の分散情報と、前記1つの値の分散情報について、全加算器の秘密計算を用いた、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする付記15に記載の秘密計算方法。
(付記17)
前記秘密計算装置は、前記分解分散値保管装置が記憶する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に記載の秘密計算方法。
(付記18)
前記秘密計算装置は、
前記分解分散値保管装置の記憶する前記値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に記載の秘密計算方法。
(付記19)
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ビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。
(付記20)
前記秘密計算装置と、
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に記載の秘密計算方法。
(付記21)
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桁目の分散情報として前記分散値保管装置に記憶することを特徴とする秘密計算方法。
(付記22)
前記秘密計算装置は、
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に記載の秘密計算方法。
(付記23)
前記秘密計算装置は、
前記分解分散値保管装置から読み出された(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に記載の秘密計算方法。
(付記24)
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つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し計算結果を、ビット分解分散値として、前記分解分散値保管装置に記憶する処理(全加算器秘密計算処理)を実行させるプログラム。
(付記25)
(2,3)閾値型RSSの前記分散情報を構成する3つの値のうち、前記1つを除いて0とし、前記1つの値の分散情報を生成する部分分散情報抽出処理を、
前記生成され配布された前記2つの値の和の分散情報と、
前記部分分散情報抽出処理で生成した前記1つの値の分散情報について、全加算器の秘密計算を用いた加算処理を実行し、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する処理(前記全加算器秘密計算処理)と、を前記コンピュータ装置に実行させる、付記24に記載のプログラム。
(付記26)
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
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する処理(全加算器秘密計算処理)を実行させるプログラム。
(付記27)
(2,3)閾値型RSSの前記分散情報を構成する3つの値の各々について、各1つ以外を0とする分散情報をそれぞれ生成する部分分散情報抽出処理と、
前記部分分散情報抽出処理で生成した3つの分散情報の2つの値に関して、下位桁から順に全加算器の秘密計算を実行し、結果の列を前記2つの値の分散情報とし、
前記2つの値の和の分散情報と、前記1つの値の分散情報について、全加算器の秘密計算を用いた、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する処理(前記全加算器秘密計算処理)と、を前記コンピュータ装置に実行させる付記26に記載のプログラム。
(付記28)
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
の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分散値保管装置に記憶する処理(全加算器秘密計算処理)を実行させるプログラム。
(付記29)
前記分解分散値保管装置の記憶する前記値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に記載のプログラム。
(付記30)
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ビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する繰り込み秘密計算処理と、を実行させるプログラム。
(付記30)
前記桁上がり秘密計算処理は、
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に記載のプログラム。
(付記31)
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桁目の分散情報として前記分散値保管装置に記憶する桁上がり秘密計算処理を実行させるプログラム。
(付記32)
前記桁上がり秘密計算処理は、
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に記載のプログラム。
(付記33)
前記分解分散値保管装置から読み出された(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に記載のプログラム。
10、10A、10B 秘密計算装置(ビット分解を行う秘密計算装置)
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)

  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を用い、
    前記分散情報のうち2つの値について、法2^n上の和をとり、前記和を(2,3)閾値型RSSによって分散する加算分散部と、
    前記加算分散部による前記2つの値の和を分散した値と、前記加算分散部が用いた前記2つの値以外の残りの1つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部と、
    を備える、ことを特徴とする秘密計算装置。
  2. 前記ビット分解秘密計算装置は、
    (2,3)閾値型RSSの前記分散情報を構成する3つの値のうち、前記1つを除いて0として、前記1つの値の分散情報を生成する部分分散情報抽出部を備え、
    前記全加算器秘密計算部は、
    前記加算分散部で生成され配布された前記2つの値の和の分散情報と、
    前記部分分散情報抽出部で生成した前記1つの値の分散情報について、全加算器の秘密計算を用いた加算処理を実行し、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする請求項1に記載の秘密計算装置。
  3. 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
    の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分解分散値保管装置に記憶する全加算器秘密計算部を備える、ことを特徴とする秘密計算装置。
  4. 前記ビット分解秘密計算装置は、
    (2,3)閾値型RSSの前記分散情報を構成する3つの値の各々について、各1つ以外を0とする分散情報をそれぞれ生成する部分分散情報抽出部を備え、
    前記全加算器秘密計算部は、
    前記部分分散情報抽出部で生成した3つの分散情報の2つの値に関して、下位桁から順に全加算器の秘密計算を実行し、結果の列を前記2つの値の分散情報とし、
    前記2つの値の和の分散情報と、前記1つの値の分散情報について、全加算器の秘密計算を用いた、桁毎の計算結果の分散情報を結合した値を、前記分解分散値保管装置に記憶する、ことを特徴とする請求項3に記載の秘密計算装置。
  5. 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
    の秘密計算を全加算器の秘密計算によって各桁毎に計算し、計算結果を前記分散値保管装置に記憶する全加算器秘密計算部を備える、ことを特徴とする秘密計算装置。
  6. 前記ビット結合秘密計算装置は、
    前記分解分散値保管装置の記憶する前記値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に記載の秘密計算装置。
  7. 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ビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する繰り込み秘密計算部と、
    を備える、ことを特徴とする秘密計算装置。
  8. 前記桁上がり秘密計算部は、
    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に記載の秘密計算装置。
  9. 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桁目の分散情報として、前記分散値保管装置に記憶する桁上がり秘密計算部を備えることを特徴とする秘密計算装置。
  10. 前記桁上がり秘密計算部は、
    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に記載の秘密計算装置。
  11. 前記ビット結合秘密計算装置は、
    前記分解分散値保管装置から読み出された(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に記載の秘密計算装置。
  12. 請求項1乃至11のいずれか1項に記載の秘密計算装置を3組備えた秘密計算システム。
  13. 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つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し計算結果を、ビット分解分散値として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。
  14. 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ビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する、ことを特徴とする秘密計算方法。
  15. 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桁目の分散情報として前記分散値保管装置に記憶する、ことを特徴とする秘密計算方法。
  16. 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つの値の分散情報との和を、全加算器の秘密計算を用いて、各桁毎に計算し計算結果を、ビット分解分散値として、前記分解分散値保管装置に記憶する処理を実行させるプログラム。
  17. 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ビット目のビット分解された値の分散情報として、前記分解分散値保管装置に記憶する処理と、
    を実行させるプログラム。
  18. 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桁目の分散情報として、前記分散値保管装置に記憶する処理を、実行させるプログラム。
JP2019550064A 2017-10-31 2017-10-31 秘密計算装置、システム、方法、プログラム Active JP7031682B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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