從小故事帶你理解零知識證實 | 區塊鏈一千零一問

開胃小故事

阿里巴巴證實

阿里巴巴被強盜抓住,爲了保命,他須要向強盜證實本身擁有打開石門的密碼,同時又不能把密碼告訴強盜。他想出一個解決辦法,先讓強盜離開本身一箭之地,距離足夠遠讓強盜沒法聽到口令,足夠近讓阿里巴巴沒法在強盜的弓箭下逃生。阿里巴巴就在這個距離下向強盜展現了石門的打開和關閉。網絡

失物認領證實

小李子不當心丟了錢包,急急忙忙跑去派出所報案,幾天以後派出所打電話聯繫他去失物認領,因而:
「姓名"
「小李子」
「年齡」
「別問,問就是18」
「性別」
「emmm…要不你擡頭本身看下?」
「錢包還想不想要了?」
「要啊,那確定得要,我本身的錢包我爲啥不要」
「你怎麼證實錢包是你的?」
「錢包是黑色的」
「這個證實不了,黑色的錢包多了去了」
「裏面有幾張銀行卡和現金」
「廢話,錢包不放卡和現金放什麼?」
「有四張卡,還有250的現金」
「還有別的信息麼?這些證實不夠充分?」
「裏面第二個夾層裏面有個內夾層,裏面有一張我珍藏多年的照片」
「嗯,行了,籤個字把錢包領回去吧」
最後,小李子喜滋滋的拿着錢包回家了。ide

順便附上珍藏圖片:區塊鏈

在這裏插入圖片描述

手機歸屬證實

小李子興高采烈的拿着失而復得的錢包準備回家大吃一頓,擠上了公交,戴上了耳機,忽然發現沒有聲音,一低頭,直呼一聲好傢伙,光天化日之下,一隻手剛從他褲兜裏拿出來,手裏面還握着他的手機,小李子一把就把手機搶過來,還沒開口,結果對方先開口了:
「來人啊,有人搶劫了。。。。。。」
小李子愣了一下:「好傢伙,惡人先告狀的本事能夠啊」
小偷看小李子沒說話,囂張的補了一句:「麻溜的,手機乖乖還給我,不要不識擡舉。」
小李子不能忍了:「你說手機是你的,那你怎麼證實?」
小偷機智的反問:「個人手機我憑什麼證實?,卻是你,手機上有寫你的名字嗎?」
小李子笑了笑:「喲,還挺犟的啊。手機上雖然沒寫個人名字,可是它有名字啊」
小偷:「呵呵,你在逗我呢?那你喊它一聲它會應你嗎?」
小李子:「固然會啊!hei,siri」
siri:「。。。。。。」
小偷:「大意了。。。。。。」
因而小李子帶着苦逼的小偷,又回到了派出所。blog

背景

零知識證實(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世紀80年代初提出的。它指的是證實者可以在不向驗證者提供任何有用的信息的狀況下,使驗證者相信某個論斷是正確的。其實,早在16世紀的文藝復興時期,意大利有兩位數學家爲競爭一元三次方程求根公式發現者的桂冠,就採用了零知識證實的方法。當時,數學家塔爾塔裏雅和菲奧都宣稱本身掌握了這個求根公式,爲了證實本身沒有說謊,又不把公式的具體內容公佈出來(可能在當時數學公式也是一種技術祕密),他們擺開了擂臺:雙方各出30個一元三次方程給對方解,誰能所有解出,就說明誰掌握了這個公式。比賽結果顯示,塔爾塔裏雅解出了菲奧出的所有30個方程,而菲奧一個也解不出。因而人們相信塔爾塔裏雅是一元三次方程求根公式的真正發現者,雖然當時除了塔爾塔裏雅外,誰也不知道這個公式究竟是個什麼樣子。圖片

概念

顧名思義,零知識證實就是既能充分證實本身是某種權益的合法擁有者,又不把有關的信息泄露出去——即給外界的「知識」爲「零」。零知識證實實質上是一種涉及兩方或更多方的協議,即兩方或更多方完成一項任務所需採起的一系列步驟。證實者向驗證者證實並使其相信本身知道或擁有某一消息,但證實過程不能向驗證者泄漏任何關於被證實消息的信息。ci

分類

交互式證實

       零知識證實協議的基礎是交互式的。它要求驗證者不斷對證實者所擁有的「知識」進行一系列提問。證實者經過回答一系列問題,讓驗證者相信證實者的確知道這些「知識」。然而,這種簡單的方法並不能令人相信證實者和驗證者都是真實的,二者能夠提早串通,以便證實者能夠在不知道答案的狀況下依然經過驗證。就像上面的失誤認領證實小故事。字符串

非交互式證實

       非交互式零知識證實不須要交互過程,避免了串通的可能性,可是可能須要額外的機器和程序來肯定實驗的順序。就像上面的手機歸屬證實小故事。數學

角色

證實人(prover)

證實人提供一系列的結論以供驗證者進行驗證it

驗證者(verifier)

驗證者根據證實人提供的結論進行驗證,沒法獲取其它的信息io

特性

正確性

prover沒法欺騙verifier。換言之,若prover不知道一個定理的證實方法,則P使verifier相信他會證實定理的機率很低。

完備性

verifier沒法欺騙prover。若prover知道一個定理的證實方法,則prover使verifier以絕對優點的機率相信他能證實。

零知識性

verifier沒法獲取任何額外的知識。

條件

零知識證實須要知足三個條件。
    一、若是語句爲真,誠實的驗證者(即:正確遵循協議的驗證者)將由誠實的證實者確信這一事實。
    二、若是語句爲假,不排除有機率欺騙者能夠說服誠實的驗證者它是真的。
    三、若是語句爲真,證實者的目的就是向驗證者證實並使驗證者相信本身知道或擁有某一消息,而在證實過程當中不可向驗證者泄漏任何有關被證實消息的內容。
       零知識證實是機率證實而不是肯定性證實,可是也能夠經過技術將偏差下降到能夠忽略的值。

應用

zk-SNARK

zk-SNARK是zero-knowledge succint non-interactive arguments of knowledge的簡稱,全稱裏面每一個單詞都有特定的含義:

zero knowledge:零知識,證實過程當中不會透露任何信息。

succinct:證據信息較短,方便驗證

non-interactivity:無交互的,證實者基本上只要提供一個字符串以供驗證。對於區塊鏈來講,這一點相當重要,意味着能夠把該消息放在鏈上公開驗證。

arguments:證實過程是計算無缺(computationally soundness)的,證實者沒法在合理的時間內造出僞證(破解)。跟計算無缺對應的是理論無缺(perfect soundness),密碼學裏面通常都是要求計算無缺。

of knowledge:對於一個證實者來講,在不知曉特定證實 (witness) 的前提下,構建一個有效的零知識證據是不可能的。

前景

相信你們對當前網絡的發達程度並不陌生,常常會有由於肖像權,隱私權等引發的訴訟新聞。而在零知識證實的網絡中,可以很好的隔離窺探者、爬蟲,完美的保護用戶的隱私。

相關文章
相關標籤/搜索