本文已更新至Github
https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/3/zkp-pok.md
導言:有些理論非常有趣,零知識證明便是其中之一,摸索了許久,想寫點什么,與大家一起討論。本文是『探索零知識證明』系列的第三篇。全文約7,000字,少量數學公式。
Andwhat,Socrates,isthefoodofthesoul?Surely,Isaid,knowledgeisthefoodofthesoul.?蘇格拉底,什么是靈魂的食物?我說過,當然是知識。——柏拉圖
「零知識」vs.「可靠性」
我們在許多介紹零知識證明的文章中都能看到這樣三個性質:
Completeness——完備性
Soundness——可靠性
Zero-Knowledge——零知識
但是少有文章深入解釋這個特性背后的深意和洞見。
在『系列理解「模擬」』一文中,我們介紹了「模擬器」這個概念。許多介紹文章避而不談「模擬」,但「模擬」可以說是安全協議中核心的核心,因為它是定義「安全性」的重要武器。
通常,我們定義安全會采用這樣一種方式,首先列出一些安全事件,然后說明:如果一個系統安全,那么列出來的安全事件都不會發生。
Ratherthangivingalistoftheeventsthatarenotallowedtooccur,it(thedefinitionofzero-knowledgeproof)givesamaximalistsimulationcondition.
—BoazBarak
借用密碼學家BoazBarak的話,翻譯一下,「零知識證明」并不是通過給出一個不允許發生的事件列表來定義,而是直接給出了一個最極致的「模擬條件」。
所謂「模擬條件」是指,通過「模擬」方法來實現一個「理想世界」,使之與「現實世界」不可區分;而由于在理想世界中不存在知識,所以可以推導出結論:現實世界滿足「零知識」。
我們繼續分析下一個交互系統的三個性質:「完備性」、「可靠性」與「零知識」。
可靠性:Alice在沒有知識的情況下不能通過Bob的驗證。
完備性:Alice在有知識的情況下可以通過Bob的驗證。
零知識:Alice在交互的過程中不會泄露關于知識的任何信息。
我們可以看出來「可靠性」和「完備性」有一種「對稱性」。可靠性保證了惡意的Alice一定失敗,而完備性保證了誠實的Alice一定成功。
「完備性」比較容易證明,只要Alice誠實,Bob也誠實,那么皆大歡喜。這好比,寫好一段代碼,喂了一個測試用例,跑完通過收工。
我們來想想「可靠性」應該如何定義?這個可靠性的逆否命題是:如果Alice能通過Bob的驗證,那么Alice一定有知識。或者說:Alice知道那……個「秘密」!
下面的問題是如何證明Alice知道一個「秘密」?
這好像也很難,對不對?假如我們需要證明一臺機器知道一個「秘密」,最簡單的辦法就是我們在機器的硬盤里,或者內存中找到這個「秘密」,但是這樣暴露了秘密。如果這臺機器是黑盒子呢?或者是Alice呢?我們沒有讀心術,猜不到她心里的那個秘密。
觀點:開發人員對以太坊L2解決方案Arbitrum和Optimism的興趣顯著增加:金色財經報道,專家指出,開發人員對以太坊L2解決方案Arbitrum和Optimism的興趣顯著增加。Arbitrum的份額從0.9%躍升至4.5%,Optimism的份額從1.2%躍升至1.5%。Fantom生態系統開始扮演不那么突出的角色。該網絡已驗證智能合約數量占總指標的比例從3.3%下降至1.4%。行業層面,Polygon和Avalanche區塊鏈正在發展,市場份額分別在10-12%和2.2-2.7%區間波動。[2023/8/4 16:18:45]
如何定義「ToKnow」?
「零知識」保證了驗證者Bob沒有能力來把和「知識」有關的信息「抽取」出來。不能抽取的「知識」不代表不存在。「可靠性」保證了知識的「存在性」。
只有「知識」在存在的前提下,保證「零知識」才有意義
本文將探討「可靠性」和「ToKnow」。
為了進一步分析「知識」,接下來首先介紹一個非常簡潔,用途廣泛的零知識證明系統——Schnorr協議。這個協議代表了一大類的安全協議,所謂的Σ-協議,而且Schnorr協議擴展也是零知識數據交換協議zkPoD的核心技術之一。
簡潔的Schnorr協議
Alice擁有一個秘密數字,a,我們可以把這個數字想象成「私鑰」,然后把它「映射」到橢圓曲線群上的一個點a*G,簡寫為aG。這個點我們把它當做「公鑰」。
sk=a
PK=aG
請注意「映射」這個詞,我們這里先簡要介紹「同態」這個概念。橢圓曲線群有限域之間存在著一種同態映射關系。有限域,我們用Zq這個符號表示,其中素數q是指有限域的大小,它是指從0,1,2,…,q-1這樣一個整數集合。而在一條橢圓曲線上,我們通過一個基點,G,可以產生一個「循環群」,標記為0G,G,2G,…,(q-1)G,正好是數量為q個曲線點的集合。任意兩個曲線點正好可以進行一種「特殊的二元運算」,GG=2G,2G3G=5G,看起來這個二元運算好像和「加法」類似,滿足交換律和結合律。于是我們就用這個符號來表示。之所以把這個群稱為循環群,因為把群的最后一個元素(q-1)G,再加上一個G就回卷到群的第一個元素0G。
給任意一個有限域上的整數r,我們就可以在循環群中找到一個對應的點rG,或者用一個標量乘法來表示r*G。但是反過來計算是很「困難」的,這是一個「密碼學難題」——被稱為離散對數難題。
也就是說,如果任意給一個橢圓曲線循環群上的點R,那么到底是有限域中的哪一個整數對應R,這個計算是很難的,如果有限域足夠大,比如說256bit這么大,我們姑且可以認為這個反向計算是不可能做到的。
Schnorr協議充分利用了有限域和循環群之間單向映射,實現了最簡單的零知識證明安全協議:Alice向Bob證明她擁有PK對應的私鑰sk。
第一步:為了保證零知識,Alice需要先產生一個隨機數,r,這個隨機數的用途是用來保護私鑰無法被Bob抽取出來。這個隨機數也需要映射到橢圓曲線群上,rG。
第二步:Bob要提供一個隨機數進行挑戰,我們把它稱為c。
第三步:Alice根據挑戰數計算z=ra*c,同時把z發給Bob,Bob通過下面的式子進行檢驗:
z*G??=?R??c*PK?=?rG??c*(aG)
FTX稱是世界上員工人均收入最高的公司之一,目前約300名員工:11月8日消息,FTX表示,FTX大概有300名員工,他人可以通過FTX每周FTT的購買和銷毀來估算其收入。與世界上任何公司相比,FTX是員工人均收入/利潤/估值最高的公司之一。
此外,FTX表示,充提隊列正在減少并恢復到更合理的水平;節點和銀行正在趕上。
此前消息,FTX官方推特發布的最新關于提幣情況的說明,FTX表示,正在持續集中處理較多的充提需求,目前充提幣運作順暢無阻,FTX也一切如常。鏈上情況可能偶有擁堵(如BTC網絡),需要一點時間耐心等待,FTX會如常高效處理每一筆充提并盡力服務好各位用戶。再次感謝各位在FUD期間對FTX的信任與支持。
對于BTC提取,FTX表示,節點吞吐量受限,正切換到從兩端進行處理,從而加快速度。對于穩定幣處理,FTX表示,銀行周末關門,USD/穩定幣的創建/贖回可能會變慢,尤其是某些幣/鏈,直到明天電匯暢通。[2022/11/8 12:30:50]
大家可以看到Bob?在第三步「同態地」檢驗z的計算過程。如果這個式子成立,那么就能證明Alice確實有私鑰a。可是,這是為什么呢?
z的計算和驗證過程很有趣,有幾個關鍵技巧:
首先Bob必須給出一個「隨機」挑戰數,然后Bob在橢圓曲線上同態地檢查z。如果我們把挑戰數c看成是一個未知數,那么ra*c=z可以看成是一個一元一次方程,其中r與a是方程系數。請注意在c未知的前提下,如果ra*x=r'a'*x要成立,那么根據Schwatz-Zippel定理,極大概率上r=r',a=a'都成立。也就是說,Alice在c未知的前提下,想找到另一對不同的r',a'來計算z騙過Bob是幾乎不可能的。這個隨機挑戰數c實現了r和a的限制。雖然Bob隨機選了一個數,但是由于Alice事先不知道,所以Alice不得不使用私鑰a來計算z。這里的關鍵:c必須是個隨機數。
Bob驗證是在橢圓曲線群上完成。Bob不知道r,但是他知道r映射到曲線上的點R;Bob也不知道a,但是他知道a映射到曲線群上的點PK,即a*G。通過同態映射與Schwatz-Zippel定理,Bob可以校驗z的計算過程是否正確,從而知道Alice確實是通過r和a計算得出的z,但是又不暴露r與a的值。
還有,在協議第一步中產生的隨機數r保證了a的保密性。因為任何一個秘密當和一個符合「一致性分布」的隨機數相加之后的和仍然符合「一致性分布」。
零知識
我們這里看一下Schnorr協議如何證明一個弱一些的「零知識」性質——「SHVZK」:
注:這里我們證明的僅僅是SpecialHonestVerifierZero-Knowledge。SHVZK要求協議中的Bob的行為不能不按常理出牌,比如他必須按協議約定,在第二步時,去傳送帶上取一個新鮮的隨機數,并且立即使用。而通常意義上的「零知識」是不會對Bob做任何要求,所以我們說這里是一個弱一些的性質。雖然目前Schnorr協議不能證明完全的「零知識」,但經過添加一些協議步驟,就可以達到完全零知識的目的,細節這里不展開,有興趣的讀者請參考文獻。以后我們在討論Fiat-Shamir變換時,還會再次討論這個問題。
首先「模擬器」模擬一個「理想世界」,在理想世界中模擬出一個Zlice和Bob對話,Zlice沒有Schnorr協議中的知識,sk,而Bob是有公鑰PK的。請大家看下圖,Bob需要在Schnorr協議中的第二步出示一個隨機數c,這里有個額外的要求,就是Bob只能「誠實地」從一個外部「隨機數傳送帶」上拿一個隨機數,每一個隨機數都必須是事先拋k次「硬幣」產生的一個2^k范圍內的一次性分布隨機數。Bob不能采用任何別的方式產生隨機數,這就是為何我們要求Bob是誠實的。
網傳FTX已正式收購火幣,火幣回應:無最新動態分享:金色財經報道,微博某用戶發文稱,FTX已經正式收購火幣,后續會更名為HTX。huobi對金色財經回應稱,目前沒有關于此信息的最新動態可以分享。公司運營一切正常,一如既往地對客戶提供安全可靠的服務,感謝支持。
此前消息,Huobi集團創始人李林正在與一批投資者談判,希望以30億美元的估值出售其在火幣大約60%股份,據知情人士透露,Tron創始人孫宇晨和FTX交易所已經與Huobi就股份轉讓進行初步接觸,他們要求匿名討論私人信息。但隨后孫宇晨回應稱,目前還沒有參與有關事項。[2022/8/29 12:55:38]
下面演示Zlice如何騙過Bob:
序幕:請注意Zlice沒有關于sk的知識,這時Bob的隨機數傳送帶上已經預先放置了一些隨機數。
第一步:Zlice產生一個一致性分布的隨機數c,并且利用一個新的「超能力」,將剛剛產生的隨機數c替換掉Bob的隨機數傳送帶上第一個隨機數。這時候,Bob無法察覺。
第二步:Zlice再次產生一個隨機數z,然后計算R'=z*G-c*PK,并將R'發送給Bob。
第三步:這時候Bob會從隨機數傳送帶上取得c,并且將c發送給Zlice。請注意這個c正好就是第一步中Zlice產生的c。
第四步:Zlice將第三步產生的隨機數z發送給Bob,Bob按照Schnorr協議的驗證公式進行驗證,大家可以檢查下,這個公式完美成立。
但區別是:
在「理想世界中」,Zlice沒有sk;而在「現實世界中」,Alice有sk
在「理想世界中」,z是一個隨機數,沒有涉及sk;而在「現實世界中」,z的計算過程里面包含sk
在「理想世界中」,Zlice使用了超能力,替換了Bob的隨機數;而在「現實世界中」,Alice看不到Bob的隨機數傳送帶,也無法更改傳送帶上的數字
這里請大家思考下:Schnorr協議中,Bob在第二步發挑戰數能不能和第一步對調順序?也就是說Bob能不能先發挑戰數,然后Alice再發送R=r*G。
答案是不能。
如果Alice能提前知道隨機數,那么Alice就可以按照模擬器Zlice做法來欺騙Bob。
再遇模擬器
其實,「可靠性」和「零知識」這兩個性質在另一個維度上也是存在著一種對稱性。可靠性保證了惡意的Alice一定失敗,零知識保證了惡意的Bob一定不會成功。有趣地是,這種對稱性將體現在模擬出來的「理想世界」中。
我們分析下可靠性這個定義:Alice沒有知識導致Bob驗證失敗。它的逆否命題為:Bob驗證成功導致Alice一定有知識。
我們再次求助模擬器,讓他在可以發揮超能力的「理想世界」中,去檢驗Alice的知識。
再次,請大家設想在平行宇宙中,有兩個世界,一個是叫做「理想世界」,另一個叫做「現實世界」。理想世界有趣的地方在于它是被「模擬器」模擬出來的,同時模擬器可以在理想世界中放入帶有超能力的NPC。這次把Alice的兩個分身同時放入「理想世界」與「現實世界」。
假設「你」扮演Bob的角色,你想知道和你對話的Alice是否真的是「可靠的」。于是把你放入「理想世界」,借助一個具有超能力的NPC,你可以把對面的Alice的知識「抽取」出來。
W...hat?我們不是剛剛證明過:協議是零知識的嗎?零知識就意味著Bob抽取不出任何的「知識」碎片。這里敲黑板,「零知識」是對于「現實世界」而言的。我們現在正在討論的是神奇的「理想世界」。
A股收盤:深證區塊鏈50指數上漲0.43%:金色財經消息,A股收盤,上證指數報3246.25點,收盤上漲0.97%,深證成指報12104.03點,收盤上漲0.06%,深證區塊鏈50指數報2838.27點,收盤上漲0.43%。區塊鏈板塊收盤下跌0.47%,數字貨幣板塊收盤下跌0.01%。[2022/8/25 12:47:45]
重復一遍,在「理想世界」中,你可以借助一個有超能力的NPC來抽取Alice的知識,從而可以保證「現實世界」中的Alice無法作弊。可以想象一下,一個作弊的Alice,她肯定沒有知識,沒有知識也就不可能在「理想世界」中讓NPC抽取到任何東西。
然而在「現實世界」中,你無法借助NPC,當然也就看不到Alice的知識,也就不會和「零知識」性質沖突。因為兩個世界發生的事件是「不可區分」的,我們可以得到這樣的結論:在「現實世界」中,Alice一定是存在知識的。
整理一下思路:如何證明在一個交互會話中Alice不能作弊呢?我們需要為這個交互會話定義一個「模擬算法」,該算法可以模擬出一個「理想世界」,其中有一個特殊的角色叫做「抽取器」(Extractor),也就是我們前面說的NPC,它能夠通過「超能力」來「抽取」Alice的知識,但是讓對方「無所察覺」。
注意,超能力是必不可少的!這一點在『系列理解「模擬」』有解釋,如果模擬器在沒有超能力的情況下具備作弊能力,那相當于證明了協議「不可靠」。同樣地,如果「抽取器」在沒有超能力的情況下具備抽取信息能力,那相當于證明了協議不零知。
最后一點,超能力是什么?這個要取決于具體的交互系統的證明,我們接下來就先拿我們剛剛講過的Schnorr協議切入。
ProofofKnowledge:「知識證明」
我們來證明一下Schnorr協議的「可靠性」,看看這個超能力NPC如何在「理想世界」中把Alice私鑰抽取出來。而這個「超能力」,仍然是「時間倒流」。
第一步:Alice選擇一個隨機數r,并且計算R=r*G,并將R發給「抽取器」
第二步:抽取器也選擇一個隨機的挑戰數c,并且發給Alice
第三步:Alice計算并且回應z,然后抽取器檢查z是否正確
第四步:抽取器發現?z沒有問題之后,發動超能力,將時間倒回第二步之前
第五步:抽取器再次發送一個不同的隨機挑戰數c'給Alice,這時候Alice回到第二步,會有一種似曾相識的感覺,但是無法感知到時間倒回這個事實
第六步:Alice再次計算了z',然后發給抽取器檢查
第七步:這時候抽取器有了z和z',就可以直接推算出Alice所擁有的私鑰a,達成「知識抽取」
到這里,「可靠性」就基本證明完了。大家是不是對可靠性和零知性的「對稱性」有點感覺了?
總結一下:「抽取器」在「理想世界」中,通過時間倒流的超能力,把Alice的「知識」完整地「抽取」出來,這就保證了一個沒有知識的Alice是無法讓抽取器達成目標,從而證明了「可靠性」。
注:并不是所有的可靠性都必須要求存在抽取器算法。采用抽取器來證明可靠性的證明系統被稱為「ProofofKnowledge」。
解讀ECDSA簽名攻擊
在區塊鏈系統中到處可見的ECDSA簽名方案也是一個樸素的零知識證明系統。橢圓曲線數字簽名方案ECDSA與Schnorr協議非常接近,基于Schnorr協議的簽名方案發表在1991年的『密碼學雜志』上。1991年,正值美國國家標準局選擇數字簽名算法,優雅的Schnorr簽名方案居然被申請了專利,因此NIST提出了另一套簽名方案DSA,隨后這個方案支持了橢圓曲線,于是被稱為ECDSA。中本聰在構思比特幣時,選擇了ECDSA作為簽名算法,但是曲線并沒有選擇NIST標準推薦的橢圓曲線——secp256-r1,而是secp256-k1。因為江湖傳言,NIST可能在橢圓曲線參數選擇上做了手腳,導致某些機構可以用不為人知的辦法求解離散對數難題,從而有能力在「現實世界」中具備超能力。有不少人在懷疑,也許當年中本聰在設計比特幣時,也有這種考慮,故意選擇了secp256-k1這樣一條貌似安全性稍弱的曲線。
NFT借貸平臺Zharta完成400萬美元種子輪融資,Greenfield One領投:7月20日,據官方消息,NFT借貸平臺Zharta完成400萬美元種子輪融資,Greenfield One領投,Shilling Capital、Possible Ventures、SpaceShipDao 、UniwhalesDao、Clever、Business Angels等參投。
據悉,Zharta首先會將新資金用于客戶需求,其次是研發、銷售和營銷。其目標是加速市場滲透并擴大推廣以改善即時借貸平臺。同時他們將在現有12人的團隊中增加多達20名新員工。Zharta的平臺預計將在夏季末正式發布。[2022/7/20 2:25:54]
我們拆解下ECDSA簽名,用交互的方式定義一個類似ECDSA的認證方案,交互見下圖。
第一步:Alice仍然是選擇一個隨機數k,并將k映射到橢圓曲線上,得到點K,然后發送給Bob
第二步:Bob需要產生兩個隨機數,c和e,然后交給Alice
第三步:Alice計算s,并且發送給Bob,他來驗證s的計算過程是否正確
注:對熟悉ECDSA簽名方案的讀者,這里略作解釋,Bob產生的c對應被簽消息的Hash值Hash(m),而e則是由一個轉換函數F(K)來產生。其中F(.)是取橢圓曲線上的點的x坐標經過(modq)得到。
江湖上流傳著一個說法:ECDSA簽名方案有個嚴重的安全隱患,如果在兩次簽名中使用了同一個隨機數,那么簽名者的私鑰將會暴露出來。其實Schnorr簽名方案也有同樣的問題。
當年Sony?PlayStation3的工程師在調用ECDSA庫函數時,本來應該輸入隨機數的參數位置上,卻傳入了一個常數。熟悉密碼學的黑客們發現了這個嚴重的后門。2011年1月,神奇小子Geohot公開發布了SonyPS3的主私鑰,這意味著任何用戶都可以輕松拿到游戲機的root權限。Sony隨后大為光火……
如果Alice在兩次交互過程中使用了同一個K,那么Bob可以通過發送兩個不同的c和c'來得到s和s',然后通過下面的公式算出私鑰a:
k?=?(c?-?c')/(s?-?s')a?=?(k?*?s?-?c)/e
那么我們應該怎么來看這個「安全后門」呢?大家想想看,這個安全后門和我們前面證明過的Schnorr協議的可靠性證明幾乎一模一樣!這個算法正是ECDSA認證協議的「可靠性」證明中的「抽取器」算法。只不過在可靠性證明中,為了讓Alice使用同一個隨機數k來認證兩次,「抽取器」需要利用「時間倒流」的超能力。
但是在SonyPS3系統中,隨機數被不明所以的工程師寫成了一個固定不變的值,這樣相當于直接賦予了黑客「超能力」,而這是在「現實世界」中。或者說,黑客在不需要「時間倒流」的情況下就能實現「抽取器」。
提醒下,不僅僅是隨機數不能重復的問題。而是隨機數必須是具有密碼學安全強度的隨機數。
設想下,如果隨機數r是通過一個利用「線性同余」原理的偽隨機數生成器產生,雖然r的值一直在變化,但是仍然不能阻止「知識抽取」。假設線性同余算法為r2=d*r1e(modm),還回到Schnorr協議的第三步:
1:?z1?=?r1??c1*a2:?z2?=?r2??c2*a
如果攻擊者讓Alice連續做兩次簽名,那么將r2代入?r1之后,就出現了兩個線性方程求解兩個未知數(r1,a)的情況,z1,z2,c1,c2,d,e對于攻擊者是已知的,這個方程組只用初中數學知識就可以求解。
請注意,這并不是Schnorr協議的「設計缺陷」,恰恰相反,這是Schnorr協議設計比較精巧的地方,它從原理上保證了協議的可靠性。類似技巧在密碼學協議中頻繁出現,達到一目了然的「簡潔」。但是也不得不說,如果不清楚協議的內在機制,尤其是區分不清楚「理想世界」與「現實世界」,使用者很容易引入各種花式的「安全漏洞」。
作為一個能寫出安全可靠軟件的負責任的碼農,我們需要了解哪些?徹底理解安全協議的設計機制當然是最好的,但是絕大多數情況下這是不現實的。一般來說,我們把各種密碼學工具當做「黑盒」來用,但這可能是不夠的,我們最好能了解下:
「安全定義」是什么?
「安全假設」到底是什么?
「理想世界」中的「超能力」到底是什么?
腦洞:我們生活在模擬世界中嗎
第一次讀懂「模擬器」時,我第一時間想到的是電影『黑客帝國』。我們生活所在「現實世界」也許是某一個模擬器模擬出來的「理想世界」,我們所看到、聽到的以及感知到的一切都是被「模擬」出來的。在「現實世界」里,我們活在一個母體中。然而我們并不能意識到這一點。
早在春秋戰國時期,莊子也在思考類似的問題:
昔者莊周夢為胡蝶,栩栩然胡蝶也,自喻適志與,不知周也。俄然覺,則蘧蘧然周也。不知周之夢為胡蝶與,胡蝶之夢為周與?周與胡蝶,則必有分矣。此之謂物化。——《莊子·齊物論》
通俗地解釋下:莊子有一天睡著了,夢見自己變成了一只蝴蝶,翩翩起舞,醒來之后發現自己還是莊子,在夢中,蝴蝶并不知道自己是莊子。于是莊子沉思到底是他夢中變成了蝴蝶,還是蝴蝶夢中變成了莊子呢?如果夢境足夠真實,……
「缸中之腦」是美國哲學家GilbertHarman提出的這樣一個想法:一個人的大腦可以被放入一個容器里面,然后插上電線,通過模擬各種電信號輸入,使得大腦以為自己活在真實世界中。
這個想法源自哲學家笛卡爾的《第一哲學沉思集》,在書中他論證我們應該懷疑一切,需要逐一檢驗所有人類的知識,數學,幾何,以及感知到的世界。然而他發現除了「我思故我在」之外,所有的知識都可能不靠譜,因為我們的大腦很可能被一個具有「超能力」的EvilDemon所欺騙。
2003年牛津大學的哲學教授NickBostrom鄭重其事地寫了一篇論文『我們生活在計算機模擬世界中嗎?』。認為以下三個事實中,至少有一個成立:
人類文明徹底滅絕。
人類文明已經到達可以完全模擬現實世界的科技水平,但是處于某種原因,沒有一個人愿意去創造出一個新的模擬世界,充當上帝的角色。
我們現在的人類文明就生活在一個模擬世界中。
硅谷企業家ElonMusk在一次公開采訪中,談到「我們生活在基礎現實世界」的概率只有「十億分之一」。也就是說,他認為我們生活在一個電腦游戲中,在模擬世界之外,有一個程序員,他開發并操縱了這個世界,我們每個人都是一個游戲角色。
在玩膩越獄iPhone和自動駕駛之后,神奇小子Geohot在今年三月份的「西南偏南」大會上做了一個題為「JailbreakingtheSimulation」的演講。他認為,我們被生活在一個模擬世界中,所謂的上帝就是外部世界里活蹦亂跳的碼農們,他們編程創造了我們的「現實世界」,當然,他們可能啟動了不止一個世界副本。然而,他們可能也生活在一個外層「模擬世界」中。
如果我們確實生活在模擬世界中,或許我們可以在地球的某個地方找到一個后門——「SimulationTrapdoor」,從而獲得「模擬器」的超能力,抽取出不可思議的「秘密知識」。
如果我們的世界的確是被程序模擬出來的,這個程序也許會有Bug,如果有Bug存在,說不定我們可以利用這個Bug進行越獄,跳出「理想世界」,到達外面一層的世界中,與可愛的碼農上帝聊一聊。
這是在開玩笑嗎?下面摘自自知乎的一個段子:
問題:「如果世界是虛擬的,有哪些實例可以證明?」。
回答:
為什么宏觀上豐富多彩,但是微觀的基本粒子卻都是一模一樣的?這正和圖片富多彩,但是像素是一模一樣的一回事
為什么光速有上限?因為機器的運行速度有限
為什么會有普朗克常量?因為機器的數據精度有限
為什么微觀粒子都是幾率云?這是為了避免系統陷入循環而增加的隨機擾動
為什么有泡利不相容原理?看來系統采用的數據組織是多維數組
為什么量子計算機運行速度那么快,一瞬間可以嘗試所有可能?因為這個本質上是調用了宿主機的接口
為什么會有量子糾纏?這實際上是引用同一個對象的兩個指針
為什么會有觀察者效應?這顯然是lazyupdating
為什么時間有開端?系統有啟動時間
未完待續
設計一個密碼學協議就好像在走鋼絲,如果你想同時做到「零知識」和「可靠性」就意味著既要讓協議內容充分隨機,又要保證「知識」能夠參與協議的交互。如果協議沒有正確設計,亦或沒有正確工程實現,都將導致系統安全性坍塌。比如可能破壞了零知性,導致「知識」在不經意間泄露;或者也許破壞了可靠性,導致任何人都能偽造證明。而且這種安全性,遠比傳統的代碼底層機制漏洞來得更加嚴重,并且更難被發現。嚴格數學論證,這似乎是必不可少的。
我們的世界真的是某個「三體文明」模擬出來的嗎?不能排除這個可能性,或許,我們需要認真地重新審視自己的各種執念。不過那又怎么樣呢?至少自己的「思想」是真實的。
Ifyouwouldbearealseekeraftertruth,itisnecessarythatatleastonceinyourlifeyoudoubt,asfaraspossible,allthings.?如果你是一個真正的真理探求者,在你人生中至少要有一次,盡可能地質疑所有的事情。???——笛卡爾
本文作者郭宇,文章首發于微信公眾號安比實驗室
致謝:特別感謝ShengchaoDing,JieZhang,YuChen以及安比實驗室小伙伴們(p0n1,even,aphasiayc,Vawheter,yghu,mr)的建議和指正。
參考文獻
zkPoD:區塊鏈,零知識證明與形式化驗證,實現無中介、零信任的公平交易.安比實驗室.2019.
Hoffstein,Jeffrey,JillPipher,JosephH.Silverman,andJosephH.Silverman.Anintroductiontomathematicalcryptography.Vol.1.NewYork:springer,2008.
Schwartz–ZippelLemma.Wikipedia.?https://en.wikipedia.org/wiki/Schwartz–Zippel_lemma
Damg?rd,Ivan."OnΣ-protocols."LectureNotes,UniversityofAarhus,DepartmentforComputerScience(2002).
Schnorr,Claus-Peter."Efficientsignaturegenerationbysmartcards."Journalofcryptology4.3(1991):161-174.
Brown,DanielRL."Genericgroups,collisionresistance,andECDSA."Designs,CodesandCryptography35.1(2005):119-152.
笛卡兒,徐陶.第一哲學沉思集.九州出版社;2008.
Bostrom,Nick."Arewelivinginacomputersimulation?."ThePhilosophicalQuarterly53.211(2003):243-255.
NickStatt."Comma.aifounderGeorgeHotzwantstofreehumanityfromtheAIsimulation".Mar9,2019.https://www.theverge.com/2019/3/9/18258030/george-hotz-ai-simulation-jailbreaking-reality-sxsw-2019
知乎."如果世界是虛擬的,有哪些實例可以證明?".2017.https://www.zhihu.com/question/34642204/answer/156671701
早在比特幣誕生的十多年前,1994年,計算機學家,法學家及密碼學家NickSzabo第一次提出了智能合約的概念。簡單來說就是以分布式賬本來儲存合約,但是遺憾的是當時并沒有合適的載體實現.
1900/1/1 0:00:00來源|淺黑科技作者|史中責編|Carol出品|區塊鏈大本營說來,這已經是二十年前的事兒了。那天下午,濃稠的光線從窗戶射進來,教室里沒有飛揚的粉筆末.
1900/1/1 0:00:00作者:AdrianZmudzinski|編譯者:MayaCoinMarketCap(CMC)是所有流通中加密貨幣相關數據的一個主要信息來源,已經確定目標日期.
1900/1/1 0:00:00本文觀點僅代表個人,僅限交流學習,所有內容不構成任何投資建議。想及時了解更多行情信息,請添加官方進群:jiamibaoluoBTC跌破33000美元:火幣全球站數據顯示,BTC短線下跌,跌破33.
1900/1/1 0:00:00PoC的本質,用一個普通人也可以理解的話說,就是用硬盤挖礦。沒錯,PoW是用CPU挖礦、PoS是憑借持幣比例挖礦,DPoS是根據投票決定超級節點,而PoC就是憑借硬盤挖礦.
1900/1/1 0:00:00文|雨林 審|于百程 福布斯網站8月27日發布的一則消息再次將中國央行數字貨幣推到了媒體的聚光燈下.
1900/1/1 0:00:00