在區(qū)塊鏈技術(shù)安全范疇中,既有“傳統(tǒng)”互聯(lián)網(wǎng)世界中面臨的網(wǎng)絡(luò)拒絕服務(wù)攻擊、代碼漏洞等攻擊威脅,也包含區(qū)塊鏈獨(dú)有的風(fēng)險(xiǎn)點(diǎn)(如智能合約漏洞)。2010年8月15 日,比特幣發(fā)生的代碼漏洞攻擊事件中,有人在比特幣區(qū)塊鏈的第74638塊上發(fā)現(xiàn)了一條讓人驚愕的交易,這筆交易里竟然出現(xiàn)了184,467.440737.09551616 個(gè)比特幣,其中各有922億個(gè)比特幣被發(fā)送到兩個(gè)比特幣地址。這次攻擊的根本原因則是比特幣的驗(yàn)證機(jī)制中存在大整數(shù)溢出漏洞,由于大整數(shù)溢出為負(fù)數(shù),網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)對(duì)黑客的交易均驗(yàn)證通過,導(dǎo)致了比特幣區(qū)塊鏈中憑空出現(xiàn)了大量比特幣。
1. 基礎(chǔ)組件和設(shè)施面臨的安全威脅
基礎(chǔ)組件層利用基礎(chǔ)設(shè)施可以實(shí)現(xiàn)區(qū)塊鏈系統(tǒng)網(wǎng)絡(luò)中信息的記錄、驗(yàn)證和傳播。在基礎(chǔ)組件層之中,區(qū)塊鏈?zhǔn)墙⒃趥鞑C(jī)制、驗(yàn)證機(jī)制和存儲(chǔ)機(jī)制基礎(chǔ)上的一個(gè)分布式系統(tǒng),整個(gè)網(wǎng)絡(luò)沒有中心化的硬件或管理機(jī)構(gòu),任何節(jié)點(diǎn)都有機(jī)會(huì)參與總賬的記錄和驗(yàn)證,將計(jì)算結(jié)果廣播發(fā)送給其他節(jié)點(diǎn),且任一節(jié)點(diǎn)的損壞或者退出都不會(huì)影響整個(gè)系統(tǒng)的運(yùn)作。其對(duì)應(yīng)的安全風(fēng)險(xiǎn)包括網(wǎng)絡(luò)安全問題、密碼學(xué)安全問題和數(shù)據(jù)存儲(chǔ)安全問題。其中的數(shù)據(jù)存儲(chǔ)安全問題涉及內(nèi)容安全層面,面臨有害信息上鏈以及資源濫用等風(fēng)險(xiǎn),限于篇幅,具體內(nèi)容不展開介紹。
1.1 密碼學(xué)安全威脅分析
區(qū)塊鏈技術(shù)本身采用了密碼學(xué)的很多機(jī)制,例如非對(duì)稱加密、哈希算法等,這些密碼學(xué)算法目前來講是相對(duì)安全的。隨著數(shù)學(xué)、密碼學(xué)和計(jì)算技術(shù)的發(fā)展,尤其是人工智能和量子計(jì)算的興起,這些算法面臨著被破解的可能性。同時(shí),這些密碼算法需要編程實(shí)現(xiàn),在代碼實(shí)現(xiàn)方面也可能存在缺陷和漏洞。
ECC、RSA、 哈希等復(fù)雜加密算法本身以及在算法的工程實(shí)現(xiàn)過程中都可能存在后門和安全漏洞,進(jìn)而危及整個(gè)區(qū)塊鏈驗(yàn)證機(jī)制的安全性。具有超級(jí)計(jì)算能力量子計(jì)算機(jī)的出現(xiàn)也在對(duì)密碼學(xué)構(gòu)成潛在威脅,隨著量子計(jì)算技術(shù)的飛速發(fā)展,大量子比特?cái)?shù)的量子計(jì)算機(jī)、量子芯片、量子計(jì)算服務(wù)系統(tǒng)等相繼問世,可在秒級(jí)時(shí)間內(nèi)破解非對(duì)稱密碼算法中的大數(shù)因子分解問題(其破解擁有1024位密鑰的RSA算法只需數(shù)秒),這正在成為威脅區(qū)塊鏈數(shù)據(jù)驗(yàn)證機(jī)制的典型攻擊手段之一。2017年5月,新型數(shù)字加密貨幣IOTA團(tuán)隊(duì)請(qǐng)求MIT研究組審計(jì)其軟件及代碼。7月,MIT研究者告知IOTA團(tuán)隊(duì),他們發(fā)現(xiàn)了IOTA的加密哈希功能函數(shù)Curl中存在嚴(yán)重的漏洞(哈希碰撞),因此IOTA的數(shù)字簽名及PoW安全性均無法保障。8月,IOTA 團(tuán)隊(duì)采用SHA-3替代掉了備受質(zhì)疑的Curl哈希算法。
移動(dòng)數(shù)字錢包等區(qū)塊鏈客戶端軟件的安全實(shí)現(xiàn)涉及公私鑰的使用,而通常情況下用戶都是使用軟件來生成公私鑰,其中私鑰的安全性會(huì)直接涉及到用戶錢包或資產(chǎn)的安全問題,如果在不安全的環(huán)境中運(yùn)行私鑰,會(huì)增加私鑰的泄露風(fēng)險(xiǎn)給用戶帶來不可預(yù)知的損失。目前,針對(duì)區(qū)塊鏈客戶端軟件進(jìn)行攻擊的方法基本相同:一種方法是通過竊取憑據(jù)來尋求獲得系統(tǒng)未經(jīng)授權(quán)的訪問權(quán)限;另外一種方法則是通過捕獲信息、植入惡意軟件和/或使用社會(huì)工程實(shí)現(xiàn)對(duì)用戶機(jī)器中私鑰的竊 取。2017年,以太坊瀏覽器Mist爆出“高?!甭┒矗┒磥碓从诘讓榆浖蚣蹺lectron, 這個(gè)漏洞讓加密數(shù)字貨幣私鑰處于未知風(fēng)險(xiǎn)。一再發(fā)生的區(qū)塊鏈密鑰被盜攻擊事件已經(jīng)表明,一些程序正在生成弱密鑰,產(chǎn)生有限范圍的可能值,而通過這些有限的隨機(jī)數(shù)生成器生成的密鑰可以更容易地被蠻力攻擊。
1.2 P2P網(wǎng)絡(luò)安全威脅
區(qū)塊鏈系統(tǒng)以P2P網(wǎng)絡(luò)為基礎(chǔ),針對(duì)P2P網(wǎng)絡(luò),攻擊者可以發(fā)動(dòng)Eclipse日食攻擊、分割攻擊、延遲攻擊、竊聽攻擊、DDoS拒絕服務(wù)攻擊,進(jìn)而造成整個(gè)區(qū)塊鏈系統(tǒng)的安全問題。
在區(qū)塊鏈P2P網(wǎng)絡(luò)中通常采用廣播機(jī)制來傳播節(jié)點(diǎn)信息,而廣播機(jī)制中常見的攻擊方式則主要有雙花攻擊和交易延展性攻擊兩種。
1)日食攻擊
日食攻擊是通過其他節(jié)點(diǎn)實(shí)施的網(wǎng)絡(luò)層面攻擊,其攻擊手段是囤積和霸占受害者的點(diǎn)對(duì)點(diǎn)連接間隙,將該節(jié)點(diǎn)保留在一個(gè)隔離的網(wǎng)絡(luò)中。這種類型的攻擊旨在阻止最新的區(qū)塊鏈信息進(jìn)入到被攻擊的節(jié)點(diǎn),從而隔離節(jié)點(diǎn)。
比特幣和以太坊網(wǎng)絡(luò)已被證實(shí)均能被實(shí)施日食攻擊。針對(duì)比特幣網(wǎng)絡(luò),攻擊者會(huì)先控制足夠數(shù)量的IP地址來壟斷所有受害節(jié)點(diǎn)之間的有效連接,之后攻擊者則會(huì)征用受害者的挖掘能力,并用它來攻擊區(qū)塊鏈的一致性算法或用于“重復(fù)支付和私自挖礦”。而針對(duì)以太坊網(wǎng)絡(luò),攻擊者會(huì)壟斷受害節(jié)點(diǎn)所有的輸入和輸出連接,將受害節(jié)點(diǎn)與網(wǎng)絡(luò)中其他正常節(jié)點(diǎn)隔離開來,進(jìn)而攻擊者會(huì)誘騙受害者查看不正確的以太網(wǎng)交易細(xì)節(jié),誘騙賣家在交易其實(shí)還沒有完成的情況下將物品交給攻擊者。對(duì)比特幣網(wǎng)絡(luò)上的節(jié)點(diǎn)實(shí)施日食攻擊需要成千上萬個(gè)惡意節(jié)點(diǎn)才能搞垮一個(gè)受害者的節(jié)點(diǎn),而在以太坊網(wǎng)絡(luò)上,攻擊者只需通過建立一個(gè)僵尸網(wǎng)絡(luò)(如購買云服務(wù))就可以發(fā)起攻擊。論文《Low-Resource Eclipse Attacks on Ethereum‘ s Peer- to-Peer Network》指出:攻擊者只需要兩個(gè)惡意的以太坊節(jié)點(diǎn)就能隔離和影響另一個(gè)節(jié)點(diǎn)進(jìn)行日食攻擊,因此對(duì)以太坊網(wǎng)絡(luò)實(shí)施日食攻擊的成本較低。
2)分割攻擊
邊界網(wǎng)關(guān)協(xié)議(BGP)是因特網(wǎng)的關(guān)鍵組成部分,其主要用于確定路由路徑,而通過劫持BGP可以實(shí)現(xiàn)對(duì)基于物聯(lián)網(wǎng)信息傳遞的區(qū)塊鏈節(jié)點(diǎn)流量的誤導(dǎo)和攔截。利用BGP操縱因特網(wǎng)路由路徑,在最近幾年中已經(jīng)變得越來越頻繁。網(wǎng)絡(luò)犯罪分子可以利用劫持BGP誤導(dǎo)和攔截流量,一旦區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點(diǎn)的流量被接管,會(huì)對(duì)整個(gè)網(wǎng)絡(luò)造成巨大影響,如破壞共識(shí)機(jī)制、交易等各種信息。
攻擊者可以利用BGP劫持將區(qū)塊鏈網(wǎng)絡(luò)劃分成兩個(gè)或多個(gè)無法通信的獨(dú)立不相交網(wǎng)絡(luò),此時(shí)的區(qū)塊鏈分叉為兩條或多條并行鏈。攻擊停止后,區(qū)塊鏈會(huì)重新統(tǒng)一為一條鏈,以最長的鏈為主鏈,其他的鏈將被廢棄,被廢棄的鏈上的交易、獎(jiǎng)勵(lì)將全部無效,從而導(dǎo)致雙重花費(fèi)甚至是多次花費(fèi)問題的出現(xiàn)。
3)延遲攻擊
攻擊者可以利用BGP劫持來延遲目標(biāo)的區(qū)塊更新,而且不被發(fā)現(xiàn)。在目標(biāo)請(qǐng)求獲取最新區(qū)塊的時(shí)候,攻擊者可以基于中間人攻擊修改目標(biāo)請(qǐng)求為獲取舊區(qū)塊的請(qǐng)求,使得目標(biāo)獲得較舊的區(qū)塊。例如在挖礦過程中如果遭遇了延遲攻擊,礦工獲取最新塊的請(qǐng)求被惡意修改使其無法獲取到新區(qū)塊,這將導(dǎo)致礦工的算力無辜受損。
4) DDoS攻擊
區(qū)塊鏈網(wǎng)絡(luò)中具有數(shù)以百萬計(jì)的在線用戶數(shù),區(qū)塊鏈節(jié)點(diǎn)會(huì)提供大量的分布式存儲(chǔ)和網(wǎng)絡(luò)帶寬可用資源服務(wù)于百萬在線用戶。攻擊者只需在層疊網(wǎng)絡(luò)(應(yīng)用層)中控制這些節(jié)點(diǎn)資源,而無需入侵區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)所運(yùn)行的主機(jī),即可利用這些資源作為一個(gè)發(fā)起大型DDoS攻擊的放大平臺(tái)。理論而言,將區(qū)塊鏈網(wǎng)絡(luò)作為DDoS攻擊引擎時(shí),假如該網(wǎng)絡(luò)中有一百萬個(gè)在線用戶,則可使得攻擊放大一百萬倍甚至更多。
2017年2月份,以太坊Ropsten測(cè)試鏈遭到惡意攻擊,攻擊者發(fā)動(dòng)了千萬級(jí)別的垃圾交易信息,直接阻塞了網(wǎng)絡(luò)的正常運(yùn)行。
2018年3月22日,閃電網(wǎng)絡(luò)節(jié)點(diǎn)遭受DDoS攻擊,導(dǎo)致大約200個(gè)節(jié)點(diǎn)被迫離線,其在線節(jié)點(diǎn)從大約1,050 個(gè)降到了870個(gè)。
根據(jù)攻擊方式的不同,基于區(qū)塊鏈的DDoS攻擊可分為主動(dòng)攻擊和被動(dòng)攻擊兩種?;趨^(qū)塊鏈的主動(dòng)DDoS攻擊是通過主動(dòng)向網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送大量虛假信息,使得針對(duì)這些信息的后續(xù)訪問都指向受害者來達(dá)到攻擊效果,其具有可控性較強(qiáng)、放大倍數(shù)高等特點(diǎn)。這種攻擊利用了區(qū)塊鏈網(wǎng)絡(luò)協(xié)議中的“推(push)” 機(jī)制,反射節(jié)點(diǎn)在短時(shí)間內(nèi)接收到大量通知信息后不易于分析和記錄,攻擊者還可以通過假冒源地址來躲避IP檢查,使得追蹤定位攻擊源更加困難。此外,主動(dòng)攻擊在區(qū)塊鏈網(wǎng)絡(luò)中引入額外流量,會(huì)降低區(qū)塊鏈網(wǎng)絡(luò)的查找和路由性能,而虛假的索引信息則會(huì)影響文件下載速度?;趨^(qū)塊鏈的被動(dòng)DDoS攻擊是通過修改區(qū)塊鏈客戶端或者服務(wù)器軟件,被動(dòng)等待來自其它節(jié)點(diǎn)的查詢請(qǐng)求,再通過返回虛假響應(yīng)實(shí)現(xiàn)攻擊效果。通常情況下,其會(huì)采取一些放大措施來增強(qiáng)攻擊效果,如:部署多個(gè)攻擊節(jié)點(diǎn)、在一個(gè)響應(yīng)消息中多次包含目標(biāo)主機(jī)、結(jié)合其它協(xié)議或者實(shí)現(xiàn)漏洞等。這種攻擊利用了區(qū)塊鏈網(wǎng)絡(luò)協(xié)議中的“?。╬ul)”機(jī)制。被動(dòng)攻擊屬于非侵?jǐn)_式,對(duì)區(qū)塊鏈網(wǎng)絡(luò)流量影響不大,通常只是針對(duì)局部的區(qū)塊鏈節(jié)點(diǎn)。
5) 交易延展性攻擊
區(qū)塊鏈節(jié)點(diǎn)與節(jié)點(diǎn)互相連接,當(dāng)某節(jié)點(diǎn)接入到區(qū)塊鏈網(wǎng)絡(luò)后,單個(gè)節(jié)點(diǎn)會(huì)與其他節(jié)點(diǎn)建立連接并擁有廣播信息的資格,這些具備廣播信息資格的節(jié)點(diǎn)在將信息傳播給其他節(jié)點(diǎn)后,其他節(jié)點(diǎn)會(huì)驗(yàn)證此信息是否為有效信息,確認(rèn)無誤后再繼續(xù)向其他節(jié)點(diǎn)廣^播,這種廣播機(jī)制會(huì)面臨如交易延展性攻擊等風(fēng)險(xiǎn)攻擊者通過偵聽P2P網(wǎng)絡(luò)中的交易,利用交易簽名算法特征修改原交易中的input簽名,生成擁有一樣input和output的新交易,廣播到網(wǎng)絡(luò)中形成雙花,這樣原來的交易就可能有一定概率不被確認(rèn),在虛擬貨幣交易的情況下,它可以被用來進(jìn)行二次存款或雙重提現(xiàn)。
2013年11月,GHashio 礦池對(duì)賭博網(wǎng)站BetCoin Dice進(jìn)行多次付款欺詐,進(jìn)行雙花攻擊。
2014年8月,在線黑市Silk Road2遭遇交易延展性攻擊,部分比特幣被盜,損失約260萬美元。
2. 系統(tǒng)核心設(shè)計(jì)安全威脅
智能合約作為區(qū)塊鏈2.0區(qū)別于1.0的顯著特性,正在被廣泛使用。數(shù)據(jù)層和共識(shí)層作為區(qū)塊鏈系統(tǒng)的必要元素,與合約層一起共同構(gòu)成了區(qū)塊鏈系統(tǒng)的核心,銜接著基礎(chǔ)服務(wù)與應(yīng)用生態(tài)。
2.1 共識(shí)層安全威脅
由于區(qū)塊鏈去中心化的特點(diǎn),每一個(gè)處于區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)都擁有一份完整的賬本數(shù)據(jù),并且由網(wǎng)絡(luò)中的共識(shí)機(jī)制執(zhí)行相應(yīng)的共識(shí)算法來共同記錄整個(gè)網(wǎng)絡(luò)中的交易等相關(guān)信息。目前的共識(shí)機(jī)制有PoW、PoS、 DPoS、 Pool 驗(yàn)證池機(jī)制、PBFT等,其主要面臨的攻擊有女巫攻擊、51%攻擊、長距離攻擊、短距離攻擊、幣齡累計(jì)攻擊、預(yù)計(jì)算攻擊。PoW、PoS、 DPoS這三種常見共識(shí)機(jī)制所面臨的攻擊方式如表2-1所示。
1) 51%攻擊
在PoW算法中被證明存在51%算力攻擊威脅,即如果某一個(gè)節(jié)點(diǎn)或者由部分節(jié)點(diǎn)組成的組織掌握了全網(wǎng)超過51%的算力,這些節(jié)點(diǎn)就有能力將目前正在工作的區(qū)塊鏈轉(zhuǎn)移到另一-條包含有惡意行為的區(qū)塊鏈上,并使得全網(wǎng)節(jié)點(diǎn)在這條惡意的區(qū)塊鏈上繼續(xù)工作。
如果攻擊者能夠控制全網(wǎng)算力的一半以上,攻擊者可以比網(wǎng)絡(luò)的其他部分更快地生成塊,隨著攻擊者堅(jiān)持自己的私有分支,直到它比誠實(shí)節(jié)點(diǎn)網(wǎng)絡(luò)建立的分支更長,將可以使得全網(wǎng)節(jié)點(diǎn)在這條惡意的區(qū)塊鏈上繼續(xù)工作,近而代替主鏈。
由于比特幣所使用的PoW算法的安全性依賴于其所消耗的巨大算力,51%算力攻擊曾一度被認(rèn)為是難以達(dá)到的。然而隨著礦池的出現(xiàn),一個(gè)名為GHash的礦池就曾經(jīng)在2014年6月?lián)碛腥W(wǎng)51%的算力,因此,51%算力攻擊的威脅始終存在,并且有可能發(fā)生。2016年8月份,基于以太坊的數(shù)字貨幣Krypton 遭受來自一個(gè)名為“51%Crew“的組織通過租用Nicehash算力所發(fā)起的51%攻擊,導(dǎo)致該區(qū)塊鏈損失約21,465KR的代幣。據(jù)Crypto51.app數(shù)據(jù)統(tǒng)計(jì),想完成對(duì)比特幣一個(gè)小時(shí)的51%算力攻擊的成本大概要55萬美金,完成對(duì)以太坊的攻擊需要36萬美金,萊特幣需要6.4萬美金,比特幣現(xiàn)金需要7.2萬美金,最近剛被攻擊過的BitcoinGold比特幣黃金只需要三千八百六十美金就能完成51%攻擊,在統(tǒng)計(jì)的流通性比較高的數(shù)字貨幣里攻擊成本最低的就是Bytecoin, 要完成攻擊僅僅需要五百五十七美金。而實(shí)際上,隨著挖礦業(yè)務(wù)的發(fā)展,現(xiàn)在通過網(wǎng)絡(luò)租賃算力的業(yè)務(wù)也越來越成熟了,攻擊者不再需要花費(fèi)大量成本去購買礦機(jī),只需要在攻擊的時(shí)候即時(shí)從網(wǎng)上租賃算力來發(fā)動(dòng)51%攻擊,利用51%算力攻擊一個(gè)數(shù)字貨幣的成本在越來越低。
2)女巫攻擊
女巫攻擊又稱Sybil攻擊,攻擊者通過創(chuàng)建大量的假名標(biāo)識(shí)來破壞對(duì)等網(wǎng)絡(luò)的信譽(yù)系統(tǒng),使用它們獲得不成比例的大的影響。為了應(yīng)對(duì)這種威脅,對(duì)等網(wǎng)絡(luò)中的實(shí)體為了冗余機(jī)制、資源共享、可靠性和完整性而使用多個(gè)標(biāo)識(shí)。多個(gè)標(biāo)識(shí)可以對(duì)應(yīng)于單個(gè)實(shí)體,身份到實(shí)體的映射是多對(duì)一的。對(duì)等網(wǎng)絡(luò)上的實(shí)體是能夠訪問本地資源的一塊軟件,實(shí)體通過呈現(xiàn)身份在網(wǎng)絡(luò)上通告自身。在對(duì)等網(wǎng)絡(luò)中,身份抽象化使得遠(yuǎn)程實(shí)體可以知道身份而不必知道身份與本地實(shí)體的對(duì)應(yīng)關(guān)系。默認(rèn)情況下,通常假定每個(gè)不同的標(biāo)識(shí)對(duì)應(yīng)于不同的本地實(shí)體。實(shí)際上,許多身份可以對(duì)應(yīng)于相同的本地實(shí)體。攻擊者可以向?qū)Φ染W(wǎng)絡(luò)呈現(xiàn)多個(gè)身份,以便出現(xiàn)并充當(dāng)多個(gè)不同的節(jié)點(diǎn)。因此,攻擊者可能能夠獲得對(duì)網(wǎng)絡(luò)的不成比例的控制水平,例如影響投票結(jié)果。
3)短距離攻擊
攻擊者通過控制一定比例、保障系統(tǒng)安全性的計(jì)算資源、加密貨幣資源等各種資源,實(shí)現(xiàn)在執(zhí)行花費(fèi)代幣或執(zhí)行智能合約等操作時(shí)將 其回滾,從而進(jìn)行雙花攻擊,即一個(gè)加密貨幣進(jìn)行兩次花費(fèi)。
當(dāng)攻擊者發(fā)起短距離攻擊時(shí),首先會(huì)向全網(wǎng)提交一個(gè)待回滾的交易,并在上一個(gè)區(qū)塊的分叉上(不包含待回滾交易的分叉)繼續(xù)進(jìn)行挖礦,直到該交易得到n個(gè)區(qū)塊確認(rèn)信息。若分叉上的區(qū)塊數(shù)多于n,則攻擊者公布包含有待回滾交易的區(qū)塊。這樣,由于分叉鏈的長度大于原本的主鏈,則全網(wǎng)節(jié)點(diǎn)將分叉鏈視為主鏈,此時(shí),交易得到回滾。
4) 長距離攻擊
攻擊者通過控制一定比例的系統(tǒng)資源,在歷史區(qū)塊、甚至是創(chuàng)世區(qū)塊上對(duì)區(qū)塊鏈主鏈進(jìn)行分叉,旨在獲取更多的區(qū)塊獎(jiǎng)勵(lì)和/或者達(dá)到回滾交易的目的。這種攻擊更多的是針對(duì)基于權(quán)益證明共識(shí)機(jī)制的系統(tǒng)。即使攻擊者可能在分叉出現(xiàn)時(shí)僅持有一小部分的代幣,但他可以在分叉上自由地進(jìn)行代幣交易,從而導(dǎo)致攻擊者能夠更加容易地進(jìn)行造幣并快速形成一條更長的區(qū)塊鏈。
5) 幣齡累積攻擊
基于PoS共識(shí)機(jī)制的系統(tǒng)中,攻擊者可以利用幣齡計(jì)算節(jié)點(diǎn)權(quán)益,并通過總消耗的幣齡確定有效的區(qū)塊鏈。未花費(fèi)交易輸出(UTXO)的幣齡是根據(jù)幣齡乘以該區(qū)塊之前的歷史區(qū)塊的數(shù)量得出(比如點(diǎn)點(diǎn)幣)。在幣齡累計(jì)攻擊中,攻擊者將其持有的代幣分散至不同的UTXO中,并等待直至其所占權(quán)益遠(yuǎn)大于節(jié)點(diǎn)平均值。這樣,攻擊者有極大的可能性連續(xù)進(jìn)行造幣,從而達(dá)到對(duì)主鏈的分叉或交易回滾(如實(shí)施雙花攻擊)的目的。
6)預(yù)計(jì)算攻擊
在PoS共識(shí)機(jī)制中,解密當(dāng)前區(qū)塊取決于前一個(gè)區(qū)塊的哈希值。擁有足夠算力和權(quán)益的攻擊者可以在第n個(gè)區(qū)塊的虛擬挖礦過程中,通過隨機(jī)試錯(cuò)法對(duì)該區(qū)塊的哈希值進(jìn)行干涉,直至攻擊者可以對(duì)第n+1個(gè)區(qū)塊進(jìn)行挖礦,從而,攻擊者可以連續(xù)進(jìn)行造幣,并獲取相對(duì)應(yīng)的區(qū)塊獎(jiǎng)勵(lì)或者發(fā)起雙花攻擊。
2.2 合約層安全威脅
智能合約是區(qū)塊鏈2.0的一個(gè)特性,隨著區(qū)塊鏈2.0技術(shù)的不斷推進(jìn),智能合約在以太坊、EOS、 Hyperledge 等平臺(tái)上得到廣泛應(yīng)用。區(qū)塊鏈的智能合約一般都用來控制資金流轉(zhuǎn),應(yīng)用在貿(mào)易結(jié)算、數(shù)字,資產(chǎn)交易、票據(jù)交易等場景中,其漏洞的嚴(yán)重性遠(yuǎn)高于普通的軟件程序。由于智能合約會(huì)部署在公鏈暴露于開放網(wǎng)絡(luò)中,容易被黑客獲得,成為黑客的金礦和攻擊目標(biāo),一旦出現(xiàn)漏洞,將直接導(dǎo)致經(jīng)濟(jì)損失。從TheDAO到BEC和SMT的整數(shù)溢出漏洞、再到EOS緩沖區(qū)溢出越界寫漏洞,智能合約的安全漏洞頻發(fā),“智能合約”已經(jīng)成為區(qū)塊鏈安全的重災(zāi)區(qū)。
以太坊( Ethereum)是目前最熱門的具有智能合約功能的開源公共區(qū)塊鏈平臺(tái),區(qū)塊鏈上的所有用戶都可以看到基于區(qū)塊鏈的智能合約。但是,這會(huì)導(dǎo)致包括安全漏洞在內(nèi)的所有漏洞都可見。如果智能合約開發(fā)者疏忽或者測(cè)試不充分,而造成智能合約代碼存在眾多漏洞,就非常容易被黑客利用并攻擊。并且功能越強(qiáng)大的智能合約,邏輯越復(fù)雜,也越容易出現(xiàn)邏輯上的漏洞。來自新加坡國立大學(xué)、耶魯新加坡國立大學(xué)學(xué)院和倫敦大學(xué)學(xué)院的一組研究人員發(fā)布了一份報(bào)告,聲稱已經(jīng)發(fā)現(xiàn)了3.4萬多份以太坊智能合約可能存在容易被攻擊的漏洞,其中大約3000個(gè)不安全的智能合約可能會(huì)造成600萬美元的ETH被盜。表2-2列出了以太坊的合約層漏洞。
2.3 數(shù)據(jù)層安全威脅
區(qū)塊鏈數(shù)據(jù)具有不可篡改、去中心化生成和確認(rèn)的特點(diǎn),這也就造成了區(qū)塊鏈數(shù)據(jù)的難以監(jiān)管,使之可被利用進(jìn)行惡意攻擊和惡意內(nèi)容傳播。
2017年在EuskalHack安全會(huì)議上,有安全研究者提出了基于區(qū)塊鏈模式的botnet網(wǎng)絡(luò),利用區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行C&C的惡意指令發(fā)布并且提供了POC。
2018年3月德國RWTH亞琛工業(yè)大學(xué)的研究人員發(fā)現(xiàn)了比特幣區(qū)塊鏈中的非財(cái)務(wù)數(shù)據(jù),其中包括色情內(nèi)容等。幸運(yùn)的是,亞琛工業(yè)大學(xué)的研究人員沒有發(fā)現(xiàn)任何惡意軟件保存在比特幣區(qū)塊鏈上。在他們的論文中,研究人員指出了你可以通過多種方式在加密貨幣的區(qū)塊鏈上插入內(nèi)容,其中包括CryrtoGrafiti、Satoshi Uploader和Apertus等服務(wù)。但另一方面,如果不能開發(fā)出解決方案來移除區(qū)塊鏈當(dāng)中的色情內(nèi)容,那添加的數(shù)據(jù)就永遠(yuǎn)無法管理,并且無法被清除。
目前比特幣、以太坊和Hyperledger Fabric都采用全網(wǎng)節(jié)點(diǎn)共享一條區(qū)塊鏈的單鏈方案,網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)需要處理、存儲(chǔ)全網(wǎng)的所有交易和全部數(shù)據(jù),整個(gè)區(qū)塊鏈系統(tǒng)的處理能力實(shí)際上受限于單個(gè)計(jì)算節(jié)點(diǎn)的處理能力。另外,受到共識(shí)算法的影響,隨著節(jié)點(diǎn)數(shù)的增加,系統(tǒng)整體處理能力不但未隨之提升,甚至還會(huì)降低。
區(qū)塊鏈對(duì)于網(wǎng)絡(luò)中的節(jié)點(diǎn)來說是透明的,任何一個(gè)節(jié)點(diǎn)都可以獲取區(qū)塊鏈上的所有信息。雖然比特幣使用隨機(jī)數(shù)和非對(duì)稱加密算法生成唯一地址作為用戶的地址進(jìn)行交易,但是如果這些地址直接或間接地與真實(shí)世界發(fā)生了聯(lián)系,就會(huì)失去其匿名性,從而泄露其個(gè)人隱私。另外,不同的地址之間如果出現(xiàn)穩(wěn)定的關(guān)聯(lián)交易,通過分析交易規(guī)律,甚至能夠推測(cè)出用戶的身份信息和位置信息。如果交易節(jié)點(diǎn)被攻擊,攻擊者不僅可獲得用戶的交易信息,而且很容易借此為跳板破壞整個(gè)交易鏈。
3. 應(yīng)用生態(tài)安全威脅
區(qū)塊鏈的應(yīng)用已從數(shù)字貨幣的虛擬世界走向了與現(xiàn)實(shí)世界相對(duì)接的實(shí)際應(yīng)用場景中,其應(yīng)用生態(tài)安全涉及數(shù)字貨幣交易平臺(tái)、區(qū)塊鏈移動(dòng)數(shù)字錢包App、網(wǎng)站、DApp等。
和傳統(tǒng)金融機(jī)構(gòu)差別不大,數(shù)字貨幣交易所整個(gè)信息系統(tǒng)由Web服務(wù)器、后端數(shù)據(jù)庫等元素構(gòu)成,用戶通過瀏覽器、移動(dòng)端App以及交易所提供的API等多種方式作為客戶端訪問服務(wù)器。美國數(shù)字貨幣安全公司CipherTrace發(fā)布的二季度觀察報(bào)告顯示,2018年前6個(gè)月,全球數(shù)字貨幣交易所共有價(jià)值7.61億美元的數(shù)字貨幣被黑客竊取。而整個(gè)2017年的損失金額也不過2.66億美元。2018年上半年以來,被盜取的數(shù)字貨幣金額已經(jīng)達(dá)到了2017年的3倍之多。結(jié)合各大交易所出現(xiàn)的攻擊事件發(fā)現(xiàn),這部分面臨的安全威脅主要包括:服務(wù)器軟件漏洞、配置不當(dāng)、DDoS攻擊、服務(wù)端Web程序漏洞(包括技術(shù)性漏洞和業(yè)務(wù)邏輯缺陷)。
本部分重點(diǎn)介紹網(wǎng)站和移動(dòng)數(shù)字錢包App面臨的威脅。
3.1交易網(wǎng)站面臨的安全威脅
和其他網(wǎng)站一樣,交易網(wǎng)站面臨賬戶泄露、DDoS、Web注入等攻擊,對(duì)于規(guī)模較大,用戶較多的交易所,還會(huì)面臨用戶被攻擊者利用仿冒的釣魚網(wǎng)站騙取認(rèn)證信息等威脅。
1)賬戶泄露攻擊事件
黑客可利用病毒、木馬、釣魚等傳統(tǒng)攻擊手段竊取用戶賬號(hào),進(jìn)而利用合法用戶賬號(hào)登錄系統(tǒng)進(jìn)行一系列非法操作,或者通過非法手段拿到交易所系統(tǒng)的數(shù)據(jù)庫,由于數(shù)據(jù)庫存儲(chǔ)著用戶的注冊(cè)信息,且這些數(shù)據(jù)沒有加密,黑客拿到這些數(shù)據(jù)后可以在互聯(lián)網(wǎng)上售賣或者對(duì)平臺(tái)進(jìn)行惡意操作。攻擊者破解其他安全措施較弱的網(wǎng)站密碼,通過撞庫的方式獲得登錄口令,因此采用雙因子認(rèn)證等傳統(tǒng)安全用戶認(rèn)證方式對(duì)于數(shù)字貨幣交易所和區(qū)塊鏈應(yīng)用系統(tǒng)來說非常必要。
2017年10月2日,OKCoin旗下交易所出現(xiàn)大量賬戶被盜情況,不完全統(tǒng)計(jì)損失金額在1000萬人民幣左右,用戶懷疑平臺(tái)已被攻擊, 或有已被關(guān)閉平臺(tái)的交易所員工向黑客泄漏了平臺(tái)用戶的賬戶信息,黑客通過用戶信息破解賬戶密碼登錄平臺(tái),然后在平臺(tái)上完成數(shù)字資產(chǎn)轉(zhuǎn)移。
2) Web注入攻擊件
攻擊者可以采用SQL注入、XSS跨站腳本攻擊等方式對(duì)Web進(jìn)行注入攻擊,SQL注入是把SQL命令插入到Web表單遞交或輸入域名或頁面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。XSS跨站腳本攻擊指攻擊者在網(wǎng)頁中嵌入客戶端腳本(例如IJavaScript),當(dāng)用戶瀏覽此網(wǎng)頁時(shí),腳本就會(huì)在用戶的瀏覽器上執(zhí)行,從而達(dá)到攻擊者的目的,比如獲取用戶的Cookie, 導(dǎo)航到惡意網(wǎng)站,攜帶木馬等。
2017年8月份,一款名為Ti ickbot的木馬就針對(duì)包括Coinbase在內(nèi)的幾家數(shù)字貨幣交易所增加了Web注入攻擊功能,在受害者購買數(shù)字貨幣的時(shí)候和會(huì)將接收錢包重定向到攻擊者的錢包,讓用戶誤以為轉(zhuǎn)賬成功,實(shí)際上是給攻擊者轉(zhuǎn)賬了。
3) DDoS攻擊
在區(qū)塊鏈應(yīng)用中,攻擊者可針對(duì)區(qū)塊鏈應(yīng)用層和底層協(xié)議缺陷發(fā)起針對(duì)性的DDoS攻擊,影響各類應(yīng)用業(yè)務(wù)的可用性。2017年5月12日,Poloniex交易平臺(tái)遭受了嚴(yán)重的DDoS攻擊,BTC/USDT的交易價(jià)格一度困于1761美元,絕大多數(shù)用戶都無法執(zhí)行訂單或是提取資金。根據(jù)云計(jì)算安全服務(wù)提供商Incapsula發(fā)布的2017年第四季度DDoS威脅報(bào)告,應(yīng)用層DDoS攻擊數(shù)量較前一季度成倍增長,且針對(duì)加密貨幣行業(yè)的攻擊數(shù)量持續(xù)增長,占所有攻擊數(shù)量的3.7%。
4)釣魚網(wǎng)頁攻擊
2017年4月14日,在約翰霍普金斯大學(xué)研究數(shù)學(xué)的學(xué)生xudongzheng發(fā)表了一篇論文, 題目是《Phishing with Unicode Domains》,中文大意為“用unicode網(wǎng)址釣魚”,文章中給出的一一種釣魚 方法會(huì)使用多語言字符混合來騙過用戶眼睛。
2018年3月7日,知名數(shù)字貨幣交易平臺(tái)幣安遭到黑客攻擊,此次攻擊造成全球數(shù)字幣價(jià)格大跌。根據(jù)交易所的公告,攻擊者利用釣魚欺騙的方式騙取了部分用戶的認(rèn)證憑證,在掌握用戶的賬戶權(quán)限之后,使用機(jī)器掛單,繼而利用API發(fā)起大量交易,進(jìn)行程序化高頻交易,給用戶帶來巨大損失。
3.2 數(shù)字貨幣錢包App面臨的威脅
利用移動(dòng)數(shù)字貨幣錢包App管理數(shù)字貨幣資產(chǎn),可以隨時(shí)查詢錢包歷史,獲得全球?qū)崟r(shí)交易行情。數(shù)字貨幣錢包App中保存的私鑰是區(qū)塊鏈節(jié)點(diǎn)和數(shù)字貨幣賬戶授權(quán)活動(dòng)的直接手段,加密數(shù)字貨幣資產(chǎn)的安全性建立在加密數(shù)字錢包私鑰本身的安全性上,私鑰是唯一的數(shù)字資產(chǎn)憑證,敵手一旦拿到私鑰,就可以拿到私鑰所擔(dān)保的任何錢包,因此黑客會(huì)想方設(shè)法竊取私鑰。移動(dòng)數(shù)字貨幣錢包App與其他App一樣,會(huì)遭受破解、內(nèi)存篡改攻擊等。
1)私鑰竊取
Google Play 商店中超過2000款移動(dòng)數(shù)字貨幣錢包App,由于移動(dòng)開發(fā)過程中缺乏對(duì)安全性的認(rèn)識(shí),前30款總安裝量達(dá)到10萬的數(shù)字貨幣錢包App中,有94%包含至少3個(gè)“中等風(fēng)險(xiǎn)”漏洞,77%包含至少2個(gè)“高風(fēng)險(xiǎn)”問題。根據(jù)分析顯示,最常見的漏洞是數(shù)據(jù)存儲(chǔ)安全性不足、密碼系統(tǒng)安全性不足,這些漏洞會(huì)導(dǎo)致私鑰的竊取,個(gè)人隱私信息泄露等安全事件。
一些數(shù)字貨幣錢包為了便于用戶記住私鑰,使用助記詞的方式,但是部分?jǐn)?shù)字貨幣錢包的助記詞采用明文存儲(chǔ)的方式,一旦數(shù)字貨幣錢包App存在漏洞,拿到系統(tǒng)的root權(quán)限,就可以獲取錢包的助記詞,導(dǎo)致數(shù)字資產(chǎn)隨時(shí)被盜取。已有公司對(duì)市面上的數(shù)字錢包產(chǎn)品在私鑰存儲(chǔ)問題上進(jìn)行了安全分析,發(fā)現(xiàn)Bitcoin Wallet 和Jaxx BlockchainWallet兩款產(chǎn)品在私鑰存儲(chǔ)中存在巨大的安全漏洞,加密數(shù)字貨幣資產(chǎn)面臨被盜風(fēng)險(xiǎn)。黑客通過嘗試捕獲信息、植入惡意軟件和/或使用社會(huì)工程即可從用戶機(jī)器中竊取私鑰。
2)破解攻擊
數(shù)字貨幣錢包App涉及到數(shù)字貨幣資產(chǎn),是網(wǎng)絡(luò)黑產(chǎn)和黑客重點(diǎn)關(guān)注的對(duì)象,網(wǎng)絡(luò)黑產(chǎn)可以從各種渠道找到App的apk,將apk文件逆向破解后植入病毒、木馬代碼,最后二次打包投入公開市場,當(dāng)不明真相的幣友將帶病毒、木馬的App下載后,會(huì)帶來巨大經(jīng)濟(jì)損失。
在開發(fā)移動(dòng)App時(shí),程序員會(huì)用到各類的編程語言,如Java、C、C++以及各類腳本語言等都被廣泛大量使用。但Java、 C這樣的中間語言有一個(gè)極大的弱點(diǎn)就是極易被反編譯。Java的基本類庫(JDK)是開源的,這就使很多Java開發(fā)的應(yīng)用被逆向破解的門檻很低。目前市面上有大量的逆向破解工具,例如: Dex2Jar、 JEB、JD-GUI 等等。且網(wǎng)上有公開、詳細(xì)的破解教程,只要懂代碼編程,利用這些工具就可以破解市面上那些防御薄弱、存在大量安全漏洞的App。
3) App內(nèi)存篡改攻擊
App應(yīng)用中的高度敏感和關(guān)鍵性信息駐留在一個(gè)應(yīng)用內(nèi)存中, 如果未受到保護(hù),則這些信息可以被隨意查看和篡改。黑客通常使用進(jìn)程調(diào)試、動(dòng)態(tài)注入、HOOK等技術(shù)來實(shí)現(xiàn)對(duì)App內(nèi)存的攻擊,這些攻擊方式主要是先對(duì)App Code控制,App Data控制進(jìn)行攻擊修改。通過控制內(nèi)存中的應(yīng)用代碼,可以調(diào)試解析出應(yīng)用內(nèi)邏輯、功能、流程、漏洞等各類關(guān)鍵內(nèi)容。針對(duì)發(fā)現(xiàn)的漏洞植入相應(yīng)的后門代碼,以便針對(duì)應(yīng)用進(jìn)一步攻擊對(duì)移動(dòng)應(yīng)用數(shù)據(jù)的攻擊,是黑客/攻擊者的核心內(nèi)容,App內(nèi)存中包含很多重要個(gè)人信息和應(yīng)用變現(xiàn)相關(guān)的信息和邏輯。黑客對(duì)內(nèi)存中的Data進(jìn)行控制,以達(dá)到篡改App應(yīng)用的目的,如修改轉(zhuǎn)賬金額、賬戶等。
4. 區(qū)塊鏈面臨的安全挑戰(zhàn)
4.1錢包安全管理
區(qū)塊鏈錢包(Block Chain Wallet)是密鑰的管理工具,它只包含i密鑰而不是確切的某一個(gè)代幣;錢包中包含成對(duì)的私鑰和公鑰,私鑰與用戶的資產(chǎn)直接關(guān)聯(lián),用戶用私鑰來簽名交易,從而證明該用戶擁有交易的輸出權(quán)。獲取了私鑰,就獲得了資產(chǎn)的使用權(quán)和交易權(quán)。黑客復(fù)制或竊取私鑰可能不會(huì)在計(jì)算機(jī)上留下任何痕跡,甚至可以無限地嘗試解密或嘗試從給定的分類帳中復(fù)制加密數(shù)據(jù),惡意用戶訪問錢包可能很難被發(fā)現(xiàn)。
私鑰保護(hù)不僅要考慮在黑客機(jī)器上發(fā)生的行為,例如不受服務(wù)器強(qiáng)加的查詢限制進(jìn)行文件解密嘗試或私鑰再現(xiàn),還需要保證在沒有任何其他人能夠注意的情況下保證私鑰運(yùn)行時(shí)的安全。
錢包軟件需要保護(hù)私鑰在運(yùn)行和存儲(chǔ)時(shí)的安全,包括未經(jīng)授權(quán)不允許訪問、運(yùn)行過程防止被監(jiān)控,甚至做到軟件被控制、監(jiān)視也無法獲取私鑰:此外,也需要考忠用戶密鑰被盜、丟失后賬戶資產(chǎn)的安全。因此,如何保證私鑰的運(yùn)行安全以及在保證資產(chǎn)安全的前提下進(jìn)行私鑰備份是錢包安全管理面臨的挑戰(zhàn)。
4.2 智能合約安全
由于智能合約的不完善,且還存在著許多漏洞,執(zhí)行起來仍然是一-件具有挑戰(zhàn)性的問題。一旦這些漏洞被黑客利用,就會(huì)造成虛擬貨幣的財(cái)產(chǎn)外泄,被不法分子盜取。在智能合約中采用全同態(tài)加密技術(shù),可保證區(qū)塊鏈中數(shù)據(jù)的隱私和數(shù)據(jù)在不可信環(huán)境下運(yùn)算的正確性,但全同態(tài)加密技術(shù)距離實(shí)際應(yīng)用還存在一定的距離。
智能合約本質(zhì)上是一段運(yùn)行在區(qū)塊鏈網(wǎng)絡(luò)中的代碼,它界定了各方使用合約的條件,在滿足合約條件下某些機(jī)器指令被執(zhí)行。而代碼在設(shè)計(jì)和開發(fā)過程中,不可避免出現(xiàn)漏洞。開源代碼大約每1000 行就含有一個(gè)安全漏洞,表現(xiàn)最好的Linux kermel 2.6版本的安全漏洞率為每一千行代碼0.127個(gè)。安全智能合約的開發(fā)對(duì)程序員本身是一個(gè)挑戰(zhàn)。智能合約作為新生事物,熟悉智能合約的開發(fā)人員不多,受限于程序員的安全意識(shí)和代碼編寫能力,可能在開發(fā)時(shí)無法意識(shí)到自己造成了安全隱患,極有可能給智能合約帶來相當(dāng)大程度的安全風(fēng)險(xiǎn),智能合約的代碼可靠性難以保證。
此外,智能合約還是多方業(yè)務(wù)的交互規(guī)則,智能合約的安全不僅要考忠代碼編寫時(shí)防止整數(shù)溢出等漏洞,且需要先進(jìn)行智能合約協(xié)議安全性分析,防止業(yè)務(wù)邏輯漏洞的出現(xiàn)。如何保證智能合約的安全是區(qū)塊鏈安全面臨的一大挑戰(zhàn)。
4.3 隱私安全
區(qū)塊鏈?zhǔn)且环N分布式賬本,意味著數(shù)據(jù)在網(wǎng)絡(luò)上的所有參與方之間共享。一方面,這會(huì)對(duì)許多參與節(jié)點(diǎn)鏈的節(jié)點(diǎn)的可用性產(chǎn)生積極影響,使其更加健壯和有彈性。另一方面,可能會(huì)對(duì)機(jī)密性產(chǎn)生負(fù)面影響。
隱私問題主要包括,保護(hù)匿名性和區(qū)塊鏈中內(nèi)容的機(jī)密性。區(qū)塊鏈最初的設(shè)計(jì)具備一定的匿 名性,但隨著技術(shù)的發(fā)展,也出現(xiàn)了一些追蹤技術(shù)。交易追蹤技術(shù)通過追蹤交易在網(wǎng)絡(luò)中的傳播路徑,最終發(fā)現(xiàn)交易的始發(fā)節(jié)點(diǎn),一旦將交易與始發(fā)節(jié)點(diǎn)的IP地址關(guān)聯(lián),就可以將交易中的匿名賬號(hào)和用戶身份關(guān)聯(lián),從而破壞了區(qū)塊鏈的匿名性。該技術(shù)有助于識(shí)別惡意交易者的身份信息,分析數(shù)字貨幣的流向增強(qiáng)監(jiān)管,但如果被攻擊者使用則會(huì)破壞使用區(qū)塊鏈的公司和組織的業(yè)務(wù)隱秘性,對(duì)公司和組織的利益造成損害。
區(qū)塊鏈的隱私安全一方面要 加密交易的內(nèi)容,不能讓人看到另一方面,需要驗(yàn)證交易的正確性,不能都加密。這兩者本身存在矛盾,也是。隱私保護(hù)技術(shù)上的挑戰(zhàn)。一般采用同態(tài)加密、零知識(shí)證明等前沿技術(shù)進(jìn)行隱私保護(hù),這些技術(shù)需要進(jìn)行一系列的運(yùn)算,勢(shì)必會(huì)影響系統(tǒng)性能。隱私保護(hù)技術(shù)在保證用戶隱私情況下同時(shí)兼顧系統(tǒng)性能,是隱私保護(hù)技術(shù)面臨的一大挑戰(zhàn)。
評(píng)論
查看更多