開胃小故事
阿里巴巴證明
阿里巴巴被強盜抓住,為了保命,他需要向強盜證明自己擁有打開石門的密碼,同時又不能把密碼告訴強盜,他想出一個解決辦法,先讓強盜離開自己一箭之地,距離足夠遠讓強盜無法聽到口令,足夠近讓阿里巴巴無法在強盜的弓箭下逃生,阿里巴巴就在這個距離下向強盜展示了石門的打開和關閉,
失物認領證明
小李子不小心丟了錢包,急急忙忙跑去派出所報案,幾天之后派出所打電話聯系他去失物認領,于是:
“姓名"
“小李子”
“年齡”
“別問,問就是18”
“性別”
“emmm…要不你抬頭自己看下?”
“錢包還想不想要了?”
“要啊,那肯定得要,我自己的錢包我為啥不要”
“你怎么證明錢包是你的?”
“錢包是黑色的”
“這個證明不了,黑色的錢包多了去了”
“里面有幾張銀行卡和現金”
“廢話,錢包不放卡和現金放什么?”
“有四張卡,還有250的現金”
“還有別的資訊么?這些證明不夠充分?”
“里面第二個夾層里面有個內夾層,里面有一張我珍藏多年的照片”
“嗯,行了,簽個字把錢包領回去吧”
最后,小李子喜滋滋的拿著錢包回家了,
順便附上珍藏圖片:

手機歸屬證明
小李子興高采烈的拿著失而復得的錢包準備回家大吃一頓,擠上了公交,戴上了耳機,突然發現沒有聲音,一低頭,直呼一聲好家伙,光天化日之下,一只手剛從他褲兜里拿出來,手里面還握著他的手機,小李子一把就把手機搶過來,還沒開口,結果對方先開口了:
“來人啊,有人搶劫了,,,,,,”
小李子愣了一下:“好家伙,惡人先告狀的本事可以啊”
小偷看小李子沒說話,囂張的補了一句:“麻溜的,手機乖乖還給我,不要不識好歹,”
小李子不能忍了:“你說手機是你的,那你怎么證明?”
小偷機智的反問:“我的手機我憑什么證明?,倒是你,手機上有寫你的名字嗎?”
小李子笑了笑:“喲,還挺犟的啊,手機上雖然沒寫我的名字,但是它有名字啊”
小偷:“呵呵,你在逗我呢?那你喊它一聲它會應你嗎?”
小李子:“當然會啊!hei,siri”
siri:“,,,,,,”
小偷:“大意了,,,,,,”
于是小李子帶著苦逼的小偷,又回到了派出所,
背景
零知識證明(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世紀80年代初提出的,它指的是證明者能夠在不向驗證者提供任何有用的資訊的情況下,使驗證者相信某個論斷是正確的,其實,早在16世紀的文藝復興時期,意大利有兩位數學家為競爭一元三次方程求根公式發現者的桂冠,就采用了零知識證明的方法,當時,數學家塔爾塔里雅和菲奧都宣稱自己掌握了這個求根公式,為了證明自己沒有說謊,又不把公式的具體內容公布出來(可能在當時數學公式也是一種技術秘密),他們擺開了擂臺:雙方各出30個一元三次方程給對方解,誰能全部解出,就說明誰掌握了這個公式,比賽結果顯示,塔爾塔里雅解出了菲奧出的全部30個方程,而菲奧一個也解不出,于是人們相信塔爾塔里雅是一元三次方程求根公式的真正發現者,雖然當時除了塔爾塔里雅外,誰也不知道這個公式到底是個什么樣子,
概念
顧名思義,零知識證明就是既能充分證明自己是某種權益的合法擁有者,又不把有關的資訊泄露出去——即給外界的“知識”為“零”,零知識證明實質上是一種涉及兩方或更多方的協議,即兩方或更多方完成一項任務所需采取的一系列步驟,證明者向驗證者證明并使其相信自己知道或擁有某一訊息,但證明程序不能向驗證者泄漏任何關于被證明訊息的資訊,
分類
互動式證明
零知識證明協議的基礎是互動式的,它要求驗證者不斷對證明者所擁有的“知識”進行一系列提問,證明者通過回答一系列問題,讓驗證者相信證明者的確知道這些“知識”,然而,這種簡單的方法并不能使人相信證明者和驗證者都是真實的,兩者可以提前串通,以便證明者可以在不知道答案的情況下依然通過驗證,就像上面的失誤認領證明小故事,
非互動式證明
非互動式零知識證明不需要互動程序,避免了串通的可能性,但是可能需要額外的機器和程式來確定實驗的順序,就像上面的手機歸屬證明小故事,
角色
證明人(prover)
證明人提供一系列的結論以供驗證者進行驗證
驗證者(verifier)
驗證者根據證明人提供的結論進行驗證,無法獲取其它的資訊
特性
正確性
prover無法欺騙verifier,換言之,若prover不知道一個定理的證明方法,則P使verifier相信他會證明定理的概率很低,
完備性
verifier無法欺騙prover,若prover知道一個定理的證明方法,則prover使verifier以絕對優勢的概率相信他能證明,
零知識性
verifier無法獲取任何額外的知識,
條件
零知識證明需要滿足三個條件,
1、如果陳述句為真,誠實的驗證者(即:正確遵循協議的驗證者)將由誠實的證明者確信這一事實,
2、如果陳述句為假,不排除有概率欺騙者可以說服誠實的驗證者它是真的,
3、如果陳述句為真,證明者的目的就是向驗證者證明并使驗證者相信自己知道或擁有某一訊息,而在證明程序中不可向驗證者泄漏任何有關被證明訊息的內容,
零知識證明是概率證明而不是確定性證明,但是也可以通過技術將誤差降低到可以忽略的值,
應用
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) 的前提下,構建一個有效的零知識證據是不可能的,
前景
相信大家對當前網路的發達程度并不陌生,經常會有因為肖像權,隱私權等引起的訴訟新聞,而在零知識證明的網路中,能夠很好的隔離窺探者、爬蟲,完美的保護用戶的隱私,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/287788.html
標籤:區塊鏈
上一篇:開源路上的酸甜苦辣
