專利名稱:數(shù)據(jù)流的模式匹配方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及模式匹配方法及裝置,特別涉及一種數(shù)據(jù)流的模式匹配方法及裝置,屬于通信領(lǐng)域。
背景技術(shù):
模式匹配是一種將收集到的信息與已知的網(wǎng)絡(luò)入侵和系統(tǒng)誤用模式數(shù)據(jù)庫(kù)進(jìn)行比較,從而發(fā)現(xiàn)違背安全策略的行為的技術(shù)。簡(jiǎn)單的模式匹配方式如通過(guò)字符串匹配來(lái)尋找一個(gè)簡(jiǎn)單的條目或指令,復(fù)雜的模式匹配方式如利用數(shù)學(xué)表達(dá)式來(lái)表示安全狀態(tài)的變化。
對(duì)數(shù)據(jù)流的凈載荷的模式匹配技術(shù)在入侵檢測(cè)系統(tǒng)(Intrusion DetectionSystem,簡(jiǎn)稱IDS)、入侵防御系統(tǒng)(Intrusion Prevention System,簡(jiǎn)稱IPS)、病毒防范(Anti-Virus,簡(jiǎn)稱AV)等領(lǐng)域有著廣泛的應(yīng)用。網(wǎng)絡(luò)攻擊者為了逃避模式匹配,通常利用數(shù)據(jù)流分段技術(shù)將攻擊模式分散在不同的報(bào)文中。
現(xiàn)有技術(shù)中,為了防范這類逃避,通常在數(shù)據(jù)流的凈載荷模式匹配前進(jìn)行分段報(bào)文的保序及恢復(fù),從而將分散到不同報(bào)文中的攻擊模式整合到一個(gè)報(bào)文中,其方法主要包括1、對(duì)單個(gè)數(shù)據(jù)流的所有分段報(bào)文進(jìn)行保序和恢復(fù)后,再對(duì)報(bào)文的凈載荷進(jìn)行模式匹配。這種方法能夠防范通過(guò)數(shù)據(jù)流分段而引入的所有對(duì)模式匹配的逃避,但也導(dǎo)致了極大的內(nèi)存占用和報(bào)文轉(zhuǎn)發(fā)時(shí)延。由于數(shù)據(jù)流一般長(zhǎng)度相當(dāng)大,對(duì)IDS這種旁路(指對(duì)網(wǎng)絡(luò)流量通路不產(chǎn)生影響,也稱off-line)系統(tǒng)來(lái)說(shuō),如果采用上述方法會(huì)由于對(duì)分段報(bào)文的恢復(fù)操作而極大地占用內(nèi)存;而對(duì)于IPS這種需要將數(shù)據(jù)流的報(bào)文快速轉(zhuǎn)發(fā)的在線(指對(duì)網(wǎng)絡(luò)流量通路產(chǎn)生影響,也稱in-line)系統(tǒng)來(lái)說(shuō),如果采用上述方法則會(huì)由于對(duì)分段報(bào)文的恢復(fù)操作而造成極大的網(wǎng)絡(luò)延時(shí)。
2、通過(guò)引入?yún)?shù)來(lái)將時(shí)延和流恢復(fù)長(zhǎng)度控制在一定范圍內(nèi),使得時(shí)延和內(nèi)存能夠承受數(shù)據(jù)流恢復(fù)付出的代價(jià)。該方法能夠在一定程度上減少時(shí)延和內(nèi)存占用,但是由于對(duì)流恢復(fù)長(zhǎng)度的控制,使得該方法不能完全防范數(shù)據(jù)流分段技術(shù)引入的對(duì)模式識(shí)別的逃避。
發(fā)明內(nèi)容
本發(fā)明的目的是為克服上述現(xiàn)有技術(shù)的缺陷,提供一種數(shù)據(jù)流的模式匹配方法及裝置,能夠完全防范利用數(shù)據(jù)流分段技術(shù)而分散在不同的分段報(bào)文中的攻擊模式,并且不需要對(duì)分段報(bào)文進(jìn)行恢復(fù),從而能夠大大減少內(nèi)存占用和報(bào)文轉(zhuǎn)發(fā)時(shí)延。
為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供了一種數(shù)據(jù)流的模式匹配方法,包括在對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序后,將該數(shù)據(jù)流的分段報(bào)文依次與預(yù)先設(shè)定的有限狀態(tài)機(jī)進(jìn)行模式匹配;其中,在對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配后,根據(jù)模式匹配結(jié)果對(duì)該分段報(bào)文執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作,并保存對(duì)該分段報(bào)文進(jìn)行模式匹配后的所述有限狀態(tài)機(jī)的狀態(tài),將該狀態(tài)作為所述有限狀態(tài)機(jī)對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)。
在上述技術(shù)方案中,通過(guò)在對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配后保存有限狀態(tài)機(jī)的狀態(tài),并將該狀態(tài)作為對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài),從而能夠?qū)崿F(xiàn)在不執(zhí)行分段報(bào)文的恢復(fù)操作的情況下,仍然能夠完全防范利用數(shù)據(jù)流分段技術(shù)而分散在不同的分段報(bào)文中的攻擊模式;因而,在對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序后,并不需要執(zhí)行現(xiàn)有技術(shù)中的將分段報(bào)文組合恢復(fù)成完整報(bào)文的操作,而是直接將分段報(bào)文依次與預(yù)設(shè)的有限狀態(tài)機(jī)進(jìn)行模式匹配,從而能夠避免由于對(duì)分段報(bào)文進(jìn)行恢復(fù)而導(dǎo)致的時(shí)延,并大大減少了內(nèi)存占用。
優(yōu)選地,上述技術(shù)方案中,所述對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配可具體包括將該分段報(bào)文的凈載荷作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移并獲得模式匹配結(jié)果。進(jìn)一步地,所述將該分段報(bào)文的凈載荷作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移并獲得模式匹配結(jié)果可具體包括依次提取該分段報(bào)文的凈載荷中所述預(yù)設(shè)長(zhǎng)度的字符串作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,在該分段報(bào)文的凈載荷提取完畢后,根據(jù)所述有限狀態(tài)機(jī)狀態(tài)遷移過(guò)程中所匹配的模式獲得模式匹配結(jié)果。
優(yōu)選地,在所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序之前執(zhí)行預(yù)先設(shè)定所述有限狀態(tài)機(jī)的操作,具體包括根據(jù)預(yù)設(shè)算法構(gòu)建用于對(duì)預(yù)設(shè)的模式進(jìn)行匹配的有限狀態(tài)機(jī),并根據(jù)預(yù)設(shè)的模式設(shè)定分別用于驅(qū)動(dòng)該有限狀態(tài)機(jī)的各狀態(tài)間遷移的對(duì)應(yīng)的預(yù)設(shè)長(zhǎng)度的字符串。
進(jìn)一步地,為了在區(qū)分和標(biāo)識(shí)不同的數(shù)據(jù)流,在預(yù)先設(shè)定所述有限狀態(tài)機(jī)之后,在所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序之前,還可包括以下操作預(yù)先設(shè)置與所構(gòu)建的有限狀態(tài)機(jī)一一對(duì)應(yīng)的、用于預(yù)先標(biāo)識(shí)將要與該有限狀態(tài)機(jī)進(jìn)行模式匹配的數(shù)據(jù)流的特征的標(biāo)識(shí)信息。在所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序之后,在所述將該數(shù)據(jù)流的分段報(bào)文依次與預(yù)先設(shè)定的有限狀態(tài)機(jī)進(jìn)行模式匹配之前,還包括以下操作查找獲得與該數(shù)據(jù)流的特征一致的標(biāo)識(shí)信息,根據(jù)所獲得的標(biāo)識(shí)信息得到與該數(shù)據(jù)流對(duì)應(yīng)的有限狀態(tài)機(jī)。
在預(yù)先設(shè)定所述有限狀態(tài)機(jī)之后,在所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序之前,還可包括以下操作預(yù)先設(shè)置與所構(gòu)建的有限狀態(tài)機(jī)對(duì)應(yīng)的、用于預(yù)先標(biāo)識(shí)將要與該有限狀態(tài)機(jī)進(jìn)行模式匹配的數(shù)據(jù)流的特征的標(biāo)識(shí)信息。當(dāng)數(shù)個(gè)數(shù)據(jù)流同時(shí)并行地與所述有限狀態(tài)機(jī)進(jìn)行模式匹配時(shí),所述保存對(duì)該分段報(bào)文進(jìn)行模式匹配后的所述有限狀態(tài)機(jī)的狀態(tài),作為所述有限狀態(tài)機(jī)對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)可具體包括對(duì)每個(gè)數(shù)據(jù)流分別保存所述有限狀態(tài)機(jī)與該數(shù)據(jù)流的當(dāng)前分段報(bào)文進(jìn)行模式匹配后的狀態(tài),并在收到下一個(gè)分段報(bào)文時(shí),查找與該分段報(bào)文的特征一致的所述標(biāo)識(shí)信息,根據(jù)該標(biāo)識(shí)信息獲得該分段報(bào)文對(duì)應(yīng)的有限狀態(tài)機(jī)的起始狀態(tài)。
為了進(jìn)一步減少時(shí)延,所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序可具體包括緩存收到的數(shù)據(jù)流的分段報(bào)文并進(jìn)行保序,對(duì)在預(yù)設(shè)的時(shí)延內(nèi)被保序完畢的分段報(bào)文繼續(xù)進(jìn)行后續(xù)的模式匹配處理,并丟棄在預(yù)設(shè)的時(shí)延內(nèi)未被保序的分段報(bào)文。
優(yōu)選地,所述根據(jù)模式匹配結(jié)果對(duì)該分段報(bào)文執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作可具體包括如果模式匹配的結(jié)果為與預(yù)設(shè)的模式相匹配,則根據(jù)預(yù)設(shè)的策略執(zhí)行與該模式對(duì)應(yīng)的操作,如果模式匹配的結(jié)果為與預(yù)設(shè)的模式不匹配,則轉(zhuǎn)發(fā)該分段報(bào)文。
為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明還提供了一種數(shù)據(jù)流的模式匹配裝置,包括保序模塊,用于對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序;有限狀態(tài)機(jī)模塊,用于保存預(yù)先設(shè)定的有限狀態(tài)機(jī);模式匹配模塊,與所述保序模塊及有限狀態(tài)機(jī)模塊連接,用于將保序后的數(shù)據(jù)流的分段報(bào)文與所述預(yù)先設(shè)定的有限狀態(tài)機(jī)進(jìn)行模式匹配;結(jié)果處理模塊,與所述模式匹配模塊連接,用于根據(jù)模式匹配的結(jié)果對(duì)分段報(bào)文執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作;狀態(tài)保存模塊,與所述模式匹配模塊連接,用于保存所述模式匹配模塊對(duì)分段報(bào)文進(jìn)行模式匹配后的有限狀態(tài)機(jī)的狀態(tài),并將該狀態(tài)作為對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)。
在上述技術(shù)方案中,在模式匹配模塊及有限狀態(tài)機(jī)模塊對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配后,通過(guò)狀態(tài)保存模塊保存有限狀態(tài)機(jī)的狀態(tài),并將該狀態(tài)作為對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài),從而能夠?qū)崿F(xiàn)在不執(zhí)行分段報(bào)文的恢復(fù)操作的情況下,仍然能夠完全防范利用數(shù)據(jù)流分段技術(shù)而分散在不同的分段報(bào)文中的攻擊模式;因而,在保序模塊對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序后,并不需要執(zhí)行現(xiàn)有技術(shù)中的將分段報(bào)文組合恢復(fù)成完整報(bào)文的操作,而是直接通過(guò)模式匹配模塊及有限狀態(tài)機(jī)模塊將分段報(bào)文依次與預(yù)設(shè)的有限狀態(tài)機(jī)進(jìn)行模式匹配,從而能夠避免由于對(duì)分段報(bào)文進(jìn)行恢復(fù)而導(dǎo)致的時(shí)延,并大大減少了內(nèi)存占用。
為了對(duì)所述有限狀態(tài)機(jī)模塊中保存的有限狀態(tài)機(jī)進(jìn)行靈活地預(yù)先設(shè)置,上述技術(shù)方案中還可包括有限狀態(tài)機(jī)設(shè)置模塊,與所述有限狀態(tài)機(jī)模塊連接,用于根據(jù)預(yù)設(shè)算法構(gòu)建用于對(duì)預(yù)設(shè)的模式進(jìn)行匹配的有限狀態(tài)機(jī)并根據(jù)預(yù)設(shè)的模式設(shè)定分別用于驅(qū)動(dòng)該有限狀態(tài)機(jī)的各狀態(tài)間遷移的對(duì)應(yīng)的預(yù)設(shè)長(zhǎng)度的字符串,然后保存在所述有限狀態(tài)機(jī)模塊中。
為了對(duì)同時(shí)收到的多個(gè)數(shù)據(jù)流進(jìn)行區(qū)分和標(biāo)識(shí),上述技術(shù)方案中還可包括標(biāo)識(shí)信息設(shè)置模塊,與所述有限狀態(tài)機(jī)模塊連接,用于預(yù)先設(shè)置與所構(gòu)建的有限狀態(tài)機(jī)一一對(duì)應(yīng)的、用于預(yù)先標(biāo)識(shí)將要與該有限狀態(tài)機(jī)進(jìn)行模式匹配的數(shù)據(jù)流的特征的標(biāo)識(shí)信息,并保存在所述有限狀態(tài)機(jī)模塊中。所述模式匹配模塊可為用于對(duì)保序后的數(shù)據(jù)流查找獲得與該數(shù)據(jù)流的特征一致的標(biāo)識(shí)信息,根據(jù)所獲得的標(biāo)識(shí)信息得到與該數(shù)據(jù)流對(duì)應(yīng)的有限狀態(tài)機(jī),將該數(shù)據(jù)流的分段報(bào)文的凈載荷與所得到的有限狀態(tài)機(jī)進(jìn)行模式匹配。為了對(duì)同時(shí)收到的多個(gè)數(shù)據(jù)流進(jìn)行并行處理,所述狀態(tài)保存模塊還可與所述有限狀態(tài)機(jī)模塊連接,用于對(duì)每個(gè)數(shù)據(jù)流分別保存對(duì)應(yīng)的有限狀態(tài)機(jī)與該數(shù)據(jù)流的當(dāng)前分段報(bào)文進(jìn)行模式匹配后的狀態(tài),并在收到下一個(gè)分段報(bào)文時(shí),所述模式匹配模塊查找所述有限狀態(tài)機(jī)模塊中保存的與該分段報(bào)文的特征一致的所述標(biāo)識(shí)信息,根據(jù)該標(biāo)識(shí)信息獲得該分段報(bào)文對(duì)應(yīng)的有限狀態(tài)機(jī)的起始狀態(tài)。
優(yōu)選地,所述模式匹配模塊可包括載荷提取模塊,與所述保序模塊連接,用于對(duì)保序后的分段報(bào)文,依次提取該分段報(bào)文的凈載荷中所述預(yù)設(shè)長(zhǎng)度的字符串;狀態(tài)遷移模塊,與所述載荷提取模塊、有限狀態(tài)機(jī)模塊、狀態(tài)保存模塊以及結(jié)果處理模塊連接,用于將所提取的字符串作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,在該分段報(bào)文的凈載荷提取完畢后,根據(jù)所述有限狀態(tài)機(jī)狀態(tài)遷移過(guò)程中所匹配的模式獲得模式匹配結(jié)果輸出給所述結(jié)果處理模塊,并將有限狀態(tài)機(jī)的狀態(tài)保存到狀態(tài)保存模塊中。
為了進(jìn)一步減少時(shí)延,所述保序模塊可包括定時(shí)器模塊,用于設(shè)置和保存預(yù)設(shè)的時(shí)延;緩存模塊,用于緩存收到的數(shù)據(jù)流的分段報(bào)文;處理模塊,與所述緩存模塊、定時(shí)器模塊及模式匹配模塊連接,用于在預(yù)設(shè)的時(shí)延內(nèi)對(duì)緩存的分段報(bào)文進(jìn)行保序,并丟棄在預(yù)設(shè)的時(shí)延內(nèi)未被保序的分段報(bào)文。
優(yōu)選地,所述結(jié)果處理模塊可包括判斷模塊,與所述模式匹配模塊連接,用于判斷模式匹配的結(jié)果是否為與預(yù)設(shè)的模式匹配;轉(zhuǎn)發(fā)模塊,與所述判斷模塊連接,用于在模式匹配的結(jié)果為與預(yù)設(shè)的模式不匹配時(shí)轉(zhuǎn)發(fā)分段報(bào)文;模式處理模塊,與所述判斷模塊連接,用于在模式匹配的結(jié)果為與預(yù)設(shè)的模式匹配時(shí),按照預(yù)設(shè)的策略,對(duì)分段報(bào)文執(zhí)行與所匹配的模式對(duì)應(yīng)的操作。
綜上所述,本發(fā)明通過(guò)在對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配后保存有限狀態(tài)機(jī)的狀態(tài),并將該狀態(tài)作為對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài);并在對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序后,并不執(zhí)行現(xiàn)有技術(shù)中的將分段報(bào)文組合恢復(fù)成完整報(bào)文的操作,而是直接將分段報(bào)文依次與預(yù)設(shè)的有限狀態(tài)機(jī)進(jìn)行模式匹配,從而能夠?qū)崿F(xiàn)在不執(zhí)行分段報(bào)文的恢復(fù)操作的情況下,仍然能夠完全防范利用數(shù)據(jù)流分段技術(shù)而分散在不同的分段報(bào)文中的攻擊模式,同時(shí)避免由于對(duì)分段報(bào)文進(jìn)行恢復(fù)而導(dǎo)致的報(bào)文轉(zhuǎn)發(fā)時(shí)延,并大大減少了內(nèi)存占用的有益技術(shù)效果。
圖1為本發(fā)明數(shù)據(jù)流的模式匹配方法實(shí)施例一的流程示意圖;圖2為本發(fā)明數(shù)據(jù)流的模式匹配方法實(shí)施例三的流程示意圖;圖3為本發(fā)明數(shù)據(jù)流的模式匹配方法實(shí)施例四的流程示意圖;圖4為本發(fā)明數(shù)據(jù)流的模式匹配方法實(shí)施例五的流程示意圖;圖5為本發(fā)明數(shù)據(jù)流的模式匹配方法實(shí)施例六的流程示意圖;圖6為根據(jù)Aho-Corasick算法構(gòu)建的有限狀態(tài)機(jī)的示意圖;圖7為使用有限狀態(tài)機(jī)對(duì)凈載荷為hxhers的分段報(bào)文進(jìn)行模式匹配的狀態(tài)遷移過(guò)程示意圖;圖8為本發(fā)明數(shù)據(jù)流的模式匹配方法實(shí)施例七的流程示意圖;圖9為本發(fā)明數(shù)據(jù)流的模式匹配方法實(shí)施例八的流程示意圖;
圖10為本發(fā)明數(shù)據(jù)流的模式匹配方法實(shí)施例九的流程示意圖;圖11為本發(fā)明數(shù)據(jù)流的模式匹配裝置實(shí)施例一的結(jié)構(gòu)示意圖;圖12為本發(fā)明數(shù)據(jù)流的模式匹配裝置實(shí)施例二的結(jié)構(gòu)示意圖;圖13為本發(fā)明數(shù)據(jù)流的模式匹配裝置實(shí)施例三的結(jié)構(gòu)示意圖;圖14為本發(fā)明數(shù)據(jù)流的模式匹配裝置實(shí)施例四的結(jié)構(gòu)示意圖;圖15為本發(fā)明數(shù)據(jù)流的模式匹配裝置實(shí)施例五的結(jié)構(gòu)示意圖;圖16為本發(fā)明數(shù)據(jù)流的模式匹配裝置實(shí)施例六的結(jié)構(gòu)示意圖;圖17為本發(fā)明數(shù)據(jù)流的模式匹配裝置實(shí)施例七的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
本發(fā)明的基本構(gòu)思為針對(duì)現(xiàn)有技術(shù)中為了完全防范利用數(shù)據(jù)流分段技術(shù)而分散在不同的分段報(bào)文中的攻擊模式,需要對(duì)分段報(bào)文進(jìn)行保序和恢復(fù),從而導(dǎo)致極大的報(bào)文轉(zhuǎn)發(fā)時(shí)延和內(nèi)存占用;而如果對(duì)分段報(bào)文的保序和恢復(fù)進(jìn)行控制,雖然能夠在一定程度上減少時(shí)延和內(nèi)存占用,但卻不能完全防范分散在不同的分段報(bào)文中的攻擊模式的缺陷,提供一種數(shù)據(jù)流的模式匹配方法及裝置,一方面在對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序后,并不執(zhí)行現(xiàn)有技術(shù)中的將分段報(bào)文組合恢復(fù)成完整報(bào)文的操作,而是直接將分段報(bào)文依次與預(yù)設(shè)的有限狀態(tài)機(jī)進(jìn)行模式匹配;另一方面在對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配后保存有限狀態(tài)機(jī)的狀態(tài),并將該狀態(tài)作為對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài);從而能夠?qū)崿F(xiàn)在不執(zhí)行分段報(bào)文的恢復(fù)操作的情況下,仍然能夠完全防范利用數(shù)據(jù)流分段技術(shù)而分散在不同的分段報(bào)文中的攻擊模式,同時(shí)避免由于對(duì)分段報(bào)文進(jìn)行恢復(fù)而導(dǎo)致的報(bào)文轉(zhuǎn)發(fā)時(shí)延,并大大減少了內(nèi)存占用。
基于上述發(fā)明構(gòu)思,本發(fā)明提供了一種數(shù)據(jù)流的模式匹配方法,首先對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序,然后將保序后的分段報(bào)文依次與預(yù)先設(shè)定的有限狀態(tài)機(jī)進(jìn)行模式匹配;在上述將保序后的分段報(bào)文依次與預(yù)設(shè)的有限狀態(tài)機(jī)進(jìn)行模式匹配的過(guò)程中,對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配后,根據(jù)模式匹配結(jié)果對(duì)該分段報(bào)文執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作,并保存對(duì)該分段報(bào)文進(jìn)行模式匹配后的有限狀態(tài)機(jī)的狀態(tài),將該狀態(tài)作為所述有限狀態(tài)機(jī)對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)。
參見(jiàn)圖1所示的實(shí)施例一的流程示意圖,首先在步驟100中,預(yù)先設(shè)定用于對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行模式匹配的有限狀態(tài)機(jī),并在收到數(shù)據(jù)流的分段報(bào)文后,執(zhí)行以下步驟在步驟101中,對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序;然后在步驟102中,按照保序后的順序取一個(gè)分段報(bào)文與預(yù)設(shè)的有限狀態(tài)機(jī)進(jìn)行模式匹配;繼而在步驟103中,根據(jù)模式匹配的結(jié)果執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作(例如如果未匹配上則轉(zhuǎn)發(fā)該分段報(bào)文,如果匹配上則丟棄該分段報(bào)文等預(yù)設(shè)操作),并保存對(duì)該分段報(bào)文進(jìn)行模式匹配后的有限狀態(tài)機(jī)的狀態(tài),將該狀態(tài)作為所述有限狀態(tài)機(jī)對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài);然后在步驟104中,判斷保序完畢的報(bào)文中是否還有未進(jìn)行模式匹配的報(bào)文,是則執(zhí)行步驟102即取下一個(gè)分段報(bào)文并與預(yù)設(shè)的有限狀態(tài)機(jī)進(jìn)行模式匹配,否則結(jié)束。
在本實(shí)施例一中,預(yù)先設(shè)定有限狀態(tài)機(jī),并對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序操作,然后將保序后的分段報(bào)文依次進(jìn)行模式匹配,并保存每個(gè)分段報(bào)文模式匹配后的有限狀態(tài)機(jī)的狀態(tài),作為對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的有限狀態(tài)機(jī)的起始狀態(tài)。通過(guò)上述操作,在對(duì)分段報(bào)文進(jìn)行保序和模式匹配后,能夠立即執(zhí)行相應(yīng)的處理操作,如報(bào)文轉(zhuǎn)發(fā)或丟棄等操作,而無(wú)需等待對(duì)分段報(bào)文進(jìn)行重組和恢復(fù)后才進(jìn)行模式匹配及相應(yīng)處理操作,大大減少了時(shí)延和占用的內(nèi)存。并且通過(guò)保存本次模式匹配的終狀態(tài),作為對(duì)下個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài),從而不需要對(duì)分段報(bào)文進(jìn)行重組就能夠通過(guò)有限狀態(tài)機(jī)的狀態(tài)的保存和接續(xù)來(lái)實(shí)現(xiàn)模式匹配的連續(xù)性,因此能夠完全防范分散到不同的分段報(bào)文中的攻擊模式。
在本發(fā)明數(shù)據(jù)流的模式匹配方法的實(shí)施例二中,對(duì)上述實(shí)施例一中所述的預(yù)先設(shè)定的有限狀態(tài)機(jī),進(jìn)一步提供了對(duì)所述有限狀態(tài)機(jī)的狀態(tài)及狀態(tài)遷移關(guān)系進(jìn)行預(yù)先設(shè)定的具體方式,即步驟100可具體包括根據(jù)預(yù)設(shè)算法構(gòu)建用于對(duì)預(yù)設(shè)的模式進(jìn)行匹配的有限狀態(tài)機(jī),并根據(jù)預(yù)設(shè)的模式設(shè)定分別用于驅(qū)動(dòng)該有限狀態(tài)機(jī)的各狀態(tài)間遷移的對(duì)應(yīng)的預(yù)設(shè)長(zhǎng)度的字符串。
為了在收到不同的數(shù)據(jù)流時(shí),對(duì)不同的數(shù)據(jù)流進(jìn)行區(qū)分和標(biāo)識(shí),參見(jiàn)圖3所示的本發(fā)明數(shù)據(jù)流的模式匹配方法的實(shí)施例三的流程示意圖,與上述實(shí)施例二的區(qū)別在于,在步驟100與步驟101之間還包括步驟100a,即預(yù)先設(shè)置與所構(gòu)建的有限狀態(tài)機(jī)一一對(duì)應(yīng)的、用于預(yù)先標(biāo)識(shí)將要與該有限狀態(tài)機(jī)進(jìn)行模式匹配的數(shù)據(jù)流的分段報(bào)文的特征的標(biāo)識(shí)信息。
本實(shí)施例三通過(guò)增設(shè)用于標(biāo)識(shí)有限狀態(tài)機(jī)對(duì)應(yīng)的數(shù)據(jù)流的標(biāo)識(shí)信息,使得后續(xù)在收到不同的數(shù)據(jù)流時(shí),能夠根據(jù)該標(biāo)識(shí)信息選擇分別對(duì)應(yīng)的有限狀態(tài)機(jī)進(jìn)行模式匹配。優(yōu)選地,如圖4所示的實(shí)施例四的流程示意圖,與上述實(shí)施例三的區(qū)別在于,在步驟101與步驟102之間還包括步驟101b,即在對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序之后,查找獲得與該數(shù)據(jù)流的特征一致的標(biāo)識(shí)信息,根據(jù)所獲得的標(biāo)識(shí)信息得到與該數(shù)據(jù)流對(duì)應(yīng)的有限狀態(tài)機(jī)。
上述實(shí)施例一至四中,提供了利用有限狀態(tài)機(jī)對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行模式匹配的步驟,有限狀態(tài)機(jī)在模式匹配領(lǐng)域中有廣泛的應(yīng)用,并可根據(jù)不同的算法來(lái)構(gòu)建和進(jìn)行模式匹配,在上述實(shí)施例二中提供了有限狀態(tài)機(jī)的構(gòu)建方式的示例,而在圖5所示的實(shí)施例五的流程示意圖中進(jìn)一步提供了利用有限狀態(tài)機(jī)進(jìn)行模式匹配的流程示例。
參見(jiàn)圖5,與實(shí)施例二的區(qū)別在于具體提供了步驟102即模式匹配的流程,包括在步驟102a中,按照保序后的順序取一個(gè)分段報(bào)文,依次提取該分段報(bào)文的凈載荷中所述預(yù)設(shè)長(zhǎng)度的字符串,并依次作為對(duì)應(yīng)的預(yù)設(shè)的有限狀態(tài)機(jī)的驅(qū)動(dòng),使該有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移;在步驟102b中,在該分段報(bào)文的凈載荷提取完畢后,根據(jù)所述有限狀態(tài)機(jī)的狀態(tài)遷移過(guò)程中所匹配的模式獲得模式匹配結(jié)果。
優(yōu)選地,如圖6所示的實(shí)施例六的流程示意圖所示,與實(shí)施例二的區(qū)別在于具體提供了步驟102即模式匹配的流程,包括在步驟102a1中,按照保序后的順序取一個(gè)分段報(bào)文,依次提取該分段報(bào)文的凈載荷中所述預(yù)設(shè)長(zhǎng)度為1個(gè)字符的字符串(即依次提取該分段報(bào)文的凈載荷中的每個(gè)字符),并依次作為對(duì)應(yīng)的預(yù)設(shè)的有限狀態(tài)機(jī)的驅(qū)動(dòng),使該有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移;在步驟102b1中,在該分段報(bào)文的凈載荷中的全部字符提取完畢后,根據(jù)所述有限狀態(tài)機(jī)的狀態(tài)遷移過(guò)程中所匹配的模式獲得模式匹配結(jié)果。
下面以Aho-Corasick算法為例說(shuō)明有限狀態(tài)機(jī)的構(gòu)建和模式匹配的過(guò)程。
如圖7所示,為根據(jù)Aho-Corasick算法構(gòu)建的有限狀態(tài)機(jī)的示意圖,該有限狀態(tài)機(jī)用于對(duì)模式(即需識(shí)別的分段報(bào)文的凈載荷中包括的字符串)he、she、his、hers進(jìn)行匹配和識(shí)別。其中,狀態(tài)0為初始狀態(tài),狀態(tài)1、3、4、6、8為中間狀態(tài),狀態(tài)2、5、7、9為終狀態(tài)。分段報(bào)文的凈載荷在模式匹配時(shí)作為有限狀態(tài)機(jī)的驅(qū)動(dòng),每輸入預(yù)設(shè)長(zhǎng)度的凈載荷字符串(在本實(shí)施例中長(zhǎng)度為一個(gè)字符),有限狀態(tài)機(jī)的狀態(tài)隨之進(jìn)行遷移,當(dāng)狀態(tài)遷移到有限狀態(tài)機(jī)的終狀態(tài)時(shí),表明模式匹配。
圖7中箭頭指示狀態(tài)遷移方向,箭頭上的字符為該箭頭指示的狀態(tài)遷移的驅(qū)動(dòng)字符。例如狀態(tài)0、1之間的箭頭上的字符為h,表示在狀態(tài)0時(shí),輸入驅(qū)動(dòng)字符h,狀態(tài)0將遷移至狀態(tài)1。
例如模式he經(jīng)歷的狀態(tài)為狀態(tài)0-->狀態(tài)1-->狀態(tài)2;模式she經(jīng)歷的狀態(tài)為狀態(tài)0-->狀態(tài)3-->狀態(tài)4-->狀態(tài)5;模式his經(jīng)歷的狀態(tài)為狀態(tài)0-->狀態(tài)1-->狀態(tài)6-->狀態(tài)7;模式hers經(jīng)歷的狀態(tài)為狀態(tài)0-->狀態(tài)1-->狀態(tài)2-->狀態(tài)8-->狀態(tài)9。
圖8為使用上述有限狀態(tài)機(jī)對(duì)凈載荷為hxhers的分段報(bào)文進(jìn)行模式匹配的狀態(tài)遷移過(guò)程示意圖。起始狀態(tài)為狀態(tài)0,模式匹配中有限狀態(tài)機(jī)的狀態(tài)遷移過(guò)程為狀態(tài)0(輸入h)-->狀態(tài)1(輸入x)-->狀態(tài)0(輸入h)-->狀態(tài)1(輸入e)-->狀態(tài)2(輸入r)-->狀態(tài)8(輸入s)-->狀態(tài)9,其中狀態(tài)2、9為終狀態(tài),表示模式he、hers在該有限狀態(tài)機(jī)與凈載荷hxhers的模式匹配中匹配成功。
如果凈載荷hxhers被攻擊者分散到兩個(gè)分段報(bào)文中,在接收到這兩個(gè)分段報(bào)文并經(jīng)過(guò)保序后,首個(gè)分段報(bào)文的凈載荷是hxh,第二個(gè)分段報(bào)文的凈載荷是ers,則在對(duì)首個(gè)分段報(bào)文進(jìn)行模式匹配的過(guò)程中,起始狀態(tài)為狀態(tài)0,有限狀態(tài)機(jī)的狀態(tài)遷移過(guò)程為狀態(tài)0(輸入h)-->狀態(tài)1(輸入x)-->狀態(tài)0(輸入h)-->狀態(tài)1。在對(duì)首個(gè)分段報(bào)文的模式匹配結(jié)束后,記錄最后一個(gè)字符h輸入后遷移到的狀態(tài)1,對(duì)該首個(gè)分段報(bào)文可執(zhí)行預(yù)設(shè)的對(duì)應(yīng)操作。然后在對(duì)第二個(gè)分段報(bào)文進(jìn)行模式匹配的過(guò)程中,將上次匹配所記錄的狀態(tài)即狀態(tài)1作為起始狀態(tài),第二個(gè)分段報(bào)文凈載荷為ers,起始狀態(tài)為狀態(tài)1,有限狀態(tài)機(jī)的狀態(tài)遷移過(guò)程為狀態(tài)1(輸入e)-->狀態(tài)2(輸入r)-->狀態(tài)8(輸入s)-->狀態(tài)9。其中狀態(tài)2、9為終狀態(tài),表示模式he、hers在凈載荷hxhers中匹配成功。
由上述分析可知,通過(guò)本發(fā)明提供的數(shù)據(jù)流的模式匹配方法,保存本次模式匹配的終狀態(tài),作為對(duì)下個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài),從而對(duì)分散到不同的分段報(bào)文中的模式的匹配結(jié)果與對(duì)在同一個(gè)分段報(bào)文中的模式的匹配結(jié)果完全一致,沒(méi)有漏報(bào),而且不需要對(duì)分段報(bào)文進(jìn)行重組和恢復(fù)。
反之,如果不采用本發(fā)明提供的數(shù)據(jù)流的模式匹配方法,即不記錄上述首個(gè)分段報(bào)文的最后一個(gè)字符h輸入時(shí)有限狀態(tài)機(jī)遷移到的狀態(tài)1,則對(duì)于上述凈載荷為ers的第二個(gè)分段報(bào)文,起始狀態(tài)為狀態(tài)0,有限狀態(tài)機(jī)的狀態(tài)遷移過(guò)程為狀態(tài)0(輸入e)-->狀態(tài)0(輸入r)-->狀態(tài)0(輸入s)-->狀態(tài)0。狀態(tài)0為有限狀態(tài)機(jī)的初始狀態(tài),模式?jīng)]有匹配成功。由此可見(jiàn),在對(duì)數(shù)據(jù)流的分段報(bào)文不進(jìn)行重組和恢復(fù)的情況下,如果不采用本發(fā)明提供的數(shù)據(jù)流的模式匹配方法,則對(duì)分散到不同分段報(bào)文中的攻擊模式的模式匹配的結(jié)果會(huì)導(dǎo)致漏報(bào)。
在具體應(yīng)用環(huán)境中,如果對(duì)時(shí)延性能參數(shù)要求較高,則為了進(jìn)一步地減少時(shí)延,可在上述實(shí)施例的基礎(chǔ)上進(jìn)一步對(duì)數(shù)據(jù)流的分段報(bào)文的保序操作進(jìn)行時(shí)延控制。如圖9所示的實(shí)施例七的流程示意圖,與實(shí)施例1的區(qū)別在于,步驟101可具體為步驟101a,即所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序可具體包括緩存收到的數(shù)據(jù)流的分段報(bào)文并進(jìn)行保序,對(duì)在預(yù)設(shè)的時(shí)延內(nèi)被保序完畢的分段報(bào)文繼續(xù)進(jìn)行后續(xù)的模式匹配處理,并丟棄在預(yù)設(shè)的時(shí)延內(nèi)未被保序的分段報(bào)文。通過(guò)上述操作,對(duì)保序的時(shí)延進(jìn)行了控制,能夠進(jìn)一步減少時(shí)延和內(nèi)存占用。
在圖10所示的本發(fā)明數(shù)據(jù)流的模式匹配方法的實(shí)施例八中,進(jìn)一步提供了對(duì)模式匹配完畢后的分段報(bào)文進(jìn)行處理的具體操作,即步驟103可具體為步驟103a和103b,在步驟103a中,如果模式匹配的結(jié)果為與預(yù)設(shè)的模式相匹配,則根據(jù)預(yù)設(shè)的策略執(zhí)行與該模式對(duì)應(yīng)的操作,如果模式匹配的結(jié)果為與預(yù)設(shè)的模式不匹配,則轉(zhuǎn)發(fā)該分段報(bào)文;然后在步驟103b中,保存對(duì)該分段報(bào)文進(jìn)行模式匹配后的有限狀態(tài)機(jī)的狀態(tài),將該狀態(tài)作為所述有限狀態(tài)機(jī)對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)。
進(jìn)一步地,參見(jiàn)圖11所示的實(shí)施例九的流程示意圖,當(dāng)數(shù)個(gè)數(shù)據(jù)流同時(shí)并行地與所述有限狀態(tài)機(jī)進(jìn)行模式匹配時(shí),步驟103可具體包括步驟103a和步驟103b1,在步驟103a中,如果模式匹配的結(jié)果為與預(yù)設(shè)的模式相匹配,則根據(jù)預(yù)設(shè)的策略執(zhí)行與該模式對(duì)應(yīng)的操作,如果模式匹配的結(jié)果為與預(yù)設(shè)的模式不匹配,則轉(zhuǎn)發(fā)該分段報(bào)文;在步驟103b1中,對(duì)每個(gè)數(shù)據(jù)流分別保存所述有限狀態(tài)機(jī)與該數(shù)據(jù)流的當(dāng)前分段報(bào)文進(jìn)行模式匹配后的狀態(tài),并在收到下一個(gè)分段報(bào)文時(shí),查找與該分段報(bào)文的特征一致的所述標(biāo)識(shí)信息,根據(jù)該標(biāo)識(shí)信息獲得該分段報(bào)文對(duì)應(yīng)的有限狀態(tài)機(jī)的起始狀態(tài)。本實(shí)施例九中,在數(shù)個(gè)數(shù)據(jù)流同時(shí)并行地與同一個(gè)有限狀態(tài)機(jī)進(jìn)行模式匹配時(shí),利用所述標(biāo)識(shí)信息來(lái)標(biāo)識(shí)不同的數(shù)據(jù)流所對(duì)應(yīng)的上次模式匹配所保存的狀態(tài),從而不僅能夠支持多個(gè)數(shù)據(jù)流與多個(gè)有限狀態(tài)機(jī)的模式匹配,還能夠支持多個(gè)數(shù)據(jù)流與一個(gè)有限狀態(tài)機(jī)的模式匹配。
基于上述發(fā)明構(gòu)思,本發(fā)明還提供了一種數(shù)據(jù)流的模式匹配裝置,參見(jiàn)圖12所示的實(shí)施例一的結(jié)構(gòu)示意圖,包括保序模塊1,用于對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序;有限狀態(tài)機(jī)模塊2,用于保存預(yù)先設(shè)定的有限狀態(tài)機(jī);模式匹配模塊3,與保序模塊1及有限狀態(tài)機(jī)模塊2連接,用于將保序后的數(shù)據(jù)流的分段報(bào)文與預(yù)先設(shè)定的有限狀態(tài)機(jī)進(jìn)行模式匹配;結(jié)果處理模塊4,與模式匹配模塊3連接,用于根據(jù)模式匹配的結(jié)果對(duì)分段報(bào)文執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作;狀態(tài)保存模塊5,與模式匹配模塊3連接,用于保存模式匹配模塊3對(duì)分段報(bào)文進(jìn)行模式匹配后的有限狀態(tài)機(jī)的狀態(tài),并將該狀態(tài)作為對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)。
本實(shí)施例一中,在模式匹配模塊3及有限狀態(tài)機(jī)模塊2對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配后,通過(guò)狀態(tài)保存模塊5保存有限狀態(tài)機(jī)的狀態(tài),并將該狀態(tài)作為對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài),從而能夠?qū)崿F(xiàn)在不執(zhí)行分段報(bào)文的恢復(fù)操作的情況下,仍然能夠完全防范利用數(shù)據(jù)流分段技術(shù)而分散在不同的分段報(bào)文中的攻擊模式;因而,在保序模塊1對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序后,并不需要執(zhí)行現(xiàn)有技術(shù)中的將分段報(bào)文組合恢復(fù)成完整報(bào)文的操作,而是直接通過(guò)模式匹配模塊3及有限狀態(tài)機(jī)模塊2將分段報(bào)文依次與預(yù)設(shè)的有限狀態(tài)機(jī)進(jìn)行模式匹配,從而能夠避免由于對(duì)分段報(bào)文進(jìn)行恢復(fù)而導(dǎo)致的時(shí)延,并大大減少了內(nèi)存占用。
在本發(fā)明數(shù)據(jù)流的模式匹配裝置的實(shí)施例二中,如圖13所示,進(jìn)一步提供了有限狀態(tài)機(jī)設(shè)置模塊7,與有限狀態(tài)機(jī)模塊2連接,用于根據(jù)預(yù)設(shè)算法構(gòu)建用于對(duì)預(yù)設(shè)的模式進(jìn)行匹配的有限狀態(tài)機(jī)并根據(jù)預(yù)設(shè)的模式設(shè)定分別用于驅(qū)動(dòng)該有限狀態(tài)機(jī)的各狀態(tài)間遷移的對(duì)應(yīng)的預(yù)設(shè)長(zhǎng)度的字符串,然后保存在有限狀態(tài)機(jī)模塊2中。通過(guò)增設(shè)的有限狀態(tài)機(jī)設(shè)置模塊,能夠有效地對(duì)所述有限狀態(tài)機(jī)進(jìn)行靈活地預(yù)先設(shè)置。
在具體應(yīng)用環(huán)境中,有可能收到多個(gè)數(shù)據(jù)流的分段報(bào)文,需要分別與其對(duì)應(yīng)的多個(gè)有限狀態(tài)機(jī)進(jìn)行模式匹配,因此在本發(fā)明數(shù)據(jù)流的模式匹配裝置的實(shí)施例三中,如圖14所示,進(jìn)一步提供了標(biāo)識(shí)信息設(shè)置模塊6,與有限狀態(tài)機(jī)模塊2連接,用于預(yù)先設(shè)置與所構(gòu)建的有限狀態(tài)機(jī)一一對(duì)應(yīng)的、用于預(yù)先標(biāo)識(shí)將要與該有限狀態(tài)機(jī)進(jìn)行模式匹配的數(shù)據(jù)流的特征的標(biāo)識(shí)信息,并保存在有限狀態(tài)機(jī)模塊2中。通過(guò)增設(shè)標(biāo)識(shí)信息設(shè)置模塊6,將數(shù)據(jù)流與其對(duì)應(yīng)的有限狀態(tài)機(jī)相關(guān)聯(lián),使得在收到數(shù)據(jù)流時(shí)能根據(jù)數(shù)據(jù)流的特征找到其對(duì)應(yīng)的標(biāo)識(shí)信息,進(jìn)而根據(jù)該標(biāo)識(shí)信息找到其對(duì)應(yīng)的有限狀態(tài)機(jī)。因此,模式匹配模塊3可為用于對(duì)保序后的數(shù)據(jù)流查找獲得與該數(shù)據(jù)流的特征一致的標(biāo)識(shí)信息,根據(jù)所獲得的標(biāo)識(shí)信息得到與該數(shù)據(jù)流對(duì)應(yīng)的有限狀態(tài)機(jī),將該數(shù)據(jù)流的分段報(bào)文的凈載荷與所得到的有限狀態(tài)機(jī)進(jìn)行模式匹配。
在本發(fā)明數(shù)據(jù)流的模式匹配裝置的實(shí)施例四中,如圖15所示,模式匹配模塊3包括載荷提取模塊31,與保序模塊1及狀態(tài)遷移模塊32連接,用于對(duì)保序后的分段報(bào)文,依次提取該分段報(bào)文的凈載荷中所述預(yù)設(shè)長(zhǎng)度的字符串;狀態(tài)遷移模塊32,與載荷提取模塊31、有限狀態(tài)機(jī)模塊2、狀態(tài)保存模塊5以及結(jié)果處理模塊4連接,用于將載荷提取模塊31所提取的字符串作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,在該分段報(bào)文的凈載荷提取完畢后,根據(jù)所述有限狀態(tài)機(jī)狀態(tài)遷移過(guò)程中所匹配的模式,獲得模式匹配結(jié)果輸出給結(jié)果處理模塊4,并將有限狀態(tài)機(jī)的狀態(tài)保存到狀態(tài)保存模塊5中。
優(yōu)選地,當(dāng)所述預(yù)先設(shè)定長(zhǎng)度的字符串的長(zhǎng)度為一個(gè)字符時(shí),載荷提取模塊31可為用于對(duì)保序后的分段報(bào)文,依次提取該分段報(bào)文的凈載荷中長(zhǎng)度為1個(gè)字符的字符串的載荷提取模塊;狀態(tài)遷移模塊32可為用于依次提取該分段報(bào)文的凈載荷中的每個(gè)字符,逐一地作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,在該分段報(bào)文的凈載荷中的全部字符提取完畢后根據(jù)所述有限狀態(tài)機(jī)狀態(tài)遷移過(guò)程中所匹配的模式獲得模式匹配結(jié)果的狀態(tài)遷移模塊。
在具體應(yīng)用環(huán)境中,如果對(duì)時(shí)延性能參數(shù)要求較高,則為了進(jìn)一步地減少時(shí)延,可在上述實(shí)施例的基礎(chǔ)上進(jìn)一步對(duì)數(shù)據(jù)流的分段報(bào)文的保序操作進(jìn)行時(shí)延控制。如圖16所示的本發(fā)明數(shù)據(jù)流的模式匹配裝置的實(shí)施例五中,保序模塊1可包括定時(shí)器模塊13,用于設(shè)置和保存預(yù)設(shè)的時(shí)延;緩存模塊12,用于緩存收到的數(shù)據(jù)流的分段報(bào)文;處理模塊11,與緩存模塊12、定時(shí)器模塊13及模式匹配模塊3連接,用于在預(yù)設(shè)的時(shí)延內(nèi)對(duì)緩存的分段報(bào)文進(jìn)行保序,并丟棄在預(yù)設(shè)的時(shí)延內(nèi)未被保序的分段報(bào)文。本實(shí)施例五中,通過(guò)設(shè)置定時(shí)器模塊來(lái)控制保序操作的時(shí)延,能夠進(jìn)一步減少時(shí)延和內(nèi)存占用。
參見(jiàn)圖17所示的實(shí)施例六的結(jié)構(gòu)示意圖,結(jié)果處理模塊4可進(jìn)一步包括判斷模塊41,與模式匹配模塊3連接,用于判斷模式匹配的結(jié)果是否為與預(yù)設(shè)的模式匹配;轉(zhuǎn)發(fā)模塊42,與判斷模塊41連接,用于在模式匹配的結(jié)果為與預(yù)設(shè)的模式不匹配時(shí)轉(zhuǎn)發(fā)分段報(bào)文;模式處理模塊43,與判斷模塊41連接,用于在模式匹配的結(jié)果為與預(yù)設(shè)的模式匹配時(shí),按照預(yù)設(shè)的策略,對(duì)分段報(bào)文執(zhí)行與所匹配的模式對(duì)應(yīng)的操作。本實(shí)施例進(jìn)一步提供了根據(jù)模式匹配的結(jié)果執(zhí)行預(yù)設(shè)相應(yīng)操作的模塊,從而使得在分段報(bào)文模式匹配完畢后能夠迅速根據(jù)預(yù)設(shè)策略執(zhí)行相應(yīng)操作(如轉(zhuǎn)發(fā)或丟棄),減少報(bào)文轉(zhuǎn)發(fā)時(shí)延和內(nèi)存占用。
優(yōu)選地,當(dāng)數(shù)個(gè)數(shù)據(jù)流同時(shí)并行地與所述有限狀態(tài)機(jī)進(jìn)行模式匹配時(shí),如圖18所示的實(shí)施例七的結(jié)構(gòu)示意圖,狀態(tài)保存模塊5還可與有限狀態(tài)機(jī)模塊2連接,用于對(duì)每個(gè)數(shù)據(jù)流分別保存對(duì)應(yīng)的有限狀態(tài)機(jī)與該數(shù)據(jù)流的當(dāng)前分段報(bào)文進(jìn)行模式匹配后的狀態(tài),并在收到下一個(gè)分段報(bào)文時(shí),查找所述有限狀態(tài)機(jī)模塊中保存的與該分段報(bào)文的特征一致的所述標(biāo)識(shí)信息,根據(jù)該標(biāo)識(shí)信息獲得該分段報(bào)文對(duì)應(yīng)的有限狀態(tài)機(jī)的起始狀態(tài)。本實(shí)施例七中,在數(shù)個(gè)數(shù)據(jù)流同時(shí)并行地與同一個(gè)有限狀態(tài)機(jī)進(jìn)行模式匹配時(shí),利用有限狀態(tài)機(jī)模塊2中保存的標(biāo)識(shí)信息,來(lái)標(biāo)識(shí)狀態(tài)保存模塊5中所保存的不同的數(shù)據(jù)流所對(duì)應(yīng)的上次模式匹配所保存的狀態(tài),從而不僅能夠支持多個(gè)數(shù)據(jù)流與多個(gè)有限狀態(tài)機(jī)的模式匹配,還能夠支持多個(gè)數(shù)據(jù)流與一個(gè)有限狀態(tài)機(jī)的模式匹配。
以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)本發(fā)明作限制性理解。盡管參照上述較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而這種修改或者等同替換并不脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種數(shù)據(jù)流的模式匹配方法,其特征在于,包括在對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序后,將該數(shù)據(jù)流的分段報(bào)文依次與預(yù)先設(shè)定的有限狀態(tài)機(jī)進(jìn)行模式匹配;其中,在對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配后,根據(jù)模式匹配結(jié)果對(duì)該分段報(bào)文執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作,并保存對(duì)該分段報(bào)文進(jìn)行模式匹配后的有限狀態(tài)機(jī)的狀態(tài),將該狀態(tài)作為所述有限狀態(tài)機(jī)對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序之前執(zhí)行所述預(yù)先設(shè)定有限狀態(tài)機(jī)的操作,具體包括根據(jù)預(yù)設(shè)算法構(gòu)建用于對(duì)預(yù)設(shè)的模式進(jìn)行匹配的有限狀態(tài)機(jī),并根據(jù)預(yù)設(shè)的模式設(shè)定分別用于驅(qū)動(dòng)該有限狀態(tài)機(jī)的各狀態(tài)間遷移的對(duì)應(yīng)的預(yù)設(shè)長(zhǎng)度的字符串。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于在預(yù)先設(shè)定所述有限狀態(tài)機(jī)之后,在所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序之前,還包括以下操作預(yù)先設(shè)置與所構(gòu)建的有限狀態(tài)機(jī)一一對(duì)應(yīng)的、用于預(yù)先標(biāo)識(shí)將要與該有限狀態(tài)機(jī)進(jìn)行模式匹配的數(shù)據(jù)流的特征的標(biāo)識(shí)信息;在所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序之后,在所述將該數(shù)據(jù)流的分段報(bào)文依次與預(yù)先設(shè)定的有限狀態(tài)機(jī)進(jìn)行模式匹配之前,還包括以下操作查找獲得與該數(shù)據(jù)流的特征一致的標(biāo)識(shí)信息,根據(jù)所獲得的標(biāo)識(shí)信息得到與該數(shù)據(jù)流對(duì)應(yīng)的有限狀態(tài)機(jī)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于在預(yù)先設(shè)定所述有限狀態(tài)機(jī)之后,在所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序之前,還包括以下操作預(yù)先設(shè)置與所構(gòu)建的有限狀態(tài)機(jī)對(duì)應(yīng)的、用于預(yù)先標(biāo)識(shí)將要與該有限狀態(tài)機(jī)進(jìn)行模式匹配的數(shù)據(jù)流的特征的標(biāo)識(shí)信息;當(dāng)數(shù)個(gè)數(shù)據(jù)流同時(shí)并行地與所述有限狀態(tài)機(jī)進(jìn)行模式匹配時(shí),所述保存對(duì)該分段報(bào)文進(jìn)行模式匹配后的有限狀態(tài)機(jī)的狀態(tài),將該狀態(tài)作為所述有限狀態(tài)機(jī)對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)具體包括對(duì)每個(gè)數(shù)據(jù)流分別保存所述有限狀態(tài)機(jī)與該數(shù)據(jù)流的當(dāng)前分段報(bào)文進(jìn)行模式匹配后的狀態(tài),并在收到下一個(gè)分段報(bào)文時(shí),查找與該分段報(bào)文的特征一致的所述標(biāo)識(shí)信息,根據(jù)該標(biāo)識(shí)信息獲得該分段報(bào)文對(duì)應(yīng)的有限狀態(tài)機(jī)的起始狀態(tài)。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配具體包括依次提取該分段報(bào)文的凈載荷中所述預(yù)設(shè)長(zhǎng)度的字符串作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,在該分段報(bào)文的凈載荷提取完畢后,根據(jù)所述有限狀態(tài)機(jī)狀態(tài)遷移過(guò)程中所匹配的模式獲得模式匹配結(jié)果。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于所述預(yù)設(shè)長(zhǎng)度為一個(gè)字符;所述將該分段報(bào)文的凈載荷作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移并獲得模式匹配結(jié)果具體包括依次提取該分段報(bào)文的凈載荷中的每個(gè)字符,逐一地作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,在該分段報(bào)文的凈載荷中的全部字符提取完畢后根據(jù)所述有限狀態(tài)機(jī)狀態(tài)遷移過(guò)程中所匹配的模式獲得模式匹配結(jié)果。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序具體包括緩存收到的數(shù)據(jù)流的分段報(bào)文并進(jìn)行保序,對(duì)在預(yù)設(shè)的時(shí)延內(nèi)被保序完畢的分段報(bào)文繼續(xù)進(jìn)行后續(xù)的模式匹配處理,并丟棄在預(yù)設(shè)的時(shí)延內(nèi)未被保序的分段報(bào)文。
8.根據(jù)權(quán)利要求1-7任一所述的方法,其特征在于,所述根據(jù)模式匹配結(jié)果對(duì)該分段報(bào)文執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作具體包括如果模式匹配的結(jié)果為與預(yù)設(shè)的模式相匹配,則根據(jù)預(yù)設(shè)的策略執(zhí)行與該模式對(duì)應(yīng)的操作,如果模式匹配的結(jié)果為與預(yù)設(shè)的模式不匹配,則轉(zhuǎn)發(fā)該分段報(bào)文。
9.一種數(shù)據(jù)流的模式匹配裝置,其特征在于,包括保序模塊,用于對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序;有限狀態(tài)機(jī)模塊,用于保存預(yù)先設(shè)定的有限狀態(tài)機(jī);模式匹配模塊,與所述保序模塊及有限狀態(tài)機(jī)模塊連接,用于將保序后的數(shù)據(jù)流的分段報(bào)文與所述預(yù)先設(shè)定的有限狀態(tài)機(jī)進(jìn)行模式匹配;結(jié)果處理模塊,與所述模式匹配模塊連接,用于根據(jù)模式匹配的結(jié)果對(duì)分段報(bào)文執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作;狀態(tài)保存模塊,與所述模式匹配模塊連接,用于保存所述模式匹配模塊對(duì)分段報(bào)文進(jìn)行模式匹配后的有限狀態(tài)機(jī)的狀態(tài),并將該狀態(tài)作為對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于還包括有限狀態(tài)機(jī)設(shè)置模塊,與所述有限狀態(tài)機(jī)模塊連接,用于根據(jù)預(yù)設(shè)算法構(gòu)建用于對(duì)預(yù)設(shè)的模式進(jìn)行匹配的有限狀態(tài)機(jī)并根據(jù)預(yù)設(shè)的模式設(shè)定分別用于驅(qū)動(dòng)該有限狀態(tài)機(jī)的各狀態(tài)間遷移的對(duì)應(yīng)的預(yù)設(shè)長(zhǎng)度的字符串,然后保存在所述有限狀態(tài)機(jī)模塊中。
11.根據(jù)權(quán)利要求9所述的裝置,其特征在于還包括標(biāo)識(shí)信息設(shè)置模塊,與所述有限狀態(tài)機(jī)模塊連接,用于預(yù)先設(shè)置與所構(gòu)建的有限狀態(tài)機(jī)一一對(duì)應(yīng)的、用于預(yù)先標(biāo)識(shí)將要與該有限狀態(tài)機(jī)進(jìn)行模式匹配的數(shù)據(jù)流的特征的標(biāo)識(shí)信息,并保存在所述有限狀態(tài)機(jī)模塊中;所述模式匹配模塊為用于對(duì)保序后的數(shù)據(jù)流查找獲得與該數(shù)據(jù)流的特征一致的標(biāo)識(shí)信息,根據(jù)所獲得的標(biāo)識(shí)信息得到與該數(shù)據(jù)流對(duì)應(yīng)的有限狀態(tài)機(jī),將該數(shù)據(jù)流的分段報(bào)文的凈載荷與所得到的有限狀態(tài)機(jī)進(jìn)行模式匹配。
12.根據(jù)權(quán)利要求9所述的裝置,其特征在于還包括標(biāo)識(shí)信息設(shè)置模塊,與所述有限狀態(tài)機(jī)模塊連接,用于預(yù)先設(shè)置與所構(gòu)建的有限狀態(tài)機(jī)對(duì)應(yīng)的、用于預(yù)先標(biāo)識(shí)將要與該有限狀態(tài)機(jī)進(jìn)行模式匹配的數(shù)據(jù)流的特征的標(biāo)識(shí)信息,并保存在所述有限狀態(tài)機(jī)模塊中;所述狀態(tài)保存模塊還與所述有限狀態(tài)機(jī)模塊連接,用于對(duì)每個(gè)數(shù)據(jù)流分別保存對(duì)應(yīng)的有限狀態(tài)機(jī)與該數(shù)據(jù)流的當(dāng)前分段報(bào)文進(jìn)行模式匹配后的狀態(tài),并在收到下一個(gè)分段報(bào)文時(shí),所述模式匹配模塊查找所述有限狀態(tài)機(jī)模塊中保存的與該分段報(bào)文的特征一致的所述標(biāo)識(shí)信息,根據(jù)該標(biāo)識(shí)信息獲得該分段報(bào)文對(duì)應(yīng)的有限狀態(tài)機(jī)的起始狀態(tài)。
13.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述模式匹配模塊包括載荷提取模塊,與所述保序模塊連接,用于對(duì)保序后的分段報(bào)文,依次提取該分段報(bào)文的凈載荷中所述預(yù)設(shè)長(zhǎng)度的字符串;狀態(tài)遷移模塊,與所述載荷提取模塊、有限狀態(tài)機(jī)模塊、狀態(tài)保存模塊以及結(jié)果處理模塊連接,用于將所提取的字符串作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,在該分段報(bào)文的凈載荷提取完畢后,根據(jù)所述有限狀態(tài)機(jī)狀態(tài)遷移過(guò)程中所匹配的模式獲得模式匹配結(jié)果輸出給所述結(jié)果處理模塊,并將有限狀態(tài)機(jī)的狀態(tài)保存到狀態(tài)保存模塊中。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于所述載荷提取模塊為用于對(duì)保序后的分段報(bào)文,依次提取該分段報(bào)文的凈載荷中長(zhǎng)度為1個(gè)字符的字符串的載荷提取模塊;所述狀態(tài)遷移模塊為用于依次提取該分段報(bào)文的凈載荷中的每個(gè)字符,逐一地作為所述有限狀態(tài)機(jī)的驅(qū)動(dòng),使所述有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,在該分段報(bào)文的凈載荷中的全部字符提取完畢后根據(jù)所述有限狀態(tài)機(jī)狀態(tài)遷移過(guò)程中所匹配的模式獲得模式匹配結(jié)果的狀態(tài)遷移模塊。
15.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述保序模塊包括定時(shí)器模塊,用于設(shè)置和保存預(yù)設(shè)的時(shí)延;緩存模塊,用于緩存收到的數(shù)據(jù)流的分段報(bào)文;處理模塊,與所述緩存模塊、定時(shí)器模塊及模式匹配模塊連接,用于在預(yù)設(shè)的時(shí)延內(nèi)對(duì)緩存的分段報(bào)文進(jìn)行保序,并丟棄在預(yù)設(shè)的時(shí)延內(nèi)未被保序的分段報(bào)文。
16.根據(jù)權(quán)利要求9-15任一所述的裝置,其特征在于,所述結(jié)果處理模塊包括判斷模塊,與所述模式匹配模塊連接,用于判斷模式匹配的結(jié)果是否為與預(yù)設(shè)的模式匹配;轉(zhuǎn)發(fā)模塊,與所述判斷模塊連接,用于在模式匹配的結(jié)果為與預(yù)設(shè)的模式不匹配時(shí)轉(zhuǎn)發(fā)分段報(bào)文;模式處理模塊,與所述判斷模塊連接,用于在模式匹配的結(jié)果為與預(yù)設(shè)的模式匹配時(shí),按照預(yù)設(shè)的策略,對(duì)分段報(bào)文執(zhí)行與所匹配的模式對(duì)應(yīng)的操作。
全文摘要
本發(fā)明公開(kāi)了一種數(shù)據(jù)流的模式匹配方法,包括在對(duì)收到的數(shù)據(jù)流的分段報(bào)文進(jìn)行保序后,將該數(shù)據(jù)流的分段報(bào)文依次與預(yù)先設(shè)定的有限狀態(tài)機(jī)進(jìn)行模式匹配;其中,在對(duì)每一個(gè)分段報(bào)文進(jìn)行模式匹配后,根據(jù)模式匹配結(jié)果對(duì)該分段報(bào)文執(zhí)行預(yù)設(shè)的對(duì)應(yīng)的操作,并保存對(duì)該分段報(bào)文進(jìn)行模式匹配后的所述有限狀態(tài)機(jī)的狀態(tài),作為所述有限狀態(tài)機(jī)對(duì)下一個(gè)分段報(bào)文進(jìn)行模式匹配的起始狀態(tài)。本發(fā)明還公開(kāi)了一種數(shù)據(jù)流的模式匹配裝置。本發(fā)明能夠完全防范利用數(shù)據(jù)流分段技術(shù)而分散在不同的分段報(bào)文中的攻擊模式,并且不需要對(duì)分段報(bào)文進(jìn)行恢復(fù),從而能夠大大減少內(nèi)存占用和報(bào)文轉(zhuǎn)發(fā)時(shí)延。
文檔編號(hào)H04L29/06GK1980240SQ20061016198
公開(kāi)日2007年6月13日 申請(qǐng)日期2006年12月8日 優(yōu)先權(quán)日2006年12月8日
發(fā)明者陳忠良 申請(qǐng)人:杭州華為三康技術(shù)有限公司