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