摘要:將基于案例推理(CBR)技術與XML結合,提出了基于XML的案例表示方法,給出了DTD定義,分析了它與傳統數據庫相比的優勢,并以Snort規則的基于XML的案例化為例,證明了該方法的有效性。所做工作為CBR的研究提供了一些新的思路。
關鍵詞:基于案例的推理; 可擴展標記語言; 案例表示; Snort
中圖分類號:TP311.13文獻標志碼:A
文章編號:1001-3695(2007)11-0070-04
0引言
基于案例的推理[1,2]是20世紀90年代初人工智能領域新崛起的一種基于知識進行問題求解的學習方法。它是通過檢索案例庫中與當前問題相類似的案例,經過修改,為當前問題提供解的一種推理模式。由于CBR的思想較好地模仿了人類解決問題和不斷學習的方式,大大提高了問題求解的效率。在出現不到三十年的時間里,CBR方法在工業的自動糾錯系統、商業的銷售系統、輔助醫療系統、綜合評判和決策領域中已得到了廣泛的應用。
XML是互聯網聯合組織(W3C)創建的一組規范。它并不是一個獨立的、預定義的標記語言,使用者可以定義無窮無盡的標記來描述文件中的任何數據元素,從而突破了HTML固定標記集合的約束。良好的數據存儲格式、可擴展性、高度結構化和便于網絡傳輸等特點使XML成為了新一代的Web語言。
隨著應用的不斷深入,案例的結構越來越復雜,內容也更加抽象。非結構化已經成為實際應用的案例中普遍存在的性質。為了解決復雜的非結構化案例的表示、檢索與推理,推動CBR廣泛深入的應用,本文充分利用XML技術在對象描述與可計算性等方面的優勢,將CBR技術與XML結合在一起,提出了基于XML的案例表示方法。
1基于XML的案例表示和案例庫構造
1.1案例表示和案例庫構造概述
一個智能系統的智能性很大程度上取決于知識的數量及其可用度,要用計算機模擬人類智能,就必須把所需要的知識以適當的形式表示出來并存放到計算機中。基于案例的推理首先要研究的是怎樣把過去解決問題的實例以案例的形式表示,以便存儲在案例庫中[3]。這就是案例表示和案例庫構造的任務。
案例表示實際上就是對知識的一種描述,即用一些約定的符號把知識編碼成一組計算機可以接受的數據結構[4]。同一案例可以有不同的表示形式,而不同的表示形式產生的效果又可能不一樣。合理的案例表示可以使問題求解變得更加容易、高效;反之,則會導致問題求解的麻煩和低效。從問題求解的角度來看,案例應該包含對問題的整體情況的描述,還應該包含對問題的解或解決方法的描述。所以一個典型的案例一般可以用一個有序對〈問題的描述,解的描述〉來表示。案例庫可表示為
1.2基于XML的案例表示和案例庫構造
1.2.1基于XML的案例組成
XML是一組用來創建描述數據的語法標簽的規則集。一個XML元素是由開始標簽、結束標簽以及標簽之間的數據構成的。開始和結束標簽用來描述標簽之間的數據。XML文檔是文本的形式,使用標志和屬性來描述數據的性質,采用樹型結構。XML面向數據,用于描述數據本身的性質與結構,能夠同時描述數據之間的關系還能夠存儲數據。這就使得以XML為基礎建立帶有半結構化數據的案例庫成為可能。以XML規范為基礎的案例結構設計可以比數據庫中表的設計更加精細,并能以數據存儲結構反映案例的物理結構。XML文檔的樹型結構正與案例庫結構中的分層次多子系統的結構相適應。XML文檔中的節點自定義功能則有助于建立新的案例描述和功能。
基于XML表示的案例包含兩個主要文件[5]:一個用來描述研究領域的案例結構;另一個描述案例本身。圖1反映了基于XML描述的案例的組成。
1.2.2基于XML的案例化方法
鑒于CBR方法常用于增強基于規則的系統的搜索和推理能力,而且在這種應用場合,通常以已有的規則集為基礎來構造CBR的案例庫。因此,本文重點研究對規則進行基于XML的案例化的方法。由于已有的規則通常以特定的語言或預處理語言為表現形式,只需精確匹配而對組成規則的特征不作嚴格篩選;相反,CBR的相似匹配則需要精簡用于匹配的特征以提高搜索效率和匹配準確率。對規則進行基于XML的案例化的過程應該包括圖2所示的步驟。
圖2由規則構造案例庫的步驟
規則分析和特征抽取是對規則進行分析,抽取其主要的共同特征,以便基于這些共同特征來將規則轉換為非結構化的案例。案例結構定義是用來描述研究領域的案例結構,一般采用DTD(document type definition)或XML schema模式定義語言,它們不僅可以定義XML 文檔的結構而且還允許約束文檔的內容;采用XML表示案例是將案例用XML語言描述并存儲,以構成案例庫。
本文采用DTD來描述案例的結構,一個DTD列舉了在一個文檔中出現的不同元素和屬性,以及它們使用的上下文環境;同時它還可以列舉一個文檔不能包括的元素。對規則集進行基于XML的案例化的DTD文件如下:
〈!ELEMENT casevector (case+)〉
〈!ELEMENT case (caseid, requiredfeature+, optionalfeature*, solution)〉
〈!ELEMENT caseid (#PCDATA)〉
〈!ELEMENT requiredfeature (r_featurename, featurevalue)+〉
〈!ELEMENT r_featurename (#PCDATA)〉
〈!ELEMENT optionalfeature (o_featurename,featurevalue)+〉
〈!ELEMENT o_featurename (#PCDATA)〉
〈!ELEMENT featurevalue (#PCDATA)〉
〈!ELEMENT solution(type, message)〉
〈!ELEMENTtype (#PCDATA)〉
〈!ELEMENTmessage (#PCDATA)〉
一個基于規則集的案例庫(casevector)由多個案例(case)組成;每個case由四個子元素組成,分別是案例序號(caseid)、必備特征(requiredfeature)、可選特征(optionalfeature)和解決方案(solution);r_featurename和featurevalue分別表示特征名和特征值。
描述案例本身的XML文檔包括以下內容:
a)案例類別。對案例進行分類的目的是有效地組織案例庫中的案例,方便索引和檢索。
b)案例特征。可分為必備特征和可選特征。必備特征是在推理過程中起重要作用的,與決策結果有因果關系的特征;可選特征的作用是更加全面地描述并區分不同的案例。
c)案例結果。案例對應的處理方法或結論。
1.3與傳統數據庫相比的優勢
與傳統的數據庫相比,XML 文件數據庫具有更好的可重用性和可擴展性[6]。具體表現為:
a)案例存儲相對獨立。 在XML 文件數據庫中每個案例文件對應于一個案例,相當于傳統數據庫中數據表中的一條記錄。但與傳統數據庫不同,案例文件獨立存儲于XML 文件中,一個案例文件的破壞不會影響整個數據庫。
b)案例結構可靈活定義。傳統數據庫一旦建立,用戶就只能基于已有的表結構輸入案例,不能適應不同用戶的不同問題描述需求。基于XML的案例表示和案例庫構造方法允許用戶定義全新的案例文件結構,建立符合自己問題描述的案例并構造立案例庫。
c)案例信息更加豐富與完整。傳統數據庫中,每一個記錄對應于一個案例。采用數據表中的數據列存儲案例信息,只能反映案例的一些基本指標信息;每個數據列相對獨立,不能反映案例與其子部件之間在結構上的隸屬關系,也不支持多級子部件的描述。采用XML 文件存儲案例,可完整反映案例與其子部件間的隸屬關系及結構相關性[6]。
CBR系統采用XML語言描述案例還有如下優勢:(a)由于XML可以充當不同數據源之間交換數據的媒介,可以用來解決同一領域不同CBR系統的案例資源共享問題,從而可以實現分布式的案例存儲與檢索。
(b)XML的處理過程與數據分離的特點,使案例只成為一種數據描述形式。案例也可以被其他XML應用程序所處理,從而易于實現CBR系統與其他應用系統之間的信息流重組。
2Snort規則基于XML的案例化
Snort是最著名的開放源代碼的輕量級入侵檢測系統。它的檢測是基于規則的,因此存在一些局限,如果攻擊模式很常見或過于特殊,就會產生很多誤報或漏報,使得入侵檢測的準確率不夠高。研究表明,將CBR方法運用于IDS既可以精確匹配,也可以模糊匹配。這樣可以有效地對付那些依靠偏離匹配規則而躲過IDS檢測的攻擊[7,8]。
Snort提供的規則集是豐富和龐大的,Snort中大多數用于入侵檢測的規則都可以描述為案例,由這些案例可以組成案例庫。這為規則的案例化和構造案例庫提供了方便;同時也為提高案例推理的準確性提供了基礎。因此,本文以Snort規則的基于XML的案例化為例,進一步描述基于XML的案例表示和案例庫構造方法。
通過對大量Snort規則的研究,轉換為案例的必備特征,包括協議名(protocol)、目的端口號(destinationport);可選特征包括目的主機數(dhost)、目的端口數(dport)、時間間隔(time)、同一字符在負載中的個數(schar)、相連字符在負載中的個數(cchar)、緩存占有量(memory)、字符串匹配(content);解決方案包括動作類型(actiontype)、攻擊名稱(attackmessage)。
2.1適合Snort的案例表示的DTD定義
Snort規則基于XML案例化的結構文件snortcase.dtd如下。它列舉了案例所包括的元素、屬性及一些必要的限制條件。
〈!ELEMENT SnortCaseVector (snortcase+) 〉
〈!ELEMENT snortcase (caseid, requiredfeature+, optionalfeature*, solution)〉
〈!ELEMENT caseid (#PCDATA) 〉
〈!ELEMENT requiredfeature (r_featurename, featurevalue) +〉
〈!ELEMENTr_featurename ( protocol|destinationport) 〉
〈!ELEMENT optionalfeature (o_featurename, featurevalue)+〉
〈!ELEMENT o_featurename(dhost|dport|time|schar|cchar|memory|content)〉
〈!ELEMENT featurevalue (#PCDATA)〉
〈!ELEMENT solution(actiontype,attackmessage)〉
〈!ELEMENT actiontype (#PCDATA)〉
〈!ELEMENT attackmessage (#PCDATA)〉
2.2Snort規則基于XML的案例表示
確定了案例結構文件snortcase.dtd之后,所有Snort案例都必須遵循該文件定義的約束。下面是是實驗中使用的三條Snort規則及其相應的XML文件snortcases.xml。
1)端口掃描(port scan attack)
它與正常連接的區別表現在目的主機數、目的端口數、發包頻率這三個特征值的組合上。Snort使用了PORTSCAN2這樣一個預處理器。在預處理器中定義了
PORTSCAN2: target_limit 5 port_limit 20 timeout60的規則。
該規則的含義是在60 s的間隔內,如果一臺主機向五臺主機的20個端口建立連接,就認為是端口掃描,預處理器就會報警。
2)針對IMAP服務的login緩沖區溢出攻擊(IMAP login buffer overflow attempt)
檢測這個攻擊的簡單規則是
alert tcp any any -> any 143 (content:\"LOGIN\";msg:\"IMAP Login buffer overflow attempt\")
3)拒絕服務攻擊(基于分片)(DoS attack(based on fragment))
frag2預處理是Snort對付IP分片攻擊的武器,主要有可持續時間(timeout)和緩存容量(memcap)兩個選項:timeout設置了分片可以持續的時間,默認值是60 s;memcap限制了可使用的緩存大小,默認值是4 MB。
基于XML表示的案例文件snortcases.xml如下:
〈?xml version=\"1.0\" encoding=\"GB2312\"?〉
〈SnortCaseVector〉
〈snortcase〉
〈caseid〉1〈/caseid〉
〈requiredfeature 〉
〈r_featurename〉protocol〈/r_featurename〉
〈featurevalue〉TCP〈/featurevalue〉
〈r_featurename〉 destinationport 〈/r_featurename〉
〈featurevalue〉ANY〈/featurevalue〉
〈/requiredfeature〉
〈optionalfeature 〉
〈o_featurename〉dhost〈/o_featurename〉
〈featurevalue〉5〈/featurevalue〉
〈o_featurename〉dport〈/o_featurename〉
〈featurevalue〉20〈/featurevalue〉
〈o_featurename〉time〈/o_featurename〉
〈featurevalue〉60〈/featurevalue〉
〈/optionalfeature〉
〈solution〉
〈actiontype〉alert〈/actiontype〉
〈message〉 Port Scan Attack〈/message〉
〈/solution〉
〈/snortcase〉
〈snortcase〉
〈caseid〉2〈/caseid〉
〈requiredfeature 〉
〈r_featurename〉protocol〈/r_featurename〉
〈featurevalue〉TCP〈/featurevalue〉
〈r_featurename〉 destinationport 〈/r_featurename〉
〈featurevalue〉143〈/featurevalue〉
〈/requiredfeature〉
〈optionalfeature 〉
〈o_featurename〉 content〈/o_featurename〉
〈featurevalue〉\"LOGIN\"〈/featurevalue〉
〈/optionalfeature〉
〈solution〉
〈actiontype〉alert〈/actiontype〉
〈message〉 IMAP Login buffer overflow attempt〈/message〉
〈/solution〉
〈/snortcase〉
〈snortcase〉
〈caseid〉3〈/caseid〉
〈requiredfeature 〉
〈r_featurename〉 protocol 〈/r_featurename〉
〈featurevalue〉IP〈/featurevalue〉
〈r_featurename〉 destinationport 〈/r_featurename〉
〈featurevalue〉ANY〈/featurevalue〉
〈/requiredfeature〉
〈optionalfeature 〉
〈o_featurename〉 time 〈/o_featurename〉
〈featurevalue〉60〈/featurevalue〉
〈o_featurename〉memory 〈/o_featurename〉
〈featurevalue〉4〈/featurevalue〉
〈/optionalfeature〉
〈solution〉
〈actiontype〉alert〈/actiontype〉
〈message〉 DoS Attack(Based On Fragment) 〈/message〉
〈/solution〉
〈/snortcase〉
〈/SnortCaseVector〉
瀏覽器下的樹型結構如下:
〈?xml version=\"1.0\" encoding=\"GB2312\"?〉
-〈SnortCaseVactor〉
-〈snortcase〉
〈caseid〉1〈/caseid〉
-〈requiredfeature〉
〈r_featurename〉protocol〈/r_featurename〉
〈featurevalue〉TCP〈/featurevalue〉
〈r_featurename〉destinatlonport〈/r_featurename〉
〈reaturevalue〉ANY〈/featurevalue〉
〈/reuiredfeature〉
-〈optionalfeature〉
〈o_featurename〉dhost〈/o_featurename〉
〈featurevalue〉5〈/featurevalue〉
〈o_featurename〉dport〈/o_featurename〉
〈featurevalue〉20〈/featurevalue〉
〈o_featurename〉time〈/o_featurename〉
〈featurevalue〉60〈/featurevalue〉
〈/optionalfeature〉
-〈solution〉
-〈snortcase〉
〈caseid〉2〈/caseid〉
+〈requiredfeature〉
+〈optionalfeature〉
+〈snortcase〉
+〈snortcase〉
〈/SnortCaseVactor〉
Snort規則轉換成的案例由不同的特征組成,是非結構化的。采用XML語言表示不僅簡單、靈活、易于理解,而且能很好地反映復雜的層次型結構知識;它以文本形式存儲,能獨立于應用程序存在。
3結束語
案例表示是CBR方法中的關鍵性技術,CBR方法的成功與否很大程度上取決于其案例庫,只有合理表示的案例才能使得CBR方法正確推理。本文以拓展CBR方法的研究和應用為目標,對基于XML語言的案例表示和案例庫構造方法作了研究,提出了對規則進行基于XML的案例化的具體方法,分析了基于XML的案例表示方法較之傳統數據庫形式的優勢,并通過將之應用于Snort規則的案例化,證明了所提出的方法的有效性。
參考文獻:
[1]WATSON I. CBR is a methodology not a technology[J]. TheKnowledge Based Systems Journal,1999,12(5-6):303-308.
[2]LEAKE D B.Case-based reasoning: experiences, lessons and future directions[M]. 2nd ed.Cambridge: AAAI Press/ MIT Press, 2000:420.
[3]陳文偉,黃金才.數據倉庫與數據挖掘[M].北京:人民郵電出版社, 2004:204-210.
[4]劉芳,姚莉,王長纓,等.基于語義Web的案例表示和CBR系統結構研究[J]. 計算機應用,2004, 24(1):17-19.
[5]HAYES C,CUNNINGHAM P. Shaping a CBR view with XML[C]//Proc of the 3rd International Conference on Case-based Reasoning, ICCBR’99. Seeon Monastery:[s.n.], 1999: 468-481.
[6]周凱波,金斌,馮珊.一種分布式CBR工具研究與設計[J]. 華中科技大學學報:自然科學版,2005,33(9):33-35.
[7]李玲娟. 基于數據挖掘的Snort增強模型的研究[J]. 南京郵電學院學報,2004,24(4):1-5.
[8]李玲娟,王汝傳. 基于規則的IDS中CBR的研究[J]. 計算機科學,2006,33(5):117-120.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”