潘 峰,薛 萍,任翔宇,潘林偉
(1.茅臺學(xué)院,貴州 遵義 564507;2.太原科技大學(xué) 電子信息工程學(xué)院,山西 太原 030024;3.上海交通大學(xué) 電子信息與電氣工程學(xué)院,上海 200240)
隨著工業(yè)化與信息化融合加速,尤其是工業(yè)互聯(lián)網(wǎng)獲得空前關(guān)注,工業(yè)控制系統(tǒng)逐漸進(jìn)入信息化和智能化發(fā)展階段,更多的工業(yè)控制系統(tǒng)和工控設(shè)備直接或間接接入互聯(lián)網(wǎng),導(dǎo)致工控系統(tǒng)的信息安全問題與日俱增[1]。
工業(yè)防火墻作為維護(hù)工控系統(tǒng)安全的主要設(shè)備,對流通在工控網(wǎng)絡(luò)中的所有數(shù)據(jù)進(jìn)行全方位解析、判斷和控制,有效地保障客戶正常數(shù)據(jù)的傳輸,基本杜絕非法數(shù)據(jù)在工控網(wǎng)絡(luò)中的分散和傳播,最大程度上保證了客戶生產(chǎn)的長期穩(wěn)定運行[2]。但是由于不同工控網(wǎng)絡(luò)的過濾規(guī)則不同,人為配置受到操作員知識水平的限制,將影響規(guī)則自學(xué)習(xí)的準(zhǔn)確率和工業(yè)防火墻的性能,所以研究如何提高工業(yè)防火墻白名單規(guī)則自學(xué)習(xí)的方法非常必要。
文獻(xiàn)[3]中SAHS J等運用機器學(xué)習(xí)算法(如SVM、貝葉斯分類法)對工控系統(tǒng)進(jìn)行可行性分析,并利用工控數(shù)據(jù)流對機器算法進(jìn)行了評估。文獻(xiàn)[4]中利用PSO算法對SVM算法中的c,g參數(shù)進(jìn)行優(yōu)化,雖然PSO的收斂速度較快,局部搜索能力強,但它也存在著精度較低、全局搜索能力較弱等缺點。文獻(xiàn)[5]利用網(wǎng)格搜索法對SVM算法中的c,g參數(shù)進(jìn)行尋優(yōu)時,如果步長較長時,其搜索速度慢,不容易獲得全局最優(yōu)解。針對PSO算法和網(wǎng)格搜索法所存在的不足,本文提出一種基于改進(jìn)的粒子群優(yōu)化算法和SVM相結(jié)合的白名單規(guī)則自學(xué)習(xí)算法,提高工業(yè)防火墻白名單規(guī)則自學(xué)習(xí)的準(zhǔn)確率。
工業(yè)防火墻與普通防火墻最大的區(qū)別是加裝了工業(yè)協(xié)議深度過濾模塊,通過對工業(yè)控制協(xié)議的深度解析,提取特征集,結(jié)合白名單技術(shù)和智能學(xué)習(xí)方法建立工控網(wǎng)絡(luò)安全通信模型,阻斷非法數(shù)據(jù)訪問,只允許可信的流量在網(wǎng)絡(luò)上傳輸[6]。其系統(tǒng)結(jié)構(gòu)如圖1所示。

圖1 工業(yè)防火墻系統(tǒng)結(jié)構(gòu)圖
工業(yè)防火墻的功能模塊主要由三部分組成,每個功能塊描述如下[7]:
(1)數(shù)據(jù)包采集和控制模塊:通過網(wǎng)絡(luò)接口卡(NIC)收集傳入該模塊的數(shù)據(jù)包,并將它們送到訪問控制模塊,可以根據(jù)訪問控制模塊的結(jié)果對數(shù)據(jù)包進(jìn)行傳遞或阻擋。
(2)訪問控制模塊:通過對工控數(shù)據(jù)流進(jìn)行分析,阻止非法數(shù)據(jù)訪問。該模塊主要包括兩個部分,一是網(wǎng)絡(luò)層訪問控制塊,它在網(wǎng)絡(luò)層中執(zhí)行網(wǎng)絡(luò)級訪問控制;二是應(yīng)用層控制模塊,它在應(yīng)用層中執(zhí)行應(yīng)用級訪問控制。
(3)過濾和報警模塊:管理訪問控制模塊對數(shù)據(jù)包的處理結(jié)果,還可以與外部用戶界面相連接。
白名單技術(shù)主要針對工控系統(tǒng)安全的可用性和完整性這兩個方面。
(1)白名單機制只允許正常的工控數(shù)據(jù)流通過,不會對數(shù)據(jù)的可用性造成破壞,并保證了進(jìn)入系統(tǒng)的數(shù)據(jù)是正常的,從而保證了工控系統(tǒng)安全。
(2)白名單技術(shù)是通過智能算法將正確的數(shù)據(jù)加入規(guī)則庫,對于變化的數(shù)據(jù),白名單技術(shù)往往能準(zhǔn)確定時刷新,保證了系統(tǒng)安全運行的實時性。
所謂工業(yè)防火墻過濾規(guī)則是在過濾時利用白名單技術(shù)將數(shù)據(jù)包信息與規(guī)則表內(nèi)的規(guī)則進(jìn)行匹配,至少與其中的某一條吻合,才被認(rèn)為是合法數(shù)據(jù)允許通過。如使用Modbus TCP協(xié)議通信的工控網(wǎng)絡(luò),可加入白名單規(guī)則表中的數(shù)據(jù)特征,包括IP地址、MAC地址、協(xié)議標(biāo)識符、端口號、功能代碼、線圈或寄存器地址范圍等。
支持向量機(SVM)是指在統(tǒng)計學(xué)理論中運用結(jié)構(gòu)風(fēng)險最小化原理,根據(jù)統(tǒng)計出來的有限個樣本信息,以尋求對特定訓(xùn)練樣本的學(xué)習(xí)準(zhǔn)確性(即模型復(fù)雜性)和識別無錯誤樣本的能力(即學(xué)習(xí)能力)的最佳解,以期獲得最好的推廣能力[8]。它是使用線性超平面來創(chuàng)建具有最大余量的分類器,該算法旨在通過在高維特征空間內(nèi)使用核函數(shù)來找到支持向量和其相應(yīng)的系數(shù),以便建立最優(yōu)分類面(即使得兩類樣本的分離間隔最大)。其支持向量示意圖如圖2所示。在圖2中,虛線代表使用神經(jīng)網(wǎng)絡(luò)算法找到的分類界面,只保證現(xiàn)有樣本位于分類界面兩側(cè),而SVM算法可找到全局最優(yōu)。

圖2 支持向量機示意圖
在運用SVM分析工控數(shù)據(jù)流時,用D表示工控數(shù)據(jù)的訓(xùn)練樣本,則
(1)
其中訓(xùn)練樣本集的組合集為(xi,yi)=(x1,y1),(x2,y2),…,(xd,yd),yi為與訓(xùn)練樣本對應(yīng)的標(biāo)簽,如果是相關(guān)的,則取值為+1;若不關(guān)聯(lián),則取-1。本文采用高斯函數(shù)(Gaussian)作為SVM的核函數(shù):
(2)
則由偏差和權(quán)向量兩者定義的廣義最優(yōu)分類面函數(shù)表示為:
(3)
其中w為判別函數(shù)的權(quán)向量;ξi是為分離不可分離的數(shù)據(jù)而引入的松弛變量,表示對訓(xùn)練樣本的錯分度;參數(shù)C為懲罰常數(shù),表示控制對錯分樣本的寬容度。
此函數(shù)的約束條件為:
(4)
通過構(gòu)造拉格朗日函數(shù),則高維特征空間內(nèi)原始函數(shù)的判別函數(shù)為:
(5)

粒子群優(yōu)化算法是模擬鳥群起飛的信息交互過程,是一種典型的全局優(yōu)化算法。該方法是利用移動的粒子搜索n維空間中n個可變量函數(shù)優(yōu)化問題的解。所有的粒子都具有適應(yīng)度值,并且根據(jù)適應(yīng)度函數(shù)來評估和優(yōu)化所有例子的適應(yīng)度值,并使粒子的速度發(fā)生變化。群體中的每個粒子均可受益于同一群體中所有其他個體的先前經(jīng)歷。在n維解空間中的迭代搜索期間,每個粒子將根據(jù)其自身的飛行經(jīng)驗以及群體中其他伴隨粒子的飛行經(jīng)驗來調(diào)整其飛行的隨度和位置[9]。為了尋求最優(yōu)解,每個粒子將根據(jù)自身認(rèn)知和社會部分改變其速度和位置:
vid(k+1)=wvid(k)+c1randid(·)[pid(k)-xid(k)]+c2randid(·)[pgd(k)-xid(k)]
(6)
xid(k+1)=xid(k)+vid(k),d=1,2,…,n
(7)
式中:w為慣性權(quán)重,c1、c2為加速系數(shù),rand(·)∈[0,1]。
在實際應(yīng)用中,SVM的性能主要取決于c和g參數(shù)的選擇,設(shè)計者往往通過個人經(jīng)驗給定c和g的值,效果不佳。c值如果過大,則對于訓(xùn)練樣本來說,其分類準(zhǔn)確率非常高,但會導(dǎo)致其測試樣本分類準(zhǔn)確率非常低。如果c太小,則分類準(zhǔn)確率不能令人滿意,使得模型不能使用。參數(shù)g對分類結(jié)果的影響要遠(yuǎn)大于c值,其值會影響特征空間中數(shù)據(jù)的區(qū)分結(jié)果。參數(shù)g過大,會導(dǎo)致過度擬合,而值越小,會導(dǎo)致擬合缺陷[10]。
由于粒子群算法是一種隨機搜索算法,算法中的一些參數(shù)(如慣性權(quán)重、加速系數(shù)等)通常根據(jù)有限的經(jīng)驗來確定,效率低且收斂速度不快。為了解決上述存在的問題,本文將加速系數(shù)c1、c2和線性權(quán)重參數(shù)w按以下方法進(jìn)行改進(jìn):
(8)
式中,wmin為最小慣性權(quán)重值,wmax為最大慣性權(quán)重值,itermax為最大迭代次數(shù),iteri為當(dāng)前迭代次數(shù),ctmax為迭代終值。
基于改進(jìn)PSO-SVM算法流程圖如圖3所示。

圖3 改進(jìn)PSO-SVM算法流程圖
該尋優(yōu)算法的基本步驟如下:
(1)樣本數(shù)據(jù)通過交叉驗證法將其分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集。
(2)設(shè)置最大迭代次數(shù)itermax=200,當(dāng)前的初始迭代值iter=1。
(3)利用PSO隨機生成初始種群,常用的參數(shù)設(shè)置為Ctmax=3.9,C0=1。
(4)本文選用5折交叉驗證意義下的準(zhǔn)確率作為適應(yīng)度函數(shù),以此計算群體中每個粒子的適應(yīng)度值。
(5)更新個體極值和群體極值。
(6)判斷是否滿足iteri≥itermax。若滿足,則停止該算法,輸出值即為SVM的最優(yōu)參數(shù)。若不滿足,返回第(2)步繼續(xù)操作,直到滿足條件。
由于國內(nèi)外的工控數(shù)據(jù)尚未公開,為了對算法進(jìn)行驗證,本文模擬工廠搭建了一個簡單的工控實驗平臺,拓?fù)鋱D如圖4所示。

圖4 工控實驗平臺
在該工控實驗平臺中,過程監(jiān)控層中操作員站采用WINCC軟件對其進(jìn)行監(jiān)控,工程師站采用STEP7對PLC進(jìn)行編程。現(xiàn)場控制層選擇兩臺西門子PLC300,CPU為315-2PN/DP。BCNet-s7通信模塊用于過程監(jiān)控層和現(xiàn)場控制層之間,將S7協(xié)議轉(zhuǎn)換成MODBUS TCP協(xié)議,以此實現(xiàn)WINCC與PLC之間的MODBUS TCP通信。工業(yè)防火墻中的白名單規(guī)則自學(xué)習(xí)模塊主要由協(xié)議解析工具以及Wire-shark抓包工具組成,該模塊用于對數(shù)據(jù)的抓控和解析,位于過程監(jiān)控層和現(xiàn)場控制層之間。該環(huán)境模擬了小型污水處理系統(tǒng)中水泵中水位的控制,并對電動閥門的開閉進(jìn)行了邏輯上的模擬。
4.2.1 數(shù)據(jù)來源
實驗數(shù)據(jù)主要考慮Modbus TCP中的功能碼和線圈或寄存器地址兩個,并按順序組合兩個數(shù)據(jù)。將本次試驗中PLC已使用的功能碼和寄存器的地址組合成正常數(shù)據(jù);異常數(shù)據(jù)樣本集由未使用的功能碼、地址與已使用的功能碼、地址兩種數(shù)據(jù)組成。生成的異常類樣本集有三類:(1)功能碼和地址列表均非法;(2)功能碼合法,地址列表非法;(3)功 能碼非法,地址列表合法。
4.2.2 仿真平臺
仿真實驗平臺選用CPU 3.30 GHz,4.0 GB,Windows 7系統(tǒng)。采用MATLAB 2014b、Libsvm-mat-2.89-3工具箱進(jìn)行實驗,先把SVM工具箱下載到MTALAB中,通過編寫SVM程序并利用改進(jìn)的粒子群算法對其參數(shù)進(jìn)行尋優(yōu),并帶入SVM編寫的程序中得到最優(yōu)準(zhǔn)確率。
4.2.3 仿真實驗對比
本文訓(xùn)練數(shù)據(jù)共分為7組,分別利用網(wǎng)格搜索法、PSO和改進(jìn)的PSO對這7組數(shù)據(jù)進(jìn)行訓(xùn)練,生成白名單規(guī)則表,然后用三種算法對測試數(shù)據(jù)進(jìn)行準(zhǔn)確率測試。PSO算法得到SVM的最佳c,g參數(shù)如表1所示。

表1 PSO算法得到SVM的參數(shù)
網(wǎng)格搜索法得到SVM的最佳c,g參數(shù)如表2所示。

表2 網(wǎng)格搜索法得到SVM的參數(shù)
改進(jìn)PSO算法得到SVM的最佳c,g參數(shù)如表3所示。

表3 改進(jìn)PSO算法得到SVM的參數(shù)
將三種算法所得到SVM中c,g的參數(shù)值帶入SVM的程序中,由此得到測試數(shù)據(jù)的準(zhǔn)確率。
PSO算法測得正常數(shù)據(jù)和異常數(shù)據(jù)的準(zhǔn)確率如圖5所示。

圖5 PSO算法測得的準(zhǔn)確率
網(wǎng)格搜索法測得正常數(shù)據(jù)和異常數(shù)據(jù)的準(zhǔn)確率如圖6所示。

圖6 網(wǎng)格搜索法測得的準(zhǔn)確率
改進(jìn)的PSO算法中,最大迭代次數(shù)設(shè)為200次,種群為50。利用改進(jìn)的PSO算法依次將7組數(shù)據(jù)所優(yōu)化的c,g參數(shù)導(dǎo)入SVM中,得到改進(jìn)PSO算法的測試數(shù)據(jù)的準(zhǔn)確率,如圖7所示。

圖7 改進(jìn)PSO算法測得的準(zhǔn)確率
與網(wǎng)格搜索法、PSO相比,改進(jìn)的PSO算法對異常類數(shù)據(jù)的檢測率提高了,對正常類數(shù)據(jù)的樣本雖有所降低,但是其準(zhǔn)確率高于另外兩種算法。對比結(jié)果如圖8和圖9所示。
圖8表示三種算法對異常數(shù)據(jù)的檢測率,從圖中可以看出,異常數(shù)據(jù)的準(zhǔn)確率在不斷上升。在第3組數(shù)據(jù)中,改進(jìn)的PSO算法準(zhǔn)確率相比PSO提高了22%;較網(wǎng)格搜索法提高了2%。

圖8 異常數(shù)據(jù)的準(zhǔn)確率
圖9表示三種算法對正常數(shù)據(jù)的檢測率,從圖中可以看出,改進(jìn)PSO算法測得正常數(shù)據(jù)的準(zhǔn)確率均高于PSO和網(wǎng)格搜索法。

圖9 正常數(shù)據(jù)的準(zhǔn)確率
實驗結(jié)果表明,相比網(wǎng)格搜索法和PSO算法,改進(jìn)的粒子群算法具有優(yōu)化時間短、計算方便、可以提高異常類和正常類數(shù)據(jù)的準(zhǔn)確率的優(yōu)點。通過該算法可以提高工業(yè)防火墻的性能,提高規(guī)則自學(xué)習(xí)的準(zhǔn)確率。
針對網(wǎng)格搜索法和粒子群優(yōu)化算法存在的缺點,導(dǎo)致白名單規(guī)則自學(xué)習(xí)方法的準(zhǔn)確率低,影響工業(yè)防火墻的性能,本文提出利用基于改進(jìn)的粒子群優(yōu)化算法和支持向量機相結(jié)合的白名單規(guī)則自學(xué)習(xí)算法對SVM算法中的參數(shù)進(jìn)行優(yōu)化,提高了異常數(shù)據(jù)和正常數(shù)據(jù)的準(zhǔn)確率,從而提高了工業(yè)防火墻的性能。