- 相關推薦
入侵檢測模式匹配算法的研究與改進
1 BM算法研究
1977年Boyer和Moore提出了一種全新的算法,即BM算法。它的特點在于匹配過程中,模式從左向右移動,但字符比較卻從右向左進行。其基本算法思想是:(1)匹配從右至左進行。(2)若匹配失敗發生在Pi≠Ti且Ti不出現在模式P中,則將模式右移直到Pi位于匹配失敗位置T的右邊第一位(即Ti+1位),若Ti在P中有若干地方出現,則選擇j=max{k|Pk=Ti}即通過Skip函數計算文本字符Ti失配時模式向右移動的距離,也稱壞字符啟發。(3)若模式后面k位與文本T中一致的部分有一部分在P中其他地方出現,則可以將P向右移動,直接使這部分對齊,且要求這一部分盡可能大,Shift函數通過對已經匹配部分的考查決定模式向右移動的距離,也稱好后綴啟發。
實例分析:
第1次匹配:
Example
here is a simple example
第2次匹配(壞字符啟發):
Example
here is a simple example
第3次匹配(壞字符啟發):
Example
here is a simple example
第4次匹配(好后綴啟發):
Example
here is a simple example
第5次匹配(壞字符啟發):
Example
here is a simple example
BM算法預處理時間復雜度為O(m+s),空間復雜度為O(s),s是與P, T相關的有限字符集長度,搜索階段時間復雜度為O(mn)。最壞情況下要進行3n次比較,最好情況下的時間復雜度為O(n/m)。
2 改進BM匹配算法研究
2.1 改進的意義
綜合分析會發現雖然BM算法考慮較全面,但它使用了兩個數組,預處理時間開銷較大,于是在BM算法基礎上我們對其進行了簡化,使得算法更簡單、高效,提出了一種改進的BM算法。通過實驗表明改進的模式匹配算法能減少比較次數,有效地提高了匹配效率。
2.2 改進的原理
在BM算法匹配過程中,常出現模式的一部分后綴與文本匹配,而模式的前綴卻不匹配,在這種情況下,就進行了一些不必要的比較。因此在BMGJ算法中,我們在對模式串與文本字符串進行匹配時采用從模式兩端向中間位置交替的匹配順序,模式匹配先從模式最右端Pm開始進行。若Pm匹配不成功,則通過Skip函數計算出模式向右移動的距離,這與BM算法中壞字符啟發思想相同;若Pm匹配成功,則比較模式P1與文本中相應的字符。若P1匹配不成功,則考查文本中與模式中Pm下一個字符對齊的字符,若該字符不出現在模式中,則模式可以向右移動m + 1個位置,若該字符出現在模式中,則計算其Skip函數,然后將模式向右移動相應的長度;若P1匹配成功,則按上述方法依次對Pm-1,P2,Pm-2,P3,…進行匹配,依此類推,直到匹配過程完成。實例分析:
第1次匹配:
Example
here is a simple example
第2次匹配:
Example
here is a simple example
第3次匹配(傳統BM算法匹配中,此遍比較需要從右端比較5次才可以找到一個壞字符,但對于改進后的算法,只比較兩次就可以找到一個壞字符):
Example
here is a simple example
第4次匹配:
Example
here is a simple example
第5次匹配:
Example
here is a simple example
在上例中,我們可以看出用傳統的BM算法匹配共進行了4次移動15次比較,用改進的BM算法匹配共進行了4次移動12次比較,匹配次數減少。
改進后的BM算法的預處理時間復雜度為O(m+s),空間復雜度為O(s),搜索階段時間復雜度為O(mn)。該算法在比較右端字符失配時采用BM壞字符啟發的思想,在比較了左端字符失配時采用對文本中與模式最右端對齊的下一個字符進行考查的方法,使得大多數情況下具有比BM算法更大的右移長度,從而有更好的平均性能。
2.3 改進的實驗分析
我們所做的實驗軟件環境主要是:采用的操作系統是MicroSoft Windows XP Professional(Service Pack2),使用JBuilder2006編譯工具,所用JDK為jdk1.6。
為了對各算法的性能進行比較次數和比較用時的測試,我們隨機地選取了一段純英文自然語T文本和模式串P,在同一臺計算機上用不同算法進行3萬、5萬、10萬次循環匹配,分別統計各算法循環匹配所進行的字符比較次數和總消耗的時間。
文本串:T=One day one pig went to a bar and the bar tender asked what can I get for you today and the pig said five beers. He drank up all the beer and then he asked were the bathroom was the bar tender said straight down the hall to the left. Then three more pigs came in and the bar tender asked what can I get you today.
模式串:P= I get you today.
測試結果下表1所示:
經過多次匹配實驗,結果顯示改進后的BM算法進行模式匹配時字符比較次數、匹配時間均少于原BM算法,匹配效率有所提高。
3 結語
隨著網絡規模的不斷擴大和入侵手段的不斷更新,對入侵檢測也提出了更高的要求。目前,BM算法還是入侵檢測系統中主要使用的模式匹配方法,而它本身存在的一些問題使其還是有改進的余地,本文對其進行了改進,并且通過實驗結果分析得出改進以后在匹配效率的提高。以后我們還可以在檢測引擎中結合其他智能化的檢測方法,如協議分析、神經網絡、遺傳算法等,這將是我們下一步研究的重點。
【入侵檢測模式匹配算法的研究與改進】相關文章:
關于LZW算法的改進研究03-25
一種改進的粒子濾波算法的研究03-07
話音激活檢測(VAD)算法的研究11-22
V-BLAST簡化檢測算法的研究03-07
自適應道路檢測算法研究03-07
一種改進的無線鏈路調度算法研究03-07
V-BLAST檢測算法的研究及性能分析03-07