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

?

基于前綴樹的工控入侵檢測算法

2021-05-13 07:16林幼玲朱林全李揚(yáng)邢鑌陳彥如
現(xiàn)代計(jì)算機(jī) 2021年8期
關(guān)鍵詞:工控哈希內(nèi)存

林幼玲,朱林全,李揚(yáng),邢鑌,4,陳彥如

(1.四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065;2.重慶工業(yè)大數(shù)據(jù)創(chuàng)新中心有限公司,重慶400707;3.西南通信研究所保密通信重點(diǎn)實(shí)驗(yàn)室,成都610041;4.工業(yè)大數(shù)據(jù)應(yīng)用技術(shù)國家工程實(shí)驗(yàn)室,北京100043)

0 引言

隨著信息技術(shù)的發(fā)展及提高,傳統(tǒng)工業(yè)也逐漸向智能生產(chǎn)和智能工廠轉(zhuǎn)型,各種工業(yè)設(shè)備、傳感器等都成為了工業(yè)網(wǎng)絡(luò)中的一部分。這使得原本較為封閉的工業(yè)環(huán)境漸漸被打破,各種業(yè)務(wù)系統(tǒng)相互協(xié)作,數(shù)據(jù)在不同的系統(tǒng)、平臺(tái)間流動(dòng)。然而,由于工業(yè)網(wǎng)絡(luò)中的對(duì)象直接連接到不安全的互聯(lián)網(wǎng)上,設(shè)備很容易遭到攻擊者的入侵。工業(yè)控制系統(tǒng)作為基礎(chǔ)設(shè)施的重要組成部分,一旦遭受網(wǎng)絡(luò)攻擊,會(huì)造成財(cái)產(chǎn)損失、人員傷亡等嚴(yán)重后果。同時(shí),由于工業(yè)網(wǎng)絡(luò)中設(shè)備的資源和能量均有限,無法支持傳統(tǒng)或復(fù)雜的智能決策支持系統(tǒng)的運(yùn)行。因此,使用入侵檢測系統(tǒng)來檢測工業(yè)物聯(lián)網(wǎng)中工業(yè)控制系統(tǒng)的入侵是十分有必要的。

入侵檢測系統(tǒng)主要用于檢查網(wǎng)絡(luò)的狀態(tài)和行為,當(dāng)檢測到入侵時(shí),會(huì)出發(fā)警報(bào)。入侵檢測系統(tǒng)主要有四種類型。第一種是基于簽名的入侵檢測系統(tǒng),它記錄了入侵檢測系統(tǒng)應(yīng)該檢測到的每種類型的攻擊的特征,當(dāng)可疑行為與特征相匹配時(shí),則被識(shí)別為入侵行為。這種方式可以高效地檢測入侵,具有較高的準(zhǔn)確率,但只能檢測已知的入侵。第二種是基于異常的入侵檢測系統(tǒng),其需要先收集系統(tǒng)正常行為的數(shù)據(jù),然后確定一個(gè)閾值,若可疑行為超過該閾值,則發(fā)出警報(bào)。該方式可以檢測未知攻擊,但計(jì)算量大,需要大量的內(nèi)存用于數(shù)據(jù)分析。第三種是基于異常和基于簽名的混合入侵檢測系統(tǒng),它結(jié)合了基于簽名的方式檢測效率高、準(zhǔn)確率高,以及基于異常的方式可以檢測未知入侵的優(yōu)點(diǎn)。第四種是基于規(guī)范的入侵檢測系統(tǒng),它指定通常的系統(tǒng)行為,并根據(jù)指定的行為驗(yàn)證當(dāng)前的行為。

雖然基于簽名的入侵檢測方法具有較高的準(zhǔn)確率、較低的漏報(bào)率,但其需要較大的存儲(chǔ)空間用于存儲(chǔ)入侵的簽名,同時(shí),其匹配效率取決于使用的匹配算法。當(dāng)前已有不少的可用于工控系統(tǒng)的基于簽名的入侵檢測算法,如Suresh 等人提出的基于區(qū)塊鏈和單字符匹配的入侵檢測算法,程冬梅等人提出的基于規(guī)則匹配的分布式工控入侵檢測算法等。

綜上,為了降低入侵簽名庫的存儲(chǔ)空間,提高入侵的檢測效率,本文提出了基于前綴樹的可用于工業(yè)控制系統(tǒng)的入侵檢測算法。

1 理論基礎(chǔ)

前綴樹的本質(zhì)是N 叉樹,也叫字典樹、查找樹或者鍵樹,其最典型的應(yīng)用是統(tǒng)計(jì)和排序字符串,因此常用于搜索引擎的詞頻統(tǒng)計(jì)。

前綴樹的根節(jié)點(diǎn)不存儲(chǔ)字符信息,除根節(jié)點(diǎn)以外的每個(gè)節(jié)點(diǎn)都存儲(chǔ)一個(gè)字符的信息,而每一個(gè)節(jié)點(diǎn)都包含多個(gè)子節(jié)點(diǎn),從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)之間所代表的字符組成了一個(gè)字符串。如圖1 所示,從根節(jié)點(diǎn)開始,選擇最左邊的路徑“a”,然后選擇它的第二個(gè)孩子節(jié)點(diǎn)“d”,接著選擇它的第3 個(gè)孩子節(jié)點(diǎn)“d”,最終得到字符串“add”。從上圖我們可以看出,某一個(gè)節(jié)點(diǎn)的后代節(jié)點(diǎn)所代表的字符串都與該節(jié)點(diǎn)擁有著相同的前綴。例如‘e’節(jié)點(diǎn)的后代所表示的字符串為“l(fā)eaf”和“l(fā)eg”都有著相同的前綴“l(fā)e”。

圖1 前綴樹

前綴樹的具體實(shí)現(xiàn)方式有很多種,如數(shù)組、哈希表、位圖等。若用數(shù)組的方式來實(shí)現(xiàn),假設(shè)只存儲(chǔ)含有字母“a”-“z”的字符串,則可以在每個(gè)樹的節(jié)點(diǎn)中聲明一個(gè)長度為26 的數(shù)組來進(jìn)行存儲(chǔ)其子節(jié)點(diǎn)。若要判斷某個(gè)字符是否存在時(shí),則只需要通過其下標(biāo)進(jìn)行索引。若使用哈希表的方式進(jìn)行實(shí)現(xiàn),則每個(gè)樹的節(jié)點(diǎn)中包含了一個(gè)哈希表,而哈希表中則存儲(chǔ)了該節(jié)點(diǎn)所包含的子節(jié)點(diǎn)。使用數(shù)組的方式進(jìn)行實(shí)現(xiàn)可以十分高效地進(jìn)行查詢,但會(huì)造成空間浪費(fèi);而使用哈希表進(jìn)行實(shí)現(xiàn),則不會(huì)造成空間浪費(fèi),但查詢效率卻會(huì)有所下降。

2 系統(tǒng)設(shè)計(jì)與算法實(shí)現(xiàn)

2.1 系統(tǒng)設(shè)計(jì)

本文所提出的工控入侵檢測系統(tǒng)主要是通過捕獲工控網(wǎng)絡(luò)中的網(wǎng)絡(luò)層數(shù)據(jù),通過對(duì)網(wǎng)絡(luò)層的數(shù)據(jù)進(jìn)行分析,以達(dá)到檢測入侵的目的。該系統(tǒng)的核心為入侵檢測,該系統(tǒng)中的入侵檢測功能主要包括四個(gè)模塊,第一個(gè)是報(bào)文捕獲模塊,該模塊主要負(fù)責(zé)獲取工控網(wǎng)絡(luò)中的網(wǎng)絡(luò)層數(shù)據(jù)。第二個(gè)是報(bào)文提取模塊,該模塊負(fù)責(zé)對(duì)捕獲的報(bào)文中的信息進(jìn)行提取,以用于入侵的檢測。第三個(gè)模塊是入侵檢測模塊,該模塊通過對(duì)前一個(gè)模塊獲得的信息進(jìn)行分析,以判斷該次行為是否為入侵行為。第四個(gè)模塊是響應(yīng)模塊,該模塊根據(jù)入侵檢測模塊的結(jié)果做出響應(yīng),若該次行為為正常行為,則不進(jìn)行任何操作;反之,若該次行為為入侵,則攔截該次請(qǐng)求并觸發(fā)警報(bào)。

圖2 為該入侵檢測系統(tǒng)的結(jié)構(gòu)圖,該系統(tǒng)主要包括展示層、應(yīng)用層、數(shù)據(jù)管理層和入侵檢測層。入侵檢測層是該系統(tǒng)的核心,其能實(shí)時(shí)的檢測入侵。入侵檢測層通過其內(nèi)部預(yù)置的基于前綴樹構(gòu)建的入侵簽名庫,來實(shí)現(xiàn)入侵檢測的目的。數(shù)據(jù)管理層主要用于各種數(shù)據(jù)的存儲(chǔ),包括入侵簽名、報(bào)警信息、系統(tǒng)狀態(tài)信息、系統(tǒng)日志記錄等。應(yīng)用層主要是為管理人員提供服務(wù),如為管理員提供簽名配置功能,包括增加、刪除、修改和查詢簽名;日志查詢或?qū)徲?jì)功能;入侵信息查詢功能等。展示層主要可視化地顯示系統(tǒng)狀態(tài)、報(bào)警日志、日志統(tǒng)計(jì)等信息。

圖2 入侵檢測系統(tǒng)結(jié)構(gòu)圖

2.2 入侵檢測算法

由于需要判別的數(shù)據(jù)包括行為數(shù)據(jù)和內(nèi)容數(shù)據(jù),行為數(shù)據(jù)包括源IP 地址、源端口號(hào)、目的IP 地址、目的端口號(hào)、源端和目的端的設(shè)備地址、源端和目的端的功能代碼,而內(nèi)容數(shù)據(jù)則為數(shù)據(jù)包中的數(shù)據(jù)字段。因此本文中的入侵檢測采用布隆過濾器和前綴樹結(jié)合的方式來實(shí)現(xiàn)入侵檢測。布隆過濾器用于行為的檢測,而前綴樹則用于數(shù)據(jù)包中數(shù)據(jù)字段的檢測。布隆過濾器和前綴樹分別對(duì)對(duì)應(yīng)的數(shù)據(jù)進(jìn)行檢測,若某一部分?jǐn)?shù)據(jù)存在于對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)中,則認(rèn)為該次請(qǐng)求為入侵;反之,若兩部分的數(shù)據(jù)都不存在與對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)中,則認(rèn)為該次請(qǐng)求為正常行為。

本系統(tǒng)中入侵檢測模塊中的核心檢測算法偽代碼如下所示:

輸入:行為參數(shù),內(nèi)容參數(shù)

輸出:是否為入侵?jǐn)?shù)據(jù)

//判斷某個(gè)元素是否存在于布隆過濾器中

Boolean contains(String value,BloomFilter bf){

boolean res=true;

//遍歷k 個(gè)哈希函數(shù)

for(HashFun f:func){

//判斷計(jì)算得到的位置上的值是否都為1

res=res&&bits.get(f.hash(value);

}

return res;

}

//判斷某個(gè)元素是否存在于前綴樹中

Boolean isExist(String value){

TrieNode node=root;

for(int i=0;i <value.length();i++){

char cur=value.charAt(i);

//判斷樹的當(dāng)前節(jié)點(diǎn)是否包含該字符

if(node.containsKey(cur)){

node=node.get(cur);

}else{

return false;

}

}

//判斷當(dāng)前結(jié)點(diǎn)是否為葉子節(jié)點(diǎn)

return node!=null&&node.isEnd();

}

//判斷是否為入侵

Boolean isIntrusion(String value1,String value2){

//value1 表示行為參數(shù)

//value2 表示內(nèi)容參數(shù)

boolean res1=contains(value1);

boolean res2=isExist(value2);

//如果res1 和res2 有一個(gè)為入侵?jǐn)?shù)據(jù),則為入侵

if(res1||res2){

return true;

}

else{

return false;

}

}

本文通過對(duì)已知的基于Modbus 協(xié)議的工控系統(tǒng)中的網(wǎng)絡(luò)層數(shù)據(jù)進(jìn)行分析,整理出了一系列的入侵特征數(shù)據(jù),并將這些數(shù)據(jù)存儲(chǔ)到前綴樹中,以此來構(gòu)建并初始化了工控入侵檢測的簽名數(shù)據(jù)庫。同樣地,出于對(duì)內(nèi)存的考慮,本文以入侵特征來構(gòu)建入侵檢測的簽名數(shù)據(jù)庫,而非以正常的行為特征作為檢測的依據(jù)。主要原因如下,正常行為特征可能遠(yuǎn)多于入侵行為特征,若以正常行為特征來構(gòu)建前綴樹的話,可能會(huì)導(dǎo)致前綴樹過大,從而占用過多的內(nèi)存空間。同時(shí),出于對(duì)內(nèi)存占用情況的考慮,本文中前綴樹節(jié)點(diǎn)的實(shí)現(xiàn)擬采用位圖的方式實(shí)現(xiàn)。位圖相較于數(shù)組的方式,能很大程度上降低內(nèi)存的開銷。而位圖相對(duì)于哈希表的方式,又能在一定程度上提高查詢效率。

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

該實(shí)驗(yàn)的數(shù)據(jù)集為密西西比州立大學(xué)關(guān)鍵基礎(chǔ)設(shè)施保護(hù)中心于2014 年發(fā)布的用于工控系統(tǒng)入侵檢測評(píng)估的數(shù)據(jù)集,該數(shù)據(jù)集中的數(shù)據(jù)是通過兩個(gè)數(shù)據(jù)采集系統(tǒng)獲得的,分別來自于天然氣管道數(shù)據(jù)采集系統(tǒng)和儲(chǔ)水箱數(shù)據(jù)采集系統(tǒng)。本文通過對(duì)天然氣管道的數(shù)據(jù)集進(jìn)行分析后,基于前綴樹構(gòu)建了入侵?jǐn)?shù)據(jù)的簽名特征庫,經(jīng)過多次的實(shí)驗(yàn)與優(yōu)化,在該數(shù)據(jù)集上,該入侵檢測算法的準(zhǔn)確率大約為92%。而檢測準(zhǔn)確率無法達(dá)到100%的原因主要是入侵簽名規(guī)則的提取不夠準(zhǔn)確,未能將所有的入侵簽名規(guī)則都總結(jié)出來。同時(shí),通過實(shí)驗(yàn)對(duì)比得到,基于位圖構(gòu)建的前綴樹相對(duì)于數(shù)組實(shí)現(xiàn)的前綴樹能在很大程度上節(jié)省內(nèi)存空間;而基于位圖構(gòu)建的前綴樹相較于基于哈希表構(gòu)建的前綴樹具有較高的檢測效率。

4 結(jié)語

本文提出了基于前綴樹的工控入侵檢測算法,首先對(duì)前綴樹的理論進(jìn)行了介紹,其次對(duì)本文中提出的入侵檢測系統(tǒng)和入侵算法進(jìn)行了詳細(xì)的描述,最后對(duì)該入侵算法進(jìn)行了多個(gè)維度的性能分析。該入侵檢測算法可以在一定的程度上降低內(nèi)存的使用率,且具有較高的查詢效率,可用于工控網(wǎng)絡(luò)系統(tǒng)中的入侵檢測,具有一定的實(shí)際意義。然而,基于前綴樹的入侵檢測中對(duì)內(nèi)存的使用仍無法達(dá)到最優(yōu),因此在接下來的工作中將從降低內(nèi)存占用入手,使得該入侵檢測算法具有更高的性能。

猜你喜歡
工控哈希內(nèi)存
哈希值處理 功能全面更易用
Windows哈希值處理不犯難
文件哈希值處理一條龍
筆記本內(nèi)存已經(jīng)在漲價(jià)了,但幅度不大,升級(jí)擴(kuò)容無須等待
“春夏秋冬”的內(nèi)存
安全防護(hù)應(yīng)貫穿工控系統(tǒng)全生命周期
全國政協(xié)委員何幫喜:工控網(wǎng)絡(luò)安全防護(hù)應(yīng)納入國家戰(zhàn)略
內(nèi)存搭配DDR4、DDR3L還是DDR3?
巧用哈希數(shù)值傳遞文件
啟明星辰網(wǎng)御星云 進(jìn)軍工控安全領(lǐng)域