参考文献:
- Bellare M, Hoang V T, Rogaway P. Foundations of garbled circuits[C]//Proceedings of the 2012 ACM conference on Computer and communications security. 2012: 784-796.
- Zahur S, Rosulek M, Evans D. Two halves make a whole[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, Berlin, Heidelberg, 2015: 220-250.
- Biçer O. Efficiency Optimizations on Yao’s Garbled Circuits and Their Practical Applications[J]. arXiv preprint arXiv:1703.03473, 2017.
文章目录
Garbling Schemes Abstraction
2012年,Bellare, Hoang, Rogaway 给出了混淆电路协议的抽象。
一个 Garbling Scheme 是算法四元组 ( G b , E n , E v , D e ) (Gb,En,Ev,De) (Gb,En,Ev,De),
- G b ( 1 k , f ) → ( F , e , d ) Gb(1^k,f) \to (F,e,d) Gb(1k,f)→(F,e,d):安全参数 k k k,将布尔电路 f f f转化为混淆电路 F F F, e e e是编码信息(encoding information), d d d是解码信息(decoding information)
- E n ( e , x ) → X En(e,x) \to X En(e,x)→X: x x x是明文输入,根据 e e e编码为混淆值 X X X
- E v ( F , X ) → Y Ev(F,X) \to Y Ev(F,X)→Y:将 X X X输入混淆电路 F F F,运算后结果为 Y Y Y
- D e ( d , Y ) → y De(d,Y) \to y De(d,Y)→y: Y Y Y是混淆输出,根据 d d d解码为明文 y y y
安全属性:
- Privacy: ( F , X , d ) (F,X,d) (F,X,d)不会泄露比 f ( x ) f(x) f(x)更多的关于 x x x的信息
- Obliviousness: ( F , X ) (F,X) (F,X)不会泄露 x x x的任何信息
- Authenticity:只给定 ( F , X ) (F,X) (F,X),任何敌手都无法计算一个 Y ′ ≠ E v ( F , X ) Y' \neq Ev(F,X) Y′=Ev(F,X)使得 D e ( d , Y ′ ) ≠ ⊥ De(d,Y') \neq \perp De(d,Y′)=⊥,除了可忽略的概率
Secret Shares
混淆电路的任意一条线
w
w
w,我们将线标签
k
w
0
,
k
w
1
k_w^0,k_w^1
kw0,kw1和置换比特(permute bit)
p
w
p_w
pw写在一起:
W
w
0
=
k
w
0
∥
p
w
W
w
1
=
k
w
1
∥
(
p
w
⊕
1
)
\begin{aligned} W_w^0 &= k_w^0 \| p_w\\ W_w^1 &= k_w^1 \| (p_w \oplus 1)\\ \end{aligned}
Ww0Ww1=kw0∥pw=kw1∥(pw⊕1)
值
v
w
=
0
v_w=0
vw=0的选择比特(select bit)为
s
w
=
p
w
s_w = p_w
sw=pw,而值
v
w
=
1
v_w=1
vw=1的选择比特为
s
w
=
p
w
⊕
1
s_w = p_w \oplus 1
sw=pw⊕1。易知,
v
w
=
s
w
⊕
p
w
v_w = s_w \oplus p_w
vw=sw⊕pw,秘密共享为:
[
v
w
]
=
(
p
w
,
p
w
⊕
v
w
)
[v_w] = (p_w,\, p_w \oplus v_w)
[vw]=(pw,pw⊕vw)
使用 Free XOR 技术,随机选择 k w 0 k_w^0 kw0,那么 k w 1 = k w 0 ⊕ R k_w^1 = k_w^0 \oplus R kw1=kw0⊕R。或者说,随机选择 W w 0 W_w^0 Ww0(包含了 p w p_w pw),然后设置 l s b ( R ) = 1 lsb(R)=1 lsb(R)=1,那么 W w 1 = W w 0 ⊕ R W_w^1 = W_w^0 \oplus R Ww1=Ww0⊕R
此时的秘密共享为:
[
v
w
]
=
(
W
w
0
,
W
w
0
⊕
v
w
⋅
R
)
[v_w] = (W_w^0,\, W_w^0 \oplus v_w \cdot R)
[vw]=(Ww0,Ww0⊕vw⋅R)
可以提取 l s b ( ⋅ ) lsb(\cdot) lsb(⋅)重新得到 ( p w , p w ⊕ v w ) (p_w,\, p_w \oplus v_w) (pw,pw⊕vw)
AND Gate
令 Alice 是混淆电路的生成者,令 Bob 是混淆电路的计算者。
一个 AND Gate,它的输入线为 a , b a,b a,b,输出线为 c c c
简记: a = 0 a=0 a=0的混淆值为 A A A, b = 0 b=0 b=0的混淆值为 B B B, c = 0 c=0 c=0的混淆值为 C C C,Free XOR 技术的全局偏移为 R R R
Generator Half Gate
这个所谓的 Generator Half Gate 是指:Alice 知道其中一条输入线(不失一般性的, a a a)的明文值,只知道另一条线(对应的, b b b)的混淆值。
为了计算 c = a ∧ b c = a \wedge b c=a∧b,因为 Alice 知道 a a a的值,因此它是关于 b b b的一元门(unary gate),
- 如果 a = 0 a=0 a=0,那么这个一元门就是 c = 0 c=0 c=0
- 如果 a = 1 a=1 a=1,那么这个一元门就是 c = b c=b c=b
Alice 构造这个一元门的混淆表:
H
(
B
)
⊕
C
H
(
B
⊕
R
)
⊕
C
⊕
a
R
\begin{aligned} H(B) \oplus C\\ H(B \oplus R) \oplus C \oplus aR\\ \end{aligned}
H(B)⊕CH(B⊕R)⊕C⊕aR
Bob 持有 b b b上的混淆值,但无法区分 b = 0 / 1 b=0/1 b=0/1,
-
如果 Bob 持有 B B B,那么可以得到 C C C,对应 c = a ∧ 0 = 0 c=a \wedge 0 = 0 c=a∧0=0
-
如果 Bob 持有 B ⊕ R B \oplus R B⊕R,那么可以得到 C ⊕ a R C \oplus aR C⊕aR,对应 c = a ∧ 1 = a c=a \wedge 1 = a c=a∧1=a
利用 P&P 技术和 GRR3 技术,Alice 根据
b
b
b的置换比特
p
b
:
=
l
s
b
(
B
)
p_b := lsb(B)
pb:=lsb(B),将选择比特
s
b
v
b
=
0
s_b^{v_b}=0
sbvb=0所对应的
v
b
=
p
b
v_b=p_b
vb=pb的条目的密文置为零,即:
C
=
{
H
(
B
)
,
p
b
=
0
H
(
B
⊕
R
)
⊕
a
R
,
p
b
=
1
C = \left\{ \begin{aligned} H(B), && p_b = 0\\ H(B \oplus R) \oplus aR, && p_b = 1 \end{aligned} \right.
C={H(B),H(B⊕R)⊕aR,pb=0pb=1
当
p
b
=
0
p_b=0
pb=0时,
H
(
B
)
⊕
C
=
0
T
G
:
=
H
(
B
⊕
R
)
⊕
C
⊕
a
R
=
H
(
B
)
⊕
H
(
B
⊕
R
)
⊕
a
R
\begin{aligned} H(B) \oplus C &= 0\\ T_{G} := H(B \oplus R) \oplus C \oplus aR &= H(B) \oplus H(B \oplus R) \oplus aR\\ \end{aligned}
H(B)⊕CTG:=H(B⊕R)⊕C⊕aR=0=H(B)⊕H(B⊕R)⊕aR
当
p
b
=
1
p_b=1
pb=1时,
H
(
B
⊕
R
)
⊕
C
⊕
a
R
=
0
T
G
:
=
H
(
B
)
⊕
C
=
H
(
B
)
⊕
H
(
B
⊕
R
)
⊕
a
R
\begin{aligned} H(B \oplus R) \oplus C \oplus aR &= 0\\ T_{G} := H(B) \oplus C &= H(B) \oplus H(B \oplus R) \oplus aR\\ \end{aligned}
H(B⊕R)⊕C⊕aRTG:=H(B)⊕C=0=H(B)⊕H(B⊕R)⊕aR
所以,我们只需发送一个密文 T G T_G TG即可。
Evaluator half-gate
这个所谓的 Evaluator half-gate 是指:Bob 知道其中一条输入线(不失一般性的, a a a)的明文值,只知道另一条线(对应的, b b b)的混淆值。
为了计算 c = a ∧ b c = a \wedge b c=a∧b,因为 Bob 知道 a a a的值,因此它是关于 b b b的一元门(unary gate)
Alice 构造这个如下的密文(这并非真值表对应的混淆表):
H
(
A
)
⊕
C
H
(
A
⊕
R
)
⊕
C
⊕
B
\begin{aligned} H(A) \oplus C\\ H(A \oplus R) \oplus C \oplus B\\ \end{aligned}
H(A)⊕CH(A⊕R)⊕C⊕B
如果 Bob 知道 a = 0 a=0 a=0,此时它持有 A A A,那么可以得到 C C C,对应 c = 0 ∧ b = 0 c=0 \wedge b = 0 c=0∧b=0
如果 Bob 知道 a = 1 a=1 a=1,此时它持有 A ⊕ R A \oplus R A⊕R,那么可以得到 C ⊕ B C \oplus B C⊕B,然后还需要再与 b b b上的混淆值(Bob 无法区分 b = 0 / 1 b=0/1 b=0/1)异或,
- 如果 Bob 持有 B B B,计算出 C ⊕ B ⊕ B = C C \oplus B \oplus B = C C⊕B⊕B=C
- 如果 Bob 持有 B ⊕ R B \oplus R B⊕R,计算出 C ⊕ B ⊕ B ⊕ R = C ⊕ R C \oplus B \oplus B \oplus R = C \oplus R C⊕B⊕B⊕R=C⊕R
对应 c = 1 ∧ b = b c=1 \wedge b = b c=1∧b=b
由于 Bob 知道 a a a的明文值,因此知道自己持有的是 A A A还是 A ⊕ R A \oplus R A⊕R,所以根本不必利用随机置换来隐藏这个信息。
利用 GRR3 技术,我们简单地设置
C
=
H
(
A
)
C = H(A)
C=H(A),那么有:
H
(
A
)
⊕
C
=
0
T
E
:
=
H
(
A
⊕
R
)
⊕
C
⊕
B
=
H
(
A
)
⊕
H
(
A
⊕
R
)
⊕
B
\begin{aligned} H(A) \oplus C &= 0\\ T_{E} := H(A \oplus R) \oplus C \oplus B &= H(A) \oplus H(A \oplus R) \oplus B\\ \end{aligned}
H(A)⊕CTE:=H(A⊕R)⊕C⊕B=0=H(A)⊕H(A⊕R)⊕B
所以,我们只需发送一个密文 T E T_E TE即可。
Two halves make a whole
容易发现:
c
=
a
∧
b
=
(
a
∧
r
)
⊕
(
a
∧
(
b
⊕
r
)
)
\begin{aligned} c &= a \wedge b\\ &= (a \wedge r) \oplus (a \wedge (b \oplus r))\\ \end{aligned}
c=a∧b=(a∧r)⊕(a∧(b⊕r))
Alice 和 Bob 都不知道 a , b a,b a,b的明文值,只有混淆值 W a v a , W b v b W_a^{v_a},W_b^{v_b} Wava,Wbvb
将置换比特和线标签视为秘密共享。对于 b b b上的值的 shares,Alice 持有置换比特 p b : = r p_b := r pb:=r的明文(根据 l s b ( W b 0 ) lsb(W_b^{0}) lsb(Wb0)),Bob 持有选择比特 s b : = b ⊕ r s_b := b \oplus r sb:=b⊕r的明文(根据 l s b ( W b v b ) lsb(W_b^{v_b}) lsb(Wbvb))
因此,我们将 AND Gate 转化为:
- 1 1 1个 Generator Half Gate: c 1 = a ∧ r c_1 = a \wedge r c1=a∧r,其中 Alice 知道 r r r,但是不知道 a a a(同时也不知道 b b b)
- 1 1 1个 Evaluator half-gate: c 2 = a ∧ ( b ⊕ r ) c_2 = a \wedge (b \oplus r) c2=a∧(b⊕r),其中 Bob 知道 b ⊕ r b \oplus r b⊕r,但是不知道 a , b a,b a,b
- 1 1 1个 XOR Gate: c = c 1 ⊕ c 2 c = c_1 \oplus c_2 c=c1⊕c2,这可以利用 Free XOR 技术
Alice 构造 Generator Half Gate,根据
p
a
:
=
l
s
b
(
W
a
0
)
p_a:=lsb(W_a^0)
pa:=lsb(Wa0)设置恰当的
W
c
1
0
W_{c_1}^0
Wc10,发送一个密文,
T
G
:
=
H
(
W
a
0
)
⊕
H
(
W
a
0
⊕
R
)
⊕
p
b
R
T_{G} := H(W_a^0) \oplus H(W_a^0 \oplus R) \oplus p_bR
TG:=H(Wa0)⊕H(Wa0⊕R)⊕pbR
构造 Evaluator half-gate,设置
W
c
2
0
=
H
(
W
b
p
b
)
W_{c_2}^0=H(W_b^{p_b})
Wc20=H(Wbpb)(使得
b
⊕
r
=
0
b \oplus r = 0
b⊕r=0时
v
b
=
p
b
v_b=p_b
vb=pb),发送另一个密文,
T
E
:
=
H
(
W
b
0
)
⊕
H
(
W
b
0
⊕
R
)
⊕
W
a
0
T_{E} := H(W_b^0) \oplus H(W_b^0 \oplus R) \oplus W_a^0\\
TE:=H(Wb0)⊕H(Wb0⊕R)⊕Wa0
共计发送 2 2 2个密文。
Bob 接收到两个 Half Gate 后,
- 根据 a a a线上的混淆值 W a v a W_a^{v_a} Wava,计算出 c 1 c_1 c1线的混淆值 W c 1 v c 1 W_{c_1}^{v_{c_1}} Wc1vc1
- 根据 b b b线上的 s b : = l s b ( W b v b ) s_b := lsb(W_b^{v_b}) sb:=lsb(Wbvb),解密得到 W c 2 0 ⊕ W a 0 W_{c_2}^{0} \oplus W_a^0 Wc20⊕Wa0,再与 a a a线上的 W a v a W_a^{v_a} Wava异或,得到 W c 2 v c 2 W_{c_2}^{v_{c_2}} Wc2vc2
- 计算 W c 1 v c 1 ⊕ W c 2 v c 2 W_{c_1}^{v_{c_1}} \oplus W_{c_2}^{v_{c_2}} Wc1vc1⊕Wc2vc2,得到 c c c线上的混淆值 W c v c W_c^{v_c} Wcvc
Arbitrary gates
任意的 even gate(非凡的只有 XOR, NXOR),应用 Free XOR 技术,都是 free 的。
任意的 odd gate(例如 AND, NAND, OR, NOR)都可以写作:
f
(
v
a
,
v
b
)
=
(
α
a
⊕
v
a
)
∧
(
α
b
⊕
v
b
)
⊕
α
c
f(v_a,v_b) = (\alpha_a \oplus v_a) \wedge (\alpha_b \oplus v_b) \oplus \alpha_c
f(va,vb)=(αa⊕va)∧(αb⊕vb)⊕αc
其中 α c \alpha_c αc控制 1 1 1的个数是:
- α c = 0 \alpha_c=0 αc=0时,有一个 1 1 1,三个 0 0 0
- α c = 1 \alpha_c=1 αc=1时,有三个 1 1 1,一个 0 0 0
而 α a , α b \alpha_a,\alpha_b αa,αb控制那一个不同的数的位置:
- 对于 v a = 1 − α a , v b = 1 − α b v_a=1-\alpha_a,v_b=1-\alpha_b va=1−αa,vb=1−αb,这一个条目的真值只有一个
- 而其他的三个条目,它们的真值相等
三元组 ( α a , α b , α c ) ∈ { 0 , 1 } 3 (\alpha_a,\alpha_b,\alpha_c) \in \{0,1\}^3 (αa,αb,αc)∈{0,1}3的取值范围大小是 2 3 = 8 2^3=8 23=8,分别对应 8 8 8种 odd gate:
- 设置 α a = α b = α c = 0 \alpha_a=\alpha_b=\alpha_c=0 αa=αb=αc=0,那么就是 AND Gate
- 设置 α a = α b = α c = 1 \alpha_a=\alpha_b=\alpha_c=1 αa=αb=αc=1,那么就是 OR Gate
如果把
f
(
v
a
,
v
b
)
f(v_a,v_b)
f(va,vb)写成:
f
G
(
v
a
,
p
b
)
:
=
(
α
a
⊕
v
a
)
∧
(
α
b
⊕
p
b
)
⊕
α
c
f
E
(
v
a
,
p
b
⊕
v
b
)
:
=
(
α
a
⊕
v
a
)
∧
(
p
b
⊕
v
b
)
f
(
v
a
,
v
b
)
=
f
G
(
v
a
,
p
b
)
⊕
f
E
(
v
a
,
p
b
⊕
v
b
)
\begin{aligned} f_G(v_a,p_b) &:= (\alpha_a \oplus v_a) \wedge (\alpha_b \oplus p_b) \oplus \alpha_c\\ f_E(v_a,p_b \oplus v_b) &:= (\alpha_a \oplus v_a) \wedge (p_b \oplus v_b)\\ f(v_a,v_b) &= f_G(v_a,p_b) \oplus f_E(v_a,p_b \oplus v_b) \end{aligned}
fG(va,pb)fE(va,pb⊕vb)f(va,vb):=(αa⊕va)∧(αb⊕pb)⊕αc:=(αa⊕va)∧(pb⊕vb)=fG(va,pb)⊕fE(va,pb⊕vb)
因为 Alice 知道 p b p_b pb,而 Bob 知道 p b ⊕ v b p_b \oplus v_b pb⊕vb,那么就可以利用 Half Gate 技术,将这个 odd gate 的通信量降低到 2 2 2个密文。
The complete scheme
将电路 f f f的各个逻辑门拓扑排序,对电线依次标号 { 1 , 2 , ⋯ } \{1,2,\cdots\} {1,2,⋯},输出线为 i i i的逻辑门记为 G i G_i Gi,它的输入线为 a , b < i a,b < i a,b<i
利用 P&P 技术、Half Gate 技术、Free XOR 技术、GRR3 技术,完整的 GC 协议为:
易知 Free XOR 技术使得 even gate 的所需的密文数量为零。可以证明,实现 odd gate 至少需要两个密文。而 Half Gate 技术使用两个密文就完成了 odd gate 的构造。因此,上述的协议达到了最优的通信复杂度。