【密码学基础】混淆电路(Garbled Circuit)

1 概念

  • 混淆电路是一种密码学协议,以实现安全多方计算(MPC)。场景是当多个通信方需要共同输入数据,然后通过同一个函数计算出一个结果,但是,各个通信方都不允许其他人知道自己的输入是什么。混淆电路就能很好地解决这个问题。
  • 补充:可计算函数都可转化为电路的实现:加、比较、乘法等。电路是由门(gate)组成,如与门、非门、或门、与非门等。
  • 混淆电路通过加密和扰乱电路值来掩盖真实的输入信息,加密和扰乱是以门为单位,每个门都有一张真值表。
  • 混淆电路(GC) = 不经意传输(OT) + 逻辑电路

2 流程

本文以与门为例介绍混淆电路的算法流程。Alice和Bob两方分别拥有数据 X X X Y Y Y(0或1),现在希望双方都不知道对方数据的情况下,计算出逻辑与的结果 Z Z Z

Step 1:Alice生成混淆电路

首先,Alice将目标函数转化为布尔电路,然后生成一张与门的 真值表(true table):
在这里插入图片描述
然后,随机生成6个数 X 0 , X 1 , Y 0 , Y 1 , Z 0 , Z 1 X_0, X_1, Y_0, Y_1, Z_0, Z_1 X0,X1,Y0,Y1,Z0,Z1对真值表进行替换。注: X 1 X_1 X1表示替换 X = 1 X=1 X=1的位置,其他同理。于是有了下面这张 替换表
在这里插入图片描述
之后,Alice对替换表中的 Z Z Z进行连续两次对称加密(加密密钥和解密密钥相同)。如下图,加密密钥则是两个输入 X , Y X, Y X,Y,得到加密表:
在这里插入图片描述
然后,打乱各行,使加密表内容与行号无关(这里我交换了第2和第3行的顺序),最终得到 混淆表(garbled table)。 这也就是混淆电路中“混淆”二字的由来!
在这里插入图片描述

Step 2:Alice和Bob进行通信

Alice将自己的输入 X = n X=n X=n替换为为第一步生成的随机数 X n X_n Xn,发送给Bob,这样Bob就无从知晓Alice的真是输入到底是多少了。
然后,Bob也需要将手里的真实输入替换为第一步生成的随机数,怎么实现?通过不经意传输(OT)协议,从Alice手里获取对应的替换值 Y 1 / Y 0 Y_1/Y_0 Y1/Y0。注意!因为采用了1-out-of-2 OT协议,所以Bob只能取到 Y 1 , Y 0 Y_1, Y_0 Y1,Y0中的其一,并且Alice无从知晓Bob到底取走了哪个,从而无法知道Bob手里的真实值是多少。
随后,Alice也将混淆表发送给Bob进行后续的计算。

Step 3:Bob计算混淆电路

Alice和Bob完成上述的通信后(Alice替换真实值发给Bob,Bob从Alice手里取到对应替换值,Alice将混淆表发给Bob),Bob尝试进行电路解密。假设Alice真实输入是0,Bob真实输入是1,那么目前Bob已知的信息有 X 0 , Y 1 X_0, Y_1 X0,Y1两个数据。使用这两个值,对混淆表进行对称密钥解密,最终,只有第3行是可以解密出结果的!也就是 Z 0 Z_0 Z0。注意,这里解密出的 Z 0 Z_0 Z0仍是替换值,而只有Alice才知道替换的关系。

Step 4:Alice和Bob共享计算结果

Bob分享解密后的结果 Z 0 Z_0 Z0给Alice,Alice知道替换值与原始值的替换关系,所以可以快速替换回真实值,并且可以将最终的真实结果分享给Bob。

通过以上4个步骤,就在双方均不知道对方数据的情况下,顺利实现了共同计算同一个函数的功能。

3 流程总结

在这里插入图片描述

Alice端会生成布尔电路已经对应的真值表、替换表、加密表以及混淆表,发送给Bob的是替换值和混淆表,然后Bob通过OT协议拿到自己的替换值,从而对混淆表中的值进行解密。最后,将解密结果共享给Alice得到真值结果,最后双方共享真值结果。

4 混淆电路优缺点

混淆电路最重要的特点就是无论电路有多复杂,都只需要恒定的通信轮数就能完成,但是总的通信开销却是比较大的。

5 混淆电路实现ReLU协议(存在不理解的问题)🌟

放一个Gazelle中用GC实现ReLU的图:
在这里插入图片描述
电路分为三部分:重构(reconstruct share)、计算ReLU(为什么是p/2应该在Garbled Neural Networks are Practical中有解释)、返回share结果。这个过程可以理解,但是我仍然不是很理解GC原理和这个电路的关系,GC是需要A方构造真值表,加密并混淆后发送给B方,同时把自己输入的替换值也发过去,B方借助OT通信得到自己输入的替换值,然后对真值表进行解密,得到结果的替换值,然后发给A得到真实结果。

  1. 问题1:GC保证的是双方不知道对方输入的情况下,计算出函数结果。而隐私推理中,A得到了真实结果,那是不是已经泄漏隐私了?
  2. 问题2:看上图中的流程,有个share重构(求和)的过程,这个是在哪一方做的(应该没有第三方),求和的那方是不是得到了真实值?
  3. 问题3:从上图的流程中没有看出来GC原理,并没有构造真值表,并且做OT通信等过程…应该怎么把GC原理和ReLU协议对应起来?存在真值表的话,两个share在表中如何存在?是作为两个输入wire吗?感觉这些问题都没有在文章的ReLU协议中看到。

6 GMW协议

GMW协议是Goldreich提出的一种通用、高效的安全多方计算协议。与GC类似,需要将函数描述为一个布尔电路。但是与GC不同,GMW评估电路的每一层布尔门都需要一轮交互,与GC相比,GMW需要更少的通信量,如果只考虑在线开销,GMW中的大部分计算和通信可以转移到预处理(离线)阶段,在线阶段非常高效。

GC中一方生成加密真值表,另一方执行计算,门电路的输入通过主动发送和OT获取实现,用这样的方式来达到多方计算中一些公平性。但总体来看,拥有真值表的一方还是主导地位。那么是否可以让双方拥有更加对等的地位,让每个参与方都持有一部分秘密份额,都参与计算呢?这个就是GMW所提出的方法。

参考资料:
混淆电路简介(GC)
MPC系列-混淆电路
GMW协议
我的隐私计算学习——秘密共享
机器学习隐私保护研究综述

  • 13
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.zwX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值