丁慶豐,李晉國
(上海電力大學計算機與科學技術學院,上海 201306)
隨著物聯網生態系統的發展,大量的智能終端設備被廣泛應用于多個物聯網應用領域,如智能家居、智慧醫療、智慧交通4.0 等[1]。然而,物聯網終端設備數量的急劇增加帶來了諸多嚴峻的安全隱患,復雜的網絡環境使得物聯網設備產生的數據容易遭到泄露、攻擊或者中斷。一方面,物聯網終端設備往往受計算、內存、帶寬等資源的限制,其自身的局限性給物聯網帶來了更高要求的安全挑戰;另一方面,物聯網設備之間存在著較為密切的關聯性,一旦有設備遭到入侵,可能會導致用戶隱私數據泄露、網絡基礎設施無法正常運行、網絡擁堵或癱瘓等狀況,甚至會造成巨大的經濟損失和社會損失,嚴重威脅企業和國家安全[2]。
在過去幾年中,機器學習和深度學習的興起與發展推動了物聯網安全領域的研究,各種類型的神經網絡(如卷積神經網絡、長短期記憶網絡、自動編碼器)大量應用于物聯網的入侵檢測中[3]。文獻[4]提出一種基于3 個不同分類器(決策樹、JRP 算法、隨機森林)的分級入侵檢測系統(Intrusion Detection System,IDS),前兩個分類器并行運行并將結果饋送到第3 個分類器中,在IDS2017 數據集中取得了較好的效果,但是系統模型相對簡單,準確率和誤報率不理想。文獻[5]為了解決不平衡樣本的問題,基于卷積神經網絡提出一種CNN-FDC 方法,將KDD-CUP99數據集轉化為灰度圖像后,用焦距損失替換原損失函數,弱化了攻擊樣本較少帶來的影響,但是該模型在面對高維數據時往往精度較低。文獻[6]提出一種混合深度學習模型CNN-LSTM,利用長短期記憶網絡來學習高維流量數據的時間特征。與其他先進的入侵檢測算法相比,該模型雖然取得了99.03%的準確率,但主要缺點是使用基于反向傳播隨機梯度的方法來更新權重,這需要較長的時間進行訓練和更新,無法滿足物聯網系統的低時延性要求,且運算開銷大。文獻[7]引入自然語言處理領域比較熱門的Transformer 方法,結合流量數據集合對模型進行改進,提高了檢測精度并降低了時延,但是訓練的樣本是基于統計學的攻擊樣本,當遇到傳播式攻擊時檢測效果較差,無法滿足物聯網系統的高動態性要求。
機器學習和深度學習方法大多被應用在鄰居節點固定的歐式空間上,然而在真實的物聯網場景中,大量的邊緣設備和傳感器會以復雜的、非線性的方式連接在一起,從而構成相鄰節點不固定的非歐式空間[8],但多數傳統方法是淺層學習方法,僅從統計學角度分析單個節點的流量數據的異常,并沒有顯式地學習變量之間現有的關系或者結構,因而常規的深度學習方法在處理非歐式空間數據上的表現仍難以使人滿意。一些狡猾的入侵者會用低強度、高針對性的異常流量發起攻擊,其中數據包與合法流量非常相似,在統計分析層面不會造成重大變化[9],這類新型攻擊往往很難被傳統方法所檢測到。
本文在圖神經網絡的基礎上,提出一種適用于物聯網環境的分布式異常流量檢測方案。對圖卷積神經網絡(Graph Convolution Neural Network,GCN)進行改進,去除網絡中的消息傳遞模塊,在計算損失函數時隱式地引入鄰接信息并結合多層感知機(Multi-Layer Perceptron,MLP)進行訓練,同時設計2 個Graph-MLP(下文簡稱GMLP)簡化計算并方便部署分布式多級異常檢測單元。分布式流量異常檢測體系結構將在每個物聯網的活動節點(如霧節點或者SDN 轉發器)上進行異常檢測,相鄰的傳感器之間相互交換信息,以協同的方式保護網絡,其中邊緣GMLP 用于特征分類并預測相鄰節點發生異常的概率,而節點GMLP 用于節點特征更新并產生自身異常狀態的概率。在此基礎上,引入注意力機制計算每個相鄰節點的關注度,通過優化每個全連接層的權重選擇過程,進一步提升模型的檢測精度。
本文考慮在霧節點的一側或是在SDN 邊緣轉發器上部署一個AI 分布式檢測模塊,來替代以往運行在虛擬服務器或者云上的檢測方法。這些檢測模塊由邊緣轉發器上的低功耗AI 處理器來實現。每個分布式單元關注數據傳輸業務的子集,包括檢測鄰居節點的模塊信息和異常狀態,最終實現本地化的異常流量檢測。
如圖1 所示,描述一個通用的物聯網架構體系來支持本文所提出的分布式物聯網異常檢測方案的實現,該基礎設施可以適用于多個物聯網應用領域。由圖1 可知,整個架構由物聯網設備、霧節點和云計算3 層物聯網設施組成,具有云-邊-端3 層分布式體系[10]。其中:云計算層位于整個架構的最高層,為整個網絡提供高速海量的計算資源和分析能力;邊緣計算層位于終端設備和云計算層中間,節點包括網關、路由器以及邊緣服務器;終端節點處于網絡最邊緣,包括各類傳感器和移動設備,負責收集和轉發各類原始數據[11]。在多數物聯網場景下,如果將處理時間敏感數據的應用程序運行在霧節點上,將大量原始數據傳輸到中央云計算層處理,不僅會帶來傳輸的延遲,而且會導致額外的計算開銷[12]。

圖1 物聯網分布式異常流量檢測架構Fig.1 Distributed abnormal traffic detection architecture of IoT
為了減少資源開銷并優化檢測效果,可將物聯網設備組成的網絡看作是由節點設備之間通信通道組成的圖,其結構和行為可以類比為圖中各個節點的邊,而網絡中的異常行為可以看作是異常節點或者是異常邊,則由圖神經網絡可以直接處理圖結構的數據。利用這一特點,可以提取網絡中出現的許多結構化特征,并且利用它們對節點進行分類。將每一個SDN 轉發器和核心轉發器看作是圖的節點,每個節點對應著一個描述節點行為的標簽,而將它之間的底層連接看成邊,從而可以將異常流量檢測的任務看作是檢測圖中的異常節點或者異常邊。
圖卷積神經網絡可以學習靜態網絡中的內部關系,包括網絡中的節點如何在正常行為模式中相互作用,以及如何與進出站的流量進行通信。在本文方案中,圖卷積神經網絡用于學習網絡流之間的時空關系。給定圖關系公式G=(V,E),其中E?R|V|×|V|是所有頂點的集合,為鄰接矩陣,其元素表示各個頂點之間的連接關系。
以圖2(a)為代表的歐式空間卷積操作實際上是使用固定大小可學習的卷積核來抽取像素的特征。與這種方法不同,圖結構中的鄰居節點是不固定的,因此,研究人員將頻譜的處理方式擴展到圖(非歐幾里得空間)上,如圖2(b)所示。

圖2 傳統卷積核與圖卷積核Fig.2 Traditional convolution kernel and graph convolution kernel
圖上的頻域卷積主要是利用圖傅里葉變換來實現卷積,可以定義為輸入信號x?RN與傅里葉域中過濾器g=diag(θ)的乘積,如式(1)所示:

在式(1)中,U是由歸一化拉普拉斯矩陣的特征向量組成的矩陣,計算公式如下:

其中:IN是大小為N×N的矩陣;A是鄰接矩陣;度矩陣元素定義為Dij=
為了降低計算成本,一些研究人員采用切比雪夫多項式Tk(x)的K階截斷逼近的方法,從而簡化了用切比雪夫多項式計算g?x的方法,如式(3)所示:

經過上述推導,最終的圖卷積神經網絡表達式為:

其中:第l層的特征是X(l+1)?RN×D,N是節點數,D是特征向量表示的維度;W(l)是待訓練的第l個單個線性層的權重;σ是激活函數;歸一化矩陣用來傳遞鄰居節點之間的信息。

GCN 模型的輸入是一個圖,其中包含M個具有特征的任意節點,到該節點的連接作為該圖的邊。使用GCN 檢測模型,目標是學習圖上特征的函數來對輸入節點進行分類[13]。在常規的圖卷積神經網絡中,訓練和分類過程都依賴于消息傳遞模塊,即通過鄰接矩陣和特征相乘來顯式地學習圖的結構信息,多層感知機和連通節點上的求和運算被結合在一起在鄰居之間傳播特征[14]。因此,圖神經網絡模型開銷往往比較大,不利于部署在一些對性能和效率要求比較高的應用環境中。
如上文所述,以往的圖模型重點關注如何利用鄰居之間的消息傳遞,通過節點之間的信息交換,在前饋特征傳播中顯式地學習圖的特征信息。但是這些頻繁的消息傳遞往往會導致復雜的結構和復雜的計算,不適用于物聯網環境中的網絡異常流量檢測。因此,本文引入一種新的思路來學習節點的特征變換,以避免顯式的消息傳遞。整體結構上,以多層感知機為基礎,將其與一種新的對比損失函數相結合來補償在圖數據建模中的顯示結構,以監督節點特征變換的學習。
1.3.1 基于MLP 的圖模型結構
圖3 展示了本文改進的圖多層MLP 模型結構,其中最底層是特征處理模塊,原始的節點特征X經過一組經典的神經網絡處理模塊(線性層-激活函數-層歸一化-Dropout)后得到預處理的節點特征表示隨后被用于2 個部分計算模型的損失函數經過一層線性變化得到特征表示Z用于計算鄰域對比損失;Z經過一層線性變化得到特征表示Y(此處為模型輸出層,維度與分類數目相同)用于計算交叉熵(Cross Entropy,CE)損失。

圖3 圖多層感知機模型結構Fig.3 Structure of graph multi-layer perception model
整個模型可以表示為:

1.3.2 監督節點特征轉換的對比鄰域損失
為了有效地提取圖連接信息特征,模型中的損失函數應遵循同質性原則,即在特征表示空間中,連接的節點應是相似的,不連接的節點應是遠離的,這和對比學習中的理念非常吻合。基于這樣的動機,本文應用鄰域對比損失函數,使得基于MLP 的模型無需顯式的消息傳遞模塊即可學習圖節點的連接特征。
在鄰域對比損失函數中,對于每個節點,其r階鄰居被認為是正樣本,其他節點被認為是負樣本。該損失函數鼓勵正樣本更接近目標節點,并在特征距離方面將負樣本推離目標節點。具體而言,第i個節點的鄰域對比損失可以表示為:

其中:B表示batchsize;sim()是余弦相似度計算函數;τ是常數;γij表示節點i和節點j之間的連接強度,將其計算為歸一化鄰接矩陣A的r次方當且僅當節點j是節點i的r階鄰居,γij才為 非0 值。

最終,模型的損失函數由Ncontrast 損失和CE 損失兩部分組成:

其中:lCE是交叉熵損失;α是平衡這2個損失的加權系數。
1.3.3 模型訓練
整個模型以端到端的方式進行訓練。該模型的前饋不需要鄰接矩陣,在計算訓練過程中的損失時只是參考圖結構,與傳統的圖形建模相比,具有更大的靈活性,因為該框架可以在沒有完整圖結構信息的情況下進行批量訓練。
如算法1 所示,在每個batch 中,隨機抽取B個節點,并取對應的鄰接信息和節點特征X。需要注意的是,對于某些節點i,由于批次采樣的隨機性,可能會出現批次中沒有正樣本的情況,在這種情況下,將刪除節點i的損失。
算法1GMLP

在推理過程中,傳統的圖建模(如GCN)同時需要鄰接矩陣和節點特征作為輸入[15],而本文基于MLP 的方法只需要節點特征作為輸入。因此,當鄰接信息被破壞或丟失時,GMLP 仍然可以提供一致可靠的結果。此外,在傳統的圖建模中,圖信息被嵌入到輸入的鄰接矩陣中。對于這些模型,圖節點變換的學習在很大程度上依賴于內部消息傳遞,而內部消息傳遞對每個鄰接矩陣輸入中的連接非常敏感[16]。由于本文對圖形結構的監督是建立在損失函數上的,因此模型能夠在節點特征轉換過程中學習圖結構的分布,而無需前饋消息傳遞。
如圖4 所示,本文提出2 個獨立的模型,用于更新節點及其對應邊的屬性,基于此構建了部署在邊緣轉發器上的分布式檢測單元。該架構的核心模塊由邊緣GMLP 和節點GMLP 組成,分別用于對節點和邊的狀態進行分類,更新節點及其相應邊的屬性。邊緣檢測單元用于特征分類并預測相鄰節點上異常的概率,而節點檢測單元用于節點的特征更新并計算導致其自身異常狀態的概率。

圖4 單個異常流量檢測單元結構Fig.4 Structure of single traffic anomaly detection unit
與常規的圖神經網絡模型運算不同,本文實現了一個通信通道,在通道內建立了信息交換鄰域,用于組合邊緣GMLP 和節點GMLP 的信息。模型的輸入分別代表邊特征的3 個屬性和節點特征的5 個屬性,每個神經元通過單向鏈接連接。具體到細節,定義了輸入和輸出:假設有節點j及其相鄰節點i=1,2,…,N,邊的輸入由鄰居對應的邊緣特征向量(在t-1 時刻為)、節點自身的信息以及鄰居對應的邊緣特征向量組成,將數據通過全連接層的輸出更新邊緣特征向量。與此同時,節點GMLP模塊同樣根據收集到的信息更新節點自身的特征表示,然后將更新的邊緣特征向量與第i個節點的特征進行拼接作為Softmax 分類器的輸入,最后經過分類得到節點j的異常概率。與其他集中式入侵檢測系統相比,這種實現信息交換的方式不需要顯式的消息傳遞,有效地減少了對資源的占用。
此外,在圖神經網絡的正向傳播過程中,需要關注起重要作用的節點信息,而忽略起次要作用的節點信息。為了進一步提高檢測的精度,本文在最后一層分類之前加入了注意力機制模塊,當每個節點更新隱含層的輸出時,通過計算相鄰節點的關注度來給每個相鄰節點分配不同的權值,并將權值較高的節點作為神經網絡關注的重點[17]。注意力機制的引入減小了處理高維度數據的計算負擔,使檢測系統更專注于找到數據中顯著的相關有用信息,從而提高輸出質量。
為了評估本文方案的檢測性能,利用Python、NumPy、Pandas、Pytorch 等工具,在64 位計算機上使用Intel?i9-9700K 16 GB RAM,Nvidia GeForce RTX 2080Ti 32 GB 和10.2 版本的CUDA 進行模擬實驗。
本文使用的數據集為CTU-13[18],這是2011 年在CTU 大學捕獲的僵尸網絡流量數據集。該數據集包含13 種不同的攻擊,每個數據包都包含有關各種客戶端和服務器的信息。網絡由30 個轉發器和170 個物聯網設備組成,這些轉發器和物聯網設備根據CTU 中的分布式設備交換數據。數據集的統計信息如表1 所示。

表1 CTU-13 數據集特征描述Table 1 Feature description of CTU-13 dataset
2.3.1 蠕蟲攻擊模擬
為了更好地描述受感染轉發器上的傳播特性并增加攻擊的多樣性,在數據集中模擬蠕蟲攻擊,其網絡流量實例同樣被標記為正常和異常。注入文獻[16,19]的僵尸網絡簽名的異常流量,通過檢查這種類型的特定攻擊,能夠更好地驗證GNN 在網絡傳播中檢測攻擊方面的優勢。在圖5 中給出一個示例:邊緣轉發器的代理收到來自IoT 的監控攝像頭的蠕蟲攻擊,顯示異常行為的惡意軟件試圖在物聯網中進一步傳播感染,將攻擊帶到轉發器的相鄰節點中,到第二階段攻擊已經蔓延到相鄰的轉發器。

圖5 蠕蟲攻擊兩階段過程Fig.5 Process of two stages of worm attack
2.3.2 數據集預處理
CTU-13 原始網絡數據集包含多種類型的數據,因此,在模型訓練和測試前需要進行預處理,以便相關特征能夠歸類到底層圖的邊和頂點。為了提取異常行為相關的特征,本文利用時間戳、源和目的IP 地址、數據包數、字節數以及方向值的信息,數據集中的信息交換主要根據源IP 地址和目的IP 地址以連續流的形式描述。為了在圖的每個節點和邊上特定地分配特征,對數據進行分組以提供每個節點的信息,從而分別為節點和邊構造特征向量。
假設j是所關注的圖,i是指定時間窗口,定義一個包含多個索引記錄的特征向量bri,duri],其中,j可以是節點該向量包含以下記錄:ps 定義了在特定時間段內從一個節點/邊緣發送到另一個節點/邊緣的數據包數量;pr 定義了接收的數據包數量;bs 定義了在一定時間內從一個節點/邊發送到另一個節點/邊的字節數;br 顯示了從節點接收的字節數;dur(連接持續時間)描述了2 個節點/邊緣交換數據的連接時間和遵循日期時間格式的時間 戳。最 后,Δt?[t1,t2],RΔt定義 為RΔt=N定義為N=length(RΔt)。表2和表3 給出了從原始網絡數據中提取的特征組(節點和邊),以及相應的數學解釋。

表2 節點特征矩陣描述Table 2 Node characteristic description

表3 邊特征描述Table 3 Edge characteristic description
異常流量檢測的性能指標依賴于混淆矩陣。在混淆矩陣中,真正類(TP)為正確分類的異常流量實例;假正類(FP)為錯誤分類的正常流量實例;真反類(TN)為正確分類的正常流量實例;假反類(FN)為錯誤分類的異常流量實例。這4 項用于生成以下績效評估指標:
準確率,即模型正確分類的樣本數與樣本總數的比值,計算公式如下:

精確率,即模型正確分類的正常樣本數與正常樣本總數的比值,計算公式如下:

召回率(也稱為查全率),即模型正確分類的入侵樣本數與正確分類的樣本總數的比值,計算公式如下:

誤報率(False Positive Rate,FPR),即被誤報為入侵的正常樣本數與正常樣本總數的比值,計算公式如下:

2.5.1 檢測性能比較
為證明本文方案的優勢,使用經典的機器學習算法和深度學習方法在數據集CTU-13 上進行實驗對比,其中包括3 種機器學習方法和3 種深度學習方法。使用Adam 優化器來訓練模型,統一將批大小設置為1 024,學習率設置為0.000 1,批次設置為30,dropout 設置為0.5。使用Pytorch 構建檢測模型,實驗各項性能指標如表4 所示。結果表明,本文方案在CTU-13 數據集上準確率、精確率、召回率和誤報率最高可達0.999 3、0.982 1、0.995 3 和0.42,準確率較其他對比方案最高提升了0.269 2。這得益于本文改進的圖神經網絡模型在大型的數據集中能夠更好地學習到復雜特征,因為越大的數據集中通信模式越復雜,IP 節點和交互邊越多,本文改進的模型相比于其他方法更容易發揮出優勢,更準確地檢測出異常流量。此外,注意力機制的引入也進一步提升了檢測效果,使得本文方案檢測性能優于其他方案。

表4 不同方案檢測效果比較Table 4 Comparison of detection effects of different schemes %
利用Matplotlib 根據實驗結果繪制ROC 曲線圖。定義橫坐標為假陽性率,縱坐標為真陽性率,根據ROC 曲線可以看到模型在任意閾值下的學習效果。ROC 曲線將整個圖形分為兩部分,曲線以下的面積稱為曲線下面積(AUC),表示檢測的準確性,曲線越接近左上角性能越好,AUC 值越大(曲線下面積越大),預測精度就越高[26]。選取檢測性能比較好的3 個深度學習方法進行AUC 值的對比。如圖6 所示,本文模型在CTU-13 數據上AUC 值達到了0.99,較其他模型最高可提升17.8%,這也從另外一個角度表明,在物聯網環境下,分布式異常檢測方案能夠獲得比較理想的檢測效果。

圖6 不同方案的ROC 曲線對比Fig.6 Comparison of ROC curves of different schemes
2.5.2 資源和時間開銷分析
為了驗證部署分布式檢測單元與集中式IDS 相對的優勢,本文還比較了不同方案在資源消耗和時間開銷方面的性能。通過柱狀圖展示不同方案之間的資源消耗,如圖7 所示。根據數據不難看出,本文方案帶寬消耗最低只有845 kb/s,與其他主流方法相比,資源消耗顯著降低,這是因為分布式異常檢測不需要將數據傳輸到云服務器的IDS 進行計算,各個檢測單元以較少的帶寬占用降低了集中式IDS 的資源消耗。

圖7 不同方案的帶寬消耗比較Fig.7 Bandwidth comparison of different schemes
表5 展示了本文方案和其他對比方案的訓練參數數量和運行時間,使用GPU 來加快所有模型的訓練速度。可以看出,本文方案通過改進傳統GCN 的消息傳遞模塊,在時間開銷方面取得了良好的提升,訓練時間和訓練速度均有所減少。同時算法中的可訓練參數較少,可以實現高效的并行計算。

表5 不同方案的計算復雜度比較Table 5 Computational complexity comparison of different schemes
2.5.3 消融實驗分析
本節進行消融實驗,驗證不同改進點對流量異常檢測的效果,實驗結果如表6 所示。其中,改進1表示替換GCN 中的消息傳遞模塊,使用GMLP 來訓練圖神經網絡;改進2 表示注入蠕蟲傳播攻擊,在各個轉發器IP 節點部署分布式異常檢測單元;改進3表示引入注意力模塊。分別從方案中刪除幾個改進點,組成新的模型。

表6 消融實驗結果Table 6 Ablation experimental results
由表6 中數據可知:改進的GMLP 模塊可以使檢測時間降低一半,因為原本的圖神經網絡結構要不斷更新相鄰節點之間的消息傳遞,導致訓練和測試時間較長;同時分布式異常檢測單元實現了異常檢測的本地化,避免了頻繁與集中式IDS 進行數據交互,帶寬和資源消耗得以明顯降低;此外,注意力機制使得模型在訓練時更關注主要權重學習和優化重點參數,準確率和精度得到進一步提升。
本文結合物聯網環境中設備節點復雜的特點以及低時延和高精度的檢測需求,提出一種分布式異常流量檢測方案。針對圖卷積神經網絡進行優化,以改進的多層感知機替換圖學習中原有的消息傳遞模塊,使模型更適用于物聯網環境。在此基礎上,結合物聯網節點眾多的特性,設計實現節點GMLP 和邊緣GMLP 進行分布式流量異常檢測,實現本地化的異常流量檢測,并引入注意力機制進一步提升模型的檢測效果。實驗結果表明,本文方案不僅有效提高了檢測精度,而且還減少了網絡通信中的開銷,加快了檢測速度。下一步將對更多類型的流量數據集進行圖結構分析,在更廣泛的場景中進行模型訓練和測試。