一文帶你讀懂零知識證明

原標題:科普| 最強白話講懂零知識證明

零知識證明zero-knowledge proofs,簡稱ZKPs,我們都知道區塊鏈本身的一個關鍵優勢就是透明性,但是在很多情況下,智能合約應用卻出於各種商業或法律原因需要保障數據隱私,比如傳入真實有效的數據來觸發智能合約執行,但這涉及到信息會有洩露的風險。如何避免這種情況的發生呢?零知識證明的出現很好地解決了這個問題。

零知識證明(Zero Knowledge Proof)的研究最早始於1985年,由MIT教授Shafi Goldwasser, Silvio Micali 和密碼學大師Charles在《The Knowledge Complexity of Interactive Proof-Systems》論文中提出。正是這篇文章提出了零知識證明這個偉大概念,並逐步成為了現代密碼學理論的根基之一,而Shafi Goldwasser和Silvio Micali也於2012 年獲得了有“計算機界諾貝爾獎”之稱的圖靈獎。零知識證明系統所要完成的任務是「證明某一個事實並且不洩露知識」。這個過程就是零知識證明。

聽起來還是有些晦澀難懂?講個簡單的例子:

阿里巴巴的故事想必大家都聽過,有一天,劫匪抓住了阿里巴巴,拷問他想要得到進入山洞的咒語,但是聰明的阿里巴巴知道,如果把咒語告訴了劫匪,那麼他也就徹底沒有了價值,肯定會將他殺掉,死活不說,那麼也會殺掉他,於是他想到一個好辦法,即能不洩露咒語,又能讓劫匪相信他知道咒語。

阿里巴巴說:“你們離我一箭遠,然後用弓箭指著我,當你們舉右手我會念咒語打開石門,當你們舉左手我會念咒語關上石門,如果我逃跑或沒有做到,證明我不知道咒語,你們可以一箭殺掉我。”劫匪同意了這個提議,多次嘗試後阿里巴巴都成功按照指示讓石門打開或關上了,但是由於有一定距離,他們聽不清楚咒語到底是什麼,就這樣,阿里巴巴沒有透露任何消息就向劫匪證明了他的真實性。

這個例子非常簡單,雖然只是零知識證明機制簡單的概念演示,真正的零知識證明運用的是密碼學,在不透露數據的情況下證明數據的存在。總而言之,要創建零知識證明,驗證者(劫匪)需要讓證明者(阿里巴巴)執行一系列操作,而證明者只有在得知底層信息的情況下才能正確執行。如果證明者亂蒙一個結果,那麼驗證者極有可能在驗證中發現並證明他的錯誤。那麼零知識證明應用在區塊鏈中有哪些價值呢?

自從這個概念被提出來後,人們就將其應用到了各個領域,比如身份認證系統、存證系統、數據共享、水印檢測,密鑰交換等等,在隱私數據越來越受到大家關注的今天,零知識證明在隱私數據保護的應用中大放異彩:

保護隱私數據:日常生活中,比如只想證明考生及格了,但不想透露具體考了多少分;買保險的時候,只想證明自己沒有心髒病,卻不想暴露病例的所有信息,不管是哪種信息,都可以把不想暴露的部分換成一個很像隨機數字的零知識證明,能夠證明數據真實可信。

身份認證:在使用網站時,用戶可以向網站證明他擁有私鑰,或者知道某個只有自己才知道的答案,網站不用知道密鑰,但可以通過零知識證明確認用戶身份,通過去中心化存儲,服務器可以向用戶證明數據被妥善保存下來且不被洩露。

計算壓縮與區塊鏈擴容:在傳統的區塊架構中,同樣的計算被重複多次,比如簽名校驗,交易的合法性校驗,智能合約執行等一些其他的地方,因為有了計算的證明,同一個計算就不需要多次重複了,計算過程可以被零知識技術證明壓縮。

由此,零知識證明真正解決了「數據的信任」,實現了「隱私數據的保護」,也讓區塊鏈真正實現了「信任機器」這一構想。

Total
0
Shares
Related Posts