專利名稱:用可重新配置硬件進(jìn)行內(nèi)容檢測(cè)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及網(wǎng)絡(luò)通信領(lǐng)域,并且尤其涉及用于檢測(cè)在經(jīng)由網(wǎng)絡(luò)所轉(zhuǎn)送的數(shù)據(jù)中內(nèi)容的方法和系統(tǒng)。
背景技術(shù):
因特網(wǎng)蠕蟲(worm)通過(guò)利用在操作系統(tǒng)以及在系統(tǒng)上所運(yùn)行的其它軟件中的漏洞來(lái)工作。攻擊會(huì)損害安全性并使網(wǎng)絡(luò)性能降級(jí)。它們的影響包括由于系統(tǒng)停機(jī)時(shí)間和工人無(wú)法工作所導(dǎo)致的商業(yè)上的巨大經(jīng)濟(jì)損失。預(yù)計(jì)在未來(lái)用于使網(wǎng)絡(luò)免受惡意代碼危害的系統(tǒng)會(huì)成為關(guān)鍵因特網(wǎng)基礎(chǔ)設(shè)施的一部分。當(dāng)前,被稱作入侵檢測(cè)和阻止系統(tǒng)(Intrusion Detection and Prevention Systems IDPS)的這些系統(tǒng)通常只過(guò)濾先前標(biāo)識(shí)的蠕蟲,所以這些系統(tǒng)的作用很有限。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的方法和系統(tǒng)檢測(cè)網(wǎng)絡(luò)通信業(yè)務(wù)流量中頻繁出現(xiàn)的內(nèi)容,諸如蠕蟲特征碼(worm signature)。用硬件來(lái)實(shí)現(xiàn)內(nèi)容檢測(cè),這與常規(guī)的基于軟件的方法相比較提供了更高的吞吐量。掃描在網(wǎng)絡(luò)中經(jīng)由數(shù)據(jù)流所發(fā)送的數(shù)據(jù)來(lái)標(biāo)識(shí)類似內(nèi)容的模式(pattern)。頻繁出現(xiàn)的數(shù)據(jù)模式被標(biāo)識(shí)并報(bào)告為可能是蠕蟲特征碼或其它類型的特征碼??梢圆⑿袙呙钄?shù)據(jù)以提供高吞吐量。通過(guò)把幾個(gè)數(shù)據(jù)字節(jié)窗(window ofbytes)并行散列到芯片內(nèi)(on-chip)塊存儲(chǔ)器來(lái)維持吞吐量,其中可以并行更新每個(gè)芯片內(nèi)塊存儲(chǔ)器??梢园阉鶚?biāo)識(shí)的內(nèi)容與在芯片外(off-chip)存儲(chǔ)器中所存儲(chǔ)的已知特征碼相比較來(lái)確定是否存在假肯定(false positive)。由于按照本發(fā)明的方法和系統(tǒng)可標(biāo)識(shí)頻繁出現(xiàn)的模式,所以它們不局限于標(biāo)識(shí)已知的特征碼。
依照根據(jù)本發(fā)明的方法,提供了一種在數(shù)據(jù)處理系統(tǒng)中用于標(biāo)識(shí)數(shù)據(jù)流中的重復(fù)內(nèi)容的方法。所述方法包括步驟為所述數(shù)據(jù)流的多個(gè)部分中的至少一個(gè)部分計(jì)算散列函數(shù);響應(yīng)于所計(jì)算的散列函數(shù)結(jié)果來(lái)使多個(gè)計(jì)數(shù)器中的至少一個(gè)計(jì)數(shù)器增加,每個(gè)計(jì)數(shù)器對(duì)應(yīng)于相應(yīng)計(jì)算的散列函數(shù)結(jié)果;當(dāng)所述多個(gè)計(jì)數(shù)器中的至少一個(gè)超過(guò)閾值時(shí)標(biāo)識(shí)所述重復(fù)內(nèi)容;并且驗(yàn)證所標(biāo)識(shí)的重復(fù)內(nèi)容并非是良性串(benignstring)。
依照根據(jù)本發(fā)明的系統(tǒng),提供了一種用于標(biāo)識(shí)數(shù)據(jù)流中的重復(fù)內(nèi)容的系統(tǒng)。所述系統(tǒng)包括散列函數(shù)計(jì)算電路,用于為所述數(shù)據(jù)流的多個(gè)部分中的至少一個(gè)部分計(jì)算散列函數(shù);多個(gè)計(jì)數(shù)器,響應(yīng)于所計(jì)算的散列函數(shù)結(jié)果來(lái)使多個(gè)計(jì)數(shù)器中的至少一個(gè)計(jì)數(shù)器增加,每個(gè)計(jì)數(shù)器對(duì)應(yīng)于相應(yīng)計(jì)算的散列函數(shù)結(jié)果;重復(fù)內(nèi)容標(biāo)識(shí)器,用于當(dāng)所述多個(gè)計(jì)數(shù)器中的至少一個(gè)超過(guò)計(jì)數(shù)值時(shí)標(biāo)識(shí)所述重復(fù)內(nèi)容;和驗(yàn)證器,用于驗(yàn)證所標(biāo)識(shí)的重復(fù)內(nèi)容并非是良性串。
依照根據(jù)本發(fā)明的系統(tǒng),提供了一種用于標(biāo)識(shí)數(shù)據(jù)流中的重復(fù)內(nèi)容的系統(tǒng)。所述系統(tǒng)包括用于為所述數(shù)據(jù)流的多個(gè)部分中的至少一個(gè)部分計(jì)算散列函數(shù)的裝置;用于響應(yīng)于所計(jì)算的散列函數(shù)結(jié)果來(lái)使多個(gè)計(jì)數(shù)器中的至少一個(gè)計(jì)數(shù)器增加的裝置,每個(gè)計(jì)數(shù)器對(duì)應(yīng)于相應(yīng)計(jì)算的散列函數(shù)結(jié)果;用于當(dāng)所述多個(gè)計(jì)數(shù)器中的至少一個(gè)超過(guò)計(jì)數(shù)值時(shí)標(biāo)識(shí)所述重復(fù)內(nèi)容的裝置;和用于驗(yàn)證所標(biāo)識(shí)的重復(fù)內(nèi)容并非是良性串的裝置。
本領(lǐng)域技術(shù)人員當(dāng)考察以下附圖和具體實(shí)施方式
時(shí),本發(fā)明的其它特征變得更加清楚。意在把所有這種附加系統(tǒng)、方法、特征和優(yōu)點(diǎn)包括在本說(shuō)明書中、本發(fā)明的范圍內(nèi),并且通過(guò)權(quán)利要求書來(lái)保護(hù)。
并入并構(gòu)成此說(shuō)明書一部分的附示了本發(fā)明的實(shí)現(xiàn)方式,并且連同說(shuō)明書一起用來(lái)解釋本發(fā)明的優(yōu)點(diǎn)和原理在附圖中,圖1A是按照本發(fā)明用于執(zhí)行內(nèi)容檢測(cè)的系統(tǒng)的框圖;圖1B是按照本發(fā)明示出特征碼檢測(cè)設(shè)備怎樣處理數(shù)據(jù)流的功能框圖;圖2是按照本發(fā)明的特征碼檢測(cè)設(shè)備的框圖;圖3是按照本發(fā)明的計(jì)數(shù)處理器的框圖;圖4是按照本發(fā)明的字符過(guò)濾器的框圖;圖5是按照本發(fā)明的字節(jié)移位器的框圖;圖6是按照本發(fā)明包含良性字符串的控制分組的框圖;圖7是按照本發(fā)明的大計(jì)數(shù)向量的框圖;圖8是更詳細(xì)的圖7的大計(jì)數(shù)向量的框圖;圖9是按照本發(fā)明的流水線的框圖;圖10是用于描繪并行處理數(shù)據(jù)流的字節(jié)的功能框圖;圖11示出了優(yōu)先級(jí)編碼器怎樣在沒(méi)有沖突的情況下處理數(shù)據(jù)的例子;圖12示出了優(yōu)先級(jí)編碼器怎樣在具有沖突的情況下處理數(shù)據(jù)的例子;圖13是按照本發(fā)明的分析器的框圖;圖14是按照本發(fā)明的分析器狀態(tài)的狀態(tài)圖;和圖15是從按照本發(fā)明的報(bào)警產(chǎn)生器所發(fā)出的控制分組的框圖。
遍及幾個(gè)附圖,相應(yīng)的附圖特征碼指代相應(yīng)的部分。
具體實(shí)施例方式
現(xiàn)在按照如附圖中所圖示的本發(fā)明來(lái)詳細(xì)地參考依照方法、系統(tǒng)和制造產(chǎn)品的實(shí)現(xiàn)方式。
按照本發(fā)明的方法和系統(tǒng)檢測(cè)數(shù)據(jù)流中頻繁出現(xiàn)的內(nèi)容,諸如蠕蟲特征碼,同時(shí)抵抗多態(tài)技術(shù),諸如由蠕蟲作者所使用的那些技術(shù)。為了以高速實(shí)現(xiàn)內(nèi)容檢測(cè),用硬件來(lái)實(shí)現(xiàn)系統(tǒng)。
圖1A是適于與按照本發(fā)明的方法和系統(tǒng)一起使用的說(shuō)明性數(shù)據(jù)處理系統(tǒng)100的框圖。如同所示,多個(gè)主機(jī)被連接到多個(gè)子網(wǎng)絡(luò)。即,主機(jī)102、104和106被連接到子網(wǎng)絡(luò)108;主機(jī)110和112被連接到子網(wǎng)絡(luò)114;并且主機(jī)116和118被連接到子網(wǎng)絡(luò)120。在各自的子網(wǎng)絡(luò)之間以及在所述子網(wǎng)絡(luò)和更大網(wǎng)絡(luò)128(諸如因特網(wǎng))之間的通信業(yè)務(wù)流量經(jīng)過(guò)路由器126。虛擬局域網(wǎng)(VLAN)集中器122集中進(jìn)入路由器126的網(wǎng)絡(luò)通信業(yè)務(wù)流量。通過(guò)把特征碼檢測(cè)設(shè)備124放置在路由器和VLAN集中器122之間,可以為內(nèi)容掃描在子網(wǎng)絡(luò)之間的通信業(yè)務(wù)流量。
在圖1A的說(shuō)明性例子中,特征碼檢測(cè)設(shè)備124是現(xiàn)場(chǎng)可編程的端口擴(kuò)展器(field-programmable port extender,F(xiàn)PX)平臺(tái)。FPX平臺(tái)允許通過(guò)使用大現(xiàn)場(chǎng)可編程門陣列(field programmable gate array,F(xiàn)PGA)130(諸如Xilinx XCV2000E FPGA)來(lái)處理高速網(wǎng)絡(luò)流。下述特征碼檢測(cè)電路可以被下載到FPGA 130中以便按高達(dá)2.5千兆位每秒的通信業(yè)務(wù)量速率來(lái)處理網(wǎng)絡(luò)流。使用32位寬數(shù)據(jù)字來(lái)把網(wǎng)絡(luò)通信業(yè)務(wù)計(jì)時(shí)(clock)到FPGA 130中。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以使用不同于這里所描述的硬件和軟件組件來(lái)實(shí)現(xiàn)按照本發(fā)明的方法和系統(tǒng)。例如,可以采用不同于FPX平臺(tái)的其他設(shè)備來(lái)實(shí)現(xiàn)特征碼檢測(cè)設(shè)備。
在這里所描述的說(shuō)明性例子中,參考檢測(cè)蠕蟲特征碼來(lái)說(shuō)明,但按照本發(fā)明的方法和系統(tǒng)并不局限于此。按照本發(fā)明的方法和系統(tǒng)可標(biāo)識(shí)數(shù)據(jù)流中的重復(fù)內(nèi)容。重復(fù)內(nèi)容可以是但不局限于蠕蟲;病毒;大量訪問(wèn)網(wǎng)址人群的出現(xiàn);存在被發(fā)送到多個(gè)收件人的大量類似的電子郵件,諸如垃圾郵件;經(jīng)由對(duì)等網(wǎng)絡(luò)所重復(fù)交換的內(nèi)容,諸如音樂(lè)或視頻;及其它模式的重復(fù)內(nèi)容。
圖1B是按照本發(fā)明示出特征碼檢測(cè)設(shè)備124怎樣處理數(shù)據(jù)流的功能框圖。在說(shuō)明性例子中,現(xiàn)場(chǎng)可編程門陣列130包括字符過(guò)濾器150、散列處理器152、計(jì)數(shù)向量(count vector)154、時(shí)間平均處理器156、閾值分析器158、芯片外存儲(chǔ)器分析器160和報(bào)警產(chǎn)生器162的功能組件。這些功能組件提供了現(xiàn)場(chǎng)可編程門陣列130的說(shuō)明性的高級(jí)功能視圖。下面參考圖3-15更詳細(xì)地描述了現(xiàn)場(chǎng)可編程門陣列130及其功能。
如在說(shuō)明性例子中所示,字符過(guò)濾器150從數(shù)據(jù)流170中采樣數(shù)據(jù),并且濾出不太可能是二進(jìn)制數(shù)據(jù)一部分的字符,從而提供N字節(jié)的數(shù)據(jù)串172。如下面將更詳細(xì)地描述,蠕蟲典型情況下由二進(jìn)制數(shù)據(jù)構(gòu)成。這樣,字符過(guò)濾器150濾出不太可能表現(xiàn)蠕蟲特征碼特性的一些字符。散列處理器152對(duì)N字節(jié)串172計(jì)算k位散列,并且把所產(chǎn)生的特征碼散列到計(jì)數(shù)向量154。如下面將更詳細(xì)地描述,計(jì)數(shù)向量154可以包括多個(gè)計(jì)數(shù)向量。當(dāng)特征碼散列到計(jì)數(shù)向量154時(shí),由散列所指定的計(jì)數(shù)器被增加。按周期性間隔,這里被稱作測(cè)量間隔,每個(gè)計(jì)數(shù)向量中的計(jì)數(shù)被減少等于或大于由于正常通信業(yè)務(wù)流量所到達(dá)平均數(shù)的量,如按照時(shí)間平均處理器156所確定的。當(dāng)計(jì)數(shù)向量154到達(dá)預(yù)定閾值時(shí),如閾值分析器158所確定的,芯片外存儲(chǔ)器分析器160把有害串(offending string)散列到芯片外存儲(chǔ)器212中的表。下一次出現(xiàn)相同的串時(shí),在芯片外存儲(chǔ)器212中的相同地點(diǎn)進(jìn)行散列以便比較這兩個(gè)串。如果兩個(gè)串是相同的,那么產(chǎn)生報(bào)警。如果兩個(gè)串是不同的,那么利用新的串來(lái)重寫芯片外存儲(chǔ)器212中的串。因此,芯片外存儲(chǔ)器分析器160可以通過(guò)減少由于半頻繁出現(xiàn)的串所導(dǎo)致的報(bào)警來(lái)減少報(bào)警數(shù)目。當(dāng)接收到報(bào)警消息時(shí),報(bào)警產(chǎn)生器162向外部機(jī)器發(fā)送包括有害特征碼(offending signature)的控制分組以用于進(jìn)一步分析。
圖2是用于更詳細(xì)地示出特征碼檢測(cè)設(shè)備124的框圖。在說(shuō)明性的例子中,用于在網(wǎng)絡(luò)上檢測(cè)信號(hào)的電路在現(xiàn)場(chǎng)可編程門陣列130中被實(shí)現(xiàn)為被稱作worm_app的應(yīng)用202。worm_app 202適于在分層協(xié)議包裝(wrapper)204的架構(gòu)內(nèi)。如下面將更詳細(xì)地描述,計(jì)數(shù)處理器206從分層協(xié)議包裝204接收包裝信號(hào),把所述包裝信號(hào)分析轉(zhuǎn)換為字節(jié)流,把所述字節(jié)流散列到計(jì)數(shù)向量,并且使計(jì)數(shù)器增加。計(jì)數(shù)處理器206進(jìn)一步對(duì)所檢測(cè)的蠕蟲特征碼數(shù)目進(jìn)行計(jì)數(shù)平均并且處理良性串。計(jì)數(shù)處理器206輸出信號(hào)count_match,對(duì)于超過(guò)閾值以及相應(yīng)的10字節(jié)長(zhǎng)的蠕蟲offending_signature的特征碼來(lái)說(shuō)該信號(hào)被斷言為高。另外,計(jì)數(shù)處理器206可以向分層協(xié)議包裝204輸出信號(hào)。
實(shí)現(xiàn)worm_app電路,使得它提供高吞吐量和低延遲。為了達(dá)到這一點(diǎn)性能,worm_app電路可以具有流水線。在說(shuō)明性例子中,流水線長(zhǎng)度是27個(gè)時(shí)鐘周期并且可以如下分解-FIFO延遲3個(gè)時(shí)鐘周期-計(jì)數(shù)處理器延遲11個(gè)時(shí)鐘周期-分析器延遲13個(gè)時(shí)鐘周期分析器208接收來(lái)自計(jì)數(shù)處理器206的輸入信號(hào)并且與在諸如靜態(tài)隨機(jī)存取存儲(chǔ)器(static random access memory SRAM)之類的芯片外存儲(chǔ)器212中所存儲(chǔ)的散列表210有接口。如果count_match被斷言為高,那么由分析器208來(lái)訪問(wèn)芯片外存儲(chǔ)器212。如果在芯片外存儲(chǔ)器212的散列表210中標(biāo)識(shí)了offending_signature,那么分析器208輸出被斷言為高的信號(hào)analyzer_match。報(bào)警產(chǎn)生器214接收來(lái)自分析器208的analyzer_match信號(hào)并且把它從計(jì)數(shù)處理器所接收的包裝信號(hào)傳遞到分層協(xié)議包裝204。當(dāng)analyzer_match信號(hào)被斷言為高時(shí),報(bào)警產(chǎn)生器214發(fā)出包含有offending_signature的控制分組。
在圖3中示出了說(shuō)明性計(jì)數(shù)處理器206的組件級(jí)視圖。計(jì)數(shù)處理器206包括分組緩沖器302。如下面將描述,當(dāng)塊RAM被占用并且所述塊RAM內(nèi)的計(jì)數(shù)器無(wú)法被增加時(shí),分組緩沖器302在計(jì)數(shù)平均周期期間緩存分組。在計(jì)數(shù)平均周期以外,分組緩沖器302經(jīng)由通信業(yè)務(wù)傳遞。字符過(guò)濾器304判定哪些字節(jié)要包括在蠕蟲特征碼中。字節(jié)移位器306根據(jù)字符過(guò)濾器304的輸出來(lái)匯編可以計(jì)數(shù)的輸入串。大計(jì)數(shù)向量308散列從字節(jié)移位器306所接收的字符串,使相應(yīng)的計(jì)數(shù)器增加并且按照需要產(chǎn)生報(bào)警。下面將更詳細(xì)地描述計(jì)數(shù)處理器的每個(gè)功能組件。
在圖4的框圖中更詳細(xì)地示出了字符過(guò)濾器304。字符過(guò)濾器304可使得所選擇的字符從散列計(jì)算中被排除。由于蠕蟲典型情況下由二進(jìn)制數(shù)據(jù)構(gòu)成,所以特征碼檢測(cè)設(shè)備可以忽略數(shù)據(jù)流中的一些字符,所述字符非常不可能是二進(jìn)制數(shù)據(jù)的一部分。這些字符例如包括數(shù)據(jù)流中的空白、換行符、換行和空格。文本文檔例如包含用于填充的大量空格和空行。要避免這些字符的另一原因在于空行或空格的字符串不必表現(xiàn)可以用來(lái)標(biāo)識(shí)蠕蟲的良好特征碼的特性。優(yōu)選使用不會(huì)出現(xiàn)在文檔中的串。按照本發(fā)明的方法和系統(tǒng)不局限于用于避免有害特征碼的啟發(fā)式方式??梢詫?shí)現(xiàn)的其它方式包括但不局限于標(biāo)識(shí)并忽略電子郵件消息中的文本,預(yù)處理整個(gè)串,或者流編輯以搜索規(guī)則的表達(dá)式并用串來(lái)代替它們。
字符過(guò)濾器304接收32位數(shù)據(jù)字data_in以及信號(hào)data_en來(lái)作為輸入,所述信號(hào)data_en用于標(biāo)識(shí)data_in中的數(shù)據(jù)是否有效。字符過(guò)濾器304把32位字拆分為4個(gè)單個(gè)字節(jié)(byte1到byte4)并且輸出相應(yīng)的信號(hào)以便表明所述字節(jié)是否包含有效數(shù)據(jù)(byte1 valid到byte4valid)。如果它是字符過(guò)濾器304正尋找的字符之一,那么它被認(rèn)為是無(wú)效的。如果例如4字節(jié)字符串a(chǎn)、newline、b、null被字符過(guò)濾器304作為輸入來(lái)接收,并且假定字符過(guò)濾器304被配置為忽略換行符和空字符,那么字符過(guò)濾器304的相應(yīng)輸出信號(hào)可能會(huì)是Byte1a,Byte1有效高
Byte2newline,Byte2有效低Byte3b,Byte3有效高Byte4null,Byte4有效低圖5是說(shuō)明性字節(jié)移位器306的框圖。字節(jié)移位器306從字符過(guò)濾器304讀入值并且輸出特征碼的字節(jié)移位版本,可能會(huì)被大計(jì)數(shù)向量308散列。字節(jié)移位器306還輸出需要被散列的字節(jié)數(shù)目(num_hash)以及用于告訴大計(jì)數(shù)向量308何時(shí)開始計(jì)數(shù)平均的信號(hào)。字節(jié)移位器306接受從字符過(guò)濾器304輸出的數(shù)據(jù)。在說(shuō)明性例子中,輸出特征碼是13字節(jié)長(zhǎng),并且每個(gè)特征碼均包含4個(gè)10字節(jié)的重疊字符串。
下面的說(shuō)明性例子描述字節(jié)移位器的功能。如果輸入是“NIMDAADMIN123”后面跟隨來(lái)自先前例子的字符串a(chǎn),newline,b,null,那么字符串的字節(jié)移位版本可能會(huì)是“MDAADMIN123ab”并且num_hash可能會(huì)是2。如下所述,num_hash值由大計(jì)數(shù)向量308來(lái)使用。
為了維護(hù)所檢測(cè)特征碼數(shù)目的運(yùn)行平均,周期性減少所檢測(cè)特征碼的計(jì)數(shù)。在說(shuō)明性例子中,這在已經(jīng)處理了固定數(shù)目的字節(jié)(諸如2.5兆字節(jié))之后在分組邊界發(fā)生。字節(jié)移位器306跟蹤已經(jīng)被散列到大計(jì)數(shù)向量308的字節(jié)數(shù)目。當(dāng)所處理的字節(jié)總數(shù)超過(guò)閾值時(shí),那么字節(jié)移位器306經(jīng)歷下列步驟1.字節(jié)移位器308等待要從分組緩沖器302讀取的當(dāng)前分組的最后字,繼而停止從分組緩沖器302的讀取。從此時(shí)起,進(jìn)入計(jì)數(shù)處理器206的通信業(yè)務(wù)量被暫時(shí)緩存在分組緩沖器302中。這樣做是由于當(dāng)進(jìn)行計(jì)數(shù)平均時(shí)無(wú)法散列并計(jì)數(shù)這些字節(jié)。
2.當(dāng)當(dāng)前分組的最后字已經(jīng)被大計(jì)數(shù)向量308處理時(shí),字節(jié)移位器306把subtract_now信號(hào)斷言為高。此信號(hào)由大計(jì)數(shù)向量308用來(lái)開始計(jì)數(shù)平均。
當(dāng)來(lái)自包裝的start of payload(有效負(fù)載開始)信號(hào)被斷言為高時(shí),字節(jié)移位器306把count_now信號(hào)斷言為高。當(dāng)來(lái)自包裝的end of frame(幀末尾)信號(hào)被斷言為高時(shí),count_now被斷言為低。據(jù)此,可以計(jì)數(shù)僅包括有效負(fù)載的字節(jié)。
字節(jié)移位器306還可以確定在數(shù)據(jù)流中是否存在良性串。諸如來(lái)自Microsoft Update的代碼段之類的良性串可以通過(guò)作為一組串被編程到字節(jié)移位器306中來(lái)識(shí)別,這種串盡管通常出現(xiàn)在網(wǎng)絡(luò)上,然而并非是蠕蟲。通過(guò)經(jīng)由數(shù)據(jù)流在字節(jié)移位器306接收良性串分組來(lái)把良性串加載到大計(jì)數(shù)向量308中。例如當(dāng)分組在端口1200上被發(fā)送到目的地址192.168.200.2時(shí),字節(jié)移位器306假定所述分組包含良性串的13位散列值。使用散列值的高5位來(lái)引用32個(gè)塊RAM之一并且使用低8位來(lái)引用每個(gè)塊RAM內(nèi)256個(gè)計(jì)數(shù)器之一。在圖6中示出了包含良性串的說(shuō)明性控制分組602的圖。按benign_string輸出有效負(fù)載的第一字的低13位并且benign_valid被斷言為高。由于控制分組包含不必計(jì)數(shù)的良性串,所以count_now被斷言為低。benign_valid和count_string信號(hào)由大計(jì)數(shù)向量308用來(lái)避免計(jì)數(shù)良性串,如下面所解釋。
圖7是說(shuō)明性大計(jì)數(shù)向量308的框圖。字節(jié)移位器306的輸出是大計(jì)數(shù)向量308的輸入。大計(jì)數(shù)向量308包含邏輯,用于散列輸入的字符串、解決在塊RAM之間的沖突、從塊RAM中進(jìn)行讀取、使計(jì)數(shù)器增加并且寫回到塊RAM。在說(shuō)明性例子中,大計(jì)數(shù)向量308包括32個(gè)塊RAM,每個(gè)塊RAM具有256個(gè)計(jì)數(shù)器,每個(gè)計(jì)數(shù)器都是16位寬。利用此大小的說(shuō)明性計(jì)數(shù)器,可以支持高達(dá)64K的計(jì)數(shù)。下面參考圖8將更詳細(xì)地描述大計(jì)數(shù)向量308的功能組件。
說(shuō)明性的大計(jì)數(shù)向量308每個(gè)時(shí)鐘周期對(duì)四個(gè)10字節(jié)字符串計(jì)算四個(gè)散列值,所述四個(gè)10字節(jié)字符串包括在13字節(jié)的信號(hào)字符串中。每個(gè)時(shí)鐘周期計(jì)算一個(gè)以上散列值以維護(hù)吞吐量。由于所跟蹤的特征碼可能出現(xiàn)在有效負(fù)載中的任何點(diǎn),并且它們被散列到相同的地點(diǎn)而不管它們?cè)诜纸M中的偏移如何,所以在所有情況下使用相同的散列函數(shù)。每個(gè)散列函數(shù)產(chǎn)生13位的值。
為了檢測(cè)經(jīng)常出現(xiàn)的內(nèi)容,大計(jì)數(shù)向量308對(duì)流送數(shù)據(jù)的10字節(jié)(80位)窗上計(jì)算k位散列。為了計(jì)算所述散列,在配置計(jì)數(shù)處理器的時(shí)候產(chǎn)生一組k×80個(gè)隨機(jī)二進(jìn)制值。所述散列的每個(gè)位被計(jì)算為對(duì)80位輸入串的隨機(jī)選擇子集的異或(XOR)。通過(guò)使散列函數(shù)隨機(jī)化,對(duì)手無(wú)法確定可能會(huì)引起過(guò)多散列沖突的字節(jié)模式。對(duì)每個(gè)有效負(fù)載的多個(gè)散列計(jì)算確保簡(jiǎn)單的多態(tài)方法難以奏效。
在說(shuō)明性實(shí)施例中,使用稱作H3的通用散列函數(shù)。散列函數(shù)H3被定義為h(X)=d1·x1d2·x2d3·x3...db·xb在以上公式中,b是按位來(lái)計(jì)量的字符串長(zhǎng)度。在說(shuō)明性例子中,b=80位。(d1,d2,d3,...db)是k×80個(gè)隨機(jī)二進(jìn)制值組。隨機(jī)二進(jìn)制值在
范圍內(nèi)(其中n是按位計(jì)量的單個(gè)計(jì)數(shù)器大小,并且2m是所使用塊RAM的數(shù)目)。換句話說(shuō),d值具有與要產(chǎn)生的散列值相同的范圍。相對(duì)于輸入對(duì)該隨機(jī)值組所執(zhí)行的XOR功能生成散列值,其對(duì)輸入值來(lái)說(shuō)具有一定分布。
為了計(jì)算所述散列,對(duì)于字符串中的每個(gè)位來(lái)說(shuō),如果該位等于‘1’,那么該位相關(guān)聯(lián)的隨機(jī)值與當(dāng)前的結(jié)果相XOR,以獲得散列值。例如,給定d=(101;100;110;011)并且輸入串X=1010,那么相應(yīng)的3位散列函數(shù)為101 XOR 110=011。
大計(jì)數(shù)向量308使用散列值來(lái)索引到計(jì)數(shù)器向量中,所述計(jì)數(shù)器包含在諸如計(jì)數(shù)向量802之類的計(jì)數(shù)向量中。當(dāng)某個(gè)特征碼散列到計(jì)數(shù)器時(shí),這使得計(jì)數(shù)器增加一。按周期性間隔,這里可以被稱作測(cè)量間隔,每個(gè)計(jì)數(shù)向量中的計(jì)數(shù)被減少等于或大于由于正常通信業(yè)務(wù)流量所到達(dá)平均數(shù)的量。當(dāng)計(jì)數(shù)器到達(dá)預(yù)定閾值時(shí),分析器208訪問(wèn)芯片外存儲(chǔ)器212,如下面將描述,并且計(jì)數(shù)器被復(fù)位。對(duì)于Xilinx FPGA上的電路的說(shuō)明性實(shí)現(xiàn)方式來(lái)說(shuō),通過(guò)把雙端口的芯片內(nèi)塊RAM配置為存儲(chǔ)單元陣列來(lái)實(shí)現(xiàn)計(jì)數(shù)向量。每個(gè)說(shuō)明性存儲(chǔ)器在每個(gè)時(shí)鐘周期可以執(zhí)行一個(gè)讀取操作和一個(gè)寫入操作。如圖9所示,實(shí)現(xiàn)三級(jí)流水線在每個(gè)時(shí)鐘周期讀取、增加并寫入存儲(chǔ)器。由于該特征碼在每個(gè)時(shí)鐘周期都會(huì)改變并且由于每個(gè)特征碼的每次出現(xiàn)都被計(jì)數(shù),所以從存儲(chǔ)器子系統(tǒng)來(lái)看需要高性能。雙端口的存儲(chǔ)器允許寫回一個(gè)特征碼的出現(xiàn)次數(shù),同時(shí)正讀取另一特征碼的出現(xiàn)。
為了標(biāo)出測(cè)量間隔的末尾,大計(jì)數(shù)向量308可以周期性復(fù)位計(jì)數(shù)器。在經(jīng)過(guò)了固定的字節(jié)窗之后,通過(guò)把值寫為零來(lái)復(fù)位所有計(jì)數(shù)器。然而,此方法具有缺陷。如果在測(cè)量間隔末尾的附近時(shí)對(duì)應(yīng)于惡意特征碼的計(jì)數(shù)器值剛好在閾值以下,那么復(fù)位此計(jì)數(shù)器會(huì)使該特征碼不會(huì)被檢測(cè)出來(lái)。因此作為替換方式,說(shuō)明性大計(jì)數(shù)向量308周期性從所有計(jì)數(shù)器減去平均值。平均值被計(jì)算為所期望的字節(jié)數(shù)目,所述字節(jié)可以在間隔內(nèi)被散列到每個(gè)計(jì)數(shù)器。如下所述,此方法要求使用比較器和減法器。
為了實(shí)現(xiàn)高吞吐量,可以在每個(gè)時(shí)鐘周期內(nèi)處理多個(gè)串。為了允許并行執(zhí)行多個(gè)存儲(chǔ)器操作,如圖10所示在內(nèi)容檢測(cè)系統(tǒng)130中使用多個(gè)塊RAM把計(jì)數(shù)向量分段到多個(gè)存儲(chǔ)體(bank)中。使用散列值的較高位來(lái)確定要訪問(wèn)哪個(gè)塊RAM。使用較低位來(lái)確定在給定塊RAM內(nèi)哪個(gè)計(jì)數(shù)器要增加。多于一個(gè)的字符串可能散列到相同的塊RAM。這種情況這里被稱作“存儲(chǔ)體沖突”??梢允褂脙?yōu)先級(jí)編碼器來(lái)解決存儲(chǔ)體沖突。由于優(yōu)先級(jí)編碼器的操作,對(duì)于按OC-48行速率運(yùn)行的系統(tǒng)來(lái)說(shuō),每個(gè)時(shí)鐘周期可能不會(huì)計(jì)數(shù)在1和3個(gè)字符串之間。沖突的概率c可以用下式表示c=1-Πi=N-B+1N-1iN]]>在上面的公式中,N是所使用的塊RAM的數(shù)目并且B是每個(gè)時(shí)鐘周期到來(lái)的字節(jié)數(shù)目。
諸如優(yōu)先級(jí)編碼器804之類的優(yōu)先級(jí)編碼器解決當(dāng)四個(gè)散列值中的兩個(gè)或多個(gè)的較高5個(gè)位相同時(shí)可能發(fā)生的沖突。優(yōu)先級(jí)編碼器804輸出需要被增加的塊RAM的地址。如圖8所示,使用散列值的較高5個(gè)位來(lái)標(biāo)識(shí)要增加的塊RAM。使用較低8個(gè)位來(lái)索引在要增加的塊RAM內(nèi)的計(jì)數(shù)器。bram_num1到bram_num4引用各塊RAM。ctr_addr1到ctr_addr4引用在要增加的每個(gè)塊RAM內(nèi)的計(jì)數(shù)器號(hào)。當(dāng)相應(yīng)的塊RAM和計(jì)數(shù)器地址有效時(shí),num1_valid到num4_valid被斷言為高。由于報(bào)警可以由32個(gè)塊RAM中的任何一個(gè)產(chǎn)生并且所述報(bào)警可以對(duì)應(yīng)于四種可能的特征碼,所以大計(jì)數(shù)向量308跟蹤哪個(gè)特征碼觸發(fā)了所述報(bào)警。這通過(guò)使用對(duì)應(yīng)于bram_num和ctr_addr信號(hào)的信號(hào)sign1到sign4來(lái)實(shí)現(xiàn)。在說(shuō)明性例子中,信號(hào)sign1到sign4可以具有以下五個(gè)值之一一、二、三和四對(duì)應(yīng)于13字節(jié)信號(hào)字符串中的第一、第二、第三和第四特征碼。值八表示良性串。
值num_hash確定了其中需要解決沖突的塊RAM的數(shù)目。例如如果此信號(hào)值為二,那么這意味著字節(jié)移位器306已經(jīng)按兩個(gè)字節(jié)移位了該特征碼。因此,由于另外兩個(gè)特征碼已經(jīng)被計(jì)數(shù),所以只計(jì)數(shù)兩個(gè)特征碼。
在圖11中示出了在沒(méi)有沖突的情況下優(yōu)先級(jí)編碼器的功能的說(shuō)明性例子。在說(shuō)明性例子中,在第一時(shí)鐘周期內(nèi),所有四個(gè)輸入字節(jié)被字符過(guò)濾器認(rèn)為是有效的。因此,所有四個(gè)特征碼被散列,并且sign1到sign4具有有效值連同它們相應(yīng)的bram_num和ctr_addr信號(hào)。在第二時(shí)鐘周期內(nèi),四個(gè)輸入字節(jié)中只有兩個(gè)被字符過(guò)濾器認(rèn)為是有效的。因此,只有兩個(gè)特征碼被散列。因此只有sign1和sign2具有關(guān)于特征碼3和4的有效值。
在圖12中示出了在存在沖突的情況下優(yōu)先級(jí)編碼器的功能的說(shuō)明性例子。如說(shuō)明性例子中所示,被增加的塊RAM在兩種情況下沖突。在這兩種情況中,優(yōu)先一個(gè)特征碼來(lái)解決沖突。一個(gè)特征碼相對(duì)于另一個(gè)特征碼的優(yōu)先級(jí)在大計(jì)數(shù)向量308中。
在說(shuō)明性實(shí)施例中,由于塊RAM的固有功能并不包括支持復(fù)位和計(jì)數(shù)平均,所以圍繞所述塊RAM提供包裝(wrapper)以實(shí)現(xiàn)該功能。所述包裝的功能說(shuō)明性地由圖8中所示出的說(shuō)明性計(jì)數(shù)向量來(lái)表示。在大計(jì)數(shù)向量308中例示了此計(jì)數(shù)向量組件的三十二個(gè)拷貝,對(duì)于正使用的每個(gè)塊RAM來(lái)說(shuō)對(duì)應(yīng)一個(gè)。
如計(jì)數(shù)向量的說(shuō)明性例子中所示,所述計(jì)數(shù)向量具有reset(復(fù)位)信號(hào)。當(dāng)reset信號(hào)被斷言為低時(shí),每個(gè)計(jì)數(shù)器被初始化為0。由于在說(shuō)明性例子中并行初始化塊RAM,所以這花費(fèi)256個(gè)時(shí)鐘周期(每個(gè)塊RAM中的計(jì)數(shù)器數(shù)目)。hash標(biāo)識(shí)了在count_vector中要讀取的地址。dout標(biāo)識(shí)了計(jì)數(shù)器中對(duì)應(yīng)于hash的數(shù)據(jù)。addr標(biāo)識(shí)了要寫回增加的計(jì)數(shù)的地址,這在下面將進(jìn)行描述。ctr_data標(biāo)識(shí)了要寫回到count_vector的值。set_ctr向count_vector提供了允許寫入。當(dāng)subtract被斷言為高時(shí),大計(jì)數(shù)向量通過(guò)每個(gè)計(jì)數(shù)器進(jìn)行迭代并且從中減去平均值。如先前所提及,平均值被計(jì)算為所期望的在每個(gè)間隔中可能會(huì)散列到計(jì)數(shù)器的字節(jié)數(shù)目。如果給定計(jì)數(shù)器的值小于平均值,那么它被初始化為零。如果給定計(jì)數(shù)器的值包含與良性串相關(guān)聯(lián)的特定字段,那么它不被減除。就像初始化計(jì)數(shù)向量一樣,并行性確保了在256個(gè)時(shí)鐘周期內(nèi)實(shí)現(xiàn)減法。
為了支持良性串,利用超出閾值的值來(lái)填充對(duì)應(yīng)于良性串的散列的計(jì)數(shù)器。當(dāng)計(jì)數(shù)器具有此值時(shí),電路跳過(guò)所述的增加和寫回步驟。
對(duì)于有限數(shù)目的常見字符串來(lái)說(shuō),可以不計(jì)數(shù)散列存儲(chǔ)桶(bucket),并且從而可以避免發(fā)送報(bào)警。但是隨著良性串的數(shù)目接近可用計(jì)數(shù)器的數(shù)目,因?yàn)橹挥休^少的計(jì)數(shù)器用于檢測(cè)特征碼,所以降低了有效性。對(duì)于較大數(shù)目的不常見字符串,可以在下游軟件中避免假肯定產(chǎn)生。為了減少被發(fā)送到下游軟件的假肯定,可以由控制主機(jī)來(lái)處理是良性的但是不那么頻繁出現(xiàn)的字符串。
返回參照?qǐng)D8,讀取級(jí)806的輸入是來(lái)自優(yōu)先級(jí)編碼器804的輸出。來(lái)自讀取級(jí)806的輸出被連接到32個(gè)塊RAM的地址和數(shù)據(jù)總線(例如,計(jì)數(shù)向量802)。然而,為簡(jiǎn)單起見在圖8中只示出了一個(gè)計(jì)數(shù)向量802。根據(jù)讀取級(jí)806的bram_num輸入的值來(lái)斷言適當(dāng)?shù)牡刂泛蛿?shù)據(jù)信號(hào)。進(jìn)入讀取級(jí)806的信號(hào)sign1到sign4被分配給sign b1到sign b32中的任何一個(gè)(此后被稱作“sign”信號(hào)同時(shí)指任何一個(gè)塊RAM),所述信號(hào)除了當(dāng)處理包含良性串的控制分組時(shí)會(huì)流出讀取級(jí)806。在該情況下,輸出sign信號(hào)被指定值8,使得比較組件808和增加組件810可以適當(dāng)?shù)靥幚硭?br>
諸如計(jì)數(shù)向量802之類的計(jì)數(shù)向量的輸出由其相應(yīng)的比較組件808來(lái)檢查,并且如果它小于閾值,那么所述比較組件的inc信號(hào)被斷言為高。如果它等于閾值,那么大計(jì)數(shù)向量308把count_match信號(hào)設(shè)置為高以便向分析器208通知潛在頻繁出現(xiàn)的特征碼。count_match信號(hào)使芯片外存儲(chǔ)器212被占用長(zhǎng)達(dá)13個(gè)時(shí)鐘周期(這是因?yàn)樗情_始從芯片外存儲(chǔ)器212讀取10字節(jié)字符串、比較字符字符串并且寫回該字符串所花費(fèi)的時(shí)間),count_match抑制信號(hào)確保在兩個(gè)count_match信號(hào)之間存在至少13個(gè)時(shí)鐘周期的間隔。
在增加和寫回級(jí)中,存在四個(gè)說(shuō)明性功能,增加和寫回級(jí)可以按流水線執(zhí)行執(zhí)行。在所有情況下,ctr_data是被寫回到計(jì)數(shù)向量的值。四個(gè)說(shuō)明性功能如下-如果inc信號(hào)已經(jīng)被斷言為高,那么ctr_data的值被設(shè)置為比count_vector的輸出多一。
-如果sign值為8,那么與良性串相關(guān)聯(lián)的值被指定成ctr_data。在說(shuō)明性例子中,此值為0xFFFF。
-如果計(jì)數(shù)向量的輸出為0xFFFF,那么把相同的值指定給ctr_data以便保存良性串。
-ctr_data的缺省值為0。如果計(jì)數(shù)器已經(jīng)超過(guò)閾值,那么所述0值不會(huì)改變。
valid(有效)信號(hào)(例如,b1_valid)當(dāng)被反轉(zhuǎn)(flop)適當(dāng)?shù)拇螖?shù)時(shí)被用為計(jì)數(shù)向量的寫使能的輸入(即,set_ctr)。
在放置和路由期間,可以依照承受大傳播延遲的這種方式來(lái)放置一些塊RAM。這可能使所述電路不滿足定時(shí)約束。在說(shuō)明性例子中通過(guò)把觸發(fā)器包括到塊RAM的輸入和輸出中來(lái)彌補(bǔ)此情況。在圖8中沒(méi)有示出附加的觸發(fā)器以便保持簡(jiǎn)明。
當(dāng)發(fā)現(xiàn)有害特征碼時(shí),大計(jì)數(shù)向量308輸出count_match以及相應(yīng)的特征碼(sign_num)。計(jì)數(shù)處理器206反轉(zhuǎn)string適當(dāng)?shù)拇螖?shù)來(lái)反映大計(jì)數(shù)向量308的延遲。當(dāng)count_match被斷言為高時(shí),根據(jù)sign_num的值來(lái)選擇offending_signature。
圖13是說(shuō)明性分析器208的框圖。分析器208保留可疑的特征碼并且估算確定的特征碼多長(zhǎng)時(shí)間出現(xiàn)一次。從而,分析器208可以減少由報(bào)警產(chǎn)生器214所發(fā)送的報(bào)警數(shù)目。為了這樣,分析器確信越過(guò)閾值的計(jì)數(shù)器實(shí)際上是頻繁出現(xiàn)字符串的結(jié)果。當(dāng)計(jì)數(shù)器跨過(guò)閾值時(shí),有害串被散列到芯片外存儲(chǔ)器212中的表。使用上述方法對(duì)有害特征碼計(jì)算17位散列值。芯片外存儲(chǔ)器212數(shù)據(jù)總線是19位寬。散列值映射到地址信號(hào)的高17位。地址信號(hào)的低兩位被改變以用來(lái)表示存儲(chǔ)器中的三個(gè)連續(xù)字(所述存儲(chǔ)器用來(lái)存儲(chǔ)10字節(jié)字符串)。散列值用來(lái)索引到芯片外存儲(chǔ)器的散列表210中。下一次出現(xiàn)相同的串時(shí),分析器散列到芯片外存儲(chǔ)器212中的相同地點(diǎn)并且比較兩個(gè)串。如果兩個(gè)串是相同的,那么產(chǎn)生報(bào)警。如果兩個(gè)串是不同的,那么分析器208重寫芯片外存儲(chǔ)器212單元并且存儲(chǔ)另一串。在該情況下,因?yàn)樯⒘泻瘮?shù)把幾個(gè)半頻繁出現(xiàn)的字符串散列到相同的值,所以可能出現(xiàn)計(jì)數(shù)器溢出。由于半頻繁出現(xiàn)的字符串不是所關(guān)注的,因此分析器208可防止出現(xiàn)產(chǎn)生報(bào)警分組的開銷。
下面解釋分析器208的說(shuō)明性信號(hào)count_match當(dāng)被大計(jì)數(shù)向量308斷言為高時(shí),某個(gè)特征碼已經(jīng)使計(jì)數(shù)器到達(dá)閾值。
offending_signature對(duì)應(yīng)于count_match的特征碼正被斷言為高。
analyzer_match當(dāng)被斷言為高時(shí),分析器已經(jīng)驗(yàn)證到達(dá)閾值的計(jì)數(shù)器不是假肯定的結(jié)果。
mod1_req當(dāng)被斷言為高時(shí),此信號(hào)表明請(qǐng)求訪問(wèn)芯片外存儲(chǔ)器212。在正訪問(wèn)芯片外存儲(chǔ)器212期間此信號(hào)保持為高。
mod1_gr當(dāng)被斷言為高時(shí),此信號(hào)表明許可訪問(wèn)芯片外存儲(chǔ)器212。
mod1_rw當(dāng)此信號(hào)被斷言為高時(shí)分析器208從芯片外存儲(chǔ)器212中進(jìn)行讀取并且當(dāng)此信號(hào)被斷言為低時(shí)分析器208寫入芯片外存儲(chǔ)器212。
mod1_addr表明要從中讀取或?qū)懭氲男酒獯鎯?chǔ)器地址。
mod1_d_in包括正從芯片外存儲(chǔ)器212中讀取的數(shù)據(jù)。
mod1_d_out包括正被寫入芯片外存儲(chǔ)器212的數(shù)據(jù)。
分析器208被配置為包括用于芯片外存儲(chǔ)器212訪問(wèn)的多個(gè)有限狀態(tài)。在圖14中示出了用于分析器208的說(shuō)明性有限狀態(tài)機(jī)。下面解釋在圖14中所描繪的每個(gè)說(shuō)明性狀態(tài)。
idle是分析器208的默認(rèn)狀態(tài)。當(dāng)count_match被斷言為高時(shí)分析器208從此狀態(tài)中轉(zhuǎn)換出來(lái)。
prep_for_sram在此狀態(tài)中請(qǐng)求許可訪問(wèn)芯片外存儲(chǔ)器212。當(dāng)許可被授權(quán)時(shí)分析器208從此狀態(tài)中轉(zhuǎn)換出來(lái)。
send_read_request如在圖14的說(shuō)明性例子中所示,實(shí)現(xiàn)三種send_read_request狀態(tài)。在發(fā)送讀取請(qǐng)求的所有三種狀態(tài)中,mod1_rw被斷言為高并且mod1_addr被設(shè)置為根據(jù)offending_signature的散列所導(dǎo)出的值。
wait1等待要從芯片外存儲(chǔ)器212中所讀取的數(shù)據(jù)。
read_data_from_sram在mod1_d_in上來(lái)自芯片外存儲(chǔ)器212的數(shù)據(jù)被讀入到臨時(shí)寄存器中。
check_match臨時(shí)寄存器被串接并與offending_signature相比較。如果這兩個(gè)相等,那么analyzer_match被斷言為高并且分析器208轉(zhuǎn)變回到idle。如果這兩個(gè)不相等,那么分析器208把新的字符串寫回到存儲(chǔ)器。
send_write_requestmod1_rw被斷言為低,并且如同讀取狀態(tài)一樣,mod1_addr被設(shè)置為根據(jù)offending_signature的散列所導(dǎo)出的值。
一旦mod1_gr升高,那么分析器208中的每次轉(zhuǎn)變就在時(shí)鐘邊沿發(fā)生。
芯片外存儲(chǔ)器212用來(lái)存儲(chǔ)完整的串(未散列版本),在說(shuō)明性例子中所述串為10字節(jié)(80位)長(zhǎng)。分析器208盡管比軟件要快數(shù)百倍,然而仍然要求幾個(gè)附加時(shí)鐘周期來(lái)訪問(wèn)芯片外存儲(chǔ)器212,這可能會(huì)使數(shù)據(jù)處理流水線停滯。在說(shuō)明性例子中,訪問(wèn)芯片外存儲(chǔ)器212中的10字節(jié)字符串要求13個(gè)時(shí)鐘周期。
可以實(shí)現(xiàn)每當(dāng)從芯片外存儲(chǔ)器212執(zhí)行存儲(chǔ)器讀取時(shí)就使數(shù)據(jù)處理流水線停滯的電路。然而,使流水線停滯具有缺點(diǎn)。相對(duì)于整個(gè)分組有效負(fù)載來(lái)對(duì)字節(jié)窗計(jì)算散列值的目的在于處理多態(tài)蠕蟲的情況。但是考慮更普遍的非多態(tài)蠕蟲的情況,其中蠕蟲通信量的分組有效負(fù)載近乎是完全相同的。在這種情況下,按照本發(fā)明的方法和系統(tǒng)可以對(duì)整個(gè)分組有效負(fù)載產(chǎn)生一系列連續(xù)匹配。然后為了每個(gè)匹配使流水線停滯可能會(huì)造成嚴(yán)重的吞吐量降級(jí),這是由于每個(gè)芯片外存儲(chǔ)器212訪問(wèn)要花費(fèi)多個(gè)時(shí)鐘周期。實(shí)際上,這樣做可能對(duì)攻擊者有益,這是由于系統(tǒng)管理員可能被迫關(guān)掉系統(tǒng)。在說(shuō)明性例子中,解決方案在于當(dāng)從芯片外存儲(chǔ)器212進(jìn)行讀取時(shí)并不使流水線停滯,而是跳過(guò)進(jìn)一步的存儲(chǔ)操作直到先前操作已經(jīng)完成。因此,一旦產(chǎn)生報(bào)警,那么在下一13個(gè)時(shí)鐘周期(在讀取和寫回到芯片外存儲(chǔ)器212中所涉及的等待時(shí)間)上的數(shù)據(jù)不會(huì)導(dǎo)致產(chǎn)生進(jìn)一步的報(bào)警。
在測(cè)量間隔內(nèi),所觀察的特征碼數(shù)目可以近似等于所處理的字符數(shù)目。因?yàn)橛捎诖鎯?chǔ)體RAM沖突而跳過(guò)一小部分字符,所以所處理的字符數(shù)目可能較少。給定測(cè)量間隔長(zhǎng)度來(lái)確定閾值的問(wèn)題可以被簡(jiǎn)化為確定概率的界限,所述概率為當(dāng)m個(gè)元素被散列到具有b個(gè)存儲(chǔ)桶的表時(shí)被散列到相同存儲(chǔ)桶的元素?cái)?shù)目超過(guò)i的概率。所述界限由下式給出b(emib)i]]>在說(shuō)明性例子中,m個(gè)特征碼被散列到b個(gè)計(jì)數(shù)器。在以上表示式中,i是閾值。從而,給定測(cè)量間隔長(zhǎng)度,可以改變閾值,來(lái)使計(jì)數(shù)器超過(guò)閾值的概率的上限可接受地小。這隨后減少了不必要的芯片外存儲(chǔ)器212訪問(wèn)的數(shù)目。因此,由于到來(lái)的特征碼隨機(jī)地散列到計(jì)數(shù)器,所以對(duì)于適當(dāng)大的閾值來(lái)說(shuō)不規(guī)則的特征碼可能使計(jì)數(shù)器超過(guò)所述閾值。計(jì)數(shù)器精確地接收i個(gè)元素的概率可以由下式給出mi(1b)i(1-1b)(m-i)≤mi(1b)i≤(mei)(1b)i=(mebi)i]]>第二不等式是二項(xiàng)式系數(shù)的上限的結(jié)果。計(jì)數(shù)器的值至少為i的概率可以由下式給出
Pr(c≥i)≤Σk=im(embk)k≤(emib)i[1+(emib)+(emib)2+···+(emib)(m-i)]]]>隨著i增加,方括號(hào)內(nèi)的項(xiàng)接近于1。因此,計(jì)數(shù)器的值至少為i的概率可以由下式限制b(emib)i]]>在說(shuō)明性實(shí)施例中,由于測(cè)量間隔m是2.5兆字節(jié),所以計(jì)數(shù)器的數(shù)目b是8192,并且閾值i是850,對(duì)于隨機(jī)通信業(yè)務(wù)流量來(lái)說(shuō)計(jì)數(shù)器溢出的概率范圍為1.02×10-9。據(jù)此,對(duì)于在間隔內(nèi)所處理的通信業(yè)務(wù)來(lái)說(shuō),計(jì)數(shù)器溢出的概率如期望的那么小。
當(dāng)從分析器208接收?qǐng)?bào)警消息時(shí),報(bào)警產(chǎn)生器214向在已知的UDP/IP端口上監(jiān)聽的外部數(shù)據(jù)處理系統(tǒng)發(fā)送用戶數(shù)據(jù)報(bào)協(xié)議(userdatagram protocol,UDP)控制分組。該分組可能包含該有害特征碼(對(duì)其計(jì)算散列的字節(jié)的字符串)。當(dāng)analyzer_match被斷言為高時(shí),報(bào)警產(chǎn)生器214發(fā)出該控制分組。據(jù)此,然后可以把最頻繁出現(xiàn)的字符串標(biāo)示成可疑的。圖15是從報(bào)警產(chǎn)生器214所發(fā)出的說(shuō)明性控制分組1502的框圖。
因此,按照本發(fā)明的方法和系統(tǒng)檢測(cè)網(wǎng)絡(luò)通信業(yè)務(wù)流量中頻繁出現(xiàn)的特征碼。通過(guò)用硬件來(lái)實(shí)現(xiàn)內(nèi)容檢測(cè),可以實(shí)現(xiàn)高吞吐量。此外,通過(guò)利用由硬件所提供的并行性,與典型的基于軟件的方法相比較可以掃描更大量的通信業(yè)務(wù)流量。通過(guò)把幾個(gè)字節(jié)窗并行散列到芯片級(jí)塊存儲(chǔ)器來(lái)維持吞吐量,其中可以并行更新每個(gè)芯片級(jí)塊存儲(chǔ)器。這不同于傳統(tǒng)的基于軟件的方法,其中跟隨有計(jì)數(shù)器更新的散列可能需要順序執(zhí)行幾個(gè)指令。此外,使用芯片外存儲(chǔ)器分析器提供了低的假肯定率。對(duì)每個(gè)分組進(jìn)行多個(gè)散列還幫助系統(tǒng)阻礙簡(jiǎn)單的多態(tài)測(cè)量。
先前的網(wǎng)絡(luò)監(jiān)視工具依賴系統(tǒng)管理員的直覺(jué)來(lái)檢測(cè)網(wǎng)絡(luò)通信業(yè)務(wù)流量中的異常。按照本發(fā)明的方法和系統(tǒng)自動(dòng)檢測(cè)網(wǎng)絡(luò)通信業(yè)務(wù)流量中對(duì)應(yīng)于頻繁出現(xiàn)內(nèi)容的峰值。
已經(jīng)給出了本發(fā)明實(shí)現(xiàn)方式的以上描述,用于示出和說(shuō)明的目的。這并非是窮舉并且不把本發(fā)明限制在所公開的精確形式。按照以上教導(dǎo)可以進(jìn)行修改和變化,或者通過(guò)實(shí)施本發(fā)明可得到這些修改和變化。例如,所描述的實(shí)現(xiàn)方式包括軟件,但是當(dāng)前實(shí)現(xiàn)方式可以被實(shí)現(xiàn)為硬件和軟件的組合或由硬件單獨(dú)實(shí)現(xiàn)。此外,由程序所執(zhí)行的說(shuō)明性處理步驟可以依照不同于上述的次序執(zhí)行,并且可以包括附加處理步驟。本發(fā)明的范圍由權(quán)利要求書及其等效物來(lái)定義。
當(dāng)介紹本發(fā)明或其優(yōu)選實(shí)施例(一個(gè)或多個(gè))的元素時(shí),“一”、“一個(gè)”、“這個(gè)”和“所述”意指存在一個(gè)或多個(gè)該元素。術(shù)語(yǔ)“包括”、“包含”和“具有”意指包括在內(nèi)的并且意味著可以存在除所列出元素之外的另外元素。
在不脫離本發(fā)明范圍的情況下可以在以上構(gòu)造中進(jìn)行各種改變,在以上描述或附圖中示出的所有內(nèi)容應(yīng)當(dāng)被解釋為說(shuō)明性的而沒(méi)有限制性的意義。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中用于標(biāo)識(shí)數(shù)據(jù)流中的重復(fù)內(nèi)容的方法,所述方法包括步驟為所述數(shù)據(jù)流的多個(gè)部分中的至少一個(gè)部分計(jì)算散列函數(shù);響應(yīng)于所計(jì)算的散列函數(shù)結(jié)果,增加多個(gè)計(jì)數(shù)器中的至少一個(gè)計(jì)數(shù)器,每個(gè)計(jì)數(shù)器對(duì)應(yīng)于相應(yīng)計(jì)算的散列函數(shù)結(jié)果;當(dāng)所述多個(gè)計(jì)數(shù)器中的至少一個(gè)超過(guò)計(jì)數(shù)值時(shí)標(biāo)識(shí)所述重復(fù)內(nèi)容;并且驗(yàn)證所標(biāo)識(shí)的重復(fù)內(nèi)容不是良性串。
2.如權(quán)利要求1所述的方法,其中計(jì)算所述散列函數(shù)包括為所述數(shù)據(jù)流的多個(gè)部分并行地計(jì)算多個(gè)散列函數(shù)。
3.如權(quán)利要求2所述的方法,其中所述多個(gè)計(jì)數(shù)器位于多個(gè)存儲(chǔ)體中。
4.如權(quán)利要求3所述的方法,還包括步驟當(dāng)位于相同存儲(chǔ)體中的多個(gè)計(jì)數(shù)器要在相同的時(shí)鐘周期內(nèi)被增加時(shí),確定哪個(gè)計(jì)數(shù)器被增加的優(yōu)先級(jí)。
5.如權(quán)利要求1所述的方法,還包括步驟過(guò)濾所述數(shù)據(jù)流的多個(gè)部分中的至少一個(gè)部分以去除預(yù)定的數(shù)據(jù)。
6.如權(quán)利要求1所述的方法,還包括步驟使用計(jì)數(shù)平均來(lái)周期性減小所述多個(gè)計(jì)數(shù)器中的每個(gè)。
7.如權(quán)利要求1所述的方法,還包括步驟確定所標(biāo)識(shí)的重復(fù)內(nèi)容是否為假標(biāo)識(shí)。
8.如權(quán)利要求7所述的方法,其中通過(guò)把所標(biāo)識(shí)的重復(fù)內(nèi)容與先前標(biāo)識(shí)的重復(fù)內(nèi)容相比較來(lái)確定所標(biāo)識(shí)的重復(fù)內(nèi)容是否為假標(biāo)識(shí)。
9.如權(quán)利要求8所述的方法,其中先前標(biāo)識(shí)的重復(fù)內(nèi)容被存儲(chǔ)在遠(yuǎn)離本地存儲(chǔ)器的存儲(chǔ)器中,該本地存儲(chǔ)器包括所標(biāo)識(shí)的重復(fù)內(nèi)容。
10.如權(quán)利要求1所述的方法,其中使用流水線來(lái)增加所述多個(gè)計(jì)數(shù)器中的至少一個(gè)。
11.如權(quán)利要求1所述的方法,其中所述重復(fù)內(nèi)容是蠕蟲特征碼。
12.如權(quán)利要求1所述的方法,其中所標(biāo)識(shí)的重復(fù)內(nèi)容具有非預(yù)定義的特征碼。
13.如權(quán)利要求1所述的方法,其中所述重復(fù)內(nèi)容是病毒特征碼。
14.如權(quán)利要求1所述的方法,其中所述重復(fù)內(nèi)容是垃圾郵件特征碼。
15.如權(quán)利要求1所述的方法,其中所述重復(fù)內(nèi)容是經(jīng)由網(wǎng)絡(luò)重復(fù)交換的內(nèi)容。
16.如權(quán)利要求1所述的方法,其中所述重復(fù)內(nèi)容是多個(gè)訪問(wèn)網(wǎng)站的用戶的出現(xiàn)。
17.一種用于標(biāo)識(shí)數(shù)據(jù)流中重復(fù)內(nèi)容的系統(tǒng),所述系統(tǒng)包括散列函數(shù)計(jì)算電路,用于為所述數(shù)據(jù)流的多個(gè)部分中的至少一個(gè)部分計(jì)算散列函數(shù);多個(gè)計(jì)數(shù)器,響應(yīng)于所計(jì)算的散列函數(shù)結(jié)果,增加多個(gè)計(jì)數(shù)器中的至少一個(gè)計(jì)數(shù)器,每個(gè)計(jì)數(shù)器對(duì)應(yīng)于相應(yīng)計(jì)算的散列函數(shù)結(jié)果;重復(fù)內(nèi)容標(biāo)識(shí)器,用于當(dāng)所述多個(gè)計(jì)數(shù)器中的至少一個(gè)超過(guò)計(jì)數(shù)值時(shí)標(biāo)識(shí)所述重復(fù)內(nèi)容;和驗(yàn)證器,用于驗(yàn)證所標(biāo)識(shí)的重復(fù)內(nèi)容不是良性串。
18.如權(quán)利要求17所述的系統(tǒng),其中計(jì)算所述散列函數(shù)包括為所述數(shù)據(jù)流的多個(gè)部分并行地計(jì)算多個(gè)散列函數(shù)。
19.如權(quán)利要求18所述的系統(tǒng),其中所述多個(gè)計(jì)數(shù)器位于多個(gè)存儲(chǔ)體中。
20.如權(quán)利要求19所述的系統(tǒng),包括優(yōu)先級(jí)編碼器,用于當(dāng)在相同的時(shí)鐘周期內(nèi)使位于相同存儲(chǔ)體中的多個(gè)計(jì)數(shù)器增加時(shí),確定哪個(gè)計(jì)數(shù)器被增加的優(yōu)先級(jí)。
21.如權(quán)利要求17所述的系統(tǒng),包括過(guò)濾器,用于過(guò)濾所述數(shù)據(jù)流的多個(gè)部分中的至少一個(gè)部分以去除預(yù)定的數(shù)據(jù)。
22.如權(quán)利要求17所述的系統(tǒng),其中使用計(jì)數(shù)平均來(lái)周期性減小所述多個(gè)計(jì)數(shù)器中的每個(gè)。
23.如權(quán)利要求17所述的系統(tǒng),包括分析器,用于確定所標(biāo)識(shí)的重復(fù)內(nèi)容是否為假標(biāo)識(shí)。
24.如權(quán)利要求23所述的系統(tǒng),其中通過(guò)把所標(biāo)識(shí)的重復(fù)內(nèi)容與先前標(biāo)識(shí)的重復(fù)內(nèi)容相比較來(lái)確定所標(biāo)識(shí)的重復(fù)內(nèi)容是否為假標(biāo)識(shí)。
25.如權(quán)利要求24所述的系統(tǒng),其中先前標(biāo)識(shí)的重復(fù)內(nèi)容被存儲(chǔ)在遠(yuǎn)離本地存儲(chǔ)器的存儲(chǔ)器中,該本地存儲(chǔ)器包括所標(biāo)識(shí)的重復(fù)內(nèi)容。
26.如權(quán)利要求17所述的系統(tǒng),其中使用流水線來(lái)增加所述多個(gè)計(jì)數(shù)器中的至少一個(gè)。
27.如權(quán)利要求17所述的系統(tǒng),其中所述重復(fù)內(nèi)容是蠕蟲特征碼。
28.如權(quán)利要求17所述的系統(tǒng),其中所標(biāo)識(shí)的重復(fù)內(nèi)容具有非預(yù)定義的特征碼。
29.如權(quán)利要求17所述的系統(tǒng),其中所述重復(fù)內(nèi)容是病毒特征碼。
30.如權(quán)利要求17所述的系統(tǒng),其中所述重復(fù)內(nèi)容是垃圾郵件特征碼。
31.如權(quán)利要求17所述的系統(tǒng),其中所述重復(fù)內(nèi)容是經(jīng)由網(wǎng)絡(luò)重復(fù)交換的內(nèi)容。
32.如權(quán)利要求17所述的系統(tǒng),其中所述重復(fù)內(nèi)容是多個(gè)訪問(wèn)網(wǎng)站的用戶的出現(xiàn)。
33.一種用于標(biāo)識(shí)數(shù)據(jù)流中的重復(fù)內(nèi)容的系統(tǒng),所述系統(tǒng)包括用于為所述數(shù)據(jù)流的多個(gè)部分中的至少一個(gè)部分計(jì)算散列函數(shù)的裝置,所述數(shù)據(jù)流的至少一個(gè)部分被從中去除良性字符以防止把良性串標(biāo)識(shí)為重復(fù)內(nèi)容;用于響應(yīng)于所計(jì)算的散列函數(shù)結(jié)果來(lái)增加多個(gè)計(jì)數(shù)器中的至少一個(gè)計(jì)數(shù)器的裝置,每個(gè)計(jì)數(shù)器對(duì)應(yīng)于相應(yīng)計(jì)算的散列函數(shù)結(jié)果;用于當(dāng)所述多個(gè)計(jì)數(shù)器中的至少一個(gè)超過(guò)計(jì)數(shù)值時(shí)標(biāo)識(shí)所述重復(fù)內(nèi)容的裝置;和用于驗(yàn)證所標(biāo)識(shí)的重復(fù)內(nèi)容不是良性串的裝置。
全文摘要
按照本發(fā)明的方法和系統(tǒng)用于標(biāo)識(shí)數(shù)據(jù)流中的重復(fù)內(nèi)容。為所述數(shù)據(jù)流的多個(gè)部分中的至少一個(gè)部分計(jì)算散列函數(shù)。所述數(shù)據(jù)流的至少一個(gè)部分被從中去除良性字符以防止把良性串標(biāo)識(shí)為重復(fù)內(nèi)容。響應(yīng)于所計(jì)算的散列函數(shù)結(jié)果來(lái)增加多個(gè)計(jì)數(shù)器中的至少一個(gè)計(jì)數(shù)器。每個(gè)計(jì)數(shù)器對(duì)應(yīng)于相應(yīng)計(jì)算的散列函數(shù)結(jié)果。當(dāng)所述多個(gè)計(jì)數(shù)器中的至少一個(gè)超過(guò)計(jì)數(shù)值時(shí)標(biāo)識(shí)所述重復(fù)內(nèi)容。驗(yàn)證所標(biāo)識(shí)的重復(fù)內(nèi)容不是良性串。
文檔編號(hào)G06F21/56GK101031876SQ200580033049
公開日2007年9月5日 申請(qǐng)日期2005年8月24日 優(yōu)先權(quán)日2004年8月24日
發(fā)明者巴拉斯·馬德胡蘇丹, 約翰·W·洛克伍德 申請(qǐng)人:華盛頓大學(xué)