混淆电路(Garbled Circuit)是一种密码学协议,由姚期智教授在80年代针对安全计算所提出的概念。其效果就是,当几个通信方需要一起输入某些数据,然后通过同一个函数计算出一个结果。但是通信的各方都不希望其他人知道自己的输入是什么,此时利用混淆电路协议即可完成目的。
在这里关键词是“电路”,实际上所有可计算问题都可以转换为各个不同的电路,例如加法电路,比较电路,乘法电路等。而电路是由一个个门(gate)组成,例如与门,非门,或门,与非门等。
混淆电路里的多方的共同计算是通过电路的方式来实现,例如下图所示,Alice和Bob要进行多方计算,他们首先需要构建一个由与门,或门,非门,与非门组成的布尔逻辑电路,每个门都包括输入线,输出线。
混淆电路则通过加密和扰乱这些电路的值来掩盖信息,而这些加密和扰乱是以门为单位,每个门都有一张真值表。
混淆电路的过程:
- Alice用密钥加密真值表,并把表打乱后发给Bob,通过这种这加密+打乱的过程,达到混淆电路的目的。
- Bob在接收到加密表后,根据收到的加密真值表,混淆的输入,及自己的Key,对加密真值表的每一行尝试解密,最终只有一行能解密成功,并提取相关的加密信息。
- Bob将计算结果返回给Alice。
在整个过程大家交互的都是密文或随机数,没有任何有效信息泄露,在达到了计算的目的,同时达到了对隐私数据数据保护的目的。