High-Throughput Semi-Honest Secure Three-Party Computation with an Honest Majority
1 Preliminary
1.1 Group, Ring, Field
来自维基百科
1.1.1 Group

1.1.2 Ring

1.1.3 Field

1.1.4 求逆元
1 扩展欧几里得算法
参考:
(1)几种逆元求解方法
(2)逆元 —— 广义化的倒数
原理: 已知正整数 a , b a,b a,b,扩展欧几里得算法可以在求得 a , b a,b a,b最大公约数的同时,找出整数 x , y x,y x,y(可能为负),使它们满足 a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)。
推理: 根据逆元的定义,若 a x ≡ 1 ( m o d p ) ax \equiv1 \ (mod \ p) ax≡1 (mod p),则 x x x为 a a a在模 p p p意义下的逆元。根据求模的过程,式子可以转换为 a x − y p = 1 ax-yp=1 ax−yp=1,将 p p p用 b b b表示, − y -y −y用 y y y代替,则 a x + b y = 1 ax+by=1 ax+by=1。求逆元问题进而变成:给定正整数 a , b a,b a,b,求满足等式 a x + b y = 1 ax+by=1 ax+by=1的 x x x的最小正整数解。
首先,提取
a
a
a和
b
b
b的最大公约数,即令
g
=
g
c
d
(
a
,
b
)
g=gcd(a,b)
g=gcd(a,b),则原等式转化为:
g
(
a
g
x
+
b
g
y
)
=
1
\begin{equation} g(\frac{a}{g}x+\frac{b}{g}y)=1 \end{equation}
g(gax+gby)=1
两个整数相乘要等于1,仅存在两种情况,要么都为1,要么都为-1;因为任意两个数的最大公约数一定为正数,故
g
=
a
g
x
+
b
g
y
=
1
g=\frac{a}{g}x+\frac{b}{g}y=1
g=gax+gby=1。由此我们可以得出结论:若
a
a
a在模
b
b
b(即模
p
p
p)下存在逆元,则要求
a
a
a与
b
b
b(即
p
p
p)互素(
g
=
1
g=1
g=1)。实际上
g
c
d
(
a
,
b
)
=
1
gcd(a,b)=1
gcd(a,b)=1是
a
a
a在模
b
b
b下存在逆元的充分必要条件,此时逆元唯一存在。
接下来我们利用原等式构造递归式,推导如下:
a
x
+
b
y
=
1
=
g
c
d
(
a
,
b
)
=
g
c
d
(
b
,
a
m
o
d
b
)
=
b
x
′
+
(
a
m
o
d
b
)
y
′
=
b
x
′
+
(
a
−
b
⌊
a
b
⌋
)
y
′
=
a
y
′
+
b
(
x
′
−
⌊
a
b
⌋
y
′
)
\begin{align} ax + by &= 1 \\ &= gcd(a,b)\\ &= gcd(b, a \ mod \ b) \\ &= bx' + (a \ mod \ b)y' \\ &= bx' + (a - b\left\lfloor\frac{a}{b}\right\rfloor)y' \\ &= ay' + b(x' - \left\lfloor\frac{a}{b}\right\rfloor y') \end{align}
ax+by=1=gcd(a,b)=gcd(b,a mod b)=bx′+(a mod b)y′=bx′+(a−b⌊ba⌋)y′=ay′+b(x′−⌊ba⌋y′)
根据欧几里得定理(即辗转相除法)有
g
c
d
(
a
,
b
)
=
g
c
d
(
b
,
a
m
o
d
b
)
gcd(a,b)= gcd(b, a \ mod \ b)
gcd(a,b)=gcd(b,a mod b);把gcd中的两项重新带回等式
g
c
d
(
a
,
b
)
=
a
x
+
b
y
gcd(a,b)=ax+by
gcd(a,b)=ax+by,得到新的关于
x
′
x'
x′和
y
′
y'
y′的等式;再根据取模的定义,有
a
m
o
d
b
=
(
a
−
b
⌊
a
b
⌋
)
a \ mod \ b=(a-b\left\lfloor\frac{a}{b}\right\rfloor)
a mod b=(a−b⌊ba⌋);最后按照
a
a
a和
b
b
b合并同类项,可以得到递归式:
{
x
=
y
′
y
=
x
′
−
⌊
a
b
⌋
y
′
\left\{ \begin{aligned} x &= y' \\ y &= x' - \left\lfloor\frac{a}{b}\right\rfloor y' \end{aligned} \right.
⎩
⎨
⎧xy=y′=x′−⌊ba⌋y′
具体例子在参考文献二中。
1.2 Indistinguishability
1.3 Secret sharing and Perfect security
2 The New Protocol
协议适用于模 2 n 2^n 2n环(Ring)上的算术电路和布尔电路(即当n=1时的特殊情况)。该协议仅使用非常简单的环加法和乘法运算,在布尔情况下,可简化为按位AND和XOR。此外,该协议的通信量非常低:每个乘法门发送一个环元素,而加法门没有通信。因此,在布尔情况下,每个与门(AND)发送一个比特位是唯一的通信。
**Correlated randomness(相关随机数):**对于模 2 n 2^n 2n环上,协议假设对于每一个乘法门,三方 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3被分别给予相关随机数 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3,其为环中随机的元素且满足约束 x 1 + x 2 + x 3 = 0 x_1+x_2+x_3=0 x1+x2+x3=0。同理对于布尔情况, x 1 , x 2 , x 3 ∈ { 0 , 1 } x_1,x_2,x_3 \in \{0,1 \} x1,x2,x3∈{0,1}满足 x 1 ⊕ x 2 ⊕ x 3 = 0 x_1 \oplus x_2 \oplus x_3 = 0 x1⊕x2⊕x3=0。
2.1 Securely Computing Boolean Circuits
Secret sharing: 定义 ( 2 , 3 ) − s h a r i n g (2,3)-sharing (2,3)−sharing方案,即将密拆成3个份额,拥有任意2个及以上的份额才可以完整的重建出秘密值。为了共享秘密比特值 v v v,处理者选择三个随机的比特 x 1 , x 2 , x 3 ∈ { 0 , 1 } x_1,x_2,x_3 \in \{0,1 \} x1,x2,x3∈{0,1}满足 x 1 ⊕ x 2 ⊕ x 3 = 0 x_1 \oplus x_2 \oplus x_3 = 0 x1⊕x2⊕x3=0,则有:
- P 1 P_1 P1 的份额为比特对 ( x 1 , a 1 ) (x_1,a_1) (x1,a1),其中 a 1 = x 3 ⊕ v a_1=x_3 \oplus v a1=x3⊕v;
- P 2 P_2 P2 的份额为比特对 ( x 2 , a 2 ) (x_2,a_2) (x2,a2),其中 a 2 = x 1 ⊕ v a_2=x_1 \oplus v a2=x1⊕v;
- P 3 P_3 P3 的份额为比特对 ( x 3 , a 3 ) (x_3,a_3) (x3,a3),其中 a 3 = x 2 ⊕ v a_3=x_2 \oplus v a3=x2⊕v;
很明显,任何一个份额都不会透露任何关于 v v v的信息,此外,任意两个份额都足以获得 v v v;例如,给定两个份额 ( x 1 , a 1 ) , ( x 2 , a 2 ) (x_1,a_1),(x_2,a_2) (x1,a1),(x2,a2),我们可以计算出 v = a 2 ⊕ x 1 v=a_2 \oplus x_1 v=a2⊕x1。
XOR (addition) gates: 令 ( x 1 , a 1 ) , ( x 2 , a 2 ) , ( x 3 , a 3 ) (x_1,a_1),(x_2,a_2),(x_3,a_3) (x1,a1),(x2,a2),(x3,a3)为 v 1 v_1 v1的秘密共享, ( y 1 , b 1 ) , ( y 2 , b 2 ) , ( y 3 , b 3 ) (y_1,b_1),(y_2,b_2),(y_3,b_3) (y1,b1),(y2,b2),(y3,b3)为 v 2 v_2 v2的秘密共享。为了计算 v 1 ⊕ v 2 v_1 \oplus v_2 v1⊕v2的秘密共享,每个参与方 P i P_i Pi本地的计算 ( z i , y i ) (z_i,y_i) (zi,yi),其中 z i = x i ⊕ y i z_i=x_i \oplus y_i zi=xi⊕yi, c i = a i ⊕ b i c_i=a_i \oplus b_i ci=ai⊕bi,此过程参与方不需要通讯。
验证结果 v 1 ⊕ v 2 v_1 \oplus v_2 v1⊕v2的秘密共享是否构成 ( 2 , 3 ) − s h a r i n g (2,3)-sharing (2,3)−sharing。首先观察到 z 1 ⊕ z 2 ⊕ z 3 = 0 z_1 \oplus z_2 \oplus z_3 = 0 z1⊕z2⊕z3=0;因为 x 1 ⊕ x 2 ⊕ x 3 = 0 x_1 \oplus x_2 \oplus x_3=0 x1⊕x2⊕x3=0且 y 1 ⊕ y 2 ⊕ y 3 = 0 y_1 \oplus y_2 \oplus y_3=0 y1⊕y2⊕y3=0。接下来观察到对于每个 i ∈ { 1 , 2 , 3 } i \in \{1,2,3\} i∈{1,2,3}有 c i = z i − 1 ⊕ ( v 1 ⊕ v 2 ) c_i=z_{i-1} \oplus (v_1 \oplus v_2) ci=zi−1⊕(v1⊕v2),其中当 i = 1 i=1 i=1时, i − 1 = 3 i-1=3 i−1=3;例如 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 \oplus b_1=x_3 \oplus v_1 \oplus y_3 \oplus v_2=(x_3 \oplus y_3) \oplus (v_1 \oplus v_2)=z_3 \oplus (v_1 \oplus v_2) c1=a1⊕b1=x3⊕v1⊕y3⊕v2=(x3⊕y3)⊕(v1⊕v2)=z3⊕(v1⊕v2)。综上满足 ( 2 , 3 ) − s h a r i n g (2,3)-sharing (2,3)−sharing。
AND (multiplication) gates: 该协议分为两步,第一步,各方计算AND输入位的简单 ( 3 , 3 ) X O R − s h a r i n g (3,3) XOR-sharing (3,3)XOR−sharing;第二步将 ( 3 , 3 ) − s h a r i n g (3,3)-sharing (3,3)−sharing转化为所需的 ( 2 , 3 ) − s h a r i n g (2,3)-sharing (2,3)−sharing。
令 ( x 1 , a 1 ) , ( x 2 , a 2 ) , ( x 3 , a 3 ) (x_1,a_1),(x_2,a_2),(x_3,a_3) (x1,a1),(x2,a2),(x3,a3)为 v 1 v_1 v1的秘密共享, ( y 1 , b 1 ) , ( y 2 , b 2 ) , ( y 3 , b 3 ) (y_1,b_1),(y_2,b_2),(y_3,b_3) (y1,b1),(y2,b2),(y3,b3)为 v 2 v_2 v2的秘密共享。我们假设 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3各自持有相关随机数 α , β , γ \alpha,\beta,\gamma α,β,γ,满足 α ⊕ β ⊕ γ = 0 \alpha\oplus\beta\oplus\gamma=0 α⊕β⊕γ=0。各方计算 ( 2 , 3 ) − s h a r i n g (2,3)-sharing (2,3)−sharing如下( a a a与 b b b的乘积或与用 a b ab ab表示):
Step 1 - compute ( 3 , 3 ) − s h a r i n g (3,3)-sharing (3,3)−sharing
(a) P 1 P_1 P1 计算 r 1 = x 1 y 1 ⊕ a 1 b 1 ⊕ α r_1=x_1y_1 \oplus a_1b_1 \oplus \alpha r1=x1y1⊕a1b1⊕α,并发送 r 1 r_1 r1到 P 2 P_2 P2;
(b) P 2 P_2 P2 计算 r 2 = x 2 y 2 ⊕ a 2 b 2 ⊕ β r_2=x_2y_2 \oplus a_2b_2 \oplus \beta r2=x2y2⊕a2b2⊕β,并发送 r 2 r_2 r2到 P 3 P_3 P3;
© P 3 P_3 P3 计算 r 3 = x 3 y 3 ⊕ a 3 b 3 ⊕ γ r_3=x_3y_3 \oplus a_3b_3 \oplus \gamma r3=x3y3⊕a3b3⊕γ,并发送 r 3 r_3 r3到 P 1 P_1 P1;
这些消息是并行计算和发送的。
Step 2 - compute ( 2 , 3 ) − s h a r i n g (2,3)-sharing (2,3)−sharing
该步骤仅需用Step 1中的消息进行本地计算。
(a) P 1 P_1 P1 保存 ( z 1 , c 1 ) (z_1,c_1) (z1,c1),其中 z 1 = r 1 ⊕ r 3 z_1=r_1\oplus r_3 z1=r1⊕r3, c 1 = r 1 c_1=r_1 c1=r1;
(b) P 2 P_2 P2 保存 ( z 2 , c 2 ) (z_2,c_2) (z2,c2),其中 z 2 = r 2 ⊕ r 1 z_2=r_2\oplus r_1 z2=r2⊕r1, c 2 = r 2 c_2=r_2 c2=r2;
© P 3 P_3 P3 保存 ( z 3 , c 3 ) (z_3,c_3) (z3,c3),其中 z 3 = r 3 ⊕ r 2 z_3=r_3\oplus r_2 z3=r3⊕r2, c 3 = r 3 c_3=r_3 c3=r3;
Explanation of Step 1: 证明Step 1中定义的
r
1
,
r
2
,
r
3
r_1,r_2,r_3
r1,r2,r3是
v
1
v
2
v_1v_2
v1v2的
(
3
,
3
)
−
s
h
a
r
i
n
g
(3,3)-sharing
(3,3)−sharing,即意味着
r
1
⊕
r
2
⊕
r
3
=
v
1
∧
v
2
r_1\oplus r_2\oplus r_3=v_1 \wedge v_2
r1⊕r2⊕r3=v1∧v2。首先观察到:
a
1
b
1
=
(
x
3
⊕
v
1
)
(
y
3
⊕
v
2
)
=
x
3
y
3
⊕
x
3
v
2
⊕
y
2
v
1
⊕
v
1
v
2
\begin{equation}\tag{1} a_1b_1 = (x_3 \oplus v_1)(y_3 \oplus v_2)=x_3y_3 \oplus x_3v_2 \oplus y_2v_1 \oplus v_1v_2\end{equation}
a1b1=(x3⊕v1)(y3⊕v2)=x3y3⊕x3v2⊕y2v1⊕v1v2(1)
同理可得 a 2 b 2 = x 1 y 1 ⊕ x 1 v 2 ⊕ y 1 v 1 ⊕ v 1 v 2 a_2b_2=x_1y_1 \oplus x_1v_2 \oplus y_1v_1 \oplus v_1v_2 a2b2=x1y1⊕x1v2⊕y1v1⊕v1v2和 a 3 b 3 = x 2 y 2 ⊕ x 2 v 2 ⊕ y 2 v 1 ⊕ v 1 v 2 a_3b_3=x_2y_2 \oplus x_2v_2 \oplus y_2v_1 \oplus v_1v_2 a3b3=x2y2⊕x2v2⊕y2v1⊕v1v2,因此有:

其中的第二个等式是根据 α ⊕ β ⊕ γ = 0 \alpha\oplus\beta\oplus\gamma=0 α⊕β⊕γ=0得来,第三个等式是根据等式 (1) 得来,最后一个等式是因为 x 1 ⊕ x 2 ⊕ x 3 = 0 x_1 \oplus x_2 \oplus x_3=0 x1⊕x2⊕x3=0且 y 1 ⊕ y 2 ⊕ y 3 = 0 y_1 \oplus y_2 \oplus y_3=0 y1⊕y2⊕y3=0。
Explanation of Step 2: 证明Step 2的结果是 v 1 v 2 v_1v_2 v1v2的 ( 2 , 3 ) − s h a r i n g (2,3)-sharing (2,3)−sharing,这需要证明(1) z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3满足 z 1 ⊕ z 2 ⊕ z 3 = 0 z_1 \oplus z_2 \oplus z_3 = 0 z1⊕z2⊕z3=0;(2) c 1 , c 2 , c 3 c_1,c_2,c_3 c1,c2,c3满足定义的形式。
首先, z 1 ⊕ z 2 ⊕ z 3 = ( r 1 ⊕ r 3 ) ⊕ ( r 2 ⊕ r 1 ) ⊕ ( r 3 ⊕ r 2 ) = 0 z_1 \oplus z_2 \oplus z_3 = (r_1 \oplus r_3) \oplus (r_2 \oplus r_1) \oplus (r_3 \oplus r_2) = 0 z1⊕z2⊕z3=(r1⊕r3)⊕(r2⊕r1)⊕(r3⊕r2)=0 得证。然后,根据Step 1中可知 c 1 ⊕ c 2 ⊕ c 3 = r 1 ⊕ r 2 ⊕ r 3 = v 1 v 2 c_1 \oplus c_2 \oplus c_3 = r_1 \oplus r_2 \oplus r_3 = v_1v_2 c1⊕c2⊕c3=r1⊕r2⊕r3=v1v2,且满足 c 1 = r 1 = v 1 v 2 ⊕ r 2 ⊕ r 3 c_1 = r_1 = v_1v_2 \oplus r_2 \oplus r_3 c1=r1=v1v2⊕r2⊕r3,然而 r 2 ⊕ r 3 = z 3 r_2 \oplus r_3 = z_3 r2⊕r3=z3(Step 2中定义的),因此有 c 1 = v 1 v 2 ⊕ z 3 c_1 = v_1v_2 \oplus z_3 c1=v1v2⊕z3 满足定义的形式。 c 2 c_2 c2与 c 3 c_3 c3的证明过程相同。
2.2 Generating Correlated Randomness
协议依赖于一个事实:对于每一个AND门,各方持有随机的比特 α , β , γ ∈ { 0 , 1 } \alpha,\beta,\gamma \in \{0,1\} α,β,γ∈{0,1}且满足 α ⊕ β ⊕ γ = 0 \alpha\oplus\beta\oplus\gamma=0 α⊕β⊕γ=0。本节将讲述一种高效方式生成 α , β , γ \alpha,\beta,\gamma α,β,γ。
Information-theoretic correlated randomness: 信息论相关随机数。各方 P i P_i Pi 简单的选择一个随机位 ρ i ∈ { 0 , 1 } \rho_i \in \{0,1\} ρi∈{0,1},并将其发送给 P i + 1 P_{i+1} Pi+1( P 3 P_3 P3发送给 P 1 P_1 P1);然后各方将自己的随机数与收到随机数进行异或,即: P 1 P_1 P1计算 α = ρ 3 ⊕ ρ 1 \alpha=\rho_3 \oplus \rho_1 α=ρ3⊕ρ1, P 2 P_2 P2计算 β = ρ 1 ⊕ ρ 2 \beta=\rho_1 \oplus \rho_2 β=ρ1⊕ρ2, P 3 P_3 P3计算 γ = ρ 2 ⊕ ρ 3 \gamma = \rho_2 \oplus \rho_3 γ=ρ2⊕ρ3,可以发现得到的随机数满足 α ⊕ β ⊕ γ = 0 \alpha\oplus\beta\oplus\gamma=0 α⊕β⊕γ=0。该方法不仅优雅简洁,而且在只有一个腐化方(corrupted)的半诚实敌手模型下是安全的(假设 P 1 P_1 P1是腐化方,由于他没有 ρ 2 \rho_2 ρ2,那么对于通过 ρ 2 \rho_2 ρ2计算出的 β \beta β和 γ \gamma γ, P 1 P_1 P1仅知道 β ⊕ γ = α \beta \oplus \gamma = \alpha β⊕γ=α,其他一无所知)。但该方法存在一次参与方之间的通信,会导致AND门协议的通信量翻倍,虽然是很少的通信,但仍然成为了协议通讯次数的瓶颈,故我们将设计新的方法。
Computational correlated randomness: 设计了一个在短的初始化之外无需任何交互的情况下,安全计算相关随机数的方法。这使得AND门协议的通信仍然只传输一个比特。令 κ \kappa κ为安全参数, F : { 0 , 1 } κ × { 0 , 1 } κ → { 0 , 1 } F:\{0,1\}^\kappa \times \{0,1\}^\kappa \rarr \{0,1\} F:{0,1}κ×{0,1}κ→{0,1}为输出一个比特位的伪随机函数,步骤如下:
1. Init:
(a) 各方 P i P_i Pi选择一个 κ \kappa κ位的随机数 k i ∈ { 0 , 1 } κ k_i \in \{0,1\}^\kappa ki∈{0,1}κ(作为伪随机函数的密钥);
(b) P i P_i Pi发送 k i k_i ki至 P i − 1 P_{i-1} Pi−1,当 i = 1 i=1 i=1时, i − 1 = 3 i-1=3 i−1=3。
此时 P 1 P_1 P1持有 k 1 , k 2 k_1,k_2 k1,k2; P 2 P_2 P2持有 k 2 , k 3 k_2,k_3 k2,k3; P 3 P_3 P3持有 k 3 , k 1 k_3,k_1 k3,k1。
2. GetNextBit:
给定唯一标识 i d ∈ { 0 , 1 } κ id \in \{0,1\}^\kappa id∈{0,1}κ,
(a) P 1 P_1 P1 计算 α = F k 1 ( i d ) ⊕ F k 2 ( i d ) \alpha = F_{k_1}(id) \oplus F_{k_2}(id) α=Fk1(id)⊕Fk2(id);
(b) P 2 P_2 P2 计算 β = F k 2 ( i d ) ⊕ F k 3 ( i d ) \beta = F_{k_2}(id) \oplus F_{k_3}(id) β=Fk2(id)⊕Fk3(id);
© P 3 P_3 P3 计算 γ = F k 3 ( i d ) ⊕ F k 1 ( i d ) \gamma = F_{k_3}(id) \oplus F_{k_1}(id) γ=Fk3(id)⊕Fk1(id);
不难得出 α ⊕ β ⊕ γ = 0 \alpha\oplus\beta\oplus\gamma=0 α⊕β⊕γ=0。除此之外, P 1 P_1 P1不知道 k 3 k_3 k3进而无法知晓 β \beta β和 γ \gamma γ,因此 β \beta β和 γ \gamma γ对 P 1 P_1 P1是伪随机的,满足约束 β ⊕ γ = α \beta \oplus \gamma = \alpha β⊕γ=α。实际运用中, i d id id可以是一个计数器,所有各方在每次调用GetNextBit时都会在本地递增。
2.3 The Ring Modulo 2 n 2^n 2n and Fields
上一节介绍的协议是适用于布尔电路,然而在某些情况下,使用算术电路解决问题效率要高得多。在本节中,我们展示了如何将上述协议推广到模 2 n 2^n 2n环和大小大于2的任意字段的一般情况。在模 2 n 2^n 2n环的协议中,很明显,对于任意有限域和环,存在 3 − 1 3^{-1} 3−1一切都成立(即存在3的逆元),这是由于 g c d ( 3 , 2 n ) = 1 gcd(3,2^n) = 1 gcd(3,2n)=1,参考章节1.1.4,故除以3的运算(乘3的逆元)都可以进行。
(2, 3) - secret sharing: 为了共享模 2 n 2^n 2n环元素 v v v,处理者选择三个随机元素 x 1 , x 2 , x 3 ∈ Z 2 n x_1,x_2,x_3 \in \mathbb{Z}_{2^n} x1,x2,x3∈Z2n满足约束 x 1 + x 2 + x 3 = 0 x_1+x_2+x_3=0 x1+x2+x3=0,有:
- P 1 P_1 P1 的份额为 ( x 1 , a 1 ) (x_1,a_1) (x1,a1),其中 a 1 = x 3 − v a_1=x_3 - v a1=x3−v;
- P 2 P_2 P2 的份额为 ( x 2 , a 2 ) (x_2,a_2) (x2,a2),其中 a 2 = x 1 − v a_2=x_1 - v a2=x1−v;
- P 3 P_3 P3 的份额为 ( x 3 , a 3 ) (x_3,a_3) (x3,a3),其中 a 3 = x 2 − v a_3=x_2 - v a3=x2−v;
与布尔情况一样,很容易看出,每个份额都不透露v,任何两个份额都足以重建v。以 P 1 P_1 P1为例说明安全性: P 1 P_1 P1方的份额由一对 ( x 1 , a 1 ) (x_1,a_1) (x1,a1)组成,其中 a 1 = x 3 − v a_1=x_3−v a1=x3−v。由于 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3在 x 1 + x 2 + x 3 = 0 x_1+x_2+x_3=0 x1+x2+x3=0的约束下是随机的,这相当于 x 1 x_1 x1和 x 3 x_3 x3是随机独立选择的,然后 x 2 x_2 x2被选择等于 − x 1 − x 3 −x_1−x_3 −x1−x3。因此, P 1 P_1 P1份额中的 a 1 a_1 a1是使用随机密钥 x 3 x_3 x3对 v v v进行的一次性填充加密, x 1 x_1 x1是独立的随机值。因此, P 1 P_1 P1的份额没有揭示任何关于 v v v的信息。这意味着:
引理 2.1: 对于任意的两个值 v a , v b ∈ Z 2 n v_a,v_b \in \mathbb{Z}_{2^n} va,vb∈Z2n以及任意的 i ∈ { 1 , 2 , 3 } i \in \{1,2,3\} i∈{1,2,3}, P i P_i Pi对 v a v_a va份额 ( x i , a i ) (x_i,a_i) (xi,ai)和对 v b v_b vb份额 ( y i , b i ) (y_i,b_i) (yi,bi)的概率分布相同。
Addition gates: 与布尔情况一样,加法门是通过将模 2 n 2^n 2n的份额在本地进行相加来计算的。
Multiplication gates: 令 ( x 1 , a 1 ) , ( x 2 , a 2 ) , ( x 3 , a 3 ) (x_1,a_1),(x_2,a_2),(x_3,a_3) (x1,a1),(x2,a2),(x3,a3)为 v 1 v_1 v1的秘密共享, ( y 1 , b 1 ) , ( y 2 , b 2 ) , ( y 3 , b 3 ) (y_1,b_1),(y_2,b_2),(y_3,b_3) (y1,b1),(y2,b2),(y3,b3)为 v 2 v_2 v2的秘密共享,假设 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3各自持有相关随机数 α , β , γ \alpha,\beta,\gamma α,β,γ,满足 α + β + γ = 0 \alpha+\beta+\gamma=0 α+β+γ=0,具体过程如下:
Step 1 - compute ( 3 , 3 ) − s h a r i n g (3,3)-sharing (3,3)−sharing
(a) P 1 P_1 P1计算 r 1 = a 1 b 1 − x 1 y 1 + α 3 r_1=\frac{a_1b_1-x_1y_1+\alpha}{3} r1=3a1b1−x1y1+α,并发送 r 1 r_1 r1至 P 2 P_2 P2;
(b) P 2 P_2 P2计算 r 2 = a 2 b 2 − x 2 y 2 + β 3 r_2=\frac{a_2b_2-x_2y_2+\beta}{3} r2=3a2b2−x2y2+β,并发送 r 2 r_2 r2至 P 3 P_3 P3;
© P 3 P_3 P3计算 r 3 = a 3 b 3 − x 3 y 3 + γ 3 r_3=\frac{a_3b_3-x_3y_3+\gamma}{3} r3=3a3b3−x3y3+γ,并发送 r 3 r_3 r3至 P 1 P_1 P1;
Step 2 - compute ( 2 , 3 ) − s h a r i n g (2,3)-sharing (2,3)−sharing
该步骤仅需用Step 1中的消息进行本地计算。
(a) P 1 P_1 P1 保存 ( z 1 , c 1 ) (z_1,c_1) (z1,c1),其中 z 1 = r 3 − r 1 z_1=r_3 - r_1 z1=r3−r1, c 1 = − 2 r 3 − r 1 c_1=-2r_3-r_1 c1=−2r3−r1;
(b) P 2 P_2 P2 保存 ( z 2 , c 2 ) (z_2,c_2) (z2,c2),其中 z 2 = r 1 − r 1 z_2=r_1 - r_1 z2=r1−r1, c 2 = − 2 r 1 − r 2 c_2=-2r_1-r_2 c2=−2r1−r2;
© P 3 P_3 P3 保存 ( z 3 , c 3 ) (z_3,c_3) (z3,c3),其中 z 3 = r 2 − r 3 z_3=r_2 - r_3 z3=r2−r3, c 3 = − 2 r 2 − r 3 c_3=-2r_2-r_3 c3=−2r2−r3;
Explanation of Step 1: 证明Step 1中定义的
r
1
,
r
2
,
r
3
r_1,r_2,r_3
r1,r2,r3是
v
1
v
2
v_1v_2
v1v2的
(
3
,
3
)
−
s
h
a
r
i
n
g
(3,3)-sharing
(3,3)−sharing,即意味着
r
1
+
r
2
+
r
3
=
v
1
v
2
r_1 + r_2 + r_3=v_1v_2
r1+r2+r3=v1v2。首先观察到:
a
1
b
1
=
(
x
3
−
v
1
)
(
y
3
−
v
2
)
=
x
3
y
3
−
x
3
v
2
−
y
2
v
1
+
v
1
v
2
\begin{equation}\tag{2} a_1b_1 = (x_3 - v_1)(y_3 - v_2)=x_3y_3 - x_3v_2 - y_2v_1 + v_1v_2\end{equation}
a1b1=(x3−v1)(y3−v2)=x3y3−x3v2−y2v1+v1v2(2)
同理可得
a
2
b
2
=
x
1
y
1
−
x
1
v
2
−
y
1
v
1
+
v
1
v
2
a_2b_2=x_1y_1 - x_1v_2 - y_1v_1 + v_1v_2
a2b2=x1y1−x1v2−y1v1+v1v2和
a
3
b
3
=
x
2
y
2
−
x
2
v
2
−
y
2
v
1
+
v
1
v
2
a_3b_3=x_2y_2 - x_2v_2 - y_2v_1 + v_1v_2
a3b3=x2y2−x2v2−y2v1+v1v2,因此有:

Explanation of Step 2: 证明Step 2的结果是
v
1
v
2
v_1v_2
v1v2的
(
2
,
3
)
−
s
h
a
r
i
n
g
(2,3)-sharing
(2,3)−sharing,这需要证明(1)
z
1
,
z
2
,
z
3
z_1,z_2,z_3
z1,z2,z3满足
z
1
+
z
2
+
z
3
=
0
m
o
d
2
n
z_1 + z_2 + z_3 = 0 \ mod \ 2^n
z1+z2+z3=0 mod 2n;(2)
c
1
,
c
2
,
c
3
c_1,c_2,c_3
c1,c2,c3满足定义的形式。首先,
z
1
+
z
2
+
z
3
=
(
r
3
−
r
1
)
+
(
r
1
−
r
2
)
+
(
r
2
−
r
3
)
=
0
z_1 + z_2 + z_3 = (r_3 - r_1) + (r_1 - r_2) + (r_2 - r_3) = 0
z1+z2+z3=(r3−r1)+(r1−r2)+(r2−r3)=0得证。然后,对于
P
1
P_1
P1有
c
1
=
−
2
r
3
−
r
1
=
−
r
3
−
r
3
−
r
1
−
r
2
+
r
2
=
(
r
2
−
r
3
)
−
(
r
1
+
r
2
+
r
3
)
=
z
3
−
v
1
v
2
\begin{align} c_1&=-2r_3-r_1 \\ &=-r_3-r_3-r_1-r_2+r_2 \\ &=(r_2-r_3)-(r_1+r_2+r_3) \\ &=z_3-v_1v_2 \end{align}
c1=−2r3−r1=−r3−r3−r1−r2+r2=(r2−r3)−(r1+r2+r3)=z3−v1v2
满足要求,
P
2
,
P
3
P_2,P_3
P2,P3同理可证。
Generating correlated randomness: 各方使用第2.2节所述相同的(计算)方法,但有以下差异。我们假定 F k F_k Fk是将串映射到 Z 2 n \mathbb{Z}_{2^n} Z2n(或等价于 { 0 , 1 } n \{0,1\}^n {0,1}n)的伪随机函数,那么:
(a) P 1 P_1 P1 计算 α = F k 1 ( i d ) − F k 2 ( i d ) \alpha = F_{k_1}(id) - F_{k_2}(id) α=Fk1(id)−Fk2(id);
(b) P 2 P_2 P2 计算 β = F k 2 ( i d ) − F k 3 ( i d ) \beta = F_{k_2}(id) - F_{k_3}(id) β=Fk2(id)−Fk3(id);
© P 3 P_3 P3 计算 γ = F k 3 ( i d ) − F k 1 ( i d ) \gamma = F_{k_3}(id) - F_{k_1}(id) γ=Fk3(id)−Fk1(id);
3 Security for Semi-Honest Adversaries
主要讲的是将理想功能(Functionality)与真实协议(Protocol)之间的验证关系:若真实情况下腐化方集合的视角(View)与理想情况下仿真者(Simulator)使用功能函数 F F F,模拟出的腐化方集合的视角在概率分布上是不可区分的,那么证明了该协议在半诚实攻击者存在的条件下安全的实现了功能 F F F。