曾俊嬈,李 鵬,高 蓮,沈 鑫
(1.云南大學 信息學院,云南 昆明 650500; 2.云南省高校物聯網技術及應用重點實驗室,云南 昆明 650500;3.云南電網有限責任公司 電力科學研究院,云南 昆明 650511)
隨著傳感器、計算機和通信網絡的飛速發展,現代電力系統已成為復雜的信息物理融合系統(Cyber-Physical Systems,CPS)[1-3]。雖然先進的網絡通信技術使得電力系統運行更加高效,但同時帶來不可忽視的網絡安全問題[4-5]。例如在2015年,烏克蘭電網遭受到網絡攻擊,220萬居民受影響無法正常用電,導致巨大經濟損失[6]。保證電網安全可靠運作的1個重要條件是不良數據檢測,通過比較測量殘差二范數與殘差閾值來檢測數據是否正常。虛假數據注入攻擊(False Data Injection Attacks,FDIAs)作為電網中1種新型的網絡攻擊方式,2009年由Liu等[7]提出,國內外學者開始對其進行研究。FDIAs通過改變狀態變量,影響狀態估計的準確性,從而使系統采集到錯誤的量測值。該攻擊能夠繞過不良數據檢測模塊,對電網造成極大威脅。為保證電力系統安全穩定運行,有效檢測虛假數據注入攻擊至今是1個值得研究的課題。
為抵御FDIAs對電網的危害,學者分別從保護方法和檢測策略2方面進行研究。在保護方法上,Bobba等[8]通過保護基本量測點抵御FDIAs,但此方法要求基本量測點數量與電力系統母線數量相等,當電網規模較大時,保護成本過高;Deng等[9]為使防御策略的成本達到最低,將保護測量選擇問題定義為混合整數非線性問題;Kim等[10]采用貪婪方法選擇相角策略單元(Phase Measurement Unit,PMU),對于抵御FDIAs的完美攻擊具有一定的效果。在檢測策略方面,Valenzuela等[11]使用主成分分析算法從潮流歷史數據中生成規則子空間和不規則子空間,將當前的測量數據投影到不規則子空間中,對其進行分析,判斷電力系統數據是否遭到破壞;Liu等[12]提出核規范最小化法和低秩矩陣分解法來檢測電網中的FDIAs,并且對攻擊數據進行恢復;石家宇等[13]在拉普特征映射對歷史量測數據降維的基礎上,使用神經網絡訓練模型檢測FDIAs;Hao等[14]基于魯棒主成分分析方法設計檢測方法,通過深度置信網絡提取輸入數據特征,然后訓練模型去檢測虛假數據注入攻擊;Ozay等[15]將SVM,K-NN和感知機這3種機器學習方法用于FDIAs檢測。
現有的FDIAs檢測使用的機器學習算法在訓練數據時需要正常數據和攻擊數據,當缺少攻擊數據時無法對其訓練,且訓練和攻擊數據比例不同時,測試精度會發生改變。同時上述提到的主成分分析、魯棒主成分分析沒有考慮數據的局部特征,而電網攻擊數據更多的表現為1種局部特征,數據具有時間相關性。
針對以上問題,本文提出1種新的FDIAs檢測模型,該模型可同時提取空間和時間結構的信息,并且降維之后的數據保留了原有的局部流行結構。在電力系統實際運行過程中很難采集到足夠多的攻擊數據,而使用本文模型訓練數據時只需采集電力系統正常運行下的歷史量測數據,建模后可對實時的量測數據進行分析,及時檢測數據是否受到攻擊。實驗結果表明,本文所提出的方法具有較高檢測率,能夠有效應用到電網FDIAs檢測當中。
電力系統狀態估計就是根據量測數據估計系統的狀態,從實際應用情況來看,其主要功能包括提高量測數據的精度、簡單的不良數據檢測與辨識。在1個具有n條母線的電力系統中,系統的狀態取為b=(b1,b2,…,bn)T,bi表示相位角,由于節點1為參考節點,故系統狀態表示為b=(b2,b3…,bn)T,將從控制中心獲取到的m個量測值表示為z=(z1,z2,…,zm)T,在直流功率模型中,直流潮流方程如式(1)所示:
z=Hb+e
(1)
式中:z為量測值;b為待估計狀態向量的集合;H為1個m×n的雅可比矩陣;e為量測誤差。
加權最小二乘法的狀態估計如式(2)所示:
(2)
當完全了解電網拓撲結構信息時,攻擊者便可對電網進行FDIAs。此時,受攻擊后的量測數據如式(3)所示:
za=z+a
(3)
式中:za為受到FDIAs后的量測值;a為m×1的FDIAs向量。
狀態估計量如式(4)所示:
(4)
當a=Hc(c=(c1,c2,…,cn))時,測量殘差的二范數如式(5)所示:
(5)
由式(5)可知,受攻擊前后的殘差一致,故可成功繞過不良數據檢測模塊,導致FDIAs不易被檢測到。
2005年,領域保持嵌入算法(Neighborhood Preserving Embedding,NPE)被首次提出,該算法是將LLE算法通過線性近似處理得到的[16]。NPE是1種流行學習算法,其基本思想是尋找數據中的低維流形信息,并且保持原有數據與鄰域數據之間的線性重構關系,最終使得降維后的數據仍能保留原樣本空間中的局部流行結構。
NPE算法需要對樣本進行重構,假設訓練樣本數據集為X(x1,…,xn),n為樣本點的總個數,采用取歐式距離最小的方法找出每個樣本點的最近的k個數據點,構成領域點集。在足夠小的領域內認為數據是線性相關的,因此每個樣本點可利用這k個領域點進行重構,重構系數矩陣可通過最小化函數獲得,函數如式(6)所示:
(6)
式中:Φ為求解重構系數矩陣的函數;xi為數據集中的第i個樣本點;xj為與樣本點xi最近的k個樣本點中的第j個樣本點;W為重構系數矩陣;Wij為W的第i行第j列。
約束條件如式(7)所示:
(7)
訓練數據樣本通過映射矩陣投影到低維空間,投影矩陣可通過求解極小值問題得到,如式(8)所示:
(8)
式中:A為投影矩陣;a為A中的一組投影向量;yi和yj為低維空間的投影數據;I為單位矩陣。
求投影矩陣A的問題可進一步通過拉格朗日乘子法將其轉化為廣義求特征值的問題,轉化方式如式(9)所示:
X(I-W)T(I-W)XTa=λXXTa
(9)
式中:λ為特征值。
設降維后的維度為d,則前d個小的特征值所對應的特征向量為投影矩陣A。
NPE算法通過提取局部特征從而獲得整個數據集的空間特征,但對于時序相關的數據,不能提取時間的動態特征。為獲取到更多的數據集信息,文獻[17]在NPE的基礎上提出1種基于時序擴展的鄰域保持嵌入算法(Time Neighbor Preserving Embedding,TNPE),該算法同時考慮數據的空間以及時間變化特征,對于動態時間數據能夠較好地保留更多關鍵信息。
在動態系統中,第n時刻采樣的數據與n-1,n-2,n-3,…的有限時刻的值有關,第n+1,n+2,n+3,…時刻的值也與現在以及過去的數據相關。本文選取k個空間近鄰點、2k個時序鄰近點,對其進行線性重構,如式(10)所示:
(10)
式中:WS為空間權重系數矩陣;WP為時間權重系數矩陣;WSij為WS的第i行第j列;WPij為WP的第i行第j列。
TNPE的目標是將樣本映射到低維空間之后,依然可以保留數據局部近鄰特征。對xi在低維空間所對應的yi進行重構,因此建立TNPE的目標函數,如式(11)所示:
J=min(ηΦ(y)S)+min((1-η)Φ(y)P)
(11)
式中:J為TNPE算法的目標函數;y為數據x的低維投影向量;η為空間特征在空間與時間總特征信息中的權重,0≤η≤1。
由于y=ATx,Φ(y)S和Φ(y)P可進一步轉化,如式(12)所示:
(12)
根據式(12),式(11)的問題可以轉化為求投影矩陣A的問題。J化簡后如式(13)所示:
(13)
約束條件為yTy=aTXXTa=I。
運用拉格朗日乘子法求解上式,取前d個小的特征值所對應的特征向量。
本文提出1種基于TNPE的FDIAs檢測模型,采集電力系統正常運行時多條歷史量測數據去訓練模型,通過TNPE算法使數據降到d維。
(14)
Λ-1=[YTY/(n-1)]-1
(15)
式中:Y為低維數據點的集合;Λ-1為Y的樣本協方差矩陣;F(d,n-d;α)為顯著水平為α、自由度為d和n-d的F分布。
基于TNPE的智能電網FDIAs方法可分為2個階段,即訓練模型和在線檢測。
訓練模型的具體步驟如下:
1)將采集到的正常歷史量測數據通過TNPE算法來提取數據的空間和時間特征。
在線監測的具體步驟如下:
1)將采集到的實際量測數據xnewi通過TNPE算法提取數據新的特征。
基于TNPE的FDIAs檢測的偽代碼如下:
1)采集正常運行下的量測數據作為訓練數據集
2)設定數據降維維度d=25,近鄰點數k=10
4)輸入受攻擊的數據實行在線監測
5)Fori=1,2,3…
8)樣本數據受到FDIAs
9)Else
10)數據未受到FDIAs
11)End if
12)End for
本文提出的基于TNPE的智能電網FDIAs檢測流程如圖1所示。
圖1 基于TNPE的智能電網FDIAs檢測流程Fig.1 FDIAs detection procedure of smart grids based on TNPE
本文使用IEEE30節點系統,如圖2所示,在MATLAB上進行仿真分析,驗證模型的檢測效果。IEEE30節點系統中,每條量測數據包括112條測量值。測量值包含總線有功和無功功率以及各支路的有功和無功功率,待估狀態變量包括除平衡節點外的29個電壓相角。由Matpower工具箱[18]模擬負荷曲線產生具有時間相關性的量測數據。實驗將TNPE算法與NPE,PCA,ICA進行對比。
圖2 IEEE30節點系統Fig.2 IEEE30 node system
算法參數設置如下:在TNPE模型中,近鄰數設為10,維數設為25;對比實驗中,NPE模型的近鄰數與維數設置與TNPE相同;PCA算法通過主元貢獻度為80%的標準選出24個主元個數;ICA通過迭代求取主元;4個模型的T2置信度都設為99%。
以IEEE30節點系統生成的1組量測數據證明成功構造FDIAs。在生成的量測數據中加入均值為0、方差為1的噪聲使得數據更具真實性。根據FDIAs原理給正常數據注入攻擊向量,系統攻擊前后的量測數據分布狀況如圖3所示,狀態量變化情況如圖4所示。
圖3 系統攻擊前后量測數據分布狀況Fig.3 Distribution of measurement data before and after system attack
圖4 系統攻擊前后狀態量變化情況Fig.4 Status changes before and after system attack
由圖3可知,受攻擊后量測值發生改變,而圖4中的部分狀態變量發生偏移,其分布與未攻擊前的基本一致,通過MATLAB計算得出,攻擊前的殘差為10.767 4,攻擊后的殘差為10.421 8,幾乎相等,與FDIAs原理相符。多次實驗證明攻擊前后的殘差均相差不大,說明攻擊能夠成功繞過不良數據檢測,實現FDIAs攻擊,破壞電力系統的穩定運行。
模型訓練實驗使用正常數據建模,正常數據測試。分別選取2 000,4 000條數據進行2次實驗,每次實驗中一半數據用來訓練,一半數據用來測試,實驗數據分配情況見表1。
表1 實驗數據分配情況Table 1 Distribution of experimental data
以誤報率作為評價模型好壞的指標,離線模型的誤報率越低,模型越好。實驗得出的檢測數據誤報率見表2。由于實驗2數據的增加,相應的誤報率有所增加,通過比較可知,TNPE的誤報率相對較低。
表2 檢測數據誤報率Table 2 False alarm rates of detection data %
實驗1和實驗2的檢測結果分別如圖5~6所示。圖5~6中虛線為通過訓練數據得到的統計限,實線為檢測數據的實時統計量,實時統計量若超過統計限,則說明出現誤報情況。由實驗結果可知,ICA和PCA出現多次誤報,NPE結果相對要好,TNPE結果最好,表明由TNPE算法訓練得來的模型更加適用于FDIAs的檢測。
圖5 實驗1檢測結果Fig.5 Detection results of test 1
圖6 實驗2檢測結果Fig.6 Detection results of test 2
為驗證文中提出的TNPE方法檢測FDIAs的有效性,對包含攻擊數據的3 000條樣本數據進行檢測。其中,前1 500條正常數據用于訓練模型,后1 500條數據用于測試。對于測試數據,前500條為正常數據,后800條為FDIAs的數據,將實驗結果與PCA,KPCA,NPE算法的檢測結果進行對比,FDIAs檢測結果對比如圖7所示,攻擊數據檢測率見表3。
表3 攻擊數據檢測率Table 3 Detection rates of attack data %
圖7 FDIAs檢測結果對比Fig.7 Comparison of FDIAs detection results
實驗結果表明,當受到FDIAs攻擊時,4種模型均能檢測到攻擊的發生,但基于TNPE的FDIAs檢測方法檢測效果更好,檢測率明顯高于其他3個模型,且誤報率較低,可見本文提出的TNPE模型適用于電網FDIAs檢測。
1)解決了常用的FDIAs檢測方法中數據難獲取、不完備帶來的問題,僅利用完備的正常數據即可建立離線測試模型,實時采集的量測數據可通過本文模型實現在線檢測。
2)可同時提取數據的局部空間特征和時間特征,保留數據中更多的關鍵信息。
3)MATLAB的仿真實例表明,方法的誤報率較低,檢測率高達100%,模型性能優于ICA,PCA和NPE算法,驗證了方法在智能電網FDIAs檢測的優越性,為智能電網FDIAs檢測提供1種更有效的方法。