BGW算法由Ben-Or等人于1988年提出来的,是早期支持多方安全计算的协议之一,其算法原理是基于Shamir秘密共享机制,BGW算法支持加法、数乘以及乘法运算
Shamir秘密共享原理可参考:shamir算法原理
Shamir秘密共享算法实现可参考:shamir算法实现
基于Shamir秘密共享机制的MPC原理其实很简单,看下面例子:
WXYZ分别拥有秘密abcd,现在想秘密计算abcd的和,可以这样做,W将a分成四份,分别将a2/a3/a4发送给XYZ,XYZ执行同样操作;然后W计算a1+b1+c1+d1,XYZ执行同样的计算,最后汇聚WXYZ的计算结果即可秘密得到abcd的和
BGW思想和上述的例子差不多,n个参与者Pi(i=1,2,…,n)拥有各自的秘密si,pi采用随机t次多项式fi(x)=si+a1,ix1+…+at,ixt将秘密si分享,并将<xj,fi(xj)>通过安全信道发送给pj,随后n个参与者通过BGW算法可以计算秘密值之间的加法、数乘以及乘法
下面具体介绍BGW的加法、数乘以及乘法运算,为方便叙述,考察一个算术门G,其具有两个输入:a和b,a和b分别被分享在两个t次多项式fa(x)和fb(x)上,并将<xi,yi=fa(xi),zi=fb(xi)>发送给Pi
f
a
(
x
)
=
a
+
a
1
X
1
+
a
2
X
2
+
.
.
.
+
a
t
X
t
f
b
(
x
)
=
b
+
b
1
X
1
+
b
2
X
2
+
.
.
.
+
b
t
X
t
f_a(x) = a + a_1X^1+a_2X^2+...+a_tX^t \\ f_b(x) = b + b_1X^1+b_2X^2+...+b_tX^t
fa(x)=a+a1X1+a2X2+...+atXtfb(x)=b+b1X1+b2X2+...+btXt
加法运算:a + b
令
H
(
x
)
=
f
a
(
x
)
+
f
b
(
x
)
H(x) = f_a(x)+f_b(x)
H(x)=fa(x)+fb(x)
则
h
(
x
)
=
∑
i
=
1
t
+
1
y
i
∏
j
=
1
,
j
!
=
i
t
+
1
x
−
x
i
x
i
−
x
j
+
∑
i
=
1
t
+
1
z
i
∏
j
=
1
,
j
!
=
i
t
+
1
x
−
x
i
x
i
−
x
j
=
∑
i
=
1
t
+
1
(
y
i
+
z
i
)
∏
j
=
1
,
j
!
=
i
t
+
1
−
x
i
x
i
−
x
j
h(x) = \sum_{i=1}^{t+1}{y_i\prod_{j=1,j!=i}^{t+1}{\frac{x-x_i}{x_i-x_j}}}+\sum_{i=1}^{t+1}{z_i\prod_{j=1,j!=i}^{t+1}{\frac{x-x_i}{x_i-x_j}}}=\sum_{i=1}^{t+1}{(y_i+z_i)\prod_{j=1,j!=i}^{t+1}{\frac{-x_i}{x_i-x_j}}}
h(x)=i=1∑t+1yij=1,j!=i∏t+1xi−xjx−xi+i=1∑t+1zij=1,j!=i∏t+1xi−xjx−xi=i=1∑t+1(yi+zi)j=1,j!=i∏t+1xi−xj−xi
所以t+1个参与者利用<xi,yi+zi>即可求得h(x),然后计算 h(0)即可得到a+b的和
数乘运算: c * a
同加法运算类似,令
H
(
x
)
=
c
∗
f
a
(
x
)
H(x) = c*f_a(x)
H(x)=c∗fa(x)
则t+1个参与者利用<xi,c * yi>即可求得h(x),然后计算 h(0)即可得到 c * a 的结果
乘法运算:
令
H
(
x
)
=
f
a
(
x
)
∗
f
b
(
x
)
H(x) = f_a(x) * f_b(x)
H(x)=fa(x)∗fb(x)
由于两个多项式相乘,h(x)的阶最高可能达到2t,超过秘密恢复的阈值(BGW要求2t+1<=n),所以这时要进行降阶处理,我们有如下等式成立
可知 A是一个范德蒙矩阵,其可逆,设逆为
则可得
a
b
=
λ
1
∗
H
(
x
1
)
+
λ
2
∗
H
(
X
2
)
+
.
.
.
λ
2
t
+
1
∗
H
(
x
2
t
+
1
)
ab = \lambda_1*H(x_1)+\lambda_2*H(X_2) + ... \lambda_{2t+1}*H(x_{2t+1})
ab=λ1∗H(x1)+λ2∗H(X2)+...λ2t+1∗H(x2t+1)
λ 1 、 λ 2 、 . . . 、 λ 2 t + 1 \lambda_1、\lambda_2、...、\lambda_{2t+1} λ1、λ2、...、λ2t+1是公开参数, H x 1 、 H x 2 、 . . . 、 H x 2 t + 1 H_{x_1}、H_{x_2}、...、H_{x_{2t+1}} Hx1、Hx2、...、Hx2t+1由各自的参与者Pi拥有,且不可泄露,然后上述问题可以看成每个参与者拥有秘密H(xi)的BGW加法和乘法问题,可以选择新的t阶多项式将秘密H(xi)分发,从而达到阶级效果