朱 健,盧秉亮,張春宇
(1.沈陽航空職業技術學院,沈陽110034;2.沈陽航空航天大學計算機學院,沈陽110136;3.中國電子科技集團公司第四十七研究所,沈陽110032)
隨著Internet的迅速發展和用戶對網絡信息安全需求的不斷增加,信息過濾以及相關技術取得了很大進展。Denning于1982年提出了“信息過濾”[1]的概念,利用“內容過濾器”對實時的電子郵件進行信息過濾。1987年,Malone等人研制了基于內容過濾(Content-based Filtering)的“Information Lens”[1]。上世紀八十年代末,由美國 DARPA(高級研究計劃局)資助的“Message Understanding Engineer”[3]極大地推動了信息過濾技術的發展。在我國,清華大學的曾春等根據不同用戶的興趣不同及多樣性的特點,提出了基于內容的個性化搜索算法[4],田范江等人從用戶要求的不同角度出發完善算法,不斷提高信息過濾的質量和速度[5]。
網絡上的內容信息是以數據包(Packet)進行傳送的。每個包都有一個源IP地址和一個目的IP地址,包過濾可以通過檢查數據包的IP地址來過濾信息內容。但IP地址和內容并不是一一對應關系,往往會對合法內容造成誤判,不能滿足基于內容安全的保護需求,需要采用內容過濾技術。
內容過濾是對應用層內容協議中所傳輸的信息內容進行分析,并根據預先設置的過濾條件,控制信息的下一步傳送方向。內容過濾主要有兩種實現形式:白名單(White List)也稱為包含過濾 (Inclusion Filtering),只有在此名單中的信息才能被訪問,具有較高的安全性,但“白名單”數據量大,在進行關鍵字匹配時需要較多的時間,影響了網絡速度,同時也增大了維護的代價。“黑名單”(Black List)也稱為排除過濾(Exclusion Filtering),是目前比較常用的過濾策略,其思想是將影響到網絡安全的信息加入黑名單,使其不能被其他網絡用戶訪問,對于那些不在黑名單中的信息都可以被訪問到。很明顯,這個黑名單將小得多,但需要對黑名單不斷更新以保證其安全性。
關鍵字過濾就是對信息的內容進行關鍵字匹配,通常用黑名單來實現。只要站點包含有與關鍵字相匹配的信息,它就會被禁止訪問。
IP和URL數據庫過濾是根據用戶的需求把用戶認為有問題、有危險性的IP地址或URL進行控制,一旦發現有該IP地址或URL的網頁則立即將其過濾掉。因為URL對應的是具體的網頁而不是網頁所在的服務器,克服了傳統包過濾的缺點,大大提高了過濾的準確性。
網絡信息過濾系統必須要保證眾多用戶同時與互聯網聯網時的速度和質量,為保證信息過濾的準確性和高效性,系統采用分級匹配過濾的策略,在保留IP地址、URL和關鍵字過濾的基礎上,增加內容分析過濾。其過濾的過程如圖1所示。
首先建立信息關鍵字數據庫、非法網頁的IP數據庫和URL數據庫,當信息進入到過濾系統所在的服務器緩存中時,系統首先將此信息與服務器中IP、URL數據庫、關鍵字數據庫進行比對。如果與關鍵字數據庫中的關鍵字相同或網頁的IP、URL與數據庫中的某IP、URL相同時,系統就會屏蔽這個信息,這樣就免除了重復過濾,緩解了系統壓力,提高了響應速度。

圖1 系統主要過程圖
應用層的內容過濾與網絡端口處理相比,要求大量的計算資源,如果在網絡邊緣對內容進行處理,帶來的問題是必然導致性能下降。為了能夠對應用層數據進行內容過濾,突破內容處理障礙,達到實時分析網絡內容和行為,首先需要識別應用層協議類型,然后針對不同的協議給出相應的具體處理方法。一般的協議類型識別方法是利用RFC規定的協議默認端口來判斷協議的類型,然而這種方法的準確性并不高,系統通過增加對后續數據報文內容的分析來綜合判斷協議類型。
相對于網絡層的協議而言,應用層的協議沒有統一的表示來表明協議的類型,除了少數協議,如DNS和SMTP協議可以通過TCP連接的目的端口判定以外,其他的協議均可以變換連接端口,比如HTTP協議默認使用80端口,但是實際應用中,也可以采用1080、8080等其他端口。因此,對于應用層協議的判定要通過對數據內容進行分析來進行協議識別,如圖2所示,每個數據報文按自上而下的順序依次傳遞給處理子程序進行網絡協議識別并進行相應的處理。
當捕獲到一個TCP連接的建立信息時,系統將這個連接建立的信息提交所有的TCP協議處理子程序進行處理。所有的子程序都必須對當前連接的內容進行處理,判定當前連接的類型是否是自己所能處理的協議。如果不是,則通知系統放棄當前連接的處理權,如果子程序識別出當前連接的協議和其所能處理的協議吻合,則通知系統獲得對當前連接的處理控制權。對于那些根據當前信息還不能進行有效判斷的連接,則通知系統等待更多的數據到來以完成有效的判斷,直到找到當前連接的處理子程序或者所有的處理子程序均放棄對當前連接的處理權為止。

圖2 TCP報文識別
對于經過關鍵字過濾和IP、URL過濾后仍無法確認該信息是否合法,則繼續進行基于文本內容的過濾,即將被測文本分詞與分詞字典進行匹配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞)。
系統采用KNN(K-Nearest Neighbor)這樣一種基于統計的模式識別算法,其基本思想是:在給定新文本后,考慮在訓練文本集中與該文本距離最近(最相似)的K篇文本,根據這K篇文本所屬的類別來判斷新文本所屬的類別。也就是說,把每一篇文本都看作是一個N維向量,計算新文本與這K篇文本之間的距離,通過這些距離和K篇文本所屬的類別來確定新文本的類別。具體的算法步驟如下:
1)根據特征項集合重新描述訓練文本向量。
2)當出現一個新文本后,對新文本進行分詞處理,分詞的依據是使用特征詞,進而確定新文本的向量表示。即使用向量空間模型,文本用向量表示。
3)在訓練文本集中選出與新文本最相似的K篇文檔,計算文本相似度,可轉換為兩個文本向量的夾角余弦值。給定文本 di(di1,di2,…din)和dj(dj1,dj2,…djn)的相似度計算公式為:

4)在新文本的K個鄰居中,依次計算權重,計算公式為:

其中,x為新文本的特征向量,sim(x,d)為相似度計算公式,Y(di,Cj)為類別屬性函數,如果di屬于類Cj,那么函數值為1,否則為0。
5)對類的權重進行比較,將文本分到權重最大的那個類別中。
在具體操作中,按照掃描方向的不同,串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長度優先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;系統采取雙向最大匹配分詞策略[6],如果兩者切分結果相同,說明沒有歧義,直接輸出分詞結果。如果不一致,則輸出最短路徑的那個結果,如果長度相同,則選擇少的那一組切分作為結果。如果單字也相同,則選擇正向分詞作為結果。
內容過濾服務器端使用Win2003 server操作系統,利用Winpcap進行抓包。測試方案從Internet上整理600份網頁作為測試庫,其中,正常網頁、非法網頁各300份。利用開發出的系統對這600份網頁進行過濾,以測試該過濾系統的性能。
英國學者克里維頓(C.M.Cleverdon)首次將查全率(Recall)和查準率(Precision)[7]作為信息檢索和過濾系統效率的評價指標以后,這兩個指標就一直成為對信息系統進行評價和試驗的重要指標。查全率指系統在實施某一檢索作業時,檢出相關文獻的能力;查準率指系統在實施某一檢索作業時,拒絕不相關文獻的能力,分別用公式(3)和公式(4)表示。

文獻[8]使用了另外一種評價指標,如公式(5)所示。

對于這三個評價指標,可以得到相應的測試結果,如表1所示。

表1 測試結果表
由測試結果可以看出,查全率達到85%以上,準確率達到87%以上,F1的值達到了86.671%(一般情況下要求F1的值達到75%以上),此方案的過濾效果比較理想。
系統利用Winpcap對進出網絡的信息進行數據包的抓取,采用分階段過濾策略,通過對查準率和查全率的測試,實驗結果表明過濾效果比較理想。由于在一個報文的匹配中,最為耗時的匹配運算是在報文中匹配多個串,為了提高響應速度,可以考慮引入AC算法、WM算法等多模匹配算法。
[1] 劉輝.網頁信息過濾系統的研究與設計[D].江蘇:蘇州大學,2009.
[2] 黃曉明,夏明春.網絡信息過濾的成本效益分析[J].情報科學,2003,21(11):1129-1132.
[3] Lynette Hirschman.Comparing MUCK- Ⅱ and MUC-3:Assessing the difficulty of different tasks[C].Proceedings of the 3rd Conference(MUC-3).DARPA,Morgan Kaufmann,1991:25-30.
[4] 曾春,刑春曉,周立柱.基于內容過濾的個性化搜索算法[J].軟件學報,2003 14(5):999-1004.
[5] 田范江,李叢蓉,王鼎興.進化式信息過濾方法研究[J].軟件學報,2000,11(3):328-333.
[6] 馮是聰.搜索引擎個性化查詢服務研究[J].計算機應用,2002(3):45-50.
[7] Thorsten Joachims.Text Categorization with Support Vector Machines:Learning with Many Relevant Features[C].The 10th European Conference on Learning(ECML),1998.
[8] 賈美娟,李娟.基于分級匹配的信息過濾研究[J].大慶師范學院學報,2007,27(5):14-17.