零知識證明區塊鏈6
① 三分鍾讀懂零知識證明(ZKP)
區塊鏈技術的一大優勢是透明性,但智能合約應用在需要保護數據隱私的情況下,如使用真實數據觸發執行。零知識證明(ZKP)在公鏈上解決了這一問題,確保了隱私安全。
零知識證明,簡稱ZKPs,允許一方在不透露任何信息的情況下,證明自己擁有某個數據。在區塊鏈中,它僅揭示隱藏信息的有效性和持有者的身份。理解零知識證明的關鍵,是其三個基本特徵:保密性、真實性與完整性。保密性保證了數據的隱私,真實性確保了數據的有效性,完整性則保證了數據的完整未被篡改。
零知識證明的實用性非常廣泛,從身份認證到數據共享,都得到了應用。在身份認證方面,用戶可以證明擁有私鑰或知道特定答案,而無需泄露密鑰本身,通過零知識證明確認身份。在數據保護方面,零知識證明可以證明數據的真實性和可信性,而無需暴露數據內容,這在隱私保護中尤為重要。
在計算壓縮和區塊鏈擴容方面,零知識證明可以避免重復計算,通過證明計算過程,減少資源消耗和數據冗餘。例如,在智能合約執行時,通過零知識證明證明計算結果的正確性,而不是重復執行相同的計算。
區塊鏈項目如Zcash已採用零知識證明,允許用戶進行隱私交易,隱藏交易金額和地址。去中心化預言機網路則利用零知識證明驗證鏈下數據,同時隱藏數據內容,確保數據安全。
零知識證明方案如DECO提供了多種應用場景,包括低抵押貸款,通過證明信貸資質,同時保護用戶隱私。此外,DECO還支持創建去中心化身份認證(DID)協議,讓用戶能自主管理身份信息,增強隱私保護。
總之,零知識證明為區塊鏈技術帶來了隱私保護和數據信任的新維度,使得數據安全性和透明度並存。通過零知識證明,區塊鏈不僅實現了數據的信任,還保護了用戶的隱私,推動了區塊鏈技術的廣泛應用和發展。
② 零知識證明是什麼意思
零知識證明(Zero-KnowledgeProof,簡稱ZKP)是指在一個互動式過程中,證明人可以向驗證人證明某個陳述的真實性,而不需要向驗證人提供任何多餘的信息。
3、電子投票
在傳統選舉過程中,塞選操作和計票方式本身存在著不同的安全漏洞,往往容易導致選舉結果被篡改甚至被黑客攻擊和破解。通過使用基於區塊鏈和ZKP的電子投票系統,選民所做出的選擇將得到強有力的保護,並具備不可逆性,使得其避免遭受相關泄漏和攻擊的威脅。
總之,零知識證明在現實應用中能夠極大地提高數據安全性和隱私保護性,其重要性和意義是不言而喻的。
雖然目前還存在著一些技術難點,但相信在各行業權威和喊岩科研人員的共同努力下,ZKP技術將得到進一步關注和發展。
③ 什麼是零知識證明
零知識證明是由S.Goldwasser、S.Micali及C.Rackoff在20世紀80年代初提出的。它指的是證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。零知識證明實質上是一種涉及兩方或更多方的協議,即兩方或更多方完成一項任務所需採取的一系列步驟。證明者向驗證者證明並使其相信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關於被證明消息的信息。大量事實證明,零知識證明在密碼學中非常有用。如果能夠將零知識證明用於驗證,將可以有效解決許多問題。
在有必要證明一個命題是否正確,又不需要提示與這個命題相關的任何信息時,零知識證明系統(也叫做最小泄露證明系統)是不可或缺的。零知識證明系統包括兩部分:宣稱某一命題為真的示證者(prover)和確認該命題確實為真的驗證者(verifier)。證明是通過這兩部分之間的交互來執行的。在零知識協議的結尾,驗證者只有當命題為真時才會確認。但是,如果示證者宣稱一個錯誤的命題,那麼驗證者完全可能發現這個錯誤。這種思想源自互動式證明系統。互動式系統在計算復雜度理論方面已經獲得異常獨立的地位。
零知識證明(Zero—Knowledge Proof)起源於最小泄露證明。設P表示掌握某些信息,並希望證實這一事實的實體,設V是證明這一事實的實體。假如某個協議向V證明P的確掌握某些信息,但V無法推斷出這些信息是什麼,我們稱P實現了最小泄露證明。不僅如此,如果V除了知道P能夠證明某一事實外,不能夠得到其他任何知識,我們稱P實現了零知識證明,相應的協議稱作零知識協議。
零知識證明的性質
在最小泄露協議中零知識證明需要滿足下述兩個性質:
(1)正確性。P無法欺騙V。換言之,若P不知道一個定理的證明方法,則P使V相信他會證明定理的概率很低。
(2)完備性。V無法欺騙P。若P知道一個定理的證明方法,則P使V以絕對優勢的概率相信他能證明。
在零知識協議中,除滿足上述兩個條件以外,還滿足下述的第三個性質:
(3)零知識性。V無法獲取任何額外的知識。
我們把性質(1)和(2)稱為零知識證明的正確性和完備性,而性質(3)稱為零知識性。
零知識證明的屬性
零知識證明需要滿足三個屬性。
1、如果語句為真,誠實的驗證者(即:正確遵循協議的驗證者)將由誠實的證明者確信這一事實。
2、如果語句為假,不排除有概率欺騙者可以說服誠實的驗證者它是真的。
3、如果語句為真,證明者的目的就是向驗證者證明並使驗證者相信自己知道或擁有某一消息,而在證明過程中不可向驗證者泄漏任何有關被證明消息的內容。
零知識證明並不是數學意義上的證明,因為它存在小概率的誤差,欺騙者有可能通過虛假陳述騙過證明者。換句話來說,零知識證明是概率證明而不是確定性證明。但是也存在有技術能將誤差降低到可以忽略的值。
零知識的形式定義必須使用一些計算模型,最常見的是圖靈機的計算模型。
零知識證明的舉例
例子一
A要向B證明自己擁有某個房間的鑰匙,假設該房間只能用鑰匙打開鎖,而其他任何方法都打不開。這時有2個方法:
①A把鑰匙出示給B,B用這把鑰匙打開該房間的鎖,從而證明A擁有該房間的正確的鑰匙。
②B確定該房間內有某一物體,A用自己擁有的鑰匙打開該房間的門,然後把物體拿出來出示給B,從而證明自己確實擁有該房間的鑰匙。
後面的②方法屬於零知識證明。它的好處在於,在整個證明的過程中,B始終不能看到鑰匙的樣子,從而避免了鑰匙的泄露。
例子二
A擁有B的公鑰,A沒有見過B,而B見過A的照片,偶然一天兩個人見面了,B認出了A,但A不能確定面前的人是否是B,這時B要向A證明自己是B,也有2個方法:
① B把自己的私鑰給A,A用這個私鑰對某個數據加密,然後用B的公鑰解密,如果正確,則證明對方確實是B。
② A給出一個隨機值,並使用B的公鑰對其加密,然後將加密後的數據交給B,B用自己的私鑰解密並展示給A,如果與A給出的隨機值相同,則證明對方是B。後面的方法屬於零知識證明。
例子三
一天,阿里巴巴被強盜抓住了,強盜向阿里巴巴拷問進入山洞的咒語。面對強盜,阿里巴巴是這么想的:如果我把咒語告訴了他們,他們就會認為我沒有價值了,就會殺了我省糧食;但如果我死活不說,他們也會認為我沒有價值而殺了我。怎樣才能做到既讓他們確信我知道咒語,但又一丁點咒語內容也不泄露給他們呢?
這的確是一個令人糾結的問題,但阿里巴巴想了一個好辦法,當強盜向他拷問打開山洞石門的咒語時,他對強盜說:「你們在離開我一箭遠的地方,用弓箭指著我,當你們舉起右手我就念咒語打開石門,舉起左手我就念咒語關上石門,如果我做不到或逃跑,你們就用弓箭射死我。」
強盜們當然會同意,因為這個方案不僅對他們沒有任何損失,而且還能幫助他們搞清楚阿里巴巴到底是不是真的知道咒語這個問題。阿里巴巴也沒有損失,因為處於一箭之地的強盜們聽不到他念的咒語,不必擔心泄露了秘密,同時他又確信自己的咒語有效,也不會發生被射死的杯具。
強盜舉起了右手,只見阿里巴巴的嘴動了幾下,石門果真打開了,強盜舉起了左手,阿里巴巴的嘴動了幾下後石門又關上了。強盜還是有點不信,說不準這是巧合呢,他們不斷地換著節奏舉右手舉左手,石門跟著他們的節奏開開關關,最後強盜們想,如果還認為這只是巧合,自己未免是個傻瓜,那還是相信了阿里巴巴吧。
這樣,阿里巴巴既沒有告訴強盜進入山洞石門的咒語,同時又向強盜們證明了,他是知識這個咒語的。
零知識證明在區塊鏈的應用
那麼,利用了區塊鏈技術的ZCash,就是利用「零知識證明」實現的匿名性。
相對於ZCash來說,比特幣的轉賬並不是完全匿名的,只要知道了一個比特幣地址,任何人都可以通過這個網站,查到這個地址的所有「消費」行為和關聯。比如給誰轉了賬,又從誰(的比特幣地址)那裡收到過轉賬,在以區塊鏈技術為基礎的「賬本」上都「本本份份」地記錄著。
例如A有3個BTC,要給B轉賬1個BTC,那麼在賬本上就會記錄著:A轉出了兩筆BTC,一筆為1BTC,轉給了B;另一筆為2BTC,轉給了自己。
那麼利用了「零知識證明」的ZCash是怎麼做到的所謂匿名呢?
ZCash的代幣為ZEC。同樣假設A有3個ZEC,要給B轉賬1個ZEC。
首先,A會將自己的1個ZEC分成若干份隨機投入一系列的「混合容器」中,指定接收方B的地址,同時混入的時候還有其他交易方輸出的若干份ZEC。這些ZEC又被混合容器隨機拆分,再從這些被拆分生成的所有的ZEC中取出合計為1ZEC的若干份,轉移到B的地址中,同時在發送的時間上也可以設置一定的延遲。
其中的「混合容器」,就是一條「公有鏈」。經過這條公有鏈一系列的「混幣」過程,就使得包括交易地址和具體金額在內的交易信息變得無從考證了。
當然,雖然ZCash以其匿名性使其市場熱度一度很高,但其仍面臨諸多障礙與「原罪」。
首先,要實現匿名性,其所需要的證明信息所花費的計算資源就非常多,帶來了大量的資源浪費,也導致了其可擴展性面臨巨大挑戰。
另外,匿名性會帶來大量的額外監管問題,一旦有不法份子利用其用戶黃、賭、毒等違法領域,將會給追蹤與監管帶來非常大的挑戰,造成一系列社會問題。
④ 區塊鏈和零知識證明在信用系統中的作用方式
區塊鏈中的零知識證明在隱私保護方面起重大作用,它在信用系統中自然不例外,但在系統中的哪個環節以及以何種方式發揮作用卻是一個值得思考和研究的問題。
第一,信用問題,不能完全依賴技術上的可靠,有些問題政府權威就足夠,比如戶籍與身份信息,這些並無必要有進一步的追問。
第二,區塊鏈存證的使用場景,應該是那種存在較長的數量化的證據鏈條的場景,比如根據流水統計月度年度匯總,保證匯總的計算過程沒有欺詐。而流水明細是在證據鏈的上游,時間上是在事前,在上游作假,提前幾個月幾年作假,對攻擊者計劃能力以及作假成本都要高的多。高到一定程度,從經濟學意義上就具有達到防止欺詐經濟可行性。
事實上這里涉及到前文所說領域事件在鏈上的閉合度問題。對於幾乎沒有可能,或者在可見未來不具備完全閉合的現實可能性的領域,閉合度是一個有灰度級別的問題,如果沿事件的邏輯鏈條向上游追溯將其上鏈,達到一定程度使得攻擊者的攻擊變得相當或極度困難,區塊鏈應用就會產生價值,並不要求完全的閉合,這樣區塊鏈的價值領域就會突破虛擬幣以及去中心化金融defi這類完全閉合於鏈上的系統,得以擴展。這個邏輯並不限於信用系統,而適用於區塊鏈與領域結合應用的一般邏輯。再舉一例,溯源系統到底是否能夠達成防偽的作用,這個問題取決於溯源在證據鏈條的上溯深度是否足以造成作假者的困境,不考察這一點,僅僅是形式上使用了區塊鏈存證是沒有意義的。
所以我們幾乎可以得到一個定理:
區塊鏈在領域應用中的價值水平與證據鏈的上溯深度成正比例關系。
然後隨之而來的第二個問題是:沿著證據鏈的反向上溯,越是上游越接近主體(公民隱私或組織的商業機密)隱私。這個問題的解決就是零知識證明的作用領地,也是它的作用方式。很多零知識證明的應用價值含混不清,現在我們把它放在證據鏈條的上下文中加以考量就會清晰起來:
1. 零知識證明是用來處理數量化的證據鏈追溯過程中,在不泄露上游證據鏈明文細節的前提下完成追溯,既發揮了區塊鏈沿證據鏈存追溯的作用,又保護了隱私。
2. 對於沒有追溯必要的場景,證據鏈不存在,零知識證明的作用與意義也是不明確的。比如一般身份戶籍信息,行政權威應被視為可信,並無追溯必要。注意這里說的證據鏈並非物理意義上的因果關系,而是經過系統應用目標的價值取捨。
總結一下:
1. 用區塊鏈技術保留證據鏈上游。2. 證據鏈越是上游越接近公民隱私,使用零知識證明來保護隱私
1. 參考MIT媒體實驗室的zkledger,使用區塊鏈結合零知識證明來處理公民和組織的財務與稅務等流水的匯總報告問題。
2. 技術上需要解決的問題是,zkledger的場景中,很有限的幾個銀行的大額交易,數據量少,而用於公民個人場景,數據量巨大,要找到方法解決性能問題。