本發(fā)明屬于網(wǎng)絡(luò)空間安全,具體涉及一種基于優(yōu)化dfa正則表達(dá)式匹配的互聯(lián)網(wǎng)流量快速分類(lèi)識(shí)別方法。
背景技術(shù):
1、高速發(fā)展的計(jì)算機(jī)網(wǎng)絡(luò)給我們的生活帶來(lái)了超乎想象的快捷和方便,使我們的生活更加豐富多彩??旖?、方便、即時(shí)、人人參與,儼然已經(jīng)成為現(xiàn)代網(wǎng)絡(luò)的典型特點(diǎn)。然而在網(wǎng)絡(luò)飛速發(fā)展的同時(shí)也產(chǎn)生了很多的問(wèn)題。隨著網(wǎng)絡(luò)化的普及,這種問(wèn)題日益嚴(yán)重。
2、從網(wǎng)絡(luò)安全層面講,各種網(wǎng)絡(luò)攻擊層出不窮,如僵尸網(wǎng)絡(luò)、計(jì)算機(jī)病毒、計(jì)算機(jī)木馬、螺蟲(chóng)、應(yīng)用軟件漏洞、軟件后面等,都嚴(yán)重威脅了計(jì)算機(jī)網(wǎng)絡(luò)服務(wù)和信息安全。網(wǎng)絡(luò)攻擊可能會(huì)造成信息泄露,數(shù)據(jù)丟失,網(wǎng)上支付被盜等損失。對(duì)此網(wǎng)絡(luò)流量分類(lèi)和識(shí)別可以起到很好的防范作用。首先將網(wǎng)絡(luò)流量進(jìn)行分類(lèi)和識(shí)別,限制已知惡意攻擊的網(wǎng)絡(luò)流量,避免造成對(duì)網(wǎng)絡(luò)的入侵。其次建立起正常的網(wǎng)絡(luò)流量模型,通過(guò)對(duì)未知網(wǎng)絡(luò)數(shù)據(jù)與正常網(wǎng)絡(luò)流量模型的對(duì)比,發(fā)現(xiàn)異常,進(jìn)而做到對(duì)異常流量的重點(diǎn)關(guān)注。網(wǎng)絡(luò)流量的分類(lèi)和識(shí)別可以精確實(shí)現(xiàn)入侵檢測(cè)和異常檢測(cè),同時(shí)還可以實(shí)現(xiàn)對(duì)可疑網(wǎng)絡(luò)流量的屏蔽。
3、現(xiàn)有的技術(shù)中,正則表達(dá)式因其強(qiáng)大的表示能力而被廣泛應(yīng)用于網(wǎng)絡(luò)流量的識(shí)別中。它能夠通過(guò)簡(jiǎn)單的表述方式,表達(dá)復(fù)雜的匹配規(guī)則,使得基于載荷的匹配方法具有高度的準(zhǔn)確性。然而,也正是由于正則表達(dá)式的精確匹配特性,使得識(shí)別速度相對(duì)較慢。當(dāng)網(wǎng)絡(luò)流量激增時(shí),傳統(tǒng)的基于正則表達(dá)式的匹配方法往往需要消耗大量的計(jì)算資源,對(duì)機(jī)器性能要求較高,從而限制了其在高速網(wǎng)絡(luò)環(huán)境下的應(yīng)用。
4、傳統(tǒng)的確定性有限狀態(tài)機(jī)(deterministic?finite?state?machine,?dfa)正則表達(dá)式匹配方法雖然能夠確保匹配的正確性,但在處理大量網(wǎng)絡(luò)流量時(shí),由于需要逐個(gè)字符進(jìn)行匹配,效率往往較低。尤其是在面對(duì)復(fù)雜的正則表達(dá)式時(shí),確定性有限狀態(tài)機(jī)方法可能會(huì)產(chǎn)生大量的狀態(tài)轉(zhuǎn)換,進(jìn)一步降低了匹配效率。
技術(shù)實(shí)現(xiàn)思路
1、為解決現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明提出一種基于優(yōu)化dfa正則表達(dá)式匹配的互聯(lián)網(wǎng)流量快速分類(lèi)識(shí)別方法。
2、本發(fā)明的技術(shù)方案如下:
3、一種基于優(yōu)化dfa正則表達(dá)式匹配的互聯(lián)網(wǎng)流量快速分類(lèi)識(shí)別方法,包括:
4、步驟1)采集互聯(lián)網(wǎng)協(xié)議載荷特征字符串,并對(duì)其進(jìn)行預(yù)處理;
5、步驟2)構(gòu)造哈希表、鏈表、確定性有限狀態(tài)機(jī)相結(jié)合的正則表達(dá)式匹配數(shù)據(jù)結(jié)構(gòu);
6、步驟3)根據(jù)所述正則表達(dá)式匹配數(shù)據(jù)結(jié)構(gòu),設(shè)定多入口狀態(tài)的哈希表,存儲(chǔ)已知互聯(lián)網(wǎng)協(xié)議載荷特征字符串對(duì)應(yīng)的正則表達(dá)式的確定性有限狀態(tài)機(jī)信息;
7、步驟4)采用基于哈希驗(yàn)證的確定性有限狀態(tài)機(jī)正則匹配啟動(dòng)機(jī)制,對(duì)捕獲的未知互聯(lián)網(wǎng)流量報(bào)文數(shù)據(jù)進(jìn)行子字符串的抽取,并計(jì)算該子字符串相應(yīng)的哈希值,然后根據(jù)哈希值對(duì)照查找哈希表中的狀態(tài)映射結(jié)果,如果映射到確定性有限狀態(tài)機(jī)的有效狀態(tài),則開(kāi)始啟動(dòng)正則匹配;
8、步驟5)采用快速匹配結(jié)構(gòu)更新與失效回溯機(jī)制,在字符串的匹配過(guò)程中一旦發(fā)現(xiàn)字節(jié)匹配不成功,則立刻判定匹配失敗,將該互聯(lián)網(wǎng)流量報(bào)文數(shù)據(jù)判定為未知互聯(lián)網(wǎng)協(xié)議,并將匹配指針重新回溯到上一次成功啟動(dòng)正則匹配的位置,并將指針繼續(xù)向后移動(dòng);如果與某個(gè)互聯(lián)網(wǎng)協(xié)議的正則表達(dá)式匹配成功,則將該互聯(lián)網(wǎng)流量報(bào)文數(shù)據(jù)判定為相應(yīng)的互聯(lián)網(wǎng)協(xié)議,并對(duì)正則表達(dá)式匹配數(shù)據(jù)結(jié)構(gòu)進(jìn)行更新,將該字符串對(duì)應(yīng)的鏈表元素移動(dòng)到整個(gè)鏈表的第一個(gè)位置。
9、進(jìn)一步地,步驟1)中采集的互聯(lián)網(wǎng)協(xié)議載荷特征字符串包含不同類(lèi)型互聯(lián)網(wǎng)協(xié)議載荷特征字符串,涵蓋傳輸層以上的協(xié)議特征字段格式及其內(nèi)容。
10、進(jìn)一步地,步驟1)中預(yù)處理的過(guò)程包括數(shù)據(jù)清洗、數(shù)據(jù)標(biāo)準(zhǔn)化和數(shù)據(jù)標(biāo)記。
11、進(jìn)一步地,步驟2)中正則表達(dá)式匹配數(shù)據(jù)結(jié)構(gòu)采用了哈希方式實(shí)現(xiàn)對(duì)有限狀態(tài)機(jī)的快速存取,具體構(gòu)造方法包括:
12、步驟2-1)根據(jù)已知互聯(lián)網(wǎng)協(xié)議的正則表達(dá)式進(jìn)行讀取,選取前三個(gè)字節(jié)作為計(jì)算哈希值的數(shù)據(jù)源,哈希表中的每個(gè)表項(xiàng)都分別以鏈表的形式,將哈希值計(jì)算結(jié)果相同的字符串插入到鏈表中;
13、步驟2-2)鏈表中的每個(gè)元素都有一個(gè)指向確定性有限狀態(tài)機(jī)的指針,該確定性有限狀態(tài)機(jī)與一個(gè)或多個(gè)互聯(lián)網(wǎng)協(xié)議關(guān)聯(lián),通過(guò)該指針可以與該確定性狀態(tài)機(jī)進(jìn)行匹配,從而輸出要匹配的字段是某種互聯(lián)網(wǎng)協(xié)議或者與所有互聯(lián)網(wǎng)協(xié)議都不匹配。
14、進(jìn)一步地,步驟3)中確定性有限狀態(tài)機(jī)信息存儲(chǔ)過(guò)程具體包括:
15、步驟3-1)逐個(gè)讀取已知互聯(lián)網(wǎng)協(xié)議載荷特征字符串的正則表達(dá)式,選擇正則表達(dá)式的前三個(gè)字符,并利用哈希算法計(jì)算該字符串的哈希值,在哈希表中找到相應(yīng)的鏈表,為該字符串創(chuàng)建鏈表元素,并插入到鏈表的最后;
16、步驟3-2)對(duì)新插入的鏈表元素創(chuàng)建關(guān)聯(lián)的確定性有限狀態(tài)機(jī),該確定性有限狀態(tài)機(jī)的起始狀態(tài)為匹配字符串成功的狀態(tài),確定性有限狀態(tài)機(jī)其余部分狀態(tài)與狀態(tài)轉(zhuǎn)換的構(gòu)建按照傳統(tǒng)的方式完成。
17、進(jìn)一步地,步驟4)中基于哈希驗(yàn)證的確定性有限狀態(tài)機(jī)正則匹配啟動(dòng)機(jī)制具體包括:
18、步驟4-1)讀取捕獲的未知流量數(shù)據(jù)對(duì)應(yīng)報(bào)文,提取出報(bào)文的應(yīng)用層數(shù)據(jù),然后按照該應(yīng)用層數(shù)據(jù)順序讀取三個(gè)字符,計(jì)算該字符串的哈希值,并在哈希表的相應(yīng)位置判斷是否存在鏈表,如果有鏈表,則逐個(gè)匹配鏈表元素的字符串是否與該字符串相等,如果相等,則開(kāi)始啟動(dòng)正則匹配;
19、步驟4-2)正則匹配啟動(dòng)時(shí),首先轉(zhuǎn)入到鏈表元素所對(duì)應(yīng)的確定性有限狀態(tài)機(jī)起始狀態(tài),并逐個(gè)字符讀取報(bào)文應(yīng)用層數(shù)據(jù)在該字符串之后的數(shù)據(jù)內(nèi)容,然后進(jìn)行對(duì)應(yīng)確定性有限狀態(tài)機(jī)的正則表達(dá)式匹配。
20、進(jìn)一步地,步驟5)中快速匹配結(jié)構(gòu)更新與失效回溯機(jī)制具體包括:
21、步驟5-1)在利用正則表達(dá)式匹配數(shù)據(jù)結(jié)構(gòu)對(duì)互聯(lián)網(wǎng)流量進(jìn)行分類(lèi)時(shí),如果達(dá)到了確定性有限狀態(tài)機(jī)正則匹配啟動(dòng)要求,開(kāi)始逐個(gè)字符讀取應(yīng)用層數(shù)據(jù),并利用對(duì)應(yīng)的確定性有限狀態(tài)機(jī)與數(shù)據(jù)進(jìn)行匹配,如果出現(xiàn)某個(gè)字符匹配不成功,則立刻退出本次匹配過(guò)程,將該互聯(lián)網(wǎng)流量報(bào)文數(shù)據(jù)判定為未知互聯(lián)網(wǎng)協(xié)議,并對(duì)匹配字符串進(jìn)行回溯,回溯的位置為觸發(fā)確定性有限狀態(tài)機(jī)正則匹配啟動(dòng)的字符串位置,然后再逐個(gè)讀取后續(xù)報(bào)文的內(nèi)容;
22、步驟5-2)若應(yīng)用層數(shù)據(jù)與某個(gè)互聯(lián)網(wǎng)協(xié)議的正則表達(dá)式匹配成功,則將該報(bào)文判定為相應(yīng)的互聯(lián)網(wǎng)協(xié)議并對(duì)正則表達(dá)式匹配數(shù)據(jù)結(jié)構(gòu)進(jìn)行更新,將該字符串對(duì)應(yīng)的鏈表元素移動(dòng)到整個(gè)鏈表的第一個(gè)位置。
23、相比于現(xiàn)有技術(shù)本發(fā)明具有如下有益效果:
24、本發(fā)明針對(duì)當(dāng)前互聯(lián)網(wǎng)流量匹配效率低、存儲(chǔ)空間要求高的問(wèn)題,提出了一種基于優(yōu)化dfa正則表達(dá)式匹配的互聯(lián)網(wǎng)流量快速分類(lèi)識(shí)別方法。本發(fā)明首先采集互聯(lián)網(wǎng)協(xié)議載荷特征字符串,對(duì)其進(jìn)行預(yù)處理后,采用正則表達(dá)式匹配數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)相關(guān)特征信息,其次基于哈希驗(yàn)證的確定性有限狀態(tài)機(jī)正則匹配啟動(dòng)機(jī)制快速確定是否開(kāi)始正則匹配,之后借助于快速匹配結(jié)構(gòu)更新與失效回溯機(jī)制提高與后續(xù)流量報(bào)文快速匹配成功的概率,壓縮匹配的次數(shù)。本發(fā)明方法可以在高速的網(wǎng)絡(luò)環(huán)境中,通過(guò)構(gòu)建高效的正則表達(dá)式匹配數(shù)據(jù)結(jié)構(gòu)和匹配算法,來(lái)快速實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)流量的特征匹配,從而完成對(duì)互聯(lián)網(wǎng)流量類(lèi)型的識(shí)別和分類(lèi),有效解決當(dāng)前的方法難以針對(duì)高速網(wǎng)絡(luò)流量進(jìn)行處理的問(wèn)題。