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。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。