MPC既适用于特定的算法,如加法、乘法、AES,集合交集等;也适用于所有可表示成计算过程的通用算法。
根据计算参与方个数不同,可分为只有两个参与方的2PC和多个参与方(≥3)的通用MPC
1)安全两方(2PC)计算所使用的协议为:Garbled Circuit(GC)+Oblivious Transfer(OT);
2)安全多方计算(MPC)所使用的协议为:同态加密+秘密分享+OT。
GC+OT的两方计算基本框架
1). 电路( Circuits)
- 任一个多项式时间的功能函数 f 都存在一个与之对应的布尔电路图片 C ,可描述为电路 C 计算 f 。
- 电路C由众多的门电路g(如或门、与门、非门等)连接组成,
- 门电路 g 的两个输入线路分别为: α \alpha α, β ∈ \beta\in β∈ {0,1};
- 输出路线为: γ \gamma γ =g( α \alpha α, β \beta β),该输出线路的值可能为其他门电路的输入线路值或函数最终结果。
- 电路C计算由输入值确定的门电路开始,按照电路拓扑一层一层往下计算,最后总能在电路的输出线路上得到最终输出结果。 这种原始的计算方式,电路 C 上各线路的值均为明文形式的比特值(0 or 1)。
2). 混淆电路(Garbled Circuits)
- 为了实现安全计算,姚期智先生提出了一种方法对电路计算过程中所有门电路上的计算值进行加密,即每一条线路上的值: α \alpha α, β ∈ \beta\in β∈{0,1},随机选取两个值 k 0 k^0 k0, k 1 k^1 k1 和 α \alpha α, β \beta β 一一对应,称为混淆密钥,显然观察者并不能确定该线路上呈现的某一混淆值所对应的比特值,而仅能以的概率猜测正确。
- 对电路 C 的每一条线路都选取一对随机混淆密钥,所构造的电路称为混淆电路(Garbled Circuits),记为 GC。
- 接着使用了“双重加密”方式,即对每个门电路,分别将两输入线路上的混淆值作为加密密钥,加密这两个输入混淆值所对应的输出混淆值,得出该门电路的“加密计算表”。
Fig1.或门:真值表
α \alpha α | β \beta β | γ \gamma γ |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Fig2.或门:加密计算表
α \alpha α | β \beta β | γ \gamma γ |
---|---|---|
k α 0 k_\alpha^0 kα0 | k β 0 k_\beta^0 kβ0 | E k α 0 E k β 0 ( k γ 0 ) E_{k_\alpha^0}E_{k_\beta^0}(k_\gamma^0) Ekα0Ekβ0(kγ0) |
k α 0 k_\alpha^0 kα0 | k β 1 k_\beta^1 kβ1 | E k α 0 E k β 1 ( k γ 1 ) E_{k_\alpha^0}E_{k_\beta^1}(k_\gamma^1) Ekα0Ekβ1(kγ1) |
k α 1 k_\alpha^1 kα1 | k β 0 k_\beta^0 kβ0 | E k α 1 E k β 0 ( k γ 1 ) E_{k_\alpha^1}E_{k_\beta^0}(k_\gamma^1) Ekα1Ekβ0(kγ1) |
k α 1 k_\alpha^1 kα1 | k β 1 k_\beta^1 kβ1 | E k α 1 E k β 1 ( k γ 1 ) E_{k_\alpha^1}E_{k_\beta^1}(k_\gamma^1) Ekα1Ekβ1(kγ1) |
- 加密计算表中各行应随机排序后存储,防止因位置而泄露门电路的输入信息。
- 另外,GC 在最终输出的各个线路上,需要保存各输出线路上的随机混淆值与其对应真实值的映射关系,称为“输出解密表”,否则由于混乱值的相同分布将难以解得最终的计算结果。
3). 姚氏两方协议
-
姚期智在1986年提出了一个安全两方计算的通用协议,称为姚氏两方协议,该协议是基于混乱电路(Garbled Circuits) 和 不经意传输(Oblivious Transfer)协议设计的,并被证明在半诚实敌手模型下是安全的。
现假设有两个参与方Alice,Bob,各自拥有私有数据 x,y, 这两个参与方希望在不泄露自己私有数据的前提下计算函数值f(x,y)。 -
Alice首先将整个计算函数 f(x,y)转换为电路C,并构造电路C的混淆电路GC,并将图片GC的混淆表(由所有门电路的加密计算表组成)发送给Bob
-
Alice将自己的私有数据 x 转化成GC电路中相应输入线路上的混淆值 k α k_\alpha kα,并发给Bob
-
Alice 和 Bob 通过逐比特执行二选一的茫然传输协议(1-out-of-2 oblivious transfer),经过多次茫然传输协议后,Bob 获得其私有数据y对应的混淆值, OT协议保证了Alice不能获取Bob的私有输入数据
-
Bob 使用所得的所有输入混淆值,正确计算GC,得到最终结果f(x,y),并将结果告诉Alice。因为Bob拥有的只是混淆电路GC,以及Alice的混淆输入值,所以Bob不能根据Alice的输入混淆值推出Alice的私有数据。