吳 瑕, 狄宏林, 周 勇
(東莞開放大學(xué), 廣東 東莞 523000)
互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展使得我國的網(wǎng)民數(shù)量不斷上升,網(wǎng)民數(shù)量的不斷增加使得爆發(fā)式的網(wǎng)絡(luò)數(shù)據(jù)也隨之而來。如何對(duì)這些數(shù)據(jù)進(jìn)行檢測分類從而確保計(jì)算機(jī)網(wǎng)絡(luò)的安全性是當(dāng)前網(wǎng)絡(luò)安全領(lǐng)域研究的重點(diǎn)[1-2]。為了防御異常數(shù)據(jù)的入侵行為,保護(hù)計(jì)算機(jī)在安全環(huán)境下進(jìn)行運(yùn)轉(zhuǎn),入侵檢測技術(shù)被提出[3]。當(dāng)前所使用的入侵檢測系統(tǒng)能夠?qū)崟r(shí)進(jìn)行數(shù)據(jù)監(jiān)控,并對(duì)異常數(shù)據(jù)進(jìn)行識(shí)別阻攔。然而,網(wǎng)絡(luò)數(shù)據(jù)的爆發(fā)式增長使得傳統(tǒng)的計(jì)算機(jī)防御技術(shù)和當(dāng)前的數(shù)據(jù)處理技術(shù)已不再能保障計(jì)算機(jī)網(wǎng)絡(luò)運(yùn)行的安全[4]。傳統(tǒng)的K-means算法(K-means clustering algorithm,K-means)K-means在進(jìn)行聚類結(jié)果分析時(shí)容易陷入局部最優(yōu)解,研究試圖對(duì)其進(jìn)行優(yōu)化,并將優(yōu)化后的算法用于網(wǎng)絡(luò)攻擊入侵檢測當(dāng)中,試圖提高計(jì)算機(jī)的安全性能。
網(wǎng)絡(luò)入侵檢測技術(shù)是一種主動(dòng)的、基于狀態(tài)的、實(shí)時(shí)的網(wǎng)絡(luò)安全技術(shù),它在檢測計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)中存在的各種安全問題時(shí),采取積極的、主動(dòng)的方式,并在可能受到攻擊時(shí)立即作出響應(yīng),以防止計(jì)算機(jī)和網(wǎng)絡(luò)信息被非法獲取、破壞和濫用[5]。入侵檢測技術(shù)作為一種動(dòng)態(tài)防御系統(tǒng),它能夠動(dòng)態(tài)地識(shí)別各種攻擊行為并做出響應(yīng),及時(shí)地阻止或降低其影響。若數(shù)據(jù)存在攻擊等非法行為,入侵檢測技術(shù)能夠進(jìn)行數(shù)據(jù)攔截從而保障計(jì)算機(jī)安全。
圖1 入侵檢測模型運(yùn)行流程圖
圖1所示為入侵檢測模型的運(yùn)行流程圖。由圖1可知,將收集到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行預(yù)處理和分析之后判斷其是否存在危險(xiǎn)入侵,若不存在危險(xiǎn)入侵,則對(duì)其數(shù)據(jù)行為特征進(jìn)行提取,若存在危險(xiǎn)入侵,則需要在知識(shí)數(shù)據(jù)庫中進(jìn)行標(biāo)記并對(duì)其進(jìn)行處理。知識(shí)數(shù)據(jù)庫中會(huì)保存一些常見的危險(xiǎn)入侵特征和異常行為特征,通過比對(duì)能夠判斷輸入的網(wǎng)絡(luò)數(shù)據(jù)是否存在異常活動(dòng)。除此之外,知識(shí)數(shù)據(jù)庫中還存儲(chǔ)了系統(tǒng)的運(yùn)行日志,管理員可以通過運(yùn)行日志更好地了解計(jì)算機(jī)的運(yùn)行狀況并對(duì)其進(jìn)行定期維護(hù),提高計(jì)算機(jī)的防御性能。當(dāng)前使用較為廣泛的兩種檢測系統(tǒng)是異常入侵檢測系統(tǒng)和誤用入侵檢測系統(tǒng)。計(jì)算機(jī)技術(shù)的發(fā)展使得入侵檢測系統(tǒng)不斷得到了完善,但網(wǎng)絡(luò)數(shù)據(jù)大規(guī)模式的增長還是增加了系統(tǒng)的檢測難度。傳統(tǒng)的機(jī)器學(xué)習(xí)算法只能對(duì)數(shù)據(jù)進(jìn)行二次分類,不能深入地挖掘數(shù)據(jù)中的信息,而且還存在著訓(xùn)練周期較長、檢測準(zhǔn)確率較低等問題。在這一背景下,研究提出了一種改進(jìn)的K- means聚類算法,該算法可以實(shí)現(xiàn)自動(dòng)匹配數(shù)據(jù)、自動(dòng)更新知識(shí)庫和自動(dòng)日志審計(jì)等功能。
K-means算法是一種基于分類器的分類器,它可以隨機(jī)地選擇數(shù)據(jù)樣本作為質(zhì)量中心,然后通過計(jì)算其它樣本與質(zhì)量中心的距離,從而達(dá)到對(duì)樣本進(jìn)行分類。K-means算法一般使用歐氏距離來對(duì)兩個(gè)樣本之間的相似度進(jìn)行衡量,其數(shù)學(xué)表達(dá)式如式(1)所示。
(1)
假設(shè)數(shù)據(jù)集有n個(gè)m維度的樣本,那么任意兩個(gè)樣本X和Y之間的距離表達(dá)式記作D(X,Y)。其中,i∈1,2,…,m。
(2)
式(2)為K-means算法中質(zhì)心ui的迭代計(jì)算公式。Ci表示第i個(gè)劃分簇。|Ci|表示第i個(gè)劃分簇中所包含的樣本個(gè)數(shù)。
(3)
式(3)為誤差平方和標(biāo)準(zhǔn)函數(shù)SSE的數(shù)學(xué)表達(dá)式。通過誤差平方和標(biāo)準(zhǔn)函數(shù)的值能夠判斷算法迭代是否結(jié)束。當(dāng)誤差平方和小于設(shè)定誤差時(shí)則終止算法。k表示將樣本劃分為k類;Xi,j表示第i簇中的第j個(gè)樣本;d(Xi,j,ui)表示樣本到質(zhì)心的距離。
(4)
盡管K-means聚類分析算法有著操作簡單、穩(wěn)定性高、分析效果好等特點(diǎn),但在不同的場景中使用時(shí)仍然具有一定的局限性,例如:對(duì)所劃分的樣本類別k值具有較強(qiáng)的依賴性,在同一數(shù)據(jù)集中不同的k值具有不同的分類結(jié)果;算法受中心點(diǎn)影響較大;算法具有較高的隨機(jī)性因此難以收斂至最優(yōu)解狀態(tài)。針對(duì)上述問題,研究試圖改進(jìn)算法數(shù)據(jù)集中的樣本密度,并利用密度最大原則進(jìn)行中心點(diǎn)的挑選,最終提出改進(jìn)峰值密度的K-means算法以此來提高傳統(tǒng)K-means算法的穩(wěn)定性,并加快其收斂速度。
圖2 改進(jìn)峰值密度的K-means算法流程圖
圖2所示為改進(jìn)峰值密度的K-means算法流程圖。整個(gè)算法的輸入包括原始數(shù)據(jù)集D、半價(jià)參數(shù)q、聚類個(gè)數(shù)k和誤差參數(shù)e,輸出結(jié)果為劃分好的聚類結(jié)果。首先設(shè)定好r并計(jì)算樣本密度,將密度最大的樣本記作xi,樣本對(duì)應(yīng)的密度值記作p(xi)。將xi放進(jìn)集合x中并在數(shù)據(jù)集中刪除其半徑范圍內(nèi)的其他樣本值,對(duì)數(shù)據(jù)集中所有的樣本均執(zhí)行該操作直到得到初始聚類中心集合x。選取密度最大的樣本作為第一個(gè)聚類中心,然后將距離最遠(yuǎn)的第二個(gè)樣本作為第二個(gè)聚類中心,以此類推選取剩下的初始中心。接著使用上述距離公式計(jì)算樣本和中心之間的距離,并根據(jù)距離最小原則劃分樣本。然后對(duì)劃分后的數(shù)據(jù)集中每一個(gè)分類簇采用式(2)計(jì)算新質(zhì)心。最后根據(jù)收斂判定公式判定輸出結(jié)果是否小于誤差參數(shù)e,若成立則終止算法。
為了證明研究提出的算法模型的有效性,選用KDD Cup99和CIC-IDS2017兩種入侵?jǐn)?shù)據(jù)集作為此次實(shí)驗(yàn)的數(shù)據(jù)對(duì)象,對(duì)數(shù)據(jù)進(jìn)行預(yù)處理和歸一化操作。采用64位的Windows 10作為實(shí)驗(yàn)所需的計(jì)算機(jī)系統(tǒng),采用AMD Ryzen 7 4800H with Radeon Graphics作為顯卡配置,硬盤采用2.0T規(guī)格,內(nèi)存為32GB,最終在MATLAB上搭建實(shí)驗(yàn)環(huán)境,并對(duì)比K-means算法和改進(jìn)峰值密度的K-means算法用于網(wǎng)絡(luò)攻擊入侵檢測模型中的性能。
圖3 兩種算法的樣本檢測率情況
圖3(a)為K-means算法和改進(jìn)算法在數(shù)據(jù)集KDD Cup99中的檢測率變化情況。隨機(jī)抽取數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行檢測,K-means算法的檢測率在82%~83%之間,改進(jìn)算法的檢測率在96%~99%之間。圖3(b)為兩種算法在數(shù)據(jù)集CIC-IDS2017中的檢測率變化情況。K-means算法的檢測率在83%~86%之間,改進(jìn)算法的檢測率在94%~98%之間。由此可見,改進(jìn)算法在兩種入侵?jǐn)?shù)據(jù)集中擁有更好的數(shù)據(jù)檢測表現(xiàn)。
圖4 兩種算法的樣本分類準(zhǔn)確率情況
圖5 兩種算法的誤報(bào)率情況
在圖4(a)中,兩種算法在數(shù)據(jù)集KDD Cup99中的分類準(zhǔn)確率最大值分別為93.2%和99.5%。在圖4(b)中,兩種算法在數(shù)據(jù)集CIC-IDS2017中的分類準(zhǔn)確率最大值分別為91.7%和98.6%。由此可見,改進(jìn)算法在不同數(shù)據(jù)集中的分類準(zhǔn)確率均遠(yuǎn)大于傳統(tǒng)K-means算法,分類效果更好。
圖5(a)所示為K-means算法和改進(jìn)峰值密度的K-means算法在數(shù)據(jù)集KDD Cup99中的樣本誤報(bào)率情況。隨著樣本數(shù)量的改變,K-means算法的誤報(bào)率在3.0%~4.5%之間,并且誤報(bào)率上下浮動(dòng)較大,而改進(jìn)算法的誤報(bào)率在0.1%~0.5%之間,不僅整體的誤報(bào)率值較小并且浮動(dòng)范圍也遠(yuǎn)小于傳統(tǒng)K-means算法。圖5(b)所示為K-means算法和改進(jìn)峰值密度的K-means算法在數(shù)據(jù)集CIC-IDS2017中的樣本誤報(bào)率變化情況。隨著樣本數(shù)量的改變,K-means算法的誤報(bào)率在5%~7%之間浮動(dòng),改進(jìn)算法的誤報(bào)率則是在0.1%~0.8%之間浮動(dòng)。由此可見,改進(jìn)算法的誤報(bào)率更低,因此更具備實(shí)用性。
圖6 兩種算法的檢測時(shí)間曲線圖
圖6所示為兩種算法所花費(fèi)的樣本檢測時(shí)間曲線圖。圖6(a)所示為K-means算法和改進(jìn)峰值密度的K-means算法在數(shù)據(jù)集KDD Cup99中的樣本檢測時(shí)間曲線圖變化情況。隨著樣本數(shù)量的不斷增加,兩種算法的檢測時(shí)間均有所上升。其中,當(dāng)樣本數(shù)量為10的時(shí)候,K-means算法的檢測時(shí)間為7.9s,改進(jìn)算法的檢測時(shí)間為5.6s。當(dāng)樣本數(shù)量增加到50的時(shí)候,K-means算法的檢測時(shí)間為20.7s,改進(jìn)算法的檢測時(shí)間為7.2s。圖6(b)所示為K-means算法和改進(jìn)峰值密度的K-means算法在數(shù)據(jù)集CIC-IDS2017中的樣本檢測時(shí)間曲線圖變化情況。當(dāng)樣本數(shù)量為10的時(shí)候,K-means算法和改進(jìn)算法的檢測時(shí)間分別16.8s和6.3s。當(dāng)樣本數(shù)量增加到50的時(shí)候,K-means算法和改進(jìn)算法的檢測時(shí)間分別23.6s和8.5s。
研究對(duì)傳統(tǒng)的聚類分析方法進(jìn)行了改進(jìn),提出了一種基于峰值密度的改進(jìn)K-means算法并將其運(yùn)用到網(wǎng)絡(luò)入侵檢測模型當(dāng)中。實(shí)驗(yàn)結(jié)果表明,在兩種入侵?jǐn)?shù)據(jù)集中,改進(jìn)算法均擁有更好的性能表現(xiàn)。傳統(tǒng)算法的檢測率在82%~86%之間,誤報(bào)率在3%~7%之間,準(zhǔn)確率最大值為93.2%。當(dāng)樣本數(shù)量為50時(shí),傳統(tǒng)K-means的檢測時(shí)間高達(dá)23.6s。相反,改進(jìn)算法檢測率在94%~99%之間,誤報(bào)率在0.1%~0.8%之間,準(zhǔn)確率最大值為99.5%,檢測所花費(fèi)的時(shí)間在10s以內(nèi)。因此,將此次研究所改進(jìn)的K-means算法應(yīng)用到網(wǎng)絡(luò)入侵檢測模型中能夠擁有較好的入侵?jǐn)?shù)據(jù)檢測性能,進(jìn)一步保護(hù)計(jì)算機(jī)抵御外界數(shù)據(jù)的入侵,保證網(wǎng)絡(luò)安全。