1985 年,MIT 研究員 Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 在論文《The Knowledge Complexity of Interactive Proof Systems》首次提出零知識證明(Zero Knowledge Proof)的概念。
零知識證明:是指一方(證明者)可以在不揭示信息本身或任何額外信息的情況下,向另一方(驗證者)證明一個給定的聲明是真實的。
為了實現這一點,零知識證明協議依賴於將一些數據作為輸入並返回「真」或「假」作為輸出的算法。
零知識證明協議需滿足 3 個條件:
- 完整:如果證明者輸入有效,則零知識協議始終返回為「真」。因此誠實的證明者能說服同樣誠實的驗證者。
- 健全:如果證明者輸入無效,則零知識協議無法返回為「真」。因此作弊的證明者無法欺騙誠實的驗證者相信該聲明為真。
- 零知識:除了了解給定的聲明為真或假以外,驗證者不知曉該聲明相關的任何其他信息。
常見的零知識證明有兩類:
- ZK-SNARKs,全稱 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge
- ZK-STARKs,全稱 Zero-Knowledge Scalable Transparent Argument of Knowledge
如需了解更多(如 ZK-SNARKs 和 ZK-STARKs 的區別等),請閱讀下方參考資料。