張 瑞,陳紅衛(wèi)
(江蘇科技大學(xué) 電子信息學(xué)院,江蘇 鎮(zhèn)江 212003)
工業(yè)控制系統(tǒng)(Industrial Control System,ICS)是國家基礎(chǔ)設(shè)施的重要組成部分,其被廣泛應(yīng)用于電力、水利、交通運(yùn)輸?shù)裙I(yè)領(lǐng)域,主要用于數(shù)據(jù)采集和生產(chǎn)控制[1]。隨著網(wǎng)絡(luò)的普及,以太網(wǎng)、無線網(wǎng)等技術(shù)在工業(yè)控制系統(tǒng)中的應(yīng)用逐漸普遍,這拓展了工業(yè)控制系統(tǒng)的發(fā)展空間[2],但同時(shí)也帶來信息安全問題。
近年來,構(gòu)建工控網(wǎng)絡(luò)安全防護(hù)體系并檢測系統(tǒng)面臨的入侵威脅,成為國內(nèi)外學(xué)者的重要研究方向。入侵檢測[3]作為一種主動(dòng)的防護(hù)技術(shù),通過對(duì)系統(tǒng)的網(wǎng)絡(luò)層數(shù)據(jù)進(jìn)行分析以檢測出非法的操作,其本質(zhì)是模式識(shí)別中的分類問題。支持向量機(jī)(Support Vector Machine,SVM)可用于解決模式識(shí)別領(lǐng)域中的數(shù)據(jù)分類問題[4],許多學(xué)者將其應(yīng)用在工控入侵檢測系統(tǒng)中。在建立入侵檢測模型時(shí),支持向量機(jī)的參數(shù)選擇對(duì)其分類性能影響很大。文獻(xiàn)[5]設(shè)計(jì)的基于神經(jīng)網(wǎng)絡(luò)建模的工控入侵檢測系統(tǒng),能夠捕獲工控網(wǎng)絡(luò)中的入侵行為,且不會(huì)產(chǎn)生任何錯(cuò)誤警報(bào)。文獻(xiàn)[6]針對(duì)工控網(wǎng)絡(luò)的非法檢測命令和非法響應(yīng)注入開發(fā)的基于神經(jīng)網(wǎng)絡(luò)的入侵檢測系統(tǒng),具有較高的檢測精度。文獻(xiàn)[7]通過搭建工控網(wǎng)絡(luò)仿真環(huán)境獲取Modbus功能碼序列,將Modbus TCP通信流量轉(zhuǎn)換為異常檢測模型所需的數(shù)據(jù)形式,設(shè)計(jì)了一種基于粒子群算法參數(shù)尋優(yōu)的PSO-SVM算法,實(shí)驗(yàn)證明該算法可以有效實(shí)現(xiàn)對(duì)Modbus功能碼序列的異常檢測。Kalman粒子群算法在優(yōu)化基于支持向量機(jī)的工業(yè)控制系統(tǒng)入侵檢測模型時(shí),存在參數(shù)易陷入局部最優(yōu)的問題,文獻(xiàn)[8]對(duì)此提出一種改進(jìn)的多信息Kalman粒子群算法。文獻(xiàn)[9]采用單類支持向量機(jī)(One-Class Support Vector Machine,OCSVM)為DNS、FTP、MDNS、MODBUS、TCP、UDP等協(xié)議建立流量模型,用于檢測中間人攻擊、同步洪泛等入侵行為。
工業(yè)控制系統(tǒng)中的網(wǎng)絡(luò)數(shù)據(jù)具有非線性和高維性,非線性的數(shù)據(jù)分類是模式識(shí)別領(lǐng)域的一個(gè)重要問題,而高維數(shù)據(jù)往往具有相關(guān)性和冗余的特征,這使得入侵檢測消耗大量的資源并且影響支持向量機(jī)的正確分類。此外,面向工業(yè)控制系統(tǒng)的網(wǎng)絡(luò)攻擊種類繁多并存在不確定性,這也使支持向量機(jī)的參數(shù)難以整定。針對(duì)上述問題,本文將Fisher分值與核主成分分析法(Kernel Principle Component Analysis,KPCA)作為特征選擇和處理的主要方法,并設(shè)計(jì)基于自適應(yīng)變異的粒子群優(yōu)化算法(Particle Swarm Optimization based on Self-adaptive Mutation,SVPSO)優(yōu)化支持向量機(jī)的參數(shù)。
面對(duì)高維工控網(wǎng)絡(luò)數(shù)據(jù),并非所有的數(shù)據(jù)特征都有用,通常存在大量不相關(guān)的特征和冗余特征,這些特征會(huì)增加入侵檢測算法的時(shí)間復(fù)雜度和空間復(fù)雜度,增加算法的計(jì)算時(shí)間和占用的內(nèi)存,應(yīng)用Fisher分值可以有效消除這些特征,節(jié)省計(jì)算資源。針對(duì)工控網(wǎng)絡(luò)數(shù)據(jù)的非線性,非線性數(shù)據(jù)的降維是標(biāo)準(zhǔn)PCA算法難以解決的一個(gè)問題。PCA算法對(duì)非線性數(shù)據(jù)的作用不明顯,反而可能使數(shù)據(jù)糅雜在一起更難以區(qū)分,因此,引入核方法將非線性數(shù)據(jù)映射到高維空間,在高維空間下使用標(biāo)準(zhǔn)PCA方法將其映射到另一低維空間,可以達(dá)到特征提取的目的。
Fisher分值[10]是一種有效的特征選擇準(zhǔn)則,可以用來剔除數(shù)據(jù)中的噪聲特征和降低特征空間維數(shù),其主要方法是根據(jù)Fisher準(zhǔn)則[11]來計(jì)算所有特征的類內(nèi)距離與類間距離的比值,Fisher分值越大,表明特征對(duì)于分類的貢獻(xiàn)度越大,因此,應(yīng)選擇類內(nèi)距離和類間距離盡可能大的特征建立新的數(shù)據(jù)子集。
(1)
(2)
F表示各特征的Fisher分值,可表示為:
F=Sb/Sw
(3)
則第k個(gè)特征的Fisher分值為:
(4)
主成分分析法(PCA)[12]是一種線性主元分析法,是針對(duì)線性數(shù)據(jù)的算法,其將數(shù)據(jù)集標(biāo)準(zhǔn)化歸一化處理為X={xi,x2,…,xN},然后計(jì)算數(shù)據(jù)矩陣的樣本均值和協(xié)方差矩陣:
(5)
(6)
利用特征值分解求協(xié)方差矩陣S的n個(gè)特征值λ1,λ2,…,λn以及對(duì)應(yīng)特征向量θ1,θ2,…,θn,通過累計(jì)貢獻(xiàn)率選擇主成分分量對(duì)應(yīng)的特征值,將其對(duì)應(yīng)的特征向量構(gòu)成映射矩陣C,令X′=X·C,即得到新的樣本數(shù)據(jù)集。
在實(shí)際應(yīng)用中,數(shù)據(jù)往往是非線性的,而PCA算法對(duì)于非線性數(shù)據(jù)的效果較差。KPCA算法[13-14]是對(duì)PCA算法的非線性拓展,其通過引入非線性映射函數(shù)Φ(xi)將低維空間中的數(shù)據(jù)xi映射到高維空間產(chǎn)生新的數(shù)據(jù)zi,在高維空間中利用PCA進(jìn)行數(shù)據(jù)降維,則此時(shí)新的樣本均值和協(xié)方差矩陣轉(zhuǎn)變?yōu)?
(7)
(8)
XTXv=λv
(9)
其中,λ和v分別為協(xié)方差矩陣S的特征值和對(duì)應(yīng)的特征向量。
引入核函數(shù)Ki,j=K(xi,xj)=φ(xi)φ(xj),則核矩陣為:
(10)
求核矩陣K的特征值與特征向量:
(XXT)u=λu
(11)
對(duì)式(11)左右兩邊同時(shí)左乘一個(gè)XT,則有:
XTX(XTu)=λ(XTu)
(12)
此時(shí)可以發(fā)現(xiàn)矩陣K和S的特征值是相同的,矩陣S的特征向量為v=XTu,λ和u都可以由核矩陣K求出,得到x在v上的投影。
(13)
為使核矩陣K更為聚集,令:
K′=K-LK-KL+LKL
(14)
支持向量機(jī)(SVM)[15-16]是建立在統(tǒng)計(jì)學(xué)理論基礎(chǔ)上的一種有監(jiān)督學(xué)習(xí)的數(shù)據(jù)分類算法,基本原理是利用核函數(shù)實(shí)現(xiàn)數(shù)據(jù)從低維空間到高維空間的映射,在高維空間內(nèi)構(gòu)造一個(gè)最優(yōu)分類超平面,將其轉(zhuǎn)化為在原空間的二次回歸問題,目標(biāo)函數(shù)及約束為:
s.t.y(i)(wTΦ(x(i))+b)≥1-ζi,i=1,2,…,m
ζi≥0,i=1,2,…,m
(15)
其中,C為懲罰常數(shù),ε為松弛變量,引入Lagrange乘子將其轉(zhuǎn)化為對(duì)偶形式:
(16)
其中,k(xi,xj)為核函數(shù),αi為Lagrange乘子。最終可得到?jīng)Q策函數(shù):
(17)
SVM算法最初應(yīng)用于二分類問題,在處理多分類問題時(shí),主要通過組合多個(gè)二分類器構(gòu)造多分類器。本文采用一對(duì)多法,訓(xùn)練時(shí)將某個(gè)類別的樣本歸為一類,剩余樣本歸為另一類,k個(gè)類別的樣本就需要構(gòu)造出k個(gè)SVM分類器。得出k個(gè)分類函數(shù)值f1(x),f2(x),…,fk(x),在進(jìn)行分類時(shí)將未知樣本分為最大分類函數(shù)值的一類。
支持向量機(jī)的分類能力主要取決于懲罰常數(shù)C與核函數(shù)參數(shù)σ的取值[17],目前最常用的方法就是對(duì)C和σ在規(guī)定的范圍內(nèi)取值,將訓(xùn)練樣本均分為多個(gè)部分驗(yàn)證C與σ當(dāng)前取值下的訓(xùn)練集分類正確率,最終選擇得到最高分類正確率的一組C和σ作為最優(yōu)參數(shù)。粒子群優(yōu)化算法[18]是一種基于種群的智能優(yōu)化算法,可以在規(guī)定的空間內(nèi)用來搜索模型最優(yōu)參數(shù),每個(gè)粒子在搜尋空間中初始化自己的位置和速度,此時(shí)的位置是C和σ的取值,在粒子群迭代過程中,每個(gè)粒子根據(jù)個(gè)體最優(yōu)位置pbest和群體最優(yōu)位置gbest,并以一定速度不斷更新自己的速度和位置。標(biāo)準(zhǔn)粒子群優(yōu)化算法的數(shù)學(xué)表達(dá)式如下:
(18)
其中,ω是位置權(quán)重,C1、C2是加速因子,R1、R2是在[0,1]區(qū)間上均勻分布的隨機(jī)數(shù),pbest是個(gè)體最優(yōu)位置,gbest是群體最優(yōu)位置。
PSO算法的搜索速度較快,但也存在容易收斂和后期搜索能力下降等問題。文獻(xiàn)[19]通過引入慣性權(quán)重ω,提出了慣性權(quán)重線性遞減的粒子群優(yōu)化算法,ω計(jì)算公式如下:
(19)
其中,t為當(dāng)前迭代次數(shù),tmax為粒子群最大迭代次數(shù)。研究表明:較大的ω適用于進(jìn)行大范圍的搜索,有利于跳出前期的局部最優(yōu)位置,求解全局最優(yōu)位置;較小的ω適用于小范圍的的挖掘,有利于搜索局部最優(yōu)位置,提高收斂精度。
慣性權(quán)重可以調(diào)節(jié)PSO算法的全局和局部尋優(yōu)能力,權(quán)重的線性遞減使得粒子群迭代慢慢收斂至極值點(diǎn),但是這種調(diào)節(jié)方式過于單一,容易使函數(shù)陷入局部最優(yōu)。當(dāng)某個(gè)粒子發(fā)現(xiàn)了一個(gè)當(dāng)前最優(yōu)位置時(shí),其他粒子也立刻聚攏到這個(gè)位置的周圍進(jìn)行搜索,如果這個(gè)位置是局部最優(yōu)位置,粒子群就無法再次分散到空間其他位置進(jìn)行搜索,也會(huì)陷入局部最優(yōu)位置,除非粒子在聚攏過程中能找到更好的位置才可以改變這一情況,然而這種幾率并不大。本文提出基于自適應(yīng)變異的PSO算法SVPSO,通過引入遺傳算法的變異操作,在PSO算法的基礎(chǔ)上加入變異算子,在每次迭代后,粒子再以一定概率隨機(jī)初始化位置,其自適應(yīng)算子公式為:
ppop(j,k)=ppopmax×rrand,rrand>c
(20)
其中,ppopmax為粒子種群最大位置,c為小于1的正常數(shù),k為離散的隨機(jī)常數(shù),當(dāng)粒子的更新速度在規(guī)定的變異范圍內(nèi)時(shí),粒子的位置會(huì)隨機(jī)初始化,可以解決粒子群在搜索后期易陷入局部最優(yōu)位置的問題。
采用SVPSO算法進(jìn)行SVM的參數(shù)優(yōu)化,其實(shí)現(xiàn)步驟如下:
1)讀入經(jīng)過預(yù)處理的樣本數(shù)據(jù)。初始化SVPSO算法的參數(shù):粒子個(gè)數(shù)為N,隨機(jī)生成粒子的最初位置X=(x1,x2,…,xN)和速度V=(v1,v2,…,vN),i=1,2,…,N,建立最初的SVM入侵檢測模型,將粒子的全體最優(yōu)位置作為懲罰常數(shù)C和核函數(shù)參數(shù),xi=(xi1,xi2),νi=(νi1,νi2),設(shè)定這兩個(gè)尋優(yōu)參數(shù)范圍是[xmin,xmax]和[νmin,νmax],各粒子初始位置設(shè)置為初始個(gè)體最優(yōu)位置pbest和全體最優(yōu)位置gbest,設(shè)計(jì)粒子的變異規(guī)則,設(shè)定慣性權(quán)重w的遞減規(guī)則,設(shè)置粒子群最大迭代次數(shù)tmax。
2)計(jì)算粒子群適應(yīng)度f(i)。在本文中粒子對(duì)應(yīng)的適應(yīng)度是經(jīng)過交叉驗(yàn)證得出的SVM正確分類率。
4)根據(jù)群體極值更新每個(gè)粒子的速度xi和位置vi,判斷每個(gè)粒子的適應(yīng)度是否滿足分類正確率要求,或者算法是否達(dá)到最大迭代次數(shù),否則返回上一步繼續(xù)進(jìn)行迭代。
5)通過對(duì)比每次迭代的群體極值選擇最優(yōu)參數(shù),將其代入SVM求取決策函數(shù)f(x),建立SVM分類模型。
本文設(shè)計(jì)的基于特征優(yōu)化的工控入侵檢測算法SVPSO,其算法流程如圖1所示。
圖1 SVPSO算法檢測流程Fig.1 Detection procedure of SVPSO algorithm
本文算法主要由數(shù)據(jù)集的特征優(yōu)化、自適應(yīng)變異粒子群參數(shù)優(yōu)化、SVM模型訓(xùn)練和SVM模型交叉驗(yàn)證部分組成。系統(tǒng)流程分為4個(gè)階段:
1)數(shù)據(jù)預(yù)處理階段。采集的工控網(wǎng)絡(luò)數(shù)據(jù)經(jīng)過Fisher分值進(jìn)行特征選擇和KPCA進(jìn)行特征提取,建立新的數(shù)據(jù)集。
2)支持向量機(jī)模型建立階段。根據(jù)預(yù)處理后的數(shù)據(jù)集,建立一對(duì)多的多分類SVM模型,并確立交叉驗(yàn)證的規(guī)則。
3)支持向量機(jī)參數(shù)尋優(yōu)階段。通過初始粒子群位置建立初始SVM模型,以訓(xùn)練集數(shù)據(jù)采用交叉驗(yàn)證方式驗(yàn)證模型精度,返回模型精度作為粒子群的適應(yīng)度,采用自適應(yīng)變異的思想更新粒子群的速度和位置,從而尋找最優(yōu)參數(shù),建立最優(yōu)SVM檢測模型。
4)測試集驗(yàn)證階段。經(jīng)過訓(xùn)練后的多分類SVM分類器對(duì)同樣經(jīng)過預(yù)處理的測試數(shù)據(jù)集進(jìn)行檢測,得出測試集分類正確率。
本文采用密西西比州立大學(xué)關(guān)鍵基礎(chǔ)設(shè)施保護(hù)中心于2014年提出的用于工控入侵檢測的天然氣管道控制系統(tǒng)數(shù)據(jù)集[20],該數(shù)據(jù)集通過在天然氣管道控制系統(tǒng)注入攻擊,同時(shí)捕獲通信數(shù)據(jù)得到。數(shù)據(jù)集中除了正常行為數(shù)據(jù),還包括了3類攻擊行為數(shù)據(jù),即指令注入攻擊、拒絕服務(wù)攻擊和響應(yīng)注入攻擊。數(shù)據(jù)集中每條數(shù)據(jù)的存儲(chǔ)格式為X=(x1,x2,…,xn,y),每條數(shù)據(jù)有26個(gè)基本特征和1個(gè)標(biāo)簽值,本文所選取的攻擊類型和標(biāo)簽值如表1所示。
表1 數(shù)據(jù)類型及標(biāo)簽值Table 1 Data types and label values
為保證各類數(shù)據(jù)分布均勻,本文從原數(shù)據(jù)集中隨機(jī)抽取2 000組數(shù)據(jù)進(jìn)行實(shí)驗(yàn),對(duì)于消除各特征數(shù)值分布不同的問題,采用歸一化的方法將數(shù)據(jù)映射在[0,1]上。
選取1 200組數(shù)據(jù)構(gòu)成訓(xùn)練集,剩余400組作為測試集。數(shù)據(jù)集中各特征的Fisher分值如圖2所示。
圖2 各特征的Fisher分值結(jié)果Fig.2 Fisher score for each feature
本文計(jì)算每個(gè)特征的Fisher分值并按降序排列。依次選取特征建立模型,進(jìn)而計(jì)算分類正確率,如圖3所示??梢钥闯?依次添加Fisher分值排序后的前12個(gè)特征建立的模型分類正確分類率是逐漸上升的,后續(xù)特征的影響可以忽略不計(jì),因此,本文選取以Fisher分值排序后的前12個(gè)特征組成新的數(shù)據(jù)集。
圖3 特征集分類正確率Fig.3 Classification accuracy for feature set
經(jīng)Fisher分值選擇特征形成新的數(shù)據(jù)集,采用KPCA算法對(duì)數(shù)據(jù)集進(jìn)行處理,將原12維非線性特征映射到高維空間中,按照降序選擇貢獻(xiàn)率超過80%的特征值對(duì)應(yīng)的特征向量作為高維空間中的坐標(biāo)軸,將數(shù)據(jù)映射在這些軸上最終得到5維的數(shù)據(jù)集作為SVM的輸入。
將本文算法在MATLAB上進(jìn)行實(shí)現(xiàn),SVPSO算法參數(shù)設(shè)置為:種群大小為30,最大迭代次數(shù)為300,粒子群的維數(shù)設(shè)置為2,c1=c2=1.5,ωstart=1.2,ωend=0.4。對(duì)于變異算子,本文設(shè)定當(dāng)0.5 圖4 標(biāo)準(zhǔn)PSO算法適應(yīng)度曲線與測試集分類結(jié)果Fig.4 Fitness curve and test set classification results ofstandard PSO algorithm 圖5 SVPSO算法適應(yīng)度曲線與測試集分類結(jié)果Fig.5 Fitness curve and test set classification results ofSVPSO algorithm 4.4.1 總體檢測效果對(duì)比 為進(jìn)一步研究分析,本文分別采用BP神經(jīng)網(wǎng)絡(luò)(BPANN)、高斯型樸素貝葉斯、K鄰近和隨機(jī)森林算法建立入侵檢測模型,得到的混淆矩陣如圖6所示。 圖6 分類混淆矩陣Fig.6 Classification confusion matrix 通過混淆矩陣可以清楚地看出每種分類的結(jié)果分布,但不能判斷分類精度的高低,因此,進(jìn)一步計(jì)算入侵檢測模型的總體檢測精度、誤報(bào)率和Kappa系數(shù),對(duì)比結(jié)果如表2所示。 表2 5種算法的檢測性能評(píng)價(jià)Table 2 Evaluation of detection performance of five algorithms % 由表2可以看出,本文算法建立的入侵檢測模型的檢測精度最高,其誤報(bào)率與其他算法相比顯著降低,而Kappa系數(shù)是一種計(jì)算分類精度的方法,Kappa系數(shù)越高,表示分類器的性能越好,本文算法的該項(xiàng)指標(biāo)也最高。 4.4.2 各類攻擊行為檢測效果對(duì)比 本文采用的數(shù)據(jù)集共有8類數(shù)據(jù)(包含正常行為數(shù)據(jù)),采用各類算法對(duì)每種攻擊行為檢測,檢測效果如圖7所示。 圖7 針對(duì)不同攻擊類型的檢測效果Fig.7 Detection effects of different attack types 從圖7可以看出,本文SVPSO算法所建立的模型與其他算法建立的模型相比,對(duì)各類攻擊具有較高的檢測精度,其他算法建立的模型對(duì)復(fù)雜惡意響應(yīng)注入、惡意狀態(tài)命令注入、非法狀態(tài)命令注入,尤其拒絕服務(wù)惡意操作命令注入的檢測率較低,本文算法模型對(duì)拒絕服務(wù)攻擊的檢測率也在95%以上。 針對(duì)工控網(wǎng)絡(luò)數(shù)據(jù)高維性和非線性的特點(diǎn),本文提出基于自適應(yīng)變異的PSO算法SVPSO。采用Fisher分值和KPCA方法進(jìn)行數(shù)據(jù)特征選擇、非線性變換和特征降維,達(dá)到去除冗余的特征、數(shù)據(jù)線性化和數(shù)據(jù)降維的目的。在此基礎(chǔ)上,建立基于SVPSO的工控入侵檢測模型,將遺傳算法的變異思想引入到PSO算法中,對(duì)SVM的模型參數(shù)進(jìn)行尋優(yōu)。仿真結(jié)果表明,相比于BPANN、隨機(jī)森林、樸素貝葉斯等算法構(gòu)建的模型,該模型在各攻擊類型的檢測上均具較高的準(zhǔn)確率。下一步將采用深度學(xué)習(xí)的方法優(yōu)化數(shù)據(jù)特征,挖掘其中有效信息,同時(shí)提高分類精度。4.4 入侵檢測模型性能對(duì)比
5 結(jié)束語