零知識證明(一)——初探阿里巴巴的零知識洞穴
??由于參加了導師的一個專案要用到零知識證明,所以最近入了零知識證明的坑,作為一個才大四還未真正進入研究生階段的的小白,突然接觸一個全新的未知的領域真的手足無措,還好國內的安比實驗室發表了很多關于零知識證明的文章,自己讀完一部分后感覺受益匪淺,
??第一次看到零知識證明(Zero-Knowledge Proof, ZKP),我想大家跟我一樣,對這個概念非常陌生,零知識證明技術是現代密碼學三大基礎之一,由 S.Goldwasser、S.Micali 及 C.Rackoff 在 20 世紀 80 年代初提出,
零知識證明(Zero-Knowledge Proof, ZKP):指的是證明者能夠在不向驗證者提供任何有用的資訊的情況下,使驗證者相信某個論斷是正確的,它實質上是一種涉及兩方或更多方的協議,即兩方或更多方完成一項任務所需采取的一系列步驟,證明者向驗證者證明并使其相信自己知道或擁有某一訊息,但證明程序不能向驗證者泄漏任何關于被證明訊息的資訊,
??通俗的來講,零知識證明就是我讓你相信我說的一句話或一個結論而不需要向你透露任何有關該結論的有用資訊.舉個簡單的例子,比如說最近很火的凡爾賽文學,我可以再不向你透露我有多少資產的前提下讓你相信我非常有錢,畢竟財產總數是我的私人資訊,我不想告訴任何人,

??當然這只是一個開玩笑的例子,大多數人第一次查閱關于零知識證明的資料遇到的例子應該還是阿里巴巴的故事吧,當然這里的阿里巴巴并不是馬老板的阿里巴巴,而是童話故事阿里巴巴與四十大盜中的阿里巴巴
阿里巴巴知道打開藏著財寶的山洞的咒語,四十大盜抓住他,讓他說出咒語,
如果阿里巴巴說出咒語,就會因為沒有利用價值而被殺死,如果阿里巴巴堅持不說,強盜不會相信他真的掌握咒語,也會殺死他,
但阿里巴巴想了一個好辦法,他對強盜說:“你們離我一箭之地,用弓箭指著我,你們舉起右手我就念咒語打開石門,舉起左手我就念咒語關上石門,如果我做不到或逃跑,你們就用弓箭射死我,”
??我們可以看下面的一張圖

??在這張圖中,阿里巴巴知道C與D之間密門的鑰匙,那么他可以這么做讓強盜相信他有打開密門的咒語并且不告訴強盜咒語是什么
1.強盜在A點站立,并讓阿里巴巴走到B點,阿里巴巴隨機的從左右兩個方向進入洞穴,因此阿里巴巴可能到達C處,也可能到達D處
2.強盜走到B點,并隨機讓阿里巴巴從左邊或從右邊出來,如果阿里巴巴擁有密門的咒語,那么無論他現在在C點或者是在D點都可以按照強盜的指令從正確的方向走出洞穴;但如果阿里巴巴如果沒有密門的咒語,那么他只有 1 2 \frac{1}{2} 21?的可能從正確的方向出來
??到這里,可能有疑惑說
1
2
\frac{1}{2}
21?的概率不依然有很大的概率蒙對嗎?但是如果重復這個程序50次,如果阿里巴巴擁有咒語,那么他成功的概率肯定為1;如果阿里巴巴沒有密門的咒語,那么他保證每一次都猜對的概率僅為
1
2
50
\frac{1}{2^{50}}
2501?,所以這個概率是非常小的,強盜可以依此判斷阿里巴巴是否在騙自己,
??到這里,我們可以提出零知識證明所具備的三個性質,即:完備性(Completeness),可靠性(Soundness)和零知識性(Zero-knowledgeness)
1.完備性(Completeness):若一個證明方確實掌握了某論斷的答案,則他肯定能找到方法向驗證方證明他手中掌握的資料的正確性,即我真的很有錢,我必須有充分的理由讓你相信我很有錢
2.可靠性(Soundness):若一證明方根本不掌握某論斷的答案,則他無法(或只能以極低概率)說服驗證方他手中所謂答案的準確性,即我如果不是大土豪,你必須有足夠的把握能夠拆穿我,
3.零知識性(Zero-knowledgeness):驗證方除了知道證明的結果外,對其他資訊一無所知,即我在向你證明我有錢的程序中始終沒告訴你我到底有多少資產,
??當然,這個例子只是讓我們更快地理解零知識證明的小例子,零知識證明作為一項黑科技,在區塊鏈領域大放異彩,并且在隱私保護領域也有非常重要的作用,我們真正能夠用的是如何講一個計算機程式轉化為一個零知識證明問題,目前已經有一些開源庫實作了零知識證明的通用協議,比如libsnark,它的開發者們是這個領域內頂尖的學者或研究牛人,我們站在巨人的肩膀上已經可以開發出我們自己的零知識證明程式,當然這實作背后復雜的數學原理,還需要我去慢慢深入學習…
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/249808.html
標籤:區塊鏈
上一篇:vue實戰
下一篇:神經網路論文Enhancing deep neural networks via multiple kernel learning
