零知識證明 - zero knowledge proofs


零知識證明(Zero—Knowledge Proof)起源於最小泄露證明。設P表示掌握某些信息,並希望證實這一事實的實體,設V是證明這一事實的實體。假如某個協議向V證明P的確掌握某些信息,但V無法推斷出這些信息是什麼,我們稱P實現了最小泄露證明。不僅如此,如果V除了知道P能夠證明某一事實外,不能夠得到其他任何知識,我們稱P實現了零知識證明,相應的協議稱作零知識協議。


https://dci.mit.edu/zkledger/


假設: Alice 有兩顆撞球, 一紅一綠, 除了顏色外, 其他都相同, 而 Bob 是紅綠色盲, (Alice 不是色盲)這兩顆顏色對 Bob 來說是一樣的. Bob 在不透過第三方, 且不能用其他方式探測球本身的顏色狀況下,當Alice 和 Bob 說這兩顆球顏色不同時,Bob 該如何分辨Alice說的是真的?(Alice 也有可能真的拿兩顆顏色相同的球)

suppose that Alice has two billiard balls, one red and one green (they are otherwise identical). Bob, who is colorblind, cannot tell the difference between the balls, so he assumes that they are the same color. Alice wants to convince Bob that they are in fact different without revealing the colors of the balls to Bob,

方法1: Alice 把兩顆撞球給 Bob, 讓 Bob 一手拿一顆後, Bob在背後任意交換左右手的撞球, 再拿出來給 Alice 看, 讓 Alice 說原本Bob左手拿的撞球是哪一顆. 如果進行很多次後, Bob 會相信 Alice 不是用猜的, 而是真的這兩顆顏色不同,

so Bob takes both balls, puts them behind his back, and either switches them or keeps them in the same hand. If Alice can correctly answer each time whether they have been switched or not, then she has some knowledge about the balls, but has never revealed what the color of either ball is. If she were to answer incorrectly once, then we know that she was guessing each time.


零知識證明: Bob 的確讓 Alice 相信所說這兩顆球顏色不同, 但Alice 其實並不曉得哪一顆是紅的, 哪一顆是綠的 所以也起源於 最小洩漏證明.


https://wiki.mbalib.com/zh-tw/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E

零知識證明(Zero—Knowledge Proof)起源於最小泄露證明。設P表示掌握某些信息,並希望證實這一事實的實體,設V是證明這一事實的實體。假如某個協議向V證明P的確掌握某些信息,但V無法推斷出這些信息是什麼,我們稱P實現了最小泄露證明。不僅如此,如果V除了知道P能夠證明某一事實外,不能夠得到其他任何知識,我們稱P實現了零知識證明,相應的協議稱作零知識協議。

--

https://www.chainnews.com/articles/993287340177.htm

阿拉伯童話《一千零一夜》裡的零知識證明:

阿里巴巴與四十大盜的故事其中一個片段。
阿里巴巴會芝麻開門的咒語,強盜向他拷問打開山洞石門的咒語,他不想讓人聽到咒語,便對強盜說:「你們離我一箭之地,用弓箭指著我,你們舉起右手,我念咒語打開石門,舉起左手,我念咒語關上石門,如果我做不到或逃跑,你們就用弓箭射死我。」
--

有 A,B, C, D 四位數學家(這些人推理不會犯錯的假設),A被關進屋子裡,B.C.D三人在外面,挨著門依序站好, 背後貼了一張紙,三個人中,有兩個人背後畫X, 一個人背後畫O; B站最前面,看不到大家背後貼的,C可以看到B的,D可以看到B和C的;BCD三人每五秒如果算出自己背後貼的是O就舉手;每五秒一有人舉手,會有人告訴A有人舉手,和這時秒針時間,但A不知道是誰舉手,A如何得知是誰背後貼O?


第五秒時,若有人舉手,則背後貼O的是D,因為D看到BC都是貼X, 如果沒有,則O是在B或C身上
第十秒時,若有人舉手,則背後貼O的是C, 因為C看到B背後貼X
第十五秒時才舉手的話,則應該是B

A 只知道第幾秒有人舉手,但不知道是誰舉手,以此可以推導出誰背後貼O
這方法對應到密碼學就是方法隱藏 (像密碼表), 只知道加密結果.



留言

熱門文章