在三方复制机密共享的基本操作中,有些操作在算数电路的环\( Z_{2^k} \)上进行效率高,而有些则在布尔电路上进行效率高,因而须要有操作将在环上示意的操作数转换为布尔示意(二进制示意),而操作数在平安多方计算中都是以子机密(Share)的模式,因而理论是将环上示意的三方复制机密共享子机密转换为按比特共享的子机密模式,记为\( [x]^{A} \rightarrow[x]^{B} \)。

之前的科普曾经介绍过将在域\( F_q \)下的子机密转换为按比特共享的子机密模式,三方复制机密共享则是在环上,因而须要应用新的比特合成和比特合成形式。本次科普就要介绍一下三方复制机密共享的比特合成和比特合成。

比特合成

比特合成\( [x]^{A} \rightarrow[x]^{B} \),是将\( x\in Z_{2^k} \)的子机密转换为{ \( x[1],x[2],...,x[k] \) } ,\( x[i]\in \) { 0,1} 的子机密,并且 \( x[1],x[2],...,x[k] \)满足\( x=\Sigma_{i=1}^{k} 2^{i-1} x[i] \)。留神在之前的科普中,咱们把Alice、Bob、Candy别离把握\( (x_1,x_2),(x_2,x_3),(x_3,x_1) \),作为对的机密分享,记为\( (x_1,x_2,x_3) \):


图:对的机密分享\( (x_1,x_2,x_3) \)

那么显然Alice能在本地实现对\( x_1 \)的比特合成,因为Alice把握了\( x_1 \),Alice只需本地将组成\( x_1 \in Z_{2^k} \)的各个比特离开,即可实现从\( Z_{2^k} \)到布尔示意的转换。

同理,Bob和Candy也可本地实现\( x_2,x_3 \)从\( Z_{2^k} \)到布尔示意的转换。

因为Alice、Bob、Candy三者把握的子机密对别离为:\( (x_1,x_2),(x_2,x_3),(x_3,x_1) \)

因而Alice、Bob、Candy别离本地实现对\( x_1,x_2,x_3 \)的比特合成,\( [x_1]^B=(x_1,0,0),[x_2]^B=(0,x_2,0),[x_3]^B=(0,0,x_3) \),即Alice把握\( x_1 \)和\( x_2 \)的比特示意,Bob把握\( x_2 \)和\( x_3 \)的比特示意,Candy把握\( x_3 \)和\( x_1 \)的比特示意。用\( x_{i,j} \)示意子机密\( x_i \)的第位:

在进行比特合成之后,各个子机密都是以按比特分享的,当进行机密复原时,须要进行比特间的加法,而当进行子机密间的加法时,会呈现比特间的进位问题。失常复原机密间接计算\( x=x_1+x_2+x_3 \)即可,而当子机密以比特模式分享后,会呈现\( x_1 \)的第位和\( x_2 \)的第位,\( x_3 \)的第位相加,\( x_{1,j}+x_{2,j}+x_{3,j} \),显然当三者之和大于1时就会呈现向高位的进位,同样\( x_{1,j}+x_{2,j}+x_{3,j} \)也须要思考来自低位\( x_{1,j+1}+x_{2,j+1}+x_{3,j+1} \)的进位。因而\( x_{1,j}+x_{2,j}+x_{3,j} \)并不一定等于的第位。一种简略的实现形式是应用波纹进位全加器(Ripple-Carry Full Adder,RCFA)进行2轮的加法,\( =((x_1,x_2),x_3) \)。全加器(Full Adder)是实现两个二进制数相加的布尔电路,其表达式为:
 

其中\( S_i \)示意全加器的输入本位和,\( A_i \)和\( B_i \)是全加器的输出比特,\( C_{i-1} \)是低位来的进位,\( C_i \)是向高位的进位。如若\( A_i \)为1,\( B_i \)为0,低位来的\( C_{i-1} \)进位为1,则相加后本位和\( S_i=1+0+1 \),向高位的进位\( C_i=i\cdot 0+1\cdot (1+0)=1 \)。全加器的布尔电路图如下所示:

图:全加器布尔电路图

波纹进位全加器是应用多个1位的全加器来形成的多位全加器,其将每个全加器的进位输入\( C_i \)连贯到下一个全加器的低位进位输出\( C_{i-1} \),以此实现多位加法。机密复原也能够应用更为高效的并行前缀加法器(Paraller Prefix Adder)实现,这里具体不再开展。