徐旭東,張志祥,張 獻(xiàn)
海軍工程大學(xué) 電子工程學(xué)院,武漢430033
協(xié)議逆向工程[1]是對(duì)未知協(xié)議的報(bào)文數(shù)據(jù)或處理這些報(bào)文的指令序列進(jìn)行分析,以獲取該協(xié)議的格式規(guī)范、報(bào)文語義或行為規(guī)范。協(xié)議逆向工程在漏洞挖掘[2]、入侵檢測(cè)[3]等領(lǐng)域有重要作用。
在網(wǎng)絡(luò)環(huán)境下,通常存在多種協(xié)議所生成的報(bào)文數(shù)據(jù),而不僅僅是單一的報(bào)文數(shù)據(jù),而協(xié)議逆向工程在如此多種的協(xié)議報(bào)文數(shù)據(jù)下是不利于開展的,因此在進(jìn)行協(xié)議逆向工作之前需要對(duì)報(bào)文數(shù)據(jù)進(jìn)行聚類,以便對(duì)同一類的報(bào)文數(shù)據(jù)進(jìn)行處理。報(bào)文聚類算法針對(duì)的協(xié)議主要有文本類協(xié)議[4]和二進(jìn)制協(xié)議[5],文本類協(xié)議目前有比較成熟的解決方案,如PI[6]和Discover[7]以及之后的改進(jìn)方案。
對(duì)于二進(jìn)制協(xié)議,從數(shù)據(jù)預(yù)處理和聚類方法兩方面分析。黃笑言等[8]基于字節(jié)熵矢量加權(quán)指紋的二進(jìn)制協(xié)議識(shí)別,在數(shù)據(jù)預(yù)處理階段,通過不同字節(jié)對(duì)協(xié)議識(shí)別的貢獻(xiàn)不同,設(shè)定權(quán)值并加權(quán)構(gòu)造字節(jié)熵矢量;在聚類階段,使用基于局部加權(quán)K-means 算法進(jìn)行聚類。岳旸等[9]在數(shù)據(jù)預(yù)處理階段使用AC 算法挖掘出頻繁序列特征,使用Apriori 算法搜索頻繁序列的關(guān)聯(lián)關(guān)系;在聚類階段,通過改進(jìn)的K-means算法進(jìn)行聚類。Tao 等[10]在數(shù)據(jù)預(yù)處理階段,直接將原始二進(jìn)制報(bào)文作為初始報(bào)文向量;在聚類階段,使用了引入輪廓系數(shù)(silhouette coefficient)的K-means算法進(jìn)行二進(jìn)制報(bào)文聚類。閆小勇[11]在數(shù)據(jù)預(yù)處理階段,對(duì)二進(jìn)制報(bào)文進(jìn)行截取或補(bǔ)0 的預(yù)處理方式,將不等長的二進(jìn)制報(bào)文變?yōu)榈乳L的;在聚類階段,使用距離指數(shù)加權(quán)的方法自動(dòng)選取聚類中心,使用密度峰值聚類算法進(jìn)行聚類。
上述方法大部分針對(duì)文本類協(xié)議,部分支持二進(jìn)制協(xié)議的聚類方法在數(shù)據(jù)預(yù)處理階段會(huì)存在特征提取不純,聚類階段存在簇?cái)?shù)不確定等問題。主要原因有兩點(diǎn):(1)二進(jìn)制協(xié)議報(bào)文根據(jù)使用的場(chǎng)景及目的,會(huì)設(shè)計(jì)出各種不同長度的二進(jìn)制報(bào)文格式,甚至存在同一報(bào)文根據(jù)不同場(chǎng)景設(shè)計(jì)不同的變長域,導(dǎo)致同一類型的二進(jìn)制報(bào)文也會(huì)存在不同長度的情況;(2)二進(jìn)制報(bào)文是由0 和1 組成的,字段劃分以比特為單位,并非傳統(tǒng)以字節(jié)為劃分的文本類協(xié)議。這對(duì)于二進(jìn)制報(bào)文的聚類是一個(gè)很大的挑戰(zhàn)。
通過對(duì)文獻(xiàn)[11]中使用的聚類方法進(jìn)行分析,發(fā)現(xiàn)文中在進(jìn)行二進(jìn)制報(bào)文的向量化過程中,針對(duì)不同長度的二進(jìn)制報(bào)文進(jìn)行預(yù)處理,會(huì)采用截?cái)嗄┪残蛄校蚴菍?duì)末尾序列補(bǔ)0 的方式,使處理后的二進(jìn)制報(bào)文達(dá)到等長的效果,進(jìn)而進(jìn)行向量化映射,進(jìn)行報(bào)文聚類。但是其在對(duì)二進(jìn)制報(bào)文進(jìn)行預(yù)處理的過程中,會(huì)引入一些無關(guān)緊要的噪音,這些噪音本文將其定義為序列噪音。這些序列噪音不僅會(huì)干擾報(bào)文聚類的效果,而且在報(bào)文聚類過程中會(huì)引起計(jì)算量增加,效率降低的結(jié)果。
同時(shí),傳統(tǒng)的聚類方法在聚類的過程中會(huì)存在聚類中心不確定,聚類簇?cái)?shù)不確定的問題。本文針對(duì)上述問題,(1)提出一種序列項(xiàng)-位置矩陣的頻繁項(xiàng)生成方法,根據(jù)設(shè)置的頻繁項(xiàng)支持度閾值挖掘出頻繁項(xiàng);(2)根據(jù)生成的頻繁項(xiàng),將二進(jìn)制報(bào)文序列進(jìn)行向量化的表示;(3)為避免聚類簇?cái)?shù)和聚類中心的設(shè)定,使用層次聚類[12]中的分拆式層次聚類,對(duì)報(bào)文的特征向量進(jìn)行聚類操作,同時(shí)使用輪廓系數(shù)指導(dǎo)聚類劃分,設(shè)定輪廓系數(shù)閾值,以達(dá)到更好的聚類效果。
二進(jìn)制報(bào)文序列在聚類之前首先要將序列進(jìn)行特征向量化表示,在進(jìn)行特征的向量化表示時(shí),首先要進(jìn)行頻繁項(xiàng)的提取,因此本文的工作流程如圖1所示。
Fig.1 Method step diagram圖1 方法步驟圖
根據(jù)以上思想,主要將工作任務(wù)劃分為三個(gè)階段:
(1)進(jìn)行頻繁項(xiàng)的構(gòu)造時(shí),根據(jù)n-gram[13]序列化的思想,逐一地對(duì)樣本集S中所有的二進(jìn)制報(bào)文序列進(jìn)行遍歷,記錄每個(gè)n-gram 出現(xiàn)的次數(shù)C及位置P。為了在頻繁項(xiàng)提取時(shí)能夠盡可能地將存在的頻繁項(xiàng)挖掘出,本文引入人工先驗(yàn)知識(shí),參考已有公開的二進(jìn)制協(xié)議的字段長度劃分,對(duì)n-gram 序列化時(shí)的n值進(jìn)行確定。設(shè)置n的取值范圍[minN,maxN],逐一地更改n的大小,重復(fù)此步驟,直至記錄下所有的n-gram 信息。將記錄下的n-gram 信息納入到序列項(xiàng)-位置矩陣中,完成矩陣構(gòu)造。
(2)設(shè)置支持度閾值threshold1,當(dāng)某個(gè)n-gram的支持度大于閾值threshold1 時(shí),將其納入到頻繁項(xiàng)集中,根據(jù)頻繁項(xiàng)集中的頻繁項(xiàng),逐一地遍歷每條序列,若存在此頻繁項(xiàng),則將此序列對(duì)應(yīng)特征向量的位置置為1,否則置為0。
(3)根據(jù)特征化表示后得到的序列特征向量,使用分拆式層次聚類的方法進(jìn)行聚類,以輪廓系數(shù)作為指導(dǎo),設(shè)置輪廓系數(shù)閾值threshold2,指導(dǎo)聚類劃分,當(dāng)所有簇的輪廓系數(shù)大于threshold2 時(shí),結(jié)束劃分,完成聚類。
本文根據(jù)n-gram 序列化的思想,逐一地遍歷每條二進(jìn)制報(bào)文序列,摘取片段序列并記錄每個(gè)片段序列出現(xiàn)的次數(shù)C=(c1,c2,…,ci,…,ck)及位置P=(p1,p2,…,pj,…,py)(pj表示對(duì)應(yīng)序列的第一個(gè)比特相對(duì)于整個(gè)序列的偏移位置),由于不同位置的片段可能是相同的,因此對(duì)于得到的總的序列片段數(shù)目k≤|se|-n+1(|se|表示序列se包含的比特?cái)?shù)量),位置數(shù)目y=|se|-n+1。
例1 對(duì)于序列se=“010001101”,進(jìn)行n-gram 序列化,當(dāng)n取6 時(shí),序列化得到的序列為“010001”“100011”“000110”“001101”。并記錄次數(shù)C及位置P,由于是針對(duì)一條序列,因此次數(shù)C=(1,1,1,1),P=(1,2,3,4),得到的總的序列片段數(shù)目y=4。
由于二進(jìn)制報(bào)文字段通常不是等長劃分的,如二進(jìn)制報(bào)文序列se={b1,b2,…,bi,bj,…,bn-1,bn}(bi、bj代表字段),|bi|≠|(zhì)bj|,因此需要盡可能地將完整的頻繁項(xiàng)取出,設(shè)置n-gram 中n的取值范圍[minN,maxN],本文中minN和maxN的確定需要根據(jù)目前已知的、公開的私有二進(jìn)制協(xié)議中的字段長度來設(shè)置。設(shè)置完畢后,使n由minN逐一遞增至maxN。對(duì)于每個(gè)n,都需要對(duì)樣本集S中所有的二進(jìn)制報(bào)文序列進(jìn)行序列化,并記錄次數(shù)C及位置P。
將序列化后的序列片段納入到序列項(xiàng)-位置矩陣Mn中,每一個(gè)n、C、P對(duì)應(yīng)著一個(gè)Mn,根據(jù)例1,當(dāng)n=6 時(shí),矩陣M6如表1 所示。
Table 1 Matrix M6表1 矩陣M6
為從序列項(xiàng)-位置矩陣中挖掘出頻繁項(xiàng),本文設(shè)置閾值threshold1,表示最小支持度,遍歷每一個(gè)序列項(xiàng)-位置矩陣Mn中的值,即次數(shù)cij,當(dāng)cij/|S|≥threshold1時(shí)(|S|為樣本中報(bào)文的總數(shù)),將此次數(shù)cij對(duì)應(yīng)的序列片段fi及位置pj作為一個(gè)頻繁項(xiàng),加入到頻繁項(xiàng)集Fr中,F(xiàn)r={f1,f2,…,fi,…,fz},其中fi包含著每個(gè)頻繁項(xiàng)的比特內(nèi)容及位置信息,這里將頻繁項(xiàng)的位置信息表示為position,以區(qū)別于片段序列的位置。
根據(jù)頻繁項(xiàng)集Fr,生成每一個(gè)二進(jìn)制報(bào)文的特征向量FV=(v1,v2,…,vi,…,vz),其中z=|Fr|,vi=0 or 1。將頻繁項(xiàng)集Fr中的每一個(gè)頻繁項(xiàng)fi與樣本集S中的每一個(gè)二進(jìn)制報(bào)文序列進(jìn)行遍歷匹配,當(dāng)二進(jìn)制報(bào)文序列存在所匹配的頻繁項(xiàng)fi時(shí),將此二進(jìn)制報(bào)文序列對(duì)應(yīng)的特征向量FV中的vi置為1,反之為0。但二進(jìn)制報(bào)文序列中的字段可能存在些許的位置偏移,導(dǎo)致在進(jìn)行頻繁項(xiàng)fi匹配的過程中,fi.position未必完全匹配,因此本文設(shè)置一個(gè)容錯(cuò)值allowance。當(dāng)頻繁項(xiàng)fi在fi.position±allowance的范圍之內(nèi)找到了對(duì)應(yīng)的匹配序列,本文同樣將fi對(duì)應(yīng)的特征向量FV中的vi置為1;若不在范圍內(nèi),則依然置為0,最后得到的序列特征向量形如FV=(0,1,1,0…)。
3.3.1 t-SNE 的特征向量降維方法
特征向量的維數(shù)依賴于所生成的頻繁項(xiàng)的多少。
例2 當(dāng)數(shù)據(jù)集中的報(bào)文序列包含7 類,每一類擁有200 條報(bào)文,進(jìn)行序列化時(shí),取n=5,threshold1=0.143。實(shí)驗(yàn)中,產(chǎn)生的頻繁項(xiàng)高達(dá)498 個(gè),即特征向量為498 維。
如此高的維數(shù),在進(jìn)行聚類時(shí),運(yùn)算量巨大,因此在進(jìn)行特征向量聚類之前,需要對(duì)特征向量進(jìn)行降維操作。
傳統(tǒng)的主成分分析法(principal components analysis,PCA)[14]降維是一種線性算法,在將高維數(shù)據(jù)中不相似的點(diǎn)降低到低維上時(shí),存在相距較遠(yuǎn)的問題。為了便于在低維空間上用非線性流形表示高維數(shù)據(jù),相似數(shù)據(jù)點(diǎn)必須表示為非??拷虼吮疚倪x用t-SNE(t-distributed stochastic neighbor embedding)[15]的降維方法。關(guān)于t-SNE 的原理不是本文的研究重點(diǎn),因此不再過多描述。
3.3.2 分拆式層次聚類
分拆式層次聚類是一種自上而下的聚類方式,主要思想是首先將樣本集看作是一個(gè)整體的簇,再遞歸地將現(xiàn)有的簇分拆為兩個(gè)子簇,在分拆的過程中,使用啟發(fā)式方法進(jìn)行分拆。
開始的簇包含了所有的樣本,S={se1,se2,…,sei,…,sen},計(jì)算樣本sei(sei∈S) 對(duì)于所有其他樣本sei′(sei′∈S)的平均距離,如式(1)所示,距離度量準(zhǔn)則可以選擇歐式距離或其他度量準(zhǔn)則。
選擇樣本空間S中平均距離最大的樣本sei*,如式(2)所示,將它歸入新簇N,如式(3)和式(4)所示。
根據(jù)此規(guī)則,持續(xù)地從樣本集合S中移除樣本,選取的樣本sei*滿足sei*到S的距離與sei*到N的距離差值最大,如式(5)所示。
在從樣本集S中移除樣本的過程中,不能無限制地移除,因此要設(shè)置終止條件。首先每次在移除樣本sei*時(shí),都將重新計(jì)算每個(gè)樣本的平均距離并更新,當(dāng)所移除的樣本sei*不滿足式(5),且滿足式(6)時(shí),將停止本次移除。接下來,將分別對(duì)S和N進(jìn)行同樣的拆分。
分拆式層次聚類沒有一個(gè)明確的全局目標(biāo)函數(shù)來實(shí)現(xiàn)聚類,因此需要設(shè)置一個(gè)目標(biāo),當(dāng)滿足這個(gè)目標(biāo)時(shí),便不再對(duì)子簇進(jìn)行進(jìn)一步的拆分,本文提出使用輪廓系數(shù)來指導(dǎo)劃分的方法。
3.3.3 輪廓系數(shù)指導(dǎo)聚類劃分
輪廓系數(shù)表示各簇內(nèi)部的緊密程度,對(duì)于每個(gè)報(bào)文序列sei,定義其輪廓系數(shù)如式(7)所示。
其中,αsei如式(8)所示,表示報(bào)文序列sei與其所在簇的其他報(bào)文間的平均距離,βsei如式(9)所示,表示報(bào)文序列sei與其他簇的報(bào)文序列間的平均距離。同樣此處的距離度量可以選擇歐式距離或其他度量準(zhǔn)則。根據(jù)公式可以看出,每個(gè)報(bào)文序列的輪廓系數(shù)取值范圍為(-1,1),為了表達(dá)簇內(nèi)部的緊密程度,將輪廓系數(shù)進(jìn)行求和平均,取平均輪廓系數(shù)。如式(10)所示,代表該簇的聚類程度好壞,其中Sk表示報(bào)文序列sei所在簇。
為能夠達(dá)到預(yù)期的聚類效果,本文引入閾值threshold2,約束聚類是否要繼續(xù)進(jìn)行。當(dāng)平均輪廓系數(shù)SilSk>threshold2 時(shí),表示該簇不再需要進(jìn)行拆分;當(dāng)平均輪廓系數(shù)SilSk≤threshold2 時(shí),表示該簇仍然需要繼續(xù)劃分,重復(fù)3.3.2 小節(jié)中的簇拆分步驟,直至所有簇的平均輪廓系數(shù)都滿足要求,即完成聚類。
AIS(automatic identification system)協(xié)議是船舶自動(dòng)識(shí)別系統(tǒng)的通信協(xié)議,是一種二進(jìn)制協(xié)議,DNS(domain name system)、ICMP(Internet control message protocol)及ARP(address resolution protocol)是網(wǎng)絡(luò)通信中常用的3 種協(xié)議。本文通過AIS 采集的真實(shí)航行報(bào)文數(shù)據(jù),以及Wireshark 捕獲的DNS、ICMP、ARP報(bào)文數(shù)據(jù)作為原始數(shù)據(jù),對(duì)原始數(shù)據(jù)進(jìn)行逆向處理,獲得0、1 組成的二進(jìn)制報(bào)文數(shù)據(jù),模擬真實(shí)情況下的私有二進(jìn)制報(bào)文數(shù)據(jù),作為數(shù)據(jù)集構(gòu)造的基礎(chǔ)。
為了驗(yàn)證本文方法對(duì)于同一協(xié)議下,不同報(bào)文格式的聚類效果,構(gòu)造了數(shù)據(jù)集1,如表2 所示,包含AIS 協(xié)議4 類報(bào)文格式。其中AIS_1、AIS_4 與AIS_18 的報(bào)文數(shù)據(jù)等長,且與AIS_5 報(bào)文數(shù)據(jù)長度不同;在一定時(shí)間內(nèi),AIS_1、AIS_5 與AIS_18 報(bào)文內(nèi)容變化較大,而AIS_4 報(bào)文內(nèi)容變化較小。
Table 2 Data set 1表2 數(shù)據(jù)集1
為了驗(yàn)證本文方法對(duì)于不同協(xié)議的報(bào)文格式的聚類效果,構(gòu)造數(shù)據(jù)集2,如表3 所示,包含4 類報(bào)文格式。
Table 3 Data set 2表3 數(shù)據(jù)集2
為了驗(yàn)證本文方法在實(shí)際情況下的聚類效果,構(gòu)造數(shù)據(jù)集3,如表4 所示,包含同一協(xié)議下的不同報(bào)文格式,以及不同協(xié)議的報(bào)文格式,共7 類報(bào)文格式。
Table 4 Data set 3表4 數(shù)據(jù)集3
實(shí)驗(yàn)過程中,需要對(duì)主要的參數(shù)進(jìn)行設(shè)置,其中n為n-gram 序列化時(shí)的參數(shù),threshold1 為頻繁項(xiàng)選取時(shí)的支持度閾值,threshold2 為輪廓系數(shù)指導(dǎo)劃分時(shí)的閾值。
本文采用兩種經(jīng)典的評(píng)價(jià)指標(biāo),F(xiàn)1 值和純凈度Pu,如式(14)和式(16)所示。
式(14)中max(wi)表示簇i中報(bào)文數(shù)量最多的種類對(duì)應(yīng)的報(bào)文數(shù)量;w表示樣本數(shù)據(jù)集中所有的報(bào)文數(shù)量;z表示聚類簇?cái)?shù)。式(16)中F1(t,i)表示在第i個(gè)簇,第t類報(bào)文的F1 值,F(xiàn)1 值是在F值中的α=1 時(shí)所得,F(xiàn)值如式(15)所示,其中R為召回率,如式(17)所示,P為準(zhǔn)確率,如式(18)所示。
為了說明總體的聚類效果,樣本集總體的F1 值如式(19)所示,其中wt表示樣本中t類報(bào)文的數(shù)量。
為了直觀地觀察在報(bào)文向量化過程中,所生成的特征向量是否具有代表性的效果,本文使用t-SNE 降維,在二維平面上展示報(bào)文向量的分布效果。圖2 是在采用頻繁項(xiàng)對(duì)報(bào)文序列進(jìn)行特征向量化,所得到的特征向量的分布圖,其中n=5,threshold1=0.143。
同等條件下,若采用文獻(xiàn)[11]中使用的截?cái)鄨?bào)文的方法,截取至報(bào)文數(shù)據(jù)部分的前50 比特,所得到的特征向量分布如圖3 所示。
對(duì)比圖2 與圖3 可以發(fā)現(xiàn),文獻(xiàn)[11]中的方法無法很好地區(qū)分AIS_1 和AIS_5,且與AIS_18 分布較近,這是由于在一定時(shí)間段內(nèi),AIS_1、AIS_5 和AIS_18 報(bào)文數(shù)據(jù)的內(nèi)容變化較大,截?cái)嗟姆绞綗o法有很好的特征表達(dá)。而經(jīng)過特征向量化表示的報(bào)文序列具有更好的分布效果,特別對(duì)于長度較短的報(bào)文,特征向量化表示報(bào)文具有更加明顯的優(yōu)勢(shì)。
Fig.2 t-SNE vector distribution圖2 t-SNE 向量分布圖
Fig.3 Message distribution圖3 報(bào)文分布圖
4.3.1 序列化中參數(shù)n 的分析
在數(shù)據(jù)集3 的實(shí)驗(yàn)上進(jìn)行分析,將支持度閾值、輪廓系數(shù)閾值調(diào)整至最佳狀態(tài),調(diào)整序列化參數(shù)n,觀察n對(duì)于聚類結(jié)果度量的純凈度和F1 值的影響,實(shí)驗(yàn)結(jié)果如圖4 所示。
實(shí)驗(yàn)發(fā)現(xiàn)當(dāng)5 ≤n≤7 時(shí),純凈度和F1 值處于相對(duì)較高的水平,能夠達(dá)到較好的聚類效果,這反映了以5 比特到7 比特進(jìn)行頻繁項(xiàng)挖掘時(shí),所構(gòu)造的特征向量最具代表性;當(dāng)n≤4 時(shí),純凈度和F1 值急劇下降,說明此時(shí)的n構(gòu)造的特征向量不具有代表性;當(dāng)n≥8 時(shí),純凈度和F1 值緩慢下降,說明聚類效果在緩慢變差,此時(shí)n構(gòu)造的特征向量逐漸不具有代表性。
4.3.2 支持度閾值threshold1 分析
Fig.4 Purity and F1 value corresponding to different n values圖4 不同n 值對(duì)應(yīng)的純凈度與F1 值
在數(shù)據(jù)集3 的實(shí)驗(yàn)上進(jìn)行分析,將序列化參數(shù)n、輪廓系數(shù)閾值調(diào)整至最佳狀態(tài),調(diào)整支持度閾值threshold1,觀察threshold1 對(duì)于聚類結(jié)果度量的純凈度和F1 值的影響,實(shí)驗(yàn)結(jié)果如圖5 所示。
Fig.5 Purity and F1 value corresponding to different threshold1 values圖5 不同threshold1 值對(duì)應(yīng)的純凈度與F1 值
支持度閾值的選擇與樣本集中存在的報(bào)文種類有關(guān),可以觀察當(dāng)threshold1=0.143 時(shí),純凈度與F1值相對(duì)較高;當(dāng)threshold1 ≤0.143 時(shí),純凈度會(huì)更高,但F1 值會(huì)下降較多,說明許多并非頻繁項(xiàng)的序列項(xiàng)被選入作為頻繁項(xiàng),導(dǎo)致同一類型的報(bào)文被劃分成不同的報(bào)文而導(dǎo)致F1 值下降;當(dāng)threshold1 ≥0.143 時(shí),純凈度和F1 值都會(huì)明顯下降,說明選取的頻繁項(xiàng)構(gòu)成的特征區(qū)分度下降,導(dǎo)致聚類過程中將不同類型的報(bào)文聚類成同一簇。
4.3.3 輪廓系數(shù)閾值threshold2 分析
在數(shù)據(jù)集3 的實(shí)驗(yàn)上進(jìn)行分析,將序列化參數(shù)n、支持度閾值調(diào)整至最佳狀態(tài),調(diào)整輪廓系數(shù)閾值threshold2,觀察threshold2 對(duì)于聚類結(jié)果度量的純凈度和F1 值的影響,實(shí)驗(yàn)結(jié)果如圖6 所示。
Fig.6 Purity and F1 value corresponding to different threshold2 values圖6 不同threshold2 值對(duì)應(yīng)的純凈度與F1 值
輪廓系數(shù)閾值與最終聚類結(jié)果直接相關(guān),輪廓系數(shù)越接近于1,說明聚類效果越好。但設(shè)置輪廓系數(shù)閾值時(shí),若設(shè)置過高,會(huì)導(dǎo)致過分類的結(jié)果,從而導(dǎo)致純凈度很高而F1 值很低。從圖6 中觀察到,當(dāng)0.63 ≤threshold2 ≤0.67 時(shí),純凈度和F1 值相對(duì)較高,說明此時(shí)輪廓系數(shù)閾值能夠較好地將不同類的報(bào)文區(qū)分開,同時(shí)不會(huì)造成過分類的情況。
本文選用傳統(tǒng)的兩種聚類算法進(jìn)行對(duì)比實(shí)驗(yàn),基于劃分的K-means[16]算法和基于密度的DBSCAN[17](density-based spatial clustering of applications with noise)算法,兩種對(duì)比方法的參數(shù)在多次實(shí)驗(yàn)過程中選擇最優(yōu)參數(shù)設(shè)置。在K-means 算法聚類過程中,選擇其聚類簇?cái)?shù)K=8,在DBSCAN 聚類算法中,參數(shù)MinPts=20,Eps 參數(shù)通過K-距離曲線確定。在數(shù)據(jù)集3 的實(shí)驗(yàn)上進(jìn)行分析,3 種聚類方法所得到的純凈度和F1 值如圖7 所示。
通過實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),K-means 聚類算法所得到的純凈度相比DBSCAN 算法稍低,但F1 值卻明顯高于DBSCAN 算法。而DBSCAN 算法的純凈度比本文方法的98.71%稍高,達(dá)到了98.86%,但其F1 值卻是3 種方法中最低的。本文方法的純凈度雖然相比DBSCAN 算法低0.15 個(gè)百分點(diǎn),幾乎可以認(rèn)為純凈度水平相當(dāng),但本文方法的F1 值相比DBSCAN 提高了6.03 個(gè)百分點(diǎn),相比K-means 方法也提高了2.16 個(gè)百分點(diǎn),因此本文方法能夠提高聚類的純凈度與F1值,有效實(shí)現(xiàn)了二進(jìn)制報(bào)文數(shù)據(jù)的自動(dòng)聚類。
Fig.7 Purity and F1 value corresponding to different methods圖7 不同方法對(duì)應(yīng)的純凈度與F1 值
本文所提出的報(bào)文特征向量化方法和基于輪廓系數(shù)的分拆式層次聚類方法,能夠有效地自動(dòng)實(shí)現(xiàn)二進(jìn)制報(bào)文的聚類。通過實(shí)驗(yàn)測(cè)試發(fā)現(xiàn),報(bào)文特征向量化方法相比于傳統(tǒng)的截取報(bào)文或?qū)?bào)文末端補(bǔ)0 的方法所生成的特征向量更具有報(bào)文代表性,更加有助于報(bào)文聚類;基于輪廓系數(shù)的分拆式層次聚類相比于傳統(tǒng)的K-means 算法和DBSCAN 算法,純凈度與F1 值具有更好的綜合效果。同時(shí),在下一步工作中,將應(yīng)用本文聚類方法進(jìn)行私有二進(jìn)制協(xié)議測(cè)試、協(xié)議逆向等任務(wù)。