神奇的零知識證明和zkSNARK究竟是什麼

2021-09-11 13:45:31 字數 1931 閱讀 3597

所謂零知識證明(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教程與開發環境:

2.如何向孩子解釋零知識證明:

3.snarks的崛起:

編譯:灑脫喜

稿源(譯):巴位元資訊(

零知識證明

零知識證明的幾個例子 原創 1 a要向b證明自己擁有某個房間的鑰匙,假設該房間只能用鑰匙開啟鎖,而其他任何方法都打不開。這時有2個方法 一 a把鑰匙出示給b,b用這把鑰匙開啟該房間的鎖,從而證明a擁有該房間的正確的鑰匙。二 b確定該房間內有某一物體,a用自己擁有的鑰匙開啟該房間的門,然後把物體拿出來...

零知識證明

定義 能夠在不向驗證者提供有效資訊的情況下,使得驗證者相信某種論斷的正確性。淺顯易懂的說明 zcash 零知識證明的三條性質 1.完備性 驗證方和證明方都是誠實的,並遵循證明的每乙個步驟 2.合理性 沒人能假冒證明方,阿里巴巴和強盜的故事,存在一種可能的情況 阿里巴巴不知道咒語,但和別人串通好,強盜...

零知識證明

零知識證明 zero knowledge proofs,簡寫為 zkps,最初由 s.goldwasser s.micali 及 c.rackoff 在 1985 年的 互動證明系統的知識複雜性 提出,指的是證明者能夠在不向驗證者提供任何有用資訊的情況下,使驗證者相信某個論斷是正確的。允許證明者 p...