張正道 楊佳佳 謝林柏
信息物理系統(tǒng)(Cyber physical system,CPS)是結(jié)合傳感、通信、計算和控制過程形成的復(fù)雜系統(tǒng)[1-2].CPS 互聯(lián)而開放的運行環(huán)境,在極大提高運行效率的同時,也引入了大量安全漏洞[3].攻擊者可以通過入侵傳輸通道并且修改控制信號或者測量信號等多種方式破壞系統(tǒng)的正常運行,造成嚴(yán)重?fù)p失[4].近年來,CPS 的安全性問題,特別是CPS 的攻擊檢測問題,已經(jīng)成為學(xué)術(shù)熱點問題[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)控制信號或者測量信號的正常傳輸,實現(xiàn)對系統(tǒng)控制性能的破壞[9].DoS 攻擊的檢測可以通過網(wǎng)絡(luò)安全領(lǐng)域的檢測方法實現(xiàn).FDI 攻擊和重放攻擊主要由內(nèi)部人員發(fā)起,屬于“合法用戶取得非法權(quán)限”,僅通過網(wǎng)絡(luò)安全的手段難以預(yù)防.
FDI 攻擊的主要特征是攻擊者構(gòu)造一個虛假數(shù)據(jù)替換系統(tǒng)的真實數(shù)據(jù),從而引導(dǎo)控制器發(fā)出錯誤的控制指令,最終造成控制系統(tǒng)的性能退化或者癱瘓[10-11].重放攻擊的主要特征是攻擊者利用存儲的系統(tǒng)歷史時刻數(shù)據(jù)替換系統(tǒng)當(dāng)前時刻的真實數(shù)據(jù),進(jìn)而引導(dǎo)控制器發(fā)出錯誤的控制指令.與FDI 攻擊相比,重放攻擊的攻擊者無需預(yù)知控制系統(tǒng)的知識.同時,由于攻擊者重放的通常是系統(tǒng)在穩(wěn)定狀態(tài)的測量數(shù)據(jù),本身具有隱匿性,常用的攻擊檢測器難以檢測[12].現(xiàn)有文獻(xiàn)對重放攻擊檢測研究相對較少,開展重放攻擊檢測研究意義重大.
現(xiàn)有的重放攻擊檢測大致可分為添加水印和信號編碼兩類.雖然本質(zhì)上都是向控制信號或者測量信號中添加額外的隨機(jī)信號,但是信號編碼方法在添加隨機(jī)噪聲后,還需對測量信號進(jìn)行相應(yīng)解碼操作.文獻(xiàn)[13]研究了測量信號編碼的方法,系統(tǒng)遭受重放攻擊后,利用編碼和解碼信息間的不同步檢測攻擊.為了提高檢測率,測量值編碼信息的方差可能會很大,甚至遠(yuǎn)超系統(tǒng)測量信號,使解碼操作變得困難.此外單純的噪聲編碼信息也容易被攻擊者識別,進(jìn)而實施可以避開相關(guān)檢測的隱匿攻擊.文獻(xiàn)[14]最早提出向控制信號中持續(xù)添加高斯隨機(jī)噪聲,以使攻擊前后的數(shù)據(jù)殘差出現(xiàn)明顯變化,并據(jù)此檢測重放攻擊的方法.但該方法改變了系統(tǒng)的最優(yōu)控制信號,需要以犧牲系統(tǒng)控制性能換取攻擊檢測率.文獻(xiàn)[15]進(jìn)一步給出了所加高斯噪聲方差大小與性能損失之間的線性關(guān)系,并且基于期望檢測性能和允許控制性能損失提出了相應(yīng)的最優(yōu)化問題.為了減少所加噪聲造成的系統(tǒng)性能損失,文獻(xiàn)[16]提出將原本持續(xù)性加入的水印信號改為周期性加入.然而,該方法在減少性能損失的同時也降低了攻擊檢測率.文獻(xiàn)[17]針對系統(tǒng)建模信息不完整造成建模有誤差的情況,提出一種最優(yōu)的在線控制水印信號設(shè)計方法.文獻(xiàn)[18]針對系統(tǒng)可能存在數(shù)據(jù)丟包的情況,提出控制信號編碼檢測方法.針對不連續(xù)的重放攻擊檢測問題,文獻(xiàn)[19]設(shè)計了一種周期性的水印添加策略,減少未發(fā)生重放攻擊時的控制性能損失.考慮攻擊者的重放延遲為任意值的情況,文獻(xiàn)[20]提出了一種最佳周期性水印添加策略,在給定允許系統(tǒng)性能損失范圍內(nèi)調(diào)整加入控制信號的噪聲大小和周期,以獲得最高攻擊檢測率.但是,現(xiàn)有方法尚未明確給出檢測率、性能損失和噪聲方差之間的定量關(guān)系.
針對現(xiàn)有方法存在的問題,本文提出一種新的基于控制信號編碼的重放攻擊檢測方法.為了減少加入編碼信號對控制信號的累積效應(yīng),降低其對系統(tǒng)控制性能的影響,在向控制信號添加編碼信號的同時,向狀態(tài)估計端添加人為構(gòu)造的輔助信號進(jìn)行補(bǔ)償.在卡爾曼濾波器估計狀態(tài)值時仍使用未加入編碼信號之前的最優(yōu)控制信號.此時所添加的編碼信號不參與控制信號的迭代過程.通過理論證明,給出了上述方法對重放攻擊的可檢測性以及檢測率的定量表示.同時證明了相對于持續(xù)添加控制噪聲的方法,本文方法具有更小的系統(tǒng)性能損失.最后,本文將編碼信號方差、檢測率和檢測函數(shù)閾值之間的關(guān)系表示成一個可解的最優(yōu)化問題,給出了求解編碼信號方差的明確方法.通過仿真實驗,驗證了所提方法的有效性.
考慮CPS 的受控對象為一個線性定常系統(tǒng),采用卡爾曼濾波器得到系統(tǒng)狀態(tài)的估計值,同時依據(jù)線性二次高斯控制器得到最優(yōu)控制信號,實現(xiàn)閉環(huán)反饋控制.系統(tǒng)狀態(tài)模型為
考慮系統(tǒng)的隨機(jī)過程噪聲和測量噪聲,定義系統(tǒng)性能指標(biāo)函數(shù)為
本文研究測量信號重放的情況.因此假設(shè)攻擊者能夠記錄測量數(shù)據(jù)y0,y1,···,yk,同時可將實際傳感器信號yk修改為任意值實施重放攻擊通常分為如下步驟.首先,攻擊者記錄從時間km到km+T的傳感器測量值yk,其中,T為攻擊者記錄數(shù)據(jù)的時間長度.一般情況下T足夠大,否則,可通過將記錄的數(shù)據(jù)連續(xù)重放以達(dá)到攻擊目的.其次,從時間kn到kn+T,攻擊者將系統(tǒng)真實的測量信號yk修改為之前時刻記錄的值,即
與現(xiàn)有控制信號編碼檢測方法不同,本文方法在添加控制編碼信號的同時,向狀態(tài)估計測量值輸入端添加相應(yīng)的補(bǔ)償信號,從而減小編碼信號對系統(tǒng)性能指標(biāo)的影響,并且能使重放攻擊前后檢測信號出現(xiàn)明顯協(xié)方差差異.圖1 給出了本文方法的完整框圖.

圖1 本文所提方法的系統(tǒng)框圖Fig.1 System diagram of the proposed scheme in this paper

圖2 直流電機(jī)系統(tǒng)正常運行時的檢測函數(shù)曲線Fig.2 The detection function curve of the normal DC motor system
由式(9)可知,此時估計端接收到的測量值與系統(tǒng)未加 Δuk時相同.
定義檢測信號rk為
結(jié)合引理1和式(10)可知,本文方案下的檢測信號rk服從多變量正態(tài)分布 MVN(0,Σr).
構(gòu)造檢測函數(shù)為
式中,t為滑動窗口大小.顯然,當(dāng)系統(tǒng)未受攻擊時,g(k)服從自由度為m的χ2分布.
定理 1.如式(1)所示線性定常系統(tǒng),定義檢測函數(shù)如式(12)所示,采用第2.1 節(jié)所提方案對控制信號進(jìn)行編碼.若加入的編碼信號滿足Δuk-1-ii0,···,k-1,則當(dāng)系統(tǒng)遭受重放攻擊后,攻擊是可檢測的.
其中,g′(k)是k時刻系統(tǒng)若處于正常情況下的檢測函數(shù)值.
由于系統(tǒng)建模誤差或者狀態(tài)估計誤差的存在,使用定理1 會導(dǎo)致誤檢發(fā)生.為此,可以給定一個檢測函數(shù)的閾值τ,以及如下假設(shè)檢驗: 若g(k)<τ,則表明系統(tǒng)處于 H0(正常)狀態(tài),反之則處于 H1(受攻擊)狀態(tài).此時,本文方法對重放攻擊的檢測率滿足定理2.
定理 2.如式(1)所示的線性定常系統(tǒng),采用如式(12)所示檢測函數(shù)和第2.1 節(jié)所提方案,則一定存在檢測函數(shù)的閾值τ,使得在未發(fā)生重放攻擊時,檢測函數(shù)滿足g(k)<τ;而當(dāng)系統(tǒng)遭受重放攻擊后,檢測函數(shù)增大,且滿足ga(k)>τ.此時,重放攻擊檢測率最大為
其中,Φ(·) 為標(biāo)準(zhǔn)正態(tài)分布的概率分布函數(shù).
控制信號編碼方法需要在系統(tǒng)的最優(yōu)控制信號加入隨機(jī)的控制編碼信號,從而造成了控制性能的損失.
式(26)表明,之前時刻向系統(tǒng)中添加的編碼信號 ···,Δuk-2,Δuk-1會影響下一時刻的最優(yōu)控制信號uk,且編碼信號的添加對控制信號有累積效應(yīng),導(dǎo)致系統(tǒng)控制性能持續(xù)下降.
為了分析本文所述編碼方法造成的性能損失,首先給出定理3.
定理 3.如式(1)所示的線性定常系統(tǒng),在向系統(tǒng)控制信號中多次添加編碼信號Δui,i1,···,k時,本文所提控制編碼方法下,系統(tǒng)k時刻的控制信號只與當(dāng)前時刻加入的編碼信號 Δuk有關(guān),而與歷史編碼信號 Δui,i1,···,k-1 無關(guān).
證明.由第1.1 節(jié)可知,系統(tǒng)在k時刻的最優(yōu)控制信號為
定理 4.如式(1)系統(tǒng),定義性能指標(biāo)如式(4),則本文方法下,系統(tǒng)的平均性能損失不大于單次控制編碼信號造成性能損失的最大值,且小于在向系統(tǒng)多次添加編碼信號 Δui,i1,···,k時系統(tǒng)的性能損失.
證明.如第1.1 節(jié)所述,記xk為未加 Δuk時的正常系統(tǒng)真實狀態(tài),ek為未加 Δuk時正常系統(tǒng)的狀態(tài)估計誤差,ζk為添加了 Δuk前后系統(tǒng)的真實狀態(tài)之差.現(xiàn)構(gòu)造如下增廣狀態(tài)向量
所以本文方法的平均性能損失不大于單次控制編碼造成的性能損失最大值.
記多次向控制信號中添加噪聲信號方法的性能指標(biāo)為J1,可得式(32) (見本頁下方).
所以,在給定的 Σu相同的情況下,本文方法的性能損失小于向系統(tǒng)中多次添加控制噪聲的方法.□
由式(17)可以看出,為了有效地檢測出攻擊,加入系統(tǒng)中的 Δuk應(yīng)越大越好.然而,此時的系統(tǒng)性能損失也就越大.為了在二者之間找到一個平衡,提出定理5.
定理 5.針對如上假設(shè)檢驗,記攻擊檢測誤報率(False alarm rate,FAR)為α,檢測率(Alarm detection rate,ADR)為β,正常情況下與受到重放攻擊后檢測信號的協(xié)方差分別為Σr和則編碼信號的協(xié)方差Σu和檢測閾值τ滿足如下最優(yōu)化問題:
證明.由第 2.2 節(jié)可知,正常情況下檢測信號的協(xié)方差 ΣrCP CT+V,系統(tǒng)遭受重放攻擊后,協(xié)方差為
根據(jù)檢測要求,誤檢率RFAR需滿足
此外,檢測率RADR需滿足
由式(39)可以看出,式(38)成立只需
在本節(jié)中,使用MATLAB 的網(wǎng)絡(luò)控制系統(tǒng)仿真平臺Truetime 進(jìn)行實驗.以直流電機(jī)為例進(jìn)行仿真驗證,根據(jù)電路原理和剛體旋轉(zhuǎn)定律,可得到如下狀態(tài)空間模型
采用文獻(xiàn)[21]中的參數(shù),將上述系統(tǒng)按采樣時間 0.1 s進(jìn)行離散化,同時,考慮過程噪聲wk和測量噪聲vk,可得
其中,wk~MVN(0,W),vk~MVN(0,V),且協(xié)方差矩陣WVdiag{0.001,0.001}.
現(xiàn)假設(shè)攻擊場景1 為: 前60 s 系統(tǒng)運行正常,攻擊者記錄了20.1 s~ 60 s 的測量數(shù)據(jù),并在60.1 s開始重放記錄的數(shù)據(jù);假設(shè)攻擊場景2 為: 系統(tǒng)從70.1 s 開始重放40.1 s~ 70 s 的數(shù)據(jù).檢測結(jié)果如圖3和圖4 所示.由圖3和圖4 中可以看出,重放攻擊發(fā)生后,系統(tǒng)檢測函數(shù)明顯增大并且很快超過了正常閾值,由此可判定系統(tǒng)遭受了攻擊.并且由圖中曲線可見,針對不同重放數(shù)據(jù)長度和重放時間下的攻擊,本文方法均具有良好的檢測性能,檢測率分別為83.75%和81.33%,誤報率分別為3.15%和4.3%.對比設(shè)置檢測率β0.75和誤報率α0.05可知,本文方法的最終檢測率高于設(shè)定值,而最終誤報率低于設(shè)定值.這主要是因為在式(17)中計算受到攻擊后的檢測函數(shù)值時,忽略了交叉項,導(dǎo)致理論結(jié)果偏于保守.因此,實驗所得攻擊檢測率略大于理論結(jié)果.

圖3 攻擊場景1 下的檢測函數(shù)曲線Fig.3 The detection function curve under attack scenario 1

圖4 攻擊場景2 下的檢測函數(shù)曲線Fig.4 The detection function curve under attack scenario 2
此外,本文考慮了系統(tǒng)遭受非連續(xù)重放攻擊的情況.假設(shè)攻擊場景3 為: 攻擊者在第40.1 s和第70.1 s分別進(jìn)行10 s 的測量值重放,檢測結(jié)果如圖5 所示,檢測率為82.50%,誤報率為4.75%.可以看出,本文所提方法對于非連續(xù)重放攻擊也具有良好的檢測性能.

圖5 攻擊場景3 下的檢測函數(shù)曲線Fig.5 The detection function curve under attack scenario 3
為了進(jìn)一步驗證本文所提方案的有效性,將本文方法與文獻(xiàn)[15,17-18]中的方案進(jìn)行對比,實驗結(jié)果如圖6和表1 所示.由于這些論文中并沒有詳細(xì)給出檢測率與所加水印信號方差的具體關(guān)系,因此以下結(jié)果是重復(fù)50 次實驗后得到的平均值.從圖中可以看出,隨著檢測率的增加,不同方法的性能指標(biāo)損失都逐漸增大,但在相同檢測率要求下,本文方法的性能損失遠(yuǎn)小于對比方法.

表1 噪聲方差及性能指標(biāo)比較Table 1 Comparison of noise variance and performance index of different schemes

圖6 本文所提的方法與不同方法的性能損失函數(shù)曲線對比圖Fig.6 Comparison between the performance index of schemes in this paper and other papers
考慮系統(tǒng)可能受到非連續(xù)重放攻擊的情況,與文獻(xiàn)[20]方法進(jìn)行簡單比較.由于兩種方法的前提條件不相同,因此,實驗中僅在保證性能損失相同的情況下比較檢測率結(jié)果.采用文獻(xiàn)[20]中所用模型,通過采樣周期Tsp2 s,將4 倍水箱控制系統(tǒng)離散化而得到系統(tǒng)參數(shù).攻擊者每次發(fā)動攻擊的持續(xù)時間為:TsT0+X,其中,T0為基本時長,X >0為可控變量,且X的概率密度函數(shù)為f(X)ξe-ξX.現(xiàn)選取非連續(xù)攻擊模型參數(shù)ξ1/5,T010,比較γ1γ2γ3時的情況.求取100 次仿真實驗的平均結(jié)果,檢測率定義為攻擊時間內(nèi)檢測器報警次數(shù)的百分比.當(dāng)采用周期水印策略為q/p0.5 時,即有50%的時刻控制信號加入隨機(jī)噪聲,此時系統(tǒng)性能指標(biāo)值為J25 308,攻擊檢測率約為76%~ 77%左右.采用本文方法在保證相同性能指標(biāo)的前提下,檢測率為77.50%.采用周期水印策略為q/p0.8時,系統(tǒng)性能指標(biāo)值為J40 404,攻擊檢測率約為86%~ 87%.采用本文方法,檢測率為87.56%.文獻(xiàn)[20]主要針對非連續(xù)重放攻擊制定了攻擊時間持續(xù)模型,并根據(jù)此攻擊模型制定最佳周期水印策略,在給定允許犧牲系統(tǒng)性能范圍內(nèi)調(diào)整加入控制信號的噪聲的周期,以求達(dá)到最高攻擊檢測率的同時控制性能損失較小.文獻(xiàn)[20]所得結(jié)果是針對特定攻擊模型下添加編碼信號的最優(yōu)周期,即控制成本也為最優(yōu).而在保證相同控制性能指標(biāo)損失的前提下,本文僅采用均勻概率向控制信號加入編碼,檢測率略優(yōu)于文獻(xiàn)[20]所提方案,由此也可證明本文方法的有效性和優(yōu)越性.
本文考慮了CPS 中重放攻擊的檢測問題,提出一種新的控制信號編碼檢測方法.證明了該方法對于重放攻擊的可檢測性和檢測率上界.在保證較高檢測效率的同時降低了對系統(tǒng)性能的影響,同時,給出了平衡檢測效率和所需系統(tǒng)性能的最優(yōu)化問題.實驗結(jié)果表明,此方法能在犧牲較小系統(tǒng)性能的情況下有效地檢測到重放攻擊的發(fā)生.本文方法也可以與周期水印方法、隨機(jī)水印方法等相結(jié)合,通過減少控制編碼信號加入的次數(shù),達(dá)到進(jìn)一步降低系統(tǒng)性能損失的目的.