區(qū)塊鏈上零知識(shí)證明的原理解析
掃描二維碼
隨時(shí)隨地手機(jī)看文章
零知識(shí)證明(Zero-Knowledge Proof或Zero-Knowledge Protocol)是一種基于概率的驗(yàn)證方法,它包括“類(lèi)似事實(shí)的陳述”和“關(guān)于個(gè)人知識(shí)的陳述”。 驗(yàn)證者基于一定的隨機(jī)性來(lái)詢問(wèn)證明者,如果證明者給出的答案正確,那么證明者將有很大概率會(huì)擁有其所聲稱的“知識(shí)”。零知識(shí)證明可以在不透露使用哪種貨幣的情況下驗(yàn)證你確實(shí)花了錢(qián)。
如今,零知識(shí)證明已經(jīng)被許多區(qū)塊鏈項(xiàng)目視為最好的隱私保護(hù)方案之一。能夠在不泄露數(shù)據(jù)的情況下,來(lái)證明數(shù)據(jù)的真實(shí)性。
在本文中,我們將會(huì)解釋神秘的零知識(shí)證明(Zero-Knowledge Proof)及其當(dāng)前的應(yīng)用。
為什么ZKP如此重要?
數(shù)據(jù)隱私是當(dāng)今社會(huì)最重要的課題之一。保護(hù)與個(gè)人身份有關(guān)的個(gè)人數(shù)據(jù)(出生日期、銀行證明、交易記錄、教育證書(shū))是至關(guān)重要的,并且其重要性將不斷提高。
在科技時(shí)代,我們正在創(chuàng)造著前所未有的海量數(shù)據(jù),而且我們也在不斷創(chuàng)造著關(guān)于自身的可供掠奪的數(shù)據(jù)。
像Google和Facebook這樣的大公司利用我們的數(shù)據(jù)成為了當(dāng)今世界的科技巨頭。然而,最近密碼學(xué)的突破和區(qū)塊鏈的興起為保護(hù)我們的數(shù)據(jù)和身份信息提供了新方法。零知識(shí)證明或許就是答案。
零知識(shí)證明的原理
零知識(shí)證明是麻省理工學(xué)院的研究人員在20世紀(jì)80年代提出的一種加密方案。零知識(shí)證明協(xié)議是指一方(證明方)可以證明某事對(duì)另一方(驗(yàn)證方)來(lái)說(shuō)是真實(shí)的。除了此特定陳述屬實(shí)之外,不會(huì)透露其他任何信息。
例如,當(dāng)前網(wǎng)站將用戶密碼的Hash散列值儲(chǔ)存在其web服務(wù)器中。為了驗(yàn)證客戶端是否真的知道密碼,大多數(shù)網(wǎng)站目前使用的方法是要求客戶端輸入密碼的hash散列,并將其與儲(chǔ)存的結(jié)果進(jìn)行比較。
零知識(shí)證明可以保護(hù)用戶賬號(hào)不被泄漏。如果可以實(shí)現(xiàn)零知識(shí)證明,那么客戶端密碼對(duì)任何人來(lái)說(shuō)都是未知的,但是仍然可以對(duì)客戶端登錄進(jìn)行身份驗(yàn)證。當(dāng)服務(wù)器受到攻擊時(shí),用戶的賬戶仍然是安全的,因?yàn)槠涿艽a并沒(méi)有被儲(chǔ)存在web服務(wù)器中。
零知識(shí)證明可以分為「交互式」和「非交互式」兩種。接下來(lái)我們就一一來(lái)看看這兩種證明方式有哪些不同。
交互式零知識(shí)證明
零知識(shí)證明協(xié)議的基礎(chǔ)是交互式的。它要求驗(yàn)證者不斷對(duì)證明者所擁有的“知識(shí)”進(jìn)行一系列提問(wèn)。
例如,如果有人聲稱自己知道數(shù)獨(dú)游戲的答案,零知識(shí)證明的過(guò)程就是驗(yàn)證者需要隨機(jī)指定要通過(guò)列、行或九個(gè)正方形進(jìn)行驗(yàn)證。
每輪測(cè)試不需要知道具體的答案,只需要檢測(cè)數(shù)字1~9是否包含在內(nèi)。只要驗(yàn)證的次數(shù)足夠多,就有理由相信證明者是知道數(shù)獨(dú)問(wèn)題答案的。
然而,這種簡(jiǎn)單的方法并不能使人相信證明者和驗(yàn)證者都是真實(shí)的。在數(shù)獨(dú)這種情況下,兩者可以提前串通,以便證明者可以在不知道答案的情況下依然通過(guò)驗(yàn)證。
如果他們想要說(shuō)服第三方,驗(yàn)證者還必須要證明驗(yàn)證過(guò)程是隨機(jī)的,并且他不會(huì)向證明者泄漏答案。
因此,第三方難以驗(yàn)證交互式零知識(shí)證明的結(jié)果,要向多人證明某些東西的話則需要額外的努力和成本才行。
非交互式零知識(shí)證明
顧名思義,非交互式零知識(shí)證明不需要交互過(guò)程,避免了串通的可能性,但是可能需要額外的機(jī)器和程序來(lái)確定實(shí)驗(yàn)的順序。
例如,在數(shù)獨(dú)這個(gè)例子中,由程序決定要驗(yàn)證的列或行。驗(yàn)證序列必須保密,否則驗(yàn)證者可能會(huì)在不知道真正“知識(shí)”的情況下通過(guò)驗(yàn)證。
區(qū)塊鏈上的零知識(shí)證明
比特幣和以太坊都是用公共地址來(lái)代替當(dāng)事方的真實(shí)身份,使交易部分匿名,公眾只知道發(fā)送和接收的地址以及交易的數(shù)量。然而,可以通過(guò)區(qū)塊鏈上可用的各種信息(如交互記錄)找出地址的真實(shí)身份,因此存在暴露隱私的可能。
零知識(shí)證明,可以在發(fā)送方、接收方和其他交易細(xì)節(jié)都保持匿名的情況下,保證交易有效。
ZCash可能是成功實(shí)現(xiàn)零知識(shí)證明的最著名的區(qū)塊鏈項(xiàng)目之一。Zcash實(shí)現(xiàn)了ZKP的修改版本,被稱為zk-SNARKS,代表Zero-Knowledge Succinct Non-Interactive Argument of Knowledge(零知識(shí)簡(jiǎn)明非交互式知識(shí)證明)
zk-SNARK技術(shù)減少了證明的大小以及驗(yàn)證所需的計(jì)算量。它能夠在不泄漏有關(guān)地址和相關(guān)有價(jià)值的任何關(guān)鍵信息的情況下證明有效交易條件得到了滿足。
zk-SNARK將需要驗(yàn)證的交易內(nèi)容轉(zhuǎn)換為兩個(gè)多項(xiàng)式乘積相等的證明,并結(jié)合同態(tài)加密和其他先進(jìn)技術(shù),在執(zhí)行交易驗(yàn)證時(shí)保護(hù)隱藏的交易金額。
其過(guò)程可以簡(jiǎn)單地描述為:
將代碼拆分為可驗(yàn)證的邏輯驗(yàn)證步驟,然后將這些步驟拆分為一個(gè)由加法、減法、乘法和除法組成的運(yùn)算電路;
進(jìn)行一系列變換,將待驗(yàn)證的代碼轉(zhuǎn)化為多項(xiàng)式方程,如t(x)h(x)= w(x)v(x);
為了使證明更加簡(jiǎn)潔,驗(yàn)證者預(yù)先隨機(jī)選擇幾個(gè)檢查點(diǎn)s 來(lái)檢查這些點(diǎn)的方程是否為真;
通過(guò)同態(tài)編碼/加密,驗(yàn)證者在計(jì)算方程式時(shí)不知道實(shí)際輸入值,但仍然可以進(jìn)行驗(yàn)證;
在方程的左邊和右邊,同時(shí)乘以一個(gè)不等于0的秘密值k。當(dāng)驗(yàn)證(t(s)h(s)k) 等于(w(s)v(s)k)時(shí),具體的t(s)、 h(s)、 w(s)和v(s) 是不可知的,從而達(dá)到保護(hù)信息的目的。
但zk-SNARK并不是完美的。當(dāng)前zk-SNARK實(shí)現(xiàn)中的一個(gè)缺陷,是需要提前設(shè)置參數(shù)。如果這些參數(shù)被泄漏,那么整個(gè)網(wǎng)絡(luò)將面臨毀滅性的打擊。因此,在使用這些網(wǎng)絡(luò)時(shí),用戶必須堅(jiān)信參數(shù)不會(huì)被泄漏。
可能的解決方案包括使用現(xiàn)代“可信執(zhí)行環(huán)境”,如因特爾 SGX以及ARM TrustZone。對(duì)于因特爾的SGX技術(shù)來(lái)說(shuō),即使應(yīng)用程序、操作系統(tǒng)、BIOS或VMM受到威脅,私鑰也是安全的。
此外,最近的一份白皮書(shū)揭示了它在零知識(shí)密碼學(xué)方面的創(chuàng)新:ZK-STARKs (零知識(shí)可擴(kuò)展透明知識(shí)理論,Zero-Knowledge Scalable Transparent ARguments of Knowledge)。
根據(jù)zk-STARK 白皮書(shū),zk-STARK是第一個(gè)在不依賴任何信任設(shè)置的情況下實(shí)現(xiàn)區(qū)塊鏈驗(yàn)證的系統(tǒng),隨著計(jì)算數(shù)據(jù)的增加,計(jì)算速度呈指數(shù)級(jí)增加。
它不依賴于公鑰加密系統(tǒng),更簡(jiǎn)單的假設(shè)使其在理論上更加安全,因?yàn)樗ㄒ坏募用芗僭O(shè)是Hash 散列函數(shù)(例如SHA2)是不可預(yù)測(cè)的。
不可否認(rèn)的是,零知識(shí)證明和zk-S(T|N)ARK技術(shù)的測(cè)試和采用都將需要一定的時(shí)間。但是對(duì)于區(qū)塊鏈底層開(kāi)發(fā)平臺(tái)來(lái)說(shuō),如何兼顧性能和安全性是至關(guān)重要的。也許只有零知識(shí)證明等密碼學(xué)技術(shù)被更多應(yīng)用的時(shí)候,區(qū)塊鏈這項(xiàng)技術(shù)才能被更好地推動(dòng)。
來(lái)源;巴比特