今天小编给各位分享的是多方协议,「隐私计算笔谈」MPC系列专题(五):Beaver 三元组和 BMR 协议的知识,,希望对您有所帮助。如果你还想了解更多这方面的信息,请点击本站其他相关内容,共同学习吧!如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文导读目录:
1、多方协议,「隐私计算笔谈」MPC系列专题(五):Beaver 三元组和 BMR 协议
多方协议,「隐私计算笔谈」MPC系列专题(五):Beaver 三元组和 BMR 协议 ♂
「隐私计算笔谈」系列专题(五): 三元组和 协议
三元组
三元组( )主要用于安全多方计算协议中的乘法计算。它的应用范围为加法和乘法均为线性的秘密分享机制。
用[?]表示秘密被分享之后的状态,如[]表示秘密已经通过秘密分享函数被分享给了参与者,如果有个参与者,则[] = {}。假设秘密共享函数为(),为待共享的秘密,参与者为,参与者拿到的的子秘密记为。
假设需要分享的秘密为、,参与者获得的、的子秘密为。
加法秘密分享机制为线性的意思为:存在一组常数,使得:
将其抽象简记为:
乘法秘密分享机制为线性的意思为:存在一组常数,使得:
将其抽象简记为:
的主要流程为:
在协议开始之前预先产生一个随机三元组:
其中和对所有参与者保密,满足=?。假设秘密和已经被分享,现在需要计算 [] 。
. 所有参与者公开 [],[]=[]?[]
. 所有参与者公开 [],[] = []?[]
. 所有参与者计算 []=[]+?[]+?[]+?
因为 [] 和 [] 已公开,因此所有参与者都可以通过秘密重构函数独立计算出和。又因为:
由于[],[],[]是预先产生和分配的三元组,因此在乘法计算时参与者只需要本地计算[]=[]?[]和[]=[]?[],并对计算结果[]和[]进行公开。
而对于上次叙述的协议,在计算乘法时,需要每一个参与者计算[]?[],之后对[]?[]进行秘密共享,将子秘密分别发送给其他所有参与者。
三元组是消耗性,每次乘法计算都会消耗一个三元组,通过预先计算的三元组,将通信量和计算量移到了协议开始之前。
协议
之前介绍的姚氏混淆电路只支持双方计算,(--)协议将姚氏混淆电路扩充到了多方情景。
混淆电路的加密由一方对每条导线的真实输入值生成一个随机加密值,并根据每个门的真值表生成对应的加密表来实现。
因此如果直接把混淆电路协议扩展到多方,由一方对整个电路进行加密,或者对电路的一部分门进行加密,那么当加密方与参与者中的某个求值方进行串通或者这两者的信息都被收买时,就会破坏协议的安全性。
为了安全性,需要让所有参与者共同生成所有导线的加密值和门的加密真值表。
具体而言,需要每个参加者随机生成每条导线的加密值,之后将自己生成的加密值进行掩盖后提交到多方计算协议,协议将每个参与者提交的关于同一条导线加密值进行异或,得到多方协同生成的布尔电路中该条导线的加密值。
协议具体如下:
首先协议根据需要实现的目标函数生成布尔电路,并向所有参与者公开。将电路中的各条导线分别标记为。协议参与者为,其输入分别为。
对于电路中的每一条导线,参与者随机产生导线 的真值 ,对应的随机值,分别记为
满足,即为比特的随机比特串,为比特的随机比特。再产生一个随机翻转比特。对于每一条导线,参与者计算
因为, 因此只需要发送或者就可。函数()可看作是哈希函数,其将位的输入扩展为?(+)位,是参与者数量。
对于布尔电路中的每一个门,所有参与者共同参与一个计算乱码表的多方安全计算协议。该协议的输入是每个参与者之前计算的和参与者的输入。该协议的目标为:
假设电路中门的输入导线为,输出导线为。门实现的函数为。
计算指针比特:
并设置:
同理,对所有参加者提交的翻转比特求异或,
得到翻转比特,翻转比特用于掩盖参与者的输入,使得无法得知其对每条导线加密值的具体贡献。
接着创建门的乱码表,让分别是导线, 的输入,对于输入,一共只有四种可能的组合。
让是导线的真实输出值,是导线的加密值。设定
即共有四个可能的值,如下表所示:
其中,即将各个和, 进行级联。之后对乱码表中的条目进行重新排序,并将条目放在的位置上。
向参与者输出计算得到的乱码表,向发送各个参与方的输入所对应的电路的加密导线值。
多方协议,「隐私计算笔谈」MPC系列专题(五):Beaver 三元组和 BMR 协议的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于多方协议,「隐私计算笔谈」MPC系列专题(五):Beaver 三元组和 BMR 协议的信息别忘了在本站进行查找喔。
还没有评论,来说两句吧...