如何證明一個秘密:來自魔術師的零知識證明指南

作者:Michael Blau,a16zcrypto投資合夥人;翻譯:金色財經xiaozou

任何足夠先進的技術都與魔法無異,而其中一個類似科幻小說的領域就是零知識證明(ZKP),ZKP是一種加密工具,可以解決Web3世界裡的兩個關鍵挑戰:可擴展性和隱私性。尤其需要注意的是,ZKP可能是解鎖更低交易費用、設計新的隱私保護應用的關鍵,結果就是,我們有望迎來下一批10億加密用戶。甚至在加密世界之外,ZKP有一天可能還會幫助敏感數據的安全傳輸,打擊非法金融或打擊虛假信息。

但什麼是ZKP?對於工程師、研究人員和加密社區來說,有許多很好的解釋,但它們並不能讓加密技術或計算機科學方面經驗較少的受眾看得懂。即使有大量可用的比喻——從Waldo到阿里巴巴的Cave——也不容易找到一個準確、易於理解的解釋,可以充分說明ZKP的超能力。

所以,我在本文結合了我的加密和魔術背景來探索嘗試做出一個新比喻:把ZKP想像成一個偉大的魔術。

但首先,讓我們了解一下:什麼是零知識證明?

我想先分享ZKP的高級定義(特別是關於zk-SNARK的定義),以及它的各種屬性,然後再將這些屬性映射到魔術的比喻中。

讓我們對a16z加密研究夥伴Justin Thaler對SNARK的定義進行擴展:“zk-SNARK允許某人(prover)向不信任的一方(驗證者)證明他們知道一些數據,而無需透露任何關於數據本身的信息。”或者,正如麻省理工學院AIP ZK課程所提到的,“零知識協議允許我向你證明我知道一件事,而不需要告訴你這件事的具體內容。”

這在公共區塊鏈的背景下是令人興奮的,因為ZKP可以在保護隱私信息的同時,允許任何人(毫無疑問地)驗證信息的真實性。 zk-SNARK還很簡潔高效:“簡潔”意味著證明的大小比你所證明的數據要小。 “高效”意味著驗證者驗證證明比分析原始數據更快(在以太坊上,這意味著智能合約處理的數據更少,用戶的gas成本更低)。 L2區塊鏈可以利用zk-SNARK的簡潔性和高效性,允許去中心化應用以更低的成本處理更多的數據。

總之,zk-SNARK有兩個主要屬性:

· 隱私:你正在證明的數據(或事實或“知識”)不會有任何信息透露給驗證者。

· 簡潔高效:驗證證明比直接檢查原始數據效率更高。

即使是這種高層描述聽起來也有點像謎語:一個人如何在不分享信息的情況下證明自己知道某件事?

讓我們再看一遍這個定義,但這一次,讓我們使用一些魔術技巧。

零知識證明魔術

簡單地說,魔術就是零知識證明。在魔術中,魔術師聲稱知道一個秘密,使他們能夠表演魔術。但是他們不想把這個秘密透露給觀眾——那會毀了他們的把戲。

將此擴展到ZKP:將魔術師視為“prover”,將他們的觀眾視為“驗證者”。一個成功的魔術表演(希望收穫難以置信的驚嘆和熱烈的掌聲)類似於一個“有效的”證明:這個魔術成功了,所以魔術師必須知道魔術表演的秘密。當然,如果錯覺不起作用,證明是“無效的”,觀眾就會失望,魔術師可能實際上並不知曉秘密方法。

魔術展示了ZKP的一個屬性:隱私。但是簡潔性和高效性呢?讓我們回到這個比喻中來……

觀眾可以完全跳過表演,只要求魔術師分享魔術背後的秘法。但魔術的秘密可能是複雜而精細的。即使只是解釋一個魔術的方法,以及它所有的微妙之處和細微差別,也需要很長時間才能明白個大概,更不用說理解其中的奧秘了。有時,當被要求透露他們的秘密時,魔術師可能會故意向觀眾透露一個“錯誤”的解決方案,從而引導他們走上錯誤的道路。觀眾如果不能自己切實掌握這個技巧,就不能明確地確定這個秘法是否真的有效——掌握這個技巧可能需要幾天、幾個月甚至幾年的時間。

因此,就如直接檢查秘法的正確性實際上是非常耗費時間和精力的——即使魔術師願意向觀眾透露秘密——ZKP也是如此。對於觀眾來說,通過簡單地欣賞表演來驗證秘法的有效性要快得多。

復牌

舉一個簡單的例子:我聲稱知道一個秘法,可以讓我立即將一副混著上下兩面被打亂的紙牌恢復為單面牌。我想向你證明我有這種能力,但又不想透露具體原理。在魔術結尾讓大家看到一副單面牌的行為是一個有效的證明,證明我一定知道“恢復”紙牌的秘法。而當我讓你見到單面牌的時候,你就可以立即驗證我的說法,這比親自學習魔術技巧要快得多。

Total
0
Shares
Related Posts