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]