常英賢,桂 綱,楊 濤,王紅梅,宋益睿,湯 泉,田 野
(1.國網山東省電力公司,山東 濟南 250001;2.國網山東省電力公司濟寧供電公司,山東 濟寧 272073;3.杭州鏈城數字科技有限公司,浙江 杭州 310012)
隨著產業數字化進程的推進和能源互聯網的發展,安全生產管理范疇開始涉及網絡安全問題。2017年5月,受到WannaCry永恒之藍勒索病毒的攻擊,中國石油緊急中斷所有加油站網絡端口,對油罐業務造成嚴重影響。在能源互聯網中,對網絡攻擊進行主動感知并預警至關重要。為此,研究者提出多種入侵檢測系統(Intrusion detection system,IDS),并廣泛部署在能源企業的主機上進行威脅檢測與攻擊溯源。當前主機入侵檢測方法可以分為兩種:一種是基于特征規則的方法,另一種是基于人工智能的方法。在基于特征規則的入侵檢測中,一種常用的方法是基于網絡數據包各維度數據特征進行攻擊分析,如根據流量日志中的源IP、目的IP、端口號和協議類型等協議信息[1-3],或是流量熵、主機之間的字節流量等統計信息[4-6]。有研究者提出了基于主機靜態代碼特征的分析方法,其通常是指在不運行程序的情況下,提取程序的指令、函數調用等可用于異常檢測的靜態代碼特征[7-9]。作為靜態檢測的補充,動態檢測方法[10-12]可以根據記錄的程序運行時上下文行為進行檢測。然而,上述基于特征規則的檢測方法需要大量的先驗知識和專家判斷,一旦有新的惡意軟件或者新的攻擊手段,基于特征規則的檢測就很難有效應對。基于人工智能的入侵檢測因具有較強的泛化能力和識別未知攻擊的能力,有效克服了傳統基于特征規則的入侵檢測固有缺陷,已被廣大研究者所采用。研究人員提出了傳統的機器學習方法(如支持向量機(SVM)[13]、K鄰近(KNN)[14]、人工神經網絡(ANN)[15]和隨機森林(RF)[16]),傳統的機器學習需要手工提取特征,存在覆蓋率與精度的瓶頸,故基于深度學習的方法被眾多研究者提出,如卷積神經網絡(CNN)[17-18]和循環神經網絡(RNN)[19-20]等。然而,現有基于傳統機器學習和深度學習的入侵檢測方法均假設數據集是已有的,無法保障數據本身的隱私安全,亦無法適用于真實復雜的能源互聯網環境。與上述工作不同,筆者設計了一種基于智能合約的私有鏈,并結合聯邦學習實現本地模型訓練并聚合生成全局模型,保障了原始數據的隱私。此外,筆者結合自編碼器(AutoEncoder)深度學習(循環神經網絡)構建模型,對已有的機器學習和深度學習方法作了詳細的對比分析。
在構建私有鏈的過程當中,傳統的PoW共識算法解決了選擇共識領導者以及在參與者之間公平分配獎勵的問題。為了防止攻擊者通過廉價偽裝成多臺機器來獲得多數權力,PoW系統的參與者只能根據其在系統中投資的計算量來領導共識輪次,然而這將會花費大量成本[21],能源企業的主機將是一筆巨大的開銷。為此,研究者提出基于PoUW的共識算法[22-23],該算法依賴于Intel的SGX技術,用戶可以將其CPU用于任何所需的工作負載,并且可以為保護區塊鏈生態環境作出貢獻。筆者綜合能源企業環境,結合主機CPU中內置的Intel SGX技術,達到資源節約型的共識。此外,為了在攻擊發生后進行溯源分析,判斷攻擊的入口點與攻擊造成的影響,有必要對采集的日志數據進行長時間的存儲。傳統的數據加密方法存在不足,如對稱密鑰存在密鑰分發困難、管理復雜問題,而非對稱密鑰存在效率低下、加解密時間過長問題,且傳統加密的驗證對于流量與運算資源開銷大,不適合進行頻繁的存儲性驗證[24-25]。為了解決上述問題,實現數據的可信存儲,筆者通過存儲總體數據的默克爾樹以及隨機向參與存儲節點發起不同挑戰的方式確保數據安全可靠。
在筆者所提的威脅模型中,假設能源集團下有多家企業,每個企業有若干終端主機存儲企業的關鍵信息,如關鍵數據資產、員工身份信息和企業數據庫等,由于不同企業所處的網絡環境不同,同樣的系統行為表現出的日志信息也會有所差異。為了保護存有企業關鍵信息的主機的安全,基于深度學習的入侵檢測系統被部署在各臺主機上。基于深度學習的模型訓練需要大量且有差異的樣本來提高模型的覆蓋率和泛化能力,因此通常將不同環境下主機的日志數據進行整合并構建適用于全能源企業的通用入侵檢測模型,從而大大提高模型的利用率和魯棒性。然而,不同的主機日志數據交互(如都傳到云端服務器)會存在隱私泄露問題。主機本地收集數據并具有一定的計算能力,同時CPU支持Intel SGX。筆者將能源企業的主機視為客戶端,最終目的是在保護隱私的情況下,對各個存有能源企業關鍵數字資產的主機的日志數據進行共享(模型訓練),從而完成準確高效的主機入侵檢測,同時能夠完成對主機日志數據的可信存儲,以便在攻擊發生后進行溯源分析。
筆者提出的主機入侵檢測方法包含4個模塊,各模塊之間的關系如圖1所示。各模塊具體如下:1) 構建基于區塊鏈與聯邦學習的私有鏈,實現數據不出本地的模型訓練并聚合生成全局模型;2) 利用基于Intel SGX的PoUW共識算法進行區塊的生成與發布,從而減少資源的開銷;3) 構建存儲總體數據的默克爾樹,并隨機向參與存儲客戶端節點發起不同的挑戰,實現數據的可信追溯與存儲;4) 構建基于AutoEncoder與RNN的主機入侵檢測模型,實現模型的快捷構建與威脅的高精度檢測。其中,模塊二、三、四分別為模塊一(基于區塊鏈與聯邦學習的私有鏈)提供工作量證明、數據分布式存儲和深度學習模型。

圖1 基于區塊鏈有用工作量證明及聯邦計算的主機入侵檢測方法架構圖Fig.1 Architecture diagram of host intrusion detection method based on blockchain Proof-of-Useful-Work and federated computing
在主機入侵檢測中,N個客戶端(能源集團下多家企業的主機)共同組成一個基于智能合約的私有鏈,其中每個客戶端配置了支持SGX的Intel芯片,任意客戶端可以發起聯邦學習任務(發起任務的客戶端記為Req),在聯邦學習任務之前,Req首先通告任務規范,例如應用程序的類型(如異常入侵檢測模型)、設備類型、訓練數據的類型和格式(如操作系統日志、流量日志和沙箱日志等)、學習模型的類型(如RNN)、計算要求(如深度學習的學習率)以及任務事務設置(如所需客戶端的數量、批量大小等),愿意加入任務的客戶端會回復申請并加入訓練過程,在多次迭代后完成任務,并將所有交易記錄到賬本中。各模塊的設計將在下文中詳細描述。
基于區塊鏈與聯邦學習的私有鏈構建如圖2所示。

圖2 基于區塊鏈與聯邦學習的私有鏈構建流程圖Fig.2 Flow chart of private chain construction based on blockchain and federated learning
在私有鏈中,Req為了實現數據不出本地的模型訓練并聚合生成全局模型,需要進行多次通信迭代,每次通信迭代具體步驟如下:
1) 區塊模板發布與節點選擇。在模型訓練之前,需要選擇出在本輪迭代中參與模型構建任務的客戶端。Req在檢測客戶端是否滿足支持SGX且飛地頁面緩存(Enclave page cache,EPC,Intel利用SGX技術在處理器中搭建了一個安全的飛地來保護重要數據)大小足夠時,為滿足條件的客戶端創建一個承諾交易,并為所有客戶端廣播區塊模板(包括任務要求、參與客戶端和迭代輪數等信息)。其中,所有客戶端的集合稱為P,發布的模板缺少PoUW,需要客戶端在完成任務后進行填充。
2) 模板與模型下載。對于每個被選擇的客戶端Pt,需要通過網絡下載Req提供的全局模型mi以及區塊模板,其中Pt?P,t表示被選擇的第t個節點,i表示通信迭代的次數。
3) 本地模型更新與上傳。對于每個被選擇的節點Pt,在接收到全局模型和區塊模板后,在SGX的可信內存中執行區塊模板要求的對應代碼,具體是對本地數據進行預處理,利用本地數據繼續訓練模型并更新參數,直至多次本地迭代后模型再次收斂,并執行PoUW飛地計數器,根據有效工作指令數量進行伯努利實驗,判斷是否產生PoUW,最后節點上傳本地梯度更新參數、時間戳Timestamp至請求方,如果成功產生PoUW則一起上傳。此處的PoUW生成流程詳見1.2節。
4) PoUW驗證與區塊生成。請求方Req在接收到所有節點P上傳的本地模型與某個節點的PoUW后,會按照新的共識算法PoUW來驗證該PoUW,即證明SGX生成的證明是否證明PoUW飛地符合節約型挖掘(Resource-efficient mining,REM)以及證明PoUW是否成功開采了一個塊且滿足給定的難度參數。當Req驗證PoUW為真時,將其與區塊模板結合為一個區塊發布到區塊鏈中。此處的PoUW驗證流程詳見1.2節。
5) 區塊驗證。當區塊鏈參與者驗證在區塊鏈網絡上接收到的新塊時,除了驗證更高層的屬性(如在比特幣等加密貨幣中,交易、先前的塊引用等是否有效),參與者驗證相關區塊,驗證完畢的區塊會被入鏈,此時參與該任務的客戶端將會得到加密貨幣獎勵。
6) 全局模型更新與可信存儲。請求方Req根據本次獲得的所有客戶端的本地梯度更新參數并結合聯邦學習的FedAvg算法[26]來更新全局模型。此外,Req方無法直接將諸多本地更新參數上鏈且其保存容量有限,為了實現本地對模型更新參數的溯源,滿足日后對異常攻擊行為進行追溯以及模型迭代更新的需求,需要將本地梯度更新參數數據分片存儲至所有參與本次迭代的客戶端節點上(值得注意的是,本次迭代的元信息,如具體的參與者和迭代輪數在步驟4區塊生成中已經上鏈),并通過存儲總體數據的默克爾樹以及隨機向參與存儲節點發起不同的挑戰來實現數據的可信存儲。
采用聯邦平均(Federated learning averaging,FedAvg)算法來實現全局模型更新這個步驟。聯邦平均算法將多個使用隨機梯度下降算法的深度學習模型整合成一個全局模型。與單機機器學習類似,聯邦學習的目標也是經驗風險最小化,即
(1)
式中:n為樣本容量;si為第i個樣本個體;f(x;si)為在模型上的損失函數。假設有K個局部模型,Pk表示第k個模型擁有的樣本個體的序號集合,nk=|Pk|,目標函數可重寫為
(2)
(3)
值得注意的是,由于每個終端設備的數據不能代表全局數據,不能認為EPk[Fk(x)]與f(x)相同,也就是說任何一個局部模型都不能作為全局模型。
此處將局部模型的一次參數更新稱為1次迭代。用b表示一個batch,那么第k個局部模型迭代公式為
(4)
整體采用的方法總結如下:將訓練過程分為多個回合,每個回合中選擇C×K(0≤C≤1)個局部模型對數據進行學習;第k個局部模型在一個回合中的epoch數量為E,batch大小為B,從而迭代次數為Enk/B;在一個回合結束之后,對所有參與學習的局部模型的參數進行加權平均,得到全局模型。
對于請求方Req,只需要進行以上6個步驟的迭代,直至全局模型收斂或者達到需求后,即可實現數據可信存儲與模型安全訓練。
在區塊鏈系統設計時,利用PoW共識算法可以在參與者之間公平分配獎勵,防止攻擊者通過廉價偽裝成多臺機器來獲得多數權力。然而,使用PoW的成本過高,綜合的能源浪費實際上相當驚人,不適用于能源企業。結合能源企業中的實際環境與需求,筆者采用REM框架,以PoUW作為共識算法來替代PoW,其核心依賴于英特爾的SGX技術,在PoUW系統中,用戶可以將其CPU用于任何所需的工作負載,并且可以同時為保護區塊鏈作出貢獻。
REM的核心是一個礦工程序,它可以做有用的工作并產生PoUW,PoUW中執行的每條CPU指令類似于PoW方案中的一個Hash函數計算,即每條指令都有一些成功挖掘區塊的概率,如果飛地確定是這種情況,它會生成一個PoUW。PoUW的具體生成流程如圖3所示,具體如下:1) PoUW運行時充當“in-enclave”加載器,它以適當的輸入啟動有用的工作程序并收集結果指令計數,同時需要塊哈希和難度,并通過運行挖掘程序開始挖掘;2) 一旦挖礦程序返回,PoUW運行時就會從保留寄存器中提取指令計數器,并確定當前是否需要進行伯努利實驗來生成數據塊;3) 每當運行一定數量的指令后,PoUW會從SGX的隨機數生成器中抽取一個隨機值,并根據指令計數器和當前難度確定是否應該生成新塊。如果應該生成一個塊,PoUW運行時會生成一個證明,記錄調用它的模板哈希和難度。

圖3 PoUW生成流程圖Fig.3 Flow chart of PoUW generation
實際應用中,Req必須檢查生成區塊PoUW的有用工作程序是否遵循協議并正確計算其指令。然而,將所有程序放在區塊鏈上進行驗證會產生巨大的開銷。此外,攻擊者還可能通過發送大量垃圾信息進行拒絕服務攻擊。為此,需要進行PoUW的合規性驗證,Req通過合規性檢查器將單個程序的指紋硬編碼到區塊鏈中,并將用戶提供的程序作為輸入,驗證PoUW是否符合定義的要求,其具體驗證流程如下:1) 合規性檢查器確認文本部分是不可寫的;2) 合規性檢查器通過反匯編來驗證工作程序是否合規,并確認專用寄存器是為指令計數保留的,同時確認計數是正確的且出現位置準確;3) 合規性檢查器驗證PoUW運行時是否正確鏈接并且與預期的PoUW運行時代碼相同;4) 合規性檢查器計算程序的指紋并輸出包含此指紋的證明。
Req方無法直接將諸多本地更新參數上鏈且其保存容量有限,為了實現本地對模型更新參數的溯源,滿足日后對異常攻擊行為進行追溯以及模型迭代更新的需求,需要將本地梯度更新參數數據分片存儲至所有參與計算的客戶端節點上。為了保障數據的可信存儲,實施的存儲和驗證操作如下:
1) 針對任意需要存儲數據的客戶端,對需要存儲的數據文件F進行切割,得到N個文件塊,保存其默克爾樹M,并為每個塊對應的默克爾樹的葉子節點生成隨機數R={1,2,…,N}。
2) 將文件塊隨機傳送給參與運算的不同客戶端,分到的客戶端即為存儲方(不同的存儲方存儲不同的數據塊)。
3) 文件F的擁有者隨機向存儲方發起挑戰,設文件F被分割為N塊,r為集合R={1,2,…,N}中隨機的任意值,s為挑戰的隨機數,向存儲方發送r和s。
4) 存儲方需要回復如下應答,即
response=H(F[r]‖s)
(5)
式中:F[r]為第r個文件塊;H為Hash生成函數;s用來防止存儲方私下保存文件塊的Hash值卻將原始文件塊刪除。
5) 存儲方的回復通過驗證后,傳回對應的文件塊,擁有者對應的客戶端為該文件塊重新生成隨機數,并更新對應的默克爾樹的存儲值。
6) 重復步驟3)~5)以進行重復多次的文件塊驗證過程。
數據可信存儲中關鍵方法的具體說明如下:
1) 在區塊鏈分片存儲中,其基本思想是將請求方要求存儲的大規模數據按照一定大小進行分割切片,并選擇節點來存儲部分對應的數據塊。為了提高鏈下存儲的可靠性與高效利用率,首先需要使用冗余存儲,即一份數據塊需要存儲到多個節點上,從而避免某節點錯誤導致數據丟失;然后要有合適的節點選擇策略,不能將數據存儲到所有節點上,要根據其過去的表現與目前的價格來動態調整選擇存儲的節點;最后要有合適的存儲證明機制來保證數據的有效存儲。總而言之,區塊鏈的分片存儲可以實現數據安全有效的存儲,充分利用區塊鏈網絡中多個節點的剩余存儲空間,提高存儲空間的利用率。
2) 在默克爾樹設計中,每個節點都標有一個數據塊(如文件或者文件的集合)的Hash值。非葉節點是其對應子節點串聯字符串的Hash。默克爾樹可以用來驗證任何一種在計算機中和計算機之間存儲、處理和傳輸的數據。它們可以確保在點對點網絡中數據傳輸的速度不受影響,數據跨越自由地通過任意媒介,且沒有損壞和改變。此外,基于默克爾樹的存儲機制證明技術中往往會出現一個存儲方需要存儲多個文件塊的情況,那么在這種情況下為了提升驗證的效率,可以在上述實現的基礎上,將同一個存儲方的文件塊與隨機數結合優先構建子默克爾樹,發起挑戰驗證時只需要存儲方按對應順序構建的子默克爾樹返回其文件塊即可,從而實現高效率且快速的存儲證明與錯誤定位。
3) 存儲挑戰是基于Hash函數實現的,請求方通過對與隨機數結合后的文件塊進行Hash運算得到對應Hash值并創建對應默克爾樹,而存儲方在收到對應的文件塊后對其進行存儲,在收到挑戰的隨機數后需要將其與文件塊對應拼接后進行Hash運算得到對應的Hash值并返回。如果存儲方不存儲對應文件塊,只存儲文件塊對應的Hash值,在之后收到挑戰隨機數時,因為對復雜Hash大數逆向求解的困難性,所以無法實現Hash值向文件塊轉移的運算,從而無法完成挑戰。
筆者主要提出一種基于AutoEncoder和RNN的模型構建方案,具體如下:1) 特征提取。在模型訓練時,傳統的機器學習方法由于需要提取統計特征,存在覆蓋率不足、精度較差等問題。而AutoEncoder通過訓練,在維持輸入和輸出一致的同時,隱藏層對應的特征可以有效代表訓練樣本,同時對高維度的特征數據進行壓縮,減少建模計算開銷,筆者通過提取隱藏層的特征向量進行后續模型的高效訓練。2) 模型構建。在得到有效的特征之后,通過經典的RNN結構[27]來進行模型訓練,并綜合比較了不同機器學習與深度學習方法的結果。
使用Truffle套件在以太坊上構建區塊鏈,其中Truffle是一個開源的以太坊測試框架。使用基于Intel?Core i7-6700K SR2L0的主機作為客戶端,內存為16 GB。
利用開源的NSL-KDD作為評估數據集[28],與KDD CUP 99數據集[29]相比,NSL-KDD數據集的訓練集中不包含冗余記錄,故分類器不會偏向更頻繁的記錄,不會導致模型單純記憶原始數據而沒有很好的泛化性。NSL-KDD數據集中包含了正常的數據與攻擊數據,攻擊數據分為4類,分別為拒絕服務攻擊(Dos)、提權攻擊(U2R)、遠程訪問攻擊(R2L)和端口監視/掃描攻擊(Probe)。在NSL-KDD數據集中,訓練集共有125 973條記錄,測試集共有22 544條記錄,其中Dos,U2R,R2L,Probe,Normal樣本的訓練集和測試集數量分別為45 927,52,995,11 656,67 343和7 458,67,2 887,2 421,9 711。每條記錄的維度為41維,在預處理(包括正則化)后,輸入共計包含122個維度,包含3種協議類型、70種服務和11個標志位。
在私有鏈中,參與聯邦學習的客戶端數量為10;在數據可信存儲時,N設定為100;在深度學習模型中,訓練集數據被隨機分成10等份,每個參與學習的客戶端均利用其中1份數據進行訓練,Req負責將訓練后的模型聚合,用于測試;在Autoencoder中,隱藏層數設置為3層,第1層隱藏層神經元數為64,第2層隱藏層神經元數為32,第3層隱藏層神經元數為64,第2層隱藏層為最終的優化特征,輸入層和輸出層的維度均為122維,學習速率η=0.1;在RNN中,輸入層維度是32,隱藏層數設置為2層,第1層隱藏層神經元數為32,第2層隱藏層神經元數為16,輸出層神經元個數為5,表示5分類。值得注意的是,上述參數通過調優獲得,在具體的任務中分析人員可以根據實際需要進行調整。
利用云端集中式訓練和聯邦學習分布式訓練得到收斂的模型后,測試結果對應的混淆矩陣分別如表1,2所示。由表1,2可以看出:模型對于Dos以及Probe兩種攻擊類型的分類準確率較高,對R2L和U2R的檢測能力較弱,這與先前的研究[27]得到的結論一致,其主要原因是R2L和U2R這兩類攻擊的行為模型和正常行為模型的區別并不大,如正常用戶通過遠程訪問和攻擊者通過遠程訪問的方式在很多時候是非常相近的,想要更加精確地檢測此類攻擊,需要進一步結合攻擊的行為進行分析(如上下文檢測)。總體來說,在10個客戶端參與的情況下,利用云端集中式訓練和聯邦學習訓練得到模型的精度分別達到了81.45%和80.95%。

表1 云端集中式訓練入侵檢測精度評估表Table 1 Cloud centralized training intrusion detection accuracy evaluation table

表2 聯邦學習分布式訓練入侵檢測精度評估表Table 2 Federal learning distributed training intrusion detection accuracy evaluation table
為了進一步評估不同模型的精度以及聯邦學習對精度的影響,筆者綜合比較了Random forest(RF)[16],Support vector machine(SVM)[13],CNN[17],RNN[21]與AutoEncoder+RNN(AutoRNN)的結果,10次獨立重復實驗后的平均精度如圖4所示。當利用云端集中式訓練時,RF,SVM,CNN,RNN,AutoRNN的精度分別為74.00%,73.98%,79.90%,81.29%,81.45%;而在聯邦分布式學習的情況下,RF,SVM,CNN,RNN,AutoRNN的精度分別為73.21%,73.50%,79.20%,80.60%,80.95%。

圖4 云端集中式訓練與聯邦學習訓練在不同模型下的精度表現Fig.4 Precision performance of cloud-based centralized training and federated learning training under different models
由圖4可以看出:1) 使用聯邦學習分布式訓練會使得精度下降,其原因是聯邦學習會將數據分散在不同的客戶端,每個客戶端的訓練量約為正常云端訓練的1/10(在本實驗中設備客戶端數量為10),訓練數據減少雖然導致了精度有所下降,但是不同客戶端參數的聚合彌補了該缺陷,使得最終精度的下降幅度低于1%;2) 基于傳統的機器學習模型(RF,SVM)的精度普遍低于基于深度學習模型(CNN,RNN,AutoRNN)的精度,其原因是傳統的機器學習依賴于手工提取特征,其特征的覆蓋率不全,無法全面地表征正常日志與攻擊日志,然而基于深度學習的模型能夠自動從原始數據中提取特征,泛化能力較強,特別要注意的是,基于AutoEncoder和RNN的模型因為加入了自動特征的學習,所以其表現要優于已有的CNN和RNN方法;3) 通過10次獨立重復實驗,云端集中式訓練和聯邦學習分布式訓練的平均精度均較為穩定,波動在±3%以內。
使用開源性能測試工具Jmeter進行私有鏈系統的壓力測試。針對每一次通信迭代過程,測試1.1節中每一階段的耗時、內存開銷和CPU開銷。所有階段包括:區塊模板發布與節點選擇、模板與模型下載、本地模型更新與上傳、PoUW驗證與區塊生成、區塊驗證、全局模型更新與可信存儲。其中,分別計算Req客戶端和參與運算的客戶端(Req除外)在一次迭代過程中的內存開銷和CPU開銷,結果如表3所示,所有結果均為10次獨立實驗的平均值。

表3 私有鏈不同通信迭代階段的平均耗時、內存開銷及CPU開銷Table 3 The average time, memory cost and CPU cost of different communication iterations of private chain
由表3可以看出:在通信迭代過程中,整個基于智能合約的私有鏈最耗時的操作為本地模型更新與上傳,平均用時為930.52 s,因為模型的構建需要數據的加載以及大量的運算操作;比較耗時和占資源的是區塊生成操作,與除模型訓練之外的其他階段相比,區塊生成占了約50%的時間;可信存儲在一定程度上也消耗了資源,因為各個客戶端為了驗證數據可信而對隨機挑戰進行了應答,在使用可信存儲的安全增強方案下各個中間環節的耗時如表4所示。基于表3,4計算可得:在使用基于默克爾樹的安全分片存儲的情況下,全局模型更新的時間約延長0.08 s,性能損耗約為25%,在保證安全性的條件下,這個損耗是可以接受的。

表4 可信存儲各階段的耗時Table 4 The average time cost of each stage for trusted storage
綜合來看,基于智能合約的私有鏈的開銷能滿足真實環境下的需求。共識機制主要依賴于私有鏈上客戶端的數量,客戶端數量越多,需要的耗時和資源開銷便越大,因此選擇合適數量的客戶端對系統性能的提升有一定幫助。此外,主機配置的提高也有助于降低算法運行過程中的時延。
筆者提出了一種基于區塊鏈有用工作量證明及聯邦計算的主機入侵檢測方法。在區塊鏈設計上,結合聯邦學習實現本地模型訓練并聚合生成全局模型,保障了原始數據的隱私;在共識機制上,基于主機優勢,利用Intel SGX的PoUW共識算法替代PoW,減少了能源的浪費;在數據存儲上,通過存儲總體數據的默克爾樹以及隨機向參與存儲節點發起不同的挑戰,實現了數據的可信存儲;在模型構建上,結合AutoEncoder與RNN構建模型,實現了高精度的主機入侵檢測。在NSL-KDD開源入侵檢測數據集上達到了較優的效果,能夠有效保障能源企業主機入侵檢測系統的隱私性、安全性和可用性。