• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于背書特征的電力行業(yè)聯(lián)盟鏈賬本篡改攻擊檢測方法

      2023-11-01 01:13:50王棟楊珂李達(dá)周啟惠張艷秋阮倩昀王瑜
      電力建設(shè) 2023年11期
      關(guān)鍵詞:背書賬本區(qū)塊

      王棟,楊珂,李達(dá),周啟惠,張艷秋,阮倩昀,王瑜

      (1.國網(wǎng)數(shù)字科技控股有限公司,北京市 100053; 2. 國網(wǎng)區(qū)塊鏈科技(北京)有限公司,北京市 100053;3. 國網(wǎng)區(qū)塊鏈應(yīng)用技術(shù)實(shí)驗(yàn)室,北京市 100053;4. 中國科學(xué)院信息工程研究所,北京市 100093)

      0 引 言

      隨著我國清潔能源的發(fā)展,綠電交易量大幅提升,傳統(tǒng)電力交易模式面臨綠電交易機(jī)制不完善、交易環(huán)節(jié)公開透明度不足、跨省區(qū)交易組織難[1-3]等一系列挑戰(zhàn)。區(qū)塊鏈因其多節(jié)點(diǎn)、防篡改、公開透明的特點(diǎn)與綠電交易的業(yè)務(wù)需求高度契合,能夠很好解決清潔能源發(fā)展過程中的業(yè)務(wù)痛點(diǎn)。目前依托“區(qū)塊鏈+電力交易”深度融合的關(guān)鍵技術(shù)[4-7],搭建起公開透明、高效可信的綠電交易系統(tǒng)。典型的綠電交易系統(tǒng)所依賴的區(qū)塊鏈服務(wù)以聯(lián)盟鏈為技術(shù)架構(gòu),為各類業(yè)務(wù)提供安全可信的底層區(qū)塊鏈基礎(chǔ)設(shè)施服務(wù)。

      近年來,以比特幣[8]和以太坊[9]等為代表的公鏈多次遭受51%算力攻擊,即攻擊者通過某種方式控制全網(wǎng)超50%的算力,達(dá)到了篡改全網(wǎng)區(qū)塊鏈賬本的效果[10-14]。與公鏈不同,電力行業(yè)聯(lián)盟鏈中的共識不采用工作量證明機(jī)制,其賬本篡改攻擊不需要掌握超過全網(wǎng)一半的算力[15-16]。聯(lián)盟鏈為了提高鏈中數(shù)據(jù)查詢速度,采用數(shù)據(jù)庫存儲數(shù)據(jù)最新狀態(tài),數(shù)據(jù)庫的存在為實(shí)現(xiàn)賬本篡改攻擊提供了可行性。因此,在電力聯(lián)盟鏈中通過篡改電力企業(yè)節(jié)點(diǎn)的狀態(tài)數(shù)據(jù)庫中存儲的電量值,會造成客戶端查詢數(shù)據(jù)不一致,若實(shí)施篡改電量值的惡意節(jié)點(diǎn)數(shù)量滿足背書策略,這便達(dá)成了惡意節(jié)點(diǎn)在后續(xù)的電力交易中對鏈中所有節(jié)點(diǎn)賬本中電量值的全局控制,對正常的電力交易活動造成惡劣影響。

      面對上述攻擊,學(xué)術(shù)界目前采取的解決措施包括防護(hù)和檢測這兩大類方法。針對攻擊的防護(hù)方案能夠減少攻擊發(fā)生的概率,文獻(xiàn)[17]提出了一種新共識方法,該方法使得掌握51%算力的攻擊者篡改區(qū)塊鏈數(shù)據(jù)的可能性較小。文獻(xiàn)[18]提出了一種針對底層協(xié)議參數(shù)的補(bǔ)救措施,可阻止控制系統(tǒng)大部分資源的攻擊者對區(qū)塊鏈一致性攻擊。文獻(xiàn)[19]提出了一種基于歷史權(quán)重信息的方法,分析歷史區(qū)塊中礦工出現(xiàn)頻率并計算歷史權(quán)重難度,使得攻擊發(fā)生代價增加2個數(shù)量級。文獻(xiàn)[20]提出了一種區(qū)塊延遲發(fā)出的懲罰系統(tǒng),基于攻擊者向網(wǎng)絡(luò)隱藏區(qū)塊的時間對攻擊者進(jìn)行處罰。

      防護(hù)方案不能完全杜絕攻擊發(fā)生,因此對攻擊的檢測也至關(guān)重要,即及時發(fā)現(xiàn)在鏈中發(fā)生的賬本篡改攻擊并提供預(yù)警功能。機(jī)器學(xué)習(xí)方法由于其易用及有效性,已被廣泛用于區(qū)塊鏈的異常檢測,文獻(xiàn)[21]提出了一種基于自動編碼器及時序模型算法的區(qū)塊鏈異常檢測方法,通過分析區(qū)塊交易統(tǒng)計信息成功發(fā)現(xiàn)了ETC上發(fā)生的51%算力攻擊。文獻(xiàn)[22]提出了一種針對比特幣交易的異常檢測模型,利用支持向量機(jī)和K-Means算法可以檢測出51%算力攻擊。文獻(xiàn)[23]使用智能軟件代理監(jiān)控區(qū)塊鏈中異常行為,提出利用監(jiān)督機(jī)器學(xué)習(xí)算法和博弈論算法以檢測51%算力攻擊的發(fā)生。

      上述檢測方法僅面向公鏈和聯(lián)盟鏈在共識以及交易流程等方面存在巨大差異性,用機(jī)器學(xué)習(xí)方法做攻擊檢測時,需要收集的數(shù)據(jù)特征也不一樣,公鏈中的數(shù)據(jù)集以及數(shù)據(jù)集的攻擊特征無法適用于聯(lián)盟鏈。目前針對聯(lián)盟鏈賬本篡改攻擊的檢測方案較少,文獻(xiàn)[24]提出了一種基于規(guī)則的檢測方法,將數(shù)據(jù)庫中存儲的狀態(tài)數(shù)據(jù)與無法篡改的區(qū)塊數(shù)據(jù)進(jìn)行比對,但這種方式會對區(qū)塊鏈系統(tǒng)本身造成很大性能負(fù)擔(dān)。惡意實(shí)用拜占庭容錯(practical Byzantine fault tolerance,PBFT)共識會導(dǎo)致賬本篡改攻擊,文獻(xiàn)[25]提出了一種利用機(jī)器學(xué)習(xí)對聯(lián)盟鏈上PBFT共識異常的檢測方案,驗(yàn)證了機(jī)器學(xué)習(xí)方法對聯(lián)盟鏈上異常共識行為檢測的有效性。文獻(xiàn)[26]也采用機(jī)器學(xué)習(xí)方法對僅基于PBFT單一共識的聯(lián)盟鏈惡意節(jié)點(diǎn)進(jìn)行檢測。文獻(xiàn)[27]利用聯(lián)盟鏈構(gòu)建健康關(guān)懷系統(tǒng),并使用圖卷積神經(jīng)網(wǎng)絡(luò)檢測惡意節(jié)點(diǎn)。文獻(xiàn)[28]提出了一種基于K近鄰算法(k-nearest neighbor,KNN)聯(lián)盟鏈異常交易檢測方法,雖然此方法是針對聯(lián)盟鏈設(shè)計的,但在實(shí)驗(yàn)驗(yàn)證階段卻采用比特幣交易數(shù)據(jù)進(jìn)行驗(yàn)證,缺乏基于聯(lián)盟鏈上攻擊數(shù)據(jù)特征進(jìn)行數(shù)據(jù)集構(gòu)建,無法應(yīng)對聯(lián)盟鏈的異常檢測需求。

      針對上述問題,本文首先在電力聯(lián)盟鏈綠電交易仿真環(huán)境中實(shí)現(xiàn)賬本篡改攻擊,然后提取攻擊相關(guān)的多個背書特征進(jìn)行數(shù)據(jù)集構(gòu)建,并基于隨機(jī)森林算法設(shè)計賬本篡改攻擊在線檢測方法。本文的主要貢獻(xiàn)為:

      1)在電力聯(lián)盟鏈綠電交易仿真環(huán)境中,基于狀態(tài)數(shù)據(jù)庫更改實(shí)現(xiàn)針對綠電交易場景的賬本篡改攻擊,研究并提取與攻擊有關(guān)的背書讀寫集相似度、背書時間方差、驗(yàn)證時間均值和背書率4類背書特征。

      2)基于背書特征構(gòu)建攻擊檢測所需的數(shù)據(jù)集,采用Boosting隨機(jī)森林算法進(jìn)行檢測模型訓(xùn)練,并將模型非侵入式部署,在線檢測賬本篡改攻擊行為,通過閉環(huán)反饋機(jī)制的增強(qiáng)學(xué)習(xí)不斷提升模型的精度和健壯性。

      3)通過實(shí)施多組對比實(shí)驗(yàn),與已有方法相比,本文所提方法具有耗能低、檢測精度高、不局限于單一共識算法等優(yōu)點(diǎn)。

      1 區(qū)塊鏈綠電交易平臺概述

      基于能源互聯(lián)網(wǎng)的區(qū)塊鏈綠電交易平臺依托聯(lián)盟鏈搭建。在綠電交易業(yè)務(wù)場景中,主要由發(fā)電機(jī)構(gòu)、電網(wǎng)企業(yè)和售電企業(yè)這三大類主體組成,以完成綠電的發(fā)電、輸送配送和售電業(yè)務(wù)。其中,發(fā)電機(jī)構(gòu)生產(chǎn)的電能由電網(wǎng)企業(yè)輸送并根據(jù)用電需求向用戶分配電能,售電企業(yè)則負(fù)責(zé)電能的批發(fā)和零售等以實(shí)現(xiàn)電力產(chǎn)品價值的工作[29]。

      為了提高鏈中數(shù)據(jù)查詢速度,電力聯(lián)盟鏈除了使用文件賬本外,還采用數(shù)據(jù)庫存儲區(qū)塊鏈中數(shù)據(jù)最新狀態(tài),數(shù)據(jù)均為鍵-值(key-value)形式。交易首先被模擬執(zhí)行得到讀寫集并被簽名背書,讀集代表交易模擬執(zhí)行時讀到存儲在狀態(tài)數(shù)據(jù)庫中key以及key的version,version的形式是(區(qū)塊號,交易號),其代表了被更改后key值對應(yīng)著的最新已完成交易所在區(qū)塊號以及交易號。寫集代表模擬執(zhí)行后產(chǎn)生的狀態(tài)更新,即被更改key以及key對應(yīng)的新value。

      讀寫集示例如表1所示。假定鏈中存在發(fā)電機(jī)構(gòu)、電網(wǎng)企業(yè)和售電企業(yè),這3類的代表節(jié)點(diǎn)分別為P0、P1、P2,三個節(jié)點(diǎn)產(chǎn)生各自背書讀寫集。比如在節(jié)點(diǎn)P0上,keyA的version是(1, 0),代表這筆交易對keyA進(jìn)行操作,并且更改了keyA值的最新已完成交易是1號區(qū)塊的0號交易,所以keyA的version為(1, 0)。在節(jié)點(diǎn)P0上模擬執(zhí)行完當(dāng)前交易后,keyA的值會變?yōu)?8, 所以寫集中value為98。

      表1 讀寫集示例

      電力聯(lián)盟鏈交易流程如圖1所示,鏈中交易遵循“模擬執(zhí)行—排序成區(qū)塊—驗(yàn)證提交”3個階段??蛻舳税l(fā)送交易給背書策略指定的背書節(jié)點(diǎn)。背書策略在交易過程中極為重要,用于在交易驗(yàn)證階段驗(yàn)證交易的有效性,并且執(zhí)行電力交易智能合約需指定交易的背書節(jié)點(diǎn),例如“在一共5個背書節(jié)點(diǎn)中要求滿足至少3個節(jié)點(diǎn)背書”。在綠電交易過程中,背書節(jié)點(diǎn)可為發(fā)電機(jī)構(gòu)節(jié)點(diǎn)、電網(wǎng)企業(yè)節(jié)點(diǎn)和售電企業(yè)節(jié)點(diǎn)這3類角色。每個交易都被背書節(jié)點(diǎn)模擬執(zhí)行得到讀寫集,背書節(jié)點(diǎn)會對交易的讀寫集進(jìn)行簽名,這一步稱為背書。接下來,交易進(jìn)入排序環(huán)節(jié),客戶端收集背書結(jié)果,把背書后的交易發(fā)送給排序服務(wù),由排序服務(wù)采用共識算法把交易排序打包成區(qū)塊。之后區(qū)塊被廣播給所有節(jié)點(diǎn)。每個節(jié)點(diǎn)在驗(yàn)證階段依據(jù)背書策略驗(yàn)證交易的有效性。如果交易有效,則把交易有效標(biāo)志位設(shè)置為是,同時把交易的寫集更新到本地狀態(tài)數(shù)據(jù)庫中;如果交易無效,則把交易有效標(biāo)志位設(shè)置為否,同時放棄交易的寫集,不更新本地的狀態(tài)數(shù)據(jù)庫。

      圖1 電力聯(lián)盟鏈中的交易流程

      2 賬本篡改攻擊與攻擊特征提取

      本節(jié)在電力聯(lián)盟鏈綠電交易仿真環(huán)境下,實(shí)現(xiàn)針對綠電交易場景的賬本篡改攻擊,并分析攻擊的實(shí)現(xiàn)原理及攻擊造成的后果。研究并提取與攻擊緊密相關(guān)的多個背書特征,為后續(xù)攻擊檢測提供數(shù)據(jù)支撐。

      2.1 賬本篡改攻擊

      本節(jié)搭建了電力聯(lián)盟鏈綠電交易仿真環(huán)境,模擬完成了由發(fā)電機(jī)構(gòu)、電網(wǎng)企業(yè)和售電企業(yè)參與的發(fā)電、輸電、配電和售電的基本綠電交易活動,并且基于此交易場景實(shí)現(xiàn)了賬本篡改攻擊。在電力聯(lián)盟鏈中,賬本篡改攻擊主要是通過修改狀態(tài)數(shù)據(jù)庫中數(shù)據(jù)來實(shí)現(xiàn)的,具體過程如下:

      在正常情況下,狀態(tài)數(shù)據(jù)是由客戶端通過調(diào)用智能合約發(fā)起交易來改變,比如狀態(tài)數(shù)據(jù)庫中存儲了電網(wǎng)企業(yè)節(jié)點(diǎn)待輸送電量的key(Pe)和售電企業(yè)節(jié)點(diǎn)待售電量的key(Se),對應(yīng)value值分別是100和200,當(dāng)客戶端通過調(diào)用輸電智能合約發(fā)起一筆電網(wǎng)企業(yè)節(jié)點(diǎn)傳輸10個單位電量到售電企業(yè)節(jié)點(diǎn)的交易,若這筆交易有效,交易首先會打包到區(qū)塊并存儲到文件賬本中,同時狀態(tài)數(shù)據(jù)庫中Pe和Se的value值變?yōu)?0和210。

      由于節(jié)點(diǎn)狀態(tài)數(shù)據(jù)庫會掛載到節(jié)點(diǎn)所在主機(jī)的文件系統(tǒng)中,通過定位主機(jī)節(jié)點(diǎn)的數(shù)據(jù)庫,讀取數(shù)據(jù)庫狀態(tài)數(shù)據(jù)并對其進(jìn)行修改,能夠?qū)崿F(xiàn)篡改節(jié)點(diǎn)數(shù)據(jù)庫的目的。圖2中電網(wǎng)企業(yè)用戶篡改了其狀態(tài)數(shù)據(jù)庫中存儲待售電量Se對應(yīng)值,由210→230,客戶端查詢發(fā)電機(jī)構(gòu)節(jié)點(diǎn)和售電企業(yè)節(jié)點(diǎn)數(shù)據(jù)庫中Se的值為210,但客戶端查詢電網(wǎng)企業(yè)節(jié)點(diǎn)數(shù)據(jù)庫中Se的值為230,即從電網(wǎng)企業(yè)節(jié)點(diǎn)上查到了不一致的數(shù)據(jù)。

      圖2 客戶端查詢數(shù)據(jù)不一致

      更進(jìn)一步地,如果篡改狀態(tài)數(shù)據(jù)的組織數(shù)量滿足了背書策略,那么全局賬本數(shù)據(jù)都將被篡改。例如,設(shè)置背書策略為至少滿足電力企業(yè)的2個代表節(jié)點(diǎn)的背書結(jié)果一致,在該背書策略下,若電網(wǎng)企業(yè)節(jié)點(diǎn)和發(fā)電機(jī)構(gòu)節(jié)點(diǎn)合謀,篡改數(shù)據(jù)庫中待售電量Se值由210→230,而售電企業(yè)中Se值仍為210。賬本篡改攻擊如圖3所示,現(xiàn)在客戶端發(fā)起一筆由待輸送電量Pe轉(zhuǎn)10個單位電量到Se交易,在背書階段執(zhí)行交易后返回的讀寫集中,電網(wǎng)企業(yè)節(jié)點(diǎn)和發(fā)電機(jī)構(gòu)節(jié)點(diǎn)中Se的值均為240,由于這2個節(jié)點(diǎn)的背書結(jié)果一致,符合了背書策略,因此該筆交易有效,所有的節(jié)點(diǎn)都會用讀寫集中Se值為240來更新狀態(tài)數(shù)據(jù)庫。在這種情況下,雖然售電企業(yè)節(jié)點(diǎn)并沒有篡改狀態(tài)數(shù)據(jù)庫,但最終仍“被動”與其他篡改過數(shù)據(jù)庫節(jié)點(diǎn)賬本數(shù)據(jù)一致,從而達(dá)到全局賬本篡改的效果。而一旦鏈中Se值被惡意篡改,將嚴(yán)重影響到正常的綠電交易過程,上述攻擊不僅使得售電企業(yè)節(jié)點(diǎn)待售電量虛高,更惡劣的是將無法保障最終用戶收到所約定好一定量的電能產(chǎn)品,從而影響最終用戶的用電,會造成巨大的經(jīng)濟(jì)損失。

      圖3 賬本篡改攻擊

      在綠電交易業(yè)務(wù)場景中,當(dāng)需要從鏈上讀取數(shù)據(jù)時,鏈?zhǔn)侵苯訌墓?jié)點(diǎn)本地數(shù)據(jù)庫中讀取狀態(tài)數(shù)據(jù)。在交易背書階段對于每個鍵值對最新狀態(tài)查詢僅訪問狀態(tài)數(shù)據(jù)庫。因此通過攻擊某個節(jié)點(diǎn)狀態(tài)數(shù)據(jù)庫,之后有可能讀到篡改后的數(shù)據(jù)。本文所實(shí)現(xiàn)賬本篡改攻擊的原理并不與聯(lián)盟鏈的不可篡改性矛盾,這是因?yàn)槁?lián)盟鏈?zhǔn)且枣準(zhǔn)浇Y(jié)構(gòu)來存儲區(qū)塊的,但這種不可篡改性只存在于文件賬本中,而存儲狀態(tài)數(shù)據(jù)數(shù)據(jù)庫是可被篡改的。

      2.2 攻擊特征提取

      根據(jù)上述分析的賬本篡改攻擊原理,電力聯(lián)盟鏈易受攻擊點(diǎn)在于交易流程背書階段中對于key-value最新狀態(tài)的查詢僅訪問狀態(tài)數(shù)據(jù)庫,通過篡改狀態(tài)數(shù)據(jù)庫中的值,從而造成客戶端查詢數(shù)據(jù)不一致甚至是鏈中所有賬本數(shù)據(jù)都被篡改的情況。與背書緊密相關(guān)的且受攻擊影響的特征將會有利于表征賬本篡改攻擊對背書階段的影響。在本節(jié)中,通過對電力聯(lián)盟鏈交易流程和攻擊特征的分析,提取背書讀寫集相似度、背書時間方差、驗(yàn)證時間均值和背書率這4類背書特征,并基于提取的特征構(gòu)建檢測數(shù)據(jù)集。

      2.2.1 背書讀寫集相似度

      在交易流程背書階段,發(fā)電機(jī)構(gòu)、電網(wǎng)企業(yè)和售電企業(yè)節(jié)點(diǎn)都會生成一個讀寫集,讀寫集的值依賴于節(jié)點(diǎn)本地狀態(tài)數(shù)據(jù)庫中存儲的值。狀態(tài)數(shù)據(jù)篡改可能會更改狀態(tài)數(shù)據(jù)庫中存儲key的value值以及version,從而導(dǎo)致不同節(jié)點(diǎn)產(chǎn)生背書讀寫集有差異,因此,可將節(jié)點(diǎn)上背書讀寫集相似度作為一類特征。為了計算背書讀寫集相似度,首先需要將所有節(jié)點(diǎn)背書讀寫集統(tǒng)一編碼,然后提取距離參考系,最后計算背書節(jié)點(diǎn)讀寫集編碼與參考系的平均距離。

      1)讀寫集統(tǒng)一編碼。

      讀寫集中key所對應(yīng)的version、value一般都以字符串形式表示,無法直接計算相似度,在計算相似度之前需要將其轉(zhuǎn)換為數(shù)字形式表示。因此,本方案對每個節(jié)點(diǎn)讀寫集中version和value進(jìn)行統(tǒng)一One-Hot編碼從而方便計算,得到編碼集合為Opi。One-Hot編碼,又稱為一位有效編碼,主要是采用位狀態(tài)寄存器來對狀態(tài)進(jìn)行編碼,在任意時候只有一位有效。使用One-Hot編碼,可將離散特征的取值擴(kuò)展到歐氏空間,使特征之間的距離計算更加合理。

      為了實(shí)現(xiàn)對讀寫集編碼,首先對所有讀寫集中version值和value值做統(tǒng)計,得到不同version值和不同value值的總數(shù),表1讀寫集示例的總類別數(shù)為7,然后每個version值或者value值會轉(zhuǎn)換為一個長度為7的二進(jìn)制向量,向量中只有一位為1,其余位為0。舉例來說,P0節(jié)點(diǎn)的讀集中的keyA-version,經(jīng)過編碼后變?yōu)閇0, 0, 0, 0, 0, 0, 1],總類別數(shù)為7,且它屬于第一類。表1的示例進(jìn)行統(tǒng)一One-Hot編碼后的結(jié)果如表2所示。

      表2 讀寫集統(tǒng)一編碼示例

      2)距離參考系Oc。

      計算背書讀寫集相似度D之前,需要得到鏈中大多數(shù)節(jié)點(diǎn)所共有的背書讀寫集,該讀寫集稱為距離參考系Oc,如果沒有發(fā)生數(shù)據(jù)庫中數(shù)據(jù)被篡改的情況,那么鏈中所有節(jié)點(diǎn)背書讀寫集是一致的,Oc就為當(dāng)前讀寫集,當(dāng)發(fā)生篡改情況時,就會出現(xiàn)節(jié)點(diǎn)背書讀寫集不一致情況,Oc計算方式定義為:

      (1)

      式中:k從0到Ls-1取值,Ls為所有key在讀集和寫集中出現(xiàn)的總次數(shù),即表2的行數(shù);j從0到Ln-1取值,Ln代表鏈中所有節(jié)點(diǎn)的個數(shù);OPj(k)為對于k代表的行(如keyA-version為第1行,對應(yīng)的k為0),第j個節(jié)點(diǎn)對應(yīng)的二進(jìn)制向量。如表1,當(dāng)取k=0,j=0時,OP0(0)=[0, 0, 0, 0, 0, 0, 1],即P0節(jié)點(diǎn)生成的讀集keyA-version的值。定義函數(shù)count[OPj(k)]的含義為當(dāng)k取值確定時,OPj(k)在所有節(jié)點(diǎn)出現(xiàn)的次數(shù),如表1所示,當(dāng)取k=0,j=0時,count[OP0(0)]=2,因?yàn)閷τ趉eyA-version,P0和P2節(jié)點(diǎn)對應(yīng)的二進(jìn)制向量是一致的,在所有節(jié)點(diǎn)中出現(xiàn)了2次。定義函數(shù)argmax()作用為當(dāng)count[OPj(k)]的取值最大時,返回對應(yīng)的OPj(k),如表1所示。

      (2)

      利用式(1),分別計算出當(dāng)k取不同值時,Oc(k)的值,計算結(jié)果如表3所示。

      3)計算相似度D。

      定義dist(x,y)為向量x、y的歐氏距離:

      (3)

      根據(jù)式(1)和式(3),則平均相似度即背書讀寫集相似度D定義為:

      (4)

      首先固定k,對表2中的第k行,計算每一列的元素OPj(k)與Oc(k)的距離,然后k遞增,繼續(xù)計算第k行中每一列的元素OPj(k)與Oc(k)的距離,最后計算Ln*Ls個距離值的平均值即為D。

      2.2.2 背書時間方差TE

      背書時需要進(jìn)行交易的模擬執(zhí)行,而模擬執(zhí)行輸入來自于狀態(tài)數(shù)據(jù)庫,在智能合約的函數(shù)中對不同類別輸入會選擇不同的代碼分支執(zhí)行,當(dāng)數(shù)據(jù)被篡改后,被篡改數(shù)據(jù)節(jié)點(diǎn)與正常節(jié)點(diǎn)在模擬執(zhí)行交易時,會選擇不同的代碼分支執(zhí)行,從而導(dǎo)致背書時間的不一致。

      本文定義第i個節(jié)點(diǎn)背書時間為Ei,那么n個節(jié)點(diǎn)背書時間方差定義為:

      (5)

      2.2.3 驗(yàn)證時間均值TV

      驗(yàn)證階段為交易的第3個階段,節(jié)點(diǎn)收到排序服務(wù)打包的區(qū)塊后,對其中每筆交易讀寫集進(jìn)行驗(yàn)證。篡改狀態(tài)數(shù)據(jù)庫中數(shù)據(jù)后,被篡改節(jié)點(diǎn)與其他正常節(jié)點(diǎn)產(chǎn)生背書讀寫集不同,由于交易的讀寫集是所有背書節(jié)點(diǎn)讀寫集的集合,因此攻擊發(fā)生時待驗(yàn)證交易讀寫集與未受到攻擊時待驗(yàn)證交易讀寫集有差別,從而導(dǎo)致交易驗(yàn)證時間有差異。并且驗(yàn)證階段,節(jié)點(diǎn)需要驗(yàn)證本地狀態(tài)數(shù)據(jù)version與被驗(yàn)證交易讀寫集中version是否一致。如果節(jié)點(diǎn)本地version被篡改過,也會導(dǎo)致驗(yàn)證過程與未受到攻擊時驗(yàn)證過程有差別。

      本文定義第i個節(jié)點(diǎn)的驗(yàn)證時間為Vi,那么n個節(jié)點(diǎn)的驗(yàn)證時間均值定義為:

      (6)

      2.2.4 背書策略背書率TP

      電力聯(lián)盟鏈的智能合約都有背書策略,假如鏈中有3類機(jī)構(gòu)分別為發(fā)電機(jī)構(gòu)、電網(wǎng)企業(yè)和售電企業(yè),背書策略指定機(jī)構(gòu)中至少2個節(jié)點(diǎn)對交易執(zhí)行結(jié)果進(jìn)行簽名。背書策略指定鏈中的節(jié)點(diǎn)執(zhí)行合約后對執(zhí)行結(jié)果進(jìn)行背書,在交易驗(yàn)證過程中,節(jié)點(diǎn)需要確保交易擁有合適數(shù)量的背書結(jié)果,即驗(yàn)證此交易滿足背書策略。背書率表示實(shí)際參加背書的節(jié)點(diǎn)數(shù)量與背書策略指定的背書節(jié)點(diǎn)數(shù)量的比值,用TP表示,該比值越大,則受到攻擊的概率越小,反之,則越大。

      3 賬本篡改攻擊檢測方法

      3.1 攻擊檢測任務(wù)概述

      基于背書特征的賬本篡改攻擊檢測工作流如圖4所示,主要包括數(shù)據(jù)收集、特征提取、模型訓(xùn)練、在線檢測以及增量更新。

      圖4 攻擊檢測工作流

      1)數(shù)據(jù)收集:收集發(fā)電機(jī)構(gòu)、電網(wǎng)企業(yè)和售電企業(yè)等多節(jié)點(diǎn)運(yùn)行時數(shù)據(jù)。為每個節(jié)點(diǎn)啟動一個非侵入式監(jiān)控節(jié)點(diǎn)獲取數(shù)據(jù),采集的監(jiān)控數(shù)據(jù)包括:一次交易的背書讀寫集、完成一次交易所需的背書時間、完成一次交易所需的驗(yàn)證時間和背書節(jié)點(diǎn)數(shù)量。數(shù)據(jù)按照單次交易觸發(fā)一次的頻率收集,即當(dāng)新交易發(fā)生時,在所有相關(guān)的節(jié)點(diǎn)上進(jìn)行一次數(shù)據(jù)采集。

      2)特征提取:匯總收集的數(shù)據(jù),利用本文特征計算方法提取數(shù)據(jù)特征,包括讀寫集相似度、背書時間方差、驗(yàn)證時間均值和背書率,為樣本生成4維特征向量。

      3)模型訓(xùn)練:訓(xùn)練階段,通過學(xué)習(xí)正常和攻擊樣本進(jìn)行基于隨機(jī)森林攻擊檢測模型的訓(xùn)練。

      4)在線檢測:檢測階段,實(shí)時收集正在運(yùn)行的鏈上數(shù)據(jù)并提取特征,利用上一步訓(xùn)練的模型,對實(shí)時采集的數(shù)據(jù)特征進(jìn)行在線攻擊檢測,并將檢測結(jié)果發(fā)送給用戶。

      5)增量更新:模型訓(xùn)練數(shù)據(jù)不能覆蓋所有的攻擊,因此提供閉環(huán)反饋機(jī)制的增強(qiáng)學(xué)習(xí)更新模型,在線檢測過程中會將判斷有誤的數(shù)據(jù)傳給分類器,分類器依托回傳數(shù)據(jù)增量訓(xùn)練提高模型精度。

      3.2 攻擊模型檢測

      本文采用分類與回歸樹(classification and regression tree,CART)算法生成決策樹,多棵決策樹形成隨機(jī)森林,有效避免單棵決策樹的過擬合問題[30],并采用基于Boosting的方法避免冗余樹的生成,降低內(nèi)存消耗。

      3.2.1 基于隨機(jī)森林的檢測模型

      隨機(jī)森林檢測模型如圖5所示,訓(xùn)練決策樹過程對訓(xùn)練集中的樣本有放回隨機(jī)采樣,對背書讀寫集相似度、背書時間方差、驗(yàn)證時間均值以及背書率4類特征隨機(jī)采樣,抑制模型的過擬合、提高分類器的健壯性。

      圖5 檢測模型的訓(xùn)練過程

      隨機(jī)森林的訓(xùn)練過程如下:

      1)樣本隨機(jī)采樣。給定包含正常和攻擊樣本的訓(xùn)練集X={x1,x2,…,xn}和帶有正常/異常的樣本目標(biāo)值Y={y1,y2,…,yn},使用有放回背書特征樣本采樣方法。多次采樣中沒有用到樣本作為驗(yàn)證集。

      2)特征隨機(jī)采樣。每個決策樹訓(xùn)練過程中隨機(jī)采樣背書特征,不使用全部的背書特征,如Tree1的特征是背書讀寫集相似度和驗(yàn)證時間均值,Tree2的特征是背書時間方差、驗(yàn)證時間均值和背書率。對于每棵樹而言,樣本和特征都是不同的。

      3)訓(xùn)練結(jié)果計算。決策樹的預(yù)測結(jié)果包括正常和異常,在分類任務(wù)中預(yù)測結(jié)果的類別通過投票方式選擇,將得票最高的結(jié)果作為最終輸出。由于該過程使用大量決策樹訓(xùn)練,有效避免了過擬合問題,但產(chǎn)生冗余決策樹會大量消耗內(nèi)存。

      3.2.2 基于Boosting的訓(xùn)練模型權(quán)重更新

      Boosting使用序列訓(xùn)練方法加速模型權(quán)重更新,為決策樹構(gòu)建信息互補(bǔ)對象,保證每棵樹信息都是高可用的,避免冗余樹的生成,降低內(nèi)存消耗。算法關(guān)鍵部分如下:

      1)節(jié)點(diǎn)劃分。

      給定{x1,y1,w1},…,{xN,yN,wN},依據(jù)隨機(jī)選取的背書特征和信息增益劃分決策樹節(jié)點(diǎn)。在計算信息增益過程中,樣本按最大權(quán)重進(jìn)行排序。信息增益計算過程為:

      (7)

      式中:ΔG為信息增益;Sn為節(jié)點(diǎn)n的樣本集合;Sl為樣本集合的左子節(jié)點(diǎn);Sr為樣本集合的右子節(jié)點(diǎn);E(·)為交叉熵計算。

      當(dāng)遞歸劃分將決策樹擴(kuò)展到一定的深度或者當(dāng)前到達(dá)節(jié)點(diǎn)的樣本信息增益為0時,會創(chuàng)建新的葉節(jié)點(diǎn)。

      2)決策樹權(quán)重。

      和多類Boosting[31-32]相似,決策樹權(quán)重的計算公式為:

      (8)

      式中:αt為決策樹權(quán)重;M為類別數(shù)量;εt為決策樹的分類錯誤率。

      3)訓(xùn)練樣本權(quán)重更新。

      通過使錯誤分類樣本權(quán)重變大,在下一步操作中構(gòu)建容易糾正錯誤分類樣本的決策樹。

      (9)

      式中:wi為決策樹的迭代更新權(quán)重,更新權(quán)重后權(quán)重被歸一化,重復(fù)訓(xùn)練過程,直到獲得最終權(quán)重。

      4 實(shí)驗(yàn)測評

      本節(jié)介紹實(shí)驗(yàn)環(huán)境以及數(shù)據(jù)集的構(gòu)成,從識別耗時、區(qū)塊鏈性能損耗、識別準(zhǔn)確率等方面將本文提出的方案與已有檢測方案進(jìn)行對比。

      4.1 實(shí)驗(yàn)環(huán)境

      電力聯(lián)盟鏈綠電交易仿真場景包括發(fā)電機(jī)構(gòu)節(jié)點(diǎn)、電網(wǎng)企業(yè)節(jié)點(diǎn)和售電企業(yè)節(jié)點(diǎn)3類節(jié)點(diǎn),每類的節(jié)點(diǎn)個數(shù)設(shè)置具有隨機(jī)性,為每個節(jié)點(diǎn)啟動一個非侵入式監(jiān)控節(jié)點(diǎn)收集信息,使用Kafka、Raft(一種崩潰容錯共識算法)、拜占庭容錯(robust Byzantine fault tolerance,RBFT)等多種共識算法,每個節(jié)點(diǎn)都在一個獨(dú)立OpenStack虛擬機(jī)上運(yùn)行,每個虛擬機(jī)使用相同硬件配置:vCPU(e3-1220 v5@ 3.00 GHz),內(nèi)存8 GB。所有虛擬機(jī)運(yùn)行在同一個局域網(wǎng)中,局域網(wǎng)交換機(jī)的速度為1.0 Gbit/s。

      4.2 數(shù)據(jù)集

      數(shù)據(jù)基于仿真環(huán)境采集,組建不同大小(節(jié)點(diǎn)數(shù)不同)以及不同應(yīng)用下的電力聯(lián)盟鏈綠電交易場景以提高數(shù)據(jù)豐富度:鏈中節(jié)點(diǎn)總數(shù)從2到24不等,多應(yīng)用場景智能合約包括配電合約、電力資產(chǎn)管理合約和電力實(shí)體身份認(rèn)證合約等,使用腳本模擬用戶隨機(jī)發(fā)起交易的行為。

      每條樣本包含一次交易的背書讀寫集相似度、完成一次交易所需背書時間方差、驗(yàn)證時間均值和背書率。對于負(fù)(異常)樣本的收集,隨機(jī)選擇上述節(jié)點(diǎn),對其進(jìn)行賬本篡改攻擊。數(shù)據(jù)集如表4所示,共16 800個樣本,正樣本8 505個,負(fù)樣本8 295個,訓(xùn)練集和測試集的占比為80%和20%。

      表4 數(shù)據(jù)集數(shù)量

      4.3 對比實(shí)驗(yàn)

      本節(jié)針對已有的基于規(guī)則檢測方法和其他機(jī)器學(xué)習(xí)方法進(jìn)行復(fù)現(xiàn),并與本文方法進(jìn)行多評估指標(biāo)對比。

      4.3.1 基于規(guī)則的檢測方法

      將文獻(xiàn)[24]提出的基于規(guī)則檢測方法稱為RULE方法,本文提出的檢測方法稱為ML方法。RULE方法是每次交易執(zhí)行之前,把節(jié)點(diǎn)狀態(tài)數(shù)據(jù)庫與文件賬本區(qū)塊中的數(shù)據(jù)作對比,若對比結(jié)果相同,則未受到攻擊,反之亦然。主要從識別耗時、對區(qū)塊鏈的性能損耗、識別準(zhǔn)確率方面進(jìn)行比較,其結(jié)果對比如圖6所示。

      圖6 本文方法與基于規(guī)則的檢測方法對比

      識別耗時表示從交易結(jié)束到檢測出攻擊所消耗的時間,如圖6(a)所示,隨著區(qū)塊數(shù)量增加,RULE方法識別耗時急劇增長,而ML方法的識別耗時保持穩(wěn)定且遠(yuǎn)小于RULE方法。ML方法使用樣本數(shù)據(jù)特征作為輸入,數(shù)據(jù)特征在交易過程中通過非侵入式監(jiān)控節(jié)點(diǎn)采集,不需要訪問區(qū)塊數(shù)據(jù),因此即使區(qū)塊數(shù)量增加,模型計算時間也不會變化;RULE方法在判斷是否發(fā)生攻擊時需要比對狀態(tài)數(shù)據(jù)庫與本地區(qū)塊賬本是否一致,隨著本地區(qū)塊數(shù)量的增加,每次逆序遍歷區(qū)塊賬本,尋找狀態(tài)數(shù)據(jù)庫中key所對應(yīng)的交易在區(qū)塊賬本中位置的時間也會增長。

      性能損耗表示攻擊檢測方法對電力聯(lián)盟鏈造成的影響,性能指標(biāo)為每秒處理的交易數(shù)(transaction per second,TPS)。使用RULE方法需要在每次交易執(zhí)行前暫停整體聯(lián)盟鏈網(wǎng)絡(luò),并且需要等待所有節(jié)點(diǎn)的檢測結(jié)果,對區(qū)塊鏈系統(tǒng)本身交易性能影響較大,隨著聯(lián)盟鏈網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量的增加,TPS迅速下降,如圖6(b)所示,在節(jié)點(diǎn)數(shù)量從2增加到24的過程中,RULE方法的TPS從344減小到258。本文提出的ML方法無需停止正常交易流程,對區(qū)塊鏈交易性能的影響很小,幾乎與原始交易性能一致,即使節(jié)點(diǎn)數(shù)量增加到24,TPS依然大于344,優(yōu)于RULE方法的最佳性能。以原始交易模式下的交易性能作為基準(zhǔn),RULE方法會造成34.75%的性能損耗,ML方法造成4.03%的性能損耗,ML方法的性能損耗遠(yuǎn)低于RULE方法。

      在準(zhǔn)確率方面,ML方法在相同95.75%準(zhǔn)確率下,比RULE方法,具有檢測耗時和性能損耗比較低的優(yōu)勢,在不影響實(shí)際業(yè)務(wù)運(yùn)行條件下,更滿足對電力聯(lián)盟鏈進(jìn)行賬本篡改攻擊的在線檢測需求。

      4.3.2 其他機(jī)器學(xué)習(xí)方法

      在聯(lián)盟鏈的攻擊檢測研究領(lǐng)域,基于機(jī)器學(xué)習(xí)研究方法相對較少,本節(jié)選取了2個準(zhǔn)確率較高且較相關(guān)的方法進(jìn)行對比實(shí)驗(yàn),分別為文獻(xiàn)[25](記為文獻(xiàn)MLCA)以及文獻(xiàn)[27](記為文獻(xiàn)GHAD)進(jìn)行實(shí)驗(yàn)對比。

      采用準(zhǔn)確率作為評價指標(biāo),由于本文方法與對比方法都是基于機(jī)器學(xué)習(xí)的方法,三者在識別耗時和對區(qū)塊鏈的性能損耗是接近的,不再進(jìn)行比對展示。三者的準(zhǔn)確率對比如圖7所示。與另外2種檢測方法相比,本文方法的檢測準(zhǔn)確率是最高的,從而說明了本文方案在電力聯(lián)盟鏈賬本篡改攻擊檢測上十分有效,包括數(shù)據(jù)集的設(shè)計和機(jī)器學(xué)習(xí)算法的選取。

      圖7 本文方法與其他基于機(jī)器學(xué)習(xí)的檢測方法對比

      由于對比方法所采用的數(shù)據(jù)集與本文采用的數(shù)據(jù)集存在不一致性,為了進(jìn)一步驗(yàn)證本文方法有效性,設(shè)置了另外一組對比實(shí)驗(yàn),分別將對比方法中所采用機(jī)器學(xué)習(xí)算法用于本文設(shè)計的數(shù)據(jù)集,得到的測試結(jié)果標(biāo)注為“僅MLCA算法”和“僅GHAD算法”。測試結(jié)果如圖7所示,可看到將對比方法中的機(jī)器學(xué)習(xí)算法用于本文的數(shù)據(jù)集,所得到測試結(jié)果的準(zhǔn)確率仍低于本文方法,模型的準(zhǔn)確率均小于92.50%,遠(yuǎn)低于本文方法得到的95.75%準(zhǔn)確值,從而說明在相同的數(shù)據(jù)集上,本文所采用的隨機(jī)森林算法效果更好。另外,由于本文提取的背書特征與共識算法類型無關(guān),檢測方法不局限于單一共識算法,可以適配多種共識算法。

      5 結(jié)束語

      針對電力聯(lián)盟鏈中的賬本篡改攻擊,本文提出了基于背書特征的檢測方法,進(jìn)行了試驗(yàn)驗(yàn)證,相比于現(xiàn)有檢測方法在識別耗時、區(qū)塊鏈性能損耗、檢測準(zhǔn)確率有較大優(yōu)勢,并能滿足電力聯(lián)盟鏈在線檢測的業(yè)務(wù)需求。目前本文用于攻擊檢測的特征僅包含背書讀寫集相似度、背書時間方差、驗(yàn)證時間均值和背書率4類,后續(xù)工作會增加特征種類及優(yōu)化特征提取方法,進(jìn)一步提高本文方法的識別準(zhǔn)確率。

      猜你喜歡
      背書賬本區(qū)塊
      一圖讀懂“上海賬本”
      背書是寫作的基本功
      快樂語文(2021年34期)2022-01-18 06:04:04
      背書
      區(qū)塊鏈:一個改變未來的幽靈
      科學(xué)(2020年5期)2020-11-26 08:19:12
      區(qū)塊鏈:主要角色和衍生應(yīng)用
      科學(xué)(2020年6期)2020-02-06 08:59:56
      數(shù)說:重慶70年“賬本”展示
      丟失的紅色賬本
      區(qū)塊鏈+媒體業(yè)的N種可能
      傳媒評論(2018年4期)2018-06-27 08:20:12
      讀懂區(qū)塊鏈
      丟失的紅色賬本
      大足县| 邹城市| 涡阳县| 尉犁县| 尚义县| 辽中县| 东兰县| 龙南县| 西乡县| 博湖县| 阿瓦提县| 永和县| 漳浦县| 咸丰县| 股票| 佛学| 河北区| 鲜城| 古交市| 承德县| 水城县| 鹤山市| 弥渡县| 保康县| 丹棱县| 田林县| 新乡县| 公主岭市| 新民市| 咸宁市| 蒙阴县| 青铜峡市| 安阳县| 桂阳县| 正宁县| 满洲里市| 十堰市| 彝良县| 黎平县| 临夏市| 衡水市|