APP
V神:混淆电路(Garbled circuits)快速入门
2020-03-23 21513 0

注:原文作者是以太坊联合创始人Vitalik Buterin。

特别感谢Dankrad Feist对本文进行的审阅工作。

混淆电路(Garbled circuits)是一种非常古老,且非常简单的密码学原语。它们很可能是通用“多方计算”(MPC)的最简单形式。

以下是该方案的常规设置:

  1. 假设存在两方,爱丽丝(Alice )和鲍勃(Bob),他们想要计算一些函数f(alice_inputs, bob_inputs),这需要从双方那获取输入。爱丽丝(Alice)和鲍勃(Bob)都想知道计算函数<code>f的结果,但是爱丽丝(Alice)不想鲍勃(Bob)知道她的输入,而鲍勃(Bob)则不想爱丽丝(Alice)知道他的输入。理想情况下,除了fk
  2. 鲍勃(Bob)生成两个点P1和<code>P2,要求P1 + P2等于<code>H。鲍勃(Bob)选择P1或<code>P2为G * k(即他知道对应私钥的点)。请注意,<code>P1 + P2 = H的要求可确保鲍勃(Bob)不能生成P1和<code>P2。这是因为如果在鲍勃(Bob)知道k1和<code>k2的情况下,如果P1 = G * k1和<code>P2 = G * k2,则H = G *(k1 + k2),因此这意味着鲍勃(Bob)可提取<code>H的离散对数(或“对应的私钥” ”),这意味着椭圆曲线密码系统的所有部分都被破坏了;
  3. 爱丽丝(Alice )确认P1+P2=H,并使用一些标准公钥加密方案(例如El-Gamal)加密<code>P1下的v1和<code>P2下的v2。鲍勃(Bob)只能解密这两个值中的一个,因为他知道最多对应一个值<code>(P1,P2)的私钥,而爱丽丝(Alice )又不知道是哪一个。
这解决了问题,鲍勃(Bob)根据输入位的不同,学习两个线标签(6529或4872)中的一个,而爱丽丝(Alice )却不知道鲍勃(Bob)学习了哪个标签。

应用领域

混淆电路(Garbled circuits)对于很多应用都有潜在的用途,而不仅仅是2-of-2的计算。例如,你可以使用它们进行任意复杂度的多方计算,其中任意数量的参与者提供输入,这些输入可以在恒定数量的交互中运行。产生一个混淆电路是完全并行的,你可以同时进行多个混淆门。

因此,你可以简单地进行大规模多方计算,其中许多参与者计算电路中所有门的混淆(garbling),并发布与其输入对应的标签。标签本身是随机的,因此不会透露任何关于输入的信息,但是任何人都可以执行公布的混淆电路,并在“清除”中学习输出。有关使用混淆(garbling)作为成分的MPC协议的最新示例,请参见此处

多方计算不是唯一的应用环境,在这种情况下,这种将计算拆分为可并行处理部分的技术可对秘密数据进行操作,然后再进行可明确运行的顺序部分,这是有用的,而混淆电路并不是实现这一点的唯一技术。一般来说,关于随机编码的文献,包括很多更复杂的技术,这一数学分支在函数加密和模糊处理等技术中也是很有用的。

内容来源:巴比特

版权声明:本文仅为传播消息之用,不代表币源社区立场,文章不构成投资建议。如需转载,请务必注明文章原作者以及来源,部分图片来源于网络,我们尊重版权,如有疑问敬请联系,我们将核实并删除。

我要评论
字数上限500
评论(0)