一種基于關(guān)鍵字詞頻特征的多模式匹配方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,具體涉及一種基于關(guān)鍵字詞頻特征的多模式匹配方法。
【背景技術(shù)】
[0002]入侵檢測系統(tǒng)(IDS,Intrus1n Detect1n System)是一種對網(wǎng)絡(luò)傳輸進(jìn)行即時監(jiān)視,在發(fā)現(xiàn)可疑傳輸時發(fā)出警報或者采取主動反應(yīng)措施的網(wǎng)絡(luò)安全設(shè)備。它與其他網(wǎng)絡(luò)安全設(shè)備的不同之處便在于,IDS是一種積極主動的安全防護(hù)技術(shù)。IDS以信息來源的不同和檢測方法的差異分為幾類:根據(jù)信息來源可分為基于主機(jī)IDS和基于網(wǎng)絡(luò)的IDS,根據(jù)檢測方法又可分為異常入侵檢測和誤用入侵檢測。
[0003]誤用入侵檢測系統(tǒng)中常用的檢測方法有:模式匹配法、專家系統(tǒng)法、基于狀態(tài)轉(zhuǎn)移分析的檢測法。其中模式匹配法常常被用于入侵檢測技術(shù)中,它通過把收集到的信息與網(wǎng)絡(luò)入侵和系統(tǒng)誤用模式數(shù)據(jù)庫中的已知信息進(jìn)行比較,從而對違背安全策略的行為進(jìn)行發(fā)現(xiàn)。模式匹配法可以顯著地減少系統(tǒng)負(fù)擔(dān),有較高的檢測率和準(zhǔn)確率。
[0004]Aho-Corasick算法在1975年產(chǎn)生于貝爾實(shí)驗(yàn)室,是著名的多模匹配算法之一。Aho-Corasick算法對應(yīng)的數(shù)據(jù)結(jié)構(gòu)是Aho-Corasick自動機(jī),簡稱AC自動機(jī)。AC算法的特點(diǎn)是可以保證對于給定的長度為η的文本,和模式集合P{pi, p2,...pm},在0(n)時間復(fù)雜度內(nèi),找到文本中的所有目標(biāo)模式,而與模式集合的規(guī)模m無關(guān)。
[0005]但是AC算法在模式匹配的過程中預(yù)處理時間較長,并且因其需維護(hù)goto表、fail表和output表導(dǎo)致內(nèi)存消耗巨大,算法性能仍然有待提高。
【發(fā)明內(nèi)容】
[0006]為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于關(guān)鍵字詞頻特征的多模式匹配方法,它能解決現(xiàn)有技術(shù)在模式匹配的過程中預(yù)處理時間過長及占用較大內(nèi)存等問題。
[0007]本發(fā)明采用的基于關(guān)鍵字詞頻特征的多模式匹配方法,首先從已知的信息數(shù)據(jù)庫中提取關(guān)鍵字并統(tǒng)計(jì)出現(xiàn)頻率作為其詞頻信息,其次采用構(gòu)造含有關(guān)鍵字詞頻信息的二叉樹完成其中的模式串匹配,在字符匹配過程中若出現(xiàn)字符不相等,則與該不匹配字符所在節(jié)點(diǎn)的兄弟節(jié)點(diǎn)所含字符進(jìn)行匹配。
[0008]本發(fā)明利用信息來源的模式的關(guān)鍵字詞頻信息構(gòu)造基于字典樹的二叉樹完成其中的模式串的匹配,并與AC算法進(jìn)行了比較。傳統(tǒng)的AC算法需要維護(hù)三張表,并且在模式匹配過程中會頻繁訪問這三張表;本發(fā)明的一種基于關(guān)鍵字詞頻特征的多模式匹配方法更多的利用了模式本身的詞頻信息,并不需要維護(hù)過多的信息,這就大大減少了系統(tǒng)的內(nèi)存消耗。
[0009]本發(fā)明采用的具體技術(shù)方案是:
[0010]一種基于關(guān)鍵字詞頻特征的多模式匹配方法,包括以下步驟:
[0011]S21初始化二叉樹;
[0012]S22輸入待匹配模式串后開始匹配;
[0013]S23若匹配成功則判斷該節(jié)點(diǎn)是否含有模式串結(jié)束標(biāo)志,若是則輸出模式串,若否則判斷匹配成功節(jié)點(diǎn)的左分支節(jié)點(diǎn)是否存在,若是則將指針指向其左分支節(jié)點(diǎn)并返回S22,若否則結(jié)束匹配;若匹配失敗則判斷匹配失敗節(jié)點(diǎn)的右分支節(jié)點(diǎn)是否存在,若是則將指針指向其右分支節(jié)點(diǎn)并返回S22,若否則結(jié)束匹配;
[0014]S24判斷指針移動后是否超出待匹配模式串串尾,若否則返回S22,若是則結(jié)束匹配。
[0015]進(jìn)一步的,所述二叉樹的初始化包括以下步驟:
[0016]A)假設(shè)有定義在字符集Σ上的模式串集合K= {:Sl,s2,s3,…,Sn:KSl,s2,s3,…sk…,\表示從已知數(shù)據(jù)庫中提取的模式串,η表示模式串?dāng)?shù)量,其取值范圍與計(jì)算機(jī)性能相關(guān)),用Κ中的模式串生成二叉樹,并記第i層的左起第j個節(jié)點(diǎn)為&1],其中i,j =0,1,2,……,將同一模式中的字符所在節(jié)點(diǎn)標(biāo)記為fk,并將終結(jié)字符節(jié)點(diǎn)標(biāo)記為ok,其中k表示模式串集合中的第k個字符串,k= 1,2,……,n;
[0017]B)統(tǒng)計(jì)模式串sk出現(xiàn)的頻率p k,并將頻率pk作為模式串s淑詞頻加入含有ο浪記的節(jié)點(diǎn);
[0018]C)設(shè)匹配一個字符的計(jì)算力是c,二叉樹中最左分支由底向上的第一個分支節(jié)點(diǎn)為Α,從Α到輸出其下m個分支中所有模式分別需要匹配節(jié)點(diǎn)1?次(含匹配A),m為A分支個數(shù),由左向右對應(yīng)模式Sk,sk+1,......,sk+m 1;計(jì)算期望E ml= c*l k*pk+c*lk+1*pk+1+......+c*lk+n ! (c表示計(jì)算力,lk表示對應(yīng)匹配模式s k所需匹配節(jié)點(diǎn)次數(shù),p k表示s k所攜帶該模式詞頻信息),然后交換分支計(jì)算Em2,......,直至計(jì)算出Ea= min {E ml,Em2,......},此時由右向左對應(yīng)模式s’k,s’k+1,……,s’k+nil;
[0019]D)由左向右由底向上依次找出A之外的所有節(jié)點(diǎn)并按上述方式進(jìn)行二叉樹的重構(gòu),當(dāng)根節(jié)點(diǎn)計(jì)算完畢并交換分支后,即得到最終的二叉樹。
[0020]進(jìn)一步地,步驟C中所述最左分支包含根節(jié)點(diǎn)、根節(jié)點(diǎn)的左分支節(jié)點(diǎn)以及該左分支節(jié)點(diǎn)的左分支節(jié)點(diǎn)和其后左分支節(jié)點(diǎn)。
[0021]進(jìn)一步的,所述步驟A的二叉樹的生成規(guī)則為:根據(jù)模式串集合的初始詞頻信息將模式串按詞頻由高到低順序排列,并依次插入二叉樹,同時將模式串信息加入模式串末位字符節(jié)點(diǎn)中,并在該末位字符節(jié)點(diǎn)設(shè)置模式串結(jié)束標(biāo)志;首次插入的模式串中,后插入的字符節(jié)點(diǎn)作為先插入的字符節(jié)點(diǎn)的左分支節(jié)點(diǎn);若兩模式串前綴相同,則將后插入的模式串的首個不相同節(jié)點(diǎn)作為先插入的模式串的首個不相同節(jié)點(diǎn)的右分支節(jié)點(diǎn)插入。
[0022]有益效果:本發(fā)明采用一種基于關(guān)鍵字詞頻特征的多模式匹配方法,完成模式串的匹配,由于未構(gòu)造AC算法中的失效函數(shù)表,并且采用單字符信息節(jié)點(diǎn)替換AC算法中的字符數(shù)組節(jié)點(diǎn),冗余節(jié)點(diǎn)大大減少,從而大大降低了入侵檢測系統(tǒng)的內(nèi)存消耗;本發(fā)明的一種基于關(guān)鍵字詞頻特征的多模式匹配方法用途廣泛,可應(yīng)用在搜索、網(wǎng)絡(luò)入侵檢測、敏感URL檢測和過濾等方面。
【附圖說明】
[0023]圖1是本發(fā)明實(shí)施例1的匹配過程流程圖;
[0024]圖2是本發(fā)明實(shí)施例1的初始化字典樹示意圖;
[0025]圖3 (a)是本發(fā)明實(shí)施例1的計(jì)算節(jié)點(diǎn)1交換分支前的期望示意圖;
[0026]圖3(b)是本發(fā)明實(shí)施例1的計(jì)算節(jié)點(diǎn)1交換分支后的期望示意圖;
[0027]圖4(a)是本發(fā)明實(shí)施例1的計(jì)算節(jié)點(diǎn)0交換分支前的期望示意圖;
[0028]圖4(b)是本發(fā)明實(shí)施例1的計(jì)算節(jié)點(diǎn)0交換分支后的期望示意圖;
[0029]圖5是本發(fā)明實(shí)施例2使用本發(fā)明的匹配方法和基于傳統(tǒng)AC算法的匹配方法所收集的數(shù)據(jù)項(xiàng);
[0030]圖6是本發(fā)明實(shí)施例2使用本發(fā)明的匹配方法和基于傳統(tǒng)AC算法的匹配方法對模式串進(jìn)行匹配的預(yù)處理時間對比圖;
[0031]圖7是本發(fā)明實(shí)施例2使用本發(fā)明的匹配方法和基于傳統(tǒng)AC算法的匹配方法對模式串進(jìn)行匹配的匹配時間對比圖;
[0032]圖8是本發(fā)明實(shí)施例2使用本發(fā)明的匹配方法和基于傳統(tǒng)AC算法的匹配方法對模式串進(jìn)行匹配的內(nèi)存占用對比圖;
【具體實(shí)施方式】
[0033]為使本發(fā)明的上述特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例,并配合所附圖作詳細(xì)說明如下。
[0034]下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明作進(jìn)一步的詳細(xì)說明。
[0035]實(shí)施例1:
[0036]如圖1所示可以清楚了解本發(fā)明的一種基于關(guān)鍵字詞頻特征的多模式匹配方法的匹配過程:
[0037]S21初始化二叉樹;
[0038]S22輸入待匹配模式串后開始匹配;
[0039]S23若匹配成功則判斷該節(jié)點(diǎn)是否含有模式串結(jié)束標(biāo)志,若是則輸出模式串,若否則判斷匹配成功節(jié)點(diǎn)的左分支節(jié)點(diǎn)是否存在,若是則將指針指向其左分支節(jié)點(diǎn)并返回S22,若否則結(jié)束匹配;若匹配失敗則判斷匹配失敗節(jié)點(diǎn)的右分支節(jié)點(diǎn)是否存在,若是則將指針指向其右分支節(jié)點(diǎn)并返回S22,若否則結(jié)束匹配;
[0040]S24判斷指針移動后是否超出待匹配模式串串尾,若否則返回S22,若是則結(jié)束匹配。
[0041]進(jìn)一步的,所述二叉樹的初始化規(guī)則包括以下步驟:
[0042]A)假設(shè)有定義在字符集Σ上