如何改善區塊鏈的隱私問題
密碼學是區塊鏈技術最重要的組成部分之一,在過去幾年中得到了廣泛的應用。在這裡,我們討論零知識證明(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進行調整,以滿足關注數據隱私的特定業務需求。
(作者:曲速未來安全區,內容來自鏈得得內容開放平台「得得號」;本文僅代表作者觀點,不代表鏈得得官方立場)
※阿根廷已支持公民使用比特幣支付公共交通費用
※日本金融廳:2018年第四季度虛擬貨幣類諮詢的受理件數較前期減少近四成
TAG:鏈得得APP |