




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章區(qū)塊鏈安全主講:XXX輔導(dǎo):XXX課程目錄05.本章小結(jié)01.背景03.區(qū)塊鏈安全威脅02.區(qū)塊鏈安全概述04.區(qū)塊鏈安全技術(shù)課程目錄01.區(qū)塊鏈安全概述03.區(qū)塊鏈安全技術(shù)02.區(qū)塊鏈安全威脅04.本章小結(jié)05.思考與練習(xí)1區(qū)塊鏈安全概述一區(qū)塊鏈安全概述區(qū)塊鏈?zhǔn)且员忍貛艦榇淼谋姸鄶?shù)字貨幣方案的底層核心技術(shù)。在區(qū)塊鏈中,哈希函數(shù)、Merkle樹(shù)、工作量證明(Proofofwork,PoW)、公鑰加密、數(shù)字簽名和零知識(shí)證明等成熟的技術(shù)被創(chuàng)新性的重組,從而構(gòu)成了一種全新的分布式基礎(chǔ)架構(gòu)和計(jì)算范式,其應(yīng)用已從最初的數(shù)字貨幣延伸至金融、物聯(lián)網(wǎng)、大數(shù)據(jù)等多個(gè)領(lǐng)域,引起了產(chǎn)業(yè)界和政府的廣泛關(guān)注。隨著理論研究的深入,區(qū)塊鏈展現(xiàn)出蓬勃生命力的同時(shí),自身的安全性問(wèn)題也逐漸凸顯。針對(duì)基于區(qū)塊鏈的金融資產(chǎn)應(yīng)用的安全攻擊也呈現(xiàn)高發(fā)態(tài)勢(shì);各大數(shù)字貨幣交易平臺(tái)被盜事件頻發(fā)、智能合約漏洞凸顯;各國(guó)犯罪分子開(kāi)始利用區(qū)塊鏈匿名性實(shí)施洗錢(qián)、非法買(mǎi)賣(mài)等犯罪活動(dòng)。這些安全事件引發(fā)了公眾對(duì)區(qū)塊鏈安全性的質(zhì)疑和對(duì)其發(fā)展前景的憂(yōu)慮。綜上,區(qū)塊鏈應(yīng)用的蓬勃有序發(fā)展需要對(duì)區(qū)塊鏈中的安全問(wèn)題的系統(tǒng)研究保駕護(hù)航。一區(qū)塊鏈安全概述1.區(qū)塊鏈面臨的安全威脅區(qū)塊鏈技術(shù)因其獨(dú)特的多中心、抗偽造、防篡改、可追溯等技術(shù)特點(diǎn)而面臨安全和隱私方面的技術(shù)挑戰(zhàn)。首先,區(qū)塊鏈面臨理論模型與實(shí)際網(wǎng)絡(luò)狀況相差甚遠(yuǎn)的安全性分析的挑戰(zhàn)。
本質(zhì)上,無(wú)中心節(jié)點(diǎn)的區(qū)塊鏈的安全性依賴(lài)于大量的數(shù)據(jù)冗余,即雖然攻擊者有能力控制某節(jié)點(diǎn)進(jìn)而偽造、篡改、刪除該節(jié)點(diǎn)的有效數(shù)據(jù),但要同時(shí)對(duì)網(wǎng)絡(luò)中眾多節(jié)點(diǎn)實(shí)施攻擊是十分困難的。然而,在實(shí)際區(qū)塊鏈網(wǎng)絡(luò)中,由于各節(jié)點(diǎn)具備的安全防護(hù)等級(jí)參差不齊,攻擊者可以利用網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),僅憑少量資源即可成功實(shí)施小范圍攻擊,破壞系統(tǒng)的安全性與穩(wěn)定性。其次,區(qū)塊鏈結(jié)構(gòu)復(fù)雜,缺乏系統(tǒng)級(jí)安全評(píng)估手段。區(qū)塊鏈技術(shù)發(fā)展尚未成熟,它所包含的共識(shí)算法、激勵(lì)機(jī)制、智能合約等關(guān)鍵環(huán)節(jié)的安全性尚待評(píng)估,也缺乏權(quán)威的代碼評(píng)估機(jī)制以檢測(cè)系統(tǒng)漏洞。區(qū)塊鏈建立在對(duì)等網(wǎng)絡(luò)(Peertopeer,P2P)中,與客戶(hù)端/服務(wù)器(Client/Sever,C/S)網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)不同,傳統(tǒng)的防火墻、入侵檢測(cè)等網(wǎng)絡(luò)安全技術(shù)不能完全適用。一區(qū)塊鏈安全概述1.區(qū)塊鏈面臨的安全威脅另外,計(jì)算技術(shù)的發(fā)展為區(qū)塊鏈安全性帶來(lái)威脅。隨著量子計(jì)算的發(fā)展,區(qū)塊鏈底層依賴(lài)的哈希函數(shù)、公鑰加密算法、數(shù)字簽名、零知識(shí)證明等技術(shù)的安全性也將受到影響。最后,完全去中心的匿名區(qū)塊鏈系統(tǒng)缺乏有效的監(jiān)管手段,當(dāng)攻擊者對(duì)系統(tǒng)安全性造成威脅、非法用戶(hù)利用區(qū)塊鏈實(shí)施違法行為時(shí),系統(tǒng)無(wú)法對(duì)攻擊者和非法用戶(hù)進(jìn)行追責(zé)。一旦攻擊成功,由于區(qū)塊鏈的不可篡改性,非法交易無(wú)法撤回,將給用戶(hù)造成不可逆轉(zhuǎn)的經(jīng)濟(jì)損失。匿名的區(qū)塊鏈平臺(tái)也將成為犯罪行為滋生、不良內(nèi)容傳播的溫巢。一區(qū)塊鏈安全概述2.區(qū)塊鏈的安全目標(biāo)根據(jù)網(wǎng)絡(luò)系統(tǒng)的安全需求并結(jié)合區(qū)塊鏈自身技術(shù)特點(diǎn),區(qū)塊鏈系統(tǒng)的基本安全目標(biāo)可分為數(shù)據(jù)安全、共識(shí)安全、隱私保護(hù)、智能合約安全和內(nèi)容安全,各安全目標(biāo)之間的關(guān)系如下圖所示。這些安全目標(biāo)大多需要通過(guò)使用密碼學(xué)和網(wǎng)絡(luò)安全技術(shù)等手段來(lái)實(shí)現(xiàn)。其中,數(shù)據(jù)安全是區(qū)塊鏈的首要安全目標(biāo)。共識(shí)安全、智能合約安全、隱私保護(hù)和內(nèi)容安全等安全目標(biāo)與數(shù)據(jù)安全聯(lián)系緊密,是數(shù)據(jù)安全目標(biāo)在區(qū)塊鏈各層級(jí)中的具體化,也是區(qū)塊鏈系統(tǒng)設(shè)計(jì)時(shí)需要特別考慮的安全要素。一區(qū)塊鏈安全概述2.1數(shù)據(jù)安全區(qū)塊鏈作為一種去中心化的存儲(chǔ)系統(tǒng),需要存儲(chǔ)包括交易、用戶(hù)信息、智能合約代碼和執(zhí)行中間狀態(tài)等海量數(shù)據(jù),這些數(shù)據(jù)至關(guān)重要,是區(qū)塊鏈安全防護(hù)的首要實(shí)體,因此數(shù)據(jù)安全是區(qū)塊鏈的基本安全目標(biāo)。這里使用CIA信息安全三元組保密性(Confidentiality)、完整性(Integrity)和可用性(Availability)來(lái)定義區(qū)塊鏈的數(shù)據(jù)安全。其中,保密性規(guī)定了是否允許用戶(hù)獲取數(shù)據(jù),保證信息不能被未授權(quán)用戶(hù)知曉和使用,進(jìn)而引申出隱私保護(hù)性質(zhì)。為滿(mǎn)足保密性要求,區(qū)塊鏈系統(tǒng)需要設(shè)置相應(yīng)的認(rèn)證規(guī)則、訪(fǎng)問(wèn)控制和審計(jì)機(jī)制。認(rèn)證規(guī)則規(guī)定了每個(gè)節(jié)點(diǎn)加入?yún)^(qū)塊鏈的方式和有效的身份識(shí)別方式,是實(shí)現(xiàn)訪(fǎng)問(wèn)控制的基礎(chǔ);訪(fǎng)問(wèn)控制規(guī)定了訪(fǎng)問(wèn)控制的技術(shù)方法和每個(gè)用戶(hù)的訪(fǎng)問(wèn)權(quán)限。在公有區(qū)塊鏈中,如何通過(guò)去中心化方式實(shí)現(xiàn)有效的訪(fǎng)問(wèn)控制尤為重要。審計(jì)監(jiān)管是指區(qū)塊鏈能夠提供有效的安全事件監(jiān)測(cè)、追蹤、分析、追責(zé)等一整套監(jiān)管方案。一區(qū)塊鏈安全概述2.1數(shù)據(jù)安全完整性是指區(qū)塊鏈中的任何數(shù)據(jù)都不能被實(shí)施偽造、修改、刪除等非法操作。具體來(lái)說(shuō),用戶(hù)發(fā)布的交易信息不可篡改和偽造;礦工挖礦成功生成區(qū)塊獲得全網(wǎng)共識(shí)后不可篡改和偽造;智能合約的狀態(tài)變量、中間結(jié)果和最終輸出不可篡改和偽造;區(qū)塊鏈系統(tǒng)中一切行為不可抵賴(lài),如攻擊者無(wú)法抵賴(lài)自己的雙重支付(Doublespending)攻擊行為。完整性在交易等底層數(shù)據(jù)層面上往往需要數(shù)字簽名、哈希函數(shù)等密碼組件支持。在共識(shí)層面上,數(shù)據(jù)完整性的實(shí)現(xiàn)則更加依賴(lài)共識(shí)安全。而可用性則是指數(shù)據(jù)可以在任何時(shí)間被有權(quán)限的用戶(hù)訪(fǎng)問(wèn)和使用。區(qū)塊鏈中的可用性包括四個(gè)方面。首先,區(qū)塊鏈在遭受攻擊時(shí)仍然能夠繼續(xù)提供可靠服務(wù),這需要依賴(lài)支持容錯(cuò)的共識(shí)機(jī)制和分布式入侵容忍等技術(shù)實(shí)現(xiàn);其次,當(dāng)區(qū)塊鏈?zhǔn)艿焦魧?dǎo)致部分功能受損時(shí),其具備短時(shí)間內(nèi)修復(fù)和重構(gòu)的能力,這需要依賴(lài)網(wǎng)絡(luò)的可信重構(gòu)等技術(shù)實(shí)現(xiàn);另外,區(qū)塊鏈可以提供無(wú)差別服務(wù),即新加入網(wǎng)絡(luò)的節(jié)點(diǎn)依舊可以通過(guò)有效方式獲取正確的區(qū)塊鏈數(shù)據(jù),保證新節(jié)點(diǎn)的數(shù)據(jù)安全;最后,區(qū)塊鏈網(wǎng)絡(luò)可以在有限時(shí)間內(nèi)響應(yīng)用戶(hù)的訪(fǎng)問(wèn)數(shù)據(jù)請(qǐng)求,這進(jìn)一步可引申出可擴(kuò)展性的含義。可擴(kuò)展性要求區(qū)塊鏈系統(tǒng)即使在網(wǎng)絡(luò)節(jié)點(diǎn)規(guī)模龐大或者通信量激增的情況下,仍能提供穩(wěn)定的服務(wù)。一區(qū)塊鏈安全概述2.2共識(shí)安全共識(shí)機(jī)制是區(qū)塊鏈的核心,共識(shí)安全對(duì)區(qū)塊鏈的數(shù)據(jù)安全起到重要的支撐作用,一般采用比特幣骨干協(xié)議中定義的一致性(Consistency)和活性(Liveness)兩個(gè)安全屬性來(lái)衡量和評(píng)估區(qū)塊鏈的共識(shí)安全。共識(shí)機(jī)制的一致性要求任何已經(jīng)被記錄在區(qū)塊鏈上并達(dá)成共識(shí)的交易都無(wú)法更改,即一旦網(wǎng)絡(luò)中節(jié)點(diǎn)在一條區(qū)塊鏈上達(dá)成共識(shí),那么任意攻擊者都很難通過(guò)有效手段產(chǎn)生一條區(qū)塊鏈分叉,使得網(wǎng)絡(luò)中的節(jié)點(diǎn)拋棄原區(qū)塊鏈,在新區(qū)塊鏈分叉上達(dá)成共識(shí)。一致性是共識(shí)機(jī)制最重要的安全目標(biāo)。根據(jù)共識(shí)機(jī)制在達(dá)成共識(shí)的過(guò)程中是否出現(xiàn)短暫分叉,一致性又可分為弱一致性和強(qiáng)一致性。一些情況下,節(jié)點(diǎn)可能會(huì)無(wú)法立即在兩個(gè)區(qū)塊鏈分叉中做出選擇,從而形成了左右搖擺的情況,因此在達(dá)成共識(shí)的過(guò)程中可能出現(xiàn)短暫分叉,考慮這一類(lèi)情況的共識(shí)機(jī)制被稱(chēng)為弱一致性。強(qiáng)一致性是指網(wǎng)絡(luò)中新區(qū)塊一旦生成,網(wǎng)絡(luò)節(jié)點(diǎn)即可判斷是否對(duì)它達(dá)成共識(shí),不會(huì)出現(xiàn)階段性分叉。在共識(shí)機(jī)制中,活性要求誠(chéng)實(shí)節(jié)點(diǎn)提交的合法數(shù)據(jù)終將由全網(wǎng)節(jié)點(diǎn)達(dá)成共識(shí)并被記錄在區(qū)塊鏈上。合法數(shù)據(jù)包括誠(chéng)實(shí)節(jié)點(diǎn)提交的合法交易、正確執(zhí)行的智能合約中間狀態(tài)變量、結(jié)果等。活性保證了誠(chéng)實(shí)節(jié)點(diǎn)能夠抵抗拒絕服務(wù)攻擊,維護(hù)區(qū)塊鏈持續(xù)可靠運(yùn)行。一區(qū)塊鏈安全概述2.3隱私保護(hù)隱私保護(hù)是對(duì)用戶(hù)身份信息等用戶(hù)不愿公開(kāi)的敏感信息的保護(hù)。在區(qū)塊鏈中,隱私保護(hù)主要針對(duì)用戶(hù)身份信息和交易信息兩部分內(nèi)容。因此,區(qū)塊鏈的隱私保護(hù)可劃分為身份隱私保護(hù)和交易隱私保護(hù)。其中,區(qū)塊鏈中的身份隱私保護(hù)要求用戶(hù)的真實(shí)身份、物理地址、IP地址等唯一標(biāo)識(shí)該用戶(hù)的信息與區(qū)塊鏈上的用戶(hù)公鑰、地址等公開(kāi)信息之間是不關(guān)聯(lián)的,同時(shí)任何未授權(quán)節(jié)點(diǎn)僅依靠區(qū)塊鏈上公開(kāi)的數(shù)據(jù)無(wú)法獲取有關(guān)用戶(hù)身份的任何信息,也不能通過(guò)網(wǎng)絡(luò)監(jiān)聽(tīng)、流量分析等網(wǎng)絡(luò)技術(shù)手段對(duì)用戶(hù)交易和身份進(jìn)行追蹤。交易隱私保護(hù)要求交易本身的數(shù)據(jù)信息對(duì)非授權(quán)節(jié)點(diǎn)匿名。任何未授權(quán)節(jié)點(diǎn)無(wú)法通過(guò)有效的技術(shù)手段獲取交易相關(guān)的知識(shí)。在一些需要高隱私保護(hù)強(qiáng)度的區(qū)塊鏈中,還要求割裂交易與交易之間的關(guān)聯(lián)性,即非授權(quán)節(jié)點(diǎn)無(wú)法有效推斷兩個(gè)交易是否具有前后連續(xù)性、是否屬于同一用戶(hù)等關(guān)聯(lián)關(guān)系。其中,交易信息通常是指交易金額、交易的發(fā)送方公鑰、接收方地址以及交易的購(gòu)買(mǎi)內(nèi)容等信息。一區(qū)塊鏈安全概述2.4智能合約安全從智能合約全生命周期流程來(lái)看,智能合約安全可以被劃分為編寫(xiě)安全和運(yùn)行安全兩部分。其中智能合約編寫(xiě)安全側(cè)重智能合約的文本安全和代碼安全兩方面。文本安全是實(shí)現(xiàn)智能合約穩(wěn)定運(yùn)行的第一步,智能合約開(kāi)發(fā)人員在編寫(xiě)智能合約之前,需要根據(jù)實(shí)際功能設(shè)計(jì)完善的合約文本,避免由合約文本錯(cuò)誤導(dǎo)致智能合約執(zhí)行異常甚至出現(xiàn)死鎖等情況。而代碼安全要求智能合約開(kāi)發(fā)人員使用安全成熟的語(yǔ)言,嚴(yán)格按照合約文本進(jìn)行編寫(xiě),確保合約代碼與合約文本的一致性,且代碼編譯后沒(méi)有漏洞。一區(qū)塊鏈安全概述2.4智能合約安全智能合約運(yùn)行安全涉及智能合約在實(shí)際運(yùn)行過(guò)程中的安全保護(hù)機(jī)制,是智能合約在不可信的區(qū)塊鏈環(huán)境中安全運(yùn)行的重要目標(biāo)。運(yùn)行安全要求智能合約在執(zhí)行過(guò)程中一旦出現(xiàn)漏洞甚至被攻擊,不會(huì)對(duì)節(jié)點(diǎn)本地系統(tǒng)設(shè)備造成影響,也不會(huì)使調(diào)用該合約的其他合約或程序執(zhí)行異常。通常可以從模塊化和隔離運(yùn)行兩方面考慮智能合約的運(yùn)行安全。模塊化要求智能合約標(biāo)準(zhǔn)化管理,具有高內(nèi)聚、低耦合、可移植的特點(diǎn),可通過(guò)接口實(shí)現(xiàn)智能合約的安全調(diào)用,從而保證遭受攻擊后的異常結(jié)果并不會(huì)通過(guò)合約調(diào)用的方式繼續(xù)蔓延,保證了智能合約的可用性;隔離運(yùn)行要求智能合約在虛擬機(jī)等隔離環(huán)境中運(yùn)行,不能直接運(yùn)行在參與區(qū)塊鏈的節(jié)點(diǎn)本地系統(tǒng)上,防止運(yùn)行智能合約的本地操作系統(tǒng)遭受攻擊。一區(qū)塊鏈安全概述2.5內(nèi)容安全
內(nèi)容安全是在數(shù)據(jù)安全的基礎(chǔ)上衍生出來(lái)的應(yīng)用層安全屬性,要求區(qū)塊鏈上傳播和存儲(chǔ)的數(shù)據(jù)內(nèi)容符合道德規(guī)范和法律要求,限制不良或非法內(nèi)容在區(qū)塊鏈網(wǎng)絡(luò)中傳播,保證區(qū)塊鏈網(wǎng)絡(luò)中信息的純凈度。內(nèi)容安全的保障重點(diǎn)是加強(qiáng)區(qū)塊鏈中信息在傳播和存儲(chǔ)過(guò)程中的監(jiān)控和管理。
由于區(qū)塊鏈具有不可篡改的特點(diǎn),一旦非法內(nèi)容被記錄在區(qū)塊鏈上,將很難被修改或撤銷(xiāo),也將影響公眾和政府對(duì)區(qū)塊鏈應(yīng)用的態(tài)度,這就需要在區(qū)塊鏈應(yīng)用生態(tài)中引入網(wǎng)絡(luò)監(jiān)測(cè)、信息過(guò)濾等技術(shù),保證區(qū)塊鏈的內(nèi)容安全。例如,在基于區(qū)塊鏈的銀行系統(tǒng)中,需要設(shè)置特定的信息內(nèi)容分析和智能化處理機(jī)制來(lái)實(shí)現(xiàn)了解你的客戶(hù)(Knowyourcustomer,KYC)和反洗錢(qián)(Antimoneylaundering,AML)等內(nèi)容監(jiān)管機(jī)制。此外,內(nèi)容安全還需要設(shè)置有效的監(jiān)管機(jī)制對(duì)已經(jīng)記錄在區(qū)塊鏈中的非法內(nèi)容進(jìn)行撤銷(xiāo)、刪除等操作,維護(hù)區(qū)塊鏈網(wǎng)絡(luò)健康發(fā)展。2區(qū)塊鏈安全威脅二區(qū)塊鏈安全威脅
作為一種多技術(shù)融合的集成創(chuàng)新,區(qū)塊鏈技術(shù)因其提供的獨(dú)特的安全特性而被廣泛應(yīng)用在金融、物聯(lián)網(wǎng)等領(lǐng)域。然而,區(qū)塊鏈技術(shù)本身仍然存在著許多安全缺憾,區(qū)塊鏈系統(tǒng)運(yùn)行依然面臨著諸多安全威脅。為能更加清晰的闡述區(qū)塊鏈系統(tǒng)常見(jiàn)的安全威脅,本節(jié)將依舊采用分層表述的形式,即仍然將區(qū)塊鏈系統(tǒng)架構(gòu)分為6層,并分別在每層詳細(xì)講解該層遭遇的常見(jiàn)安全威脅。二區(qū)塊鏈安全威脅1.數(shù)據(jù)層安全威脅區(qū)塊鏈數(shù)據(jù)層不僅封裝了底層數(shù)據(jù)區(qū)塊的鏈?zhǔn)浇Y(jié)構(gòu),這是整個(gè)區(qū)塊鏈技術(shù)中最底層的數(shù)據(jù)機(jī)構(gòu),而且引入了哈希函數(shù)、相關(guān)的非對(duì)稱(chēng)公私鑰數(shù)據(jù)加密技術(shù)和時(shí)間戳等技術(shù)。這也導(dǎo)致了針對(duì)該層的攻擊方式繁多,現(xiàn)將這些攻擊分類(lèi)如下。1.1針對(duì)密碼算法的攻擊區(qū)塊鏈技術(shù)本身采用了密碼學(xué)的很多機(jī)制,例如非對(duì)稱(chēng)加密、哈希算法等,例如比特幣采用SHA256、RIPEMD160哈希算法和橢圓曲線(xiàn)密碼學(xué)算法,以太坊采用Keccak256哈希算法和橢圓曲線(xiàn)密碼學(xué)算法。這些密碼學(xué)算法目前來(lái)講是相對(duì)安全的,然而,隨著數(shù)學(xué)、密碼學(xué)和計(jì)算技術(shù)的發(fā)展,這些算法面臨著被破解的可能性。針對(duì)密碼算法的攻擊主要有以下幾種方式:二區(qū)塊鏈安全威脅1.1針對(duì)密碼算法的攻擊①窮舉攻擊所有哈希函數(shù)都會(huì)受到窮舉攻擊的影響,影響程度與哈希函數(shù)的輸出長(zhǎng)度有關(guān)。窮舉攻擊中最典型的方式是基于生日悖論的“生日攻擊”,生日悖論利用了概率論中生日問(wèn)題的數(shù)學(xué)原理,常被應(yīng)用于設(shè)計(jì)密碼學(xué)攻擊方法。②碰撞攻擊碰撞攻擊指通過(guò)尋找哈希函數(shù)構(gòu)造或工程實(shí)現(xiàn)的弱點(diǎn),抵消其強(qiáng)抗碰撞性的特性,使散列函數(shù)原本要在相當(dāng)長(zhǎng)一段時(shí)間才能尋找到兩個(gè)內(nèi)容不同但哈希值相同的數(shù)據(jù)的特性被弱化,攻擊者能在較短的時(shí)間能尋找到內(nèi)容不同但哈希值相同的兩個(gè)數(shù)據(jù),以此來(lái)破解加密算法。目前,MD5和SHA1摘要算法都已經(jīng)被攻破。二區(qū)塊鏈安全威脅1.1針對(duì)密碼算法的攻擊③長(zhǎng)度擴(kuò)展攻擊目前已知基于Merkle-Damgard構(gòu)造的哈希算法都會(huì)遭受長(zhǎng)度擴(kuò)展攻擊,如MD4,MD5,RIPEMD160,SHA-0,SHA-1,SHA-256,SHA-512等。其原理是通過(guò)算法弱點(diǎn),在獲取輸入消息后,利用其轉(zhuǎn)換函數(shù)的內(nèi)部狀態(tài);當(dāng)所有輸入均處理完畢后,由函數(shù)內(nèi)部狀態(tài)生成用于輸出的散列摘要。因而存在著從散列摘要重新構(gòu)建內(nèi)部狀態(tài)、并進(jìn)一步用于處理新數(shù)據(jù)(攻擊者偽造數(shù)據(jù))的可能性。如是,攻擊者得以擴(kuò)充消息的長(zhǎng)度,并為新的偽造消息計(jì)算出合法的散列摘要。④后門(mén)攻擊后門(mén)攻擊主要針對(duì)開(kāi)源加密算法存在的后門(mén)漏洞。在實(shí)際應(yīng)用中,開(kāi)發(fā)者可能選擇開(kāi)源的代碼實(shí)現(xiàn)加密算法,如果這些開(kāi)源算法代碼中被植入后門(mén),攻擊者可以輕易進(jìn)行攻擊。如在RSA算法中安插后門(mén),攻擊者能直接通過(guò)公鑰算出私鑰。二區(qū)塊鏈安全威脅1.1針對(duì)密碼算法的攻擊⑤量子攻擊目前幾乎所有的加密算法的安全強(qiáng)度都取決于算法中秘鑰被窮舉的時(shí)間復(fù)雜度,因此現(xiàn)在密碼學(xué)算法依然安全的主要原因是沒(méi)有任何方式能短時(shí)間計(jì)算出復(fù)雜的數(shù)學(xué)難題。總所周知,量子計(jì)算機(jī)擁有傳統(tǒng)計(jì)算機(jī)無(wú)可比擬的算力,可以將秘鑰窮舉的時(shí)間復(fù)雜度大大降低。隨著量子計(jì)算技術(shù)的飛速發(fā)展,大量子比特?cái)?shù)的量子計(jì)算機(jī)、量子芯片、量子計(jì)算服務(wù)系統(tǒng)等相繼問(wèn)世,可在秒級(jí)時(shí)間內(nèi)破解非對(duì)稱(chēng)密碼算法中的大數(shù)因子分解問(wèn)題(其破解擁有1024位密鑰的RSA算法只需數(shù)秒),這正在成為威脅區(qū)塊鏈數(shù)據(jù)驗(yàn)證機(jī)制的典型攻擊手段之一。⑥算法實(shí)現(xiàn)漏洞攻擊區(qū)塊鏈系統(tǒng)中密碼算法需要編程實(shí)現(xiàn),在代碼實(shí)現(xiàn)方面也可能存在缺陷和漏洞。ECC、RSA、哈希等復(fù)雜加密算法本身以及在算法的工程實(shí)現(xiàn)過(guò)程中都可能存在安全漏洞,進(jìn)而危及整個(gè)區(qū)塊鏈驗(yàn)證機(jī)制的安全性。例如,2017年7月,MIT研究者發(fā)現(xiàn)IOTA發(fā)明的加密哈希功能函數(shù)Curl中存在嚴(yán)重的漏洞(哈希碰撞),因此IOTA的數(shù)字簽名及PoW安全性均無(wú)法保障,之后IOTA團(tuán)隊(duì)不得不采用SHA-3替代掉備受質(zhì)疑的Curl哈希算法。二區(qū)塊鏈安全威脅1.2針對(duì)區(qū)塊鏈數(shù)據(jù)的攻擊區(qū)塊數(shù)據(jù)是指分布在區(qū)塊鏈多個(gè)節(jié)點(diǎn)上的鏈?zhǔn)浇Y(jié)構(gòu)化數(shù)據(jù);節(jié)點(diǎn)之間相互配合將數(shù)據(jù)記錄在區(qū)塊中,各個(gè)節(jié)點(diǎn)之間同步完整的區(qū)塊數(shù)據(jù)且每個(gè)節(jié)點(diǎn)都有自己的一份區(qū)塊數(shù)據(jù);單一或少部分的節(jié)點(diǎn)的區(qū)塊數(shù)據(jù)自行或被篡改,都無(wú)法影響整個(gè)區(qū)塊鏈的運(yùn)行。針對(duì)區(qū)塊數(shù)據(jù)的攻擊方式總結(jié)如下所示:惡意信息攻擊
攻擊者在區(qū)塊鏈中寫(xiě)入惡意信息,例如惡意代碼、反動(dòng)言論、色情信息等,借助區(qū)塊鏈數(shù)據(jù)不可刪除的特性,信息被寫(xiě)入?yún)^(qū)塊鏈后很難刪除。二區(qū)塊鏈安全威脅1.2針對(duì)區(qū)塊鏈數(shù)據(jù)的攻擊②資源濫用攻擊當(dāng)攻擊者向區(qū)塊鏈系統(tǒng)注入大量無(wú)用信息時(shí),區(qū)塊數(shù)據(jù)可能發(fā)生爆炸式增長(zhǎng),此時(shí)可能導(dǎo)致節(jié)點(diǎn)無(wú)法容納又或者使區(qū)塊鏈運(yùn)轉(zhuǎn)緩慢,從而使穩(wěn)定運(yùn)行的節(jié)點(diǎn)越來(lái)越少,節(jié)點(diǎn)越少,則越趨于中心化,引發(fā)區(qū)塊鏈危機(jī)。目前,已有研究發(fā)現(xiàn)了該類(lèi)型攻擊,并且開(kāi)源了POC驗(yàn)證代碼。該類(lèi)攻擊在比特幣等區(qū)塊鏈系統(tǒng)中也被稱(chēng)為粉塵攻擊。③交易聚類(lèi)分析攻擊盡管比特幣等區(qū)塊鏈系統(tǒng)具備一定的隱私保護(hù)能力,但實(shí)際上仍然可以通過(guò)交易聚類(lèi)分析攻擊的方式來(lái)發(fā)現(xiàn)交易用戶(hù),即利用聚類(lèi)算法分析大量的交易數(shù)據(jù),發(fā)現(xiàn)交易特征來(lái)將不同的交易和地址聯(lián)系起來(lái),從而找到其中的對(duì)應(yīng)關(guān)系。例如,當(dāng)用戶(hù)發(fā)出多個(gè)地址作為輸入的交易時(shí),攻擊者就可能會(huì)發(fā)現(xiàn)這些地址與用戶(hù)的對(duì)應(yīng)關(guān)系。二區(qū)塊鏈安全威脅1.3針對(duì)用戶(hù)數(shù)字錢(qián)包的威脅在基于區(qū)塊鏈的數(shù)字貨幣系統(tǒng)中,用戶(hù)通常會(huì)使用移動(dòng)數(shù)字錢(qián)包等客戶(hù)端軟件來(lái)管理數(shù)字資產(chǎn)及用戶(hù)私鑰,而用戶(hù)的資金安全完全依賴(lài)于私鑰的安全。通常情況下私鑰需要使用容易記憶的助記詞利用數(shù)字錢(qián)包來(lái)生成公私鑰。因此,如果在不安全的環(huán)境中運(yùn)行私鑰,會(huì)增加私鑰的泄露風(fēng)險(xiǎn),給用戶(hù)帶來(lái)不可預(yù)知的損失。針對(duì)用戶(hù)密鑰的攻擊有以下幾種:二區(qū)塊鏈安全威脅1.3針對(duì)用戶(hù)數(shù)字錢(qián)包的威脅在基于區(qū)塊鏈的數(shù)字貨幣系統(tǒng)中,用戶(hù)通常會(huì)使用移動(dòng)數(shù)字錢(qián)包等客戶(hù)端軟件來(lái)管理數(shù)字資產(chǎn)及用戶(hù)私鑰,而用戶(hù)的資金安全完全依賴(lài)于私鑰的安全。通常情況下私鑰需要使用容易記憶的助記詞利用數(shù)字錢(qián)包來(lái)生成公私鑰。因此,如果在不安全的環(huán)境中運(yùn)行私鑰,會(huì)增加私鑰的泄露風(fēng)險(xiǎn),給用戶(hù)帶來(lái)不可預(yù)知的損失。針對(duì)用戶(hù)密鑰的攻擊有以下幾種:二區(qū)塊鏈安全威脅1.3針對(duì)用戶(hù)數(shù)字錢(qián)包的威脅①字典攻擊數(shù)字貨幣系統(tǒng)中用戶(hù)私鑰一旦創(chuàng)建就不能修改,沒(méi)法重置,只要私鑰不丟失,資產(chǎn)就不會(huì)丟失。由于私鑰是一長(zhǎng)串毫無(wú)意義的字符,比較難以記憶,因此才出現(xiàn)了助記詞。助記詞是利用固定算法,將64位的私鑰轉(zhuǎn)換成十多個(gè)常見(jiàn)的英文單詞,單詞由私鑰和固定的算法在固定的詞庫(kù)里選出。助記詞和私鑰是互通的,可以相互轉(zhuǎn)換,它只是私鑰的一種容易記錄的表現(xiàn)形式。另一種私鑰的存儲(chǔ)形式是Keystore,主要在以太坊錢(qián)包App中比較常見(jiàn),是把私鑰通過(guò)錢(qián)包密碼再加密得來(lái)。與助記詞不同,Keystore一般可保存為文本或JSON格式存儲(chǔ)。Keystore需要用錢(qián)包密碼解密后才等同于私鑰,因此需要配合錢(qián)包密碼來(lái)使用導(dǎo)入錢(qián)包。由于助記詞是從固定詞庫(kù)選出,錢(qián)包密碼本身會(huì)被用戶(hù)設(shè)置成常見(jiàn)密碼,因此都易遭受字典攻擊的威脅。二區(qū)塊鏈安全威脅1.3針對(duì)用戶(hù)數(shù)字錢(qián)包的威脅②側(cè)信道攻擊側(cè)信道攻擊(SideChannelAttack)又稱(chēng)側(cè)信道密碼分析,由美國(guó)密碼學(xué)家P.C.Kocher于上世紀(jì)九十年代末期提出,是一種針對(duì)密碼實(shí)現(xiàn)(包括密碼芯片、密碼模塊、密碼系統(tǒng)等)的物理攻擊方法。這種攻擊方法的本質(zhì)上是利用密碼實(shí)現(xiàn)在執(zhí)行密碼相關(guān)操作的過(guò)程中產(chǎn)生的側(cè)信息來(lái)恢復(fù)出密碼實(shí)現(xiàn)中所使用的密鑰。其中,這里的側(cè)信息(SideChannelInformation)指攻擊者通過(guò)主通信信道以外的其他途徑獲取到的關(guān)于密碼實(shí)現(xiàn)運(yùn)行狀態(tài)相關(guān)的信息,典型的側(cè)信息包括密碼實(shí)現(xiàn)運(yùn)行過(guò)程中的能量消耗、電磁輻射、運(yùn)行時(shí)間等信息。實(shí)際上,密碼系統(tǒng)的安全性不僅取決于密碼算法本身的數(shù)學(xué)安全性,更嚴(yán)重依賴(lài)于密碼實(shí)現(xiàn)的物理安全性。側(cè)信道攻擊主要面向密碼實(shí)現(xiàn)的物理安全性,采用能量分析攻擊、電磁分析攻擊、計(jì)時(shí)攻擊等一系列方法對(duì)其實(shí)現(xiàn)安全性進(jìn)行分析。二區(qū)塊鏈安全威脅1.3針對(duì)用戶(hù)數(shù)字錢(qián)包的威脅從實(shí)際攻擊效果上看,側(cè)信道攻擊的攻擊能力遠(yuǎn)遠(yuǎn)強(qiáng)于傳統(tǒng)密碼分析方法,因而也對(duì)密碼實(shí)現(xiàn)的實(shí)際安全性構(gòu)成了巨大的威脅。以窮舉攻擊為例,如果10^13次/s的速度進(jìn)行解密運(yùn)算,破解AES-128需要5.3x10^17年,而針對(duì)無(wú)保護(hù)AES-128的智能卡實(shí)現(xiàn),典型的差分能量攻擊方法能夠在30秒之內(nèi)完全恢復(fù)其主密鑰。由于用戶(hù)數(shù)字錢(qián)包是安裝于特定設(shè)備中,攻擊目標(biāo)容易確定,數(shù)字錢(qián)包啟動(dòng)、運(yùn)行過(guò)程中執(zhí)行的各種操作都可以被監(jiān)聽(tīng),因此也極易遭受側(cè)信道攻擊的威脅。二區(qū)塊鏈安全威脅1.3針對(duì)用戶(hù)數(shù)字錢(qián)包的威脅③后門(mén)攻擊后門(mén)攻擊是互聯(lián)網(wǎng)上比較多的一種攻擊手法,該攻擊方式可以非法地取得用戶(hù)設(shè)備的權(quán)限并對(duì)其進(jìn)行完全的控制。除了可以進(jìn)行文件操作外,同時(shí)也可以進(jìn)行取得密碼等操作。后門(mén)軟件分為服務(wù)器端和用戶(hù)端,當(dāng)黑客進(jìn)行攻擊時(shí),會(huì)使用用戶(hù)端程序登錄上已安裝好服務(wù)器端程序的電腦,后門(mén)服務(wù)器端程序體積較小,一般會(huì)被植入于某些軟件上,可見(jiàn)當(dāng)用戶(hù)數(shù)字錢(qián)包被植入后門(mén)后,用戶(hù)的數(shù)字資產(chǎn)也就不再安全。④單點(diǎn)問(wèn)題在基于區(qū)塊鏈的數(shù)字貨幣系統(tǒng)中,數(shù)字貨幣錢(qián)包的登陸需要使用比用戶(hù)私鑰更易記憶的助記詞,然而由于助記詞一般由10個(gè)以上單詞構(gòu)成,且各個(gè)單詞之間并無(wú)明顯聯(lián)系,單詞順序不能顛倒,因此也并不是特別容易記憶,如果用戶(hù)在某些情況下忘記了助記詞,就相當(dāng)于忘記了自己的私鑰,目前的區(qū)塊鏈技術(shù)私鑰不可找回。因此,這種密鑰單點(diǎn)問(wèn)題也是一種對(duì)數(shù)字錢(qián)包安全的威脅。二區(qū)塊鏈安全威脅2.網(wǎng)絡(luò)層安全威脅
區(qū)塊鏈采用點(diǎn)到點(diǎn)的形式傳播信息,其底層架構(gòu)采用P2P網(wǎng)絡(luò)。P2P網(wǎng)絡(luò)依賴(lài)附近的節(jié)點(diǎn)來(lái)進(jìn)行信息傳輸必須要互相暴露對(duì)方的IP,若網(wǎng)絡(luò)中存在一個(gè)攻擊者,就很容易給其他節(jié)點(diǎn)帶來(lái)安全威脅。2.1針對(duì)網(wǎng)絡(luò)拓?fù)涞墓羧瘴g攻擊
日蝕攻擊是特別針對(duì)點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)的一種網(wǎng)絡(luò)層攻擊類(lèi)型。在對(duì)等式網(wǎng)絡(luò)中,攻擊者可通過(guò)確保受害者節(jié)點(diǎn)不再?gòu)木W(wǎng)絡(luò)的其余部分接收正確的信息,而只接收由攻擊者操縱的信息,從而讓受害者節(jié)點(diǎn)與網(wǎng)絡(luò)上的其他節(jié)點(diǎn)隔離。二區(qū)塊鏈安全威脅2.1針對(duì)網(wǎng)絡(luò)拓?fù)涞墓粼谌瘴g攻擊中,攻擊者不像在女巫攻擊中那樣攻擊整個(gè)網(wǎng)絡(luò),而是通過(guò)控制受害者節(jié)點(diǎn)周?chē)拇蠖鄶?shù)節(jié)點(diǎn)以及控制受害者節(jié)點(diǎn)的連接來(lái)專(zhuān)注于隔離和瞄準(zhǔn)受害者節(jié)點(diǎn),阻止最新的區(qū)塊鏈信息進(jìn)入到受害者節(jié)點(diǎn)中,這種攻擊通常會(huì)導(dǎo)致受害者節(jié)點(diǎn)接收到被操縱的、偽造的區(qū)塊鏈視圖。比特幣和以太坊網(wǎng)絡(luò)均受日食攻擊影響。日蝕攻擊的重大危害性在于這種攻擊可能是其他類(lèi)型攻擊的有用構(gòu)建基礎(chǔ)。例如,一旦日蝕攻擊發(fā)動(dòng)成功,攻擊者可以做的一件壞事就是,通過(guò)遠(yuǎn)低于全網(wǎng)51%的算力發(fā)動(dòng)51%攻擊。二區(qū)塊鏈安全威脅2.1針對(duì)網(wǎng)絡(luò)拓?fù)涞墓簪诟`聽(tīng)攻擊攻擊者可以使用這種攻擊來(lái)讓區(qū)塊鏈中的用戶(hù)標(biāo)識(shí)與IP關(guān)聯(lián)起來(lái),甚至可以追溯到用戶(hù)的物理地址。以比特幣為例,當(dāng)用戶(hù)在比特幣網(wǎng)絡(luò)上執(zhí)行交易時(shí),其比特幣客戶(hù)端通常通過(guò)連接到一組八臺(tái)服務(wù)器來(lái)加入網(wǎng)絡(luò),這個(gè)初始連接集合就是客戶(hù)端的入口節(jié)點(diǎn),每個(gè)用戶(hù)都會(huì)獲得一組唯一的入口節(jié)點(diǎn)。當(dāng)用戶(hù)的錢(qián)包發(fā)送比特幣完成購(gòu)買(mǎi)時(shí),入口節(jié)點(diǎn)將交易轉(zhuǎn)交給比特幣網(wǎng)絡(luò)中的其余節(jié)點(diǎn),研究人員發(fā)現(xiàn),識(shí)別一組入口節(jié)點(diǎn)意味著識(shí)別一個(gè)特定的比特幣客戶(hù)端,以此來(lái)推導(dǎo)出某個(gè)用戶(hù)。此時(shí),攻擊者要做的就是與比特幣服務(wù)器建立多個(gè)連接,連接后,攻擊者必須監(jiān)聽(tīng)客戶(hù)端與服務(wù)端的初始連接,這會(huì)泄露客戶(hù)端的IP地址。隨著交易流經(jīng)網(wǎng)絡(luò),交易數(shù)據(jù)中包含的地址信息將會(huì)與某個(gè)客戶(hù)端的一組入口節(jié)點(diǎn)相關(guān)聯(lián),如果匹配,那么攻擊者就知道這是來(lái)自一個(gè)特定客戶(hù)端的交易。二區(qū)塊鏈安全威脅2.1針對(duì)網(wǎng)絡(luò)拓?fù)涞墓簪跙GP路由劫持攻擊邊界網(wǎng)關(guān)協(xié)議(BGP)是因特網(wǎng)的關(guān)鍵組成部分,用于確定路由路徑。BGP路由劫持,即利用BGP操縱網(wǎng)絡(luò)路由,可以重定向或攔截流量,在區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點(diǎn)的流量一但被接管就會(huì)對(duì)整個(gè)網(wǎng)絡(luò)造成巨大的影響,如破壞共識(shí)機(jī)制和合法交易上鏈等。④分割攻擊攻擊者可以利用BGP劫持來(lái)將區(qū)塊鏈網(wǎng)絡(luò)劃分成兩個(gè)或多個(gè)不相交的網(wǎng)絡(luò),此時(shí)的區(qū)塊鏈會(huì)分叉為兩條或多條并行鏈。攻擊停止后,區(qū)塊鏈會(huì)重新統(tǒng)一為一條鏈,以最長(zhǎng)的鏈為主鏈,其他的鏈將被廢棄,導(dǎo)致其他非主鏈上的交易、獎(jiǎng)勵(lì)等全部無(wú)效。二區(qū)塊鏈安全威脅2.1針對(duì)網(wǎng)絡(luò)拓?fù)涞墓艟唧w來(lái)說(shuō):a)首先,攻擊者發(fā)動(dòng)BGP劫持,將網(wǎng)絡(luò)分割為兩部分,一個(gè)大網(wǎng)絡(luò)、一個(gè)小網(wǎng)絡(luò)。b)在小網(wǎng)絡(luò)中,攻擊者發(fā)布交易賣(mài)出自己全部的加密貨幣,并兌換為法幣。c)經(jīng)過(guò)小網(wǎng)絡(luò)的“全網(wǎng)確認(rèn)”,這筆交易生效,攻擊者獲得等值的法幣。d)攻擊者釋放BGP劫持,大網(wǎng)絡(luò)與小網(wǎng)絡(luò)互通,小網(wǎng)絡(luò)上的一切交易被大網(wǎng)絡(luò)否定,攻擊者的加密貨幣全部回歸到賬戶(hù),而交易得來(lái)的法幣,依然還在攻擊者手中,完成獲利。e)更新延遲攻擊攻擊者可以利用BGP劫持來(lái)延遲目標(biāo)的區(qū)塊更新。由于該攻擊是基于中間人修改目標(biāo)請(qǐng)求區(qū)塊數(shù)據(jù)的,因此攻擊節(jié)點(diǎn)通常很難被發(fā)現(xiàn)。在目標(biāo)請(qǐng)求獲取最新區(qū)塊的時(shí)候,攻擊者可以通過(guò)BGP劫持將目標(biāo)的這一請(qǐng)求修改為獲取舊區(qū)塊的請(qǐng)求,使得目標(biāo)獲得較舊的塊。二區(qū)塊鏈安全威脅2.2針對(duì)P2P節(jié)點(diǎn)攻擊漏洞、蠕蟲(chóng)、木馬、病毒攻擊者在內(nèi)網(wǎng)或者外網(wǎng)利用各種手段譬如漏洞掃描,0day漏洞利用等技術(shù),對(duì)節(jié)點(diǎn)客戶(hù)端進(jìn)行攻擊,攻擊包括對(duì)客戶(hù)端植入蠕蟲(chóng)、木馬、病毒等,此類(lèi)攻擊主要利用客戶(hù)端自身軟件可能存在的安全漏洞,進(jìn)而獲取節(jié)點(diǎn)的控制權(quán)限或者直接癱瘓節(jié)點(diǎn)。拒絕服務(wù)攻擊通過(guò)大流量,或者漏洞的方式攻擊P2P網(wǎng)絡(luò)中的節(jié)點(diǎn),使網(wǎng)絡(luò)中部分節(jié)點(diǎn)網(wǎng)絡(luò)癱瘓,節(jié)點(diǎn)癱瘓意味著鏈中總算力受損,使得其更容易遭受51%攻擊,而目前進(jìn)行拒絕服務(wù)攻擊成本也較低,大量的攻擊工具平臺(tái)可能很容易的獲取。二區(qū)塊鏈安全威脅2.2針對(duì)P2P節(jié)點(diǎn)攻擊③路由攻擊
路由攻擊是指通過(guò)發(fā)送偽造路由信息,產(chǎn)生錯(cuò)誤的路由干擾正常的路由過(guò)程。路由攻擊有兩種攻擊手段,其一是通過(guò)偽造合法的但包含錯(cuò)誤路由信息的路由控制包在合法節(jié)點(diǎn)上產(chǎn)生錯(cuò)誤的路由表項(xiàng),從而增大網(wǎng)絡(luò)傳輸開(kāi)銷(xiāo)、破壞合法路由數(shù)據(jù)、或?qū)⒋罅康牧髁繉?dǎo)向其他節(jié)點(diǎn)以快速消耗節(jié)點(diǎn)資源;還有一種攻擊手段是偽造包含非法包頭字段的包,這種攻擊通常和其他攻擊合并使用。二區(qū)塊鏈安全威脅2.2針對(duì)P2P節(jié)點(diǎn)攻擊④超級(jí)節(jié)點(diǎn)問(wèn)題P2P網(wǎng)絡(luò)一般存在四種拓?fù)浣Y(jié)構(gòu),即中心化拓?fù)洹⑷植际椒墙Y(jié)構(gòu)化拓?fù)洹⑷植际浇Y(jié)構(gòu)化拓?fù)洹敕植际酵負(fù)洹F渲兄行幕負(fù)浜腿植际酵負(fù)涠几饔袃?yōu)劣。為吸取中心化拓?fù)浜腿植际椒墙Y(jié)構(gòu)化拓?fù)涞膬?yōu)點(diǎn),EOS和如今的比特幣使用了半分布式拓?fù)涞木W(wǎng)絡(luò)結(jié)構(gòu)。在這種結(jié)構(gòu)中,選擇性能較高(處理、存儲(chǔ)、帶寬等方面性能)的結(jié)點(diǎn)作為超級(jí)結(jié)點(diǎn)(SuperNodes),在各個(gè)超級(jí)結(jié)點(diǎn)上存儲(chǔ)了系統(tǒng)中其他部分結(jié)點(diǎn)的信息,發(fā)現(xiàn)算法僅在超級(jí)結(jié)點(diǎn)之間轉(zhuǎn)發(fā),超級(jí)結(jié)點(diǎn)再將查詢(xún)請(qǐng)求轉(zhuǎn)發(fā)給適當(dāng)?shù)娜~子結(jié)點(diǎn)。通俗點(diǎn)說(shuō):一個(gè)新的普通節(jié)點(diǎn)加入,先選擇一個(gè)超級(jí)節(jié)點(diǎn)進(jìn)行通信,該超級(jí)節(jié)點(diǎn)再推送其他超級(jí)節(jié)點(diǎn)列表給新加入節(jié)點(diǎn),加入節(jié)點(diǎn)再根據(jù)列表中的超級(jí)節(jié)點(diǎn)狀態(tài)決定選擇哪個(gè)具體的超級(jí)節(jié)點(diǎn)作為父節(jié)點(diǎn)。半分布式結(jié)構(gòu)也是一個(gè)層次式結(jié)構(gòu),超級(jí)結(jié)點(diǎn)之間構(gòu)成一個(gè)高速轉(zhuǎn)發(fā)層,超級(jí)結(jié)點(diǎn)和所負(fù)責(zé)的普通結(jié)點(diǎn)構(gòu)成若干層次。顯然,對(duì)此類(lèi)型拓?fù)涞腜2P網(wǎng)絡(luò)而言,針對(duì)超級(jí)節(jié)點(diǎn)的攻擊將會(huì)對(duì)該網(wǎng)絡(luò)造成一定威脅。二區(qū)塊鏈安全威脅2.3網(wǎng)絡(luò)層其他攻擊①雙重支出攻擊又稱(chēng)雙花問(wèn)題,指的是一個(gè)代幣花費(fèi)在多筆交易中的攻擊,它的實(shí)現(xiàn)方法主要有以下幾種。種族攻擊:接受面對(duì)無(wú)確認(rèn)的交易也能進(jìn)行付款的商家可能會(huì)遭遇此攻擊。欺詐者直接向商家發(fā)送支付給商家的交易,并發(fā)送與該交易沖突的交易,將代幣投入自己到網(wǎng)絡(luò)的其余節(jié)點(diǎn)的交易中去。第二個(gè)沖突的交易很可能會(huì)被開(kāi)采出來(lái),并被區(qū)塊鏈節(jié)點(diǎn)認(rèn)為是真的,于是付款交易作廢。二區(qū)塊鏈安全威脅2.3網(wǎng)絡(luò)層其他攻擊芬尼攻擊:接受無(wú)確認(rèn)的付款的商家可能會(huì)遭遇此攻擊。假設(shè)攻擊者可以偶爾產(chǎn)生數(shù)據(jù)塊,在攻擊者生成的每個(gè)區(qū)塊中都包括從攻擊者控制的地址A到地址B的轉(zhuǎn)移交易。為了欺騙商家,攻擊者他生成一個(gè)塊時(shí)并不會(huì)廣播它。相反,攻擊者打開(kāi)商家的商店網(wǎng)頁(yè),并使用地址A向商家的地址C付款,商家可能會(huì)花費(fèi)幾秒鐘的時(shí)間尋找雙重花費(fèi),然后轉(zhuǎn)讓商品。然而,接著攻擊者就會(huì)廣播其之前產(chǎn)生的區(qū)塊,此時(shí)攻擊者的交易將優(yōu)先于對(duì)商家的交易上鏈,于是付款交易作廢。Vector76攻擊:也被稱(chēng)為“一次確認(rèn)攻擊”,是種族攻擊和芬尼攻擊的組合。這種攻擊要求攻擊者控制兩個(gè)全節(jié)點(diǎn),其中A僅連接到電子錢(qián)包節(jié)點(diǎn),而B(niǎo)與一個(gè)或多個(gè)良好的區(qū)塊鏈節(jié)點(diǎn)連接。攻擊者將同一筆Token進(jìn)行兩筆交易,一筆是發(fā)給攻擊者的另一個(gè)錢(qián)包地址,命名為交易1,且給交易1較高的礦工費(fèi),一筆是發(fā)給商家,命名為交易2并給交易2極低的交易費(fèi),攻擊者暫時(shí)不廣播交易。二區(qū)塊鏈安全威脅2.3網(wǎng)絡(luò)層其他攻擊然后攻擊者開(kāi)始包含交易1后自行挖礦,這條分支命名為分支1.攻擊者挖到包含交易1的區(qū)塊鏈后也不公布,而是同時(shí)在節(jié)點(diǎn)A上發(fā)送交易1,在節(jié)點(diǎn)B上發(fā)送交易2。由于A只連接電子錢(qián)包的節(jié)點(diǎn),而B(niǎo)連接了更多節(jié)點(diǎn),所以交易2是更容易廣播到網(wǎng)絡(luò)中大部分節(jié)點(diǎn)中去的,于是從概率上講,交易2更有可能被認(rèn)定為有效,而交易1則被認(rèn)定無(wú)效。此時(shí),攻擊者立即釋放其正在分支1上挖到的區(qū)塊鏈,這時(shí)這個(gè)接受了一次確認(rèn)支付的錢(qián)包就會(huì)立刻將token支付給攻擊者的賬戶(hù),攻擊者立即將token賣(mài)掉。由于分支2連接更多節(jié)點(diǎn),所有礦工在這個(gè)分支上產(chǎn)生區(qū)塊的速度要快于分支1。于是,若干時(shí)間后,分支1的交易肯定會(huì)被回滾,但由于錢(qián)包支付的token已經(jīng)被攻擊者取款,雙花攻擊成功。
替代歷史攻擊:即使商家等待一些確認(rèn),這種攻擊也有機(jī)會(huì)成功,但風(fēng)險(xiǎn)較高。攻擊者向商家提交支付的交易,同時(shí)私下挖掘其中包含欺詐性雙重支出交易的分支。等待n次確認(rèn)后,商家發(fā)送產(chǎn)品。如果攻擊者此時(shí)碰巧找到n個(gè)以上的區(qū)塊,他就會(huì)釋放他的分支并重新獲得他的資產(chǎn)。二區(qū)塊鏈安全威脅2.3網(wǎng)絡(luò)層其他攻擊②交易延展性攻擊
延展性攻擊者偵聽(tīng)P2P網(wǎng)絡(luò)中的交易,然后根據(jù)ECDSA數(shù)字簽名的數(shù)學(xué)原理,更改交易中的簽名,但不會(huì)使其失效。此攻擊的原理在于,ECDSA算法生成兩個(gè)大整數(shù)r和s并組合起來(lái)作為簽名,可以用來(lái)驗(yàn)證交易。而r和BN-s也同樣可以作為簽名來(lái)驗(yàn)證交易(BN=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141).這樣,攻擊者拿到一個(gè)交易,將其中inputSig的r,s提取出來(lái),使用r,BN-s生成新的inputSig,然后組成新的交易,擁有同樣的input和output,但是不同的TXID。然后廣播到網(wǎng)絡(luò)中形成雙花,這樣原來(lái)的交易就可能有一定的概率不能被確認(rèn),在虛擬貨幣交易的情況下,它可以被用來(lái)進(jìn)行二次存款或雙重提現(xiàn)。二區(qū)塊鏈安全威脅2.3網(wǎng)絡(luò)層其他攻擊③驗(yàn)證繞過(guò)攻擊驗(yàn)證機(jī)制的代碼是區(qū)塊鏈應(yīng)用的核心之一,一旦出現(xiàn)問(wèn)題將直接導(dǎo)致區(qū)塊鏈的數(shù)據(jù)混亂,而且核心代碼的修改與升級(jí)都涉及到區(qū)塊鏈分叉的問(wèn)題,進(jìn)而引起雙花攻擊,所以驗(yàn)證機(jī)制的嚴(yán)謹(jǐn)性就顯得尤為重要。必須要結(jié)合驗(yàn)證機(jī)制代碼的語(yǔ)言特性來(lái)進(jìn)行大量的白盒審計(jì)或是模糊測(cè)試,來(lái)保證驗(yàn)證機(jī)制的不可繞過(guò)。二區(qū)塊鏈安全威脅2.4針對(duì)網(wǎng)絡(luò)層隱私保護(hù)技術(shù)的攻擊Tor網(wǎng)絡(luò)中的時(shí)間攻擊Tor是目前互聯(lián)網(wǎng)中最成功的公共匿名通信服務(wù),屬于重路由低延遲匿名通信網(wǎng)絡(luò)。這意味著,在Tor中發(fā)送者所要傳遞的信息需要經(jīng)由中間節(jié)點(diǎn)轉(zhuǎn)發(fā)和處理,以隱蔽發(fā)送者和信息的關(guān)聯(lián)關(guān)系,從而實(shí)現(xiàn)對(duì)個(gè)人身份和通信內(nèi)容的保護(hù)。時(shí)間攻擊是一種威脅極強(qiáng)的攻擊技術(shù),是匿名通信應(yīng)用面臨的主要挑戰(zhàn)。時(shí)間攻擊的原理是把流的時(shí)域特征作為甄別或者跟蹤網(wǎng)絡(luò)流的標(biāo)準(zhǔn),然后通過(guò)流量分析或者修改流時(shí)域特征的方法來(lái)破壞匿名通信的安全。由于匿名通信中流的內(nèi)容已經(jīng)被加密,時(shí)間攻擊并不試圖發(fā)現(xiàn)網(wǎng)絡(luò)流中消息的內(nèi)容,而是針對(duì)流的時(shí)域元數(shù)據(jù),比如流速率、包到達(dá)時(shí)間、包間時(shí)延等來(lái)進(jìn)行甄別推斷,以此獲得盡可能多的用戶(hù)信息,從而達(dá)到破壞匿名性的目的。時(shí)間攻擊可以用于對(duì)匿名系統(tǒng)的輸入和輸出流集合中的流進(jìn)行關(guān)聯(lián),或者對(duì)流的傳輸路徑進(jìn)行跟蹤、定位。除此之外,主動(dòng)式攻擊還可以用于在已有先驗(yàn)知識(shí)的條件下,對(duì)某條或某些流所對(duì)應(yīng)的用戶(hù)甄別信息進(jìn)行進(jìn)一步的確認(rèn)。二區(qū)塊鏈安全威脅2.4針對(duì)網(wǎng)絡(luò)層隱私保護(hù)技術(shù)的攻擊②Tor網(wǎng)絡(luò)中的通訊流攻擊
作為一種低時(shí)延匿名通信系統(tǒng),為了達(dá)到可接受的通訊質(zhì)量,Tor網(wǎng)絡(luò)不對(duì)數(shù)據(jù)做復(fù)雜的混合、緩存重新排序等技術(shù)操作,這保持了數(shù)據(jù)包的特征,比如包之間的延時(shí)等。因此,網(wǎng)絡(luò)中通信數(shù)據(jù)流的時(shí)間特性能夠被監(jiān)測(cè)。具體來(lái)說(shuō),攻擊者發(fā)送一個(gè)特殊的消息流,監(jiān)測(cè)某一個(gè)中間節(jié)點(diǎn)的通信延遲。根據(jù)這些延遲判斷是否通過(guò)被監(jiān)測(cè)的節(jié)點(diǎn)。根據(jù)研究,對(duì)Tor網(wǎng)絡(luò)進(jìn)行大規(guī)模的流量分析并不一定需要國(guó)家級(jí)的計(jì)算資源,甚至一個(gè)單一的自主系統(tǒng)就能夠監(jiān)控大部分的進(jìn)出Tor節(jié)點(diǎn)的流量。例如,81%的Tor用戶(hù)能夠利用Cisco路由器的默認(rèn)支持的Netflow技術(shù)來(lái)分析識(shí)別身份。NetFlow是一個(gè)用來(lái)采集和監(jiān)控網(wǎng)絡(luò)流量的協(xié)議。通過(guò)分析NetFlow數(shù)據(jù),網(wǎng)絡(luò)管理員能夠了解網(wǎng)絡(luò)流量的源頭和目的地,服務(wù)類(lèi)型以及網(wǎng)絡(luò)堵塞原因等等信息。通過(guò)注入一個(gè)固定模式的TCP連接的流量進(jìn)入Tor網(wǎng)絡(luò),觀察這個(gè)數(shù)據(jù)流從Tor退出節(jié)點(diǎn)的情況,然后再把這個(gè)退出流量與Tor客戶(hù)端進(jìn)行關(guān)聯(lián),再通過(guò)匹配路由器的NetFlow記錄,就可以甄別出客戶(hù)端。二區(qū)塊鏈安全威脅2.4針對(duì)網(wǎng)絡(luò)層隱私保護(hù)技術(shù)的攻擊③對(duì)中心化混幣協(xié)議的攻擊網(wǎng)絡(luò)層還為數(shù)字貨幣領(lǐng)域中的匿名支付提供了混幣技術(shù)支持。混幣技術(shù)是指網(wǎng)絡(luò)中的不同用戶(hù)利用由中心節(jié)點(diǎn)組織或者自發(fā)地形成短暫的混幣網(wǎng)絡(luò)來(lái)發(fā)送交易,以混淆交易的方式保證攻擊者難以根據(jù)混幣后的交易推測(cè)出真實(shí)交易雙方的對(duì)應(yīng)關(guān)系,實(shí)現(xiàn)匿名支付。混幣技術(shù)包括中心化混幣和去中心化混幣兩類(lèi)。中心化混幣由第三方服務(wù)器來(lái)執(zhí)行交易混淆的過(guò)程。用戶(hù)需要將交易代幣發(fā)送到第三方賬戶(hù)上,經(jīng)服務(wù)器多次交易最終發(fā)送給交易接收方。中心化混幣破壞了區(qū)塊鏈的去中心化特點(diǎn),存在第三方設(shè)置后門(mén)、針對(duì)中心的DOS等攻擊方法。為了防止第三方惡意泄露混幣過(guò)程,Mixcoin混幣協(xié)議引入審計(jì)機(jī)制監(jiān)管第三方,之后Mixcoin協(xié)議中進(jìn)一步使用了盲簽名技術(shù)進(jìn)行優(yōu)化,防止第三方泄露混幣過(guò)程。然而,中心化混幣提供的隱私保護(hù)強(qiáng)度與混幣次數(shù)有關(guān),普遍存在混幣成本高、效率低等問(wèn)題。二區(qū)塊鏈安全威脅2.4針對(duì)網(wǎng)絡(luò)層隱私保護(hù)技術(shù)的攻擊④對(duì)去中心化混幣協(xié)議的攻擊為解決中心化混幣協(xié)議中存在著的諸多問(wèn)題,隨后提出了去中心化混幣協(xié)議。去中心化混幣通過(guò)用戶(hù)自發(fā)的將多個(gè)交易混合產(chǎn)生一筆新的交易的方式,對(duì)代幣按原交易進(jìn)行再分配,從而實(shí)現(xiàn)匿名支付。2013年,最早的去中心化混幣方案Coinjoin協(xié)議被提出,之后Coinjoin協(xié)議得到改進(jìn)形成了一種名為CoinShuffle的交易洗牌協(xié)議。2015年,CoinParty混幣協(xié)議被正式提出,它利用密碼學(xué)中安全多方計(jì)算理論,同時(shí)允許部分節(jié)點(diǎn)失效甚至實(shí)施惡意操作,。去中心化混幣技術(shù)規(guī)避了中心化混幣協(xié)議單點(diǎn)失效和成本高等問(wèn)題,操作簡(jiǎn)單,在數(shù)字貨幣領(lǐng)域中有廣泛應(yīng)用。但是去中心化混幣方案中存在惡意滲入攻擊,導(dǎo)致混幣成員惡意泄露混幣過(guò)程的問(wèn)題。同時(shí)去中心化混幣協(xié)議也無(wú)法抵御DoS攻擊。二區(qū)塊鏈安全威脅2.4針對(duì)網(wǎng)絡(luò)層隱私保護(hù)技術(shù)的攻擊⑤粉塵攻擊粉塵攻擊只針對(duì)分層確定性(HierarchicalDeterministic,HD)錢(qián)包用戶(hù)以及UTXO模型的幣種,如BTC、LTC、BCH等。其最早發(fā)生于比特幣網(wǎng)絡(luò)當(dāng)中,所謂粉塵,指的是交易中的交易金額相對(duì)于正常交易而言十分地小,可以視作微不足道的粉塵。通常這些粉塵在余額中不會(huì)被注意到,許多持幣者也很容易忽略這些余額。但是由于比特幣或基于比特幣模型的區(qū)塊鏈系統(tǒng)的賬本模型是采用UTXO模型作為賬戶(hù)資金系統(tǒng),即用戶(hù)的每一筆交易金額,都是通過(guò)消耗之前未消耗的資金來(lái)產(chǎn)生新的資金。別有用意的用戶(hù),就能通過(guò)這種機(jī)制,給大量的賬戶(hù)發(fā)送這些粉塵金額,令交易粉塵化,然后再通過(guò)追蹤這些粉塵交易,關(guān)聯(lián)出該地址的其他關(guān)聯(lián)地址,通過(guò)對(duì)這些關(guān)聯(lián)地址進(jìn)行行為分析,就可以分析一個(gè)地址背后的公司或個(gè)人,破壞比特幣本身的匿名性。除此之外,由于比特幣網(wǎng)絡(luò)區(qū)塊容量大小的限制,大量的粉塵交易會(huì)造成區(qū)塊的擁堵,從而使得交易手續(xù)費(fèi)提升,進(jìn)而產(chǎn)生大量待打包交易,降低系統(tǒng)本身的運(yùn)行效率。二區(qū)塊鏈安全威脅2.4針對(duì)網(wǎng)絡(luò)層隱私保護(hù)技術(shù)的攻擊對(duì)于如何避免粉塵攻擊,可以在構(gòu)造交易的過(guò)程中,根據(jù)交易的類(lèi)型,計(jì)算出交易的最低金額,同時(shí)對(duì)每個(gè)輸出進(jìn)行判斷,如果低于該金額,則不能繼續(xù)構(gòu)造該筆交易。特別的,如果這個(gè)輸出剛好發(fā)生在找零上,且金額對(duì)于你來(lái)說(shuō)不太大,則可以通過(guò)舍棄該部分的粉塵輸出,以充作交易手續(xù)費(fèi)來(lái)避免構(gòu)造出粉塵交易。其次,為了保護(hù)隱私性,建議可以在構(gòu)造交易時(shí)把那些金額極小的UTXO舍棄掉,使用大額的UTXO組成交易。二區(qū)塊鏈安全威脅激勵(lì)層需要解決的主要問(wèn)題是經(jīng)濟(jì)學(xué)上的激勵(lì)不相容問(wèn)題,具體指參與維護(hù)區(qū)塊鏈的礦工不會(huì)實(shí)施危害系統(tǒng)安全性的惡意攻擊,但是會(huì)以自身利益最大化來(lái)指導(dǎo)自己的挖礦策略。這種策略與區(qū)塊鏈整體利益形成沖突,破壞區(qū)塊鏈系統(tǒng)效率和穩(wěn)定性,包括自私挖礦攻擊、Nothingatstake攻擊、扣塊攻擊(Withholdingattack)。當(dāng)然,激勵(lì)層未來(lái)由于激勵(lì)機(jī)制的演進(jìn)等問(wèn)題可能也會(huì)面臨一些攻擊。3.激勵(lì)層安全威脅二區(qū)塊鏈安全威脅在理想情況下,基于PoW的區(qū)塊鏈中節(jié)點(diǎn)能夠獲得的區(qū)塊獎(jiǎng)勵(lì)期望與他所擁有的計(jì)算資源成正比。而在實(shí)際比特幣區(qū)塊生成中,一些節(jié)點(diǎn)可能會(huì)在自己成功完成PoW產(chǎn)生區(qū)塊后,有策略地廣播自己的區(qū)塊,以獲得高于自己所擁有的計(jì)算資源比例的獎(jiǎng)勵(lì)收益,即實(shí)施自私挖礦攻擊。自私挖礦攻擊是一種針對(duì)PoW的攻擊行為,不易檢測(cè)和預(yù)防。理論上,基于PoW和PoS的無(wú)許可區(qū)塊鏈系統(tǒng)都可能遭到自私挖礦攻擊,從而對(duì)共識(shí)機(jī)制的安全性和激勵(lì)機(jī)制的公平性造成嚴(yán)重威脅。3.激勵(lì)層安全威脅3.1自私挖礦攻擊(SelfishMining)二區(qū)塊鏈安全威脅自私挖礦包含多種挖礦策略,最典型的是當(dāng)某PoW區(qū)塊鏈礦工成功生成一個(gè)區(qū)塊后不立即廣播,而是在這個(gè)新區(qū)塊后繼續(xù)挖礦。當(dāng)監(jiān)測(cè)到網(wǎng)絡(luò)中產(chǎn)生一個(gè)新區(qū)塊時(shí),自私挖礦節(jié)點(diǎn)才公開(kāi)自己的區(qū)塊,形成區(qū)塊鏈分叉競(jìng)賽。如果自私挖礦節(jié)點(diǎn)可以搶先產(chǎn)生兩個(gè)連續(xù)的區(qū)塊,不僅可以成功獲得區(qū)塊獎(jiǎng)勵(lì),還能消耗掉另一個(gè)分叉區(qū)塊所包含的工作量。即使自私挖礦節(jié)點(diǎn)沒(méi)能成功產(chǎn)生連續(xù)的兩個(gè)區(qū)塊,仍然可能形成長(zhǎng)度為1的分叉,將網(wǎng)絡(luò)算力進(jìn)行分離,降低網(wǎng)絡(luò)中的有效算力。當(dāng)網(wǎng)絡(luò)中的節(jié)點(diǎn)隨機(jī)選擇區(qū)塊鏈分叉進(jìn)行拓展時(shí),擁有全網(wǎng)1/3算力的自私挖礦節(jié)點(diǎn)即可獲得1/2全網(wǎng)區(qū)塊獎(jiǎng)勵(lì)期望,直接破壞激勵(lì)機(jī)制的公平性,對(duì)PoW的安全性假設(shè)造成威脅,也影響區(qū)塊鏈的擴(kuò)展性,降低了區(qū)塊鏈的效率。3.激勵(lì)層安全威脅3.1.自私挖礦攻擊(SelfishMining)二區(qū)塊鏈安全威脅與自私挖礦類(lèi)似,Nothingatstake攻擊是針對(duì)PoS激勵(lì)機(jī)制的一種攻擊。由于PoS中節(jié)點(diǎn)生成區(qū)塊的成本較低,當(dāng)出現(xiàn)區(qū)塊鏈分叉時(shí),為了利益最大化,礦工的最佳策略是在兩個(gè)區(qū)塊鏈分叉后均進(jìn)行挖礦。此時(shí),聰明的出塊節(jié)點(diǎn)會(huì)有動(dòng)力產(chǎn)生新的分叉并支持或發(fā)起不合法交易,其他逐利的出塊節(jié)點(diǎn)會(huì)同時(shí)在多條鏈(窗口)上排隊(duì)出塊支持新的分叉。隨著時(shí)間的推移,分叉越來(lái)越多,非法交易,作惡猖狂。區(qū)塊鏈將不再是唯一鏈,所有出塊節(jié)點(diǎn)沒(méi)有辦法達(dá)成共識(shí)。3.激勵(lì)層安全威脅3.2Nothingatstake攻擊二區(qū)塊鏈安全威脅另外,無(wú)利害關(guān)系問(wèn)題還讓雙花攻擊更容易成功。不像PoW51%的攻擊那樣,PoS的攻擊節(jié)點(diǎn)只需要多一定的算力(有時(shí)候僅僅1%)就可以進(jìn)行攻擊。這就使得發(fā)起區(qū)塊鏈分叉的惡意攻擊極容易成功,增加了區(qū)塊鏈分叉和雙重支付的概率。PoW機(jī)制天生避免了這個(gè)問(wèn)題。因?yàn)樵诔鰤K時(shí),礦工會(huì)付出機(jī)會(huì)成本—大量的算力資源。如果分叉出現(xiàn),礦工需要慎重的選擇在哪條鏈上出塊,一旦選錯(cuò),付出的算力成本則沒(méi)有收益。礦工也不會(huì)選擇在兩條鏈上均分算力,這樣只會(huì)將原鏈的出塊概率縮小一半,可能得不償失。3.激勵(lì)層安全威脅3.2Nothingatstake攻擊二區(qū)塊鏈安全威脅礦池降低了個(gè)體參與挖礦的成本,允許人人都可參與維護(hù)區(qū)塊鏈并獲得獎(jiǎng)勵(lì)收益。同時(shí),礦池也將節(jié)點(diǎn)集結(jié)起來(lái)形成算力或權(quán)益優(yōu)勢(shì)節(jié)點(diǎn),威脅共識(shí)機(jī)制的安全性假設(shè)。礦池間的博弈也對(duì)區(qū)塊鏈安全性、效率產(chǎn)生巨大影響。一些礦池為了獲得更高的獎(jiǎng)勵(lì)會(huì)利用目標(biāo)礦池的獎(jiǎng)勵(lì)分配策略來(lái)實(shí)施扣塊攻擊,通過(guò)委派部分礦工加入到目標(biāo)礦池貢獻(xiàn)無(wú)效的工作量,分得目標(biāo)礦池的獎(jiǎng)勵(lì),追求礦池整體獲得更高的獎(jiǎng)勵(lì)。扣塊攻擊主要有兩種。第一種是芬妮攻擊,是一種雙花攻擊的變種,目標(biāo)是雙花發(fā)生時(shí)所獲得的財(cái)富收益。攻擊者礦池生成一個(gè)有效的塊但是不會(huì)廣播這個(gè)塊,但是會(huì)廣播交易A,交易A是指購(gòu)買(mǎi)一個(gè)物件或者服務(wù)。商家會(huì)看到?jīng)]有任何沖突的交易A并接受0確認(rèn)交易。之后攻擊者礦池會(huì)立即廣播已生成的有效塊和與交易A有沖突的交易B,這時(shí)比特幣網(wǎng)絡(luò)會(huì)接受有效塊并使交易A無(wú)效。3.激勵(lì)層安全威脅3.3扣塊攻擊二區(qū)塊鏈安全威脅發(fā)動(dòng)此類(lèi)攻擊的代價(jià)是非常大的,因?yàn)樵诠粽呱蓧K和完成交易A之間存在時(shí)間間隙,在此期間網(wǎng)絡(luò)上的其他人也可以生成有效塊并廣播它,從而使攻擊者生成的有效塊變的無(wú)效。因此,只有在成功購(gòu)買(mǎi)到商品后并且立即釋放扣押的區(qū)塊時(shí),這個(gè)攻擊才是有效的。第二種目標(biāo)是對(duì)礦池造成的財(cái)產(chǎn)損失。一個(gè)礦池中的間諜礦工在找到區(qū)塊后,可以通過(guò)保留經(jīng)過(guò)驗(yàn)證的哈希并且不進(jìn)行廣播的方式扣下這個(gè)區(qū)塊。礦工的成本是微不足道的(拿不到本可分?jǐn)偟膮^(qū)塊獎(jiǎng)勵(lì)),但礦池的損失很大,因?yàn)檎麄€(gè)礦池失去了獲得50BTC區(qū)塊獎(jiǎng)作為對(duì)礦工勞動(dòng)補(bǔ)償?shù)臋C(jī)會(huì)。3.激勵(lì)層安全威脅3.3扣塊攻擊二區(qū)塊鏈安全威脅扣塊攻擊對(duì)采用PPS(Pay-per-share)模式、PPLNS(PayperlastNshares)模式的目標(biāo)礦池的攻擊效果明顯,且不易檢測(cè)。為了獲得更高的長(zhǎng)遠(yuǎn)收益,礦池會(huì)紛紛實(shí)施扣塊攻擊。扣塊攻擊與自私挖礦攻擊類(lèi)似,在一定程度上削減了網(wǎng)絡(luò)中的有效算力,降低了系統(tǒng)吞吐量,造成交易驗(yàn)證延遲甚至網(wǎng)絡(luò)擁塞的情況,影響區(qū)塊鏈的可擴(kuò)展性。3.激勵(lì)層安全威脅3.3扣塊攻擊二區(qū)塊鏈安全威脅比特幣等數(shù)字貨幣的激勵(lì)機(jī)制包含區(qū)塊獎(jiǎng)勵(lì)和交易費(fèi)兩部分,其中占礦工節(jié)點(diǎn)主要收益的區(qū)塊獎(jiǎng)勵(lì)普遍呈現(xiàn)逐漸減少直至降為零的趨勢(shì)。隨著區(qū)塊獎(jiǎng)勵(lì)的降低,這些區(qū)塊鏈必將完全依賴(lài)交易費(fèi)驅(qū)動(dòng)系統(tǒng)。然而,在僅依賴(lài)交易費(fèi)來(lái)激勵(lì)節(jié)點(diǎn)的極端情況下,系統(tǒng)難以避免形成公地悲劇,產(chǎn)生大量區(qū)塊鏈分叉,影響區(qū)塊鏈的安全性和效率。3.激勵(lì)層安全威脅3.4激勵(lì)層未來(lái)可能出現(xiàn)的攻擊二區(qū)塊鏈安全威脅攻擊者利用節(jié)點(diǎn)都想獲得更高收益的心理產(chǎn)生區(qū)塊鏈分叉,僅打包部分交易,給后續(xù)的區(qū)塊預(yù)留了大量交易費(fèi)獎(jiǎng)勵(lì),其他節(jié)點(diǎn)為了利益最大化必然會(huì)在剩余交易費(fèi)較多的區(qū)塊鏈分叉后面進(jìn)行拓展,而丟棄預(yù)先到達(dá)的區(qū)塊鏈,從而可以控制區(qū)塊鏈主鏈的走向。為此,一些研究人員建議持續(xù)發(fā)行代幣來(lái)維護(hù)系統(tǒng)穩(wěn)定。但是,持續(xù)代幣發(fā)行會(huì)出現(xiàn)通貨膨脹。長(zhǎng)此以往,區(qū)塊獎(jiǎng)勵(lì)將不再具有吸引力。此外,多數(shù)激勵(lì)機(jī)制僅獎(jiǎng)勵(lì)成功生成區(qū)塊的節(jié)點(diǎn),對(duì)其他誠(chéng)實(shí)參與共識(shí)協(xié)議的節(jié)點(diǎn)不予以獎(jiǎng)勵(lì),激勵(lì)機(jī)制無(wú)法客觀評(píng)估各節(jié)點(diǎn)維護(hù)系統(tǒng)所貢獻(xiàn)的工作量權(quán)重,對(duì)危害區(qū)塊鏈安全性的攻擊行為也不予以經(jīng)濟(jì)懲罰。3.激勵(lì)層安全威脅3.4激勵(lì)層未來(lái)可能出現(xiàn)的攻擊二區(qū)塊鏈安全威脅4.共識(shí)層安全威脅由于區(qū)塊鏈去中心化的特點(diǎn),每一個(gè)處于區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)都擁有一份完整的賬本數(shù)據(jù),并且由網(wǎng)絡(luò)中的共識(shí)機(jī)制執(zhí)行相應(yīng)的共識(shí)算法來(lái)共同記錄整個(gè)網(wǎng)絡(luò)中的交易等相關(guān)信息。目前的共識(shí)機(jī)制有PoW、PoS、DPoS、Pool驗(yàn)證池機(jī)制、PBFT等,其主要面臨的攻擊有女巫攻擊、51%攻擊、長(zhǎng)距離攻擊、短距離攻擊、幣齡累計(jì)攻擊、預(yù)計(jì)算攻擊等。二區(qū)塊鏈安全威脅針對(duì)PoW共識(shí)機(jī)制最直接有效的攻擊方式就是51%算力攻擊,即如果某一個(gè)節(jié)點(diǎn)或者由部分節(jié)點(diǎn)組成的組織掌握了全網(wǎng)超過(guò)51%的算力,這些節(jié)點(diǎn)就有能力將目前正在工作的區(qū)塊鏈轉(zhuǎn)移到另一條包含有惡意行為的區(qū)塊鏈上,并使得全網(wǎng)節(jié)點(diǎn)在這條惡意的區(qū)塊鏈上繼續(xù)工作。如果攻擊者能夠控制全網(wǎng)算力的一半以上,攻擊者可以比網(wǎng)絡(luò)的其他部分更快地生成塊,隨著攻擊者堅(jiān)持自己的私有分支,直到它比誠(chéng)實(shí)節(jié)點(diǎn)網(wǎng)絡(luò)建立的分支更長(zhǎng),將可以使得全網(wǎng)節(jié)點(diǎn)在這條惡意的區(qū)塊鏈上繼續(xù)工作,近而代替主鏈。4.共識(shí)層安全威脅4.151%攻擊二區(qū)塊鏈安全威脅由于比特幣所使用的PoW算法的安全性依賴(lài)于其所消耗的巨大算力,51%算力攻擊曾一度被認(rèn)為是難以達(dá)到的。然而隨著礦池的出現(xiàn),擁有全網(wǎng)51%的算力也變得不是那么困難,因此,51%算力攻擊的威脅始終存在,并且有可能發(fā)生。實(shí)際上,隨著挖礦業(yè)務(wù)的發(fā)展,現(xiàn)在通過(guò)網(wǎng)絡(luò)租賃算力的業(yè)務(wù)也越來(lái)越成熟了,攻擊者不再需要花費(fèi)大量成本去購(gòu)買(mǎi)礦機(jī),只需要在攻擊的時(shí)候即時(shí)從網(wǎng)上租賃算力來(lái)發(fā)動(dòng)51%攻擊,利用51%算力攻擊一個(gè)數(shù)字貨幣的成本在越來(lái)越低。4.共識(shí)層安全威脅4.151%攻擊二區(qū)塊鏈安全威脅女巫攻擊(SybilAttack)是一種作用于對(duì)等(P2P)網(wǎng)絡(luò)的攻擊形式。攻擊者利用單個(gè)節(jié)點(diǎn)來(lái)偽造多個(gè)存在于P2P網(wǎng)絡(luò)中的身份,從而達(dá)到削弱網(wǎng)絡(luò)的冗余性,降低網(wǎng)絡(luò)健壯性,監(jiān)視或干擾網(wǎng)絡(luò)正常活動(dòng)等目的。在P2P網(wǎng)絡(luò)中,為了解決節(jié)點(diǎn)作惡或失效帶來(lái)的安全威脅,通常會(huì)引入冗余備份機(jī)制,將運(yùn)算或存儲(chǔ)任務(wù)備份到多個(gè)節(jié)點(diǎn)上,或者將一個(gè)完整的任務(wù)分割存儲(chǔ)在多個(gè)節(jié)點(diǎn)上。正常情況下,一個(gè)實(shí)體代表一個(gè)節(jié)點(diǎn)并由一個(gè)ID來(lái)標(biāo)識(shí)身份。然而,在缺少可信賴(lài)的節(jié)點(diǎn)身份認(rèn)證機(jī)構(gòu)的P2P網(wǎng)絡(luò)中,難以保證所備份的多個(gè)節(jié)點(diǎn)是不同的實(shí)體。攻擊者可以通過(guò)只部署一個(gè)實(shí)體,向網(wǎng)絡(luò)中廣播多個(gè)身份ID,來(lái)充當(dāng)多個(gè)不同的節(jié)點(diǎn),這些偽造的身份一般被稱(chēng)為Sybil節(jié)點(diǎn)。Sybil節(jié)點(diǎn)為攻擊者爭(zhēng)取了更多的網(wǎng)絡(luò)控制權(quán),一旦用戶(hù)查詢(xún)資源的路徑經(jīng)過(guò)這些Sybil節(jié)點(diǎn),攻擊者可以干擾查詢(xún)、返回錯(cuò)誤結(jié)果,甚至拒絕回復(fù)。4.共識(shí)層安全威脅4.2女巫攻擊二區(qū)塊鏈安全威脅在區(qū)塊鏈?zhǔn)澜缰校坠艨梢宰鳛橐环N針對(duì)服務(wù)器節(jié)點(diǎn)的攻擊方式。攻擊發(fā)生時(shí)候,通過(guò)某種方式,某個(gè)惡意節(jié)點(diǎn)可以偽裝成多個(gè)節(jié)點(diǎn),對(duì)被攻擊節(jié)點(diǎn)發(fā)出鏈接請(qǐng)求,達(dá)到節(jié)點(diǎn)的最大鏈接請(qǐng)求,導(dǎo)致節(jié)點(diǎn)沒(méi)辦法接受其他節(jié)點(diǎn)的請(qǐng)求,造成節(jié)點(diǎn)拒絕服務(wù)攻擊。以EOS為例,EOSP2P節(jié)點(diǎn)拒絕服務(wù)攻擊實(shí)際上就是女巫攻擊的一種,攻擊者可以非常小的攻擊成本來(lái)達(dá)到癱瘓主節(jié)點(diǎn)的目的。女巫攻擊還可以作為一種針對(duì)聯(lián)盟鏈共識(shí)機(jī)制的攻擊方式,主要攻擊對(duì)共識(shí)節(jié)點(diǎn)數(shù)量敏感的共識(shí)機(jī)制,如BFT類(lèi)共識(shí)算法等。4.共識(shí)層安全威脅4.2女巫攻擊二區(qū)塊鏈安全威脅攻擊者通過(guò)控制一定比例、保障系統(tǒng)安全性的計(jì)算資源、加密貨幣資源等各種資源,實(shí)現(xiàn)在執(zhí)行花費(fèi)代幣或執(zhí)行智能合約等操作時(shí)將某些交易回滾,從而進(jìn)行雙花攻擊。當(dāng)攻擊者發(fā)起短距離攻擊時(shí),首先會(huì)向全網(wǎng)提交一個(gè)待回滾的交易,并在上一個(gè)區(qū)塊的分叉上(不包含待回滾交易的分叉)繼續(xù)進(jìn)行挖礦,直到該交易得到n個(gè)區(qū)塊確認(rèn)信息。若分叉上的區(qū)塊數(shù)多于n,則攻擊者公布包含有待回滾交易的區(qū)塊。這樣,由于分叉鏈的長(zhǎng)度大于原本的主鏈,則全網(wǎng)節(jié)點(diǎn)將分叉鏈視為主鏈,此時(shí),交易得到回滾。4.共識(shí)層安全威脅4.3短距離攻擊二區(qū)塊鏈安全威脅該攻擊方式主要影響POS機(jī)制。攻擊示例如下:攻擊者購(gòu)買(mǎi)某個(gè)商品或服務(wù)。商戶(hù)開(kāi)始等待網(wǎng)絡(luò)確認(rèn)這筆交易。此時(shí),攻擊者開(kāi)始在網(wǎng)絡(luò)中首次宣稱(chēng),對(duì)目前相對(duì)最長(zhǎng)的不包含這次交易的主鏈進(jìn)行獎(jiǎng)勵(lì)。當(dāng)主鏈足夠長(zhǎng)時(shí),攻擊者開(kāi)始放出更大的獎(jiǎng)勵(lì),獎(jiǎng)勵(lì)那些包含此次交易鏈條中挖礦的礦工。六次確認(rèn)達(dá)成后,放棄獎(jiǎng)勵(lì)。貨物到手,同時(shí)放棄攻擊者選中的鏈條。只要此次賄賂攻擊的成本小于貨物或者服務(wù)費(fèi)用,攻擊成功。相比之下,POW機(jī)制中賄賂機(jī)制就需要賄賂大多數(shù)礦工,成本極高。4.共識(shí)層安全威脅4.3短距離攻擊二區(qū)塊鏈安全威脅攻擊者通過(guò)控制一定比例的系統(tǒng)資源,在歷史區(qū)塊、甚至是創(chuàng)世區(qū)塊上對(duì)區(qū)塊鏈主鏈進(jìn)行分叉,旨在獲取更多的區(qū)塊獎(jiǎng)勵(lì)或者達(dá)到回滾交易的目的。這種攻擊更多的是針對(duì)基于權(quán)益證明共識(shí)機(jī)制的系統(tǒng)。在基于POS共識(shí)機(jī)制的區(qū)塊鏈系統(tǒng)中,攻擊者可能在分叉出現(xiàn)時(shí)僅持有一小部分的代幣,但他可以在分叉上自由地進(jìn)行代幣交易,從而導(dǎo)致攻擊者能夠更加容易地進(jìn)行造幣并快速形成一條更長(zhǎng)的區(qū)塊鏈。4.共識(shí)層安全威脅4.4長(zhǎng)距離攻擊二區(qū)塊鏈安全威脅4.共識(shí)層安全威脅4.5幣齡累積攻擊基于PoS共識(shí)機(jī)制的系統(tǒng)中,攻擊者可以利用幣齡計(jì)算節(jié)點(diǎn)權(quán)益,并通過(guò)總消耗的幣齡控制區(qū)塊鏈網(wǎng)絡(luò)。未花費(fèi)交易輸出(UTXO)的幣齡是根據(jù)幣齡乘以該區(qū)塊之前的歷史區(qū)塊的數(shù)量得出。在幣齡累計(jì)攻擊中,攻擊者將其持有的代幣分散至不同的UTXO中,并等待直至這些資產(chǎn)所占權(quán)益遠(yuǎn)大于節(jié)點(diǎn)平均值。這樣,攻擊者有極大的可能性連續(xù)進(jìn)行造幣,從而達(dá)到對(duì)主鏈的分叉或交易回滾的目的。二區(qū)塊鏈安全威脅4.共識(shí)層安全威脅4.6預(yù)計(jì)算攻擊在PoS共識(shí)機(jī)制中,確定當(dāng)前區(qū)塊取決于前一個(gè)區(qū)塊的哈希值。擁有足夠算力和權(quán)益的攻擊者可以在第N個(gè)區(qū)塊的虛擬挖礦過(guò)程中,通過(guò)隨機(jī)試錯(cuò)法對(duì)該區(qū)塊的哈希值進(jìn)行干涉,直至攻擊者有能力對(duì)第N+1個(gè)區(qū)塊進(jìn)行挖礦,從而,攻擊者可以連續(xù)進(jìn)行造幣,并獲取相對(duì)應(yīng)的區(qū)塊獎(jiǎng)勵(lì)或者發(fā)起雙花攻擊。二區(qū)塊鏈安全威脅4.共識(shí)層安全威脅4.7空塊攻擊在比特幣交易中,我們轉(zhuǎn)賬所發(fā)起的交易會(huì)存放在交易內(nèi)存池里,等待礦工打包。礦工在挖出新的區(qū)塊后,會(huì)選擇把交易信息打包進(jìn)新的區(qū)塊。一般一個(gè)區(qū)塊會(huì)包含發(fā)行新幣的coinbase交易以及其他交易者發(fā)起的交易。所謂空塊攻擊,就是頻繁出現(xiàn)區(qū)塊中只打包發(fā)行新幣的coinbase交易,而沒(méi)有其他交易。其實(shí)偶爾出現(xiàn)空塊問(wèn)題并不大,但是如果空塊頻繁出現(xiàn)的話(huà),就會(huì)導(dǎo)致交易請(qǐng)求不斷累積,交易內(nèi)存池不斷變大,交易的平均確認(rèn)時(shí)間延長(zhǎng)。二區(qū)塊鏈安全威脅4.共識(shí)層安全威脅事實(shí)上,打包空塊在挖礦的競(jìng)爭(zhēng)上并不會(huì)比打包滿(mǎn)塊更有優(yōu)勢(shì),而且消滅空塊在技術(shù)上沒(méi)有難度,因此一般節(jié)點(diǎn)也沒(méi)有動(dòng)力去頻繁打包空塊,參與空塊攻擊的主要參與方是礦池。一般來(lái)說(shuō),礦工成功地把區(qū)塊加到鏈上就能賺到相應(yīng)的獎(jiǎng)勵(lì),正因?yàn)槿绱?礦池被激勵(lì)以最快的方式向網(wǎng)絡(luò)中添加塊。本著利潤(rùn)最大化的精神,礦工們不再下載之前的區(qū)塊,也不再監(jiān)聽(tīng)交易,當(dāng)產(chǎn)生新的區(qū)塊時(shí)除了附加到Coinbase事務(wù)的數(shù)據(jù)外,礦工也不會(huì)添加任何新的信息,因?yàn)樗麄儾淮_定在前一個(gè)塊中確認(rèn)了哪些事務(wù)。4.7空塊攻擊二區(qū)塊鏈安全威脅5.合約層安全威脅智能合約是區(qū)塊鏈2.0的一個(gè)特性,因此也是合約層的核心。智能合約最早由NickSzabo提出,后經(jīng)以太坊重新定義,并建立完整的開(kāi)發(fā)架構(gòu),是一種可自動(dòng)執(zhí)行的數(shù)字化協(xié)議,包含相關(guān)代碼和數(shù)據(jù)集,部署在區(qū)塊鏈上,也是可按照預(yù)設(shè)合約條款自動(dòng)執(zhí)行的計(jì)算機(jī)程序。除了智能合約外,合約層還包括智能合約的運(yùn)行機(jī)制、編寫(xiě)語(yǔ)言、沙盒環(huán)境和測(cè)試網(wǎng)絡(luò)。其中,運(yùn)行機(jī)制描述了智能合約的執(zhí)行規(guī)則;編寫(xiě)語(yǔ)言包括以太坊平臺(tái)提供的Solidity、Serpent、LLL等圖靈完備語(yǔ)言和Fabric使用的Go、Java等高級(jí)編寫(xiě)語(yǔ)言;沙盒環(huán)境是一種新型的惡意代碼檢測(cè)和防治技術(shù),為用戶(hù)提供一種相對(duì)安全的虛擬運(yùn)算環(huán)境,例如以太坊虛擬機(jī)(Ethereumvirtualmachine,EVM)為智能合約提供沙盒環(huán)境。合約層出現(xiàn)的安全威脅主要出現(xiàn)在智能合約編寫(xiě)和運(yùn)行階段中。二區(qū)塊鏈安全威脅5.合約層安全威脅5.1智能合約編寫(xiě)漏洞智能合約在編寫(xiě)時(shí)由于不嚴(yán)謹(jǐn)編碼也極易產(chǎn)生智能合約安全威脅,此類(lèi)安全威脅包括:①整數(shù)溢出:智能合約中危險(xiǎn)的數(shù)值操作可能導(dǎo)致合約失效、無(wú)限發(fā)幣等風(fēng)險(xiǎn)。②越權(quán)訪(fǎng)問(wèn):智能合約中對(duì)訪(fǎng)問(wèn)控制處理不當(dāng)可能導(dǎo)致越權(quán)發(fā)幣風(fēng)險(xiǎn)。③信息泄露:硬編碼地址等可能導(dǎo)致重要信息的泄露。④邏輯錯(cuò)誤:代理轉(zhuǎn)賬函數(shù)缺失必要校驗(yàn)可能導(dǎo)致基于重入漏洞的惡意轉(zhuǎn)賬等風(fēng)險(xiǎn)。⑤拒絕服務(wù):循環(huán)語(yǔ)句、遞歸函數(shù)、外部合約調(diào)用等處理不當(dāng)可能導(dǎo)致無(wú)限循環(huán)、遞歸棧耗盡等拒絕服務(wù)風(fēng)險(xiǎn)。⑥函數(shù)誤用:偽隨機(jī)函數(shù)調(diào)用和接口函數(shù)實(shí)現(xiàn)問(wèn)題可能導(dǎo)致可預(yù)測(cè)隨機(jī)數(shù)、接口函數(shù)返回異常等風(fēng)險(xiǎn)。
通常,為了消除此類(lèi)在智能合約編寫(xiě)過(guò)程中產(chǎn)生的安全威脅并最終保證智能合約的安全性,用戶(hù)編寫(xiě)智能合約后還需要在測(cè)試網(wǎng)絡(luò)上進(jìn)行測(cè)試。二區(qū)塊鏈安全威脅5.合約層安全威脅5.1智能合約編寫(xiě)漏洞智能合約在編寫(xiě)時(shí)由于不嚴(yán)謹(jǐn)編碼也極易產(chǎn)生智能合約安全威脅,此類(lèi)安全威脅包括:①整數(shù)溢出:智能合約中危險(xiǎn)的數(shù)值操作可能導(dǎo)致合約失效、無(wú)限發(fā)幣等風(fēng)險(xiǎn)。②越權(quán)訪(fǎng)問(wèn):智能合約中對(duì)訪(fǎng)問(wèn)控制處理不當(dāng)可能導(dǎo)致越權(quán)發(fā)幣風(fēng)險(xiǎn)。③信息泄露:硬編碼地址等可能導(dǎo)致重要信息的泄露。④邏輯錯(cuò)誤:代理轉(zhuǎn)賬函數(shù)缺失必要校驗(yàn)可能導(dǎo)致基于重入漏洞的惡意轉(zhuǎn)賬等風(fēng)險(xiǎn)。⑤拒絕服務(wù):循環(huán)語(yǔ)句、遞歸函數(shù)、外部合約調(diào)用等處理不當(dāng)可能導(dǎo)致無(wú)限循環(huán)、遞歸棧耗盡等拒絕服務(wù)風(fēng)險(xiǎn)。⑥函數(shù)誤用:偽隨機(jī)函數(shù)調(diào)用和接口函數(shù)實(shí)現(xiàn)問(wèn)題可能導(dǎo)致可預(yù)測(cè)隨機(jī)數(shù)、接口函數(shù)返回異常等風(fēng)險(xiǎn)。
通常,為了消除此類(lèi)在智能合約編寫(xiě)過(guò)程中產(chǎn)生的安全威脅并最終保證智能合約的安全性,用戶(hù)編寫(xiě)智能合約后還需要在測(cè)試網(wǎng)絡(luò)上進(jìn)行測(cè)試。二區(qū)塊鏈安全威脅5.合約層安全威脅5.2智能合約運(yùn)行漏洞
隨著區(qū)塊鏈2.0技術(shù)的不斷推進(jìn),智能合約在以太坊、EOS、Hyperledge等平臺(tái)上得到廣泛應(yīng)用。區(qū)塊鏈的智能合約一般都用來(lái)控制資金流轉(zhuǎn),應(yīng)用在貿(mào)易結(jié)算、數(shù)字,資產(chǎn)交易、票據(jù)交易等場(chǎng)景中,其漏洞的嚴(yán)重性遠(yuǎn)高于普通的軟件程序。由于智能合約會(huì)部署在公鏈暴露于開(kāi)放網(wǎng)絡(luò)中,容易被黑客獲得,成為黑客的金礦和攻擊目標(biāo),一旦出現(xiàn)漏洞,將直接導(dǎo)致經(jīng)濟(jì)損失。此類(lèi)漏洞一般出現(xiàn)在智能合約運(yùn)行過(guò)程中,由此類(lèi)安全威脅導(dǎo)致的攻擊包括:①交易依賴(lài)攻擊智能合約執(zhí)行過(guò)程中的每次操作都需要以交易的形式發(fā)布狀態(tài)變量的變更信息,不同的交易順序可能會(huì)觸發(fā)不同的狀態(tài),導(dǎo)致不同的輸出結(jié)果。這種智能合約問(wèn)題被稱(chēng)為交易順序依賴(lài)。惡意的礦工甚至故意改變交易執(zhí)行順序,操縱智能合約的執(zhí)行。二區(qū)塊鏈安全威脅5.合約層安全威脅②時(shí)間戳依賴(lài)攻擊一些智能合約執(zhí)行過(guò)程中需要時(shí)間戳來(lái)提供隨機(jī)性,或者作為某些操作的觸發(fā)條件。而網(wǎng)絡(luò)中節(jié)點(diǎn)的本地時(shí)間戳略有偏差,攻擊者可以通過(guò)設(shè)置區(qū)塊的時(shí)間戳來(lái)左右智能合約的執(zhí)行,使結(jié)果對(duì)自己更有利。③調(diào)用棧深度攻擊以太坊EVM設(shè)置調(diào)用棧深度為1024,攻擊者可以先迭代調(diào)用合約1023次再發(fā)布交易觸發(fā)該合約,故意突破調(diào)用棧深度限制,使得合約執(zhí)行異常。5.2智能合約運(yùn)行漏洞二區(qū)塊鏈安全威脅5.合約層安全威脅④可重入攻擊當(dāng)一個(gè)合約調(diào)用另一個(gè)合約時(shí),當(dāng)前執(zhí)行進(jìn)程就會(huì)停下來(lái)等待調(diào)用結(jié)束,這就產(chǎn)生了一個(gè)中間狀態(tài)。攻擊者利用中間狀態(tài),在合約未執(zhí)行結(jié)束時(shí)再次調(diào)用合約,實(shí)施可重入攻擊。著名的TheDAO事件就是攻擊者實(shí)施可重入攻擊,不斷重復(fù)地遞歸調(diào)用withdrawblance函數(shù),取出本該被清零的以太坊賬戶(hù)余額,竊取大量以太幣。⑤整數(shù)溢出攻擊智能合約中規(guī)定了整數(shù)的范圍,難以避免變量、中間計(jì)算結(jié)果越界,導(dǎo)致整數(shù)溢出。程序中僅保存異常結(jié)果,影響智能合約的執(zhí)行。5.2智能合約運(yùn)行漏洞二區(qū)塊鏈安全威脅5.合約層安全威脅⑥操作異常攻擊智能合約的執(zhí)行可能需要調(diào)用其他合約,缺少被調(diào)用合約的狀態(tài)驗(yàn)證或返回值驗(yàn)證將會(huì)對(duì)智能合約的執(zhí)行帶來(lái)潛在威脅。部分被調(diào)用合約執(zhí)行異常,異常結(jié)果可能會(huì)傳遞到調(diào)用合約上,影響調(diào)用合約的執(zhí)行。⑦Gas限制攻擊以太坊規(guī)定了交易消耗的Gas上限,如果超過(guò)則交易失效。如果Gas消耗設(shè)計(jì)不合理,則會(huì)被攻擊者利用實(shí)施DoS攻擊。Extcodesize和Suicide是DoS攻擊者反復(fù)執(zhí)行降低Gas操作的攻擊實(shí)例,最終導(dǎo)致以太坊交易處理速度緩慢,浪費(fèi)了大量交易池硬盤(pán)存儲(chǔ)資源。5.2智能合約運(yùn)行漏洞二區(qū)塊鏈安全威脅5.合約層安全威脅5.3以太坊中智能合約漏洞作為當(dāng)前最知名也是最熱門(mén)的開(kāi)源公有鏈平臺(tái)和智能合約運(yùn)行平臺(tái),以太坊上已經(jīng)部署了超過(guò)一百萬(wàn)個(gè)智能合約應(yīng)用。由于公有鏈數(shù)據(jù)公開(kāi)透明存儲(chǔ)的特點(diǎn),以太坊平臺(tái)上的智能合約對(duì)所有用戶(hù)都是可見(jiàn)的,這就導(dǎo)致了智能合約中可能存在的包含代碼漏洞等多種安全漏洞都直接曝光在用戶(hù)面前,如果以太坊智能合約由于編寫(xiě)不規(guī)范或者測(cè)試不充分而存在安全風(fēng)險(xiǎn),就非常容易被黑客利用并攻擊。通常,功能越強(qiáng)大、邏輯越復(fù)雜的智能合約,也就越容易存在安全漏洞,特別是邏輯上的漏洞。以太坊智能合約至誕生以來(lái)已經(jīng)經(jīng)歷了多次漏洞利用攻擊,并且每一次都造成了極大的損失。這里主要介紹以太坊智能合約中常見(jiàn)的多種高危漏洞。二區(qū)塊鏈安全威脅5.合約層安全威脅5.3以太坊中智能合約漏洞序號(hào)漏洞名稱(chēng)漏洞描述1TheDAO漏洞TheDAO智能合約中的split函數(shù)存在漏洞,攻擊者可以在TheDAOToken被銷(xiāo)毀前多次轉(zhuǎn)移以太幣到ChildDAO智能合約中,從而大規(guī)模盜取原TheDAO智能合約中的以太幣。2Parity多重簽名錢(qián)包合約漏洞攻擊者通過(guò)公開(kāi)調(diào)用函數(shù)initWallet,能夠重新初始化錢(qián)包,對(duì)之前合約錢(qián)包的所有者覆蓋,導(dǎo)致將錢(qián)包所有者修改為攻擊者。3Parity多重簽名錢(qián)包提款漏洞攻擊者通過(guò)庫(kù)函數(shù)調(diào)用獲取權(quán)限,然后調(diào)用庫(kù)中自殺函數(shù)報(bào)廢整個(gè)合約庫(kù),,導(dǎo)致錢(qián)包無(wú)法提款。4太陽(yáng)風(fēng)暴當(dāng)以太坊合約相互調(diào)用時(shí),它們自身的程序控制和狀態(tài)功能會(huì)丟失,從而切斷合約間的溝通,從而影響整個(gè)以太坊,就像太陽(yáng)風(fēng)暴切斷地球的通訊設(shè)備一般。5Fallback函數(shù)調(diào)用漏洞當(dāng)調(diào)用某個(gè)智能合約時(shí),如果指定函數(shù)找不到,或者根本就沒(méi)有知道調(diào)用哪個(gè)函數(shù)時(shí),fallback就會(huì)執(zhí)行,此時(shí)攻擊者可以利用fallback函數(shù)威脅系統(tǒng)安全。表8-1以太坊中常見(jiàn)漏洞二區(qū)塊鏈安全威脅5.合約層安全威脅5.3以太坊中智能合約漏洞序號(hào)漏洞名稱(chēng)漏洞描述6遞歸調(diào)用漏洞當(dāng)用戶(hù)取款代碼中存在嚴(yán)重的遞歸調(diào)用漏洞時(shí),攻擊者可輕松將用戶(hù)賬戶(hù)中資金取走。7調(diào)用深度漏洞EVM中一個(gè)智能合約可以通過(guò)messagecall調(diào)用其他智能合約,被調(diào)用的智能合約可以繼續(xù)調(diào)用其他合約或調(diào)用回來(lái),此時(shí)攻擊者可以使用嵌套調(diào)用突破1024級(jí)的深度限制來(lái)發(fā)動(dòng)攻擊。8浪子合約漏洞該漏洞可以將交易資金返還給所有者、交易者過(guò)去發(fā)過(guò)來(lái)的以太坊地址,甚至是特定地址。9貪婪合約漏洞某些永遠(yuǎn)停留在以太坊中的智能合約可以將合約涉及到的商品以及貨幣都鎖定在合約內(nèi),導(dǎo)致交易雙方均無(wú)法完成操作,也無(wú)法取消。10函數(shù)可重入漏洞當(dāng)一個(gè)合約調(diào)用另一個(gè)時(shí),當(dāng)前執(zhí)行進(jìn)程就會(huì)停下等待調(diào)用結(jié)束,這就導(dǎo)致了一個(gè)可以被利用的中間狀態(tài),在這種情形下,當(dāng)一個(gè)合約還沒(méi)調(diào)用完成時(shí)發(fā)起另一個(gè)調(diào)用交易,即可完成攻擊。二區(qū)塊鏈安全威脅6.應(yīng)用層安全威脅應(yīng)用層可分為交易所、礦機(jī)、礦池、錢(qián)包等。在安全威脅方面,交易所往往會(huì)面臨比較傳統(tǒng)的外部安全問(wèn)題,如交易所安全管理策略不完善或不當(dāng)導(dǎo)致的各種信息泄漏、被釣魚(yú)、賬號(hào)被盜等;應(yīng)用層業(yè)務(wù)方面也會(huì)面臨一些安全問(wèn)題,如礦機(jī)可遭受遠(yuǎn)程弱口令登陸問(wèn)題;應(yīng)用層安全問(wèn)題還包括如加密數(shù)字貨幣交易所、礦池、網(wǎng)站遭受DDoS攻擊,錢(qián)包面臨DNS劫持風(fēng)險(xiǎn),以及用戶(hù)使用區(qū)塊鏈應(yīng)用亦面臨一些安全問(wèn)題,例如私鑰管理不善,遭遇病毒木馬、賬戶(hù)竊取等。由于這些安全威脅非常常見(jiàn),在區(qū)塊鏈其他各層安全威脅內(nèi)容中也已有體現(xiàn),這里就不再贅述。3區(qū)塊鏈安全技術(shù)三區(qū)塊鏈安全技術(shù)作為一種多技術(shù)融合創(chuàng)新的產(chǎn)物,區(qū)塊鏈在誕生之初就就引入了密碼技術(shù)等多種安全技術(shù)來(lái)允許其擁有包括多中心、防篡改、抗偽造、可追溯等多種安全功能。隨著對(duì)區(qū)塊鏈技術(shù)研究的深入,近年來(lái)區(qū)塊鏈中越來(lái)越多的安全問(wèn)題逐漸暴露出來(lái),因此一些新的安全技術(shù)也被開(kāi)發(fā)和引入到區(qū)塊鏈系統(tǒng)設(shè)計(jì)中,為區(qū)塊鏈的未來(lái)發(fā)展提供了可靠而靈活的安全保障。本節(jié)主要介紹為保證區(qū)塊鏈多種安全功能而使用的基本安全技術(shù)以及為區(qū)塊鏈提供更多安全保障而開(kāi)發(fā)和引入的安全增強(qiáng)技術(shù)。三區(qū)塊鏈安全技術(shù)在實(shí)際系統(tǒng)應(yīng)用中極少僅使用對(duì)稱(chēng)加密或公鑰加密算法來(lái)保護(hù)數(shù)據(jù)機(jī)密性,而通常會(huì)采用融合了對(duì)稱(chēng)和公鑰加密算法兩者優(yōu)點(diǎn)的混合加密方式。由于區(qū)塊鏈系統(tǒng)自身的特點(diǎn),其計(jì)算和存儲(chǔ)能力都是受限制的,因此不可能直接使用運(yùn)算開(kāi)銷(xiāo)較大的公鑰加密算法來(lái)保護(hù)鏈上的數(shù)據(jù)信息,區(qū)塊鏈上存儲(chǔ)的也僅能是一些非常重要的數(shù)據(jù)而非用戶(hù)數(shù)據(jù)的全部。由此可見(jiàn),混合加密方式尤其適用在區(qū)塊鏈場(chǎng)景下保護(hù)用戶(hù)數(shù)據(jù)機(jī)密性。一個(gè)混合加密算法可由下圖表示。1.
區(qū)塊鏈數(shù)據(jù)安全技術(shù)1.1混合加密三區(qū)塊鏈安全技術(shù)1.
區(qū)塊鏈數(shù)據(jù)安全技術(shù)1.1混合加密混合加密流程三區(qū)塊鏈安全技術(shù)1.
區(qū)塊鏈數(shù)據(jù)安全技術(shù)1.1混合加密如上圖所示,在混合加密算法中,如果數(shù)據(jù)發(fā)送方A想要安全的將一份數(shù)據(jù)信息M發(fā)送給數(shù)據(jù)接收方B,A和B需要執(zhí)行如下操作:①A選取一個(gè)對(duì)稱(chēng)秘鑰K,然后利用B的公鑰將K加密,生成密文C1;②A將K與M輸入一個(gè)對(duì)稱(chēng)加密算法中生成密文C2;③A將兩段密文串聯(lián)成C1||C2,并將該串聯(lián)密文通過(guò)公開(kāi)信道發(fā)送給B;④B接收到C1||C2后,首先利用自己的私鑰解密C1得到K;⑤B然后將K和C2輸入對(duì)稱(chēng)秘鑰解密算法后得到M。一般來(lái)說(shuō),公鑰加密算法由于效率和加密強(qiáng)度問(wèn)題是不能被直接用來(lái)加密大塊數(shù)據(jù)的,而對(duì)稱(chēng)加密算法雖然處理大塊數(shù)據(jù)時(shí)速度快、安全級(jí)別高,但如何讓通信雙方在公開(kāi)信道環(huán)境下共享同一個(gè)對(duì)稱(chēng)秘鑰是一個(gè)很困難的問(wèn)題,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)英語(yǔ)教師職業(yè)生涯規(guī)劃計(jì)劃
- 2025年合成重負(fù)荷工業(yè)齒輪油行業(yè)深度研究分析報(bào)告
- 三年級(jí)寫(xiě)字教學(xué)資源整合計(jì)劃
- 學(xué)校武術(shù)課程設(shè)置與訓(xùn)練計(jì)劃
- 砂石骨料市場(chǎng)分析報(bào)告
- 第一學(xué)期體育文化節(jié)活動(dòng)計(jì)劃
- 小學(xué)英語(yǔ)四年級(jí)下冊(cè)學(xué)習(xí)計(jì)劃與實(shí)施方案
- 綠色科學(xué)教育推廣計(jì)劃
- 中國(guó)制冰淇淋器具行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 藝術(shù)文化行業(yè)資料員工作職責(zé)分析
- 護(hù)理風(fēng)險(xiǎn)評(píng)估及填寫(xiě)要求
- 《中興通訊績(jī)效管理制度》-人事制度表格【管理資料】
- 微邦生物技術(shù)生活污水處理中的應(yīng)用
- 鐵路工務(wù)技術(shù)手冊(cè)
- (完整版)硬件測(cè)試規(guī)范
- 2006年工資標(biāo)準(zhǔn)及套改對(duì)應(yīng)表
- DBJ∕T 13-183-2014 基樁豎向承載力自平衡法靜載試驗(yàn)技術(shù)規(guī)程
- 張雙樓煤礦安全評(píng)價(jià)報(bào)告(出版稿10.14)
- [模板]健康教育處方
- 婦產(chǎn)科英語(yǔ)詞匯
- 病媒生物密度監(jiān)測(cè)方法 蜚蠊
評(píng)論
0/150
提交評(píng)論