零知識證明,有時也稱為 zk 協議,是一種發生在證明者和驗證者之間的驗證方法。在零知識證明系統中,證明者能夠向驗證者證明他們擁有特定資訊(例如數學方程式的解)的知識,而無需透露資訊本身。現代密碼學家可以使用這些證明系統來提供更高級別的隱私和安全性。
零知識證明的概念首次描述於1985 年由Shafi Goldwasser 和Silvio Micali 發表的麻省理工學院論文中。他們證明,可以在不公開該數字或任何有關該數字的附加資訊的情況下證明該數字的某些屬性。本文也介紹了一個具有數學意義的發現,即證明者和驗證者之間的交互作用可以減少證明給定定理所需的資訊量。
zk 證明必須滿足兩個基本要求:完整性和健全性。完整性是指證明者以高度可能的準確性證明對相關資訊的了解的能力。為了證明是可靠的,驗證者必須能夠可靠地確定證明者是否真正擁有這些資訊。最後,為了真正實現零知識,證明必須實現完整性和可靠性,且相關資訊在證明者和驗證者之間不進行通訊。
零知識證明主要用於隱私和安全至關重要的應用程式。例如,身份驗證系統可以使用 zk 證明來驗證憑證或身份,而無需直接洩露它們。舉一個簡單的例子,它可以用來驗證一個人是否擁有電腦系統的密碼,而無需透露密碼。
零知識證明的一個突出的現實用例可以在加密貨幣和區塊鏈技術的世界中找到。使用一種稱為零知識簡潔非互動式知識論證 (zk-SNARK) 的證明,Zcash 等注重隱私的加密貨幣能夠為用戶提供更高隱私等級的區塊鏈交易。自 2017 年拜占庭更新以來,以太坊也正在使用 zk-SNARK 證明。