張 瑞,陳紅衛
(江蘇科技大學 電子信息學院,江蘇 鎮江 212003)
工業控制系統(Industrial Control System,ICS)是國家基礎設施的重要組成部分,其被廣泛應用于電力、水利、交通運輸等工業領域,主要用于數據采集和生產控制[1]。隨著網絡的普及,以太網、無線網等技術在工業控制系統中的應用逐漸普遍,這拓展了工業控制系統的發展空間[2],但同時也帶來信息安全問題。
近年來,構建工控網絡安全防護體系并檢測系統面臨的入侵威脅,成為國內外學者的重要研究方向。入侵檢測[3]作為一種主動的防護技術,通過對系統的網絡層數據進行分析以檢測出非法的操作,其本質是模式識別中的分類問題。支持向量機(Support Vector Machine,SVM)可用于解決模式識別領域中的數據分類問題[4],許多學者將其應用在工控入侵檢測系統中。在建立入侵檢測模型時,支持向量機的參數選擇對其分類性能影響很大。文獻[5]設計的基于神經網絡建模的工控入侵檢測系統,能夠捕獲工控網絡中的入侵行為,且不會產生任何錯誤警報。文獻[6]針對工控網絡的非法檢測命令和非法響應注入開發的基于神經網絡的入侵檢測系統,具有較高的檢測精度。文獻[7]通過搭建工控網絡仿真環境獲取Modbus功能碼序列,將Modbus TCP通信流量轉換為異常檢測模型所需的數據形式,設計了一種基于粒子群算法參數尋優的PSO-SVM算法,實驗證明該算法可以有效實現對Modbus功能碼序列的異常檢測。Kalman粒子群算法在優化基于支持向量機的工業控制系統入侵檢測模型時,存在參數易陷入局部最優的問題,文獻[8]對此提出一種改進的多信息Kalman粒子群算法。文獻[9]采用單類支持向量機(One-Class Support Vector Machine,OCSVM)為DNS、FTP、MDNS、MODBUS、TCP、UDP等協議建立流量模型,用于檢測中間人攻擊、同步洪泛等入侵行為。
工業控制系統中的網絡數據具有非線性和高維性,非線性的數據分類是模式識別領域的一個重要問題,而高維數據往往具有相關性和冗余的特征,這使得入侵檢測消耗大量的資源并且影響支持向量機的正確分類。此外,面向工業控制系統的網絡攻擊種類繁多并存在不確定性,這也使支持向量機的參數難以整定。針對上述問題,本文將Fisher分值與核主成分分析法(Kernel Principle Component Analysis,KPCA)作為特征選擇和處理的主要方法,并設計基于自適應變異的粒子群優化算法(Particle Swarm Optimization based on Self-adaptive Mutation,SVPSO)優化支持向量機的參數。
面對高維工控網絡數據,并非所有的數據特征都有用,通常存在大量不相關的特征和冗余特征,這些特征會增加入侵檢測算法的時間復雜度和空間復雜度,增加算法的計算時間和占用的內存,應用Fisher分值可以有效消除這些特征,節省計算資源。針對工控網絡數據的非線性,非線性數據的降維是標準PCA算法難以解決的一個問題。PCA算法對非線性數據的作用不明顯,反而可能使數據糅雜在一起更難以區分,因此,引入核方法將非線性數據映射到高維空間,在高維空間下使用標準PCA方法將其映射到另一低維空間,可以達到特征提取的目的。
Fisher分值[10]是一種有效的特征選擇準則,可以用來剔除數據中的噪聲特征和降低特征空間維數,其主要方法是根據Fisher準則[11]來計算所有特征的類內距離與類間距離的比值,Fisher分值越大,表明特征對于分類的貢獻度越大,因此,應選擇類內距離和類間距離盡可能大的特征建立新的數據子集。

(1)
(2)

F表示各特征的Fisher分值,可表示為:
F=Sb/Sw
(3)
則第k個特征的Fisher分值為:
(4)

主成分分析法(PCA)[12]是一種線性主元分析法,是針對線性數據的算法,其將數據集標準化歸一化處理為X={xi,x2,…,xN},然后計算數據矩陣的樣本均值和協方差矩陣:
(5)
(6)
利用特征值分解求協方差矩陣S的n個特征值λ1,λ2,…,λn以及對應特征向量θ1,θ2,…,θn,通過累計貢獻率選擇主成分分量對應的特征值,將其對應的特征向量構成映射矩陣C,令X′=X·C,即得到新的樣本數據集。
在實際應用中,數據往往是非線性的,而PCA算法對于非線性數據的效果較差。KPCA算法[13-14]是對PCA算法的非線性拓展,其通過引入非線性映射函數Φ(xi)將低維空間中的數據xi映射到高維空間產生新的數據zi,在高維空間中利用PCA進行數據降維,則此時新的樣本均值和協方差矩陣轉變為:
(7)
(8)

XTXv=λv
(9)
其中,λ和v分別為協方差矩陣S的特征值和對應的特征向量。
引入核函數Ki,j=K(xi,xj)=φ(xi)φ(xj),則核矩陣為:
(10)
求核矩陣K的特征值與特征向量:
(XXT)u=λu
(11)
對式(11)左右兩邊同時左乘一個XT,則有:
XTX(XTu)=λ(XTu)
(12)
此時可以發現矩陣K和S的特征值是相同的,矩陣S的特征向量為v=XTu,λ和u都可以由核矩陣K求出,得到x在v上的投影。
(13)
為使核矩陣K更為聚集,令:
K′=K-LK-KL+LKL
(14)


支持向量機(SVM)[15-16]是建立在統計學理論基礎上的一種有監督學習的數據分類算法,基本原理是利用核函數實現數據從低維空間到高維空間的映射,在高維空間內構造一個最優分類超平面,將其轉化為在原空間的二次回歸問題,目標函數及約束為:
s.t.y(i)(wTΦ(x(i))+b)≥1-ζi,i=1,2,…,m
ζi≥0,i=1,2,…,m
(15)
其中,C為懲罰常數,ε為松弛變量,引入Lagrange乘子將其轉化為對偶形式:
(16)
其中,k(xi,xj)為核函數,αi為Lagrange乘子。最終可得到決策函數:
(17)
SVM算法最初應用于二分類問題,在處理多分類問題時,主要通過組合多個二分類器構造多分類器。本文采用一對多法,訓練時將某個類別的樣本歸為一類,剩余樣本歸為另一類,k個類別的樣本就需要構造出k個SVM分類器。得出k個分類函數值f1(x),f2(x),…,fk(x),在進行分類時將未知樣本分為最大分類函數值的一類。
支持向量機的分類能力主要取決于懲罰常數C與核函數參數σ的取值[17],目前最常用的方法就是對C和σ在規定的范圍內取值,將訓練樣本均分為多個部分驗證C與σ當前取值下的訓練集分類正確率,最終選擇得到最高分類正確率的一組C和σ作為最優參數。粒子群優化算法[18]是一種基于種群的智能優化算法,可以在規定的空間內用來搜索模型最優參數,每個粒子在搜尋空間中初始化自己的位置和速度,此時的位置是C和σ的取值,在粒子群迭代過程中,每個粒子根據個體最優位置pbest和群體最優位置gbest,并以一定速度不斷更新自己的速度和位置。標準粒子群優化算法的數學表達式如下:
(18)
其中,ω是位置權重,C1、C2是加速因子,R1、R2是在[0,1]區間上均勻分布的隨機數,pbest是個體最優位置,gbest是群體最優位置。
PSO算法的搜索速度較快,但也存在容易收斂和后期搜索能力下降等問題。文獻[19]通過引入慣性權重ω,提出了慣性權重線性遞減的粒子群優化算法,ω計算公式如下:
(19)
其中,t為當前迭代次數,tmax為粒子群最大迭代次數。研究表明:較大的ω適用于進行大范圍的搜索,有利于跳出前期的局部最優位置,求解全局最優位置;較小的ω適用于小范圍的的挖掘,有利于搜索局部最優位置,提高收斂精度。
慣性權重可以調節PSO算法的全局和局部尋優能力,權重的線性遞減使得粒子群迭代慢慢收斂至極值點,但是這種調節方式過于單一,容易使函數陷入局部最優。當某個粒子發現了一個當前最優位置時,其他粒子也立刻聚攏到這個位置的周圍進行搜索,如果這個位置是局部最優位置,粒子群就無法再次分散到空間其他位置進行搜索,也會陷入局部最優位置,除非粒子在聚攏過程中能找到更好的位置才可以改變這一情況,然而這種幾率并不大。本文提出基于自適應變異的PSO算法SVPSO,通過引入遺傳算法的變異操作,在PSO算法的基礎上加入變異算子,在每次迭代后,粒子再以一定概率隨機初始化位置,其自適應算子公式為:
ppop(j,k)=ppopmax×rrand,rrand>c
(20)
其中,ppopmax為粒子種群最大位置,c為小于1的正常數,k為離散的隨機常數,當粒子的更新速度在規定的變異范圍內時,粒子的位置會隨機初始化,可以解決粒子群在搜索后期易陷入局部最優位置的問題。
采用SVPSO算法進行SVM的參數優化,其實現步驟如下:
1)讀入經過預處理的樣本數據。初始化SVPSO算法的參數:粒子個數為N,隨機生成粒子的最初位置X=(x1,x2,…,xN)和速度V=(v1,v2,…,vN),i=1,2,…,N,建立最初的SVM入侵檢測模型,將粒子的全體最優位置作為懲罰常數C和核函數參數,xi=(xi1,xi2),νi=(νi1,νi2),設定這兩個尋優參數范圍是[xmin,xmax]和[νmin,νmax],各粒子初始位置設置為初始個體最優位置pbest和全體最優位置gbest,設計粒子的變異規則,設定慣性權重w的遞減規則,設置粒子群最大迭代次數tmax。
2)計算粒子群適應度f(i)。在本文中粒子對應的適應度是經過交叉驗證得出的SVM正確分類率。
4)根據群體極值更新每個粒子的速度xi和位置vi,判斷每個粒子的適應度是否滿足分類正確率要求,或者算法是否達到最大迭代次數,否則返回上一步繼續進行迭代。
5)通過對比每次迭代的群體極值選擇最優參數,將其代入SVM求取決策函數f(x),建立SVM分類模型。
本文設計的基于特征優化的工控入侵檢測算法SVPSO,其算法流程如圖1所示。

圖1 SVPSO算法檢測流程Fig.1 Detection procedure of SVPSO algorithm
本文算法主要由數據集的特征優化、自適應變異粒子群參數優化、SVM模型訓練和SVM模型交叉驗證部分組成。系統流程分為4個階段:
1)數據預處理階段。采集的工控網絡數據經過Fisher分值進行特征選擇和KPCA進行特征提取,建立新的數據集。
2)支持向量機模型建立階段。根據預處理后的數據集,建立一對多的多分類SVM模型,并確立交叉驗證的規則。
3)支持向量機參數尋優階段。通過初始粒子群位置建立初始SVM模型,以訓練集數據采用交叉驗證方式驗證模型精度,返回模型精度作為粒子群的適應度,采用自適應變異的思想更新粒子群的速度和位置,從而尋找最優參數,建立最優SVM檢測模型。
4)測試集驗證階段。經過訓練后的多分類SVM分類器對同樣經過預處理的測試數據集進行檢測,得出測試集分類正確率。
本文采用密西西比州立大學關鍵基礎設施保護中心于2014年提出的用于工控入侵檢測的天然氣管道控制系統數據集[20],該數據集通過在天然氣管道控制系統注入攻擊,同時捕獲通信數據得到。數據集中除了正常行為數據,還包括了3類攻擊行為數據,即指令注入攻擊、拒絕服務攻擊和響應注入攻擊。數據集中每條數據的存儲格式為X=(x1,x2,…,xn,y),每條數據有26個基本特征和1個標簽值,本文所選取的攻擊類型和標簽值如表1所示。

表1 數據類型及標簽值Table 1 Data types and label values
為保證各類數據分布均勻,本文從原數據集中隨機抽取2 000組數據進行實驗,對于消除各特征數值分布不同的問題,采用歸一化的方法將數據映射在[0,1]上。
選取1 200組數據構成訓練集,剩余400組作為測試集。數據集中各特征的Fisher分值如圖2所示。

圖2 各特征的Fisher分值結果Fig.2 Fisher score for each feature
本文計算每個特征的Fisher分值并按降序排列。依次選取特征建立模型,進而計算分類正確率,如圖3所示。可以看出,依次添加Fisher分值排序后的前12個特征建立的模型分類正確分類率是逐漸上升的,后續特征的影響可以忽略不計,因此,本文選取以Fisher分值排序后的前12個特征組成新的數據集。

圖3 特征集分類正確率Fig.3 Classification accuracy for feature set
經Fisher分值選擇特征形成新的數據集,采用KPCA算法對數據集進行處理,將原12維非線性特征映射到高維空間中,按照降序選擇貢獻率超過80%的特征值對應的特征向量作為高維空間中的坐標軸,將數據映射在這些軸上最終得到5維的數據集作為SVM的輸入。
將本文算法在MATLAB上進行實現,SVPSO算法參數設置為:種群大小為30,最大迭代次數為300,粒子群的維數設置為2,c1=c2=1.5,ωstart=1.2,ωend=0.4。對于變異算子,本文設定當0.5 圖4 標準PSO算法適應度曲線與測試集分類結果Fig.4 Fitness curve and test set classification results ofstandard PSO algorithm 圖5 SVPSO算法適應度曲線與測試集分類結果Fig.5 Fitness curve and test set classification results ofSVPSO algorithm 4.4.1 總體檢測效果對比 為進一步研究分析,本文分別采用BP神經網絡(BPANN)、高斯型樸素貝葉斯、K鄰近和隨機森林算法建立入侵檢測模型,得到的混淆矩陣如圖6所示。 圖6 分類混淆矩陣Fig.6 Classification confusion matrix 通過混淆矩陣可以清楚地看出每種分類的結果分布,但不能判斷分類精度的高低,因此,進一步計算入侵檢測模型的總體檢測精度、誤報率和Kappa系數,對比結果如表2所示。 表2 5種算法的檢測性能評價Table 2 Evaluation of detection performance of five algorithms % 由表2可以看出,本文算法建立的入侵檢測模型的檢測精度最高,其誤報率與其他算法相比顯著降低,而Kappa系數是一種計算分類精度的方法,Kappa系數越高,表示分類器的性能越好,本文算法的該項指標也最高。 4.4.2 各類攻擊行為檢測效果對比 本文采用的數據集共有8類數據(包含正常行為數據),采用各類算法對每種攻擊行為檢測,檢測效果如圖7所示。 圖7 針對不同攻擊類型的檢測效果Fig.7 Detection effects of different attack types 從圖7可以看出,本文SVPSO算法所建立的模型與其他算法建立的模型相比,對各類攻擊具有較高的檢測精度,其他算法建立的模型對復雜惡意響應注入、惡意狀態命令注入、非法狀態命令注入,尤其拒絕服務惡意操作命令注入的檢測率較低,本文算法模型對拒絕服務攻擊的檢測率也在95%以上。 針對工控網絡數據高維性和非線性的特點,本文提出基于自適應變異的PSO算法SVPSO。采用Fisher分值和KPCA方法進行數據特征選擇、非線性變換和特征降維,達到去除冗余的特征、數據線性化和數據降維的目的。在此基礎上,建立基于SVPSO的工控入侵檢測模型,將遺傳算法的變異思想引入到PSO算法中,對SVM的模型參數進行尋優。仿真結果表明,相比于BPANN、隨機森林、樸素貝葉斯等算法構建的模型,該模型在各攻擊類型的檢測上均具較高的準確率。下一步將采用深度學習的方法優化數據特征,挖掘其中有效信息,同時提高分類精度。

4.4 入侵檢測模型性能對比



5 結束語