劉慶華 趙雪寒
(江蘇科技大學(xué)電子信息學(xué)院 鎮(zhèn)江 212001)
隨著科技互聯(lián)網(wǎng)的發(fā)展,工業(yè)系統(tǒng)在許多領(lǐng)域取得了廣泛的應(yīng)用。許多工控系統(tǒng)在建立之初主要考慮系統(tǒng)的功能性,并未過(guò)多考慮系統(tǒng)的可靠性,工控系統(tǒng)的安全性面臨著一定的風(fēng)險(xiǎn)[1~3]。
本文在對(duì)江蘇省常熟水利樞紐望虞河站進(jìn)行調(diào)研后針對(duì)水利泵站工控網(wǎng)易受攻擊的分析主要有[4~6]網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)存在漏洞,且防護(hù)力度不夠;主從站之間數(shù)據(jù)傳輸缺乏加密機(jī)制認(rèn)證,從站設(shè)備正常運(yùn)營(yíng)受到影響;泵站工控網(wǎng)內(nèi)通信協(xié)議的漏洞導(dǎo)致非法數(shù)據(jù)的入侵。針對(duì)以上問(wèn)題,本文設(shè)計(jì)了一套融合自編碼降維的改進(jìn)深度神經(jīng)網(wǎng)絡(luò)的工控網(wǎng)非法數(shù)據(jù)入侵檢測(cè)算法模型。該算法模型主要研究、分析協(xié)議自身及面臨的安全性問(wèn)題,結(jié)合自編碼降維算法準(zhǔn)確地檢測(cè)出非法入侵的數(shù)據(jù),為防護(hù)水利工控網(wǎng)通信安全奠定了基礎(chǔ)。
工控網(wǎng)內(nèi)的數(shù)據(jù)流動(dòng)量是很大的,就水利泵站通信網(wǎng)而言,從底層設(shè)備導(dǎo)入到本地?cái)?shù)據(jù)庫(kù)的每條數(shù)據(jù)都包含了27維特征,維度越高,數(shù)據(jù)在每個(gè)特征維度上的分布就越稀疏,這對(duì)于深度學(xué)習(xí)算法而言是災(zāi)難性的,故而在進(jìn)行網(wǎng)絡(luò)模型訓(xùn)練前需要進(jìn)行數(shù)據(jù)降維,本文采用自編碼器對(duì)數(shù)據(jù)進(jìn)行處理,該方法可以有效地初始化權(quán)值,相比主成分分析法更有用。主成分分析法(PCA)就是為了從多維特征數(shù)據(jù)中找到能反映主元信息的數(shù)據(jù)屬性,而自動(dòng)編碼器也正是如此,它實(shí)際上是一種無(wú)監(jiān)督學(xué)習(xí)算法,一種盡可能復(fù)現(xiàn)輸入信號(hào)的神經(jīng)網(wǎng)絡(luò),因此必須在輸入數(shù)據(jù)中提取出最重要的有代表性的特征因素。
自動(dòng)編碼網(wǎng)絡(luò)首先將輸入的27維特征通過(guò)編碼網(wǎng)絡(luò)得到編碼,然后初始化編碼網(wǎng)絡(luò)的權(quán)值[ω1,ω2,…ωn],給定樣本數(shù)據(jù)[x1,x2…xn],為了能更加有效地表示樣本數(shù)據(jù),加入了稀疏編碼算法以更好地搜尋基礎(chǔ)特征,即用一組基向量的線性組合來(lái)表示輸入向量X:

通過(guò)稀疏編碼算法訓(xùn)練學(xué)習(xí)一組基向量[φ1,φ2,…]后,利用基向量得到對(duì)給定樣本數(shù)據(jù)的表達(dá)向量[α1,α2,…],經(jīng)過(guò)不斷訓(xùn)練和調(diào)整編碼網(wǎng)絡(luò)的權(quán)值和偏置值使重構(gòu)誤差最小,本文采用誤差的偏導(dǎo)數(shù)后向傳播的方式得到梯度,從而可以將權(quán)值調(diào)節(jié)到最佳值,權(quán)值更新的公式如下:

其中,wn指n層的權(quán)值更新量,En+1是下一層網(wǎng)絡(luò)的誤差,In是本層的輸入,bn是n層偏置項(xiàng)更新量,Res是殘差。在得到第一層的編碼后,將第一層網(wǎng)絡(luò)計(jì)算得到的編碼結(jié)果作為第二層網(wǎng)絡(luò)的輸入信號(hào),并且進(jìn)行最小化誤差重構(gòu)計(jì)算,即可得到該層網(wǎng)絡(luò)的參數(shù)及下一層網(wǎng)絡(luò)的輸入編碼,以此類(lèi)推直到結(jié)束從而達(dá)到降維的效果[12]。
參數(shù)優(yōu)化是一個(gè)全局的過(guò)程,通過(guò)優(yōu)化可以較大程度調(diào)節(jié)學(xué)習(xí)率,促使網(wǎng)絡(luò)參數(shù)更適應(yīng)于當(dāng)前樣本數(shù)據(jù)。因?yàn)槿绻麑W(xué)習(xí)率很低,訓(xùn)練雖然會(huì)更加穩(wěn)定,但是由于趨于損失函數(shù)loss最小值的步長(zhǎng)很小,所以會(huì)花費(fèi)大量時(shí)間來(lái)優(yōu)化;如果學(xué)習(xí)率很高,則會(huì)導(dǎo)致訓(xùn)練結(jié)果收斂不了,優(yōu)化會(huì)越過(guò)最小值從而使得損失值變大[13~14]。深度神經(jīng)網(wǎng)絡(luò)模型常用的優(yōu)化算法是SGD(隨機(jī)梯度下降算法),而SGD有很多衍生的算法,如Adagrad、RMSProp、Adadelta等。
常見(jiàn)的SGD優(yōu)化算法是通過(guò)每次在訓(xùn)練集中隨機(jī)選擇一個(gè)樣本的方式進(jìn)行學(xué)習(xí),過(guò)程是很快速的,所有的θt都使用相同的學(xué)習(xí)率,因此迭代到第t次時(shí),參數(shù)向量Δθt的變化過(guò)程如下:

其中,η是學(xué)習(xí)率,gt是某次迭代時(shí)刻t目標(biāo)函數(shù)對(duì)參數(shù)的梯度。該算法最大的缺點(diǎn)在于每次學(xué)習(xí)的方向不定,可能不會(huì)按照正確的方向進(jìn)行,這就容易造成結(jié)果在最優(yōu)解附近擾動(dòng)[15]。而Adagrd算法可以很好地解決這個(gè)問(wèn)題,在更新規(guī)則后,它能夠針對(duì)不同的參數(shù)自適應(yīng)不同的學(xué)習(xí)率,讓其按照需要的正確的方向進(jìn)行,參數(shù)向量Δθt的變化過(guò)程如下:

此處,Gt是一個(gè)對(duì)角矩陣,ε是平滑項(xiàng),防止除零操作,對(duì)gt從1到t進(jìn)行一個(gè)遞推形成約束正則化矩陣,前期gt較小時(shí),正則化矩陣較大,可以增大梯度值,后期gt較大時(shí),正則化矩陣較小,可以約束梯度。但該算法仍有弊端,在計(jì)算梯度序列平方和時(shí)較為復(fù)雜,且分母上梯度平方累加逐漸增大,會(huì)導(dǎo)致訓(xùn)練提前結(jié)束。故而本文采用Adadelta算法,只使用Adagrad的分母中的累計(jì)項(xiàng)離當(dāng)前時(shí)間點(diǎn)比較近的項(xiàng),即將分母中的Gt換成了梯度平方的衰減平均值E[g2]t,避免了訓(xùn)練提前結(jié)束,公式如下[16]:


式中若是梯度更新值產(chǎn)生振動(dòng),則讓梯度減?。ǔ艘?-v),否則增加v,v的默認(rèn)值為0.02,該算法可以有效地解決水利泵站工控網(wǎng)數(shù)據(jù)稀疏特征、數(shù)據(jù)量大的問(wèn)題,收斂速度快,適用于本文提出的改進(jìn)深度神經(jīng)網(wǎng)絡(luò)模型。
由底層設(shè)備獲取到的工控網(wǎng)內(nèi)數(shù)據(jù)有很多并非工控協(xié)議,這就需要預(yù)先采用腳本剔除,比如Modbus協(xié)議中目的端口號(hào)是否是502,Profibus協(xié)議的開(kāi)始定界符是否是16H,Hart協(xié)議的前導(dǎo)碼是否由5位FF組成,這樣預(yù)先進(jìn)行剔除操作可以適當(dāng)減少數(shù)據(jù)量。同樣地,對(duì)協(xié)議地分類(lèi)標(biāo)準(zhǔn)也是如此。同時(shí)為了讓數(shù)據(jù)盡量處于相同的量綱,把數(shù)據(jù)限定在某一范圍內(nèi),則需要進(jìn)行歸一化處理,公式如下:ρmax和ρmin分別對(duì)應(yīng)數(shù)據(jù)中的最大值和最小值。

在對(duì)數(shù)據(jù)進(jìn)行預(yù)處理、分類(lèi)、特征選擇降維后,將得到的訓(xùn)練數(shù)據(jù)集經(jīng)過(guò)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,對(duì)可以得到每一層網(wǎng)絡(luò)層的訓(xùn)練輸出結(jié)果,而要訓(xùn)練具有多個(gè)隱含層的深度網(wǎng)絡(luò)的全局優(yōu)化值,便要采用逐層訓(xùn)練的機(jī)制,每次針對(duì)網(wǎng)絡(luò)某一隱層進(jìn)行訓(xùn)練,得到該層的最有參數(shù)和特征,作為一下層輸入;然后再對(duì)下一層進(jìn)行單獨(dú)訓(xùn)練得到相關(guān)數(shù)據(jù),以此類(lèi)推,逐層訓(xùn)練出整個(gè)網(wǎng)絡(luò)的全局最優(yōu)解,最后可得到深度神經(jīng)網(wǎng)絡(luò)入侵檢測(cè)模型。為了驗(yàn)證模型的準(zhǔn)確度,采用測(cè)試數(shù)據(jù)集進(jìn)行驗(yàn)證,最終通過(guò)Soft?max分類(lèi)器輸出預(yù)測(cè)結(jié)果,通過(guò)加入權(quán)重衰減改動(dòng)損失函數(shù)來(lái)解決Softmax回歸的參數(shù)冗余帶來(lái)的數(shù)值問(wèn)題[17~18]。網(wǎng)絡(luò)共五層,由輸入層、三隱藏層和輸出層構(gòu)成,在每層之間采用Dropout來(lái)防止過(guò)擬合發(fā)生,Dropout率始終保持在20%~50%之間,輸入層的節(jié)點(diǎn)由每種協(xié)議的維度決定,三隱藏層的節(jié)點(diǎn)一般通過(guò)經(jīng)驗(yàn)確定,可以采用遍歷的方法比較選取最合適的節(jié)點(diǎn)數(shù),但由于該方法會(huì)耗費(fèi)大量時(shí)間和人力,所以本文通過(guò)公式法確定,公式如下:

式中m指隱含層節(jié)點(diǎn)數(shù),n指輸入層節(jié)點(diǎn)數(shù),α是1~10之間的常數(shù),采用公式法大大減少了遍歷的次數(shù)和時(shí)間。同時(shí)隱藏層需要采用激活函數(shù)RE?LU,可以很好地解決神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中的梯度彌散問(wèn)題,基于DNN的入侵檢測(cè)模型如圖1所示。

圖1 基于DNN的入侵檢測(cè)模型
本文以受限玻爾茲曼機(jī)網(wǎng)絡(luò)(RBM)作為構(gòu)建深度神經(jīng)網(wǎng)絡(luò)算法的基礎(chǔ),對(duì)原來(lái)模型的特征提取進(jìn)行改進(jìn),將RBM層作為深度網(wǎng)絡(luò)的單層結(jié)構(gòu)實(shí)現(xiàn)深層特征提取,以便得到更高級(jí)的特征向量,以此作為分類(lèi)識(shí)別的依據(jù)。RBM由可視層與隱藏層組成,RBM在可視層和隱藏層之間有一個(gè)聯(lián)合組態(tài)的能量,可表示為

其中:θ={w,a,b}為RBM模型參數(shù),RBM的學(xué)習(xí)過(guò)程就是通過(guò)訓(xùn)練獲得參數(shù)θ的過(guò)程。wij表示可視單元i與隱藏單元j之間的連接權(quán)重,ai為可視單元i的偏置,bj為隱藏單元j的偏置,基于該能量函數(shù),可得到(v,h)的聯(lián)合概率分布:

將多個(gè)RBM網(wǎng)絡(luò)層進(jìn)行疊加,組成新的網(wǎng)絡(luò),使得該網(wǎng)絡(luò)具有較高的靈活性和可擴(kuò)展性,模型如圖2所示。

圖2 RBM網(wǎng)絡(luò)組成有向無(wú)環(huán)模型
將多層RBM疊加后,高層RBM網(wǎng)絡(luò)輸入數(shù)據(jù)采用底層RBM網(wǎng)絡(luò)輸出數(shù)據(jù),且數(shù)據(jù)是訓(xùn)練得到的概率分布數(shù)值。需要注意的是,僅含有由多層RBM網(wǎng)絡(luò)疊加而成的網(wǎng)絡(luò)結(jié)構(gòu)只能夠?qū)崿F(xiàn)對(duì)輸入數(shù)據(jù)的特征提取工作,要實(shí)現(xiàn)最終的入侵檢測(cè)任務(wù),我們需要在網(wǎng)絡(luò)的最終層輸出之上設(shè)置一個(gè)Softmax分類(lèi)器對(duì)網(wǎng)絡(luò)輸出數(shù)據(jù)做出合法非法的分類(lèi),把網(wǎng)絡(luò)的最后輸出層數(shù)據(jù)作為Softmax回歸分類(lèi)器的輸入值,從而形成完整的分類(lèi)神經(jīng)網(wǎng)絡(luò)[19~20]。整個(gè)網(wǎng)絡(luò)仍有五層,但對(duì)隱藏層節(jié)點(diǎn)數(shù)的計(jì)算方法有所改進(jìn),增加了輸出節(jié)點(diǎn)數(shù):

其中m為網(wǎng)絡(luò)輸入節(jié)點(diǎn)數(shù),n為網(wǎng)絡(luò)輸出節(jié)點(diǎn)數(shù),k為10左右的常數(shù)。這樣通過(guò)網(wǎng)絡(luò)的實(shí)際結(jié)構(gòu)加上實(shí)驗(yàn)的基礎(chǔ)更加準(zhǔn)確地確定隱藏層節(jié)點(diǎn)數(shù),以減少資源虛耗,入侵檢測(cè)模型如圖3所示。

圖3 基于受限玻爾茲曼機(jī)的改進(jìn)深度神經(jīng)網(wǎng)絡(luò)的入侵檢測(cè)模型
本文的實(shí)驗(yàn)數(shù)據(jù)從水利泵站工控網(wǎng)采集,將采集得到的數(shù)據(jù)處理后存至本地保存,其中,數(shù)據(jù)處理的操作主要包括訓(xùn)練集、測(cè)試集制作。采集數(shù)據(jù)除了工控網(wǎng)內(nèi)正常數(shù)據(jù)外,為了能夠檢測(cè)出非法數(shù)據(jù),還對(duì)工控網(wǎng)內(nèi)DNS欺騙數(shù)據(jù)、拒絕服務(wù)攻擊數(shù)據(jù)、IP源地址欺詐等多類(lèi)異常數(shù)據(jù)。
入侵系統(tǒng)評(píng)價(jià)指標(biāo)主要包括三個(gè):1)檢測(cè)率,該指標(biāo)為工控系統(tǒng)受攻擊后,系統(tǒng)能夠正確檢測(cè)到概率;2)誤識(shí)率,該指標(biāo)為工控系統(tǒng)將正確行為判斷為攻擊行為的概率;3)漏報(bào)率,該指標(biāo)為工控系統(tǒng)未檢測(cè)到外界攻擊系統(tǒng)的概率。以上三個(gè)指標(biāo)的計(jì)算公式如下:

其中PT是工控系統(tǒng)入侵檢測(cè)模型正確預(yù)測(cè)攻擊行為的數(shù)量,N是總攻擊數(shù),PF是入侵檢測(cè)模型錯(cuò)誤預(yù)測(cè)攻擊行為數(shù),P是總正常樣本量,T是模型不能正確預(yù)測(cè)的樣本數(shù)量。
為了驗(yàn)證本文算法的效果,下面將從兩個(gè)方面進(jìn)行驗(yàn)證比較。
首先是網(wǎng)絡(luò)模型參數(shù)優(yōu)化算法,SGD、Adagrad算法都可優(yōu)化模型,但其對(duì)收斂速度的影響相比本文采用的Adadelta算法有不足。三種算法學(xué)習(xí)曲線如圖4所示。

圖4 三種算法學(xué)習(xí)曲線圖
由上圖可看出隨著迭代次數(shù)的增加Adadelta算法很快便尋找到正確的方向并前進(jìn),收斂速度也相當(dāng)快,而Adagrad算法收斂速度較Adadelta慢些,SGD算法不僅收斂速度慢,且中間出現(xiàn)“走彎路”現(xiàn)象,在震蕩后才沿正確方向收斂。并且本文的優(yōu)化算法能將loss值收斂到0.0012,顯然比另兩種算法收斂的更小,因此采用Adadelta算法較Adagrad和SGD算法的收斂性更好。
其次是與傳統(tǒng)DNN模型以及采用PCA降維算法較。傳統(tǒng)DNN模型不能夠適應(yīng)水利泵站工控網(wǎng)數(shù)據(jù)量大、緯度高的數(shù)據(jù)特點(diǎn),所以需要對(duì)傳統(tǒng)DNN模型進(jìn)行改進(jìn);PCA降維算法主要是線性降維,對(duì)水利泵站工控網(wǎng)的非線性數(shù)據(jù)處理效果并不理想,三種方法的模型訓(xùn)練準(zhǔn)確率及在檢測(cè)率、誤報(bào)率和漏報(bào)率指標(biāo)方面的表現(xiàn)如表1所示。

表1 不同算法模型訓(xùn)練準(zhǔn)確率對(duì)比
由表1可以看出,在訓(xùn)練數(shù)據(jù)集上進(jìn)行PCADNN、Encoder-DNN、融合自編碼降維的改進(jìn)DNN模型訓(xùn)練。通過(guò)模型在測(cè)試集上的測(cè)試可知,PCA-DNN模型準(zhǔn)確度最低,表明該模型對(duì)特征無(wú)相關(guān)性的數(shù)據(jù)訓(xùn)練效果不好。本文提出的融合自編碼降維的改進(jìn)深度神經(jīng)網(wǎng)絡(luò)模型將數(shù)據(jù)經(jīng)過(guò)自編碼降維處理后,模型訓(xùn)練效果較好;除了數(shù)據(jù)處理,該模型還針對(duì)訓(xùn)練機(jī)制等多方面做了改進(jìn),模型準(zhǔn)確度可達(dá)97%,相比其他模型具有更好的攻擊行為預(yù)測(cè)能力。
由表2可以看出,PCA-DNN入侵檢測(cè)系統(tǒng)的檢測(cè)率較低、誤報(bào)率及漏報(bào)率高,模型訓(xùn)練效果不好,其主要原因是因?yàn)榻稻S效果不好。自編碼降維算法檢測(cè)率相比PCA-DNN來(lái)說(shuō)有了一定的提高,但與本文提出的改進(jìn)網(wǎng)絡(luò)相比,檢測(cè)率還有待提升,且漏報(bào)率也相對(duì)較大,但其誤識(shí)率較本文算法略低。綜合以上分析可以得到如下結(jié)論:本文提出的算法模型綜合效果最優(yōu),對(duì)系統(tǒng)攻擊的檢測(cè)具有較高的準(zhǔn)確性,系統(tǒng)具有較強(qiáng)的穩(wěn)定性。

表2 不同算法的入侵檢測(cè)模型性能指標(biāo)對(duì)比
水利泵站工控安全問(wèn)題在不斷引起重視,本文以水利泵站為背景,針對(duì)泵站工控網(wǎng)內(nèi)的高維數(shù)據(jù)量提出一種結(jié)合自編碼降維的改進(jìn)深度神經(jīng)網(wǎng)絡(luò)入侵檢測(cè)模型,在對(duì)原始數(shù)據(jù)自編碼降維后,基于受限玻爾茲曼機(jī)對(duì)網(wǎng)絡(luò)模型進(jìn)行改進(jìn),再經(jīng)過(guò)網(wǎng)絡(luò)進(jìn)行分類(lèi)預(yù)測(cè),同時(shí)為了提高算法檢測(cè)的準(zhǔn)確率,采用Adadelta算法對(duì)模型進(jìn)行參數(shù)優(yōu)化。實(shí)驗(yàn)結(jié)果表明,本文的算法模型優(yōu)于其他算法,有較高的預(yù)測(cè)準(zhǔn)確率,在檢測(cè)率、誤報(bào)率和漏報(bào)率三項(xiàng)指標(biāo)上都比另外兩種算法表現(xiàn)優(yōu)異,具有較好的特征表征學(xué)習(xí)和分類(lèi)預(yù)測(cè)能力,是一種可行且有效的入侵檢測(cè)模型。