董瑞洪, 閆厚華, 張秋余, 李學(xué)勇
(蘭州理工大學(xué) 計算機與通信學(xué)院, 甘肅 蘭州 730050)
隨著大數(shù)據(jù)、云計算和物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,需要采集的環(huán)境數(shù)據(jù)也越來越多,對WSN產(chǎn)品的需求將逐步擴大.WSN具有節(jié)點成本低廉、部署簡單、無需基礎(chǔ)設(shè)施等特點,WSN產(chǎn)品可以突破傳統(tǒng)的監(jiān)測方法,為環(huán)境的監(jiān)測降低了成本,同時也大幅度縮減了傳統(tǒng)監(jiān)測的繁瑣流程,為隨機性的研究數(shù)據(jù)獲取提供了便利[1].WSN作為一種新型的網(wǎng)絡(luò)得到深入的研究和廣泛的應(yīng)用,常見的應(yīng)用包括用于軍事行動、監(jiān)測環(huán)境(如火山探測、農(nóng)業(yè)環(huán)境監(jiān)測)、分布式控制系統(tǒng)、醫(yī)療保健和放射源檢測[2]等,此外,WSN還可應(yīng)用于工業(yè)領(lǐng)域,如石油泄漏和空氣質(zhì)量的環(huán)境監(jiān)測、管道監(jiān)測、智能電網(wǎng)監(jiān)測等[3].由于WSN無線傳輸和無人值守的特點,它還具有以下缺點:采用不安全的路由協(xié)議,所涉及的標準和通信協(xié)議不同,節(jié)點計算能力有限,互連設(shè)備數(shù)量多,傳統(tǒng)的安全對策無法有效發(fā)揮作用[4].因此,WSN的安全性仍然是一個需要持續(xù)研究的問題.
入侵檢測技術(shù)是一種保障安全的重要技術(shù)手段,準確識別網(wǎng)絡(luò)中的各種攻擊是入侵檢測的關(guān)鍵技術(shù)[5].目前,WSN入侵檢測主要分為異常檢測、誤用檢測、基于規(guī)范的檢測和基于混合系統(tǒng)檢測[6],如基于自主學(xué)習(xí)(STL)框架的深度學(xué)習(xí)方法[7]、卷積神經(jīng)網(wǎng)絡(luò)(CNN)[8-9]、遞歸神經(jīng)網(wǎng)絡(luò)[10]、隨機森林[11]、樸素貝葉斯[12]和決策樹[13]等.Chowdhury等[14]提出了一種改進的深度學(xué)習(xí)入侵檢測方法,該方法首先訓(xùn)練了一種用于入侵檢測的深度CNN,然后在CNN中提取不同層次的輸出,實現(xiàn)一種線性SVM和1-近鄰(1-NN)分類器,可以在不平衡的數(shù)據(jù)集上增強少數(shù)攻擊類型的檢測率,但是該方法計算復(fù)雜度較大,檢測效率有待提高.Guasekaran等[15]提出了一種高效的基于遺傳算法的拒絕睡眠攻擊檢測(GA-DoSLD)算法,用來分析節(jié)點的錯誤行為,對拒絕睡眠攻擊(Dosl)有很好的檢測效率.高妮等[16]提出基于自編碼網(wǎng)絡(luò)的SVM 入侵檢測系統(tǒng),適用于高維空間信息抽取任務(wù),但對R2L、U2R等攻擊行為檢測性能不高.Alrajeh等[17]提出了一種人工神經(jīng)網(wǎng)絡(luò)(ANN),用于檢測基于簇的WSN中拒絕服務(wù)的能量耗盡攻擊,但模型需要較高的計算成本.通過對上述研究工作進行分析,發(fā)現(xiàn)現(xiàn)有的WSN入侵檢測方法存在實時性不高、檢測性能較低、算法計算復(fù)雜度較高等問題.傳統(tǒng)的入侵檢測方法如樸素貝葉斯、決策樹、SVM、人工神經(jīng)網(wǎng)絡(luò)等檢測率較低,無法滿足日益嚴峻的安全威脅,而現(xiàn)有的深度學(xué)習(xí)方法算法復(fù)雜度較高,需要大量的樣本訓(xùn)練入侵檢測模型.
針對上述研究存在的不足,本文提出一種基于隨機森林與深度森林的分布式WSN入侵檢測模型.WSN入侵檢測模型采用輕量級的隨機森林對傳感器節(jié)點、簇頭節(jié)點進行異常檢測,采用深度森林算法對基站節(jié)點進行誤用檢測.傳感器節(jié)點和簇頭節(jié)點采用輕量級隨機森林算法構(gòu)建集成分類器,并調(diào)整隨機森林參數(shù)提升檢測器的檢測率,在基站采用深度森林對異常行為進一步檢測,同時引入動態(tài)反饋機制.該模型可以將正常與異常相似度很高的流量進行區(qū)分,與現(xiàn)有傳統(tǒng)的和基于深度學(xué)習(xí)的入侵檢測方法相比提高了檢測準確度,并且可以檢測出多種攻擊類型.該模型可適用于WSN中訓(xùn)練數(shù)據(jù)集樣本較少的環(huán)境中,是一種比較有效、可靠的WSN入侵檢測解決方案.
從WSN的網(wǎng)絡(luò)拓撲結(jié)構(gòu)看,WSN入侵檢測可以分為兩類,即平面結(jié)構(gòu)和分層結(jié)構(gòu)[12].在平面體系結(jié)構(gòu)中,所有節(jié)點在網(wǎng)絡(luò)結(jié)構(gòu)中功能相同,并參與內(nèi)部協(xié)議.在分層結(jié)構(gòu)中,所有傳感器節(jié)點都被分組為集群,每個集群由一個簇頭和幾個普通傳感器節(jié)點組成.
隨機森林(RF)[18]是由多棵決策樹組成的集合,隨機森林的訓(xùn)練過程可被分解成多棵決策樹進行單獨訓(xùn)練的過程.
隨機森林中的決策樹公式表示如下
F(x,δi), (i=1,2,…,n)
(1)
其中:x為輸入數(shù)據(jù);δi為獨立同分布特征向量;n為RF中決策樹的數(shù)量.
RF的最終結(jié)果通過簡單多數(shù)投票獲得:
(2)
其中:c表示預(yù)測的結(jié)果;F*(x)用于統(tǒng)計多個決策樹F(x,δi)中預(yù)測票數(shù)最多的類型,并作為RF最后輸出結(jié)果.
圖1展示了隨機森林分類模型在WSN入侵檢測系統(tǒng)中的實現(xiàn)過程.將n個樣本的預(yù)處理樣本Si(i=1,2,…,n)送入隨機森林分類器,隨機森林通過使用許多特征子集創(chuàng)建n個不同的樹Ti(i=1,2,…,n),每個樹產(chǎn)生一個分類結(jié)果Ri(i=1,2,…,n),分類模型的結(jié)果取決于多數(shù)投票,最終流量數(shù)據(jù)樣本被分配到投票分數(shù)最高的類別.
深度森林(deep forest)方法[19]是基于樹的集成方法,具有級聯(lián)結(jié)構(gòu)(cascade structure),通過對樹組成的森林來集成并前后串聯(lián)起來達到表征學(xué)習(xí)的效果.深度森林的表征學(xué)習(xí)能力可以通過對高維輸入數(shù)據(jù)的多粒度掃描進行加強,可使算法具有上下文或結(jié)構(gòu)感知能力.深度森林采用了級聯(lián)結(jié)構(gòu),每層都是由完全隨機森林和普通隨機森林組成,其中每一級級聯(lián)接收由前一級處理的特征信息,并將處理結(jié)果輸出到下一級.
圖2是深度森林算法的整個流程.首先,輸入一個完整的X維度樣本,通過長度為Y的采樣窗口進行滑動采樣,得到Z=(X-Y)+1個特征子樣本向量;然后,每個子樣本都用于訓(xùn)練完全隨機森林分類器和普通隨機森林分類器,最后把所有的森林分類器結(jié)果組合到本級輸出.將變換后的特征向量與上一級生成的類向量相加,分別訓(xùn)練級聯(lián)森林的2級和3級.重復(fù)此過程,進行多層級聯(lián)直到驗證性能趨于一致,最后輸出結(jié)果.
本文中WSN數(shù)據(jù)融合策略是分層聚簇型融合,整個WSN被劃分為多個簇區(qū)域,簇頭由資源豐富的節(jié)點擔任.在數(shù)據(jù)融合過程中,簇內(nèi)感知節(jié)點將采集到的數(shù)據(jù)向上傳輸?shù)酱仡^,簇頭節(jié)點對本簇內(nèi)的感知數(shù)據(jù)進行融合處理后轉(zhuǎn)發(fā)至基站節(jié)點.圖3為基于輕量級隨機森林和深度森林算法的分布式WSN入侵檢測模型流程示意圖.
如圖3所示,提出的WSN入侵檢測模型采用輕量級的隨機森林對傳感器節(jié)點、簇頭節(jié)點進行異常檢測,而在WSN基站采用深度森林算法對流量進行誤用檢測.采用分層結(jié)構(gòu)的WSN可對網(wǎng)絡(luò)流量進行分布式檢測,能分散能量開銷減輕通信負擔,可以實現(xiàn)節(jié)能.
基于隨機森林和深度森林的分布式WSN入侵檢測模型主要包括4個步驟.
步驟1:數(shù)據(jù)預(yù)處理階段.普通傳感器節(jié)點采集流量數(shù)據(jù),調(diào)整初始流量數(shù)據(jù)的格式并將字符型數(shù)據(jù)數(shù)值化為數(shù)值型數(shù)據(jù).為了提高入侵檢測模型的性能,需要對數(shù)據(jù)歸一化操作.
步驟2:訓(xùn)練階段.簇頭CH和傳感器節(jié)點合作對數(shù)據(jù)進行處理,使用處理好的訓(xùn)練數(shù)據(jù)集訓(xùn)練入侵檢測模型.在簇頭節(jié)點部署輕量級隨機森林分類器,對采集到的流量數(shù)據(jù)進行初步分析.由于簇頭節(jié)點有較強的計算能力,允許使用較多的特征和復(fù)雜的檢測結(jié)構(gòu),因此將第一級分類器部署在簇頭節(jié)點上,如果檢測出異常行為則發(fā)出報警,否則將簇頭節(jié)點的流量數(shù)據(jù)向上傳遞給基站節(jié)點.第二級分類器在基站上發(fā)揮作用,簇頭與基站協(xié)調(diào)合作,采用深度森林從大量流量數(shù)據(jù)中區(qū)分出異常入侵行為,對較難識別的攻擊和不確定性攻擊進一步檢測,整個訓(xùn)練過程中通過多次調(diào)整模型參數(shù)使檢測率達到較高的水平.
步驟3:測試階段.使用測試數(shù)據(jù)集對分布式WSN入侵檢測模型進行測試.如果檢測準確率能滿足實際應(yīng)用要求,則停止訓(xùn)練.否則,模型將重復(fù)訓(xùn)練步驟2.
步驟4:評估階段.用于評估訓(xùn)練后的入侵檢測模型性能.通常,評價指標包括檢測率、誤檢率和準確率等性能指標.
實驗運行環(huán)境:操作系統(tǒng)為Windows10 64位,實驗平臺為JetBrains PyCharm Community Edition 2018.2.
實驗采用WSN數(shù)據(jù)集WSN-DS[20],該數(shù)據(jù)集采用模擬器NS-2仿真WSN環(huán)境,并模擬出4種攻擊類型:黑洞(Blackhole)、灰洞(Grayhole)、洪水(Flooding)和調(diào)度(Scheduling)攻擊.NS-2模擬參數(shù)見表1,WSN-DS數(shù)據(jù)集中一共有374 661條流量數(shù)據(jù),并將數(shù)據(jù)的60%作為訓(xùn)練數(shù)據(jù)集,40%作為測試數(shù)據(jù)集.數(shù)據(jù)集中各種攻擊類型分布如表2所列.
表1 NS-2模擬參數(shù)
表2 實驗數(shù)據(jù)集WSN-DS分布
為了充分驗證提出模型的性能,實驗采用了NSL-KDD數(shù)據(jù)集[21],是KDD′99數(shù)據(jù)集的改進版本.NSL-KDD數(shù)據(jù)集包含許多攻擊行為,可分為4類:DoS、Probe、R2L和U2R.在WSN中的攻擊類型包括黑洞、蟲洞和確認欺騙攻擊等,可以歸類為Probe攻擊,因為這類攻擊在開始攻擊之前先做了一個探測步驟.欺騙、篡改、重放路由信息攻擊等可被歸類為R2L,該類攻擊是利用網(wǎng)絡(luò)弱點進行攻擊.WSN內(nèi)部攻擊可歸為U2R,洪水攻擊和資源消耗攻擊可以歸為DOS攻擊[22].
在模型訓(xùn)練之前,首先需要對NSL-KDD數(shù)據(jù)集進行預(yù)處理,將特征protocol_type、service和attackclass進行數(shù)值化.然后,將數(shù)據(jù)集分成5個類:Normal、Probe、DoS、U2R和R2L,分別映射到數(shù)值0~4上.最后,需要對src_bytes和dst_bytes字段列的值進行歸一化,將范圍映射到[0,1].其中,將正常流量用數(shù)值0表示,類型{1,2,3,4}分別表示其他不同的攻擊類型.NSL-KDD數(shù)據(jù)集的具體數(shù)據(jù)分布見表3.
表3 NSL-KDD數(shù)據(jù)集數(shù)據(jù)分布
流量數(shù)據(jù)歸一化可以消除不同維度數(shù)據(jù)之間的差異,為了保證訓(xùn)練結(jié)果的可靠性,將這些特征規(guī)范化到[0,1].本文采用如下式的最小-最大值歸一化方法處理數(shù)據(jù):
x∈[xmin,xmax]
(3)
其中:x為屬性值;xmin為最小屬性值;xmax為最大屬性值;f(x)為歸一化函數(shù).
為了測量WSN入侵檢測模型的性能,采用檢測率(TPR)、虛警率(FPR)、準確率(Acc)、精確度(P)指標進行測量:
TPR=TP/(TP+FN)
(4)
FPR=FP/(FP+TN)
(5)
P=TP/(TP+FP)
(6)
Acc=(TP+TN)/(TP+FN+FP+TN)
(7)
其中:TPR表示真實值為正常的樣本中,預(yù)測為正常樣本的概率;FPR表示真實值為異常的樣本中,預(yù)測為正常樣本的概率;P表示預(yù)測為正常的樣本中,正確預(yù)測為正常樣本的概率;Acc表示預(yù)測結(jié)果的準確度;表4為TP、FP、TN和FN的定義.
表4 TP、FP、TN和FN的定義
由于傳感器節(jié)點能量與計算資源有限,如果在傳感器節(jié)點上應(yīng)用強分類器,將會耗費大量的時間和能量.采用層次結(jié)構(gòu)有助于在一階分類器中容易篩選出大多數(shù)的攻擊流量數(shù)據(jù),從而提高模型的檢測率和降低響應(yīng)時間.本文采用輕量級的隨機森林對傳感器節(jié)點、簇頭節(jié)點進行異常檢測.
輕量級隨機森林算法要調(diào)整的參數(shù)主要是決策樹的數(shù)量M、A、樣本抽樣類型B、隨機森林深度D和最小樣本分割T.其中:M通常數(shù)量越大效果越好,但是計算時間也會隨之增加,當決策樹的數(shù)量過多,算法的效果并不會很顯著地變好,因此需要在檢測性能和計算復(fù)雜度之間找到平衡,使之更加適用于傳感器節(jié)點和簇頭節(jié)點;A是分割節(jié)點時考慮的特征的隨機子集的大小,需要調(diào)整到合適的大小,算法性能才會最優(yōu).提出的輕量級隨機森林算法復(fù)雜度為O(5*N*log(N)),N是樣本數(shù).
從表5可以看出,提出的WSN入侵檢測模型對WSN中出現(xiàn)的攻擊Blackhole、Grayhole、Flooding、Scheduling的檢測率分別達到了98.56%、94.50%、93.80%、97.07%,對正常狀態(tài)Normal的檢測率達到了99.83%.對Blackhole、Grayhole、Flooding、Scheduling的誤檢率分別達到了0.10%、0.15%、0.03%、0.006%,對正常狀態(tài)Normal的誤檢率僅為2.26%.由實驗結(jié)果可知,提出的WSN入侵檢測模型在第一層檢測中可以識別大多數(shù)WSN攻擊行為,并且可以識別出多種攻擊類型.
表5 WSN入侵檢測模型性能
實驗采用交叉驗證策略對算法中的超參數(shù)進行優(yōu)化,選取超參數(shù)的最優(yōu)值后,分別用KDDTrain+_20Percent和KDDTest+對其進行訓(xùn)練和測試中的第一層入侵檢測性能.關(guān)鍵超參數(shù)模型優(yōu)化過程中的數(shù)值見表6,其中:M取值為5時,模型的分類效果較好,同時保證算法復(fù)雜度較??;A取值為10,表示隨機子集的特征大小是10;樣本抽樣類型B取值為1,表示樣本抽樣是有放回抽??;隨機森林深度D為-1,表示依據(jù)實際流量數(shù)據(jù)進行調(diào)節(jié);最小樣本分割T取值為2.由表6可知,對比不同決策樹個數(shù)情況,選取出輕量級隨機森林的最優(yōu)參數(shù),分別用KDDTrain+_20Percent和KDDTest+對其進行了訓(xùn)練和測試,此時準確度Acc為82.43%,P達到了100%.
表6 參數(shù)優(yōu)化
基站部分采用深度森林從大量流量數(shù)據(jù)中區(qū)分出異常入侵行為,只需將流量類別識別為正常流量和攻擊流量兩種狀態(tài).其中機器學(xué)習(xí)算法包括J48、Naive Bayes、NB tree、Mutilayer percepetion和Random forest等,同時采用深度學(xué)習(xí)算法如Autoencoder SVM、RNN等進行入侵檢測.如圖4所示,本文對比了用于入侵檢測的多種算法的準確率(Acc).實驗采用NSL-KDD數(shù)據(jù)集對模型進行性能評價.
從圖4可以看出,本文提出方法的準確率略低于Autoencoder SVM方法,而高于其他方法,原因是本文提出的模型采用級聯(lián)森林和多粒度掃描構(gòu)建深度森林提高模型學(xué)習(xí)能力,模型能學(xué)習(xí)更加重要的流量特征.其中,比RNN略高2.02%,同時相比傳統(tǒng)的機器學(xué)習(xí)方法如J48、Naive Bayes、NB tree、Random forest等也有更好的準確率.實驗證明,本文提出的入侵檢測模型不僅比傳統(tǒng)的機器學(xué)習(xí)方法檢測效果好,同時比一些深度學(xué)習(xí)方法也能保持較高的檢測效率.
此外,本文還將NSL-KDD數(shù)據(jù)集中的Normal、Probe、DoS、U2R和R2L分別標記為0~4,則實驗采用KDDTrain+_20Percent對本文模型進行訓(xùn)練,采用KDDTest+數(shù)據(jù)集進行測試,結(jié)果如圖5所示.
如圖5所示,本文對比了入侵檢測的多種算法的準確率,包括J48、Naive Bayes、Mutilayer percepetion、SVM,深度學(xué)習(xí)算法如CNN、Autoencoder SVM.可以看出,本文中的準確率略低于CNN方法和Autoencoder SVM方法,相比傳統(tǒng)的機器學(xué)習(xí)方法有更好的準確率.原因是本文模型相比其他方法可學(xué)習(xí)到更重要的流量特征,學(xué)習(xí)能力較強.實驗采用KDDTrain+_20Percent對本文模型進行訓(xùn)練,其他入侵檢測方法采用全部的KDDTrain+數(shù)據(jù)集進行訓(xùn)練,采用同樣的測試數(shù)據(jù)集KDDTest+進行測試.實驗證明,本文提出的模型學(xué)習(xí)能力較強,在訓(xùn)練數(shù)據(jù)比較少的情況下,仍然能得到較高的檢測準確率,適用于WSN訓(xùn)練數(shù)據(jù)集樣本較少的環(huán)境.
表7為本文模型與其他方法的實時性對比,可以看出,本文模型序列訓(xùn)練所需時間為1 261.06 s,相比其他方法的訓(xùn)練所需時間少,可見本文提出的方法復(fù)雜度較小,測試時間為89.57 s,則平均一條流量數(shù)據(jù)檢測時間為89.57/125 973=7.11×10-4s,因此本文模式的檢測實時性較高.
表7 實時性對比
本文提出了一種基于隨機森林和深度森林算法的分布式WSN入侵檢測模型,該模型采用輕量級隨機森林對傳感器節(jié)點和簇頭結(jié)果進行異常檢測,采用深度森林在基站節(jié)點進行誤用檢測.基于分布式的WSN入侵檢測方法有助于在一階和二階分類器中容易篩選出大多數(shù)的攻擊流量數(shù)據(jù),從而提高了模型的檢測率,降低了響應(yīng)時間.而且分布式檢測分散了能量開銷,減輕了通信負擔.該模型能有效提高入侵檢測的準確性和識別多種攻擊類型的能力.實驗結(jié)果表明,本文方法在NSL-KDD數(shù)據(jù)集上實現(xiàn)了更高的準確率,該方法比傳統(tǒng)的機器學(xué)習(xí)方法如J48、Naive Bayes、Mutilayer percepetion、SVM等有更好的性能,相比深度學(xué)習(xí)方法如RNN,本文方法的檢測準確率高2.02%.同時證明在訓(xùn)練數(shù)據(jù)比較少的情況下,提出的模型仍然能保持較高的檢測準確度,適用于WSN中訓(xùn)練數(shù)據(jù)集樣本較少的環(huán)境.不足之處是該模型對多分類的檢測能力有待進一步提高.在未來的研究中,會將深度學(xué)習(xí)技術(shù)作為特征提取方法進一步提高對多種攻擊和新型攻擊的檢測性能.