公開透明為區塊鏈的特色之一,然而我們並不一定想要讓全部的資訊都讓全部的人知道,為了解決缺乏隱私權的缺點,零知識證明便應運而生。零知識證明的概念推出後,被大眾廣泛使用且受到認可,促使零知識證明的應用不僅僅侷限於區塊鏈,連傳統銀行都看得到它的蹤跡。究竟零知識證明是什麼呢?它的運作技術、工作原理又是什麼呢?讓我們跟著馬克一起看下去吧!
為什麼開始發展零知識證明(Zero-Knowledge Proofs)?
在區塊鏈的世界裡,為了確認收到的加密幣沒有一幣二用,也就是所謂雙花(double spending),因此在比特幣、以太坊等公鏈上所有的交易紀錄都會攤在陽光下,讓礦工確認交易資訊。換言之,只要知道對方的帳號,就能查到該帳號中所有交易資料,甚至還可以反推所有你可能控制的帳號,相當缺乏隱私。
區塊鏈的特色之一就是公開透明、無法竄改,但有時候我們並不希望某些交易或資訊被外界知道。引進零知識證明(Zero-Knowledge Proofs)的目的,就是要讓公鏈上任何一位礦工,都能在無法得知交易內容的前提下驗證交易。在沒有任何交易相關資訊的前提下說服礦工這筆交易是合法的,讓礦工可以隨時驗證每筆交易的特徵,卻不會洩漏內容。
零知識證明是什麼呢?
零知識證明是一種加密協議,它是密碼學中使用的一種方法,允許一方(示證者)向另一方(驗證者)確認陳述的真實性,而無需透露有關該方的任何其他訊息(示證者了解到的內容和來源)。該定義最初是由麻省理工學院的研究人員 Shafi Goldwasser,Silvio Micali 和 Charles Rakoff 在科學文章《交互式証明系統的知識復雜性》(1985)中提出的。零知識證明具有三個主要屬性:
(一)完整性:如果示證者知道陳述,那麼他可以說服驗證者。意味著驗證者向示證者提出一系列問題,示證者如果知道秘密,將正確回答所有問題。
(二)正確性:如果示證者不知道該陳述,那麼他只能以很小的機率欺騙驗證者。如果示證者的秘密未知,但他想說服對方的測試者,則他有一定的機率(例如 50%)正確地回答問題。但是經過一定數量的問題後,例如:重複五次後,作弊的機率將為 1/32,在 10 輪後 1/1024 以及在 20 輪後作弊機率大約 1/1,000,000,驗證者即很有可能確定示證者不知道秘密。透過不斷地重複,可以達到所需的證據可靠性水平,但不能實現絕對確定性。
(三)零知識:驗證者即使行為不誠實,也不會從示證者知道該陳述這一事實中得知任何其他訊息。
零知識協議可以分成兩種類型:交互的(驗證者獨立地即時詢問示證者)、非交互式的(不需要驗證者和示證者之間的直接通訊,驗證者可以在事實之後驗證語句的真實性)。零知識證明還可以根據是否有幾個驗證者確定斷言的真實性的階段而分為兩組-使用布爾函數的可信設置(Trusted Setup)。
零知識證明的核心-同態隱藏(Homomorphic Hidings)
同態隱藏為零知識證明的核心,滿足同態隱藏的函式f(x)有三個定義:
(一)不同的x會導致不同的f(x)
(二)如果知道f(x) 與f(y) 的值,就可以算出f(x+y) :驗證資訊是否正確。
(三)透過f(x) 很難反推出x:達到良好的隱私性。
我們可以想像成x 與y 是我們需要保密的兩筆資訊,但同時我們又需要向外界證明我們手上有這兩筆資料。因此我們可以透過滿足同態隱藏的函式f 傳遞加密過後的f(x) 與f(y) 給對方,對方可以計算f(x+y) 的值來知道我們手上這兩筆資料的和的確是x+y ,但又無法確知x 與y 的值。最後結果就是我們在沒有洩漏x 與y 的狀況下說服對方認可我們手上x 與y 的和的確是x+y ,同時達到驗證與保密的目的。
零知識證明的應用
(一)荷蘭國際銀行(ING Bank):荷蘭國際銀行將零知識證明改編成一種方便銀行內部使用的形式,稱為零知識範圍證明(Zero knowledge range proofs)。零知識範圍證明可以證明數字是在特定範圍內的,例如:客戶可以證明工資在獲得抵押所必需的範圍內,而無需透露其本身的具體金額。此外,還可以在區塊鏈架構上擴充套件,允許在指定集合內驗證字母資料,例如:在KYC(know-your-customer)檢查中,可以驗證使用者是否屬於某個範圍(例如:歐盟公民),而不會洩露客戶所在的確切國家/地區。
(二)新創公司 QEDIT :QEDIT開發了 SDK(軟體開發工具包),該工具包使您可以在現有的區塊鏈中實施零知識證明,以增加交易的隱私性,同時保持通過節點進行交易驗證的可能性。該項目已獲得歐盟委員會質量認證,其合作伙伴包括 VMWare、Ant Financial 、三星SDS和 Deloitte 等知名公司。
(三)投票:如果公共區塊鏈記錄了投票,則不需要值得信賴的第三方來驗證結果。因此,ZKP 可以使投票系統匿名,合格的選民可以在不透露身份的情況下證明他們投票的權利。