零知识证明笔记

零知识证明基本定义:

证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。

例如:A是证明者,A拥有CD出打开门的钥匙。B是验证者。A要向B证明他拥有钥匙,但是B不知道钥匙的任何信息。

显而易见,A从入口处进去,假设都是从左边C进去,那么有两种可能返回到出口(即入口)。一种是原路返回,另一种是用钥匙开门从右边D回到出口。重复试验n次后,若A没有钥匙,那么n次都是C进C出,为小概率事件2^n。基本上是不可能的。即证明A拥有钥匙。

关于三色定理的零知识证明:

当然,绕了半天圈子,大家会发现,这是一个著名的理论,称为 Graph three-coloring 问题。您可能也会知道,有趣的是对于某些图形来说,找到一个解决方案或者确定一个解决方案是否存在都是相当困难的。事实上,Graph three-coloring - 具体来说,就是给定的图形是否支持三种颜色解决方案的决策问题 - 在已知的复杂度等级 NP-complete 中。

毫无疑问,上面的例子so easy,用手都可以找到着色方案。OK,我们将思维发散。例如,假设我的蜂窝网络非常庞大而复杂,以至于我所掌握的计算能力还不足以找到解决方案。在这种情况下,我们能想到的途径是将这种解决方法外包给具有这种庞大算力的公司。例如,google。

但是,这会导致一个问题。

假设Google使用大量的计算基础设施来为我的图搜索有效的着色。在我知道他们能够找到解决途径之前,我肯定不会付钱给他们。但是,在当我付清之前,谷歌不会给我一个他们的解决方案的副本。我们将陷入僵局。

较为疯狂的解决方案

Google的工程师与麻省理工学院的Silvio Micali进行了协商,他与Oded Goldreich和Avi Wigderson的同事进行了磋商,提出了如下的巧妙协议 - 一个如此优雅,甚至不需要任何计算机。它只需要一个大仓库,大量的蜡笔和大量的纸张。哦,还有一大堆帽子。

它是如何工作的呢?

首先,我将进入仓库,用纸覆盖地板,并画出我的网络拓扑图的空白表示。然后,我将退出仓库。google工程师现在进入,按照他们预先的解决方案,使用(红色/蓝色/紫色,如上例)三种颜色的集合,随机的为我的空白图进行着色。注意,使用哪种特定的蜡笔并不重要,只要着色是有效的。

在离开仓库前,Google工程师用帽子盖住每个顶点。当我回来的时候,我会看到:

很明显,这种方法可以完美地保护Google的着色方案。但它对我来说是不利的。我可能会想,Google会用一个随机的,无效的解决方案填充图表。他们甚至可能根本没有对图表进行着色。

为了消除我的疑虑,Google现在给了我一个“挑战”图表着色解决方案的机会。我可以随意选择这张图的一个“边缘”(也就是两个相邻的帽子之间的一条线)。然后谷歌将“揭开”这两个相应的帽子,展示他们解决方案的一小部分:

对我而言,这个实验有两个结果:

  • 如果两个显示的顶点是相同的颜色(或根本没有着色),那么我肯定知道Google正在对我说谎。很明显,我不会向Google支付一分钱。
  • 如果两个透露的顶点是不同的颜色,那么Google可能不会对我说谎,(仅仅是可能)。

我们肯定希望第一种情况出现,我直接就能知道Google在骗我(在验证过程中,我一直是处于怀疑的角色)。问题是,即使在我们的实验后,谷歌仍然可以对我说谎 - 毕竟,我只看了两下帽子。如果图中有E个不同的边缘,那么Google可能会填写一个无效的解决方案。具体来说,经过一次测试,他们可能以(E-1)/ E的概率(1000个边缘图的计算结果达到99.9%的时间)成功欺骗我。

幸运的是,Google为了进一步消除我的疑虑,允许我们继续重复执行上述的操作!

我进入仓库,重新绘制和我上述一样的网络拓扑的空白图表。接下来,google工程师进入仓库,用一个有效的解决方案重新填充图形,但是使用上述三种颜色(红色/蓝色/紫色)重新随机排序。这里,要注意理解,我进去仓库后,绘制的还是我原先的图表,但是google工程师使用的着色方案是与第一次的着色方案不同的。

帽子又回来了。我回来重复挑战过程,挑选一个新的随机边缘。这一次,如果一切顺利的话,我现在应该稍微有点自信,Google告诉我的是实话。为什么呢?因为为了欺骗我,Google必须连续两次幸运。这可能发生 - 但发生的概率相对较低。现在,Google连续两次欺骗我的机会现在是(E-1)/ E *(E-1)/ E(或者我们上面的1000个边缘例子大约有99.8%的概率)。

幸运的是,我们可以一直重复上述的操作过程。直到我确信Google可能会告诉我真相。

这里有一个例子,大家可以直观感受一下:零知识证明

请注意,我永远不会完全确定Google是诚实的 - 他们欺骗我总是会有一个小概率。但经过大量迭代(E ^ 2),我终于可以提高自己的信心,以至于Google只能以微不足道的可能性来欺骗我 - 这足够低了,实际上并不值得担心。然后,我可以安全地把我的钱交给Google。

在这个过程中,我们要注意理解,Google 的着色方案也是受到保护的。即使我试图通过在协议运行之间留下笔记来了解他们的解决方案,也不要紧。google 每次让我验证之前都会随机使用新的解决方案。我每次获取到的信息都是不同的,所以我没办法将这些信息串联起来,最终获得 google 的着色方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HelloHypatia

希望自己的总结对大家有所帮助!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值