一文詳解零知識證明(ZKP)

中級Nov 28, 2023
零知識證明(ZKP)是一種加密方法,它使得一方(稱爲證明者)能夠曏另一方(稱爲驗證者)證明某個陳述是正確的,而無需提供任何其他的信息。目前流行的ZKP解決方案有zk-SNARKS、zk-STARKS、PLONK以及Bulletproofs。本文將介紹四種ZKP解決方案,併分析其優勢與劣勢。
一文詳解零知識證明(ZKP)

背景知識

零知識證明(Zero-Knowledge Proof,ZKP)是一種密碼學技術,最早由由S.Goldwasser、S.Micali及C.Rackoff在20世紀80年代初的一篇名爲《The Knowledge Complexity Of Interactive Proof Systems》的論文中提出的。在該文中,它是作爲一個理論模型被構想出來,解決的是在不透露證據的情況下如何驗證數學陳述的問題。這一概念在學術界引起了廣泛關註,因爲它挑戰了傳統加密技術的界限,併爲處理敏感信息提供了全新的方法。

隨著時間的推移,ZKP從一個抽象的理論構想逐步演變成具體的協議,它們能夠被集成進各種應用中。在21世紀初,隨著互聯網和數字通信的爆炸性增長,ZKP的潛力開始得到現實世界中的探索。特別是在區塊鏈和加密貨幣的興起中,ZKP展示了其在提供增強隱私和安全性的衕時,還能保持交易和數據處理的高效性。

現在,ZKP已經不僅僅是密碼學研究的熱點話題,它已經被集成到多個區塊鏈平颱和應用中,如zk-SNARKs在以太坊Layer2上的應用,提供了無需透露交易細節的匿名交易。這種從理論到實際應用的轉變,不僅證明了ZKP的實用價值,也推動了對更高效、更安全數字互動方式的探索。隨著技術的不斷進步,ZKP在保護個人隱私、確保數據安全性以及建立信任的數字繫統中扮演著越來越關鍵的角色

ZKP的定義與原理

零知識證明(ZKP)是一種加密方法,它使得一方(稱爲證明者)能夠曏另一方(稱爲驗證者)證明某個陳述是正確的,而無需提供任何其他的信息,即不泄露證明陳述正確性所依據的任何知識。這個過程不僅保護了證明者的隱私,而且還確保了驗證者不能覆製證明過程或者利用它來得到任何額外的信息。

零知識證明概念演示圖(來源:ChainLink

ZKP的核心原理可以通過以下三個特性來定義:

  • 完備性(Completeness,也譯作完整性) - 如果陳述是真實的,誠實的證明者總能夠通過驗證者的檢驗。
  • 健壯性(Soundness,也譯作合理性) - 如果陳述是假的,任何欺詐的證明者都將隻有微小的概率能夠誤導驗證者相信該陳述是真的。
  • 零知識性(Zero-knowledge) - 如果陳述是真實的,驗證者將無法學習任何其他的信息,除了該陳述是正確的。換句話説,驗證過程不會泄露任何能夠用於構造證明的信息。

ZKP的原理通常通過簡單的例子來理解:如果我需要曏A證明我擁有B的電話號碼,我不需要直接把B的電話號碼告訴B,而是可以直接通過撥打B的電話,在打通後即可證明我確實擁有B的電話號碼,這個過程併不會泄露B的號碼信息。

在現實應用中,ZKP通常需要覆雜的數學構造,如多項式方程、橢圓曲線或其他數學難題,這些構造的安全性基於問題的計算難度,如因數分解或離散對數問題。隨著密碼學的髮展,出現了多種ZKP的實現,如zk-SNARKs和zk-STARKs,這些實現能夠在不衕的上下文中提供有效的隱私保護,尤其是在區塊鏈和加密貨幣領域中。

零知識證明的基本形式由三個要素組成:證人、挑戰和回覆。

  • 證人(Witness):通過零知識證明,證明者想要證明對一些隱藏信息的了解。 這些秘密信息就是證明的“證人”,證明者基於對證人的了解設立了一組問題,這些問題隻有了解信息的一方才能回答出來。 因此,證明者隨機選擇一個問題來髮起證明,計算問題答案,然後髮送給驗證者。
  • 挑戰(Challenge):驗證者從問題集裡隨機挑選另外一個問題,然後讓證明者來回答。
  • 回覆(Response):證明者接收問題,計算答案,然後把答案髮送給驗證者。 證明者的回覆讓驗證者可以檢驗證明者是否真的可以接觸到證人。 爲了確保證明者併不是偶然盲目猜對答案的,驗證者會再選擇一個問題來提問。 通過多次重覆這個過程,證明者造假的可能性會極大的降低,直到最終驗證者滿意。

在上文打電話的例子中,“我”是不希望透露信息的證人,而A是驗證者,提出的挑戰是“證明‘我’擁有B的號碼”。回覆過程是指“我”打通B的號碼證明我確實掌握了B的電話號碼。

爲什麽需要ZKP?

在前文中,我們已經探討了零知識證明(ZKP)在隱私保護領域的固有優勢。在當前這個信息爆炸的時代,個人數據往往存儲於第三方平颱,這不僅增加了數據泄露的風險,而且由於技術門檻和法律製裁的滯後性,信息安全大多依靠道德約束,使得用戶難以真正掌控自己的隱私信息。零知識證明技術的出現,爲用戶提供了一個既保護隱私又提升驗證效率和安全性的解決方案。相比於其他加密技術,ZKP擁有多種優勢:

  • 隱私保護:ZKP允許個人和機構證明某些信息的真實性,而無需透露實際的信息內容。例如,它可以用來證明一個人滿足年齡要求,而不需要透露實際年齡或出生日期。
  • 安全性增強:因爲ZKP不需要公開敏感信息,所以它降低了數據泄露的風險。即使在證明過程中髮生攔截,也沒有實質性的數據被泄露。
  • 減少欺詐:在金融交易中,ZKP可以被用來驗證交易的合法性,而不暴露交易的具體細節,從而減少欺詐的機會。
  • 效率:某些類型的ZKP,如zk-SNARKs,創建和驗證的速度非常快,這對於需要處理大量交易或驗證操作的繫統來説非常有用。
  • 互操作性:ZKP可以在不衕的繫統和領域之間提供一個共衕的驗證框架,使得不衕繫統之間的信息可以安全地驗證和共享。
  • 擴展性:隨著計算技術的髮展,ZKP的實現正在變得更加高效和可擴展,這意味著它們可以在更大規模的繫統中部署。
  • 合規性:在法規要求保護消費者隱私的今天,ZKP可以幫助公司在不違反隱私法規的情況下驗證和處理數據。
  • 用戶控製:ZKP增強了用戶對自己數據的控製能力,因爲它們可以選擇透露的信息量。
  • 去中心化:在區塊鏈和分布式技術中,ZKP爲去中心化提供了強大的隱私工具,用戶可以在不依賴於中央權威的情況下進行交易和互動。

無論是傳統的Web2.0還是新興的Web3.0領域,ZKP的應用前景都是廣闊的。

ZKP的種類

零知識證明目前有多種實現方式,如zk-SNARKS、zk-STARKS、PLONK以及Bulletproofs等。每種方式在證明大小、證明者時間以及驗證時間上都有自己的優缺點,本文著重介紹應用場景較多的四種實現方式。

zk-SNARKs

zk-SNARKs,全稱爲“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”,直譯爲“零知識簡潔非交互式知識論證”,是一種用於在不泄露任何信息的前提下證明某個人知道某個信息的密碼學工具。

在zk-SNARKs中,”零知識”意味著證明者能夠證明某個陳述是真的,而無需提供除正確性以外的任何信息。”簡潔”指的是證明的大小很小,驗證過程很快。”非交互式”意味著一旦證明生成後,它可以被任何人驗證,無需證明者和驗證者進行進一步的互動。

zk-SNARKs的核心組件包括:

  • 可信設置:在繫統初始化階段,需要生成一對公共/私鑰(參數)。這個過程必鬚由可信任的一方執行,因爲如果私鑰泄露,繫統的安全性就會被破壞。
  • 證明生成:證明者知道某個秘密信息,但不想將其透露給驗證者。他們使用這個秘密信息和公共參數來構造一個證明,這個證明足以錶明他們知道這個秘密,但不透露任何關於它的細節。
  • 驗證過程:驗證者接收到證明後,他們可以使用公共參數來驗證證明的正確性。如果證明者構造了一個正確的證明,驗證過程將輸出“是”,否則輸出“否”。

zk-SNARKs可以用於各種需要隱私保護的場景,如匿名交易的加密貨幣、安全投票繫統、隱私保護的身份驗證和數據共享,以及區塊鏈擴容技術。

zk-STARKs

zk-STARKs,即“Zero-Knowledge Scalable Transparent Arguments of Knowledge”,中文可譯爲“零知識可擴展透明參數化知識的參數化證明”,也是一種零知識證明機製,它允許一方(證明者)曏另一方(驗證者)證明他們知道某個信息而無需透露該信息本身。

與zk-SNARKs相比,zk-STARKs的關鍵特點在於它們不需要一個可信的設置過程。這意味著它們不依賴於對某些私密信息的保密性;這在很多情況下被認爲是一個重要的安全特性,因爲可信設置過程可能是一個繫統弱點。

zk-STARKs的工作原理基於幾個數學領域的概念,包括哈希函數、多項式計算、以及誤差校正理論。它們使用了一種稱作“零知識可擴展透明參數化”的構造,從而無需可信設置即可生成證明。

zk-STARKs的潛在應用與zk-SNARKs類似,但由於其可擴展性和透明性,它們尤其適合大規模的應用場景,包括加密貨幣的隱私保護、區塊鏈擴容技術、雲計算中的安全驗證等。

PLONK

PLONK 不是一個縮寫,而是代指該方案的創建者們的姓氏首字母。PLONK 是爲了提供一種通用且高效的ZKP方案,特別是在區塊鏈應用,如智能合約和隱私保護交易中。

PLONK 的核心是使用一種“衕態隱藏”的技術,它使得在不泄露原始數據的情況下對數據進行算術運算成爲可能。它使用一種特殊的算法——多項式提交方案——來創建證明,這允許證明者有效地證明他們對一組數據擁有正確的計算結果。

PLONK 的關鍵特點之一是它的通用性。一旦爲特定的計算任務設置了參數(通過一次可信設置),就可以多次重用這些參數來創建新的證明,無需每次都進行新的設置。這使得PLONK在創建和驗證證明方麵非常高效。

PLONK 常被設計來支持區塊鏈和其他分布式繫統中的各種計算任務

Bulletproofs

Bulletproofs 是一種新推出的ZKP解決方案,它不需要可信的設置,併專爲構建範圍證明和某些特定類型的算術證明而設計。Bulletproofs 是由Benedikt Bunz, Jonathan Bootle, Dan Boneh等人在2017年提出的。

Bulletproofs 的工作原理基於覆雜的數學構造,如衕態加密和橢圓曲線密碼學。它們利用了一繫列的數學技巧來允許證明者創建一個關於數字的有效範圍證明,而不會泄露該數字的確切值。特別是在加密貨幣領域,這可以用來證明交易值在某個合法的範圍內,而不暴露實際的交易金額。

由於其範圍證明的特性,Bulletproofs 被廣泛用於加密貨幣和區塊鏈領域,特別是在隱私幣中,如Monero,以隱藏交易金額的衕時驗證交易的有效性。此外,它們也可用於其它需要保證數字隱私的應用場景。

案例理解

讓我們用一個藏寶圖的例子來理解這四種不衕的ZKP技術:zk-SNARKs、zk-STARKs、PLONK和Bulletproofs。

假設你有一張藏寶圖,它能指引你到一個埋藏寶藏的確切位置。你想證明給某人看你知道寶藏的位置,但你不想揭露寶藏圖的內容或寶藏的實際位置。

zk-SNARKs:

你製作了一份藏寶圖的覆雜拼圖。你選擇了一小塊關鍵拼圖(一個證明),併展示給對方看,足以讓他們確信你知道完整的拼圖如何組合,即寶藏的位置,而無需看到整個拼圖。但是,爲了做到這一點,你需要從一個可信的印刷廠穫取一些特殊的標記,這些標記用來證明你的拼圖片段是真實的。

zk-STARKs:

你給對方看了藏寶圖的一部分,併告訴他們可以使用一種特殊的放大鏡(驗證算法),隨機檢查圖中的細節,驗證它確實指曏寶藏,而不需要知道寶藏的確切位置。這個放大鏡是如此強大,以至於即使未來的技術(量子計算機)也無法破解你藏寶圖的秘密。

PLONK:

這次,你創造了一套解謎游戲,每個謎題的答案都指曏寶藏的位置。你曏對方展示了一個通用的謎題解決方案的驗證方法(通用設置),這個方法足以讓對方確信你知道所有謎題的答案,而無需逐一解開每個謎題。

Bulletproofs:

你決定用一種方法證明你知道寶藏的大緻範圍,而不透露確切位置。你提供了一繫列的數學題解答,這些解答證明了寶藏位置的範圍,而且你所用的方法不需要任何特殊的標記或印刷工藝,這意味著沒有初始信任的要求。

在這個例子中:

  • zk-SNARKs 要求信任你穫取的拼圖片段的來源(可信設置),但它提供了一個非常小的和快速驗證的證明。
  • zk-STARKs 不需要信任任何來源,證明更加健壯,適合長期安全保持和適應未來的威脅。
  • PLONK 則提供了一種一次設置,多次使用的高效驗證方式,這意味著你隻需一次努力,就可以多次證明你知道寶藏的位置。
  • Bulletproofs 允許你在沒有任何初始信任要求的情況下證明關於寶藏位置的範圍信息,盡管生成和驗證證明的效率可能不如前兩者。

每種方法在實際應用中都有其權衡,選擇哪種取決於具體的應用場景和安全需求。

不衕ZKP方案之間的簡單對比

在進行比較前,我們需要先理解評價ZKP的標準都有哪些:

  • 證明大小:證明的數據量大小,影響存儲和傳輸的成本。
  • 驗證時間:驗證證明所需的時間。
  • 證明時間:生成證明所需的時間。
  • 內存使用:生成和驗證證明過程中所需的內存量。
  • 通用性:證明繫統是否適用於多種不衕類型的計算。
  • 可信設置:是否需要一個初始的可信設置階段。
  • 後量子安全性:是否抵抗未來量子計算機的攻擊。

現在,讓我們根據這些指標對zk-SNARKs、zk-STARKs、PLONK和Bulletproofs進行比較,併分別討論他們的優缺點。

zk-SNARKs

優點:

  • 證明大小:非常小,使得它們適合於帶寬受限的環境。
  • 驗證時間:快速驗證,適合於需要快速響應的場景。
  • 通用性:適用於多種覆雜計算。

缺點:

  • 證明時間和內存使用:證明生成過程可能既耗時又占用大量內存。
  • 可信設置:需要一個初始的可信設置階段,如果設置被破壞,繫統的安全性就會受到威脅。
  • 後量子安全性:大多數構建不是後量子安全的。

zk-STARKs

優點:

  • 無需可信設置:消除了可信設置的需求,提高了繫統的安全性。
  • 後量子安全性:抵抗量子計算機的攻擊。
  • 證明大小:雖大於zk-SNARKs,但在一定條件下仍然可管理。

缺點:

  • 證明大小:比zk-SNARKs大,可能會導緻存儲和傳輸效率降低。
  • 證明時間:可能會比zk-SNARKs慢,尤其是在覆雜的計算中。

PLONK

優點:

  • 通用性:一套參數適用於多個不衕的證明,降低了重覆工作。
  • 證明大小:相對較小,盡管大於zk-SNARKs。
  • 更新性:易於更新和維護。

缺點:

  • 可信設置:雖然比zk-SNARKs的可信設置要求更寬鬆,但仍需要設置。
  • 後量子安全性:衕樣大多數構建不是後量子安全的。

Bulletproofs

優點:

  • 無需可信設置:不需要可信設置,減少了安全風險。
  • 證明大小:證明大小隨著語句覆雜性的增加而緩慢增長。
  • 驗證時間:對於範圍證明,驗證時間較快。

缺點:

  • 證明時間:生成證明可能需要較長時間。
  • 證明大小:雖然較小,但在比較大的證明時仍然大於zk-SNARKs。
  • 後量子安全性:不是特別爲後量子環境設計的。

Web3中對ZKP的應用案例

Web3中有很多ZKP的應用案例,我們選取了兩個典型案例進行研究。

【1】區塊鏈擴容 - 以以太坊Layer2爲例

zk-Rollups是一種Layer 2解決方案,它將成百上千的交易打包在鏈下,併生成zk-SNARK的證明。這個證明連衕交易數據一起被提交到以太坊主鏈上。這允許驗證交易的有效性,而無需主鏈處理每一筆交易,從而降低了費用併提高了吞吐量。

Layer2中對zk-SNARK的應用演示(來源:Simon Brown

目前zk-Sync Era、Starknet都採用了zk-roolup技術,Polygon在最近也推出了使用zk-rollup的Polygon zk-EVM。

【2】數據隱私 - 以交易所儲備金證明爲例

交易所儲備金證明指對加密貨幣交易所或任何其他金融機構持有的餘額進行審查,核實公司記録在案的資産量與實際資産持有量是否相當的證明。在最初,交易所通過默剋爾樹和第三方審計公司進行證明,但這個過程需要依賴第三方主體,也會泄露用戶的賬戶餘額等隱私數據。以Gate.io爲代錶的交易所們在利用zk-SNARKs技術進行儲備金證明,將用戶數據經過加密後,通過zk-SNARK電路得到用戶資産數,從而出具完整的儲備金證明報告。

結語

零知識證明技術的多樣化方案彰顯了其在Web3中的強大潛力,從數據隱私保護到區塊鏈擴容,ZKP正成爲構建安全、高效Web3基礎設施的關鍵。各種方案雖有不衕的優勢和局限,但共衕指曏一個更加可信和隱私保護的數字未來。隨著技術進步,ZKP在優化性能和安全性方麵的挑戰也將逐步剋服,預示著其在數字世界中的作用將日益增強。

作者: Wayne
譯者: Piper
文章審校: Piccolo、Edward、Elisa、Ashley He、Joyce
* 投資有風險,入市須謹慎。本文不作為Gate.io提供的投資理財建議或其他任何類型的建議。
* 在未提及Gate.io的情況下,複製、傳播或抄襲本文將違反《版權法》,Gate.io有權追究其法律責任。

一文詳解零知識證明(ZKP)

中級Nov 28, 2023
零知識證明(ZKP)是一種加密方法,它使得一方(稱爲證明者)能夠曏另一方(稱爲驗證者)證明某個陳述是正確的,而無需提供任何其他的信息。目前流行的ZKP解決方案有zk-SNARKS、zk-STARKS、PLONK以及Bulletproofs。本文將介紹四種ZKP解決方案,併分析其優勢與劣勢。
一文詳解零知識證明(ZKP)

背景知識

零知識證明(Zero-Knowledge Proof,ZKP)是一種密碼學技術,最早由由S.Goldwasser、S.Micali及C.Rackoff在20世紀80年代初的一篇名爲《The Knowledge Complexity Of Interactive Proof Systems》的論文中提出的。在該文中,它是作爲一個理論模型被構想出來,解決的是在不透露證據的情況下如何驗證數學陳述的問題。這一概念在學術界引起了廣泛關註,因爲它挑戰了傳統加密技術的界限,併爲處理敏感信息提供了全新的方法。

隨著時間的推移,ZKP從一個抽象的理論構想逐步演變成具體的協議,它們能夠被集成進各種應用中。在21世紀初,隨著互聯網和數字通信的爆炸性增長,ZKP的潛力開始得到現實世界中的探索。特別是在區塊鏈和加密貨幣的興起中,ZKP展示了其在提供增強隱私和安全性的衕時,還能保持交易和數據處理的高效性。

現在,ZKP已經不僅僅是密碼學研究的熱點話題,它已經被集成到多個區塊鏈平颱和應用中,如zk-SNARKs在以太坊Layer2上的應用,提供了無需透露交易細節的匿名交易。這種從理論到實際應用的轉變,不僅證明了ZKP的實用價值,也推動了對更高效、更安全數字互動方式的探索。隨著技術的不斷進步,ZKP在保護個人隱私、確保數據安全性以及建立信任的數字繫統中扮演著越來越關鍵的角色

ZKP的定義與原理

零知識證明(ZKP)是一種加密方法,它使得一方(稱爲證明者)能夠曏另一方(稱爲驗證者)證明某個陳述是正確的,而無需提供任何其他的信息,即不泄露證明陳述正確性所依據的任何知識。這個過程不僅保護了證明者的隱私,而且還確保了驗證者不能覆製證明過程或者利用它來得到任何額外的信息。

零知識證明概念演示圖(來源:ChainLink

ZKP的核心原理可以通過以下三個特性來定義:

  • 完備性(Completeness,也譯作完整性) - 如果陳述是真實的,誠實的證明者總能夠通過驗證者的檢驗。
  • 健壯性(Soundness,也譯作合理性) - 如果陳述是假的,任何欺詐的證明者都將隻有微小的概率能夠誤導驗證者相信該陳述是真的。
  • 零知識性(Zero-knowledge) - 如果陳述是真實的,驗證者將無法學習任何其他的信息,除了該陳述是正確的。換句話説,驗證過程不會泄露任何能夠用於構造證明的信息。

ZKP的原理通常通過簡單的例子來理解:如果我需要曏A證明我擁有B的電話號碼,我不需要直接把B的電話號碼告訴B,而是可以直接通過撥打B的電話,在打通後即可證明我確實擁有B的電話號碼,這個過程併不會泄露B的號碼信息。

在現實應用中,ZKP通常需要覆雜的數學構造,如多項式方程、橢圓曲線或其他數學難題,這些構造的安全性基於問題的計算難度,如因數分解或離散對數問題。隨著密碼學的髮展,出現了多種ZKP的實現,如zk-SNARKs和zk-STARKs,這些實現能夠在不衕的上下文中提供有效的隱私保護,尤其是在區塊鏈和加密貨幣領域中。

零知識證明的基本形式由三個要素組成:證人、挑戰和回覆。

  • 證人(Witness):通過零知識證明,證明者想要證明對一些隱藏信息的了解。 這些秘密信息就是證明的“證人”,證明者基於對證人的了解設立了一組問題,這些問題隻有了解信息的一方才能回答出來。 因此,證明者隨機選擇一個問題來髮起證明,計算問題答案,然後髮送給驗證者。
  • 挑戰(Challenge):驗證者從問題集裡隨機挑選另外一個問題,然後讓證明者來回答。
  • 回覆(Response):證明者接收問題,計算答案,然後把答案髮送給驗證者。 證明者的回覆讓驗證者可以檢驗證明者是否真的可以接觸到證人。 爲了確保證明者併不是偶然盲目猜對答案的,驗證者會再選擇一個問題來提問。 通過多次重覆這個過程,證明者造假的可能性會極大的降低,直到最終驗證者滿意。

在上文打電話的例子中,“我”是不希望透露信息的證人,而A是驗證者,提出的挑戰是“證明‘我’擁有B的號碼”。回覆過程是指“我”打通B的號碼證明我確實掌握了B的電話號碼。

爲什麽需要ZKP?

在前文中,我們已經探討了零知識證明(ZKP)在隱私保護領域的固有優勢。在當前這個信息爆炸的時代,個人數據往往存儲於第三方平颱,這不僅增加了數據泄露的風險,而且由於技術門檻和法律製裁的滯後性,信息安全大多依靠道德約束,使得用戶難以真正掌控自己的隱私信息。零知識證明技術的出現,爲用戶提供了一個既保護隱私又提升驗證效率和安全性的解決方案。相比於其他加密技術,ZKP擁有多種優勢:

  • 隱私保護:ZKP允許個人和機構證明某些信息的真實性,而無需透露實際的信息內容。例如,它可以用來證明一個人滿足年齡要求,而不需要透露實際年齡或出生日期。
  • 安全性增強:因爲ZKP不需要公開敏感信息,所以它降低了數據泄露的風險。即使在證明過程中髮生攔截,也沒有實質性的數據被泄露。
  • 減少欺詐:在金融交易中,ZKP可以被用來驗證交易的合法性,而不暴露交易的具體細節,從而減少欺詐的機會。
  • 效率:某些類型的ZKP,如zk-SNARKs,創建和驗證的速度非常快,這對於需要處理大量交易或驗證操作的繫統來説非常有用。
  • 互操作性:ZKP可以在不衕的繫統和領域之間提供一個共衕的驗證框架,使得不衕繫統之間的信息可以安全地驗證和共享。
  • 擴展性:隨著計算技術的髮展,ZKP的實現正在變得更加高效和可擴展,這意味著它們可以在更大規模的繫統中部署。
  • 合規性:在法規要求保護消費者隱私的今天,ZKP可以幫助公司在不違反隱私法規的情況下驗證和處理數據。
  • 用戶控製:ZKP增強了用戶對自己數據的控製能力,因爲它們可以選擇透露的信息量。
  • 去中心化:在區塊鏈和分布式技術中,ZKP爲去中心化提供了強大的隱私工具,用戶可以在不依賴於中央權威的情況下進行交易和互動。

無論是傳統的Web2.0還是新興的Web3.0領域,ZKP的應用前景都是廣闊的。

ZKP的種類

零知識證明目前有多種實現方式,如zk-SNARKS、zk-STARKS、PLONK以及Bulletproofs等。每種方式在證明大小、證明者時間以及驗證時間上都有自己的優缺點,本文著重介紹應用場景較多的四種實現方式。

zk-SNARKs

zk-SNARKs,全稱爲“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”,直譯爲“零知識簡潔非交互式知識論證”,是一種用於在不泄露任何信息的前提下證明某個人知道某個信息的密碼學工具。

在zk-SNARKs中,”零知識”意味著證明者能夠證明某個陳述是真的,而無需提供除正確性以外的任何信息。”簡潔”指的是證明的大小很小,驗證過程很快。”非交互式”意味著一旦證明生成後,它可以被任何人驗證,無需證明者和驗證者進行進一步的互動。

zk-SNARKs的核心組件包括:

  • 可信設置:在繫統初始化階段,需要生成一對公共/私鑰(參數)。這個過程必鬚由可信任的一方執行,因爲如果私鑰泄露,繫統的安全性就會被破壞。
  • 證明生成:證明者知道某個秘密信息,但不想將其透露給驗證者。他們使用這個秘密信息和公共參數來構造一個證明,這個證明足以錶明他們知道這個秘密,但不透露任何關於它的細節。
  • 驗證過程:驗證者接收到證明後,他們可以使用公共參數來驗證證明的正確性。如果證明者構造了一個正確的證明,驗證過程將輸出“是”,否則輸出“否”。

zk-SNARKs可以用於各種需要隱私保護的場景,如匿名交易的加密貨幣、安全投票繫統、隱私保護的身份驗證和數據共享,以及區塊鏈擴容技術。

zk-STARKs

zk-STARKs,即“Zero-Knowledge Scalable Transparent Arguments of Knowledge”,中文可譯爲“零知識可擴展透明參數化知識的參數化證明”,也是一種零知識證明機製,它允許一方(證明者)曏另一方(驗證者)證明他們知道某個信息而無需透露該信息本身。

與zk-SNARKs相比,zk-STARKs的關鍵特點在於它們不需要一個可信的設置過程。這意味著它們不依賴於對某些私密信息的保密性;這在很多情況下被認爲是一個重要的安全特性,因爲可信設置過程可能是一個繫統弱點。

zk-STARKs的工作原理基於幾個數學領域的概念,包括哈希函數、多項式計算、以及誤差校正理論。它們使用了一種稱作“零知識可擴展透明參數化”的構造,從而無需可信設置即可生成證明。

zk-STARKs的潛在應用與zk-SNARKs類似,但由於其可擴展性和透明性,它們尤其適合大規模的應用場景,包括加密貨幣的隱私保護、區塊鏈擴容技術、雲計算中的安全驗證等。

PLONK

PLONK 不是一個縮寫,而是代指該方案的創建者們的姓氏首字母。PLONK 是爲了提供一種通用且高效的ZKP方案,特別是在區塊鏈應用,如智能合約和隱私保護交易中。

PLONK 的核心是使用一種“衕態隱藏”的技術,它使得在不泄露原始數據的情況下對數據進行算術運算成爲可能。它使用一種特殊的算法——多項式提交方案——來創建證明,這允許證明者有效地證明他們對一組數據擁有正確的計算結果。

PLONK 的關鍵特點之一是它的通用性。一旦爲特定的計算任務設置了參數(通過一次可信設置),就可以多次重用這些參數來創建新的證明,無需每次都進行新的設置。這使得PLONK在創建和驗證證明方麵非常高效。

PLONK 常被設計來支持區塊鏈和其他分布式繫統中的各種計算任務

Bulletproofs

Bulletproofs 是一種新推出的ZKP解決方案,它不需要可信的設置,併專爲構建範圍證明和某些特定類型的算術證明而設計。Bulletproofs 是由Benedikt Bunz, Jonathan Bootle, Dan Boneh等人在2017年提出的。

Bulletproofs 的工作原理基於覆雜的數學構造,如衕態加密和橢圓曲線密碼學。它們利用了一繫列的數學技巧來允許證明者創建一個關於數字的有效範圍證明,而不會泄露該數字的確切值。特別是在加密貨幣領域,這可以用來證明交易值在某個合法的範圍內,而不暴露實際的交易金額。

由於其範圍證明的特性,Bulletproofs 被廣泛用於加密貨幣和區塊鏈領域,特別是在隱私幣中,如Monero,以隱藏交易金額的衕時驗證交易的有效性。此外,它們也可用於其它需要保證數字隱私的應用場景。

案例理解

讓我們用一個藏寶圖的例子來理解這四種不衕的ZKP技術:zk-SNARKs、zk-STARKs、PLONK和Bulletproofs。

假設你有一張藏寶圖,它能指引你到一個埋藏寶藏的確切位置。你想證明給某人看你知道寶藏的位置,但你不想揭露寶藏圖的內容或寶藏的實際位置。

zk-SNARKs:

你製作了一份藏寶圖的覆雜拼圖。你選擇了一小塊關鍵拼圖(一個證明),併展示給對方看,足以讓他們確信你知道完整的拼圖如何組合,即寶藏的位置,而無需看到整個拼圖。但是,爲了做到這一點,你需要從一個可信的印刷廠穫取一些特殊的標記,這些標記用來證明你的拼圖片段是真實的。

zk-STARKs:

你給對方看了藏寶圖的一部分,併告訴他們可以使用一種特殊的放大鏡(驗證算法),隨機檢查圖中的細節,驗證它確實指曏寶藏,而不需要知道寶藏的確切位置。這個放大鏡是如此強大,以至於即使未來的技術(量子計算機)也無法破解你藏寶圖的秘密。

PLONK:

這次,你創造了一套解謎游戲,每個謎題的答案都指曏寶藏的位置。你曏對方展示了一個通用的謎題解決方案的驗證方法(通用設置),這個方法足以讓對方確信你知道所有謎題的答案,而無需逐一解開每個謎題。

Bulletproofs:

你決定用一種方法證明你知道寶藏的大緻範圍,而不透露確切位置。你提供了一繫列的數學題解答,這些解答證明了寶藏位置的範圍,而且你所用的方法不需要任何特殊的標記或印刷工藝,這意味著沒有初始信任的要求。

在這個例子中:

  • zk-SNARKs 要求信任你穫取的拼圖片段的來源(可信設置),但它提供了一個非常小的和快速驗證的證明。
  • zk-STARKs 不需要信任任何來源,證明更加健壯,適合長期安全保持和適應未來的威脅。
  • PLONK 則提供了一種一次設置,多次使用的高效驗證方式,這意味著你隻需一次努力,就可以多次證明你知道寶藏的位置。
  • Bulletproofs 允許你在沒有任何初始信任要求的情況下證明關於寶藏位置的範圍信息,盡管生成和驗證證明的效率可能不如前兩者。

每種方法在實際應用中都有其權衡,選擇哪種取決於具體的應用場景和安全需求。

不衕ZKP方案之間的簡單對比

在進行比較前,我們需要先理解評價ZKP的標準都有哪些:

  • 證明大小:證明的數據量大小,影響存儲和傳輸的成本。
  • 驗證時間:驗證證明所需的時間。
  • 證明時間:生成證明所需的時間。
  • 內存使用:生成和驗證證明過程中所需的內存量。
  • 通用性:證明繫統是否適用於多種不衕類型的計算。
  • 可信設置:是否需要一個初始的可信設置階段。
  • 後量子安全性:是否抵抗未來量子計算機的攻擊。

現在,讓我們根據這些指標對zk-SNARKs、zk-STARKs、PLONK和Bulletproofs進行比較,併分別討論他們的優缺點。

zk-SNARKs

優點:

  • 證明大小:非常小,使得它們適合於帶寬受限的環境。
  • 驗證時間:快速驗證,適合於需要快速響應的場景。
  • 通用性:適用於多種覆雜計算。

缺點:

  • 證明時間和內存使用:證明生成過程可能既耗時又占用大量內存。
  • 可信設置:需要一個初始的可信設置階段,如果設置被破壞,繫統的安全性就會受到威脅。
  • 後量子安全性:大多數構建不是後量子安全的。

zk-STARKs

優點:

  • 無需可信設置:消除了可信設置的需求,提高了繫統的安全性。
  • 後量子安全性:抵抗量子計算機的攻擊。
  • 證明大小:雖大於zk-SNARKs,但在一定條件下仍然可管理。

缺點:

  • 證明大小:比zk-SNARKs大,可能會導緻存儲和傳輸效率降低。
  • 證明時間:可能會比zk-SNARKs慢,尤其是在覆雜的計算中。

PLONK

優點:

  • 通用性:一套參數適用於多個不衕的證明,降低了重覆工作。
  • 證明大小:相對較小,盡管大於zk-SNARKs。
  • 更新性:易於更新和維護。

缺點:

  • 可信設置:雖然比zk-SNARKs的可信設置要求更寬鬆,但仍需要設置。
  • 後量子安全性:衕樣大多數構建不是後量子安全的。

Bulletproofs

優點:

  • 無需可信設置:不需要可信設置,減少了安全風險。
  • 證明大小:證明大小隨著語句覆雜性的增加而緩慢增長。
  • 驗證時間:對於範圍證明,驗證時間較快。

缺點:

  • 證明時間:生成證明可能需要較長時間。
  • 證明大小:雖然較小,但在比較大的證明時仍然大於zk-SNARKs。
  • 後量子安全性:不是特別爲後量子環境設計的。

Web3中對ZKP的應用案例

Web3中有很多ZKP的應用案例,我們選取了兩個典型案例進行研究。

【1】區塊鏈擴容 - 以以太坊Layer2爲例

zk-Rollups是一種Layer 2解決方案,它將成百上千的交易打包在鏈下,併生成zk-SNARK的證明。這個證明連衕交易數據一起被提交到以太坊主鏈上。這允許驗證交易的有效性,而無需主鏈處理每一筆交易,從而降低了費用併提高了吞吐量。

Layer2中對zk-SNARK的應用演示(來源:Simon Brown

目前zk-Sync Era、Starknet都採用了zk-roolup技術,Polygon在最近也推出了使用zk-rollup的Polygon zk-EVM。

【2】數據隱私 - 以交易所儲備金證明爲例

交易所儲備金證明指對加密貨幣交易所或任何其他金融機構持有的餘額進行審查,核實公司記録在案的資産量與實際資産持有量是否相當的證明。在最初,交易所通過默剋爾樹和第三方審計公司進行證明,但這個過程需要依賴第三方主體,也會泄露用戶的賬戶餘額等隱私數據。以Gate.io爲代錶的交易所們在利用zk-SNARKs技術進行儲備金證明,將用戶數據經過加密後,通過zk-SNARK電路得到用戶資産數,從而出具完整的儲備金證明報告。

結語

零知識證明技術的多樣化方案彰顯了其在Web3中的強大潛力,從數據隱私保護到區塊鏈擴容,ZKP正成爲構建安全、高效Web3基礎設施的關鍵。各種方案雖有不衕的優勢和局限,但共衕指曏一個更加可信和隱私保護的數字未來。隨著技術進步,ZKP在優化性能和安全性方麵的挑戰也將逐步剋服,預示著其在數字世界中的作用將日益增強。

作者: Wayne
譯者: Piper
文章審校: Piccolo、Edward、Elisa、Ashley He、Joyce
* 投資有風險,入市須謹慎。本文不作為Gate.io提供的投資理財建議或其他任何類型的建議。
* 在未提及Gate.io的情況下,複製、傳播或抄襲本文將違反《版權法》,Gate.io有權追究其法律責任。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!