多重應(yīng)用協(xié)議識(shí)別方法和裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種多重應(yīng)用協(xié)議識(shí)別方法和應(yīng)用協(xié)議識(shí)別引擎。多重應(yīng)用協(xié)議識(shí)別方法基于XML語(yǔ)言提供了特征條件、解密套件條件、應(yīng)用協(xié)議特征、應(yīng)用協(xié)議命中動(dòng)作、多種檢測(cè)識(shí)別模型及相應(yīng)的規(guī)則描述方法;應(yīng)用協(xié)議識(shí)別引擎包括強(qiáng)關(guān)聯(lián)識(shí)別模塊、單包識(shí)別模塊、多包識(shí)別模塊、算法解密識(shí)別模塊、通道提取識(shí)別模塊等識(shí)別模塊、配置模塊以及應(yīng)用協(xié)議特征匹配單元、全流表存儲(chǔ)單元、半流關(guān)聯(lián)表存儲(chǔ)單元、規(guī)則庫(kù)存儲(chǔ)單元。本發(fā)明解決了靈活的規(guī)則描述配置機(jī)制以及在線、精確和全面識(shí)別應(yīng)用協(xié)議和加密流量識(shí)別的問(wèn)題。
【專利說(shuō)明】多重應(yīng)用協(xié)議識(shí)別方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于網(wǎng)絡(luò)應(yīng)用流量識(shí)別與分類【技術(shù)領(lǐng)域】,特別是涉及一種多重應(yīng)用協(xié)議識(shí)別方法和裝置。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)應(yīng)用流量的識(shí)別與分類是內(nèi)容過(guò)濾、流量分析、帶寬管理、安全通信及互聯(lián)網(wǎng)監(jiān)管和運(yùn)維的基礎(chǔ)。在網(wǎng)絡(luò)安全領(lǐng)域,待識(shí)別和分類的網(wǎng)絡(luò)應(yīng)用流量主要可分為普通應(yīng)用流量、入侵/攻擊/滲透流量、病毒/木馬/蠕蟲(chóng)/僵尸網(wǎng)絡(luò)異常流量、匿名通信流量等,其中普通應(yīng)用流量又可分為明文流量、加密流量、Web流量和P2P流量等。
[0003]由于下一代高速網(wǎng)絡(luò)中應(yīng)用流量組成的復(fù)雜性及應(yīng)用協(xié)議特征和流量行為特征的多樣性,特別是流量透?jìng)?、偽裝、分片和加密的隱蔽性,使得應(yīng)用協(xié)議識(shí)別引擎的設(shè)計(jì)面臨著嚴(yán)峻挑戰(zhàn)。一方面,傳統(tǒng)的基于端口的應(yīng)用協(xié)議識(shí)別方法已不能滿足對(duì)應(yīng)用流量進(jìn)行精確分類的需要,需要引入基于特征關(guān)鍵字的深度包檢測(cè)方法和基于應(yīng)用流量行為特征的深度流檢測(cè)方法,同時(shí)應(yīng)支持端口特征、IP特征、單關(guān)鍵字特征、多關(guān)鍵字特征、正則表達(dá)式特征、通道關(guān)聯(lián)特征、包長(zhǎng)特征、包方向特征和包位置特征等;另一方面,為了達(dá)到應(yīng)用流量的高識(shí)別率,需要綜合運(yùn)用上述多種應(yīng)用協(xié)議識(shí)別方法并支持單包匹配、多包匹配、強(qiáng)/弱關(guān)聯(lián)匹配、通道提取匹配、算法解密匹配等多種檢測(cè)識(shí)別模型。
[0004]為了實(shí)現(xiàn)上述應(yīng)用協(xié)議識(shí)別需求,并保證應(yīng)用協(xié)議的可配置、可升級(jí)、可擴(kuò)展性,將應(yīng)用協(xié)議識(shí)別的邏輯功能實(shí)現(xiàn)與應(yīng)用協(xié)議識(shí)別特征的描述進(jìn)行分離,應(yīng)用協(xié)議識(shí)別引擎應(yīng)提供一種應(yīng)用協(xié)議識(shí)別規(guī)則的描述和配置機(jī)制,并支持豐富的應(yīng)用協(xié)議特征和檢測(cè)識(shí)別模型描述語(yǔ)法。
[0005]應(yīng)用協(xié)議識(shí)別引擎是各類網(wǎng)絡(luò)安全網(wǎng)關(guān)的核心部件,用以對(duì)報(bào)文進(jìn)行分類、業(yè)務(wù)識(shí)別和應(yīng)用感知,是分組轉(zhuǎn)發(fā)、QoS隊(duì)列調(diào)度、負(fù)載均衡、內(nèi)容過(guò)濾和網(wǎng)絡(luò)測(cè)量的前提和基礎(chǔ),其位于每報(bào)文處理的關(guān)鍵路徑上,在高速網(wǎng)絡(luò)環(huán)境下其匹配速度和分類精度將是整個(gè)系統(tǒng)性能的瓶頸之一。因此,應(yīng)用協(xié)議識(shí)別引擎必須同時(shí)保證在線識(shí)別能力、高精確度和高識(shí)別率。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是:解決現(xiàn)有網(wǎng)絡(luò)應(yīng)用流量識(shí)別與分類技術(shù)存在的上述問(wèn)題,提供一種應(yīng)用協(xié)議識(shí)別方法和裝置,可以在線、精確和全面識(shí)別各種網(wǎng)絡(luò)應(yīng)用流量。
[0007]為實(shí)現(xiàn)上述目的,本發(fā)明基于XML語(yǔ)言提供了一種多重應(yīng)用協(xié)議識(shí)別方法和應(yīng)用協(xié)議識(shí)別引擎,其中,多重應(yīng)用協(xié)議識(shí)別方法提供了特征條件、解密套件條件、應(yīng)用協(xié)議特征、應(yīng)用協(xié)議命中動(dòng)作、檢測(cè)識(shí)別模型及相應(yīng)的描述方法;應(yīng)用協(xié)議識(shí)別引擎包括:應(yīng)用協(xié)議特征匹配單元、全流表存儲(chǔ)單元、半流關(guān)聯(lián)表存儲(chǔ)單元、規(guī)則庫(kù)存儲(chǔ)單元、識(shí)別模塊和配置模塊。
[0008]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,特征條件指定應(yīng)用協(xié)議所應(yīng)滿足的基本條件約束,用以描述應(yīng)用協(xié)議基本特征。特征條件包括特征字節(jié)碼條件〈hex〉、特征字符串條件〈string〉、特征偏移量條件〈offset〉、特征長(zhǎng)度條件〈length〉、特征字節(jié)序條件〈endian〉、特征運(yùn)算符條件〈operator〉、IP條件<ip>、端口條件〈port〉和正則表達(dá)式條件<pcre>。
[0009]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,特征字節(jié)碼條件〈hex〉指定應(yīng)用協(xié)議特征的內(nèi)容由字節(jié)碼描述,其內(nèi)容取值為由十六進(jìn)制字符組成并且固定為網(wǎng)絡(luò)字節(jié)序的位串,并且由type屬性指定內(nèi)容取值的類型和格式。其中,type屬性的取值包括single單值類型、range區(qū)間類型、singleSet單值列表類型和rangeSet單值/區(qū)間混合列表類型。
[0010]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,特征字符串條件〈string〉指定應(yīng)用協(xié)議特征的內(nèi)容由字符串進(jìn)行描述,其內(nèi)容取值為ASCII字符串,并且由case屬性指定內(nèi)容取值是否為大小寫(xiě)敏感格式。其中,case屬性的取值包括yes大小寫(xiě)敏感格式和no大小寫(xiě)不敏感格式。
[0011]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,特征偏移量條件〈offset〉指定應(yīng)用協(xié)議特征的特征字節(jié)碼條件〈hex〉或特征字符串條件〈string〉的位置偏移量,其內(nèi)容取值為整型值,并且由relative屬性指定位置偏移量的相對(duì)參考方向。其中,〈offset〉的內(nèi)容取值為-1表不位置偏移不固定,非負(fù)值則表不確定的位置偏移!relative屬性的取值包括head數(shù)據(jù)包載荷頭位置、last上一個(gè)應(yīng)用協(xié)議特征結(jié)束位置和tail數(shù)據(jù)包載荷尾位置。
[0012]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,特征長(zhǎng)度條件〈length〉指定應(yīng)用協(xié)議特征的特征字節(jié)碼條件〈hex〉或特征字符串條件〈string〉內(nèi)容的長(zhǎng)度,其內(nèi)容取值為非負(fù)整型值。
[0013]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,特征字節(jié)序條件〈endian〉指定數(shù)據(jù)包載荷中由特征偏移量條件〈offset〉和特征長(zhǎng)度條件〈length〉指定位置處的內(nèi)容的字節(jié)序?!磂ndian〉的內(nèi)容取值包括big大端字節(jié)序和little小端字節(jié)序。
[0014]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,特征運(yùn)算符條件〈operator〉指定數(shù)據(jù)包載荷中由特征偏移量條件〈offset〉、特征長(zhǎng)度條件〈length〉和特征字節(jié)序條件〈endian〉描述位置處的內(nèi)容與特征字節(jié)碼條件〈hex〉或特征字符串條件〈string〉的內(nèi)容所應(yīng)滿足的運(yùn)算關(guān)系?!磑perator〉的內(nèi)容取值包括eq等于、ne不等于、It小于、gt大于、inRange屬于區(qū)間、ninRange不屬于區(qū)間、inset屬于集合和ninSet不屬于集合。
[0015]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,IP條件<ip>指定應(yīng)用協(xié)議特征為IP地址,其內(nèi)容取值為IPv4或IPv6格式的IP地址,并且由vet和side屬性設(shè)置IP地址的版本和歸屬端。其中,ver屬性的取值包括ipv4和ipv6,其中,ipv4指定IP地址為帶掩碼的IPv4版本格式,ipv6指定IP地址為IPv6版本格式;side屬性的取值包括local、remote和either,其中,local指定數(shù)據(jù)包的源IP地址,remote指定數(shù)據(jù)包的目的IP地址,either指定數(shù)據(jù)包的源或目的IP地址。
[0016]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,端口條件〈port〉指定應(yīng)用協(xié)議特征為端口,并且由type和side屬性設(shè)定端口的格式和歸屬端。其中,type屬性的取值包括single和range,其中,single指定十進(jìn)制格式的單個(gè)端口,range指定十進(jìn)制格式的端口范圍;side屬性的取值包括local、remote和either,其中,local指定數(shù)據(jù)包的源端口,remote指定數(shù)據(jù)包的目的端口,either指定數(shù)據(jù)包的源或目的端口。
[0017]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,正則表達(dá)式條件<pcre>指定應(yīng)用協(xié)議特征為正則表達(dá)式,其內(nèi)容取值為標(biāo)準(zhǔn)PCRE格式的正則表達(dá)式。
[0018]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,解密套件條件指定對(duì)數(shù)據(jù)包載荷進(jìn)行解密以驗(yàn)證應(yīng)用協(xié)議特征時(shí)所使用的解密算法套件,為應(yīng)用協(xié)議特征的依賴條件。解密套件條件包括簡(jiǎn)單解密算法條件〈crypto〉、解密符號(hào)表達(dá)式條件〈cryptosymexp〉、密鑰類型條件〈keytype〉、靜態(tài)密鑰條件〈stakey〉、動(dòng)態(tài)密鑰條件〈dynkey〉和解密模式條件〈cryptomode〉等基本密碼算法條件、靜態(tài)解密條件〈staticDecrypt〉和動(dòng)態(tài)解密條件〈dynamicDecrypt〉。
[0019]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,簡(jiǎn)單解密算法條件〈crypto〉指定靜態(tài)或動(dòng)態(tài)解密時(shí)使用的解密密碼算法?!碿rypto〉的內(nèi)容取值包括異或X0R、加法ADD和減法SUB。
[0020]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,解密符號(hào)表達(dá)式條件〈cryptosymexp〉指定靜態(tài)或動(dòng)態(tài)解密時(shí)使用的解密運(yùn)算符號(hào)表達(dá)式,其內(nèi)容由密鑰符號(hào)k、當(dāng)前密文符號(hào)C、下一密文符號(hào)η、整數(shù)常量及異或運(yùn)算符號(hào)~、加法運(yùn)算符號(hào)+、減法運(yùn)算符號(hào)-和括號(hào)組成。〈cryptosymexp〉用以描述復(fù)雜的迭代解密模式場(chǎng)景。
[0021]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,密鑰類型條件〈keytype〉指定解密密鑰的類型。〈keytype〉的內(nèi)容取值包括block分組密碼密鑰類型和stream流密碼密鑰類型。
[0022]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,靜態(tài)密鑰條件〈stakey〉指定解密使用的靜態(tài)密鑰?!磗takey〉由特征字節(jié)碼條件〈hex〉和特征長(zhǎng)度條件〈length〉組成。其中,〈hex〉的type屬性的取值只能為single單值類型和singleSet單值列表類型,分別表示block分組密碼密鑰類型的單密鑰和stream流密碼密鑰類型的流密鑰。
[0023]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,動(dòng)態(tài)密鑰條件〈dynkey〉由特征偏移量條件〈offset〉、特征長(zhǎng)度條件〈length〉和特征字節(jié)序條件〈endian〉組成?!磀ynkey〉指定動(dòng)態(tài)密鑰為從數(shù)據(jù)包載荷的〈offset〉處提取的長(zhǎng)度為〈length〉并且字節(jié)序?yàn)椤磂ndian〉的字節(jié)碼。
[0024]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,解密模式條件〈cryptomode〉指定靜態(tài)或動(dòng)態(tài)解密的操作模式?!碿ryptomode〉的內(nèi)容取值包括ecb簡(jiǎn)單模式和cbc迭代模式。其中,I)對(duì)于ecb模式,當(dāng)密鑰類型條件〈keytype〉設(shè)置為block類型時(shí),ecb模式使用簡(jiǎn)單解密算法條件〈crypto〉和單密鑰〈stakey〉或〈dynkey〉對(duì)數(shù)據(jù)包載荷中指定位置處的內(nèi)容按密鑰長(zhǎng)度條件〈length〉分組依次進(jìn)行解密;當(dāng)密鑰類型條件〈keytype〉設(shè)置為stream類型時(shí),ecb模式使用簡(jiǎn)單解密算法〈crypto〉和流密鑰〈stakey〉或〈dynkey〉對(duì)數(shù)據(jù)包載荷中指定位置處的內(nèi)容按字節(jié)分組依次進(jìn)行解密。2)對(duì)于cbc模式,當(dāng)密鑰類型條件〈keytype〉設(shè)置為block類型時(shí),cbc模式使用解密符號(hào)表達(dá)式條件〈cryptosymexp〉指定的迭代解密算法和單密鑰〈stakey〉或〈dynkey〉對(duì)數(shù)據(jù)包載荷中指定位置處的內(nèi)容按密鑰長(zhǎng)度條件〈length〉分組依次進(jìn)行解密;當(dāng)密鑰類型條件〈keytype〉設(shè)置為stream類型時(shí),cbc模式使用解密符號(hào)表達(dá)式條件〈cryptosymexp〉指定的迭代解密算法和流密鑰〈stakey〉或〈dynkey〉對(duì)數(shù)據(jù)包載荷中指定位置處的內(nèi)容按字節(jié)分組依次進(jìn)行解密。
[0025]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,靜態(tài)解密條件〈staticDecrypt〉指定對(duì)數(shù)據(jù)包載荷中的應(yīng)用協(xié)議特征位置處的內(nèi)容進(jìn)行靜態(tài)解密時(shí)使用的解密套件,其內(nèi)容由簡(jiǎn)單解密算法條件〈crypto〉、解密符號(hào)表達(dá)式條件〈cryptosymexp〉、密鑰類型條件〈keytype〉、靜態(tài)密鑰條件〈stakey〉和解密模式條件〈cryptomode〉構(gòu)成。[0026]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,動(dòng)態(tài)解密條件〈dynamicDecrypt〉指定對(duì)數(shù)據(jù)包載荷中的應(yīng)用協(xié)議特征位置處的內(nèi)容進(jìn)行動(dòng)態(tài)解密時(shí)使用的解密套件,其內(nèi)容由簡(jiǎn)單解密算法條件〈crypto〉、解密符號(hào)表達(dá)式條件〈cryptosymexp〉、密鑰類型條件〈keytype〉、動(dòng)態(tài)密鑰條件〈dynkey〉、解密模式條件〈cryptomode〉組成。若動(dòng)態(tài)密鑰為密文,則〈dynamicDecrypt〉還應(yīng)包括靜態(tài)解密條件〈staticDecrypt〉以將動(dòng)態(tài)密鑰還原為明文。
[0027]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,應(yīng)用協(xié)議特征包括關(guān)鍵字簽名基本特征〈sigKeyword〉、包長(zhǎng)簽名基本特征〈sigPayloadLen〉、IP簽名基本特征〈siglp〉、端口簽名基本特征〈sigPort〉、正則表達(dá)式簽名基本特征〈sigPere〉、關(guān)聯(lián)基本特征〈relate〉和算法插件基本特征〈sigAlgoPlugin〉等應(yīng)用協(xié)議基本特征和數(shù)據(jù)包特征〈packet〉。
[0028]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,關(guān)鍵字簽名基本特征〈sigKeyword〉的內(nèi)容由特征偏移量條件〈offset〉、特征長(zhǎng)度條件〈length〉、特征字節(jié)序條件〈endian〉、特征運(yùn)算符條件〈operator〉、特征字節(jié)碼條件〈hex〉或特征字符串條件〈string〉、靜態(tài)解密條件〈staticDecrypt〉或動(dòng)態(tài)解密條件〈dynamicDecrypt〉組成?!磗igKeyword〉描述了在數(shù)據(jù)包載荷的偏移位置〈offset〉處提取的長(zhǎng)度〈length〉的字節(jié)碼(若指定了〈staticDecrypt〉或〈dynamicDecrypt〉,則需先進(jìn)行解密)按照字節(jié)序〈endian〉與字節(jié)碼〈hex〉或字符串〈siring〉應(yīng)滿足運(yùn)算符〈operator〉?!磗igKeyword〉可設(shè)置 id、role 和 cipher 屬性,其中,id屬性指定關(guān)鍵字簽名的編號(hào);role屬性指定關(guān)鍵字簽名的角色,其取值包括basic和trivial,其中,basic指定關(guān)鍵字簽名為唯一的主要特征,trivial指定關(guān)鍵字簽名為次要特征;cipher屬性指定關(guān)鍵字簽名是否需要解密,其取值包括none、staic和dynamic,其中,none指定關(guān)鍵字簽名無(wú)需解密,static指定關(guān)鍵字簽名需使用〈staticDecrypt〉解密,dynamic指定關(guān)鍵字簽名需使用〈dynamicDecrypt〉解密。
[0029]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,包長(zhǎng)簽名基本特征〈sigPayloadLen〉的內(nèi)容由特征偏移量條件〈offset〉、特征長(zhǎng)度條件〈length〉、特征字節(jié)序條件〈endian〉、特征運(yùn)算符條件〈operator〉和特征字節(jié)碼條件〈hex〉組成?!磗igPayloadLen〉描述了從數(shù)據(jù)包載荷的偏移位置〈offset〉處提取的長(zhǎng)度〈length〉的字節(jié)碼按照字節(jié)序〈endian〉轉(zhuǎn)換成的整數(shù)值加上字節(jié)碼〈hex〉的值與數(shù)據(jù)包包長(zhǎng)應(yīng)滿足運(yùn)算符〈operator〉;若〈length〉的值為0,則表示無(wú)需從數(shù)據(jù)包載荷提取內(nèi)容,但指定字節(jié)碼〈hex〉的值與數(shù)據(jù)包包長(zhǎng)應(yīng)滿足關(guān)系〈operator〉?!磗igPayloadLen〉可設(shè)置id和role屬性,其中,id屬性指定包長(zhǎng)簽名的編號(hào);role屬性指定包長(zhǎng)簽名的角色,其取值為trivial,表示指定包長(zhǎng)簽名為次要特征。
[0030]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,IP簽名基本特征〈siglp〉的內(nèi)容由IP條件<ip>組成?!磗iglp〉描述了數(shù)據(jù)包應(yīng)帶有的IP地址?!磗iglp〉可設(shè)置id和role屬性,其中,id屬性指定IP簽名的編號(hào);role屬性指定IP簽名的角色,其取值為trivial,表示指定IP簽名為次要特征。
[0031]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,端口簽名基本特征〈sigPort〉的內(nèi)容由端口條件〈port〉組成?!磗igPort〉描述了數(shù)據(jù)包應(yīng)帶有的端口?!磗igPort〉可設(shè)置id和role屬性,其中,id屬性指定端口簽名的編號(hào);role屬性指定端口簽名的角色,其取值為trivial,表示指定端口簽名為次要特征。
[0032]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,正則表達(dá)式簽名基本特征〈sigPere〉的內(nèi)容由特征偏移量條件〈offset〉、特征字節(jié)碼條件〈hex〉或特征字符串條件〈string〉和正則表達(dá)式條件<pcre>組成,其中,〈hex〉或〈string〉為正則表達(dá)式<pcre>包含的確定性子串。〈sigPere〉描述了在數(shù)據(jù)包載荷的偏移位置〈offset〉處開(kāi)始的內(nèi)容應(yīng)符合正則表達(dá)式<pcre>。〈sigPere〉可設(shè)置id和role屬性,其中,id屬性指定正則表達(dá)式簽名的編號(hào);role屬性指定正則表達(dá)式簽名的角色,其取值包括basic和trivial,其中,basic指定正則表達(dá)式簽名為唯一的主要特征,trivial指定正則表達(dá)式簽名為次要特征。
[0033]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,關(guān)聯(lián)基本特征<relae>的內(nèi)容由IP條件<ip>、端口條件〈port〉、傳輸層協(xié)議〈tpProto〉、應(yīng)用協(xié)議標(biāo)識(shí)符〈appProtoId〉和延遲確認(rèn)包數(shù)〈delayPktNum〉組成。〈relate〉描述了通過(guò)已識(shí)別流的半流關(guān)聯(lián)表緩存應(yīng)用協(xié)議類型以進(jìn)行后續(xù)直接關(guān)聯(lián)識(shí)別所需要的信息。其中,IP條件<ip>和端口條件〈port〉皆為空元素,其指定為當(dāng)前數(shù)據(jù)包的源(或目的)IP和端口 ;傳輸層協(xié)議〈tpProto〉指定當(dāng)前數(shù)據(jù)包的傳輸層協(xié)議,其內(nèi)容取值為tcp或udp ;應(yīng)用協(xié)議標(biāo)識(shí)符〈appProtoId〉指定關(guān)聯(lián)的應(yīng)用協(xié)議類型編號(hào);延遲確認(rèn)包數(shù)〈delayPktNum〉指定在關(guān)聯(lián)識(shí)別出應(yīng)用協(xié)議類型之后應(yīng)延遲確認(rèn)該識(shí)別結(jié)果并指定了應(yīng)繼續(xù)掃描數(shù)據(jù)包的個(gè)數(shù)?!磖elate〉可設(shè)置method屬性指定通道關(guān)聯(lián)的類型和方法,其取值包括strong、weak和extract,其中,strong指定通道關(guān)聯(lián)為強(qiáng)關(guān)聯(lián)類型,關(guān)聯(lián)信息由 <ip>、〈port〉、〈tpProto〉、〈appProtoId〉和〈delayPktNum〉組成,此處〈appProtoId〉表示命中半流關(guān)聯(lián)表時(shí)所識(shí)別出的應(yīng)用協(xié)議類型;weak指定通道關(guān)聯(lián)為弱關(guān)聯(lián)類型,關(guān)聯(lián)信息由<ip>、〈tpProto〉和〈appProtoId〉組成,此處〈appProtoId〉表示關(guān)聯(lián)識(shí)別的來(lái)源應(yīng)用協(xié)議類型,弱關(guān)聯(lián)類型的關(guān)聯(lián)基本特征通常用作預(yù)過(guò)濾特征extract指定通道關(guān)聯(lián)為提取關(guān)聯(lián)類型,關(guān)聯(lián)信息由〈appProtoId〉組成,關(guān)聯(lián)通道信息從已識(shí)別為〈appProtoId〉類型的流的當(dāng)前或后續(xù)數(shù)據(jù)包中按照檢測(cè)識(shí)別模型指定的格式提取。
[0034]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,算法插件基本特征〈sigAlgoPlugin〉的內(nèi)容由動(dòng)態(tài)共享庫(kù)插件〈libso〉和算法函數(shù)<func>組成?!磗igAlgoPlugin〉描述了數(shù)據(jù)包應(yīng)滿足的應(yīng)用協(xié)議特征由動(dòng)態(tài)共享庫(kù)導(dǎo)出的算法函數(shù)進(jìn)行提供和驗(yàn)證。其中,動(dòng)態(tài)共享庫(kù)插件〈libso〉指定提供算法函數(shù)的動(dòng)態(tài)共享庫(kù)的名稱;算法函數(shù)〈func〉指定應(yīng)用協(xié)議識(shí)別算法函數(shù)名稱,應(yīng)用協(xié)議識(shí)別算法函數(shù)由動(dòng)態(tài)共享庫(kù)插件〈libso〉指定的動(dòng)態(tài)共享庫(kù)導(dǎo)出,其接口和含義由〈sigAlgoPlugin〉所屬的檢測(cè)識(shí)別模型進(jìn)行定義和解釋。
[0035]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,數(shù)據(jù)包特征〈packet〉的內(nèi)容由關(guān)鍵字簽名基本特征〈sigKeyword〉、包長(zhǎng)簽名基本特征〈sigPayloadLen〉、IP簽名基本特征〈siglp〉、端口簽名基本特征〈sigPort〉、正則表達(dá)式簽名基本特征〈sigPcre〉和關(guān)聯(lián)基本特征〈relate〉等應(yīng)用協(xié)議基本特征中的一個(gè)或多個(gè)組成?!磒acket〉描述了在指定的流方向、包位置和包方向上的數(shù)據(jù)包滿足的應(yīng)用協(xié)議特征?!磒acket〉可設(shè)置id、logrel、flowdir、pktdir和pktpos屬性,其中,id屬性指定數(shù)據(jù)包特征的編號(hào);logrel屬性指定多個(gè)應(yīng)用協(xié)議基本特征之間應(yīng)滿足的邏輯關(guān)系,其取值包括and、or和邏輯表達(dá)式,其中,and指定多個(gè)應(yīng)用協(xié)議基本特征之間滿足邏輯與關(guān)系,or指定多個(gè)應(yīng)用協(xié)議基本特征之間滿足邏輯或關(guān)系,邏輯表達(dá)式指定多個(gè)應(yīng)用協(xié)議基本特征之間滿足邏輯表達(dá)式描述的邏輯關(guān)系,邏輯表達(dá)式由由邏輯與、邏輯或、括號(hào)和應(yīng)用協(xié)議基本特征的編號(hào)組成;flowdir屬性指定由五元組標(biāo)識(shí)的流的流方向,其取值包括up、down和both,其中,up指定客戶端到服務(wù)器端的流方向,即上行流方向,down指定服務(wù)器端到客戶端的流方向,即下行流方向,both指定上行和下行雙向流方向;pktdir屬性指定數(shù)據(jù)包在特定流方向上的包方向,其取值包括up、down和either,其中,up指定數(shù)據(jù)包位于客戶端到服務(wù)器端的上行方向,down指定數(shù)據(jù)包位于服務(wù)器端到客戶端的下行方向,either指定數(shù)據(jù)包位于上行或下行方向;pktpos屬性指定數(shù)據(jù)包在特定流方向上的包位置,其取值為-1時(shí)指定不固定的位置編號(hào),取值為正整數(shù)時(shí)指定固定的位置編號(hào)。
[0036]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,應(yīng)用協(xié)議命中動(dòng)作包括延遲確認(rèn)動(dòng)作〈delayConfirm〉、繼續(xù)掃描動(dòng)作〈scanRest〉和通道關(guān)聯(lián)動(dòng)作〈relateChannel〉,而一個(gè)或多個(gè)應(yīng)用協(xié)議命中動(dòng)作組成規(guī)則動(dòng)作〈act1n〉。〈act1n〉描述了在流的應(yīng)用協(xié)議已識(shí)別后應(yīng)進(jìn)行的操作。
[0037]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,延遲確認(rèn)動(dòng)作〈delayConfirm〉的內(nèi)容由延遲確認(rèn)包數(shù)〈delayPktNum〉組成?!磀elayConfirm〉描述了在流的應(yīng)用協(xié)議已識(shí)別之后應(yīng)延遲確認(rèn)該識(shí)別結(jié)果并應(yīng)繼續(xù)掃描流中的其他數(shù)據(jù)包。其中,延遲確認(rèn)包數(shù)〈delayPktNum〉指定繼續(xù)掃描的數(shù)據(jù)包個(gè)數(shù)。
[0038]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,繼續(xù)掃描動(dòng)作〈scanRest〉指定在流的應(yīng)用協(xié)議已識(shí)別之后是否應(yīng)繼續(xù)掃描當(dāng)前數(shù)據(jù)包載荷的其余部分以識(shí)別承載的上層精確應(yīng)用協(xié)議。〈scanRest〉的內(nèi)容取值包括yes和no,其中,yes指定繼續(xù)掃描當(dāng)前數(shù)據(jù)包載荷的其余部分,no指定無(wú)需繼續(xù)掃描當(dāng)前數(shù)據(jù)包載荷。
[0039]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,通道關(guān)聯(lián)動(dòng)作〈relateChannel〉的內(nèi)容由一個(gè)或多個(gè)關(guān)聯(lián)基本特征〈relate〉組成?!磖elateChannel〉描述了在流的應(yīng)用協(xié)議已識(shí)別之后應(yīng)提取指定的通道關(guān)聯(lián)信息并添加到已識(shí)別流的半流關(guān)聯(lián)表中。
[0040]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,檢測(cè)識(shí)別模型由應(yīng)用協(xié)議識(shí)別規(guī)則進(jìn)行描述,包括強(qiáng)關(guān)聯(lián)識(shí)別模型〈appProtoRelateRule〉、單包識(shí)別模型〈appProtoSPktRule〉、多包識(shí)別模型〈appProtoMPktRule〉、算法解密識(shí)別模型〈appProtoAlgoDecryptRule〉和通道提取識(shí)別模型〈appProtoChannelExtractRule〉等。不同類型的檢測(cè)識(shí)別模型具有相同的結(jié)構(gòu),都由規(guī)則頭〈ruleHead〉、規(guī)則體〈ruleBody〉和可選的規(guī)則動(dòng)作〈act1n〉三個(gè)部分組成,其中,〈ruleHead〉描述檢測(cè)識(shí)別模型的應(yīng)用協(xié)議信息,〈ruleBody〉描述檢測(cè)識(shí)別模型的基于應(yīng)用協(xié)議特征匹配的識(shí)別決策算法,而〈act1n〉則描述檢測(cè)識(shí)別模型已識(shí)別之后的動(dòng)作。所有的檢測(cè)識(shí)別模型具有同樣格式的規(guī)則頭〈ruleHead〉,但規(guī)則體〈ruleBody〉的格式不盡相同,而對(duì)于有些檢測(cè)識(shí)別模型則無(wú)需指定規(guī)則動(dòng)作〈act1n〉。
[0041]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,規(guī)則頭〈ruleHead〉的內(nèi)容由應(yīng)用協(xié)議標(biāo)識(shí)符〈appProtoId〉、承載層應(yīng)用協(xié)議標(biāo)識(shí)符〈bearerAppProtoId〉、傳輸層協(xié)議〈tpProto〉、IP層協(xié)議〈ipProto〉和優(yōu)先級(jí)〈pr1rity〉組成。其中,〈appProtoId〉指定應(yīng)用協(xié)議識(shí)別規(guī)則描述的應(yīng)用協(xié)議編號(hào),<bearerAppProtoId>指定當(dāng)應(yīng)用協(xié)議識(shí)別規(guī)則描述的應(yīng)用協(xié)議由另一種應(yīng)用協(xié)議進(jìn)行承載時(shí)承載層應(yīng)用協(xié)議的編號(hào),〈tpProto〉指定包含應(yīng)用協(xié)議特征的數(shù)據(jù)包位于的傳輸層封裝協(xié)議的類型,〈ipProto〉指定包含應(yīng)用協(xié)議特征的數(shù)據(jù)包位于的網(wǎng)絡(luò)層封裝協(xié)議的類型,〈pr1rity〉指定應(yīng)用協(xié)議識(shí)別規(guī)則的優(yōu)先級(jí)。
[0042]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,強(qiáng)關(guān)聯(lián)識(shí)別模型〈appProtoRelateRule〉的內(nèi)容由規(guī)則頭〈ruleHead〉和規(guī)則體〈ruleBody〉組成。〈appProtoRelateRule〉描述了可通過(guò)已識(shí)別流的半流關(guān)聯(lián)表緩存應(yīng)用協(xié)議類型進(jìn)而后續(xù)直接關(guān)聯(lián)識(shí)別應(yīng)用協(xié)議類型的深度流檢測(cè)識(shí)別模型。其中,〈ruleBody〉由包含關(guān)聯(lián)基本特征〈relate〉的數(shù)據(jù)包特征〈packet〉組成,而且〈relate〉應(yīng)指定為強(qiáng)關(guān)聯(lián)類型。
[0043]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,單包識(shí)別模型〈appProtoSPktRule〉的內(nèi)容由規(guī)則頭〈ruleHead〉、規(guī)則體〈ruleBody〉和規(guī)則動(dòng)作〈act1n〉組成?!碼ppProtoSPktRule〉描述了可通過(guò)單個(gè)數(shù)據(jù)包特征確定應(yīng)用協(xié)議類型的深度包檢測(cè)識(shí)別模型。其中,〈ruleBody〉由單個(gè)數(shù)據(jù)包特征〈packet〉組成,〈act1n〉可由延遲確認(rèn)動(dòng)作〈delayConfirm〉、繼續(xù)掃描動(dòng)作〈scanRest〉和通道關(guān)聯(lián)動(dòng)作〈relateChannel〉中的一個(gè)或多個(gè)組成。
[0044]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,多包識(shí)別模型〈appProtoMPktRule〉的內(nèi)容由規(guī)則頭〈ruleHead〉、規(guī)則體〈ruleBody〉和規(guī)則動(dòng)作〈act1n〉組成?!碼ppProtoMPktRule〉描述了可通過(guò)同一條數(shù)據(jù)流上的多個(gè)數(shù)據(jù)包特征確定應(yīng)用協(xié)議類型的深度流檢測(cè)識(shí)別模型。其中,〈ruleBody〉由預(yù)過(guò)濾數(shù)據(jù)包特征〈preFilter〉和多數(shù)據(jù)包特征〈mpacket〉組成。預(yù)過(guò)濾數(shù)據(jù)包特征〈preFilter〉的內(nèi)容由一個(gè)數(shù)據(jù)包特征〈packet〉組成,其描述了數(shù)據(jù)流在滿足指定應(yīng)用協(xié)議的多數(shù)據(jù)包特征之前應(yīng)首先符合的預(yù)過(guò)濾條件。多數(shù)據(jù)包特征〈mpacket〉的內(nèi)容由多個(gè)數(shù)據(jù)包特征〈packet〉組成,并可通過(guò)設(shè)置seq、succ和method屬性指定多個(gè)數(shù)據(jù)包特征之間應(yīng)滿足的連續(xù)性、有序性和運(yùn)算關(guān)系。其中,seq屬性指定符合數(shù)據(jù)包特征的數(shù)據(jù)包到達(dá)的有序性,其取值包括yes和no,其中,yes指定符合數(shù)據(jù)包特征的數(shù)據(jù)包有序到達(dá),no指定符合數(shù)據(jù)包特征的數(shù)據(jù)包不必有序到達(dá);succ屬性指定符合數(shù)據(jù)包特征的數(shù)據(jù)包到達(dá)的連續(xù)性,其取值包括yes和no,其中,yes指定符合數(shù)據(jù)包特征的數(shù)據(jù)包連續(xù)到達(dá),no指定符合數(shù)據(jù)包特征的數(shù)據(jù)包不必連續(xù)到達(dá);method屬性指定多個(gè)數(shù)據(jù)包特征之間存在的運(yùn)算關(guān)系,其取值包括none、eqDiffInterPkt和eqDiffSamePkt,其中,none指定多個(gè)數(shù)據(jù)包特征之間不存在運(yùn)算關(guān)系,eqDifflnterPkt指定多個(gè)數(shù)據(jù)包特征包含的單個(gè)基本特征之間存在等差運(yùn)算關(guān)系,eqDiffSamePkt指定多個(gè)數(shù)據(jù)包特征中每個(gè)數(shù)據(jù)包特征包含的兩個(gè)基本特征之差相等。規(guī)則動(dòng)作〈act1n〉由通道關(guān)聯(lián)動(dòng)作<relateChannel> 組成。
[0045]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,算法解密識(shí)別模型〈appProtoAlgoDecryptRule〉的內(nèi)容由規(guī)則頭〈ruleHead〉、規(guī)則體〈ruleBody〉和規(guī)則動(dòng)作〈act1n〉組成?!碼ppProtoAlgoDecryptRule〉描述了可通過(guò)先解密數(shù)據(jù)包密文數(shù)據(jù)再驗(yàn)證協(xié)議特征從而確定數(shù)據(jù)流的應(yīng)用協(xié)議類型的深度包檢測(cè)識(shí)別模型。其中,〈ruleBody〉由預(yù)過(guò)濾數(shù)據(jù)包特征〈preFilter〉和算法解密特征〈algoDecrypt〉?!磒reFilter〉的內(nèi)容由一個(gè)數(shù)據(jù)包特征〈packet〉組成,其指定在進(jìn)行算法解密識(shí)別之前數(shù)據(jù)包應(yīng)先滿足的先決特征條件。算法解密特征〈algoDecrypt〉的內(nèi)容由函數(shù)算法解密特征〈funcAlgoDecrypt〉或密碼算法解密特征〈cipherAlgoDecrypt〉組成,其描述了算法解密識(shí)別的方式和解密方法。函數(shù)算法解密特征〈funcAlgoDecrypt〉的內(nèi)容由算法插件基本特征〈sigAlgoPlugin〉組成,其描述了用于算法解密識(shí)別應(yīng)用協(xié)議類型的算法函數(shù)特征;其中,〈sigAlgoPlugin〉提供的算法函數(shù)〈func>具有統(tǒng)一的固定接口形式,其接受規(guī)則、數(shù)據(jù)包、流上下文等輸入并輸出協(xié)議識(shí)別結(jié)果。密碼算法解密特征〈cipherAlgoDecrypt〉的內(nèi)容由包含支持解密的關(guān)鍵字簽名基本特征〈sigKeyword〉的數(shù)據(jù)包特征〈packet〉組成,其描述了通過(guò)密碼算法進(jìn)行解密識(shí)別時(shí)的數(shù)據(jù)包特征;其中,〈sigKeyword〉分別通過(guò)動(dòng)態(tài)解密條件〈dynamicDecrypt〉和靜態(tài)解密條件〈staticDecrypt〉支持動(dòng)態(tài)解密和靜態(tài)解密兩種解密方式。規(guī)則動(dòng)作〈act1n〉由通道關(guān)聯(lián)動(dòng)作〈relateChannel〉組成。[0046]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,通道提取識(shí)別模型〈appProtoChannelExtractRule〉的內(nèi)容由規(guī)則頭〈ruleHead〉、規(guī)則體〈ruleBody〉和規(guī)則動(dòng)作〈act1n〉組成?!碼ppProtoChannelExtractRule〉描述了可通過(guò)解析已識(shí)別的控制通道并提取協(xié)商的關(guān)聯(lián)數(shù)據(jù)通道從而確定數(shù)據(jù)流的應(yīng)用協(xié)議類型的深度包檢測(cè)識(shí)別模型。其中,〈ruleBody〉由預(yù)識(shí)別應(yīng)用協(xié)議標(biāo)識(shí)符〈preldentAppProtoId〉、預(yù)過(guò)濾數(shù)據(jù)包特征〈preFilter〉和通道提取器〈extractor〉組成。〈preldentAppProtoId〉指定在進(jìn)行通道提取之前數(shù)據(jù)流應(yīng)預(yù)先被識(shí)別為的應(yīng)用協(xié)議類型;〈preFilter>的內(nèi)容由一個(gè)數(shù)據(jù)包特征〈packet〉組成,其指定在進(jìn)行通道提取之前數(shù)據(jù)流應(yīng)首先滿足的數(shù)據(jù)包特征;〈extractor〉的內(nèi)容由正則通道提取器〈pcreExtractor〉或函數(shù)通道提取器〈funcExtractor〉組成,其指定解析和提取關(guān)聯(lián)數(shù)據(jù)通道的IP地址和端口的方式和方法。正則通道提取器〈pcreExtractor〉的內(nèi)容由解碼器〈decoder〉、IP提取器〈ipExtractor〉和端口提取器〈portExtractor〉組成,并可設(shè)置loop屬性,其描述了按照正則表達(dá)式設(shè)定的IP和端口格式解析文本格式協(xié)議和提取關(guān)聯(lián)通道。其中,loop屬性指定是否需要多次連續(xù)解析和提取關(guān)聯(lián)通道;解碼器〈decoder〉的內(nèi)容由解碼格式〈dectype〉、解碼頭部特征〈decHead〉和解碼尾部特征〈decTail〉組成,其描述了需要進(jìn)行解碼的關(guān)聯(lián)通道提取區(qū)的解碼格式和特征,其中,〈dectype〉指定關(guān)聯(lián)通道提取區(qū)的解碼格式;〈deCHead>和〈decTail〉的內(nèi)容都由關(guān)鍵字簽名基本特征〈sigKeyword〉組成,其分別描述了需要進(jìn)行解碼的關(guān)聯(lián)通道提取區(qū)開(kāi)始位置和結(jié)束位置的特征;IP提取器〈ipExtractor〉和端口提取器〈portExtractor〉的內(nèi)容都由包含正則表達(dá)式簽名基本特征〈sigPcre〉的數(shù)據(jù)包特征〈packet〉組成,并可設(shè)置cgroup、ver、encoding、fmt和del屬性,其分別描述了待提取IP地址字符串和端口字符串的格式特征;其中,〈sigPcre〉指定捕獲IP地址分組或端口分組的PCRE正則表達(dá)式,cgroup屬性指定正則表達(dá)式捕獲IP地址分組或端口分組的編號(hào),ver屬性指定IP地址的協(xié)議版本,encoding屬性指定IP地址字符串或端口字符串的編碼格式,fmt屬性指定IP地址字符串或端口字符串為多域或單值格式,del屬性指定多域格式IP地址字符串或端口字符串的域分隔符。函數(shù)通道提取器〈funcExtractor〉的內(nèi)容由算法插件基本特征〈sigAlgoPlugin〉組成,其描述了用以解析和提取關(guān)聯(lián)通道的算法函數(shù)特征。其中,〈sigAlgoPlugin〉提供的算法函數(shù)<func>具有統(tǒng)一的固定接口形式,其接受規(guī)則、數(shù)據(jù)包、流上下文等輸入并提供關(guān)聯(lián)通道(IP、端口和傳輸協(xié)議)、關(guān)聯(lián)通道個(gè)數(shù)等輸出。規(guī)則動(dòng)作〈act1n〉由通道關(guān)聯(lián)動(dòng)作〈relateChannel〉組成,并且〈relateChannel〉由強(qiáng)關(guān)聯(lián)類型的關(guān)聯(lián)基本特征〈relate〉組成。
[0047]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,應(yīng)用協(xié)議特征匹配單元包括分流匹配單元、關(guān)聯(lián)表匹配單元、深度包檢測(cè)單元和基本特征匹配單元。
[0048]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,分流匹配單元首先利用IP協(xié)議號(hào)將流量分割為TCP流量和UDP流量,并進(jìn)一步利用Web分流狀態(tài)機(jī)將TCP流量分割為Web流量和非Web流量。其中,Web分流狀態(tài)機(jī)為由Web流量的多個(gè)協(xié)議特征生成的確定型有限狀態(tài)自動(dòng)機(jī)。
[0049]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,關(guān)聯(lián)表匹配單元利用已識(shí)別的流的半流關(guān)聯(lián)表執(zhí)行關(guān)聯(lián)查表匹配。其中,半流關(guān)聯(lián)表包括強(qiáng)關(guān)聯(lián)表和弱關(guān)聯(lián)表。強(qiáng)關(guān)聯(lián)表是由已識(shí)別并指定要執(zhí)行強(qiáng)關(guān)聯(lián)類型的通道關(guān)聯(lián)動(dòng)作的流的源(或目的)IP、源(或目的)端口和傳輸層協(xié)議的三元組生成的哈希表,并且在哈希節(jié)點(diǎn)中保存有應(yīng)用協(xié)議類型信息;在強(qiáng)關(guān)聯(lián)匹配時(shí),關(guān)聯(lián)表匹配單元對(duì)輸入數(shù)據(jù)包的源(或目的)IP、源(或目的)端口和傳輸層協(xié)議的三元組進(jìn)行哈希運(yùn)算后查找強(qiáng)關(guān)聯(lián)表并根據(jù)查找結(jié)果確定流的應(yīng)用協(xié)議類型。弱關(guān)聯(lián)表是由已識(shí)別并指定要執(zhí)行弱關(guān)聯(lián)類型的通道關(guān)聯(lián)動(dòng)作的流的源(或目的)IP與傳輸層協(xié)議的二元組生成的哈希表;在弱關(guān)聯(lián)匹配時(shí),關(guān)聯(lián)表匹配單元對(duì)輸入數(shù)據(jù)包的源(或目的)IP和傳輸層協(xié)議的二元組進(jìn)行哈希運(yùn)算后查找弱關(guān)聯(lián)表并根據(jù)查找結(jié)果判定是否命中預(yù)過(guò)濾數(shù)據(jù)包特征的弱關(guān)聯(lián)類型的關(guān)聯(lián)基本特征。
[0050] 在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,深度包檢測(cè)單元對(duì)應(yīng)用協(xié)議識(shí)別規(guī)則的數(shù)據(jù)包特征進(jìn)行匹配并輸出命中了數(shù)據(jù)包特征的應(yīng)用協(xié)議識(shí)別規(guī)則子集,其核心包括多模式串匹配單元、混合匹配單元和匹配結(jié)果判別單元。其中,多模式串匹配單元利用確定型多模匹配狀態(tài)機(jī)執(zhí)行匹配并驗(yàn)證命中關(guān)鍵字的偏移位置約束,輸出初步命中的應(yīng)用協(xié)議識(shí)別規(guī)則子集,并進(jìn)而利用基本特征匹配單元和關(guān)聯(lián)表匹配單元對(duì)命中規(guī)則的數(shù)據(jù)包特征的其余應(yīng)用協(xié)議基本特征執(zhí)行匹配;其中,多模匹配狀態(tài)機(jī)由規(guī)則庫(kù)中應(yīng)用協(xié)議識(shí)別規(guī)則的數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征的主要的關(guān)鍵字簽名基本特征或正則表達(dá)式簽名基本特征經(jīng)過(guò)預(yù)處理生成。混合匹配單元利用基本特征匹配單元和關(guān)聯(lián)表匹配單元對(duì)規(guī)則庫(kù)中未加入多模式串匹配單元的應(yīng)用協(xié)議識(shí)別規(guī)則的數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征的應(yīng)用協(xié)議基本特征執(zhí)行匹配,并輸出初步命中的應(yīng)用協(xié)議識(shí)別規(guī)則子集。匹配結(jié)果判別單元根據(jù)多模式串匹配單元和混合匹配單元輸出的應(yīng)用協(xié)議識(shí)別規(guī)則的數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征的應(yīng)用協(xié)議基本特征的命中狀態(tài)和應(yīng)用協(xié)議基本特征之間應(yīng)滿足的邏輯關(guān)系判定并輸出最終命中了數(shù)據(jù)包特征的應(yīng)用協(xié)議識(shí)別規(guī)則子集。
[0051 ] 在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,基本特征匹配單元包括包位置方向匹配單元、包長(zhǎng)匹配單元、正則表達(dá)式匹配單元、單模式串匹配單元、算法插件匹配單元、動(dòng)態(tài)解密匹配單元、靜態(tài)解密匹配單元、IP地址匹配單元和端口匹配單元等。其中,包位置方向匹配單元執(zhí)行數(shù)據(jù)包特征指定的流方向、包位置和包方向的驗(yàn)證;包長(zhǎng)匹配單元執(zhí)行數(shù)據(jù)包特征指定的包長(zhǎng)簽名基本特征的驗(yàn)證;正則表達(dá)式匹配單元執(zhí)行數(shù)據(jù)包特征指定的正則表達(dá)式簽名基本特征的驗(yàn)證;單模式串匹配單元執(zhí)行數(shù)據(jù)包特征指定的無(wú)需解密的關(guān)鍵字簽名基本特征的驗(yàn)證;算法插件匹配單元執(zhí)行數(shù)據(jù)包特征指定的算法插件基本特征的算法函數(shù)驗(yàn)證;動(dòng)態(tài)解密匹配單元執(zhí)行數(shù)據(jù)包特征指定的帶動(dòng)態(tài)解密條件的關(guān)鍵字簽名基本特征的驗(yàn)證;靜態(tài)解密匹配單元執(zhí)行數(shù)據(jù)包特征指定的帶靜態(tài)解密條件的關(guān)鍵字簽名基本特征的驗(yàn)證;IP地址匹配單元執(zhí)行數(shù)據(jù)包特征指定的IP簽名基本特征的驗(yàn)證;端口匹配單元執(zhí)行數(shù)據(jù)包特征指定的端口簽名基本特征的驗(yàn)證。
[0052]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,全流表存儲(chǔ)單元保存會(huì)話流表、流節(jié)點(diǎn)、流子節(jié)點(diǎn)以及相應(yīng)的節(jié)點(diǎn)池。其中,會(huì)話流表為由標(biāo)識(shí)流的源目IP、源目端口和傳輸層協(xié)議的五元組生成的哈希表,流節(jié)點(diǎn)為哈希表中與流對(duì)應(yīng)的節(jié)點(diǎn),節(jié)點(diǎn)中保存流的應(yīng)用協(xié)議識(shí)別狀態(tài);流子節(jié)點(diǎn)與深度包檢測(cè)單元輸出的應(yīng)用協(xié)議識(shí)別規(guī)則相對(duì)應(yīng),并保存在當(dāng)前流的流節(jié)點(diǎn)中,多個(gè)流子節(jié)點(diǎn)串接成單向鏈表,其中,流子節(jié)點(diǎn)保存對(duì)應(yīng)的應(yīng)用協(xié)議識(shí)別規(guī)則的中間匹配狀態(tài);流節(jié)點(diǎn)池與流子節(jié)點(diǎn)池為預(yù)分配的節(jié)點(diǎn)內(nèi)存池。會(huì)話流表根據(jù)數(shù)據(jù)包到達(dá)時(shí)間刷新時(shí)間戳,并定時(shí)按照設(shè)定的超時(shí)間隔或狀態(tài)轉(zhuǎn)換進(jìn)行流節(jié)點(diǎn)的老化,而流子節(jié)點(diǎn)在當(dāng)前流識(shí)別結(jié)束之后或者對(duì)應(yīng)的流節(jié)點(diǎn)老化之時(shí)將被老化;老化的流節(jié)點(diǎn)和流子節(jié)點(diǎn)被回收到對(duì)應(yīng)的節(jié)點(diǎn)內(nèi)存池。[0053]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,半流關(guān)聯(lián)表存儲(chǔ)單元保存強(qiáng)關(guān)聯(lián)表、弱關(guān)聯(lián)表、強(qiáng)關(guān)聯(lián)表節(jié)點(diǎn)、弱關(guān)聯(lián)表節(jié)點(diǎn)以及相應(yīng)的節(jié)點(diǎn)池。其中,強(qiáng)關(guān)聯(lián)表節(jié)點(diǎn)和弱關(guān)聯(lián)表節(jié)點(diǎn)保存應(yīng)用協(xié)議識(shí)別規(guī)則指定并且從已識(shí)別流中提取的關(guān)聯(lián)基本特征,關(guān)聯(lián)表節(jié)點(diǎn)的應(yīng)用協(xié)議類型根據(jù)應(yīng)用協(xié)議識(shí)別結(jié)果進(jìn)行更新;強(qiáng)關(guān)聯(lián)表節(jié)點(diǎn)池與弱關(guān)聯(lián)表節(jié)點(diǎn)池為預(yù)分配的節(jié)點(diǎn)內(nèi)存池。關(guān)聯(lián)表節(jié)點(diǎn)在進(jìn)行關(guān)聯(lián)匹配查詢時(shí)刷新時(shí)間戳,并定時(shí)按照設(shè)定的超時(shí)間隔或特定的應(yīng)用協(xié)議超時(shí)間隔進(jìn)行老化;老化的關(guān)聯(lián)表節(jié)點(diǎn)被回收到對(duì)應(yīng)的節(jié)點(diǎn)內(nèi)存池。
[0054]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,規(guī)則庫(kù)存儲(chǔ)單元保存主規(guī)則庫(kù)和影子規(guī)則庫(kù)。其中,主規(guī)則庫(kù)為當(dāng)前處于活動(dòng)狀態(tài)的規(guī)則庫(kù),而影子規(guī)則庫(kù)為處于待命狀態(tài)的規(guī)則庫(kù);當(dāng)進(jìn)行規(guī)則庫(kù)升級(jí)時(shí),將首先更新影子規(guī)則庫(kù),并對(duì)其進(jìn)行預(yù)處理生成新的深度包檢測(cè)單元核心,然后進(jìn)行熱切換使新生成的深度包檢測(cè)單元核心生效并使原影子規(guī)則庫(kù)成為處于活動(dòng)狀態(tài)的主規(guī)則庫(kù),而原主規(guī)則庫(kù)則成為影子規(guī)則庫(kù),原深度包檢測(cè)單元核心將被銷毀。
[0055]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,識(shí)別模塊包括強(qiáng)關(guān)聯(lián)識(shí)別模塊、單包識(shí)別模塊、多包識(shí)別模塊、算法解密識(shí)別模塊和通道提取識(shí)別模塊。
[0056]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,強(qiáng)關(guān)聯(lián)識(shí)別模塊基于強(qiáng)關(guān)聯(lián)識(shí)別模型構(gòu)建,其通過(guò)關(guān)聯(lián)表匹配單元查找半流關(guān)聯(lián)表存儲(chǔ)單元中的強(qiáng)關(guān)聯(lián)表進(jìn)行強(qiáng)關(guān)聯(lián)匹配和應(yīng)用協(xié)議識(shí)別。若查找成功,則根據(jù)命中的關(guān)聯(lián)表節(jié)點(diǎn)確定待識(shí)別流的應(yīng)用協(xié)議類型:若命中的關(guān)聯(lián)表節(jié)點(diǎn)指定了延遲確認(rèn)包數(shù),則延遲確認(rèn)該識(shí)別結(jié)果以允許應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)掃描當(dāng)前及后續(xù)數(shù)據(jù)包,否則直接在相應(yīng)的流節(jié)點(diǎn)中標(biāo)記當(dāng)前流已識(shí)別為關(guān)聯(lián)表節(jié)點(diǎn)中指定的應(yīng)用協(xié)議類型;若查找失敗,則交由應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)識(shí)別。
[0057]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,單包識(shí)別模塊基于單包識(shí)別模型并聯(lián)合多包、算法解密和通道提取識(shí)別模型構(gòu)建,其通過(guò)分流匹配單元和深度包檢測(cè)單元進(jìn)行匹配和應(yīng)用協(xié)議識(shí)別。其中,深度包檢測(cè)單元分為Web應(yīng)用深度包檢測(cè)單元、TCP深度包檢測(cè)單元和UDP深度包檢測(cè)單元,Web應(yīng)用深度包檢測(cè)單元由規(guī)則庫(kù)中Web類應(yīng)用相應(yīng)的單包識(shí)別規(guī)則的數(shù)據(jù)包特征生成,TCP深度包檢測(cè)單元由規(guī)則庫(kù)中通過(guò)TCP協(xié)議傳輸?shù)姆荳eb類應(yīng)用相應(yīng)的單包、多包、算法解密和通道提取識(shí)別規(guī)則的數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征生成,而UDP深度包檢測(cè)單元由規(guī)則庫(kù)中通過(guò)UDP協(xié)議傳輸?shù)膽?yīng)用相應(yīng)的單包、多包、算法解密和通道提取識(shí)別規(guī)則的數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征生成。單包識(shí)別模塊首先通過(guò)分流匹配單元將待識(shí)別流粗分為Web流量、TCP非Web流量或UDP流量,若為Web流量則通過(guò)對(duì)應(yīng)的Web應(yīng)用深度包檢測(cè)單元掃描整個(gè)HTTP報(bào)文頭和若干字節(jié)數(shù)據(jù),否則通過(guò)對(duì)應(yīng)的TCP深度包檢測(cè)單元或UDP深度包檢測(cè)單元掃描數(shù)據(jù)包載荷的全包或頭尾部若干字節(jié),最后輸出命中了數(shù)據(jù)包特征的單包識(shí)別規(guī)則、命中了數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征的多包識(shí)別規(guī)則以及命中了預(yù)過(guò)濾數(shù)據(jù)包特征的算法解密識(shí)別規(guī)則和通道提取識(shí)別規(guī)則。若同時(shí)命中了多條單包識(shí)別規(guī)則,則選擇其中優(yōu)先級(jí)最高的規(guī)則;若命中的單包識(shí)別規(guī)則指定了規(guī)則動(dòng)作,則執(zhí)行相應(yīng)的延遲確認(rèn)、繼續(xù)掃描數(shù)據(jù)包載荷其余部分或強(qiáng)關(guān)聯(lián)、弱關(guān)聯(lián)、提取關(guān)聯(lián)等通道關(guān)聯(lián)操作。若最終成功命中,則將當(dāng)前流標(biāo)記為命中的單包識(shí)別規(guī)則指定的應(yīng)用協(xié)議類型,否則交由應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)識(shí)別。
[0058]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,多包識(shí)別模塊基于多包識(shí)別模型構(gòu)建,其通過(guò)單包識(shí)別模塊的深度包檢測(cè)單元進(jìn)行匹配和應(yīng)用協(xié)議識(shí)別。多包識(shí)別模塊通過(guò)單包識(shí)別模塊過(guò)濾出初步命中的多包識(shí)別規(guī)則子集,對(duì)命中的規(guī)則生成相應(yīng)的流多包子節(jié)點(diǎn)并將其保存在當(dāng)前待識(shí)別流所對(duì)應(yīng)的流節(jié)點(diǎn)中,對(duì)后續(xù)到達(dá)的數(shù)據(jù)包,由單包識(shí)別模塊的深度包檢測(cè)單元繼續(xù)匹配,多包識(shí)別模塊根據(jù)匹配結(jié)果和保存的匹配狀態(tài)驗(yàn)證流多包子節(jié)點(diǎn)對(duì)應(yīng)的規(guī)則指定的多數(shù)據(jù)包特征及其連續(xù)性、有序性和運(yùn)算關(guān)系等約束條件并判定命中狀態(tài),同時(shí)更新匹配狀態(tài)并將其保存在流多包子節(jié)點(diǎn)中。若最終成功命中,則將當(dāng)前流標(biāo)記為命中的多包識(shí)別規(guī)則指定的應(yīng)用協(xié)議類型,否則交由應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)識(shí)別。
[0059]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,算法解密識(shí)別模塊基于算法解密識(shí)別模型構(gòu)建,其通過(guò)算法插件匹配單元、動(dòng)態(tài)解密匹配單元和靜態(tài)解密匹配單元進(jìn)行匹配和應(yīng)用協(xié)議識(shí)別。算法解密識(shí)別模塊首先通過(guò)單包識(shí)別模塊過(guò)濾出初步命中的算法解密識(shí)別規(guī)則子集,然后對(duì)命中規(guī)則的函數(shù)算法解密特征或密碼算法解密特征分別由算法插件匹配單元、動(dòng)態(tài)解密匹配單元或靜態(tài)解密匹配單元繼續(xù)匹配,最后根據(jù)匹配結(jié)果判定最終命中狀態(tài)。若最終成功命中,則將當(dāng)前流標(biāo)記為命中的算法解密識(shí)別規(guī)則指定的應(yīng)用協(xié)議類型,否則交由應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)識(shí)別。
[0060]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,通道提取識(shí)別模塊基于通道提取識(shí)別模型構(gòu)建,其通過(guò)正則表達(dá)式匹配單元和算法插件匹配單元進(jìn)行關(guān)聯(lián)通道提取并進(jìn)而通過(guò)強(qiáng)關(guān)聯(lián)識(shí)別模塊進(jìn)行應(yīng)用協(xié)議識(shí)別。通道提取識(shí)別模塊通過(guò)已經(jīng)成功識(shí)別并且指定了提取關(guān)聯(lián)類型的通道關(guān)聯(lián)動(dòng)作的其他識(shí)別模塊獲取候選的通道提取識(shí)別規(guī)則子集,并根據(jù)單包識(shí)別模塊輸出的通道提取識(shí)別規(guī)則預(yù)過(guò)濾數(shù)據(jù)包特征的命中狀態(tài)最終確定用以進(jìn)行通道提取的規(guī)則;通道提取識(shí)別模塊根據(jù)規(guī)則指定的正則通道提取器或函數(shù)通道提取器分別由正則表達(dá)式匹配單元或算法插件匹配單元提取關(guān)聯(lián)通道的IP地址、端口和傳輸層協(xié)議,并根據(jù)規(guī)則指定的強(qiáng)關(guān)聯(lián)類型的通道關(guān)聯(lián)動(dòng)作將關(guān)聯(lián)基本特征添加到強(qiáng)關(guān)聯(lián)表中;若待提取的關(guān)聯(lián)通道數(shù)據(jù)分布在多個(gè)數(shù)據(jù)包之中,則為命中的規(guī)則生成相應(yīng)的流通道提取子節(jié)點(diǎn)并將其保存在當(dāng)前流所對(duì)應(yīng)的流節(jié)點(diǎn)中,對(duì)當(dāng)前及后續(xù)到達(dá)的數(shù)據(jù)包,緩存相應(yīng)的關(guān)聯(lián)通道數(shù)據(jù),然后再進(jìn)行關(guān)聯(lián)通道的提取。
[0061]在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,配置模塊進(jìn)行應(yīng)用協(xié)議識(shí)別引擎的識(shí)別參數(shù)及規(guī)則庫(kù)的配置。應(yīng)用協(xié)議識(shí)別引擎的識(shí)別參數(shù)包括識(shí)別模塊(強(qiáng)關(guān)聯(lián)識(shí)別模塊、多包識(shí)別模塊、算法解密識(shí)別模塊和通道提取識(shí)別模塊)的啟用/禁用開(kāi)關(guān)、延遲確認(rèn)動(dòng)作開(kāi)關(guān)、數(shù)據(jù)包載荷全包掃描開(kāi)關(guān)、數(shù)據(jù)包載荷頭尾部掃描字節(jié)數(shù)、HTTP報(bào)文數(shù)據(jù)掃描字節(jié)數(shù)、流掃描數(shù)據(jù)包個(gè)數(shù)、關(guān)聯(lián)表老化超時(shí)間隔、特定應(yīng)用協(xié)議的關(guān)聯(lián)表老化超時(shí)間隔等。規(guī)則庫(kù)的配置包括規(guī)則庫(kù)的加載與解析、規(guī)則庫(kù)的預(yù)處理、規(guī)則庫(kù)的在線升級(jí)及熱切換、規(guī)則庫(kù)的持久化存儲(chǔ)和規(guī)則庫(kù)的查詢等。
[0062]實(shí)施本發(fā)明具有如下有益效果:
[0063]I)本發(fā)明基于XML語(yǔ)言提供了新的應(yīng)用協(xié)議特征、檢測(cè)識(shí)別模型及其描述方法。該方法能夠描述復(fù)雜加密應(yīng)用的協(xié)議特征;能夠描述同一種應(yīng)用協(xié)議的不同流之間的關(guān)聯(lián)和層次關(guān)系;能夠描述應(yīng)用協(xié)議的同一條流上的單個(gè)或多個(gè)數(shù)據(jù)包的特征及其之間的位置、方向、順序和運(yùn)算關(guān)系;能夠通過(guò)邏輯表達(dá)式或符號(hào)表達(dá)式描述任意復(fù)雜度的應(yīng)用協(xié)議特征之間的約束或加密應(yīng)用協(xié)議特征的解密運(yùn)算。
[0064]2)高識(shí)別率和高精確度。本發(fā)明采用強(qiáng)關(guān)聯(lián)識(shí)別、單包識(shí)別、多包識(shí)別、算法解密識(shí)別、通道提取識(shí)別等多重應(yīng)用協(xié)議識(shí)別方法進(jìn)行細(xì)粒度、深層次識(shí)別,同時(shí)采用多層次匹配、多級(jí)過(guò)濾架構(gòu),以及已識(shí)別應(yīng)用協(xié)議之后的繼續(xù)深度掃描和延遲確認(rèn)功能,從而具有極高的應(yīng)用協(xié)議識(shí)別率、精確度與精細(xì)度。
[0065]3)加密流量識(shí)別。本發(fā)明采用動(dòng)態(tài)解密、靜態(tài)解密、算法函數(shù)解密等算法解密識(shí)別方法以及多包識(shí)別、強(qiáng)關(guān)聯(lián)識(shí)別等深度流檢測(cè)方法可有效識(shí)別加密流量。
[0066]4)高識(shí)別性能與可擴(kuò)展性。本發(fā)明采用高效的確定型多模匹配狀態(tài)機(jī)作為匹配核心,并通過(guò)TCP、UDP和Web分流方法以及預(yù)過(guò)濾方法縮小流量匹配范圍以進(jìn)一步提升識(shí)別性能,同時(shí),基于本發(fā)明提供的多重應(yīng)用協(xié)議識(shí)別方法可在具有硬件分流機(jī)制的多核硬件平臺(tái)實(shí)現(xiàn)應(yīng)用協(xié)議識(shí)別引擎的多實(shí)例并行、流水線匹配,從而具有線性的識(shí)別性能擴(kuò)展能力,可通過(guò)增加引擎實(shí)例的數(shù)目實(shí)現(xiàn)整體匹配性能的線性增長(zhǎng)。
【專利附圖】
【附圖說(shuō)明】
[0067]圖1為數(shù)據(jù)包特征和通道關(guān)聯(lián)動(dòng)作及其描述方法的示意圖;
[0068]圖2為應(yīng)用協(xié)議識(shí)別引擎的功能框圖;
[0069]圖3為應(yīng)用協(xié)議特征匹配單元的功能框圖;
[0070]圖4為多重應(yīng)用協(xié)議識(shí)別方法的工作流程圖;
[0071]圖5為多重應(yīng)用協(xié)議識(shí)別流水線的工作原理示意圖;
[0072]圖6為應(yīng)用協(xié)議識(shí)別引擎多實(shí)例并行匹配裝置的工作原理示意圖。
【具體實(shí)施方式】
[0073]下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。應(yīng)當(dāng)明白,本發(fā)明所公開(kāi)的具體方法、功能、結(jié)構(gòu)和裝置既可以獨(dú)立實(shí)現(xiàn),也可以按照各種方式組合實(shí)現(xiàn),以下所描述的【具體實(shí)施方式】本質(zhì)上僅是示例性的,僅用以解釋本發(fā)明,并不意圖限制本發(fā)明范圍。
[0074]圖1給出了本發(fā)明實(shí)施例提供的數(shù)據(jù)包特征<paCket>101和通道關(guān)聯(lián)動(dòng)作<relateChannel>136及其描述方法的示意圖。
[0075]如圖1所示,數(shù)據(jù)包特征<packet>101由關(guān)鍵字簽名基本特征<sigKeyword>102和包長(zhǎng)簽名基本特征<sigPayloadLen>128組成,并且id屬性指定其編號(hào)為I, logrel屬性指定為邏輯與,flowdir屬性指定為雙向流方向,pktpos屬性指定為不固定的包位置-1,pktdir屬性指定為上行包方向,其描述了數(shù)據(jù)包應(yīng)同時(shí)滿足關(guān)鍵字簽名基本特征<sigKeyword>102和包長(zhǎng)簽名基本特征<sigPayloadLen>128,而且該數(shù)據(jù)包在雙向流方向上可以為任意包位置但應(yīng)具有上行包方向。
[0076]關(guān)鍵字簽名基本特征<sigKeyword>102描述了在特征偏移量條件<offset>103指定的相對(duì)于數(shù)據(jù)包載荷頭部偏移8個(gè)字節(jié)位置處提取的、特征長(zhǎng)度條件<length>104指定的4字節(jié)長(zhǎng)的字節(jié)碼在根據(jù)動(dòng)態(tài)解密條件<dynamicDecrypt>108進(jìn)行解密后,按照特征字節(jié)序條件<endian>105指定的大端字節(jié)序與特征字節(jié)碼條件<hex>107指定的十六進(jìn)制字節(jié)碼100edd04應(yīng)滿足特征運(yùn)算符條件<operaor>106指定的等于關(guān)系。動(dòng)態(tài)解密條件<dynamicDecrypt>108描述了按照解密符號(hào)表達(dá)式條件<cryptosymexp>109指定的解密算法表達(dá)式、解密模式條件<cryptomode>110指定的cbc迭代解密模式、密鑰類型條件<keytype>116指定的流密鑰類型、根據(jù)靜態(tài)解密條件<staticDecrypt>117進(jìn)行解密的動(dòng)態(tài)密鑰條件<dynkey>lll進(jìn)行解密;其中,動(dòng)態(tài)密鑰條件<dynkey>lll指定動(dòng)態(tài)密鑰為從特征偏移量條件〈ofTSet>112指定的相對(duì)于數(shù)據(jù)包載荷頭部偏移4個(gè)字節(jié)位置處提取的、特征字節(jié)序條件<endian>114指定的大端字節(jié)序的、特征長(zhǎng)度條件<length>113指定的4字節(jié)長(zhǎng)的密文字節(jié)碼。靜態(tài)解密條件<staticDecrypt>117描述了按照簡(jiǎn)單解密算法條件<crypto>118指定的異或解密算法、解密模式條件<cryptomode>119指定的ecb簡(jiǎn)單模式、密鑰類型條件〈keytype>124指定的分組密鑰類型、靜態(tài)密鑰條件<Stakey>120指定的靜態(tài)密鑰進(jìn)行解密;其中,靜態(tài)密鑰條件<stakey>120指定靜態(tài)密鑰為特征長(zhǎng)度條件<length>121指定的I字節(jié)長(zhǎng)的、特征字節(jié)碼條件<hex>122指定的十六進(jìn)制字節(jié)碼ea。
[0077]包長(zhǎng)簽名基本特征<sigPayloadLen>128描述了數(shù)據(jù)包的包長(zhǎng)介于特征字節(jié)碼條件<hex>133指定的、特征運(yùn)算符條件<operator>132指定的區(qū)間類型的字節(jié)碼005c和007a之間。
[0078]通道關(guān)聯(lián)動(dòng)作<relateChannel>136由單個(gè)關(guān)聯(lián)基本特征<relate>137組成,而關(guān)聯(lián)基本特征<relate>137由IP條件<ip>138、端口條件<port>139、傳輸層協(xié)議<tpProto>140、延遲確認(rèn)包數(shù)<delayPktNum>141和應(yīng)用協(xié)議標(biāo)識(shí)符<appProtoId>142組成,并且method屬性指定為強(qiáng)關(guān)聯(lián)類型。關(guān)聯(lián)基本特征<relate>137描述了從數(shù)據(jù)包中提取IP條件<ip>138指定的本地IP、端口條件<port>139指定的本地端口和傳輸層協(xié)議<tpPix)tO>140指定的TCP協(xié)議類型添加到強(qiáng)關(guān)聯(lián)表,并指定當(dāng)命中強(qiáng)關(guān)聯(lián)表項(xiàng)時(shí)經(jīng)過(guò)延遲確認(rèn)包數(shù)〈delayPktNUm>141指定的3個(gè)數(shù)據(jù)包之后再將流識(shí)別為應(yīng)用協(xié)議標(biāo)識(shí)符<appProtoId>142指定的協(xié)議號(hào)為3的應(yīng)用協(xié)議類型。
[0079]圖2給出了本發(fā)明實(shí)施例提供的應(yīng)用協(xié)議識(shí)別引擎200的功能框圖。如圖2所示,應(yīng)用協(xié)議識(shí)別引擎200包括識(shí)別模塊202、配置模塊204、應(yīng)用協(xié)議特征匹配單元216、規(guī)則庫(kù)存儲(chǔ)單元218、全流表存儲(chǔ)單元220和半流關(guān)聯(lián)表存儲(chǔ)單元222。其中,識(shí)別模塊202包括強(qiáng)關(guān)聯(lián)識(shí)別模塊206、單包識(shí)別模塊208、多包識(shí)別模塊210、算法解密識(shí)別模塊212和通道提取識(shí)別模塊214。
[0080]圖3給出了本發(fā)明實(shí)施例提供的應(yīng)用協(xié)議特征匹配單元216的功能框圖。如圖3所示,應(yīng)用協(xié)議特征匹配單元216包括關(guān)聯(lián)表匹配單元302、分流匹配單元304、深度包檢測(cè)單元306和基本特征匹配單元308。其中,深度包檢測(cè)單元306包括多模式串匹配單元310、混合匹配單元312和匹配結(jié)果判別單元314,基本特征匹配單元308包括包位置方向匹配單元316、包長(zhǎng)匹配單元318、正則表達(dá)式匹配單元320、單模式串匹配單元322、算法插件匹配單元324、動(dòng)態(tài)解密匹配單元326、靜態(tài)解密匹配單元328、IP地址匹配單元330和端口匹配單元332。
[0081]強(qiáng)關(guān)聯(lián)識(shí)別模塊206通過(guò)關(guān)聯(lián)表匹配單元302進(jìn)行強(qiáng)關(guān)聯(lián)匹配和應(yīng)用協(xié)議識(shí)別。關(guān)聯(lián)表匹配單元302對(duì)輸入數(shù)據(jù)包的源(或目的)IP、源(或目的)端口和傳輸層協(xié)議的三元組進(jìn)行哈希運(yùn)算后查找半流關(guān)聯(lián)表存儲(chǔ)單元222中的強(qiáng)關(guān)聯(lián)表并根據(jù)命中的關(guān)聯(lián)表節(jié)點(diǎn)確定流的應(yīng)用協(xié)議類型,并將全流表存儲(chǔ)單元220中當(dāng)前流對(duì)應(yīng)的流節(jié)點(diǎn)標(biāo)記為已識(shí)別的應(yīng)用協(xié)議類型。
[0082]單包識(shí)別模塊208通過(guò)分流匹配單元304和深度包檢測(cè)單元306進(jìn)行匹配和應(yīng)用協(xié)議識(shí)別。其中,深度包檢測(cè)單元306的工作過(guò)程通??煞譃轭A(yù)處理和匹配兩個(gè)階段。
[0083]在深度包檢測(cè)單元306的預(yù)處理階段,配置模塊204對(duì)輸入的規(guī)則庫(kù)存儲(chǔ)單元218中保存的單包識(shí)別模塊208、多包識(shí)別模塊210、算法解密識(shí)別模塊212和通道提取識(shí)別模塊214的影子規(guī)則庫(kù)統(tǒng)一進(jìn)行預(yù)處理,生成深度包檢測(cè)單元306的核心,即多模式串匹配單元310和混合匹配單元312,并執(zhí)行無(wú)縫熱切換使新生成的深度包檢測(cè)單元306核心生效,規(guī)則庫(kù)存儲(chǔ)單元218中的影子規(guī)則庫(kù)成為處于活動(dòng)狀態(tài)的主規(guī)則庫(kù),而原主規(guī)則庫(kù)則成為影子規(guī)則庫(kù),原深度包檢測(cè)單元核心將被銷毀。
[0084]在深度包檢測(cè)單元306的預(yù)處理階段,將生成深度包檢測(cè)單元的三個(gè)實(shí)例,包括Web應(yīng)用深度包檢測(cè)單元、TCP深度包檢測(cè)單元和UDP深度包檢測(cè)單元。其中,Web應(yīng)用深度包檢測(cè)單元由單包識(shí)別模塊208的Web類應(yīng)用規(guī)則的數(shù)據(jù)包特征生成,TCP深度包檢測(cè)單元由通過(guò)TCP協(xié)議傳輸?shù)姆荳eb類應(yīng)用相應(yīng)的單包識(shí)別模塊208、多包識(shí)別模塊210、算法解密識(shí)別模塊212和通道提取識(shí)別模塊214的規(guī)則的數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征生成,而UDP深度包檢測(cè)單元由通過(guò)UDP協(xié)議傳輸?shù)膽?yīng)用相應(yīng)的單包識(shí)別模塊208、多包識(shí)別模塊210、算法解密識(shí)別模塊212和通道提取識(shí)別模塊214的規(guī)則的數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征生成。
[0085]在深度包檢測(cè)單元306的匹配階段,多模式串匹配單元310和混合匹配單元312以待分類流中的帶有效負(fù)載的數(shù)據(jù)包和規(guī)則庫(kù)存儲(chǔ)單元218中的主規(guī)則庫(kù)作為輸入,并聯(lián)合基本特征匹配單元308和關(guān)聯(lián)表匹配單元302對(duì)應(yīng)用協(xié)議識(shí)別規(guī)則的數(shù)據(jù)包特征進(jìn)行匹配,輸出初步命中的應(yīng)用協(xié)議識(shí)別規(guī)則子集和應(yīng)用協(xié)議識(shí)別規(guī)則的數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征的應(yīng)用協(xié)議基本特征的命中狀態(tài),然后,匹配結(jié)果判別單元314對(duì)應(yīng)用協(xié)議基本特征之間應(yīng)滿足的邏輯關(guān)系進(jìn)一步進(jìn)行驗(yàn)證,從而篩選出最終命中了數(shù)據(jù)包特征的單包識(shí)別規(guī)則、命中了數(shù)據(jù)包特征或預(yù)過(guò)濾數(shù)據(jù)包特征的多包識(shí)別規(guī)則以及命中了預(yù)過(guò)濾數(shù)據(jù)包特征的算法解密識(shí)別規(guī)則和通道提取識(shí)別規(guī)則并輸出。
[0086]多包識(shí)別模塊210通過(guò)單包識(shí)別模塊208的深度包檢測(cè)單元306進(jìn)行匹配和應(yīng)用協(xié)議識(shí)別。多包識(shí)別模塊210通過(guò)深度包檢測(cè)單元306過(guò)濾出初步命中的多包識(shí)別規(guī)則子集,對(duì)命中的規(guī)則生成相應(yīng)的流多包子節(jié)點(diǎn)并將其保存在當(dāng)前待識(shí)別流所對(duì)應(yīng)的全流表存儲(chǔ)單元220中,對(duì)后續(xù)到達(dá)的數(shù)據(jù)包,由深度包檢測(cè)單元306繼續(xù)匹配,多包識(shí)別模塊210根據(jù)匹配結(jié)果和保存的匹配狀態(tài)判定流多包子節(jié)點(diǎn)對(duì)應(yīng)的規(guī)則的命中狀態(tài),同時(shí)更新匹配狀態(tài)并將其保存在全流表存儲(chǔ)單元220中的流多包子節(jié)點(diǎn)中。
[0087]算法解密識(shí)別模塊212通過(guò)算法插件匹配單元324、動(dòng)態(tài)解密匹配單元326和靜態(tài)解密匹配單元328進(jìn)行匹配和應(yīng)用協(xié)議識(shí)別。算法解密識(shí)別模塊212首先通過(guò)單包識(shí)別模塊208的深度包檢測(cè)單元306過(guò)濾出初步命中的算法解密識(shí)別規(guī)則子集,然后對(duì)命中規(guī)則的函數(shù)算法解密特征或密碼算法解密特征分別由算法插件匹配單元324、動(dòng)態(tài)解密匹配單元326或靜態(tài)解密匹配單元328繼續(xù)匹配,最后根據(jù)匹配結(jié)果判定最終命中狀態(tài)。
[0088]通道提取識(shí)別模塊214通過(guò)正則表達(dá)式匹配單元320和算法插件匹配單元324進(jìn)行關(guān)聯(lián)通道提取并進(jìn)而通過(guò)強(qiáng)關(guān)聯(lián)識(shí)別模塊206進(jìn)行應(yīng)用協(xié)議識(shí)別。通道提取識(shí)別模塊214通過(guò)已經(jīng)成功識(shí)別并且指定了提取關(guān)聯(lián)類型的通道關(guān)聯(lián)動(dòng)作的單包識(shí)別模塊208、多包識(shí)別模塊210或算法解密識(shí)別模塊212獲取候選的通道提取識(shí)別規(guī)則子集,并根據(jù)單包識(shí)別模塊208輸出的通道提取識(shí)別規(guī)則預(yù)過(guò)濾數(shù)據(jù)包特征的命中狀態(tài)最終確定用以進(jìn)行通道提取的規(guī)則;通道提取識(shí)別模塊214根據(jù)規(guī)則指定的正則通道提取器或函數(shù)通道提取器分別由正則表達(dá)式匹配單元320或算法插件匹配單元324提取關(guān)聯(lián)通道的IP地址、端口和傳輸層協(xié)議,并根據(jù)規(guī)則指定的強(qiáng)關(guān)聯(lián)類型的通道關(guān)聯(lián)動(dòng)作將關(guān)聯(lián)基本特征添加到半流關(guān)聯(lián)表存儲(chǔ)單元222中的強(qiáng)關(guān)聯(lián)表中;若待提取的關(guān)聯(lián)通道數(shù)據(jù)分布在多個(gè)數(shù)據(jù)包之中,則為命中的規(guī)則生成相應(yīng)的流通道提取子節(jié)點(diǎn)并將其保存在當(dāng)前流所對(duì)應(yīng)的全流表存儲(chǔ)單元220中,對(duì)當(dāng)前及后續(xù)到達(dá)的數(shù)據(jù)包,緩存相應(yīng)的關(guān)聯(lián)通道數(shù)據(jù),然后再進(jìn)行關(guān)聯(lián)通道的提取。
[0089]配置模塊204對(duì)應(yīng)用協(xié)議識(shí)別引擎200的識(shí)別參數(shù)進(jìn)行設(shè)置和查詢,包括流掃描數(shù)據(jù)包個(gè)數(shù)、延遲確認(rèn)動(dòng)作開(kāi)關(guān),強(qiáng)關(guān)聯(lián)識(shí)別模塊206、多包識(shí)別模塊210、算法解密識(shí)別模塊212和通道提取識(shí)別模塊214的啟用/禁用開(kāi)關(guān),單包識(shí)別模塊208的數(shù)據(jù)包載荷全包掃描開(kāi)關(guān)、數(shù)據(jù)包載荷頭尾部掃描字節(jié)數(shù)、HTTP報(bào)文數(shù)據(jù)掃描字節(jié)數(shù),強(qiáng)關(guān)聯(lián)識(shí)別模塊206的關(guān)聯(lián)表老化超時(shí)間隔、特定應(yīng)用協(xié)議的關(guān)聯(lián)表老化超時(shí)間隔等;配置模塊204通過(guò)規(guī)則庫(kù)存儲(chǔ)單元218對(duì)應(yīng)用協(xié)議識(shí)別引擎200的規(guī)則庫(kù)進(jìn)行配置,包括規(guī)則庫(kù)的加載與解析、規(guī)則庫(kù)的預(yù)處理、規(guī)則庫(kù)的在線升級(jí)及熱切換、規(guī)則庫(kù)的持久化存儲(chǔ)和規(guī)則庫(kù)的查詢等。
[0090]圖4給出了本發(fā)明實(shí)施例提供的多重應(yīng)用協(xié)議識(shí)別方法的工作流程圖。如圖4所示,多重應(yīng)用協(xié)議識(shí)別方法的主要工作流程如下:
[0091]O)選中應(yīng)用協(xié)議識(shí)別引擎200的識(shí)別模塊202 ;
[0092]I)輸入數(shù)據(jù)包、流節(jié)點(diǎn)上下文,更新流相關(guān)統(tǒng)計(jì)信息;其中,流節(jié)點(diǎn)上下文包括流節(jié)點(diǎn)、流子節(jié)點(diǎn)等,流相關(guān)統(tǒng)計(jì)信息保存在流節(jié)點(diǎn)中,包括包計(jì)數(shù)、各流方向上的當(dāng)前包位
置等;
[0093]2)進(jìn)入強(qiáng)關(guān)聯(lián)識(shí)別模塊206執(zhí)行匹配:若當(dāng)前流已強(qiáng)關(guān)聯(lián)識(shí)別成功,則更新對(duì)應(yīng)的流節(jié)點(diǎn)的識(shí)別狀態(tài),回收流節(jié)點(diǎn)中的全部流子節(jié)點(diǎn),并轉(zhuǎn)至步驟I)繼續(xù)執(zhí)行;否則轉(zhuǎn)至步驟3)繼續(xù)執(zhí)行;
[0094]3)進(jìn)入單包識(shí)別模塊208執(zhí)行匹配:首先通過(guò)分流匹配單元304將待識(shí)別流粗分為Web流量、TCP非Web流量或UDP流量,進(jìn)而通過(guò)對(duì)應(yīng)的Web應(yīng)用深度包檢測(cè)單元406、TCP深度包檢測(cè)單元404或UDP深度包檢測(cè)單元402進(jìn)行匹配;若當(dāng)前流已單包識(shí)別成功,則更新對(duì)應(yīng)的流節(jié)點(diǎn)的識(shí)別狀態(tài),并轉(zhuǎn)至步驟6)繼續(xù)執(zhí)行;否則轉(zhuǎn)至步驟4)繼續(xù)執(zhí)行;
[0095]4)進(jìn)入多包識(shí)別模塊210執(zhí)行匹配:若當(dāng)前流已多包識(shí)別成功,則更新對(duì)應(yīng)的流節(jié)點(diǎn)的識(shí)別狀態(tài),并轉(zhuǎn)至步驟6)繼續(xù)執(zhí)行;否則更新對(duì)應(yīng)的流多包子節(jié)點(diǎn)的匹配狀態(tài),并轉(zhuǎn)至步驟5)繼續(xù)執(zhí)行;
[0096]5)進(jìn)入算法解密識(shí)別模塊212執(zhí)行匹配:若當(dāng)前流已算法解密識(shí)別成功,則更新對(duì)應(yīng)的流節(jié)點(diǎn)的識(shí)別狀態(tài),并轉(zhuǎn)至步驟6)繼續(xù)執(zhí)行;否則轉(zhuǎn)至步驟I)繼續(xù)執(zhí)行;
[0097]6)進(jìn)入通道提取識(shí)別模塊214執(zhí)行匹配:若通道提取識(shí)別成功完成,則回收流節(jié)點(diǎn)中的全部流子節(jié)點(diǎn),否則更新對(duì)應(yīng)的流通道提取子節(jié)點(diǎn);轉(zhuǎn)至步驟I)繼續(xù)執(zhí)行;
[0098]圖5給出了本發(fā)明實(shí)施例提供的多重應(yīng)用協(xié)議識(shí)別流水線的工作原理示意圖。如圖5所示,多重應(yīng)用協(xié)議識(shí)別流水線由第一級(jí)流水節(jié)點(diǎn)502、第二級(jí)流水節(jié)點(diǎn)504、第三級(jí)流水節(jié)點(diǎn)506、第四級(jí)流水節(jié)點(diǎn)508和第五級(jí)流水節(jié)點(diǎn)510組成,每級(jí)流水節(jié)點(diǎn)包括一個(gè)應(yīng)用協(xié)議識(shí)別線程,各級(jí)流水節(jié)點(diǎn)之間分別通過(guò)FIFO隊(duì)列512、FIF0隊(duì)列514、FIF0隊(duì)列516和FIFO隊(duì)列518進(jìn)行通信,前一級(jí)流水節(jié)點(diǎn)作為生產(chǎn)者將中間識(shí)別結(jié)果放入隊(duì)列,后一級(jí)流水節(jié)點(diǎn)則作為消費(fèi)者從隊(duì)列中取出中間識(shí)別結(jié)果繼續(xù)進(jìn)行識(shí)別。其中,第一級(jí)流水節(jié)點(diǎn)502對(duì)應(yīng)強(qiáng)關(guān)聯(lián)識(shí)別模塊206,第二級(jí)流水節(jié)點(diǎn)504對(duì)應(yīng)單包識(shí)別模塊208,第三級(jí)流水節(jié)點(diǎn)506對(duì)應(yīng)多包識(shí)別模塊210,第四級(jí)流水節(jié)點(diǎn)508對(duì)應(yīng)算法解密識(shí)別模塊212,第五級(jí)流水節(jié)點(diǎn)510對(duì)應(yīng)通道提取識(shí)別模塊214。
[0099]多重應(yīng)用協(xié)議識(shí)別流水線的主要工作流程如下:
[0100]O)輸入數(shù)據(jù)包、流節(jié)點(diǎn)上下文,更新流相關(guān)統(tǒng)計(jì)信息;其中,流節(jié)點(diǎn)上下文包括流節(jié)點(diǎn)、流子節(jié)點(diǎn)等,流相關(guān)統(tǒng)計(jì)信息保存在流節(jié)點(diǎn)中,包括包計(jì)數(shù)、各流方向上的當(dāng)前包位
置等;
[0101]I)進(jìn)入第一級(jí)流水節(jié)點(diǎn)502:
[0102]與強(qiáng)關(guān)聯(lián)識(shí)別模塊206對(duì)應(yīng)的識(shí)別線程讀取數(shù)據(jù)包和流節(jié)點(diǎn)上下文,進(jìn)行強(qiáng)關(guān)聯(lián)識(shí)別并生成中間識(shí)別結(jié)果,將其放入FIFO隊(duì)列512,然后將處理流程轉(zhuǎn)至下一級(jí)流水節(jié)點(diǎn);
[0103]2)進(jìn)入第二級(jí)流水節(jié)點(diǎn)504:
[0104]與單包識(shí)別模塊208對(duì)應(yīng)的識(shí)別線程讀取FIFO隊(duì)列512,進(jìn)行單包識(shí)別并生成中間識(shí)別結(jié)果,將其放入FIFO隊(duì)列514,然后將處理流程轉(zhuǎn)至下一級(jí)流水節(jié)點(diǎn);
[0105]3)進(jìn)入第三級(jí)流水節(jié)點(diǎn)506:
[0106]與多包識(shí)別模塊210對(duì)應(yīng)的識(shí)別線程讀取FIFO隊(duì)列514,進(jìn)行多包識(shí)別并生成中間識(shí)別結(jié)果,將其放入FIFO隊(duì)列516,然后將處理流程轉(zhuǎn)至下一級(jí)流水節(jié)點(diǎn);
[0107]4)進(jìn)入第四級(jí)流水節(jié)點(diǎn)508:
[0108]與算法解密識(shí)別模塊212對(duì)應(yīng)的識(shí)別線程讀取FIFO隊(duì)列516,進(jìn)行算法解密識(shí)別并生成中間識(shí)別結(jié)果,將其放入FIFO隊(duì)列518,然后將處理流程轉(zhuǎn)至下一級(jí)流水節(jié)點(diǎn);
[0109]5)進(jìn)入第五級(jí)流水節(jié)點(diǎn)510:
[0110]與通道提取識(shí)別模塊214對(duì)應(yīng)的識(shí)別線程讀取FIFO隊(duì)列518,判斷當(dāng)前識(shí)別結(jié)果:若已成功識(shí)別,則更新對(duì)應(yīng)的流節(jié)點(diǎn)的識(shí)別狀態(tài),回收流節(jié)點(diǎn)中的流子節(jié)點(diǎn),并進(jìn)行通道提取識(shí)別;否則,將中間識(shí)別結(jié)果存入流節(jié)點(diǎn)中。
[0111]到此,本次流水線識(shí)別結(jié)束。
[0112]圖6給出了本發(fā)明實(shí)施例提供的應(yīng)用協(xié)議識(shí)別引擎多實(shí)例并行匹配裝置的工作原理示意圖。如圖6所示,應(yīng)用協(xié)議識(shí)別引擎多實(shí)例并行匹配裝置包括硬件平臺(tái)602和軟件平臺(tái)604。其中,硬件平臺(tái)602包括NUMA_0節(jié)點(diǎn)608、NUMA_1節(jié)點(diǎn)610和硬件分流網(wǎng)卡606等;軟件平臺(tái)604包括應(yīng)用協(xié)議識(shí)別進(jìn)程612和應(yīng)用協(xié)議識(shí)別進(jìn)程614等。
[0113]NUMA_0節(jié)點(diǎn)608和NUMA_1節(jié)點(diǎn)610具有相同的結(jié)構(gòu),包括兩個(gè)CPU核心和本地內(nèi)存,其中,每個(gè)CPU核心都可訪問(wèn)所有NUMA節(jié)點(diǎn)上的本地內(nèi)存和遠(yuǎn)端內(nèi)存。
[0114]硬件分流網(wǎng)卡606包括四個(gè)接收隊(duì)列通道,分別對(duì)應(yīng)于NUMA_0節(jié)點(diǎn)608和NUMA_1節(jié)點(diǎn)610的四個(gè)CPU核心,數(shù)據(jù)包通過(guò)硬件哈希函數(shù)和分流哈希表被分流到相應(yīng)的接收隊(duì)列,并保證同一條數(shù)據(jù)流總是被分發(fā)到同一個(gè)CPU核心進(jìn)行處理。
[0115]應(yīng)用協(xié)議識(shí)別進(jìn)程612包括識(shí)別線程616、識(shí)別線程618和識(shí)別資源620。其中,識(shí)別線程616和識(shí)別線程618為應(yīng)用協(xié)議識(shí)別引擎的實(shí)例化線程,并分別與NUMA_0節(jié)點(diǎn)608的兩個(gè)CPU核心綁定;識(shí)別資源620包括本地規(guī)則庫(kù)、本地關(guān)聯(lián)表和本地會(huì)話流表,其中,本地關(guān)聯(lián)表和本地會(huì)話流表的節(jié)點(diǎn)內(nèi)存池預(yù)先從NUMA_0節(jié)點(diǎn)608的本地內(nèi)存進(jìn)行分配。識(shí)別線程616和識(shí)別線程618共享識(shí)別資源620。
[0116]應(yīng)用協(xié)議識(shí)別進(jìn)程614與應(yīng)用協(xié)議識(shí)別進(jìn)程612完全類似,包括識(shí)別線程622、識(shí)別線程624和識(shí)別資源626,此處不再贅述。[0117]應(yīng)用協(xié)議識(shí)別進(jìn)程612與應(yīng)用協(xié)議識(shí)別進(jìn)程614共享NUMA_0節(jié)點(diǎn)608和NUMA_1節(jié)點(diǎn)610的內(nèi)存,因此可以申請(qǐng)和訪問(wèn)對(duì)方的識(shí)別資源,但優(yōu)先使用本地識(shí)別資源。當(dāng)本地關(guān)聯(lián)表和本地會(huì)話流表的節(jié)點(diǎn)不夠分配時(shí),可以從遠(yuǎn)端節(jié)點(diǎn)內(nèi)存池進(jìn)行申請(qǐng),并在老化時(shí)優(yōu)先回收到原節(jié)點(diǎn)內(nèi)存池。
[0118]識(shí)別資源620和識(shí)別資源626的本地關(guān)聯(lián)表為半流關(guān)聯(lián)表,硬件分流網(wǎng)卡606并不能保證半流被分發(fā)到同一個(gè)NUMA節(jié)點(diǎn),因此,在對(duì)流進(jìn)行應(yīng)用協(xié)議的強(qiáng)關(guān)聯(lián)識(shí)別時(shí)需要同時(shí)訪問(wèn)識(shí)別資源620和識(shí)別資源626的本地關(guān)聯(lián)表,并且首先查找本地關(guān)聯(lián)表,若未命中則繼續(xù)查找遠(yuǎn)端關(guān)聯(lián)表。
【權(quán)利要求】
1.一種多重應(yīng)用協(xié)議識(shí)別方法和應(yīng)用協(xié)議識(shí)別引擎,其特征在于: 多重應(yīng)用協(xié)議識(shí)別方法基于XML語(yǔ)言提供了特征條件、解密套件條件、應(yīng)用協(xié)議特征、應(yīng)用協(xié)議命中動(dòng)作、多種檢測(cè)識(shí)別模型及相應(yīng)的規(guī)則描述方法; 應(yīng)用協(xié)議識(shí)別引擎包括應(yīng)用協(xié)議特征匹配單元、全流表存儲(chǔ)單元、半流關(guān)聯(lián)表存儲(chǔ)單元、規(guī)則庫(kù)存儲(chǔ)單元、識(shí)別模塊和配置模塊。
2.根據(jù)權(quán)利要求1所述的特征條件,其特征在于: 所述的特征條件指定應(yīng)用協(xié)議所應(yīng)滿足的基本條件約束,用以描述應(yīng)用協(xié)議基本特征; 所述的特征條件包括特征字節(jié)碼條件〈hex〉、特征字符串條件〈string〉、特征偏移量條件〈offset〉、特征長(zhǎng)度條件〈length〉、特征字節(jié)序條件〈endian〉、特征運(yùn)算符條件〈operator〉、IP條件<ip>、端口條件〈port〉和正則表達(dá)式條件<pcre> ; 所述的特征字節(jié)碼條件〈hex〉指定應(yīng)用協(xié)議特征的內(nèi)容由字節(jié)碼描述,其內(nèi)容取值為由十六進(jìn)制字符組成并且固定為網(wǎng)絡(luò)字節(jié)序的位串,并且由type屬性指定內(nèi)容取值為單值類型、區(qū)間類型、單值列表類型或單值/區(qū)間混合列表類型; 所述的特征字符串條件〈string〉指定應(yīng)用協(xié)議特征的內(nèi)容由ASCII字符串進(jìn)行描述,并且由case屬性指定內(nèi)容取值是否為大小寫(xiě)敏感格式; 所述的特征偏移量條 件〈offset〉指定應(yīng)用協(xié)議特征的所述的特征字節(jié)碼條件〈hex〉或所述的特征字符串條件〈string〉的固定或不固定位置的偏移量,并且由relative屬性指定位置偏移量的相對(duì)參考方向; 所述的特征長(zhǎng)度條件〈length〉指定應(yīng)用協(xié)議特征的所述的特征字節(jié)碼條件〈hex〉或所述的特征字符串條件〈string〉內(nèi)容的長(zhǎng)度; 所述的特征字節(jié)序條件〈endian〉指定數(shù)據(jù)包載荷中由所述的特征偏移量條件〈offset〉和所述的特征長(zhǎng)度條件〈length〉指定位置處的內(nèi)容的字節(jié)序; 所述的特征運(yùn)算符條件〈operator〉指定數(shù)據(jù)包載荷中由所述的特征偏移量條件〈offset〉、所述的特征長(zhǎng)度條件〈length〉和所述的特征字節(jié)序條件〈endian〉描述位置處的內(nèi)容與所述的特征字節(jié)碼條件〈hex〉或所述的特征字符串條件〈string〉的內(nèi)容所應(yīng)滿足的運(yùn)算關(guān)系; 所述的IP條件<ip>指定應(yīng)用協(xié)議特征為IPv4或IPv6格式的IP地址,并且由ver和side屬性分別設(shè)置IP地址的版本和歸屬端; 所述的端口條件〈port〉指定應(yīng)用協(xié)議特征為端口,并且由type和side屬性分別設(shè)定端口的單值或區(qū)間類型格式和歸屬端; 所述的正則表達(dá)式條件<pcre>指定應(yīng)用協(xié)議特征為標(biāo)準(zhǔn)PCRE格式的正則表達(dá)式。
3.根據(jù)權(quán)利要求1到2所述的解密套件條件,其特征在于: 所述的解密套件條件指定對(duì)數(shù)據(jù)包載荷進(jìn)行解密以驗(yàn)證應(yīng)用協(xié)議特征時(shí)所使用的解密算法套件,為應(yīng)用協(xié)議特征的依賴條件; 所述的解密套件條件包括簡(jiǎn)單解密算法條件〈crypto〉、解密符號(hào)表達(dá)式條件〈cryptosymexp〉、密鑰類型條件〈keytype〉、靜態(tài)密鑰條件〈stakey〉、動(dòng)態(tài)密鑰條件〈dynkey〉和解密模式條件〈cryptomode〉等基本密碼算法條件、靜態(tài)解密條件〈staticDecrypt〉和動(dòng)態(tài)解密條件〈dynamicDecrypt〉;所述的簡(jiǎn)單解密算法條件〈crypto〉指定靜態(tài)或動(dòng)態(tài)解密時(shí)使用的解密密碼算法,其內(nèi)容取值包括異或、加法和減法; 所述的解密符號(hào)表達(dá)式條件〈cryptosymexp〉指定靜態(tài)或動(dòng)態(tài)解密時(shí)使用的解密運(yùn)算符號(hào)表達(dá)式,其內(nèi)容由密鑰符號(hào)k、當(dāng)前密文符號(hào)C、下一密文符號(hào)η、整數(shù)常量及異或運(yùn)算符號(hào)~、加法運(yùn)算符號(hào)+、減法運(yùn)算符號(hào)-和括號(hào)組成;〈Crypt0SymeXp>用以描述復(fù)雜的迭代解密模式場(chǎng)景; 所述的密鑰類型條件〈keytype〉指定解密密鑰的類型,其內(nèi)容取值包括分組密碼密鑰類型和流密碼密鑰類型; 所述的靜態(tài)密鑰條件〈stakey〉指定解密使用的靜態(tài)密鑰,其由所述的特征字節(jié)碼條件〈hex〉和所述的特征長(zhǎng)度條件〈length〉組成。其中,〈hex〉的type屬性的取值只能為單值類型和單值列表類型,分別表示分組密碼密鑰類型的單密鑰和流密碼密鑰類型的流密鑰; 所述的動(dòng)態(tài)密鑰條件〈dynkey〉由所述的特征偏移量條件〈offset〉、所述的特征長(zhǎng)度條件〈length〉和所述的特征字節(jié)序條件〈endian〉組成;〈dynkey>指定動(dòng)態(tài)密鑰為從數(shù)據(jù)包載荷的〈offset〉處提取的長(zhǎng)度為〈length〉并且字節(jié)序?yàn)椤磂ndian〉的字節(jié)碼; 所述的解密模式條件〈cryptomode〉指定靜態(tài)或動(dòng)態(tài)解密的操作模式,其內(nèi)容取值包括ecb簡(jiǎn)單模式和cbc迭代模式。其中,I)對(duì)于ecb簡(jiǎn)單模式,當(dāng)所述的密鑰類型條件〈keytype〉設(shè)置為分組密碼密鑰類型時(shí),ecb模式使用所述的簡(jiǎn)單解密算法條件〈crypto〉和所述的靜態(tài)密鑰條件〈stakey〉或所述的動(dòng)態(tài)密鑰條件〈dynkey〉指定的單個(gè)密鑰對(duì)數(shù)據(jù)包載荷中指定位置 處的內(nèi)容按所述的靜態(tài)密鑰條件〈stakey〉或所述的動(dòng)態(tài)密鑰條件〈dynkey〉指定的所述的特征長(zhǎng)度條件〈length〉分組依次進(jìn)行解密;當(dāng)所述的密鑰類型條件〈keytype〉設(shè)置為流密碼密鑰類型時(shí),ecb簡(jiǎn)單模式使用所述的簡(jiǎn)單解密算法〈crypto〉和所述的靜態(tài)密鑰條件〈stakey〉或所述的動(dòng)態(tài)密鑰條件〈dynkey〉指定的流密鑰對(duì)數(shù)據(jù)包載荷中指定位置處的內(nèi)容按字節(jié)分組依次進(jìn)行解密。2)對(duì)于cbc迭代模式,當(dāng)所述的密鑰類型條件〈keytype〉設(shè)置為分組密碼密鑰類型時(shí),cbc迭代模式使用所述的解密符號(hào)表達(dá)式條件〈cryptosymexp〉指定的迭代解密算法和所述的靜態(tài)密鑰條件〈stakey〉或所述的動(dòng)態(tài)密鑰條件〈dynkey〉指定的單個(gè)密鑰對(duì)數(shù)據(jù)包載荷中指定位置處的內(nèi)容按所述的靜態(tài)密鑰條件〈stakey〉或所述的動(dòng)態(tài)密鑰條件〈dynkey〉指定的所述的特征長(zhǎng)度條件〈length〉分組依次進(jìn)行解密;當(dāng)所述的密鑰類型條件〈keytype〉設(shè)置為流密碼密鑰類型時(shí),cbc迭代模式使用所述的解密符號(hào)表達(dá)式條件〈cryptosymexp〉指定的迭代解密算法和所述的靜態(tài)密鑰條件〈stakey〉或所述的動(dòng)態(tài)密鑰條件〈dynkey〉指定的流密鑰對(duì)數(shù)據(jù)包載荷中指定位置處的內(nèi)容按字節(jié)分組依次進(jìn)行解密; 所述的靜態(tài)解密條件〈staticDecrypt〉指定對(duì)數(shù)據(jù)包載荷中的應(yīng)用協(xié)議特征位置處的內(nèi)容進(jìn)行靜態(tài)解密時(shí)使用的解密套件,其內(nèi)容由所述的簡(jiǎn)單解密算法條件〈crypto〉、所述的解密符號(hào)表達(dá)式條件〈cryptosymexp〉、所述的密鑰類型條件〈keytype〉、所述的靜態(tài)密鑰條件〈stakey〉和所述的解密模式條件〈cryptomode〉構(gòu)成; 所述的動(dòng)態(tài)解密條件〈dynamicDecrypt〉指定對(duì)數(shù)據(jù)包載荷中的應(yīng)用協(xié)議特征位置處的內(nèi)容進(jìn)行動(dòng)態(tài)解密時(shí)使用的解密套件,其內(nèi)容由所述的簡(jiǎn)單解密算法條件〈crypto〉、所述的解密符號(hào)表達(dá)式條件〈cryptosymexp〉、所述的密鑰類型條件〈keytype〉、所述的動(dòng)態(tài)密鑰條件〈dynkey〉、所述的解密模式條件〈cryptomode〉組成;若動(dòng)態(tài)密鑰為密文,則〈dynamicDecrypt〉還應(yīng)包括所述的靜態(tài)解密條件〈staticDecrypt〉以將動(dòng)態(tài)密鑰還原為明文。
4.根據(jù)權(quán)利要求1到3所述的應(yīng)用協(xié)議特征,其特征在于: 所述的應(yīng)用協(xié)議特征包括關(guān)鍵字簽名基本特征〈sigKeyword〉、包長(zhǎng)簽名基本特征<sigPayloadLen>、IP簽名基本特征〈siglp〉、端口簽名基本特征〈sigPort〉、正則表達(dá)式簽名基本特征〈sigPcre〉、關(guān)聯(lián)基本特征〈relate〉和算法插件基本特征〈sigAlgoPlugin〉等應(yīng)用協(xié)議基本特征和數(shù)據(jù)包特征〈packet〉; 所述的關(guān)鍵字簽名基本特征〈sigKeyword〉的內(nèi)容由所述的特征偏移量條件〈offset〉、所述的特征長(zhǎng)度條件〈length〉、所述的特征字節(jié)序條件〈endian〉、所述的特征運(yùn)算符條件〈operator〉、所述的特征字節(jié)碼條件〈hex〉或所述的特征字符串條件〈string〉、所述的靜態(tài)解密條件〈staticDecrypt〉或所述的動(dòng)態(tài)解密條件〈dynamicDecrypt〉組成?!磗igKeyword〉描述了在數(shù)據(jù)包載荷的偏移位置〈offset〉處提取的長(zhǎng)度〈length〉的字節(jié)碼(若指定了所述的靜態(tài)解密條件〈staticDecrypt〉或所述的動(dòng)態(tài)解密條件〈dynamicDecrypt〉,則需先進(jìn)行解密)按照字節(jié)序〈endian〉與字節(jié)碼〈hex〉或字符串〈string〉應(yīng)滿足運(yùn)算符〈operator〉?!磗igKeyword〉可設(shè)置 id、role 和 cipher 屬性,其中,id屬性指定關(guān)鍵字簽名的編號(hào);role屬性指定關(guān)鍵字簽名的角色,包括指定關(guān)鍵字簽名為唯一的主要特征或指定關(guān)鍵字簽名為次要特征cipher屬性指定關(guān)鍵字簽名是否需要解密,包括指定關(guān)鍵字簽名無(wú)需解密、指定關(guān)鍵字簽名需使用所述的靜態(tài)解密條件〈staticDecrypt〉解密或指定關(guān)鍵字簽名需使用所述的動(dòng)態(tài)解密條件〈dynamicDecrypt〉解密; 所述的包長(zhǎng)簽名基本 特征〈sigPayloadLen〉的內(nèi)容由所述的特征偏移量條件〈offset〉、所述的特征長(zhǎng)度條件〈length〉、所述的特征字節(jié)序條件〈endian〉、所述的特征運(yùn)算符條件〈operator〉和所述的特征字節(jié)碼條件〈hex〉組成?!磗igPayloadLen〉描述了從數(shù)據(jù)包載荷的偏移位置〈offset〉處提取的長(zhǎng)度〈length〉的字節(jié)碼按照字節(jié)序〈endian〉轉(zhuǎn)換成的整數(shù)值加上字節(jié)碼〈hex〉的值與數(shù)據(jù)包包長(zhǎng)應(yīng)滿足運(yùn)算符〈operator〉;若〈length〉的值為0,則表示無(wú)需從數(shù)據(jù)包載荷提取內(nèi)容,但指定字節(jié)碼〈hex〉的值與數(shù)據(jù)包包長(zhǎng)應(yīng)滿足關(guān)系〈operator〉。〈sigPayloadLen〉可設(shè)置id和role屬性,其中,id屬性指定包長(zhǎng)簽名的編號(hào);role屬性指定包長(zhǎng)簽名的角色,包括指定包長(zhǎng)簽名為次要特征;所述的IP簽名基本特征〈siglp〉的內(nèi)容由所述的IP條件<ip>組成。〈siglp〉描述了數(shù)據(jù)包應(yīng)帶有的IP地址。〈siglp〉可設(shè)置id和role屬性,其中,id屬性指定IP簽名的編號(hào);role屬性指定IP簽名的角色,包括指定IP簽名為次要特征; 所述的端口簽名基本特征〈sigPort〉的內(nèi)容由所述的端口條件〈port〉組成?!磗igPort〉描述了數(shù)據(jù)包應(yīng)帶有的端口?!磗igPort〉可設(shè)置id和role屬性,其中,id屬性指定端口簽名的編號(hào);role屬性指定端口簽名的角色,包括指定端口簽名為次要特征;所述的正則表達(dá)式簽名基本特征〈sigPcre〉的內(nèi)容由所述的特征偏移量條件〈offset〉、所述的特征字節(jié)碼條件〈hex〉或所述的特征字符串條件〈string〉和所述的正則表達(dá)式條件<pcre>組成,其中,〈hex〉或〈string〉為所述的正則表達(dá)式<pcre>包含的確定性子串。〈sigPcre〉描述了在數(shù)據(jù)包載荷的偏移位置〈offset〉處開(kāi)始的內(nèi)容應(yīng)符合正則表達(dá)式<pcre>?!磗igPcre〉可設(shè)置id和role屬性,其中,id屬性指定正則表達(dá)式簽名的編號(hào);role屬性指定正則表達(dá)式簽名的角色,包括指定正則表達(dá)式簽名為唯一的主要特征或指定正則表達(dá)式簽名為次要特征; 所述的關(guān)聯(lián)基本特征〈relate〉的內(nèi)容由所述的IP條件<ip>、所述的端口條件〈port〉、傳輸層協(xié)議〈tpProto〉、應(yīng)用協(xié)議標(biāo)識(shí)符〈appProtoId〉和延遲確認(rèn)包數(shù)<delayPktNum>組成?!磖elate〉描述了通過(guò)已識(shí)別流的半流關(guān)聯(lián)表緩存應(yīng)用協(xié)議類型以進(jìn)行后續(xù)直接關(guān)聯(lián)識(shí)別所需要的信息。其中,所述的IP條件<ip>和所述的端口條件〈port〉皆為空元素,其指定為當(dāng)前數(shù)據(jù)包的源(或目的)IP和端口 ;所述的傳輸層協(xié)議〈tpProto〉指定當(dāng)前數(shù)據(jù)包的傳輸層協(xié)議;所述的應(yīng)用協(xié)議標(biāo)識(shí)符〈appProtoId〉指定關(guān)聯(lián)的應(yīng)用協(xié)議類型編號(hào);所述的延遲確認(rèn)包數(shù)〈delayPktNum〉指定在關(guān)聯(lián)識(shí)別出應(yīng)用協(xié)議類型之后應(yīng)延遲確認(rèn)該識(shí)別結(jié)果并指定了應(yīng)繼續(xù)掃描數(shù)據(jù)包的個(gè)數(shù)?!磖elate〉可設(shè)置method屬性指定通道關(guān)聯(lián)的類型和方法,包括強(qiáng)關(guān)聯(lián)類型、弱關(guān)聯(lián)類型和提取關(guān)聯(lián)類型;其中,當(dāng)指定通道關(guān)聯(lián)為強(qiáng)關(guān)聯(lián)類型時(shí),關(guān)聯(lián)信息由<ip>、〈port〉、〈tpProto〉、〈appProtoId〉和〈delayPktNum〉組成,此處〈appProtoId〉表示命中半流關(guān)聯(lián)表時(shí)所識(shí)別出的應(yīng)用協(xié)議類型;當(dāng)指定通道關(guān)聯(lián)為弱關(guān)聯(lián)類型時(shí),關(guān)聯(lián)信息由<ip>、〈tpProto〉和〈appProtoId〉組成,此處〈appProtoId〉表示關(guān)聯(lián)識(shí)別的來(lái)源應(yīng)用協(xié)議類型,弱關(guān)聯(lián)類型的關(guān)聯(lián)基本特征通常用作預(yù)過(guò)濾特征;當(dāng)指定通道關(guān)聯(lián)為提取關(guān)聯(lián)類型時(shí),關(guān)聯(lián)信息由〈appProtoId〉組成,關(guān)聯(lián)通道信息從已識(shí)別為〈appProtoId〉類型的流的當(dāng)前或后續(xù)數(shù)據(jù)包中按照檢測(cè)識(shí)別模型指定的格式提??; 所述的算法插件基本特征〈sigAlgoPlugin〉的內(nèi)容由動(dòng)態(tài)共享庫(kù)插件<libso>和算法函數(shù)<func>組成?!磗igAlgoPlugin〉描述了數(shù)據(jù)包應(yīng)滿足的應(yīng)用協(xié)議特征由動(dòng)態(tài)共享庫(kù)導(dǎo)出的算法函數(shù)進(jìn)行提供和驗(yàn)證。其中,所述的動(dòng)態(tài)共享庫(kù)插件〈libso〉指定提供算法函數(shù)的動(dòng)態(tài)共享庫(kù)的名稱;所述的算法函數(shù)〈func>指定應(yīng)用協(xié)議識(shí)別算法函數(shù)名稱,應(yīng)用協(xié)議識(shí)別算法函數(shù)由所述的動(dòng)態(tài)共享庫(kù)插件〈libso〉指定的動(dòng)態(tài)共享庫(kù)導(dǎo)出,其接口和含義由〈sigAlgoPlugin〉所屬的檢測(cè)識(shí)別模型進(jìn)行定義和解釋; 所述的數(shù)據(jù)包特征〈packet〉的內(nèi)容由所述的關(guān)鍵字簽名基本特征〈sigKeyword〉、所述的包長(zhǎng)簽名基本特征〈sigPayloadLen〉、所述的IP簽名基本特征〈siglp〉、所述的端口簽名基本特征〈sigPort〉、所述的正則表達(dá)式簽名基本特征〈sigPcre〉和所述的關(guān)聯(lián)基本特征〈relate〉等應(yīng)用協(xié)議基本特征中的一個(gè)或多個(gè)組成?!磒acket〉描述了在指定的流方向、包位置和包方向上的數(shù)據(jù)包滿足的應(yīng)用協(xié)議特征?!磒acket〉可設(shè)置id、logrel、flowdir、pktdir和pktpos屬性,其中,id屬性指定數(shù)據(jù)包特征的編號(hào);logrel屬性指定多個(gè)應(yīng)用協(xié)議基本特征之間應(yīng)滿足的邏輯關(guān)系,包括指定多個(gè)應(yīng)用協(xié)議基本特征之間滿足邏輯與關(guān)系、邏輯或關(guān)系、邏輯表達(dá)式描述的邏輯關(guān)系,所述的邏輯表達(dá)式由由邏輯與、邏輯或、括號(hào)和應(yīng)用協(xié)議基本特征的編號(hào)組成;flowdir屬性指定由五元組標(biāo)識(shí)的流的流方向,包括指定客戶端到服務(wù)器端的上行流方向、指定服務(wù)器端到客戶端的下行流方向、指定上行和下行雙向流方向;pktdir屬性指定數(shù)據(jù)包在特定流方向上的包方向,包括指定數(shù)據(jù)包位于客戶端到服務(wù)器端的上行方向、指定數(shù)據(jù)包位于服務(wù)器端到客戶端的下行方向、指定數(shù)據(jù)包位于上行或下行方向;pktp0S屬性指定數(shù)據(jù)包在特定流方向上的包位置,包括指定不固定的位置編號(hào)、指定固定的位置編號(hào)。
5.根據(jù)權(quán)利要求1到4中所述的應(yīng)用協(xié)議命中動(dòng)作,其特征在于: 所述的應(yīng)用協(xié)議命中動(dòng)作包括延遲確認(rèn)動(dòng)作〈del ay Confirm〉、繼續(xù)掃描動(dòng)作〈scanRest〉和通道關(guān)聯(lián)動(dòng)作〈relateChannel〉,而一個(gè)或多個(gè)應(yīng)用協(xié)議命中動(dòng)作組成規(guī)則動(dòng)作〈act1n〉。其中,〈act1n〉描述了在流的應(yīng)用協(xié)議已識(shí)別后應(yīng)進(jìn)行的操作; 所述的延遲確認(rèn)動(dòng)作〈delayConfirm〉的內(nèi)容由延遲確認(rèn)包數(shù)〈delayPktNum〉組成,其描述了在流的應(yīng)用協(xié)議已識(shí)別之后應(yīng)延遲確認(rèn)該識(shí)別結(jié)果并應(yīng)繼續(xù)掃描流中的其他數(shù)據(jù)包。其中,所述的延遲確認(rèn)包數(shù)〈delayPktNum〉指定繼續(xù)掃描的數(shù)據(jù)包個(gè)數(shù); 所述的繼續(xù)掃描動(dòng)作〈scanRest〉指定在流的應(yīng)用協(xié)議已識(shí)別之后是否應(yīng)繼續(xù)掃描當(dāng)前數(shù)據(jù)包載荷的其余部分以識(shí)別承載的上層精確應(yīng)用協(xié)議,其內(nèi)容包括指定繼續(xù)掃描當(dāng)前數(shù)據(jù)包載荷的其余部分、指定無(wú)需繼續(xù)掃描當(dāng)前數(shù)據(jù)包載荷; 所述的通道關(guān)聯(lián)動(dòng)作〈relateChannel〉的內(nèi)容由一個(gè)或多個(gè)所述的關(guān)聯(lián)基本特征〈relate〉組成,其描述了在流的應(yīng)用協(xié)議已識(shí)別之后應(yīng)提取指定的通道關(guān)聯(lián)信息并添加到已識(shí)別流的半流關(guān)聯(lián)表中。
6.根據(jù)權(quán)利要求1到5所述的檢測(cè)識(shí)別模型,其特征在于: 所述的檢測(cè)識(shí)別模型由應(yīng)用協(xié)議識(shí)別規(guī)則進(jìn)行描述,包括強(qiáng)關(guān)聯(lián)識(shí)別模型〈appProtoRelateRule〉、單包識(shí)別模型〈appProtoSPktRule〉、多包識(shí)別模型〈appProtoMPktRule〉、算法解密識(shí)別模型〈appProtoAlgoDecryptRule〉和通道提取識(shí)別模型〈appProtoChannelExtractRule〉等。不同類型的檢測(cè)識(shí)別模型具有相同的結(jié)構(gòu),都由規(guī)則頭〈ruleHead 〉、規(guī)則體〈ruleBody〉和可選的規(guī)則動(dòng)作〈act1n〉三個(gè)部分組成,其中,<ruleHead>描述檢測(cè)識(shí)別模型的應(yīng)用協(xié)議信息,〈ruleBody〉描述檢測(cè)識(shí)別模型的基于應(yīng)用協(xié)議特征匹配的識(shí)別決策算法,而〈act1n〉則描述檢測(cè)識(shí)別模型已識(shí)別之后的動(dòng)作;所述的規(guī)則頭〈ruleHead〉的內(nèi)容由應(yīng)用協(xié)議標(biāo)識(shí)符〈appProtoId〉、承載層應(yīng)用協(xié)議標(biāo)識(shí)符〈bearerAppProtoId〉、傳輸層協(xié)議〈tpProto〉、IP層協(xié)議〈ipProto〉和優(yōu)先級(jí)〈pr1rity〉組成。其中,所述的〈appProtoId〉指定應(yīng)用協(xié)議識(shí)別規(guī)則描述的應(yīng)用協(xié)議編號(hào),所述的〈bearerAppProtoId〉指定當(dāng)應(yīng)用協(xié)議識(shí)別規(guī)則描述的應(yīng)用協(xié)議由另一種應(yīng)用協(xié)議進(jìn)行承載時(shí)承載層應(yīng)用協(xié)議的編號(hào),所述的〈tpProto〉指定包含應(yīng)用協(xié)議特征的數(shù)據(jù)包位于的傳輸層封裝協(xié)議的類型,所述的〈ipProto〉指定包含應(yīng)用協(xié)議特征的數(shù)據(jù)包位于的網(wǎng)絡(luò)層封裝協(xié)議的類型,所述的〈pr1rity〉指定應(yīng)用協(xié)議識(shí)別規(guī)則的優(yōu)先級(jí); 所述的強(qiáng)關(guān)聯(lián)識(shí)別模型〈appProtoRelateRule〉的內(nèi)容由所述的規(guī)則頭〈ruleHead〉和所述的規(guī)則體〈ruleBody〉組成?!碼ppProtoRelateRule〉描述了可通過(guò)已識(shí)別流的半流關(guān)聯(lián)表緩存應(yīng)用協(xié)議類型進(jìn)而后續(xù)直接關(guān)聯(lián)識(shí)別應(yīng)用協(xié)議類型的深度流檢測(cè)識(shí)別模型。其中,〈ruleBody〉由包含所述的關(guān)聯(lián)基本特征〈relate〉的所述的數(shù)據(jù)包特征〈packet〉組成,而且〈relate〉應(yīng)指定為強(qiáng)關(guān)聯(lián)類型; 所述的單包識(shí)別模型〈appProtoSPktRule〉的內(nèi)容由所述的規(guī)則頭〈ruleHead〉、所述的規(guī)則體〈ruleBody〉和所述的規(guī)則動(dòng)作〈act1n〉組成?!碼ppProtoSPktRule〉描述了可通過(guò)單個(gè)數(shù)據(jù)包特征確定應(yīng)用協(xié)議類型的深度包檢測(cè)識(shí)別模型。其中,〈ruleBody〉由單個(gè)所述的數(shù)據(jù)包特征〈packet〉組成,〈act1n〉可由所述的延遲確認(rèn)動(dòng)作〈delayConfirm〉、所述的繼續(xù)掃描動(dòng)作〈scanRest〉和所述的通道關(guān)聯(lián)動(dòng)作〈relateChannel〉中的一個(gè)或多個(gè)組成;所述的多包識(shí)別模型〈appProtoMPktRule〉的內(nèi)容由所述的規(guī)則頭〈ruleHead〉、所述的規(guī)則體〈ruleBody〉和所述的規(guī)則動(dòng)作〈act1n〉組成。〈appProtoMPktRule〉描述了可通過(guò)同一條數(shù)據(jù)流上的多個(gè)數(shù)據(jù)包特征確定應(yīng)用協(xié)議類型的深度流檢測(cè)識(shí)別模型。其中,〈ruleBody〉由預(yù)過(guò)濾數(shù)據(jù)包特征〈preFilter〉和多數(shù)據(jù)包特征〈mpacket〉組成。所述的預(yù)過(guò)濾數(shù)據(jù)包特征〈preFi Iter>的內(nèi)容由一個(gè)所述的數(shù)據(jù)包特征〈packet〉組成,其描述了數(shù)據(jù)流在滿足指定應(yīng)用協(xié)議的多數(shù)據(jù)包特征之前應(yīng)首先符合的預(yù)過(guò)濾條件。所述的多數(shù)據(jù)包特征〈mpacket〉的內(nèi)容由多個(gè)所述的數(shù)據(jù)包特征〈packet〉組成,并可通過(guò)設(shè)置seq、succ和method屬性指定多個(gè)數(shù)據(jù)包特征之間應(yīng)滿足的連續(xù)性、有序性和運(yùn)算關(guān)系。其中,seq屬性指定符合數(shù)據(jù)包特征的數(shù)據(jù)包到達(dá)的有序性,包括指定符合數(shù)據(jù)包特征的數(shù)據(jù)包有序到達(dá)、指定符合數(shù)據(jù)包特征的數(shù)據(jù)包不必有序到達(dá);succ屬性指定符合數(shù)據(jù)包特征的數(shù)據(jù)包到達(dá)的連續(xù)性,包括指定符合數(shù)據(jù)包特征的數(shù)據(jù)包連續(xù)到達(dá)、指定符合數(shù)據(jù)包特征的數(shù)據(jù)包不必連續(xù)到達(dá);method屬性指定多個(gè)數(shù)據(jù)包特征之間存在的運(yùn)算關(guān)系,包括指定多個(gè)數(shù)據(jù)包特征之間不存在運(yùn)算關(guān)系、指定多個(gè)數(shù)據(jù)包特征包含的單個(gè)基本特征之間存在等差運(yùn)算關(guān)系、指定多個(gè)數(shù)據(jù)包特征中每個(gè)數(shù)據(jù)包特征包含的兩個(gè)基本特征之差相等;所述的規(guī)則動(dòng)作〈act1n〉由所述的通道關(guān)聯(lián)動(dòng)作〈relateChannel〉組成; 所述的算法解密識(shí)別模型〈appProtoAlgoDecryptRule〉的內(nèi)容由所述的規(guī)則頭〈ruleHead〉、所述的規(guī)則體〈ruleBody〉和所述的規(guī)則動(dòng)作〈act1n〉組成?!碼ppProtoAlgoDecryptRule〉描述了可通過(guò)先解密數(shù)據(jù)包密文數(shù)據(jù)再驗(yàn)證協(xié)議特征從而確定數(shù)據(jù)流的應(yīng)用協(xié)議類型的深度包檢測(cè)識(shí)別模型。其中,〈ruleBody〉由預(yù)過(guò)濾數(shù)據(jù)包特征〈preFilter〉和算法解密特征〈algoDecrypt〉。所述的預(yù)過(guò)濾數(shù)據(jù)包特征〈preFilter〉的內(nèi)容由一個(gè)所述的數(shù)據(jù)包特征〈packet〉組成,其指定在進(jìn)行算法解密識(shí)別之前數(shù)據(jù)包應(yīng)先滿足的先決特征條件。所述的算法解密特征〈algoDecrypt〉的內(nèi)容由函數(shù)算法解密特征〈funcAlgoDecrypt〉或密碼算法解密特征〈cipherAlgoDecrypt〉組成,其描述了算法解密識(shí)別的方式和解密方法。所述的函數(shù)算法解密特征〈funcAlgoDecrypt〉的內(nèi)容由所述的算法插件基本特征〈sigAlgoPlugin〉組成,其描述了用于算法解密識(shí)別應(yīng)用協(xié)議類型的算法函數(shù)特征;其中,〈sigAlgoPlugin〉提供的所述的算法函數(shù)<func>具有統(tǒng)一的固定接口形式,其接受規(guī)則、數(shù)據(jù)包、流上下文等輸入并輸出協(xié)議識(shí)別結(jié)果。所述的密碼算法解密特征〈cipherAlgoDecrypt〉的內(nèi)容由包含支持解密的所述的關(guān)鍵字簽名基本特征〈sigKeyword〉的所述的數(shù)據(jù)包特征〈packet〉組成,其描述了通過(guò)密碼算法進(jìn)行解密識(shí)別時(shí)的數(shù)據(jù)包特征;其中,〈sigKeyword〉分別通過(guò)所述的動(dòng)態(tài)解密條件〈dynamicDecrypt〉和所述的靜態(tài)解密條件〈staticDecrypt〉支持動(dòng)態(tài)解密和靜態(tài)解密兩種解密方式。所述的規(guī)則動(dòng)作〈act1n〉由所述的通道關(guān)聯(lián)動(dòng)作〈relateChannel〉組成; 所述的通道提取識(shí)別模型〈appProtoChannelExtractRule〉的內(nèi)容由所述的規(guī)則頭〈ruleHead〉、所述的規(guī)則體〈ruleBody〉和所述的規(guī)則動(dòng)作〈act1n〉組成?!碼ppProtoChannelExtractRule〉描述了可通過(guò)解析已識(shí)別的控制通道并提取協(xié)商的關(guān)聯(lián)數(shù)據(jù)通道從而確定數(shù)據(jù)流的應(yīng)用協(xié)議類型的深度包檢測(cè)識(shí)別模型。其中,〈ruleBody〉由預(yù)識(shí)別應(yīng)用協(xié)議標(biāo)識(shí)符〈preldentAppProtoId〉、預(yù)過(guò)濾數(shù)據(jù)包特征〈preFilter〉和通道提取器〈extractor〉組成。〈preldentAppProtoId〉指定在進(jìn)行通道提取之前數(shù)據(jù)流應(yīng)預(yù)先被識(shí)別為的應(yīng)用協(xié)議類型;〈preFilter>的內(nèi)容由一個(gè)所述的數(shù)據(jù)包特征〈packet〉組成,其指定在進(jìn)行通道提取之前數(shù)據(jù)流應(yīng)首先滿足的數(shù)據(jù)包特征^extractor〉的內(nèi)容由正則通道提取器〈pcreExtractor〉或函數(shù)通道提取器〈funcExtractor〉組成,其指定解析和提取關(guān)聯(lián)數(shù)據(jù)通道的IP地址和端口的方式和方法。所述的正則通道提取器〈pcreExtractor〉的內(nèi)容由解碼器〈decoder〉、IP提取器〈ipExtractor〉和端口提取器〈portExtractor〉組成,并可設(shè)置loop屬性,其描述了按照正則表達(dá)式設(shè)定的IP和端口格式解析文本格式協(xié)議和提取關(guān)聯(lián)通道。其中,loop屬性指定是否需要多次連續(xù)解析和提取關(guān)聯(lián)通道;所述的解碼器〈decoder〉的內(nèi)容由解碼格式〈dectype〉、解碼頭部特征〈decHead〉和解碼尾部特征〈decTail〉組成,其描述了需要進(jìn)行解碼的關(guān)聯(lián)通道提取區(qū)的解碼格式和特征,其中,〈dectype〉指定關(guān)聯(lián)通道提取區(qū)的解碼格式;〈decHead〉和〈decTail〉的內(nèi)容都由所述的關(guān)鍵字簽名基本特征〈sigKeyword〉組成,其分別描述了需要進(jìn)行解碼的關(guān)聯(lián)通道提取區(qū)開(kāi)始位置和結(jié)束位置的特征;所述的IP提取器〈ipExtractor〉和所述的端口提取器〈portExtractor〉的內(nèi)容都由包含所述的正則表達(dá)式簽名基本特征〈sigPcre〉的所述的數(shù)據(jù)包特征〈packet〉組成,并可設(shè)置cgroup、ver、encoding、fmt和del屬性,其分別描述了待提取IP地址字符串和端口字符串的格式特征;其中,〈sigPcre〉指定捕獲IP地址分組或端口分組的PCRE正則表達(dá)式,cgroup屬性指定正則表達(dá)式捕獲IP地址分組或端口分組的編號(hào),ver屬性指定IP地址的協(xié)議版本,encoding屬性指定IP地址字符串或端口字符串的編碼格式,fmt屬性指定IP地址字符串或端口字符串為多域或單值格式,del屬性指定多域格式IP地址字符串或端口字符串的域分隔符。所述的函數(shù)通道提取器〈funcExtractor〉的內(nèi)容由所述的算法插件基本特征〈sigAlgoPlugin〉組成,其描述了用以解析和提取關(guān)聯(lián)通道的算法函數(shù)特征。其中,〈sigAlgoPlugin〉提供的所述的算法函數(shù)〈func〉具有統(tǒng)一的固定接口形式,其接受規(guī)則、數(shù)據(jù)包、流上下文等輸入并提供關(guān)聯(lián)通道(IP、端口和傳輸協(xié)議)、關(guān)聯(lián)通道個(gè)數(shù)等輸出。所述的規(guī)則動(dòng)作〈act1n〉由所述的通道關(guān)聯(lián)動(dòng)作〈relateChannel〉組成,并且〈relateChannel〉由強(qiáng)關(guān)聯(lián)類型的所述的關(guān)聯(lián)基本特征〈relate〉組成。
7.根據(jù)權(quán)利要求1 到6所述的應(yīng)用協(xié)議特征匹配單元,其特征在于: 所述的應(yīng)用協(xié)議特征匹配單元包括分流匹配單元、關(guān)聯(lián)表匹配單元、深度包檢測(cè)單元和基本特征匹配單元; 所述的分流匹配單元首先利用IP協(xié)議號(hào)將流量分割為TCP流量和UDP流量,并進(jìn)一步利用Web分流狀態(tài)機(jī)將TCP流量分割為Web流量和非Web流量。其中,所述的Web分流狀態(tài)機(jī)為由Web流量的多個(gè)協(xié)議特征生成的確定型有限狀態(tài)自動(dòng)機(jī); 所述的關(guān)聯(lián)表匹配單元利用已識(shí)別的流的半流關(guān)聯(lián)表執(zhí)行關(guān)聯(lián)查表匹配。其中,半流關(guān)聯(lián)表包括強(qiáng)關(guān)聯(lián)表和弱關(guān)聯(lián)表。所述的強(qiáng)關(guān)聯(lián)表是由已識(shí)別并指定要執(zhí)行強(qiáng)關(guān)聯(lián)類型的通道關(guān)聯(lián)動(dòng)作的流的源(或目的)IP、源(或目的)端口和傳輸層協(xié)議的三元組生成的哈希表,并且在哈希節(jié)點(diǎn)中保存有應(yīng)用協(xié)議類型信息;在強(qiáng)關(guān)聯(lián)匹配時(shí),所述的關(guān)聯(lián)表匹配單元對(duì)輸入數(shù)據(jù)包的源(或目的)IP、源(或目的)端口和傳輸層協(xié)議的三元組進(jìn)行哈希運(yùn)算后查找強(qiáng)關(guān)聯(lián)表并根據(jù)查找結(jié)果確定流的應(yīng)用協(xié)議類型。所述的弱關(guān)聯(lián)表是由已識(shí)別并指定要執(zhí)行弱關(guān)聯(lián)類型的通道關(guān)聯(lián)動(dòng)作的流的源(或目的)IP與傳輸層協(xié)議的二元組生成的哈希表;在弱關(guān)聯(lián)匹配時(shí),所述的關(guān)聯(lián)表匹配單元對(duì)輸入數(shù)據(jù)包的源(或目的)IP和傳輸層協(xié)議的二元組進(jìn)行哈希運(yùn)算后查找弱關(guān)聯(lián)表并根據(jù)查找結(jié)果判定是否命中所述的預(yù)過(guò)濾數(shù)據(jù)包特征的弱關(guān)聯(lián)類型的所述的關(guān)聯(lián)基本特征; 所述的深度包檢測(cè)單元對(duì)應(yīng)用協(xié)議識(shí)別規(guī)則的所述的數(shù)據(jù)包特征進(jìn)行匹配并輸出命中了所述的數(shù)據(jù)包特征的應(yīng)用協(xié)議識(shí)別規(guī)則子集,其核心包括多模式串匹配單元、混合匹配單元和匹配結(jié)果判別單元。其中,所述的多模式串匹配單元利用確定型多模匹配狀態(tài)機(jī)執(zhí)行匹配并驗(yàn)證命中關(guān)鍵字的偏移位置約束,輸出初步命中的應(yīng)用協(xié)議識(shí)別規(guī)則子集,并進(jìn)而利用所述的基本特征匹配單元和所述的關(guān)聯(lián)表匹配單元對(duì)命中規(guī)則的所述的數(shù)據(jù)包特征的其余應(yīng)用協(xié)議基本特征執(zhí)行匹配;其中,所述的多模匹配狀態(tài)機(jī)由規(guī)則庫(kù)中應(yīng)用協(xié)議識(shí)別規(guī)則的所述的數(shù)據(jù)包特征或所述的預(yù)過(guò)濾數(shù)據(jù)包特征的主要的所述的關(guān)鍵字簽名基本特征或所述的正則表達(dá)式簽名基本特征經(jīng)過(guò)預(yù)處理生成。所述的混合匹配單元利用所述的基本特征匹配單元和所述的關(guān)聯(lián)表匹配單元對(duì)規(guī)則庫(kù)中未加入所述的多模式串匹配單元的應(yīng)用協(xié)議識(shí)別規(guī)則的所述的數(shù)據(jù)包特征或所述的預(yù)過(guò)濾數(shù)據(jù)包特征的所述的應(yīng)用協(xié)議基本特征執(zhí)行匹配,并輸出初步命中的應(yīng)用協(xié)議識(shí)別規(guī)則子集。所述的匹配結(jié)果判別單元根據(jù)所述的多模式串匹配單元和所述的混合匹配單元輸出的應(yīng)用協(xié)議識(shí)別規(guī)則的所述的數(shù)據(jù)包特征或所述的預(yù)過(guò)濾數(shù)據(jù)包特征的所述的應(yīng)用協(xié)議基本特征的命中狀態(tài)和所述的應(yīng)用協(xié)議基本特征之間應(yīng)滿足的邏輯關(guān)系判定并輸出最終命中了所述的數(shù)據(jù)包特征的應(yīng)用協(xié)議識(shí)別規(guī)則子集; 所述的基本特征匹配單元包括包位置方向匹配單元、包長(zhǎng)匹配單元、正則表達(dá)式匹配單元、單模式串匹配單元、算法插件匹配單元、動(dòng)態(tài)解密匹配單元、靜態(tài)解密匹配單元、IP地址匹配單元和端口匹配單元等。其中,所述的包位置方向匹配單元執(zhí)行所述的數(shù)據(jù)包特征指定的流方向、包位置和包方向的驗(yàn)證;所述的包長(zhǎng)匹配單元執(zhí)行所述的數(shù)據(jù)包特征指定的所述的包長(zhǎng)簽名基本特征的驗(yàn)證;所述的正則表達(dá)式匹配單元執(zhí)行所述的數(shù)據(jù)包特征指定的所述的正則表達(dá)式簽名基本特征的驗(yàn)證;所述的單模式串匹配單元執(zhí)行所述的數(shù)據(jù)包特征指定的無(wú)需解密的所述的關(guān)鍵字簽名基本特征的驗(yàn)證;所述的算法插件匹配單元執(zhí)行所述的數(shù)據(jù)包特征指定 的所述的算法插件基本特征的算法函數(shù)驗(yàn)證;所述的動(dòng)態(tài)解密匹配單元執(zhí)行所述的數(shù)據(jù)包特征指定的帶動(dòng)態(tài)解密條件的所述的關(guān)鍵字簽名基本特征的驗(yàn)證;所述的靜態(tài)解密匹配單元執(zhí)行所述的數(shù)據(jù)包特征指定的帶靜態(tài)解密條件的所述的關(guān)鍵字簽名基本特征的驗(yàn)證;所述的IP地址匹配單元執(zhí)行所述的數(shù)據(jù)包特征指定的所述的IP簽名基本特征的驗(yàn)證;所述的端口匹配單元執(zhí)行所述的數(shù)據(jù)包特征指定的所述的端口簽名基本特征的驗(yàn)證。
8.根據(jù)權(quán)利要求1到7所述的全流表存儲(chǔ)單元,其特征在于: 所述的全流表存儲(chǔ)單元保存會(huì)話流表、流節(jié)點(diǎn)、流子節(jié)點(diǎn)以及相應(yīng)的節(jié)點(diǎn)池; 所述的會(huì)話流表為由標(biāo)識(shí)流的源目IP、源目端口和傳輸層協(xié)議的五元組生成的哈希表,所述的流節(jié)點(diǎn)為哈希表中與流對(duì)應(yīng)的節(jié)點(diǎn),節(jié)點(diǎn)中保存流的應(yīng)用協(xié)議識(shí)別狀態(tài); 所述的流子節(jié)點(diǎn)與所述的深度包檢測(cè)單元輸出的應(yīng)用協(xié)議識(shí)別規(guī)則相對(duì)應(yīng),并保存在當(dāng)前流的所述的流節(jié)點(diǎn)中,多個(gè)所述的流子節(jié)點(diǎn)串接成單向鏈表,其中,所述的流子節(jié)點(diǎn)保存對(duì)應(yīng)的應(yīng)用協(xié)議識(shí)別規(guī)則的中間匹配狀態(tài); 所述的流節(jié)點(diǎn)池與所述的流子節(jié)點(diǎn)池為預(yù)分配的節(jié)點(diǎn)內(nèi)存池; 所述的會(huì)話流表根據(jù)數(shù)據(jù)包到達(dá)時(shí)間刷新時(shí)間戳,并定時(shí)按照設(shè)定的超時(shí)間隔或狀態(tài)轉(zhuǎn)換進(jìn)行所述的流節(jié)點(diǎn)的老化,而所述的流子節(jié)點(diǎn)在當(dāng)前流識(shí)別結(jié)束之后或者對(duì)應(yīng)的所述的流節(jié)點(diǎn)老化之時(shí)將被老化;老化的所述的流節(jié)點(diǎn)和所述的流子節(jié)點(diǎn)被回收到對(duì)應(yīng)的節(jié)點(diǎn)內(nèi)存池。
9.根據(jù)權(quán)利要求1到8所述的半流關(guān)聯(lián)表存儲(chǔ)單元,其特征在于: 所述的半流關(guān)聯(lián)表存儲(chǔ)單元保存所述的強(qiáng)關(guān)聯(lián)表、所述的弱關(guān)聯(lián)表、強(qiáng)關(guān)聯(lián)表節(jié)點(diǎn)、弱關(guān)聯(lián)表節(jié)點(diǎn)以及相應(yīng)的節(jié)點(diǎn)池; 所述的強(qiáng)關(guān)聯(lián)表節(jié)點(diǎn)和所述的弱關(guān)聯(lián)表節(jié)點(diǎn)保存應(yīng)用協(xié)議識(shí)別規(guī)則指定并且從已識(shí)別流中提取的所述的關(guān)聯(lián)基本特征,關(guān)聯(lián)表節(jié)點(diǎn)的應(yīng)用協(xié)議類型根據(jù)應(yīng)用協(xié)議識(shí)別結(jié)果進(jìn)行更新; 所述的強(qiáng)關(guān)聯(lián)表節(jié)點(diǎn)池與所述的弱關(guān)聯(lián)表節(jié)點(diǎn)池為預(yù)分配的節(jié)點(diǎn)內(nèi)存池; 所述的關(guān)聯(lián)表節(jié)點(diǎn)在進(jìn)行關(guān)聯(lián)匹配查詢時(shí)刷新時(shí)間戳,并定時(shí)按照設(shè)定的超時(shí)間隔或特定的應(yīng)用協(xié)議超時(shí)間隔進(jìn)行老化;老化的所述的關(guān)聯(lián)表節(jié)點(diǎn)被回收到對(duì)應(yīng)的節(jié)點(diǎn)內(nèi)存池。
10.根據(jù)權(quán)利要求1到9所述的規(guī)則庫(kù)存儲(chǔ)單元,其特征在于: 所述的規(guī)則庫(kù)存儲(chǔ)單元保存主規(guī)則庫(kù)和影子規(guī)則庫(kù); 所述的主規(guī)則庫(kù)為當(dāng)前處于活動(dòng)狀態(tài)的規(guī)則庫(kù),而所述的影子規(guī)則庫(kù)為處于待命狀態(tài)的規(guī)則庫(kù); 當(dāng)進(jìn)行規(guī)則庫(kù)升級(jí)時(shí),將首先更新所述的影子規(guī)則庫(kù),并對(duì)其進(jìn)行預(yù)處理生成新的所述的深度包檢測(cè)單元核心,然后進(jìn)行熱切換使新生成的所述的深度包檢測(cè)單元核心生效并使所述的原影子規(guī)則庫(kù)成為處于活動(dòng)狀態(tài)的所述的主規(guī)則庫(kù),而所述的原主規(guī)則庫(kù)則成為所述的影子規(guī)則庫(kù),所述的原深度包檢測(cè)單元核心將被銷毀。
11.根據(jù)權(quán)利要求1到10所述的識(shí)別模塊,其特征在于: 所述的識(shí)別模塊包括強(qiáng)關(guān)聯(lián)識(shí)別模塊、單包識(shí)別模塊、多包識(shí)別模塊、算法解密識(shí)別模塊和通道提取識(shí)別模塊; 所述的強(qiáng)關(guān)聯(lián)識(shí)別模炔基于所述的強(qiáng)關(guān)聯(lián)識(shí)別模型構(gòu)建,其通過(guò)所述的關(guān)聯(lián)表匹配單元查找所述的半流關(guān)聯(lián)表存儲(chǔ)單元中的所述的強(qiáng)關(guān)聯(lián)表進(jìn)行強(qiáng)關(guān)聯(lián)匹配和應(yīng)用協(xié)議識(shí)別。若查找成功,則根據(jù)命中的關(guān)聯(lián)表節(jié)點(diǎn)確定待識(shí)別流的應(yīng)用協(xié)議類型:若命中的關(guān)聯(lián)表節(jié)點(diǎn)指定了所述的延遲確認(rèn)包數(shù),則延遲確認(rèn)該識(shí)別結(jié)果以允許所述的應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)掃描當(dāng)前及后續(xù)數(shù)據(jù)包,否則直接在相應(yīng)的流節(jié)點(diǎn)中標(biāo)記當(dāng)前流已識(shí)別為關(guān)聯(lián)表節(jié)點(diǎn)中指定的應(yīng)用協(xié)議類型;若查找失敗,則交由所述的應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)識(shí)別; 所述的單包識(shí)別模炔基于所述的單包識(shí)別模型并聯(lián)合所述的多包、算法解密和通道提取識(shí)別模型構(gòu)建,其通過(guò)所述的分流匹配單元和所述的深度包檢測(cè)單元進(jìn)行匹配和應(yīng)用協(xié)議識(shí)別。其中,所述的深度包檢測(cè)單元分為Web應(yīng)用深度包檢測(cè)單元、TCP深度包檢測(cè)單元和UDP深度包檢測(cè)單元,所述的Web應(yīng)用深度包檢測(cè)單元由規(guī)則庫(kù)中Web類應(yīng)用相應(yīng)的單包識(shí)別規(guī)則的所述的數(shù)據(jù)包特征生成,所述的TCP深度包檢測(cè)單元由規(guī)則庫(kù)中通過(guò)TCP協(xié)議傳輸?shù)姆荳eb類應(yīng)用相應(yīng)的單包、多包、算法解密和通道提取識(shí)別規(guī)則的所述的數(shù)據(jù)包特征或所述的預(yù)過(guò)濾數(shù)據(jù)包特征生成,而所述的UDP深度包檢測(cè)單元由規(guī)則庫(kù)中通過(guò)UDP協(xié)議傳輸?shù)膽?yīng)用相應(yīng)的單包、多包、算法解密和通道提取識(shí)別規(guī)則的所述的數(shù)據(jù)包特征或所述的預(yù)過(guò)濾數(shù)據(jù)包特征生成。所述的單包識(shí)別模塊首先通過(guò)所述的分流匹配單元將待識(shí)別流粗分為Web流量、TCP非Web流量或UDP流量,若為Web流量則通過(guò)對(duì)應(yīng)的所述的Web應(yīng)用深度包檢測(cè)單元掃描整個(gè)HTTP報(bào)文頭和若干字節(jié)數(shù)據(jù),否則通過(guò)對(duì)應(yīng)的所述的TCP深度包檢測(cè)單元或所述的UDP深度包檢測(cè)單元掃描數(shù)據(jù)包載荷的全包或頭尾部若干字節(jié),最后輸出命中了所述的數(shù)據(jù)包特征的單包識(shí)別規(guī)則、命中了所述的數(shù)據(jù)包特征或所述的預(yù)過(guò)濾數(shù)據(jù)包特征的多包識(shí)別規(guī)則以及命中了所述的預(yù)過(guò)濾數(shù)據(jù)包特征的算法解密識(shí)別規(guī)則和通道提取識(shí)別規(guī)則。若同時(shí)命中了多條單包識(shí)別規(guī)則,則選擇其中優(yōu)先級(jí)最高的規(guī)則;若命中的單包識(shí)別規(guī)則指定了規(guī)則動(dòng)作,則執(zhí)行相應(yīng)的延遲確認(rèn)、繼續(xù)掃描數(shù)據(jù)包載荷其余部分或強(qiáng)關(guān)聯(lián)、弱關(guān)聯(lián)、提取關(guān)聯(lián)等通道關(guān)聯(lián)操作。若最終成功命中,則將當(dāng)前流標(biāo)記為命中的單包識(shí)別規(guī)則指定的應(yīng)用協(xié)議類型,否則交由所述的應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)識(shí)別; 所述的多包識(shí)別模炔基于所述的多包識(shí)別模型構(gòu)建,其通過(guò)所述的單包識(shí)別模塊的所述的深度包檢測(cè)單元進(jìn)行匹配和應(yīng)用協(xié)議識(shí)別。所述的多包識(shí)別模塊通過(guò)所述的單包識(shí)別模塊過(guò)濾出初步命中的多包識(shí)別規(guī)則子集,對(duì)命中的規(guī)則生成相應(yīng)的流多包子節(jié)點(diǎn)并將其保存在當(dāng)前待識(shí)別流所對(duì)應(yīng)的流節(jié)點(diǎn)中,對(duì)后續(xù)到達(dá)的數(shù)據(jù)包,由所述的單包識(shí)別模塊的所述的深度包檢測(cè)單元繼續(xù)匹配,所述的多包識(shí)別模塊根據(jù)匹配結(jié)果和保存的匹配狀態(tài)驗(yàn)證流多包子節(jié)點(diǎn)對(duì)應(yīng)的規(guī)則指定的所述的多數(shù)據(jù)包特征及其連續(xù)性、有序性和運(yùn)算關(guān)系等約束條件并判定命中狀態(tài),同時(shí)更新匹配狀態(tài)并將其保存在流多包子節(jié)點(diǎn)中。若最終成功命中,則將當(dāng)前流標(biāo)記為命中的多包識(shí)別規(guī)則指定的應(yīng)用協(xié)議類型,否則交由所述的應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)識(shí)別; 所述的算法解密識(shí)別模炔基于所述的算法解密識(shí)別模型構(gòu)建,其通過(guò)所述的算法插件匹配單元、所述的動(dòng)態(tài)解密匹配單元和所述的靜態(tài)解密匹配單元進(jìn)行匹配和應(yīng)用協(xié)議識(shí)另IJ。所述的算法 解密識(shí)別模塊首先通過(guò)所述的單包識(shí)別模塊過(guò)濾出初步命中的算法解密識(shí)別規(guī)則子集,然后對(duì)命中規(guī)則的函數(shù)算法解密特征或密碼算法解密特征分別由所述的算法插件匹配單元、所述的動(dòng)態(tài)解密匹配單元或所述的靜態(tài)解密匹配單元繼續(xù)匹配,最后根據(jù)匹配結(jié)果判定最終命中狀態(tài)。若最終成功命中,則將當(dāng)前流標(biāo)記為命中的算法解密識(shí)別規(guī)則指定的應(yīng)用協(xié)議類型,否則交由所述的應(yīng)用協(xié)議識(shí)別引擎的其他識(shí)別模塊繼續(xù)識(shí)別; 所述的通道提取識(shí)別模炔基于所述的通道提取識(shí)別模型構(gòu)建,其通過(guò)所述的正則表達(dá)式匹配單元和所述的算法插件匹配單元進(jìn)行關(guān)聯(lián)通道提取并進(jìn)而通過(guò)所述的強(qiáng)關(guān)聯(lián)識(shí)別模塊進(jìn)行應(yīng)用協(xié)議識(shí)別。所述的通道提取識(shí)別模塊通過(guò)已經(jīng)成功識(shí)別并且指定了提取關(guān)聯(lián)類型的所述的通道關(guān)聯(lián)動(dòng)作的其他識(shí)別模塊獲取候選的通道提取識(shí)別規(guī)則子集,并根據(jù)所述的單包識(shí)別模塊輸出的通道提取識(shí)別規(guī)則所述的預(yù)過(guò)濾數(shù)據(jù)包特征的命中狀態(tài)最終確定用以進(jìn)行通道提取的規(guī)則;所述的通道提取識(shí)別模塊根據(jù)規(guī)則指定的所述的正則通道提取器或所述的函數(shù)通道提取器分別由所述的正則表達(dá)式匹配單元或所述的算法插件匹配單元提取關(guān)聯(lián)通道的IP地址、端口和傳輸層協(xié)議,并根據(jù)規(guī)則指定的強(qiáng)關(guān)聯(lián)類型的所述的通道關(guān)聯(lián)動(dòng)作將所述的關(guān)聯(lián)基本特征添加到所述的強(qiáng)關(guān)聯(lián)表中;若待提取的關(guān)聯(lián)通道數(shù)據(jù)分布在多個(gè)數(shù)據(jù)包之中,則為命中的規(guī)則生成相應(yīng)的流通道提取子節(jié)點(diǎn)并將其保存在當(dāng)前流所對(duì)應(yīng)的流節(jié)點(diǎn)中,對(duì)當(dāng)前及后續(xù)到達(dá)的數(shù)據(jù)包,緩存相應(yīng)的關(guān)聯(lián)通道數(shù)據(jù),然后再進(jìn)行關(guān)聯(lián)通道的提取。
12.根據(jù)權(quán)利要求1到11所述的配置模塊,其特征在于:所述的配置模塊進(jìn)行應(yīng)用協(xié)議識(shí)別引擎的識(shí)別參數(shù)及規(guī)則庫(kù)的配置; 所述的應(yīng)用協(xié)議識(shí)別引擎的識(shí)別參數(shù)包括所述的識(shí)別模塊(所述的強(qiáng)關(guān)聯(lián)識(shí)別模塊、所述的多包識(shí)別模塊、所述的算法解密識(shí)別模塊和所述的通道提取識(shí)別模塊)的啟用/禁用開(kāi)關(guān)、延遲確認(rèn)動(dòng)作開(kāi)關(guān)、數(shù)據(jù)包載荷全包掃描開(kāi)關(guān)、數(shù)據(jù)包載荷頭尾部掃描字節(jié)數(shù)、HTTP報(bào)文數(shù)據(jù)掃描字節(jié)數(shù)、流掃描數(shù)據(jù)包個(gè)數(shù)、關(guān)聯(lián)表老化超時(shí)間隔、特定應(yīng)用協(xié)議的關(guān)聯(lián)表老化超時(shí)間隔等; 所述的規(guī)則庫(kù)的配置包括規(guī)則庫(kù)的加載與解析、規(guī)則庫(kù)的預(yù)處理、規(guī)則庫(kù)的在線升級(jí)及熱切換、規(guī)則庫(kù)的持久化存儲(chǔ)和規(guī)則庫(kù)的查詢等。
【文檔編號(hào)】H04L12/24GK104038389SQ201410286352
【公開(kāi)日】2014年9月10日 申請(qǐng)日期:2014年6月19日 優(yōu)先權(quán)日:2014年6月19日
【發(fā)明者】高長(zhǎng)喜 申請(qǐng)人:高長(zhǎng)喜