朱小棟 劉欣
關(guān)鍵詞:區(qū)塊鏈;以太坊;復(fù)雜網(wǎng)絡(luò);關(guān)鍵節(jié)點;網(wǎng)絡(luò)攻擊
中圖分類號:TP309.2 文獻(xiàn)標(biāo)識碼:A
1引言(Introduction)
區(qū)塊鏈(Blockchain)是近年全球信息科技領(lǐng)域最受關(guān)注的技術(shù),它具有去中心化的核心優(yōu)勢,可以有效解決中心化機(jī)構(gòu)中普遍存在的成本高、效率低和數(shù)據(jù)安全等問題[1]。區(qū)塊鏈特有的去中心化特征大大減少了受到網(wǎng)絡(luò)攻擊時產(chǎn)生的危害,但是攻擊者除了利用區(qū)塊鏈系統(tǒng)本身設(shè)計或?qū)崿F(xiàn)方面存在的漏洞攻擊區(qū)塊鏈,還可以通過攻擊區(qū)塊鏈周邊的設(shè)施,例如交易所、數(shù)字錢包、礦場、礦池等獲得利益。區(qū)塊鏈技術(shù)本身的設(shè)計缺陷或其系統(tǒng)部署不當(dāng),并不是產(chǎn)生被攻擊風(fēng)險的主要原因,而是由于區(qū)塊鏈應(yīng)用開發(fā)、軟件工具及其實踐過程中缺乏必要的安全考慮或措施造成的。因此,找到關(guān)鍵的用戶即可對該用戶的外部工具等設(shè)施進(jìn)行安全性建設(shè),這對于整個區(qū)塊鏈的安全建設(shè)具有重要作用。本文的研究重點為識別關(guān)鍵的用戶(區(qū)塊或節(jié)點)設(shè)施[2]。
本文針對區(qū)塊鏈的安全問題進(jìn)行研究,首次將復(fù)雜網(wǎng)絡(luò)理論引入?yún)^(qū)塊鏈研究中,研究人員將區(qū)塊鏈或區(qū)塊鏈的子集中發(fā)生的交易流表示為一個網(wǎng)絡(luò),其中節(jié)點是以太坊賬戶,即外部賬戶。在以太坊(Ethereum)場景中,一些加密貨幣轉(zhuǎn)移、智能合約的創(chuàng)建或合約的調(diào)用都可以稱為交易。區(qū)塊鏈中記錄的每筆交易都對應(yīng)于在網(wǎng)絡(luò)中創(chuàng)建的新連接。復(fù)雜網(wǎng)絡(luò)提供了合適的建模,將區(qū)塊鏈表示為一個復(fù)雜的系統(tǒng)分析其本質(zhì),通過運(yùn)算得出相關(guān)特征值,即度、度分布,并使用多種節(jié)點重要度評估方法,如PageRank算法、K-shell算法和H指數(shù)算法,將節(jié)點按照重要度進(jìn)行排序。本文基于以上基本原理找出區(qū)塊鏈的重要節(jié)點,并對其安全建設(shè)提出建議。
2背景(Background)
區(qū)塊鏈?zhǔn)且环N以區(qū)塊記錄交易的分布式賬本[3]。每個區(qū)塊都包含一組交易,交易可以記錄任何類型的事件,這是因為區(qū)塊鏈?zhǔn)褂昧薖2P系統(tǒng)、加密技術(shù)、分布式共識方案等,并且使用者采取匿名的形式,從而使區(qū)塊鏈具有公開、可追蹤、抗篡改等屬性[4]。以太坊作為區(qū)塊鏈2.0的代表,是一種開源的基于區(qū)塊鏈的軟件平臺。以太坊通過轉(zhuǎn)換賬戶的余額并改變狀態(tài)進(jìn)行交易。狀態(tài)表示所有賬戶的當(dāng)前余額及其他數(shù)據(jù),作為獨(dú)立數(shù)據(jù)進(jìn)行編碼和維護(hù)。賬戶的類型有外部擁有賬戶和合同賬戶兩種。交易中使用到的加密貨幣叫作以太幣。使用這種加密貨幣,可以向其他賬戶進(jìn)行付款(P2P支付)或者支付某種操作請求。
針對復(fù)雜網(wǎng)絡(luò)的研究是由網(wǎng)絡(luò)中“小世界”和“無標(biāo)度”兩個特征興起而來的,WATTS等[5]利用演員合作數(shù)據(jù)發(fā)現(xiàn)了小世界特性,BARABASI等[6]發(fā)現(xiàn)萬維網(wǎng)的無標(biāo)度性質(zhì);在復(fù)雜網(wǎng)絡(luò)中,挖掘發(fā)現(xiàn)網(wǎng)絡(luò)的重要節(jié)點是一個核心問題,目前包含多種中心性指標(biāo),如度中心性、介數(shù)中心性[7]、接近中心性[8]、網(wǎng)絡(luò)的核[9]、PAGE等[10]基于隨機(jī)游走排序算法提出PageRank指標(biāo)等。復(fù)雜網(wǎng)絡(luò)理論對于實際網(wǎng)絡(luò)的應(yīng)用也取得重要成果。張彥超等[11]利用復(fù)雜網(wǎng)絡(luò)理論構(gòu)造了基于在線社交網(wǎng)絡(luò)的信息傳播模型,發(fā)現(xiàn)模型符合在線社交網(wǎng)絡(luò)特性,并且該網(wǎng)絡(luò)高度連通;BARRAT等[12]通過復(fù)雜網(wǎng)絡(luò)理論研究航空交通關(guān)系,發(fā)現(xiàn)機(jī)場的航線數(shù)和機(jī)場的運(yùn)力呈超線性關(guān)系;段文奇等[13]利用復(fù)雜網(wǎng)絡(luò)研究全球貿(mào)易,發(fā)現(xiàn)國際貿(mào)易存在動態(tài)演化過程。
考慮到以太坊支付中具有P2P支付特征,結(jié)合加密貨幣交易網(wǎng)絡(luò)結(jié)構(gòu),符合構(gòu)成一個復(fù)雜網(wǎng)絡(luò)的條件。本研究運(yùn)用以太坊外部擁有賬戶的交易情況進(jìn)行建模分析,旨在找到關(guān)鍵賬戶加強(qiáng)其自身安全性建設(shè)。利用復(fù)雜網(wǎng)絡(luò)的相關(guān)研究方法進(jìn)行分析,可以掌握以太坊網(wǎng)絡(luò)結(jié)構(gòu)、識別關(guān)鍵賬戶,并具有易操作、實驗結(jié)果明顯等優(yōu)勢。
3研究理論和數(shù)據(jù)(Research theory and data)
3.1以太坊數(shù)據(jù)及建模
3.1.1以太坊數(shù)據(jù)源
區(qū)塊鏈系統(tǒng)擁有三種原始數(shù)據(jù)類型:區(qū)塊、交易回執(zhí)和追蹤數(shù)據(jù)。
區(qū)塊數(shù)據(jù)直接存儲在以太坊區(qū)塊鏈中,每個區(qū)塊由區(qū)塊頭和區(qū)塊事務(wù)組成[14]。區(qū)塊頭包含一個區(qū)塊的基本信息,包括礦工地址、時間戳等;區(qū)塊事務(wù)構(gòu)成區(qū)塊的主體,每一個事務(wù)由From,To,Value,Input(發(fā)起賬戶,目標(biāo)賬戶,值,輸入)等組成。追蹤數(shù)據(jù)本質(zhì)上是一種內(nèi)部合同,即資金從一個賬戶轉(zhuǎn)移到另一個賬戶。
XBlock.pro是一個分享區(qū)塊鏈數(shù)據(jù)集的共享平臺,它收集了當(dāng)前主流的區(qū)塊鏈加密貨幣的相關(guān)數(shù)據(jù),并對數(shù)據(jù)進(jìn)行清洗和歸類[15]。本文數(shù)據(jù)采集自XBlock.pro網(wǎng)站和文獻(xiàn)[16],通過運(yùn)行以太坊的全部節(jié)點獲得鏈上數(shù)據(jù)(From,To,Value),截至2019年3月10日,共收集5億多個節(jié)點和38億條交易數(shù)據(jù),本研究采用了其中隨機(jī)選擇的107,452個未標(biāo)記節(jié)點和374,641 條交易鏈接。
3.1.2交易網(wǎng)絡(luò)建模
目前,區(qū)塊鏈系統(tǒng)的交易模型分為兩種,即以交易為中心的模型和以賬戶為中心的模型[15],兩者的交易模式不同,網(wǎng)絡(luò)建模差別很大。簡單來說,以交易為中心的模型區(qū)塊鏈交易系統(tǒng)建模工作中,以交易作為網(wǎng)絡(luò)的節(jié)點,將用戶作為網(wǎng)絡(luò)的邊;而以賬戶為中心的模型區(qū)塊鏈交易系統(tǒng)建模工作中,以賬戶作為節(jié)點,資金轉(zhuǎn)移作為邊。
本文的研究對象以太坊是一種基于賬戶為中心的交易模型的區(qū)塊鏈系統(tǒng)。在相關(guān)研究中,有三種以太坊交易數(shù)據(jù)網(wǎng)絡(luò)建模方式,分別是資金流網(wǎng)絡(luò)、智能合約創(chuàng)建網(wǎng)絡(luò)和智能合約調(diào)動網(wǎng)絡(luò)[15]。在資金流網(wǎng)絡(luò)中,外部賬戶和合約賬戶抽象為網(wǎng)絡(luò)的節(jié)點,邊表示資金流向;在智能合約創(chuàng)建網(wǎng)絡(luò)和智能合約調(diào)用網(wǎng)絡(luò)中,分別以外部賬戶和合約賬戶作為網(wǎng)絡(luò)節(jié)點,與資金流網(wǎng)絡(luò)不同的是,邊分別表示合約的創(chuàng)建和合約的調(diào)用。
本研究為以太坊賬戶的關(guān)鍵節(jié)點識別,符合資金流網(wǎng)絡(luò)特征,故提出采用構(gòu)建資金流網(wǎng)絡(luò)作為本研究的區(qū)塊鏈系統(tǒng)建模方法。賬戶作為網(wǎng)絡(luò)中的節(jié)點v ,當(dāng)賬戶(節(jié)點vi?)與賬戶(v?j)之間存在交易或者資金流動時,則兩者之間存在邊eij。
4實驗和結(jié)果(Experiments and results)
4.1數(shù)據(jù)處理
本文采用上述提到的真實以太坊交易數(shù)據(jù)進(jìn)行實驗,截至2019年3月1日,共收集并篩選出374,641條交易數(shù)據(jù),將數(shù)據(jù)預(yù)處理后得到該網(wǎng)絡(luò)中節(jié)點的總數(shù)為107,451個,邊的總數(shù)為123,740條。圖2是從網(wǎng)絡(luò)中隨機(jī)選出的1,000個節(jié)點的網(wǎng)絡(luò)拓?fù)鋱D。
圖2中,網(wǎng)絡(luò)中心處的節(jié)點較為密集,邊緣位置的節(jié)點較為稀疏。
(1)Degree。節(jié)點度的概率分布通過曲線實現(xiàn),度分布概率曲線如圖3所示,度的概率分布服從冪律分布?;诙鹊墓?jié)點發(fā)布情況如表1所示。
度為1的節(jié)點有97,139 個,占比為90.403%;度為2和3的節(jié)點分別為3,289 個和1,089 個,占比共為4.074%。將所有節(jié)點按照度從大到小進(jìn)行排序,前0.981%的節(jié)點度在23—10,366,其中10 個節(jié)點度在1,000以上。
這表明在以太坊中,大部分節(jié)點的度很小,而少部分節(jié)點的度很大,即大部分的用戶(節(jié)點)只和很少的用戶交易,而少部分用戶和很多的用戶進(jìn)行交易。這些度很大的節(jié)點可能是礦池節(jié)點或交易中心。
(2)K-shell。Ks 指標(biāo)可以用來刻畫節(jié)點的中心性,節(jié)點的核心數(shù)越高,表明節(jié)點的位置越靠近中心,核心數(shù)越低,表明節(jié)點的位置越靠近邊緣。Ks 指數(shù)分布概率曲線如圖4所示。
基于Ks核心數(shù)的節(jié)點發(fā)布情況如表2所示。
Ks核心數(shù)為1的節(jié)點占比最高,節(jié)點數(shù)為98,349個,占比為91.529%;占比第二高的Ks值為3,節(jié)點數(shù)為4,643個,占比約為4.321%; Ks 值為13和22的節(jié)點分別有1,396 個和726 個,占比分別約為1.299%和0.676%。
在以太坊交易中,絕大部分節(jié)點都在網(wǎng)絡(luò)的邊緣,即其核心數(shù)為1;核心數(shù)在2—47的節(jié)點占比為7.921%,除了上邊緣節(jié)點外的多數(shù)節(jié)點處于此情況;核心數(shù)在48—86的節(jié)點占比為0.550%。核心數(shù)最大的這些節(jié)點處于網(wǎng)絡(luò)的中心,符合拓?fù)浣Y(jié)構(gòu)中的中心節(jié)點少、邊緣節(jié)點多的特點。
(3)H-index。H-index用來描述節(jié)點的影響力排行。H指數(shù)分布概率曲線如圖5所示。
H指數(shù)在1—55范圍,其分布概率同樣服從冪律分布。H指數(shù)值為1的節(jié)點有98,563 個,占比為91.728%; H 值為2—3和4—9的節(jié)點數(shù)分別為6,256 個和3,798 個,占比分別為5.822%和2.067%; H 值最大為55,則H 值為20—55的節(jié)點,即大致可以看作本網(wǎng)絡(luò)中該指標(biāo)識別的重要節(jié)點,節(jié)點數(shù)為65 個,占比為0.061%?;贖 指數(shù)可知,在以太坊交易網(wǎng)絡(luò)中,少數(shù)的賬戶節(jié)點對其他節(jié)點造成的影響力巨大。
(4)PageRank。PR 指數(shù)代表節(jié)點在全局網(wǎng)絡(luò)中的影響力,其絕大部分節(jié)點的PR值不盡相同,由此本研究中按照數(shù)值的數(shù)量級進(jìn)行劃分,基于PR值的節(jié)點發(fā)布情況如表4所示。
PR值在數(shù)量級為10-2的節(jié)點只有3個,而數(shù)量級為10-6的節(jié)點有101,246 個,占據(jù)所有節(jié)點的94.225%?;赑R 指數(shù)可知,極少量的賬戶會對以太坊交易網(wǎng)絡(luò)形成全局性的影響,而大量的節(jié)點的影響力很小。
綜上,對于以太坊交易網(wǎng)絡(luò),我們可以看到度值為1、Ks 核心數(shù)為1、H指數(shù)為1和數(shù)量級為10-6的節(jié)點數(shù)量占整個網(wǎng)絡(luò)節(jié)點約90%?;诖?,下一步實驗中選取10%左右的節(jié)點作為重要節(jié)點,重點關(guān)注刪除這些節(jié)點后對網(wǎng)絡(luò)分別進(jìn)行靜態(tài)攻擊和動態(tài)攻擊的效果。
4.2網(wǎng)絡(luò)攻擊模擬
基于以太坊交易網(wǎng)絡(luò),本文對度排序方法、K-shell算法、H-index算法和PageRank算法進(jìn)行了比較分析。根據(jù)四種算法的排序結(jié)果,分別以靜態(tài)攻擊與動態(tài)攻擊的方法移除排名靠前的一定比例的節(jié)點,模擬網(wǎng)絡(luò)遭受蓄意攻擊時最大連通片相對規(guī)模和剩余連通片平均規(guī)模的變化情況,從而分析網(wǎng)絡(luò)結(jié)構(gòu)。
(1)靜態(tài)攻擊效果。在靜態(tài)攻擊模式中,節(jié)點重要度指標(biāo)不隨著網(wǎng)絡(luò)結(jié)構(gòu)變化而變化,并保持與原始網(wǎng)絡(luò)中各指標(biāo)的值一樣[22]。在模擬蓄意攻擊網(wǎng)絡(luò)對網(wǎng)絡(luò)影響的實驗中,最大連通片相對規(guī)模和剩余連通片平均規(guī)模情況如圖6和圖7所示。
在本實驗的以太網(wǎng)交易網(wǎng)絡(luò)中,Degree和PageRank指標(biāo)下的G 值(最大連通片相對規(guī)模)下降幅度較大,這表明度排序方法和PageRank算法導(dǎo)致網(wǎng)絡(luò)最大連通片相對規(guī)模變小的總體趨勢較為明顯,即這兩種識別節(jié)點重要性的方法更加適用于本研究的以太坊交易網(wǎng)絡(luò)。觀察圖7可以看見,剩余連通片平均規(guī)模會急劇增大,其中在H-index算法中表現(xiàn)得最為明顯,整個網(wǎng)絡(luò)遭到嚴(yán)重的破壞。
分析圖6可以發(fā)現(xiàn),在蓄意攻擊時,以太坊交易網(wǎng)絡(luò)對于重要度高的節(jié)點的移除非常敏感。當(dāng)少數(shù)(約10%)的中心節(jié)點被移除時,G 值立即減小,即一些較大的子集即刻被碎片化并從網(wǎng)絡(luò)上剝離,網(wǎng)絡(luò)結(jié)構(gòu)破壞嚴(yán)重;通過圖7可以發(fā)現(xiàn),當(dāng)10%左右的節(jié)點遭到攻擊后,網(wǎng)絡(luò)發(fā)生了崩潰。
本文研究的以太網(wǎng)交易網(wǎng)絡(luò)中,我們可以理解為重要度排名前10%的節(jié)點對于整個網(wǎng)絡(luò)的結(jié)構(gòu)和穩(wěn)定性都有著極為重要的意義,并且整個以太坊交易對于這類節(jié)點(重要度排名前10%的節(jié)點)的移除表現(xiàn)最敏感。
(2)動態(tài)攻擊效果。在動態(tài)攻擊模式中,每移除一個節(jié)點或一定比例的節(jié)點,節(jié)點的各個重要度指標(biāo)需要更新一次[22]。最大連通片相對規(guī)模和剩余連通片平均規(guī)模情況如圖8和圖9所示。
觀察圖8可以發(fā)現(xiàn),在最大連通片相對規(guī)模實驗中,刪除前約5%的節(jié)點后, G 值即達(dá)到最低值0,此外度排序、K-shell、H-index和PageRank算法對實驗的結(jié)果影響沒有特別大的差異,這表明以太坊交易網(wǎng)絡(luò)中節(jié)點的重要性很容易通過這4 種算法識別且效果較好、誤差不大。在剩余連通片平均規(guī)模實驗中,PageRank算法獲得的μ 值波動最小,可見使用其算法識別的重要節(jié)點對于動態(tài)攻擊的反應(yīng)較小。
此外,靜態(tài)攻擊和動態(tài)攻擊實驗中對比兩種攻擊模式下的網(wǎng)絡(luò)瓦解效果,發(fā)現(xiàn)動態(tài)攻擊明顯優(yōu)于靜態(tài)攻擊。
5結(jié)論(Conclusion)
區(qū)塊鏈由于其去中心化的結(jié)構(gòu)特征可以有效地減少網(wǎng)絡(luò)攻擊帶來的危害,但是無法避免運(yùn)行區(qū)塊鏈時使用到的外部設(shè)備遭到惡意攻擊。為了驗證區(qū)塊鏈交易中重要的節(jié)點對于整個網(wǎng)絡(luò)具有重要的意義這一假設(shè),本文以以太坊交易為例,創(chuàng)建復(fù)雜網(wǎng)絡(luò),通過度、K-shell、H-index和PageRank算法識別以太坊網(wǎng)絡(luò)中的關(guān)鍵節(jié)點,并通過攻擊網(wǎng)絡(luò)實驗分析得出結(jié)論:①以太坊網(wǎng)絡(luò)是一個典型的無標(biāo)度網(wǎng)絡(luò);②以太坊網(wǎng)絡(luò)表現(xiàn)出對網(wǎng)絡(luò)攻擊的脆弱性,破壞相同數(shù)量的節(jié)點時,動態(tài)攻擊效果優(yōu)于靜態(tài)攻擊;③在以太坊網(wǎng)絡(luò)中往往有少量(約10%)的節(jié)點在整個網(wǎng)絡(luò)中占據(jù)了十分重要的地位,當(dāng)這些節(jié)點被破壞,就會導(dǎo)致整個網(wǎng)絡(luò)崩潰,因此需要強(qiáng)調(diào)這些節(jié)點外部設(shè)備的安全性建設(shè)。
近年來,越來越多的研究人員將目光從區(qū)塊鏈原理轉(zhuǎn)移到區(qū)塊鏈的安全性研究中,本文提出將區(qū)塊鏈結(jié)合復(fù)雜網(wǎng)絡(luò)方法識別關(guān)鍵節(jié)點,此類節(jié)點對于整個網(wǎng)絡(luò)的魯棒性和結(jié)構(gòu)穩(wěn)定性具有重要作用,并呼吁研究人員加強(qiáng)對此類節(jié)點外部設(shè)備的安全建設(shè),其具體實施的方法、流程將是相關(guān)人員下一步研究的方向。
作者簡介:
朱小棟(1981-),男,博士,副教授.研究領(lǐng)域:深度學(xué)習(xí),網(wǎng)絡(luò)空間安全,電子商務(wù).
劉欣(2000-),男,碩士生.研究領(lǐng)域:跨境電子商務(wù),復(fù)雜網(wǎng)絡(luò).