吳華勛
(福建省郵電學校,福建 福州 350008)
計算機網絡極大地改變了人們的生活方式,提升了生產效率。但是由于計算機網絡的覆蓋范圍大、信息交換量高,給計算機網絡安全帶來了隱患[1]。很多黑客以計算機網絡為目標,通過入侵計算機網絡獲取信息謀取私人利益。計算機網絡安全的一項重要內容,就是對黑客的入侵行為進行檢測,即入侵檢測[2]。入侵檢測發現入侵行為即可以調度防御算法,抵御黑客的進一步入侵,保護計算機網絡的安全。入侵檢測算法的核心是字符匹配機制,通過各種規則的設計和匹配算法,找到具有入侵行為特征的程序[3]。該文進一步改進鮑威爾入侵檢測算法,希望建立一種效果更好的入侵檢測算法。
鮑威爾算法的實質是一種字符匹配算法,最早出現于字符比較、字符串相似性判斷的研究工作中。在這個標準字符串中,配置兩個關鍵詞符,一個是“Good”字符,一個是“Bad”字符。然后,將待匹配的字符串和這個標準字符串進行比較。比較的順序,是沿著字符串長度方向上,從左到右的執行。在匹配過程中,通過和關鍵詞符即“Good”字符、“Bad”字符的比較,確定匹配是否成功,匹配結果可以用于是否發生入侵行為的判定。
圖1就給出了有關標準字符串和待匹配字符串匹配過程的描述。
從圖1中可以看出,圖1(a)中用B表示的字符串就是標準字符串,用T表示的字符串就是匹配字符串?!癇ad”字符在字符串中用h表示,關鍵后綴用字符z表示。
圖1(b)表示了標準串中不含有“Bad”字符的情況,匹配過程會將標準字符串直接移動到字符h之后。
圖1(c)表示了標準串中含有“Bad”字符的情況,匹配過程會將標準字符串直接移動到字符h所對應的位置上。

圖1 鮑威爾算法中字符串的匹配過程
關鍵后綴z在鮑威爾算法中扮演了非常重要的角色,用于引導鮑威爾算法完成整個匹配過程。在匹配的執行過程中,字符串之間會出現有一部分匹配、另一部分不匹配的情況。通過記錄匹配位置和匹配長度,可以找到匹配長度最長的字串,進而根據后綴字符z進行移動處理。這里的操作包括以下3種情況:第一種情況,標準字符串中還存在其他子串中也包括關鍵后綴的情況,這時可以通過移動這些子串使其到達和關鍵后綴對齊的位置。這時的具體操作,可以參考圖2(a)。第二種情況,標準字符串中沒有其他子串包括關鍵后綴的情況,這時需要在標準字符串的前綴子串中進行進一步尋找,如果能找到這樣的前綴,使其和關鍵后綴對齊即可。第三種情況,標準字符串中既沒有包括關鍵后綴的其他子串,也找不到包括關鍵后綴的前綴子串,這時只能將整個標準字符串移動到關鍵后綴再后面一個字符的位置,這時的具體操作,可以參考圖2(b)。

圖2 關鍵后綴引導的匹配過程所發生的不同情況
在鮑威爾算法中,采用關鍵后綴完成匹配過程的引導一般通過配置一個數組來實現,這個數組及數組滿足的關系如公式(1)所示。

式中:參數k表示了一個長度,這個長度是和標準字符串相匹配的字符串的最大長度;參數i表示字符串中的位;Datagroup表示字符數組。
根據這個公式所表達的內容,關鍵后綴引導下的鮑威爾算法執行的匹配過程在數學上的形式如式(2)所示:

式中:參數B表示標準字符串;參數i、m表示字符串中的位;參數k表示長度。
通過鮑威爾算法的原理分析可知,鮑威爾算法匹配準確率與最大移動距離直接相關。如果能進一步增大移動距離,不僅會提升匹配準確率,也會減少匹配次數,從而提升鮑威爾算法的執行效率?;诖耍撐膶︴U威爾算法的改進,確定了進一步增大移動距離的思路。
根據鮑威爾算法的兩種策略,首先得到一個初始的最大移動距離MobileLength1。在此基礎上,將匹配字符串中兩個臨近字符T[k+1]和T[k+2]組合匹配,從而可以得到一個新的最大移動距離MobileLength2。通過比較新的最大移動距離和初始最大移動距離,選取匹配算法實際采用的最大移動距離。
該文改進的鮑威爾算法的執行過程一共包括以下5個步驟。
第一個步驟,構建一個新的數組用于計數統計,它主要負責記錄每個字符在標準字符串中一共出現了幾次,這個數組的數學形式如式(3)所示:

式中:參數Btime(char)表示了任意一個字符在標準字符串中出現的次數。根據公式(3)可以看出,如果任意一個字符在標準字符串中出現的次數恰好為1,那么數組就記錄為1;如果任意一個字符在標準字符串中出現的次數大于1,那么數組就記錄為0。
第二個步驟,結合匹配字符串的具體情況,組合T[k+2]和T[k+2]并提取相鄰字符,提取后的結果納入char(1,2),之后將char(1,2)和標準字符串進行相似性比較。
第三個步驟,如果標準字符串中并不含有char(1,2)一樣的子串,再將char(1,2)和標準字符串中的首字符比較一次。如果char(1,2)也不含有標準字符串中的首字符B[1],這時MobileLength2的大小記錄為m+2;如果char(1,2)中的首字符和標準字符串中的首字符B[1]一致,這時MobileLength2的大小也記錄為m+2;如果char(1,2)中的次字符和標準字符串中的首字符B[1]一致,這時MobileLength2的大小記錄為m+1。
第四個步驟,如果標準字符串中存在與char(1,2)一致的子串,同時char(1,2)中沒有和標準字符串首字符B[1]一致的字符,并且Dtime(char)=1,這時MobileLength2的大小記錄為m+2。
第五個步驟,如果標準字符串中存在與char(1,2)一致的子串,同時char(1,2)中沒有和標準字符串首字符B[1]一致的字符,并且Dtime(char)=0,這時MobileLength2的大小和MobileLength1一致。MobileLength1的大小按照公式(4)進行計算:

式中:參數B表示標準字符串;參數i、m表示字符串中的位;參數k表示長度;MobileLength表示移動長度。
該文通過詳細的改進設計,改變了鮑威爾算法的執行過程。為了驗證這種改進處理所達到的效果,該文進一步進行計算機網絡入侵檢測試驗。檢測試驗中所使用的計算機CPU為雙核配置,單核主頻為3.0GHz。操作系統選擇了Windows10.0系統,選擇的計算機網絡入侵檢測系統為斯諾特檢測平臺。
選擇斯諾特檢測平臺的原因在于其突出的開源特征。這種開源的設計,可以便捷地加入自己設計的程序和代碼。在該文的驗證試驗中加入了自己設計的檢測算法,然后從斯諾特平臺的主函數中加以調用,就可以進行入侵檢測試驗和算法性能驗證了。
在試驗過程中,選擇了傳統的鮑威爾算法和該文改進處理后的鮑威爾算法,方便比較改進前后的算法性能。
在試驗過程中,設置了隨機長度的100個字符串,作為鮑威爾算法和改進鮑威爾算法的檢測樣本。這些字符串長度不一,構成也沒有具體的規律。受到篇幅的限制,該文給出了前6個字符串的效果,見表1。

表1 100個隨機字符串中的前6個樣本
為了客觀地評價兩種算法的性能,整個試驗過程進行三項試驗。其中,第一項試驗就是比較鮑威爾算法和改進鮑威爾算法的字符匹配次數,這一結果的示例如圖3所示。
從圖3給出的第一組試驗的比較結果可以明顯看出,在入侵檢測算法的字符比較次數方面,該文提出的改進鮑威爾算法的比較次數明顯低于鮑威爾算法的比較次數。從兩條曲線的對比情況可以看出,隨著字符串長度不斷變長,字符比較次數都有明顯的下降,但該文提出的改進鮑威爾算法下降速度更快。

圖3 第一組試驗的比較結果
進一步比較鮑威爾算法和改進鮑威爾算法的窗口移動次數,這一結果的示例如圖4所示。
從圖4給出的第二組試驗的比較結果可以明顯看出,在入侵檢測算法的窗口移動次數方面,該文提出的改進鮑威爾算法的移動次數明顯低于鮑威爾算法的移動次數。從兩條曲線的對比情況可以看出,隨著字符串長度不斷變長,窗口移動次數都有明顯的下降,但該文提出的改進鮑威爾算法下降速度更快。

圖4 第二組試驗的比較結果
進一步比較鮑威爾算法和改進鮑威爾算法的執行時間,這一結果的示例如圖5所示。
從圖5給出的第三組試驗的比較結果可以明顯看出,在入侵檢測算法的執行時間方面,該文提出的改進鮑威爾算法的執行時間明顯低于鮑威爾算法的執行時間。從5組對比結果可以看出,隨著數據包大小的增加,執行時間都有所增加,但改進鮑威爾算法的執行時間增加的更慢。

圖5 第三組試驗的比較結果
計算機網絡安全是計算機網絡領域中的研究熱點,入侵檢測算法是保護計算機網絡安全的重要手段。該文針對鮑威爾入侵檢測算法進行改進,提出了一種新的入侵檢測算法。在該算法中,通過組合字符的使用提升匹配準確率,通過三種策略調整最大移動長度,使其更符合檢測過程的需要。試驗結果表明,改進鮑威爾算法具有更少的比較和移動次數,算法的執行時間也更低,可以提升計算機網絡入侵檢測的效果。