原文: What the heck is Zero Knowledge (ZK) proof?

作者: Ravjot Singh

編譯: EthereumCN

你可能曾經聽說過 ZK 證明或零知識證明。但為什麼它會突然變成一個熱詞?它是什麼?什麼是 ZK-rollups? 什麼是 ZK-SNARKS? 以上問題都會在本文中得到解答,抓緊了快上車!

什麼是零知識證明 (Zero Knowledge Proof)?

零知識證明可以讓一方 (證明方) 在不透露任何實際信息的情況下向另一方 (驗證方) 證明某保密信息或聲明是真的。

術語 “零知識 “ 本身就表明了不需要揭露任何信息,證明方就可以向驗證方證實 ta 所知道的保密信息以及 ta 的聲明都是真的。

那為什麼需要零知識證明呢?當我們不想披露任何信息,但需要說服其他人相信我們知道的保密信息和提出的聲明是真的時候。

目前有兩種零知識證明:

  1. 交互式的 (Interactive)
  2. 非交互式的 (Non Interactive)

舉例說明交互式的零知識證明

假設你需要通過 ZKP (零知識證明) 證明你的年齡大於或等於 18 歲,但不揭露具體年齡。我們需要第三方機構為你的年齡擔保,具體如下:

第三方說:” 已接收您出生證明的複印件,我們已經得知您的年齡為 21 歲。現在為您提供一串數字密碼,請將它保存到保密與安全的地方。稍後您會用到它。“

” 你持有的那串數字密碼將會被哈希算法處理 22 次,然後得出一個最終年齡哈希代碼給你 (沒錯,處理次數必須為年齡+1,才能使得整個操作行得通)。也就是說,你拿到那串數字密碼之後,會有 22 次哈希處理過程才能獲得最終的年齡哈希代碼。“

“我們將您的姓名、時間戳與最終年齡哈希代碼一起打包。這個證明包將提供給他人驗證。“

好了,那麼當你想要向其他人證明你的年齡超過 18 歲時,你只需要證明從你拿到數字密碼到最終年齡哈希代碼之間的哈希算法處理次數大於 18 就可以了。

那麼怎麼證明呢?你只需要向他人展示最後的 18 次哈希算法處理記錄。你需要自己進行前 4 次哈希處理 (對數字密碼哈希算法處理 4 次),然後將結果提供給其他人:第四次哈希值。

他們會對第四次哈希值再處理 18 次 (現在對你的數字密碼總共進行了 22 次哈希處理),最終他們能夠得出最終年齡哈希代碼並且使用證明包對它進行驗證。

實際上,驗證者是在說:” 發送我們一個值,我們會對其進行 18 次哈希算法處理,然後這個哈希值將與你提供的年齡哈希代碼進行對比。” 如果你低於 18 歲,最終年齡哈希代碼的哈希算法處理次數就沒有 18 次,我們對你提供的那個初始哈希值進行 18 次哈希處理後,就會與最終年齡哈希代碼不一樣。

這裡是另一個絕佳例子:

Example of a good Zero Knowledge Proof.

但是這種交互式方法有一些局限:

  1. 每次驗證都需要進行整個冗長的過程。而上述例子只是簡單的哈希算法處理,想像一下如果需要對實際加密算法進行計算會如何。
  2. 證明方與驗證方都需要同時在場,不管是在線還是面對面。

接下來是非交互式的零知識證明

1986 年,Fiat 與 Shamir 發明了 Fiat-Shamir heuristic (啟發式) 算法,這是第一個基於交互式零知識證明來構建數字簽名的算法。

Fiat-Shamir heuristic 算法通過使用承諾方案 (Commitment Scheme) 可變為非交互式零知識證明。這就是所謂的 ZK-SNARKs,也可以稱為簡潔的非交互式零知識證明 (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)。

要使 Fiat-Shamir Heuristic 算法更加強大,需要使用承諾 (commitment)。承諾方案在許多加密協議中都是基本組成部分。承諾方案允許承諾者發布一個值 (即承諾),然後將它們綁定到某消息上而不披露它們 (隱藏)。

Pederson 承諾與 Polynomial 承諾是 ZK 證明使用的兩個最著名承諾方案。

但大約到 2013 年,ZK-SNARKs 才實際可行和實現,並真正用於應用中。

我推薦你們閱讀 Vitalik Buterin 寫的   一篇解釋 zk-SNARKs 如何可行的概論,這篇文章寫得很棒,解釋了 ZK-SNARKs 是如何實現的。只閱讀一遍可能還不能理解整篇文章。多閱讀 3、4 次,一旦你了解了 ZK-SNARKs 的原理,你會激動到全身起雞皮疙瘩。

跟 AI 與 Web3 一樣,我們似乎無法避免後量子世界到來,因此我們需要確保為 ZK-SNARKs 選擇使用的加密函數不能被量子計算機暴力破解。這就是為什麼我們還需要改進,以保證後量子安全性。

如果想要了解更多信息,可以觀看由 ACM 發布的談話

現在終於明白 ZK 證明是什麼了,但是它們應用到什麼地方呢?

在概念上它們有兩個主要用例:

  1. 擴容區塊鏈交易
  2. 個人數據隱私保護,例如在醫療衛生領域

區塊鏈擴容- ZK Rollups

Rollup 是一種擴容解決方案,在 L1 外執行交易,但在 L1 上發布交易數據。這種工作辦法可以讓 rollup 對網絡進行擴容,但依然受到以太坊共識的安全保護。

將計算轉移到鏈下進行,實際上可以處理更多交易。因為只需要將 rollup 交易的一些數據放進以太坊區塊中。

要做到這一點,rollup 交易在另一條鏈上執行,而這條鏈甚至可以運行一個 rollup 特定版本的 EVM。

執行完 rollup 上的交易後,下一步是將這些交易打包成一個 batch,然後發佈到以太坊主鏈上。

整個過程基本是執行交易、提取數據、壓縮,將其 rollup 到一個個 batch 中然後發到主鏈上,因而得名—— ”rollup“。

以太坊怎樣得知這些數據是有效的、而不是由惡意份子出於牟利目的而提交的呢?

每個 rollup 都會在 L1 部署一組智能合約,來負責處理存款、取款交易以及驗證證明。

證明也是主要區分不同類型 rollups 的因素。

Optimistic rollups 使用欺詐證明。與之相對, ZK rollups 採用有效性證明。

在 ZK rollups 中,發佈到 L1 的每個 batch 包含一個叫做 ZK-SNARK 的加密證明。當提交交易 batch 至 L1 之後,L1 上的合約可以快速驗證 ZK-SNARK 證明,無效的 batch 會被直接拒絕。

關於 ZK 與 Optimistic rollups 還有很多其他內容,比如它們的實現方法和限制。在這裡我只是簡短地介紹了一下它們的概念。

許多項目都在開發基於 ZK rollups 的以太坊擴容方案。一些比較知名的項目有 dYdX 、Loopring 、Polygon Miden 、 Polygon Hermez 等等。

隱私—— 日常生活應用

假設有兩個公司 A 和 B 想要使用區塊鏈作為運行與通信的媒介。

A 向 B 轉移資產。並且他們想讓這筆交易只有他們雙方知道。沒錯,區塊鏈會帶來透明度、互操作性、數據安全性、完整性還有其他優點,但是公司怎麼會想讓內部運行信息在公眾面前顯示呢?零知識證明就是最佳選擇。

比如你想隱私地給你的海外朋友轉賬,你會怎麼做呢?選擇零知識證明。

ZK 證明還可以在醫療健康、保險、電子投票、身份管理等領域產生深遠影響。

在醫療健康方面,ZK 證明可以保證 DNA 數據、個人信息、醫療報告、基本病史信息、藥物溯源、臨床試驗、醫療健康供應鏈、器官移植的隱私安全。

在保險方面,ZK 證明可以保證保險單和保險憑證數字信息、個人信息、車輛信息、理賠信息的隱私安全。

使用區塊鏈與 ZKP 的身份管理具有深刻意義。每個關聯 KYC (了解你的客戶) 的應用、學校、大學、支付軟件都要詢問我們的 ID 圖像,例如駕照、護照、投票 ID 、國家 ID。我們敏感的個人數據就這樣給他們了,我們甚至都沒有意識到這一點。通過 ZKP,我們可以保證以上所有 ID 信息的隱私安全,只需透露必要信息給供應商、應用與官方即可。實際上,使用 ZKP 我們可以完全改進這些 ID 的發行方式。

我們可以使用 ZK 證明對這些信息進行加密處理。當需要給到一些信息時,用戶授權並提供所需信息,而其他詳細資料可以保持隱藏。

這些都是在 2013 年後,ZK-SNARKs 在實際應用上足夠有效率才開始被開發者使用。這也是為什麼未來出現的 ZKP 應用會有很多發展空間。

2016 年上線的 Zcash 是一個成功應用 ZK-SNARKs 的重要產品,為用戶提供隱私交易功能。

ZK-SNARKs vs ZK-STARKs

最普遍的幾種 zkp 系統的對比

來源:Matter Labs 的 github 代碼庫

zk-STARK (zero-knowledge  scalable transparent  argument of knowledge) 代表零知識的可擴展、透明知識證明,zk-SNARK (zero-knowledge  succinct non-interactive  argument of knowledge) 代表零知識的簡潔、非交互式知識證明。

這兩種零知識技術都是非交互式的,這意味著代碼可被部署且自動作用。

Zk-SNARKs 底層依靠橢圓曲線保證安全性。在密碼學中,橢圓曲線在這樣一個基本假設下運行:根據一個公開已知的基本點來找到一個隨機橢圓曲線元素的離散對數是不可行的。也就是說,Zk-SNARKs 也需要信任設置。

信任設置是指密鑰的初始創建事件,它會被用於生成隱私交易的證明以及驗證那些證明。

如果用於創建信任設置的密鑰的保密信息沒有被銷毀,那麼這些保密信息可能會被利用通過虛假驗證來偽造交易。

SNARKs 的另一個限制是,在前文中我們已經知道了:它們在後量子世界中的可行性。

另一方面,在一個網絡中開始使用 STARKs 的話,不需要信任設置。這些都可認為是抗量子的。雖然 STARK 的證明大小要比 SNARK 大得多。

但是 STARKs 現仍處於初期階段,開發者們得不到太多支持,所以基於 ZK-STARK 的產品還需要一些時間才能成熟。

本文到這裡就結束了。這只是一篇簡短的關於 ZK 證明在 Web3 世界是怎樣運作的介紹。

感謝閱讀!

ECN 的翻譯工作旨在為中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及 ethereum.cn,若需長期轉載,請聯繫 eth@ecn.co 進行授權。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。