零知識證明——通俗易懂的解釋

你的手裏有紅綠兩個顏色的小球,假如你有一個對顏色不敏感的朋友,你要如何在不告訴他小球具體顏色的情況下,讓其相信那是兩個不同顏色的球?可以考慮以下的操作。先將兩個球分別放在他的兩隻手中,記住左右手中的顏色;讓他將手放背後,隨機決定是否在背後交換手中的球,然後將手中的球展示給你並問他自己是否在背後交換了手中的球,這時,你通過對比他手中球的顏色來回答他的問題。零知識在這裏顯而易見:他在交互結束後除了相信他手中的球顏色不同之外並沒有得到任何額外的知識。

 

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=3682577015,2466492613&fm=173&app=25&f=JPEG?w=456&h=454&s=B32240A17AB78CCA4688119D0300D08A

 

又如,有一個環形走廊,出口與入口在一個位置,中間被一道上了鎖的門隔斷, B聲稱他有鑰匙,那麼A如何在不拿到鑰匙的情況下知道B真的有鑰匙。這時,A只需要看到B從入口進入,並從出口走出,這樣A便可以相信B持有門的鑰匙這一事實。

 

http://p0.ssl.qhimgs4.com/t01e49b9542379d97a6.jpg

 

針對隱私安全問題,S.Goldwasser、S.Micali以及C.Rackoff早在20世紀80年代初就已經提出了一種解決辦法,即“零知識證明”。它指的是證明者(被驗證者)能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。證明者不直接告訴你答案,而是採用另一種表達方式來讓向你證明,直到你認爲對方確實知道答案爲止。早期採用的是交互式零知識證明,要求證明者和驗證者之間必須進行交互,但是交互容易作弊,因此也存在信用風險。80年代末,有人進一步提出了“非交互式零知識證明“的概念,採用了一個短隨機串來代替交互過程。

 

換句話說,零知識證明解決的問題就是:我如何在你不知道我是否知道這個事情的情況下,知道我確實知道這樣的事情。

 

http://img.mp.itc.cn/upload/20161207/feeca9e2324641988590da47632be3ae_th.jpg

 

零知識證明具有以下三個性質:

完備性

         在證明者與驗證者都是誠實的情況下,證明過程符合規則並且正確,那麼這個證明一定是成功的,驗證者就能夠接受證明者。

合理性

         沒有人能夠冒充證明者,即只有證明者能夠做出證明。

零知識性

         證明過程執行完之後,驗證者只獲得了“證明者擁有這個知識”這條信息,而沒有獲得關於這個知識本身的信息。

 

零知識證明的零知識性保證了安全性,對於任意的甚至是惡意的驗證者,在與證明者的整個交互過程中所看到的消息都僅僅只能用來驗證證明者的信息真假,而無法獲得其真正內容。但是,零知識證明會引入較大的計算複雜度,導致效率會有一定程度的降低。

 

零知識證明提供了一種能夠向別人證明擁有某個信息,但不需要透露該信息具體內容的一種方法,在密碼學中具有廣泛的應用。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章