零知識證實學習資源彙總

摘要:本文收集整理了關於零知識證實的一些學習資料,但願能對你們有所幫助。javascript

本文將繼續會持續進行更新,更新後的版本將在 Github 和知乎上發佈,歡迎關注。html

Github 地址:github.com/sec-bit/lea…java

知乎帳號:安比實驗室 SECBIT(www.zhihu.com/org/secbit/…git

零知識證實技術是現代密碼學三大基礎之一,由 S.Goldwasser、S.Micali 及 C.Rackoff 在 20 世紀 80 年代初提出。早期的零知識證實因爲其效率和可用性等限制,未獲得很好的利用,僅停留在理論層面。直到近年來,零知識證實的理論研究纔開始不斷突破,同時區塊鏈也爲零知識證實創造了大展拳腳的機會,於是走進大衆視野。程序員

零知識證實這項「黑科技」隨着它的熱度逐漸增長,相關的學習資源也慢慢豐富起來了。可是因爲,一方面零知識證實背後的原理頗爲複雜,且內容繁多;另外一方面,針對零知識證實的學習資源質量良莠不齊,還沒有造成系統。所以對絕大多數讀者來講,學習零知識證實的難度依然很大。github

本文收集了關於零知識證實的一些學習資料(包括科普文章,論文,開源倉庫及相關學習網站等),並對這些資源進行了整理分析,但願能對你們有所幫助。算法

因爲整理時間有限和筆者自身知識的侷限性,文章存在不足之處,歡迎糾正、補充和探討。

1. 故事中零知識證實

初次接觸零知識證實的小夥伴必定會問,究竟什麼是零知識證實呢?它到底在作什麼?spring

推薦幾篇適合小白的文章:shell

興許是由於如何解釋零知識證實的問題並不簡單,因此絕大部分入門級的科普文章都是從講故事開始的。

2. 深刻理解零知識證實

零知識證實技術涉及的知識點繁多,性質也各不相同。瞭解了什麼是零知識證實之後,就須要對零知識證實更深入的理解,推薦如下幾篇零知識證實系列科普文。

零知識證實涉及不少頗有意思的思想和原理,都很值得探討。在此不得不感嘆於數學與密碼學的精妙之處,也不得不欽佩密碼學家們的厲害。

3. 零知識證實的發展

零知識證實的研究今年來一直有新的進展,密碼學家們提出了各類不一樣的協議,推薦兩篇文章介紹零知識證實研究的發展過程。

零知識證實迄今爲止發展了三十多年,早期一直停留在理論層面,直到近十年才逐漸取得突破。隨着愈來愈多研究人員的進場,相信這個領域將來還會有更多使人驚喜的成果。

4. zk-SNARKs 原理

做爲零知識證實領域最知名的一類協議,zk-SNARKs 的理論研究和應用也最爲普遍。推薦一些介紹 zk-SNARKs 的資料。

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

    推薦值:❤️❤️❤️❤️

    難度值:⭐️⭐️⭐️⭐️

    V 神的這幾篇文章應該算得上是流傳最爲普遍的 zk-SNARK 科普文了。不用多說,推薦閱讀。

    • Quadratic Arithmetic Programs: from Zero to Hero

      這篇文章詳細介紹了 zk-SNARKs 的實現過程。文中將 zk-SNARKs 的實現分爲如下幾個步驟:

      1. computational problem —> 電路

      2. 電路 —> R1CS

      3. R1CS —> QAP

      4. QAP —> Linear PCP

      5. Linear PCP —> Linear Interactive Proof

      6. Linear Interactive Proof —> zkSNARK

      原文連接:medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649

    • Exploring Elliptic Curve Pairings

      這篇文章介紹了橢圓曲線配對。

      原文連接:medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627

    • Zk-SNARKs: Under the Hood

      這篇文章主要介紹了匹諾曹協議。

      原文連接:medium.com/@VitalikButerin/zk-snarks-under-the-hood-b33151a013f6

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

    推薦值:❤️❤️❤️❤️

    難度值:⭐️⭐️⭐️⭐️

    這個系列的文章來自 zCash 官方博客。首先介紹了零知識的基本概念以及其應用到 zcash 中的大體思路。隨後 7 篇文章分別對 7 個關鍵點進行了詳細介紹(同態隱藏,多項式盲驗證,KCA,完整的多項式盲驗證,計算到多項式的轉換,匹諾曹協議以及橢圓曲線配對),推薦給想深刻了解 zk-SNARKs 實現原理的小夥伴。

    原文連接:

    1. What are zk-SNARKs?:z.cash/technology/…/

    2. Explaining SNARKs Part I: Homomorphic Hidings electriccoin.co/blog/snark-…/

    3. Explaining SNARKs Part II: Blind Evaluation of Polynomials electriccoin.co/blog/snark-…/

    4. Explaining SNARKs Part III: The Knowledge of Coefficient Test and Assumption electriccoin.co/blog/snark-…/

    5. Explaining SNARKs Part IV: How to make Blind Evaluation of Polynomials Verifiable electriccoin.co/blog/snark-…/

    6. Explaining SNARKs Part V: From Computations to Polynomials electriccoin.co/blog/snark-…/

    7. Explaining SNARKs Part VI: The Pinocchio Protocol electriccoin.co/blog/snark-…/

    8. Explaining SNARKs Part VII: Pairings of Elliptic Curves](electriccoin.co/blog/snark-…/

    9. 中文翻譯版本連接:www.jianshu.com/p/b6a14c472…www.jianshu.com/p/92f54fc08…

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

    推薦值:❤️❤️❤️❤️❤️

    難度值:⭐️⭐️⭐️

    做者將其學習 zk-SNARK 的經驗總結成了一份 PDF 文檔並分紅 8 篇文章發佈到了 Medium 上。與大部分的 zk-SNARK 科普文不一樣,這個系列的文章沒有直接開始講 zk-SNARK,而是從最基本的數學原理講起,講解得很是細緻,特別適合數學和密碼學基礎相對薄弱的小夥伴。

    原文連接:

    1. PDF 完整版:arxiv.org/pdf/1906.07…

    2. Why and How zk-SNARK Works 1: Introduction & the Medium of a Proof:medium.com/@imolfar/why-and-how-zk-snark-works-1-introduction-the-medium-of-a-proof-d946e931160

    3. Why and How zk-SNARK Works 2: Proving Knowledge of a Polynomial:medium.com/@imolfar/why-and-how-zk-snark-works-2-proving-knowledge-of-a-polynomial-f817760e2805

    4. Why and How zk-SNARK Works 3: Non-interactivity & Distributed Setup:medium.com/@imolfar/why-and-how-zk-snark-works-3-non-interactivity-distributed-setup-c0310c0e5d1c

    5. Why and How zk-SNARK Works 4: General-Purpose Computation:medium.com/@imolfar/why-and-how-zk-snark-works-4-general-purpose-computation-dcdc8081ee42

    6. Why and How zk-SNARK Works 5: Variable Polynomials:medium.com/@imolfar/why-and-how-zk-snark-works-5-variable-polynomials-3b4e06859e30

    7. Why and How zk-SNARK Works 6: Verifiable Computation Protocol:medium.com/@imolfar/why-and-how-zk-snark-works-6-verifiable-computation-protocol-1aa19f95a5cc

    8. Why and How zk-SNARK Works 7: Constraints and Public Inputs:medium.com/@imolfar/why-and-how-zk-snark-works-7-constraints-and-public-inputs-e95f6596dd1c

    9. Why and How zk-SNARK Works 8: Zero-Knowledge Computation:medium.com/@imolfar/why-and-how-zk-snark-works-8-zero-knowledge-computation-f120339c2c55

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

    推薦值:❤️❤️❤️

    難度值:⭐️⭐️⭐️

    這篇文章對零知識證實作了總結,分紅四個部分:

    1. 編碼成一個多項式問題

    2. 簡單隨機抽樣

    3. 同態(Homomorphic)編碼 / 加密

    4. 零知識

    文章首先介紹了零知識證實,而後又講解了zk-SNARKs 的實現,最後分析了將零知識證實結合到以太坊上的做用和方式。

    原文連接:blog.ethereum.org/2016/12/05/…/

    中文翻譯版本:zhuanlan.zhihu.com/p/31780893

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

    推薦值:❤️❤️❤️

    難度值:⭐️⭐️⭐️

    做者堅持一個觀點:學習新技能的一個很好的方法是用它創建一些東西。這篇文章就是在介紹做者是如何經過實現一個小的應用來學習 zk-SNARKs 的。文章主要介紹了做者的實現過程和他的思考,文中有不少好的經驗時候你們學習。

    原文連接:medium.com/@weijiek/how-i-learned-zk-snarks-from-scratch-177a01c5514e

  • 「推薦文章十八」零知識證實 - 從QSP到QAP

    推薦值:❤️❤️❤️

    難度值:⭐️⭐️⭐️

    這篇文章主要介紹了 QSP/QAP ,QAP 和 QSP 問題相似。QAP 問題的zkSNARK 的證實驗證過程和 QSP 很是類似。對這部分感興趣的小夥伴推薦讀一讀。

    原文連接:mp.weixin.qq.com/s/eU8mp81Vh…

"零知識證實技術就像一個江湖,而 zk-SNARKs 是隻是比較著名的門派。而在這個江湖中,還有不少其餘的門派,他們風格各異,使用的武器也不盡相同。"[3] zk-SNARKs 協議涉及的技術構件不少,也較爲複雜,深刻學習這部分確實須要下不少功夫。

5. 零知識證實協議

零知識證實協議不少,每一個協議的實現也各不相同,有些協議已經應用到了實際的領域,有些還在探索中。推薦幾篇介紹不錯的文章。

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

    推薦值:❤️❤️❤️❤️

    難度值:⭐️⭐️⭐️⭐️

    V 神的這個科普系列文章,很是詳細得介紹了 STARKs 的實現,分紅三個部分進行講解。

    原文連接:

    1. STARKs, Part I: Proofs with Polynomials:vitalik.ca/general/201…

      中文翻譯版本:ethfans.org/posts/stark…

    2. STARKs, Part II: Thank Goodness It's FRI-day:vitalik.ca/general/201…

      中文翻譯版本:ethfans.org/posts/stark…

    3. STARKs, Part 3: Into the Weeds:vitalik.ca/general/201…)

      中文翻譯版本:ethfans.org/posts/stark…

      中文翻譯版本:ethfans.org/posts/stark…

  • 「推薦文章二十」 Understanding PLONK

    推薦值:❤️❤️❤️❤️

    難度值:⭐️⭐️⭐️⭐️

    這篇文章一樣來自 V 神的博客,介紹了 PLONK 的工做原理。PLONK 是一種全新的零知識證實系統,支持通用或可更新的可信設置(trusted setup),做者是 Filecoin 母公司 Protocol Labs 的研究員 Ariel Gabizon 和以太坊隱私交易協議 Aztec Protocol 的兩名研究人員 Zachary J. Williamson、Oana Ciobotaru。

    原文連接:vitalik.ca/general/201…

    中文翻譯版本:www.8btc.com/article/486…

  • 「推薦文章二十一」Groth09 筆記

    推薦值:❤️❤️

    難度值:⭐️⭐️⭐️

    這篇文章做者huyuguang,文中對 Groth09 論文[4]的內容進行了總結,對你們學習 Groth09 有所幫助。

    原文連接:github.com/huyuguang/z…

  • 「推薦文章二十二」 零知識證實 - Groth16 算法介紹

    推薦值:❤️❤️

    難度值:⭐️⭐️⭐️

    Star Li 的這兩篇文章主要從工程應用理解的角度介紹了 Groth16 算法的證實和驗證過程,推薦給學習 Groth16 算法的小夥伴。

    原文連接

    1. 零知識證實 - Groth16 算法介紹:mp.weixin.qq.com/s/SguBb5vyA…

    2. 零知識證實 - 有關 Groth16 的zk證實的理解:mp.weixin.qq.com/s/x1ggw3Vpl…

對於零知識證實各個協議介紹的文章還比較有限,隨着應用的增多,相信這方面的文章也會愈來愈多。

6. 零知識證實在區塊鏈領域的應用

零知識證實技術是隨着區塊鏈的發展逐漸走入大衆視野的,目前零知識證實結合區塊鏈的研究和應用也愈來愈多。

零知識證實的應用正在逐步增長,從最先的公鏈 zCash,Monero,到最近基於以太坊平臺的 zkPoD, Loopring DEX 3.0應用等,零知識證實在區塊鏈領域的應用將愈來愈多。

7. 零知識證實相關的技術和漏洞分析文章

零知識證實技術涉及的知識內容不少,在實際的應用場景中,零知識證實的實現還存在諸多的挑戰,協議安全,性能等等問題都有可能限制其發展。這一節推薦一些技術分析和漏洞分析的文章。

8. 零知識證實開源倉庫及介紹

下面介紹幾個熱度比較高的零知識證實實現倉庫及其源碼分析文章,不少的零知識項目都是基於這幾個倉庫的代碼作的。

9. 零知識證實相關論文

下面介紹一下零知識證實相關的學術論文,深刻學習零知識證實研究成果的小夥伴能夠去閱讀如下的這些論文。

推薦值:❤️❤️❤️

難度值:⭐️⭐️⭐️⭐️⭐️

  1. 1985 年,零知識證實技術首次被提出

    原文連接:The Knowledge Complexity of Interactive Proof Systems

  2. BulletProof

    1. Gro09 提出了一種證實「向量內積」的方法:

      原文連接:link.springer.com/chapter/10.…

    2. BCC+16 找到了一種將算數電路編碼爲向量的方法,從而把電路可知足性的證實轉化爲向量內積的證實:

      原文連接:eprint.iacr.org/2016/263

    3. BulletProof繼續改進了這種方案:

      原文連接:eprint.iacr.org/2017/1066

  3. zkSNARKs with trusted setup

    1. Groth10 引入了preprocessing的步驟,經過可信第三方生成Common Reference String來實現無交互證實:

      原文連接:link.springer.com/chapter/10.…

    2. GGPR13 引入了另外一種算數電路編碼方式,即Quadratic Arithmetic Program(QAP),大大提高了證實的效率:

      原文連接:eprint.iacr.org/2012/215

    3. PinocchioGroth16 等是在此基礎上的改進:

      原文連接:eprint.iacr.org/2013/279

      原文連接:eprint.iacr.org/2016/260

  4. Ligero: Lightweight Sublinear Arguments Without a Trusted Setup:

    原文連接:acmccs.github.io/papers/p208…

  5. PLONK:

    原文連接:eprint.iacr.org/2019/953

  6. Marlin

    原文連接:eprint.iacr.org/2019/1047.p…

  7. Sonic

    原文連接:eprint.iacr.org/2019/099

  8. Libra

    原文連接:eprint.iacr.org/2019/317

  9. Hyrax

    原文連接:eprint.iacr.org/2017/1132.p…

  10. zk-STARKs

    原文連接:eprint.iacr.org/2018/046

10. 零知識證實學習資料推薦網站

  • awesome-zero-knowledge-proofs

    推薦值:❤️❤️❤️❤️

    這是一個 Github 倉庫,收錄了一系列零知識證實的學習資料

    連接:github.com/matter-labs…

  • Zero-Knowledge Proofs

    推薦值:❤️❤️❤️❤️

    這個網站也收錄了一系列零知識證實的學習資料,相對來講學術性更強一些。

    連接:zkp.science

  • zkproof

    推薦值:❤️❤️❤️❤️

    ZKProof.org 是爲規範零知識證實的使用而造成的一個組織,它的網站上有大量關於零知識證實的資料。

    連接:zkproof.org/

  • benthamsgaze.org

    推薦值:❤️❤️❤️

    這是一個來自UCL信息安全研究人員組成的團隊的博客,它的博客上會常常發佈一些零知識證實的文章。

    連接:www.benthamsgaze.org

參考文獻

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

[2] www.benthamsgaze.org/about

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

[4] link.springer.com/chapter/10.…

[5] github.com/matter-labs…

[6] zkp.science/

[7] zhuanlan.zhihu.com/p/89386868?…

相關文章
相關標籤/搜索