零知識證明筆記

零知識證明基本定義:

證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。證明者向驗證者證明並使其相信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關於被證明消息的信息。

例如:A是證明者,A擁有CD出打開門的鑰匙。B是驗證者。A要向B證明他擁有鑰匙,但是B不知道鑰匙的任何信息。

顯而易見,A從入口處進去,假設都是從左邊C進去,那麼有兩種可能返回到出口(即入口)。一種是原路返回,另一種是用鑰匙開門從右邊D回到出口。重複試驗n次後,若A沒有鑰匙,那麼n次都是C進C出,爲小概率事件2^n。基本上是不可能的。即證明A擁有鑰匙。

關於三色定理的零知識證明:

當然,繞了半天圈子,大家會發現,這是一個著名的理論,稱爲 Graph three-coloring 問題。您可能也會知道,有趣的是對於某些圖形來說,找到一個解決方案或者確定一個解決方案是否存在都是相當困難的。事實上,Graph three-coloring - 具體來說,就是給定的圖形是否支持三種顏色解決方案的決策問題 - 在已知的複雜度等級 NP-complete 中。

毫無疑問,上面的例子so easy,用手都可以找到着色方案。OK,我們將思維發散。例如,假設我的蜂窩網絡非常龐大而複雜,以至於我所掌握的計算能力還不足以找到解決方案。在這種情況下,我們能想到的途徑是將這種解決方法外包給具有這種龐大算力的公司。例如,google。

但是,這會導致一個問題。

假設Google使用大量的計算基礎設施來爲我的圖搜索有效的着色。在我知道他們能夠找到解決途徑之前,我肯定不會付錢給他們。但是,在當我付清之前,谷歌不會給我一個他們的解決方案的副本。我們將陷入僵局。

較爲瘋狂的解決方案

Google的工程師與麻省理工學院的Silvio Micali進行了協商,他與Oded Goldreich和Avi Wigderson的同事進行了磋商,提出瞭如下的巧妙協議 - 一個如此優雅,甚至不需要任何計算機。它只需要一個大倉庫,大量的蠟筆和大量的紙張。哦,還有一大堆帽子。

它是如何工作的呢?

首先,我將進入倉庫,用紙覆蓋地板,並畫出我的網絡拓撲圖的空白表示。然後,我將退出倉庫。google工程師現在進入,按照他們預先的解決方案,使用(紅色/藍色/紫色,如上例)三種顏色的集合,隨機的爲我的空白圖進行着色。注意,使用哪種特定的蠟筆並不重要,只要着色是有效的。

在離開倉庫前,Google工程師用帽子蓋住每個頂點。當我回來的時候,我會看到:

很明顯,這種方法可以完美地保護Google的着色方案。但它對我來說是不利的。我可能會想,Google會用一個隨機的,無效的解決方案填充圖表。他們甚至可能根本沒有對圖表進行着色。

爲了消除我的疑慮,Google現在給了我一個“挑戰”圖表着色解決方案的機會。我可以隨意選擇這張圖的一個“邊緣”(也就是兩個相鄰的帽子之間的一條線)。然後谷歌將“揭開”這兩個相應的帽子,展示他們解決方案的一小部分:

對我而言,這個實驗有兩個結果:

  • 如果兩個顯示的頂點是相同的顏色(或根本沒有着色),那麼我肯定知道Google正在對我說謊。很明顯,我不會向Google支付一分錢。
  • 如果兩個透露的頂點是不同的顏色,那麼Google可能不會對我說謊,(僅僅是可能)。

我們肯定希望第一種情況出現,我直接就能知道Google在騙我(在驗證過程中,我一直是處於懷疑的角色)。問題是,即使在我們的實驗後,谷歌仍然可以對我說謊 - 畢竟,我只看了兩下帽子。如果圖中有E個不同的邊緣,那麼Google可能會填寫一個無效的解決方案。具體來說,經過一次測試,他們可能以(E-1)/ E的概率(1000個邊緣圖的計算結果達到99.9%的時間)成功欺騙我。

幸運的是,Google爲了進一步消除我的疑慮,允許我們繼續重複執行上述的操作!

我進入倉庫,重新繪製和我上述一樣的網絡拓撲的空白圖表。接下來,google工程師進入倉庫,用一個有效的解決方案重新填充圖形,但是使用上述三種顏色(紅色/藍色/紫色)重新隨機排序。這裏,要注意理解,我進去倉庫後,繪製的還是我原先的圖表,但是google工程師使用的着色方案是與第一次的着色方案不同的。

帽子又回來了。我回來重複挑戰過程,挑選一個新的隨機邊緣。這一次,如果一切順利的話,我現在應該稍微有點自信,Google告訴我的是實話。爲什麼呢?因爲爲了欺騙我,Google必須連續兩次幸運。這可能發生 - 但發生的概率相對較低。現在,Google連續兩次欺騙我的機會現在是(E-1)/ E *(E-1)/ E(或者我們上面的1000個邊緣例子大約有99.8%的概率)。

幸運的是,我們可以一直重複上述的操作過程。直到我確信Google可能會告訴我真相。

這裏有一個例子,大家可以直觀感受一下:零知識證明

請注意,我永遠不會完全確定Google是誠實的 - 他們欺騙我總是會有一個小概率。但經過大量迭代(E ^ 2),我終於可以提高自己的信心,以至於Google只能以微不足道的可能性來欺騙我 - 這足夠低了,實際上並不值得擔心。然後,我可以安全地把我的錢交給Google。

在這個過程中,我們要注意理解,Google 的着色方案也是受到保護的。即使我試圖通過在協議運行之間留下筆記來了解他們的解決方案,也不要緊。google 每次讓我驗證之前都會隨機使用新的解決方案。我每次獲取到的信息都是不同的,所以我沒辦法將這些信息串聯起來,最終獲得 google 的着色方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章