1985年,來自MIT的S.Goldwasser、S.Micali 及 C.Rackoff 在研究論文《互動式證明系統的知識復雜性》中首次提出零知識證明。這是一種用于證明者在不泄漏任何有效信息的情況下證明其知識正確性的驗證協議。
為了方便理解,不妨舉個例子:
小O擁有一個帶密碼的盒子,他想在不告訴小K真正密碼的情況下,讓他相信自己知道盒子密碼。那怎么做呢?
小O想出了一個辦法:他讓小K寫下一個全世界只有他才知道內容的紙條,然后由小K親手放進打開的盒子中并鎖上。然后小O將盒子拿走后利用密碼取出小K放在盒子里的紙條,第二天再將紙條給到小K。在這個過程中,小K并沒有得知任何此前自己不知道的信息(盒子的密碼),但還是必須相信小O知道密碼這件事情。這個驗證過程就是零知識證明。
簡單來說,零知識證明就是以最小的信息交換量在雙方之間建立信任,在不透露更多信息前提下,A可以向B證明某件事/某個結論是正確的。
根據證明過程中的交互方式,可分為“交互式零知識證明”和“非交互式零知識證明”兩大類。
交互式零知識證明,是指為了證明某件事,證明者需要和驗證者反復互動,就像是測謊儀一樣:驗證者不斷提出問題來挑戰證明者承諾的真實性,證明者則需要不斷回應這些挑戰,直到使驗證者相信。其流程如下所示:

早期的零知識證明都是交互式的。這種方式很直接,但過程冗長且效率低下:雙方必須同時在線完成驗證,并且每次只能取信于一個驗證者,如果要取信多人,則要重復上述過程。這個過程,想想就累。
于是,非交互式零知識證明出現了。在非交互式零知識證明中,證明者和驗證者提前約定驗證規則,證明者按照承諾提供數據,驗證者則可隨時驗證這些數據的正確性。這種非交互式驗證,雙方不用同時在線,并且證明者只需要提供一次證明。實際場景中應用的基本都是非交互式零知識證明,比如ZK-SNARK和 ZK-STARK。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。