GMW协议

GMW协议由Goldreich等人提出,基于混淆电路(Garbled Circuit),支持多方的半诚实的安全计算协议。和之前所述的姚氏混淆电路估值方案的不同之处在于,GMW混淆电路估值方案不需要使用混淆真值表,因此没用混淆真值表带来的查表和加解密操作,节省了非常大的计算量和通信量。

混淆电路在上次的科普已经介绍过了,在将安全多方计算的目标函数转换为布尔电路后,通过对电路进行混淆(加密)操作来得到混淆电路。

混淆电路通过对电路进行混淆(加密)操作来掩盖电路的输入和电路的结构,以此来实现对各个参与者的隐私信息的保密,再通过电路计算来实现安全多方计算的目标函数的计算。

GMW协议的目标函数由异或门和与门、非门组成。非门的输出值是输入值的反,输入为1则输出为0,反之输入为0则输出为1。与门的真值表如下图所示:

异或门及其真值表

异或门及其真值表如下图所示: 

与门及其真值表

 

首先介绍GMW协议的两方情况。首先假设参与者为Alice 和Bob,Alice和Bob的输入均为长为n的比特串,其中 Alice输入为比特串𝑎,Bob的输入为比特串b。

对于比特串𝑎中的每个比特𝑎𝑖,Alice都产生一个随机的比特𝑟1𝑖∈ {0,1},1≤𝑖≤𝑛,并将这n个随机产生的比特𝑟1𝑖,1≤𝑖≤𝑛发送给Bob。

对于比特串𝑏中的每个比特𝑏𝑖,Bob也都产生一个随机的比特𝑟2𝑖∈ {0,1},1≤𝑖≤𝑛,并将这n个随机产生的比特发送给Alice。Alice和Bob分别将𝑎𝑖⨁𝑟1𝑖和𝑏𝑖⨁𝑟2𝑖、𝑟1𝑖、𝑟2𝑖作为协议输入𝑎和b的子秘密。

即Alice掌握了𝑎和b的子秘密𝑎Alice和𝑏Alice,𝑎Alice=𝑎⨁𝑟1𝑖,𝑏Alice=𝑟2𝑖,Bob掌握了𝑎和b的子秘密aBob和𝑏BobaBob=𝑟1𝑖,𝑏Bob= 𝑏⨁𝑟2𝑖。

若Alice公开其所掌握的𝑎⨁𝑟1𝑖和𝑟2𝑖,Bob公开其所掌握的𝑟1𝑖和𝑏⨁𝑟2𝑖,那么Alice和Bob可以共同计算出𝑎=𝑎⨁𝑟1𝑖⨁𝑟1𝑖,𝑏=𝑏⨁𝑟2𝑖⨁𝑟2𝑖。

 

接着Alice和Bob对布尔电路中的每个门求值,直至完成整个电路的计算。对于非门,由于非门是单输入的,Alice和Bob间无须进行交互,因此直接对输入求反即可。

对于异或门,假设异或门的输入分别为𝑎和b,Alice掌握了𝑎和b的子秘密𝑎Alice和𝑏Alice,Bob掌握了𝑎和b的子秘密aBob和𝑏Bob,因为:

因此Alice和Bob可以在本地对其所掌握的子秘密进行计算,

 

 

对于与门,因为𝑎⋀𝑏=(𝑎Alice⨁aBob)⋀(𝑏Alice⨁𝑏Bob),因此Alice和Bob无法只在本地完成与门的计算。

 

 

因为Alice手中有𝑎Alice𝑏Alice,因此Alice可以本地计算𝑎Alice⋀𝑏Alice。Bob 手中有aBob、𝑏Bob,因此Bob可以本地计算aBob⋀𝑏Bob。剩下的𝑎Alice⋀𝑏Bob和aBob⋀𝑏Alice二者必须协同完成。

(𝑎Alice⋀𝑏Bob)⨁(aBob⋀𝑏Alice)的计算可通过四选一不经意传输协议完成。对于Alice来说,Bob掌握的aBob和𝑏Bob都是单比特值,只有四种情况:

Alice手中又有𝑎Alice和𝑏Alice,因此Alice可以直接计算出四种情况下的𝑎⋀𝑏的值,假设分别为𝑐00,𝑐01,𝑐01,𝑐11,注意这里𝑎⋀𝑏的值为(𝑎Alice⨁aBob)⋀(𝑏Alice⨁𝑏Bob)的值, 对于Alice和Bob来说式子里都只有两个未知数,而这两个未知数一共只有4种可能。

Alice的未知数为aBob和𝑏Bob,Alice可以假设(aBob,𝑏Bob)分别为(0,0)、(0,1)、(1,0)、(1,1),那么根据假设的四种情况,𝑎Alice,𝑏AliceaBob,𝑏Bob就都确定了,可以据此计算出四个确定的𝑐00,𝑐01,𝑐01,𝑐11值。因此Alice可以得到下表:

Alice 再产生一个随机比特𝑟,并将计算出的𝑐00,𝑐01,𝑐01,𝑐11异或上随机比特𝑟,将𝑐00⨁𝑟, 𝑐01⨁𝑟, 𝑐01⨁𝑟, 𝑐11⨁𝑟为四选一不经意传输协议的输入,Bob将其所掌握的aBob𝑏Bob作为四选一不经意传输协议的输入,双方执行该OT协议,Bob得到对应的𝑐aBob𝑏Bob⨁𝑟。

Alice将𝑟作为该与门的输出的子秘密,Bob将𝑐aBob𝑏Bob⨁𝑟作为该与门的输出的子秘密。

由于Alice和Bob双方间执行的是不经意传输协议,Alice不知道Bob 在𝑐00⨁𝑟, 𝑐01⨁𝑟, 𝑐01⨁𝑟, 𝑐11⨁𝑟中选择了哪个,保证了aBob𝑏Bob依旧对Alice保密。

又由于Alice发送的是𝑟⨁𝑐aBob𝑏Bob,Bob不知道随机比特𝑟的值,也就不知道𝑐aBob𝑏Bob的到底是1还是0,只有在最后双方都公布各自手中的计算结果,双方才能合力计算出正确的结果。 

 

这里Bob得到的子秘密异或上Alice得到的子秘密即为𝑎⋀𝑏的值。 

将GMW协议扩展到多方情况下:参与者为𝑃1,𝑃2,…,𝑃𝑛,假设输入为m个比特,那么每个参与者𝑃𝑖产生𝑚组,每组𝑛−1个随机比特,分别将每组的𝑛−1个随机比特发送给除了自己之外的n-1个参加者。

假设输入数据为1个比特,那么每个参与者𝑃𝑖向参与者𝑃𝑗发送𝑟𝑖𝑗,1≤𝑗≤𝑛且𝑗≠𝑖。在所有参与者发送完成后,参与者𝑃𝑖掌握了𝑟1𝑖,𝑟2𝑖,…,𝑟𝑛𝑖。假设𝑃𝑖的输入为𝑎,那么𝑃𝑖将𝑎⊕𝑟1𝑖⊕𝑟2𝑖⊕…⊕𝑟𝑛𝑖作为𝑎的子秘密𝑎𝑖

对应的收到𝑃𝑖发送的随机比特𝑟𝑖𝑗的参与者𝑃𝑗,将𝑟𝑖𝑗当做秘密𝑎的子秘密𝑎𝑗。因此𝑎=𝑎1⊕𝑎2⊕…⊕𝑎𝑛

对于异或门以及非门,和双方情况下相同,每个参与者直接在本地进行计算即可。对于与门,与门的输入为𝑎和b,参与者𝑃𝑖手中掌握了𝑎和b的子秘密𝑎𝑖和𝑏𝑖,因为𝑎=𝑎1⊕𝑎2⊕…⊕𝑎𝑛,𝑏=𝑏1⊕𝑏2⊕…⊕𝑏𝑛,可得:

这其中,对于𝑃𝑖来说,每个𝑎𝑖⋀𝑏𝑖都可由𝑃𝑖在本地进行计算。而对于𝑎𝑖⋀𝑏𝑗,𝑖≠𝑗,可由参与者𝑃𝑖和𝑃𝑗通过上述的两方BGW协议共同计算出𝑎𝑖⋀𝑏𝑗的两个子秘密。当电路计算完成,每个参与者公布自己所掌握的子秘密,再将所有的子秘密进行异或,即可得到最后的计算结果。

BGW协议

BGW协议也是支持多方的安全计算协议,BGW协议基于Shamir(t, n)门限秘密共享机制,利用了Shamir秘密共享机制的加法同态和乘法同态的性质。Shamir(t, n)门限秘密共享机制在之前的科普已经进行过介绍了。

 

假设BGW协议的参与者一共有n人,假设参与者𝑃𝑖需要输入秘密𝑎,则参与者𝑃𝑖首先利用Shamir(t,n)门限秘密共享机制将秘密𝑎共享给其他所有参与者,阈值t的选择根据具体使用情景下的安全性要求决定。

当所有参与者的输入都通过Shamir(t, n)门限秘密共享机制分享后,每个参与者都掌握了协议输入的子秘密。假设一个门的输入分别为𝑎和𝑏,秘密𝑎和𝑏已经分别由秘密分配函数

𝑓𝑎(𝑥) =𝛼t-1𝑥t-1+⋯+𝛼1𝑥1+𝑎, 𝑓𝑏(𝑥)=𝛽t-1𝑥t-1+⋯+𝛽1𝑥1+𝑏

分配完成,𝑓𝑎(0)=𝑎,𝑓𝑏(0)=𝑏,参与者𝑃𝑖掌握𝑎和b的子秘密𝑎𝑖,𝑏𝑖。在布尔电路上,可将异或门和与门分别看成在有限域𝐹2上的加法和乘法。将异或用模为2的加法进行计算,与用模为2的乘法进行计算。

对于异或门:由于Shamir具有加法同态性,因此

𝑎⊕𝑏=𝑓𝑎(0)⊕𝑓𝑏(0),𝑓𝑎(𝑥)⊕𝑓𝑏(𝑥)=(𝛼t-1+𝛽t-1)𝑥t-1+⋯+(𝛼1+𝛽1)𝑥1+(𝑎+𝑏)

假设𝑓𝑐(𝑥)=𝑓𝑎(𝑥)⊕𝑓𝑏(𝑥),则𝑓𝑐(𝑖)=𝑓𝑎(𝑖)⊕𝑓𝑏(𝑖),而𝑓𝑎(𝑖)=𝑎𝑖和𝑓𝑏(𝑖)=𝑏𝑖都由𝑃𝑖掌握,因此𝑃𝑖可以本地计算出𝑓𝑐(𝑖)=𝑎𝑖+𝑏𝑖。当所有计算完成后,每个参与者𝑃𝑖公布自己计算出的𝑓𝑐(𝑖), 即可恢复出𝑓𝑐(𝑥)和𝑓𝑐(0)。

对于与门,和之前叙述过的基于Shamir(t, n)门限共享机制的多方乘法计算相同,只是BGW是在有限域𝐹2上。每个参与者𝑃𝑖计算𝑑𝑖=𝑎𝑖𝑏𝑖,接着每个𝑃𝑖独自选取次数为t次的随机多项式ℎ𝑖(𝑥),且满足ℎ𝑖(0)=𝑑𝑖,1≤𝑖≤𝑛,𝑡<𝑛/2。

向各个参与者分配𝑑𝑖,且𝑐𝑖𝑗= ℎ𝑖(𝑗),1≤𝑖,𝑗≤𝑛。所有参与者分配结束后,𝑃𝑖掌握了信息𝑐1𝑖,𝑐2𝑖,…,𝑐𝑛𝑖,同时再利用公开的重组向量𝜆1,…,𝜆𝑛𝑃𝑖计算𝑐𝑖=

此时𝑃𝑖掌握的子秘密𝑐𝑖即为𝑎𝑏的子秘密。当所有计算完成后,每个参与者公开自己的子秘密,再根据之前叙述的Shamir(t, n)门限秘密重构算法即可获得𝑎𝑏。

内容中包含的图片若涉及版权问题,请及时与我们联系删除