從「模擬」理解零知識證明:平行宇宙與時光倒流
安比(SECBIT)实验室
2019-08-06 03:17
本文约9770字,阅读全文需要约39分钟
相信很多人都聽說過零知識證明,但是只有極少數人聽說過模擬,然而模擬是理解零知識的關鍵。

編者按:本文來自 安比實驗室(ID:secbitlabs)編者按:本文來自

I know that I know nothing 

編者按:本文來自

安比實驗室(ID:secbitlabs)

相信很多人都聽說過零知識證明,但是只有極少數人聽說過模擬,然而模擬是理解零知識的關鍵。初識「零知識」與「證明」我們在第一篇文章『

初識「零知識」與「證明」


如果從直覺主義角度解釋,要證明一個交互系統中存在信息洩露,那麼你只需要指證:第幾個bit 導致信息洩露即可;但如果要證明不存在信息洩露,那麼你要對著所有信息流中的所有bit 說,這從1,2,3,4,5,…… 編號的bit 都沒洩露任何信息。看官們,這是不是很難?

本文約八千字,略微燒腦。

二級標題

二級標題

安全的定義與不可區分性

首先,一個交互式系統,也就是一個對話,它的「零知識」需要證明。畢竟,現代密碼學是建立在嚴格的形式化系統之上。在證明之前,還需要明確「安全假設」到底有哪些。所謂安全假設,比如我們說一個系統的權限隔離做得無比精確,每一個用戶只能看到被授權的信息,但是這基於一個安全假設:管理員賬號沒有被破解。又比如在手機銀行軟件裡,只能通過短信認證碼,才能完成轉賬功能,這也基於一個安全假設:你的手機SIM 卡沒有被克隆。如果我們深入地分析每一個我們感覺安全的系統,都存在大量的似乎不那麼穩固的安全假設。比特幣私鑰安全嗎?比特幣賬戶的安全假設也不少:首先你的助記詞不能讓別人知道,手機錢包裡私鑰保存加密算法足夠強,密鑰派生算法正規,你不能忘記助記詞,等等等。

脫離安全假設來談安全都是在耍流氓。一切安全都有前提的。只有經過數學證明之後,大家才能夠確信這個算法/方案的安全性基於一些非常明確的「安全假設」。

在證明之前,還缺少一個東西,那就是「安全定義」。在多數人的認知系統中,安全就是一個框,什麼都可以往裡裝。大家應該好好提醒下自己,當談論安全二字的時候,有沒有想過到底什麼是安全?怎麼算安全?

「安全」需要有一個數學意義上的嚴格定義

偉大的科學家香農(Claude Shannon)從信息論的角度給出了一個非常靠譜的安全性定義[2]:

完美安全:假設你是一個攻擊者,你通過密文獲取不到任何有價值的信息,破解的唯一手段就是靠瞎蒙。

大家想一想,這個定義很有趣,通過密文獲取不到信息,這就意味著你沒有獲得任何額外的計算能力,能夠幫助讓你以更短的時間來計算出明文。

但是這個定義太完美,以至於使用的加密算法都很難滿足這個安全性定義。後來Goldwasser 與Micali 等人寫了另一篇載入史冊的經典『概率加密』[2]。

在這篇論文中定義了這樣一個概念:語義安全。所謂語義安全在完美安全的定義上放鬆了些要求。

語義安全:假設你是一個攻擊者,你通過密文在多項式時間內計算不出來任何有價值的信息。

OK,理解完「不可區分性」,我們再回到「零知識」,如何證明一個交互式系統是「零知識」呢?首先我們要定義下零知識這個概念

注:不可區分性是概率意義上的不可區分;在學術上,它可以分為「完全不可區分」,「統計不可區分」,還有「計算不可區分」。在本文中,我們暫時不需要理解這些概念的差別。

二級標題

二級標題

遇見模擬器

先開個腦洞,設想在平行宇宙中,有兩個平行的世界,一個叫做「理想世界」(Ideal World),另一個叫做「現實世界」(Real World)。我們每一個個體可以在兩個平行世界中愉快地玩耍,但是兩個世界的普通人無法互相感知,也無法互相溝通。

假設「你」是一個很厲害的密碼破解者,而且「你」不是普通人,具備在平行宇宙之間穿梭的能力。而Alice 有一個地圖三染色的答案,你的目的是通過和Alice 對話來獲取地圖三染色的答案,會話的過程參考上一篇文章的「地圖三染色問題」協議。

繼續腦洞,Alice 只存在「現實世界」中;在「理想世界」,Alice 被「替換」成了一個長相與聲音一模一樣的個體,我們稱替身為Zlice。下一步,把「你」同時放入兩個世界中,但不讓你知道是你當前位於哪一個世界。你的兩個分身所面對的都是一個“Alice”模樣的人。

再重複一遍,在「現實世界」中, 與你對話的是一個真實的,並且誠實的Alice;而在「理想世界」中,與你對話的是Zlice (假Alice),Zlice 雖然相貌語言與Alice並無二致,但差異是,Zlice 並不知道「知識」,即不知道一個三染色問題的答案。

接下來在這兩個世界中,你的兩個分身將同時與真假Alice 進行對話。神奇的事情發生了,最終在兩個世界中,你的兩個分身都被說服了,都經過n輪挑戰,沒有發現對方作弊,即「你」的兩個分身都認為對方確實知道「答案」 。換句話說,「你」沒有能力「區分」出來自己到底在「現實世界」 還是「理想世界」,當然也沒能力「區分」和自己對話的究竟是Alice 還是Zlice。不僅如此,對於吃瓜群眾我而言,如果把「我」作為觀察者放入任何一個世界中,我會和你一樣「無法區分」出來眼前的這個長相為“Alice” 的人到底是真還是假。

下面是燒腦結論:

這個交互系統為何是「零知識」?

因為Zlice 是沒有任何知識,而且她和Alice 不可區分。

我再換個方式解釋:因為你和我都沒辦法區分我們究竟是在哪個世界中,兩個世界發生的交互過程幾乎不可區分,而且其中一個世界中根本就不存在知識,因此,我們說這個交互協議——「地圖三染色問題」是「零知識的」。

這裡還有個前提,理想世界必須是算法可構造的。然後,有一個「神」,他通過算法「模擬」了一個「理想世界」,其中構造了一個算法叫做Zlice,她沒有「知識」作為輸入,也即「零知識」;除此之外,「理想世界」與「現實世界」一模一樣。

設想你在對話過程中,如果真Alice 洩露了信息,那麼你就能立即區分出面前這個人是真Alice 還是Zlice,Zlice 是不可能偽裝洩露信息的。因此可以得出結論:

好了,到這裡,我們用「模擬器」這個概念對「零知識」進行了定義。

接下來,我們開始進入證明零知識的環節。

Save World State as Snapshot X

二級標題

二級標題

區分兩個世界

證明的零知識過程,等價於構造(尋找)一個「模擬」算法,這個算法能夠讓模擬器來模擬出一個「沒有知識」的理想世界。如果這個算法存在,而且兩個世界不可區分,那麼就證明完畢。

其實,這裡有個關鍵點,借用電影『盜夢空間』中的劇照,在「理想世界」中有點東西是和「現實世界」本質不同的。這個東西是區分兩個世界的關鍵,而它要讓我們「無法感知」。這個東西不是夢境中的陀螺,它是一種「超能力」,模擬器Simulator 所具備的超能力。

比如這樣一種超能力:「時光倒流」。

圖片描述

圖片描述

(上圖是電影『土撥鼠之日』的劇照,劇中主人公每次睡醒都會回到2月2日的早上,這樣他永遠活在同一天裡)

等等,各位看官,不是剛才我們一直在討論不可區分性嗎?怎麼兩個世界又需要區分啦? “我糊塗了”。不要慌,所謂的不可區分性針對的是理想世界中的個體認知而言。而「可區分性」是對位於世界外部的神而言。

首先「零知識」是為了保護Alice 的利益,因為Alice 不想在交互過程中透露更多的信息給Bob,不想讓Bob 知道她所擁有的秘密w,甚至不想讓Bob 從交互的過程中分析出哪怕一丁點的信息。那麼怎麼保證這一點呢? 「模擬器」這時候登場了,它能模擬出一個和現實世界外表一模一樣的「理想世界」,然後「模擬器」在這個世界中可以輕鬆地騙過任何一個對手,讓對方無法分辨自己是在現實世界中,還是理想世界中。因為「模擬器」手裡沒有那個秘密w,「理想世界」是零知識的。又因為兩個世界的不可區分性,所以我們可以得出結論:Alice 的交互協議是「零知識」的。

我們來看一個具體的例子,上一篇文章[1]中提到的地圖3染色問題。

二級標題

  • 二級標題

  • 地圖三染色問題的零知識證明

  • 回憶一下「地圖三染色問題交互系統」:

  • 第一步:Alice 把地圖染色答案做一次完全置換,然後將所有頂點蓋上紙片,交給Bob

第二步:Bob 隨機挑選一條邊

第三步:Alice 打開指定邊的兩端頂點的紙片,Bob檢驗兩個頂點的顏色是否相同,如果不同則通過,如果相同則失敗

回到第一步,重複n 遍

我們接下來就來證明上述這個交互是零知識的,這裡先假設驗證者Bob 是誠實的,這有助於大家理解這個證明過程。然後我們再討論,如果Bob 不誠實的證明方法。

在「理想世界」中,跟Bob 對話的是一個「模擬器」,它模擬出了整個世界的樣子。 Bob 按照三染色問題的交互協議進行交互。模擬器並沒有一個三染色答案,它索性把所有的頂點都染成了灰色。

首先,模擬器模仿Alice ,把每個頂點用紙片蓋起來。然後發給Bob。

Bob 隨機挑選了一條邊,挑戰證明者。

模擬器這時候不能打開紙片,因為這條邊兩端的顏色都是灰色啊。

這時候,模擬器要發揮「超能力」了,他運用時間倒流的技能,回到對話第一步之前。

模擬器現在處於第一步,他把最下面那條邊的兩端染上任意不同的顏色,然後重新蓋上紙片,並發給Bob。

Bob 這時候無法感知到時間已經倒退回第一步了,對他來說,一切都是新鮮的,他「誠實」地再次選擇了最下面的邊。

不誠實的Bob

在上面的證明過程中,有一個相當強的假設,就是每次時間倒流之後,Bob都會選擇同一條邊。如果Bob 每次都會換一條不同的邊呢?沒關係,如果在模擬器第一次實施時間倒流之後,Bob又選擇了不同的邊,那麼模擬器可以把顏色打亂之後,再次運行時間倒流,在多次時間倒流之後,Bob 極大的概率總會一次選擇模擬器進行染色的那條邊,然後這時候模擬器才走到第三步,打開紙片。

二級標題

二級標題

阿里巴巴、洞穴與芝麻開門

在網上眾多的講解「零知識證明」的中文科普文章中,有一個例子流傳非常廣,這就是阿里巴巴與強盜的故事。可惜地是,這些不同版本的故事都只講了一半。那麼我接下來講一個不一樣的「阿里巴巴」與「四十大盜」的故事:

在很久很久以前,在一個叫做巴格達的城市裡,住著一個人叫阿里巴巴。每天阿里巴巴會到集市上買東西。

有一天,阿里巴巴被一個盜賊搶了錢包,於是他一路追著盜賊到了一個山洞口,然後盜賊就消失了。阿里巴巴發現洞口裡面有兩條岔路,如下圖所示。

阿里巴巴不知道盜賊往哪邊跑了,於是他決定去「左邊」岔道看看,很快阿里巴巴就發現這是個死胡同,也不見盜賊踪影。然後他又去「右邊」岔道檢查,也是個死胡同,不見盜賊踪影。阿里巴巴自言自語道:「該死的盜賊跑哪去了呢?」

第二天,阿里巴巴又去集市買東西,這次另一個盜賊搶了他的籃子,然後阿里巴巴追著這個盜賊到了昨天同樣的山洞口,然後盜賊又不見了,這一次阿里巴巴決定先去「右邊」岔道看看,沒有發現盜賊,然後再去左邊看看,也同樣不見盜賊。這好奇怪。

第三天,第四天,……,第四十天,同樣的故事上演,阿里巴巴追著第四十個大盜到了神秘的洞口,盜賊就消失了。阿里巴巴想,這個山洞裡面一定有機關,於是他躲在「右邊」岔道的盡頭,耐心地等了很長時間,這時一個盜賊跑了進來,走道岔道盡頭之後,念了一個咒語「芝麻開門」 。這時候牆壁居然打開了,盜賊跑進去之後,然後牆壁又合上了,這時候另一個受害者追了進來,找了半天,一無所獲。

阿里巴巴隨後等他們走了之後,試驗了一下這個咒語,果然非常有效,而且阿里巴巴發現這個牆壁通向「左邊」岔道。後來,阿里巴巴找到了更換咒語的辦法,並且把一個新咒語和洞穴的地理位置寫在了一張羊皮紙上。

注:到這裡,故事並沒有結束.... (上字幕)很久很久以後

在很多年後,到了80年代,阿里巴巴的羊皮紙流落到了幾個密碼學家手裡,他們跑到巴格達,找到了洞穴的位置,儘管過了幾個世紀,咒語居然仍然有效,這幾個密碼學家興奮地打開牆壁,在兩個岔道之間跑來跑去。

看到這裡,大家是不是對「模擬」慢慢有了感覺?這裡第二個電視台的主持人通過剪輯視頻的方式,而不是「時間倒流」。他對「理想世界」,也就是電視中播出的內容所在的世界,進行了外部幹預,達到了同樣的效果。對理想世界而言,這種剪輯本質上就是一種超能力

這個故事其實來源於一篇論文『如何向你的孩子解釋零知識證明』(How to Explain Zero-Knowledge Protocols to Your Children)[3],發表在1989年的美密會議上。

二級標題

二級標題

模擬與圖靈機

一談到超能力,大家有沒有覺得這玩意不科學。是的,如果我們無腦地用「超能力」來解釋任何事情,那麼我們邏輯就無法自恰(Consistent)。在理想世界中,模擬器是不能隨便開掛的,比如模擬器肯定不能直接修改Bob 的內部狀態,比如Bob 在驗證步驟明明驗證失敗,但是模擬器強硬去把驗證結果改為「接受」,這會導致我們可以證明:「任何的交互系統都是零知識的」,這個錯誤結論。

模擬器不是理想世界中全能的上帝。

那麼模擬器到底可以是什麼呢?模擬器其實只是一個圖靈機。所謂的「時間倒流」,「剪輯錄像」這類的所謂超能力並不是玄乎的超自然能力,而是圖靈機可以實現的功能。計算機專業的朋友們肯定都用過VMWare,虛擬機之類的軟件,本文講的「模擬器」完全可以想像成一個「虛擬機」軟件,它能虛擬出一個計算機環境,這個虛擬環境就是我們上文說的「理想世界」。 「時間倒流」如何解釋呢?不知道大家有沒有用過虛擬機軟件的「快照」功能(Snapshot),使用快照的時候,虛擬機軟件可以把整個虛擬計算機的所有狀態保存下來,然後在任意時刻,虛擬機軟件都可以重新回到保存快照的位置繼續運行。

注:其實所謂時間倒流是計算機中的一個基本操作,在程序語言理論中有一個概念叫做Continuation。抽像地講,Continuation 表示從現在開始到未來的計算。 Continuation這是控制流的一個顯式抽象,而goto,call-with-current-continuation,甚至thread scheduling 都可以看做是操作Continuation 的操作符。比如採用call/cc,也就是call-with-current-continuation 就可以輕鬆地實現「回溯」功能。保存快照可以理解為保存當前的Continuation,而回到過去的某一刻,就是應用這個Continuation。

證明零知識的過程,就是要尋找一個算法,或者更通俗點說,寫出一段代碼,它運行在外部計算機系統中,但是實現了虛擬機的功能。而且在虛擬機中,需要有一個不帶有「知識」作為輸入的Zlice,可以騙過放入虛擬機運行的Bob。

如果還沒理解上面我這句話,請時光回退到『區分兩個世界』這一小節,重新思考模擬。 :P (Load World State from Snapshot X)

二級標題

二級標題

柏拉圖的洞穴寓言

模擬無處不在,哥德爾不完備性定理就使用了模擬的概念,用哥德爾數(Godel Numbers)模擬了形式算術。圖靈提出了「Universal Turing Machine」(通用圖靈機)的概念,這種圖靈機可以模擬自身。

但最早的「模擬」概念,出自『理想國』一書的第七卷[4]中,古希臘哲學家柏拉圖講了這麼一則寓言——Allegory of Cave:

設想在一個暗無天日的山洞中,有一排被鎖鏈鎖住的囚徒,他們從小就只能看到前方的牆壁。這些囚徒們身後是一堵牆,再後面有一堆放著火,在火與牆壁之間,有一些人舉著道具和木偶來回走,這樣道具木偶就會在火光映射下在牆壁上投下影子。而這些囚徒們整天就只能看著這些影子。因為這些囚徒們從打出生起,所聞所見就只是前方洞壁上的各種影子,他們會以為所看到的這些影子就是真實的世界。

過了一段時間,他對洞穴中的囚徒心生憐憫,於是想去把他們都帶出來。但是當他再次返回洞穴中,他因為已經適應了外面明亮的世界,回到洞穴中反而看不清楚。被鎖的囚徒們反而認為他的視力受損,胡言亂語,是個瘋子,最後當他想盡辦法把這群囚徒帶出洞穴時,被囚徒們聯手殺死。

未完待續

這是則人類命運的寓言,就和那一排被鎖鏈鎖著的囚徒類似, 我們以為眼睛看到的就是世界的真相,但實際上,那也許是幻象,就像洞穴牆壁上投下的影子一樣。

未完待續

未完待續

回顧一下在地圖三染色問題中,Bob 在「理想世界」與「現實世界」中的對話。雖然Bob 無法區分兩個世界,但是有一點,他可以確信:現實世界中,Alice 沒有超能力。

參考文獻

參考文獻

[2] Shafi Goldwasser and Silvio Micali, Probabilistic Encryption, Special issue of Journal of Computer and Systems Sciences, Vol. 28, No. 2, pages 270-299, April 1984.

[3]Quisquater, J.J., Quisquater, M., Quisquater, M., Quisquater, M., Guillou, L., Guillou, M.A., Guillou, G., Guillou, A., Guillou, G. and Guillou, S., 1989, August. How to explain zero-knowledge protocols to your children. In Conference on the Theory and Application of Cryptology (pp. 628-631). Springer, New York, NY.

問題來了,Alice 沒有超能力,並不能直接證明Alice 真的有答案。萬一這個交互協議並不能保證Alice 一定有知識呢? 「零知識」保護了Alice 的利益,誰來保證Bob 的利益呢?這個問題留給下一篇。

[5] Goldwasser, Shafi, Silvio Micali, and Charles Rackoff. "The knowledge complexity of interactive proof systems." SIAM Journal on computing 18.1 (1989): 186-208.

[6] Oded, Goldreich. "Foundations of cryptography basic tools." (2001).

[7] Rackoff, Charles, and Daniel R. Simon. "Non-interactive zero-knowledge proof of knowledge and chosen ciphertext attack." Annual International Cryptology Conference. Springer, Berlin, Heidelberg, 1991.

[8] Goldreich, Oded, Silvio Micali, and Avi Wigderson. "Proofs that yield nothing but their validity or all languages in NP have zero-knowledge proof systems." Journal of the ACM (JACM) 38.3 (1991): 690-728.

[1] 初識「零知識」與「證明」. 安比實驗室. 2019.

安比(SECBIT)实验室
作者文库