安全多方计算 - Yao’s 混淆电路(二) 优化
简介
Yao’s 混淆电路是一种实现安全多方计算的技术,它可以将计算函数转换为一个混淆电路,使得参与方可以在不泄露彼此隐私信息的情况下共同计算该函数。
《安全多方计算 - Yao’s 混淆电路(一) 手动构建》描述了 Yao’s 混淆电路的基本定义和单个电路门的混淆计算过程。同时展示了一个两方二进制求和的函数从转换为计算电路、电路混淆到最终计算出结果的完整过程。该方法能够实现安全多方计算,但在实际应用中,其效率和性能面临着挑战。
随着计算函数复杂度的增加,Yao’s 混淆电路的规模和计算量会迅速增长,导致计算效率下降。为了提高 Yao’s 混淆电路的效率和性能,研究者们提出了多种优化技术,包括:
- ciphertext expansion(密钥扩展)
- point-and-permute(点置换)
- FreeXOR(免费异或门)
- 混淆电路压缩(GRR2和GRR3)
本文将对以上优化技术进行分析、对比,说明每种方案的具体操作和效果以及对未来研究方向展望。
混淆电路衡量指标
混淆电路是一种安全多方计算技术,它允许两个或多个参与者在不泄露各自输入的情况下共同计算一个函数。具体到 Yao’s 混淆电路,它由混淆方和计算方两方组成:
混淆方 负责计算电路门输入输出线路混淆值和计算电路的门混淆值。这二者构成混淆方与计算方主要的通信内容。
计算方 根据电路门的输入线路混淆值和门混淆值计算电路门的输出线路混淆值进行解密过程。
混淆电路中"通信开销"和"计算开销"是衡量混淆电路性能的两个具体指标,它们将直接影响混淆电路的性能以及应用范围。
-
计算开销
混淆方要进行大量的加密计算,而计算方同样需要大量的解密计算。无论是算法的改进还是计算方式的改进,对于计算量的减小会产生很大的作用。 -
通信开销
混淆方需要将完整电路中每一个电路门的线路混淆值和门混淆值发送给计算方。以 AND 门或者 XOR 门为例,二者都为两条输入线路一条输出线路。每一条线路都对应两个可能的值,发送这些内容将成为双方的通信开销。通过优化电路设计,使用更有效的门电路,减少电路门的数量以及优化混淆算法,减少线路混淆值或门混淆值的数量减小通信开销。
本文暂不考虑工程实现(如并行计算、离线预处理)的优化带来的计算效率以及通信效率的提升,仅从混淆电路方案中算法设计层面考虑混淆电路的优化方法。
具体优化技术
注:本文中多张原理图参考"Mike Rosulek"教授的课件5和冯院士论文1中内容绘制,为了和前文混淆电路定义保持一致,电路门的线路都由A,B修改为 W W W表示。
混淆方为了避免计算方得到电路门的输入混淆值和门混淆值映射关系,会对门混淆值的位置进行变换。这就带来一个问题,要想确定电路门的输出混淆值,就需要用所有可能的加密密钥对可能的电路门混淆值进行解密,然后与电路门的输出线路混淆值比较。那个匹配的输出线路混淆值就是真正要得到的结果。
Ciphertext expansion 密文扩展
计算方每次都要遍历每一个解密组合来获得真正的输出线路混淆值,这对于计算方来说是一种非常大的计算资源消耗。同时,解密后的值与门混淆值进行匹配也存在问题:最好能够让计算方在解密时能清楚知道解密出来的值是否正确(是否为正确的输出线路混淆值)。这就需要使用带有“密文扩展”的加密方案。
密文扩展方案很容易理解,就是在对电路门输出线路混淆值进行加密的时候,在它的前面添加前置的0。比如门输出线路混淆值长度为4位,就在它的前面添加4个0。当计算方对电路门混淆值解密的时候,只有解密结果是以4个0开头的值才是正确的结果。这样无需比较,只是得到的门混淆值长度也会增加一倍。
假定电路门单条线路的混淆值为单位长度,通信开销表示为门的混淆值大小。计算开销中包括混淆方加密计算时的开销和计算方计算时的开销。
![](https://img-blog.csdnimg.cn/direct/ff974d13f611493ca5e6d07ae4903950.png)
这里计算方的 2.5 是一个期望值,它在计算的时候,每一个门混淆值都有 1/4 的概率是正确的。所以开销为 2.5 = 1 × 1 / 4 + 2 × 1 / 4 + 3 × 1 / 4 + 4 × 1 / 4 2.5 = 1\times 1/4 + 2 \times 1/4 + 3\times 1/4 + 4\times 1/4 2.5=1×1/4+2×1/4+3×1/4+4×1/4 。
Point-and-permute 点置换
密文扩展的方案减少了解密后比较次数,有没有一种方式能够减少"尝试"解密的次数,最好能够直接确定需要解密的门混淆值?Point-and-permute 方案就提供了这样一种方法。
Point-and-permute(点置换)2方法由Beaver等人在1990年提出。它能够让计算方在拿到电路门输入线路混淆值的时候直接获知应该解密哪一个门混淆值获得正确的输出线路混淆值。举个例子,计算方得到了
w
i
,
w
j
w_i, w_j
wi,wj 两个输入线路混淆值和四个电路门的混淆值
w
w
w。按照之前的做法,计算方需要分别对四个电路门的混淆值进行解密操作,确定其中一个为真正的输出线路混淆值。
点置换的优化方案在每一个线路混淆值附加一个随机"颜色"比特,如下图使用红色和蓝色指代不同的颜色比特,然后根据输入线路混淆值的颜色比特来排列门混淆值的位置。在同一条线路上,比如
W
0
W_0
W0,如果真值0使用了红色表示,那么真值1就使用另一个颜色蓝色表示;但在另一条线路
W
1
W_1
W1 上,并不要求同样使用红色表示0,它是可以使用蓝色的。每条线路颜色比特与线路混淆值所对应的真值之间的关系是随机的。
下图中,
W
0
W_0
W0 线路上的线路混淆值
w
0
0
w_0^0
w00 对应的真值为0,在它末尾添加红色比特,另一个线路混淆值
w
0
1
w_0^1
w01 对应的真值为1,在它末尾添加蓝色比特;而在
W
1
W_1
W1 线路上的混淆值
w
1
0
w_1^0
w10 对应的真值为1,在它末尾添加蓝色比特。以第一行为例,根据真值表,
w
0
0
&
w
1
0
w_0^0 \And w_1^0
w00&w10 对应着
w
2
0
w_2^0
w20,反应到颜色比特就是将红蓝颜色比特添加到混淆值
E
w
0
0
,
w
1
0
(
w
2
0
)
E_{w_0^0,w_1^0}(w_2^0)
Ew00,w10(w20) 。
![](https://img-blog.csdnimg.cn/direct/7c75da256ed5447899e8f43e1054d3c6.png)
下图将一次性密码本
H
(
w
0
,
w
1
)
⊕
w
2
H(w_0, w_1) \oplus w_2
H(w0,w1)⊕w2 作为门混淆的加密函数,它提供了一种具体的加密实现方式。这里的
H
H
H 可以被理解为一个随机预言机,它将输入
w
0
w_0
w0 和
w
1
w_1
w1 映射到一个与
w
2
w_2
w2 进行异或操作的值。这个过程确保了只有知道正确的输入线路混淆值的参与者才能正确地计算出输出线路的混淆值。
H
(
w
0
,
w
1
)
⊕
w
2
H(w_0, w_1) \oplus w_2
H(w0,w1)⊕w2 表示的是门混淆值,这个值是根据输入线路的混淆值
w
0
w_0
w0 和
w
1
w_1
w1 以及输出线路的混淆值
w
2
w_2
w2 计算得出的。计算方在观察到两个输入混淆值末尾为蓝色和红色,直接可以定位到第4个电路门混淆值进行解密。
![点置换-eg](https://img-blog.csdnimg.cn/direct/9ff72d91156e4d15b4038d4559b916b5.png)
这样,计算方只进行一次 E w 0 , w 1 − 1 ( w 2 ) E_{w_0, w_1}^{-1}(w_2) Ew0,w1−1(w2) 的计算就得到了 w 2 w_2 w2。
![Yao's with point and permute](https://img-blog.csdnimg.cn/direct/9038df1f14aa4ec98e30393c8b9a3a1f.png)
对于Point-and-permute的方案,不需要ciphertext expansion,所以通信开销为 4 4 4 。在计算方计算电路时,可以通过线路混淆值的颜色组合来索引密文,因此只需要1的开销。
GRR3
Naor 提出了 Garbled Row Reduction(GRR) 混淆行约化技术6,减少了混淆电路的大小和所需的通信量。
两输入一输出电路门混淆值有4个,GRR3通过一种"约定"将每一个电路门的混淆值减少为3个。这个约定就是令每个电路门的第一个门混淆值默认为 0 n 0^n 0n,通过选取特定的电路门输出线路混淆值来构造。实际就是构造的时候对 0 n 0^n 0n 进行解密计算得到。而其他的几个电路门的门混淆值仍按照正常的方式进行计算。
通过选取一个合适的输出线路混淆值, 使得第一行密文为全零, 从而不再需要发送第一个密文, 降低了双方的通信开销。
w
2
=
E
w
0
,
w
1
−
1
(
0
n
)
w_2 = E_{w_0,w_1}^{-1}(0^n)
w2=Ew0,w1−1(0n)
通过以上公式计算可以计算得到合适的输出线路混淆值。
![grr3](https://img-blog.csdnimg.cn/direct/607253f6bbfd44098fadd98802626497.png)
GRR3方案相对于 Point-and-permute 方案,可以将混淆电路的数量从4降为3。
![GRR3](https://img-blog.csdnimg.cn/direct/fb35cc45a13c4a7cb4bdaa90d020e624.png)
FreeXOR3 也是一种针对 Yao’s 混淆电路的优化方案,它旨在减少 XOR 电路门的通信开销。在 Yao’s 混淆电路中,XOR 门是一种特殊的门,因为它具有交换律和结合律。这意味着,无论输入的顺序如何,XOR 门的输出都是相同的。
这里定义 XOR 电路门的任一线路
W
W
W 的偏移量
Δ
\Delta
Δ 为该线路的两个线路混淆值的异或值,则任一线路的两个线路混淆值就可以表示为
(
W
,
W
+
Δ
)
(W, W+\Delta)
(W,W+Δ)。
在FreeXOR方案中,将XOR门的所有输入线路的偏移量都取为同一个
Δ
\Delta
Δ。根据异或门的特点,输出线路混淆值为两个输入线路混淆值的异或值,这对于四种输入组合是满足真值表的。
设
W
0
,
W
1
W_0, W_1
W0,W1 分别为两条输入线路,
w
i
j
w_i^j
wij 表示第
i
i
i 条线路真值为
j
j
j 对应的混淆值
(
i
,
j
∈
{
0
,
1
}
)
(i, j \in \{0, 1\})
(i,j∈{0,1})。所以
W
0
,
W
1
W_0, W_1
W0,W1 两条输入线路对应的混淆值分别为
(
w
0
0
,
w
0
1
=
w
0
0
⊕
Δ
)
,
(
w
1
0
,
w
1
1
=
w
1
0
⊕
Δ
)
(w_0^0, w_0^1 = w_0^0 \oplus \Delta), (w_1^0, w_1^1 = w_1^0 \oplus \Delta)
(w00,w01=w00⊕Δ),(w10,w11=w10⊕Δ)。
W
2
W_2
W2 为输出线路,
w
2
0
,
w
2
1
w_2^0, w_2^1
w20,w21 为对应的输出线路混淆值。
![FreeXOR](https://img-blog.csdnimg.cn/direct/53c9a2478c034858bb78835522068915.png)
现在通过输入线路混淆值直接计算输出线路混淆值,且对于真值表中的所有真值结果正确。
W 0 W_0 W0 | W 1 W_1 W1 | W 2 W_2 W2 | Truth |
---|---|---|---|
w 0 0 w_0^0 w00 | w 1 0 w_1^0 w10 | w 2 0 = w 0 0 ⊕ w 1 0 w_2^0 = w_0^0 \oplus w_1^0 w20=w00⊕w10 | False |
w 0 0 w_0^0 w00 | w 1 1 w_1^1 w11 | w 2 1 = w 0 0 ⊕ w 1 1 = w 0 0 ⊕ ( w 1 0 ⊕ Δ ) w_2^1 = w_0^0 \oplus w_1^1 = w_0^0 \oplus (w_1^0 \oplus \Delta) w21=w00⊕w11=w00⊕(w10⊕Δ) | True |
w 0 1 w_0^1 w01 | w 1 0 w_1^0 w10 | w 2 1 = w 0 1 ⊕ w 1 0 = ( w 0 0 ⊕ Δ ) ⊕ w 1 0 w_2 ^1 = w_0^1 \oplus w_1^0 = (w_0^0 \oplus \Delta) \oplus w_1^0 w21=w01⊕w10=(w00⊕Δ)⊕w10 | True |
w 0 1 w_0^1 w01 | w 1 1 w_1^1 w11 | w 2 0 = w 0 1 ⊕ w 1 1 = ( w 0 0 ⊕ Δ ) ⊕ ( w 1 0 ⊕ Δ ) w_2^0 = w_0^1 \oplus w_1^1 = (w_0^0 \oplus \Delta) \oplus (w_1^0 \oplus \Delta) w20=w01⊕w11=(w00⊕Δ)⊕(w10⊕Δ) | False |
通过这种方式,可以避免为 XOR 电路门生成输出线路混淆值,混淆方同时也无需为其生成门混淆值。计算方对输入线路混淆值直接进行异或计算即可生成 XOR 电路门的输出混淆值。这样减少了双方的"通信量",也减少了"计算量"。
FreeXOR 充分利用了XOR电路门的特点,所以FreeXOR的优化也仅适用于XOR电路门,对于其他电路门不适用,这是它的一个局限。
![FreeXOR](https://img-blog.csdnimg.cn/direct/f37a7259e9d34575b3b4a16bbcaa2d5c.png)
和之前方案比较,由于XOR方案只适用于XOR gate,因此把XOR gate和AND gate分开。
GRR2
GRR2 是将混淆电路的门混淆值数量再次减少,减少为仅需要两个就能满足计算方的计算要求。这里有两种方式,一个是2009年 Pinkas 提出的利用多项式插值实现的 GRR2 4,另一个是2015年 Gueron 提出的利用异或门性质实现的 Fast GRR2 7。
GRR2
构建者使用多项式插值来优化混淆表的表示,这样每个门的输出混淆值可以通过输入混淆值和多项式的计算来重构,而不是直接存储所有的可能输出。
具体来说,对于每个门,构建者会选择一个多项式来表示输出混淆值的一部分,这个多项式的系数会作为混淆电路的一部分被发送给计算方。当计算方收到混淆电路并需要计算一个电路门时,它会使用输入混淆值和多项式来计算输出混淆值。这个过程不涉及解密操作,而是通过计算多项式来直接得到输出混淆值。
因此,多项式插值在 GRR2 中是在电路构建阶段用于优化混淆表的表示,减小混淆电路的大小,从而减少了在两个参与方之间传输的数据量。
这种方法是否真的减少了存储空间取决于多项式的度数和门的类型。对于简单的门(如AND门),多项式可能是线性的,因此只需要存储两个系数。对于更复杂的门,可能需要更高阶的多项式,这可能会导致存储需求的增加。
所以,这需要在设计时仔细考虑多项式的选择和实现,以确保整体上实现优化目标。另外,这个方案较复杂。
Fast GRR2
在前面的GRR3优化中通过构造,令门混淆值中第一个由全0构成,双方这样约定就可以使电路门的混淆值减少一行。为了显示GRR2的变化,这里采用一次性密码本的形式计算电路门混淆值,重新说明GRR3的过程:约定第一行的门混淆值为0,减少发送的数据量。
![GRR3 cont](https://img-blog.csdnimg.cn/direct/5b3c67ffc1b845029b4c96028f71b139.png)
有了上面的铺垫,就可以看看 Pinkas 提出的进一步优化方案4。
现在仍能够保持第一行门混淆值为全0构成,而令后面三行的门混淆值的异或值为0,即
H
(
w
0
0
,
w
1
0
)
⊕
w
2
0
H(w_0^0, w_1^0) \oplus w_2^0
H(w00,w10)⊕w20,
H
(
w
0
0
,
w
1
0
)
⊕
w
2
0
H(w_0^0, w_1^0) \oplus w_2^0
H(w00,w10)⊕w20,
H
(
w
0
1
,
w
1
0
)
⊕
w
2
0
H(w_0^1, w_1^0) \oplus w_2^0
H(w01,w10)⊕w20 三者的异或值为0。这样混淆方在发送给计算方的时候,只需要发送第3行(
L
3
L3
L3)值和第4行(
L
4
L4
L4)值。计算方在计算的时候可以计算出来相应的门混淆值。
![GRR2](https://img-blog.csdnimg.cn/direct/1c3cd80a9fa74e48bfc8174335e17a18.png)
所以计算方只需要根据 L 3 , L 4 L3, L4 L3,L4 计算电路的门混淆值,计算过程如下图所示:
![](https://img-blog.csdnimg.cn/direct/a572372084c448e88e4632298366152b.png)
Free XOR技术和GRR2技术是不可兼容的。因为在GRR2中,特殊构造的第一行门混淆值为 0,二三四行混淆值的异或值为0。经过这样特殊构造之后,无法保证计算出的两个输出线路混淆值的异或值为 Δ \Delta Δ。因此在一个电路中,要么使用Free-XOR方案,要么使用GRR2方案。
![](https://img-blog.csdnimg.cn/direct/430e6bd1f1014a2aaad3c856845bd4cc.png)
把GRR2方案和其他方案比较,主要与 Point-and-permute 和 GRR3 方案比较,每个混淆门都只需要用两个门混淆值即可表示。
未来展望
以上从原理上对比多个Yao’s 混淆电路优化方案,还有很多其他方案没有列举。这么多优化方案各有优缺点,所以产生以下思考:
1. 优化方案的统一评估框架
目前,针对混淆电路优化的研究缺乏一个统一的评估框架,这使得不同方案的性能比较变得困难。开发一个统一的评估框架可以帮助研究人员更客观地评估不同方案的优缺点,并促进该领域的整体发展。
该框架应具备以下特点:
-
明确的性能指标:该框架应当明确定义评估混淆电路优化的性能指标,例如电路大小、混淆时间、计算时间、通信量、安全性等。这些指标应当全面反映优化方案的性能表现,并与实际应用场景相关。
-
清晰的统计数据展示:该框架应当提供清晰的统计数据展示方式,方便研究人员比较不同方案的性能差异。例如,可以提供表格、图表等方式展示不同指标的测试结果。
-
支持各种混淆电路优化方案:该框架应当支持对各种混淆电路优化方案进行评估,框架应当提供通用的接口。
-
便捷的接入方式:该框架应当提供便捷的接入方式,方便研究人员将现有的MPC及优化算法实现接入框架进行评估。例如,可以提供标准的接口规范和开发文档。
2. 灵活可扩展的工程实践框架
在工程实践中,需要将不同的混淆电路优化方案集成到实际应用中。提供灵活可扩展的工程实践框架可以方便开发人员根据需要选择合适的优化方案,并降低开发成本。
该框架应具备以下特点:
- 模块化:将不同优化方案封装成独立的模块,使得框架具有良好的可扩展性和可维护性。
- 可配置性:允许开发人员根据需要选择和配置不同的优化方案,例如可以选择不同的混淆算法、电路生成策略等。
- 可扩展性:提供统一的接口,方便快速将不同的优化方案集成到实际应用中,能够支持新的优化方案的集成。
3. 其他研究方向
除了上述两个方向之外,混淆电路的未来研究方向还包括:
- 提高混淆电路的安全性: 研究新的混淆算法和电路生成策略,以提高混淆电路的抵抗攻击能力。
- 降低混淆电路的计算成本: 研究新的优化技术,以降低混淆电路的计算时间和通信量。
总结
本文列举了一部分 Yao’s 混淆电路的优化技术,分析了它们的实现原理及部分优化对比数据。同时在未来工作展望中提出了两点思考方向。在关注技术本身的同时,后续也会了解探索混淆电路更多的应用场景,将混淆电路应用于更多需要安全多方计算的领域,例如金融、医疗、物联网等,使其在实际应用中发挥更大的作用。
参考
- Feng, Dengguo, 和Kang Yang. 《Concretely Efficient Secure Multi-Party Computation Protocols: Survey and More》. 2022.
- Beaver, Donald. 《The Round Complexity of Secure Protocols》.
- Kolesnikov, Vladimir, 和Thomas Schneider. 《Improved Garbled Circuit: Free XOR Gates and Applications》. 5126:486–98. 2008.
- Pinkas, B., T. Schneider, N. P. Smart和S. Williams. 《Secure Two-Party Computation is Practical》, 2009.
- Naor, Moni, Benny Pinkas和Reuban Sumner. 《Privacy Preserving Auctions and Mechanism Design》. 129–39. 1999.
- Gueron, Shay, Yehuda Lindell, Ariel Nof和Benny Pinkas. 《Fast Garbling of Circuits Under Standard Assumptions》, 2015.