比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > Pol幣 > Info

此地無人生還:區塊鏈隨機數的原罪與救贖_DAPP

Author:

Time:1900/1/1 0:00:00

本文來自:碳鏈價值,作者:李畫,星球日報經授權轉發。生成隨機數不是應該留給人類來做的任務。——MadsHaahr區塊鏈的世界沒有真正的隨機數,但隨機數卻是區塊鏈游戲之魂,至少在目前階段。所以,當偽隨機數讓DApp流下第一滴血后,DApp卻無法斷臂求生。潛伏的黑客們就像嗜血的鯊魚,在嗅到腥味后迅速聚攏過來,圍攻這個有著天生缺陷的獵物。Luckyos、EOS.WIN、DEOSBET、FairDice、EosRoyale、EOSDice、FFGame……這些熱門DApp游戲先后被攻擊,因隨機數漏洞而面臨生死危機。“沒有被攻擊過隨機數的都不好意思說自己做的是DApp”,開發者們如此自嘲。本文采訪了一直關注DApp隨機數漏洞的慢霧科技安全研究員Johan,并就代碼細節問題咨詢了資深DApp開發工程師高金,試圖通過這篇文章,呈現出隨機數的前世與今生、原罪與救贖。原罪:計算機的世界沒有真隨機數

真正的隨機數只存在于物理世界中,比如擲骰子的結果,比如電子組件的噪聲。最早的隨機數生成器是骰子,早在公元前2600年,人類就已經用四面骰來玩拋擲游戲了,迄今為止,它依然是最值得信賴的產生隨機數的方法。

但骰子顯然不能滿足現代世界對隨機數的需求,于是在1995年,RAND公司推出《百萬亂數表》。RAND先通過隨機脈沖發生器生成大量隨機數,再把這些數字集合起來組成隨機數字書,免費提供給人們使用。這本書是20世紀隨機數領域的重要著作,也是人類歷史上第一次產生如此大量的、高質量的隨機數。

Gemini:Genesis向3AC提供的不負責任的貸款最終導致公司破產:金色財經報道,Gemini已對DCG及Barry Silbert提起欺詐訴訟的指控中,特別指控Genesis歪曲其風險管理流程,向包括3AC在內的交易對手提供巨額貸款,部分原因是這些交易對手受益于DCG的另一家子公司GBTC。該訴訟詳細說明了向3AC提供的總計23億美元的貸款,并表明這筆交易的抵押品價值不到貸款總額的50%。該抵押品的一部分實際上是GBTC的股票。

在此期間,3AC的交易策略主要集中于嘗試通過交易NAV溢價來套利GBTC的價值差。最終,GBTC將以低于資產凈值的價格進行交易。該訴訟稱,正是這些向3AC提供的不負責任的貸款最終導致Genesis破產,而這些貸款的動機是它為Barry Silbert和DCG帶來了利益。DCG表示其向Genesis注資11億美元是為了掩蓋破產。這筆注資是一張2032年到期的期票,從表面上看,它可能改善了Genesis的資產負債表,但主要代表了未來支付現金的承諾。根據公認會計原則(GAAP),此類票據被歸入“流動資產”類別,該類別通常排除附屬公司的長期資產。為了掩蓋這種錯誤分類,它被排除在該類別的平均貸款期限之外。[2023/7/8 22:25:16]

與此同時,阿蘭·圖靈在計算機FerrantiMark1中首次內置了隨機數生成指令,利用熱噪聲可以一次性生成20個隨機比特。1999年,Intel更進一步,在i810芯片組上集成了芯片級的真隨機數生成器,通過熱噪聲產生本地源的隨機數。

以太坊Layer 2總鎖倉量為84.8億美元,7日漲幅2.04%:金色財經報道,據L2BEAT數據顯示,以太坊Layer 2總鎖倉量為84.8億美元,7日漲幅2.04%。鎖倉量前三分別是Arbitrum One、Optimism和zkSync Era。[2023/6/18 21:44:26]

不過,TRNG每秒只能產生有限的隨機比特,隨機數生成速度低,致使軟件的工作頻率受限,而且TRNG對外界干擾極其敏感,需要耗費大量功率避免非隨機信號對信號源的污染。偽隨機數應運而生。馮·諾依曼創造了最早的偽隨機數生成器,通過給出一個確定的隨機數種子,由確定的算法在每次生成同樣的隨機數序列。只要種子不變,偽隨機數的數序也不會變。自此以后,猜種子破解隨機數便成為黑客的常規攻擊手段,而事實證明,具有好的質量且不易被攻克的種子很難尋覓。但即便如此,因為效率的緣故,計算機軟件還是不得不依賴于偽隨機數。在當前的編程語言中,C++、R、Python、Ruby、PHP等都采用了梅森旋轉算法作為默認的偽隨機數生成方法,它由松本真和西村拓士在1997年發明。梅森旋轉算法把寄存器當時或者之前的狀態作為種子來源,通過線性反饋移位寄存器對輸入進行移位旋轉,周期為一個梅森素數。該算法產生的偽隨機數質量好、產生速度快。偽隨機數的種子來源也可以是真隨機數——CPU通過TRNG不斷產生真隨機數,并將真隨機數存儲在熵池中,當軟件需要使用隨機數時,從熵池里提取一些真隨機數作為種子輸入到PRNG中,通過PRNG得到偽隨機數序列。天塹:區塊鏈不支持生成隨機數

DCG創始人上月底售出價值約75萬美元的灰度ETCG股份:金色財經報道,根據美國證券交易委員會(SEC)的一份備案文件,Digital Currency Group(DCG)創始人Barry Silbert已經出售了其持有的12萬股灰度ETC信托(ETCG)股份,總市值約為755,295美元。這似乎也是Silbert首次出售他持有的ETCG股份。此次出售由Cannacord Genuity公司于4月28日在美國柜臺交易市場(OTCQX)促成。

據悉,ETCG基金于2017年推出,ETCG的出售只占該基金管理的2.25億美元資產和1400萬股流通股的一小部分,其中Silbert持有10%的股份。[2023/5/5 14:44:37]

傳統的偽隨機數生成算法或多或少與單臺機器的物理狀態或運算狀態相關,不同的機器,或者說不同的節點,會有不同的運算結果,這在區塊鏈上是行不通的。區塊鏈是一個分布式的系統,它要求各個節點的運算結果是可驗證、可共識的。區塊鏈需要從零開始設計嶄新的隨機數法則,從而實現不同節點上的智能合約可以使用相同的隨機數。有三種解決方式。第一種是讓可信第三方為合約提供隨機數;第二種是通過基礎合約實現偽隨機數生成器,為其他合約提供一致的隨機數;第三種是讓所有節點上的合約可以采集到相同的種子,再通過偽隨機算法計算出相同的隨機數序列。第一種方式最大的缺陷是需要引入第三方。該第三方是否值得信任,能否能提供高質量的隨機數均是問題。除此之外,區塊鏈是警惕中心化的,而第三方在某種程度上是中心化的,這與一些DApp開發者的理念不相符合。在以太坊上,Oraclize是為鏈上節點提供隨機數的第三方。Oraclize是一個預言機,獨立于區塊鏈系統之外,智能合約發送請求給Oraclize,當Oraclize監聽到鏈上相關請求后,生成隨機數并將結果返回區塊鏈。

Coinbase CEO及其他高管30天內已拋售價值740萬美元的股票:3月23日消息,據Dataroma數據顯示,加密貨幣交易所Coinbase內部人士(包括首席執行官Brian Armstrong和其他高管)在過去30天內拋售了價值約740萬美元的公司股票,其中Brian Armstrong拋售了價值580萬美元的股票,他在3月3日至15日以356萬美元出售了大約6萬股股票,3月21日以224萬美元出售了約3萬股股票。

與此同時,其他Coinbase公司高管(包括首席人事官Brock Lawrence、首席會計官Jones Jennifer和首席法務官Grewal Paul),累計出售了價值168萬美元的股票。[2023/3/23 13:21:27]

第二種方式最符合區塊鏈精神,是一個不同參與者合作生成隨機數的偽隨機數生成器,但它涉及到激勵機制的設計問題,以及人為控制的作弊問題。RANDAO采用的即是這種方式,它以智能合約的形式封裝了偽隨機數生成算法和對應的業務邏輯,為以太坊提供隨機數服務,任何人都可以參與生成RANDAO隨機數。在隨機數生成周期,每個參與者都需要提交一個數字,而來自所有參與者的數字集合將被作為種子生成偽隨機數,因為無法知曉他人提供的種子,該方法產生的結果難以被破解。智能合約可以向RANDAO請求隨機數,但需要支付獎金給生成隨機數的參與者。

Optimism生態NFT市場Quix宣布取消結束運營的計劃:金色財經報道,Optimism生態NFT市場Quix發推稱,“Quix市場不會關閉。我們還不能透露太多,但是來自Web3游戲領域的一位杰出玩家有一個計劃來保持Quix的使命和社區的活力。請繼續關注更多公告。”

據此前報道,2022年11月,Optimism生態NFT市場Quix宣布,Optimism基金會將代表Optimism社區使Quix代碼開源。這意味著雖然Quix作為一家公司即將結束,但從2023年1月6日開始,其代碼將免費供社區使用和構建。Quix正在與Optimism基金會合作,以確保平穩過渡,其團隊致力于維持運營到2023年2月28日。[2023/2/28 12:33:54]

第三種方式,隨機數不是從合約外部引入,而是把區塊鏈的鏈上信息做為種子,由智能合約根據種子生成偽隨機數。這種方法最大的缺陷就是一旦黑客知道了隨機數的生成算法,也能獲取正確的種子,就能輕易地對智能合約發起隨機數攻擊。不同于傳統偽隨機數生成算法中種子的私密性,區塊鏈上的種子幾乎是“透明”的:它是鏈上的區塊信息,所有節點上的智能合約都能夠取到,那么從原理上講,黑客用于攻擊的惡意合約同樣可以獲得這些數值。不過,因為缺乏成熟的隨機數提供方,以及對中心化隨機數的警惕、對鏈上自治的追求,通過智能合約計算隨機數依然是EOS上眾多DApps首選的方法,這也是DApps深陷黑客危機的原因所在。攻防:道高一尺魔高一丈

FFGAME可能是史上最倒霉DApp——游戲還沒正式運營就遭到攻擊。黑客很快破解了隨機數,然后在游戲中不斷獲勝,輕松拿走FFGAME平臺放入游戲中的初始資產,1332個EOS。FFGAME還沒準備迎敵,城門就已失守。在DApp的攻防戰中,攻擊者們通常有兩種方法來利用隨機數盜取資產。第一種方法是獲取正確的隨機數種子,通過偽隨機算法計算出游戲結果,然后根據結果下注,保證百分百勝率。第二種方法是在知道偽隨機算法和種子來源的情況下,通過改變種子的數值讓偽隨機算法計算出自己下注的游戲結果,從而保證百分百勝率。EOSDice是一個被黑客用第一種方法攻破后,修改了偽隨機數算法,旋即又被黑客用第二種方法攻破的DApp。不過,值得贊賞的是,EOSDice也是一個被攻破兩次但依然堅持開源的EOS游戲。

EOSDice第一次被攻擊發生在11月4日上午3:15,攻擊者為jk2uslllkjfd,共被盜取約2500個EOS并轉入火幣。EOSDice的偽隨機數生成算法中使用的隨機種子主要是:tapos_block_prefix();tapos_block_num();name();game_id;current_time();pool_ol_eos.amount。種子中的后四個,也就是帳戶名、id、開獎時間、合約余額都比較容易獲取,隨機數的安全性主要依賴于前兩個種子,也就是referenceblock的信息。在EOSDice的實時開獎機制中,開獎action的referenceblock在默認狀態下是執行當前action的上一個區塊,該區塊已經存在,其信息可以提前獲取。因此,黑客可以通過種子預先算出結果,再下注。

EOSDice在被攻擊后把實時開獎改為異步延時開獎,并重新上線運營。只不過二次攻擊很快發生,在11月10日上午11:19,賬戶名為coinbasewa11的攻擊者盜取了約4900個EOS,并轉入bitfinex。在異步延時開獎機制下,referenceblock的指向發生了變化。開獎action的referenceblock是在下注時還未生成的區塊,其信息難以提前獲取,也就不能搶先計算出游戲結果。但黑客們謀劃了新手段:首先,讓攻擊合約模擬EOSDice的游戲合約,只要兩種合約運行在同一個區塊,就會取到相同的種子,計算出相同的結果;然后,因為EOSDice偽隨機算法的種子包括賬戶余額,黑客可以在攻擊合約中一次次修改余額的數值來改變種子進而改變運算的結果,直到其最終滿足自己的下注條件;最后,在通過上述計算“碰撞”出“正確”的賬戶余額后,黑客只需要向真正的游戲合約賬戶轉入被計算好的EOS,就能保證開獎時必然中獎。

救贖:沒有最好,只能更好

鏈上隨機數問題沒有完美的解決方案。區塊鏈上不僅沒有真隨機數,連傳統的偽隨機數也沒有。EOS官方示例中采用的隨機數生成法類似于上文討論的第二種方式——用不同參與者的私密數據的集合作為種子,生成難以被預測的偽隨機數。以Dice為例,玩家和莊家需要提前生成密鑰,把公鑰先傳到鏈上,開獎的時候再提交各自的私鑰,作為種子生成隨機數,再由隨機數判定開獎結果。這可能是目前最安全的偽隨機數生成方式,但它給玩家增加了額外的且并不輕松的操作,提高了游戲門檻,在現實中并未被廣泛的采用。BM在EOS開發者群回答隨機數安全問題時,提出了一個“信任區塊生產者”的方案,也就是說用區塊生產者在打包交易的某個特定時機獲取的某些信息來生成偽隨機數。雖然是在鏈上解決問題,但這種方法更接近于上文討論的第一種方式——由一個中心化的第三方來提供隨機數,雖然難以被破解,但提供者不一定值得信任。屢敗屢戰的EOS上的DApp開發者通常選用上文中的第三種方式——智能合約獲取鏈上數據作為種子,自己生成偽隨機數。在與黑客數次交鋒之后,目前DApp最常用的開獎機制是“二次延時開獎+種子中不設置可控變量”。實時開獎機制下,referenceblock是上一個區塊,其中的種子數據在開獎前就可被黑客獲取;而二次延時開獎,referenceblock是還未生成的區塊,其中的種子數據難以預測,黑客也就無法提前算出開獎結果。種子中不設置可控變量則保證了黑客不能通過改變種子的數值來操控開獎結果。不過,即便如此,“二次延時開獎+種子中不設置可控變量”也不能保證合約隨機數的絕對安全,只能說在目前階段這種方法還未被黑客攻破,相對安全。畢竟不管采用幾次延時,開獎合約能獲取的種子,攻擊合約也一樣能得到,鏈上的種子是“公平”、“透明”的。如何在這種不完美的情況下盡量減少隨機數攻擊帶來的破壞,慢霧團隊給出了一些實用建議:1.多用攻擊者視角審查合約。2.攻擊者一般是通過惡意合約完成攻擊,要思考合約能從什么角度攻擊隨機數。3.隨機數的安全與偽隨機數生成算法相關,也與開獎機制相關,算法和機制要配合設計。4.偽隨機數生成算法不要引入可預測種子和可控種子,避免結果被預測或被篡改。5.了解區塊鏈上的隨機數與傳統隨機數的差別。6.做安全審計。在項目上線和開源前做安全審計,已知的漏洞能被查出,未知的漏洞也能通過風控機制把危害降到最低。結語

“在所有的產生隨機數的事物中,我認為沒有什么能夠超越骰子了”,FrancisGalton在1890年的《自然》雜志中如此寫道。但骰子永遠也不可能滿足計算機應用的需求,一旦要在二進制的世界使用隨機數,我們就需要做出妥協,把自己暴露在黑客攻擊的危險之下。區塊鏈世界的特殊性需要我們做出更多的妥協。因為分布式、因為透明、因為警惕中心化與渴望鏈上自治,在區塊鏈上,沒有真隨機數、也永遠不會有絕對安全的隨機數。隨機數帶來的是一場永久的戰役,在開發者與黑客之間。隨機數會抗所有已知類型的攻擊,但黑客也會不斷發現新的攻擊手段。此地無人生還。

Tags:EOS區塊鏈DAPDAPPEOSC魔獸幣是有使用區塊鏈技術嗎dapp幣價格DAPPX幣

Pol幣
當當網李國慶想要將區塊鏈與文創產業結合,怎么結合看這篇文章就夠了_Huobi

近日,當當網聯合創始人李國慶接受網易財經采訪時表示,“下一步,推動整個圖書、出版、文化產業發展的金融杠桿還不夠,我在想怎么讓更多的大眾參與到這個金融杠桿,讓大眾獲得金融的收益.

1900/1/1 0:00:00
什么是分叉幣?| 區塊鏈課堂第 75 問_比特幣

編者按:本文來自哈希派,作者:LucyCheng,星球日報經授權轉。之前的區塊鏈課堂提到,開發者對系統進行共識協議內容修改時,需要對該區塊鏈進行分叉,在某種意義上我們可以將其理解為一種軟件代碼的.

1900/1/1 0:00:00
借區塊鏈記憶地理數據,「Soar」想打造去中心化的超級地圖_TOK

人們正在越來越多地使用地理地圖和基于地理位置相關的服務。一份來自高盛的報告預計,到2020年全球高精地圖市場規模為21億美元,2025年該市場將達到94億美元.

1900/1/1 0:00:00
江卓爾談算力戰_ABC

本文作者:江卓爾,原地址:https://www.weibo.com/ttarticle/p/show?id=2309404305777891366168#_0一、為什么算力能成為比特幣的最高仲.

1900/1/1 0:00:00
入職公司4個月,我做合約輸了200萬_DEX

我們總是發誓要洗心革面,我們總是相信自己能贏。這是今天的爆倉單。這只是很平常的一天,因為盯盤又睡著了。有些懊惱.

1900/1/1 0:00:00
美國地區法官對暗網非法交易者判處20年徒刑_PAN

近日,美國法官羅伯特·斯科拉對在暗網中心夢幻市場進行交易的GalVallerius判處20年有期徒刑,罪行是洗錢和販運罪,并將在佛羅里達州南部開始服刑.

1900/1/1 0:00:00
ads