零知識證明(ZKP)改善區塊鏈上的隱私問題

買賣虛擬貨幣
使用零知識證明,可以在保持在使用者匿名的同時驗證區塊鏈交易。密碼學是區塊鏈技術最重要的組成部分之一,在過去幾年中得到了廣泛的應用。在這裡,我們討論零知識證明(ZKP)——一種與密碼學密切相關的機制。接下來您將瞭解ZKP的一般概念和非互動式零知識證明,瞭解在區塊鏈中使用協議的一些用例,並從密碼學的角度深入瞭解ZKP。什麼是零知識證明?零知識證明是當今應用密碼學中最抽象、最吸引人的概念之一。從可能用於核裁軍到為公共區塊鏈網路提供匿名和安全的交易,零知識證明是密碼技術創新的一個深刻例子。在密碼學中,零知識證明或零知識協議是一個方法,一個政黨(驗證)可以向另一方(校驗)證明他們知道一個值x。一個零知識證明的本質在於它可以揭示某些資訊。挑戰在於如何在不披露資訊本身或任何額外資訊的情況下證明擁有這些資訊是合理的。零知識證明必須滿足以下三個引數:
· 完整性。如果這個陳述是真的,誠實的驗證者——正確地遵循協議的驗證者——將被誠實的驗證者說服。· 可靠性。如果陳述是假的,沒有任何作弊證明可以說服誠實的驗證者它是真的。· 零知識性。如果該語句為真,則除了該語句為真之外,驗證者不會學到任何東西。換句話說,僅僅知道語句(而不是秘密)就足以想象一個場景,表明驗證者知道秘密。這是透過每個驗證者都有一個模擬器來實現的,模擬器可以生成一個“看起來”是誠實的驗證者和普通驗證者之間互動的記錄。模擬器應該能夠生成文字,但只能訪問要證明的語句,而不能訪問驗證者本身。完整性是更一般的互動式證明系統的性質。零知識的加法使驗證過程變成零知識的證明。零知識證明不是數學意義上的證明,因為有很小的概率,即可靠誤差,一個作弊證明者能夠說服一個虛假陳述的驗證者。換句話說,零知識證明是概率證明而不是確定性證明。然而,有一些技術可以將可靠性錯誤降低到可以忽略的值。ZKP的一般結構
零知識證明的一般結構包括參與者a和參與者b之間的三個連續動作。這些動作被稱為目擊、挑戰和迴應。

見證人 。A知道這個秘密的事實決定了一些問題,這些問題總是可以被A正確地回答。首先,A從集合中隨機選擇任何問題並計算一個證明。然後,A將證明傳送給B。

A隨機選擇一個問題並將證明傳送給B。
挑戰。然後,B從集合中選擇一個問題,讓A回答。
B隨機選擇一個問題,讓A回答。
響應。A計算答案並將其傳送回B。
A計算出答案併傳送給B,
接收到的答案允許B檢查A是否真的知道這個秘密。這個過程可以重複很多次,直到A猜測而不是知道正確答案的概率變得足夠低。
為了說明ZKP在實踐中是如何工作的,維基百科引用了 Ali Baba山洞的故事,這個故事最初是由Jean-Jacques Quisquater發表的。在這個例子中,Peggy和Victor扮演了驗證者。在這個故事裡,洞的形狀像一個圓環。入口在左邊,有一扇神奇的門擋住了右邊。Peggy想向Victor證明她知道開啟魔法門的秘密詞。然而,Peggy不想透露這個秘密詞。

Victor在外面等著,Peggy選擇了一條路來證明Peggy知道這個秘密單詞,他們在洞口的左右兩邊做了記號,分別是a和b。在Victor的視線之外,Peggy沿著A或b路走著。Victor走進山洞,喊著A或b路的名字,他想讓Peggy回去。既然Peggy真的知道這個秘密,如果需要的話,她可以很容易地開啟魔法門,走Victor選擇的那條路回到入口。

如果Peggy現在知道了這個秘密字,她只有在Victor叫出她進去後走的那條路的時候,才能從門口回到門口。因為Victor選擇的路徑是隨機的,Peggy不知道關鍵字的概率是1/2。如果你重複這個過程,那麼概率(½)^ k。透過這種方式,例如,重複這個過程20次就足以證明Peggy知道關鍵字。

Peggy回到入口時走的是維克多喊出來的那條路。如果Victor把一切都記錄在相機裡,拍攝下來的影片就不會成為其他任何一方的證據,因為他們可以事先商定Peggy要去哪裡。這意味著她可以在不知道關鍵字本身的情況下找到正確的方法。
正如我們所看到的,示例滿足以下屬性:完整性、可靠性和零知識。
注意,ZKP需要使用者之間的互動。雖然在單輪和常量協議中互動的數量很少,但是兩個使用者必須同時參與。

一個非互動式ZKP
考慮這樣一種情況,使用者P和V都是數學家,他們使用普通(蝸牛)郵件彼此通訊。數學家P想周遊世界,向數學家V證明新的定理,而不揭示證明的本質。在這個場景中,我們需要提出一些非互動式協議,因為數學家P可能沒有固定的地址,並且可能在收到下一個答案之前移動。
Blum、Feldman和Micali提出了一種非互動式ZKP,其中使用者P和V有一個共享的金鑰,這足以證明P在不洩露資訊本身的情況下知道一些秘密資訊。
與常規的零知識證明不同,非互動式ZKP的一般結構只包含參與者P和V之間的單個動作,而這個動作是一個目擊者。
P將秘密資訊作為引數傳遞給一個特殊的函式——“make a proof”(見下圖)。輸出是“證明”的某個值。

ZKP可以應用在哪裡?
身份驗證系統。ZKP證明的研究是由身份驗證系統推動的,其中一方希望透過一些秘密資訊(如密碼)向另一方證明其身份,但不希望另一方瞭解任何關於該秘密的資訊。
道德行為。ZKP在加密協議中的一個用例是在保持隱私的同時強制執行誠實的行為。粗略地說,這個想法是強迫使用者使用ZKP來證明它的行為是符合協議的。由於可靠性,我們知道使用者必須誠實行事才能提供有效的證明。由於零知識,我們知道使用者在提供證據的過程中不會損害其秘密的隱私。
機密性。ZKP的另一個用例是需要保密的交易。考慮一個簡單的公共區塊鏈(例如以太坊),它與某種加密貨幣或令牌相關聯。當使用者之間發生通常的交易時,區塊鏈記錄詳細的傳輸資訊:誰、向誰傳輸以及傳輸多少。因此,如果您知道特定的交易地址或使用者地址,您可以做出一些財務結論。對於當今的企業來說,為某些交易保留一些細節是至關重要的。在這種情況下,ZKP可以隱藏交易細節,並識別它們對於新增到新塊是有效的。(區塊鏈的一個例子是Zcash。)
檢查個人資訊。如果你想從銀行貸款,有必要提供收入證明。此證書包含機密資訊。在這種情況下,您的一些個人資料將對其他人開放,這是我們希望避免的。銀行只要知道一個人的收入是償還貸款的最低要求就足夠了。
我們可以實現一個分散式系統,其中每個使用者都有一個包含一些個人資料的特殊加密數字識別符號。在這個系統中,為了獲得貸款,你可以從你的公司獲得相應的數字收入證明,其合法性是加密的,很容易檢查。然後你可以申請貸款。然後,銀行可能會核實你使用ZKP的最低收入要求,沒有必要透露敏感的細節。其中的一個例子是HyperledgerIndy。

Indy的點對點賬外代理互動匿名。有時候,在區塊鏈上匿名是必要的。例如,在沒有公開您的身份的情況下進行交易或沒有連線的交易。使用者還可以進行多個交易,同時對身份保密。

出於這些目的,您可以從版本1.2開始使用Hyperledger Fabric,該版本支援一種特殊的基於zkp的加密協議-身份混合器(Idemix)。


ZKP是一種強大的加密方法,它在區塊鏈中的應用似乎很有前途,因為現有的區塊鏈技術可以對ZKP進行調整,以滿足關注資料隱私的特定業務需求。


更多區塊鏈資訊:www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;