基于狀態(tài)融合的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法
【專利摘要】本發(fā)明提供一種基于狀態(tài)融合的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法,包括以下步驟:報(bào)文格式提取與報(bào)文分類、會(huì)話抽象與初始狀態(tài)機(jī)構(gòu)建、以及基于輸出報(bào)文的狀態(tài)融合。本發(fā)明的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法采用增強(qiáng)前綴樹(shù)轉(zhuǎn)換器EPTT描述協(xié)議實(shí)體的會(huì)話過(guò)程,著眼于協(xié)議的輸出報(bào)文,對(duì)狀態(tài)機(jī)中的同類狀態(tài)進(jìn)行融合,并通過(guò)與協(xié)議實(shí)體進(jìn)行測(cè)試性交互驗(yàn)證協(xié)議狀態(tài)融合的可行性,確保了協(xié)議狀態(tài)機(jī)推斷的自動(dòng)化,提高了推斷結(jié)果的準(zhǔn)確度。
【專利說(shuō)明】基于狀態(tài)融合的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,具體而言涉及一種依據(jù)協(xié)議實(shí)體程序接收及發(fā)送的網(wǎng)絡(luò)報(bào)文,自動(dòng)化推斷相應(yīng)網(wǎng)絡(luò)協(xié)議的協(xié)議狀態(tài)機(jī)的方法。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)協(xié)議是網(wǎng)絡(luò)通信功能實(shí)現(xiàn)的支撐要素,也是網(wǎng)絡(luò)安全領(lǐng)域的重點(diǎn)研究對(duì)象。入侵檢測(cè)、模糊測(cè)試、協(xié)議重用、協(xié)議脆弱性分析等大量網(wǎng)絡(luò)安全技術(shù)都以詳盡的協(xié)議規(guī)范信息為基礎(chǔ)。
[0003]網(wǎng)絡(luò)中使用了大量缺乏描述文檔的私有協(xié)議,這使得各類依賴于信息規(guī)范的網(wǎng)絡(luò)安全技術(shù)在應(yīng)用范圍上受到極大限制。為了解決協(xié)議信息未知的問(wèn)題,研究人員開(kāi)始采用協(xié)議逆向的方法獲取未知的協(xié)議規(guī)范。協(xié)議逆向是指在不依賴于協(xié)議描述的情況下,通過(guò)對(duì)協(xié)議實(shí)體的網(wǎng)絡(luò)輸入輸出、系統(tǒng)行為和指令執(zhí)行流程進(jìn)行監(jiān)控和分析,提取網(wǎng)絡(luò)協(xié)議具體規(guī)范信息的過(guò)程。
[0004]網(wǎng)絡(luò)協(xié)議規(guī)范主要包括協(xié)議格式和協(xié)議狀態(tài)機(jī)兩部分。協(xié)議格式關(guān)注的是通信報(bào)文中各協(xié)議域的組成和結(jié)構(gòu)。協(xié)議狀態(tài)機(jī)關(guān)注的是協(xié)議系統(tǒng)中的協(xié)議狀態(tài)數(shù)量以及協(xié)議系統(tǒng)在接收不同輸入的情況下從一個(gè)協(xié)議狀態(tài)向另外一個(gè)協(xié)議狀態(tài)遷移的規(guī)則。
[0005]傳統(tǒng)的協(xié)議逆向采用人工方式,過(guò)程冗長(zhǎng)耗時(shí),準(zhǔn)確度依賴于分析人員的技術(shù)水平和實(shí)踐經(jīng)驗(yàn)。隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大和協(xié)議種類的增多,對(duì)逆向分析準(zhǔn)確度和時(shí)效性的要求越來(lái)越高,傳統(tǒng)人工方式的協(xié)議逆向分析已不能滿足實(shí)際應(yīng)用的需要。協(xié)議自動(dòng)逆向可以顯著減少人工分析,提高私有協(xié)議的分析效率,獲得了越來(lái)越多的重視。
[0006]目前大部分協(xié)議自動(dòng)逆向研究集中于協(xié)議格式的提取,分析結(jié)果中缺乏協(xié)議狀態(tài)機(jī)信息,制約了協(xié)議逆向結(jié)果的實(shí)際應(yīng)用。近年來(lái),隨著協(xié)議格式提取技術(shù)的相對(duì)成熟,一些研究人員開(kāi)始嘗試對(duì)協(xié)議狀態(tài)機(jī)進(jìn)行逆向分析。目前的協(xié)議狀態(tài)機(jī)推斷主要存在以下問(wèn)題:(1)已有的狀態(tài)融合方法(如Prospex系統(tǒng))出于簡(jiǎn)單性的考慮,針對(duì)的狀態(tài)機(jī)模型是無(wú)輸出的有限狀態(tài)機(jī)。這種有限狀態(tài)機(jī)中,只存在報(bào)文輸入,而不考慮報(bào)文輸出,忽視了協(xié)議系統(tǒng)輸入輸出報(bào)文之間的內(nèi)在聯(lián)系。協(xié)議系統(tǒng)是帶輸出的狀態(tài)遷移系統(tǒng),這種簡(jiǎn)單化的處理使得狀態(tài)融合得到的狀態(tài)機(jī)與實(shí)際協(xié)議系統(tǒng)存在較大差異。(2)為了解決樣本集不完備的問(wèn)題,在協(xié)議狀態(tài)機(jī)推斷過(guò)程中往往需要不斷產(chǎn)生新樣本,并根據(jù)新樣本是否隸屬于協(xié)議狀態(tài)機(jī),實(shí)施進(jìn)一步推斷。新樣本對(duì)于協(xié)議狀態(tài)機(jī)而言是正例還是反例,依賴于人工判定。人工判定的處理方式一方面難以保證準(zhǔn)確度,另一方面,這種處理方式自動(dòng)化程度低,制約了逆向分析的效率。
【發(fā)明內(nèi)容】
[0007]針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明旨在提供一種基于狀態(tài)融合的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法,針對(duì)未知協(xié)議的協(xié)議狀態(tài)機(jī)推斷問(wèn)題,在已有的報(bào)文協(xié)議格式推斷技術(shù)的基礎(chǔ)上,依據(jù)收集的報(bào)文樣本構(gòu)造增強(qiáng)前綴樹(shù)轉(zhuǎn)換器EPTT (Extended Prefix TreeTransducer)描述協(xié)議實(shí)體在會(huì)話過(guò)程涉及的輸入、輸出報(bào)文組成的抽象符號(hào)串,并通過(guò)與協(xié)議實(shí)體的測(cè)試性交互判定狀態(tài)融合的可行性,確保了狀態(tài)機(jī)推斷的自動(dòng)化,提高了推斷結(jié)果的準(zhǔn)確度。
[0008]為達(dá)成上述目的,本發(fā)明所采用的技術(shù)方案如下:
[0009]一種基于狀態(tài)融合的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法,包括以下步驟:
[0010](I)報(bào)文格式提取與報(bào)文分類:獲取協(xié)議實(shí)體程序相關(guān)的輸入、輸出報(bào)文的具體格式信息,并依據(jù)報(bào)文格式分別對(duì)輸入、輸出報(bào)文分類,將結(jié)構(gòu)相同的報(bào)文樣本歸為一類,以抽象符號(hào)表示分類的類別信息;
[0011](2)會(huì)話抽象與初始狀態(tài)機(jī)構(gòu)建:基于抽象符號(hào)表示的分類類別,以會(huì)話為單位,對(duì)網(wǎng)絡(luò)通信行為進(jìn)行抽象,將會(huì)話過(guò)程中的輸入輸出報(bào)文序列描述為抽象的輸入輸出符號(hào)串,進(jìn)而依據(jù)會(huì)話樣本集,構(gòu)建與輸入輸出符號(hào)串集合一致的初始狀態(tài)機(jī);
[0012](3)基于輸出報(bào)文的狀態(tài)融合:依據(jù)相似度高低對(duì)候選狀態(tài)進(jìn)行融合,并生成測(cè)試符號(hào)串,再通過(guò)自動(dòng)化的測(cè)試,比較協(xié)議實(shí)體與融合后的狀態(tài)機(jī)在接收到測(cè)試符號(hào)串后做出的輸出響應(yīng),驗(yàn)證狀態(tài)融合的可行性;
[0013](4)重復(fù)上述步驟(3)直到狀態(tài)機(jī)中不再有符合融合條件的狀態(tài);
[0014]前述會(huì)話抽象與初始狀態(tài)機(jī)構(gòu)建階段的工作流程如下:狀態(tài)機(jī)的推斷以會(huì)話樣本集為基礎(chǔ)構(gòu)建,將會(huì)話中輸入、輸出報(bào)文以其所在類別對(duì)應(yīng)的抽象符號(hào)表示,從而把完整會(huì)話的輸入輸出報(bào)文序列轉(zhuǎn)化為抽象的輸入輸出符號(hào)串;在此基礎(chǔ)上,依據(jù)會(huì)話樣本集,采用增強(qiáng)前綴樹(shù)轉(zhuǎn)換器EPTT的形式構(gòu)造初始狀態(tài)機(jī),初始狀態(tài)機(jī)中包含了所有作為會(huì)話樣本的輸入輸出符號(hào)串;
[0015]前述基于輸出報(bào)文的狀態(tài)融合階段的工作流程如下:在初始狀態(tài)機(jī)的基礎(chǔ)上,依據(jù)相似度的高低每次對(duì)兩個(gè)相似狀態(tài)進(jìn)行狀態(tài)融合,相似狀態(tài)的選擇以Blue Fringe算法為基礎(chǔ),選擇相似度最高的兩個(gè)狀態(tài)作為待融合的候選狀態(tài);候選狀態(tài)的融合是否可行,將依據(jù)生成的測(cè)試字符串進(jìn)行判定,判斷兩個(gè)候選狀態(tài)是否能夠融合,其中:測(cè)試字符串基于原始狀態(tài)機(jī)中到達(dá)兩個(gè)候選狀態(tài)的字符串前綴和字符串后綴構(gòu)建,通過(guò)交叉拼接的方式,將到達(dá)某一個(gè)候選狀態(tài)的所有字符串前綴與另外一個(gè)候選狀態(tài)的所有字符串后綴依次拼接,生成的字符串組成測(cè)試字符串集合,如果判定所有輸出字符串均與融合后的協(xié)議狀態(tài)機(jī)一致,則認(rèn)為狀態(tài)融合是可行的,否則判斷狀態(tài)融合不可行;將測(cè)試結(jié)果作為新樣本加入會(huì)話樣本集并擴(kuò)展協(xié)議狀態(tài)機(jī),并繼續(xù)嘗試對(duì)其他狀態(tài)進(jìn)行融合。
[0016]進(jìn)一步,前述方法中,在協(xié)議狀態(tài)機(jī)中選擇待融合的候選狀態(tài)時(shí),以Blue Fringe算法為基礎(chǔ),相似度的計(jì)算依據(jù)協(xié)議狀態(tài)的公共輸入字符串后綴,公共輸入字符串后綴反映協(xié)議實(shí)體在處于兩個(gè)不同協(xié)議狀態(tài)時(shí),接收到相同輸入報(bào)文時(shí)的狀態(tài)轉(zhuǎn)換和輸出響應(yīng)情況,其中:輸入字符串后綴是指協(xié)議實(shí)體從某一協(xié)議狀態(tài)開(kāi)始,接收到一系列的輸入報(bào)文,這些輸入報(bào)文在狀態(tài)機(jī)中被表示為輸入字符串后綴;公共輸入字符串后綴是指兩個(gè)不同狀態(tài)接收到相同的一系列輸入報(bào)文;相似度的計(jì)算將考慮協(xié)議狀態(tài)的公共輸入字符串后綴的長(zhǎng)短,以及對(duì)于接收到相同輸入時(shí)協(xié)議實(shí)體是否產(chǎn)生相同的輸出結(jié)果,如果兩個(gè)協(xié)議狀態(tài),它們公共輸入字符串后綴的長(zhǎng)度最長(zhǎng),且對(duì)于相同輸入有相同的輸出,這樣的兩個(gè)協(xié)議狀態(tài)將優(yōu)先嘗試融合。
[0017]進(jìn)一步,前述方法中,利用測(cè)試字符串集合進(jìn)行狀態(tài)融合與可行性判定的過(guò)程,包括以下步驟:首先依據(jù)測(cè)試字符串和已知的報(bào)文協(xié)議格式,生成作為測(cè)試用例的輸入報(bào)文序列;將輸入報(bào)文序列發(fā)向協(xié)議實(shí)體程序,獲取作為響應(yīng)的輸出報(bào)文序列;對(duì)輸出報(bào)文序列進(jìn)行抽象,將其表示為輸出字符串序列;針對(duì)候選狀態(tài)融合后的協(xié)議狀態(tài)機(jī),判斷輸出字符串序列中的輸出字符是否都存在于協(xié)議狀態(tài)機(jī)對(duì)應(yīng)狀態(tài)的輸出符號(hào)集中:如果所有輸出字符串均與融合后的協(xié)議狀態(tài)機(jī)一致,則認(rèn)為狀態(tài)融合是可行的,否則判斷狀態(tài)融合不可行。
[0018]由以上本發(fā)明的技術(shù)方案可知,本發(fā)明的有益效果在于將協(xié)議系統(tǒng)視為帶輸出的狀態(tài)遷移系統(tǒng),著眼于協(xié)議系統(tǒng)中輸入輸出報(bào)文之間的內(nèi)在聯(lián)系對(duì)協(xié)議狀態(tài)機(jī)中的狀態(tài)實(shí)施融合,通過(guò)采用增強(qiáng)前綴樹(shù)轉(zhuǎn)換器EPTT (Extended Prefix Tree Transducer)描述協(xié)議實(shí)體在會(huì)話過(guò)程涉及的輸入、輸出報(bào)文組成的抽象符號(hào)串,并通過(guò)與協(xié)議實(shí)體的測(cè)試性交互判定狀態(tài)融合的可行性,有助于確保構(gòu)建的協(xié)議狀態(tài)機(jī)與實(shí)際協(xié)議系統(tǒng)高度吻合,確保了狀態(tài)機(jī)推斷的自動(dòng)化,提高推斷結(jié)果的準(zhǔn)確度;而且針對(duì)待融合的候選狀態(tài)自動(dòng)化產(chǎn)生輔助判定的輸入樣本,進(jìn)而通過(guò)協(xié)議實(shí)體程序的自動(dòng)化運(yùn)行掌握協(xié)議實(shí)體對(duì)于輸入樣本的輸出響應(yīng),避免了人工判定的低效,提高了狀態(tài)機(jī)逆向推斷的準(zhǔn)確度和整體效率。
【專利附圖】
【附圖說(shuō)明】
[0019]圖1為本發(fā)明的自動(dòng)推斷方法的整體實(shí)現(xiàn)流程示意圖。
[0020]圖2是本發(fā)明中基于抽象字符串序列構(gòu)建EPTT狀態(tài)機(jī)的示例。
[0021]圖3是本發(fā)明中對(duì)候選狀態(tài)進(jìn)行融合的示例。
【具體實(shí)施方式】
[0022]為了更了解本發(fā)明的技術(shù)內(nèi)容,特舉具體實(shí)施例并配合【專利附圖】
【附圖說(shuō)明】如下。
[0023]如圖1所示,根據(jù)本發(fā)明的較優(yōu)實(shí)施例,基于狀態(tài)融合的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法,包括以下步驟:
[0024](I)報(bào)文格式提取與報(bào)文分類:首先大量收集輸入輸出報(bào)文序列,進(jìn)而采用現(xiàn)有的報(bào)文格式提取方法,獲取協(xié)議實(shí)體程序相關(guān)的輸入、輸出報(bào)文的具體格式信息,在此基礎(chǔ)上,依據(jù)報(bào)文格式分別對(duì)輸入、輸出報(bào)文分類,將結(jié)構(gòu)相同的報(bào)文樣本歸為一類,以抽象符號(hào)表示分類的類別信息;
[0025](2)會(huì)話抽象與初始狀態(tài)機(jī)構(gòu)建:在報(bào)文分類的基礎(chǔ)上,以會(huì)話為單位,對(duì)網(wǎng)絡(luò)通信行為進(jìn)行抽象,將會(huì)話過(guò)程中的輸入輸出報(bào)文序列描述為抽象的輸入輸出符號(hào)串,進(jìn)而依據(jù)會(huì)話樣本集,構(gòu)建與輸入輸出符號(hào)串集合一致的初始狀態(tài)機(jī);
[0026](3)基于輸出報(bào)文的狀態(tài)融合:依據(jù)相似度高低對(duì)候選狀態(tài)進(jìn)行融合,并生成測(cè)試符號(hào)串,再通過(guò)自動(dòng)化的測(cè)試,比較協(xié)議實(shí)體與融合后的狀態(tài)機(jī)在接收到測(cè)試符號(hào)串后做出的輸出響應(yīng),驗(yàn)證狀態(tài)融合的可行性;
[0027](4)重復(fù)上述步驟(3)直到狀態(tài)機(jī)中不再有符合融合條件的狀態(tài)。
[0028]其中,前述會(huì)話抽象與初始狀態(tài)機(jī)構(gòu)建階段的工作流程如下:狀態(tài)機(jī)的推斷以會(huì)話樣本集為基礎(chǔ)構(gòu)建,將會(huì)話中輸入、輸出報(bào)文以其所在類別對(duì)應(yīng)的抽象符號(hào)表示,從而把完整會(huì)話的輸入輸出報(bào)文序列轉(zhuǎn)化為抽象的輸入輸出符號(hào)串;在此基礎(chǔ)上,依據(jù)會(huì)話樣本集,采用增強(qiáng)前綴樹(shù)轉(zhuǎn)換器EPTT的形式構(gòu)造初始狀態(tài)機(jī),初始狀態(tài)機(jī)中包含了所有作為會(huì)話樣本的輸入輸出符號(hào)串;
[0029]前述基于輸出報(bào)文的狀態(tài)融合階段的工作流程如下:在初始狀態(tài)機(jī)的基礎(chǔ)上,依據(jù)相似度的高低每次對(duì)兩個(gè)相似狀態(tài)進(jìn)行狀態(tài)融合,相似狀態(tài)的選擇以Blue Fringe算法為基礎(chǔ),選擇相似度最高的兩個(gè)狀態(tài)作為待融合的候選狀態(tài);候選狀態(tài)的融合是否可行,將依據(jù)生成的測(cè)試字符串進(jìn)行判定,判斷兩個(gè)候選狀態(tài)是否能夠融合,其中:測(cè)試字符串基于原始狀態(tài)機(jī)中到達(dá)兩個(gè)候選狀態(tài)的字符串前綴和字符串后綴構(gòu)建,通過(guò)交叉拼接的方式,將到達(dá)某一個(gè)候選狀態(tài)的所有字符串前綴與另外一個(gè)候選狀態(tài)的所有字符串后綴依次拼接,生成的字符串組成測(cè)試字符串集合,如果判定所有輸出字符串均與融合后的協(xié)議狀態(tài)機(jī)一致,則認(rèn)為狀態(tài)融合是可行的,否則判斷狀態(tài)融合不可行;將測(cè)試結(jié)果作為新樣本加入會(huì)話樣本集并擴(kuò)展協(xié)議狀態(tài)機(jī),并繼續(xù)嘗試對(duì)其他狀態(tài)進(jìn)行融合。
[0030]參考圖1所示的整體實(shí)現(xiàn)流程并結(jié)合圖2、3所示,本實(shí)施例的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法包括報(bào)文格式提取與報(bào)文分類、會(huì)話抽象與初始狀態(tài)機(jī)構(gòu)建以及基于輸出報(bào)文的狀態(tài)融合三個(gè)部分,具體的實(shí)施方式以下分別說(shuō)明。
[0031 ] (I)報(bào)文格式提取與報(bào)文分類
[0032]本發(fā)明實(shí)施例首先大量收集協(xié)議實(shí)體程序網(wǎng)絡(luò)通信產(chǎn)生的輸入輸出報(bào)文序列,并采用PI項(xiàng)目(Protocol Information Pro ject)的報(bào)文格式提取方法獲取輸入輸出報(bào)文的具體格式信息。在此基礎(chǔ)上,依據(jù)報(bào)文格式分別對(duì)輸入報(bào)文和輸出報(bào)文進(jìn)行分類,如果幾個(gè)報(bào)文樣本具有相同的報(bào)文結(jié)構(gòu),則將它們歸為一類。對(duì)于每一類別,使用唯一的阿拉伯?dāng)?shù)字(如1、2、3)進(jìn)行標(biāo)識(shí)。
[0033](2)會(huì)話抽象與初始狀態(tài)機(jī)構(gòu)建
[0034]在報(bào)文分類的基礎(chǔ)上,以會(huì)話為單位,對(duì)網(wǎng)絡(luò)通信行為進(jìn)行抽象。
[0035]會(huì)話表示通信參與者之間進(jìn)行的一次完整數(shù)據(jù)交換,能夠反映在通信過(guò)程中協(xié)議狀態(tài)的遷移情況。網(wǎng)絡(luò)協(xié)議研究領(lǐng)域,已經(jīng)有不少成熟的識(shí)別網(wǎng)絡(luò)會(huì)話的方法。上層應(yīng)用使用下層協(xié)議提供的服務(wù)。如果是基于TCP協(xié)議的網(wǎng)絡(luò)應(yīng)用,一次會(huì)話往往由TCP協(xié)議的三次握手開(kāi)始,當(dāng)TCP連接中斷時(shí)停止;如果是基于UDP協(xié)議的網(wǎng)絡(luò)應(yīng)用,一次會(huì)話往往由通信的間隔時(shí)間來(lái)區(qū)分,如果通信雙方停止通信的時(shí)間超過(guò)特定時(shí)長(zhǎng),則推斷一次會(huì)話已經(jīng)完成。
[0036]在會(huì)話抽象的過(guò)程中,采用輸入和輸出報(bào)文類別代替具體的報(bào)文信息,并依據(jù)報(bào)文出現(xiàn)的時(shí)序構(gòu)建字符串序列。
[0037]例如,某一次會(huì)話被表示為字符串序列(〈1,2,5>,〈1,3,6>),其中〈1,2,5>表示輸入字符串序列,該序列中的阿拉伯?dāng)?shù)字I的意思是第一個(gè)輸入報(bào)文屬于輸入報(bào)文類別1,數(shù)字2的意思是第二個(gè)輸入報(bào)文屬于輸入報(bào)文類別2 ;〈1,3,6>表不輸出字符串序列,其中數(shù)字I的意思是第一個(gè)輸出報(bào)文屬于輸出報(bào)文類別I,數(shù)字3的意思是第二個(gè)輸出報(bào)文屬于輸出報(bào)文類別3,以此類推。該會(huì)話的含義是協(xié)議實(shí)體接收到某一個(gè)類別(輸入報(bào)文類別)為I的報(bào)文時(shí),輸出了某一個(gè)類別(輸出報(bào)文類別)為I的報(bào)文,同時(shí)進(jìn)入一個(gè)新的協(xié)議狀態(tài);在處于新的協(xié)議狀態(tài)時(shí),協(xié)議實(shí)體接收到某一個(gè)類別(輸入報(bào)文類別)為2的報(bào)文,輸出了某一個(gè)類別(輸出報(bào)文類別)為3的報(bào)文,進(jìn)入了另外一個(gè)協(xié)議狀態(tài);在此協(xié)議狀態(tài),協(xié)議實(shí)體又接收到某一個(gè)類別(輸入報(bào)文類別)為5的報(bào)文,輸出了某一個(gè)類別(輸出報(bào)文類別)為6的報(bào)文,再次進(jìn)行了狀態(tài)轉(zhuǎn)換。[0038]在將輸入輸出報(bào)文樣本進(jìn)行會(huì)話抽象,轉(zhuǎn)化為字符串序列集合后,開(kāi)始構(gòu)建初始的協(xié)議狀態(tài)機(jī)。本發(fā)明采用增強(qiáng)前綴樹(shù)轉(zhuǎn)換器EPTT的形式構(gòu)造狀態(tài)機(jī),其優(yōu)勢(shì)在于能夠準(zhǔn)確描述協(xié)議實(shí)體的狀態(tài)輸出信息,所構(gòu)造的帶輸出的協(xié)議狀態(tài)機(jī)與實(shí)際網(wǎng)絡(luò)協(xié)議情況更為貼近。
[0039]EPTT形式的協(xié)議狀態(tài)機(jī)被定義為6元組(Qe,I,0,δ Ε,λ Ε, qA ),其中Qe代表狀態(tài)集合,I代表輸入符號(hào)集合,O代表輸出符號(hào)集合,δΕ代表狀態(tài)轉(zhuǎn)移函數(shù),λΕ代表輸出函數(shù),代表初始的協(xié)議狀態(tài)。
[0040]構(gòu)造EPTT協(xié)議狀態(tài)機(jī)時(shí),依次將會(huì)話樣本加入狀態(tài)機(jī)。圖2為本發(fā)明中基于抽象字符串序列構(gòu)建EPTT狀態(tài)機(jī)的一個(gè)示例。對(duì)于某一會(huì)話的字符串序列,采用遍歷的形式,將輸入字符串序列和輸出字符串序列結(jié)合在一起分析。例如,對(duì)于圖2中第一個(gè)會(huì)話樣本,輸入字符串序列〈1,2,5>和輸出字符串序列〈1,3,6>將結(jié)合在一起同步分析,反映出輸入字符與輸出字符的對(duì)應(yīng)關(guān)系。
[0041]遍歷的過(guò)程中將基于輸入字符串序列構(gòu)造前綴符號(hào)串,描述已經(jīng)遍歷過(guò)的輸入字符。初始狀態(tài)設(shè)置為狀態(tài)0,協(xié)議狀態(tài)機(jī)由初始狀態(tài)開(kāi)始接收輸入。前綴符號(hào)串在初始時(shí)被設(shè)置為λ,表示前綴符號(hào)串目前為空。輸入字符串序列中的字符依次加入前綴符號(hào)串。如果前綴符號(hào)串所到達(dá)的狀態(tài)在原狀態(tài)機(jī)中沒(méi)有,則創(chuàng)建一個(gè)新?tīng)顟B(tài),以阿拉伯?dāng)?shù)字唯一標(biāo)識(shí)。如果相應(yīng)的狀態(tài)轉(zhuǎn)移信息在原狀態(tài)機(jī)中不存在,則擴(kuò)充狀態(tài)轉(zhuǎn)移函數(shù)和輸出函數(shù);如果原狀態(tài)機(jī)中已包含相應(yīng)的狀態(tài)轉(zhuǎn)移信息,將進(jìn)一步判斷是否需要擴(kuò)充輸出信息。
[0042]例如,對(duì)于圖2中第一個(gè)會(huì)話樣本,遍歷過(guò)程遇到的第一個(gè)輸入字符為1,形成前綴符號(hào)串λ 1,需要?jiǎng)?chuàng)建一個(gè)新的協(xié)議狀態(tài),以數(shù)字I標(biāo)識(shí)此狀態(tài)。同時(shí)擴(kuò)充狀態(tài)轉(zhuǎn)移函數(shù)(協(xié)議實(shí)體在處于狀態(tài)O時(shí),接收到輸入字符1,轉(zhuǎn)移到狀態(tài)1),以及輸出函數(shù)(協(xié)議實(shí)體在處于狀態(tài)O時(shí),接收到輸入字符1,產(chǎn)生輸出字符I)。遍歷過(guò)程遇到的第二個(gè)輸入字符為2,形成前綴符號(hào)串λ 12,創(chuàng)建一個(gè)以數(shù)字2標(biāo)識(shí)的新?tīng)顟B(tài),同時(shí)擴(kuò)充狀態(tài)轉(zhuǎn)移函數(shù)(協(xié)議實(shí)體在處于狀態(tài)I時(shí),接收到輸入字符2,轉(zhuǎn)移到狀態(tài)2),以及輸出函數(shù)(協(xié)議實(shí)體在處于狀態(tài)I時(shí),接收到輸入字符2,產(chǎn)生輸出字符3)。對(duì)于圖2中第二個(gè)會(huì)話樣本,由于涉及的狀態(tài)轉(zhuǎn)移與第一個(gè)會(huì)話樣本相同,因此不會(huì)產(chǎn)生新?tīng)顟B(tài)。但是依據(jù)第二個(gè)會(huì)話樣本,協(xié)議實(shí)體在處于狀態(tài)I時(shí)接收到輸入字符2,產(chǎn)生的輸出字符為4。該輸出信息將擴(kuò)充到原協(xié)議狀態(tài)機(jī)中,即協(xié)議實(shí)體在處于狀態(tài)I時(shí)接收到輸入字符2,產(chǎn)生的輸出字符隸屬于輸出字符集合{3,4}。
[0043]在遍歷完所有會(huì)話樣本后,將得到初始的協(xié)議狀態(tài)機(jī)。初始協(xié)議狀態(tài)機(jī)的構(gòu)建方法是將所有會(huì)話樣本直接加入,沒(méi)有進(jìn)行任何區(qū)分和甄別,因此,構(gòu)建得到的狀態(tài)機(jī)結(jié)果往往包含了大量的冗余狀態(tài),需要通過(guò)融合同類狀態(tài)的方法加以化簡(jiǎn),得到的協(xié)議狀態(tài)機(jī)才更具實(shí)用價(jià)值。
[0044](3)基于輸出報(bào)文的狀態(tài)融合
[0045]在構(gòu)建完初始狀態(tài)機(jī)以后,將依據(jù)相似度的高低,嘗試對(duì)狀態(tài)機(jī)中的相似狀態(tài)進(jìn)行狀態(tài)融合。本實(shí)施例中相似狀態(tài)的選擇以Blue Fringe算法為基礎(chǔ),但對(duì)其中相似度的計(jì)算方法進(jìn)行了改進(jìn)。評(píng)價(jià)兩個(gè)協(xié)議狀態(tài)的相似度,采用的依據(jù)是公共輸入字符串后綴。輸入字符串后綴指的是協(xié)議實(shí)體從某一協(xié)議狀態(tài)開(kāi)始,接收到一系列的輸入報(bào)文,這些輸入報(bào)文在狀態(tài)機(jī)中被表示為輸入字符串后綴。公共輸入字符串后綴中的“公共”強(qiáng)調(diào)的是兩個(gè)不同協(xié)議狀態(tài)接收到相同的一系列輸入報(bào)文。公共輸入字符串后綴能夠反映協(xié)議實(shí)體在處于兩個(gè)不同協(xié)議狀態(tài)時(shí),接收到相同輸入報(bào)文時(shí)的狀態(tài)轉(zhuǎn)換和輸出響應(yīng)情況。在對(duì)相似度進(jìn)行計(jì)算時(shí),將考慮協(xié)議狀態(tài)的公共輸入字符串后綴的長(zhǎng)短,以及對(duì)于接收到的相同輸入,協(xié)議實(shí)體是否有相同的輸出結(jié)果。如果兩個(gè)協(xié)議狀態(tài),它們公共輸入字符串后綴的長(zhǎng)度最長(zhǎng),且對(duì)于相同輸入有相同的輸出,這樣的兩個(gè)協(xié)議狀態(tài)將作為候選狀態(tài)優(yōu)先嘗試融合。
[0046]兩個(gè)候選狀態(tài)是否能夠融合,需要進(jìn)行進(jìn)一步的判定。因?yàn)閰f(xié)議狀態(tài)機(jī)是基于訓(xùn)練樣本構(gòu)建的,而訓(xùn)練樣本難以保證全面,這使得推斷產(chǎn)生的協(xié)議狀態(tài)機(jī)與真實(shí)的協(xié)議狀態(tài)機(jī)可能存在差異。為了判斷兩個(gè)候選狀態(tài)的融合是否可行,需要進(jìn)一步有針對(duì)性的生成測(cè)試字符串進(jìn)行測(cè)試,通過(guò)協(xié)議實(shí)體程序?qū)τ跍y(cè)試字符串的表現(xiàn)來(lái)肯定或者否定候選狀態(tài)的融合,從而保證推斷的協(xié)議狀態(tài)機(jī)結(jié)果與真實(shí)的協(xié)議狀態(tài)機(jī)高度吻合。
[0047]參考圖3,測(cè)試字符串基于候選狀態(tài)融合前的狀態(tài)機(jī)產(chǎn)生,主要依據(jù)是狀態(tài)機(jī)中兩個(gè)候選狀態(tài)的字符串前綴和字符串后綴。測(cè)試字符串的產(chǎn)生通過(guò)交叉拼接的方式,將到達(dá)某一個(gè)候選狀態(tài)的所有字符串前綴與另外一個(gè)候選狀態(tài)的所有字符串后綴依次拼接,生成的字符串組成測(cè)試字符串集合。例如,對(duì)于圖3中狀態(tài)融合前的狀態(tài)機(jī),狀態(tài)I和狀態(tài)3的相似度最高,將優(yōu)先嘗試融合。在構(gòu)造測(cè)試字符串時(shí),通過(guò)分析可知,狀態(tài)I的字符串前綴集合為{〈1>},狀態(tài)3的字符串前綴集合{〈1,7>}。由于字符串前綴〈1,7>包含了〈1>,在融合過(guò)程中,將著眼于狀態(tài)I的后綴集合{〈7,2,5,14>}和狀態(tài)3的后綴集合{〈2,5,14>},生成的測(cè)試字符串集合包含2個(gè)元素{〈1,2,5,14>,〈1,7,7,2,5,14>}。
[0048]利用測(cè)試字符串進(jìn)行測(cè)試的過(guò)程中,首先依據(jù)測(cè)試字符串和已知的報(bào)文協(xié)議格式,將測(cè)試字符串實(shí)例化為輸入報(bào)文序列。將輸入報(bào)文序列發(fā)向協(xié)議實(shí)體程序,獲取作為響應(yīng)的輸出報(bào)文序列。對(duì)輸出報(bào)文序列進(jìn)行抽象,將其表示為輸出字符串序列。針對(duì)候選狀態(tài)融合后的協(xié)議狀態(tài)機(jī),判斷輸出字符串序列中的輸出字符,是否都存在于協(xié)議狀態(tài)機(jī)對(duì)應(yīng)狀態(tài)的輸出符號(hào)集中。如果所有輸出字符串均與狀態(tài)機(jī)中的一致,則認(rèn)為狀態(tài)融合是可行的,否則判斷狀態(tài)融合不可行,將測(cè)試結(jié)果作為新樣本加入樣本集并擴(kuò)展協(xié)議狀態(tài)機(jī),繼續(xù)在狀態(tài)機(jī)中選擇其他候選狀態(tài)實(shí)施融合。
[0049]狀態(tài)的融合操作將反復(fù)進(jìn)行,直到狀態(tài)機(jī)中沒(méi)有可融合的狀態(tài)為止。
[0050]由以上本發(fā)明的技術(shù)方案可知,本發(fā)明的基于狀態(tài)融合的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法,在已有的報(bào)文協(xié)議格式推斷技術(shù)的基礎(chǔ)上,依據(jù)收集的報(bào)文樣本構(gòu)造增強(qiáng)前綴樹(shù)轉(zhuǎn)換器,通過(guò)對(duì)增強(qiáng)前綴樹(shù)轉(zhuǎn)換器中的同類狀態(tài)進(jìn)行融合,得到精簡(jiǎn)的協(xié)議狀態(tài)機(jī)。采用此方法需要獲得協(xié)議實(shí)體程序,并能夠根據(jù)需要運(yùn)行實(shí)體程序,向其發(fā)送特定的報(bào)文序列,并觀察相應(yīng)的報(bào)文輸出,以此作為協(xié)議狀態(tài)機(jī)推斷的基礎(chǔ)。
[0051]綜上所述,本發(fā)明的基于狀態(tài)融合的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法將協(xié)議系統(tǒng)視為帶輸出的狀態(tài)遷移系統(tǒng),著眼于協(xié)議系統(tǒng)中輸入輸出報(bào)文之間的內(nèi)在聯(lián)系對(duì)協(xié)議狀態(tài)機(jī)中的狀態(tài)實(shí)施融合,通過(guò)采用增強(qiáng)前綴樹(shù)轉(zhuǎn)換器EPTT描述協(xié)議實(shí)體在會(huì)話過(guò)程涉及的輸入、輸出報(bào)文組成的抽象符號(hào)串,并通過(guò)與協(xié)議實(shí)體的測(cè)試性交互判定狀態(tài)融合的可行性,有助于確保構(gòu)建的協(xié)議狀態(tài)機(jī)與實(shí)際協(xié)議系統(tǒng)高度吻合,確保了狀態(tài)機(jī)推斷的自動(dòng)化,提高推斷結(jié)果的準(zhǔn)確度;而且針對(duì)待融合的候選狀態(tài)自動(dòng)化產(chǎn)生輔助判定的輸入樣本,進(jìn)而通過(guò)協(xié)議實(shí)體程序的自動(dòng)化運(yùn)行掌握協(xié)議實(shí)體對(duì)于輸入樣本的輸出響應(yīng),避免了人工判定的低效,提高了狀態(tài)機(jī)逆向推斷的準(zhǔn)確度和整體效率。
[0052]雖然本發(fā)明已以較佳實(shí)施例揭露如上,然其并非用以限定本發(fā)明。本發(fā)明所屬【技術(shù)領(lǐng)域】中具有通常知識(shí)者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的更動(dòng)與潤(rùn)飾。因此,本發(fā)明的保護(hù)范圍當(dāng)視權(quán)利要求書所界定者為準(zhǔn)。
【權(quán)利要求】
1.一種基于狀態(tài)融合的協(xié)議狀態(tài)機(jī)自動(dòng)推斷方法,其特征在于,包括以下步驟: (1)報(bào)文格式提取與報(bào)文分類:獲取協(xié)議實(shí)體程序相關(guān)的輸入、輸出報(bào)文的具體格式信息,并依據(jù)報(bào)文格式分別對(duì)輸入、輸出報(bào)文分類,將結(jié)構(gòu)相同的報(bào)文樣本歸為一類,以抽象符號(hào)表示分類的類別信息; (2)會(huì)話抽象與初始狀態(tài)機(jī)構(gòu)建:基于抽象符號(hào)表示的分類類別,以會(huì)話為單位,對(duì)網(wǎng)絡(luò)通信行為進(jìn)行抽象,將會(huì)話過(guò)程中的輸入輸出報(bào)文序列描述為抽象的輸入輸出符號(hào)串,進(jìn)而依據(jù)會(huì)話樣本集,構(gòu)建與輸入輸出符號(hào)串集合一致的初始狀態(tài)機(jī); (3)基于輸出報(bào)文的狀態(tài)融合:依據(jù)相似度高低對(duì)候選狀態(tài)進(jìn)行融合,并生成測(cè)試符號(hào)串,再通過(guò)自動(dòng)化的測(cè)試,比較協(xié)議實(shí)體與融合后的狀態(tài)機(jī)在接收到測(cè)試符號(hào)串后做出的輸出響應(yīng),驗(yàn)證狀態(tài)融合的可行性; (4)重復(fù)上述步驟(3)直到狀態(tài)機(jī)中不再有符合融合條件的狀態(tài); 前述會(huì)話抽象與初始狀態(tài)機(jī)構(gòu)建階段的工作流程如下:狀態(tài)機(jī)的推斷以會(huì)話樣本集為基礎(chǔ)構(gòu)建,將會(huì)話 中輸入、輸出報(bào)文以其所在類別對(duì)應(yīng)的抽象符號(hào)表示,從而把完整會(huì)話的輸入輸出報(bào)文序列轉(zhuǎn)化為抽象的輸入輸出符號(hào)串;在此基礎(chǔ)上,依據(jù)會(huì)話樣本集,采用增強(qiáng)前綴樹(shù)轉(zhuǎn)換器EPTT的形式構(gòu)造初始狀態(tài)機(jī),初始狀態(tài)機(jī)中包含了所有作為會(huì)話樣本的輸入輸出符號(hào)串; 前述基于輸出報(bào)文的狀態(tài)融合階段的工作流程如下:在初始狀態(tài)機(jī)的基礎(chǔ)上,依據(jù)相似度的高低每次對(duì)兩個(gè)相似狀態(tài)進(jìn)行狀態(tài)融合,相似狀態(tài)的選擇以Blue Fringe算法為基礎(chǔ),選擇相似度最高的兩個(gè)狀態(tài)作為待融合的候選狀態(tài);候選狀態(tài)的融合是否可行,將依據(jù)生成的測(cè)試字符串進(jìn)行判定,判斷兩個(gè)候選狀態(tài)是否能夠融合,其中:測(cè)試字符串基于原始狀態(tài)機(jī)中到達(dá)兩個(gè)候選狀態(tài)的字符串前綴和字符串后綴構(gòu)建,通過(guò)交叉拼接的方式,將到達(dá)某一個(gè)候選狀態(tài)的所有字符串前綴與另外一個(gè)候選狀態(tài)的所有字符串后綴依次拼接,生成的字符串組成測(cè)試字符串集合,如果判定所有輸出字符串均與融合后的協(xié)議狀態(tài)機(jī)一致,則認(rèn)為狀態(tài)融合是可行的,否則判斷狀態(tài)融合不可行;將測(cè)試結(jié)果作為新樣本加入會(huì)話樣本集并擴(kuò)展協(xié)議狀態(tài)機(jī),并繼續(xù)嘗試對(duì)其他狀態(tài)進(jìn)行融合。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,前述方法中,在協(xié)議狀態(tài)機(jī)中選擇待融合的候選狀態(tài)時(shí),以Blue Fringe算法為基礎(chǔ),相似度的計(jì)算依據(jù)協(xié)議狀態(tài)的公共輸入字符串后綴,公共輸入字符串后綴反映協(xié)議實(shí)體在處于兩個(gè)不同協(xié)議狀態(tài)時(shí),接收到相同輸入報(bào)文時(shí)的狀態(tài)轉(zhuǎn)換和輸出響應(yīng)情況,其中:輸入字符串后綴是指協(xié)議實(shí)體從某一協(xié)議狀態(tài)開(kāi)始,接收到一系列的輸入報(bào)文,這些輸入報(bào)文在狀態(tài)機(jī)中被表不為輸入字符串后綴;公共輸入字符串后綴是指兩個(gè)不同狀態(tài)接收到相同的一系列輸入報(bào)文;相似度的計(jì)算將考慮協(xié)議狀態(tài)的公共輸入字符串后綴的長(zhǎng)短,以及對(duì)于接收到相同輸入時(shí)協(xié)議實(shí)體是否產(chǎn)生相同的輸出結(jié)果,如果兩個(gè)協(xié)議狀態(tài),它們公共輸入字符串后綴的長(zhǎng)度最長(zhǎng),且對(duì)于相同輸入有相同的輸出,這樣的兩個(gè)協(xié)議狀態(tài)將優(yōu)先嘗試融合。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,前述方法中,利用測(cè)試字符串集合進(jìn)行狀態(tài)融合與可行性判定的過(guò)程,包括以下步驟:首先依據(jù)測(cè)試字符串和已知的報(bào)文協(xié)議格式,生成作為測(cè)試用例的輸入報(bào)文序列;將輸入報(bào)文序列發(fā)向協(xié)議實(shí)體程序,獲取作為響應(yīng)的輸出報(bào)文序列;對(duì)輸出報(bào)文序列進(jìn)行抽象,將其表不為輸出字符串序列;針對(duì)候選狀態(tài)融合后的協(xié)議狀態(tài)機(jī),判斷輸出字符串序列中的輸出字符是否都存在于協(xié)議狀態(tài)機(jī)對(duì)應(yīng)狀態(tài)的輸出符號(hào)集中:如果所有輸出字符串均與融合后的協(xié)議狀態(tài)機(jī)一致,則認(rèn)為狀態(tài)融合是可行的,否則判斷狀態(tài)融合 不可行。
【文檔編號(hào)】H04L29/06GK103441990SQ201310348136
【公開(kāi)日】2013年12月11日 申請(qǐng)日期:2013年8月9日 優(yōu)先權(quán)日:2013年8月9日
【發(fā)明者】洪征, 吳禮發(fā), 鄭成輝, 潘璠, 賴海光, 李華波, 周振吉 申請(qǐng)人:中國(guó)人民解放軍理工大學(xué)