多方安全计算(SMPC)用于解决一组互不信任的参与方各自持有秘密数据,协同计算一个既定函数的问题。多方安全计算在保证参与方获得正确结果的同时,无法获得计算结果之外的任何信息。在整个计算过程中,参与方对其所拥有的数据始终拥有绝对的控制权。
e.g.在一个分布式的网络中,有n个互不信任的参与方P1、P2、…、Pn,每个参与方Pi持有秘密数据xi (i=1,2,3,…,n)。这n个参与方执行既定函数,f(x1,x2,…,xn)→(y1,y2,…,yn),其中yi为参与方Pi得到的输出结果。任意参与方Pi除yi之外无法获得关于其他参与方Pj(i!=j)的任何输入信息。如果y1=y2=…=yn,则可以简单表示为f(x1,x2,…,xn)→y。
设t为不诚实的参与方的数量,n为总的参与方的数量
在不诚实大多数(t≥n/2)下可达到:
在诚实大多数(t
大部分高效的MPC协议考虑中止安全性
大部分MPC协议考虑电路模型:
RAM-MPC研究相对较少,适合数据库输入:
实际高效的MPC协议主要考虑静态腐化与同步网络
秘密共享通过将秘密信息分割成若干的秘密份额并分发给多人掌管,以此来达到风险分散和容忍入侵的目的。一般来说,一个秘密共享方案由一个秘密分割算法和一个秘密重组算法构成,包含秘密分发者、秘密份额持有者和接收者三类角色。秘密分发者持有秘密信息并且负责执行秘密分割算法,并将秘密份额分发给秘密份额持有者。接收者是试图重组秘密信息的一方。当接收者希望重组秘密信息时,将从一组授权的秘密份额持有者中收集秘密份额,并执行秘密重组算法计算秘密信息,当有充足的秘密份额就可以重新恢复出秘密信息。一个参与方可以承担多个角色。
只适用于低延迟
混淆电路是由姚期智先生提出的针对半诚实敌手模型的两方安全计算协议,核心思想是将任何函数的计算问题转化为由“与门”、“或门”和“非门”组成的布尔逻辑电路,再利用加密技术构建加密版本的布尔逻辑电路。姚氏混淆电路包含布尔逻辑电路构建和布尔逻辑电路计算两部分。
可用于高延迟
部分MPC协议融合了上述两种设计方法
如下图所示,该协议中发送方Alice拥有两个秘密消息x0和x1,接收者Bob选择并且仅能恢复其中的一个秘密消息xb(b∈{0,1}),但无法得到关于x1-b的任何消息,Alice无法知晓接收方选择的是哪一个消息。
如图,可以把混淆电路理解为有四个算法:首先是Garble(混淆)算法,它把要计算的函数对应的电路C作为输入,输出被混淆的电路GC、解码信息d和编码信息e;之后,将输入信息x和编码信息e作为输入,通过Encode(编码)算法,得到输出X,即加密后的输入信息;之后,Eval(求解)算法把被混淆的电路GC和加密后的输入信息X作为输入,得到加密后的输出信息Y;最后,通过Decode(解码)算法,以Y和d作为输入解码得到解码后的输出y。
OT: 协议中发送方Alice拥有两个秘密消息m0和m1,接收者Bob选择并且仅能恢复其中的一个秘密消息mb(b∈{0,1}),但无法得到关于m1-b的任何消息,Alice无法知晓接收方选择的是哪一个消息。
ROT: 是OT的变形,相较于OT,功能基本相同,但是消息是随机的,而接收者的选择也是随机的,而不是自选。
COT: 相关性的OT,功能也等价于OT,但是消息r和接受者的选择满足一个相关性。
目前,计算几百/几千个OTs,IKNP类协议效率更高;计算上万个OTs,PCG类协议效率更高
协议比较:
tip:LWE为基于容错学习假设,LPN为基于带噪声学习假设(可用于对抗量子计算攻击者)
Yao 2PC协议在半诚实敌手模型下安全,那么如何实现恶意敌手模型下2PC协议?即如何检测Garbler的恶意行为?可以采用Cut-and-Choose(C&C)方法。
而目前,认证混淆电路方法效率会优于C&C方法,得到更多的使用。
方案:
性质:
半诚实MPC协议的设计基本思路: 所有电路线值均被线性秘密分享,保证隐私性