編譯:Cindy,SophonLabs

隨著計算機技術的不斷發展,我們可以輕鬆地在互聯網上存儲、傳輸和處理大量的個人和企業數據。然而在這個數字化時代,大家對數據隱私和安全的擔憂也越來越高。為了保護數據的隱私性,密碼學家們開發了許多技術,其中零知識證明(Zero-Knowledge Proof,ZKP)是其中一項核心技術。在本文中,我們將盤點細分零知識證明中的實現差異。

交互式與非交互式零知識證明

零知識證明的兩種主要類型是交互式和非交互式。交互式零知識證明和非交互式零知識證明都是證明者(prover)和驗證者(verifier)之間進行的過程,但它們在證明的交互流程上有所不同。

交互式零知識證明(IZKP) 要求證明者和驗證者進行來回對話,在對話中證明者對驗證者的查詢做出響應。這種互動可以親自進行,也可以通過互聯網等網絡進行。需要與驗證者進行多輪的交互,以便驗證者可以詢問有關所證明語句之外的附加信息。在每一輪中,證明者需要根據驗證者的詢問提供一個回答。

這種交互式證明方法對於某些複雜的問題可行,但可能會帶來時間和計算成本的問題,並需要所有參與者進行通信。另一方面,非交互式零知識證明(NIZKP) 不需要證明者和驗證者之間的任何交互。非交互式零知識證明是指證明者可以一次性地生成證明,並將它發送給驗證者,而不需要進行多輪的交互。與交互式證明相比,非交互式證明速度更快,需要的計算成本和通信量也更少。但是,它有時可能不是可行的方案,如需要涉及附加信息的證明,或需要證明一個非常複雜的語句時。相反,證明者創建了一個單一的、自包含的證明,驗證者可以在沒有進一步溝通的情況下獨立驗證。這比交互式證明更方便和高效,因為它不需要證明者和驗證者同時在線或交換多條消息。

實現這一目標的最經典方法之一是使用基於數字簽名的Fiat-Shamir 啟發式技術。交互式和非交互式零知識證明之間的主要區別之一是證明者和驗證者之間所需的信任級別。在交互式證明中,驗證者必須信任證明者遵守協議並對他們的查詢提供誠實的回應。另一方面,在非交互式證明中,驗證者根本不需要信任證明者,因為他們可以在不依賴證明者提供的任何信息的情況下獨立驗證證明。兩種類型的零知識證明之間的另一個區別是所需的計算複雜度級別。

交互式證明往往比非交互式證明計算量更大,因為它們需要證明者和驗證者交換多條消息並執行額外的計算。另一方面,非交互式證明只需要驗證者進行一次計算,從而使它們更加高效和可擴展。交互式和非交互式零知識證明各有利弊,給定場景的最佳選擇將取決於具體要求和約束。交互式證明可能更適用於證明者和驗證者同時在線且可以輕鬆溝通的情況。相比之下,非交互式證明可能更適用於證明者和驗證者不同時在線或證明者可信度不確定的情況。總之,交互式零知識證明和非交互式零知識證明通常是根據特定問題和應用場景來選擇的。

交互式零知識證明(IZKP)的局限性

交互式零知識證明是最早被研究和廣泛應用的零知識證明類型之一。在這種證明過程中,證明者和驗證者之間會進行多輪的交互。這些交互旨在允許驗證者向證明者詢問特定的信息,以驗證被證明的內容。這種交互性質使得交互式證明可以非常有效地解決複雜的問題。

一個簡單的例子是著名的“彩色圖問題”,它是關於如何在任何圖中著色的問題。如果證明者聲稱他能夠在任何圖中為每個節點著色,而且相鄰節點必須使用不同的顏色,那麼驗證者可以採取交互式零知識證明方法來判斷該聲稱是否正確。在證明過程中,證明者首先以某種方式著色圖形,接著驗證者選擇任意兩個節點並詢問證明者它們是否被用了同一種顏色。證明者需要回答這個問題,但不能透露為什麼他會如此選擇。這個過程會持續幾輪,驗證者可以檢查一些有關證明者如何著色圖形的隨機數據。如果證明者可靠地回答了問題,證明者就可以認為是正確的。交互式零知識證明(IZKP) 有幾個局限性,因此使它們更加昂貴和復雜。

IZKP 需要證明者和驗證者之間的交互,這可能是低效且耗時的。為了完成證明,證明者必須與驗證者來回發送多條消息。這可能會花費大量時間,尤其是在證明很複雜或涉及大量數據的情況下。當速度至關重要時,例如在高頻交易或實時決策中,這可能是個問題。

IZKP 不能很好地擴展。隨著被證明數據的增加,證明的複雜性也隨之增加,難以在合理的時間內完成證明。當需要證明大量數據時,例如在供應鏈管理或醫療保健中,這可能是一個問題。

IZKP 依賴於證明者和驗證者是誠實的並且不會試圖欺騙或操縱證明的假設。然而,這個假設並不總是有效的,證明者可以通過發送虛假消息或以某種方式操縱證明來試圖欺騙驗證者。這可能會損害證明的完整性並破壞其實用性。

IZKP 需要專門的加密技術,這可能難以實施並且需要高水平的技術專長。這可能會使非技術用戶使用IZKP 變得困難,並且可能會限制它們在某些情況下的採用。

總的來說,雖然IZKP 有可能提供強大的安全和隱私保證,但上述限制在歷史上阻礙了它們的廣泛使用。但它存在一些缺點。尤其是這種證明需要證明者和驗證者之間進行多輪的交互,這會帶來時間和計算成本的問題,並需要所有參與者進行通信。其次,有些應用程序可能需要處理的信息太複雜,以至於證明者和驗證者之間必須進行多輪交互才能得到完整的證明,這就使得交互式證明方法不太可行。一旦理解了交互式和非交互式ZKP 之間的區別,就該深入研究最流行的區塊鍊和加密行業實現— zkSNARKs。雖然zkSync 使用zkSNARKs,可以說是最流行的使用ZKPs 的L2,但緊隨其後的是Starkware 的zkSTARKs。讓我們了解這兩種實現方式的不同之處以及各自的優缺點。

zkSNARKs 與zkSTARKs

zkSNARKs 和zkSTARKs 都是零知識證明(ZKP) 系統,允許一方(證明者)向另一方(驗證者)證明陳述是真實的,而無需透露關於陳述本身的任何信息。 ZKP 有很多應用,包括區塊鏈上的隱私保護交易、安全的多方計算和匿名通信。它們都是用於保護數據交易和計算中的隱私,但它們的應用場景和技術方案有很大的不同。 zkSNARKs技術優勢在於高度壓縮的小證明,在保證計算安全性的同時,支持高度隱私保護和高效交易。 zkSTARKs技術優勢在於對複雜算法和大型數據處理性能方面的優化,可以實現更高級別的保護和證明。

zkSNARKs

zkSNARKs是一種使用高度壓縮的算法來提供非常小的證明的方法,這些證明可以用來證明滿足某些條件的任意計算。通過使用zkSNARKs技術,可以得到一個經過驗證的證明,證明所描述的計算的具體值和詳細步驟是未知的。 zkSNARKs的優點是證明大小非常小,只需要大約200字節的證明就可以驗證一個數百萬次計算後的結果,證明的計算成本也相對較低。同時,它們允許對基於密碼學的計算進行高效的隱私保護,特別是在需要驗證但不願意透露信息時非常有用。因此,zkSNARKs廣泛應用於無信任環境下的交易、加密貨幣、身份驗證和隱私保護領域。 zkSNARKs(零知識簡潔非交互式知識論證)最早由Eli Ben-Sasson、Alessandro Chiesa、Daniel Genkin、Eran Tromer 和Madars Virza 於2014 年在一篇論文中提出。它們基於“非-交互式證明”,這意味著證明者和驗證者在證明過程中不需要相互通信。這使得zkSNARKs 非常適合在區塊鏈中使用,在區塊鏈中,各方之間的通信受到達成共識的需要的限制。 zkSNARKs 使用公鑰和私鑰的組合來創建證明。證明者可以訪問私鑰,他們用它來生成他們希望做出的陳述的證明。驗證者可以訪問相應的公鑰,用於驗證證明。如果證明是有效的,驗證者可以確信該陳述是真實的,即使他們沒有關於該陳述本身的任何信息。

  • zkSNARKs 的優勢

zkSNARKs 的主要優勢之一是它們的效率。證明過程非常快,使得在區塊鍊等高吞吐量系統中使用zkSNARKs 成為可能。

  • zkSNARKs 的缺點

他們依賴於“可信設置”過程,其中一組參與者生成並銷毀一組公鑰和私鑰。如果未正確執行此過程,可能會危及系統的安全性。因此需要夠在可信的第三方中進行設置和參與、視數據的不同而具有不同的性能,並且它們的證明可能會被各種攻擊技術攻擊。

此外,zkSNARKs 不是透明的,這意味著如果不訪問私鑰就無法驗證證明的正確性。

zkSTARKs

zkSTARKs是另一種零知識證明技術,專門用於處理複雜算法和大規模數據。相比之下,zkSTARKs可以在不需要中間方的情況下提供更高的安全性,因為它們不需要可信的第三方進行參與和設置。 zkSTARKs的優點包括不需要選擇特定曲線進行計算,證明更加通用,並且具有良好的可擴展性和抗攻擊性。它們也沒有任何機密密鑰或公共參數,這使得它們非常適合用於無信任環境下進行的基於密鑰的計算。然而,zkSTARKs技術需要更高的計算成本和證明大小比zkSNARKs技術更大,因此在一些場景中可能不適合使用。

  • zkSTARKs 的優勢

zkSTARKs 的主要優勢之一是它們的透明度。使用zkSNARKs,無法在不訪問私鑰的情況下驗證證明的正確性。使用zkSTARKs,可以創建一個“驗證證明”,它允許任何人在不訪問任何秘密信息的情況下驗證證明的正確性。這使得zkSTARKs 成為信任必不可少的應用程序的更安全和透明的選擇。

zkSTARKs 的另一個優勢是它們的可擴展性。 zkSNARKs 依賴於資源密集型的複雜數學運算,隨著證明規模的增加,它們的效率會降低。

  • zkSTARK 的缺點

一個主要缺點是zkSTARKs 僅適用於證明某些類型聲明的真實性。特別是,它們只能用於證明以多項式表示的陳述的真實性,這限制了它們的適用性。

另一個缺點是zkSTARKs 不是完全非交互的,需要一個可信的設置階段,在這個階段生成一個公共參考字符串(CRS)。此CRS 必須保密且安全,zkSTARK 證明才能被視為有效。如果CRS 受到損害,那麼證明的安全性也會受到損害。

此外,zkSTARKs 尚未被廣泛使用或被充分理解,因此可能尚未發現潛在的漏洞。缺乏廣泛採用和理解也意味著缺乏使用zkSTARKs 的工具和資源,使得在實踐中實施和使用它們變得更加困難。

最後,與其他零知識證明系統相比,zkSTARKs 仍然相對較新且未經測試,這意味著它們的長期安全性和可靠性尚未得到充分了解。對於尋求經過驗證且可靠的方法來驗證聲明真實性的組織或個人而言,這種不確定性可能是一個缺點。

總結

雖然zkSTARKs 在效率和安全性方面提供了一些好處,但在決定是否使用它們時也有一些缺點需要考慮。這些缺點包括適用範圍有限、需要可信的設置階段、缺乏廣泛採用和理解,以及對其長期安全性和可靠性的不確定性。 zkSNARKs基於曲線上的折線算法,可以用於證明一些計算結果在不洩露計算輸入和密鑰的情況下是正確的。這種技術可以應用於區塊鏈、加密貨幣和密碼學等領域。

與zkSNARKs不同,zkSTARKs是在簡潔交互證明的框架下建立的,這意味著證明可以很容易地驗證,而不需要涉及證明者和驗證者之間的任何交互。因此,zkSTARKs在安全性和可擴展性方面都具有更大的優勢。

隨著技術的發展零知識證明技術將繼續發展和應用,在保護隱私和進行安全驗證等方面,零知識證明技術具有非常廣泛的應用前景。同時隨著協議的發展和優化,零知識證明技術的計算效率和證明大小等方面也將得到改善,從而進一步推動其在實際應用中的普及和應用。