零知識證明在區塊鏈中找到了“新生命”
譯文?譯者 | 李睿
審校 | 孫淑娟
零知識證明(ZKP)也稱為ZKP協議,試圖以最小的信息交換量在雙方之間建立信任。在密碼學中,它旨在限制身份驗證活動期間的信息傳輸。ZKP的創始人明確研究了計算機證明中信息或知識的移動。ZKP是當時引入新的研究領域的一個重大進步。如今在Web3和區塊鏈的背景下,將再次探討ZKP的含義。
1.證明系統中的知識復雜度
ZKP的更準確名稱可能是知識感知證明。提出這一觀點的第一篇論文出現在20世紀80年代末發表的幾篇變體論文中。該論文提到了與證明系統相關的知識復雜性,并提出了一個問題:當一方試圖向另一方證明一個陳述時,必須傳遞的最低信息是什么?
要記住的概念是,人們正在嘗試理解和控制信息流,同時支持有效的驗證。
2.ZKPvs.非對稱加密
ZKP的想法來自上世紀70年代和上世紀80年代探索密碼學新概念領域的時代。這與給人們帶來非對稱加密的環境相同。一些ZKP協議按照Diffie-Hellman密鑰交換或RSA加密算法使用素因子分解作為單向(或陷阱門)函數。
對于非對稱加密,主要目標是雙方達成共享秘密。在ZKP中,其目標是在不透露無關信息的情況下提出索賠。在非對稱加密中,雙方共享一個秘密數字;在ZKP中,證明者在不泄露該數字的情況下證明他們實際上擁有一個秘密數字。
而ZKP在區塊鏈中得到更多應用并不足為奇。
3.區塊鏈和Web3中的ZKP
在不公開基礎證明數據的情況下證明陳述或聲明的能力具有令人興奮的用途。一方面,很可能將ZKP與現有的身份驗證應用程序結合使用。如果可以在不透露密碼情況下證明擁有密碼,那么就消除了所有的攻擊向量。
不過,使用ZKP進行密碼驗證只是一個小步驟,它并沒有真正改變人們如今熟悉的基本模型。要使這種身份驗證機制起到作用,仍然需要將密碼傳輸到與之交互的服務的中央服務器并存儲在那里。更具革命性的方法需要考慮如果將ZKP集成到應用程序安全系統的設計中會發生什么。在這種情況下,開始看到現有身份驗證的替代方案。如果政府部門和銀行機構要承擔簽發加密密鑰以驗證重要聲明的角色,用戶可以使用ZKP協議來驗證聲明。
作為一個高級示例,如果政府部門將密鑰作為護照的一部分,則ZKP可用于證明公民身份,而無需透露護照號碼或公民姓名。通過采用哈希算法,公民可以使用ZKP來證明年齡等具體要求。
這種功能與Web3非常吻合,因為區塊鏈用戶已經持有加密密鑰,并且知道如何使用它們。此外,ZKP可以允許在區塊鏈去中心化身份的背景下進行身份和其他數據認證,無論是與現有的Web2應用程序在一起使用還是分開。讓用戶能夠通過私鑰顯示其銀行對賬單或信用評分的零知識證據,這將在金融鏈上實現新的金融功能。
歸根結底,ZKP力求最大程度地減少與當前身份驗證模型相關的缺點:失去對用戶數據的控制、用戶數據暴露于黑客攻擊以及用戶數據的非自愿貨幣化。
4.ZKP的工作原理
在ZKP系統中,一方(證明者)向另一方(驗證者)證明證明者擁有信息,在理想情況下除了這一事實之外不透露任何信息。有關ZKP的原始論文的作者使用了哈密頓圖的示例,這是一種訪問連通圖中每個節點的圖。
確定證明者擁有這樣一個圖的一種簡單方法是傳輸圖表本身。但這種方法可能泄漏大量信息,超出了證明者持有圖表的事實。用ZKP創始人的話來說,它比單比特哈密頓量/非哈密頓數包含更多的信息。
可以想象這樣一個場景,驗證者改為重復查詢圖中特定線和點的信息,而證明者做出響應。如果證明者提供了足夠多的有效響應,那么他們很可能確實持有哈密頓圖。而圖表本身永遠不會被傳輸。
5.ZKP思想的實驗
在公鑰加密中,參與者傳統上被稱為Alice、Bob和Eve。在ZKP中,證明者稱為Peggy,驗證者稱為Victor。
假設Peggy有一個帶有兩個不同按鈕的房間。她邀請Victor確認這兩個按鈕如何工作。證明她可以知道何時按下了一個按鈕或另一個按鈕。為了以“零知識”的方式證明這一說法,Peggy與Victor分別在不同的房間,而Peggy看不到Victor在做什么,但她可以分辨出何時按下了不同的按鈕,并且可以將她看到的結果傳達給Victor。也許Peggy可以看到根據按下的按鈕發出不同顏色的燈光。圖1顯示了卡通形式的布局。
圖1.Peggy的零知識房間和按鈕
Victor第一次按下按鈕時,Peggy提醒Victor有一個按鈕被按下。此時,Victor可以假設Peggy猜對了,或者她真的能夠看到其效果。任何一種可能性都同樣正確。
為了增加對Peggy作弊的幾率,兩人可以進行多輪比賽。Victor可以每次按下相同的按鈕或不同的按鈕。如果她猜到了,Peggy的騙局很快就會被揭穿。每一輪正確猜測的概率都會變小。該過程可以重復多輪,以達到可接受的概率。
這個場景向Victor證明了Peggy知道什么時候按下按鈕以及按下按鈕的效果,——這就是Victor需要知道的全部內容。該實驗沒有揭示按鈕的效果或Peggy監控它們的原理。它向Victor展示了按下這些按鈕具有不同的效果,但他不需要知道這些效果是什么。
6.證明和概率
這里的關鍵是,Victor可以控制按下哪個按鈕,但他不知道按下之后的效果。他依賴Peggy來完成反饋循環。與此同時,他保留了以很高的概率來判斷Peggy是否能夠看到按下哪個按鈕的能力。這就是為什么說ZKP是概率證明而不是確定性證明的原因。
關于Peggy和Victor的實驗場景,還有一點需要注意的是,這就是所謂的交互式證明。在這個模型中,驗證者可以隨意詢問證明者。這與非交互式證明形成對比,在非交互式證明中,證明者自己進行驗證,其過程并不在與驗證者交互的情況下傳輸證明。任何一種風格都可以使用ZKP應用。
7.進一步使用ZKP
ZKP是一個不斷擴展的領域,它為開發人員探索令人興奮和不確定的領域創造了條件。最常見的通用協議是零知識簡潔非交互式知識論證(zk-SNARK)。
以下是進一步研究ZKP的一些建議:
- 有關ZKP在區塊鏈中的實際應用,可以查看Mina項目。
- ZKP在以優化性能為核心的以太坊2級中也發揮著重要作用。對于空間中的特定項目,需要參考Polygon的Nightfall項目。
- 對于工作代碼和庫,可以參考Zilch項目。
- 有關主流公司如何在這一領域開展工作,可以參考Auth0與MATTR項目的合作。
了解ZKP協議的一個很好的方法仍然是閱讀原始ZKP白皮書。這可以使人們了解實際的精神,在設想如何將計算時間的因素引入證明系統,以限制攻擊者在NP時間內欺騙證明的能力。一切都源于此,而實施代碼和基礎設施以實現這些想法的承諾就是現在所處的位置。
原文鏈接:https://www.infoworld.com/article/3668549/zero-knowledge-proof-finds-new-life-in-the-blockchain.html