當前位置: 華文問答 > 科學

有哪些方法可以讓其他人知道我擁有的秘密,且可以透過驗證加以證明,卻不必公布我擁有的秘密內容?

2014-09-26科學

謝謝

@康克由

同學的支持~雖然我真的覺得他的答案很好呢。。。為了讓大家理解起來更方便一點,我補充了一個更生動例子,希望能夠解釋得更清楚,也歡迎大家指正~

試圖給一個偏學院派的回答~

「零知識證明」是密碼學中存在於「證明者(prover,以下用P代替)」和「驗證者(verifier,以下用V代替)」雙方的一種協定,這種協定的要求是:

  1. P使得V相信其擁有某知識
  2. V不能從證明過程中得到知識的任何資訊

為了使得V相信P擁有知識,證明須滿足:

  1. 完備性:如果P確實擁有知識,那麽證明成功的概率大於2/3
  2. 可靠性:如果P並不擁有知識,那麽證明成功的概率小於1/3

若證明滿足上面的條件,則透過反復多次的證明,就能使得V相信P擁有知識的概率趨近1,P不擁有知識的概率趨近0。

概念結束(心累。。。)

下面舉例說明:

第一個例子,也是

@康克由

原答案中參照的文章裏提到的

戰爭中你被俘了,敵人拷問你情報。你是這麽想的:如果我把情報都告訴他們,他們就會認為我沒有價值了,就會殺了我省糧食,但如果我死活不說,他們也會認為我沒有價值而殺了我。怎樣才能做到既讓他們確信我知道情報,但又一丁點情報也不泄露呢?

這的確是一個令人糾結的問題,但阿裏巴巴想了一個好辦法,當強盜向他拷問開啟山洞石門的咒語時,他對強盜說:「你們離我一箭之地,用弓箭指著我,你們舉起右手我就念咒語開啟石門,舉起左手我就念咒語關上石門,如果我做不到或逃跑,你們就用弓箭射死我。」

強盜們當然會同意,因為這個方案不僅對他們沒有任何損失,而且還能幫助他們搞清楚阿裏巴巴到底是否知道咒語這個問題。阿裏巴巴也沒損失,因為處於一箭之地的強盜聽不到他念的咒語,不必擔心泄露了秘密,而且他確信自己的咒語有效,也不會發生被射死的杯具。

這個方法是如何成為零知識證明的呢?

完備性:當阿裏巴巴知道咒語時,他一定可以按照強盜的要求正確的開關石門,正確率100%。

可靠性:如果阿裏巴巴並不知道咒語,那麽他必然不能正確開關,強盜會立刻發現,他就掛了。就算阿裏巴巴運氣好,隨口說了一句「哈庫吶瑪塔塔!」,正好石門裏有人想開門透透氣開了門,讓強盜們以為他掌握了咒語,這種情況也不會總是發生(概率很小)。只要強盜們多下幾次指令,就可以將這樣的運氣成分降低到可以忽略不計。

而強盜在驗證了阿裏巴巴確實擁有咒語的同時,又不能得到咒語的任何資訊,因此這是一個成功的零知識證明。(當然我才不相信會有這麽守規矩的強盜=.=,門一開還不直接斃了阿裏巴巴沖進洞去嗎。。)

第二個例子。

仍然拿樓上Hamilton回路舉例。具體過程為:

  1. P隨機構造一個圖G的同構圖G',將G'發給V
  2. V隨機從以下兩者中選擇一項
  • 要求P給出G和G'的同構對應關系
  • 要求P給出G'的Hamilton回路C'
  • P應V的要求做出相應回答
  • V對P的回答進行驗證
  • 那麽首先我們來看P是否能證明他真的知道圖G的Hamilton回路C:

  • 完備性:顯然如果P知道C,那麽P在第3步做出正確回答的概率是100%
  • 可靠性:如果P不知道C,他仍然有可能在第3步回答正確,因為他運氣好(=.=)。比如他只是畫了一個同構的G',而V正好只要求他給出同構關系;或者他找了個不同構的、已知Hamilton回路的G',而V正好只要求他給出C'。但是P不可能永遠這麽幸運,他每次蒙對的概率是1/2,如果證明反復進行,總會有運氣花光的那天,只要有一次回答錯誤,證明就失敗了。
  • 接下來我們看V是否會從證明過程中獲得知識:

    如果V能夠由C'得到C,那V就知道G‘和G的同構對應關系,而這在計算上是不可能的(這個證明方法的基礎就是同構圖的判斷是很困難的)。

    由此我們可以看出以上證明是一個零知識證明。


    再舉一個跟圖有關的例子:

    圖的三色問題,是指找到這樣一種染色方法,將圖的頂點用三種顏色中的一種染色,並使得相鄰頂點不同色。假如P找到了圖G滿足三色問題的一種染色方法,想要證明給V,他應該怎麽做呢(O.O)?

    步驟如下:

    1. P隨機選擇一種顏色的置換方式(如紅-藍,藍-黃,黃-紅),將原來的染色方案按照顏色置換重新染色。將染色過後的G放在密封的信封裏發給V。


    2. V隨機選擇圖中的一條邊,並要求P開啟這條邊的兩個頂點。
    3. P開啟相應的信封,展示頂點的顏色。
    4. 如果展示的頂點顏色不同,則V接受證明。

    完備性:如果P確實有三染色方案,那麽證明必然成功。

    可靠性:如果P沒有三染色方案,那麽他的染色方案中至少有一條邊是頂點同色的。假設圖G有n條邊,那麽證明失敗的概率至少是1/n。如果證明進行m次,那麽P人品爆表蒙混過關的概率就會小於(1-1/n)^m,當m足夠大,這個概率就趨近於0。

    而由於每次的隨機顏色置換,V無法從揭示的邊中獲得任何染色方案的資訊。因此這個證明是零知識證明。

    至於如何構造這樣的「信封」,使得V在P開啟信封前不能看到信封中的內容,而P也無法透過不同的"拆封"方式而操縱信封中的內容,這就是另外一種密碼協定「承諾協定」的範圍了。