如果a=1,證明者計算g=rs mod n並發送。設驗證者發送的隨機位a,根據a的值,證明者計算g;
最後,驗證者根據收到的g來驗證x是否等於g^2 mod n。如果等式成立,驗證者接受這個證明。當a=0時,驗證者計算x=g^2 mod n,右側驗證g^2 mod n; 當a=1時,驗證者計算x=g^2/v mod n,右側驗證(rs)^2/s^2 mod n。
這裏,我們看到驗證者計算得到的x=g^2 mod n說明證明者成功地通過了驗證過程,同時沒有泄露他的祕密數字s。在這裏,由於a只可以取0或1,僅有兩種可能性,證明者依靠運氣通過驗證的概率1/2(當a取0時)。但驗證者隨後再挑戰證明者k次,證明者不斷更換相關數字,提交給驗證者,且總能成功地通過驗證過程,這樣一來證明者依靠運氣通過驗證的概率(1/2)^k(無限趨近於0),證明者確實知道某個祕密數字s的結論便得到證明。這一例子證明了零知識證明系統的完整性、可靠性和零知識性。
零知識證明技術深度解析:從算法到應用的全面綜述
零知識證明技術的發展與應用:區塊鏈領域的綜述
摘要
零知識證明(ZKP)作爲密碼學領域的重要突破,在區塊鏈技術中扮演着關鍵角色。本文對ZKP近四十年來的發展歷程和最新研究進行了系統性綜述。
首先,介紹了ZKP的基本概念和歷史背景。接着,重點分析了基於電路的ZKP技術,包括zkSNARK、Ben-Sasson、Pinocchio、Bulletproofs和Ligero等模型的設計、應用和優化方法。在計算環境方面,本文討論了ZKVM和ZKEVM如何提升交易處理能力、保護隱私和提高驗證效率。還介紹了零知識Rollup作爲Layer擴展方案的工作機制和優化方法,以及硬件加速、混合解決方案和專用ZK EVM的最新進展。
最後,展望了ZKCoprocessor、ZKML、ZKThreads、ZK Sharding和ZK StateChannels等新興概念,探討了它們在區塊鏈擴展性、互操作性和隱私保護方面的潛力。
通過分析這些技術發展趨勢,本文爲理解和應用ZKP技術提供了全面視角,展示了其在提升區塊鏈系統效率和安全性方面的巨大潛力,爲未來的投資決策提供了重要參考。
目錄
前言
一、零知識證明基礎知識
二、非交互零知識證明
三、基於電路的零知識證明
四、零知識證明模型
五、零知識虛擬機的概述和發展
六、零知識以太坊虛擬機的概述和發展
七、零知識二層網路方案概述與發展
八、零知識證明的未來發展方向
九、結論
前言
互聯網正在進入Web3時代,區塊鏈應用(DApps)發展迅速。近年來,區塊鏈平台每天承載着數百萬用戶活動,處理着數十億筆交易。這些交易產生的大量數據通常包括敏感個人信息。鑑於區塊鏈的開放性和透明性特點,這些存儲的數據對所有人都是開放的,因此引發了多種安全與隱私問題。
目前,有幾種加密技術可以應對這些挑戰,包括同態加密、環籤名、安全多方計算和零知識證明。零知識證明是一種更全面的解決方案,這種驗證協議允許在不透露任何中介數據的情況下驗證某些命題的正確性。該協議不需要復雜的公鑰設施,其重復實施也不會爲惡意用戶提供獲取額外有用信息的機會。通過ZKP,驗證者能夠在不泄露任何私人交易數據的情況下,驗證證明者是否具有足夠的交易金額。
ZKP這一特性使其在區塊鏈交易和加密貨幣應用中扮演核心角色,特別是在隱私保護和網路擴容方面,使得其不僅成爲了學術研究的焦點,被廣泛認爲是自分布式帳本技術成功實施以來最重要的技術創新之一。同時也是行業應用和風險投資的重點賽道。
由此,諸多基於ZKP的網路項目相繼湧現,如ZkSync、StarkNet、Mina、FIL和Aleo等。隨着這些項目的發展,關於ZKP的算法創新層出不窮,據報道幾乎每週都有新算法問世。此外,與ZKP技術相關的硬件開發也在迅速進展,包括專爲ZKP優化的芯片。例如,Ingonyama、Irreducible和Cysic等項目已經完成了大規模的資金募集,這些發展不僅展示了ZKP技術的快速進步,也反映了從通用硬件向專用硬件如GPU、FPGA和ASIC的轉變。
這些進展表明,零知識證明技術不僅是密碼學領域的一個重要突破,也是實現更廣泛區塊鏈技術應用的關鍵推動力。
因此,我們決定系統地整理零知識證明(ZKP)的相關知識,以更好地輔助我們做出未來的投資決策。爲此,我們綜合審閱了關於ZKP相關的核心學術論文;同時,我們也詳細分析了該領域內領先的項目的資料和白皮書。這些綜合性的資料搜集和分析爲本文的撰寫提供了堅實的基礎。
一、零知識證明基礎知識
1. 概述
1985年,學者Goldwasser、Micali和Rackoff首次提出了零知識證明(Zero-Knowledge Proof,ZKP)和交互式知識證(Interactive Zero-Knowledge,IZK)。該論文是零知識證明的奠基之作,定義了許多影響後續學術研究的概念。例如,知識的定義是"不可行計算的輸出",即知識必須是一個輸出,且是一個不可行計算,意味着它不能是簡單的函數,而需是復雜的函數。不可行計算通常可以理解爲是一個NP問題,即可以在多項式時間內驗證其解正確性的問題,多項式時間指的是算法運行時間可以用輸入大小的多項式函數來表示。這是計算機科學中衡量算法效率和可行性的重要標準。由於NP問題的求解過程復雜,因此被認爲是不可行計算;但其驗證過程相對簡單,所以非常適合用於零知識證明驗證。
NP問題的一個經典例子是旅行商問題,其中要找到訪問一系列城市並返回起點的最短路徑。雖然找到最短路徑可能很困難,但給定一個路徑,驗證這條路徑是否是最短的相對容易。因爲驗證一個具體路徑的總距離可以在多項式時間內完成。
Goldwasser等人在其論文中引入了"知識復雜度"這一概念,用以量化在交互式證明系統中,證明者向驗證者泄露的知識量。他們還提出了交互式證明系統(Interactive Proof Systems,IPS),其中證明者(Prover)和驗證者(Verifier)通過多輪互動來證明某個語句的真實性。
綜上,Goldwasser等人總結的零知識證明的定義,是一種特殊的交互式證明,其中驗證者在驗證過程中不會獲得除語句真值外的任何額外信息;並且提出了三個基本特性包括:
完備性(completeness):如果論證是真實的,誠實的證明者可以說服誠實的驗證者這一事實;
可靠性(soundness):如果證明者不知道聲明內容,他只能以微不足道的概率欺騙驗證者;
零知識性(zero-knowledge):在證明過程完成後,驗證者只獲得"證明者擁有此知識"的信息,而無法獲得任何額外內容。
2. 零知識證明示例
爲更好理解零知識證明及其屬性,以下是一個驗證證明者是否擁有某些私密信息的示例,該示例分爲三個階段:設置、挑戰和響應。
第一步:設置(Setup)
在這一步,證明者的目標是創建一個證據,證明他知道某個祕密數字s,但又不直接顯示s。設祕密數字s;
選擇兩個大的質數p和q,計算它們的乘積n。設質數p和q,計算得到的n;
計算v=s^2 mod n,這裏,v作爲證明的一部分被發送給驗證者,但它不足以讓驗證者或任何旁觀者推斷出s;
隨機選擇一個整數r,計算x=r^2 mod n並發送給驗證者。這個值x用於後續的驗證過程,但同樣不暴露s。設隨機整數r,計算得到的x。
第二步:挑戰(Challenge)
驗證者隨機選擇一個位a(可以是0或1),然後發送給證明者。這個"挑戰"決定了證明者接下來需要採取的步驟。
第三步:響應(Response)
根據驗證者發出的a值,證明者進行響應:
如果a=0,證明者發送g=r(這裏r是他之前隨機選擇的數)。
如果a=1,證明者計算g=rs mod n並發送。設驗證者發送的隨機位a,根據a的值,證明者計算g;
最後,驗證者根據收到的g來驗證x是否等於g^2 mod n。如果等式成立,驗證者接受這個證明。當a=0時,驗證者計算x=g^2 mod n,右側驗證g^2 mod n; 當a=1時,驗證者計算x=g^2/v mod n,右側驗證(rs)^2/s^2 mod n。
這裏,我們看到驗證者計算得到的x=g^2 mod n說明證明者成功地通過了驗證過程,同時沒有泄露他的祕密數字s。在這裏,由於a只可以取0或1,僅有兩種可能性,證明者依靠運氣通過驗證的概率1/2(當a取0時)。但驗證者隨後再挑戰證明者k次,證明者不斷更換相關數字,提交給驗證者,且總能成功地通過驗證過程,這樣一來證明者依靠運氣通過驗證的概率(1/2)^k(無限趨近於0),證明者確實知道某個祕密數字s的結論便得到證明。這一例子證明了零知識證明系統的完整性、可靠性和零知識性。
二、非交互零知識證明
1. 背景
零知識證明(ZKP)在傳統概念中通常是交互式和在線的協議形式;例如,Sigma協議通常需要三到五輪交互才能完成認證。然而,在諸如即時交易或投票等場景中,往往沒有機會進行多輪交互,特別是在區塊鏈技術應用中,線下驗證功能顯得尤爲重要。
2. NIZK的提出
1988年,Blum、Feldman和Micali首次提出了非交互式零知識(NIZK)證明的概念,證明了在無需多輪交互的情況下,證明者(Prover)與驗證者(Verifier)仍可完成認證過程的可能性。這一突破使得即時交易、投票以及區塊鏈應用的實現變得可行。
他們提出非交互式零知識證明(NIZK)可以分爲三個階段:
設置階段使用計算函數,將安全參數轉換爲公共知識(證明者和驗證者均可獲取),通常編碼在一個共同參考字符串(CRS)中。這是計算證明並使用正確的參數和算法進行驗證的方式。
計算階段採用計算函數、輸入和證明密鑰,輸出計算結果和證明。
在驗證階段,通過驗證密鑰來驗證證明的有效性。
他們所提出的公共參考字符串(CRS)模型,即基於所有參與者共享一個字符串來實現NP問題的非交互式零知識證明。這種模型的運行依賴於CRS的可信生成,所有參與者必須能夠訪問相同的字符串。僅當CRS被正確且安全地生成時,依此模型實施的方案才能確保安全性。對於大量參與者而言,CRS的生成過程可能既復雜又耗時,因此盡管這類方案通常操作簡便且證明體積較小,其設置過程卻頗具挑戰。
隨後,NIZK技術經歷了迅猛發展,湧現了多種方法將交互式零知識證明轉化爲非交互式證明。這些方法在系統的構建