在三方复制机密共享的基本操作中,有些操作在算数电路的环 \(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)实现,这里具体不再开展。