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