你的手裡有紅綠兩個顏色的小球,假如你有一個對顏色不敏感的朋友,你要如何在不告訴他小球具體顏色的情況下,讓其相信那是兩個不同顏色的球?可以考慮以下的操作。先將兩個球分別放在他的兩隻手中,記住左右手中的顏色;讓他將手放背後,隨機決定是否在背後交換手中的球,然後將手中的球展示給你並問他自己是否在背後交換了手中的球,這時,你透過對比他手中球的顏色來回答他的問題。零知識在這裡顯而易見:他在互動結束後除了相信他手中的球顏色不同之外並沒有得到任何額外的知識。
又如,有一個環形走廊,出口與入口在一個位置,中間被一道上了鎖的門隔斷, B聲稱他有鑰匙,那麼A如何在不拿到鑰匙的情況下知道B真的有鑰匙。這時,A只需要看到B從入口進入,並從出口走出,這樣A便可以相信B持有門的鑰匙這一事實。
針對隱私安全問題,S.Goldwasser、S.Micali以及C.Rackoff早在20世紀80年代初就已經提出了一種解決辦法,即“零知識證明”。它指的是證明者(被驗證者)能夠在不向驗證者提供任何有用的資訊的情況下,使驗證者相信某個論斷是正確的。證明者不直接告訴你答案,而是採用另一種表達方式來讓向你證明,直到你認為對方確實知道答案為止。早期採用的是互動式零知識證明,要求證明者和驗證者之間必須進行互動,但是互動容易作弊,因此也存在信用風險。80年代末,有人進一步提出了“非互動式零知識證明“的概念,採用了一個短隨機串來代替互動過程。
換句話說,零知識證明解決的問題就是:我如何在你不知道我是否知道這個事情的情況下,知道我確實知道這樣的事情。
零知識證明具有以下三個性質:
完備性
在證明者與驗證者都是誠實的情況下,證明過程符合規則並且正確,那麼這個證明一定是成功的,驗證者就能夠接受證明者。
合理性
沒有人能夠冒充證明者,即只有證明者能夠做出證明。
零知識性
證明過程執行完之後,驗證者只獲得了“證明者擁有這個知識”這條資訊,而沒有獲得關於這個知識本身的資訊。
零知識證明的零知識性保證了安全性,對於任意的甚至是惡意的驗證者,在與證明者的整個互動過程中所看到的訊息都僅僅只能用來驗證證明者的資訊真假,而無法獲得其真正內容。但是,零知識證明會引入較大的計算複雜度,導致效率會有一定程度的降低。
零知識證明提供了一種能夠向別人證明擁有某個資訊,但不需要透露該資訊具體內容的一種方法,在密碼學中具有廣泛的應用。
更多區塊鏈資訊:www.qukuaiwang.com.cn/news