戰(zhàn)爭中你被俘了链方,敵人拷問你情報。你是這么想的:如果我把情報都告訴他們灶搜,他們就會認為我沒有價值了祟蚀,就會殺了我省糧食工窍,但如果我死活不說,他們也會認為我沒有價值而殺了我前酿。怎樣才能做到既讓他們確信我知道情報患雏,但又一丁點情報也不泄露呢?
這的確是一個令人糾結的問題罢维,但阿里巴巴想了一個好辦法淹仑,當強盜向他拷問打開山洞石門的咒語時,他對強盜說:“你們離我一箭之地肺孵,用弓箭指著我匀借,你們舉起右手我就念咒語打開石門,舉起左手我就念咒語關上石門平窘,如果我做不到或逃跑吓肋,你們就用弓箭射死我」逅遥”
強盜們當然會同意蓬坡,因為這個方案不僅對他們沒有任何損失,而且還能幫助他們搞清楚阿里巴巴到底是否知道咒語這個問題磅叛。阿里巴巴也沒損失屑咳,因為處于一箭之地的強盜聽不到他念的咒語,不必擔心泄露了秘密弊琴,而且他確信自己的咒語有效兆龙,也不會發(fā)生被射死的杯具。
強盜舉起了右手敲董,只見阿里巴巴的嘴動了幾下紫皇,石門果真打開了,強盜舉起了左手腋寨,阿里巴巴的嘴動了幾下后石門又關上了聪铺。強盜還是有點不信,說不準這是巧合呢萄窜,他們不斷地換著節(jié)奏舉右手舉左手铃剔,石門跟著他們的節(jié)奏開開關關,最后強盜們想查刻,如果還認為這只是巧合键兜,自己未免是個傻瓜,那還是相信了阿里巴巴吧穗泵。
“零知識證明”說的是示證者向驗證者表明他知道某種秘密普气,不僅能使驗證者完全確信他的確知道這個秘密,同時還保證一丁點秘密也不泄露給驗證者佃延。阿里巴巴的這個方案现诀,就是認證理論“零知識證明”的一個重要協(xié)議夷磕。
除了被俘后如何靠情報保命這個問題,零知識證明在社會領域中還有著很多應用場合仔沿。例如你證明了一個世界級的數(shù)學難題坐桩,但在發(fā)表出來之前,總是要找個泰斗級的數(shù)學家審稿吧于未,于是你將證明過程發(fā)給了他撕攒,他看懂后卻動了歪心思,他把你的稿子壓住烘浦,把你的證明用自己的名義發(fā)表抖坪,他名利雙收,你郁悶至死闷叉,你去告他也沒用擦俐,因為學術界更相信的是這位泰斗,而不是你這個無名之輩握侧。
這并不是天方夜譚蚯瞧,而是學術界常見的難題,前些年有個博士生告他的泰斗級導師剽竊他的成果品擎,但除了令師生關系惡化外沒有任何效果埋合,最后他使出了撒手锏,稱他在給導師審閱的論文的關鍵公式中萄传,故意標錯了一個下標甚颂,而這會導致整個推導失敗。學術委員會一查果真如此秀菱,但還是有傾向于泰斗的聲音振诬,有人說那是泰斗的筆誤,只不過讓你發(fā)現(xiàn)了而矣衍菱,并不能證明那公式就是你推導出來的赶么。
這個博士生故意標錯下標,不能說他沒有心眼脊串,但他沒有把“零知識證明”理論用好辫呻,以致于落到這種地步『楣妫“零知識證明”早在1986年就被A.Fiat和A.Shamir用數(shù)學的方法給出了解決方案印屁,并在同年申請了美國專利,但由于該理論可能被用于軍事領域斩例,專利局被軍方密令擱置,6個月后从橘,軍方命令:“該申請發(fā)表后會有害于國家安全......所有美國人的研究未經(jīng)許可而泄露將會被判刑罰款”念赶〈∧疲看來軍方認為作者肯定是美國人了,但作者實際上是在美國申請專利的以色列人叉谜,研究也是在以色列的大學里做的旗吁,軍方這個命令擺了個大烏龍,雖然兩天后撤消了停局,但已經(jīng)成為了學術界的笑柄很钓。
這個笑柄也說明了一個問題,即“零知識證明”非常重要董栽÷刖耄基于數(shù)學的推理雖然非常復雜,但思路卻很簡單锭碳,上述的阿里巴巴方案就是其中之一袁稽。其它的一些方案,也都是像這樣遵循著分割和選擇(Cut and Chose)協(xié)議的擒抛。
例如圖論中有個哈米爾頓回路(Hamiltonian Cyclic)問題推汽,說的是多個頂點的全連通圖,若有一條通路通過了所有頂點歧沪,且每個頂點只通過一次歹撒,那這就是哈米爾頓回路。如果頂點較多的話诊胞,即使用計算機窮舉計算很難找出這條回路暖夭,因為通路的可能性真在是太多了。
如果松鼠會貼了一張全連通圖(命名為A圖)懸賞哈米爾頓回路厢钧,而且任命我(奧卡姆剃刀)作為評審官鳞尔,你幸運的找到了一條,那該怎么辦呢早直,將結果直接發(fā)給我嗎寥假?千萬不要,因為保不齊我會將你的成果讓給了我的親信霞扬。那你該怎么辦呢糕韧?應該這么辦:
1、你將A圖的頂點搞亂了喻圃,并生成一張新圖萤彩,只是頂點的位置變了,而新圖頂點之間的連線關系與A圖是完全一致的斧拍。這時雀扶,新圖中每個頂點與A圖中每個頂點的對應關系你是清楚的,而且新圖中的哈米爾頓回路你也是知道的。
2愚墓、你將這張新圖發(fā)給我予权,沒錯,就是僅僅一張新圖浪册,上面并沒有畫著你發(fā)現(xiàn)的牛B回路扫腺。
3、我收到后村象,對你提出兩個問題中的一個:一是證明新圖就是從A圖變形過來的笆环,所有頂點和連線的關系完全一致,二是畫出新圖中的哈米爾頓回路厚者。
4躁劣、如果你真的找到了A圖的哈米爾頓回路,這兩個問題當然都能輕松回答籍救。需要注意的是:你只需要回答第3步的其中一個問題习绢,千萬不要兩個問題一并回答,否則我就知道你關于A圖的哈米爾頓回路了蝙昙,你就SB了闪萄。
5、我還是不相信你奇颠,因為有可能你只是將A圖變了形败去,卻根本不知道A圖的哈米爾頓回路,而我在第3步時恰好要求你證明新圖就是從A圖變形過來的烈拒,你當然能證明圆裕。或者有可能你找了個你知道哈米爾頓回路的圖荆几,但這張圖跟A圖一點關系都沒有吓妆,而我在第3步恰好要求你畫出這張圖的哈米爾頓回路。
6吨铸、我要求你從第1步開始重復這個驗證過程行拢,隨著次數(shù)的增加,第5步那種巧合的可能性就越來越低诞吱,如果你多次能回答對第3步中的問題舟奠,那我還不相信你已經(jīng)找到了A圖的哈米爾頓回路,那我就是一個傻瓜房维。
7沼瘫、為了表明我不是傻瓜,我在松鼠會群博里宣布你找到了A圖的哈米爾頓回路咙俩,而這時我并沒有看到你所畫的A圖的哈米爾頓回路耿戚。
回到你證明了世界級的數(shù)學難題的問題,你可以用這種分割和選擇協(xié)議來進行零知識證明,來保護你的權利溅话。你公開聲稱你解決了這個數(shù)學難題后晓锻,驗證者會給你出一個其它的題歌焦,而能做出這道題的前提條件是已經(jīng)解決了那個數(shù)學難題飞几,否則的話無解,而且這個條件是學術界所公認的独撇,這個題就是所謂的平行問題屑墨。不出所料,你靠著已經(jīng)解開數(shù)學難題的基礎把這個平行問題做出來了纷铣,但驗證者還是不信卵史,他又出了一道平行問題,你又做出來了搜立,多次較量后以躯,驗證者就確信了你已經(jīng)解決了那個數(shù)學難題,雖然他并沒有看到具體的解法啄踊。
大家已經(jīng)看出來了倔喂,零知識證明需要示證者和驗證者的密切配合休涤,但如果你只是一個數(shù)學界的無名之輩,即使你宣稱你解決了數(shù)學難題,也不會有人跟你配合著玩零知識證明莹妒,那你該怎么辦呢?
我告訴你一個可以在法庭上都能當作有效證據(jù)的招數(shù)蛔糯,你將證明打印好垢袱,選擇一個最可靠最權威的郵政公司,把它寄給自己硼控,當你收到這個扣著郵戳的包裹后刘陶,不要打開,把它放好牢撼,然后就可以把證明寄給數(shù)學泰斗匙隔。如果他用自己的名義發(fā)表了,不必著急浪默,等他依靠其影響力把這個證明炒熱后再出手牡直,你上法庭控告他,他當然不承認纳决,在法庭上你將那個沒開封的包裹拿出來碰逸,上面清清楚楚地蓋著時間戳,這就證明了你包裹里的證明是發(fā)生在那個時間戳之前的阔加,加上之后的你郵給泰斗論文的郵件存根饵史,和泰斗以自己名義發(fā)表論文的時間,三者就構成了一個完整的證據(jù)鏈,泰斗灰頭土臉名聲掃地胳喷,而你大獲全勝名利雙收湃番。
參考文獻:《通信網(wǎng)的安全-理論與技術》,王育民等編著吭露,西安電子科技大學出版社吠撮,2000.5