鏈聞ChainNews
公眾號ID:chainnewscom
本文講述了密碼學的歷史、工作原理、零知識證明及其未來潛在的影響。讀者如果具備區塊鏈的基本知識,閱讀此文會相對容易。不過,本文還是力圖讓更廣大的讀者讀起來覺得有趣,且和自己有關。
作者:Karen Scarbrough
編譯:Perry Wang
先來一點熱身。阿加莎·克里斯蒂著名的系列偵探小說,曾這樣描述在家鄉偵破各種犯罪行為的老婦馬普爾小姐…
……這位未婚老嫗溫和恬靜坐在那裡,你會以為她的大腦有種洞穿別人潛意識的魔力,破解任何難題只不過是個時間問題。想到她一輩子都住在英國聖瑪麗米德小村莊,這更加令人景仰。她只是透過村莊和那裡的日常生活這一稜鏡來了解世界,不過,由於她對整個村莊的觀察如此細緻入微,整個世界彷彿都逃不過她的慧眼。
俄羅斯作家列夫托爾斯泰寫道:
知一村而知世界。
以上兩位作者指的是,從一個簡單視角和狹小空間來推演出最深刻的真相和知識的出色能力。這種能力對那些在塵世生活中覺得迷茫、不堪重負和厭倦的靈魂而言,是一個巨大的鼓舞,與此同時,對那些準備冒險探索而在理解世界方面感到重負的靈魂而言,這種能力也是一個完全的解脫。
兩種狀態其實都是一種投降,前者意味著一切都懂了,也就索然無趣了,後者則意味著沒有什麼事情是能搞清楚的,也就是不可企及的。創新和變革的高速發展,常常讓我們從一個極端滑向另一個極端。
不過人們還存在另外一種選擇:追求理解。一份追求意味著一項計劃的起點。如果你想,譬如「追求當上一名醫生」,你不可能早上醒來就決定今天就可以做一臺手術。你得學習相關課程,申請醫學院或者參加其他的醫學培訓。想想我們會問孩子 : 「你長大了做什麼?」但問成年人的問題則是「你在學習什麼?」或者「你正在學什麼本事?」我們對答案會有明顯不同的預期——想成為什麼是一回事,追求成為什麼則完全不同。
如果我們真想弄明白某件事,那就得從我們起點開始追求,需要去搞懂微小的細節以及它們與我們的世界如何關聯的歷史。
以下是理解密碼學及其應用的一段追尋旅程。我開始只是因為密碼學與區塊鏈相關,就去探查了一些密碼學的最新應用和流行詞彙,最後卻發現,密碼學其實反倒是故事的起點。
本文的主要目的是讓沒有數學、電腦科學或密碼學背景的非專業讀者理解密碼學、其過往和當前歷史,以及未來的應用和潛力。
偵探小說家愛·倫坡的短篇小說《金甲蟲》曾給美國當代經濟學家米爾頓·弗裡德曼帶來啟發,所以,談到密碼學的時候,誰知道一篇好的文章可能會把什麼樣的腦袋吸引到這個領域來呢…
起源
整體說來,密碼學旨在透過加密協議,讓世界進行安全的通訊,或在兩方或多方之間安全地進行資訊分享,並能阻止惡意第三方讀取或截獲私有資訊。密碼學涵蓋很多加密模式,用不同方法保護儲存的資料不會因第三方「竊取」而曝光。
歷史
密碼學歷史可以被分成兩個時間段:經典和現代。
在經典密碼學世界中,資訊是透過金鑰組合或者說是一組字母或數字來加密,然後由同一組金鑰解密。一個簡單的例子是「凱撒密碼」,字母只是按字母表的順序進行位移,就可以加密或解密。值得注意的是,一旦搞清楚私密金鑰,此前所有的加密資訊就都被解開了。整體而言,到第二次世界大戰期間,雖然加密技術不斷進步,但加密手段仍然未有超越,無非是一連串的字母位移和配置,最終都被手工或藉助計算機而破解。
在貝爾實驗室從事密碼學研究的美國數學家克勞德·夏農(Claude Elwood Shannon)於 1948 年創立了資訊理論,他在資訊理論中聲稱,最好的加密方法應該不顯示關於被加密的明文的任何資訊。要知道資訊理論正是要量化資訊,使其能被分享。
資訊現在被定義為「熵」,或者叫一個變數所涉及的不確定性的度量。譬如,想象一下你在記錄拋硬幣的結果,硬幣頭像朝上的可能是 50%,記為數字 1, 硬幣頭像朝下的可能是 50%,記為數字 0。你把一連串 1 和 0 的結果記錄下來,這個序列不能被壓縮成一個更短的字串——因為 1 和 0 出現的機率均等,那麼我們怎麼可能縮短這個字串呢?辦不到的。但想象一下,如果頭像朝上的概率為 80%,朝下的概率為 20%,你所得到的字串中, 1 的數量會遠多於 0,這樣我們就可以壓縮字串來代表一個真實的、更大數量的 1 和 0。這種關於某種可能性的表達就是「資訊」,也是關於壓縮如何工作的原理。
夏農知道,要隱藏資訊,一個好的加密方法應該製造隨機性,這樣一來原始資訊就無法溯源出來。譬如,我們對 COLOR 和 COLOUR 兩個英文單詞進行加密,我們知道這兩個詞很相似。不過,如果我們用一種加密機制來加密,結果卻完全不同,那就堪稱完美的加密。
這意味著,即便要被加密的原初訊息只有極小的變化,也應翻譯成迥然不同的加密訊息,和原始訊息的加密訊息之間沒有絲毫相像。有趣的是,目前還沒有任何一種加密技術可以做到一丁點的變化就能影響到加密資訊的全部。密碼學還在追求完美的保密性。
接著,伴隨計算機的誕生,1970 年代迎來了現代密碼學,即利用複雜性理論來發展加密方法,使用者可以輕鬆地加密、解密或驗證訊息,而在不知道私密金鑰的情況下 ,「暴力破解」這一方法所需的算力被證明相當之高,要達到量子計算的難度。
因此,與經典密碼學中加密方法必須保密這一條件不同,現代密碼學的方法和演算法都可以被共享。即便提前知道相應的理論和演算法,也幾乎不會給你「破解它們」提供什麼優勢。
以下兩個里程碑式的突破把世界帶入現代密碼學時代:
數字加密標準(DES)
公開金鑰密碼學(譬如:RSA 演算法和 Diffie-Helman 演算法)
DES (Data Encryption Standard)規範了電子資料的加密方法,這推動了對密碼學更廣泛的研究。(題外話,美國政府幹預 DES 的開發,助長了人們對政府透過後門干預加密技術的不信任,等等。關於啟用後門技術的優缺點的爭論一直持續到今天。)言歸正傳,DES 在 2002 年已被高階加密標準 (AES) 所取代。
至於公開金鑰密碼學,其工作原理如下:
1. 使用者 A 生成一個 ⑴ 私密金鑰(私鑰)和一個 ⑵ 公開金鑰(公鑰)。
一個「金鑰」的定義是什麼呢?金鑰是一段資訊,可以決定一個演算法的輸出。舉個非常簡化的例子,假設使用者 A 有一個演算法 F(x,k),其中她想用金鑰 k 「掩飾」一個數字 x,然後傳送給另一個使用者 B,公式如下:
F(x, k) = x * k * 7
x 的值根據使用者 A 想要共享的資料或數字而變化。然後使用者 A 會用金鑰 k 乘以 x,以「隱藏」它。
假設使用者 A 的金鑰是 10,她想把數字 3 發給使用者 B。她會用 3 * 10 * 7 = 210 來「加密」數字 3。使用者 A 會把 210 傳送給使用者 B。如果使用者 B 知道金鑰 k 和演算法 F,他只需要把 210 除以 10 和 7 來「解密」這個秘密數字,結果即為 3。不過,在本例中,加密金鑰和解密金鑰是相同的,或者稱為對稱加密,即用於加密和解密的是同一個金鑰 3。
而在非對稱加密中,公鑰「加密」和私鑰「解密」是兩個不同的數字,其演算法也要比上面提到的複雜得多。
一般來說,公鑰是從私鑰派生出來的;不過,要從公鑰出發找到私鑰,「在計算上是不可行的」。在正規術語中,這被稱為陷門函式(trapdoor function)——在一個方向上很容易處理、但在反方向上執行起來極具挑戰性。
因此,從私鑰生成公鑰很容易,但是從公鑰計算出私鑰非常有挑戰性。這種差異性越大,這種方法就被認為越安全。從根本上說,它依賴於計算中的一個事實:乘法計算起來非常快,而除法要慢得多。
繼續……
2. 使用者 A 把她的公鑰傳送給使用者 B。
3. 使用者 B 用使用者 A 的公鑰加密一條要發給 A 的資訊 。
4. 使用者 B 給使用者 A 傳送一條加密的資訊。
5. 使用者 A 利用她的私鑰解密這條資訊,然後讀到使用者 B 發給她的資訊。
在 RSA 演算法中,簡單說來,私鑰和公鑰是基於兩個大素數相乘形成的半素數而生成的。前面講過,因式分解(除法)在計算上比乘法困難得多。不過,RSA 作為一種密碼學完整性的方法正在衰落。
Global Security 指數是一種量化加密系統的安全性的標準,它將破解一個加密系統所需的算力翻譯成「燒開水」所需的能量。基於這個指數, 288 位的 RSA 加密,可用燒開不到一茶匙水所用的算力破解。目前,大多數 RSA 密碼術使用 2048 位的金鑰。
我們可以對比來看一種新型的私 / 公鑰密碼術——橢圓曲線密碼術(Elliptic Curve Cryptography,ECC)。破解一個 288 位的 ECC 系統,所需的能量可以煮沸地球上所有的水。因此,後者正在快速取代 RSA,成為區塊鏈和零知識證明中使用的密碼學系統的基礎。這是關於 ECC 與 RSA 對比的一個相當綜合的概括。
在繼續講下去之前,我想提醒一下密碼學的使用在歷史上有多麼重要。
從愷撒大帝到現在,一個國家或一個民族能夠安全交流的價值,以人類生命和經濟價值計算都是不可估量的。早在巴比倫人佔領以色列時期的 《耶利米書》中,巴比倫人被以色列人擄到巴比倫時,巴比倫就被稱為代表暗碼式翻譯的「示沙克」(耶利米書 25 章 26 小節),有可能是指保護先知不受懲罰。甚至托馬斯·傑斐遜也參與過密碼學,他製作了美國軍隊使用的傑斐遜圓盤,這個發明一直延用到 20 世紀。後來,英國科學家艾倫·圖靈破解德軍 Enigma 密碼學的工作,被認為縮短了二戰的時間。毫無疑問,密碼學改變了歷史。
為什麼需要零知識
在前面演示的私鑰 / 公鑰示例中,請注意,使用者 A 永遠不應該暴露她的私鑰,因為任何獲得她的私鑰的惡意方都能夠解密其獲得的每一條加密訊息。
我們來考慮另一種情況:常規密碼在大部分資料庫中都儲存為雜湊(hash),而不是明文。雜湊是一個函式,會把一個輸入轉換成另一個惟一的字串資料,從而掩飾或隱藏原始資料。
在雜湊函式中,實際上「不可能」從雜湊函式建立的惟一資料字串反推出原始資料。例如,系統可以使用 keccak256 雜湊演算法,將密碼「3nY82$pwt4」雜湊為 0xc24ea779490258728751c1789aa30fa007261f5c052e22914599b46 ae13ccc5a。看看這種字母和數字的組合,即使知道雜湊演算法並使用強大的算力,也無法倒推出原始密碼 3nY82$pwt4 。重要的是,雜湊函式在定義上是決定性的,這意味著相同的輸入總是會得到相同的輸出。因此,如果一個網站將您的密碼儲存為 0xc24ea779490258728751c1789aa30fa007261f5052e22914599b46 ae13ccc5a,那麼當您輸入「3nY82$pwt4」時,該網站可以透過對其雜湊,並與儲存在資料庫中的雜湊進行比較,來檢查您是否輸入了正確的密碼。
在上面的例子中,請注意:雖然網站不會儲存您的明文密碼,但您仍然需要透過一個安全通道與網站共享密碼,這樣才能證明你知道你的正確密碼。
如果您可以向網站證明您知道正確的密碼,而又不向他們共享或透露該密碼,那不是更好嗎?或者做的更出色,證明以前的那個你就是現在你說的這個你 ?
總體來說,這種方法是當今大多數行業驗證資訊的方式——需要提供資訊來驗證它,需要重新執行計算來驗證它是否完整地正確執行。比如,如果銀行想批准一筆從您的帳戶到另一賬戶的電匯,銀行必須在轉賬前檢查你的賬戶,來確認你的帳戶中有足夠的錢,來證明您不是在花費你實際不擁有的錢。同樣,如果你想證明自己的身份,你必須提供你的社會安全號碼或政府簽發的其他身份證明。
而在另一些情況下,不需要知道知識的細節就可以檢查結果。例如,供應商 A 的出價是否高於供應商 B ? 供應商 B 不應該看到供應商 A 的出價,同樣,很可能雙方都不想向客戶以外的第三方披露自己的出價。不過,零知識證明可以向一個監管或審計機構證明,供應商 A 的出價低於供應商 B 。
這就是零知識證明所提供的東西:一方(證明者)能夠向另一方(驗證者)證明,他們擁有某一條特定的資訊,而又無需披露該資訊是什麼。
零知識證明 (Zero Knowledge Proof)系統
零知識證明系統是 1989 年由 Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 在《互動證據系統的知識複雜性》(The Knowledge Complexity of Interactive Proof Systems)論文中首次提出的。(值得注意的是,這篇論文在最終發表之前被拒絕了大約三四年。)
這些最初的零知識證明系統是互動的,意味著數學證明的完成,需要驗證者和證明者幾方的互動才能完成。這意味著驗證者不能獨立操作,而證明者必須在場或可以出場才能完成證明。現在,我們已經發展到非互動式的證據系統,在這種系統中,證明者可以釋出一個證據,並將其留給驗證者進行檢查。
零知識證明的驗證方法強調的是可靠性和完備性。可靠性的原則是指,證明者不能說服驗證者接受一個錯誤的陳述。事實上,這基於一種可能性,即證明者生產一個假的證據的可能性非常、非常、非常低,這一點與幾十年來我們一直信任的當前的加密機制沒有什麼不同。完備性的原則是指,一個證明者能夠說服驗證者接受一條正確的陳述。
很明顯,零知識證明的一個主要特徵是,它們能夠在保證隱私的同時證明資訊被知曉,但是零知識證明系統系統更有趣的地方在於,它們越來越簡潔,這一點經常被忽視。零知識證明系統能夠比其他方法更簡潔地證明資訊。驗證一個證據的時間,比重演一個計算以驗證其正確性所需的時間要指數級的短得多,而後者是目前各種變動中的計算所最常用的方法。
重演計算代價高昂,需要時間和資源。(請注意,這與驗證演算法或程式的正確性不同——驗證計算的完整性則完全是另一個範疇。)
更重要的是,這意味著執行計算本就效率低下的區塊鏈,應該被用於驗證計算的證據,而不是用於一般的計算本身。
快進到今天的大環境,我們有幾種不同的零知識證明系統的實用案例:
在此,我們將簡要討論 :
ZK-SNARKs
ZK-STARKs
防彈證明
ZK-SNARKs
ZK-SNARKs 是「零知識簡潔的非互動式知識論證」(zero knowledge succinct non-interactive arguments of knowledge)的縮寫,Zcash 採納了這種方法,Zcash 現在叫 Electric Coin Company,用這種方法將加密貨幣的支付匿名化。(注:Zcash 區塊鏈實際上是比特幣區塊鏈的一個分叉。)
在 Zcash 區塊鏈中,礦工不需要知道:
1. 誰在傳送 Zcash (因此也無需知道他們擁有多少 Zcash)。
2. 誰在收取 Zcash.
3. 被傳遞的 Zcash 的數量。
不過,礦工依然能夠證實交易。
使用 ZK-SNARKs,礦工證實的事情包括,沒有傳送者傳送或建立比他們當前擁有的 Zcash 更多的 Zcash,接收方只收到傳送方試圖傳送的金額。以這種方式,Zcash 成了一個真正的匿名系統。在比特幣和包括以太坊在內的大多數公共區塊鏈上,所有交易資訊都是公開的,傳送地址、接收地址和金額都是已知的。此外,每個單獨帳戶中持有的幣都是已知的。
(應該提醒的是,實際上 Zcash 有兩種不同的地址格式。T 地址是公開的,從這些地址傳送和接收的資訊可以被視為比特幣區塊鏈。Z 地址是私密的,如果一個 Z 地址將 Zcash 傳送到另一個 Z 地址,那麼該資訊將完全保持私密狀態。不過,如果一個 Z 地址將 Zcash 傳送到一個 T 地址,資訊將成為公共狀態。據估計,Zcash 區塊鏈上只有 1% 的交易使用完全私密交易。在 2018 年底 Sapling 升級之前,由於規模和記憶體等要求,Zcash 區塊鏈上的私人交易只能在膝上型電腦上進行。現在,私人交易只需要 2 - 3 秒 , 理論上可以從移動裝置上完成交易,這是相當驚人的。想一想,不到兩年前的 2017 年 Scarbrough 感恩節時,我和我從事網路安全的兄弟展開過一次隱私大辯論,我們都沒有想到,零知識交易在如此短的時間可以發展到如此快的交易速度。我輸掉了那場辯論,但公平地說,只是對方獲得的支援人數比我多。)
ZK-SNARKs 具體如何運作?
ZK-SNARKs 背後的數學理論是精細和密集的,但是可以(稍微)用正確的原理和定理進行濃縮。以下是 Christian Reitweissner 的「SNARKs in a Nutshell」論文的一個壓縮版本。
首先,問題被編碼並壓縮成一組多項式等式,作為一個二次運算程式。
t(x)h(x) = w(x)v(x)
利用這些方程,證明者的目標是使驗證者相信等式成立。
這些多項式可以是好幾個項,如果對大量的點進行等式檢查,效率會相當低。為了引入簡潔性,ZK-SNARKs 依賴於 Schwartz-Zippel 輔助定理,即不同的多項式在大多數點的求值是不同的,因此只要檢查少量的點,其實就可驗證證明者使用的多項式是否正確。這樣,求值只需要在點的一個子集來證明等式,而這些求值點是隨機和秘密的。隨機性和秘密點通常被稱為 ZK-SNARKs 可信設定的有毒廢物。設定階段生成一個公共引用字串 (common reference string ,CRS),該字串生成一個隨機點 s,從該點求值多項式,並生成一個秘密數字 α,來「移位」多項式的值以保持機密性。s 和 α 在設定階段之後立即銷燬,於是惡意行為者就不會得到它們,從而只能在自己的基礎上構造出錯誤的證據。
驗證者現在可以檢查,在一個隨機點 s 處下列多項式保持相等:
t(s)h(s) = w(s)v(s)
接下來,就是掩蓋隨機性、秘密求值點,並允許驗證者將使用同態加密形式的證據拼成完整拼圖。在同態加密中,值的加密方式是這樣的:可以對這些值執行數學運算,然後解密以顯示一個值,就好像最初的數字被用在求值中一樣。換句話說,它允許您隱藏數字、執行一次求值並取消隱藏,就像您對原初的、未隱藏的數字進行操作一樣 (在本例中不是所有的數學操作,而是某一些)。
證明者只知道 E(s),但能夠計算 E(t(s)), E(h(s)), E(w(s)) 和 E(v(s))。
透過乘以另一個秘密值 k 來混淆同態加密值,證明者也能夠隱藏其原始資訊。
本質上,驗證者是在檢查下面這個形式的等式,t(s)h(s)k = w(s)v(s)k
ZK-SNARKs 如何設定 ?
對於上面提到的如何生成「多項式等式」和隨機設定,有一些人表示懷疑。
關於多項式等式的質疑,我能給出的最短版本是,最初要被證明的等式(比如 A > B 嗎 ? 或者 A + B =C 嗎 ? )被壓縮到一個迴路中,即約束條件被用於建立這些多項式。
另外,你是如何選擇隨機數的呢 ?
在 Zcash 的第一個版本中,最初的創始成員使用了一種精心設計的方法,透過他們所謂的「儀式」來製造這種隨機產生的有毒廢物,完整故事請見這個連結 https://www.wnycstudios.org/story/ceremony。
「儀式」最終是一個產生隨機結果的多方計算 (MPC)。換句話說,儀式的每個成員 (總共六方) 都產生了各自獨特的隨機金鑰,這些金鑰被組合成一個再次隨機的金鑰。最近,在 Zcash 的最新版本 Sapling 中,他們為 MPC 實施了一種新的方法論——80 多名參與者一起生成了 ZK-SNARKs 的隨機私鑰。在這種新方法中,只需要一方保持忠誠,私鑰就不會被複制——換一種說法,這意味著儀式的所有參與方都必須變節,才能顛覆這個系統。
ZK-STARKs
相比之下,STARKs (簡潔透明知識論證,succinct transparent arguments of knowledge)則因其透明和簡潔密碼學而被稱讚。和 ZK-SNARKs 不同,STARKs 不需要一個可信的設定,因此也不需要 ZK-SNARKs 中出現的有毒廢物那種事情——因此具有透明性。STARKs 能夠透過使用 Arthur-Merlin 協議消除對可信設定的需要。在該協議中,驗證者 Arthur 為每個問題生成隨機性,而證明者 Merlin 則透過解決問題來提供證據。
STARKs 還透過使用最小的密碼假設和在安全和抗衝突的雜湊函式之間取得平衡,而使其密碼術更簡潔。這留下了潛在的後量子時代的安全風險。最小密碼假設適用於互動式 STARKs,而非互動式 STARKs 則需要 Fiat-Shamir 啟發式。
Starkware (https://starkware.co/)正在與 0x 合作進行一個非常棒的專案,在去中心化和中心化的通證交易所中使用 ZK-STARKs,他們就此主題發表的文章相當清晰,有興趣的讀者可以瞭解一下。
STARK 證明和驗證的速度都比 SNARKs 和防彈證明快,只不過這個領域的第一個 STARK 專案和開發工具才剛剛浮現。
防彈證明(Bulletproof)
防彈是另一種形式的零知識系統,它不需要可信設定,但它確實比 SNARKs 和 STARKs 需要更長的證明時間。這些證明方法目前已經在門羅幣中實施——實現速度快得令人咂舌,學術論文發表才 6 個月左右就開始實施。
防彈基於現有的 range proof 方法,可將多個 range proof 合為一個,且其資料比以往方法還要小。
有趣的是,防彈允許證據聚合,這意味著您可以透過多方計算,在同一時間收集和驗證來自不同方的多個證據。在最近發表的文章中,Zether 防彈,被部署於智慧合約隱私,而最近,摩根大通在其私有的、許可型的區塊鏈 Quorum 中新增了這些功能。
零知識證明系統面臨的挑戰
零知識證明要被廣泛採用,還面臨如下一些主要挑戰:
證據設定時間(開發者工具 / 勞動力準備)
對於每個計算或場景,必鬚生成一組數學證明來實現編碼。到目前為止,市面上出現了幾種開發工具;不過這仍然需要一種具有挑戰性的專業技能。零知識領域(在很大程度上密碼學也如此)面臨的技能差距與量子計算領域相似,因為在廣泛採用之前,必須培訓更多開發人員瞭解如何把一項應用組合起來。
證據生成和驗證時間 / 規模要求
零知識要求證明方生成一個證據供驗證方驗證。這兩項活動都需要時間,近年來(實際上是近幾個月)這方面所需的時間已大大縮短,但這仍是大規模採用需要考慮的一個問題。
證據的標準化
本文已經解釋了生成證據的不同方法論,但每個方法都有相似的起點。標準化是必要的,它可以使零知識證明從臨時處理特定問題,發展到處理更大範圍的相關問題和場景。ZK 標準組織正在致力於解決相關問題。
ZK-SNARK 可信設定需求
ZK-SNARKs 需要考慮的另一個因素是:在加密世界需要建立一個可信的設定,或者稱為「有毒廢物」。
前文講過,在可信設定中,會生成一個隨機生成的「私鑰」,該私鑰是作為被保護的秘密,以便系統根據需要生成零知識證明,它是可信設定建立的基礎。然而,如果私鑰 / 有毒廢物被洩露,那麼擁有私鑰的任何人都可以提供錯誤的證據——這意味著他們可以提供證據,聲稱他們知道某條資訊,而實際上他們並不知道,這就是脆弱性所在。
記得吧,我們說過 ZK-STARKs 和防彈證明不需要可信設定,但今年剛釋出的 Sonic 是一個新的方法論,它可為 ZK-SNARKs 的可信設定提供一個通用的、可更新的引用字串,這是針對更大的證據系統而提出的一種簡化可信設定的解決方案。
一點感觸
在私人產業,我們幾乎還沒有開始評估和理解零知識證明系統最適合在什麼地方使用,以及哪種型別的證據最適合在什麼情況下使用。要知道,行業的大部分精力仍在研究網路安全從哪裡開始著手,更不用說如何將零知識納入這一戰略了。
在公共領域,零知識證明在速度和規模方面的快速發展,無疑會給關注相關領域的受眾留下深刻印象,但在加密貨幣領域,更大範圍的受眾迄今為止並沒有對這種隱私解決方案進行資源投入,這一點可以從保護隱私的區塊鏈的低參與度而得到證明。
當然,公平地說,智慧合約的隱私解決方案仍處於非常初級的階段(簡單交易還好一點),人們期望,這將使公共區塊鏈加速採用隱私保護方法。
結論
上面詳細介紹的零知識證明系統,只是密碼學領域正在發生的故事的一部分。還有其他形式的零知識證明,如 ZK-SHARKs 和 Mimblewimble。在密碼學的其他領域也有一些有趣的發展,比如完全同態加密和量子密碼學。
零知識證明和密碼術所提供的隱私和保密性,在某種程度上是疊加的,它在社會中的作用取決於你如何衡量它。
對於希望保護個人資料的個人或保護商業秘密的公司,它是一種權利,給那些不想傷害它的機構一種義務,就像那些享有言論自由的人被懇求不要用它來傷害他人一樣。
對政府而言(理想情況下),它是一種責任,因為涉及到大多數公民的權利,公民希望並相信,政府將用一種方式既允許我們保護自己的隱私,又保護我們免受惡意行為者濫用隱私的侵害;然而在現實中,我們知道這種情況在今天是不可能存在的。
儘管如此,密碼學的目標在這兩個領域都是存在的,這樣一個社會才能真正實現自由:自由地保護資訊的隱私,同時又不用擔心濫用隱私造成傷害。考慮到密碼學在過去幾個世紀的歷史,未來某一天,伴隨著將被理解的恰當的數學和科學進展,密碼學或許能幫助世界實現這樣的目標,這一期望似乎並不瘋狂。