劉 賀,張文波
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110159)
在過去幾年里,IoT(Internet of Things,物聯(lián)網(wǎng))設(shè)備在多個(gè)領(lǐng)域的應(yīng)用都出現(xiàn)了持續(xù)增長的趨勢,如工業(yè)領(lǐng)域、醫(yī)療領(lǐng)域、自動化領(lǐng)域和教育、智能家居和智慧城市等領(lǐng)域.根據(jù)數(shù)據(jù)統(tǒng)計(jì)顯示,2018年全世界物聯(lián)網(wǎng)設(shè)備的總數(shù)量突破了200億,預(yù)測該數(shù)量在2030年將超過500億[1].
雖然物聯(lián)網(wǎng)技術(shù)提出的萬物互聯(lián)能夠推動經(jīng)濟(jì)的發(fā)展,但是該技術(shù)也帶來了新的安全挑戰(zhàn),它并不像看上去的那么安全.事實(shí)上,物聯(lián)網(wǎng)設(shè)備通常只會分配到有限的資源,例如空間較小的存儲介質(zhì)和計(jì)算能力較差的處理器.因此,物聯(lián)網(wǎng)設(shè)備非常容易受到黑客攻擊的威脅.這些限制阻礙了在這些設(shè)備上部署復(fù)雜的安全措施,并使黑客們有機(jī)會輕易地侵入物聯(lián)網(wǎng)設(shè)備并執(zhí)行一些非法活動,破壞網(wǎng)絡(luò)的安全性和完整性.當(dāng)物聯(lián)網(wǎng)設(shè)備遭受到攻擊時(shí),僵尸網(wǎng)絡(luò)是物聯(lián)網(wǎng)受到的威脅中最常見的攻擊類型.被入侵的物聯(lián)網(wǎng)設(shè)備會成為僵尸網(wǎng)絡(luò)的一部分,能夠發(fā)起極具破壞性的DDoS(Distributed Denial of Service,拒絕服務(wù))攻擊.例如,在2016年10月,一個(gè)名為Mirai[2]的僵尸網(wǎng)絡(luò)利用缺乏安全保護(hù)措施的物聯(lián)網(wǎng)設(shè)備發(fā)起攻擊,對Dyn等公司發(fā)起了歷史上最大的DDoS攻擊之一.該攻擊在高峰時(shí)段使網(wǎng)絡(luò)的最大吞吐量超過了1Tbps,并對包括Twitter、Netflix、亞馬遜等許多大型網(wǎng)站造成了破壞.與由計(jì)算機(jī)組成的已知僵尸網(wǎng)絡(luò)不同,受到Mirai僵尸網(wǎng)絡(luò)影響的設(shè)備主要包括監(jiān)控?cái)z像頭和DVR(Digital Video Recorder,硬盤錄像機(jī))等物聯(lián)網(wǎng)設(shè)備[3].據(jù)調(diào)查,此次大規(guī)模DDoS攻擊涉及超過40萬臺受感染的物聯(lián)網(wǎng)設(shè)備,是造成半個(gè)美國互聯(lián)網(wǎng)無法提供網(wǎng)絡(luò)服務(wù)的罪魁禍?zhǔn)?目前,Mirai的變種Satori、Miori等僵尸網(wǎng)絡(luò)還在肆虐網(wǎng)絡(luò),受害企業(yè)的相關(guān)系統(tǒng)收到的惡意流量也創(chuàng)下了新紀(jì)錄.攻擊者通常操控被控制的物聯(lián)網(wǎng)設(shè)備發(fā)起惡意攻擊.因此,如果能更快的識別出物聯(lián)網(wǎng)設(shè)備接收的惡意流量,就可以顯著地防止惡意攻擊的入侵,降低網(wǎng)絡(luò)受到攻擊的影響.
隨著人工智能技術(shù)的快速發(fā)展,深度學(xué)習(xí)已被引入惡意流量識別問題中.具有逐層對原始輸入進(jìn)行學(xué)習(xí),自動獲得分類任務(wù)的特征.與基于機(jī)器學(xué)習(xí)的方法相比,基于深度學(xué)習(xí)的惡意流量識別方法可以將特征提取和分類兩個(gè)步驟整合到一個(gè)算法中,從而避免了人工設(shè)計(jì)特征的繁瑣步驟,有效克服了人工設(shè)計(jì)的特征集不合理而導(dǎo)致的準(zhǔn)確率低的問題.
基于深度學(xué)習(xí)的惡意流量識別方法需在原始流量輸入深度學(xué)習(xí)模型之前,必須對其進(jìn)行預(yù)處理,因?yàn)樯疃葘W(xué)習(xí)模型對輸入數(shù)據(jù)的格式和大小有嚴(yán)格要求.然而,現(xiàn)有的基于深度學(xué)習(xí)的惡意流量識別方法在處理原始數(shù)據(jù)時(shí)沒有考慮數(shù)據(jù)本身的特點(diǎn).實(shí)際上,在訓(xùn)練深度學(xué)習(xí)模型時(shí),糟糕的數(shù)據(jù)預(yù)處理方法可能會導(dǎo)致識別效果不佳.同時(shí),較大的模型需要更高的計(jì)算和內(nèi)存資源.雖然使用圖形處理單元(GPU)可以提供充足的計(jì)算資源,但不能提供足夠的內(nèi)存資源.最近的大多數(shù)研究旨在提高識別性能,而沒有考慮到大尺寸深度學(xué)習(xí)模型所帶來的計(jì)算和內(nèi)存需求.
為了填補(bǔ)上述空白,本文提出一種基于深度學(xué)習(xí)的輕量化惡意流量識別方法,該方法包括一種預(yù)處理方法和深度學(xué)習(xí)模型.本文的主要貢獻(xiàn)如下:
1)針對惡意流量識別方法中深度學(xué)習(xí)模型輸入的問題,本文提出一種基于會話中數(shù)據(jù)包的灰度圖片轉(zhuǎn)換方法(Packets in a Session to Grayscale Image,PS2GI).
2)針對惡意流量識別方法實(shí)現(xiàn)高精度、輕量化的問題,提出一種基于簡化混合Vision Transformer模型(SHViT)注意力機(jī)制的方法.
基于機(jī)器學(xué)習(xí)的惡意流量識別方法中最大的問題是需要設(shè)計(jì)一個(gè)能夠從惡意流量中提供的信息中生成準(zhǔn)確反映惡意流量特點(diǎn)的特征集合,這會影響到惡意流量的識別結(jié)果.雖然近年來許多研究者對這一問題進(jìn)行了研究,但設(shè)計(jì)高精度的惡意流量特征集合是一個(gè)沒有徹底解決的研究方向.基于深度學(xué)習(xí)的惡意流量識別方法解決了機(jī)器學(xué)習(xí)方法需要設(shè)計(jì)高精度的惡意流量特征集合問題,因?yàn)樗梢灾苯訌脑紣阂饬髁繑?shù)據(jù)中自動學(xué)習(xí),避免設(shè)計(jì)惡意流量特征集合的問題.
基于深度學(xué)習(xí)的惡意流量識別方法已經(jīng)在各種神經(jīng)網(wǎng)絡(luò)模型上進(jìn)行訓(xùn)練,并取得了一些顯著的成果.例如,Ferrag[4]等人在惡意流量的二分類和多分類問題上使用了7種深度學(xué)習(xí)模型,如CNN模型(Convolutional Neural Network,卷積神經(jīng)網(wǎng)絡(luò))、RNN模型(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))等進(jìn)行實(shí)驗(yàn),并且與機(jī)器學(xué)習(xí)模型進(jìn)行對比,實(shí)驗(yàn)結(jié)果表明分類的效果均比機(jī)器學(xué)習(xí)模型好.
在物聯(lián)網(wǎng)環(huán)境下,基于深度學(xué)習(xí)的惡意流量識別方法也同樣適用于識別物聯(lián)網(wǎng)中的網(wǎng)絡(luò)流量.例如,Susilo等人[5]提出了一種用于識別物聯(lián)網(wǎng)中的DoS攻擊的方法.他們得出的結(jié)論是深度學(xué)習(xí)模型可以顯著提高準(zhǔn)確性,是物聯(lián)網(wǎng)中最有效的威脅預(yù)防方法,但是實(shí)驗(yàn)結(jié)果顯示基于CNN模型的方法的準(zhǔn)確率不高.
Dutta等人[6]使用了DSAE(Deep Sparse AutoEncoder,深度稀疏模式的自動編碼)算法進(jìn)行數(shù)據(jù)降維.分類模型采用的是DNN模型(Deep Neural Networks,深度神經(jīng)網(wǎng)絡(luò)),LSTM模型(Long Short-Term Memory,長短時(shí)記憶)和一個(gè)分類器(邏輯回歸算法)堆疊而成的模型.該研究分別比較了RF(Random Forest,隨機(jī)森林)算法,單獨(dú)的DNN模型和LSTM模型在IoT-23[7]物聯(lián)網(wǎng)流量數(shù)據(jù)集上的效果,實(shí)驗(yàn)結(jié)果表明堆疊后的模型的準(zhǔn)確率得到了提升,是一種有效的惡意流量分類方法,但該方法只給出了二分類問題的結(jié)果,并沒有給出多分類問題的結(jié)果.
Sahu等人[8]使用CNN模型提取原始惡意流量數(shù)據(jù)的特征表示,并通過LSTM模型對物聯(lián)網(wǎng)中的惡意流量進(jìn)行分類.該方法同時(shí)對惡意流量的二分類和多分類情況在IoT-23數(shù)據(jù)集上進(jìn)行訓(xùn)練,實(shí)驗(yàn)結(jié)果表明,二分類情況的準(zhǔn)確率沒提升,但是多分類情況的準(zhǔn)確率得到了提升.
Biswas等人[9]使用了ANN模型(Artificial Neural Network,人工神經(jīng)網(wǎng)絡(luò))、LSTM模型和GRU模型(Gated Recurrent Unit,門控循環(huán)單元)來區(qū)分物聯(lián)網(wǎng)中的惡意流量和良性流量,在數(shù)據(jù)預(yù)處理階段對惡意流量數(shù)據(jù)集進(jìn)行數(shù)據(jù)清洗,并對文件中的攻擊類型使用獨(dú)熱編碼進(jìn)行區(qū)分.實(shí)驗(yàn)結(jié)果表明,GRU模型的準(zhǔn)確率高于其它兩個(gè)模型.
ULLAH等人[10]使用了基于RNN模型的LSTM模型、GRU模型和BiLSTM(Bidirectional Long Short Term Memory)模型解決物聯(lián)網(wǎng)的異常流量識別問題.由于CNN模型可以在不丟失重要信息的情況下分析輸入的特征,提出了一種基于CNN模型和RNN模型的混合深度學(xué)習(xí)模型用于解決惡意流量的多分類問題,使用基于RNN模型的深度學(xué)習(xí)模型用于解決惡意流量的二分類問題,分別在IoT-23數(shù)據(jù)集上取得了當(dāng)前最好的結(jié)果.
Doriguzzi等人[11]提出了一種基于LUCID模型的DDoS攻擊檢測方法,該模型對CNN模型進(jìn)行改進(jìn),在輸入層提出了一個(gè)新的空間表示方法,使CNN模型能夠?qū)W習(xí)同一流量的數(shù)據(jù)包之間的關(guān)聯(lián)性,同時(shí)在池化層選擇一維最大池化方法.該模型結(jié)構(gòu)簡單,準(zhǔn)確率比同一數(shù)據(jù)集下的CNN模型和LSTM模型更高.
Wei等人[12]提出了一種基于ABL-TC(Attention-BasedLSTM-Traffic Classification)的網(wǎng)絡(luò)流量分類方法,該方法對LSTM模型進(jìn)行改進(jìn),增加了注意力機(jī)制,同時(shí)減少模型的參數(shù)量和計(jì)算量,是一種輕量化網(wǎng)絡(luò)流量分類方法.該方法只與同一數(shù)據(jù)集下的CNN模型和LSTM模型進(jìn)行對比,在提升準(zhǔn)確率的前提下模型的參數(shù)量和計(jì)算量更低,但是并未與同一數(shù)據(jù)集的其它研究方法進(jìn)行對比.
根據(jù)以上分析發(fā)現(xiàn),當(dāng)前基于深度學(xué)習(xí)模型的輕量化惡意流量識別方法準(zhǔn)確率對比其它研究方法差距較大.本文提出一種基于SHViT模型的分類方法,該方法在實(shí)現(xiàn)輕量化惡意流量識別的同時(shí),還保證了惡意流量識別的準(zhǔn)確率.
雖然深度學(xué)習(xí)模型有很多,但比較成熟的模型像是CNN模型、RNN模型在深度學(xué)習(xí)中取得了比較大的成功.在物聯(lián)網(wǎng)場景中,研究人員主要關(guān)注基于RNN的方法,惡意流量識別的準(zhǔn)確率很高,但是基于CNN的方法惡意流量識別的準(zhǔn)確率卻比較差,其中的原因是CNN模型在圖片分類任務(wù)中表現(xiàn)的很好,但是從流量中提取到的特征作為CNN模型的輸入并不合適,如果是圖片作為CNN模型的輸入,會得到更好的結(jié)果.
Wang等人[13]利用原始流量文件中的每個(gè)字節(jié)都能用一個(gè)十進(jìn)制的數(shù)字表示的特性,并且值在0~255之間,恰好與灰度圖片的像素的值對應(yīng).將處理后的流量轉(zhuǎn)換為灰度圖片,然后使用CNN模型對處理后的流量進(jìn)行分類,取得了很好的效果.該方法的問題是只對原始流量文件的長度進(jìn)行分割,并沒有關(guān)注數(shù)據(jù)包的情況.
Moreira等人[14]提出了一種數(shù)據(jù)包視覺的方法,用來解決網(wǎng)絡(luò)流量分類問題.該方法使用流量捕獲工具從網(wǎng)卡中獲取原始流量,將原始流量中的數(shù)據(jù)包轉(zhuǎn)換為十進(jìn)制的格式,并且字節(jié)長度設(shè)置為8的倍數(shù),長度不足就填充,然后進(jìn)行圖像轉(zhuǎn)換,將十進(jìn)制的數(shù)據(jù)轉(zhuǎn)換為灰度圖片,最后將圖像統(tǒng)一設(shè)置為224×224的大小,將數(shù)據(jù)包轉(zhuǎn)換后的圖像分別作為AlexNet、ResNet和SqueezeNet模型的輸入.該方法使用了自建的數(shù)據(jù)集,雖然實(shí)驗(yàn)結(jié)果表明取得了不錯(cuò)的效果,但是圖像轉(zhuǎn)換過程中將圖像拉伸到224×224的過程損失了原圖像的細(xì)節(jié),降低分類的準(zhǔn)確率.
Sun等人[15]提出了一種基于深度學(xué)習(xí)的異常流量識別方法.該方法對原始網(wǎng)絡(luò)流量數(shù)據(jù)包的數(shù)量和長度進(jìn)行限制,然后對這些數(shù)據(jù)包進(jìn)行圖像化的表示,最后放入深度學(xué)習(xí)模型進(jìn)行分類.具體的處理方式為數(shù)據(jù)包的長度限制為60字節(jié),數(shù)據(jù)包的數(shù)量為30秒內(nèi)收到的前60個(gè)數(shù)據(jù)包,將這60個(gè)數(shù)據(jù)包組成一個(gè)60×60大小的灰度圖片作為CNN模型的輸入,最后得到分類結(jié)果.該方法也是使用了自建的數(shù)據(jù)集,從監(jiān)控設(shè)備上收集了兩周局域網(wǎng)的網(wǎng)絡(luò)流量,該數(shù)據(jù)集正負(fù)樣本不均衡,良性流量的樣本數(shù)比惡意流量的樣本數(shù)高了數(shù)十倍.該方法將數(shù)據(jù)包的長度限制在了60字節(jié),這種方式舍棄掉數(shù)據(jù)包中的數(shù)據(jù)部分,只保留了包頭信息,降低識別的準(zhǔn)確率.
申利民等人[16]提出了一種基于網(wǎng)絡(luò)流量灰度圖片的Android惡意軟件檢測方法.首先,該方法對原始流量進(jìn)行分割,對分割后的流量長度做出限制,不足784字節(jié)的需要填充,超過的部分丟棄.然后將16進(jìn)制的流量數(shù)據(jù)轉(zhuǎn)換為2進(jìn)制.最后將所有二進(jìn)制比特流映射為28×28的灰度圖片.這種轉(zhuǎn)換方式是為了讓CNN模型獲取到流量數(shù)據(jù)的空間特征,再結(jié)合LSTM模型具有時(shí)序性的特點(diǎn),通過自注意力模型得出類別.雖然這種方法效果很好,但是LSTM模型無法實(shí)現(xiàn)并行處理.
根據(jù)以上分析發(fā)現(xiàn),針對上述數(shù)據(jù)包圖像化轉(zhuǎn)換方法的不足,本文提出了一種基于PS2GI的方法,該方法使用完整的數(shù)據(jù)包首部和數(shù)據(jù)部分,并且選擇對會話中指定長度內(nèi)的數(shù)據(jù)包進(jìn)行識別以提高惡意流量識別的準(zhǔn)確率.
本部分闡述了基于深度學(xué)習(xí)的惡意流量識別方法的過程,具體過程如圖1所示.
圖1 惡意流量識別的過程Fig.1 Process of malicious traffic identification
第1步.數(shù)據(jù)獲取.本文流量數(shù)據(jù)的來源是公開數(shù)據(jù)集(IoT-23數(shù)據(jù)集),是捕獲自物聯(lián)網(wǎng)設(shè)備的網(wǎng)絡(luò)流量數(shù)據(jù)集.
第2步.流量處理.數(shù)據(jù)集中的原始流量文件并不能直接用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,需要先將原始流量文件按照五元組劃分出單獨(dú)的TCP流或UDP流,將原始流量文件中十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制,并對每個(gè)數(shù)據(jù)包的長度進(jìn)行限制,長度為256字節(jié)的倍數(shù),不足的部分使用255填充.
第3步.矩陣轉(zhuǎn)換.將十進(jìn)制的數(shù)據(jù)按照本文提出的PS2GI方法轉(zhuǎn)換為二維矩陣.
第4步.灰度圖片生成.進(jìn)行矩陣轉(zhuǎn)換后,由于二維矩陣中的數(shù)值為十進(jìn)制,恰好與灰度圖片中每個(gè)像素的值對應(yīng),即可根據(jù)轉(zhuǎn)換后的二維矩陣生成灰度圖片.
第5步.惡意流量分類.將生成的灰度圖片作為神經(jīng)網(wǎng)絡(luò)模型的輸入,使用測試集驗(yàn)證惡意流量識別的準(zhǔn)確率.
PS2GI,即Packets in a Session to Grayscale Image,表示將會話中的數(shù)據(jù)包轉(zhuǎn)換為灰度圖片.該方法的思想是轉(zhuǎn)換圖像的過程中盡量不要截?cái)鄶?shù)據(jù)包中的數(shù)據(jù),而且圖像的分辨率不宜過小,同時(shí)提升惡意流量識別的準(zhǔn)確率.本部分給出了實(shí)現(xiàn)PS2GI方法的過程,如表1所示.
表1 實(shí)現(xiàn)PS2GI方法的過程Table 1 Process of implementing the PS2GI method
該方法的實(shí)現(xiàn)共有5個(gè)步驟:
1)限制會話的長度
PS2GI方法將會話的長度設(shè)置為50176字節(jié),超出的部分將會舍棄,不足的部分進(jìn)行填充,本文選擇255(轉(zhuǎn)換灰度圖片后即白色)作為填充的值.在圖像分類任務(wù)中,最常見的圖片分辨率為224×224,很多基于CNN的神經(jīng)網(wǎng)絡(luò)模型的輸入采用的都是這個(gè)分辨率,所以本文選擇50176字節(jié)的長度就是為了將數(shù)據(jù)包轉(zhuǎn)換成圖片后的分辨率也是224×224,方便后續(xù)模型進(jìn)行訓(xùn)練.相關(guān)研究中選擇0作為填充值,即部分網(wǎng)絡(luò)協(xié)議選擇使用的填充值,本文選擇255的目的是與這些填充值進(jìn)行區(qū)分,有利于提升惡意流量識別的準(zhǔn)確率.
2)規(guī)范會話中數(shù)據(jù)包的長度
PS2GI方法要求會話中的每個(gè)數(shù)據(jù)包的長度是256字節(jié)的倍數(shù),不足256字節(jié)的部分進(jìn)行填充,選擇255作為填充的值.由上文可知,會話的長度是50176字節(jié),本文將數(shù)據(jù)包的長度設(shè)置為256字節(jié)的倍數(shù)是受到ViT模型的啟發(fā),ViT模型將圖片劃分為14×14個(gè)patch,每個(gè)patch的大小恰好是16×16,恰好是256字節(jié)的倍數(shù).更重要的是數(shù)據(jù)包內(nèi)的數(shù)據(jù)是有順序的,數(shù)據(jù)包與數(shù)據(jù)包之間也是有聯(lián)系的.
3)矩陣轉(zhuǎn)換
本文的矩陣轉(zhuǎn)換簡單示意圖如圖2所示.經(jīng)過上面兩步的處理后,會話的長度為50176字節(jié),即大小為50176的一維矩陣,在轉(zhuǎn)換成灰度圖片之前需要先轉(zhuǎn)換成二維矩陣.由上文可知,會話中的每個(gè)數(shù)據(jù)包的大小都是256字節(jié)的倍數(shù),該方法需要在轉(zhuǎn)換過程中按照一維矩陣的順序先將前256字節(jié)轉(zhuǎn)換到第一個(gè)16×16的patch中,依次每256字節(jié)轉(zhuǎn)換為一個(gè)16×16的patch,總共有14×14個(gè)patch,最后形成224×224的二維矩陣.
圖2 矩陣轉(zhuǎn)換的簡單示意圖Fig.2 Simple schematic diagram of matrix transformation
4)在每個(gè)數(shù)據(jù)包前進(jìn)行填充操作
上述3個(gè)步驟存在一個(gè)問題,只將一維矩陣轉(zhuǎn)換為二維矩陣,并沒有考慮到這種轉(zhuǎn)換方式會截?cái)鄥f(xié)議首部的字段信息.例如,由TCP/IP體系結(jié)構(gòu)下的各層協(xié)議的格式可知,使用TCP協(xié)議封裝后的數(shù)據(jù)幀的首部長度為54(14+20+20=54)字節(jié),使用UDP協(xié)議封裝后的數(shù)據(jù)幀的首部長度為42(14+20+8)字節(jié).按照第3步提到的將數(shù)據(jù)包轉(zhuǎn)換為16×16的patch,TCP協(xié)議封裝的數(shù)據(jù)幀的第16字節(jié)和第17字節(jié)、第32字節(jié)和第33字節(jié)、第48字節(jié)和第49字節(jié)的字段包含的信息會被截?cái)?第32字節(jié)和第33字節(jié)涉及的恰好是IP協(xié)議的目的IP地址字段,該字段長度為4字節(jié),不做處理直接轉(zhuǎn)換會破壞字段包含的信息,無法提取到有用的信息.PS2GI方法的解決方式是在每個(gè)數(shù)據(jù)包前填充2個(gè)字節(jié),選擇255作為填充的值.
5)將二維矩陣輸出為灰度圖片
PS2GI方法調(diào)用opencv庫的imwrite方法,將二維矩陣作為方法的參數(shù)輸出到指定路徑,圖片類型為png.
受到Transformer模型[17]在NLP中可擴(kuò)展性強(qiáng)的啟發(fā),為了將原始的Transformer模型直接應(yīng)用在圖像領(lǐng)域,并盡可能不做修改.為此,將圖像分割為若干個(gè)patch,并把這些patch按照順序排列好作為Transformer的輸入.圖像的patch與NLP領(lǐng)域中token的處理方式相同,并以有監(jiān)督學(xué)習(xí)的方式訓(xùn)練圖片分類的模型.
ViT模型[18]的架構(gòu)如圖3所示.首先,給定一張圖片,把這張圖片分割成n個(gè)patch,將這n個(gè)patch排成一個(gè)序列,通過一個(gè)線性投射層后得到一個(gè)特征,也就是圖中的patch embedding.然后由于自注意力機(jī)制是所有的元素兩兩之間進(jìn)行交互,需要添加一個(gè)位置編碼(position embedding)方法,有了位置編碼后,整體的token就既包含了圖片的patch原本有的信息,又包含了圖片的patch的位置信息.得到token后,就會與原始Transformer模型的輸入結(jié)構(gòu)保持一致,直接傳送給Transformer Encoder模塊并得到很多輸出,ViT模型借鑒了BERT模型[19],在token中添加了一個(gè)分類token(
圖3 ViT模型的架構(gòu)Fig.3 Architecture of the ViT model
ViT模型相比基于CNN的模型缺少圖像特有的歸納偏置.例如在CNN模型中,局部性和平移不變性是在每一層都有體現(xiàn),這個(gè)先驗(yàn)知識相當(dāng)于始終貫穿整個(gè)模型.但對于ViT模型來說,僅僅在MLP層是具有局部性和平移不變性的,自注意力層是全局的,ViT模型基本沒有利用圖片中的二維信息,也就在將圖像切割成patch時(shí),和進(jìn)行位置編碼時(shí)利用了圖片的信息.位置編碼也是隨機(jī)初始化的,并沒有攜帶任何二維的信息.所有關(guān)于圖像patch之間的距離信息都需要重新學(xué)習(xí).同時(shí),由于多頭自注意力機(jī)制要求序列中的每個(gè)token與其它token兩兩之間要進(jìn)行計(jì)算.ViT模型中映射qkv使用的全連接層的維度和FFN的MLP模塊隱藏層的維度非常大,即模型需要的參數(shù)量非常大.所以在物聯(lián)網(wǎng)下的設(shè)備很難部署這樣的模型.
針對上面提出的問題,現(xiàn)有的、最簡單的方式就是采用CNN模型與ViT模型的混合架構(gòu),即HViT模型.CNN模型能夠提供空間歸納偏置,而且加入CNN模型后能夠加速網(wǎng)絡(luò)的收斂,使神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程更加的穩(wěn)定.
本文使用了一種基于SHViT模型的惡意流量識別方法,該方法在HViT模型的基礎(chǔ)上進(jìn)行簡化,HViT模型的參數(shù)量受到Transformer Encoder中映射qkv使用的全連接層的維度和FFN的MLP模塊隱藏層的維度大小兩方面的因素影響.經(jīng)過研究后,為了盡可能不改變Transformer Encoder模塊維度之間的倍數(shù)關(guān)系,兩個(gè)維度的大小同時(shí)減少至原來的一半.HViT模型的計(jì)算量受到Transformer Encoder的輸入大小影響,本文使用PS2GI方法將會話中的數(shù)據(jù)包轉(zhuǎn)換成灰度圖片,使用MobileNetV2模型進(jìn)行下采樣,生成大小為14×14的特征圖,特征圖的每個(gè)像素作為Transformer Encoder的輸入.由于本文的灰度圖片上下相鄰的像素不像正常圖片具有很強(qiáng)的關(guān)聯(lián)性,左右相鄰的像素具有一定相似性,所以在Transformer Encoder模塊在計(jì)算注意力時(shí)無需計(jì)算相鄰像素之間的值,即在對特征圖進(jìn)行展平成輸入序列時(shí),生成兩個(gè)長度為特征圖像素?cái)?shù)量一半的輸入序列,作為Transformer Encoder的輸入.通過Transformer Encoder模塊可知,輸入序列長度減少一半,減少了多頭自注意力機(jī)制的計(jì)算量,如公式(1)和公式(2)所示:
(1)
(2)
n代表Transformer Encoder輸入序列的長度,k代表減少輸入序列長度的倍數(shù).
SHViTBlock的架構(gòu)如圖4所示.首先,輸入維度為[H,W,C]的矩陣X,經(jīng)過一個(gè)卷積核為1×3的卷積操作和一個(gè)卷積核為1×1的卷積操作改變通道數(shù)后,生成一個(gè)維度為[H,W,d]的矩陣,通過展開過程將該矩陣的維度轉(zhuǎn)換為[H/h×W/w,h×w,d]作為Transformer Encoder的輸入.然后,再經(jīng)過Transformer Encoder后生成一個(gè)維度為[H/h×W/w,h×w,d]的矩陣,通過折疊過程將該矩陣的維度轉(zhuǎn)換為[H,W,d],再經(jīng)過1×1的卷積層對通道數(shù)進(jìn)行改變,生成維度為[H,W,C]的矩陣.最后,將該矩陣和矩陣X通過殘差連接后經(jīng)過1×1的卷積層改變通道數(shù)后得到矩陣Y作為輸出.
圖4 SHViT Block的架構(gòu)Fig.4 Architecture of the SHViT Block
SHViT模型的架構(gòu)如圖5所示.首先,經(jīng)過一個(gè)步長為2,3×3的卷積層進(jìn)行下采樣,將矩陣的大小改變成112×112,再經(jīng)過3個(gè)MobileNetV2塊,進(jìn)行3次下采樣,矩陣的大小變?yōu)?4×14.然后,該矩陣經(jīng)過12個(gè)2×1的patch SHViT block后得到一個(gè)大小為14×14的特征,再經(jīng)過1×1的卷積層對特征的通道數(shù)進(jìn)行改變.最后,經(jīng)過全局池化層后減少特征的大小,并通過線性層后得到分類的結(jié)果.
圖5 SHViT模型的架構(gòu)Fig.5 Architecture of the SHViT model
本文實(shí)驗(yàn)環(huán)境使用的操作系統(tǒng)是windows11,CPU使用的是Intel Core第12代處理器i7-12700F,GPU使用的是Nvidia 3090Ti顯卡,顯存的大小為24G,內(nèi)存的大小為32G.另外本文使用的編程語言是Python,版本為3.8,深度學(xué)習(xí)框架使用的是Pytorch[20],版本為1.12.0.
本文實(shí)驗(yàn)的模型評價(jià)指標(biāo)使用了accuracy(準(zhǔn)確率)、precision(精確率)、recall(召回率)、F1-score 4個(gè)指標(biāo).這些指標(biāo)的計(jì)算方式在公式(3)~公式(6)中給出:
(3)
(4)
(5)
(6)
TP代表被模型預(yù)測為正類的正樣本,TN代表被模型預(yù)測為負(fù)類的負(fù)樣本,FP代表被模型預(yù)測為正類的負(fù)樣本,FN代表被模型預(yù)測為負(fù)類的正樣本.
(7)
由于y是一個(gè)長度為q的獨(dú)熱編碼向量,所以除了當(dāng)前項(xiàng)j以外的所有項(xiàng)都消失了.由于所有yi都是預(yù)測的概率,所以它們的對數(shù)永遠(yuǎn)不會大于0.
為了體現(xiàn)模型具有輕量化的特點(diǎn),選用了模型參數(shù)量、模型計(jì)算量和推理時(shí)間3個(gè)指標(biāo)對模型進(jìn)行評價(jià).模型參數(shù)量和計(jì)算量是衡量深度學(xué)習(xí)模型的指標(biāo)之一,參數(shù)量相當(dāng)于是算法中的空間復(fù)雜度,計(jì)算量相當(dāng)于是算法中的時(shí)間復(fù)雜度.在硬件層面上,參數(shù)量相當(dāng)于是占用計(jì)算機(jī)存儲資源的空間,計(jì)算量相當(dāng)于是計(jì)算時(shí)間.計(jì)算量FLOPs并不是衡量網(wǎng)絡(luò)效率的一個(gè)充分指標(biāo),因?yàn)樗鼪]有考慮與模型推理相關(guān)的因素,如設(shè)備的內(nèi)存訪問、并行度和特性.本文引入了一個(gè)新的指標(biāo),即模型的推理時(shí)間.首先,使用pytorch的torch.cuda.synchronize()函數(shù),將異步模式轉(zhuǎn)換成同步模式.然后,在當(dāng)前輪次的GPU執(zhí)行函數(shù)完成之后才停止計(jì)時(shí).最后,使用torch.cuda.Event來跟蹤GPU程序并更新模型的推理時(shí)間.模型參數(shù)量和計(jì)算量主要集中在卷積層和全連接層.
卷積層的參數(shù)量和計(jì)算量如公式(8)和公式(9)所示:
parameters=(kw×kh×Cin+1)×Cout
(8)
FLOPs=[(Cin×kw×kh)+(Cin×kw×kh-1)+1]×Cout×w×h
(9)
kw和kh分別代表卷積核的寬和高,Cin和Cout分別代表卷積層的輸入通道數(shù)和輸出通道數(shù),w和h代表特征圖的寬和高,公式中的1代表卷積層中的偏置.
全連接層的參數(shù)量和計(jì)算量如公式(10)和公式(11)所示:
parameters=(Nin+1)×Nout
(10)
FLOPs=[Nin+(Nin-1)+1]×Nout
(11)
Nin和Nout分別代表全連接層中的輸入和輸出維度的大小,公式中的1代表卷積層中的偏置.
IoT-23是捕獲自物聯(lián)網(wǎng)設(shè)備的一個(gè)新的網(wǎng)絡(luò)流量數(shù)據(jù)集.該數(shù)據(jù)集于2020年1月首次發(fā)布,獲取流量的時(shí)間從2018年持續(xù)到2019年.該物聯(lián)網(wǎng)流量數(shù)據(jù)集的目標(biāo)是為研究人員在開發(fā)機(jī)器學(xué)習(xí)算法時(shí)提供真實(shí)的和帶標(biāo)簽的物聯(lián)網(wǎng)惡意流量和良性流量的大型數(shù)據(jù)集.該數(shù)據(jù)集由23個(gè)不同的物聯(lián)網(wǎng)場景捕獲的網(wǎng)絡(luò)流量組成.這些場景被分為20個(gè)來自感染惡意軟件的物聯(lián)網(wǎng)設(shè)備的網(wǎng)絡(luò)流量捕獲文件(Pcap文件)和3個(gè)真實(shí)物聯(lián)網(wǎng)設(shè)備的Pcap文件.在每個(gè)惡意的場景中,一臺樹莓派會執(zhí)行一個(gè)特定的惡意軟件,該軟件能夠使用多種協(xié)議并執(zhí)行不同的操作.
場景名稱中的H代表CTU-Honeypot-Capture,M代表CTU-IoT-Malware-Capture.本文只挑選了其中的10個(gè)場景作為數(shù)據(jù)集,表2顯示了物聯(lián)網(wǎng)受到僵尸網(wǎng)絡(luò)感染場景和良性場景的一些數(shù)據(jù).該數(shù)據(jù)集通過捕獲3種不同物聯(lián)網(wǎng)設(shè)備(Philips HUE智能LED燈、Amazon Echo家庭智能助手和Somfy智能門鎖)的網(wǎng)絡(luò)流量,捕獲了3種良性場景下的網(wǎng)絡(luò)流量.這3種物聯(lián)網(wǎng)設(shè)備都是真實(shí)的硬件,提供真實(shí)網(wǎng)絡(luò)行為的數(shù)據(jù).所有場景都運(yùn)行在一個(gè)受控制的網(wǎng)絡(luò)環(huán)境中,沒有限制互聯(lián)網(wǎng)連接,就像真實(shí)的物聯(lián)網(wǎng)設(shè)備一樣.在10個(gè)物聯(lián)網(wǎng)場景中各種攻擊類型的標(biāo)簽分布如表3所示.
表2 10個(gè)物聯(lián)網(wǎng)場景中網(wǎng)絡(luò)流量的匯總數(shù)據(jù)Table 2 Summary of network traffic in ten IoT scenarios
表3 10個(gè)物聯(lián)網(wǎng)場景中各種攻擊類型的標(biāo)簽分布Table 3 Iabels distribution of various attack types in ten IoT scenarios
本次實(shí)驗(yàn)使用SHViT模型的參數(shù)如表4所示.
表4 SHViT模型的參數(shù)設(shè)置Table 4 Parameters setting of SHViT model
SHViT模型在經(jīng)過訓(xùn)練后的loss和準(zhǔn)確率數(shù)據(jù)如表5所示.
表5 SHViT模型的loss和準(zhǔn)確率Table 5 Loss and accuracy of SHViT model
SHViT模型在惡意流量的分類問題上的準(zhǔn)確率如圖6所示.
圖6 使用SHViT模型進(jìn)行惡意流量分類的準(zhǔn)確率Fig.6 Accuracy of malicious traffic classification using SHViT model
在IoT-23數(shù)據(jù)集上,惡意流量二分類的SOTA方法是Ullah[10]等人提出的基于LSTM模型的方法,惡意流量多分類的SOTA方法是Ullah[10]等人提出的基于CNN-BiLSTM模型的方法.與本文使用的ViT模型實(shí)驗(yàn)結(jié)果對比如表6所示.
表6 ViT模型與SOTA模型的實(shí)驗(yàn)結(jié)果對比Table 6 Comparison of experimental results between ViT model and SOTA model
ViT模型引入了在自然語言處理領(lǐng)域中的Transformer架構(gòu),通過學(xué)習(xí)序列中的近距離和遠(yuǎn)距離依賴關(guān)系,可提升分類的準(zhǔn)確率.而LSTM模型無法學(xué)習(xí)到序列中過長的依賴關(guān)系,在惡意流量識別問題上達(dá)到高精度的原因是設(shè)計(jì)了一種特殊的特征集,顯著提升識別的準(zhǔn)確率.而ViT模型使用的是本文提出的PS2GI方法處理后的灰度圖片,排除了人為因素的影響,得到的實(shí)驗(yàn)結(jié)果更具代表性.由表6可知,ViT模型和LSTM模型在惡意流量二分類情況下的實(shí)驗(yàn)結(jié)果表明在準(zhǔn)確率指標(biāo)上沒有差距.在F1-scorre指標(biāo)的對比上,ViT模型比LSTM模型低0.08%左右.ViT模型和CNN-BiLSTM模型在惡意流量多分類情況下的實(shí)驗(yàn)結(jié)果表明ViT模型比CNN-BiLSTM模型在準(zhǔn)確率指標(biāo)上持平.本文首次將ViT模型應(yīng)用在惡意流量識別問題上,具有創(chuàng)新性.
SHViT模型考慮到惡意流量數(shù)據(jù)集是灰度圖片并且相鄰像素塊之間的關(guān)系,采用了一種基于簡化后HViT模型的方法.該方法通過降低Transformer Encoder模塊中全連接層的維度和MLP模塊隱藏層的維度的方式減少參數(shù)量,通過簡化Transformer Encoder模塊中多頭自注意力機(jī)制減少了計(jì)算量,并在SHViT Block前使用MobileNetV2模型進(jìn)行下采樣.ViT-B/16模型和SHViT模型在參數(shù)量上的對比如圖7所示,本文提出的SHViT模型對比ViT模型,在二分類情況下的準(zhǔn)確率指標(biāo)降低了0.13%,在多分類情況下的準(zhǔn)確率降低了0.17%.該模型在降低參數(shù)量和計(jì)算量的同時(shí),還保證惡意流量識別的準(zhǔn)確率.
圖7 兩種模型的參數(shù)量對比Fig.7 Comparison of number of parameters for two models
原始的ViT模型參數(shù)量巨大,達(dá)到86M,模型的輸入是RGB圖片,通道數(shù)為3,而本文的輸入是單通道的灰度圖片,并且將ViT模型中Transformer Encoder模塊的全連接層的輸入和輸出維度的大小都設(shè)置為原來的1/3,ViT模型的參數(shù)量降低至1/9,仍然存在參數(shù)量過大的問題.本文提出的SHViT模型則是將HViT模型中的CNN模塊部分替換為MobileNetV2模型,同時(shí)將Transformer Encoder模塊的全連接層的輸入和輸出維度的大小設(shè)置為原來的1/2,在降低模型參數(shù)量的同時(shí),也降低惡意流量識別的準(zhǔn)確率.ViT-B/16模型和SHViT模型在計(jì)算量上的對比如圖8所示.
圖8 兩種模型的計(jì)算量對比Fig.8 Comparison of computation amount for two models
ViT模型中Transformer Encoder模塊的多頭注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò)的計(jì)算量十分巨大.SHViT模型將HViT模型的CNN模塊替換為MobileNetV2模型,降低了計(jì)算量.將Transformer Encoder模塊的輸入使用一種忽略特征圖像左右相鄰像素的展開方法生成兩個(gè)序列,將這兩個(gè)序列放入Transformer Encoder模塊后即可降低一半的計(jì)算量.ViT-B/16模型的計(jì)算量最大,需要進(jìn)行3.74×109次浮點(diǎn)運(yùn)算(Floating Point Operations,FLOPs).本文提出的SHViT模型該改變了HViT模型中輸入序列的長度,減少了多頭自注意力機(jī)制的計(jì)算量,所以SHViT模型只需要進(jìn)行2.18×109次浮點(diǎn)運(yùn)算.ViT-B/16模型和SHViT模型在推理時(shí)間上的對比如圖9所示.
圖9 4種模型的推理時(shí)間對比Fig.9 Comparison of the inference time for the two models
ViT-B/16模型的推理時(shí)間在二分類的情況下的推理時(shí)間達(dá)到4.67ms,在多分類情況下達(dá)到4.76ms,GPU對Transformer架構(gòu)的優(yōu)化正在進(jìn)行中,推理時(shí)間會進(jìn)一步縮短.本文提出的SHViT模型增加了一定的模型復(fù)雜度,在改變HViT模型中輸入序列的長度時(shí)耗費(fèi)了一些時(shí)間,其在二分類情況下所需的推理時(shí)間達(dá)到6.29ms,在多分類情況下達(dá)到6.37ms.
本文提出了一種新的數(shù)據(jù)包圖像化的表示方法,即PS2GI方法.使用該方法將會話中的數(shù)據(jù)包轉(zhuǎn)換成灰度圖片,得到灰度圖片后直接作為深度學(xué)習(xí)模型的輸入進(jìn)行訓(xùn)練.針對惡意流量識別方法實(shí)現(xiàn)高精度、輕量化的問題,提出一種基于簡化HViT模型注意力機(jī)制的方法.SHViT模型使用MobileNetV2模型對灰度圖片進(jìn)行特征提取和下采樣.此后,提出一種忽略特征圖像左右相鄰像素的展開方法以生成兩個(gè)序列.將這兩個(gè)序列經(jīng)過降低維度的Transformer Encoder模塊后轉(zhuǎn)換為原始特征圖像的形狀,再通過全連接層后得到惡意流量識別的結(jié)果.通過實(shí)驗(yàn)結(jié)果表明,該方法雖然犧牲了一定的準(zhǔn)確率,對比ViT模型增多了推理時(shí)間,但換來了需要更小的參數(shù)量和計(jì)算量.未來的研究方向是擴(kuò)展到其它數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),包括加密流量數(shù)據(jù)集,同時(shí)與更多的其它方法進(jìn)行對比,并且對自注意力機(jī)制進(jìn)行改進(jìn),設(shè)計(jì)一種更適用于惡意流量識別的注意力計(jì)算方法,可進(jìn)一步提升惡意流量識別的準(zhǔn)確率.