零知識證明 I:介紹

什麼是零知識證明?

想象一下有一個登錄頁面。要登錄您的帳戶,您通常需要提供一個用戶名,用於標識您自己的身份,以及一個密碼,用於確認您就是您所說的人。假設您實際上是上述人員(並且沒有忘記您的密碼),證明您知道您的密碼是非常簡單的。您只需輸入即可。這是必需的,因爲平臺不相信您在沒有證據的情況下就是您所宣稱人。

但是,如果您不信任該平臺怎麼辦?如果您不想讓平臺知道您的密碼怎麼辦?問題變得更加棘手,而這正是使用零知識證明來回答的問題。

抽象地說,零知識證明是一種用於準確證明某事是真實的方法,而無需提供任何其他信息。在加密貨幣相鄰應用中,“零知識證明”通常是指此類證明的一種特定類型,知識的零知識證明。

知識的零知識證明是一種證明某些祕密信息知識的方法,而不會將信息泄露(即使是向請求證明的一方)。擁有祕密信息的人通常被稱爲證明者,而要求證明的一方通常被稱爲驗證者。

這些限制使示例更難構建,但感謝 Jean-Jacques Quisquater 等人撰寫的如何向您的孩子解釋零知識協議的論文,我們有一個方便的規範示例:

阿里巴巴的洞穴

在這個例子中,有一個洞穴包含一個被鎖着的門切斷的環路。該證明者(P)旨在證明自己有這扇門的鑰匙。P 進入洞穴,驗證者(V)看不進洞穴。P 從兩條路徑中選擇一條,然後到達洞穴另一側那扇鎖着的門。V 看不到 P 選擇了洞穴的哪一側。V 然後進入洞穴,大聲呼喊 P 應當從兩個路徑中的一個退出洞穴。

第一次 P 出現在正確的一面時,只有 50% 的機會他們確實擁有鑰匙……但是可以重複挑戰以達到 V 的滿意,每次重複都會增加信心。舉個例子,如果 P 在右側出現 100 次,那麼 P 沒有鑰匙的機率只有 0.000000000000000000000000000079% 。

說認真的,什麼是零知識證明

零知識證明必須是完整的,即證明者必須能夠說服驗證者,假設證明者和驗證者是誠實的。零知識證明必須是可靠的,即如果證明者不誠實,則證明者至多有一些可以忽略不計的概率來說服驗證者。最後,零知識證明必須是零知識,即驗證者除了知道該陳述是真的外,不會獲得任何其他東西。

最後一個標準是區別點,以及爲什麼零知識證明如此麻煩。它還要求零知識證明是概率性的,即在洞穴示例中,從技術上講,證明者只能猜測驗證者會要求從哪一側出來,(實際上驗證者會問很多次,靠猜測的可能性可以忽略不計)。但是這存在泄祕串通的可能性:如果其他人要觀察這種的互動,他們無法確定證明者知道祕鑰,因爲證明者和驗證者可能事先同意了一個序列,正是爲了欺騙這些觀察者。

在我們的下一篇文章中,我們將看看無知識證明的一些特定於加密的應用程序,並討論它們在 Web3 開發中的作用。

零知識證明 I:介紹

掃碼二維碼,加入 Status 中國社區