
安全多方计算(MPC)是密码学的一个子领域,目的是多个参与方协同地从每一方的隐私输入中计算某个函数的结果,而不用将这些输入数据展示给其他方。基于MPC,对于任何函数功能需求,我们都可以在不泄露除输出以外的信息的前提下计算它。MPC最初针对的是一个安全两方计算问题(即著名的“百万富翁问题”)而被正式提出的。
百万富翁问题 两个百万富翁都想比较到底谁更富有,但是又都不想让别人知道自己有多少钱。如何在没有可信的第三方的情况下解决这个问题?该问题在1982年由姚期智教授提出,在1987年由Goldreich等人推广至多方场景。

当前主要有三种常用的隐私计算框架,可以用来实现安全多方计算,它们分别是:
秘密共享(Secret Sharing,SS),秘密共享(Secret Sharing或者Secret Splitting,中文又称为密钥共享),最早由著名密码学家Shamir和Blakley于1979年分别提出。秘密共享是现代密码学领域的一个重要分支,是信息安全和数据保密的重要技术手段,也是安全多方计算和联邦学习等领域的一个基础应用技术。
不经意传输(ObliviousTransfer,OT),不经意传输(Oblivious Transfer,OT)是由Rabin在1981年提出的一种两方计算协议,被广泛应用于安全多方计算(MPC)等领域。
混淆电路(Garbled Circuit,GC),混淆电路(Garbled Circuit,GC)是姚期智教授提出的安全多方计算概念。GC的思想是通过布尔电路的观点构造安全函数计算,使得参与方可以针对某个数值来计算答案,而不需要知道它们在计算式中输入的具体数字。因为GC的多方的共同计算是通过电路的方式实现的,所以这里的关键词是“电路”。实际上,所有可计算问题都可以转化为各个不同的电路,例如加法电路、比较电路、乘法电路等。而电路是由一个个门(gate)组成的,例如与门、非门、或门、与非门等。
混淆电路可以看成一种基于不经意传输的两方安全计算协议,它能够在不依赖第三方的前提下,允许两个互不信任方在各自私有输入上对任何函数进行求值。由于与、或、非门组成的逻辑电路可以执行任何计算,所以GC使用电路表示待计算函数。
GC的中心思想是将计算电路分解为产生阶段和求值阶段。两个参与方各自负责一个阶段,而在每一阶段中电路都被加密处理,所以任何一方都不能从其他方获取信息,但仍然可以根据电路获取结果。GC由一个不经意传输协议和一个分组密码组成。电路的复杂度至少是随输入内容大小的增大而线性增长的。
在GC发表后,GMW(Goldreich,Micali and Wigderson)三位学者将GC扩展使用于多方,用以抵抗恶意的攻击者。


