零知识学习零知识证明

杂谈

Math is law !

数学真的太迷人了,虽然我不懂 ;)

水一篇小短文,总结下这两天的学习成果。

抛开数学、多项式不谈,零知识学习零知识证明。

概念

首先,零知识证明大致可以概述为:ProverVerifier 证明拥有某个数据,但证明的同时并不暴露这个数据具体是什么。

介绍视频:

中文翻译:

视频中科学家提到一个很有意思的点,为什么叫 零知识 而不是 零信息零数据

我的一个理解:因为在证明的过程中, Prover 需要向 Verifier 提供 “部分数据” 用于验证,最终Verifier 得到一个 “信息”:Prover是 大概率 拥有这个完整数据的。

通过大量验证Verifier不断提高这个 概率 直到可信阈值,但在整个过程中所有的 Verifier 都无法拼凑出数据的完整体 — “知识”。

下面再通过一个经典的数独故事来理解这一概念:

原文链接:

中文翻译:

零知识性

零知识证明有三种性质,完备性可靠性不再赘述,下面通过一个问题来进一步理解零知识性

误区:地图三染色问题上的零知识证明,可能存在知识泄漏?

这是我在学习过程中的一个疑问点,思考:

  • Prover 需要向 Verifier 提供相邻两个地域的颜色,以便 Verifier 验证;
 图片来源:https://secbit.io/blog/2019/07/31/zero-knowledge-and-proof
图片来源:https://secbit.io/blog/2019/07/31/zero-knowledge-and-proof
  • 但是颜色一共只有三种,虽然第二次通过随机数更换了颜色,但如果 Verifier 第二次选择的地域和第一次存在交集,那么 Verifier 可以拿到前后两次颜色的映射
图片来源:https://secbit.io/blog/2019/07/31/zero-knowledge-and-proof
图片来源:https://secbit.io/blog/2019/07/31/zero-knowledge-and-proof
// 第一种映射
绿色 —> 红色
A —> 棕色
橙色 —> B

// 第二种映射
绿色 —> 红色
橙色 —> 棕色
A —> B

Verifier 是不是可以反推回去,拿到第一次 & 第二次的结果?

图片来源:https://secbit.io/blog/2019/07/31/zero-knowledge-and-proof
图片来源:https://secbit.io/blog/2019/07/31/zero-knowledge-and-proof

即第二次棕色的位置,对应第一次的橙色或A色。这样每次我们都有1 / 2的概率可以猜对,最终拿到所有结果。

这样是不是说明存在知识泄漏的风险?当然不是

证明 1

我们要知道虽然每次都有1 / 2的概率猜对,但整个计算的时间复杂度却是 O(2^n) 级别的,这是一个NP问题。NP的具体介绍不在本文范围内,只需要知道它的计算时间很复杂。

所以 Verifier 基本是无法反推出来的。反过来讲,既然这个NP问题可以应用零知识证明,那通过NP的性质,我们可以得出 零知识证明可以应用于所有的NP问题 这一结论。

证明 2

上面 Verifier 的反推过程,大家不觉得有点眼熟吗?这不就是地图三染色问题的 穷举 解法吗?和零知识证明、知识泄漏并无任何关系。

证明 3

下面我们通过理论的角度,也可以验证上面的结论。参考文章:

如果你没有看过上面数独的故事,我建议你先去阅读一遍。

故事中提到了一个人为的作弊行为,下面我们用编程来替代人为交互:

我们想象一个这样的程序,假设一个由 Prover 完全操控的验证程序 (当然事实不可能是这样,只是为了模拟作弊),可以在任意节点 倒带回溯,修复该节点的错误,那么 Prover 完全可以通过操控这个验证程序来蒙混过关,欺骗 Verifier

基于上述背景,我们再来思考两个场景:

  • Prover 提供了标准答案给 Verifier 验证;
  • Prover 通过回溯欺骗 Verifier,通过验证。

两个场景在 Verifier 的角度看有区别吗?没有,两种场景对于 Verifier 的结果都是正确通过验证。

So ? 假设像误区所提到的那样,Verifier 有一种策略可以获取 Prover 的完整知识。

但是因为第二种场景中 Prover 根本不知道完整知识,所以 Verifier 不能获取任何知识。

而且既然两种场景在 Verifier 的视角并无区别,那么在第一种场景中 Verifier 也不应能获取任何知识。

推导完毕。

相关链接

以上就是我本人对于零知识证明的一点理解,我的水平就到这里了。

如果想要更深入地学习零知识证明,这里有相关的资料汇总:

更多相关知识 && 社区讨论:

个人推特,持续更新沉淀 Web3 的相关知识:

最后感谢头雁和社区同学提供的平台和分享。

Subscribe to kutugu
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.