于立婷,譚小波,解 羽
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110159)
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)是一種分布式傳感網(wǎng)絡(luò),通過大量靜止或移動的傳感器節(jié)點以自組織和多跳的方式形成,并以傳感器節(jié)點之間相互協(xié)作的方式來采集、處理和傳輸網(wǎng)絡(luò)覆蓋區(qū)域內(nèi)所被感知對象的信息,最后將這些信息發(fā)送給網(wǎng)絡(luò)的所有者[1]。WSN由于其能耗低、成本低等優(yōu)點,廣泛應(yīng)用于工業(yè)監(jiān)測[2]、智能交通[3]和醫(yī)療衛(wèi)生[4]等領(lǐng)域。但隨著WSN的大規(guī)模應(yīng)用,也暴露了一些缺陷:(1)由于WSN需要根據(jù)不同的應(yīng)用環(huán)境來提供服務(wù),所以網(wǎng)絡(luò)一旦被部署就不能重復(fù)利用,從而增加了WSN的部署成本;(2)現(xiàn)有的分布式控制、拓?fù)渚S護和路由算法等將帶來大量的計算和信息交互,這將加快節(jié)點能量消耗的速度,極大縮短傳感器節(jié)點以及整個網(wǎng)絡(luò)的生命周期;(3)WSN采用多跳的傳輸方式,當(dāng)網(wǎng)絡(luò)中某些節(jié)點任務(wù)過載或連接斷開時,無法動態(tài)改變路由機制,導(dǎo)致數(shù)據(jù)傳送失敗,使得整個網(wǎng)絡(luò)狀態(tài)不穩(wěn)定,甚至癱瘓。
針對上述缺陷,許多學(xué)者將軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)[5]架構(gòu)引入WSN中,形成一種新型的網(wǎng)絡(luò)架構(gòu)——軟件定義WSN(Software Defined Wireless Sensor Network,SD-WSN)[6-7]。相比于傳統(tǒng)的WSN,SD-WSN可以根據(jù)實際需求,對傳感器網(wǎng)絡(luò)中節(jié)點的感知通信半徑以及節(jié)點運行狀態(tài)進行動態(tài)調(diào)整,并且SD-WSN還可以通過編程的方式重新配置網(wǎng)絡(luò)設(shè)備的參數(shù)來應(yīng)對突發(fā)的故障,實現(xiàn)實時監(jiān)控和維護網(wǎng)絡(luò)設(shè)備性能,減少了人工維護的成本和難度,大大提高網(wǎng)絡(luò)管理的效率。
然而,網(wǎng)絡(luò)安全是SD-WSN實用化的前提條件,而SD-WSN在集中控制下,控制器的入侵攻擊是SD-WSN面臨的最大威脅[8-9]。目前,針對SD-WSN安全方面的研究較少,考慮到網(wǎng)絡(luò)架構(gòu)的繼承性,部分SDN中的入侵檢測方案具有一定借鑒性。
姬生生[10]提出了一種基于SDN和Bloom Filter的入侵檢測方案,通過量化網(wǎng)絡(luò)流量關(guān)鍵值和網(wǎng)絡(luò)入侵行為的參數(shù)特征,采用分層檢測的方式,圍繞關(guān)鍵節(jié)點選擇監(jiān)測節(jié)點;該方案提高了主控節(jié)點檢測的準(zhǔn)確性,并減小整個網(wǎng)絡(luò)的能量消耗,但在檢測率上有待提高。Maggi等[11]提出了一種基于SOM的DDoS攻擊檢測方法,該方法在SDN網(wǎng)絡(luò)環(huán)境下,通過構(gòu)建流量的六元組特征矩陣的方法,并采用SOM分類算法來檢測,但需要花費較長的訓(xùn)練時間。石冬冬[12]提出的一種基于數(shù)據(jù)挖掘K-means算法的異常檢測模型,具有較低的誤檢率,但需要對大量數(shù)據(jù)進行預(yù)處理訓(xùn)練和分類,存在較長的訓(xùn)練過程。Nasrin等[13]提出了一種基于系統(tǒng)調(diào)用序列和參數(shù)分析的入侵檢測系統(tǒng),在四種針對系統(tǒng)調(diào)用的字符串類型的統(tǒng)計模型基礎(chǔ)上,引入“聚類”概念,使用聚類參數(shù)推斷出同一系統(tǒng)調(diào)用的不同使用方式,建立更準(zhǔn)確的參數(shù)模型,能夠正確識別異常情況,但運行耗費較高。
綜上所述,基于聚類的入侵檢測算法過度依賴聚類中心的選取,采用人為經(jīng)驗或隨機取樣的方法選取聚類中心存在一定風(fēng)險,在一定程度上降低了K-means算法的聚類效果。由此,本文提出了一種基于改進人工蜂群優(yōu)化的K-means入侵檢測模型,該模型采用改進的人工蜂群算法對K-means算法中的初始聚類中心的選擇進行優(yōu)化,并采用基于劃分的K-means算法對網(wǎng)絡(luò)中的數(shù)據(jù)進行聚類分析。實驗結(jié)果表明,基于人工蜂群優(yōu)化的K-means入侵檢測模型可以在較小的迭代次數(shù)下選擇出優(yōu)化的聚類中心,并在聚類效果方面表現(xiàn)出較高的檢測率和較低的誤報率,達(dá)到了較好的檢測效果。
傳統(tǒng)K-means算法并不能達(dá)到較好的聚類效果,本文將采用優(yōu)化適應(yīng)度函數(shù)的方法改進傳統(tǒng)的人工蜂群算法,并且采用改進后的算法對K-means算法的初始聚類中心的選擇進行優(yōu)化,進而提出改進的人工蜂群優(yōu)化K-means算法。
K-means聚類算法的基本思想是在數(shù)據(jù)集中隨機選取k個樣本,將這些樣本定義為初始聚類中心,然后計算其余樣本到聚類中心的距離,并且將這些樣本歸類到距離其最近的聚類中心所屬的類簇中。當(dāng)樣本中的所有數(shù)據(jù)都分配到所屬的類中,再通過迭代計算類簇中數(shù)據(jù)的平均值得到新的初始聚類中心。當(dāng)?shù)蟮木垲愔行内呌谙嘟鼤r,即平方誤差準(zhǔn)則函數(shù)趨于收斂,則算法結(jié)束,否則繼續(xù)下一次初始聚類中心的選擇。平方誤差準(zhǔn)則函數(shù)如下。
(1)
式中:x(i)表示第i個類簇;μc(i)表示第i個類簇的均值。各類簇內(nèi)的樣本越相似,該類內(nèi)樣本的平方誤差越小。樣本之間的距離使用歐幾里得來計算。K-means算法流程圖如圖1所示。
圖1 K-means聚類算法流程圖
1.2.1 人工蜂群算法
蜂群算法最開始由Seeley在1995年提出,之后被學(xué)者Karaboga應(yīng)用在函數(shù)的極值問題的求解中,并以此提出了人工蜂群算法[14](Arificial Bee Colony,ABC)。該算法受蜜蜂采蜜的啟發(fā),根據(jù)蜜蜂在采蜜過程中的角色轉(zhuǎn)換所設(shè)計,模擬蜜蜂不斷地尋找優(yōu)秀蜜源的過程,并最終找到全局最優(yōu)蜜源。人工蜂群算法的主要思想如下。
設(shè)有N個蜜源{x1,x2…xN},每個蜜源都代表一組問題的解,可以用d維向量來表示每個問題的解。假設(shè)蜜蜂總共進行循環(huán)M次,每個蜜源可以被蜜蜂重復(fù)開采L次。
初始化階段:隨機產(chǎn)生N組d維向量作為N組解,然后計算每組解的適應(yīng)度值,將解按照適應(yīng)度值的大小進行排列,將適應(yīng)度值大的一半作為引領(lǐng)蜂,剩下的一半作為跟隨蜂。引領(lǐng)蜂在其蜜源周圍進行領(lǐng)域搜索,根據(jù)式(2)產(chǎn)生一個新的蜜源。比較兩個食物源的適應(yīng)度值,并保留適應(yīng)度值較好的蜜源。
Xij=xij+rij(xij-xkj)
(2)
式中:Xij代表xij附近的一個新的位置;k、j都屬于隨機數(shù),k=1,2…N,并且k≠i;rij∈[-1,1],使得新位置約束在xij附近;xij為原蜜源。
跟隨階段:跟隨蜂根據(jù)引領(lǐng)蜂所選擇蜜源的適應(yīng)度值,利用輪盤賭方法,根據(jù)式(3)得到的概率尋找合適的引領(lǐng)蜂。選擇后,跟隨蜂根據(jù)式(2)在蜜源的領(lǐng)域產(chǎn)生一個新的蜜源,并且比較前后兩個蜜源的適應(yīng)度值,保留適應(yīng)度函數(shù)較好的蜜源。
(3)
式中:fitnessi表示第i個蜜源的適應(yīng)度值;Pi表示跟隨蜂選擇下一個引領(lǐng)蜂的概率。當(dāng)引領(lǐng)蜂經(jīng)過L次循環(huán)蜜源沒有變化后,則引領(lǐng)蜂離開該蜜源,變?yōu)閭刹旆?,繼續(xù)去尋找新的蜜源。
1.2.2 改進適應(yīng)度值的人工蜂群算法
傳統(tǒng)人工蜂群算法在初始搜索階段不一定可以保證優(yōu)秀蜜源的全局搜索,且在隨后的搜索中也可能陷入局部最優(yōu)的情況,影響算法的整體性能。而適應(yīng)度函數(shù)將會對種群的尋優(yōu)方向、進化行為、迭代次數(shù)和尋優(yōu)結(jié)果有著重要的影響,因此本文通過改進適應(yīng)度函數(shù)的方法,使其在初始階段搜索范圍擴大,避免陷入局部最優(yōu)。改進過程如下。
定義1 設(shè)X為數(shù)據(jù)集,X={x1,x2,…,xn},假設(shè)其中的k個樣本數(shù)據(jù)被聚類劃分成類Si,Si={x1,x2…xk},定義類內(nèi)距離dbet(Si)為類Si中任意兩個數(shù)據(jù)x、y的平方和。
dbet(Si)=∑x,y∈Si‖x-y‖2
(4)
定義2 設(shè)X為數(shù)據(jù)集,X={x1,x2,…,xn},假設(shè)其中的k個樣本數(shù)據(jù)被聚類劃分為類Si,Si={x1,x2…xk},定義類間距離dwit(Si,Sj)為類Si到其他類Sj的距離,則
(5)
式中:k、p分別為類Si和類Sj中的數(shù)據(jù)對象個數(shù);x、y分別為類Si和類Sj中的數(shù)據(jù)對象。
本文將類間距離的倒數(shù)和類內(nèi)距離進行加和得到蜜源的適應(yīng)度函數(shù),一組數(shù)據(jù)的聚類結(jié)果與類間距離、類內(nèi)距離都有密切的影響,類間距離越小,說明數(shù)據(jù)之間的聚類效果越好。因此,本文最后采用的適應(yīng)度函數(shù)為
(6)
根據(jù)以上對適應(yīng)度值的改進,提出了改進的人工蜂群優(yōu)化K-means算法。該算法的基本思想是:通過改進的人工蜂群算法進行一次迭代,將所得到的一組解作為K-means算法的初始聚類中心并進行一次K-means聚類,用聚類后得到的新的聚類中心去更新蜂群,作為下一次的初始蜜源;如此不斷迭代執(zhí)行人工蜂群算法和K-means算法,直到達(dá)到事先設(shè)定的最大迭代次數(shù)。算法的具體步驟如下。
(1)設(shè)置引領(lǐng)蜂、跟隨蜂和偵察蜂的數(shù)量,最大迭代次數(shù)Max以及控制參數(shù)Limit;當(dāng)前迭代次數(shù)Cycle,初始值為1;聚類類別數(shù)K,隨機選擇N個蜜蜂,產(chǎn)生初始蜂群{Z1,Z2,…,ZN}。
(2)根據(jù)式(6)計算蜂群中每只蜜蜂所代表的初始聚類中心的適應(yīng)度值,并排列優(yōu)先級,選取適應(yīng)度值高的蜜蜂作為引領(lǐng)蜂,其余作為跟隨蜂。
(3)利用公式(2)進行領(lǐng)域搜索,得到新位置,并計算該位置的適應(yīng)度值。若適應(yīng)度值高于原位置,則新位置將代替原位置,否則,保留原位置。當(dāng)所有引領(lǐng)蜂完成搜索后,利用式(3)計算概率Pi。
(4)跟隨蜂根據(jù)概率Pi,采用輪盤賭的方法選擇引領(lǐng)蜂。Pi越大,引領(lǐng)蜂選擇蜜源的適應(yīng)度值越大,該蜜源被跟隨蜂選擇的機會也就越大。當(dāng)跟隨蜂完成選擇,轉(zhuǎn)變?yōu)橐I(lǐng)蜂后,利用式(2)繼續(xù)進行領(lǐng)域搜索,依據(jù)貪婪算法選擇適應(yīng)值更高的位置。
(5)在所有跟隨蜂完成搜索后,將得到的位置作為K-means算法的初始聚類中心,對數(shù)據(jù)集中的數(shù)據(jù)進行一次聚類,得到新的聚類中心作為人工蜂群算法的初始蜜源去更新蜂群。
(6)如果引領(lǐng)蜂在經(jīng)過次迭代后,其位置沒有任何改變,則引領(lǐng)蜂將轉(zhuǎn)變?yōu)閭刹旆?,并采用新位置代替原位置?/p>
(7)如果當(dāng)前迭代次數(shù)大于先前所設(shè)定的最大次數(shù)Max,則迭代結(jié)束,算法結(jié)束;否則轉(zhuǎn)到第2步,Cycle=Cycle+1。
為了比較該算法的性能,將在Matlab環(huán)境下對K-means算法、傳統(tǒng)人工蜂群算法優(yōu)化K-means算法以及改進人工蜂群優(yōu)化K-means算法進行仿真。
實驗數(shù)據(jù)為目前應(yīng)用廣泛的KDD CUP99數(shù)據(jù)集,該數(shù)據(jù)集來自于美國空軍局域網(wǎng)連續(xù)9個星期的網(wǎng)絡(luò)數(shù)據(jù),其組成是帶有標(biāo)識的訓(xùn)練數(shù)據(jù)和未標(biāo)記的測試數(shù)據(jù)[15-16]。在訓(xùn)練數(shù)據(jù)集中包含了正常數(shù)據(jù)類型normal和22種攻擊類型的數(shù)據(jù)組成,如表1所示。
表1 KDD CUP99入侵檢測實驗數(shù)據(jù)的標(biāo)識類型
KDD CUP99訓(xùn)練數(shù)據(jù)集包含了1個類標(biāo)識和41個固定的特征屬性,41個固定的特征屬性包含34個連續(xù)屬性和7個離散屬性。本實驗采用KDD CUP99數(shù)據(jù)集中的攻擊類型的10%抽樣kddcup.data_10_percent,將該數(shù)據(jù)集按照4∶1的比例分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集[17]。根據(jù)SD-WSN實時獲取信息的特點,本文將描述節(jié)點流量變化及更新維護網(wǎng)絡(luò)數(shù)據(jù)統(tǒng)計信息所需的流量特征加入到數(shù)據(jù)集中,如表2所示。
表2 網(wǎng)絡(luò)特征屬性
表2中流量相關(guān)的的屬性值用于DDOS攻擊檢測;路徑相關(guān)的屬性值用于路由攻擊檢測。將表2中的特征屬性加入到簡化的KDD CUP99數(shù)據(jù)集中,并通過仿真模擬得到包含這些屬性的數(shù)據(jù),如表3所示。
數(shù)據(jù)預(yù)處理是在算法建模之前,對數(shù)據(jù)的異常和缺失等情況進行處理。并以此來提高挖掘數(shù)據(jù)的效果,數(shù)據(jù)預(yù)處理的流程如圖2所示。
表3 加入屬性后的KDD CUP99數(shù)據(jù)集
圖2 數(shù)據(jù)預(yù)處理過程
2.2.1 數(shù)據(jù)清洗
數(shù)據(jù)清洗是將數(shù)據(jù)中一些與數(shù)據(jù)本身并無關(guān)聯(lián)的數(shù)據(jù)去掉,保留關(guān)鍵數(shù)據(jù),同時采用全局變量、數(shù)據(jù)屬性的均值填補空缺數(shù)據(jù),使數(shù)據(jù)集平滑,提高實驗結(jié)果準(zhǔn)確度。
2.2.2 格式轉(zhuǎn)換
格式轉(zhuǎn)換的過程將KDD數(shù)據(jù)集的41個屬性中非數(shù)值類型的數(shù)據(jù)轉(zhuǎn)換為數(shù)值類型的數(shù)據(jù),并需要將數(shù)據(jù)進行離散化處理,這種方式將需要分析的數(shù)據(jù)量精簡,以此更好的提高聚類的效果。
2.2.3 歸一化
歸一化的過程是為了消除特征屬性值之間的量綱影響,將數(shù)據(jù)集特征屬性值之間存在較大差異的數(shù)據(jù)進行處理,使數(shù)據(jù)的絕對值轉(zhuǎn)換成相對值,以此加快梯度下降求最優(yōu)解的速度。
對數(shù)據(jù)進行歸一化處理,其公式如下所示。
(7)
此方法將原始數(shù)據(jù)進行了等比縮放,式中Xnorm為利用公式歸一化后的數(shù)據(jù),X′為原始的入侵檢測數(shù)據(jù),Xmax、Xmin分別是原始入侵檢測數(shù)據(jù)中每一個屬性的最大值和最小值。處理后的數(shù)據(jù)如表4所示。
表4 預(yù)處理后的KDD CUP99數(shù)據(jù)集
在Matlab環(huán)境下,對預(yù)處理后的數(shù)據(jù)集采用改進的人工蜂群優(yōu)化K-means入侵檢測模型進行訓(xùn)練,使用測試集中(測試集是帶有標(biāo)記的數(shù)據(jù))的每一條數(shù)據(jù)計算其與分類模型中所有類簇中心的距離,將每條數(shù)據(jù)歸類到離它最近的類簇當(dāng)中,根據(jù)類簇上的標(biāo)記對每條數(shù)據(jù)進行異常檢測,區(qū)分正常數(shù)據(jù)和異常數(shù)據(jù)。
利用改進的人工蜂群算法對數(shù)據(jù)集進行尋優(yōu),并記錄迭代200次和400次的適應(yīng)度函數(shù)值。圖3和圖4分別是對數(shù)據(jù)集進行200次和400次迭代后的適應(yīng)度函數(shù)值曲線。
圖3 200次迭代適應(yīng)度函數(shù)值
由圖3可知,改進的人工蜂群優(yōu)化K-means算法的適應(yīng)度函數(shù)值較傳統(tǒng)的人工蜂群優(yōu)化K-means算法有相對的降低。表明改進后的算法在聚類效果上有了明顯的提高。由圖4可知,傳統(tǒng)人工蜂群優(yōu)化K-means算法在迭代150次達(dá)到最優(yōu),而改進的人工蜂群優(yōu)化K-means算法在迭代的前100次快速收斂,并達(dá)到極優(yōu)值,在迭代100次后無限接近于最優(yōu)值,較傳統(tǒng)的人工蜂群優(yōu)化K-means算法迭代速度明顯加快。
圖4 400次迭代適應(yīng)度函數(shù)值
與改進的K-means算法不同,傳統(tǒng)K-means算法k值的確定是隨機選擇的,而k值的選擇在很大程度影響聚類結(jié)果。因此,本實驗根據(jù)k值的選取情況,利用檢測率和誤檢率兩項指標(biāo),如式(8)、式(9)所示,對傳統(tǒng)的K-means算法、傳統(tǒng)人工蜂群優(yōu)化的K-means算法以及改進的人工蜂群優(yōu)化K-means算法進行評價。實驗結(jié)果如表5所示。
(8)
(9)
表5 檢測率和誤檢率 %
圖5為K-means算法、傳統(tǒng)人工蜂群優(yōu)化的K-means算法以及改進的人工蜂群優(yōu)化K-means算法的檢測響應(yīng)時間曲線。
由圖5可知,相比于K-means算法和傳統(tǒng)人工蜂群優(yōu)化的K-means算法,改進的人工蜂群優(yōu)化K-means算法隨著k值的增加,響應(yīng)時間明顯低于其他算法。響應(yīng)時間上的差距主要在K-means算法確定k值的方法上,采用優(yōu)化的人工蜂群算法改進K-means的k值選取方法,避免隨機選取和經(jīng)驗選取的不準(zhǔn)確性,從而達(dá)到快速迭代的效果。
圖5 檢測響應(yīng)時間變化曲線
圖6、圖7展示了K-means算法、傳統(tǒng)人工蜂群優(yōu)化K-means算法以及改進人工蜂群優(yōu)化K-means算法檢測率與誤報率的變化曲線。
圖6 檢測率變化曲線
圖7 誤檢率變化曲線
實驗結(jié)果分析:表5中K-means算法、傳統(tǒng)人工蜂群優(yōu)化K-means算法以及改進人工蜂群優(yōu)化K-means算法,根據(jù)k值的選取不同,分別得到相應(yīng)的檢測率和誤報率。比較實驗結(jié)果以及圖6、圖7的變化曲線可以看出,改進的人工蜂群優(yōu)化K-means算法在檢測率上較其他兩種算法提高5%以上,誤檢率降低至4.5%。
針對SD-WSN網(wǎng)絡(luò)環(huán)境下,傳統(tǒng)K-means入侵檢測模型檢測率低、檢測速度慢等問題,提出了一種基于改進的人工蜂群優(yōu)化K-means檢測模型。該模型首先通過優(yōu)化適應(yīng)度函數(shù)的方法改進傳統(tǒng)人工蜂群算法,加快算法的迭代速度,實現(xiàn)快速尋優(yōu)。通過改進的人工蜂群算法優(yōu)化K-means算法,實現(xiàn)K-means算法初始聚類中心的優(yōu)化選擇,消除了傳統(tǒng)K-means算法初始聚類中心隨機選擇的弊端,提高了入侵檢測中各種攻擊類別的聚類效果,并加快了異常檢測速度。仿真結(jié)果表明,改進的人工蜂群算法優(yōu)化K-means入侵檢測模型較傳統(tǒng)入侵檢測模型的檢測率提高5%以上,誤檢率降低至4.5%。