0

1 条评论

 2 years ago
source link: https://learnblockchain.cn/2019/11/08/zkp-info
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
零知识证明学习资料汇总 | 登链社区 | 深入浅出区块链技术

零知识证明学习资料汇总

本文收集了关于零知识证明的一些学习资料(包括科普文章,论文,开源仓库及相关学习网站等),并对这些资源进行了整理分析,希望能对大家有所帮助。

本文收集了关于零知识证明的一些学习资料(包括科普文章,论文,开源仓库及相关学习网站等),并对这些资源进行了整理分析,希望能对大家有所帮助。

零知识证明技术是现代密码学三大基础之一,由 S.Goldwasser、S.Micali 及 C.Rackoff 在 20 世纪 80 年代初提出。早期的零知识证明由于其效率和可用性等限制,未得到很好的利用,仅停留在理论层面。直到近年来,零知识证明的理论研究才开始不断突破,同时区块链也为零知识证明创造了大展拳脚的机会,因而走进大众视野。
零知识证明这项“黑科技”随着它的热度逐渐增加,相关的学习资源也慢慢丰富起来了。但是由于,一方面零知识证明背后的原理颇为复杂,且内容繁多;另一方面,针对零知识证明的学习资源质量参差不齐,尚未形成系统。因此对绝大多数读者来说,学习零知识证明的难度依然很大。

由于整理时间有限和笔者自身知识的局限性,文章存在不足之处,欢迎纠正、补充和探讨。

1. 故事中的零知识证明

初次接触零知识证明的小伙伴一定会问,究竟什么是零知识证明呢?它到底在做什么?

推荐几篇适合小白的文章:

  • 「推荐文章一」一个数独引发的惨案:零知识证明(Zero-Knowledge Proof)

    推荐值:❤️❤️❤️❤️❤️

    难度值:⭐️

    这篇文章的作者是著名的 Ghost 和 Spectre 这两个协议的创始团队的领队 Aviv Zohar。文章非常接地气且通俗易懂,通过三个好朋友一起玩数独游戏的故事介绍了什么是零知识证明。

    另外这篇文章中引用了两篇介绍零知识证明的论文,也值得看一看。

    原文:The Incredible Machine

  • 「推荐文章二」How to explain zero-knowledge protocols to your children

    推荐值:❤️❤️❤️

    难度值:⭐️

    这篇来自上个世纪的文章,正如它的标题一样,作者以给孩子讲故事的口吻,讲了一个阿里巴巴与四十大盗的故事,这个故事后来也成为了介绍零知识证明的经典故事。以故事的形式讲述零知识证明使得这篇文章理解起来也很简单。

  • 「推荐文章三」Cryptographic and Physical Zero-Knowledge Proof Systems for Solutions of Sudoku Puzzles

    推荐值:❤️❤️❤️

    难度值:⭐️⭐️⭐️

    如何在不泄漏任何信息的前提下向别人证明你有一个数独问题的答案呢?同样这个问题也是介绍零知识证明的经典案例。论文中提出了使用一个零知识证明协议解决这个问题的方案,这篇论文相比较于前两篇文章,理论性更强一些,篇幅更长,协议的介绍更为详细,但总体来说还算比较好理解。

  • 「推荐文章四」Zero knowledge proofs: a tale of two friends

    推荐值:❤️❤️

    难度值:⭐️⭐️

    与前面几篇文章类似,这篇文章也是通过讲故事的形式来向读者介绍零知识证明的。文中 Prover 要向 Verifier 证明其知道魔法的解法。这篇文章篇幅较短,内容理解起来难度较小。

  • 「推荐文章五」Explain Like I’m 5: Zero Knowledge Proof (Halloween Edition)

    推荐值:❤️❤️

    难度值:⭐️⭐️

    这同样是一篇讲故事的文章,哈哈~

    这篇文章讲述了一个糖果和百万富翁的故事(Candy bars and millionaires),文章同样篇幅较短,内容理解起来难度较小。

兴许是因为如何解释零知识证明的问题并不简单,所以绝大部分入门级的科普文章都是从讲故事开始的。

2. 深入理解零知识证明

零知识证明技术涉及的知识点繁多,性质也各不相同。了解了什么是零知识证明以后,就需要对零知识证明更深刻的理解,推荐以下几篇零知识证明系列科普文。

  • 「推荐文章六」零知识证明: 抛砖引玉

    推荐值:❤️❤️❤️❤️

    难度值:⭐️⭐️⭐️

    作者是 Zerocash 协议的创建者之一,密码学大神 Matthew Green[1]。这两篇文章几乎涵盖了学习零知识证明原理所有的基本概念,文章思路很清晰。

  • 「推荐文章七」安比实验室零知识证明介绍系列文章

    推荐值:❤️❤️❤️❤️❤️

    难度值:⭐️⭐️⭐️

    这个系列的作者是安比实验室创始人郭宇,文章与以往的零知识证明科普文章的不同之处就是它没有单独去讲解零知识的基本原理。而且结合更多的概念和原理,更透彻得将零知识证明技术涉及得诸多原理逐一进行讲解,文章专业性较强,还包含了作者大量的思考,但理解起来也较为直观易懂,非常适合想要深入理解零知识证明的小伙伴。

    另外这个系列的文章还在持续更新中。

  • 「推荐文章八」零知识证明:一个略微严肃的科普

    推荐值:❤️❤️❤️

    难度值:⭐️⭐️⭐️⭐️

    邓老师这篇“略微严肃”的科普,主要涉及两部分:1. 交互式证明的巨大威力;2. 零知识证明的定义和那些广泛流传的错误的例子

  • 「推荐文章九」Zero-Knowledge Proofs: A Layman’s Introduction

    推荐值:❤️❤️

    难度值:⭐️⭐️

    这篇文章首先介绍了零知识证明协议中的三个参与者(Creator,Prover,Verifier)以及 Proofs 和 Verification 的概念,并对 zkSNARK (一类零知识证明协议)和椭圆曲线的相关资料进行了介绍。

  • 「推荐文章十」白话零知识证明(一)

    推荐值:❤️❤️

    难度值:⭐️⭐️

    这篇来自秘猿科技的文章通过阿里巴巴的故事引出了零知识证明的一些概念,并对其进行了介绍。

零知识证明涉及很多很有意思的思想和原理,都很值得探讨。在此不得不感叹于数学与密码学的精妙之处,也不得不钦佩密码学家们的厉害。

3. 零知识证明的发展

零知识证明的研究今年来一直有新的进展,密码学家们提出了各种不同的协议,推荐两篇文章介绍零知识证明研究的发展过程。

  • 「推荐文章十一」区块链学习笔记 (1):零知识证明的江湖

    推荐值:❤️❤️❤️

    难度值:⭐️⭐️

    这篇文章讲了自 1895 年提出以来,零知识证明理论研究的发展过程,以及 zk-SNARKs 与零知识证明技术结合起来的发展过程。推荐给想了解零知识理论研究的发展过程的小伙伴。

  • 「推荐文章十二」Efficient Cryptographic Arguments and Proofs – Or How I Became a Fractional Monetary Unit

    推荐值:❤️❤️❤️

    难度值:⭐️⭐️

    这篇文章来自 UCL 信息安全研究人员的博客 Bentham’s Gaze[2],文章介绍了自零知识证明提出以来,这群研究人员在理论研究上的研究历程及成果,包括知名的 bulletProof 和 zk-STARK 等。读完这篇文章相信会对大家深入理解零知识证明的诸多协议有所帮助。

零知识证明迄今为止发展了三十多年,早期一直停留在理论层面,直到近十年才逐渐取得突破。随着越来越多研究人员的进场,相信这个领域未来还会有更多令人惊喜的成果。

4. zk-SNARKs 原理

作为零知识证明领域最知名的一类协议,zk-SNARKs 的理论研究和应用也最为广泛。推荐一些介绍 zk-SNARKs 的资料。

  • 「推荐文章十三」V 神的 zk-SNARKs 科普文章

    推荐值:❤️❤️❤️❤️

    难度值:⭐️⭐️⭐️⭐️

    V 神的这几篇文章应该算得上是流传最为广泛的 zk-SNARK 科普文了。不用多说,推荐阅读。

  • 「推荐文章十四」zcash 官方科普文

    推荐值:❤️❤️❤️❤️

    难度值:⭐️⭐️⭐️⭐️

    这个系列的文章来自 zCash 官方博客。首先介绍了零知识的基本概念以及其应用到 zcash 中的大致思路。随后 7 篇文章分别对 7 个关键点进行了详细介绍(同态隐藏,多项式盲验证,KCA,完整的多项式盲验证,计算到多项式的转换,匹诺曹协议以及椭圆曲线配对),推荐给想深入了解 zk-SNARKs 实现原理的小伙伴。

  • 「推荐文章十五」Why and How zk-SNARK Works

    推荐值:❤️❤️❤️❤️❤️

    难度值:⭐️⭐️⭐️

    作者将其学习 zk-SNARK 的经验总结成了一份 PDF 文档并分成 8 篇文章发布到了 Medium 上。与大部分的 zk-SNARK 科普文不同,这个系列的文章没有直接开始讲 zk-SNARK,而是从最基本的数学原理讲起,讲解得非常细致,特别适合数学和密码学基础相对薄弱的小伙伴。

  • 「推荐文章十六」 zkSNARKs in a nutshell

    推荐值:❤️❤️❤️

    难度值:⭐️⭐️⭐️

    这篇文章对零知识证明做了总结,分成四个部分:

    1. 编码成一个多项式问题
    2. 简单随机抽样
    3. 同态(Homomorphic)编码 / 加密

    文章首先介绍了零知识证明,然后又讲解了 zk-SNARKs 的实现,最后分析了将零知识证明结合到以太坊上的作用和方式。

    原文:zkSNARKs in a nutshell

  • 「推荐文章十七」Zero-knowledge proofs, a board game, and leaky abstractions: how I learned zk-SNARKs from scratch

    推荐值:❤️❤️❤️

    难度值:⭐️⭐️⭐️

    作者坚持一个观点:学习新技能的一个很好的方法是用它建立一些东西。这篇文章就是在介绍作者是如何通过实现一个小的应用来学习 zk-SNARKs 的。文章主要介绍了作者的实现过程和他的思考,文中有很多好的经验时候大家学习。

  • 「推荐文章十八」零知识证明 - 从 QSP 到 QAP

    推荐值:❤️❤️❤️

    难度值:⭐️⭐️⭐️

    这篇文章主要介绍了 QSP/QAP ,QAP 和 QSP 问题类似。QAP 问题的 zkSNARK 的证明验证过程和 QSP 非常相似。对这部分感兴趣的小伙伴推荐读一读。

"零知识证明技术就像一个江湖,而 zk-SNARKs 是只是比较著名的门派。而在这个江湖中,还有很多其他的门派,他们风格各异,使用的武器也不尽相同。"[3] zk-SNARKs 协议涉及的技术构件很多,也较为复杂,深入学习这部分确实需要下很多功夫。

5. 零知识证明协议

零知识证明协议很多,每个协议的实现也各不相同,有些协议已经应用到了实际的领域,有些还在探索中。推荐几篇介绍不错的文章。

  • 「推荐文章十九」STARKs 科普

    推荐值:❤️❤️❤️❤️

    难度值:⭐️⭐️⭐️⭐️

    V 神的这个科普系列文章,非常详细得介绍了 STARKs 的实现,分成三个部分进行讲解。

  • 「推荐文章二十」 Understanding PLONK

    推荐值:❤️❤️❤️❤️

    难度值:⭐️⭐️⭐️⭐️

    这篇文章同样来自 V 神的博客,介绍了 PLONK 的工作原理。PLONK 是一种全新的零知识证明系统,支持通用或可更新的可信设置(trusted setup),作者是 Filecoin 母公司 Protocol Labs 的研究员 Ariel Gabizon 和以太坊隐私交易协议 Aztec Protocol 的两名研究人员 Zachary J. Williamson、Oana Ciobotaru。

    中文翻译版本:Vitalik :理解新型通用零知识证明方案 PLONK

  • 「推荐文章二十一」Groth09 笔记

    推荐值:❤️❤️

    难度值:⭐️⭐️⭐️

    这篇文章作者 huyuguang,文中对 Groth09 论文[4]的内容进行了总结,对大家学习 Groth09 有所帮助。

  • 「推荐文章二十二」 零知识证明 - Groth16 算法介绍

    推荐值:❤️❤️

    难度值:⭐️⭐️⭐️

    Star Li 的这两篇文章主要从工程应用理解的角度介绍了 Groth16 算法的证明和验证过程,推荐给学习 Groth16 算法的小伙伴。

对于零知识证明各个协议介绍的文章还比较有限,随着应用的增多,相信这方面的文章也会越来越多。

6. 零知识证明在区块链领域的应用

零知识证明技术是随着区块链的发展逐渐走入大众视野的,目前零知识证明结合区块链的研究和应用也越来越多。

零知识证明的应用正在逐步增加,从最早的公链 zCash,Monero,到最近基于以太坊平台的 zkPoD, Loopring DEX 3.0 应用等,零知识证明在区块链领域的应用将越来越多。

7. 零知识证明相关的技术和漏洞分析文章

零知识证明技术涉及的知识内容很多,在实际的应用场景中,零知识证明的实现还存在诸多的挑战,协议安全,性能等等问题都有可能限制其发展。这一节推荐一些技术分析和漏洞分析的文章。

8. 零知识证明开源仓库及介绍

下面介绍几个热度比较高的零知识证明实现仓库及其源码分析文章,很多的零知识项目都是基于这几个仓库的代码做的。

9. 零知识证明相关论文

下面介绍一下零知识证明相关的学术论文,深入学习零知识证明研究成果的小伙伴可以去阅读以下的这些论文。

推荐值:❤️❤️❤️

难度值:⭐️⭐️⭐️⭐️⭐️

10. 零知识证明学习资料推荐网站

  • awesome-zero-knowledge-proofs

    推荐值:❤️❤️❤️❤️

    这是一个 GitHub 仓库,收录了一系列零知识证明的学习资料

  • Zero-Knowledge Proofs

    推荐值:❤️❤️❤️❤️

    这个网站也收录了一系列零知识证明的学习资料,相对来说学术性更强一些。

  • zkproof

    推荐值:❤️❤️❤️❤️

    ZKProof.org 是为规范零知识证明的使用而形成的一个组织,它的网站上有大量关于零知识证明的资料。

  • benthamsgaze.org

    推荐值:❤️❤️❤️

    这是一个来自 UCL 信息安全研究人员组成的团队的博客,它的博客上会经常发布一些零知识证明的文章。

[1] https://isi.jhu.edu/~mgreen/

[2] https://www.benthamsgaze.org/about

[3] https://zhuanlan.zhihu.com/p/31651393

[4] https://link.springer.com/chapter/10.1007/978-3-642-03356-8_12

[5] https://github.com/matter-labs/awesome-zero-knowledge-proofs

[6] https://zkp.science/

[7] https://zhuanlan.zhihu.com/p/89386868

本文来自安比实验室郭宇(原文在 GitHub)。安比(SECBIT)实验室专注解决区块链生态中的安全问题,着眼于最前沿的科学理论,追求技术突破与卓越,致力于参与共建共识、可信、有序的区块链经济体。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2019-11-08 09:23
  • 阅读 ( 17421 )
  • 学分 ( 235 )
  • 分类:隐私

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK