零知識證明
詞語
“零知識證明”-zero-knowledge proof,是由Goldwasser等人在20世紀80年代初提出的。它指的是證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。零知識證明實質上是一種涉及兩方或更多方的協議,即兩方或更多方完成一項任務所需採取的一系列步驟。證明者向驗證者證明並使其相信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關於被證明消息的信息。大量事實證明,零知識證明在密碼學中非常有用。如果能夠將零知識證明用於驗證,將可以有效解決許多問題。
顧名思義,零知識證明就是既能充分證明自己是某種權益的合法擁有者,又不把有關的信息泄露出去——即給外界的“知識”為“零”。其實,零知識證明並不是什麼新東西,早在16世紀的文藝復興時期,義大利有兩位數學家為競爭一元三次方程求根公式發現者的桂冠,就採用了零知識證明的方法。當時,數學家塔爾塔里雅和菲奧都宣稱自己掌握了這個求根公式,為了證明自己沒有說謊,又不把公式的具體內容公布出來(可能在當時數學公式也是一種技術秘密),他們擺開了擂台:雙方各出30個一元三次方程給對方解,誰能全部解出,就說明誰掌握了這個公式。比賽結果顯示,塔爾塔里雅解出了菲奧出的全部30個方程,而菲奧一個也解不出。於是人們相信塔爾塔里雅是一元三次方程求根公式的真正發現者,雖然當時除了塔爾塔里雅外,誰也不知道這個公式到底是個什麼樣子。從這個故事,我們可以初步了解零知識證明的概念。
在有必要證明一個命題是否正確,又不需要提示與這個命題相關的任何信息時,零知識證明系統(也叫做最小泄露證明系統)是不可或缺的。零知識證明系統包括兩部分:宣稱某一命題為真的示證者(prover)和確認該命題確實為真的驗證者(verifier)。證明是通過這兩部分之間的交互來執行的。在零知識協議的結尾,驗證者只有當命題為真時才會確認。但是,如果示證者宣稱一個錯誤的命題,那麼驗證者完全可能發現這個錯誤。這種思想源自互動式證明系統。互動式系統在計算複雜度理論方面已經獲得異常獨立的地位。
零知識證明(Zero—Knowledge Proof)起源於最小泄露證明。設P表示掌握某些信息,並希望證實這一事實的實體,設V是證明這一事實的實體。假如某個協議向V證明P的確掌握某些信息,但V無法推斷出這些信息是什麼,我們稱P實現了最小泄露證明。不僅如此,如果V除了知道P能夠證明某一事實外,不能夠得到其他任何知識,我們稱P實現了零知識證明,相應的協議稱作零知識協議。
在最小泄露協議中零知識證明需要滿足下述兩個性質。
(1)正確性。P無法欺騙V。換言之,若P不知道一個定理的證明方法,則P使V相信他會證明定理的概率很低。
(2)完備性。V無法欺騙P。若P知道一個定理的證明方法,則P使V以絕對優勢的概率相信他能證明。
在零知識協議中,除滿足上述兩個條件以外,還滿足下述的第三個性質。
(3)零知識性。V無法獲取任何額外的知識。
我們把性質(1)和(2)稱為零知識證明的正確性和完備性,而性質(3)稱為零知識性。
零知識證明需要滿足三個屬性。
1、如果語句為真,誠實的驗證者(即:正確遵循協議的驗證者)將由誠實的證明者確信這一事實。
2、如果語句為假,不排除有概率欺騙者可以說服誠實的驗證者它是真的。
3、如果語句為真,證明者的目的就是向驗證者證明並使驗證者相信自己知道或擁有某一消息,而在證明過程中不可向驗證者泄漏任何有關被證明消息的內容。
零知識證明並不是數學意義上的證明,因為它存在小概率的誤差,欺騙者有可能通過虛假陳述騙過證明者。換句話來說,零知識證明是概率證明而不是確定性證明。但是也存在有技術能將誤差降低到可以忽略的值。
零知識的形式定義必須使用一些計算模型,最常見的是圖靈機的計算模型。
零知識證明不是證明在條款的數學感覺因為有一個固定的可能性p在任一零知識證明Peggy能提供對挑戰的正確反應即使她不知道鑰匙。但是如果測試被重覆n計時欺詐被減少Peggy的可能性pn,和由增加測試勝者的數字可能使Peggy的可能性降低欺詐到一個任意水平。
零知識證明
但是,Peggy不能簡單地顯露漢密爾頓的周期對勝者,勝者(或偷聽者)從那以後能在將來扮演Peggy。Peggy不能顯露任何信息在所有周期,因為偷聽者也許收集信息關於幾個不同的場合和裝配它入足夠的信息能扮演Peggy。
證明她的身份,Peggy和勝者扮演以下比賽的幾個圓:
Peggy標記G端點以隨機號。邊緣可能然後代表作為一對這些數字。她列出G邊緣,和編成密碼各個邊緣以一個另外密鑰。她然後寄發被編成密碼的邊緣到勝者。
勝者翻轉硬幣。
*如果硬幣過來頭,Peggy向隨機號投降密鑰和測繪從端點。勝者解碼邊緣和然後核實,被編成密碼的邊緣被派在步驟1實際上做graph.g和沒有某一其它圖表。
*如果硬幣過來尾巴,Peggy投降密鑰只為實際上形成漢密爾頓的周期的邊緣。勝者解碼這些邊緣和核實,他們的確形成正確長度的周期。
冒名頂替者('Pamela')能設法扮演Peggy,和有成功地唬弄勝者的50%機會在任何尤其圓。有二個可能的扮演戰略。Pamela能派Peggy的graph.g的編成密碼。在這種情況下,她逃脫偵查如果勝者投擲頭;她顯露編成密碼,並且勝者核實圖表的確是G。但如果勝者投擲尾巴,Pamela被捉住。她被要求顯露的一套的鑰匙組成一個漢密爾頓的周期G邊緣,並且她無法做那,因為她不認識一。
Pamela能跟隨的另一戰略是準備某一其它圖表她知道一個漢密爾頓的周期的H編成密碼。她在這種情況下是安全的如果勝者投擲尾巴;她顯露周期,並且,因為勝者從未看邊緣的剩餘,他從未獲悉圖表是H和不是G。但如果勝者投擲頭,Pamela被要求顯露整個圖表,並且勝者看見這不是G。
由扮演這場遊戲二十回合,勝者能使由Pamela被唬弄的可能性降低到一僅僅為1/2。由扮演更多圓,勝者能減少可能性就渴望。
信息由Peggy顯露提供勝者任何信息在所有不G的漢密爾頓的周期。看這,注意勝者能製造比賽的抄本沒有談話與Peggy根本。他能選擇序列頭和尾巴,和然後準備假定回復從Peggy,沒有曾經知道漢密爾頓的周期,由從事適當的冒名頂替者戰略在每個圓。抄本,和它不遏制,有線索關於Peggy的身份合法的信息。Peggy證明她的身份不是因為她能基於正確的答覆,但因為她能基於正確的答覆沒有知道將是什麼問題。
所謂零知識證明,指的是示證者在證明自己身份時不泄露任何信息,驗證者得不到示證者的任何私有信息,但又能有效證明對方身份的一種方法。看起來有點彆扭,我給2個例子,也許好明白一些。
零知識證明
A擁有B的公鑰,A沒有見過B,而B見過A的照片,偶然一天2人見面了,B認出了A,但A不能確定面前的人是否是B,這時B要向A證明自己是B,也有2個方法。B把自己的私鑰給A,A用這個私鑰對某個數據加密,然後用B的公鑰解密,如果正確,則證明對方確實是B。A給出一個隨機值,B用自己的私鑰對其加密,然後把加密后的數據交給A,A用B的公鑰解密,如果能夠得到原來的隨機值,則證明對方是B。後面的方法屬於零知識證明。
3)有一個缺口環形的長廊,出口和入口距離非常近(在目距之內),但走廊中間某處有一道只能用鑰匙打開的門,A要向B證明自己擁有該門的鑰匙。採用零知識證明,則B看著A從入口進入走廊,然後又從出口走出走廊,這時B沒有得到任何關於這個鑰匙的信息,但是完全可以證明A擁有鑰匙。