本文将继续会持续进行更新,更新后的版本将在 Github 和知乎上发布,欢迎关注。
Github 地址:https://github.com/sec-bit/learning-zkp/blob/master/zkp-resource-list.md
知乎账号:安比实验室 SECBIT(https://www.zhihu.com/org/secbit/activities)
零知识证明技术是现代密码学三大基础之一,由 S.Goldwasser、S.Micali 及 C.Rackoff 在 20 世纪 80 年代初提出。早期的零知识证明由于其效率和可用性等限制,未得到很好的利用,仅停留在理论层面。直到近年来,零知识证明的理论研究才开始不断突破,同时区块链也为零知识证明创造了大展拳脚的机会,因而走进大众视野。
零知识证明这项“黑科技”随着它的热度逐渐增加,相关的学习资源也慢慢丰富起来了。但是由于,一方面零知识证明背后的原理颇为复杂,且内容繁多;另一方面,针对零知识证明的学习资源质量参差不齐,尚未形成系统。因此对绝大多数读者来说,学习零知识证明的难度依然很大。
本文收集了关于零知识证明的一些学习资料(包括科普文章,论文,开源仓库及相关学习网站等),并对这些资源进行了整理分析,希望能对大家有所帮助。
由于整理时间有限和笔者自身知识的局限性,文章存在不足之处,欢迎纠正、补充和探讨。
1. 故事中零知识证明
初次接触零知识证明的小伙伴一定会问,究竟什么是零知识证明呢?它到底在做什么?
推荐几篇适合小白的文章:
-
「推荐文章一」一个数独引发的惨案:零知识证明(Zero-Knowledge Proof)
推荐值:❤️❤️❤️❤️❤️
难度值:⭐️
这篇文章的作者是著名的 Ghost 和 Spectre 这两个协议的创始团队的领队 Aviv Zohar。文章非常接地气且通俗易懂,通过三个好朋友一起玩数独游戏的故事介绍了什么是零知识证明。
原文链接:https://medium.com/qed-it/the-incredible-machine-4d1270d7363a
中文翻译:https://zhuanlan.zhihu.com/p/34072069
另外这篇文章中引用了两篇介绍零知识证明的论文,也值得看一看。
-
「推荐文章二」How to explain zero-knowledge protocols to your children
推荐值:❤️❤️❤️
难度值:⭐️
这篇来自上个世纪的文章,正如它的标题一样,作者以给孩子讲故事的口吻,讲了一个阿里巴巴与四十大盗的故事,这个故事后来也成为了介绍零知识证明的经典故事。以故事的形式讲述零知识证明使得这篇文章理解起来也很简单。
-
「推荐文章三」Cryptographic and Physical Zero-Knowledge Proof Systems for Solutions of Sudoku Puzzles
推荐值:❤️❤️❤️
难度值:⭐️⭐️⭐️
如何在不泄漏任何信息的前提下向别人证明你有一个数独问题的答案呢?同样这个问题也是介绍零知识证明的经典案例。论文中提出了使用一个零知识证明协议解决这个问题的方案,这篇论文相比较于前两篇文章,理论性更强一些,篇幅更长,协议的介绍更为详细,但总体来说还算比较好理解。
原文链接:http://www.wisdom.weizmann.ac.il/~naor/PAPERS/sudoku.pdf
-
「推荐文章四」Zero knowledge proofs: a tale of two friends
推荐值:❤️❤️
难度值:⭐️⭐️
与前面几篇文章类似,这篇文章也是通过讲故事的形式来向读者介绍零知识证明的。文中 Prover 要向 Verifier 证明其知道魔法的解法。这篇文章篇幅较短,内容理解起来难度较小。
原文链接:https://medium.com/hackernoon/zero-knowledge-proofs-a-tale-of-two-friends-d7a0ffac3185
-
「推荐文章五」Explain Like I’m 5: Zero Knowledge Proof (Halloween Edition)
推荐值:❤️❤️
难度值:⭐️⭐️
这同样是一篇讲故事的文章,哈哈~
这篇文章讲述了一个糖果和百万富翁的故事(Candy bars and millionaires),文章同样篇幅较短,内容理解起来难度较小。
原文链接:https://medium.com/hackernoon/eli5-zero-knowledge-proof-78a276db9eff
兴许是因为如何解释零知识证明的问题并不简单,所以绝大部分入门级的科普文章都是从讲故事开始的。
2. 深入理解零知识证明
零知识证明技术涉及的知识点繁多,性质也各不相同。了解了什么是零知识证明以后,就需要对零知识证明更深刻的理解,推荐以下几篇零知识证明系列科普文。
-
「推荐文章六」零知识证明: 抛砖引玉
推荐值:❤️❤️❤️❤️
难度值:⭐️⭐️⭐️
作者是 Zerocash 协议的创建者之一,密码学大神 Matthew Green[1]。这两篇文章几乎涵盖了学习零知识证明原理所有的基本概念,文章思路很清晰。
-
第一篇文章主要从零知识证明的起源开始讲起,然后同样借助了地图三染色和 “时光机”来对零知识证明进行介绍。
原文链接:https://blog.cryptographyengineering.com/2014/11/27/zero-knowledge-proofs-illustrated-primer/
中文翻译版本:https://ethfans.org/posts/zero-knowledge-proofs-illustrated-primer
-
这篇文章在第一篇的基础上,进一步对零知识证明的三个性质:可靠性,完整性和零知识,展开介绍。另外还结合 Schnorr 协议介绍了交互式和非交互式的概念。
中文翻译版本:https://ethfans.org/posts/zero-knowledge-proofs-an-illustrated-primer-part-2
-
-
「推荐文章七」安比实验室零知识证明介绍系列文章
推荐值:❤️❤️❤️❤️❤️
难度值:⭐️⭐️⭐️
这个系列的作者是安比实验室创始人郭宇,文章与以往的零知识证明科普文章的不同之处就是它没有单独去讲解零知识的基本原理。而且结合更多的概念和原理,更透彻得将零知识证明技术涉及得诸多原理逐一进行讲解,文章专业性较强,还包含了作者大量的思考,但理解起来也较为直观易懂,非常适合想要深入理解零知识证明的小伙伴。
另外这个系列的文章还在持续更新中。
-
作为系列的第一篇,这篇文章首先介绍了「证明」的发展历程和「零知识」的作用,并举了一个地图三染色的例子,然后又对「信息」、「知识」和可满足电路的概念展开了介绍。
-
探索零知识证明系列二:从「模拟」理解零知识证明:平行宇宙与时光倒流
这篇文章介绍了零知识证明中的一个非常重要的概念——模拟(Simulator),「模拟」可以说是安全协议中核心的核心。文章中借助 “平行世界” 的假设去理解零知识读起来也非常有意思。
-
零知识证明有三个重要的性质:可靠性,完整性和零知识。这篇文章探讨了可靠性。文章解释了如何借助「抽取器」和时间倒流的超能力把 Alice 的「知识」完整地「抽取」出来,并可给出了一个与之相关攻击实例 —— ECDSA 签名攻击。
原文链接:
-