国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于OCSVM的PLC網(wǎng)絡(luò)異常檢測(cè)技術(shù)

2019-03-14 07:17何世敏劉嘉勇鄭榮鋒
現(xiàn)代計(jì)算機(jī) 2019年4期
關(guān)鍵詞:數(shù)據(jù)包準(zhǔn)確率向量

何世敏,劉嘉勇,鄭榮鋒

(1.四川大學(xué)電子信息學(xué)院,成都 610065;2.四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,成都 610065)

0 引言

由于在實(shí)際的工業(yè)控制系統(tǒng)中,采集到的正常流量樣本數(shù)遠(yuǎn)多于異常流量的樣本數(shù)。所以采用傳統(tǒng)的支持向量機(jī)算法對(duì)正負(fù)樣本分類(lèi)的準(zhǔn)確率會(huì)較低。而單類(lèi)支持向量機(jī)算法利用一種類(lèi)型的樣本數(shù)據(jù)就可以訓(xùn)練出檢測(cè)模型,并且也不需要對(duì)數(shù)據(jù)類(lèi)型進(jìn)行標(biāo)記。該算法是通過(guò)核函數(shù)把輸入的工控流量數(shù)據(jù)映射到高維特征空間,并在此空間中找出最大超平面來(lái)分類(lèi)出異常和正常類(lèi)型[1-3]。文獻(xiàn)[1]提出了一種基于單類(lèi)支持向量機(jī)和遞歸K領(lǐng)域方法結(jié)合的異常檢測(cè)技術(shù),通過(guò)不斷調(diào)節(jié)單類(lèi)支持向量機(jī)算法中核函數(shù)的參數(shù)g,算法本身參數(shù)C和設(shè)置K領(lǐng)域的閾值來(lái)提高檢測(cè)異常流量的準(zhǔn)確率。文獻(xiàn)[2]中,作者通過(guò)使用單類(lèi)支持向量機(jī)和增量學(xué)習(xí)的方法分類(lèi)正常和異常的數(shù)據(jù)類(lèi)型。文獻(xiàn)[3]中,作者通過(guò)在單類(lèi)支持向量機(jī)模型和K-means方法來(lái)檢測(cè)工控網(wǎng)絡(luò)流量。這些檢測(cè)方法都能夠分類(lèi)出異常類(lèi)型,但是對(duì)單類(lèi)支持向量機(jī)中核函數(shù)的參數(shù)g和算法的本身參數(shù)C的優(yōu)化,傳統(tǒng)的方法是采用網(wǎng)格搜索法。該方法雖然具有全局的搜索能力,但是耗時(shí)多,效率低[4]。此外,在實(shí)際的工業(yè)操作過(guò)程中,由于獲得的樣本量大,數(shù)據(jù)維數(shù)過(guò)多,會(huì)使得訓(xùn)練模型和異常檢測(cè)時(shí)間復(fù)雜度高[2-3]。

本文針對(duì)西門(mén)子S7協(xié)議的通信特征和減少模型計(jì)算時(shí)間消耗的問(wèn)題,采用單類(lèi)支持向量機(jī)的算法建立異常檢測(cè)模型,同時(shí)結(jié)合了主成分分析法對(duì)數(shù)據(jù)的特征進(jìn)行降維,減少了模型的訓(xùn)練和檢測(cè)時(shí)間。

1 特征選擇

在傳統(tǒng)的針對(duì)網(wǎng)絡(luò)層和傳輸層的網(wǎng)絡(luò)異常檢測(cè)研究中,一般選擇源端口、目的端口、源IP、目的IP、IP包總長(zhǎng)度、TCP總長(zhǎng)度、窗口流量大小作為能夠代表原數(shù)據(jù)包的特征[5]。針對(duì)在實(shí)際情況中,對(duì)工控網(wǎng)絡(luò)應(yīng)用層的攻擊手段較多的特點(diǎn),本文除此之外,還對(duì)應(yīng)用層的S7協(xié)議進(jìn)行了特征選擇。

S7協(xié)議的通信端口是102端口,工作在TPKT協(xié)議和COTP協(xié)議之上。該協(xié)議被IP頭、TCP頭、TPKT頭和COTP頭封裝。其數(shù)據(jù)包結(jié)構(gòu)如圖1所示。

圖1 S7協(xié)議數(shù)據(jù)包結(jié)構(gòu)

根據(jù)文獻(xiàn)[12]對(duì)S7協(xié)議的分析,Header部分是由Protocol Id、ROSCRT、Protocol Data Unit ReferenceData、Length、Parameter length字段組成,其中除了Protocol Data Unit Reference字段的值會(huì)隨著請(qǐng)求與響應(yīng)命令的發(fā)送增加外,其他字段的值都是固定不變的。因此本文把Protocol Data Unit Reference字段作為特征之一。

Parameters部分由Parameters set和Parameter Data字段組成。在Parameters set中Function字段代表的是PLC的操作,而在一般的攻擊行為中,都會(huì)通過(guò)改變Function的值來(lái)改變對(duì)PLC的操作,因此,F(xiàn)unction字段也作為本文的特征之一。

Parameter Data字段定位PLC中的內(nèi)存信息[6],該字段結(jié)構(gòu)如圖2所示。為了提取出內(nèi)存地址,字節(jié)大小,本文把Parameter Data整個(gè)字段作為特征。

圖2 Parameter Data結(jié)構(gòu)

Data部分中存儲(chǔ)的是PLC操作的數(shù)值,本文把如圖3所示的字段作為特征。因?yàn)槲闹性诋惓z測(cè)實(shí)驗(yàn)中,為了獲得異常流量數(shù)據(jù),會(huì)在實(shí)驗(yàn)平臺(tái)上運(yùn)行多種攻擊腳本,其中一種就是偽造圖中所示字段數(shù)值來(lái)改變發(fā)電機(jī)轉(zhuǎn)速。

圖3 Data字段

2 特征降維

假設(shè)采集到的PLC和上位機(jī)之間的網(wǎng)絡(luò)流量中數(shù)據(jù)包有m個(gè),經(jīng)過(guò)特征選擇之后,每個(gè)數(shù)據(jù)包中共有n=19個(gè)特征代表原始樣本的信息,用矩陣形式表達(dá)如下:

在特征選擇的過(guò)程中選擇的有效特征越多,越能體現(xiàn)原始樣本的信息。但是在實(shí)際的工控系統(tǒng)中,由于樣本量大和矩陣M的維多數(shù)的原因,會(huì)造成訓(xùn)練模型和檢測(cè)異常的時(shí)間消耗過(guò)多的問(wèn)題。為此,本文在對(duì)數(shù)據(jù)包特征選擇之后,還采用主成分分析法對(duì)這些提取出的特征進(jìn)降維處理。該算法流程圖如圖4所示。

圖4 主成分分析法流程

步驟一:在經(jīng)過(guò)特征選擇之后,確定S7協(xié)議數(shù)據(jù)包的n=19個(gè)特征,用并將特征從網(wǎng)絡(luò)層,傳輸層和應(yīng)用提取出。

步驟二:將n個(gè)特征的值歸一化。歸一化處理是因?yàn)樘崛〕龅奶卣魍蔷哂胁煌牧烤V單位和大小,這樣的數(shù)據(jù)如果經(jīng)過(guò)降維處理,會(huì)使得結(jié)果不在同一數(shù)據(jù)范圍類(lèi),不具有可比性。本文采用的方法是首先求得每個(gè)數(shù)據(jù)包的n個(gè)特征的均值 μ和標(biāo)準(zhǔn)差δ,然后根據(jù)公式ni'=(ni-μ)/δ計(jì)算歸一化后的特征值。其中ni代表的是第i個(gè)特征值,用ni'代替原來(lái)的ni。

步驟三:把經(jīng)過(guò)歸一化處理的特征排列成矩陣M。 M=(N1,N2,N3…Nm),其中 Ni=(n1',n2'…nn')T。

步驟四:計(jì)算矩陣M1。根據(jù)主成分分析法的原理,在變換過(guò)程中需要對(duì)矩陣M進(jìn)行均值化。目的是為了減少那些遠(yuǎn)離平均值的點(diǎn)帶來(lái)的降維誤差,同時(shí)也是為了對(duì)歸一化做進(jìn)一步的規(guī)范[7]。均值化的第一步是對(duì)M中的樣本求均值向量,然后用M中的樣本減去均值向量得到新的矩陣M1。

步驟五:計(jì)算矩陣K。首先計(jì)算特征M1矩陣的協(xié)方差矩陣,然后求出協(xié)方差矩陣的特征向量和特征向量對(duì)應(yīng)的特征值,最后將特征向量按照特征值的大小降序排列,得到矩陣K。

步驟六:計(jì)算矩陣Y。去均值化之后,將樣本中的n個(gè)特征經(jīng)過(guò)投影映射,過(guò)程如下:

所得的結(jié)果Y就是由新特征組成的矩陣,其中yij=(ki1n1j'+ki2n2j'+…kinnnj')。

3 單類(lèi)支持向量機(jī)模型構(gòu)建

3.1 模型構(gòu)建方法

單類(lèi)支持向量機(jī)的本質(zhì)是把原點(diǎn)看成異于訓(xùn)練樣本類(lèi)型的點(diǎn),通過(guò)非線性映射關(guān)系,把在低維空間中的數(shù)據(jù)映射到高維空間中,并在這個(gè)空間中找出一個(gè)超平面,使得原點(diǎn)到這個(gè)平面的距離盡可能地大[9-10]。該算法流程如圖5所示。

圖5 單類(lèi)支持向量機(jī)模型

步驟一:在PLC和上位機(jī)之間采集樣本流量數(shù)據(jù)。

步驟二:確定樣本的特征值,個(gè)數(shù)為n,并提取出這些特征值,用主成分分析法對(duì)特征值降維,降維過(guò)后的特征值個(gè)數(shù)為k。

步驟三:求解雙二次規(guī)劃模型。把經(jīng)過(guò)前兩步處理之后的樣本用X={(xi),i=1,2,3…m}表示,其中每個(gè)xi都有k個(gè)特征。根據(jù)單類(lèi)支持向量機(jī)的原理,為了使得樣本能夠通過(guò)非線性映射關(guān)系σ(xi)投射到高維空間中,先在高維空間中構(gòu)造一個(gè)超平面為Wσ-ρ=0。其中W是超平面的法向量,ρ為偏置量。根據(jù)文獻(xiàn)[2]可知,映射過(guò)程如下所示:

式中xi就是輸入的樣本。εi是一個(gè)懲罰系數(shù),系數(shù)C=1/(μm),μ是一個(gè)權(quán)衡系數(shù),m是樣本的個(gè)數(shù)。為簡(jiǎn)化問(wèn)題,單類(lèi)支持向量機(jī)在映射過(guò)程中,引入了拉格朗日乘子式,將求解超平面的問(wèn)題轉(zhuǎn)換為二次規(guī)劃問(wèn)題[1]:

其中核函數(shù)是有多項(xiàng)式核函數(shù),線性核函數(shù),徑向基核函數(shù)。根據(jù)文獻(xiàn)[3]的實(shí)驗(yàn)證明,選擇徑向基核函數(shù)(exp(-g‖xi-xj‖2))的單類(lèi)支持向量機(jī)的檢測(cè)準(zhǔn)確率更高。

步驟四:確定參數(shù)C和g。

步驟五:在確定最優(yōu)參數(shù)g與C之后,求得雙二次規(guī)劃模型的解為{W*,ρ*,ε*},利用求得的解求出單類(lèi)支持向量機(jī)的決策函數(shù)為 f(x)=sgn((W*)δ-ρ*)。該決策函數(shù)中sgn是一個(gè)符號(hào)函數(shù),取值只有1或者-1,如果輸入樣本之后,結(jié)果 f(xi)=-1,那么這個(gè)樣本就被標(biāo)記為異常類(lèi)型輸出,如果結(jié)果 f(xi)=1,這個(gè)樣本就被標(biāo)記為正常類(lèi)型輸出。

3.2 基于人工蜂群算法的模型參數(shù)尋優(yōu)

單類(lèi)支持向量機(jī)的兩個(gè)參數(shù)g和C影響著算法的準(zhǔn)確率,為了獲得最優(yōu)參數(shù),本文采用人工蜂群的方法。該方法與用粒子群求解最優(yōu)參數(shù)方法相比,具有控制參數(shù)少的優(yōu)點(diǎn)。

人工蜂群的方法是通過(guò)模仿蜜蜂采蜜的過(guò)程,把求解單類(lèi)支持向量機(jī)最優(yōu)參數(shù)的問(wèn)題轉(zhuǎn)換為蜜蜂確定食物源位置問(wèn)題[11-12]。該方法中的蜜蜂是分為采蜜蜂,觀察蜂和偵察蜂3種。人工蜂群算法將采蜜蜂和觀察蜂在食物源附近搜索新食物源以及偵察蜂在可行解空間中的隨機(jī)探索定義為一次迭代的過(guò)程,每次迭代所獲得的解質(zhì)量都比上一次迭代獲得的解質(zhì)量要高,當(dāng)?shù)螖?shù)接近無(wú)窮時(shí),算法將以概率1收斂于全局的最優(yōu)解[11]。

用人工蜂群確定最優(yōu)參數(shù)g與C的方法如下:

以崗位能力點(diǎn)為標(biāo)準(zhǔn),以項(xiàng)目為載體的過(guò)程教學(xué)模式具有系列考核指標(biāo),學(xué)習(xí)效果評(píng)價(jià)管理網(wǎng)絡(luò)信息化便于教師記錄過(guò)程信息與考核結(jié)果,避免了傳統(tǒng)紙質(zhì)記錄的不便與管理的繁瑣。通過(guò)信息平臺(tái)向?qū)W生實(shí)時(shí)公開(kāi)過(guò)程考核情況,以使學(xué)生了解自身的學(xué)習(xí)狀況,及時(shí)制定彌補(bǔ)措施,公開(kāi)透明的評(píng)價(jià)方式也利于形成好的學(xué)習(xí)風(fēng)氣。

步驟一:初始化參數(shù)。根據(jù)人工蜂群算法的原理,本文用核函數(shù)參數(shù)g和算法本身參數(shù)C組成的二維向量(g,C)來(lái)代表一個(gè)食物源的位置解。利用文獻(xiàn)[17]的結(jié)果,把循環(huán)次數(shù)設(shè)置50,最大迭代次數(shù)設(shè)置為1000,g和C的范圍設(shè)置為(0,1),原始食物源的位置解個(gè)數(shù)設(shè)為N=20,用Xi=(g,C)i,i=1,2,...,N表示。其中(g,C)i是(0,1)之間隨機(jī)生成的。

步驟二:在原始解Xi的領(lǐng)域附近搜索新的解。由于Xi是由參數(shù)g和C組成的二維向量,所以搜索之后的新解也是g和C的二維向量。根據(jù)人工蜂群算法原理 ,新 解 vi2=Xi+random(0,1)×(Xi-Xk)。 其 中i,k=(1,2,3,…,20),且 i≠k 。

步驟四:比較vi2與Xi適應(yīng)度的大小。如果vi2適應(yīng)度大于Xi適應(yīng)度,用vi2替代Xi。其中i=1,2,…,20。

步驟五:重新確定新解。根據(jù)步驟三中替換后的結(jié)果,計(jì)算結(jié)果中每個(gè)解被選擇的概率i,2,3,…,20,并根據(jù)概率Pi重新選擇解。把得到的新結(jié)果代入步驟二的公式中,重復(fù)步驟三四五,并記為一次循環(huán)。

步驟六:如果某些解經(jīng)過(guò)循環(huán)50次,適應(yīng)度沒(méi)有得到提高,就把對(duì)應(yīng)的解放棄,并且用公式xi=(g,C)min+rand(0,1)×((g,C)max-(g,C)min)隨機(jī)生成新解替代原來(lái)放棄的解。

步驟七:計(jì)算迭代的次數(shù)。記步驟二至步驟六為一次迭代過(guò)程。若迭代的次數(shù)大于1000,輸出的解就是最優(yōu)解,也就是最優(yōu)參數(shù)g和C,若小于則返回步驟二。

4 實(shí)驗(yàn)與結(jié)果分析

4.1 模型訓(xùn)練與檢測(cè)

實(shí)驗(yàn)代碼所用工具:Python 2.7,Python scapy模塊提取特征和scikit-learn機(jī)器學(xué)習(xí)庫(kù)。實(shí)驗(yàn)采集的訓(xùn)練樣本數(shù)據(jù)是工控實(shí)驗(yàn)平臺(tái)中S7-300PLC和上位機(jī)之間的正常網(wǎng)絡(luò)流量數(shù)據(jù)。本文針對(duì)數(shù)據(jù)集中的單個(gè)數(shù)據(jù)包選擇的部分特征如表1所示。

圖6 實(shí)驗(yàn)平臺(tái)示意圖

表1 數(shù)據(jù)包特征選擇

在經(jīng)過(guò)特征提取之后,采用主成分分析法降維,結(jié)果如圖7所示。其中橫軸代表的是降維后的矩陣中的特征,也就是主成分的分量,縱軸代表的是各個(gè)主成分的累計(jì)方差貢獻(xiàn)率。由圖可以看出前11個(gè)主成分的累計(jì)方差的貢獻(xiàn)率已經(jīng)達(dá)到了95%,所以可以把前11個(gè)主成分作為替代之前選擇的特征數(shù)據(jù)。

圖7 累計(jì)方差貢獻(xiàn)率

為了獲得測(cè)試數(shù)據(jù)集,本文在西門(mén)子實(shí)驗(yàn)平臺(tái)上運(yùn)行了三種攻擊腳本:

(1)中間人攻擊:在實(shí)驗(yàn)平臺(tái)的正常工作過(guò)程中,操作員站對(duì)發(fā)電機(jī)轉(zhuǎn)速的控制是通過(guò)S7-300PLC的。當(dāng)發(fā)電機(jī)的轉(zhuǎn)速達(dá)到一定的閾值后,實(shí)驗(yàn)平臺(tái)的蜂鳴器會(huì)產(chǎn)生警報(bào)。中間人攻擊是改變了操作員站與PLC之間的數(shù)據(jù),使得轉(zhuǎn)速超過(guò)閾值之后,蜂鳴器不工作[6],數(shù)據(jù)集記為T(mén)1。

(2)轉(zhuǎn)數(shù)邏輯序列攻擊:在正常工作流程中,PLC和現(xiàn)場(chǎng)控制的發(fā)電機(jī)工作產(chǎn)生的數(shù)據(jù)包的序列都是有邏輯順序的,通過(guò)修改數(shù)據(jù)包的次序來(lái)改變PLC和發(fā)電機(jī)的工作邏輯,數(shù)據(jù)集記為T(mén)2。

(3)轉(zhuǎn)速值改變攻擊:手動(dòng)修改操作員站發(fā)送給PLC的數(shù)據(jù)來(lái)改變發(fā)電機(jī)的轉(zhuǎn)速,數(shù)據(jù)集記為T(mén)3。

4.2 實(shí)驗(yàn)結(jié)果分析

為了能夠更加準(zhǔn)確的評(píng)估模型的性能,本文結(jié)合了分類(lèi)的準(zhǔn)確率和F1-score兩個(gè)評(píng)價(jià)指標(biāo)。分準(zhǔn)確率和F1-score基于混淆矩陣計(jì)算,其中混淆矩陣如表2所示。

表2 分類(lèi)器混淆矩陣

其中,TP表示實(shí)際和預(yù)測(cè)結(jié)果都是正樣本類(lèi)型的樣本數(shù)。FN表示的是實(shí)際是正樣本但是預(yù)測(cè)結(jié)果是負(fù)樣本的樣本數(shù)。FP表示的是實(shí)際是負(fù)樣本但預(yù)測(cè)結(jié)果是正樣本的樣本數(shù)。TN表示的是實(shí)際和預(yù)測(cè)結(jié)果都是負(fù)樣本的樣本數(shù)。

分類(lèi)準(zhǔn)確率計(jì)算如公式(5)所示:

分類(lèi)的精確度是表明測(cè)試集中被預(yù)測(cè)的正樣本中為實(shí)際正樣本的比例,召回率是表明被模型預(yù)測(cè)的正樣本占總正樣本的比例。由于精確度和召回率相互制約的,所以F1-score是精確度和召回率的調(diào)和值[13],計(jì)算如過(guò)程如式(6-8)所示:

在模型訓(xùn)練階段,用人工蜂群方法求得最優(yōu)參數(shù)g=0.0123,C=0.462。本文對(duì)比了傳統(tǒng)的OCSVM的準(zhǔn)確率和計(jì)算時(shí)間,結(jié)果如圖8和圖9所示。相比于傳統(tǒng)的OCSVM,本文的方法在降維之后依然保持著傳統(tǒng)OCSVM異常檢測(cè)的準(zhǔn)確率,在數(shù)據(jù)集個(gè)數(shù)大于2000個(gè)時(shí),傳統(tǒng)的OCSVM算法和本文采用的主成分分析結(jié)合OCSVM算法模型訓(xùn)練的分類(lèi)準(zhǔn)確率都達(dá)到90%以上。但是在模型的訓(xùn)練時(shí)間對(duì)比中,傳統(tǒng)的OCSVM算法消耗的平均時(shí)間比主成分分析結(jié)合OCSVM算法消耗的平均時(shí)間多46.45秒。

圖8 訓(xùn)練模型的準(zhǔn)確率

圖9 模型訓(xùn)練時(shí)間對(duì)比

在使用相同用測(cè)試集T1,T2,T3的情況下,本文對(duì)比了傳統(tǒng)OCSVM算法的分類(lèi)準(zhǔn)確率,F(xiàn)1-score和模型檢測(cè)時(shí)間,如表3所示。

表3 異常檢測(cè)結(jié)果對(duì)比

實(shí)驗(yàn)采集的三種攻擊腳本下的數(shù)據(jù)集T1,T2,T3數(shù)據(jù)包總數(shù)分別為9158,4993,2246。使用主成分分析結(jié)合單類(lèi)支持向量機(jī)的方法在分類(lèi)準(zhǔn)確率Acc和F1-score上都保持著傳統(tǒng)支持向量機(jī)的90%以上的檢測(cè)性能。但是在檢測(cè)時(shí)間消耗方面,使用主成分分析結(jié)合單類(lèi)支持向量機(jī)檢測(cè)數(shù)據(jù)集T1,T2,T3比使用傳統(tǒng)支持向量機(jī)檢測(cè)分別少119秒、82秒和41秒。

5 結(jié)語(yǔ)

本文主要是以西門(mén)子S7協(xié)議為研究對(duì)象,針對(duì)實(shí)際情況下工控網(wǎng)絡(luò)異常數(shù)據(jù)少,維數(shù)多的情況,在使用主成分分析法降維之后,采用單類(lèi)支持向量機(jī)的方法來(lái)進(jìn)行模型訓(xùn)練和檢準(zhǔn)精確度的同時(shí),能有效減少模型運(yùn)算時(shí)間的消耗。

猜你喜歡
數(shù)據(jù)包準(zhǔn)確率向量
向量的分解
二維隱蔽時(shí)間信道構(gòu)建的研究*
乳腺超聲檢查診斷乳腺腫瘤的特異度及準(zhǔn)確率分析
多層螺旋CT技術(shù)診斷急性闌尾炎的效果及準(zhǔn)確率分析
不同序列磁共振成像診斷脊柱損傷的臨床準(zhǔn)確率比較探討
聚焦“向量與三角”創(chuàng)新題
民用飛機(jī)飛行模擬機(jī)數(shù)據(jù)包試飛任務(wù)優(yōu)化結(jié)合方法研究
頸椎病患者使用X線平片和CT影像診斷的臨床準(zhǔn)確率比照觀察
C#串口高效可靠的接收方案設(shè)計(jì)
向量垂直在解析幾何中的應(yīng)用
永康市| 西乡县| 万州区| 青浦区| 余姚市| 同仁县| 元阳县| 汝阳县| 龙海市| 翼城县| 当雄县| 耿马| 郧西县| 岫岩| 额济纳旗| 德兴市| 罗田县| 察隅县| 金华市| 安新县| 玛纳斯县| 朔州市| 广河县| 阿拉尔市| 根河市| 青河县| 宾阳县| 德兴市| 隆德县| 罗山县| 工布江达县| 光泽县| 安乡县| 保定市| 项城市| 兴义市| 鸡东县| 荥阳市| 福建省| 扎兰屯市| 秦皇岛市|