三方秘密分享
本文介绍在[1]中提出来的三方秘密分享。这里的三方秘密分享是指计算的参与者有三个。秘密拥有者将秘密分享给三个参与者,然后三个参与者通过交互计算关于秘密的一个多项式函数。文章中的假设是三个参与者都是半诚实的,会遵守协议的规则,但可能通过额外的计算尝试获取秘密的信息。任意两个参与方即可重构秘密,也就是这是一个(2,3)(2,3)(2,3)门限秘密分享。
需要注意的是,这里的计算是在Z2n\mathbb{Z}_{2^n}Z2n或者有限域上。当n=1n=1n=1时,该秘密分享变成布尔秘密分享。
假设秘密拥有者为OOO,参与者为P1,P2,P3P_1,P_2,P_3P1,P2,P3.下面介绍具体的秘密分享方案。
秘密分享
1、假设需要分享的秘密为vvv,拥有者OOO随机产生x1+x2+x3=0x_1+x_2+x_3=0x1+x2+x3=0.
2、OOO计算a1=x3−va_1=x_3-va1=x3−v,然后将(x1,a1)(x_1,a_1)(x1,a1)发送给P1P_1P1;
3、OOO计算a2=x1−va_2=x_1-va2=x1−v,然后将(x2,a2)(x_2,a_2)(x2,a2)发送给P2P_2P2;
4、OOO计算a3=x2−va_3=x_2-va3=x2−v,然后将(x3,a3)(x_3,a_3)(x3,a3)发送给P3P_3P3.
秘密重建
我们讨论,任意两个参与者都可以重建秘密:
1、P1,P2P_1,P_2P1,P2,计算x1−a2=x1−(x1−v)=vx_1-a_2=x_1-(x_1-v)=vx1−a2=x1−(x1−v)=v;
2、P2,P3P_2,P_3P2,P3,计算x2−a3=x2−(x2−v)=vx_2-a_3=x_2-(x_2-v)=vx2−a3=x2−(x2−v)=v;
3、P1,p3P_1,p_3P1,p3,计算x3−a1=x3−(x3−v)=vx_3-a_1=x_3-(x_3-v)=vx3−a1=x3−(x3−v)=v.
同态计算
秘密分享的同态计算指的是,在不重构秘密的情况下,计算函数值的秘密分享。一般最常见的是加法和乘法。
假设v1v_1v1的秘密分享为(xi,ai)(x_i,a_i)(xi,ai),v2v_2v2的秘密分享为(yi,bi)(y_i,b_i)(yi,bi),其中i=1,2,3i=1,2,3i=1,2,3. 下面讨论如何同态的计算v1+v2v_1+v_2v1+v2和v1v2v_1v_2v1v2的秘密分享。
加法
加法是显然的,zi=xi+yi,ci=ai+biz_i=x_i+y_i,c_i=a_i+b_izi=xi+yi,ci=ai+bi,则(zi,ci)(z_i,c_i)(zi,ci)是v1+v2v_1+v_2v1+v2的秘密分享。也就是每个参与者本地将v1,v2v_1,v_2v1,v2的秘密分享加起来就可以了。
证明:
1、c1=a1+b1=x3−v1+y3−v2=(x3+y3)−(v1+v2)=z3−(v1+v2)c_1=a_1+b_1=x_3-v_1+y_3-v_2=(x_3+y_3)-(v1+v_2)=z_3-(v_1+v_2)c1=a1+b1=x3−v1+y3−v2=(x3+y3)−(v1+v2)=z3−(v1+v2);
2、c2=a2+b2=x1−v1+y1−v2=(x1+y1)−(v1+v2)=z1−(v1+v2)c_2=a_2+b_2=x_1-v_1+y_1-v_2=(x_1+y_1)-(v_1+v_2)=z_1-(v_1+v_2)c2=a2+b2=x1−v1+y1−v2=(x1+y1)−(v1+v2)=z1−(v1+v2);
3、c3=a3+b3=x2−v1+y2−v2=(x2+y2)−(v1+v2)=z2−(v1+v2)c_3=a_3+b_3=x_2-v_1+y_2-v_2=(x_2+y_2)-(v_1+v_2)=z_2-(v_1+v_2)c3=a3+b3=x2−v1+y2−v2=(x2+y2)−(v1+v2)=z2−(v1+v2).
乘法
对于乘法,我们需要一组相关随机数α+β+γ=0\alpha+\beta+\gamma=0α+β+γ=0.
乘法分成两大步,第一步是得到乘法结果的(3,3)(3,3)(3,3)门限分享,第二步是重新分享为(2,3)(2,3)(2,3)门限。
一、计算
首先需要说明的是,在下面的计算中,我们会乘以3的逆元,在Z2n\mathbb{Z}_{2^n}Z2n和有限域中3的逆元是存在的。(2n2^n2n和3互素)
1、P1P_1P1计算r1=3−1⋅(a1b1−x1y1+α)r_1=3^{-1}\cdot(a_1b_1-x_1y_1+\alpha)r1=3−1⋅(a1b1−x1y1+α);
1、P2P_2P2计算r2=3−1⋅(a2b2−x2y2+β)r_2=3^{-1}\cdot(a_2b_2-x_2y_2+\beta)r2=3−1⋅(a2b2−x2y2+β);
1、P1P_1P1计算r3=3−1⋅(a3b3−x3y3+γ)r_3=3^{-1}\cdot(a_3b_3-x_3y_3+\gamma)r3=3−1⋅(a3b3−x3y3+γ).
我们证明r1+r2+r3=v1v2r_1+r_2+r_3=v_1v_2r1+r2+r3=v1v2.
证明:
3r1+3r2+3r3=a1b1−x1y1+α+a2b2−x2y2+β+a3b3−x3y3+γ=a1b1+a2b2+a3b3−x1y1−x2y2−x3y3=(x3−v1)(y3−v2)+(x1−v1)(y1−v2)+(x2−v1)(y2−v2)−x1y1−x2y2−x3y3=3v1v2−x3v2−y3v1−x1v2−y1v1−x2v2−y2v1=3v1v2−(x1+x2+x3)v2−(y1+y2+y3)v1=3v1v2\begin{aligned}
3r_1+3r_2+3r_3&=a_1b_1-x_1y_1+\alpha+a_2b_2-x_2y_2+\beta+a_3b_3-x_3y_3+\gamma\\
&=a_1b_1+a_2b_2+a_3b_3-x_1y_1-x_2y_2-x_3y_3\\
&=(x_3-v_1)(y_3-v_2)+(x_1-v_1)(y_1-v_2)+(x_2-v_1)(y_2-v_2)-x_1y_1-x_2y_2-x_3y_3\\
&=3v_1v_2-x_3v_2-y_3v_1-x_1v_2-y_1v_1-x_2v_2-y_2v_1\\
&=3v_1v_2-(x_1+x_2+x_3)v_2-(y_1+y_2+y_3)v_1\\
&=3v_1v_2
\end{aligned}3r1+3r2+3r3=a1b1−x1y1+α+a2b2−x2y2+β+a3b3−x3y3+γ=a1b1+a2b2+a3b3−x1y1−x2y2−x3y3=(x3−v1)(y3−v2)+(x1−v1)(y1−v2)+(x2−v1)(y2−v2)−x1y1−x2y2−x3y3=3v1v2−x3v2−y3v1−x1v2−y1v1−x2v2−y2v1=3v1v2−(x1+x2+x3)v2−(y1+y2+y3)v1=3v1v2
二、重新分享
r1+r2+r3r_1+r_2+r_3r1+r2+r3构成一个常规的三方算术秘密分享,接下来,我们将算术秘密分享,重新分享为(2,3)(2,3)(2,3)门限的形式。
1、P3P_3P3将r3r_3r3发送给P1P_1P1,P1P_1P1计算t1=r3−r1,k1=−2r3−r1t_1=r_3-r_1,k_1=-2r_3-r_1t1=r3−r1,k1=−2r3−r1;
2、P1P_1P1将r1r_1r1发送给P2P_2P2,P2P_2P2计算t2=r1−r2,k2=−2r1−r2t_2=r_1-r_2,k_2=-2r_1-r_2t2=r1−r2,k2=−2r1−r2;
3、P2P_2P2将r2r_2r2发送给P3P_3P3,P3P_3P3计算t3=r2−r3,k3=−2r2−r3t_3=r_2-r_3,k_3=-2r_2-r_3t3=r2−r3,k3=−2r2−r3.
证明:
1、k1=−2r3−r1=r2−r3−(r1+r2+r3)=t3−v1v2k_1=-2r_3-r_1=r_2-r_3-(r_1+r_2+r_3)=t_3-v_1v_2k1=−2r3−r1=r2−r3−(r1+r2+r3)=t3−v1v2;
2、k2=−2r1−r2=r3−r1−(r1+r2+r3)=t1−v1v2k_2=-2r_1-r_2=r_3-r_1-(r_1+r_2+r_3)=t_1-v_1v_2k2=−2r1−r2=r3−r1−(r1+r2+r3)=t1−v1v2;
3、k3=−2r2−r3=r1−r2−(r1+r2+r3)=t2−v1v2k_3=-2r_2-r_3=r_1-r_2-(r_1+r_2+r_3)=t_2-v_1v_2k3=−2r2−r3=r1−r2−(r1+r2+r3)=t2−v1v2.
所以(ti,ki)(t_i,k_i)(ti,ki)是v1v2v_1v_2v1v2的(2,3)(2,3)(2,3)门限秘密分享。
参考文献
[1] Araki, Toshinori, et al. “High-throughput semi-honest secure three-party computation with an honest majority.” Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. 2016.