專利名稱:快速網(wǎng)絡流特征檢測的關鍵詞匹配方法說明書的制作方法
技術領域:
本發(fā)明屬于網(wǎng)絡信息內(nèi)容檢測領域,包括高性能網(wǎng)絡信息監(jiān)控、內(nèi)容安全、防火墻、入侵檢測和病毒檢測系統(tǒng)等領域。特別涉及基于一種快速網(wǎng)絡流特征檢測的關鍵詞匹配方法。
背景技術:
多關鍵詞匹配(Keywords Matching)有時也稱為多模式匹配(MultiplePattern Matching)或者字典匹配(Directory Matching、Set Matching),是一個經(jīng)典的算法問題,它研究從大量數(shù)據(jù)中快速匹配多個關鍵詞(多個模式)的技術。關鍵詞匹配算法根據(jù)對文本還是模式進行預先處理分為索引方案和非索引方案。索引方案可以對文本先進行預先處理,再進行關鍵詞匹配。我們主要考慮是非索引方案。這種方案由于不需要對搜索文本進行預處理,所以是實時網(wǎng)絡數(shù)據(jù)流特征檢測系統(tǒng)的核心算法。多模式匹配問題屬于串處理(String Processing)和組合模式匹配(Combinatorial Pattern Matching)領域。
到2002年,研究報告表明算法只能處理1Gbps帶寬的數(shù)據(jù)。但是網(wǎng)絡帶寬增加的速度遠遠快于計算機硬件發(fā)展速度,針對網(wǎng)絡數(shù)據(jù)流的實時信息檢測必須同時依靠算法改進和硬件發(fā)展。當前基于G級帶寬網(wǎng)絡下信息監(jiān)控、入侵檢測系統(tǒng)、內(nèi)容過濾系統(tǒng)等還沒有很好的方案。在保證較低誤報率和漏報率下有效處理網(wǎng)絡數(shù)據(jù)流的特征檢測還需要進一步研究。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種快速網(wǎng)絡流特征檢測的關鍵詞匹配方法,其可保證在有效處理網(wǎng)絡數(shù)據(jù)流時具有較低誤報率和漏報率。
本發(fā)明一種快速網(wǎng)絡流特征檢測的關鍵詞匹配方法,它能根據(jù)關鍵詞長的特性設計一種新型的多關鍵詞匹配算法,可以提高特征檢測系統(tǒng)性能;其特征在于,包括如下步驟1)對關鍵詞進行預處理;2)使用全部關鍵詞計算出一個最小完美散列函數(shù)函數(shù);3)計算在掃描階段可能出現(xiàn)任何字符塊可以跳躍的最大距離;4)使用全部關鍵詞建立一張檢測表;5)掃描處理;6)使用該檢測表,快速的進行數(shù)據(jù)流特征檢測。
其中步驟2所述的計算出一個哈夫曼編碼的新多關鍵詞匹配算法函數(shù)的同時哈夫曼編碼的新多關鍵詞匹配算法不但使用建立跳躍表,同時使用最小完美散列函數(shù)把全部關鍵詞散列到一個保序編號上。
其中步驟5的掃描處理,哈夫曼編碼的新多關鍵詞匹配算法從左往右掃描文本,直到發(fā)現(xiàn)不能再跳躍才使用最小完美散列函數(shù)計算出候選關鍵詞的編號,最后通過嚴格匹配確認關鍵詞是否出現(xiàn)。
具體實施例方式
我們使用∑表示字符集合,使用∑*表示字符串(模式),P∈(∑*)*表示多關鍵詞集合,t表示文本,我們使用ti..i+j表示從i到i+j的文本;pi表示模式串。n=|t|,m=|pi|表示的t,pi的長度。r=|P|表示集合P的大小,即關鍵詞個數(shù)。pi表示一個關鍵詞,w表示機器字的字節(jié)數(shù)(對于32位機器,則是4)。為了描述算法方便,假設所有關鍵詞長度相同即|pi|=n;多模式匹配問題就是在文本x中,查詢{p1,p2…pr}的全部出現(xiàn)位置.
在不同關鍵詞規(guī)模、最短關鍵詞長度和字符集大小等情況下,有效的多關鍵詞匹配算法是不同的。我們設計的新多關鍵詞匹配算法適合關鍵詞比較長的情況。我們把這種基于保序最小完美散列函數(shù)(OrderPreserving Minimal Perfect Hash)的哈夫曼編碼的新多關鍵詞匹配算法簡稱為MPHF-Match.在本文中除特殊說明,最小完美散列函數(shù)都是指保序的散列函數(shù)。在預處理階段,MPHF-Match首先使用全部關鍵詞找到一個完美散列函數(shù),接著使用這個MPHF把每個關鍵詞映射到一個唯一的整數(shù)編號中,由于最小完美散列函數(shù)(MPHF)是保序函數(shù),所以這個編號就是關鍵詞的序列號。在進行匹配階段,MPHF-Match從左往右掃描文本,如果發(fā)現(xiàn)可能出現(xiàn)關鍵詞,則使用MPHF函數(shù)計算出最有可能出現(xiàn)的關鍵詞序列號,通過嚴格比較來判斷是否這個關鍵詞的確出現(xiàn)。
MPHF-Match算法MPHF-Match分為兩步第一個步是預處理關鍵詞階段,第二個步是執(zhí)行掃描匹配階段。在現(xiàn)實網(wǎng)絡信息監(jiān)控中,由于關鍵詞集合固定不變,所以預處理只進行一次,但是可以在多次文本匹配中重復使用。所以考慮算法性能時,一般不計算預處理的時間。為了描述算法簡單,我們假定所有關鍵詞的長度是相等,同時沒有重復出現(xiàn)。
預處理階段MPHF-Match算法的預處理階段分為三個步驟。第一步驟就是使用Majewski算法,構造全部的關鍵詞的一個MPHF函數(shù)。也就是說,初始化全局變量NewMiniChar,NewAlphasz,NewN,NewM和全局表pNewGraph,pTableFirst,pTableSecond,pTableThird。Majewski[MWHC96]算法在O(n)時間內(nèi)可以找到一個MPHF。
預處理的第二個步驟是建立一個檢測表pCheck。建立pCheck表的主要目的是使用它來快速判斷是否需要對當前檢測的文本進行嚴格匹配。我們知道,大多數(shù)情況下,關鍵詞是不會出現(xiàn)在文本中,所以分階段判斷關鍵詞是否出現(xiàn),更容易在早期就發(fā)現(xiàn)不匹配的關鍵詞,從而減少執(zhí)行嚴格匹配次數(shù)。pCheck就是使用預處理建立的hashFirst函數(shù),對每一個關鍵詞計算出一個編號,再把pCheck表中這個編號對應位置設計為一個標記。也就是說,我們把pCheck表中的全部項都設置為0,然后如果hashFirst(Pi)=index,則設置pCheck[index]等于1。MPHF-Match和Sun-Wu[Wun-Wu1994]算法最大不同點就是pCheck表結構和Wu-Sun中HASH表結構是不同的。由于使用了MPHF,所以MPHF-Match算法不需要處理復雜的沖突處理。同時計算pCheck下標的散列函數(shù)也和下一步中計算pSkip下標的散列函數(shù)分離,這樣在增加少量計算的代價下,減少了嚴格匹配執(zhí)行次數(shù)。
預處理的第三個步驟是建立跳躍距離表pSkip。計算跳躍距離的基本思想和Sun-Wu是類似的。我們使用一次一個機器字來計算最大可以跳躍的距離。使用機器字長作為計算塊主要是基于計算機一次處理一個字符指令時間和處理一個機器字時間是基本相同的,但是使用一個機器字計算出來的最大跳躍距離一般會比使用一個字符計算出倆的最大跳躍距離更大。為了節(jié)約存儲空間,我們依然使用散列函數(shù)來壓縮這個跳躍表。
和Sun-Wu算法中的SHIFT表類似,pSkip表中保存如果文本中的任何一塊(一個機器字)的出現(xiàn)時,掃描匹配模塊能過跳躍的最大距離。我們假定X表示一個文本塊(機器字),n=|pi|,w表示機器字的字節(jié)數(shù),X通過MIX_HASH映射為pSkip的index項,則pSkip[index]等于1如果X不出現(xiàn)在任何關鍵詞pi中,則pSkip[index]=k-w+1;2如果X出現(xiàn)在關鍵詞中,我們假定q是X在所有關鍵詞中出現(xiàn)的最小位置,則pSkip[index]=n-q;掃描匹配階段由于前面假定了所有關鍵詞長度都等于m,w表示機器字的字節(jié)數(shù)。Table2(MPHF-Match掃描實例代碼)展示掃描階段主要執(zhí)行五個步驟1、設i是單前掃描的位置,計算單前機器字(ti..i+w)的MIX_HASH散列值p;2、如果pSkip[p]>0,則;i=i+pSkip[i],轉第1步;3、計算j=i-m+w,計算h=hashFirsh(tj..j+m-1);如果pCheck[h]等于0,則轉第5步4、計算a=hashSecond(tj..j+m-1)。由完美散列的性質2(見第一章),只有Pa才有可能匹配當前位置的文本。所以對tj..j+m-1和Pa執(zhí)行嚴格的匹配比較,如果相等,則報告發(fā)現(xiàn)關鍵詞a;5、i=i+1,轉第1步;
為了簡化描述算法,我們假設關鍵詞長度相等并且兩兩不等。實際中一般取最短的關鍵詞長度為標準長度,在其他關鍵詞中取出標準長度的一段作為這個關鍵詞代表。如果不能保證新的關鍵詞集合是兩兩不等的,則需要在嚴格匹配的時候,使用循環(huán)來處理。
MPHF-Match算法同時結合SumWu算法和散列技術。和SumWu算法不同的是,它沖突檢查分兩次完成。在SumWu算法中,根據(jù)最后的B(一般為2、3)個字母來計算跳躍距離。如果發(fā)現(xiàn)不能跳躍,則根據(jù)第一個字母來判斷是否需要嚴格匹配。而在MPHF-Match算法中,根據(jù)最后一個機器字來計算跳躍距離,充分利用硬件來計算散列函數(shù)。同時在MPHF-Match算法中,如果發(fā)現(xiàn)不能跳躍,首先使用第一階段MPHF函數(shù)來判斷是否需要嚴格匹配,只用在第一階段MPHF函數(shù)不能判斷的時候,才使用第二階段MPHF函數(shù)計算關鍵詞的序列號,進行嚴格匹配。
權利要求
1.一種快速網(wǎng)絡流特征檢測的關鍵詞匹配方法,它能根據(jù)關鍵詞長的特性設計一種新型的多關鍵詞匹配算法,可以提高特征檢測系統(tǒng)性能;其特征在于,包括如下步驟1)對關鍵詞進行預處理;2)使用全部關鍵詞計算出一個最小完美散列函數(shù);3)計算在掃描階段可能出現(xiàn)任何字符塊可以跳躍的最大距離;4)使用全部關鍵詞建立一張檢測表;5)掃描處理;6)使用該檢測表,快速的進行數(shù)據(jù)流特征檢測。
2.按權利要求1所述的快速網(wǎng)絡流特征檢測的關鍵詞匹配方法,其特征在于,其中步驟2所述的計算出一個哈夫曼編碼的新多關鍵詞匹配算法函數(shù)的同時哈夫曼編碼的新多關鍵詞匹配算法不但使用建立跳躍表,同時使用最小完美散列函數(shù)把全部關鍵詞散列到一個保序編號上。
3.按權利要求1所述的快速網(wǎng)絡流特征檢測的關鍵詞匹配方法,其特征在于,其中步驟5的掃描處理,哈夫曼編碼的新多關鍵詞匹配算法從左往右掃描文本,直到發(fā)現(xiàn)不能再跳躍才使用最小完美散列函數(shù)計算出候選關鍵詞的編號,最后通過嚴格匹配確認關鍵詞是否出現(xiàn)。
全文摘要
本發(fā)明是一種快速網(wǎng)絡流特征檢測的關鍵詞匹配方法,它能根據(jù)關鍵詞長的特性設計一種新型的多關鍵詞匹配算法,可以提高特征檢測系統(tǒng)性能;包括如下步驟1)對關鍵詞進行預處理;2)使用全部關鍵詞計算出一個最小完美散列函數(shù);3)計算在掃描階段可能出現(xiàn)任何字符塊可以跳躍的最大距離;4)使用全部關鍵詞建立一張檢測表;5)掃描處理;6)使用該檢測表,快速的進行數(shù)據(jù)流特征檢測。本發(fā)明適用于高性能網(wǎng)絡信息監(jiān)控、病毒檢測、防火墻、入侵檢測、網(wǎng)絡信息內(nèi)容安全等系統(tǒng)中。
文檔編號G06F11/00GK1510592SQ0215935
公開日2004年7月7日 申請日期2002年12月26日 優(yōu)先權日2002年12月26日
發(fā)明者譚建龍, 張鑫, 向泓, 程學旗 申請人:中國科學院計算技術研究所