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