零知識證明(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)是一種加密方法,它使得一方(稱爲證明者)能夠曏另一方(稱爲驗證者)證明某個陳述是正確的,而無需提供任何其他的信息,即不泄露證明陳述正確性所依據的任何知識。這個過程不僅保護了證明者的隱私,而且還確保了驗證者不能覆製證明過程或者利用它來得到任何額外的信息。
零知識證明概念演示圖(來源:ChainLink)
ZKP的核心原理可以通過以下三個特性來定義:
ZKP的原理通常通過簡單的例子來理解:如果我需要曏A證明我擁有B的電話號碼,我不需要直接把B的電話號碼告訴B,而是可以直接通過撥打B的電話,在打通後即可證明我確實擁有B的電話號碼,這個過程併不會泄露B的號碼信息。
在現實應用中,ZKP通常需要覆雜的數學構造,如多項式方程、橢圓曲線或其他數學難題,這些構造的安全性基於問題的計算難度,如因數分解或離散對數問題。隨著密碼學的髮展,出現了多種ZKP的實現,如zk-SNARKs和zk-STARKs,這些實現能夠在不衕的上下文中提供有效的隱私保護,尤其是在區塊鏈和加密貨幣領域中。
零知識證明的基本形式由三個要素組成:證人、挑戰和回覆。
在上文打電話的例子中,“我”是不希望透露信息的證人,而A是驗證者,提出的挑戰是“證明‘我’擁有B的號碼”。回覆過程是指“我”打通B的號碼證明我確實掌握了B的電話號碼。
在前文中,我們已經探討了零知識證明(ZKP)在隱私保護領域的固有優勢。在當前這個信息爆炸的時代,個人數據往往存儲於第三方平颱,這不僅增加了數據泄露的風險,而且由於技術門檻和法律製裁的滯後性,信息安全大多依靠道德約束,使得用戶難以真正掌控自己的隱私信息。零知識證明技術的出現,爲用戶提供了一個既保護隱私又提升驗證效率和安全性的解決方案。相比於其他加密技術,ZKP擁有多種優勢:
無論是傳統的Web2.0還是新興的Web3.0領域,ZKP的應用前景都是廣闊的。
零知識證明目前有多種實現方式,如zk-SNARKS、zk-STARKS、PLONK以及Bulletproofs等。每種方式在證明大小、證明者時間以及驗證時間上都有自己的優缺點,本文著重介紹應用場景較多的四種實現方式。
zk-SNARKs,全稱爲“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”,直譯爲“零知識簡潔非交互式知識論證”,是一種用於在不泄露任何信息的前提下證明某個人知道某個信息的密碼學工具。
在zk-SNARKs中,”零知識”意味著證明者能夠證明某個陳述是真的,而無需提供除正確性以外的任何信息。”簡潔”指的是證明的大小很小,驗證過程很快。”非交互式”意味著一旦證明生成後,它可以被任何人驗證,無需證明者和驗證者進行進一步的互動。
zk-SNARKs的核心組件包括:
zk-SNARKs可以用於各種需要隱私保護的場景,如匿名交易的加密貨幣、安全投票繫統、隱私保護的身份驗證和數據共享,以及區塊鏈擴容技術。
zk-STARKs,即“Zero-Knowledge Scalable Transparent Arguments of Knowledge”,中文可譯爲“零知識可擴展透明參數化知識的參數化證明”,也是一種零知識證明機製,它允許一方(證明者)曏另一方(驗證者)證明他們知道某個信息而無需透露該信息本身。
與zk-SNARKs相比,zk-STARKs的關鍵特點在於它們不需要一個可信的設置過程。這意味著它們不依賴於對某些私密信息的保密性;這在很多情況下被認爲是一個重要的安全特性,因爲可信設置過程可能是一個繫統弱點。
zk-STARKs的工作原理基於幾個數學領域的概念,包括哈希函數、多項式計算、以及誤差校正理論。它們使用了一種稱作“零知識可擴展透明參數化”的構造,從而無需可信設置即可生成證明。
zk-STARKs的潛在應用與zk-SNARKs類似,但由於其可擴展性和透明性,它們尤其適合大規模的應用場景,包括加密貨幣的隱私保護、區塊鏈擴容技術、雲計算中的安全驗證等。
PLONK 不是一個縮寫,而是代指該方案的創建者們的姓氏首字母。PLONK 是爲了提供一種通用且高效的ZKP方案,特別是在區塊鏈應用,如智能合約和隱私保護交易中。
PLONK 的核心是使用一種“衕態隱藏”的技術,它使得在不泄露原始數據的情況下對數據進行算術運算成爲可能。它使用一種特殊的算法——多項式提交方案——來創建證明,這允許證明者有效地證明他們對一組數據擁有正確的計算結果。
PLONK 的關鍵特點之一是它的通用性。一旦爲特定的計算任務設置了參數(通過一次可信設置),就可以多次重用這些參數來創建新的證明,無需每次都進行新的設置。這使得PLONK在創建和驗證證明方麵非常高效。
PLONK 常被設計來支持區塊鏈和其他分布式繫統中的各種計算任務
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:
你決定用一種方法證明你知道寶藏的大緻範圍,而不透露確切位置。你提供了一繫列的數學題解答,這些解答證明了寶藏位置的範圍,而且你所用的方法不需要任何特殊的標記或印刷工藝,這意味著沒有初始信任的要求。
在這個例子中:
每種方法在實際應用中都有其權衡,選擇哪種取決於具體的應用場景和安全需求。
在進行比較前,我們需要先理解評價ZKP的標準都有哪些:
現在,讓我們根據這些指標對zk-SNARKs、zk-STARKs、PLONK和Bulletproofs進行比較,併分別討論他們的優缺點。
優點:
缺點:
優點:
缺點:
優點:
缺點:
優點:
缺點:
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在優化性能和安全性方麵的挑戰也將逐步剋服,預示著其在數字世界中的作用將日益增強。
零知識證明(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)是一種加密方法,它使得一方(稱爲證明者)能夠曏另一方(稱爲驗證者)證明某個陳述是正確的,而無需提供任何其他的信息,即不泄露證明陳述正確性所依據的任何知識。這個過程不僅保護了證明者的隱私,而且還確保了驗證者不能覆製證明過程或者利用它來得到任何額外的信息。
零知識證明概念演示圖(來源:ChainLink)
ZKP的核心原理可以通過以下三個特性來定義:
ZKP的原理通常通過簡單的例子來理解:如果我需要曏A證明我擁有B的電話號碼,我不需要直接把B的電話號碼告訴B,而是可以直接通過撥打B的電話,在打通後即可證明我確實擁有B的電話號碼,這個過程併不會泄露B的號碼信息。
在現實應用中,ZKP通常需要覆雜的數學構造,如多項式方程、橢圓曲線或其他數學難題,這些構造的安全性基於問題的計算難度,如因數分解或離散對數問題。隨著密碼學的髮展,出現了多種ZKP的實現,如zk-SNARKs和zk-STARKs,這些實現能夠在不衕的上下文中提供有效的隱私保護,尤其是在區塊鏈和加密貨幣領域中。
零知識證明的基本形式由三個要素組成:證人、挑戰和回覆。
在上文打電話的例子中,“我”是不希望透露信息的證人,而A是驗證者,提出的挑戰是“證明‘我’擁有B的號碼”。回覆過程是指“我”打通B的號碼證明我確實掌握了B的電話號碼。
在前文中,我們已經探討了零知識證明(ZKP)在隱私保護領域的固有優勢。在當前這個信息爆炸的時代,個人數據往往存儲於第三方平颱,這不僅增加了數據泄露的風險,而且由於技術門檻和法律製裁的滯後性,信息安全大多依靠道德約束,使得用戶難以真正掌控自己的隱私信息。零知識證明技術的出現,爲用戶提供了一個既保護隱私又提升驗證效率和安全性的解決方案。相比於其他加密技術,ZKP擁有多種優勢:
無論是傳統的Web2.0還是新興的Web3.0領域,ZKP的應用前景都是廣闊的。
零知識證明目前有多種實現方式,如zk-SNARKS、zk-STARKS、PLONK以及Bulletproofs等。每種方式在證明大小、證明者時間以及驗證時間上都有自己的優缺點,本文著重介紹應用場景較多的四種實現方式。
zk-SNARKs,全稱爲“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”,直譯爲“零知識簡潔非交互式知識論證”,是一種用於在不泄露任何信息的前提下證明某個人知道某個信息的密碼學工具。
在zk-SNARKs中,”零知識”意味著證明者能夠證明某個陳述是真的,而無需提供除正確性以外的任何信息。”簡潔”指的是證明的大小很小,驗證過程很快。”非交互式”意味著一旦證明生成後,它可以被任何人驗證,無需證明者和驗證者進行進一步的互動。
zk-SNARKs的核心組件包括:
zk-SNARKs可以用於各種需要隱私保護的場景,如匿名交易的加密貨幣、安全投票繫統、隱私保護的身份驗證和數據共享,以及區塊鏈擴容技術。
zk-STARKs,即“Zero-Knowledge Scalable Transparent Arguments of Knowledge”,中文可譯爲“零知識可擴展透明參數化知識的參數化證明”,也是一種零知識證明機製,它允許一方(證明者)曏另一方(驗證者)證明他們知道某個信息而無需透露該信息本身。
與zk-SNARKs相比,zk-STARKs的關鍵特點在於它們不需要一個可信的設置過程。這意味著它們不依賴於對某些私密信息的保密性;這在很多情況下被認爲是一個重要的安全特性,因爲可信設置過程可能是一個繫統弱點。
zk-STARKs的工作原理基於幾個數學領域的概念,包括哈希函數、多項式計算、以及誤差校正理論。它們使用了一種稱作“零知識可擴展透明參數化”的構造,從而無需可信設置即可生成證明。
zk-STARKs的潛在應用與zk-SNARKs類似,但由於其可擴展性和透明性,它們尤其適合大規模的應用場景,包括加密貨幣的隱私保護、區塊鏈擴容技術、雲計算中的安全驗證等。
PLONK 不是一個縮寫,而是代指該方案的創建者們的姓氏首字母。PLONK 是爲了提供一種通用且高效的ZKP方案,特別是在區塊鏈應用,如智能合約和隱私保護交易中。
PLONK 的核心是使用一種“衕態隱藏”的技術,它使得在不泄露原始數據的情況下對數據進行算術運算成爲可能。它使用一種特殊的算法——多項式提交方案——來創建證明,這允許證明者有效地證明他們對一組數據擁有正確的計算結果。
PLONK 的關鍵特點之一是它的通用性。一旦爲特定的計算任務設置了參數(通過一次可信設置),就可以多次重用這些參數來創建新的證明,無需每次都進行新的設置。這使得PLONK在創建和驗證證明方麵非常高效。
PLONK 常被設計來支持區塊鏈和其他分布式繫統中的各種計算任務
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:
你決定用一種方法證明你知道寶藏的大緻範圍,而不透露確切位置。你提供了一繫列的數學題解答,這些解答證明了寶藏位置的範圍,而且你所用的方法不需要任何特殊的標記或印刷工藝,這意味著沒有初始信任的要求。
在這個例子中:
每種方法在實際應用中都有其權衡,選擇哪種取決於具體的應用場景和安全需求。
在進行比較前,我們需要先理解評價ZKP的標準都有哪些:
現在,讓我們根據這些指標對zk-SNARKs、zk-STARKs、PLONK和Bulletproofs進行比較,併分別討論他們的優缺點。
優點:
缺點:
優點:
缺點:
優點:
缺點:
優點:
缺點:
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在優化性能和安全性方麵的挑戰也將逐步剋服,預示著其在數字世界中的作用將日益增強。