專利名稱:基于特征值的多模式匹配算法及硬件實現(xiàn)的制作方法
技術(shù)領(lǐng)域:
這是一項關(guān)于計算機網(wǎng)絡(luò)安全的發(fā)明,可推廣到電子資料檢索等領(lǐng)域,應(yīng)用廣泛。基于特征值的多模式匹配算法主要用在高速網(wǎng)絡(luò)入侵檢測系統(tǒng)中,完成誤用入侵檢測系統(tǒng)中的模式匹配過程。通過實驗驗證,本算法可以滿足高速網(wǎng)絡(luò)誤用入侵檢測的要求。
背景技術(shù):
入侵檢測是對網(wǎng)絡(luò)或系統(tǒng)進行監(jiān)視,發(fā)現(xiàn)各種攻擊的企圖、行為或攻擊結(jié)果,采取相應(yīng)的響應(yīng)措施以保護系統(tǒng)資源的機密性、完整性和可用性。入侵檢測是一種主動的網(wǎng)絡(luò)安全防御措施,它不僅可以通過網(wǎng)絡(luò)監(jiān)控發(fā)現(xiàn)對內(nèi)部攻擊、外部攻擊和誤操作的實時保護,有效的彌補防火墻的不足,而且還能結(jié)合其它網(wǎng)絡(luò)安全產(chǎn)品,對網(wǎng)絡(luò)進行全方位的保護,具有主動性和實時性的特點,是防火墻重要的和有益的補充[1]。根據(jù)入侵檢測系統(tǒng)對數(shù)據(jù)分析方法的不同,可將其分為兩大類異常入侵檢測和誤用入侵檢測。前者是從系統(tǒng)的正常行為特征出發(fā),構(gòu)建一個系統(tǒng)正常輪廓,然后識別那些造成系統(tǒng)行為異常的入侵活動。后者是從入侵行為的特征出發(fā),建立相關(guān)的模式特征庫,然后將收集的數(shù)據(jù)與特征庫中的特征規(guī)則相比較來判斷是否發(fā)生入侵行為[2]。
誤用入侵檢測是當(dāng)前的主流,根據(jù)公安部計算機信息系統(tǒng)安全產(chǎn)品質(zhì)量監(jiān)督檢驗中心的報告,國內(nèi)送檢的入侵檢測產(chǎn)品中95%屬于基于模式匹配的特征檢測產(chǎn)品[3]。誤用入侵檢測的核心是模式庫的組織和模式匹配算法。隨著網(wǎng)絡(luò)速度的迅速提高,模式庫的日益增大,誤用入侵檢測暴露出其致命缺陷檢測速率太低。在一個滿負(fù)荷的100M以太網(wǎng)上,將不得不丟掉30%-75%的網(wǎng)絡(luò)數(shù)據(jù)包[4]。這將漏掉對許多可疑數(shù)據(jù)包的檢測,嚴(yán)重影響了系統(tǒng)檢測的準(zhǔn)確性。在入侵檢測系統(tǒng)中,字符串匹配消耗了大量的系統(tǒng)資源(主要是CPU資源),嚴(yán)重制約著系統(tǒng)檢測速率的提高[5]。采用現(xiàn)行匹配算法的入侵檢測系統(tǒng)很難在高速網(wǎng)中有效地檢測,即使能完成檢測也要付出很高的成本代價。
當(dāng)前常用的匹配算法主要有KMP算法、BM算法、AC算法等。這些算法都有一個共同特點一次性準(zhǔn)確匹配,即只需要一次匹配便可判斷網(wǎng)絡(luò)數(shù)據(jù)包中是否包含模式字符串,但這一過程消耗了大量的系統(tǒng)資源。它們的共同思想是在網(wǎng)絡(luò)數(shù)據(jù)包中對模式字符串直接進行匹配,若不匹配則根據(jù)某種啟發(fā)式策略跳過一定量字符后接著匹配。隨著檢測效率的提高,其算法復(fù)雜度也急劇上升,根本無法由硬件來實現(xiàn)。
發(fā)明內(nèi)容
1基于特征值匹配算法的思想在實際網(wǎng)絡(luò)中,入侵?jǐn)?shù)據(jù)包只占網(wǎng)絡(luò)總流量的極少一部分。系統(tǒng)資源的消耗主要不是在對入侵包的檢測,而是在對正常數(shù)據(jù)包的窮舉匹配。針對這一實際情況,本文提出并用硬件實現(xiàn)了基于特征值的匹配算法。
為了表述的方便,先做以下假設(shè)設(shè)P為模式字符串,長度為m,P中的字符依次記為P1、P2、……、Pm。T為從網(wǎng)絡(luò)中獲取的數(shù)據(jù)包中的字符串,稱為網(wǎng)絡(luò)字符串,也就是需要進行匹配的文本,長度為n,T中的字符依次記為T1、T2……Tn。網(wǎng)絡(luò)字符子串{T2、T3、T4…Tm+1}是由子串分組{T1、T2、T3…Tm}在網(wǎng)絡(luò)字符串中往右平移一個字符而來。不含入侵特征字符串的數(shù)據(jù)包稱為正常數(shù)據(jù)包,否則稱為入侵?jǐn)?shù)據(jù)包。
定義1特征值一個字符串經(jīng)過某種簡單運算(易于硬件實現(xiàn))而得到的一個值,這個值稱為該字符串的特征值,用E表示。字符串和特征值是一種多對一的關(guān)系,即一個字符串有且僅有一個特征值,而多個字符串以極小概率對應(yīng)于同一特征值。
基于特征值匹配算法的基本思想是將網(wǎng)絡(luò)字符串的特征值與等長模式字符串的特征值相比較,若不等則兩個字符串肯定不匹配;若相等則兩個字符串以極大概率匹配,需要進行第二次匹配確認(rèn)。簡單地說就是采取兩次匹配的方法,首先過濾掉大量肯定不匹配的正常網(wǎng)絡(luò)字符串,接著對可疑網(wǎng)絡(luò)字符串進行第二次準(zhǔn)確匹配。第一次匹配算法要求簡單,能由硬件直接實現(xiàn)以減輕CPU的負(fù)擔(dān),而且要能過濾掉絕大多數(shù)正常數(shù)據(jù)包。首次匹配是關(guān)鍵所在,這里主要詳細(xì)探討基于特征值的第一次匹配算法。
設(shè)模式字符串P={P1、P2、P3……Pm},長度為m,特征值為E。網(wǎng)絡(luò)字符串T={T1、T2、……Tn},長度為n。首先求出網(wǎng)絡(luò)字符串中長為m的子串{T1、T2、…Tm}的特征值,然后與模式字符串特征值E相比較,若相等則進行第二次匹配確認(rèn);若不相等,則該網(wǎng)絡(luò)字符子串肯定和模式字符串不匹配。該網(wǎng)絡(luò)字符子串往右平移一個字符變成{T2、T3、…Tm+1},再與模式字符串進行匹配。平移后的網(wǎng)絡(luò)字符子串特征值可以由平移前的特征值經(jīng)過簡單運算得到,這一過程完全由硬件電路實現(xiàn)。
為了提高系統(tǒng)的并行度,可以采用分組匹配的方法。在網(wǎng)絡(luò)字符串中匹配長為m的模式字符串時,先把網(wǎng)絡(luò)字符串分解成 個子串,每個子串的長度為m,然后用硬件同時計算各子串的特征值,把計算得到的特征值與模式字符串的特征值相比較,若相等則進行第二次匹配;否則同時平移一個字符繼續(xù)匹配,總共只需平移m次便可完成整個匹配計算過程。
2特征值的計算方法網(wǎng)絡(luò)字符子串特征值的計算方法與模式字符串特征值的計算方法完全一致。其計算方法有多種,但它們應(yīng)符合以下幾點要求1、計算簡單,能由硬件電路直接實現(xiàn),無需CPU干預(yù)。
2、能過濾掉大量的正常數(shù)據(jù)包,也就是說,和同一特征值對應(yīng)的字符串應(yīng)較少。
3、平移后的特征值可以由平移前的特征值經(jīng)過簡單運算得出,以減少特征值的計算次數(shù)。
定義2位向量在一個字符串中,取每個字符ASCII碼相同位上的比特按字符順序構(gòu)成的二進制串稱為位向量。任何一個長為m的字符串有且僅有8個長為m的位向量。例如字符串“GOOD”中各個字符的ASCII碼為{01000111、01001111、01001111、01000100},取每個字符的最低位構(gòu)成的位向量為{1110}。該字符串共有8個長為4的位向量,分別是{0000、1111、0000、0000、0110、1111、1110、1110}。根據(jù)位向量求出的特征值稱為位特征值,用e1標(biāo)志。8個位特征值組成該字符串的特征值E,E=[e7、e6、e5、e4、e3、e2、e1、e0]。
定義3過濾率第一次匹配過濾的正常數(shù)據(jù)量與網(wǎng)絡(luò)總流量的比值稱為過濾率,一般要求第一次匹配的過濾率越高越好。當(dāng)網(wǎng)絡(luò)中沒有入侵包時,BM等準(zhǔn)確匹配算法的過濾率是100%。
2.1異或求值法字符串中各個字符通過異或運算即可得到該字符串的異或特征值。不失一般性地設(shè)字符串為{S1、S2、……Sm},則該字符串的特征值E={S1S2S3……Sm},共8個比特。如模式字符串“CMD”的特征值E={CMD}={0101 1001}。
按所有代碼出現(xiàn)的概率相同計算,則位向量中“1”的個數(shù)為奇數(shù)和偶數(shù)的概率是相同的,即一個位特征值的過濾率50%。各個位特征值之間相互獨立,8個位特征值的過濾率為1-(1/2)8=99.61%。也就是說需要第二次匹配的可疑數(shù)據(jù)包是總流量的0.39%。實驗結(jié)果表明其平均過濾率為99.69%。
在匹配過程中,若網(wǎng)絡(luò)字符子串特的征值與模式字符串的特征值不相等時,網(wǎng)絡(luò)字符子串需要平移。平移前的網(wǎng)絡(luò)字符子串特征值與移入和移出的字符異或便可得出平移后的特征值。例如,在字符串“POWER”中匹配模式字符串“PING”時,首先求出子串“POWE”的特征值E1=[POWE]=
。它與“PING”的特征值
不匹配,子串往右平移一個字符,變成“OWER”。該子串的特征值由[E1PR]得出,不需要再進行3次異或運算。當(dāng)匹配長為m模式字符串時,第一次求長為m的網(wǎng)絡(luò)字符子串特征值需要進行(m-1)次異或運算,以后平移時只需2次異或運算。
硬件實現(xiàn)是采用簡單的異或電路,如
圖1所示。E中保存著長為m的網(wǎng)絡(luò)字符子串的特征值,其初始值為0。Dm~D0為移位寄存器,網(wǎng)絡(luò)字符串依次從Dm輸入,經(jīng)過異或電路便可在寄存器E中得到長為m的網(wǎng)絡(luò)字符子串特征值。
2.2模3求值法設(shè)一位向量為{bm、bm-1、……、b1},取一適當(dāng)?shù)恼麛?shù)r把它變成表達(dá)式bmrm-1+bm-2rm-3+……+b1(1)再選取一個恰當(dāng)?shù)恼麛?shù)M(通常為大于或等于max(bi)(1≤i≤m)的最小素數(shù)),在模M的剩余類環(huán)Zm中,令
e就是該位向量的位特征值.
為了提高過濾率,應(yīng)使底數(shù)r在Zm單位群的階盡量大。若M為素數(shù),則應(yīng)使r在Zm*中的階為(M-1),即r為循環(huán)群Zm*的生成元[6]。對于二進制的位向量,一般選M=3,r=2;當(dāng)選M=2,r=2時就是異或求值算法。
當(dāng)e為串的校驗碼時,1位錯肯定能查出,能查出2位錯的概率為
能查出3位或3位以上錯的概率為
根據(jù)上面校驗碼定理,在二進制的位向量中,令M=3,r=2,模式字符串的長度為m則當(dāng)m=1時,位特征值相同而位向量不同的概率為0,其過濾率為100%。
當(dāng)m=2時,位特征值相同而位向量不同的概率為
等于1/2,退化為異或運算的過濾能力。
當(dāng)m≥3時,位特征值相同而位向量不同的概率為
等于1/3。按每個串出現(xiàn)的概率相同計算,一個位特征值能過濾掉2/3的正常數(shù)據(jù)包。各個位特征值之間相互獨立,由8個位特征值組成的字符串特征值的過濾率為1-(1/3)8=99.985%。需要第二次匹配的可疑數(shù)據(jù)量僅占總流量的0.015%。
2i(i>=0)在模3剩余類環(huán)中的值分別是1、2、1、2……,所以在求位特征值e1時,只要把位向量中的各位乘以其對應(yīng)的權(quán)再按模3相加即可。如位向量[111]的位特征值為(1*1+1*2+1*1)mod(3)=01。當(dāng)位的權(quán)為2時,把該位左移一位,當(dāng)權(quán)為1時不需移位。
為了便于硬件直接實現(xiàn),首先在每個字符ASCII碼的各比特位前加0,把每個字符擴展為16個比特;然后第奇數(shù)個字符不動,第偶數(shù)個字符左移一位,完成加權(quán)處理;接著兩個比特一組,按模3相加。
例如,求“CMD”的模3特征值的具體過程如下“CMD”中個字符的ASCII碼分別為{0100 0011、0101 0111、0100 1101},擴展成16位后為
加權(quán)移位后(“M”左移一位,“C、D”不變),2個比特一組,按模3相加得
即字符串“CMD”的特征值為
。
當(dāng)網(wǎng)絡(luò)字符子串特征值與模式字符串特征值不相等時,網(wǎng)絡(luò)字符子串需要平移,進行下一個子串的匹配。平移前的網(wǎng)絡(luò)字符子串特征值與移入字符的加權(quán)擴展值按模3相加,再按模3減去移出字符的加權(quán)擴展值便可得到平移后的特征值。按模3減去一個字符的加權(quán)擴展值等于按模3加上該字符的加權(quán)擴展值的反碼。在匹配長為m的模式字符串中,開始求網(wǎng)絡(luò)字符子串特征值需要(m-1)次模3加法運算,以后只需2次模3加法運算。
當(dāng)特征值不匹配時,平移奇數(shù)次后的網(wǎng)絡(luò)字符子串特征值是按公式e,i=Σj=1mbjrj---(3)]]>計算得出,需要轉(zhuǎn)換成公式(2)計算的特征值。在模3計算中(Σj=1mbjrj+Σj=1mbjrj-1)=Σj=1mbjrj-1(1+r)=0,]]>所以取平移奇數(shù)次后特征值的模3補碼便可完成轉(zhuǎn)換。模3補碼可以通過交換位特征值中2個比特的位置來實現(xiàn),
的模3補碼是[10],[10]的模3補碼是
,
的模3補碼是
。
模3求值硬件電路實現(xiàn)如圖2所示。網(wǎng)絡(luò)字符串經(jīng)過擴展加權(quán)電路后,依次輸入移位寄存器Dm~D0中,再經(jīng)過模3加法電路得到長為m的網(wǎng)絡(luò)子串特征值,存入寄存器E內(nèi)。平移偶數(shù)次的模3特征值直接經(jīng)過選擇電路輸出,平移奇數(shù)次的模3特征值先經(jīng)過模3補碼電路求補,再由選擇電路輸出。
例如,模式字符串“CMD”的特征值E=
,要匹配的網(wǎng)絡(luò)字符串是“HELL”。為了使網(wǎng)絡(luò)字符串和模式字符串加權(quán)的順序一致,將網(wǎng)絡(luò)字符串從右至左加權(quán)、分組,各字母的權(quán)分別是
H[E LL]權(quán)2121先計算“ELL”的特征值E1=
,發(fā)現(xiàn)和模式特征值E不匹配。網(wǎng)絡(luò)字符子串左移一位,計算“HEL”的特征值E2。E2=(E1+“2H”+“~L”)mod(3)=
,取E2的模3補碼為
;然后與模式特征值E再次進行比較,發(fā)現(xiàn)不匹配便知在字符串“HELL”中不包含模式串“CMD”,匹配結(jié)束。
模數(shù)M也可取其他素數(shù),當(dāng)M=5時字符串中各字符的加權(quán)值變?yōu)?、2、4、3、1、2、4、3、……。相應(yīng)算法的過濾率為1-(1/5)8=99.99974%,需要進行第二次匹配的數(shù)據(jù)量僅占總流量的0.00026%。隨著M的增大,其過濾率相應(yīng)也提高,但硬件電路實現(xiàn)也會更困難,成本也會增加。
3基于特征值的多模式匹配算法Aho及Corasick于1975年提出一種基于有限狀態(tài)自動機的多模式匹配算法(AC算法),該算法允許同時并行搜索多個字符串。搜索的時間為0(n),建立自動機的時間與模式字符串的長度成線性關(guān)系。現(xiàn)在常用的算法是AC算法和BM算法相結(jié)合而形成的AC_BM算法,它是將不同的規(guī)則放置在一棵模式樹上,然后對這棵模式樹采用BM算法進行檢索[7]。
基于特征值的多模式匹配算法的思想是將模式庫中的規(guī)則按其長度分組,在組內(nèi)再按特征值排序并建立索引,組內(nèi)特征值相同的規(guī)則通過鏈表的形式鏈接在同一特征值索引上。通過第一次匹配,找到可疑字符串對應(yīng)的特征值索引,接著進行第二次準(zhǔn)確匹配,將可疑字符串與規(guī)則進行比較。
3.1模式庫的組織整個模式庫構(gòu)成一個樹形結(jié)構(gòu),模式字符串的長度用L表示(假定Max(L)=m)。初始化時間與模式庫的大小成線性關(guān)系。整個模式庫的組織如圖3所示。特征值的匹配由第一次匹配電路完成,下面的規(guī)則匹配由第二次匹配來實現(xiàn)。
3.2多模式特征值計算的硬件實現(xiàn)多模式特征值計算電路主要是計算不同長度網(wǎng)絡(luò)字符子串的特征值。整個計算過程完全由硬件自主完成,無需CPU干預(yù)。
3.2.1異或硬件計算電路為了加快計算速度,采用移位寄存器組和異或電路組同時求出不同長度的網(wǎng)絡(luò)字符子串特征值。其電路實現(xiàn)如圖4所示(為了表達(dá)的簡便,設(shè)規(guī)則庫中模式字符串的最大長度為7)。
設(shè)輸入的網(wǎng)絡(luò)字符串T={“abcdefghijklmn”},依次輸入移位寄存器R7~R0,所有寄存器中的初始值都為0。
第一個節(jié)拍時,字符‘a(chǎn)’移入D7,經(jīng)過異或電路后存入R7內(nèi)。
第二個節(jié)拍時,字符‘b’移入D7與R7中的‘a(chǎn)’異或后再存入R7內(nèi);字符‘a(chǎn)’移入D6,經(jīng)過異或電路后存入R6內(nèi)。
第7個節(jié)拍時,D7~D1中保存著“gfedcba”;R7中保存著{gfedcba}的值,R6中保存著{fedcba}的值,其余類推。
第8個節(jié)拍時,字符‘a(chǎn)’移入D0再返回來與各特征值異或,清除‘a(chǎn)’字符;此時R7中保存著{hgfedcb}的值,R6中保存著{gfedcb}的值。也就是R7中總是保存著長度為7的網(wǎng)絡(luò)字符子串特征值,R6中總是保存著長度為6的網(wǎng)絡(luò)字符子串特征值,其余類推。
每移入一個字符便可同時求出各種長度的網(wǎng)絡(luò)字符子串異或特征值,再將特征值與模式庫中相同長度的模式字符串特征值進行匹配;即R7中的網(wǎng)絡(luò)字符子串特征值與模式庫中L=7的分支匹配,R6的特征值與模式庫中L=6的分支匹配等等。
3.2.2模3硬件計算電路異或電路的運算速度很快,但它的過濾率不是很高,需要第二次匹配的可疑網(wǎng)絡(luò)字符串仍然較多。為了適應(yīng)于更高速網(wǎng)絡(luò)的要求,應(yīng)該采用過濾率更高的算法,如模3、模5、模7算法等。
模3算法的硬件電路實現(xiàn)如圖5所示。(為了簡便,設(shè)模式串的最大長度為5,所有寄存器初始值為0)。
輸入的字符串首先經(jīng)過加權(quán)擴展,每個字符變成16個比特。然后輸入移位寄存器,當(dāng)?shù)竭_(dá)D0時再經(jīng)過取非電路返回來與各特征值按模3相加,清除該字符。
例如,輸入網(wǎng)絡(luò)字符串T={“abcdef},各字符的ASCII碼為{61F、62F、63F、64F、65F、66F},擴展移位后為{2802F、1404F、280AF、1420F、2822F、1414F},依次輸入D5~D0。
第一個節(jié)拍時,2802F移入D5經(jīng)過模3加電路存入R5內(nèi)。
第二個節(jié)拍時,1404F移入D5與R5中的2802F分組按模3加后等于0006F,再存入R7內(nèi);2802F移入D4,經(jīng)過模3加電路后存入R4內(nèi)。
第5個節(jié)拍時,D1~D5中保存著{2802F、1404F、280AF、1420F、2822F、1414F}; R5中保存著字符串{abcde}的模3特征值,R6中保存著{abcd}的模3特征值,其余類推。
第8個節(jié)拍時,字符’a’的加權(quán)擴展值移入D0后取非,再返回來與各特征值按模3加,清除’a’字符;此時R5中保存著{bcdef}按公式(3)計算的模3特征值,經(jīng)過求補電路得到按公式(2)計算的模3特征值。R4中保存著{bcde}按公式(3)計算的模3特征值,經(jīng)過求補電路輸出按公式(2)計算的模3特征值。其余類推。
以后每過一個節(jié)拍便可同時得出各種長度網(wǎng)絡(luò)字符串的模3特征值,再與模式庫中相同長度的模式字符串特征值相匹配。
3.3匹配過程的處理為了提高匹配速度,減少在模式庫中搜索特征值的耗時,采用直接地址映射的方法來完成對模式特征值的查找過程。在模式庫初始化時,給每一種長度的規(guī)則樹支分配256字節(jié)(或字)的存儲空間,并把第一個單元的地址保存在對應(yīng)的基址寄存器中,表示這一長度模式字符串特征值在內(nèi)存中的起始地址。每個存儲單元中保存著一個指針,該指針指向模式特征值等于其偏移地址的規(guī)則。如果沒有模式特征值和其偏移地址相等,則指針為空;若有多個規(guī)則的特征值和其偏移地址相等,則其它規(guī)則依次鏈接在第一個規(guī)則后面,形成一個鏈表結(jié)構(gòu)。當(dāng)特征值計算電路得出某一長度的網(wǎng)絡(luò)字符子串特征值后,直接找到偏移地址為其特征值的存儲單元。若該存儲單元指針為空,則表明該字符子串在模式庫中不匹配;否則和指針指向的規(guī)則進行第二次匹配。在Snort規(guī)則庫中抽出100個規(guī)則形成模式庫結(jié)構(gòu),指針非空的存儲單元占總存儲空間的2.07%,對應(yīng)于同一存儲單元的規(guī)則占0.19%,隨著模式庫的增大,指針非空的存儲單元也會增多。
整個匹配電路如圖6所示。輸入的網(wǎng)絡(luò)字符串經(jīng)過多模式特征值計算電路后,得到各種長度子串的特征值。以子串的特征值作為偏移地址,加上與該子串等長的模式串基地址形成一個實際物理地址。若該物理地址存儲單元中的指針為空,表明該網(wǎng)絡(luò)字符子串在模式庫中不匹配;若存儲單元指針非空,則將網(wǎng)絡(luò)字符子串與指針指向的規(guī)則進行第二次匹配確認(rèn)??梢钥闯觯瑥木W(wǎng)絡(luò)字符子串特征值的計算至找到對應(yīng)長度模式特征值的時間非常短,基本可以忽略。
如果采用模5的方法計算字符串特征值,其過濾率可達(dá)99.99974%,需要第二次匹配的數(shù)據(jù)量非常少,僅占網(wǎng)絡(luò)總流量的0.00026%。但硬件實現(xiàn)比較復(fù)雜,數(shù)據(jù)在硬件上的延時也會有所增加而成為處理的瓶頸,需要多個硬件電路并行處理來解決。
4對比實驗為了測試算法的實際性能,在網(wǎng)絡(luò)中隨機捕獲150M數(shù)據(jù),模式字符串來自Snort入侵檢測系統(tǒng)中的規(guī)則庫,對基于特征值的多模式匹配算法,統(tǒng)計了程序模擬的執(zhí)行間、異或硬件實現(xiàn)處理時間和模3硬件實現(xiàn)處理時間。從特征值的計算至找到對應(yīng)長度模式特征值的時間非常短,算法的耗時主要是在第二次匹配上。
具體時間如表1所示表1處理時間(單位秒)
實驗條件500M Intel CPU,256M RAM,Win2000。
表中數(shù)據(jù)表明,BM算法的處理時間隨著模式串的增多而線性增長,比其他算法耗時多很多。AC算法在多模式匹配中非常有效,但仍然無法滿足高速網(wǎng)入侵檢測的要求。異或硬件實現(xiàn)電路基本可以滿足100M網(wǎng)絡(luò)入侵檢測的要求;模3硬件實現(xiàn)電路可以滿足1000M網(wǎng)絡(luò)的入侵檢測要求;對更高速網(wǎng)絡(luò)可以采用模5、模7等硬件電路。
通過圖例,可以更清楚地看出不同算法的處理時間。由于BM算法耗時太多,在圖中就省去了。具體比較如圖7所示。
隨著模式庫中規(guī)則的增多,各種算法的處理時間也都會有所增加,但特征值算法對其不是很敏感。模式庫的增大對第一次匹配耗時根本沒有影響,僅僅第二次匹配的時間稍有增加。
5結(jié)語基于特征值匹配算法的實質(zhì)是采用二次匹配的思想,完全改變了現(xiàn)行匹配算法的思想。把處理速度的瓶頸轉(zhuǎn)移到由硬件來實現(xiàn)的第一次匹配,過濾掉大量正常數(shù)據(jù)包,接著對小量可疑數(shù)據(jù)包進行第二次準(zhǔn)確匹配。最好第一次和第二次匹配都由硬件來實現(xiàn),以減輕系統(tǒng)的負(fù)擔(dān),提高運行的效率。求特征值的方法有多種,如求和計算或循環(huán)冗余計算等,但它們應(yīng)盡量滿足先前給出的求特征值條件。
參考文獻(xiàn)[1]張然等,入侵檢測技術(shù)研究綜述,小型微型計算機系統(tǒng),2003,7(24)1113。
戴云,網(wǎng)絡(luò)售票系統(tǒng)若干安全問題研究(博士后論文),西南交通大學(xué),2002,07。
喻非等,入侵檢測系統(tǒng)中特征匹配的改進,計算機工程與應(yīng)用,2003,2932。
奚嘉迪,后浪推前浪-新老IDS技術(shù)的比較,http//www.ccw.com.cn/htm/produ/topic/。
張邈等,高效串匹配型入侵檢測系統(tǒng),計算機工程,2003.11,29(19)105。
丘維聲,一類檢錯編碼方案,北京大學(xué)學(xué)報(自然科學(xué)版),2001,37(1)1-5[7]Coit C J,Staniford S,McAlerney J.Towards faster pattern matching for intrusion detection or exceeding thespeed of snort[C].InDARPA Infromation Surcicability Conference and Exposition,200具體實施方式
本算法主要是采用兩次匹配的方法和硬件實現(xiàn)來減輕系統(tǒng)CPU的負(fù)擔(dān),使誤用入侵檢測系統(tǒng)能在高速網(wǎng)絡(luò)中有效地運行。整個匹配電路可以做成插件形式,插在系統(tǒng)主板的PCI插槽內(nèi),也可以集成在網(wǎng)卡或其它電路板上。第一次匹配中特征值的計算過程由移位寄存器組、異或電路組(或模3計算電路組)和寄存器組共同完成。其中移位寄存器組直接接收高速網(wǎng)卡傳來的數(shù)據(jù)包,經(jīng)過異或電路組(或模3計算電路組)計算出不同長度的網(wǎng)絡(luò)字符子串的特征值,然后保存在寄存器組中。當(dāng)一套計算電路無法滿足要求時,可以由多套計算電路同時并行處理。規(guī)則模式庫通過初始化處理后保存在EEPROM中,直接和計算電路相連,以避免模式庫的頻繁初始化處理和數(shù)據(jù)傳輸延遲。當(dāng)模式庫需要更新時再往EEPROM中添加規(guī)則。第二次匹配過程可以由CPU承擔(dān),也可由硬件比較電路實現(xiàn)。當(dāng)完成整個匹配過程后發(fā)現(xiàn)入侵?jǐn)?shù)據(jù)包時,將數(shù)據(jù)包和其對應(yīng)的規(guī)則代碼一起移交給系統(tǒng)進行進一步的分析和報警處理。
為了進一步提高處理速度,該算法可以與協(xié)議解析方法配合使用。將不同協(xié)議類型的網(wǎng)絡(luò)數(shù)據(jù)包分配給不同的模式匹配電路處理,各匹配電路的EEPROM中保存著對應(yīng)協(xié)議類型的匹配規(guī)則。這一過程牽涉到負(fù)載均衡的問題,但它能有效地提高處理速度,而且便于系統(tǒng)的下一步處理。
權(quán)利要求
1.基于特征值的多模式匹配算法及硬件實現(xiàn),采用兩次匹配的方法第一次匹配過濾掉大量正常的數(shù)據(jù)包,第二次對可疑數(shù)據(jù)包進行進一步的匹配確認(rèn);第一次匹配完全由硬件實現(xiàn),第二次匹配可以由硬件實現(xiàn)也可由CPU承擔(dān)。
2.根據(jù)權(quán)利要求1所述的基于特征值的多模式匹配算法及硬件實現(xiàn),其特征是多模式特征值計算電路是由移位寄存器組、異或計算電路組或模3、模5等計算電路組和特征值寄存器組構(gòu)成;各種長度字符串的特征值由多模式計算電路同時計算得出,不需要CPU干預(yù)。
3.根據(jù)權(quán)利要求1所述的基于特征值的多模式匹配算法及硬件實現(xiàn),其特征是將模式庫中的模式字符串按其長度分組,給每一種長度的模式串分配256字節(jié)(或字)的存儲空間,并把第一個單元的地址保存在對應(yīng)的基址寄存器中,表示這一長度模式字符串特征值在內(nèi)存中的起始地址;每個存儲單元中保存著一個指針,該指針指向模式特征值等于其偏移地址的模式字符串;如果沒有模式字符串特征值和其偏移地址相等,則指針為空;若有多個模式串特征值和其偏移地址相等,則其它模式串依次鏈接在第一個模式串后面,形成一個鏈表結(jié)構(gòu)。
4.根據(jù)權(quán)利要求1所述的基于特征值的多模式匹配算法及硬件實現(xiàn),其特征是特征值的匹配過程是采用直接地址映射的方法,字符串經(jīng)過多模式特征值計算電路后得到其特征值,以字符串特征值作為偏移地址,加上與該字符串等長的模式字符串基地址形成一個實際物理地址;若該物理地址存儲單元中的指針為空,則字符串在模式庫中不匹配;否則將字符串與指針指向的模式串進行第二次匹配確認(rèn)。
全文摘要
本文提出并用硬件實現(xiàn)了基于特征值的多模式匹配算法。字符串特征值是由異或電路或模3、模5等硬件電路直接計算得出(如圖1、2、4、5所示),無需CPU干預(yù)。匹配過程是先按模式字符串的長度和模式字符串的特征值把模式庫組織成樹形結(jié)構(gòu)(如圖3所示),然后采用地址直接映射的方法,來完成對模式特征值的搜索匹配過程(如圖6所示)?;谔卣髦灯ヅ渌惴ǖ膶嵸|(zhì)是采用兩次匹配的思想,第一次匹配過濾掉大量正常的數(shù)據(jù)包,第二次對可疑數(shù)據(jù)包進行進一步的匹配確認(rèn)。第一次匹配完全由硬件實現(xiàn),第二次匹配可以由硬件實現(xiàn)也可由CPU承擔(dān)。當(dāng)由CPU處理時,需要第二次匹配確認(rèn)的數(shù)據(jù)量不到網(wǎng)絡(luò)總流量的0.4%,甚至更低。通過實驗驗證,本算法可以滿足高速網(wǎng)絡(luò)誤用入侵檢測的要求。
文檔編號H04L9/28GK1691581SQ20041002314
公開日2005年11月2日 申請日期2004年4月26日 優(yōu)先權(quán)日2004年4月26日
發(fā)明者彭詩力 申請人:彭詩力