李 洋, 余亞聰, 張立武, 邱蘭馨, 曹 委, 秦中元
1(南瑞集團有限公司(國網電力科學研究院有限公司), 南京 211106)
2(東南大學 網絡空間安全學院, 南京 211189)
3(國網浙江省電力有限公司信息通信分公司, 杭州 310016)
眾所周知, 電力是主要能源之一, 在工業和生活中發揮著不可替代的作用. 隨著信息和通信技術(information and communication technology, ICT)的最新進展, 智能電網(smart grid, SG)提供了一個經濟、高效、可持續的電力系統, 已經被廣泛引入. 智能電網生態系統通常由多個智能設備組成, 包括智能計量、收集和監測系統, 它們能夠產生大量通過互聯網進行傳輸的數據. 然而, 在許多物理網絡系統中(如智能電網),標準通信協議缺乏基本的安全措施, 如加密和認證, 這使得工業網絡特別容易受到攻擊[1]. 2020年4月, 葡萄牙的一家跨國天然氣和電力能源公司受到Ragnar Locker勒索軟件的攻擊, 被索求巨額贖金. 同年6月, 巴西電力公司Light S.A.同樣被黑客勒索了巨額贖金.
在當今的智能電網系統中, 特別是在高級計量基礎設施(advanced metering infrastructure, AMI)中, 通常會收集和傳輸用戶的地理位置、身份表示和電力消耗. 一旦攻擊者破壞了智能電力終端, 如智能電表,用戶的私人信息將會面臨被泄露的風險. 攻擊者可以根據用戶分時段的用電情況推斷出用戶的用電模式,從而推斷出用戶的出行習慣, 并在用戶不在家時實施入室盜竊. 所以先進的入侵檢測安全架構是智能電網的一個重要組成部分. 它不僅可以通過智能終端以規定的方式收集和分析用戶的電力數據, 還能提供雙向的通信.
目前, 智能電力系統主要由一系列承擔不同角色的智能嵌入式電力終端組成, 如配電終端單元、變壓器終端單元、饋線終端單元等. 這些智能嵌入式終端通過與智能電網的互動傳輸電力信息, 使整個網絡更加智能化. 然而目前智能電力系統主要存在以下兩個問題: (1) 電力信息復雜且數據量龐大, 常規的入侵檢測系統難以應對如此繁重的計算壓力. (2) 在引入大量異構電力智能終端設備的同時, 這些設備本身也存在大量漏洞, 容易被攻擊者利用, 成為進一步攻擊電網主站的跳板. 一旦電力智能終端被入侵, 整個電網將面臨被破壞的可能.
為了解決智能終端被入侵的問題, 近年來國內外學者提出了許多研究方案. Hinton等人[2]提出了使用自編碼器來識別異常數據, Zong等人[3]提出深度自編碼高斯混合模型用于無監督的異常檢測, 解決了單一高斯分布不能適應復雜分布的問題. 但他們只是根據重建誤差來檢測異常, 缺乏客觀性和可變性.
本文對于智能電網的入侵檢測進行了深入的研究,提出了區域式訓練(block-training, BT)架構, 使智能終端的IDS適應本地流量特征, 并通過合理分配計算資源, 進一步分散計算中心的計算壓力. 此外, 還提出了基于交叉驗證的遞歸特征消除的差分自編碼器算法(RFECV-VAE), 在特征選擇過程使用遞歸特征消除交叉驗證法, 異常檢測采用差分自編碼器, 經過實驗驗證,該算法更適合于高維數據和大規模數據集, 具有較高的準確性和較少的檢測時間.
本文的其余部分組織如下: 第2節概述了當前領域內的相關研究工作, 第3節介紹了本文的研究方法,包括BT架構和RFECV-VAE算法, 第4節對實驗結果進行分析并且對模型屬性進行相關評估, 第5節給出了本文的結論和對日后發展方向的思考.
由于網絡威脅層出不窮, 關鍵基礎設施的網絡安全, 特別是智能電網安全越來越引起人們的重視.智能電網安全問題可能來自許多方面, 如黑客攻擊、網絡犯罪和網絡戰爭.
Hahn[4]提出, 為了使攻擊對系統產生負面影響, 攻擊者不僅需要知道如何破壞電網的網絡元素, 還需要知道如何控制網絡元素來操縱物理系統. 為了解決智能電網通信中存在的認證問題, Aghapour等人[5]提出通過使用基于知識、占有和生物識別的3個認證因素來加強對用戶的身份認證, 以達到防御偽裝攻擊的目的.
近年來, 在異常檢測領域提出了許多新方法.在本節中, 我們回顧并總結了近年來提出的入侵檢測算法.
支持向量機(support vector machines, SVM)[6]是一種可以將n維空間數據進行分類的方法. Winter等人[7]提出了一種感應式網絡IDS, 它使用OCSVM (one-class SVM)作用于網絡流量的識別并進行分析. Wagner等人[8]提出了一種基于SVM的處理大量網絡流記錄的檢測方法.
聚類方法在檢測數據集的獨特性方面表現良Casas等人[9]提出了一種基于異常檢測的IDS, 它通過使用各種無監督聚類方法將網絡中的數據包隨機地收集成流, 以達到檢測網絡流異常的目的. Hosseinpour等人[10]提出了一種基于無監督聚類和人工免疫系統的分布式IDS, 取得了不錯的檢測結果.
決策樹(decision tree, DT)根據樹的每個節點的值建立規則, 并生成一個樹模型. Thaseen等人[11]討論了基于決策樹的各種算法在入侵檢測分類中的效果和影響. Stevanovic等人[12]提出了一種有效的方法來檢測僵尸網絡. 結果顯示, 在有監督的機器學習方法中, 隨機森林(random forest, RF)方法表現最好. Zhou[13]提出, 異常現象有兩個明顯的特征: 少和不同. 這兩個特點使得異常現象更容易受到一種叫做隔離的機制的影響. 所以他設計了一個可以有效構建隔離實例的二叉樹結構, 稱為隔離樹(iTree). 由于對隔離的敏感性, 離群點和正常點都分布在iTree的兩端, 較淺的點更可能是離群點, 較深的點更可能是正常點. Jiang等人[14]提出, 他們提出的PSO-XGBoost模型顯示出比其他替代模型更高的分類精度.
人工神經網絡(artificial neural network, ANN)的目標是模擬人體的神經網絡. Song等人[15]提出了一個使用反向傳播神經網絡分類器和統計特征向量的異常檢測系統. Siniosoglou等人[16]根據自編碼器和對抗生成網絡, 提出了一種適用于智能電網的入侵檢測系統,并且通過實驗證明了該系統的有效性. Abuadlla等人[17]提出了一種IDS, 以檢測基于流量的數據中的一些特定的入侵行為. Vinayakumar等人[18]創建了一個高效的IDS, 基于深度神經網絡, 可以通過監督學習方法識別突發的入侵行為. Mendon?a等人[19]提出了一種基于樹-卷積神經網絡分層算法和軟根-符號激活函數的算法.該模型減少了生成模型的訓練時間, 并被用于檢測DDoS、網絡攻擊. Andresini等人[20]提出了一種新穎的深度學習方法, 該方法使用卷積神經網絡, 為計算機網絡提供了一種有效的方法來分析網絡流量, 以區分惡意活動. Rajadurai等人[21]提出了結合多種機器學習算法的堆疊式集合學習.
自編碼器(autoencoder, AE)是一種神經網絡方法,基本上由一個編碼器和一個解碼器構成, 它能夠以無監督的方式將輸入向量重建為輸出向量[22]. Hinton等人[2]提出, 使用自編碼器可以降低高維數據的維度. Zong等人[3]提出了深度自動編碼高斯混合模型, 用于無監督的異常檢測. Vincent等人[23]提出了一種具有更強的特征學習能力的基于去噪自編碼器的結構. Kingma等人[24]介紹了一種基于隨機變異推理和學習的算法, 在具有連續潛變量和后驗分布的大數據集的情況下, 能有效地推斷和學習有向概率模型. An等人[25]提出了利用差分自編碼器中重建概率來檢測異常. Li等人[26]提出了基于隨機森林算法的自編碼器入侵檢測系統, 該算法可以預測自編碼器的結果, 在檢測時間和檢測精度上表現更好.
差分自編碼器是一種有向概率圖形模型, 其后驗概率由神經網絡逼近, 形成一種類似于自動編碼器的結構. VAE的結構如圖1所示[25].

圖1 差分自編碼器架構
圖1的左半部分是編碼過程, 右半部分是解碼過程. x是模型的原始輸入, z是模型的潛變量. qφ(z|x)是近似后驗. z是由采樣和輸入數據x的參數生成的, 它不僅包含x的信息, 而且滿足高斯分布, 便于后續梯度下降或其他優化技術的應用. pθ(x|z)代表在給定潛伏變量z時, 數據x的可能性.是基于潛伏變量z產生的新樣本. 從訓練好的VAE概率編碼器中提取大量樣本進行測試, 在每次計算中, 輸入是編碼器的每個樣本, 輸出是概率解碼器根據算法輸出的均值和方差參數.根據輸出的均值和方差, 可以計算出從分布中產生原始數據的概率. 異常判斷的標準是, 重建概率低于所劃定的閾值的數據點將被歸類為異常點. 重建概率和重建誤差在許多方面是不同的[25]. 重建概率閾值的決定是比較客觀、合法和容易獲得的.
智能電網信息系統由3個重要組成部分組成: 智能終端、數據中心和中央系統.目前的智能電網系統存在兩個問題: (1) 智能終端的計算資源分配不均, 導致有的區域沒有計算資源對細微的異常進行識別, 而有的區域計算資源處于空閑狀態. (2) 不同類型和地區的終端受到的攻擊具有局域性. 為了解決這些問題, 本文提出了基于區域式訓練架構模型的智能電網入侵檢測模型, 如圖2所示.

圖2 區域式訓練系統架構模型
如圖2所示, 我們在邏輯上將網絡分為電力網絡和通信網絡. 電力網絡主要負責傳輸能量流, 而通信網絡則負責傳輸信息流. 該架構中主要分為4層, 分別是電力物理層、電力設備層、電力網絡層和電力應用層.下面對各層進行介紹.
電力物理層涉及與發電、輸電和配電有關的物理層設施, 負責底層電力的生成、運輸和分配等功能.
電力設備層包括各種電力終端, 如智能電表、配電終端單元、變壓器終端單元等. 電力采集模塊從電力網絡中采集電力信息, 經處理器處理后, 電力信息通過通信模塊與通信網絡進行交互. 我們將邏輯上相鄰的一些智能終端組合成一個區塊, 在一個區塊中, 擁有最高計算能力的終端將被選為區塊的領導者(leader),其他成員為追隨者(follower). Leader可以根據一段時間內的實際流量來對區塊的入侵識別模型進行訓練,在訓練完模型后, 它將參數推送給同一區塊的follower終端, follower終端根據leader發送的參數更新自己識別模型的參數.如果leader超過一定的時間沒有發送更新的參數, 可以認為leader已經失去了作為領導者的能力, 該區塊中將重新選舉出一個新的leader. 通過這種方式, 普通終端只參與異常的識別, 而不參與模型的訓練, 這樣可以分攤數據中心的計算壓力, 并且可以減少絕大多數的終端重復計算造成的計算資源浪費.
電力網絡層由無線網絡、互聯網、電力專用網等組成. 電力網絡層負責電力設備和網絡層之間的信息流傳輸. 該層是網絡攻擊的主要目標, 攻擊者通過截取、竊聽、篡改該層的信息報文進行攻擊.
電力應用層主要包括電力數據中心和中央系統控制平臺. 除了存儲所有的電力信息外, 該層還負責每個區塊的leader的選舉和管理. 為了保證數據中心的安全, 數據中心的IDS必須具有最高的安全級別. 因此,數據中心的IDS使用網絡中出現的所有信息流進行訓練以保證數據中心的安全.
總而言之, 區塊訓練和leader-follower模式不僅可以分散數據中心的計算壓力, 減少部分終端重復計算的資源浪費, 還可以使特定范圍內的終端準確地識別自己網段的異常情況.
本文提出的RFECV-VAE算法分為訓練和測試兩部分. 圖3是RFECV-VAE訓練過程的流程圖, 圖4是測試過程流程圖. 在圖3中, 左邊部分展示了特征選擇過程, 右邊部分展示了訓練過程. 訓練的目的是通過對正常數據的訓練, 獲得決定編碼和解碼結果的參數θ和Φ. 圖4中, 本算法將通過對計算出的測試數據的重建概率和設定的閾值進行比較以檢測其是否為異常數據. 該算法的實現步驟如下.

圖3 RFECV-VAE算法訓練流程圖

圖4 RFECV-VAE算法訓練流程圖
預處理包括以下步驟: 采樣、獨熱編碼、歸一化和特征選擇.
(1) 采樣
基準數據集將被分為兩部分: 訓練集和測試集. 由于基準數據集中存在DDoS攻擊, 異常數據量遠大于正常數據量, 所以有必要對數據集進行抽樣.
本文提出的算法是基于無監督學習的. 因此, 訓練模型只需要對正常數據集進行訓練, 以學習正常數據的特征. 為了驗證模型識別異常的能力, 測試集中的異常數據量應該與正常數據量相似.
(2) 獨熱編碼
每條數據的特征類型分為數字特征和字符特征.為了使模型能夠學習字符特征, 我們對字符特征進行一次獨熱編碼, 將其轉為數字特征, 使得字符特征之間的距離計算更加合理, 但會造成特征數量的增加.
(3) 歸一化
為了使數據更具可比性, 采用最大和最小歸一化方法, 使所有特征指標在處理后處于同一數量級, 以減少極端特征取值對準確率的影響. 計算公式見式(1),其中, xmax表示該特征在所有樣本中的最大值, xmin表示該特征在所有樣本中的最小值, xnorm表示特征歸一化后取值, 取值范圍在0到1之間.

經過獨熱編碼, 特征維度明顯增加. 為了降低模型學習的難度, 我們對數據進行特征篩選, 選擇最能代表數據的特征. 這里我們使用遞歸特征消除交叉驗證法.遞歸特征消除(recursive feature elimination, RFE)的主要思想是反復建立模型并選擇最好(或最差)的特征,然后把選擇的特征放在一邊, 最后對剩下的特征重復這個過程, 直到所有的特征都被遍歷. 這個過程中消除的順序就是特征的排序. 交叉驗證(cross-validation,CV)的目的是為了對RFE的結果進行驗證, 具體的步驟如下: 首先, 根據在RFE階段確定的特征重要性, 依次選擇不同數量的特征. 之后對選定的特征集進行交叉驗證, 最后確定平均得分最高的特征集.
異常檢測任務是以無監督的方式執行的, 這意味著只有正常的數據樣本可以被用來訓練VAE. 訓練過程中, 概率解碼器gθ和編碼器 fφ分別對原始輸入變量空間和潛在變量空間的多向正態分布進行參數化. 測試過程是通過從訓練好的VAE模型, 對每個測試用例產生的平均值和方差參數來計算從分布中產生的原始數據的概率, 也稱為重構概率(reconstruction probability,RP), 重構概率和預先設定的閾值進行比較, 比較結果作為異常的判定準則. 其中, 重構概率計算方式是通過對Eqφ(z|x)[logpθ(x|z)]的Monte Carlo估計.
RP通過使用原始輸入變量分布參數的隨機潛在變量來計算的. 這基本上等同于從近似后驗分布中提取的一些潛在變量產生數據的概率. 當重建概率大于閾值時, 代表該數據為異常數據.
實驗環境包括硬件設備和軟件環境. 硬件設備方面, 我們采用了智能配電終端PDZ 932. 該終端集成了供電信息采集、存儲和傳輸、負荷控制、設備通信聯網和狀態監測、決策和本地分析、協同計算和主站通信等功能. 模型的訓練是在Core i7處理器和GTX1050Ti顯卡的計算機中進行的. 軟件環境方面, 我們使用Python 3環境和TensorFlow庫.
我們在2021年4月和2021年6月期間從電力終端收集了大約300萬條傳輸信息, 其中每一條都代表了電力終端和主站之間的一次通信. 由于電力終端的傳輸報文是基于TCP/IP協議, 我們對報文進行分析和挖掘, 可以實現對電力網絡層的安全防護. 在實際收集到的流量包中, 主要有以下4類異常情況: 拒絕服務攻擊(DoS)、遠程機器未授權認證(R2L)、本地用戶未授權訪問(U2R)和端口檢測(Probing).
首先, 需要對從電力終端采集的數據進行重建, 以平衡正常樣本和異常樣本. 經過數據采樣, 我們構建了訓練集和測試集, 數據結構如表1所示.

表1 訓練數據集和測試數據集的分布
表1中, 正常數據按照7:3劃分, 70%的正常數據作為訓練集數據, 另外30%作為測試機的正常數據.攻擊數據共包含238 047條各種攻擊類型的數據. 由于該算法屬于無監督學習, 訓練集不包括異常數據, 模型只學習正常數據的特征. 測試集為了檢測不同類型的異常, 設置正常數據和異常數據的比例在1:1左右.
然后, 在獨熱編碼階段, 采樣數據的維度會增加,因為字符類型的特征被替換成數字特征. 對于所收集的數據集, 字符類型的特征是協議類型(protocol type)、標志(flag)和服務(service). 在獨熱編碼之后, 特征從41維變成118維.
最后, 對所有的數字特征進行歸一化, 使其取值全部處于同一范圍內.
本實驗特征選擇階段選擇的模型是隨機森林, 評價標準是準確率. 圖5顯示了模型準確率與所選數據特征數量的變化.
從圖5中可以看出, 當選擇的特征數量達到16個左右時, 準確率達到了峰值. 繼續增加特征選擇的數量并不會明顯提高準確率, 反而會增加維度, 不利于模型的訓練. 因此, 我們選擇最適合本實驗的特征, 對原始數據進行處理. 最后所選特征為dst_host_count, dst_bytes,logged_in, count, srv_count, same_srv_rate, service_ecr_i, diff_srv_rate, dst_host_srv_count, dst_host_same_srv_rate, protocol_type_icmp, dst_host_diff_srv_rate, service_http, src_bytes, dst_host_rerror_rate,dst_host_same_src_port_rae.

圖5 交叉驗證得分和特征選擇數量的關系曲線圖
為了避免單一抽樣的隨機性, 我們進行了20輪實驗, 將每個實驗的結果疊加, 取平均值作為最終結果.模型的具體參數設置見表2.

表2 訓練模型中參數的設置
除了選擇準確率和訓練時間作為評價標準, 我們另外選擇了ROC_AUC和F1_score作為額外的評價標準. ROC是一條以真陽性率(TPR)為縱坐標, 以假陽性率(FPR)為橫坐標的曲線. AUC則是ROC曲線下面積, AUC值越大, 則代表分類效果越好. F1_score的作用是協調準確性(Precision)和召回率(Recall).F1_score的計算公式如式(2):

這里將實驗結果分析分為兩部分. 一是參數設置對模型的影響, 二是相同條件下不同算法的結果比較.
在實驗1中, 我們研究了重構概率閾值選擇和迭代次數對模型識別效果的影響. 我們以表2的參數設置為基準, 每次只改變其中一個參數變量. 重建概率從0.90開始到0.99結束, 而迭代次數從1開始到2 000次結束, 模型的準確率、F1_score和ROC_AUC的變化見圖6和圖7.

圖6 算法效率和概率判決閾值之間的關系

圖7 算法效率和迭代次數之間的關系
如圖6所示, 當重建概率閾值增加時, 模型識別異常的能力先增加后減少, 出現峰值時, 判決閾值為0.93.這說明, 當重構概率判決閾值為93%時, 分類效果最好, 當閾值繼續增加時, 并不會提升識別的效果, 反而會有所減弱, 原因是閾值提高時, 會有更多的正常數據被判別為異常. 在圖7中, 隨著迭代次數的增加, 模型識別異常的能力總體呈現上升趨勢. 但是, 當迭代次數達到一定數量時, 模型參數已經收斂, 識別效果并沒有明顯增加, 因此我們選擇迭代次數900輪作為最佳迭代次數.
在實驗2中, 我們選擇了幾種經典算法作為比較算法, 有深度自編碼器(deep autoencoder, DAE)[24], 深度自編碼器高斯混合模型(DAGMM)[2], 單類支持向量機(OC-SVM)[7], 隔離森林(IF)[13], 差分自編碼器(VAE)[25]. 算法對比結果見表3.
如表3中所示, RFECV-VAE模型不僅在準確率、F1_score、ROC_AUC指標下表現出最好的性能,同時, 訓練時間也優于大多數算法. 綜上可得出, RFECVVAE算法不僅在異常識別準確度方面表現優異, 而且還降低了收斂時間, 以使得整個系統變得輕量, 非常適合智能電力網絡中高識別率和海量數據的要求.

表3 不同算法的識別結果對比
RFECV-VAE算法由兩部分組成, 分別是特征選擇RFECV部分和差分自編碼器VAE部分. 本節分析算法的復雜度.
RFECV包括遞歸特征消除和交叉驗證. 在遞歸特征消除部分, 算法會在所有特征中遍歷, 依次選擇刪除其中某一個特征, 并且重新構造模型, 計算每個特征的重要性, 時間復雜度為O(n). 在交叉驗證階段, 算法根據RFE階段得出的特征重要性排名, 依次選擇不同數目的特征進行打分, 選出最適合的特征數目, 時間復雜度為O(n). 故RFECV算法的時間復雜度為O(n). 算法在整個過程中保存每個特征的重要性分數, 故空間復雜度為O(n).
VAE部分的訓練階段, 使用的樣本集為正常樣本數據, 每次可以訓練多個固定數目的樣本, 并反向更新參數, 每個樣本只參與一次訓練過程, 故VAE算法的時間復雜度為O(n), 空間復雜度為O(1).
為了處理智能電網中的異常檢測任務, 我們提出了一種智能電網IDS安全架構(區域式訓練模式)和一種新的無監督算法(RFECV-VAE). 從宏觀的角度來看,區域式訓練不僅分擔了數據中心的計算壓力, 而且使智能終端更適應某一地區的流量特點. 從個體角度來看, 新的無監督算法顯示出比其他算法更好的性能, 并且優化了訓練時間, 使整個系統變得效率且輕量. 實驗表明, 本文提出的安全架構和檢測算法非常適用于智能電網的入侵檢測場景.