王競才,李琰,徐天奇
(云南民族大學(xué)云南省高校電力信息物理融合系統(tǒng)重點實驗室,昆明市650504)
隨著智能電網(wǎng)的發(fā)展以及能源互聯(lián)網(wǎng)戰(zhàn)略的提出,傳統(tǒng)的電網(wǎng)已逐漸發(fā)展成為電力信息物理系統(tǒng)(cyber-physical power system,CPPS)。其中信息系統(tǒng)在電力系統(tǒng)的運行監(jiān)控、實時調(diào)度等方面發(fā)揮著重要的作用。然而,與所有的信息物理系統(tǒng)一樣,信息系統(tǒng)的網(wǎng)絡(luò)設(shè)施(傳感器、執(zhí)行器等)可能會成為網(wǎng)絡(luò)攻擊的潛在目標[1-2]。近年來真實的案例是烏克蘭電網(wǎng)在2015年和2016年連續(xù)遭受了2次網(wǎng)絡(luò)攻擊,造成了巨大的經(jīng)濟損失和社會動蕩[3]。這些事件表明攻擊者實施的網(wǎng)絡(luò)攻擊會對CPPS產(chǎn)生巨大的威脅。因此,維護CPPS的網(wǎng)絡(luò)安全已經(jīng)成為一個亟待解決的問題。
眾多的網(wǎng)絡(luò)攻擊中,虛假數(shù)據(jù)注入攻擊(false data injection attack,FDIA)是通過對電力系統(tǒng)中網(wǎng)絡(luò)節(jié)點進行控制,向系統(tǒng)注入虛假數(shù)據(jù),從而達到破壞信息完整性的目的。文獻[4]證明了精心設(shè)計的虛假數(shù)據(jù)可以繞過基于殘差的壞數(shù)據(jù)檢測(bad data detection,BDD),因此這種攻擊能夠躲避攻擊檢測機制,隱蔽性極高。根據(jù)攻擊者的攻擊目標不同,F(xiàn)DIA可以分為以下4類:1)對電力系統(tǒng)的狀態(tài)估計進行攻擊,誘導(dǎo)調(diào)度員做出錯誤決策[5-6];2)對電力系統(tǒng)實施物理攻擊,并發(fā)動FDIA對其實施的攻擊行為進行掩蓋[7-8];3)經(jīng)濟方面的攻擊,從電力市場獲取非法利潤[9-10];4)攻擊CPPS的相關(guān)應(yīng)用(如相量測量單元、監(jiān)控與數(shù)據(jù)采集系統(tǒng)、廣域測量系統(tǒng)等)[11-12]。其中第一類FDIA又被稱為負荷再分配攻擊(load redistribution attack,LRA),一旦成功,會干擾系統(tǒng)的安全約束經(jīng)濟調(diào)度(security-constrained economic dispatch,SCED),使系統(tǒng)進入不經(jīng)濟的運行模式,甚至使一些線路出現(xiàn)過載現(xiàn)象,具有很強的破壞力,因此本文針對第一類FDIA展開研究。
文獻[13]通過分析CPPS 中信息系統(tǒng)與物理系統(tǒng)的深層次耦合關(guān)系構(gòu)建了實時仿真平臺來研究攻擊對CPPS的影響。文獻[14]構(gòu)建了基于FDIA的三層優(yōu)化模型,以最小的虛假數(shù)據(jù)注入量為目標,仿真結(jié)果驗證了攻擊可以誤導(dǎo)調(diào)度中心做出錯誤決策使某些線路過載,并且從防御者的角度提出一種遞歸最小平方估計檢測法來防御FDIA。文獻[15]采用圖論的方法建立了線路間的聯(lián)系,提出的方法可以有效地找出系統(tǒng)中遭受FDIA的脆弱線路集。不同于離散的單一的FDIA,文獻[16]提出了一種連續(xù)的FDIA,即將攻擊的時間跨度上升至一個時段,并識別出需要著重保護的線路序列。文獻[17]設(shè)計了一種稀疏攻擊策略,該策略也適用于拓撲信息不完整的情況。文獻[18]提出一種貪心算法來快速地找到最佳攻擊向量,并根據(jù)找到的關(guān)鍵線路來為每條線路設(shè)置一個安全閾值,用來檢測FDIA。文獻[19]建立了調(diào)度員和攻擊者之間的博弈模型,提出了一種基于博弈論的關(guān)鍵測量設(shè)備的分階段動態(tài)防御方法。文獻[20]提出一種擴大電力系統(tǒng)經(jīng)濟損失的FDIA,結(jié)果表明,所提方法可以在繞過BDD的情況下增加電力系統(tǒng)的運行成本。文獻[21]利用貝葉斯圖論定量分析了攻擊對于信息網(wǎng)絡(luò)以及配電網(wǎng)系統(tǒng)運行安全的影響。
為了抵御FDIA,配備完整的保護系統(tǒng)元件是不切實際的,因此防御者們可以著重關(guān)注系統(tǒng)中的脆弱線路來進行保護,即防止脆弱線路上的數(shù)據(jù)被篡改,從而達到將有限的防御資源集中在小部分電網(wǎng)元件的目的。
基于此,本文提出一種雙層FDIA模型,上層模型以攻擊者的角度,使目標線路的潮流可以達到最大值,下層模型采用SCED模型,模擬調(diào)度員根據(jù)經(jīng)狀態(tài)估計后的量測數(shù)據(jù)進行優(yōu)化調(diào)度,并利用卡羅需-庫恩-塔克 (Karush-Kuhn-Tucker,KKT)條件將雙層模型轉(zhuǎn)換為單層模型后求解;提出一種快速篩選法來找出易受到FDIA的脆弱線路;基于找出的脆弱線路,識別出在FDIA下可能具有同時跳閘風險的一組線路集,幫助防御者對電力系統(tǒng)的安全進行更深入的風險評估。
為了簡化問題突出重點,本文分析FDIA時基于以下假設(shè):1)攻擊者了解系統(tǒng)的結(jié)構(gòu)和參數(shù);2)攻擊者可以入侵電力系統(tǒng)中廣泛分布的測量表計,達到修改讀數(shù)的目的。這些假設(shè)基于以下原因:
1)這些假設(shè)在以往的文獻[14-18]中得到了嚴格的證明和廣泛的應(yīng)用。
2)本文旨在分析在最壞的情況下,F(xiàn)DIA對系統(tǒng)造成的影響,以充分揭示FDIA的攻擊機制以及評估現(xiàn)有電力系統(tǒng)面對此類攻擊的脆弱性。
3)近年來針對電網(wǎng)的網(wǎng)絡(luò)攻擊行為[3]也證明了此類假設(shè)的合理性。
圖1展示了攻擊者發(fā)動FDIA的完整流程。攻擊者想要發(fā)動一次成功的FDIA,首先會干擾式(1)中的狀態(tài)估計?;谥绷鞒绷鞯木€性狀態(tài)估計在計算速度上具有明顯的優(yōu)勢,誤差很小[4,14,18,20],并且文獻[22]指出,攻擊者使用直流潮流進行計算,將攻擊應(yīng)用于交流系統(tǒng)可能也會造成損失。所以本文從攻擊者的視角,使用相對易被攻擊者獲得的線性狀態(tài)估計來代替非線性狀態(tài)估計。
圖1 FDIA流程圖Fig.1 Flow chart of FDIA
(1)
式中:z是量測量;H是量測雅可比矩陣,由系統(tǒng)的結(jié)構(gòu)決定;x是狀態(tài)量;e是誤差。
文獻[4]證明了當注入的虛假數(shù)據(jù)滿足式(2)時,攻擊向量Δz可以繞過BDD的檢測。
Δz=Hc
(2)
式中:c是任意向量。
因此,攻擊者制定攻擊策略時,必然會加入式(2)的約束條件。成功繞過BDD后,攻擊者注入的虛假數(shù)據(jù)會掩蓋真實的系統(tǒng)狀態(tài),進而影響調(diào)度員的決策行為,使電網(wǎng)進入不安全的運行狀態(tài)。
由圖1可看出,在整個FDIA過程中,參與方有攻擊者和調(diào)度員,因此本文提出一種雙層規(guī)劃模型,其中上層代表了攻擊者的攻擊策略,下層代表了調(diào)度員針對此攻擊策略所做出的響應(yīng),如圖2所示。需要注意的是,此時調(diào)度員所做出的決策是基于攻擊者精心策劃的虛假數(shù)據(jù),因此,在真實的電力系統(tǒng)里可能會存在線路過載現(xiàn)象,而本文旨在尋找存在過載風險的脆弱線路。
圖2 雙層攻擊模型原理圖Fig.2 Schematic diagram of the bi-level attack model
對于系統(tǒng)中任意一條編號i的線路Li,上層模型將該線路上流經(jīng)的功率與線路容量的比值最大作為目標函數(shù):
(3)
約束條件如式(4)—(11)所示。約束式(4)—(5)通過引入0-1變量來計算攻擊者需要入侵的節(jié)點和線路:
(4)
(5)
式中:δn和vl是0-1變量,分別表示在節(jié)點n和線路l攻擊所需修改的量測量的數(shù)量;ΔPd(n)表示攻擊者在節(jié)點n的注入向量;ΔPF(l)表示攻擊者在線路l的注入向量;D表示節(jié)點集合;L表示線路集合。約束式(6)限制了攻擊者可以修改的量測量的數(shù)量:
(6)
式中:Nn和NL分別是節(jié)點和線路量測量的總數(shù)量;K是攻擊成本,限制了單次攻擊所能修改的量測量的數(shù)量。約束式(7)限制了對量測量的修改程度:
-τPd≤ΔPd≤τPd
(7)
式中:τ是一個常數(shù),用于限制每個節(jié)點的修改幅度;Pd是負荷的正常功率;ΔPd是攻擊者的節(jié)點注入向量。約束式(8)通過限制注入的攻擊向量之和為0來確保功率平衡:
bTΔPd=0
(8)
式中:b是元素全為1的列向量。約束式(9)表示注入的節(jié)點虛假數(shù)據(jù)和線路虛假數(shù)據(jù)之間的關(guān)系:
ΔPF=-AΔPd
(9)
式中:A是系統(tǒng)的轉(zhuǎn)移因子矩陣;ΔPF是攻擊者的線路注入向量。根據(jù)1.1節(jié),約束式(10)確保了注入的攻擊向量不會被BDD檢測出來:
ΔPd=Hc
(10)
約束式(11)是系統(tǒng)的功率方程:
PF=A(Pg-Pd)
(11)
式中:PF是線路潮流;Pg是發(fā)電機的出力。
一旦一個虛假數(shù)據(jù)成功注入到系統(tǒng)內(nèi),便會干擾正常的SCED,所以本文將下層設(shè)置為一個SCED模型,將發(fā)電機組的發(fā)電成本最小作為目標函數(shù):
(12)
式中:f為目標函數(shù),以發(fā)電成本最小為目標;cg是發(fā)電機的成本函數(shù)。
約束條件如式(13)—(16)所示。為了方便說明,本文將約束條件的拉格朗日乘子放于約束條件的后面。約束式(13)是經(jīng)虛假數(shù)據(jù)注入后的系統(tǒng)方程:
(13)
(14)
式中:λ是式(14)的拉格朗日乘子。約束式(15)將線路潮流限制在安全范圍內(nèi):
(15)
(16)
首先對模型中的一些約束條件進行處理,式(4)—(5)可以轉(zhuǎn)化為如下形式:
-τPd(n)δn≤ΔPd(n)≤τPd(n)δn
(17)
-Mvl≤ΔPF(l)≤Mvl
(18)
式中:M是一個極大的數(shù)。
考慮到雙層模型的求解復(fù)雜度,本文將下層模型進行KKT條件轉(zhuǎn)化,從而將雙層模型轉(zhuǎn)化為單層求解,轉(zhuǎn)化之后的優(yōu)化模型目標函數(shù)為式(3),約束條件為式(17)、式(18)、式(6)—(11)、式(13)—(16),以及式(19)—(31)。式(13)—(16)是原問題可行條件;式(19)—(21)是對偶可行條件;式(22)—(31)是利用大M法線性化后的互補松弛條件。
(19)
(20)
(21)
式中:a是元素全為0的列向量。
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
(31)
經(jīng)KKT條件轉(zhuǎn)化后,雙層模型轉(zhuǎn)變?yōu)閱螌拥幕旌险麛?shù)線性規(guī)劃(mixed integer linear programming,MILP),可以利用較成熟的MILP求解器如CPLEX求解。
在第1節(jié)中,本文提出了關(guān)于FDIA的雙層攻擊模型,并以目標線路的潮流最大為目標,目的是找出系統(tǒng)中存在過載風險的脆弱線路。定義脆弱線路集Ω如下:
(32)
式中:Γ是判斷是否屬于脆弱線路的閾值。
在以往的研究中尋找脆弱線路的方法以遍歷法為主,即通過測試整個系統(tǒng)的線路來尋找脆弱線路集[23-25],利用遍歷法尋找FDIA下的脆弱線路如算法1所示:
1)輸入i=1、空集Ω以及線路總數(shù)m;
2)判斷i是否大于m,若大于,則輸出Ω,停止計算;若不大于,則進入3);
3)將i代入式(32)中,判斷是否滿足,若不滿足,令i=i+1并返回2);若滿足,將i寫入Ω中,令i=i+1并返回2)。
由以上算法可以看出遍歷法通過對每條線路進行求解來判斷該線路是否屬于脆弱線路,最終得到集合Ω。
遍歷法需要計算m次雙層模型,計算量非常大,并且由于脆弱線路只是少數(shù)線路,會進行許多沒有必要的計算。考慮遍歷法的局限性,本文提出了一種基于迭代思想的快速篩選法。
當計算完成第i條線路上的最大潮流后,受影響的不僅僅是第i條線路,通過對其他線路的篩選,可能出現(xiàn)的情況有:
1)存在1條或多條其他線路滿足式(32);
2)無其他線路滿足式(32)。
如果是第一種情況,那么將過載最嚴重的線路Lj作為下一次迭代的目標;如果是第二種情況,則選擇最接近過載的線路Lj作為下一次迭代的目標。這一過程如式(33)所示:
(33)
根據(jù)上述迭代思路,在篩選初期可以將計算集中在脆弱線路上。此外,如果經(jīng)u次篩選,結(jié)果總是非脆弱線路時,停止迭代。這一算法的實現(xiàn)流程如算法2所示:
1)輸入k=1、篩選閾值u、空集Ω,并將首條迭代線路編號賦值給i;
2)判斷k是否大于u,若大于,則輸出Ω,停止計算;若不大于,則進入3);
3)將i代入式(32)中,判斷是否滿足,若不滿足式(32),找出滿足式(33)的線路,作為新的i,并令k=k+1后返回2);若滿足式(32),則將i寫入Ω,并找出滿足式(33)的線路,作為新的i,然后將k重置為1后返回2)。
多線路攻擊是指發(fā)動一次FDIA可以造成多條線路過載。對于了解電網(wǎng)結(jié)構(gòu)的攻擊者而言,多線路攻擊可以對電網(wǎng)造成更具破壞性的影響,因此,防御者有必要保護多線路攻擊下的關(guān)鍵線路。
搜尋多線路攻擊下的關(guān)鍵線路可以通過修改雙層攻擊模型來實現(xiàn),如下所示:
max||ω||1
(34)
(35)
式中:ω是0-1變量,代表若線路Li過載則為1,否則為0。||ω||1是ω的1-范數(shù),即過載線路的數(shù)量和。
約束條件為式(4)—(16)。
在第2節(jié)中,求得了在FDIA下所有可能過載的線路集Ω,所以多線路攻擊的關(guān)鍵線路集Ωm?Ω,因此可以在線路集Ω范圍內(nèi)進行篩選,降低計算的復(fù)雜度。式(35)存在絕對值和一種對應(yīng)關(guān)系,通過引入0-1變量的方式,對式(35)進行如下轉(zhuǎn)化:
(36)
式中:ωh(1),ωh(2),ωl(1),ωl(2)均是0-1變量,分別表示對支路Li功率上下限的約束。通過求解上述模型即可找出多線路攻擊下的脆弱線路。
為了驗證本文所提的雙層攻擊模型以及快速篩選法的正確性和有效性,以IEEE 39節(jié)點系統(tǒng)為例進行仿真。仿真的測試環(huán)境為MATLAB R2016b,硬件配置為Inter(R)Core(TM)i5-1135G7 @ 2.40GHz,內(nèi)存容量為16 GB。本文提出的MILP問題通過使用CPLEX求解器進行求解。
IEEE 39節(jié)點系統(tǒng)的數(shù)據(jù)及結(jié)構(gòu)取自MATPOWER[26],該系統(tǒng)有10臺發(fā)電機,21個負荷以及46條線路。假設(shè)線路上的正常潮流為線路容量的0.6倍,模型的其他預(yù)設(shè)參數(shù):τ=0.2,K=20,Γ=1.2,u=10。
本文攻擊模型和文獻[20]模型對比結(jié)果如圖3所示。其中,本文設(shè)置以16號線路為攻擊目標,因線路太多,只截取各攻擊方式下潮流與線路容量之比排名前15的線路。結(jié)果表明,本文的攻擊方式可以造成多條線路過載,而文獻[20]的攻擊方式無法使線路過載。原因在于,文獻[20]的攻擊目的是使電網(wǎng)的發(fā)電成本最高,即通過FDIA使電網(wǎng)處于不經(jīng)濟的運行狀態(tài),這種攻擊類型的缺陷在于系統(tǒng)不會長時間處于不經(jīng)濟的運行模式,所以此類攻擊造成的損失是有限的。而根據(jù)本文模型,一旦攻擊者使得目標線路過載,目標線路可能會因保護動作而跳閘,進而有可能轉(zhuǎn)為級聯(lián)故障。此外,文獻[20]模型并沒有對可以入侵的節(jié)點數(shù)量加以限制,入侵CPPS中大部分節(jié)點來達到攻擊目的顯然不現(xiàn)實。
圖3 攻擊模型對比圖Fig.3 Comparison chart of attack models
在表1中,展示了使用快速迭代法來尋找脆弱線路的過程,并將初始線路定為14號線路,將找到的脆弱線路用陰影標記??梢钥吹剑捌诘挠嬎慵性诳赡苓^載的線路上,在迭代到第20次便找出了所有脆弱線路。為了驗證快速篩選法的準確性,與算法1中所展示的遍歷法進行對比,遍歷法得到的脆弱線路集Ω為{2,6,7,16,17,21,24,31,32,36,40},這一結(jié)果與快速篩選法一致,但遍歷法需要計算46條線路,而本文只需計算30條線路,并在進行第20次計算時就已經(jīng)找出了全部脆弱線路,顯著提高了計算速度。
為了驗證初值對快速篩選法的影響,在表2中,將初始線路更改為21號,共迭代了29次。與表1類似,脆弱線路往往出現(xiàn)在迭代的初期,在結(jié)果上與遍歷法無異,這說明本算法對初值的選取并不敏感。
表1 IEEE 39節(jié)點系統(tǒng)上初值選為14號線路的快速篩選法的迭代過程Table 1 The iterative process of rapid screening when the initial line is selected as 14 in IEEE 39-bus system
表2 IEEE 39節(jié)點系統(tǒng)上初值選為21號線路的快速篩選法的迭代過程Table 2 The iterative process of rapid screening when the initial line is selected as 21 in IEEE 39-bus system
結(jié)合上述對比,可以看出快速篩選法在計算速度、準確性以及對初值的敏感程度方面均有較好的表現(xiàn)。而使用快速篩選法計算出的脆弱線路后,可以通過使用抗篡改的測量設(shè)備[27]、采用先進的加密協(xié)議[28]等方式對脆弱線路進行保護。
在多線路攻擊下,攻擊結(jié)果如圖4所示。同樣僅列舉各攻擊方式下潮流與線路容量之比排名前15的線路,該攻擊會導(dǎo)致17號、16號、36號、2號、31號共5條線路過載。并且可以看出,在該攻擊下,有多條線路也是處于鄰近過載的狀態(tài),多線路攻擊會對系統(tǒng)造成嚴重的影響。因此,這5條線路也是脆弱線路集Ω中最容易遭受攻擊的線路。
圖4 多線路攻擊下各線路越限情況Fig.4 Overload phenomenon of lines under multi-line attacks
為了驗證快速篩選法針對大規(guī)模系統(tǒng)的有效性,在IEEE 118節(jié)點系統(tǒng)上進行仿真。IEEE 118節(jié)點系統(tǒng)有54臺發(fā)電機、99個負荷以及186條線路[26],針對規(guī)模較大的系統(tǒng),將篩選閾值u設(shè)置為15,結(jié)果如表3所示。和IEEE 39節(jié)點系統(tǒng)相似,脆弱線路的尋找集中在了篩選的前期,迭代到60次時便找出了所有的脆弱線路,結(jié)果上與遍歷法無異,而遍歷法則需要計算186次,這表明本文提出的快速篩選法在計算速度上具有明顯的優(yōu)勢,具有應(yīng)用于大規(guī)模系統(tǒng)的潛力。
需要注意的是,在大系統(tǒng)中,利用本算法搜尋脆弱線路時,相鄰脆弱線路間的迭代次數(shù)可能會增大,如從34次迭代至43次迭代期間均沒有發(fā)現(xiàn)脆弱線路,這是由于該系統(tǒng)中20號線路和156號線路相距較遠關(guān)聯(lián)性不強所導(dǎo)致,可以通過適當增大u來解決。
表3 IEEE 118節(jié)點系統(tǒng)上初值選為18號線路的快速篩選法的迭代過程Table 3 The iterative process of rapid screening when the initial line is selected as 18 in IEEE 118-bus system
本文在電網(wǎng)與信息網(wǎng)高度耦合的背景下,針對虛假數(shù)據(jù)注入攻擊做出了以下貢獻:
1)提出一種雙層FDIA模型,上層以攻擊者的角度,使目標線路的潮流可以達到最大值;下層采用SCED模型,模擬調(diào)度員根據(jù)經(jīng)狀態(tài)估計后的量測數(shù)據(jù)進行優(yōu)化調(diào)度。并利用KKT條件將雙層模型轉(zhuǎn)換為單層模型后求解。
2)提出了一種快速篩選法來找出易受到FDIA的脆弱線路,具有應(yīng)用于大規(guī)模系統(tǒng)的潛力。
3)基于找出的脆弱線路,識別出在FDIA下可能具有同時跳閘風險的一組線路集,幫助防御者對電力系統(tǒng)的安全進行更深入的風險評估。
本文對CPPS下虛假數(shù)據(jù)注入攻擊的研究尚處于初步探索階段,所提出的防御策略只是被動的防止脆弱線路上的數(shù)據(jù)被篡改,下一步將研究FDIA的檢測辦法以及更為具體的防御策略來保證電力系統(tǒng)的正常運行。