【密码学】【多方安全计算】混淆电路Garbled Circuit浅析

混淆电路解决什么问题

混淆电路究竟解决什么问题呢?通俗的说就是一些人具有其隐私数据,他们想把这些数据联合起来算点什么,但又不想把数据交给别人,混淆电路解决的就是此类问题。

多方安全计算概念是解决“数据可用不可见”问题,因此其可由混淆电路方法实现,当然也可以由同态加密、秘密共享来实现。

我们可以先考虑一个经典问题——姚氏百万富翁问题。有两个存款百万的富翁,他们想比较出谁更富有,但又不想把自己的存款告诉对方或其它第三者。于是他们将数据拆散、打乱、加密,最后计算出结果并只解密结果,以此保护数据的隐私不外泄。

混淆电路是如何工作的

混合电路是如何工作的呢?我们知道所有计算问题都可以转换为一个电路,于是就有了加法电路、比较电路和乘法电路等等。当然更复杂的计算过程,如深度学习等,也是可以转化为电路的。一个电路是由一个个门(gate)组成的,比如与门、非门、或门、与非门等等。
【图片1,待补充】
如上图所示,封面中的两个人Alice和Bob想要搞点事情,他们搞了个电路(比如比较电路),每个门包括输入线(input wire)和输出线(output wire)。混淆电路就是通过加密和扰乱这些电路的值来掩盖信息的。在经典的混淆电路中,加密和扰乱是以门为单位的。每个门都有一张真值表。比如下图就是与门的真值表和或门的真值表。下面就以与门为例来说明混淆电路的工作原理。
【图片2,待补充】
Alice和Bob想计算一个与门。该门两个输入线x和y,以及一个输出线z,每条线由0和1两个可能的值。Alice首先给每条线指定两个随机的key,分别对应0和1。
【图片3,待补充】
然后,Alice用这些密钥加密真值表,并将该表打乱后发送给Bob。

加密后的真值表必须打乱,否则Bob可根据结果倒推出Alice的隐私信息。

加密过程就是将真值表中每一行对应的x和y的密钥加密z的密钥。这一加密+打乱的过程就是混淆电路的核心思想。
【图片4,待补充】
【图片5,待补充】
那Bob收到加密表后,如何计算呢?首先Alice把自己的输入对应的key发送给Bob,比如Alice的输入是0,那就发k0x,输入的是1就发k1x。同时把Bob有关的key都发送给Bob,也就是k0y和k1y。然后Bob根据自己的输入挑选相关的key。由于Bob收到的这些key都是随机数,所以其实并没有任何有效信息泄漏。Bob根据收到的kx和自己的ky,对上述加密表的每一行尝试解密,最终只有一行能解密成功,并提取相应的kz。
Bob将kz发给Alice,Alice通过对比是k0z还是k1z得知结果是0还是1。由于整个过程大家收发的都是密文或随机数,所以没有有效信息泄漏。

混淆电路的优化方法

以上就是混淆电路中的单个门的计算方法。当然每个电路肯定是由多个门组成的,这时候需要将这些门都串起来。当然,这样的混淆电路有点复杂,现在大家已经研究出很多优化方法,具体可以去看论文。

引用

混淆电路Garbled Circuit介绍

你可能感兴趣的:(密码学,多方安全计算,区块链,密码学,安全)