乱码电路第2部分:通用解决方案

描述

在我们的乱码电路系列的第 1 部分中,我们找到了拯救遇难朋友的特定问题解决方案。但是,该解决方案没有提供私下计算函数的通用方法(不透露其输入)。构建用于评估特定函数f(x)的通用解决方案的一种方法是设计一个电路,将可能的输入x映射到可能的输出f(x)。例如,考虑一个NAND门:

生成器

门将其输入导线 ({0,1}, {0,1}) 的所有可能值映射到其输出导线 {0,1} 的值。但是,为了找到输出导线的值,评估器必须知道输入导线的值。我们的目标问题要求输入线保持私有,因此我们需要修改这种方法。

乱码电路

一般的解决方案是由图灵奖获得者Andrew Yao在1986年给出的[1]。令人难以置信的是,Yao证明了任何多项式时间函数都可以通过“乱码”规则电路在多项式时间内安全地计算(不泄露玩家的输入)。在本介绍中,我们将考虑最简单的情况,即只有两个参与者,爱丽丝和鲍勃。每个都有一个不应透露给对方的专用输入位,并且每个都想了解NAND(Alice Input,Bob Input)的结果。由于任何函数都可以从NAND门构造,因此仅显示如何乱码就足够了。我们将让 Alice 生成(构建)乱码电路,Bob 将评估乱码电路以恢复结果。

发电机步骤(爱丽丝)

生成器的第一步是将导线输入 {0,1} 替换为独立且相同分布 (i.i.d.) 随机值 K。这些随机值将用作对称密码(如 AES)的加密密钥。在我们的表示法中,K 映射到的二进制值 {0,1} 是上标,而 K 对应的输入线 {1,2} 是下标。在我们的示例中,Alice 将向导线 1 提供输入,Bob 将向导线 2 提供输入。

生成器

由于 Alice(电线 1)知道她的输入位 b,她只需删除与 1-b 对应的另一个键。但是,Alice 将如何向 Bob 发送与他的输入位对应的密钥?

显而易见的解决方案存在问题:

如果鲍勃向爱丽丝索要与他的位b相对应的密钥,那么他已经透露了他的私人输入。

如果 Alice 向 Bob 发送 b 和 1-b 的两个键,那么 Bob 可以在两个输入上评估 f(x),而不仅仅是一个输入。这揭示了其他信息,可能包括爱丽丝的私人输入。

若要理解为什么发送两个密钥都会显示其他信息,请考虑一个示例,其中 Alice 的输入位为 0,Bob 的输入位为 0。NAND(0,0) 的输出为 1。如果 Bob 只知道他的输入位是 0 并且结果是 0,那么 Alice 的输入位可能是 0 或 1。但是,如果 Bob 能够同时评估 0 和 1 上的门,他会发现 NAND(A,0)=1 和 NAND(A,1)=1,这表明 Alice 的输入位必须是 0。这是对爱丽丝私人输入位的不必要披露。

由于 Bob 无法要求他的输入密钥,而 Alice 无法同时给他两个可能的密钥,因此我们需要一个解决方案,其中 Bob 只接收其输入位的密钥,而 Alice 不知道她发送给 Bob 的密钥。不可能的?

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分