BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

圖解零知識證明(ZKP)

区块链大本营
特邀专栏作者
本文約2626字,閱讀全文需要約4分鐘
一文讀懂密碼學基礎「零知識證明」。
AI總結
展開
一文讀懂密碼學基礎「零知識證明」。

編者按:本文來自區塊鏈大本營(ID:blockchain_camp)編者按:本文來自

區塊鏈大本營(ID:blockchain_camp)

編者按:本文來自

區塊鏈大本營(ID:blockchain_camp)

區塊鏈大本營(ID:blockchain_camp)

零知識證明(Zero-Knowledge Proof或Zero-Knowledge Protocol)是一種基於概率的驗證方法,它包括“類似事實的陳述”和“關於個人知識的陳述”。

二級標題

如今,零知識證明已經被許多區塊鏈項目視為最好的隱私保護方案之一。能夠在不洩露數據的情況下,來證明數據的真實性。

在本文中,我們將會解釋神秘的零知識證明(Zero-Knowledge Proof)及其當前的應用。

為什麼ZKP如此重要?

二級標題

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

二級標題

二級標題

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

二級標題

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

二級標題

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

二級標題

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

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

二級標題

二級標題

二級標題

二級標題

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

二級標題

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

二級標題

區塊鏈上的零知識證明

  • 比特幣和以太坊都是用公共地址來代替當事方的真實身份,使交易部分匿名,公眾只知道發送和接收的地址以及交易的數量。然而,可以通過區塊鏈上可用的各種信息(如交互記錄)找出地址的真實身份,因此存在暴露隱私的可能。

  • 零知識證明,可以在發送方、接收方和其他交易細節都保持匿名的情況下,保證交易有效。

  • ZCash可能是成功實現零知識證明的最著名的區塊鏈項目之一。 Zcash實現了ZKP的修改版本,被稱為zk-SNARKS,代表Zero-Knowledge Succinct Non-Interactive Argument of Knowledge(零知識簡明非交互式知識證明)

  • zk-SNARK技術減少了證明的大小以及驗證所需的計算量。它能夠在不洩漏有關地址和相關有價值的任何關鍵信息的情況下證明有效交易條件得到了滿足。

  • zk-SNARK將需要驗證的交易內容轉換為兩個多項式乘積相等的證明,並結合同態加密和其他先進技術,在執行交易驗證時保護隱藏的交易金額。

其過程可以簡單地描述為:

將代碼拆分為可驗證的邏輯驗證步驟,然後將這些步驟拆分為一個由加法、減法、乘法和除法組成的運算電路;

進行一系列變換,將待驗證的代碼轉化為多項式方程,如t(x)h(x)= w(x)v(x);

為了使證明更加簡潔,驗證者預先隨機選擇幾個檢查點s 來檢查這些點的方程是否為真;

通過同態編碼/加密,驗證者在計算方程式時不知道實際輸入值,但仍然可以進行驗證;

在方程的左邊和右邊,同時乘以一個不等於0的秘密值k。當驗證(t(s)h(s)k) 等於(w(s)v(s)k)時,具體的t(s)、 h(s)、 w(s)和v(s) 是不可知的,從而達到保護信息的目的。

智能合约
歡迎加入Odaily官方社群