【隱私計算筆談】MPC系列專題(十七):三方複製秘密共享(三)

PlatON技術團隊發表於2023-05-04

Truncate I

上次在【隱私計算筆談】系列科普里介紹了在布林電路下和環下的三方複製秘密共享,以及其實現加法和乘法的方式。本次科普介紹兩種三方複製秘密共享下的截斷(Truncate) 操作。其中一種截斷方式只需要三個參與者中的兩者參加,不需要三者共同進行截斷,以此減少截斷操作所需要的通訊量。在三方複製秘密共享中,任意兩方合謀即可恢復出秘密,即其中任意兩方就可以進行截斷操作。

讓\( ?=?_1+?_2+?_3 \),Alice、Bob、Candy分別掌握 \( (?_1,?_2), (?_2,?_3), (?_3,?_1) \)。Bob和Candy二者預先產生一個隨機數?。
圖片

首先,Alice和Candy本地計算\( x_{1}^{\prime}=\frac{x_{1}}{2^{d}} \),則Alice和 Candy都掌握了 \( x_{1}^{\prime} \)。接著Bob本地計算\( x_{2}^{\prime}=\frac{x_{2}+x_{3}}{2^{d}} -r \),並且將\( x_{2}^{\prime} \)發回給Alice,則此時Alice掌握了(\( x_{1}^{\prime},x_{2}^{\prime} \)),Bob掌握了\( x_{2}^{\prime} \),Candy掌握了\( x_{1}^{\prime} \)。再接著Bob和Candy本地計算\( x_{3}^{\prime} =r \),協議的輸出為(\( x_{1}^{\prime},x_{2}^{\prime},x_{3}^{\prime} \)),Alice、Bob、Candy分別掌握了 \( (x_{1}^{\prime},x_{2}^{\prime}), (x_{2}^{\prime},x_{3}^{\prime}), (x_{3}^{\prime},x_{1}^{\prime}) \)。 
圖片

將\( x_{1}^{\prime},x_{2}^{\prime},x_{3}^{\prime} \)相加進行驗證可得:

圖片

該截斷方式利用任意兩者所掌握的資訊之和都包含了秘密資訊這一三方複製秘密共享的特點,將雙方的資訊利用起來進行截斷。顯然,這個協議是半誠實的,要求參與的三方都是遵守協議規則的使用者,若違反規則,則任意兩方串謀都能直接恢復出秘密資訊。 

Truncate II

該截斷的核心思想是共享[?]和[\( r^{\prime}=\frac{r}{2^{d}} \)],目標是要計算出\( x^{\prime}=\frac{x}{2^{d}} \),因此先向所有參與者揭露 [?−?] =[?]−[?],每個參與者都獲得明文的?−?,則所有使用者都可在明文上計算\( \frac{x-r}{2^d} \),再如下計算即可:

圖片

想要根據[?]計算出\([ r^{\prime}]=[\frac{r}{2^{d}}] \),有很多方式,直接利用Truncate I也可以, 但是Truncate II實際使用的是二進位制上的截斷。因為\( {[r]}^B \)是按位元分享的,假設?的各個位元為從高位到低位分別為\( r_l,r_{l-1},...,r_1 \),\( {[r]}^B \)實際為\( [r_1],[r_{l-1}],...,[r_1] \),所以對\( {[r]}^B \)進行截斷,只需直接丟棄\( [r_d],...,[r_1] \)即可。

Truncate II截斷流程為:

首先Alice、Bob和Candy三方共同產生?位的隨機數?,每個參與者拿到?的share,記為\( {[r]}^B \),上標的B表示?是按位元分享的,用中括號[]表示被分享。定義[?‘]是隨機數[?]的從高位往低位數的前?−?位,即\( r^{\prime}=\frac{r}{2^{d}} \)。

接著所有參與者共同產生?位的隨機數\( {[r_2]}^B , {[r_3]}^B\), 和?−?位的隨機數\( {[r_2^{\prime}]}^B, {[r_3^{\prime}]}^B \),並將 \( r_2^{\prime},r_2 \)向Alice和Bob揭露,將\( r_3^{\prime},r_3 \)向Bob和Candy揭露。注意這裡只是將後產生的?−?位隨機數記為\( {[r_2^{\prime}]}^B, {[r_3^{\prime}]}^B \),現在\( {[r_2^{\prime}]}^B, {[r_3^{\prime}]}^B \)與\( [{r_2}]^B,[{r_3}]^B \)之間並沒有聯絡。將這種秘密分享的形式定義為\( [r]^A=(r_1,r_2,r_3),[ r^{\prime}]^A=(r_1^{\prime},r_2^{\prime},r_3^{\prime}) \)。

再接著使用減法電路,每個參與者都計算\( [r_1]^B=[r]^B-[r_2]^B-[r_3]^B,[r_1^{\prime}]^B=[r^{\prime}]^B-[r_2^{\prime}]^B-[r_3^{\prime}]^B \),並向Alice和Candy揭露\( r_1^{\prime} \)以及\( r_1 \)。注意這裡透過 \( [r_1]^B=[r]^B-[r_2]^B-[r_3]^B,[r_1^{\prime}]^B=[r^{\prime}]^B-[r_2^{\prime}]^B-[r_3^{\prime}]^B \),使得\( [r]^B=[r_1]^B+[r_2]^B+[r_3]^B,[r^{\prime}]^B=[r_1^{\prime}]^B+[r_2^{\prime}]^B+[r_3^{\prime}]^B \),而\( [r^{\prime}]^B=[\frac{r}{2^{d}}] \),使得\( [r_1]^B,[r_2]^B,[r_3]^B \)與\( [r_1^{\prime}]^B,[r_2^{\prime}]^B,[r_3^{\prime}]^B \)之間建立了間接聯絡。

因為每個參與者都掌握有?和?的share,所以可直接計算\( [{x-r}]^A \),並共同揭露\( [{x-r}]^A \)獲得?−?。獲得?−?之後,再計算\( [x^{\prime}]^A=[r^{\prime}]^A+\frac{{x-r}}{2^{d}} \),即可完成對?的截斷,每個參與者都獲得了\( \frac{x^{\prime}}{2^{d}} \)的一個share。

相關文章