神奇的零知識證明和zkSNARK究竟是什麼
所謂零知識證明(zero-knowledge proofs),最初是由麻省理工教授Shafi Goldwasser、Silvio Micali(注:兩人都是圖靈獎得主)以及另一位密碼學大牛Charles Rackoff於20世紀80年代初共同提出的[1]。有了零知識證明,就允許一方(證明者)說服另一方(驗證者),一個給定的論斷是真實的,而不會洩露任何超過論斷本身有效性的資訊。
由於這一話題確實艱澀難懂,這裡便以著名的《阿里巴巴洞穴》[2]為例,以便讓讀者更好地瞭解零知識證明的概念:
“很久以前,在東部城市巴格達有一位名為阿里巴巴的老人,每天阿里巴巴都會跑去集市買賣東西。
某一天在巴格達集市,一名小偷從阿里巴巴的手中搶走了一個錢包。
阿里巴巴追趕這名小偷,而小偷則逃進了一個洞穴,這個神祕的洞穴有兩個蜿蜒的入口:一個向左,另一個向右。
阿里巴巴並沒有看到小偷走的是哪一條路。對此,阿里巴巴無奈只能選擇其中的一條,他決定從左洞口進入,遺憾的是,很快他便走到了左手通道的盡頭。這一路上,他仔細搜遍了每一個角落,但並沒有找到小偷。阿里巴巴自言自語地表示小偷可能在另一個通道。於是他搜尋了右邊的通道,奇怪的是,這個通道也有個死衚衕,而他還是沒有找到那個小偷……
“這個洞穴很奇怪,” 阿里巴巴自言自語道,“那個該死的小偷跑哪去了?”
第二天,又一名小偷順走了阿里巴巴的包裹跑了。詭異的是,這個小偷又進入了那個奇怪的洞穴,阿里巴巴由於體力差的原因,他並沒有看到這個小偷的走向,這一次他選擇從右邊開始搜尋。他一路走到右邊通道的死衚衕,但仍然沒有找到小偷。他認為,第二名小偷也像第一個小偷那樣幸運地離開了,靜靜地融入了擁擠的集市。
日子一天天過去,每天都會有小偷來光顧阿里巴巴這位老者。而阿里巴巴則總是會慢上一拍,從來沒有抓到過這些小偷。到了第四十天,第四十名小偷順走了阿里巴巴的頭巾,然後又逃入了那個奇怪的洞穴,和以前一樣,阿里巴巴依舊沒有看到小偷的身影。這一次,他選擇從左側通道開始搜尋,但遺憾的是,還是沒有找到小偷。
阿里巴巴感到非常困惑,按以前的解釋,這第四十個小偷和其他三十九個小偷一樣也是幸運的?但這樣的解釋未免有些牽強,連他自己都不信了。這是因為,四十個小偷全都幸運逃走的概率只有萬億分之一!所以,阿里巴巴對自己說,一定存在著另外一種更可能的解釋。
他開始懷疑那個奇怪的洞穴保護了一個祕密!對此,他決定躲藏在右邊通道的袋子之下。在經歷一段難熬的等待之後,他看到了一名小偷急匆匆跑了過來,然後對著牆壁低聲說道:“芝麻開門”。隨後,阿里巴巴便看到了驚人的一幕,那面牆壁竟然打開了,當小偷逃走之後,這面牆壁又合上了!但阿里巴巴非常高興,因為他發現了這個奇怪洞穴的祕密。
他發現,當這面牆壁開啟時,洞穴的左手通道和右手通道是相連著的。阿里巴巴一遍又一遍地試驗了這個魔法詞,並最終設法替換掉了魔法詞。第二天,小偷就被阿里巴巴給抓住了……
出自《如何向孩子解釋零知識證明》
而zkSNARK,則是零知識證明的一個變體,它使得證明者能夠簡潔地使任何驗證者相信給定論斷的有效性,並且實現計算零知識,而不需要證明者與任何驗證者之間進行互動。
在零知識當中,zkSNARKs可被用於證明和驗證計算的完整性,並以NP宣告表示。一個掌握NP宣告驗證部分知識的證明者,可以產生一個簡潔的證明,證實了NP宣告的真實性。任何人都可以驗證這個簡短的證明,其提供了以下這些屬性:
零知識:驗證者除了從證明中瞭解到宣告的真實性之外,他什麼也無法得到。
簡潔性:證明簡短,易於驗證;
非互動性:證明不需要證明者和驗證者之間來回互動
可靠性:證明在計算上是正確的(即偽造假NP宣告的證明是不可行的)這種證明系統也被稱為論證;
知識證明:該證明不僅證明NP宣告是真實的,而且證明者知道為什麼是這樣的。
這些屬性共同構成了zkSNARK,它代表了一種零知識、簡潔、非互動式的知識論證。
對此話題,伯克利大學區塊鏈顧問Howard Wu研究頗深,他在《SNARKs的崛起》[3]這一課程當中詳細介紹了零知識證明、zkSNARKs以及libsnark的概念,有興趣的讀者可以瞭解一下。
以下為中文譯文:
1.zkSNARK教程與開發環境:https://github.com/howardwu/libsnark-tutorial↵
2.如何向孩子解釋零知識證明:https://link.springer.com/content/pdf/10.1007%2F0-387-34805-0_60.pdf↵
3.SNARKs的崛起:
參考資料:https://drive.google.com/file/d/167mgTAXcbRpZRc5hCFPwwhidf8wpKeUY/view
https://github.com/howardwu/libsnark-tutorial
https://link.springer.com/content/pdf/10.1007%2F0-387-34805-0_60.pdf
編譯:灑脫喜
稿源(譯):巴位元資訊(http://www.8btc.com/zksnark-zero-knowledge-proofs)