WEEX 唯客博客, 撰文:@renkingeth 摘要 零知識證明(ZKP)在區塊鏈領域被廣泛視為是自分散式賬本技術以來最重要的科技創新之一,同時也是風險投資的重點領域。本文對零知識證明技術近四十年的歷史文獻和最新研究都做了系統的綜述。 首先,介紹了零知識證明的基本概念和歷史背景。然後,重點分析了基於電路的零知識證明技術,包括 zkSNARK、Ben-Sasson、Pinocchio、Bulletproofs 和 Ligero 等模型的設計、應用和優化方法。在計算環境領域,本文介紹了 ZKVM 和 ZKEVM,探討了其如何提升交易處理能力、保護隱私和提高驗證效率。文章還介紹了零知識 Rollup(ZK Rollup)作為 Layer 2 擴展方案的工作機制和優化方法,以及硬體加速、混合解決方案和專用 ZK EVM 的最新進展。 最後,本文展望了 ZKCoprocessor、ZKML、ZKThreads、ZK Sharding 和 ZK StateChannels 等新興概念,並探討了它們在區塊鏈擴展性、互操作性和隱私保護方面的潛力。 通過分析這些最新技術和發展趨勢,本文為理解和應用零知識證明技術提供了全面視角,展示了其在提升區塊鏈系統效率和安全性方面的巨大潛力,為未來的投資決策提供了重要參考。 前言 在如今,互聯網正在進入 Web3 時代的進程中,區塊鏈應用(DApps)的發展迅速,幾乎每天都有新的應用湧現。近幾年,區塊鏈平台每天都承載著數百萬用戶的活動,處理著數十億筆交易。這些交易產生的大量數據通常包括用戶身份、交易金額、賬戶地址和賬戶餘額等敏感個人信息。鑒於區塊鏈的開放性和透明性特點,這些存儲的數據對所有人都是開放的,因此引發了多種安全與隱私問題。 目前,有幾種加密技術可以應對這些挑戰, 包括同態加密、環簽名、安全多方計算和零知識證明。同態加密允許在不解密密文的情況下執行運算,有助於保護賬戶餘額和交易金額的安全,但無法保護賬戶地址的安全。環簽名提供了一種特殊的數字簽名形式,能夠隱藏簽名者的身份,從而保護賬戶地址的安全,但對賬戶餘額和交易金額的保護則無能為力。安全多方計算允許在多個參與者之間分配計算任務,而無需任何參與者知曉其他參與者的數據,有效保護了賬戶餘額和交易金額的安全,但同樣不能保護賬戶地址的安全。此外,同態加密、環簽名和安全多方計算無法在不泄露交易金額、賬戶地址和賬戶餘額的情況下用於驗證區塊鏈環境中證明者是否擁有足夠的交易金額(Sun et al.,2021)。 零知識證明是一種更全面的解決方案,這種驗證協議允許在不透露任何中介數據的情況下驗證某些命題的正確性(Goldwasser,Micali&Rackoff,1985)。該協議不需要複雜的公鑰設施,其重複實施也不會為惡意用戶提供獲取額外有用信息的機會(Goldreich,2004)。通過 ZKP,驗證者能夠在不泄露任何私人交易數據的情況下,驗證證明者是否具有足夠的交易金額。驗證過程包括生成包含證明者聲稱的交易金額的證明,然後將該證明傳遞給驗證者,驗證者對證明進行預定義的計算,併產出最終的計算結果,從而得出是否接受證明者聲明的結論。如果證明者的聲明被接受,意味著他們擁有足夠的交易金額。上述驗證過程可以記錄在區塊鏈上,沒有任何偽造(Feige, Fiat& Shamir,1986)。 ZKP 這一特性使其在區塊鏈交易和加密貨幣應用中扮演核心角色,特別是在隱私保護和網路擴容方面,使得其不僅成為了學術研究的焦點,被廣泛認為是自分散式賬本技術——特別是比特幣——成功實施以來最重要的技術創新之一。同時也是行業應用和風險投資的重點賽道(Konstantopoulos,2022)。 由此,諸多基於 ZKP 的網路項目相繼湧現,如 ZkSync、StarkNet、Mina、Filecoin 和 Aleo 等。隨著這些項目的發展,關於 ZKP 的演算法創新層出不窮,據報道幾乎每周都有新演算法問世(Lavery, 2024;AdaPulse, 2024)。此外,與 ZKP 技術相關的硬體開發也在迅速進展,包括專為 ZKP 優化的晶元。例如,Ingonyama、Irreducible 和 Cysic 等項目已經完成了大規模的資金募集,這些發展不僅展示了 ZKP 技術的快速進步,也反映了從通用硬體向專用硬體如 GPU、FPGA 和 ASIC 的轉變( Ingonyama,2023;Burger,2022)。 這些進展表明,零知識證明技術不僅是密碼學領域的一個重要突破,也是實現更廣泛區塊鏈技術應用——尤其是在提高隱私保護和處理能力方面——的關鍵推動力(Zhou et al,2022)。 因此,我們決定系統地整理零知識證明(ZKP)的相關知識,以更好地輔助我們做出未來的投資決策。為此,我們綜合審閱了關於 ZKP 相關的核心學術論文(依據相關性和引用次數進行排序);同時,我們也詳細分析了該領域內領先的項目的資料和白皮書(根據其融資規模進行排序)。這些綜合性的資料搜集和分析為本文的撰寫提供了堅實的基礎。 一、零知識證明基礎知識 1.概述 1985 年,學者 Goldwasser、Micali 和 Rackoff 在論文《TheKnowledge Complexity of Interactive Proof-Systems》中首次提出了零知識證明(Zero-KnowledgeProof,ZKP)和互動式知識證(InteractiveZero-Knowledge,IZK)。該論文是零知識證明的奠基之作,定義了許多影響後續學術研究的概念。例如,知識的定義是「不可行計算(unfeasiblecomputation)的輸出」,即知識必須是一個輸出,且是一個不可行計算,意味著它不能是簡單的函數,而需是複雜的函數。不可行計算通常可以理解為是一個 NP 問題,即可以在多項式時間內驗證其解正確性的問題,多項式時間指的是演算法運行時間可以用輸入大小的多項式函數來表示。這是計算機科學中衡量演算法效率和可行性的重要標準。由於 NP 問題的求解過程複雜,因此被認為是不可行計算;但其驗證過程相對簡單,所以非常適合用於零知識證明驗證(Goldwasser,Micali & Rackoff,1985)。 NP 問題的一個經典例子是旅行商問題,其中要找到訪問一系列城市並返回起點的最短路徑。雖然找到最短路徑可能很困難,但給定一個路徑,驗證這條路徑是否是最短的相對容易。因為驗證一個具體路徑的總距離可以在多項式時間內完成。 Goldwasser 等人在其論文中引入了「知識複雜度」(knowledgecomplexity)這一概念,用以量化在互動式證明系統中,證明者向驗證者泄露的知識量。他們還提出了互動式證明系統(InteractiveProof Systems,IPS),其中證明者(Prover)和驗證者(Verifier)通過多輪互動來證明某個語句的真實性(Goldwasser,Micali & Rackoff,1985)。 綜上,Goldwasser 等人總結的零知識證明的定義,是一種特殊的互動式證明,其中驗證者在驗證過程中不會獲得除語句真值外的任何額外信息;並且提出了三個基本特性包括: 完備性(completeness):如果論證是真實的,誠實的證明者可以說服誠實的驗證者這一事實; 可靠性(soundness):如果證明者不知道聲明內容,他只能以微不足道的概率欺騙驗證者; 零知識性(zero-knowledge):在證明過程完成後,驗證者只獲得「證明者擁有此知識」的信息,而無法獲得任何額外內容(Goldwasser,Micali & Rackoff,1985)。 2.零知識證明示例 為更好理解零知識證明及其屬性,以下是一個驗證證明者是否擁有某些私密信息的示例,該示例分為三個階段:設置、挑戰和響應。 第一步:設置(Setup) 在這一步,證明者的目標是創建一個證據,證明他知道某個秘密數字 s,但又不直接顯示 s。設秘密數字; 選擇兩個大的質數 p 和 q,計算它們的乘積 。設質數 和 ,計算得到的; 計算,這裡,v 作為證明的一部分被發送給驗證者,但它不足以讓驗證者或任何旁觀者推斷出 s。; 隨機選擇一個整數 r,計算 併發送給驗證者。這個值 x 用於後續的驗證過程,但同樣不暴露 s。設隨機整數,計算得到的 。 第二步:挑戰(Challenge) 驗證者隨機選擇一個位 a(可以是 0 或 1),然後發送給證明者。這個「挑戰」決定了證明者接下來需要採取的步驟。 第三步:響應(Response) 根據驗證者發出的 a 值,證明者進行響應: 如果,證明者發送 (這裡 r 是他之前隨機選擇的數)。 如果 ,證明者計算 併發送。設驗證者發送的隨機位,根據 a 的值,證明者計算 ; 最後,驗證者根據收到的 g 來驗證 是否等於 。如果等式成立,驗證者接受這個證明。當 時,驗證者計算驗證者計算 ,右側驗證 ; 當 時,驗證者計算驗證者計算 ,右側驗證 。 這裡,我們看到驗證者計算得到的 說明證明者成功地通過了驗證過程,同時沒有泄露他的秘密數字 s。在這裡,由於 a 只可以取 0 或 1,僅有兩種可能性,證明者依靠運氣通過驗證的概率(當 a 取 0 時)。但驗證者隨後再挑戰證明者次,證明者不斷更換相關數字,提交給驗證者,且總能成功地通過驗證過程,這樣一來證明者依靠運氣通過驗證的概率 (無限趨近於 0),證明者確實知道某個秘密數字 s的結論便得到證明。這一例子證明了零知識證明系統的完整性、可靠性和零知識性( Fiat& Shamir,1986)。 二、非交互零知識證明 1.背景 零知識證明(ZKP)在傳統概念中通常是互動式和在線的協議形式;例如,Sigma 協議通常需要三到五輪交互才能完成認證( Fiat& Shamir,1986)。然而,在諸如即時交易或投票等場景中,往往沒有機會進行多輪交互,特別是在區塊鏈技術應用中,線下驗證功能顯得尤為重要(Sun 等,2021)。 2.NIZK 的提出 1988 年,Blum、Feldman 和 Micali 首次提出了非互動式零知識(NIZK)證明的概念,證明了在無需多輪交互的情況下,證明者(Prover)與驗證者(Verifier)仍可完成認證過程的可能性 。這一突破使得即時交易、投票以及區塊鏈應用的實現變得可行 (Blum,Feldman & Micali, 1988)。 他們提出非互動式零知識證明(NIZK)可以分為三個階段: 設置 計算 驗證 設置階段使用計算函數,將安全參數轉換為公共知識(證明者和驗證者均可獲取),通常編碼在一個共同參考字元串(CRS)中。這是計算證明並使用正確的參數和演算法進行驗證的方式。 計算階段採用計算函數、輸入和證明密鑰,輸出計算結果和證明。 在驗證階段,通過驗證密鑰來驗證證明的有效性。 他們所提出的公共參考字元串(CRS)模型,即基於所有參與者共享一個字元串來實現 NP 問題的非互動式零知識證明。這種模型的運行依賴於 CRS 的可信生成,所有參與者必須能夠訪問相同的字元串。僅當 CRS 被正確且安全地生成時,依此模型實施的方案才能確保安全性。對於大量參與者而言,CRS 的生成過程可能既複雜又耗時,因此儘管這類方案通常操作簡便且證明體積較小,其設置過程卻頗具挑戰 (Blum,Feldman & Micali, 1988)。 隨後,NIZK 技術經歷了迅猛發展,湧現了多種方法將互動式零知識證明轉化為非互動式證明。這些方法在系統的構建或底層加密模型的假設上各有不同。 3.Fiat-Shamir 變換 Fiat-Shamir 變換,又叫 Fiat-ShamirHeurisitc(啟髮式),或者 Fiat-Shamir Paradigm(範式);由 Fiat 和 Shamir 在 1986 年提出,是一種能夠將互動式零知識證明轉換為非互動式的方法。該方法通過引入哈希函數來減少交互次數,並依託安全假設來保障證明的真實性及其難以偽造的特性。Fiat-Shamir 變換使用公共密碼學哈希函數替代部分隨機性和交互性,其輸出從某種程度上可以視作 CRS。儘管此協議在隨機預言機模型中被視為安全,但它依賴於哈希函數輸出對不同輸入的均勻隨機性和獨立性這一假設 (Fiat &Shamir, 1986)。Canetti、Goldreich 和 Halevi 在 2003 年的研究表明,雖然這種假設在理論模型中成立,但在實際應用中可能遇到挑戰,因此在使用時有失敗的風險 (Canetti,Goldreich & Halevi, 2003)。Micali 後來對此方法進行改進,將多輪交互壓縮為單輪,進一步簡化了交互流程 (Micali,1994)。 4. Jens Groth 及其研究 Jens Groth 的後續研究極大推動了零知識證明在密碼學和區塊鏈技術中的應用。2005 年,他、Ostrovsky 和 Sahai 三人一起共同提出了首個適用於任何 NP 語言的完美非交互零知識證明系統,即使面對動態 / 自適應對手也能保證通用組合安全(UC)。此外,他們利用數論複雜性假設,設計了一種簡潔高效的非交互零知識證明系統,顯著減少了 CRS 和證明的體積 (Groth& Sahai, 2005)。 2007 年,Groth、 Cramer 及 Damgård 開始將這些技術商業化,通過實驗驗證,他們的公鑰加密和簽名方案在效率和安全性方面均有顯著提升,儘管這些方案基於雙線性群的假設 (Groth & Sahai, 2007)。2011 年,Groth 進一步探索如何將全同態加密與非交互零知識證明結合,提出了一種減少通信開銷的方案,使得 NIZK 的體積與證明的見證大小保持一致(Groth, 2011)。在隨後的幾年裡,他與其他研究人員對基於配對的技術進行了深入研究,為大規模聲明提供了緊湊而高效的非互動式證明,儘管這些證明仍然沒有脫離雙線性群框架 (Bayer & Groth, 2012; Groth,Kohlweiss & Pintore, 2016; Bootle, Cerulli, Chaidos, Groth & Petit,2015; Groth, Ostrovsky & Sahai, 2012; Groth & Maller, 2017)。 5.其他研究 在特定應用場景中,特定驗證者的非互動式零知識證明表現出了其獨特的實用價值。例如,Cramer 和 Shoup 利用基於通用哈希函數的方法開發的公鑰加密方案,在 1998 年和 2002 年有效地抵禦了選擇性密文攻擊。此外,在密鑰註冊模型中,成功開發了一種新的非互動式零知識證明方法,適用於解決所有 NP 類問題,關鍵在於參與者需要註冊他們自己的密鑰以進行後續驗證(Cramer& Shou, 1998, 2002)。 此外,Damgård、Fazio 和 Nicolosi 在 2006 年提出了改進已有 Fiat-Shamir 變換的新方法,允許在無需直接交互的情況下進行非互動式零知識證明。在他們的方法中,驗證者首先需要註冊一個公鑰,準備後續加密操作。證明者使用加法同態加密技術在不知情的情況下對數據進行運算,生成包含答案的加密信息,作為對挑戰的響應。這個方法的安全性基於「複雜性槓桿假設」,認為對於具備超常計算資源的對手,某些被認為難解的計算問題可能被解決 (Damgård,Fazio &Nicolosi, 2006)。 Ventre 和 Visconti 在 2009 年提出的「弱可歸責可靠性」概念是對這一假設的替代,要求對手在提出虛假證明時,不僅需意識到其虛假性,還必須清楚自己如何成功製造這一偽證。這一要求顯著增加了欺騙的難度,因為對手必須明確自己的欺騙手段。在實際操作中,使用此概念的對手需要提供特定證明,其中包含針對指定驗證者的密文信息,無該驗證者私鑰難以完成證明,從而在對手試圖偽造證明時,通過檢測暴露其行為 (Ventre andVisconti, 2009)。 Unruh 變換是 2015 年提出的一種 Fiat-Shamir 轉換的替代方案。Fiat-Shamir 方法通常在面對量子計算時並不安全,並且對於某些協議可能產生不安全的方案(Unruh,2015)。相比之下,Unruh 變換在隨機預言機模型(ROM)中,為任何互動式協議提供了對抗量子對手的可證明安全的非互動式零知識證明(NIZK)。與 Fiat-Shamir 方法相似,Unruh 變換無需額外的設置步驟(Ambainis, Rosmanis & Unruh,2014)。 此外,Kalai 等人提出了一種基於私有信息檢索技術的任意決策問題論證系統。該方法採用多證明者互動式證明系統(MIP)模型,並通過 Aiello 等人的方法,將 MIP 轉換為一個論證系統 。這一構造在標準模型中運行,不需要依賴隨機預言機假設。這種方法被應用於一些基於「普通人證明(Proofs-for-Muggles)」的零知識論證中 (Kalai, Raz& Rothblum, 2014)。 在這些技術基礎上,非互動式零知識證明(NIZK)已被廣泛應用於各種需要高度安全和隱私保護的領域,如金融交易、電子投票和區塊鏈技術等。通過減少交互次數和優化證明生成與驗證過程,NIZK 不僅提高了系統的效率,還增強了安全性和隱私保護能力。在未來,隨著這些技術的進一步發展和完善,我們可以預期 NIZK 將在更多領域中發揮重要作用,為實現更加安全和高效的信息處理和傳輸提供堅實的技術基礎(Partala,Nguyen & Pirttikangas, 2020)。 三、基於電路的零知識證明 1.背景 在密碼學領域,尤其是在處理需要高度并行化和特定類型的計算任務(如大規模矩陣運算)時,傳統的圖靈機模型展現出一定的局限性。圖靈機模型需通過複雜的內存管理機制來模擬無限長的紙帶,並且不適合直接表達并行計算和流水線操作。相比之下,電路模型以其獨特的計算結構優勢,更適合於某些特定的密碼學處理任務 ( Chaidos,2017) 。本文將詳細探討基於電路的零知識證明系統(Zero-KnowledgeProof Systems Based on Circuit Models),這類系統特彆強調使用電路(通常是算術電路或布爾電路)來表達和驗證計算過程。 2.電路模型的基本概念與特點 在基於電路的計算模型中,電路被定義為一種特殊的計算模型,它能將任何計算過程轉換為一系列的門和連線,這些門執行特定的邏輯或算術操作。具體而言,電路模型主要分為兩大類: 算術電路:主要由加法和乘法門組成,用於處理有限域上的元素。算術電路適用於執行複雜的數值運算,廣泛應用於加密演算法和數值分析中。 邏輯電路:由與門、或門、非門等基本邏輯門構成,用於處理布爾運算。邏輯電路適合於執行簡單的判斷邏輯和二進位計算,常用於實現各類控制系統和簡單的數據處理任務 ( Chaidos,2017)。 3.零知識證明中的電路設計與應用 在零知識證明系統中,電路設計的過程涉及…