零知识证明详解
我們在提到區(qū)塊鏈的隱私計算和數(shù)據(jù)加密交互時,總會提到零知識證明,那么,這個究竟是什么呢?
零知識證明的概念
從“零知識”一詞中,我們便可以看出,它對于信息的需求度是“零”,即證明方可以不用透露任何具體的信息便可以向驗證方證明加密轉態(tài)下的數(shù)據(jù)是真實可信的。
傳統(tǒng)互聯(lián)網中為了使數(shù)據(jù)能夠更好的交互,是處于公開的狀態(tài),一旦數(shù)據(jù)加密,那么在交互時便需要先解密再交互。數(shù)據(jù)交互效率和隱私性不能同時滿足。零知識證明的產生,便是實現(xiàn)數(shù)據(jù)可用而不可見,在保證數(shù)據(jù)隱私性的同時,還能保證數(shù)據(jù)交互效率。
目前的零知識證明主要有兩種表現(xiàn)形式,交互式與分交互式。
交互式零知識證明
為了更好的了解交互式零知識證明,我們這里有一個有趣的例子來為大家進行描述。
在下面的這個洞穴中,C 和 D 之間有一道門,必須使用密碼才能打開才能通過,否則便是 C/D 便都是一個死胡同。現(xiàn)在,小明告訴小紅說他知道 C/D 門的密碼,但他不想說出這個密碼,那么小明要如何使小紅相信呢?
那么,在這個過程中,小明撒謊,即不知道 C/D 門之間密碼的機會有多少呢?我們可以根據(jù)概率學輕松得出,它的值為2的n次方之一。
從這個概率中,我們可以看出,在交互式零知識證明中,重復的次數(shù)越多,數(shù)據(jù)的真實性也就越高。當這個概率足夠高時,我們幾乎可以認定信息是真實可信的。
當然,在這場交互式零知識證明中,我們也發(fā)現(xiàn)了一些問題:
非交互式零知識證明
交互式的零知識證明存在一些弊端,那么我們可以解決這些弊端么?這里早在1986年,便由著名的密碼學專家 Fiat 與 Shamir 發(fā)明了 Fiat-Shamir heuristic (啟發(fā)式)算法,利用 Hash 函數(shù)將交互式零知識證明轉換為非交互式零知識證明,即所謂的 ZK-SNARKs。這樣便大幅減少通信步驟而提高了通信的效率。
ZK-SNARKs 會允許承諾者發(fā)布一個承諾值,并將其隱藏。而原本需要向驗證方提交的確切答案也會轉變?yōu)榱硗庖粋€可驗證的哈希值,驗證者可以根據(jù)這個哈希值與承諾值之間進行驗證,進而證實數(shù)據(jù)的真實性。
總結
ZK-SNARKs 盡管在理論上提出了很久,但直到2013年才真正被應用,但 ZK-SNARKs 的出現(xiàn),讓隱私計算的實現(xiàn)有了更加簡潔高效的方案,區(qū)塊鏈技術本身對隱私計算的強烈需求,也讓 ZK-SNARKs 成為了區(qū)塊鏈中一個十分關鍵的核心。隨著技術的不斷完善,ZK-SNARKs 帶來的隱私計算也將真正釋放它的強大潛力。
總結
- 上一篇: 尼古拉*特斯拉与通古斯大爆炸
- 下一篇: 中国式秘书(文摘)