張子迎, 潘思辰, 王宇華
(1.嘉應學院 計算機學院,廣東 梅州 514015; 2.哈爾濱工程大學 計算機與科學技術學院,黑龍江 哈爾濱 150001)
入侵檢測是工業(yè)控制系統(tǒng)(industrial control system,ICS)安全防御中關鍵的一環(huán),通過對系統(tǒng)中關鍵數(shù)據(jù)的收集分析,實時檢測出系統(tǒng)內外的異常行為并采取相應的保護措施,可有效地增強系統(tǒng)的攻擊檢測及預警能力。
單類支持向量機(one class support vector machine,OCSVM)[1]因其特有的優(yōu)勢,成為入侵檢測中最為常用的方法之一,并已經取得了一定的成果。Kim等[2]首先基于C4.5決策樹算法對數(shù)據(jù)進行分解,然后構造多個OCSVM模型對分解后的數(shù)據(jù)集進行訓練,該方法可以利用異常和正常這2種行為信息,但是忽略了各數(shù)據(jù)集合之間的聯(lián)系;Nguyen等[3]針對高維數(shù)據(jù)集提出了一種基于自動編碼器的單類支持向量機的入侵檢測方法,利用隨機梯度下降來獲得端到端的訓練,檢測性能明顯增強但是訓練速度較慢。秦濟韜[4]首先利用變分自編碼器(variational auto-encoder,VAE)對樣本進行低維編碼并將模型重構誤差輸入到分類器中,然后利用隨機傅里葉特征(random Fourier features,RFF)和Hinge loss目標函數(shù)對OCSVM進行優(yōu)化。該方法對異常樣本具有較好的檢測能力,但是對時序情況下和非結構化數(shù)據(jù)的檢測效果不佳。王華忠等[5-6]在主成分分析(principle component analysis,PCA)方法對入侵數(shù)據(jù)進行降維的基礎上,利用粒子群算法對支持向量機參數(shù)進行優(yōu)化,以獲得較優(yōu)的入侵檢測模型。但上述研究沒有考慮工業(yè)控制系統(tǒng)中數(shù)據(jù)緯度高、非線性等特點及粒子群算法容易陷入局部極小值等問題。
針對以上問題,本文在核主成分分析(kernel principle component analysis,KPCA)的基礎上引入Fisher-Score,綜合考慮樣本的類別信息和特征信息總量,實現(xiàn)對工業(yè)數(shù)據(jù)的特征提?。黄浯尾捎梅謱訁f(xié)同免疫粒子群(hierarchical collaborative immune particle swarm optimization,HCIPSO)算法對OCSVM參數(shù)進行尋優(yōu),克服了基本粒子群易早熟陷入局部收斂等問題;最后基于優(yōu)化后的OCSVM算法構建入侵檢測模型,應用密西西比大學公開的工控入侵檢測數(shù)據(jù)集進行仿真對比實驗驗證。
本文采用了一種基于Fisher特征選擇的改進KPCA方法(kernel principal component analysis method based on fisher feature improved selection,FKPCA),首先基于Fisher-Score篩選出最利于分類的特征,再對特征進行KPCA降維,實現(xiàn)數(shù)據(jù)的特征提取。
將Fisher-Score引入KPCA,根據(jù)類內和類間聚散度這2項指標來計算特征的類別信息量,提取特征和類別空間中的非線性信息[7],并選擇對分類貢獻度大的特征建立新的數(shù)據(jù)子集進行核主成分分析,具體實現(xiàn)步驟如下:
1) 輸入工業(yè)數(shù)據(jù)集[x1,x2,…,xN],其中xi=[x1ix2i…xLi]T,xi∈R,i=1,2,…,N,L為樣本總個數(shù),N為數(shù)據(jù)特征維數(shù)??蓪颖緞澐譃閑類,每類樣本個數(shù)li。
2) 計算各特征的Fisher-Score:
3) 選擇類間距離大而類內距離小的特征建立特征子集,將特征按Fk從大到小排序,選擇前M個特征建立新的數(shù)據(jù)集ULxM。
4) 輸入新的數(shù)據(jù)集ULxM;根據(jù)核函數(shù)K(xi,xj),計算核函數(shù)矩陣K:
K=[Ki,j]L×L=K(xi,xj)=
式中:I為L×L的矩陣,且滿足Iij=1/L。
7) 將λ降序排列并計算累積貢獻率,選出滿足式(1)的前m個非線性主成分:
(1)
8) 計算樣本數(shù)據(jù)的非線性主成分Y,實現(xiàn)工業(yè)數(shù)據(jù)的降維:
選出前m個非線性主成分累計方差貢獻率超過90%的特征向量,輸出降維后的樣本數(shù)據(jù)YLxm,實現(xiàn)對工業(yè)數(shù)據(jù)的降維。
在OCSVM入侵檢測算法中,分類決策函數(shù)核參數(shù)g和權衡參數(shù)v設置不當,會造成模型計算復雜度過大或者過擬合等問題。因此,本文將免疫克隆選擇和協(xié)同進化策略引入粒子群算法(particle swarm optimization,PSO),提出一種分層協(xié)同免疫粒子群(hierarchical collaborative immune particle swarm optimization,HCIPSO)參數(shù)優(yōu)化算法。該算法模型采用層狀結構。普通層各子群的獨立搜索和復合進化模式擴大了解空間搜索范圍,自適應層種群通過與普通層粒子進行交流快速地向全局最優(yōu)解靠近,保證了算法的收斂性,精英層種群則進行全局指導,提升整體檢索性能,加強信息交流和各種群間協(xié)作,增強算法收斂性能。HCIPSO算法流程如圖1所示。
圖1 分層協(xié)同免疫粒子群算法(HCIPSO)流程圖Fig.1 Flow chart of hierarchical collaborative immune particle swarm optimization (HCIPSO)
整個粒子簇由N個在D維搜索空間中移動的粒子構成,粒子i(i=1,2,…,N)的位置和速度為Xi={Xi1,Xi2,…,Xid}、Vi={Vi1,Vi2,…,Vid},粒子位置為參數(shù)最優(yōu)問題中的一個可行解,通過目標函數(shù)計算得到度量該解的適應度值fiti(t)。
2.1.1 普通層免疫粒子群算法
普通層種群Pi(t)=(P1,P2,…,Pi,…,Pm),位于模型的底層,其中Pi代表第i個普通子種群。普通子種群中粒子速度和位置的更新方式與標準粒子群相同,具體進化步驟如下:
1) 精英保留:根據(jù)適應度從大到小對粒子進行排序,選擇前k個優(yōu)秀粒子復制至下一代。
2) 次優(yōu)變異:在k個精英粒子中隨機選擇一個粒子和次優(yōu)的m個粒子執(zhí)行Cauchy免疫變異操作,將精英粒子的優(yōu)秀抗體基因注入次優(yōu)粒子中,具體變異操作為:
Pg(t+1)=Pg(t)-r1(Pg(t)-Ph(t))+
r2CauchyPg(t)
(2)
式中:r1、r2是0~1上的隨機數(shù);Pg、Ph分別表示次優(yōu)粒子和精英粒子;CauchyPg(t)為密度函數(shù)。
3) 末位淘汰:選擇末位的L個粒子執(zhí)行初始化操作,增強種群活性。
2.1.2 自適應層免疫粒子群算法
自適應層種群Psa(t)位于模型的中間層,其種群內粒子數(shù)量和下層子種群相同。該層種群綜合全局的速度和適應度信息自適應地對飛行方向和速度進行調整。粒子的速度更新方式為:
(3)
自適應層第i個粒子的位置更新方式為:
(4)
式中:δ1、δ2、δ3為影響因子,并滿足δ1+δ2+δ3=1。
2.1.3 精英層免疫粒子群算法
精英層種群Pe(t)=(P1j,P2j,…,Pij,…,Pmj,…,Psaj)位于模型的頂層,其中Pij為第i個子種群的第j個粒子。每一代種群更新之后,在普通層各子群中選取一個最佳粒子,在自適應層中隨機選取一個次佳粒子提呈至精英層,采用免疫克隆算子引導精英粒子進行進化,進化完畢則選擇優(yōu)秀個體遷移回普通層和自適應層。進化步驟如下:
1) 將精英層的每個粒子看作是抗體,根據(jù)各抗體的親和度大小對其進行排序并進行免疫克隆操作生成臨時種群,克隆倍數(shù)Nc與該抗體的親和度有關。
式中:fi表示粒子的適應度,D表示精英層種群規(guī)模,?表示0~1的克隆系數(shù)。
2) 對擴增后的臨時種群執(zhí)行變尺度的高頻變異操作,在維持解的多樣性的同時實現(xiàn)局部微調,變異算子為:
Pid(t+1)=
ρ(t)=1-r[1-(t/T)]2
(5)
式中:ρ(t)表示變異尺度;T表示總進化代數(shù);r和u(0,1)為0~1隨機數(shù)。由式(5)可知,對于較小的r,在進化初期λ(k)接近于1,變異能力強;在進化后期λ(k)接近于0,變異強度減弱,實現(xiàn)了對局部范圍的精細搜索。
3) 克隆選擇,從變異后的群體中選擇最優(yōu)秀的個體進入下一代。
2.1.4 HCIPSO算法執(zhí)行步驟
HCIPSO算法具體實現(xiàn)步驟如下:
算法HCIPSO
輸入:vi和wi;
輸出:Wi=[Wi1Wi2…WigWiv…Wid]T。
1)初始化HCIPSO,子群Pi、Psa、Pe,種群規(guī)模N,D維空間粒子隨機速度Vi=[Vi1Vi2…Vid]T,位置Wi=[Wi1Wi2…Wid]T、及參數(shù)ω、δ、?、c1、r1、c2、r2等;
2)While 未達到終止條件 // 最優(yōu)解或者最大迭代次數(shù);
IfT≥1 // 迭代次數(shù)大于1;
For EachK∈Pido
CalculateVid(t+1)、Wid(t+1)、fiti(t)//更新普通層種群Pi(t)=(P1,…,Pi,…,Pm)各粒子速度和位置;計算粒子適應度值;
If fiti(t) ?末位Lthen
CalculatePg(t+1) // 按式(2)隨機選擇一個粒子和次優(yōu)的m個粒子執(zhí)行Cauchy免疫變異操作;
Else deletePi(t) // 末位淘汰;
End if
3)For EachK∈Psado
4)For EachK∈Pedo
CalculatePe(t+1) // 各子群的一個最佳和隨機一個次佳粒子提呈至精英層,并執(zhí)行免疫克隆操作實現(xiàn)精英層的種群進化;
5)Calculate fite(t)// 計算精英層粒子的適應度,選取部分優(yōu)秀粒子遷移回普通層和自適應層;
Else
返回2)
End while
6)輸出最優(yōu)位置和速度。
該方法引入人工免疫思想促使粒子群跳出局部極值點,通過對普通層進行混合免疫操作保證種群的多樣性和算法的全局尋優(yōu)能力;同時自適應層的粒子根據(jù)普通層信息進行自適應迭代以增進種群間的信息交流;而精英層進行免疫克隆選擇操作可以增強種群的進化速度和算法的尋優(yōu)性能。因此多群體的協(xié)同進化使算法的局部和全局搜索能力得到有效平衡,更加適用于復雜問題。同時,群體間的信息交互和共享可以降低算法的冗余,提高收斂速度。
本文使用FKPCA算法對工控系統(tǒng)的數(shù)據(jù)進行特征提取,同時引入HCIPSO算法對OCSVM模型的參數(shù)進行尋優(yōu),在減少檢測模型訓練時間的同時提升對入侵行為的檢測準確度,進一步滿足工業(yè)控制系統(tǒng)(industrial control system,ICS)對安全防護能力和入侵檢測相關指標的要求[8]。FKPCA-HCIPSO-OCSVM入侵檢測算法流程如圖2所示。
圖2 FKPCA-HCIPSO-OCSVM入侵檢測流程Fig.2 FKPCA-HCIPSO-OCSVM algorithm flow chart
算法分為4個階段:
1) 數(shù)據(jù)預處理:首先利用Fisher-Score對原始工業(yè)數(shù)據(jù)集進行特征選擇以構建新的特征子集,然后采用KPCA方法對該子集進行降維,建立新的入侵檢測數(shù)據(jù)集。
2) OCSVM模型建立:利用特征提取后的數(shù)據(jù)集建立OCSVM入侵檢測訓練模型,確定入侵檢測模型的驗證規(guī)則。
3) OCSVM參數(shù)尋優(yōu):初始化粒子群,利用粒子群傳遞的參數(shù)g和v構造OCSVM模型并進行訓練,其中各粒子的位置和速度為Xi=[xigxiv]、Vi=[vigviv],代表入侵檢測模型中需要進行尋優(yōu)的2個參數(shù)g和v,設置參數(shù)范圍[Xmin,Xmax]、[Vmin,Vmax],然后返回OCSVM模型的入侵檢測準確率作為粒子適應度,采用HCIPSO算法對粒子群進行進化更新,獲得最優(yōu)參數(shù),構建最終的OCSVM入侵檢測模型。
4) OCSVM模型驗證:首先采取與訓練集相同的方法對測試集進行預處理,然后利用上述訓練好的OCSVM入侵檢測模型對該數(shù)據(jù)集進行檢測,通過評價指標驗證該模型的入侵檢測效果。
本文采用密西西比大學公開的基于Modbus Tcp協(xié)議的工控入侵檢測數(shù)據(jù)集,該數(shù)據(jù)集包含反映網絡流量、過程控制和過程測量功能的特征[9];主要分為:惡意響應注入攻擊、惡意命令注入攻擊、拒絕服務攻擊、偵察攻擊[10]4類。將“Nomal”類的正常數(shù)據(jù)樣本標記為+1類,其余類別均當作異常數(shù)據(jù)樣本標記為-1類。隨機選取6 000條樣本,包括4 800條由正常數(shù)據(jù)樣本構成的訓練集和1 200條由正常數(shù)據(jù)樣本和異常數(shù)據(jù)樣本構成的測試集,通過實驗驗證該方法的性能。同時,將通過準確率(accuracy,ACC)、精確率(Precision)、誤報率(false negative rate,FNR)、異常樣本精確率(true negative rate,TNR)、漏報率FPR和F1分數(shù)這幾種評價指標來衡量該模型的檢測性能。
3.2.1 FKPCA特征提取
隨機選取2 000條既有正常數(shù)據(jù)又有異常數(shù)據(jù)的樣本集,對樣本集進行特征選擇,計算每個特征的Fisher-Score并從大到小排列,采用基本OCSVM作為分類器,依次選取特征訓練模型并計算特征綜合貢獻度。
如圖3所示,添加至第15個特征時,綜合貢獻度達到峰值,此時入侵檢測模型性能最好。后續(xù)特征對模型的影響很小,說明其相關性較差且無益于后續(xù)入侵檢測的分類識別,因此選擇前15個特征為最終的特征子集。
圖3 特征綜合貢獻度變化曲線Fig.3 Variation curve of feature comprehensive contribution
經過Fisher特征選擇之后,采用KPCA方法對新特征子集進行降維。降維結果如圖4所示,根據(jù)特征值累積貢獻率超過90%的標準,選取前8維主成分信息組成新數(shù)據(jù)集。
圖4 KPCA降維結果Fig.4 KPCA dimensionality reduction results
而表1中,基于FKPCA的入侵檢測算法在3個評價指標上有不錯的表現(xiàn),不僅提升了識別準確率、降低了異常樣本漏報率而且縮短了訓練時間。
表1 特征提取效果對比Table 1 Comparison of feature extraction effects
3.2.2 HCIPSO參數(shù)優(yōu)化
為了驗證HCIPSO參數(shù)優(yōu)化方法對OCSVM入侵檢測模型的優(yōu)化效果,本文將HCIPSO、免疫粒子群(immune particle swarm optimization,IPSO)、粒子群(genetic algorithm,PSO)、遺傳算法(GA)對OCSVM參數(shù)尋優(yōu)的結果進行比較,c1=1.7,c2=1.5,ω=0.9,其中迭代次數(shù)為50。
HCIPSO普通子群數(shù)為3,子群規(guī)模為10,其余粒子群算法種群規(guī)模為50,GA算法染色體數(shù)量為50。經過多次仿真實驗,各代的訓練適應度迭代曲線如圖5,模型的訓練時間和訓練準確率如表2。
由圖5和表2可以看出HCIPSO算法對OCSVM的尋優(yōu)效果最好,準確率達到了98.86%;PSO的優(yōu)化效果最差,只有94.58%;IPSO的收斂速度最快,12代左右就能達到最優(yōu)值;HCIPSO僅次于IPSO,在第15代左右收斂至最優(yōu);GA收斂速度最慢但準確度略高于PSO。從圖5中可以看出,結合了人工免疫思想的PSO優(yōu)化算法全局尋優(yōu)能力有所提升,HCIPSO算法雖然比IPSO算法的收斂速度稍慢一些,但在整體尋優(yōu)效果上仍具有一定的優(yōu)勢。同時,相比于PSO算法,IPSO和HCIPSO的訓練時間有所增長,這是由其在尋優(yōu)過程中的選擇、克隆和變異等操作引起的。但是其訓練時間分別只增長了5.4 s和8.9 s,并不會影響檢測模型的實際應用。
圖5 不同算法優(yōu)化OCSVM的訓練準確率對比Fig.5 Comparison of training accuracy of OCSVM optimized by different algorithms
表2 優(yōu)化算法訓練時間和訓練準確率對比Table 2 Comparison of optimization algorithm training time and training
本文使用1 200組測試數(shù)據(jù)集來測試訓練所得到的OCSVM模型,因為實驗數(shù)據(jù)集為不平衡數(shù)據(jù)集,除ACC和Precision以外,還使用誤報率FNR、漏報率FPR及F1指標來綜合評價算法的檢測識別性能,具體測試結果如表3。
由表3可知,使用HCIPSO優(yōu)化的OCSVM入侵檢測模型的檢測準確率最高,達到了98.58%,相比于訓練集準確率只減少了0.28%,而GA算法測試集檢測準確率比訓練集明顯下降。HCIPSO-OCSVM的精確率達到98.82%。同時,其漏報率和誤報率明顯低于其他算法優(yōu)化后的模型。另外,從整體來看,本文算法的F1-score要比其他方法更高,對工控網絡數(shù)據(jù)更有效,有一定的實用價值。
表3 各優(yōu)化算法入侵檢測結果對比Table 3 Comparison of intrusion detection results of various optimization algorithms
以上指標大多是對正常樣本的識別情況進行評價,圖6展示出模型對異常樣本的識別能力和識別精確度。
如圖6(a)所示,黃色面積越大,代表了實際識別出異常樣本的程度越高;如圖6(b)所示,黃色面積越大,代表在被識別為異常的樣本中,真實的異常樣本所占比例越大。
圖6 異常樣本的識別能力和識別精確度Fig.6 Abnormal sample recognition ability and recognition accuracy
為了進一步驗證本文方法的優(yōu)勢,對比分析孤立森林(isolation forest,Iforest)、自編碼(robust deep autoencoders,AE)、深度嵌入聚類(deep embedding clustering,DEC)[11]、魯棒深度自編碼(RDA)算法[12]對該數(shù)據(jù)集的總體檢測效果,具體結果如表4所示。
表4 不同類型入侵檢測算法結果對比Table 4 Comparison of results of different types of intrusion detection algorithms
從表4可以看出,AE算法和本文方法性能接近且均優(yōu)于其他方法,其FPR指標略低于本文方法,F(xiàn)NR指標略高于本文方法。從F1指標來看,本文方法的適用性略優(yōu)一些。
通過對上述實驗結果的分析可知,本文所提出的改進的OCSVM入侵檢測模型的ACC和Precision指標有明顯提升,同時FNR和FPR等指標也顯著降低,說明該模型對正常樣本數(shù)據(jù)和異常樣本數(shù)據(jù)都有較高的識別能力,適用于工業(yè)控制系統(tǒng)的安全防護。
1)采用FKPCA方法綜合考慮樣本的類別信息和總信息量對工業(yè)數(shù)據(jù)集進行特征提取,以消除數(shù)據(jù)冗余,降低數(shù)據(jù)維度,便于后續(xù)入侵檢測模型的訓練;
2)采用HCIPSO算法對OCSVM參數(shù)進行尋優(yōu),解決了粒子群易陷入局部收斂等問題,增強了算法的綜合性能;
3)構建基于FKPCA-HCIPSO-OCSVM的入侵檢測模型,并與幾種參數(shù)優(yōu)化算法及其他類型的入侵檢測算法進行對比實驗;
4)由實驗結果可知,相對于其他算法,本文算法在各方面的檢測性能均具有一定優(yōu)勢,能夠較好地滿足工控系統(tǒng)對入侵檢測的需求,有一定的實用價值。