專利名稱:報文特征的檢測方法及裝置的制作方法
技術領域:
本發(fā)明涉及通信技術領域,尤其涉及一種報文特征的檢測方法及裝置。
背景技術:
隨著網(wǎng)絡應用的快速發(fā)展,網(wǎng)絡環(huán)境日益復雜,越來越多的來自于應用層的安全威脅(如病毒、垃圾郵件、流氓軟件等)對網(wǎng)絡安全造成了巨大的影響。因此,人們越來越多的關注報文第四層以上(特別是應用層)的安全網(wǎng)關設備的網(wǎng)絡安全問題。
在現(xiàn)有入侵檢測、防病毒網(wǎng)關、反垃圾郵件網(wǎng)關等安全網(wǎng)關設備中,通常采用基于攻擊、病毒、垃圾郵件的內容特征來識別相應的攻擊、病毒、垃圾郵件等。這里所述的“識別”是通過模式匹配算法實現(xiàn)的。模式匹配是指,針對一段待掃描的文本內容(對安全網(wǎng)關設備來說,針對的是一個報文的凈荷部分),查看特征是否出現(xiàn)在待掃描的文本中。
假定病毒特征庫中存在一條病毒特征“VirusString”,對于包含以下內容的文件“This is a VirusFile with VirusString”,若文件的內容一次性送入模式匹配引擎進行檢測,按照模式匹配的方法,模式匹配引擎能夠檢測到病毒特征“VirusString”。
但是在應用中,以病毒網(wǎng)關的病毒檢測為例,由于網(wǎng)絡最大傳輸單元的限制,若傳送某個文件,則需要將所述文件分割成若干個報文,利用所述的若干個報文才能將所述文件發(fā)送到另一端的服務器上。另一端的服務器收到這些報文后,根據(jù)一定的順序將這些報文內容重新組合,還原成原來的文件。在這種情況下,可能會造成病毒文件的病毒特征,跨越了兩個或者多個報文。那么,對于進行病毒檢測的病毒網(wǎng)關等安全網(wǎng)關設備來說,其必須能夠支持跨報文的特征匹配,才能實現(xiàn)對跨報文的攻擊的檢測。
對于報文特征(如病毒特征等)跨報文的情況,即在傳輸時,將上述“Thisis a VirusFile with VirusString”文件分成三個報文傳送,而其中一個報文的分割剛好在“VirusString”位置發(fā)生。分割情況如下所示
也即“VirusString”這一報文特征跨越了第二、第三兩個報文。如果病毒網(wǎng)關不支持跨報文的特征檢測,則此報文特征就會被認為是合法流量。
為解決上述問題,現(xiàn)有技術中存在下述方案來解決報文特征跨報文時,對報文特征的檢測問題。
現(xiàn)有技術的方案,是將已檢測過的報文內容緩存(緩存內容的大小取決于最長的報文特征的長度),在后續(xù)報文內容達到后,將緩存的報文內容跟新到達的報文內容拷貝到一起,一起送入模式匹配引擎進行檢測。檢測完以后,再將緩存的報文內容和新到達的報文內容一起,拷貝到緩存區(qū)進行緩存,等待下一個報文到來。
那么,以分割成
的文件“This isa VirusFile with VirusString”,報文特征為“VirusString”為例,模式匹配引擎對收到的第一個報文
進行檢測。將
與“VirusString”進行模式匹配,匹配結果為未發(fā)現(xiàn)病毒特征,于是將第一個報文拷貝到緩存中。等第二個報文
送入的時候,與第一個報文
進行拼接,然后再對拼接后的報文
進行檢測。模式匹配引擎檢測后,仍未發(fā)現(xiàn)病毒特征,繼續(xù)將
緩存,等待下一個報文。收到第三個報文
后,跟
進行拼接,形成
并將
再次進行檢測。此時,模式匹配引擎檢測到所述病毒特征,認為此文件為病毒文件。
分析現(xiàn)有技術一可知,當報文特征跨報文時,利用現(xiàn)有技術一的方案,需要不斷的將檢測過的報文進行緩存,并將緩存的報文和接收到的下一個報文進行拼接,再對拼接后的報文進行檢測。然后,不斷的重復“緩存-拼接-檢測”的過程。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)在現(xiàn)有技術中至少存在如下的缺陷 (1)由于在現(xiàn)有技術的技術方案中,需要不斷的將匹配過的報文進行緩存,以能夠對后續(xù)的報文進行匹配。在對報文不斷的緩存過程中,占用了大量的內存空間。
(2)由于現(xiàn)有技術中每次只是發(fā)送一個或幾個字節(jié)內容的報文,因此,若已緩存100字節(jié)的報文內容,那么有一個新的報文內容到來,將緩存的報文內容跟到來的報文內容拼接起來(此時為101個字節(jié))送入模式匹配引擎進行檢測;檢測完成后,網(wǎng)關安全設備轉發(fā)第一個字節(jié)的內容,而后100字節(jié)繼續(xù)緩存。下一個字節(jié)報文達到時重復進行上述過程。這種情況下,可以看到,每檢測101個字節(jié)報文內容后,網(wǎng)絡安全設備發(fā)送一個字節(jié),相當于對報文中的每個字節(jié)都進行了100次的模式匹配,網(wǎng)絡安全設備的整體性能將數(shù)量級下降。
發(fā)明內容
一方面,本發(fā)明的實施例提供了一種報文特征的檢測方法。利用本發(fā)明實施例所述的方法,能夠提高多報文時的報文特征檢測的效率。
本發(fā)明的實施例報文特征的檢測方法,采用以下技術方案 一種報文特征的檢測方法,所述方法包括如下步驟 接收當前分段報文; 獲取當前分段報文所對應的模式匹配的起始狀態(tài); 將所述當前分段報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配,獲得有限狀態(tài)機的當前狀態(tài); 若有限狀態(tài)機的當前狀態(tài)為匹配狀態(tài),則所述分段報文的報文特征為與所述有限狀態(tài)機相對應的報文特征。
本發(fā)明的實施例報文特征的檢測方法,首先需要獲取有限狀態(tài)機的起始狀態(tài),然后將所述當前分段報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配。也就是說,在將當前分段報文,與有限狀態(tài)機進行模式匹配后,只需要保存對當前分段報文進行模式匹配后的有限狀態(tài)機的當前狀態(tài),因此避免了現(xiàn)有技術中需要不斷的對送入的報文進行緩存的缺陷,從而減少了對網(wǎng)關設備的內存空間的占用,降低了對網(wǎng)關設備性能的影響,提高了多報文時的報文特征檢測的效率。
另一方面,本發(fā)明的實施例提供了一種報文特征的檢測裝置。利用本發(fā)明實施例所述的裝置,能夠提高多報文的報文特征檢測的效率。
一種報文特征的檢測裝置,所述的裝置包括有限狀態(tài)機,匹配單元,接收單元,狀態(tài)獲取單元,以及判斷單元;其中, 一種報文特征的檢測裝置,其特征在于,所述的裝置包括有限狀態(tài)機,匹配單元,接收單元,狀態(tài)獲取單元,以及判斷單元;其中, 接收單元,用于接收當前分段報文; 狀態(tài)獲取單元,用于獲取當前分段報文所對應的模式匹配的起始狀態(tài); 有限狀態(tài)機單元,用于保存預先設置的有限狀態(tài)機; 匹配單元,用于將所述當前報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配,獲得有限狀態(tài)機的當前狀態(tài); 判斷單元,用于確定有限狀態(tài)機的當前狀態(tài)為匹配狀態(tài)時,獲得所述分段報文的報文特征為與所述有限狀態(tài)機相對應的報文特征。
本發(fā)明的實施例報文特征的檢測裝置,首先需要由狀態(tài)獲取單元獲取有限狀態(tài)機的起始狀態(tài),然后將所述當前分段報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,由匹配單元對當前分段報文進行模式匹配。也就是說,在將當前分段報文,與有限狀態(tài)機進行模式匹配后,只需要保存對當前分段報文進行模式匹配后的有限狀態(tài)機的當前狀態(tài),因此避免了現(xiàn)有技術中需要不斷的對送入的報文進行緩存的缺陷,從而減少了對網(wǎng)關設備的內存空間的占用,降低了對網(wǎng)關設備性能的影響,提高了多報文時的報文特征檢測的效率。
圖1是本發(fā)明的實施例報文特征的檢測方法的流程圖; 圖2是本發(fā)明的實施例報文特征的檢測方法的具體流程圖; 圖3是本發(fā)明的實施例報文特征的檢測方法中有限狀態(tài)機的示意圖; 圖4是本發(fā)明的實施例報文特征的檢測裝置的結構圖; 圖5是在圖4所示的基礎上,本發(fā)明的實施例報文特征的檢測裝置增加定義單元時的示意圖; 圖6是本發(fā)明的實施例報文特征的檢測裝置的第一實施例的結構圖。
具體實施例方式 為解決現(xiàn)有技術中,在對跨報文的報文特征進行檢測時,需要不斷的緩存檢測過的報文而引起的占用內存,以及由于對同一報文的重復檢測而影響網(wǎng)關設備性能的問題,從而造成的報文特征檢測效率不高的問題,本發(fā)明的實施例提供了一種報文特征的檢測方法。
本發(fā)明的實施例所述的報文特征可以以多種形式存在,例如,病毒特征,攻擊特征等。
為使本發(fā)明的實施例的技術方案的優(yōu)點更加清楚,下面結合附圖對本發(fā)明的實施例做進一步的詳細說明。
如圖1所示,本發(fā)明的實施例報文特征的檢測方法,包括如下步驟 S1接收當前分段報文; S2獲取當前分段報文所對應的模式匹配的起始狀態(tài); S3將所述當前分段報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配,獲得有限狀態(tài)機的當前狀態(tài); S4在所述模式匹配結束后,若有限狀態(tài)機的當前狀態(tài)為匹配狀態(tài),則所述分段報文的報文特征為與所述有限狀態(tài)機相對應的報文特征。
本發(fā)明的實施例報文特征的檢測方法,首先需要獲取有限狀態(tài)機的起始狀態(tài),然后將所述當前分段報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配。也就是說,在將當前分段報文,與有限狀態(tài)機進行模式匹配后,只需要保存對當前分段報文進行模式匹配后的有限狀態(tài)機的當前狀態(tài),因此避免了現(xiàn)有技術中需要不斷的對送入的報文進行緩存的缺陷,從而減少了對網(wǎng)關設備的內存空間的占用,降低了對網(wǎng)關設備性能的影響,提高了報文特征檢測的效率。
此外,為保持對報文特征檢測的連續(xù)性,如圖2所示,所述方法還可包括 S5保存對當前分段報文進行模式匹配后,有限狀態(tài)機的當前狀態(tài),根據(jù)有限狀態(tài)機的當前狀態(tài)更新所述起始狀態(tài)。即將有限狀態(tài)機的當前狀態(tài)保存到與所述分段報文標識對應的起始狀態(tài),以供下一個分段報文檢測時作為起始狀態(tài)輸入。
在對下一個報文進行檢測的時候,可以通過所述起始狀態(tài)獲取有限狀態(tài)機的當前狀態(tài),并通過將有限狀態(tài)機的狀態(tài)回復為所述的當前狀態(tài),來獲知對當前報文進行匹配的結果,并作為對下一個報文進行模式匹配的起始狀態(tài),從而保持對報文特征檢測的連續(xù)性,避免了對同一報文內容進行多次模式匹配,進一步的提高了對報文特征檢測的效率。
如圖2所示,在對當前分段報文進行模式匹配之前,本發(fā)明的實施例報文特征的檢測方法還包括 S0根據(jù)預設報文特征,定義有限狀態(tài)機,以及有限狀態(tài)機中各狀態(tài)之間進行轉換的條件; S11分別為接收到的分段報文設置標識信息。所述標識信息可以在接收到分段報文后為各個分段報文進行重新設置,也可以采用各分段報文自帶的ID或IP地址的標識作為所述標識信息。
在具體應用中,可以以所述預設報文特征中預定長度的字符串為單位,定義有限狀態(tài)機中各狀態(tài)之間的轉換條件,驅動有限狀態(tài)機中各狀態(tài)之間的轉換。所述的預定長度可以為一個字符,或兩個字符等等。通過以預定長度的字符串為單位,提取進行模式匹配的分段報文中的相應長度的字符串,來驅動有限狀態(tài)機的狀態(tài)進行轉換。為了保證對報文特征檢測的準確性,在本發(fā)明的以下實施例中采用以一個字符為單位來定義有限狀態(tài)機中各狀態(tài)之間的轉換。
上述的有限狀態(tài)機可以是一個,也可以有多個分別與各接收到的分段報文一一對應的有限狀態(tài)機。
若定義出多個有限狀態(tài)機的話,也即對每個報文特征分別定義出一個有限狀態(tài)機,當接收到當前分段報文的時候,讀取所述當前報文所對應的標識信息,將其送入到對應的有限狀態(tài)機中進行模式匹配。
若只定義出一個有限狀態(tài)機,也即多個分段報文共用一個有限狀態(tài)機,在這種情況下,需要分別保存每個報文的當前分段報文與有限狀態(tài)機進行匹配后的當前狀態(tài)。在各報文的下一個分段報文到來時,查詢所述下一個分段報文所對應的標識信息,并獲得該分段報文所對應的有限狀態(tài)機的當前狀態(tài),并作為對該報文的下一個分段報文進行模式匹配的起始狀態(tài)。
其中,所述獲取當前分段報文所對應的模式匹配的起始狀態(tài)包括 獲得當前報文的標識信息; 若所述當前分段報文為首個分段報文,則獲得與所述標識信息對應的有限狀態(tài)機的初始狀態(tài)為所述起始狀態(tài); 若所述當前分段報文不是首個分段報文,則獲得與所述標識信息相對應的有限狀態(tài)機的當前狀態(tài)為所述起始狀態(tài)。
在模式匹配過程中,對于不同的當前分段報文,有限狀態(tài)機的起始狀態(tài)不同。若當前分段報文為第一個分段報文,則有限狀態(tài)機的起始狀態(tài)即為它的初始狀態(tài)。在這種情況下,在對當前分段報文進行模式匹配的過程中,首先將當前分段報文送入到與其述標識信息相對應的有限狀態(tài)機中,然后以有限狀態(tài)機的初始狀態(tài)為起始狀態(tài),提取當前分段報文中與所述轉換條件相同長度的字符串,作為有限狀態(tài)機的驅動,使所述有限狀態(tài)機進行狀態(tài)轉移,在當前分段報文中的全部字符匹配結束后,獲得有限狀態(tài)的當前狀態(tài)。
若所述當前分段報文不是第一個分段報文,則所述起始狀態(tài)為有限狀態(tài)機對上一個分段報文進行模式匹配后的狀態(tài)。在這種情況下,在對當前分段報文進行模式匹配的過程中,首先將當前分段報文送入到與其標識信息相對應的有限狀態(tài)機中,然后以有限狀態(tài)機對上一個分段報文進行模式匹配后的狀態(tài)為起始狀態(tài),提取當前分段報文中與所述轉換條件相同長度的字符串,作為有限狀態(tài)機的驅動,使所述有限狀態(tài)機進行狀態(tài)轉移,在當前分段報文中的全部字符匹配結束后,獲得有限狀態(tài)的當前狀態(tài)。
在對當前分段報文進行模式匹配完成后,若所述的當前分段報文的內容與所述的預設報文特征匹配,則丟棄當前分段報文或者根據(jù)設置將所述當前分段報文進行保存;若不匹配,則轉發(fā)所述當前分段報文或為所述當前分段報文添加告警標識,表明當前分段報文為非法的。
下面詳細描述一下本發(fā)明實施例的實現(xiàn)過程。
在本發(fā)明的實施例中,以Aho-Corasick算法為例說明如何對有限狀態(tài)機進行定義。當然,實現(xiàn)對有限狀態(tài)機進行定義的方法并不局限于在本發(fā)明實施例中所使用的方法。
采用Aho-Corasick算法編譯成的有限狀態(tài)機可以如圖3所示。在圖3所示的有限狀態(tài)機中,顯示了兩條報文特征所對應的狀態(tài)轉換示意圖。
如圖3所示的有限狀態(tài)機表明,有限狀態(tài)機的初始狀態(tài)為狀態(tài)0。以一個字符為單位,定義所述有限狀態(tài)機之間的狀態(tài)轉換。根據(jù)所述的報文特征,按照如下的方式定義各狀態(tài)之間的轉換在0狀態(tài)時若遇到有限狀態(tài)機的輸入為‘V’則轉換到狀態(tài)1,在狀態(tài)1時遇到有限狀態(tài)機的輸入為‘i’則轉換到狀態(tài)2,……以此類推,直到轉換到與報文特征匹配的狀態(tài)。在圖3所示的例子中,用同心圓表示的狀態(tài)11、15,表示該狀態(tài)為一個匹配狀態(tài),即若有限狀態(tài)機運行到該狀態(tài),則表示有一條報文特征匹配。
在各狀態(tài)下若遇到任何不在圖3中標出的能明確轉換到下一個狀態(tài)的輸入,則重新回到狀態(tài)0,例如若在狀態(tài)3下遇到非‘u’的輸入,則重新回到狀態(tài)0。
當有多條報文特征時,例如“VirusString”和“VirusTest”等,那么為了能夠將每個報文送入到與其相對應的有限狀態(tài)機中,可以為接收到的分段報文設置標識信息,對屬于同一報文的分段報文其標識信息相同。
例如,預設報文為“This is a VirusFile with VirusString”和“Thisis a VirusTest File”,將上述兩個報文分別分割成三個報文進行傳輸,分割結果如下
報文特征分別為“VirusString”和“VirusTest”,將“This is a VirusFilewith VirusString”的標識信息設置為1,“This is a VirusTest File”的標識信息設置為2。當接收到標識信息為1的報文時,獲取有限狀態(tài)機保存的與標識信息1相對應的狀態(tài),而當接收到標識信息為2的報文時,獲取有限狀態(tài)機保存的與標識信息2相對應的狀態(tài)。
(一)若只將
文件整體送入模式匹配引擎,利用圖3所示的有限狀態(tài)機進行匹配,系統(tǒng)從初始狀態(tài)狀態(tài)0開始,經歷狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)1,狀態(tài)2,狀態(tài)3,狀態(tài)4,狀態(tài)5,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)1,狀態(tài)2,狀態(tài)3,狀態(tài)4,狀態(tài)5,狀態(tài)6,狀態(tài)7,狀態(tài)8,狀態(tài)9,狀態(tài)10,狀態(tài)11。當狀態(tài)轉換到狀態(tài)11時,說明模式匹配引擎檢測到報文特征“VirusString”。
若將分割后的報文送入模式匹配引擎進行匹配,那么按照本發(fā)明實施例所述的方法,其具體過程如下。
(1)將第一個報文
送入模式匹配引擎,與有限狀態(tài)機進行模式匹配。初始狀態(tài)為狀態(tài)0,有限狀態(tài)機對輸入的內容,按照圖3所示的有限狀態(tài)機及各狀態(tài)之間的轉換規(guī)則,進行模式匹配。狀態(tài)變化過程為狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,此時第一報文內容均已完成匹配,保存有限狀態(tài)機的當前狀態(tài)0狀所對應的狀態(tài)“0”,供后續(xù)恢復狀態(tài)用,然后返回。在對第一個報文進行匹配的時候,發(fā)現(xiàn)第一個報文中不存在所述的報文特征,因此,將所述的第一個報文轉發(fā)。
(2)收到第二個報文
的時候,先獲取之前保存的第一個報文與有限狀態(tài)機進行匹配后,有限狀態(tài)機的當前狀態(tài)狀態(tài)0,將狀態(tài)0跟第二個報文一起送入模式匹配引擎。模式匹配引擎先進行狀態(tài)恢復工作,將當前狀態(tài)設置為0狀態(tài),然后再對第二報文進行匹配。有限狀態(tài)機從0狀態(tài)開始,經歷狀態(tài)0,狀態(tài)1,狀態(tài)2,狀態(tài)3,狀態(tài)4,狀態(tài)5,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)0,狀態(tài)1,狀態(tài)2,狀態(tài)3。此時本次送入的第二個報文內容完成匹配,保存有限狀態(tài)機的當前狀態(tài)“狀態(tài)3”,然后返回。在對第二個報文進行匹配的時候,發(fā)現(xiàn)第二個報文中不存在所述的報文特征,因此,將所述的第二個報文轉發(fā)。
(3)設備收到最后一個報文
時,同樣先獲取之前保存的第二個報文與有限狀態(tài)機進行匹配后,有限狀態(tài)機的當前狀態(tài)狀態(tài)3,將狀態(tài)3與
一起送入模式匹配引擎。模式匹配引擎同樣先進行狀態(tài)恢復工作,將有限狀態(tài)機的當前狀態(tài)設置為狀態(tài)3,然后對最后一個報文進行匹配。有限狀態(tài)機從狀態(tài)3開始,經歷狀態(tài)4,狀態(tài)5,狀態(tài)6,狀態(tài)7,狀態(tài)8,狀態(tài)9,狀態(tài)10,狀態(tài)11。在狀態(tài)11時,檢測到有報文特征“VirusString”被匹配到。因此,將最后一個報文丟棄。
從上面的例子可以看出,通過上述保存有限狀態(tài)機與當前報文進行匹配的狀態(tài)、恢復有限狀態(tài)機與當前報文進行匹配的狀態(tài)的操作,在特征跨報文的情況下,仍能成功檢測到該報文特征“VirusString”的存在。
(二)若同時將上述兩個文件送入模式匹配引擎中,則通過所述兩個文件的報文特征所對應的標識,分別將其送入到圖3所示的有限狀態(tài)機中對應的部分進行模式匹配。
在對每個文件的分段報文進行模式匹配的過程,與實施例所述的原理相同。不同之處僅在于,在分別對每個文件的當前分段報文進行匹配后,分別保存有限狀態(tài)機的當前狀態(tài)。在下一個分段報文到來后,則會根據(jù)對應標識去讀取存儲的對應的當前狀態(tài),以作為對下一個分段報文進行模式匹配的起始狀態(tài)。然后,對各當前分段報文進行模式匹配。
在模式匹配結束后,若有限狀態(tài)機的當前狀態(tài)為匹配狀態(tài),則說明輸入的報文中存在與所述有限狀態(tài)機相對應的報文特征,則可將該分段報文丟棄或添加標識,以表明該分段報文為非法報文。若有限狀態(tài)機的當前狀態(tài)不是匹配狀態(tài),則轉發(fā)或保存當前分段報文。
由上可以看出,當前分段報文進行模式匹配后的有限狀態(tài)機的當前狀態(tài),相比現(xiàn)有技術方案在內存占用上有數(shù)量級的減少。在后續(xù)報文到達時,將保存的狀態(tài)跟后到達的報文一起送入模式匹配引擎進行匹配,模式匹配引擎中恢復上次匹配時的狀態(tài)僅需一個賦值操作,沒有其他額外的拷貝代價,也不存在對同一報文進行重復檢測的過程,將由于對跨報文的報文特征匹配而產生的對安全網(wǎng)關設備等網(wǎng)關設備性能的影響降到最低(保存狀態(tài)和恢復狀態(tài)共兩個賦值操作,對網(wǎng)關設備的性能影響可以忽略)。
此外,在對后續(xù)報文進行匹配時,要先獲取當前分段報文進行模式匹配后的有限狀態(tài)機的當前狀態(tài),從而使得在對后續(xù)報文進行匹配時,保持了與已檢測過的報文的匹配結果的連續(xù)性,保證了對跨報文的報文特征檢測的準確性。
此外,本發(fā)明的實施例還提供了一種報文特征的檢測裝置。
如圖4所示,本發(fā)明的實施例所述的裝置包括有限狀態(tài)機,匹配單元,接收單元,狀態(tài)獲取單元,以及判斷單元;其中, 接收單元,用于接收當前分段報文;狀態(tài)獲取單元,用于獲取當前分段報文所對應的模式匹配的起始狀態(tài);有限狀態(tài)機單元,用于保存預先設置的有限狀態(tài)機;匹配單元,用于將所述當前報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配,獲得有限狀態(tài)機的當前狀態(tài);判斷單元,用于確定有限狀態(tài)機的當前狀態(tài)為匹配狀態(tài)時,獲得所述分段報文的報文特征為與所述有限狀態(tài)機相對應的報文特征。
本發(fā)明的實施例報文特征的檢測裝置,首先需要由狀態(tài)獲取單元獲取有限狀態(tài)機的起始狀態(tài),然后將所述當前分段報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,由匹配單元對當前分段報文進行模式匹配。也就是說,在將當前分段報文,與有限狀態(tài)機進行模式匹配后,只需要保存對當前分段報文進行模式匹配后的有限狀態(tài)機的當前狀態(tài),因此避免了現(xiàn)有技術中需要不斷的對送入的報文進行緩存的缺陷,從而減少了對網(wǎng)關設備的內存空間的占用,降低了對網(wǎng)關設備性能的影響,提高了多報文時的報文特征檢測的效率。
如圖4中的狀態(tài)獲取單元可包括信息獲取模塊,用于獲得與當前分段報文相對應的標識信息;狀態(tài)獲取模塊,用于獲得與所述標識信息相對應的有限狀態(tài)機的起始狀態(tài)。
此外,如圖5所示,本發(fā)明實施例所述的裝置還包括設置單元,用于根據(jù)預設報文特征,定義有限狀態(tài)機,以及有限狀態(tài)機中各狀態(tài)之間的轉換條件;標識設置單元,用于所述預設報文特征設置標識信息。
所述定義單元在定義有限狀態(tài)機,以及有限狀態(tài)機中各狀態(tài)之間的轉換條件時,以所述的報文特征中預定長度的字符串為單位,定義有限狀態(tài)機中各狀態(tài)之間的轉換條件。所述的預定長度可以為一個字符串,或其他方式。在本發(fā)明的實施例中,可以以一個字符為單位進行定義。
在本實施例中,定義單元定義有限狀態(tài)機及各狀態(tài)之間的轉換條件的過程,與本發(fā)明實施例對跨報文的報文特征進行匹配的方法中的相同,在此不再贅述。
為了對匹配后的當前分段報文進行相應操作,如轉發(fā)、保存、丟棄等,如圖6示,所述裝置還包括第一處理單元,用于在所述模式匹配結束后,若有限狀態(tài)機的當前狀態(tài)不是匹配狀態(tài),轉發(fā)所述當前分段報文或保存所述當前分段報文; 第二處理單元,用于在所述模式匹配結束后,若有限狀態(tài)機的當前狀態(tài)是匹配狀態(tài),丟棄所述當前分段報文或為當前分段報文添加標識。
需要注意的是,本發(fā)明實施例的技術方案適用于因各種原因導致的預設特征分段,使得待檢測內容無法一次性送入特征匹配引擎進行檢測的應用場景。所述的應用場景包括但不限于需要進行內容檢測的路由器設備、防火墻、入侵檢測/防御系統(tǒng)、病毒網(wǎng)關、垃圾郵件網(wǎng)關、Web過濾網(wǎng)關等。
當然,本發(fā)明的實施例還可有很多種,在不背離本發(fā)明的實施例精神及其實質的情況下,本領域技術人員當可根據(jù)本發(fā)明的實施例做出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明的實施例所附的權利要求的保護范圍。
權利要求
1、一種報文特征的檢測方法,其特征在于,所述方法包括如下步驟
接收當前分段報文;
獲取當前分段報文所對應的模式匹配的起始狀態(tài);
將所述當前分段報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配,獲得有限狀態(tài)機的當前狀態(tài);
若有限狀態(tài)機的當前狀態(tài)為匹配狀態(tài),則所述分段報文的報文特征為與所述有限狀態(tài)機相對應的報文特征。
2、根據(jù)權利要求1所述的報文特征的檢測方法,其特征在于,所述方法還包括
根據(jù)有限狀態(tài)機的當前狀態(tài)更新所對應的模式匹配的起始狀態(tài)。
3、根據(jù)權利要求1所述的報文特征的檢測方法,其特征在于,在接收當前分段報文的步驟之前還包括
根據(jù)預設報文特征,定義有限狀態(tài)機,以及有限狀態(tài)機中各狀態(tài)之間進行轉換的條件。
4、根據(jù)權利要求3所述的報文特征的檢測方法,其特征在于,在接收當前分段報文的步驟之前還包括
分別為接收到的分段報文設置標識信息。
5、根據(jù)權利要求1或4所述的報文特征的檢測方法,其特征在于,所述獲取當前報文所對應的模式匹配的起始狀態(tài)的步驟包括
獲得與當前分段報文相對應的標識信息;
獲得與所述標識信息相對應的有限狀態(tài)機的當前狀態(tài)。
6、根據(jù)權利要求1所述的報文特征的檢測方法,其特征在于,所述獲取當前分段報文所對應的模式匹配的起始狀態(tài)包括
獲得當前報文的標識信息;
若所述當前分段報文為首個分段報文,則獲得與所述標識信息對應的有限狀態(tài)機的初始狀態(tài)為所述起始狀態(tài);
若所述當前分段報文不是首個分段報文,則獲得與所述標識信息相對應的有限狀態(tài)機的當前狀態(tài)為所述起始狀態(tài)。
7、根據(jù)權利要求6所述的報文特征的檢測方法,其特征在于,所述將當前分段報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配的步驟包括
將當前分段報文送入到所述有限狀態(tài)機中;
以所述起始狀態(tài)為有限狀態(tài)機的起始狀態(tài),每次提取當前分段報文中與所述轉換條件相同長度的字符串,作為有限狀態(tài)機的驅動,使所述有限狀態(tài)機進行狀態(tài)轉移;
在當前分段報文中的全部字符匹配結束后,獲得有限狀態(tài)的當前狀態(tài)。
8、根據(jù)權利要求1所述的報文特征的檢測方法,其特征在于,所述方法還包括
在所述模式匹配結束后,若有限狀態(tài)機的當前狀態(tài)不是匹配狀態(tài),則轉發(fā)或保存所述當前分段報文。
9、一種報文特征的檢測裝置,其特征在于,所述的裝置包括有限狀態(tài)機,匹配單元,接收單元,狀態(tài)獲取單元,以及判斷單元;其中,
接收單元,用于接收當前分段報文;
狀態(tài)獲取單元,用于獲取當前分段報文所對應的模式匹配的起始狀態(tài);
有限狀態(tài)機單元,用于保存預先設置的有限狀態(tài)機;
匹配單元,用于將所述當前報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配,獲得有限狀態(tài)機的當前狀態(tài);
判斷單元,用于確定有限狀態(tài)機的當前狀態(tài)為匹配狀態(tài)時,獲得所述分段報文的報文特征為與所述有限狀態(tài)機相對應的報文特征。
10、根據(jù)權利要求9所述的報文特征的檢測裝置,其特征在于,所述裝置還包括
存儲單元,用于根據(jù)有限狀態(tài)機的當前狀態(tài)更新所述起始狀態(tài)。
11、根據(jù)權利要求9所述的報文特征的檢測裝置,其特征在于,所述裝置還包括
第一處理單元,用于在所述模式匹配結束后,若有限狀態(tài)機的當前狀態(tài)不是匹配狀態(tài),轉發(fā)所述當前分段報文或保存所述當前分段報文;
第二處理單元,用于在所述模式匹配結束后,若有限狀態(tài)機的當前狀態(tài)是匹配狀態(tài),丟棄所述當前分段報文或為當前分段報文添加標識。
12、根據(jù)權利要求9所述的報文特征的檢測裝置,其特征在于,所述狀態(tài)獲取單元包括
信息獲取模塊,用于獲得與當前分段報文相對應的標識信息;
狀態(tài)獲取模塊,用于獲得與所述標識信息相對應的有限狀態(tài)機的起始狀態(tài)。
13、根據(jù)權利要求12權利要求所述的報文特征的檢測裝置,其特征在于,所述裝置還包括
設置單元,用于根據(jù)預設報文特征,定義有限狀態(tài)機,以及有限狀態(tài)機中各狀態(tài)之間的轉換條件;
標識設置單元,用于為接收到的分段報文設置標識信息。
全文摘要
本發(fā)明提供了一種報文特征的檢測方法及裝置,涉及通信技術領域,為提高多報文時的報文特征檢測的效率而發(fā)明。所述方法包括接收當前分段報文;獲取當前分段報文所對應的模式匹配的起始狀態(tài);將所述當前分段報文及所述起始狀態(tài)作為有限狀態(tài)機的輸入,對當前分段報文進行模式匹配,獲得有限狀態(tài)機的當前狀態(tài);若有限狀態(tài)機的當前狀態(tài)為匹配狀態(tài),則所述分段報文的報文特征為與所述有限狀態(tài)機相對應的報文特征。本發(fā)明能夠減少報文內容對內存的占用,并降低由于對同一報文內容進行多次模式匹配而產生的對網(wǎng)關設備性能的影響,提高多報文時的報文特征檢測的效率。
文檔編號H04L12/56GK101252444SQ20081008890
公開日2008年8月27日 申請日期2008年4月3日 優(yōu)先權日2008年4月3日
發(fā)明者卞建光 申請人:華為技術有限公司