劉慶華 吳昊天
(江蘇科技大學(xué)計(jì)算機(jī)學(xué)院 鎮(zhèn)江 212000)
隨著信息化與自動(dòng)化技術(shù)的不斷發(fā)展,為了方便政府與企業(yè)對(duì)工業(yè)控制系統(tǒng)進(jìn)行管理和監(jiān)督,在降低成本的原始驅(qū)動(dòng)力下,工業(yè)控制系統(tǒng)變得比以前開放,越來越多地采用標(biāo)準(zhǔn)的通用協(xié)議和軟硬件系統(tǒng)[1~3]。工業(yè)控制系統(tǒng)在走向開放的同時(shí),無可避免地引入傳統(tǒng)IT 網(wǎng)絡(luò)中普遍存在的漏洞和威脅等安全問題,工業(yè)控制系統(tǒng)遭受攻擊的風(fēng)險(xiǎn)日益增大[4]。自2011 年以來工業(yè)控制系統(tǒng)的安全事件呈現(xiàn)上漲趨勢(shì),原因主要有兩點(diǎn):1)通用協(xié)議和軟硬件的使用使入侵變得容易;2)工業(yè)控制系統(tǒng)的特殊地位使得其成為敵對(duì)政府和勢(shì)力的攻擊目標(biāo)[5]。從這一系列的事件可以看出針對(duì)工業(yè)控制系統(tǒng)的入侵活動(dòng)從來就沒有停止過,只不過以前的安全事件發(fā)生頻率不高,造成的后果并不嚴(yán)重,沒有引起各界的足夠重視。
近幾年以來,針對(duì)于工業(yè)控制系統(tǒng)異常及安全防護(hù)的研究十分活躍。工控安全研究可以分為三類[6~8]:基于統(tǒng)計(jì)的方法、基于知識(shí)的方法和基于機(jī)器學(xué)習(xí)的方法。其中Thomas Morris[9]等設(shè)計(jì)提出了基于Snort 的協(xié)議分析與檢測(cè)系統(tǒng),利用Snort 規(guī)則對(duì)上行數(shù)據(jù)和下行數(shù)據(jù)進(jìn)行檢測(cè),對(duì)特定協(xié)議與已知的非法數(shù)據(jù)包,該方法具有較好的檢測(cè)效果,但是具有無法處理未知攻擊的缺陷。Ondrej Linda[10]等從工控網(wǎng)絡(luò)中提取特征信息構(gòu)成數(shù)據(jù)集,采用神經(jīng)網(wǎng)絡(luò)算法進(jìn)行入侵檢測(cè)研究,取得了較好的結(jié)果。但是由于神經(jīng)網(wǎng)絡(luò)的特殊性,模型不能夠?qū)Ξ惓J录呐袛嘟o出合理的解釋,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)包括神經(jīng)元的權(quán)重需要上千上萬次迭代才能確認(rèn)。Justin M.Beaver[11]等探討了 SVM、貝葉斯用于檢測(cè)工控系統(tǒng)攻擊場(chǎng)景的可行性,并使用標(biāo)準(zhǔn)數(shù)據(jù)集對(duì)上述方法進(jìn)行評(píng)估。該方法簡(jiǎn)單、計(jì)算高效,但是訓(xùn)練數(shù)據(jù)集合較大,檢測(cè)速度無法滿足工業(yè)實(shí)時(shí)性要求,檢測(cè)中的閾值難以設(shè)定。Jianmin Jiang[12]等提出了基于SVM 的SCADA 系統(tǒng)入侵檢測(cè)方法,并使用通信網(wǎng)絡(luò)的數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),發(fā)現(xiàn)該算法學(xué)習(xí)推廣能力較強(qiáng),檢測(cè)快速,但是該方法在描述用戶動(dòng)態(tài)行為變化和單獨(dú)檢測(cè)方面的效果不明顯。Xiao Yujun[13]等提出一種非侵入式基于功耗的PLC異常檢測(cè)方案,通過研究PLC功耗變化結(jié)合稀疏編碼算法提取特征,通過訓(xùn)練記憶單元神經(jīng)網(wǎng)絡(luò)來判斷PLC 是否異常。該方法對(duì)未知攻擊具有很好的檢測(cè)效果,但是并非所有攻擊都影響功耗,檢測(cè)范圍有限。
為了防止工業(yè)控制系統(tǒng)被入侵,提高工控系統(tǒng)的安全性。本文針對(duì)于工業(yè)控制系統(tǒng)中廣泛使用的Modbus 協(xié)議,在充分考慮已有算法缺點(diǎn)的基礎(chǔ)上,提出融合PCA降維和深度神經(jīng)網(wǎng)絡(luò)的新型工控防御方法,以全連接型深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為基礎(chǔ),結(jié)合PCA數(shù)據(jù)降維能力,構(gòu)建工控深度防御模型。
Modbus/TCP 是屬于OSI 所定義的通信層第七層應(yīng)用層協(xié)議,是類似于Client/Server 或稱作為Master/Slave 型式的通信協(xié)議,它是典型的主從式通信模型,Modbus 主站向Modbus 從站發(fā)送請(qǐng)求報(bào)文,從站依據(jù)協(xié)議的格式規(guī)約作出應(yīng)答,圖1 是Modbus/TCP協(xié)議的技術(shù)規(guī)范。
因?yàn)槠浠跇?biāo)準(zhǔn)以太網(wǎng)TCP/IP 協(xié)議基礎(chǔ)之上的工控應(yīng)用協(xié)議,因此傳統(tǒng)TCP/IP 協(xié)議擁有的安全缺陷Modbus/TCP 協(xié)議也具備,會(huì)遭受到例如ARP 地址偽裝攻擊,拒絕服務(wù)攻擊、IP 欺騙攻擊等常見的網(wǎng)絡(luò)攻擊。同時(shí),因?yàn)楣I(yè)控制系統(tǒng)自身固有的特點(diǎn),Modbus/TCP 協(xié)議在設(shè)計(jì)之初并沒有考慮到信息安全問題,這就使得Modbus/TCP 協(xié)議自身也存在著一些安全漏洞,容易被黑客利用,自身存在的缺陷包括以下幾點(diǎn)[14~16]:
圖1 Modbus/TCP協(xié)議技術(shù)規(guī)范
首先,Modbus/TCP 缺乏安全認(rèn)證,一旦接入到工業(yè)控制系統(tǒng),任何一個(gè)終端都可以使用一個(gè)非法的IP 地址和Modbus 功能碼建立會(huì)話,這就導(dǎo)致攻擊者只要能黑入特定的工業(yè)控制系統(tǒng),就能夠扮演任意一個(gè)Modbus 主站角色去惡意訪問Modbus 從站的信息。
其次,Modbus/TCP 缺乏授權(quán),沒有基于角色權(quán)限的訪問控制機(jī)制,一般用戶能root 整個(gè)系統(tǒng),只要分發(fā)指令從站能夠識(shí)別,任何一個(gè)用戶都可以執(zhí)行任意的功能。如果攻擊者黑入某一Modbus主站后,可以利用主站向Modbus 從站發(fā)送執(zhí)行某一功能的命令,而此功能原本是不允許該Modbus 主站訪問的。
再者,Modbus/TCP 功能碼、地址、寄存器或線圈域值都是明文傳輸,缺乏加密機(jī)制,這就使得攻擊者一旦捕獲到流量數(shù)據(jù),能夠很輕易地將其內(nèi)容解析出來,導(dǎo)致生產(chǎn)工藝等一些機(jī)密信息泄露。
最后,Modbus/TCP 缺乏完整性檢測(cè),常用的CRC校驗(yàn)更多的是用于差錯(cuò)檢驗(yàn),而通信數(shù)據(jù)有可能被篡改而無法校驗(yàn)。如果攻擊者通過類似于ARP 地址詐騙攻擊將合法的Modbus/ TCP 數(shù)據(jù)報(bào)文篡改成超長(zhǎng)的畸形Modbus/TCP 數(shù)據(jù)報(bào)文,造成Modbus 從站緩存區(qū)溢出,從而導(dǎo)致Modbus 從站宕機(jī),直接影響工業(yè)控制系統(tǒng)正常運(yùn)行。
高數(shù)據(jù)量、高維數(shù)是工業(yè)控制系統(tǒng)中數(shù)據(jù)的兩個(gè)明顯特征,在本文采用數(shù)據(jù)集中,每條網(wǎng)絡(luò)數(shù)據(jù)的特征集總共有17 個(gè)數(shù)據(jù)特征,這些特征囊括了Modbus 數(shù)據(jù)包從發(fā)送到接受的全部信息,具體體現(xiàn)為如下:Features={SourceIp,SourceMac,DestinationIp,DestinationMac, Traffictype,TrafficName,Totalbytes,Timestamp,CreatedAt,TransactionIdentify,Length1,DeviceAddress,F(xiàn)unctionCode,RegisterAddress1,RegisterAddress2,RegisterCount},其中包含一些無關(guān)的隱晦以及重復(fù)的特征表達(dá)。維度災(zāi)難(dimension disaster)是算法必須要規(guī)避的問題,高緯度不僅會(huì)帶來高的時(shí)間復(fù)雜度,一些無關(guān)的維度因子還會(huì)嚴(yán)重影響算法分類的準(zhǔn)確性。主成分分析方法是一種線性降維技術(shù),從多維特征提取反映數(shù)據(jù)屬性的信息主元,這些主元可以反映幾乎全部的高維信息,并且具有數(shù)目少、互不相關(guān)的特點(diǎn),在分類時(shí)可以達(dá)到數(shù)據(jù)降維的作用。
假設(shè)原始的Modbus 訓(xùn)練集有n 個(gè)輸入樣本,則有 X=(X1,X2,…,Xn),其中每個(gè)樣本有m 個(gè)特征表達(dá):
這n個(gè)樣本的平均向量為
每個(gè)樣本輸入與平均向量的差值表示為
訓(xùn)練樣本的協(xié)方差矩陣可以表示為
上述公式中 ux是N 維向量,L 是 N×N 維矩陣。
設(shè) λ1,λ2,…,λm是矩陣 L 的 m 個(gè)特征向量,將特征向量表達(dá)為U=(U1,U2,…,Um)T,其中特征根是從大到小排列,λ1>λ2…>λm。
將第i 個(gè)樣本重建,新的表達(dá)公式為
根據(jù)K-L變換,計(jì)算出第i 個(gè)樣本的貢獻(xiàn)率為
式中T 是通過累積貢獻(xiàn)率確定,本文設(shè)定的標(biāo)準(zhǔn)為90%,只要累計(jì)貢獻(xiàn)率達(dá)到90%,則選取前T 個(gè)主成分代替原始輸入,通過PCA可以達(dá)到降維數(shù)據(jù)的目的,避免因維度災(zāi)難引起的計(jì)算資源過度損耗。
工控?cái)?shù)據(jù)(Modbus Tcp 數(shù)據(jù)集)經(jīng)過PCA 數(shù)據(jù)降維,可以作為深度神經(jīng)網(wǎng)絡(luò)的輸入,深度神經(jīng)網(wǎng)絡(luò)即多隱藏層神經(jīng)網(wǎng)絡(luò),其優(yōu)勢(shì)是能夠利用較少的參數(shù)表示復(fù)雜的函數(shù)。
最常見的參數(shù)優(yōu)化方法是SGD,工業(yè)數(shù)據(jù)納入模型訓(xùn)練時(shí),迭代計(jì)算batch 的梯度對(duì)參數(shù)進(jìn)行更新。
當(dāng)固定好η 時(shí),對(duì)于每個(gè)參數(shù)都會(huì)使用同樣的learning rate,因此選擇合適的learning rate 比較困難,工業(yè)數(shù)據(jù)特征呈現(xiàn)高維的特性,但是并不是每個(gè)特征的重要性都是一樣,針對(duì)于一些次重要的特征,在訓(xùn)練過程中,希望更新的更加快,相反,對(duì)于一些重要的特征,希望更新的慢一些。此外,SGD本身也不是穩(wěn)定的算法,結(jié)果可能在最優(yōu)解附近波動(dòng),不同的學(xué)習(xí)率可能會(huì)導(dǎo)致神經(jīng)網(wǎng)絡(luò)落入到截然不同的局部最優(yōu)之中。
Adagrad 也是一種基于梯度的優(yōu)化算法,它能夠?qū)γ總€(gè)參數(shù)自適應(yīng)不同的學(xué)習(xí)速率,對(duì)稀疏特征,得到大的學(xué)習(xí)更新,對(duì)非稀疏特征,得到較小的學(xué)習(xí)更新,因此該優(yōu)化算法適合處理稀疏特征數(shù)據(jù)。Dean 等發(fā)現(xiàn)Adagrad 能夠很好地提高SGD 的魯棒性,Adagrad在SGD的基礎(chǔ)上,對(duì)學(xué)習(xí)率進(jìn)行了一個(gè)約束,表達(dá)為
式中g(shù)t表示當(dāng)前的梯度,ε 是一個(gè)比較小的數(shù)來保證分母非0。Adagrad 自適應(yīng)的為各個(gè)參數(shù)配置不同的學(xué)習(xí)率,每個(gè)學(xué)習(xí)率能根據(jù)當(dāng)前梯度的變化情況自適應(yīng)的調(diào)整大小,并且nt梯度的平方能保證梯度呈現(xiàn)下降趨勢(shì)。
此外,本文采用Relu 作為激活函數(shù),Relu 可以很好的解決梯度彌散問題,在稀疏矩陣的表達(dá)上具備天然的優(yōu)勢(shì),即使經(jīng)過了多層的傳播,梯度也不會(huì)大幅度縮小,適合于本文提出的深度模型。
融合PCA降維和Ada-DNN分類的工控防御系統(tǒng),經(jīng)由數(shù)據(jù)采集設(shè)備采集的工控系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)經(jīng)過PCA 降維處理,通過Adagrad 優(yōu)化調(diào)整全參數(shù)學(xué)習(xí)率。深度防御模型的構(gòu)造采用12-10-12 三隱層結(jié)構(gòu)。算法流程圖如圖2所示。
圖2 主體算法流程圖
工控?cái)?shù)據(jù)經(jīng)過多層表達(dá),從訓(xùn)練數(shù)據(jù)提前主要模型特征。最終通過Softmax分類器,計(jì)算如下:
其中,xi表示第i 個(gè)輸入的特征表達(dá),先對(duì)各個(gè)類的特征求exp函數(shù),之后標(biāo)準(zhǔn)化,在保證和為1的前提下,輸出概率,工控?cái)?shù)據(jù)的特征值越小,對(duì)應(yīng)輸出的概率就越小。
工控防御模型的整體系統(tǒng)的框架如下:
整個(gè)系統(tǒng)過程可分為四個(gè)階段:
1)數(shù)據(jù)預(yù)處理階段:工控網(wǎng)內(nèi)流動(dòng)的數(shù)據(jù)量是龐大且繁雜的,系統(tǒng)在使用腳本語言剔除一些無用的通信數(shù)據(jù)之后,使用主成分分析(PCA)方法對(duì)數(shù)據(jù)集進(jìn)行降維,提取貢獻(xiàn)率大,更能反應(yīng)工控過程的特征,避免因維數(shù)過多損耗計(jì)算資源。
2)深度神經(jīng)網(wǎng)絡(luò)模型參數(shù)優(yōu)化階段:利用Adagrad 對(duì)模型全參數(shù)進(jìn)行不同學(xué)習(xí)率調(diào)整,保證影響因子大的特征訓(xùn)練慢,影響因子小的參數(shù)訓(xùn)練快。
3)數(shù)據(jù)訓(xùn)練階段:數(shù)據(jù)集經(jīng)過降維處理,將得到的最終特征向量經(jīng)過訓(xùn)練模塊,最后的特征表達(dá)通過Softmax分類器,輸出概率。
4)數(shù)據(jù)驗(yàn)證階段:訓(xùn)練好的深度模型分類器對(duì)經(jīng)過降維處理的驗(yàn)證數(shù)據(jù)集進(jìn)行檢測(cè),驗(yàn)證模塊通過驗(yàn)證結(jié)果做出對(duì)應(yīng)的決策。
在實(shí)際的工業(yè)流程中,正常的數(shù)據(jù)流量包含數(shù)據(jù)的來源與目的地址、協(xié)議標(biāo)識(shí)符,設(shè)備地址號(hào)等等多達(dá)20 維的關(guān)鍵信息,是數(shù)據(jù)從源到終的具現(xiàn),對(duì)于工控安全具有非常好的參考意義。本文中非法數(shù)據(jù)是通過篡改指令的方式實(shí)現(xiàn),其中采用的數(shù)據(jù)集中主要包含三種:ARP 地址欺騙攻擊、拒絕服務(wù)攻擊、功能碼異常。
數(shù)據(jù)的命令響應(yīng)、控制模式包含功能碼等關(guān)鍵維的信息均為非數(shù)值形式,而深度神經(jīng)網(wǎng)絡(luò)不能直接識(shí)別非數(shù)值形式的數(shù)據(jù),此外,因?yàn)楸疚牟捎玫臄?shù)據(jù)集是由底層設(shè)備同步過來,所以包含了大量工控?zé)o關(guān)的協(xié)議數(shù)據(jù),系統(tǒng)必須予以剔除,因此必須對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。
本文采用數(shù)據(jù)源,由底層設(shè)備同步的工控?cái)?shù)據(jù),為了達(dá)到實(shí)驗(yàn)的目的,數(shù)據(jù)集除了包含正常的工業(yè)數(shù)據(jù)外,還混雜了一部分具備攻擊性的數(shù)據(jù)源。
1)數(shù)據(jù)清理:由于系統(tǒng)數(shù)據(jù)源來自于底層設(shè)備同步,包含大量非工控協(xié)議的數(shù)據(jù),因此,采用腳本語言予以剔除,詳細(xì)描述為
圖3 工控?cái)?shù)據(jù)過濾流程圖
2)歸一化處理:由于樣本的特征屬性各不相同,缺乏統(tǒng)一的度量單位,為了消除這些不利因素,需要進(jìn)行歸一化處理,詳細(xì)描述為
其中,θmax為最大的特征值,θmin為最小的特征值,即[0,1]歸一化處理。
3)PCA 降維處理:在工控防御的研究中,工控網(wǎng)內(nèi)流量數(shù)據(jù)通常具備高維數(shù)的特點(diǎn),進(jìn)行降維是工控防御的必要環(huán)節(jié)。一般,有兩種方式可以降維,人工降維和算法降維,為了提高系統(tǒng)的智能化,本文采用主成分分析法(PCA)從多維特征提取能反映數(shù)據(jù)特征的信息主元,累計(jì)貢獻(xiàn)率設(shè)定為90%,詳細(xì)描述見式(6)。
4.3.1 分類攻擊數(shù)據(jù)源檢測(cè)效果
為了研究方便,本次實(shí)驗(yàn)僅區(qū)別數(shù)據(jù)“合法”或“非法”。為了此次試驗(yàn),準(zhǔn)備了ARP 地址欺騙攻擊、拒絕服務(wù)攻擊,功能碼異常三類攻擊數(shù)據(jù)源。實(shí)驗(yàn)數(shù)據(jù)集由正常數(shù)據(jù)樣本與攻擊型異常數(shù)據(jù)組成,將實(shí)驗(yàn)訓(xùn)練集分成兩部分,分別為訓(xùn)練數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集。分別對(duì)這三種攻擊類型的數(shù)據(jù)進(jìn)行檢測(cè),評(píng)價(jià)指標(biāo)為查準(zhǔn)率(Precision Rate),漏報(bào)率(False Negative Rate),誤識(shí)率(False Positive Rate),檢測(cè)結(jié)果如表1所示。
表1 PCA-DNN方法針對(duì)不同攻擊方式的檢測(cè)結(jié)果
通過表1 可以看出,本文提出的融合PCA 與DNN 的檢測(cè)算法具有很好的檢測(cè)效果。當(dāng)攻擊類型為ARP 攻擊和功能碼異常時(shí)均有較高的查準(zhǔn)率,誤報(bào)率和漏報(bào)率都維持在5%以下。對(duì)于拒絕服務(wù)式攻擊數(shù)據(jù)差準(zhǔn)率較低,并存在一定的誤報(bào)率,但是仍然具備較好的檢測(cè)效果。
4.3.2 多優(yōu)化算法對(duì)loss收斂速度比較
在得到深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并完成了對(duì)三種攻擊數(shù)據(jù)源的檢測(cè)后,針對(duì)不同的優(yōu)化算法,圖4 給出了SGD 優(yōu)化算法與本文Adagrad算法對(duì)loss影響的折線趨勢(shì)圖。
圖4 Adagrad與SGD性能對(duì)比
由上圖可知,Adagrad 算法收斂速度更快,在epoch達(dá)到2000時(shí)已將loss收斂至0.1以下,而SGD在epochs達(dá)到3000~4000的階段呈現(xiàn)loss震蕩。此外,Adagrad 算法能將 loss 收斂到最小值 0.0021 顯然比SGD 的0.034 更小,因此本文算法采取了比SGD更優(yōu)的Adagrad優(yōu)化算法。
4.3.3 工控防御算法性能評(píng)價(jià)
工控防御算法包括樸素貝葉斯算法,SVM以及基于粗糙集的算法以及未融合之前的深度神經(jīng)網(wǎng)絡(luò)算法。為了驗(yàn)證本文算法在工控防御反入侵領(lǐng)域存在優(yōu)勢(shì),參考引用文獻(xiàn)中的算法人工智能算法做為參比模型。表2 表示本文算法對(duì)異常數(shù)據(jù)集的檢測(cè)結(jié)果與其他算法在查準(zhǔn)率、誤報(bào)率兩個(gè)方面的比較。
表2 不同機(jī)器學(xué)習(xí)算法對(duì)異常數(shù)據(jù)檢測(cè)性能比較
由表2 可知,SVM 和樸素貝葉斯算法在檢測(cè)異常數(shù)據(jù)時(shí)查準(zhǔn)率較低并且具有較高的誤識(shí)率。未融合之前的深度神經(jīng)網(wǎng)絡(luò)算法由于未進(jìn)行降維,數(shù)據(jù)中存在很多干擾維度,導(dǎo)致較低的查準(zhǔn)率與較高的誤識(shí)率。而本文采用的PCA-DNN 算法查準(zhǔn)率比基于粗糙集的人工免疫算法低,但是在誤識(shí)率表現(xiàn)比粗糙集算法好,此外,兩項(xiàng)指標(biāo)均大大優(yōu)于未融合之前的深度神經(jīng)網(wǎng)絡(luò)算法,由此可以說明,本文算法具有較好的檢測(cè)性能。
本文在全連接型深度神經(jīng)網(wǎng)絡(luò)算法的基礎(chǔ)上進(jìn)行創(chuàng)新,初探了深度學(xué)習(xí)在工業(yè)控制系統(tǒng)信息安全這一新興領(lǐng)域的應(yīng)用。面對(duì)規(guī)模龐大且高維的工控?cái)?shù)據(jù),通過PCA 降維算法進(jìn)行降維,提取信息主要特征。為了保證PCA-DNN 算法檢測(cè)的準(zhǔn)確率,提出了用Adagrad算法進(jìn)行全參數(shù)優(yōu)化,并比較了與常見的SGD優(yōu)化算法的優(yōu)劣,而合法非法的概率結(jié)果用Softmax分類器歸一化之后輸出。文中用自低層設(shè)備同步的數(shù)據(jù)加入攻擊數(shù)據(jù)源對(duì)算法性能進(jìn)行評(píng)測(cè),結(jié)果表明,在定量評(píng)價(jià)中,本文算法指標(biāo)值要優(yōu)于常見的機(jī)器學(xué)習(xí)算法,同時(shí)相比于之前未融合的深度神經(jīng)網(wǎng)絡(luò)算法有較大的提高。