張正道 楊佳佳 謝林柏
信息物理系統(tǒng)(Cyber physical system,CPS)是結(jié)合傳感、通信、計(jì)算和控制過程形成的復(fù)雜系統(tǒng)[1-2].CPS 互聯(lián)而開放的運(yùn)行環(huán)境,在極大提高運(yùn)行效率的同時(shí),也引入了大量安全漏洞[3].攻擊者可以通過入侵傳輸通道并且修改控制信號(hào)或者測(cè)量信號(hào)等多種方式破壞系統(tǒng)的正常運(yùn)行,造成嚴(yán)重?fù)p失[4].近年來,CPS 的安全性問題,特別是CPS 的攻擊檢測(cè)問題,已經(jīng)成為學(xué)術(shù)熱點(diǎn)問題[5-7].
CPS 遭受的網(wǎng)絡(luò)攻擊主要包括拒絕服務(wù)攻擊(Denial-of-service attack,DoS)、虛假數(shù)據(jù)注入攻擊(False data injection attack,FDI)和重放攻擊(Replay attack)等3 種類型[8].DoS 攻擊的主要目標(biāo)是阻止系統(tǒng)控制信號(hào)或者測(cè)量信號(hào)的正常傳輸,實(shí)現(xiàn)對(duì)系統(tǒng)控制性能的破壞[9].DoS 攻擊的檢測(cè)可以通過網(wǎng)絡(luò)安全領(lǐng)域的檢測(cè)方法實(shí)現(xiàn).FDI 攻擊和重放攻擊主要由內(nèi)部人員發(fā)起,屬于“合法用戶取得非法權(quán)限”,僅通過網(wǎng)絡(luò)安全的手段難以預(yù)防.
FDI 攻擊的主要特征是攻擊者構(gòu)造一個(gè)虛假數(shù)據(jù)替換系統(tǒng)的真實(shí)數(shù)據(jù),從而引導(dǎo)控制器發(fā)出錯(cuò)誤的控制指令,最終造成控制系統(tǒng)的性能退化或者癱瘓[10-11].重放攻擊的主要特征是攻擊者利用存儲(chǔ)的系統(tǒng)歷史時(shí)刻數(shù)據(jù)替換系統(tǒng)當(dāng)前時(shí)刻的真實(shí)數(shù)據(jù),進(jìn)而引導(dǎo)控制器發(fā)出錯(cuò)誤的控制指令.與FDI 攻擊相比,重放攻擊的攻擊者無需預(yù)知控制系統(tǒng)的知識(shí).同時(shí),由于攻擊者重放的通常是系統(tǒng)在穩(wěn)定狀態(tài)的測(cè)量數(shù)據(jù),本身具有隱匿性,常用的攻擊檢測(cè)器難以檢測(cè)[12].現(xiàn)有文獻(xiàn)對(duì)重放攻擊檢測(cè)研究相對(duì)較少,開展重放攻擊檢測(cè)研究意義重大.
現(xiàn)有的重放攻擊檢測(cè)大致可分為添加水印和信號(hào)編碼兩類.雖然本質(zhì)上都是向控制信號(hào)或者測(cè)量信號(hào)中添加額外的隨機(jī)信號(hào),但是信號(hào)編碼方法在添加隨機(jī)噪聲后,還需對(duì)測(cè)量信號(hào)進(jìn)行相應(yīng)解碼操作.文獻(xiàn)[13]研究了測(cè)量信號(hào)編碼的方法,系統(tǒng)遭受重放攻擊后,利用編碼和解碼信息間的不同步檢測(cè)攻擊.為了提高檢測(cè)率,測(cè)量值編碼信息的方差可能會(huì)很大,甚至遠(yuǎn)超系統(tǒng)測(cè)量信號(hào),使解碼操作變得困難.此外單純的噪聲編碼信息也容易被攻擊者識(shí)別,進(jìn)而實(shí)施可以避開相關(guān)檢測(cè)的隱匿攻擊.文獻(xiàn)[14]最早提出向控制信號(hào)中持續(xù)添加高斯隨機(jī)噪聲,以使攻擊前后的數(shù)據(jù)殘差出現(xiàn)明顯變化,并據(jù)此檢測(cè)重放攻擊的方法.但該方法改變了系統(tǒng)的最優(yōu)控制信號(hào),需要以犧牲系統(tǒng)控制性能換取攻擊檢測(cè)率.文獻(xiàn)[15]進(jìn)一步給出了所加高斯噪聲方差大小與性能損失之間的線性關(guān)系,并且基于期望檢測(cè)性能和允許控制性能損失提出了相應(yīng)的最優(yōu)化問題.為了減少所加噪聲造成的系統(tǒng)性能損失,文獻(xiàn)[16]提出將原本持續(xù)性加入的水印信號(hào)改為周期性加入.然而,該方法在減少性能損失的同時(shí)也降低了攻擊檢測(cè)率.文獻(xiàn)[17]針對(duì)系統(tǒng)建模信息不完整造成建模有誤差的情況,提出一種最優(yōu)的在線控制水印信號(hào)設(shè)計(jì)方法.文獻(xiàn)[18]針對(duì)系統(tǒng)可能存在數(shù)據(jù)丟包的情況,提出控制信號(hào)編碼檢測(cè)方法.針對(duì)不連續(xù)的重放攻擊檢測(cè)問題,文獻(xiàn)[19]設(shè)計(jì)了一種周期性的水印添加策略,減少未發(fā)生重放攻擊時(shí)的控制性能損失.考慮攻擊者的重放延遲為任意值的情況,文獻(xiàn)[20]提出了一種最佳周期性水印添加策略,在給定允許系統(tǒng)性能損失范圍內(nèi)調(diào)整加入控制信號(hào)的噪聲大小和周期,以獲得最高攻擊檢測(cè)率.但是,現(xiàn)有方法尚未明確給出檢測(cè)率、性能損失和噪聲方差之間的定量關(guān)系.
針對(duì)現(xiàn)有方法存在的問題,本文提出一種新的基于控制信號(hào)編碼的重放攻擊檢測(cè)方法.為了減少加入編碼信號(hào)對(duì)控制信號(hào)的累積效應(yīng),降低其對(duì)系統(tǒng)控制性能的影響,在向控制信號(hào)添加編碼信號(hào)的同時(shí),向狀態(tài)估計(jì)端添加人為構(gòu)造的輔助信號(hào)進(jìn)行補(bǔ)償.在卡爾曼濾波器估計(jì)狀態(tài)值時(shí)仍使用未加入編碼信號(hào)之前的最優(yōu)控制信號(hào).此時(shí)所添加的編碼信號(hào)不參與控制信號(hào)的迭代過程.通過理論證明,給出了上述方法對(duì)重放攻擊的可檢測(cè)性以及檢測(cè)率的定量表示.同時(shí)證明了相對(duì)于持續(xù)添加控制噪聲的方法,本文方法具有更小的系統(tǒng)性能損失.最后,本文將編碼信號(hào)方差、檢測(cè)率和檢測(cè)函數(shù)閾值之間的關(guān)系表示成一個(gè)可解的最優(yōu)化問題,給出了求解編碼信號(hào)方差的明確方法.通過仿真實(shí)驗(yàn),驗(yàn)證了所提方法的有效性.
考慮CPS 的受控對(duì)象為一個(gè)線性定常系統(tǒng),采用卡爾曼濾波器得到系統(tǒng)狀態(tài)的估計(jì)值,同時(shí)依據(jù)線性二次高斯控制器得到最優(yōu)控制信號(hào),實(shí)現(xiàn)閉環(huán)反饋控制.系統(tǒng)狀態(tài)模型為
考慮系統(tǒng)的隨機(jī)過程噪聲和測(cè)量噪聲,定義系統(tǒng)性能指標(biāo)函數(shù)為
本文研究測(cè)量信號(hào)重放的情況.因此假設(shè)攻擊者能夠記錄測(cè)量數(shù)據(jù)y0,y1,···,yk,同時(shí)可將實(shí)際傳感器信號(hào)yk修改為任意值實(shí)施重放攻擊通常分為如下步驟.首先,攻擊者記錄從時(shí)間km到km+T的傳感器測(cè)量值yk,其中,T為攻擊者記錄數(shù)據(jù)的時(shí)間長(zhǎng)度.一般情況下T足夠大,否則,可通過將記錄的數(shù)據(jù)連續(xù)重放以達(dá)到攻擊目的.其次,從時(shí)間kn到kn+T,攻擊者將系統(tǒng)真實(shí)的測(cè)量信號(hào)yk修改為之前時(shí)刻記錄的值,即
與現(xiàn)有控制信號(hào)編碼檢測(cè)方法不同,本文方法在添加控制編碼信號(hào)的同時(shí),向狀態(tài)估計(jì)測(cè)量值輸入端添加相應(yīng)的補(bǔ)償信號(hào),從而減小編碼信號(hào)對(duì)系統(tǒng)性能指標(biāo)的影響,并且能使重放攻擊前后檢測(cè)信號(hào)出現(xiàn)明顯協(xié)方差差異.圖1 給出了本文方法的完整框圖.
圖1 本文所提方法的系統(tǒng)框圖Fig.1 System diagram of the proposed scheme in this paper
圖2 直流電機(jī)系統(tǒng)正常運(yùn)行時(shí)的檢測(cè)函數(shù)曲線Fig.2 The detection function curve of the normal DC motor system
由式(9)可知,此時(shí)估計(jì)端接收到的測(cè)量值與系統(tǒng)未加 Δuk時(shí)相同.
定義檢測(cè)信號(hào)rk為
結(jié)合引理1和式(10)可知,本文方案下的檢測(cè)信號(hào)rk服從多變量正態(tài)分布 MVN(0,Σr).
構(gòu)造檢測(cè)函數(shù)為
式中,t為滑動(dòng)窗口大小.顯然,當(dāng)系統(tǒng)未受攻擊時(shí),g(k)服從自由度為m的χ2分布.
定理 1.如式(1)所示線性定常系統(tǒng),定義檢測(cè)函數(shù)如式(12)所示,采用第2.1 節(jié)所提方案對(duì)控制信號(hào)進(jìn)行編碼.若加入的編碼信號(hào)滿足Δuk-1-ii0,···,k-1,則當(dāng)系統(tǒng)遭受重放攻擊后,攻擊是可檢測(cè)的.
其中,g′(k)是k時(shí)刻系統(tǒng)若處于正常情況下的檢測(cè)函數(shù)值.
由于系統(tǒng)建模誤差或者狀態(tài)估計(jì)誤差的存在,使用定理1 會(huì)導(dǎo)致誤檢發(fā)生.為此,可以給定一個(gè)檢測(cè)函數(shù)的閾值τ,以及如下假設(shè)檢驗(yàn): 若g(k)<τ,則表明系統(tǒng)處于 H0(正常)狀態(tài),反之則處于 H1(受攻擊)狀態(tài).此時(shí),本文方法對(duì)重放攻擊的檢測(cè)率滿足定理2.
定理 2.如式(1)所示的線性定常系統(tǒng),采用如式(12)所示檢測(cè)函數(shù)和第2.1 節(jié)所提方案,則一定存在檢測(cè)函數(shù)的閾值τ,使得在未發(fā)生重放攻擊時(shí),檢測(cè)函數(shù)滿足g(k)<τ;而當(dāng)系統(tǒng)遭受重放攻擊后,檢測(cè)函數(shù)增大,且滿足ga(k)>τ.此時(shí),重放攻擊檢測(cè)率最大為
其中,Φ(·) 為標(biāo)準(zhǔn)正態(tài)分布的概率分布函數(shù).
控制信號(hào)編碼方法需要在系統(tǒng)的最優(yōu)控制信號(hào)加入隨機(jī)的控制編碼信號(hào),從而造成了控制性能的損失.
式(26)表明,之前時(shí)刻向系統(tǒng)中添加的編碼信號(hào) ···,Δuk-2,Δuk-1會(huì)影響下一時(shí)刻的最優(yōu)控制信號(hào)uk,且編碼信號(hào)的添加對(duì)控制信號(hào)有累積效應(yīng),導(dǎo)致系統(tǒng)控制性能持續(xù)下降.
為了分析本文所述編碼方法造成的性能損失,首先給出定理3.
定理 3.如式(1)所示的線性定常系統(tǒng),在向系統(tǒng)控制信號(hào)中多次添加編碼信號(hào)Δui,i1,···,k時(shí),本文所提控制編碼方法下,系統(tǒng)k時(shí)刻的控制信號(hào)只與當(dāng)前時(shí)刻加入的編碼信號(hào) Δuk有關(guān),而與歷史編碼信號(hào) Δui,i1,···,k-1 無關(guān).
證明.由第1.1 節(jié)可知,系統(tǒng)在k時(shí)刻的最優(yōu)控制信號(hào)為
定理 4.如式(1)系統(tǒng),定義性能指標(biāo)如式(4),則本文方法下,系統(tǒng)的平均性能損失不大于單次控制編碼信號(hào)造成性能損失的最大值,且小于在向系統(tǒng)多次添加編碼信號(hào) Δui,i1,···,k時(shí)系統(tǒng)的性能損失.
證明.如第1.1 節(jié)所述,記xk為未加 Δuk時(shí)的正常系統(tǒng)真實(shí)狀態(tài),ek為未加 Δuk時(shí)正常系統(tǒng)的狀態(tài)估計(jì)誤差,ζk為添加了 Δuk前后系統(tǒng)的真實(shí)狀態(tài)之差.現(xiàn)構(gòu)造如下增廣狀態(tài)向量
所以本文方法的平均性能損失不大于單次控制編碼造成的性能損失最大值.
記多次向控制信號(hào)中添加噪聲信號(hào)方法的性能指標(biāo)為J1,可得式(32) (見本頁下方).
所以,在給定的 Σu相同的情況下,本文方法的性能損失小于向系統(tǒng)中多次添加控制噪聲的方法.□
由式(17)可以看出,為了有效地檢測(cè)出攻擊,加入系統(tǒng)中的 Δuk應(yīng)越大越好.然而,此時(shí)的系統(tǒng)性能損失也就越大.為了在二者之間找到一個(gè)平衡,提出定理5.
定理 5.針對(duì)如上假設(shè)檢驗(yàn),記攻擊檢測(cè)誤報(bào)率(False alarm rate,FAR)為α,檢測(cè)率(Alarm detection rate,ADR)為β,正常情況下與受到重放攻擊后檢測(cè)信號(hào)的協(xié)方差分別為Σr和則編碼信號(hào)的協(xié)方差Σu和檢測(cè)閾值τ滿足如下最優(yōu)化問題:
證明.由第 2.2 節(jié)可知,正常情況下檢測(cè)信號(hào)的協(xié)方差 ΣrCP CT+V,系統(tǒng)遭受重放攻擊后,協(xié)方差為
根據(jù)檢測(cè)要求,誤檢率RFAR需滿足
此外,檢測(cè)率RADR需滿足
由式(39)可以看出,式(38)成立只需
在本節(jié)中,使用MATLAB 的網(wǎng)絡(luò)控制系統(tǒng)仿真平臺(tái)Truetime 進(jìn)行實(shí)驗(yàn).以直流電機(jī)為例進(jìn)行仿真驗(yàn)證,根據(jù)電路原理和剛體旋轉(zhuǎn)定律,可得到如下狀態(tài)空間模型
采用文獻(xiàn)[21]中的參數(shù),將上述系統(tǒng)按采樣時(shí)間 0.1 s進(jìn)行離散化,同時(shí),考慮過程噪聲wk和測(cè)量噪聲vk,可得
其中,wk~MVN(0,W),vk~MVN(0,V),且協(xié)方差矩陣WVdiag{0.001,0.001}.
現(xiàn)假設(shè)攻擊場(chǎng)景1 為: 前60 s 系統(tǒng)運(yùn)行正常,攻擊者記錄了20.1 s~ 60 s 的測(cè)量數(shù)據(jù),并在60.1 s開始重放記錄的數(shù)據(jù);假設(shè)攻擊場(chǎng)景2 為: 系統(tǒng)從70.1 s 開始重放40.1 s~ 70 s 的數(shù)據(jù).檢測(cè)結(jié)果如圖3和圖4 所示.由圖3和圖4 中可以看出,重放攻擊發(fā)生后,系統(tǒng)檢測(cè)函數(shù)明顯增大并且很快超過了正常閾值,由此可判定系統(tǒng)遭受了攻擊.并且由圖中曲線可見,針對(duì)不同重放數(shù)據(jù)長(zhǎng)度和重放時(shí)間下的攻擊,本文方法均具有良好的檢測(cè)性能,檢測(cè)率分別為83.75%和81.33%,誤報(bào)率分別為3.15%和4.3%.對(duì)比設(shè)置檢測(cè)率β0.75和誤報(bào)率α0.05可知,本文方法的最終檢測(cè)率高于設(shè)定值,而最終誤報(bào)率低于設(shè)定值.這主要是因?yàn)樵谑?17)中計(jì)算受到攻擊后的檢測(cè)函數(shù)值時(shí),忽略了交叉項(xiàng),導(dǎo)致理論結(jié)果偏于保守.因此,實(shí)驗(yàn)所得攻擊檢測(cè)率略大于理論結(jié)果.
圖3 攻擊場(chǎng)景1 下的檢測(cè)函數(shù)曲線Fig.3 The detection function curve under attack scenario 1
圖4 攻擊場(chǎng)景2 下的檢測(cè)函數(shù)曲線Fig.4 The detection function curve under attack scenario 2
此外,本文考慮了系統(tǒng)遭受非連續(xù)重放攻擊的情況.假設(shè)攻擊場(chǎng)景3 為: 攻擊者在第40.1 s和第70.1 s分別進(jìn)行10 s 的測(cè)量值重放,檢測(cè)結(jié)果如圖5 所示,檢測(cè)率為82.50%,誤報(bào)率為4.75%.可以看出,本文所提方法對(duì)于非連續(xù)重放攻擊也具有良好的檢測(cè)性能.
圖5 攻擊場(chǎng)景3 下的檢測(cè)函數(shù)曲線Fig.5 The detection function curve under attack scenario 3
為了進(jìn)一步驗(yàn)證本文所提方案的有效性,將本文方法與文獻(xiàn)[15,17-18]中的方案進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果如圖6和表1 所示.由于這些論文中并沒有詳細(xì)給出檢測(cè)率與所加水印信號(hào)方差的具體關(guān)系,因此以下結(jié)果是重復(fù)50 次實(shí)驗(yàn)后得到的平均值.從圖中可以看出,隨著檢測(cè)率的增加,不同方法的性能指標(biāo)損失都逐漸增大,但在相同檢測(cè)率要求下,本文方法的性能損失遠(yuǎn)小于對(duì)比方法.
表1 噪聲方差及性能指標(biāo)比較Table 1 Comparison of noise variance and performance index of different schemes
圖6 本文所提的方法與不同方法的性能損失函數(shù)曲線對(duì)比圖Fig.6 Comparison between the performance index of schemes in this paper and other papers
考慮系統(tǒng)可能受到非連續(xù)重放攻擊的情況,與文獻(xiàn)[20]方法進(jìn)行簡(jiǎn)單比較.由于兩種方法的前提條件不相同,因此,實(shí)驗(yàn)中僅在保證性能損失相同的情況下比較檢測(cè)率結(jié)果.采用文獻(xiàn)[20]中所用模型,通過采樣周期Tsp2 s,將4 倍水箱控制系統(tǒng)離散化而得到系統(tǒng)參數(shù).攻擊者每次發(fā)動(dòng)攻擊的持續(xù)時(shí)間為:TsT0+X,其中,T0為基本時(shí)長(zhǎng),X >0為可控變量,且X的概率密度函數(shù)為f(X)ξe-ξX.現(xiàn)選取非連續(xù)攻擊模型參數(shù)ξ1/5,T010,比較γ1γ2γ3時(shí)的情況.求取100 次仿真實(shí)驗(yàn)的平均結(jié)果,檢測(cè)率定義為攻擊時(shí)間內(nèi)檢測(cè)器報(bào)警次數(shù)的百分比.當(dāng)采用周期水印策略為q/p0.5 時(shí),即有50%的時(shí)刻控制信號(hào)加入隨機(jī)噪聲,此時(shí)系統(tǒng)性能指標(biāo)值為J25 308,攻擊檢測(cè)率約為76%~ 77%左右.采用本文方法在保證相同性能指標(biāo)的前提下,檢測(cè)率為77.50%.采用周期水印策略為q/p0.8時(shí),系統(tǒng)性能指標(biāo)值為J40 404,攻擊檢測(cè)率約為86%~ 87%.采用本文方法,檢測(cè)率為87.56%.文獻(xiàn)[20]主要針對(duì)非連續(xù)重放攻擊制定了攻擊時(shí)間持續(xù)模型,并根據(jù)此攻擊模型制定最佳周期水印策略,在給定允許犧牲系統(tǒng)性能范圍內(nèi)調(diào)整加入控制信號(hào)的噪聲的周期,以求達(dá)到最高攻擊檢測(cè)率的同時(shí)控制性能損失較小.文獻(xiàn)[20]所得結(jié)果是針對(duì)特定攻擊模型下添加編碼信號(hào)的最優(yōu)周期,即控制成本也為最優(yōu).而在保證相同控制性能指標(biāo)損失的前提下,本文僅采用均勻概率向控制信號(hào)加入編碼,檢測(cè)率略優(yōu)于文獻(xiàn)[20]所提方案,由此也可證明本文方法的有效性和優(yōu)越性.
本文考慮了CPS 中重放攻擊的檢測(cè)問題,提出一種新的控制信號(hào)編碼檢測(cè)方法.證明了該方法對(duì)于重放攻擊的可檢測(cè)性和檢測(cè)率上界.在保證較高檢測(cè)效率的同時(shí)降低了對(duì)系統(tǒng)性能的影響,同時(shí),給出了平衡檢測(cè)效率和所需系統(tǒng)性能的最優(yōu)化問題.實(shí)驗(yàn)結(jié)果表明,此方法能在犧牲較小系統(tǒng)性能的情況下有效地檢測(cè)到重放攻擊的發(fā)生.本文方法也可以與周期水印方法、隨機(jī)水印方法等相結(jié)合,通過減少控制編碼信號(hào)加入的次數(shù),達(dá)到進(jìn)一步降低系統(tǒng)性能損失的目的.