安全多方计算——Yao‘s 混淆电路

Yao’s混淆电路

   姚期智院士提出的首个安全多方计算方案,该方案可以计算任意可以转换成电路的函数f(x),属于安全双方计算方案。安全思想:一个人加密整个电路的输入输出,另一个人盲算,这样就导致信息不对称,从而一方不能获得另一方的数据。

   以加密一个与门G为例。该与门有两个输入A,B;一个输出Y。

https://bkimg.cdn.bcebos.com/pic/77c6a7efce1b9d16f9262943f7deb48f8c54642a?x-bce-process=image/resize,m_lfit,w_268,limit_1/format,f_auto

与门G

   假设Alice与Bob要计算这样的一个与门G,Alice拥有输入A的值,Bob拥有输入B的值,他们要各自用自己的数据做“与运算”。

方案如下:

1. Alice为输入和输出每个可能的值创建一个标签,分别为 L_{0A},L_{1A},L_{0B},L_{1B},L_{0Y},L_{1Y}L_{0A} 表示当A取0时生成的标签,L_{1A} 表示当A取1时生成的标签,其他类似。

2. Alice使用输入标签作为密钥将输出标签进行加密生成一个加密的真值表。

在这个表中,Enc_{L_{0A}}()表示使用标签L_{0A}作为密钥进行对称加密,其他类似。

Alice再将这个表的位置进行随机置换就得到了混淆表。

3. Alice将混淆表和自己的输入所对应的标签发送给Bob。

4. Bob运用不经意传输协议(OT)向Alice请求自己的输入对应的标签。这样Bob就得到了解密输出标签所需要的全部两个标签。

5. Bob使用两个标签对混淆表解密,最终只有一行可以成功解密,这个结果就是与运算的输出标签,将标签发送给Alice。Alice将最后的真实结果告诉Bob。

关于混淆电路的一些解释:

第一点: 标签只是一些随机数,标签其实就代表了某根导线的取值(0或1)。

第二点:不经意传输协议可以做到:Bob可以向Alice请求自己的输入对应的标签,但Alice并不知道Bob最后请求的是哪个标签。

第三点: 上述方案只是一个与门的例子,如果只计算这么一个门,那么一方可以根据自己的输入和最终结果推出另一方的输入。实际中的电路是由很复杂的各种门组合而成,在这样的电路中,一方是不会反推出另一方的输入的。

第四点:在较复杂的电路里,Alice是对电路中每一根导线都设定两个标签,对每个门都生成一张混淆表。这里的导线可能同时是一个门的输出和另一个门的的输入,这时候,导线作为门输出的两个标签和作为门输入的两个标签是对应一样的。所以在Bob的计算过程中,Bob始终不知道Alice的输入是什么(他只知道Alice输入的标签,但不知道标签对应的真实值是什么。换句话说,Bob可以完成整个计算,但是Bob计算的都是一些标签值,他并不知道这些标签所对应的真实值,所以他不能推出Alice的输入)。而Alice虽然知道每个标签所代表的真实值,但是他全程都没有参与计算,所以并不能知道中间结果,也就不能推出Bob的输入

第五点:这一点我没有想明白,如果有大佬知道,请在评论区告诉我,不胜感激!!Bob用两个标签解密时会对混淆表的四行都尝试解密,只有一个会解密成功,那么它是如何判定某一行是解密成功的呢?毕竟都是一些看似是乱码的随机数。(PS:这个问题在一些Yao’s混淆电路优化方案中被得到优化,有一个方案大概是生成混淆表时把对应位置也记录下来,这样只要解密特定位置的行就可以了,这样就减少了计算开销。)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值