在混淆电路介绍(一)中,我们介绍了混淆电路(Garbled Circuits,GC)背后依赖的密码学思想:不经意传输(Oblivious Transfer,OT)。在混淆电路介绍(二)中,我们成功地将一个比较大小的函数转化成了一个逻辑电路。在这篇文章中,我们将基于以上两篇文章,详细介绍 GC 协议的原理。
首先我们回顾一下定义。混淆电路是一种密码学协议。遵照这个协议,两个 party 能在互相不知晓对方数据的情况下计算某一能被逻辑电路表示的函数。以著名的 Yao's Millionaires' Problem 为例,两个富翁 Alex 和 Bob 想在不知道对方财富值的情况下计算谁的财富值更高。比如 Alex 的财富值是 15,Bob 的财富值是 11。通过 GC,Alex 和 Bob 都知道了 Alex 更富有,但是 Alex 和 Bob 都不知道对方的财富值。
在混淆电路介绍(二)中,我们已将比大小的函数转化为逻辑电路。电路由
混淆电路
混淆电路协议分为三个部分。
- Step 1: Alice 生成混淆电路
- Step 2: Alice 和 Bob 进行通信
- Step 3: Bob evaluate 生成的混淆电路
- Step 4: 分享结果
Step 1: Alice 生成混淆电路
首先,Alice 基于上述电路生成对应的混淆电路。生成过程主要分四步。
第一步,Alice 对电路中的每一线路(Wire)进行标注。如下图所示,Alice 一共标注了七条线路,包括模块的输入输出
第二步,Alice 对电路中的每一个逻辑门的 Truth Table 用
第三步,Alice 对每一个替换后的 Truth Table 的输出进行两次对称密匙加密(即加密和解密的密匙相同),加密的密匙是 Truth Table 对应行的两个输入。比如 Truth Table 的第一行是
第四步,Alice 对第三步加密过后的 Truth Table 的行打乱得到 Garbled Table。所以 Garbled Table 的内容和行号就无关了。混淆电路的混淆二字便来源于这次打乱。
Step 2: Alice 和 Bob 通信
第一步,Alice 将她的输入对应的字符串发送给 Bob。比如
第二步,Bob 通过不经意传输(OT)协议从 Alice 获得他的输入对应的字符串。不经意传输保证了 Bob 在
最后,Alice 将所有逻辑门的 Garbled Table 都发给 Bob。在这个例子中,一共有四个 Garbled Table。
Step 3: Bob evaluate 生成的混淆电路
Alice 和 Bob 通信完成之后,Bob 便开始沿着电路进行解密。
因为 Bob 拥有所有输入的标签和所有 Garbled Table,他可以逐一对每个逻辑门的输出进行解密。在这个例子中,假设 Bob 拥有的输入标签为
- 对于电路图左上方的 XOR,用
解密获得
- 对于电路图左下方的 XOR,用
解密获得
- 对于电路图中间的 AND,用
解密获得
- 对于电路图右侧的 XOR,用
解密
值得注意的是,由于 Garbled Table 每一行的密匙都不同,所以 Bob 只能解密其中一行。而且 Bob 并不知道解密出来的
Step 4: 共享结果
最后 Alice 和 Bob 共享结果。Alice 分享
总结
通过一个特定的电路例子,本文演绎了混淆电路(Garbled Circuits,GC)原理。这个实现可以运用到任意可以用逻辑门描述的电路。
上一篇:混淆电路介绍(二)逻辑电路