解讀LikeLib區塊鏈中最常見的密碼學技術:零知識證明

零知識證明(Zero-Knowledge Proof或Zero-Knowledge Protocol)是一種基於概率的驗證方法,它包括“類似事實的陳述”和“關於個人知識的陳述”。驗證者基於一定的隨機性來詢問證明者,如果證明者給出的答案正確,那麼證明者將有很大概率會擁有其所聲稱的“知識”。零知識證明可以在不透露使用哪種貨幣的情況下驗證你確實花了錢

如今,零知識證明已經被許多區塊鏈項目視爲最好的隱私保護方案之一。能夠在不泄露數據的情況下,來證明數據的真實性。在本文中,我們將會解釋神祕的零知識證明(Zero-Knowledge Proof)及其當前的應用。

爲什麼ZKP如此重要?

數據隱私是當今社會最重要的課題之一。保護與個人身份有關的個人數據(出生日期、銀行證明、交易記錄、教育證書)是至關重要的,並且其重要性將不斷提高。

在科技時代,我們正在創造着前所未有的海量數據,而且我們也在不斷創造着關於自身的可供掠奪的數據。

像Google和Facebook這樣的大公司利用我們的數據成爲了當今世界的科技巨頭。然而,最近密碼學的突破和區塊鏈的興起爲保護我們的數據和身份信息提供了新方法。零知識證明或許就是答案。

零知識證明的原理

零知識證明是麻省理工學院的研究人員在20世紀80年代提出的一種加密方案。零知識證明協議是指一方(證明方)可以證明某事對另一方(驗證方)來說是真實的。除了此特定陳述屬實之外,不會透露其他任何信息。

例如,當前網站將用戶密碼的Hash散列值儲存在其web服務器中。爲了驗證客戶端是否真的知道密碼,大多數網站目前使用的方法是要求客戶端輸入密碼的hash散列,並將其與儲存的結果進行比較。

零知識證明可以保護用戶賬號不被泄漏。如果可以實現零知識證明,那麼客戶端密碼對任何人來說都是未知的,但是仍然可以對客戶端登錄進行身份驗證。當服務器受到攻擊時,用戶的賬戶仍然是安全的,因爲其密碼並沒有被儲存在web服務器中。

零知識證明可以分爲「交互式」和「非交互式」兩種。接下來我們就一一來看看這兩種證明方式有哪些不同。

交互式零知識證明

零知識證明協議的基礎是交互式的。它要求驗證者不斷對證明者所擁有的“知識”進行一系列提問。

例如,如果有人聲稱自己知道數獨遊戲的答案,零知識證明的過程就是驗證者需要隨機指定要通過列、行或九個正方形進行驗證。

每輪測試不需要知道具體的答案,只需要檢測數字1~9是否包含在內。只要驗證的次數足夠多,就有理由相信證明者是知道數獨問題答案的。

然而,這種簡單的方法並不能使人相信證明者和驗證者都是真實的。在數獨這種情況下,兩者可以提前串通,以便證明者可以在不知道答案的情況下依然通過驗證。

如果他們想要說服第三方,驗證者還必須要證明驗證過程是隨機的,並且他不會向證明者泄漏答案。

因此,第三方難以驗證交互式零知識證明的結果,要向多人證明某些東西的話則需要額外的努力和成本纔行。

非交互式零知識證明

顧名思義,非交互式零知識證明不需要交互過程,避免了串通的可能性,但是可能需要額外的機器和程序來確定實驗的順序。

例如,在數獨這個例子中,由程序決定要驗證的列或行。驗證序列必須保密,否則驗證者可能會在不知道真正“知識”的情況下通過驗證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章