安全多方计算 - 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开头的值才是正确的结果。这样无需比较,只是得到的门混淆值长度也会增加一倍。
假定电路门单条线路的混淆值为单位长度,通信开销表示为门的混淆值大小。计算开销中包括混淆方加密计算时的开销和计算方计算时的开销。

这里计算方的 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