多方安全计算(MPC)的定义:
假设系统共有n个参与计算方P1,P2,…,Pn,每个参与方的输入xi是私密的,需要所有参与方协作才能执行f(x1,x2,…,xn)运算,计算结束后Pi只能得到与xi相对应的计算结果,Pi以外的其他参与方用于运算的数据信息对其是不可知的。
MPC两种常用的方法如下:
1. 混淆电路(Garbled Circuit):
任何算法都可以使用门电路表示,每个门都对应一个真值表,我们可以对门电路进行加密。首先对每个输入(输出)的0和1值进行随机置换,然后用输入作为密钥来加密输出,按顺序逐个加密算法所有的门然后连接起来,将上一个门的输出作为下一个门的输入,所有的门电路连在一起就构成了用于计算的函数,整个过程都是通过密文计算,各个参与方无法获取计算过程中的具体内容。
2. 秘密共享(Secret Sharing):
通过合理且有效的方式将每个参与方的秘密拆开,然后再分给每一个参与方,每个独立的参与方都无法获得原始的秘密,只有多个参与方协同计算才能得到一些想要的对应处理结果,由于过程中所有参与方都无法自己进行计算得到结果,保证了每一个秘密的安全性。
实例
    这里举一个基于秘密共享方案的例子来具体讲述安全多方计算的过程:
    假设有参与方Alice和Bob分别拥有秘密数据a和b,他们想要联合计算f(a,b)。Alice生成一个随机数r,Bob生成一个随机数s,则Alice可以将自己的数据分为a-r和r,Bob可以将自己的数据拆分为b-s和s。随后Alice和Bob交换分量,Alice拥有(a-r,b-s),Bob拥有(r,s),进入秘密共享状态。该状态下的a和b可以进行相关计算得到f(a,b)。这里以加法为例,我们想要通过MPC计算f(a,b)=a+b,Alice计算A=((a-r)+(b-s)),Bob计算B=r+s,则f(a,b)=A+B=a+b,最后得到了想要的计算结果的同时,Alice和Bob也无法得知对方拥有的秘密数据,保证了数据安全。
多方安全计算具有以下特点:
1.  输入隐私性:MPC的整个计算过程中参与方的数据都在本地存储未以原始数据形式进入过计算系统不会向其他参与方泄露数据,保证了数据隐私性。
2.  计算准确性:参与方通过MPC协议和约定查询和计算,通过MPC计算的结果和原始数据直接进行计算的结果一致,保证了计算的准确性。
3.  去中心化:MPC计算过程中不需要可信第三方来协助计算,避免了第三方特权,通过采取系统协议让各个参与方拥有平等的权力,都能开启计算任务。