潘 峰,薛 萍,任翔宇,潘林偉
(1.茅臺(tái)學(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)的信息安全問(wèn)題與日俱增[1]。
工業(yè)防火墻作為維護(hù)工控系統(tǒng)安全的主要設(shè)備,對(duì)流通在工控網(wǎng)絡(luò)中的所有數(shù)據(jù)進(jìn)行全方位解析、判斷和控制,有效地保障客戶(hù)正常數(shù)據(jù)的傳輸,基本杜絕非法數(shù)據(jù)在工控網(wǎng)絡(luò)中的分散和傳播,最大程度上保證了客戶(hù)生產(chǎn)的長(zhǎng)期穩(wěn)定運(yùn)行[2]。但是由于不同工控網(wǎng)絡(luò)的過(guò)濾規(guī)則不同,人為配置受到操作員知識(shí)水平的限制,將影響規(guī)則自學(xué)習(xí)的準(zhǔn)確率和工業(yè)防火墻的性能,所以研究如何提高工業(yè)防火墻白名單規(guī)則自學(xué)習(xí)的方法非常必要。
文獻(xiàn)[3]中SAHS J等運(yùn)用機(jī)器學(xué)習(xí)算法(如SVM、貝葉斯分類(lèi)法)對(duì)工控系統(tǒng)進(jìn)行可行性分析,并利用工控?cái)?shù)據(jù)流對(duì)機(jī)器算法進(jìn)行了評(píng)估。文獻(xiàn)[4]中利用PSO算法對(duì)SVM算法中的c,g參數(shù)進(jìn)行優(yōu)化,雖然PSO的收斂速度較快,局部搜索能力強(qiáng),但它也存在著精度較低、全局搜索能力較弱等缺點(diǎn)。文獻(xiàn)[5]利用網(wǎng)格搜索法對(duì)SVM算法中的c,g參數(shù)進(jìn)行尋優(yōu)時(shí),如果步長(zhǎng)較長(zhǎng)時(shí),其搜索速度慢,不容易獲得全局最優(yōu)解。針對(duì)PSO算法和網(wǎng)格搜索法所存在的不足,本文提出一種基于改進(jìn)的粒子群優(yōu)化算法和SVM相結(jié)合的白名單規(guī)則自學(xué)習(xí)算法,提高工業(yè)防火墻白名單規(guī)則自學(xué)習(xí)的準(zhǔn)確率。
工業(yè)防火墻與普通防火墻最大的區(qū)別是加裝了工業(yè)協(xié)議深度過(guò)濾模塊,通過(guò)對(duì)工業(yè)控制協(xié)議的深度解析,提取特征集,結(jié)合白名單技術(shù)和智能學(xué)習(xí)方法建立工控網(wǎng)絡(luò)安全通信模型,阻斷非法數(shù)據(jù)訪(fǎng)問(wèn),只允許可信的流量在網(wǎng)絡(luò)上傳輸[6]。其系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 工業(yè)防火墻系統(tǒng)結(jié)構(gòu)圖
工業(yè)防火墻的功能模塊主要由三部分組成,每個(gè)功能塊描述如下[7]:
(1)數(shù)據(jù)包采集和控制模塊:通過(guò)網(wǎng)絡(luò)接口卡(NIC)收集傳入該模塊的數(shù)據(jù)包,并將它們送到訪(fǎng)問(wèn)控制模塊,可以根據(jù)訪(fǎng)問(wèn)控制模塊的結(jié)果對(duì)數(shù)據(jù)包進(jìn)行傳遞或阻擋。
(2)訪(fǎng)問(wèn)控制模塊:通過(guò)對(duì)工控?cái)?shù)據(jù)流進(jìn)行分析,阻止非法數(shù)據(jù)訪(fǎng)問(wèn)。該模塊主要包括兩個(gè)部分,一是網(wǎng)絡(luò)層訪(fǎng)問(wèn)控制塊,它在網(wǎng)絡(luò)層中執(zhí)行網(wǎng)絡(luò)級(jí)訪(fǎng)問(wèn)控制;二是應(yīng)用層控制模塊,它在應(yīng)用層中執(zhí)行應(yīng)用級(jí)訪(fǎng)問(wèn)控制。
(3)過(guò)濾和報(bào)警模塊:管理訪(fǎng)問(wèn)控制模塊對(duì)數(shù)據(jù)包的處理結(jié)果,還可以與外部用戶(hù)界面相連接。
白名單技術(shù)主要針對(duì)工控系統(tǒng)安全的可用性和完整性這兩個(gè)方面。
(1)白名單機(jī)制只允許正常的工控?cái)?shù)據(jù)流通過(guò),不會(huì)對(duì)數(shù)據(jù)的可用性造成破壞,并保證了進(jìn)入系統(tǒng)的數(shù)據(jù)是正常的,從而保證了工控系統(tǒng)安全。
(2)白名單技術(shù)是通過(guò)智能算法將正確的數(shù)據(jù)加入規(guī)則庫(kù),對(duì)于變化的數(shù)據(jù),白名單技術(shù)往往能準(zhǔn)確定時(shí)刷新,保證了系統(tǒng)安全運(yùn)行的實(shí)時(shí)性。
所謂工業(yè)防火墻過(guò)濾規(guī)則是在過(guò)濾時(shí)利用白名單技術(shù)將數(shù)據(jù)包信息與規(guī)則表內(nèi)的規(guī)則進(jìn)行匹配,至少與其中的某一條吻合,才被認(rèn)為是合法數(shù)據(jù)允許通過(guò)。如使用Modbus TCP協(xié)議通信的工控網(wǎng)絡(luò),可加入白名單規(guī)則表中的數(shù)據(jù)特征,包括IP地址、MAC地址、協(xié)議標(biāo)識(shí)符、端口號(hào)、功能代碼、線(xiàn)圈或寄存器地址范圍等。
支持向量機(jī)(SVM)是指在統(tǒng)計(jì)學(xué)理論中運(yùn)用結(jié)構(gòu)風(fēng)險(xiǎn)最小化原理,根據(jù)統(tǒng)計(jì)出來(lái)的有限個(gè)樣本信息,以尋求對(duì)特定訓(xùn)練樣本的學(xué)習(xí)準(zhǔn)確性(即模型復(fù)雜性)和識(shí)別無(wú)錯(cuò)誤樣本的能力(即學(xué)習(xí)能力)的最佳解,以期獲得最好的推廣能力[8]。它是使用線(xiàn)性超平面來(lái)創(chuàng)建具有最大余量的分類(lèi)器,該算法旨在通過(guò)在高維特征空間內(nèi)使用核函數(shù)來(lái)找到支持向量和其相應(yīng)的系數(shù),以便建立最優(yōu)分類(lèi)面(即使得兩類(lèi)樣本的分離間隔最大)。其支持向量示意圖如圖2所示。在圖2中,虛線(xiàn)代表使用神經(jīng)網(wǎng)絡(luò)算法找到的分類(lèi)界面,只保證現(xiàn)有樣本位于分類(lèi)界面兩側(cè),而SVM算法可找到全局最優(yōu)。
圖2 支持向量機(jī)示意圖
在運(yùn)用SVM分析工控?cái)?shù)據(jù)流時(shí),用D表示工控?cái)?shù)據(jù)的訓(xùn)練樣本,則
(1)
其中訓(xùn)練樣本集的組合集為(xi,yi)=(x1,y1),(x2,y2),…,(xd,yd),yi為與訓(xùn)練樣本對(duì)應(yīng)的標(biāo)簽,如果是相關(guān)的,則取值為+1;若不關(guān)聯(lián),則取-1。本文采用高斯函數(shù)(Gaussian)作為SVM的核函數(shù):
(2)
則由偏差和權(quán)向量?jī)烧叨x的廣義最優(yōu)分類(lèi)面函數(shù)表示為:
(3)
其中w為判別函數(shù)的權(quán)向量;ξi是為分離不可分離的數(shù)據(jù)而引入的松弛變量,表示對(duì)訓(xùn)練樣本的錯(cuò)分度;參數(shù)C為懲罰常數(shù),表示控制對(duì)錯(cuò)分樣本的寬容度。
此函數(shù)的約束條件為:
(4)
通過(guò)構(gòu)造拉格朗日函數(shù),則高維特征空間內(nèi)原始函數(shù)的判別函數(shù)為:
(5)
粒子群優(yōu)化算法是模擬鳥(niǎo)群起飛的信息交互過(guò)程,是一種典型的全局優(yōu)化算法。該方法是利用移動(dòng)的粒子搜索n維空間中n個(gè)可變量函數(shù)優(yōu)化問(wèn)題的解。所有的粒子都具有適應(yīng)度值,并且根據(jù)適應(yīng)度函數(shù)來(lái)評(píng)估和優(yōu)化所有例子的適應(yīng)度值,并使粒子的速度發(fā)生變化。群體中的每個(gè)粒子均可受益于同一群體中所有其他個(gè)體的先前經(jīng)歷。在n維解空間中的迭代搜索期間,每個(gè)粒子將根據(jù)其自身的飛行經(jīng)驗(yàn)以及群體中其他伴隨粒子的飛行經(jīng)驗(yàn)來(lái)調(diào)整其飛行的隨度和位置[9]。為了尋求最優(yōu)解,每個(gè)粒子將根據(jù)自身認(rèn)知和社會(huì)部分改變其速度和位置:
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]。
在實(shí)際應(yīng)用中,SVM的性能主要取決于c和g參數(shù)的選擇,設(shè)計(jì)者往往通過(guò)個(gè)人經(jīng)驗(yàn)給定c和g的值,效果不佳。c值如果過(guò)大,則對(duì)于訓(xùn)練樣本來(lái)說(shuō),其分類(lèi)準(zhǔn)確率非常高,但會(huì)導(dǎo)致其測(cè)試樣本分類(lèi)準(zhǔn)確率非常低。如果c太小,則分類(lèi)準(zhǔn)確率不能令人滿(mǎn)意,使得模型不能使用。參數(shù)g對(duì)分類(lèi)結(jié)果的影響要遠(yuǎn)大于c值,其值會(huì)影響特征空間中數(shù)據(jù)的區(qū)分結(jié)果。參數(shù)g過(guò)大,會(huì)導(dǎo)致過(guò)度擬合,而值越小,會(huì)導(dǎo)致擬合缺陷[10]。
由于粒子群算法是一種隨機(jī)搜索算法,算法中的一些參數(shù)(如慣性權(quán)重、加速系數(shù)等)通常根據(jù)有限的經(jīng)驗(yàn)來(lái)確定,效率低且收斂速度不快。為了解決上述存在的問(wèn)題,本文將加速系數(shù)c1、c2和線(xiàn)性權(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ù)通過(guò)交叉驗(yàn)證法將其分為訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集。
(2)設(shè)置最大迭代次數(shù)itermax=200,當(dāng)前的初始迭代值iter=1。
(3)利用PSO隨機(jī)生成初始種群,常用的參數(shù)設(shè)置為Ctmax=3.9,C0=1。
(4)本文選用5折交叉驗(yàn)證意義下的準(zhǔn)確率作為適應(yīng)度函數(shù),以此計(jì)算群體中每個(gè)粒子的適應(yīng)度值。
(5)更新個(gè)體極值和群體極值。
(6)判斷是否滿(mǎn)足iteri≥itermax。若滿(mǎn)足,則停止該算法,輸出值即為SVM的最優(yōu)參數(shù)。若不滿(mǎn)足,返回第(2)步繼續(xù)操作,直到滿(mǎn)足條件。
由于國(guó)內(nèi)外的工控?cái)?shù)據(jù)尚未公開(kāi),為了對(duì)算法進(jìn)行驗(yàn)證,本文模擬工廠(chǎng)搭建了一個(gè)簡(jiǎn)單的工控實(shí)驗(yàn)平臺(tái),拓?fù)鋱D如圖4所示。
圖4 工控實(shí)驗(yàn)平臺(tái)
在該工控實(shí)驗(yàn)平臺(tái)中,過(guò)程監(jiān)控層中操作員站采用WINCC軟件對(duì)其進(jìn)行監(jiān)控,工程師站采用STEP7對(duì)PLC進(jìn)行編程。現(xiàn)場(chǎng)控制層選擇兩臺(tái)西門(mén)子PLC300,CPU為315-2PN/DP。BCNet-s7通信模塊用于過(guò)程監(jiān)控層和現(xiàn)場(chǎng)控制層之間,將S7協(xié)議轉(zhuǎn)換成MODBUS TCP協(xié)議,以此實(shí)現(xiàn)WINCC與PLC之間的MODBUS TCP通信。工業(yè)防火墻中的白名單規(guī)則自學(xué)習(xí)模塊主要由協(xié)議解析工具以及Wire-shark抓包工具組成,該模塊用于對(duì)數(shù)據(jù)的抓控和解析,位于過(guò)程監(jiān)控層和現(xiàn)場(chǎng)控制層之間。該環(huán)境模擬了小型污水處理系統(tǒng)中水泵中水位的控制,并對(duì)電動(dòng)閥門(mén)的開(kāi)閉進(jìn)行了邏輯上的模擬。
4.2.1 數(shù)據(jù)來(lái)源
實(shí)驗(yàn)數(shù)據(jù)主要考慮Modbus TCP中的功能碼和線(xiàn)圈或寄存器地址兩個(gè),并按順序組合兩個(gè)數(shù)據(jù)。將本次試驗(yàn)中PLC已使用的功能碼和寄存器的地址組合成正常數(shù)據(jù);異常數(shù)據(jù)樣本集由未使用的功能碼、地址與已使用的功能碼、地址兩種數(shù)據(jù)組成。生成的異常類(lèi)樣本集有三類(lèi):(1)功能碼和地址列表均非法;(2)功能碼合法,地址列表非法;(3)功 能碼非法,地址列表合法。
4.2.2 仿真平臺(tái)
仿真實(shí)驗(yàn)平臺(tái)選用CPU 3.30 GHz,4.0 GB,Windows 7系統(tǒng)。采用MATLAB 2014b、Libsvm-mat-2.89-3工具箱進(jìn)行實(shí)驗(yàn),先把SVM工具箱下載到MTALAB中,通過(guò)編寫(xiě)SVM程序并利用改進(jìn)的粒子群算法對(duì)其參數(shù)進(jìn)行尋優(yōu),并帶入SVM編寫(xiě)的程序中得到最優(yōu)準(zhǔn)確率。
4.2.3 仿真實(shí)驗(yàn)對(duì)比
本文訓(xùn)練數(shù)據(jù)共分為7組,分別利用網(wǎng)格搜索法、PSO和改進(jìn)的PSO對(duì)這7組數(shù)據(jù)進(jìn)行訓(xùn)練,生成白名單規(guī)則表,然后用三種算法對(duì)測(cè)試數(shù)據(jù)進(jìn)行準(zhǔn)確率測(cè)試。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的程序中,由此得到測(cè)試數(shù)據(jù)的準(zhǔn)確率。
PSO算法測(cè)得正常數(shù)據(jù)和異常數(shù)據(jù)的準(zhǔn)確率如圖5所示。
圖5 PSO算法測(cè)得的準(zhǔn)確率
網(wǎng)格搜索法測(cè)得正常數(shù)據(jù)和異常數(shù)據(jù)的準(zhǔn)確率如圖6所示。
圖6 網(wǎng)格搜索法測(cè)得的準(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算法的測(cè)試數(shù)據(jù)的準(zhǔn)確率,如圖7所示。
圖7 改進(jìn)PSO算法測(cè)得的準(zhǔn)確率
與網(wǎng)格搜索法、PSO相比,改進(jìn)的PSO算法對(duì)異常類(lèi)數(shù)據(jù)的檢測(cè)率提高了,對(duì)正常類(lèi)數(shù)據(jù)的樣本雖有所降低,但是其準(zhǔn)確率高于另外兩種算法。對(duì)比結(jié)果如圖8和圖9所示。
圖8表示三種算法對(duì)異常數(shù)據(jù)的檢測(cè)率,從圖中可以看出,異常數(shù)據(jù)的準(zhǔn)確率在不斷上升。在第3組數(shù)據(jù)中,改進(jìn)的PSO算法準(zhǔn)確率相比PSO提高了22%;較網(wǎng)格搜索法提高了2%。
圖8 異常數(shù)據(jù)的準(zhǔn)確率
圖9表示三種算法對(duì)正常數(shù)據(jù)的檢測(cè)率,從圖中可以看出,改進(jìn)PSO算法測(cè)得正常數(shù)據(jù)的準(zhǔn)確率均高于PSO和網(wǎng)格搜索法。
圖9 正常數(shù)據(jù)的準(zhǔn)確率
實(shí)驗(yàn)結(jié)果表明,相比網(wǎng)格搜索法和PSO算法,改進(jìn)的粒子群算法具有優(yōu)化時(shí)間短、計(jì)算方便、可以提高異常類(lèi)和正常類(lèi)數(shù)據(jù)的準(zhǔn)確率的優(yōu)點(diǎn)。通過(guò)該算法可以提高工業(yè)防火墻的性能,提高規(guī)則自學(xué)習(xí)的準(zhǔn)確率。
針對(duì)網(wǎng)格搜索法和粒子群優(yōu)化算法存在的缺點(diǎn),導(dǎo)致白名單規(guī)則自學(xué)習(xí)方法的準(zhǔn)確率低,影響工業(yè)防火墻的性能,本文提出利用基于改進(jìn)的粒子群優(yōu)化算法和支持向量機(jī)相結(jié)合的白名單規(guī)則自學(xué)習(xí)算法對(duì)SVM算法中的參數(shù)進(jìn)行優(yōu)化,提高了異常數(shù)據(jù)和正常數(shù)據(jù)的準(zhǔn)確率,從而提高了工業(yè)防火墻的性能。