三方秘密分享
本文介绍在[1]中提出来的三方秘密分享。这里的三方秘密分享是指计算的参与者有三个。秘密拥有者将秘密分享给三个参与者,然后三个参与者通过交互计算关于秘密的一个多项式函数。文章中的假设是三个参与者都是半诚实的,会遵守协议的规则,但可能通过额外的计算尝试获取秘密的信息。任意两个参与方即可重构秘密,也就是这是一个 ( 2 , 3 ) (2,3) (2,3)门限秘密分享。
需要注意的是,这里的计算是在 Z 2 n \mathbb{Z}_{2^n} Z2n或者有限域上。当 n = 1 n=1 n=1时,该秘密分享变成布尔秘密分享。
假设秘密拥有者为 O O O,参与者为 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3.下面介绍具体的秘密分享方案。
秘密分享
1、假设需要分享的秘密为
v
v
v,拥有者
O
O
O随机产生
x
1
+
x
2
+
x
3
=
0
x_1+x_2+x_3=0
x1+x2+x3=0.
2、
O
O
O计算
a
1
=
x
3
−
v
a_1=x_3-v
a1=x3−v,然后将
(
x
1
,
a
1
)
(x_1,a_1)
(x1,a1)发送给
P
1
P_1
P1;
3、
O
O
O计算
a
2
=
x
1
−
v
a_2=x_1-v
a2=x1−v,然后将
(
x
2
,
a
2
)
(x_2,a_2)
(x2,a2)发送给
P
2
P_2
P2;
4、
O
O
O计算
a
3
=
x
2
−
v
a_3=x_2-v
a3=x2−v,然后将
(
x
3
,
a
3
)
(x_3,a_3)
(x3,a3)发送给
P
3
P_3
P3.
秘密重建
我们讨论,任意两个参与者都可以重建秘密:
1、
P
1
,
P
2
P_1,P_2
P1,P2,计算
x
1
−
a
2
=
x
1
−
(
x
1
−
v
)
=
v
x_1-a_2=x_1-(x_1-v)=v
x1−a2=x1−(x1−v)=v;
2、
P
2
,
P
3
P_2,P_3
P2,P3,计算
x
2
−
a
3
=
x
2
−
(
x
2
−
v
)
=
v
x_2-a_3=x_2-(x_2-v)=v
x2−a3=x2−(x2−v)=v;
3、
P
1
,
p
3
P_1,p_3
P1,p3,计算
x
3
−
a
1
=
x
3
−
(
x
3
−
v
)
=
v
x_3-a_1=x_3-(x_3-v)=v
x3−a1=x3−(x3−v)=v.
同态计算
秘密分享的同态计算指的是,在不重构秘密的情况下,计算函数值的秘密分享。一般最常见的是加法和乘法。
假设 v 1 v_1 v1的秘密分享为 ( x i , a i ) (x_i,a_i) (xi,ai), v 2 v_2 v2的秘密分享为 ( y i , b i ) (y_i,b_i) (yi,bi),其中 i = 1 , 2 , 3 i=1,2,3 i=1,2,3. 下面讨论如何同态的计算 v 1 + v 2 v_1+v_2 v1+v2和 v 1 v 2 v_1v_2 v1v2的秘密分享。
加法
加法是显然的, z i = x i + y i , c i = a i + b i z_i=x_i+y_i,c_i=a_i+b_i zi=xi+yi,ci=ai+bi,则 ( z i , c i ) (z_i,c_i) (zi,ci)是 v 1 + v 2 v_1+v_2 v1+v2的秘密分享。也就是每个参与者本地将 v 1 , v 2 v_1,v_2 v1,v2的秘密分享加起来就可以了。
证明:
1、
c
1
=
a
1
+
b
1
=
x
3
−
v
1
+
y
3
−
v
2
=
(
x
3
+
y
3
)
−
(
v
1
+
v
2
)
=
z
3
−
(
v
1
+
v
2
)
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、
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
)
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、
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
)
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的逆元,在
Z
2
n
\mathbb{Z}_{2^n}
Z2n和有限域中3的逆元是存在的。(
2
n
2^n
2n和3互素)
1、
P
1
P_1
P1计算
r
1
=
3
−
1
⋅
(
a
1
b
1
−
x
1
y
1
+
α
)
r_1=3^{-1}\cdot(a_1b_1-x_1y_1+\alpha)
r1=3−1⋅(a1b1−x1y1+α);
1、
P
2
P_2
P2计算
r
2
=
3
−
1
⋅
(
a
2
b
2
−
x
2
y
2
+
β
)
r_2=3^{-1}\cdot(a_2b_2-x_2y_2+\beta)
r2=3−1⋅(a2b2−x2y2+β);
1、
P
1
P_1
P1计算
r
3
=
3
−
1
⋅
(
a
3
b
3
−
x
3
y
3
+
γ
)
r_3=3^{-1}\cdot(a_3b_3-x_3y_3+\gamma)
r3=3−1⋅(a3b3−x3y3+γ).
我们证明
r
1
+
r
2
+
r
3
=
v
1
v
2
r_1+r_2+r_3=v_1v_2
r1+r2+r3=v1v2.
证明:
3
r
1
+
3
r
2
+
3
r
3
=
a
1
b
1
−
x
1
y
1
+
α
+
a
2
b
2
−
x
2
y
2
+
β
+
a
3
b
3
−
x
3
y
3
+
γ
=
a
1
b
1
+
a
2
b
2
+
a
3
b
3
−
x
1
y
1
−
x
2
y
2
−
x
3
y
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
1
y
1
−
x
2
y
2
−
x
3
y
3
=
3
v
1
v
2
−
x
3
v
2
−
y
3
v
1
−
x
1
v
2
−
y
1
v
1
−
x
2
v
2
−
y
2
v
1
=
3
v
1
v
2
−
(
x
1
+
x
2
+
x
3
)
v
2
−
(
y
1
+
y
2
+
y
3
)
v
1
=
3
v
1
v
2
\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
二、重新分享
r
1
+
r
2
+
r
3
r_1+r_2+r_3
r1+r2+r3构成一个常规的三方算术秘密分享,接下来,我们将算术秘密分享,重新分享为
(
2
,
3
)
(2,3)
(2,3)门限的形式。
1、
P
3
P_3
P3将
r
3
r_3
r3发送给
P
1
P_1
P1,
P
1
P_1
P1计算
t
1
=
r
3
−
r
1
,
k
1
=
−
2
r
3
−
r
1
t_1=r_3-r_1,k_1=-2r_3-r_1
t1=r3−r1,k1=−2r3−r1;
2、
P
1
P_1
P1将
r
1
r_1
r1发送给
P
2
P_2
P2,
P
2
P_2
P2计算
t
2
=
r
1
−
r
2
,
k
2
=
−
2
r
1
−
r
2
t_2=r_1-r_2,k_2=-2r_1-r_2
t2=r1−r2,k2=−2r1−r2;
3、
P
2
P_2
P2将
r
2
r_2
r2发送给
P
3
P_3
P3,
P
3
P_3
P3计算
t
3
=
r
2
−
r
3
,
k
3
=
−
2
r
2
−
r
3
t_3=r_2-r_3,k_3=-2r_2-r_3
t3=r2−r3,k3=−2r2−r3.
证明:
1、
k
1
=
−
2
r
3
−
r
1
=
r
2
−
r
3
−
(
r
1
+
r
2
+
r
3
)
=
t
3
−
v
1
v
2
k_1=-2r_3-r_1=r_2-r_3-(r_1+r_2+r_3)=t_3-v_1v_2
k1=−2r3−r1=r2−r3−(r1+r2+r3)=t3−v1v2;
2、
k
2
=
−
2
r
1
−
r
2
=
r
3
−
r
1
−
(
r
1
+
r
2
+
r
3
)
=
t
1
−
v
1
v
2
k_2=-2r_1-r_2=r_3-r_1-(r_1+r_2+r_3)=t_1-v_1v_2
k2=−2r1−r2=r3−r1−(r1+r2+r3)=t1−v1v2;
3、
k
3
=
−
2
r
2
−
r
3
=
r
1
−
r
2
−
(
r
1
+
r
2
+
r
3
)
=
t
2
−
v
1
v
2
k_3=-2r_2-r_3=r_1-r_2-(r_1+r_2+r_3)=t_2-v_1v_2
k3=−2r2−r3=r1−r2−(r1+r2+r3)=t2−v1v2.
所以 ( t i , k i ) (t_i,k_i) (ti,ki)是 v 1 v 2 v_1v_2 v1v2的 ( 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.