零知識證明:像5歲孩子一樣解釋它(萬圣節版)
?解釋加密技術很難,用簡單的話解釋加密技術更難。向孩子解釋零知識證明?很簡單! 所以,在這里你可以看到--用一些萬圣節的糖果來解釋ZKP。
此前該系列文章:Explain Like I’m 5: End-to-end Encryption[1]
零知識協議
零知識協議(或零知識密碼證明,ZKP)是一種不交換密碼的認證方式,這意味著它們不能被盜。這很酷,因為它使你的通信非常安全和受保護,沒有人可以發現你在通信的內容或你在相互分享什么文件。
ZKP允許你向通信另一 "端 "的某人證明你知道一些秘密(或許多秘密),而實際上卻沒有透露。術語 "零知識 "起源于這樣一個事實:關于秘密的任何("零")信息都沒有透露,但第二方(稱為 "驗證者")(正確地)相信第一方(稱為 "證明者")知道有關的秘密。為什么你需要證明你知道這個秘密而不告訴它?當你不信任對方,但仍然需要說服對方你知道這個秘密。那么這個過程是什么樣子的呢?
糖果棒和百萬富翁
讓我們在 Bob 和 Alice 的幫助下進行說明,他們為萬圣節準備了一些巧克力棒。
他們想知道他們是否收到了相同數量的糖果,但沒有透露他們的巧克力數量,因為他們不想分享。
假設他們的“不給糖就搗蛋”袋子里正好有 10、20、30 或 40 塊巧克力。
為了比較他們得到的巧克力塊的數量而不分享實際數量,Bob 得到了 4 個可上鎖的盒子,并在每個盒子里貼上標簽,上面寫著 10、20、30 或 40(巧克力棒)。
然后 Bob 扔掉除了盒子的鑰匙對應于他得到的巧克力棒的數量(假設他有 20 塊巧克力棒)所有鑰匙并離開。
Alice拿了 4 張小紙片,在其中一張紙上寫上“+”,在其他紙上寫上“-”。
然后,她將“+”部分從一個槽中滑入盒子,盒子中的數字與她得到的糖果數量相對應(假設她有 30 塊糖果),然后將帶有“-”的紙片滑入其余部分盒子和樹葉。
Bob 返回并打開他仍然有鑰匙的那個盒子——那個盒子與他得到的糖果數量相對應——然后看它是否包含“+”或“-”。
如果是“加號”,則Alice的包里有相同數量的巧克力棒。如果紙條上寫著“-”,則表示他們有不同數量的糖果(但仍然不會互相分享)。
我們知道 Bob 的包里有 20 塊巧克力,而 Alice 的包里有 30 塊巧克力。通過打開盒子并找到上面有“減號”的那張紙,Bob 得知他和 Alice 的糖果數量不同。但他無法查明Alice的巧克力塊是多了還是少了。
Alice也回來了,看到Bob有一張紙,上面有一個“減號”。所以他有不同數量的糖果。但是Alice和Bob仍然不知道他們每個人有多少塊巧克力。他們只知道他們沒有相同的數量。
這個例子的形式略有不同,被廣泛稱為Yao’s Millionaire’s Problem[2],其中兩個百萬富翁想知道他們是否擁有相同數量的錢,但沒有透露確切數量。這是 ZKP 如何工作的一個簡單示例。
原文:https://hackernoon.com/eli5-zero-knowledge-proof-78a276db9eff