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 γ |
---|