潘 峰,王世偉,薛 萍
(1.茅臺(tái)學(xué)院,貴州 遵義 564507;2. 太原科技大學(xué),山西 太原 030024)
在“中國(guó)制造2025”和“互聯(lián)網(wǎng)+”行動(dòng)推進(jìn)過程中,制造業(yè)與互聯(lián)網(wǎng)融合發(fā)展不斷加快,工業(yè)控制系統(tǒng)不再是物理環(huán)境上隔離的封閉系統(tǒng),而是與互聯(lián)網(wǎng)緊密相連,因此遭受網(wǎng)絡(luò)攻擊的隱患不斷增加。
工業(yè)防火墻是專門為保護(hù)工業(yè)控制網(wǎng)絡(luò)安全而設(shè)計(jì)的。它結(jié)合工業(yè)控制網(wǎng)絡(luò)的特點(diǎn),狀態(tài)有限且行為穩(wěn)定規(guī)律,在網(wǎng)絡(luò)防火墻功能基礎(chǔ)上增加工業(yè)協(xié)議深度過濾模塊進(jìn)行防護(hù)[1]。過濾模塊中的核心部分就是基于白名單策略的規(guī)則表。工業(yè)防火墻過濾規(guī)則的配置深入?yún)f(xié)議內(nèi)部,配置較復(fù)雜,人為配置規(guī)則在效率和準(zhǔn)確率上差異大,將很大影響工業(yè)防火墻性能[2],所以研究自學(xué)習(xí)生成過濾規(guī)則的方法是十分必要的。
文獻(xiàn)[3]中Byoung-Koo Kim等設(shè)計(jì)了工業(yè)防火墻系統(tǒng),其中的訪問控制過濾器是采用基于白名單策略的過濾規(guī)則進(jìn)行訪問控制,阻止未被識(shí)別的訪問流量進(jìn)入控制網(wǎng)絡(luò)。文獻(xiàn)[4]提出的算法不僅可以自學(xué)習(xí)生成白名單規(guī)則而且準(zhǔn)確率達(dá)到人工設(shè)置水平。由于生成的規(guī)則表是五元組信息組成的,不能在應(yīng)用層對(duì)工業(yè)協(xié)議內(nèi)部數(shù)據(jù)進(jìn)行深度檢查。本文提出基于SVM的工業(yè)防火墻規(guī)則自學(xué)習(xí)方法,對(duì)工控網(wǎng)絡(luò)數(shù)據(jù)流深入工業(yè)協(xié)議內(nèi)部解析提取針對(duì)本工控網(wǎng)絡(luò)的行為特征,然后分析工控?cái)?shù)據(jù)特點(diǎn),通過對(duì)樣本數(shù)據(jù)和SVM模型參數(shù)進(jìn)行優(yōu)化,利用生成的識(shí)別模型識(shí)別出正常數(shù)據(jù)流并按一定模式自動(dòng)加入規(guī)則表。
工業(yè)防火墻是在通用防火墻模塊基礎(chǔ)上在應(yīng)用層訪問控制中增加工業(yè)協(xié)議深度過濾模塊,如圖1所示。通用防火墻模塊阻止系統(tǒng)被非法訪問,防止病毒、惡意代碼等肆意傳播。工業(yè)協(xié)議過濾模塊對(duì)工業(yè)協(xié)議識(shí)別和過濾,阻止非法指令通過工控設(shè)備。
圖1 工業(yè)防火墻系統(tǒng)結(jié)構(gòu)
工業(yè)協(xié)議過濾模塊采用白名單策略,對(duì)工控網(wǎng)絡(luò)數(shù)據(jù)的正常行為進(jìn)行分析,總結(jié)其具有的特征,并將這些特征用防火墻規(guī)則形式描述,創(chuàng)建只允許合法數(shù)據(jù)通過的過濾規(guī)則表。在過濾時(shí)將數(shù)據(jù)包與規(guī)則表內(nèi)的規(guī)則進(jìn)行匹配,如果與其中的某一條吻合,則被認(rèn)為是合法數(shù)據(jù)允許通過[5]。
本文通過設(shè)計(jì)規(guī)則,自學(xué)習(xí)模塊使用機(jī)器學(xué)習(xí)算法自動(dòng)學(xué)習(xí)工控網(wǎng)絡(luò)數(shù)據(jù)流的行為規(guī)律并生成白名單規(guī)則表,避免了人工配置規(guī)則的復(fù)雜性,提高防火墻效率和性能。
支持向量機(jī)(Support Vector Machine, SVM)是一種有效的分類算法,通過核函數(shù)將原始特征空間中的非線性分類界面映射到更高維的特征空間中,使分類界面在高維特征空間中變得線性可分,從而獲得良好的分類效果[6]。
在工控網(wǎng)絡(luò)中主要是將正常數(shù)據(jù)流和異常數(shù)據(jù)流兩類進(jìn)行分類。以兩類訓(xùn)練樣本集為例,設(shè)給定的訓(xùn)練樣本集為{(x1,y1),(x2,y2), …,(xn,yn)},yi∈{+1,-1},i=1,2, …,n代表樣本類別。構(gòu)造代價(jià)函數(shù)使其最小化得到:
(1)
約束條件為:
yi(wTxi+b)≥1-ξi
ξi≥0,i=1,2,…,n
(2)
判決函數(shù):
f(x)=(w·x)+b
(3)
其中,ξi是松弛變量,表示訓(xùn)練樣本的錯(cuò)分程度;C是懲罰常數(shù),控制對(duì)錯(cuò)分樣本的懲罰程度;w和b分別為判決函數(shù)的權(quán)向量和閾值。利用核函數(shù)映射到更高維計(jì)算求得判別函數(shù)為:
(4)
根據(jù)所求得的判別函數(shù)f(x),將待檢測(cè)的數(shù)據(jù)經(jīng)特征提取得到的特征向量x輸入判別函數(shù),根據(jù)輸出結(jié)果判別,若輸出為1,則認(rèn)為數(shù)據(jù)正常,將其按一定模式加入規(guī)則表;若輸出為-1,則認(rèn)為是異常數(shù)據(jù)。
通過對(duì)工控網(wǎng)絡(luò)數(shù)據(jù)流分析,發(fā)現(xiàn)正常數(shù)據(jù)流數(shù)量遠(yuǎn)大于異常數(shù)據(jù)流數(shù)量,兩類具有明顯的不均衡特征。利用標(biāo)準(zhǔn)的SVM算法對(duì)不均衡數(shù)據(jù)集進(jìn)行分類時(shí),少數(shù)類樣本的分類精度是非常低的。因此,當(dāng)對(duì)少數(shù)類即異常數(shù)據(jù)進(jìn)行判別時(shí),出現(xiàn)錯(cuò)分的幾率會(huì)很高,就會(huì)將異常數(shù)據(jù)誤判為正常數(shù)據(jù)加入規(guī)則集中。這種錯(cuò)分后果將是嚴(yán)重的,工業(yè)防火墻性能將大大降低。
本文結(jié)合工控網(wǎng)絡(luò)特點(diǎn)采用過抽樣法,設(shè)計(jì)了生成工控異常數(shù)據(jù)的方法,合理增加少數(shù)類樣本數(shù)據(jù)改善工控?cái)?shù)據(jù)不均衡性,并且利用改進(jìn)的網(wǎng)格搜索法對(duì)影響判別模型本身的參數(shù)C及核函數(shù)參數(shù)尋優(yōu),綜合優(yōu)化使識(shí)別模型整體性能有較大提高。
基于SVM的工業(yè)防火墻規(guī)則自學(xué)習(xí)方法,如圖2所示。規(guī)則自學(xué)習(xí)方法主要分為三個(gè)部分:工控?cái)?shù)據(jù)特征提取、優(yōu)化生成判別模型、檢測(cè)生成過濾規(guī)則。
圖2 基于SVM的規(guī)則自學(xué)習(xí)方法流程圖
在SCADA后臺(tái)與控制網(wǎng)絡(luò)之間使用抓包工具捕獲工控網(wǎng)絡(luò)數(shù)據(jù)流,然后利用工業(yè)協(xié)議解析工具對(duì)其進(jìn)行深度解析,提取代表原數(shù)據(jù)包的特征屬性。在對(duì)特征屬性進(jìn)行選擇時(shí),屬性選擇越多,能代表原數(shù)據(jù)包的信息就越全面,然而每增加一種屬性就會(huì)在樣本數(shù)據(jù)中增加一個(gè)維度。SVM算法因其特點(diǎn)雖不會(huì)出現(xiàn)維數(shù)災(zāi)難,但計(jì)算量也會(huì)相應(yīng)增大。因此,在提取數(shù)據(jù)的特征屬性時(shí),對(duì)不同類型數(shù)據(jù)進(jìn)行分類提取,將每一類可以描述其行為特性的代表屬性按一定格式生成SVM算法可識(shí)別文本[7],完成訓(xùn)練樣本集中正常類數(shù)據(jù)的收集。
識(shí)別模型是對(duì)樣本數(shù)據(jù)的行為特征屬性進(jìn)行訓(xùn)練生成的,用來檢測(cè)數(shù)據(jù)流是否符合正常數(shù)據(jù)流的行為特征。因此如何生成準(zhǔn)確率高的識(shí)別模型將是規(guī)則自學(xué)習(xí)方法的關(guān)鍵。在用SVM算法生成識(shí)別模型過程中,將影響模型的兩個(gè)重要部分進(jìn)行優(yōu)化。
一是在樣本層面對(duì)具有明顯不均衡特征的工控?cái)?shù)據(jù)集進(jìn)行改善。本文通過分析工控網(wǎng)絡(luò)中的攻擊行為,設(shè)計(jì)生成工控異常數(shù)據(jù)的方法,如圖3所示。設(shè)定本PLC已使用的功能碼和地址列表,將已用功能碼和地址列表之外的有效功能碼和地址列表列出,通過對(duì)列出的功能碼和地址進(jìn)行合成生成異常類數(shù)據(jù)樣本集。生成的異常類數(shù)據(jù)可分為三類:功能碼正確地址錯(cuò)誤、功能碼錯(cuò)誤地址正確、功能碼和地址均錯(cuò)誤。從而改善訓(xùn)練樣本中多數(shù)類與少數(shù)類數(shù)據(jù)的不均衡。
圖3 生成工控異常數(shù)據(jù)流程圖
二是在算法層面,對(duì)網(wǎng)格搜索法中的參數(shù)進(jìn)行改進(jìn)[8],優(yōu)化SVM模型參數(shù)。對(duì)網(wǎng)格搜索法的搜索范圍和步長(zhǎng)進(jìn)行調(diào)整,先通過大范圍較長(zhǎng)步長(zhǎng)搜索,然后在較小范圍精細(xì)尋優(yōu),搜索流程如圖4所示。
圖4 改進(jìn)網(wǎng)格搜索參數(shù)設(shè)置流程
將待檢測(cè)數(shù)據(jù)輸入識(shí)別模型,輸出為1的是正常數(shù)據(jù)流,按一定模式加入規(guī)則表中。例如,允許IP為192.168.0.10訪問1號(hào)PLC,并且只能使用06功能碼在4x0000地址中寫入值,則規(guī)則設(shè)置如下:
[Action: Allow] [IP: 192.168.0.10->192.168.0.1] [502->3524] [Unit: 01] [FC: 06] [SA: 4x0000]
識(shí)別模型性能評(píng)價(jià)方法采用不均衡數(shù)據(jù)下的評(píng)價(jià)標(biāo)準(zhǔn),列出二分類問題混合矩陣如表1所示[9]。
表1 二分類問題的混合矩陣
正常類數(shù)據(jù)預(yù)測(cè)精度(Precision):TP/(TP+FN)。
異常類數(shù)據(jù)預(yù)測(cè)精度:TN/(FP+TN)。
少數(shù)類查準(zhǔn)率(Recall):TP/(TP+FN)。
(5)
(6)
幾何均值G-Mean是少數(shù)類精度與多數(shù)類精度的平方根。當(dāng)兩者的值都大時(shí)幾何均值才大,合理地評(píng)價(jià)不均衡數(shù)據(jù)集的總體分類性能。F-Measure值可以有效評(píng)價(jià)不均衡數(shù)據(jù)集的少數(shù)類的分類性能,是查準(zhǔn)率Precision和查全率Recall的組合,β通常取值為1。
首先模擬真實(shí)工業(yè)生產(chǎn)過程搭建了一個(gè)簡(jiǎn)單的工控系統(tǒng)仿真實(shí)驗(yàn)環(huán)境,如圖5所示。操作員站采用WinCC系統(tǒng)進(jìn)行監(jiān)控操作,工程師站對(duì)PLC配置編程。PLC使用S7-300,CPU為315-2 PN/DP。利用通信模塊及Modbus函數(shù)庫(kù)在操作員監(jiān)控系統(tǒng)和PLC之間建立Modbus TCP通信。實(shí)驗(yàn)中通過工程師站對(duì)PLC配置并編程步進(jìn)電機(jī)的工作程序下載到PLC內(nèi)來模擬車間的一個(gè)工作程序。工業(yè)防火墻規(guī)則自學(xué)習(xí)模塊布置在操作員監(jiān)控系統(tǒng)與PLC之間,其主要由抓包工具、工業(yè)協(xié)議解析工具及SVM算法程序組成,在這里使用林智仁教授開發(fā)的LIBSVM程序[10]。
圖5 工控系統(tǒng)仿真實(shí)驗(yàn)環(huán)境
運(yùn)行仿真實(shí)驗(yàn)平臺(tái),工業(yè)防火墻自學(xué)習(xí)模塊對(duì)通訊網(wǎng)絡(luò)進(jìn)行抓包、解析、提取特征生成正常類流量樣本數(shù)據(jù)。通過設(shè)定本PLC使用的功能碼和地址列表,利用未使用的功能碼和地址與已使用的進(jìn)行合成,生成異常類數(shù)據(jù)。訓(xùn)練樣本中正常類數(shù)據(jù)為1 000個(gè),異常類樣本數(shù)據(jù)逐漸增加,比例分別為1/100,1/60,1/50,1/40,1/35,1/30,1/25,依次編號(hào)為1至7號(hào)。用于測(cè)試的樣本數(shù)據(jù)中正常類與異常類數(shù)據(jù)各60個(gè),比例為1/1。
首先對(duì)五組異常數(shù)據(jù)與正常數(shù)據(jù)比例為1/100的訓(xùn)練樣本,在標(biāo)準(zhǔn)LIBSVM中學(xué)習(xí)、參數(shù)優(yōu)化,生成的識(shí)別模型對(duì)測(cè)試數(shù)據(jù)中的正常與異常數(shù)據(jù)分別預(yù)測(cè),結(jié)果如圖6所示。
圖6 不均衡數(shù)據(jù)下數(shù)據(jù)預(yù)測(cè)精度
從圖6可知,在樣本不均衡性較大時(shí),對(duì)正常數(shù)據(jù)的預(yù)測(cè)精度在90%以上甚至100%,對(duì)異常數(shù)據(jù)的預(yù)測(cè)準(zhǔn)確率在40%以下。
然后將改善的工控?cái)?shù)據(jù)樣本、LIBSVM算法程序及改進(jìn)前優(yōu)化參數(shù),如表2所示,導(dǎo)入MATLAB仿真軟件中運(yùn)行,得到正常類和異常類數(shù)據(jù)預(yù)測(cè)精度,如圖7所示。
表2 各樣本尋優(yōu)C和gamma參數(shù)
圖7 不同均衡數(shù)據(jù)比例正常與異常數(shù)據(jù)預(yù)測(cè)精度
從實(shí)驗(yàn)結(jié)果圖7看出,當(dāng)正常類樣本與異常類樣本比例1/100時(shí),識(shí)別模型對(duì)正常類(多數(shù)類)數(shù)據(jù)的預(yù)測(cè)精度在90%,而此時(shí)對(duì)異常類(少數(shù)類)數(shù)據(jù)預(yù)測(cè)精度在30%~40%之間。隨著兩類數(shù)據(jù)比例減小,識(shí)別模型對(duì)正常類數(shù)據(jù)預(yù)測(cè)精度有一定下降,在1/25時(shí)下降到78%,下降了12%;對(duì)異常數(shù)據(jù)預(yù)測(cè)精度大幅提高,在1/25時(shí)升高到88%,升高了50%。
計(jì)算參數(shù)改進(jìn)前的F-Measure值和G-Mean值,如圖8所示。
圖8 不同均衡數(shù)據(jù)比例G-Mean和F-Measure值
從圖8得知,在多數(shù)類和少數(shù)類比例逐漸減小時(shí),模型整體性能G-Mean值和代表少數(shù)類預(yù)測(cè)性能的F-Measure值都有顯著提高。
最后將改進(jìn)網(wǎng)格搜索后優(yōu)化的C和gamma參數(shù)導(dǎo)入LIBSVM,計(jì)算F-Measure值和G-Mean值與改進(jìn)前對(duì)比結(jié)果如圖9和圖10所示。
圖9 模型參數(shù)優(yōu)化前后G-Mean值對(duì)比
圖10 模型參數(shù)優(yōu)化前后F-Measure值對(duì)比
實(shí)驗(yàn)結(jié)果表明,在使用SVM算法對(duì)工控網(wǎng)絡(luò)數(shù)據(jù)識(shí)別過程,通過樣本層面優(yōu)化對(duì)工控樣本固有的不均衡性改善可以大幅提升識(shí)別模型性能,再通過對(duì)模型參數(shù)優(yōu)化,識(shí)別模型可以更精確預(yù)測(cè)工控?cái)?shù)據(jù)行為。
針對(duì)人工配置工業(yè)防火墻規(guī)則受限制,影響工業(yè)防火墻性能。本文提出基于SVM的工業(yè)防火墻規(guī)則自學(xué)習(xí)方法對(duì)工控網(wǎng)絡(luò)數(shù)據(jù)深入工業(yè)協(xié)議內(nèi)部解析,使用過抽樣方法生成異常數(shù)據(jù)優(yōu)化訓(xùn)練樣本不均衡,使用改進(jìn)的網(wǎng)格搜索法尋優(yōu)模型參數(shù),從而使得到的識(shí)別模型對(duì)正常類與異常類數(shù)據(jù)都有高預(yù)測(cè)率,生成過濾工控行為的白名單規(guī)則表,提升工業(yè)防火墻整體性能。
[1] 尚文利,雷艷晴,萬明,等. 基于哈希算法的工業(yè)防火墻規(guī)則
自學(xué)習(xí)方[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2016,37(3):613-617.
[2] 尚文利,喬全勝,萬明,等. 工業(yè)防火墻規(guī)則生成與優(yōu)化的自學(xué)習(xí)方法[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2016,37(7):1752-1756.
[3] BYOUNG K K, DONG H K, JUNG C N, et al. Abnormal traffic filtering mechanism for protecting ICS networks [C]//18th International Conference on Adcanced Communication, 2016:436-440.
[4] 雷艷晴,尚文利,萬明,等. 工業(yè)防火墻規(guī)則自學(xué)習(xí)算法設(shè)計(jì)[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2016,37(12):3141-3145.
[5] 程超. 工業(yè)控制網(wǎng)絡(luò)Modbus TCP協(xié)議深度包檢測(cè)技術(shù)研究與實(shí)現(xiàn)[D]. 成都:電子科技大學(xué),2016.
[6] 陶新民,劉福榮,杜寶祥. 不均衡數(shù)據(jù)SVM分類算法及其應(yīng)用[M]. 哈爾濱:黑龍江科學(xué)技術(shù)出版社,2011:29-30.
[7] 李琳,尚文利,姚俊,等. 工業(yè)控系統(tǒng)PCA-OCSVM入侵檢測(cè)算法[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2016,37(11):2928-2933.
[8] 王健峰,張磊,陳國(guó)興,等. 基于改進(jìn)的網(wǎng)格搜索法的SVM參數(shù)優(yōu)化[J]. 應(yīng)用科技,2012,39(3):28-31.
[9] 陶新民,徐晶,童智靖,等. 不均衡數(shù)據(jù)下基于陰性免疫的過抽樣新算法[J]. 控制與決策,2010,25(6):867-872.
[10] CHANG C C, LIN C J, LIBSVM: a library for support vector machines[C]//ACM Transactions on Intelligent Systems and Technology, 2011,2(3):1-27.