MPC系列:Beaver三元组和BMR协议

Beaver三元组:主要用于安全多方计算协议中的乘法计算。应用范围为加法和乘法均为线性的秘密分享机制。它的通信和计算都在协议开始之前进行,只需要在使用时准备好三元组。

     假设需要分享的秘密为𝑎、𝑏,参与者𝑃𝑖获得的𝑎、𝑏的子秘密为𝑎𝑖、𝑏𝑖。

      加法秘密分享机制为线性的意思为:存在一组常数𝜆1, 𝜆2,…,𝜆𝑛,使得:

将其抽象简记为:

      乘法秘密分享机制为线性的意思为:存在一组常数𝜆1, 𝜆2,…,𝜆𝑛,使得:

将其抽象简记为:

三元组乘法的主要流程:

          1.随机产生一个三元组:[a],[b],[c].其中a,b对所有参与者保密,c=a·b。假设秘密x和y已经被分享,现在需要计算[x,y].

          2

         .

           因为 [𝛼] 和 [𝛽] 已公开,因此所有参与者都可以通过秘密重构函数独立计算出𝛼和𝛽。又因为:

由于[𝑎],[𝑏],[𝑐]是预先产生和分配的三元组,因此在乘法计算时参与者只需要本地计算[𝛼]=[𝑥]−[𝑎]和[𝛽]=[𝑦]−[𝑏],并对计算结果[𝛼]和[𝛽]进行公开。而对于上次叙述的BGW协议,在计算乘法时,需要每一个参与者计算[𝑎]∙[𝑏],之后对[𝑎]∙[𝑏]进行秘密共享,将子秘密分别发送给其他所有参与者。Beaver三元组是消耗性,每次乘法计算都会消耗一个Beaver三元组,通过预先计算的Beaver三元组,将通信量和计算量移到了协议开始之前。 

BMR协议:将姚式混淆电路从俩方扩充到多方情景。

具体而言,需要每个参加者随机生成每条导线的加密值,之后将自己生成的加密值进行掩盖后提交到多方计算协议,协议将每个参与者提交的关于同一条导线加密值进行异或,得到多方协同生成的布尔电路中该条导线的加密值。

BMR协议具体如下:

1.协议根据需要实现的目标函数生成布尔电路𝒞,并向所有参与者公开。将电路𝒞中的各条导线分别标记为𝑤1,𝑤2,…,𝑤t。协议参与者为𝑃1,𝑃2,…,𝑃𝑛,其输入分别为𝑥1,𝑥2,…,𝑥𝑛∈ {0,1}。

2对于布尔电路𝒞中的每一个门𝐺𝑖,所有参与者共同参与一个计算乱码表的多方安全计算协议

.

3.

假设电路𝒞中门𝐺𝑖的输入导线为𝑤𝑎, 𝑤𝑏,输出导线为𝑤𝑐。门𝐺𝑖实现的函数为𝑤𝑐= 𝑔(𝑤𝑎,𝑤𝑏)。 

 

 

计算指针比特:

 

 

并设置:

 

 

同理,对所有参加者提交的翻转比特求异或,

 

 

得到翻转比特𝑓𝑎,𝑓𝑏,𝑓𝑐,翻转比特用于掩盖参与者𝑃𝑖的输入,使得𝑃𝑖无法得知其对每条导线加密值的具体贡献。 

 

接着创建门𝐺𝑖的乱码表,让𝑣𝑎, 𝑣𝑏分别是导线𝑤𝑎, 𝑤𝑏, 的输入,对于𝐺𝑖输入𝑣𝑎,𝑣𝑏∈{0,1},一共只有四种可能的组合。

 

让𝑣𝑐是导线𝑤𝑐的真实输出值,𝑒𝑣𝑎,𝑣𝑏是导线𝑤𝑐的加密值。设定

 

 

即𝑒𝑣𝑎,𝑣𝑏共有四个可能的值,如下表所示:

 

 

其中,即将各个, 进行级联。之后对乱码表中𝑒𝑣𝑎,𝑣𝑏的条目进行重新排序,并将条目𝑒𝑣𝑎,𝑣𝑏放在的位置上。 

 

向参与者𝑃1输出计算得到的乱码表,向𝑃1发送各个参与方的输入𝑥1,𝑥2,…,𝑥𝑛所对应的电路𝒞的加密导线值。

[本下节看不懂,请大佬自行去矩阵元公众号了解:https://mp.weixin.qq.com/s/vN4XlClZUASYM46u9urRBw]

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值