如何避免字符串混淆加密_混淆电路介绍(三)混淆电路原理

混淆电路介绍(一)中,我们介绍了混淆电路(Garbled Circuits,GC)背后依赖的密码学思想:不经意传输(Oblivious Transfer,OT)。在混淆电路介绍(二)中,我们成功地将一个比较大小的函数转化成了一个逻辑电路。在这篇文章中,我们将基于以上两篇文章,详细介绍 GC 协议的原理。

首先我们回顾一下定义。混淆电路是一种密码学协议。遵照这个协议,两个 party 能在互相不知晓对方数据的情况下计算某一能被逻辑电路表示的函数。以著名的 Yao's Millionaires' Problem 为例,两个富翁 Alex 和 Bob 想在不知道对方财富值的情况下计算谁的财富值更高。比如 Alex 的财富值是 15,Bob 的财富值是 11。通过 GC,Alex 和 Bob 都知道了 Alex 更富有,但是 Alex 和 Bob 都不知道对方的财富值。

在混淆电路介绍(二)中,我们已将比大小的函数转化为逻辑电路。电路由

个模块
组成,每一个模块有三个输入
和一个输出
。由于整个逻辑电路较大,我们不妨就逻辑电路的起点(如下图,第一个模块
)来演绎 GC 协议。我们可以很容易将其推广到整个逻辑电路。

6bb1a1540d510254ec880f7fa1cdff12.png

混淆电路

混淆电路协议分为三个部分。

  • Step 1: Alice 生成混淆电路
  • Step 2: Alice 和 Bob 进行通信
  • Step 3: Bob evaluate 生成的混淆电路
  • Step 4: 分享结果

Step 1: Alice 生成混淆电路

首先,Alice 基于上述电路生成对应的混淆电路。生成过程主要分四步。

第一步,Alice 对电路中的每一线路(Wire)进行标注。如下图所示,Alice 一共标注了七条线路,包括模块的输入输出

,和模块内的中间结果
。对于每一条线路
,Alice 生成两个长度为
的字符串
。这两个字符串分别对应逻辑上的 0 和 1。
这些生成的标注会在 Step 2 有选择性地发给 Bob,但 Bob 并不知道
对应的逻辑值。

af4b5681d3f1d10443012786da4b23da.png

第二步,Alice 对电路中的每一个逻辑门的 Truth Table 用

进行替换,由
替换 0,由
替换 1。比如电路图中左上方的 XOR 门的输入是
输出是
,对应的 Truth Table 可以做如下转换。

f8ef7bf5a98f9f64592580b9c5ca7056.png

第三步,Alice 对每一个替换后的 Truth Table 的输出进行两次对称密匙加密(即加密和解密的密匙相同),加密的密匙是 Truth Table 对应行的两个输入。比如 Truth Table 的第一行是

,我们就用
加密
生成

第四步,Alice 对第三步加密过后的 Truth Table 的行打乱得到 Garbled Table。所以 Garbled Table 的内容和行号就无关了。混淆电路的混淆二字便来源于这次打乱。

Step 2: Alice 和 Bob 通信

第一步,Alice 将她的输入对应的字符串发送给 Bob。比如

,那 Alice 会发送
给 Bob。
由于 Bob 不知道
对应的逻辑值,也就无从知晓 Alice 的秘密了。

第二步,Bob 通过不经意传输(OT)协议从 Alice 获得他的输入对应的字符串。不经意传输保证了 Bob 在

中获得一个,且 Alice 不知道 Bob 获得了哪一个。
所以 Alice 也就无从知晓 Bob 的
了。

最后,Alice 将所有逻辑门的 Garbled Table 都发给 Bob。在这个例子中,一共有四个 Garbled Table。

Step 3: Bob evaluate 生成的混淆电路

Alice 和 Bob 通信完成之后,Bob 便开始沿着电路进行解密。

因为 Bob 拥有所有输入的标签和所有 Garbled Table,他可以逐一对每个逻辑门的输出进行解密。在这个例子中,假设 Bob 拥有的输入标签为

。他可以
  1. 对于电路图左上方的 XOR,用
    解密获得
  2. 对于电路图左下方的 XOR,用
    解密获得
  3. 对于电路图中间的 AND,用
    解密获得
  4. 对于电路图右侧的 XOR,用
    解密

值得注意的是,由于 Garbled Table 每一行的密匙都不同,所以 Bob 只能解密其中一行。而且 Bob 并不知道解密出来的

对应的逻辑值,也就无从获得更多信息了。而 Alice 全程不参与 Bob 的解密过程,所以也如法获得更多信息。

Step 4: 共享结果

最后 Alice 和 Bob 共享结果。Alice 分享

或者 Bob 分享
,双方就能获得电路输出的逻辑值了。

总结

通过一个特定的电路例子,本文演绎了混淆电路(Garbled Circuits,GC)原理。这个实现可以运用到任意可以用逻辑门描述的电路。

上一篇:混淆电路介绍(二)逻辑电路

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值