什麽是零知識證明?

新手Jan 04, 2024
本文提供了零知識證明(ZKP)的詳細證明。
什麽是零知識證明?

零知識證明是一種在不透露陳述本身的情況下證明陳述有效性的方法。 “證明者”是試圖證明某個主張的一方,而“驗證者”則負責驗證該主張。

零知識證明首次出現於 1985 年的一篇論文“交互式證明繫統的知識覆雜性

(在新選項卡中打開)

”它提供了當今廣泛使用的零知識證明的定義:

零知識協議是一種方法,通過該方法,一方(證明者)可以曏另一方(驗證者)證明某件事是真實的,除了該特定陳述是真實的事實之外,無需透露任何信息。

多年來,零知識證明已經得到改進,現在已用於多個現實世界的應用程序中。

爲什麽我們需要零知識證明?

零知識證明代錶了應用密碼學的突破,因爲它們承諾提高個人信息的安全性。考慮如何曏另一方(例如服務提供商)證明某項主張(例如“我是 X 國家的公民”)。您需要提供“證據”來支持您的主張,例如國民護照或駕駛執照。

但這種方法也存在問題,主要是缺乏隱私。與第三方服務共享的個人身份信息 (PII) 存儲在中央數據庫中,很容易受到黑客攻擊。隨著身份盜竊成爲一個關鍵問題,人們呼吁採用更多保護隱私的方式來共享敏感信息。

零知識證明通過消除揭示信息來證明主張有效性的需要來解決這個問題。零知識協議使用語句(稱爲“見證人”)作爲輸入來生成其有效性的簡潔證明。該證明爲陳述的真實性提供了強有力的保證,而無需暴露創建陳述時使用的信息。

回到我們之前的例子,證明您的公民身份所需的唯一證據是零知識證明。驗證者隻需檢查證明的某些屬性是否成立,即可確信底層陳述也成立。

零知識證明如何髮揮作用?

零知識證明允許您證明陳述的真實性,而無需共享陳述的內容或透露您如何髮現真相。爲了實現這一點,零知識協議依賴於將一些數據作爲輸入併返回“真”或“假”作爲輸出的算法。

零知識協議必鬚滿足以下標準:

  1. 完整性:如果輸入有效,零知識協議始終返回“true”。因此,如果底層陳述是真實的,併且證明者和驗證者誠實行事,則證明可以被接受。
  2. 健全性:如果輸入無效,理論上不可能欺騙零知識協議返回“true”。因此,説謊的證明者不能欺騙誠實的驗證者相信無效的陳述是有效的(除非概率很小)。
  3. 零知識:除了聲明的有效性或虛假性之外,驗證者對聲明一無所知(他們對該聲明“零知識”)。此要求還阻止驗證者從證明中得出原始輸入(語句的內容)。

在基本形式中,零知識證明由三個要素組成:見證人、挑戰,以及響應。

  • 見證人:通過零知識證明,證明者想要證明某些隱藏信息的知識。秘密信息是證明的“證人”,證明者對證人的假設知識建立了一繫列問題,這些問題隻能由了解該信息的一方來回答。因此,證明者通過隨機選擇一個問題、計算答案併將其髮送給驗證者來開始證明過程。
  • 挑戰:驗證者從集合中隨機選擇另一個問題併要求證明者回答。
  • 響應:證明者接受問題,計算答案,併將其返回給驗證者。證明者的響應允許驗證者檢查前者是否真的可以接觸到證人。爲了確保證明者不會盲目猜測併偶然穫得正確答案,驗證者會選擇更多問題來提出。通過多次重覆這種交互,證明者僞造證人知識的可能性顯著下降,直到驗證者滿意爲止。

上麵描述了“交互式零知識證明”的結構。早期的零知識協議使用交互式證明,驗證聲明的有效性需要證明者和驗證者之間的來回通信。

Jean-Jacques Quisquater 著名的阿裡巴巴洞穴故事是説明交互式證明工作原理的一個很好的例子阿裡巴巴洞穴故事

(在新選項卡中打開)

。在故事中,佩吉(證明者)想要曏維剋多(驗證者)證明她知道打開魔法門的秘密短語,但又不透露該短語。

非交互式零知識證明

雖然具有革命性,但交互式證明的用處有限,因爲它需要兩方隨時待命併反覆互動。即使驗證者確信證明者的誠實性,該證明也無法用於獨立驗證(計算新證明需要證明者和驗證者之間的一組新消息)。

爲了解決這個問題,Manuel Blum、Paul Feldman 和 Silvio Micali 提出了第一個非交互式零知識證明

(在新選項卡中打開)

其中證明者和驗證者有一個共享密鑰。這允許證明者證明他們對某些信息(即證人)的了解,而無需提供信息本身。

與交互式證明不衕,非交互式證明隻需要參與者(證明者和驗證者)之間進行一輪通信。證明者將秘密信息傳遞給特殊算法來計算零知識證明。該證明被髮送給驗證者,驗證者使用另一種算法檢查證明者是否知道秘密信息。

非交互式證明減少了證明者和驗證者之間的通信,使 ZK 證明更加高效。此外,一旦生成證明,其他任何人(有權訪問共享密鑰和驗證算法)都可以對其進行驗證。

非交互式證明代錶了零知識技術的突破,併促進了當今使用的證明繫統的髮展。我們在下麵討論這些證明類型:

零知識證明的類型

ZK-SNARK

ZK-SNARK 是 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge 的縮寫。 ZK-SNARK協議具有以下特點:

  • 零知識:驗證者可以在不了解該語句的任何其他信息的情況下驗證該語句的完整性。驗證者對該陳述唯一的了解是它是真是假。
  • 簡潔:零知識證明比見證人小,可以快速驗證。
  • 非交互式:證明是“非交互式”的,因爲證明者和驗證者僅交互一次,這與需要多輪通信的交互式證明不衕。
  • 論據:證明滿足“健全性”要求,因此作弊的可能性極低。
  • (Of) Knowledge:如果不訪問秘密信息(見證人),則無法構建零知識證明。對於沒有見證人的證明者來説,計算有效的零知識證明即使不是不可能,也是很睏難的。

前麵提到的“共享密鑰”是指證明者和驗證者衕意在生成和驗證證明時使用的公共參數。生成公共參數(統稱爲公共引用字符串 (CRS))是一項敏感操作,因爲它對於協議的安全性非常重要。如果用於生成 CRS 的熵(隨機性)落入不誠實的證明者手中,他們就可以計算出錯誤的證明。

多方計算(MPC)

(在新選項卡中打開)

是一種降低生成公共參數風險的方法。多方參與可信設置儀式

(在新選項卡中打開)

,其中每個人貢獻一些隨機值來生成 CRS。隻要誠實的一方銷毀了他們的那部分熵,ZK-SNARK 協議就可以保持計算的健全性。

可信設置要求用戶信任參數生成的參與者。然而,ZK-STARK 的開髮使得證明協議能夠在不可信的設置下工作。

ZK-STARK

ZK-STARK 是零知識可擴展透明知識論證的縮寫。 ZK-STARK 與 ZK-SNARK 類似,不衕之處在於:

  • 可擴展:當見證人規模較大時,ZK-STARK 在生成和驗證證明方麵比 ZK-SNARK 更快。使用 STARK 證明,證明者和驗證者時間僅隨著見證者的增長而略有增加(SNARK 證明者和驗證者時間隨見證者規模線性增加)。
  • 透明:ZK-STARK 依靠可公開驗證的隨機性來生成用於證明和驗證的公共參數,而不是可信設置。因此,與 ZK-SNARK 相比,它們更加透明。

ZK-STARK 産生的證明比 ZK-SNARK 更大,這意味著它們通常具有更高的驗證開銷。然而,在某些情況下(例如證明大型數據集),ZK-STARK 可能比 ZK-SNARK 更具成本效益。

零知識證明的用例

匿名付款

信用卡支付通常對多方可見,包括支付提供商、銀行和其他相關方(例如政府當局)。雖然金融監控有利於識別非法活動,但它也損害了普通公民的隱私。

加密貨幣旨在爲用戶提供一種進行私人點對點交易的方式。但大多數加密貨幣交易在公共區塊鏈上公開可見。用戶身份通常是假名的,併且要麽故意與現實世界的身份相關聯(例如,通過在 Twitter 或 GitHub 個人資料上包含 ETH 地址),要麽可以使用基本的鏈上和鏈下數據分析與現實世界的身份相關聯。

有專門爲完全匿名交易而設計的“隱私幣”。以隱私爲中心的區塊鏈,例如 Zcash 和 Monero,屏蔽交易詳細信息,包括髮送者/接收者地址、資産類型、數量和交易時間錶。

通過將零知識技術融入協議中,註重隱私的區塊鏈網絡允許節點無需訪問交易數據即可驗證交易。

零知識證明也被應用於公共區塊鏈上的匿名交易。一個例子是 Tornado Cash,這是一種去中心化的非托管服務,允許用戶在以太坊上進行私人交易。 Tornado Cash 使用零知識證明來混淆交易細節併保證財務隱私。不幸的是,因爲這些都是“選擇加入”的。它們與非法活動相關的隱私工具。爲了剋服這個問題,隱私最終必鬚成爲公共區塊鏈的默認設置。

身份保護

當前的身份管理繫統使個人信息麵臨風險。零知識證明可以幫助個人驗證身份,衕時保護敏感細節。

零知識證明在去中心化身份的背景下特別有用。去中心化身份(也稱爲“自我主權身份”)使個人能夠控製對個人標識符的訪問。在不透露稅號或護照詳細信息的情況下證明您的公民身份是零知識技術如何實現去中心化身份的一個很好的例子。

驗證

使用在線服務需要證明您的身份和訪問這些平颱的權利。這通常需要提供個人信息,例如姓名、電子郵件地址、出生日期等。您可能還需要記住長密碼,否則可能會失去訪問權限。

然而,零知識證明可以簡化平颱和用戶的身份驗證。一旦使用公共輸入(例如,證明用戶平颱成員身份的數據)和私有輸入(例如,用戶的詳細信息)生成了 ZK 證明,用戶就可以簡單地將其呈現給當他們需要訪問服務時驗證他們的身份。這改善了用戶體驗,併使組織無需存儲大量用戶信息。

可驗證的計算

可驗證計算是零知識技術用於改進區塊鏈設計的另一個應用。可驗證計算允許我們將計算外包給另一個實體,衕時保持可驗證的結果。該實體提交結果以及驗證程序是否正確執行的證據。

可驗證的計算對於提高區塊鏈的處理速度而不降低安全性至關重要。理解這一點需要了解擴展以太坊所提出的解決方案的差異。

鏈上擴容解決方案,例如分片,需要對區塊鏈基礎層進行大量修改。然而,這種方法非常覆雜,實施中的錯誤可能會破壞以太坊的安全模型。

鏈下擴容解決方案不需要重新設計核心以太坊協議。相反,他們依靠外包計算模型來提高以太坊基礎層的吞吐量。

下麵是它在實踐中的運作方式:

  • 以太坊不是處理每筆交易,而是將執行任務轉移到單獨的鏈上。
  • 處理交易後,另一條鏈返回結果以應用於以太坊的狀態。

這樣做的好處是,以太坊不需要執行任何執行,隻需將外包計算的結果應用到其狀態即可。這減少了網絡擁塞,併提高了交易速度(鏈下協議優化以加快執行速度)。

鏈需要一種方法來驗證鏈下交易而不重新執行它們,否則鏈下執行的價值就會丟失。

這就是可驗證計算髮揮作用的地方。當節點在以太坊之外執行交易時,它會提交零知識證明來證明鏈下執行的正確性。這個證明(稱爲

有效性證明)保證交易有效,允許以太坊將結果應用到其狀態,而無需等待任何人對其提出異議。

零知識彙總validiums 是兩種鏈外擴容解決方案,它們使用有效性證明來提供安全的可擴展性。這些協議在鏈下執行數千筆交易,併提交證據以在以太坊上進行驗證。一旦證明得到驗證,這些結果就可以立即應用,從而使以太坊能夠在不增加基礎層計算的情況下處理更多交易。

減少鏈上投票中的賄賂和串通行爲

區塊鏈投票方案具有許多有利的特徵:它們完全可審計、不受攻擊、不受審查、不受地域限製。但即使是鏈上投票方案也無法避免串通問題。

共謀被定義爲“通過欺騙、欺騙和誤導他人來協調限製公開競爭”,其形式可能是惡意行爲者通過行賄影響投票。例如,Alice 可能會收到 Bob 的賄賂,以便在選票上投票給 option B,即使她更喜歡 option A。

賄賂和共謀限製了任何使用投票作爲信號機製的流程的有效性(特別是在用戶可以證明他們如何投票的情況下)。這可能會産生重大後果,特別是在投票負責分配稀缺資源的情況下。

例如,二次融資機製

(在新選項卡中打開)

依靠捐贈來衡量對不衕公益項目中某些選項的偏好。每次捐款都算作一次“投票”。對於特定項目,穫得更多選票的項目可以從匹配池中穫得更多資金。

使用鏈上投票使得二次融資容易受到串通:區塊鏈交易是公開的,因此行賄者可以檢查受賄者的鏈上活動以了解他們如何“投票”。這樣,二次方融資就不再是根據社區總體偏好分配資金的有效手段。

幸運的是,諸如 MACI(最低反共謀基礎設施)之類的新解決方案正在使用零知識證明來使鏈上投票(例如二次融資機製)能夠抵禦賄賂和共謀。 MACI 是一組智能合約和腳本,允許中央管理員(稱爲“協調員”)彙總投票和統計結果而無需透露的具體細節每個人如何投票。即便如此,仍然可以驗證計票是否正確,或者確認特定個人參與了投票輪。

MACI 如何使用零知識證明?

首先,協調員在以太坊上部署 MACI 合約,之後用戶可以註冊投票(通過在智能合約中註冊他們的公鑰)。用戶通過將使用其公鑰加密的消息髮送到智能合約來進行投票(有效的投票必鬚使用與用戶身份相關的最新公鑰以及其他標準進行簽名)。之後,協調員在投票期結束後處理所有消息,統計選票,併在鏈上驗證結果。

在MACI中,零知識證明用於確保計算的正確性,使協調者不可能錯誤地處理投票和統計結果。這是通過要求協調者生成 ZK-SNARK 證明來實現的,驗證 a) 所有消息均已正確處理 b) 最終結果對應於所有有效消息的總和有效 投票。

因此,即使不共享每個用戶的投票細目(通常是這種情況),MACI 也能保證統計過程中計算結果的完整性。此功能對於降低基本共謀方案的有效性非常有用。我們可以通過使用之前 Bob 賄賂 Alice 來投票給某個選項的示例來探索這種可能性:

  • 愛麗絲通過將公鑰髮送到智能合約來註冊投票。
  • Alice 衕意投票option B,以換取 Bob 的賄賂。
  • Alice 投票給option B。
  • Alice 秘密髮送加密交易來更改與她的身份相關的公鑰。
  • Alice 使用新的公鑰曏智能合約髮送另一條(加密的)消息來投票option A。
  • Alice 曏 Bob 展示了一筆交易,顯示她投票給了option B(該交易無效,因爲公鑰不再與繫統中 Alice 的身份相關聯)
  • 在處理消息時,協調器會跳過 Alice 對 option B 的投票,隻計算對 option A 的投票。因此,鮑勃與愛麗絲勾結併操縱鏈上投票的嘗試失敗了。

使用 MACI 確實需要相信協調員不會與賄賂者勾結或試圖賄賂選民本身。協調員可以解密用戶消息(創建證明所必需的),以便他們可以準確驗證每個人的投票方式。

但在協調員保持誠實的情況下,MACI 是保證鏈上投票神聖性的強大工具。這解釋了它在二次融資應用程序中的受歡迎程度(例如,clr.fund

(在新選項卡中打開)

)這在很大程度上依賴於每個人投票選擇的完整性。

了解有關 MACI 的更多信息

(在新選項卡中打開)

使用零知識證明的缺點

硬件成本

生成零知識證明涉及非常覆雜的計算,最好在專用機器上執行。由於這些機器價格昂貴,通常超出了普通人的能力範圍。此外,想要使用零知識技術的應用程序必鬚考慮硬件成本,這可能會增加最終用戶的成本。

證明驗證費用

驗證證明還需要覆雜的計算,併增加了在應用程序中實施零知識技術的成本。這種成本在證明計算的背景下尤其重要。例如,ZK-rollups 需要支付約 500,000 Gas 來驗證以太坊上的單個 ZK-SNARK 證明,而 ZK-STARK 則需要更高的費用。

信任假設

在 ZK-SNARK 中,公共參考字符串(公共參數)生成一次,可供希望參與零知識協議的各方重覆使用。公共參數是通過可信設置儀式創建的,其中參與者被認爲是誠實的。

但用戶實際上沒有辦法評估參與者的誠實度,用戶必鬚相信開髮者的話。 ZK-STARK 不受信任假設的影響,因爲生成字符串時使用的隨機性是可公開驗證的。與此衕時,研究人員正在研究 ZK-SNARK 的非可信設置,以提高證明機製的安全性。

量子計算威脅

ZK-SNARK 使用橢圓曲線密碼學

電子CDSA) 用於加密。雖然 ECDSA 算法目前是安全的,但量子計算機的髮展將來可能會打破其安全模型。

ZK-STARK 被認爲不受量子計算的威脅,因爲它使用抗碰撞哈希進行加密。與橢圓曲線加密中使用的公私密鑰對不衕,抗碰撞散列對於量子計算算法來説更難破解。

聲明:

  1. 本文轉載自[Ethereum],著作權歸屬原作者[Ethereum],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
ابدأ التداول الآن
اشترك وتداول لتحصل على جوائز ذهبية بقيمة
100 دولار أمريكي
و
5500 دولارًا أمريكيًا
لتجربة الإدارة المالية الذهبية!
إنشاء حساب الآن