楊 康, 王 瑞,, 關(guān) 永, 李曉娟,, 施智平, Xiaoyu SONG
1(輕型工業(yè)機(jī)器人與安全驗證北京市重點實驗室(首都師范大學(xué) 信息工程學(xué)院),北京 100048)
2(電子系統(tǒng)可靠性與數(shù)理交叉學(xué)科國家國際科技合作示范型基地(首都師范大學(xué)),北京 100048)
3(Portland State University, Portland 97230, OR 97230, USA)
信息物理系統(tǒng)(cyber-physical system,簡稱CPS)在環(huán)境感知的基礎(chǔ)上實現(xiàn)了計算、網(wǎng)絡(luò)通信和物理元素的緊密結(jié)合[1].CPS改變了人們與周圍物理世界的相互作用和控制方式.與傳統(tǒng)的嵌入式系統(tǒng)相比,CPS具有智能化、控制精確、網(wǎng)絡(luò)開放性等諸多優(yōu)點.近年來,隨著信息技術(shù)與控制技術(shù)的發(fā)展,CPS廣泛應(yīng)用于國家關(guān)鍵基礎(chǔ)設(shè)施和工業(yè)控制等領(lǐng)域,包括醫(yī)療系統(tǒng)、供水系統(tǒng)、國防和武器系統(tǒng)等[2,3].
隨著信息物理系統(tǒng)在安全攸關(guān)領(lǐng)域的應(yīng)用越來越廣泛,確保該系統(tǒng)的安全是很有必要的[4-6].因此,CPS的安全問題也越來越受到人們的重視.攻擊者可能有不同的動機(jī)去惡意破壞系統(tǒng),對系統(tǒng)造成不同程度的損壞,從性能上的輕微干擾到完全地控制系統(tǒng)[7].最近的工作表明,攻擊者可能通過車輛的車載通信協(xié)議或傳感器欺騙中的漏洞來劫持現(xiàn)代車輛[8,9].類似地,如Maroochy Water漏洞[10]和蠕蟲Stuxnet能夠通過利用監(jiān)督控制和數(shù)據(jù)采集(SCADA)系統(tǒng)[11]中的弱點來禁用關(guān)鍵基礎(chǔ)設(shè)施.
隨著傳感器技術(shù)的迅速發(fā)展,現(xiàn)代CPS通常配備有測量相同物理變量的多個傳感器.例如,可以用GPS、輪編碼器、超聲波和IMU等傳感器來測量汽車的速度.融合這些傳感器的數(shù)據(jù)可以為控制器提供更準(zhǔn)確的估計,這可能會對系統(tǒng)的性能和可靠性產(chǎn)生很大影響[12,13].即使這些傳感器的精度可能不同,但是融合它們的測量不僅能夠產(chǎn)生比任何單個傳感器更精確的估計,而且還能夠增加系統(tǒng)對外部干擾的魯棒性[14,15].此外,具有不同精度和可靠性的不同傳感器降低了系統(tǒng)對特定傳感器的依賴性.Marzullo開發(fā)了一種融合算法,利用多個傳感器的測量,產(chǎn)生包含真實值的融合間隔[15].在Marzullo提出的融合算法的基礎(chǔ)上,Ivanov等人通過引入傳感器傳輸時間表[16]和使用歷史測量[17]提出了一個精確和魯棒性的傳感器融合算法.
目前已經(jīng)存在許多關(guān)于傳感器攻擊檢測問題的研究,大多數(shù)檢測惡意傳感器攻擊的方法都主要考慮概率傳感器的情況.例如,Kalman提出的卡爾曼濾波器,把假設(shè)的傳感器精度和已知的系統(tǒng)動力學(xué)模型相結(jié)合,產(chǎn)生最佳線性估計[18].Kwon等人提出把卡爾曼濾波算法用于在檢測測量數(shù)據(jù)是否被篡改的同時執(zhí)行狀態(tài)估計[19].另外,Jayasimha等人提出通過測量數(shù)據(jù)協(xié)方差矩陣中的元素的變化來檢測和識別不良數(shù)據(jù)[20].然而,當(dāng)系統(tǒng)中存在瞬態(tài)故障時,這些方法容易出現(xiàn)殘留污染和殘留淹沒,將導(dǎo)致誤報或無法檢測到攻擊.這些方法的特點是以相同的方式處理瞬態(tài)故障和攻擊,因此忽略了傳感器有時可能由于臨時干擾而提供故障測量的事實.瞬態(tài)故障是指傳感器在短時間內(nèi)提供錯誤的測量并在不久之后消失.例如,在隧道中,GPS經(jīng)常暫時與衛(wèi)星失去連接.因此,不應(yīng)該把瞬態(tài)故障看作對系統(tǒng)的安全威脅.為了消除這些局限性,Park等人通過為每個傳感器提供一個瞬態(tài)故障模型來區(qū)分瞬態(tài)故障和攻擊,并利用成對傳感器關(guān)系開發(fā)了一種當(dāng)存在瞬態(tài)故障時傳感器攻擊檢測和識別的方法[21].該方法的局限性在于它們僅考慮了兩個傳感器不相交的情況,忽略了它們相交時也可能提供有故障測量的事實,致使有些攻擊不能被檢測出來.例如,隱身攻擊.即,攻擊者有足夠的能力,為了保持不被檢測到,以最大化融合間隔,并使得任意兩個傳感器的間隔盡可能地相交.
本文主要解決 CPS的安全問題,這通常涉及系統(tǒng)的最壞情況,因此,本文采用抽象傳感器模型.為了解決現(xiàn)有的攻擊檢測方法存在的一些局限性,本文提出了一種基于融合間隔和歷史測量的傳感器攻擊檢測和識別方法,并考慮了兩個傳感器間隔相交時的故障檢測問題.該方法的核心思想是從不同角度考慮傳感器的測量,并為不同的傳感器建立不同的故障模型,結(jié)合融合間隔和歷史測量,利用兩個傳感器之間的不一致關(guān)系來檢測攻擊.此外,本文還提出了一種基于構(gòu)建ROC(receiver operating characteristic)曲線來選擇瞬態(tài)故障模型參數(shù)的方法.最后,本文從EV3機(jī)器人平臺上獲得真實的實驗數(shù)據(jù)來評估算法的性能.通過獲取不同窗口和攻擊場景下超聲波和兩個大型電機(jī)的傳感器數(shù)據(jù),訓(xùn)練合適的瞬態(tài)故障模型,驗證了本文提出的傳感器攻擊檢測和識別方法的檢測和識別性能,并分析了誤報情況.實驗結(jié)果表明,本文提出的方法對各種攻擊類型都非常有效.特別是對于隱形攻擊,本文提出的算法的優(yōu)勢是顯而易見的,與現(xiàn)有的檢測算法相比,檢測的準(zhǔn)確率大約提高了90%以上.
本文第 1節(jié)介紹本工作的一些基礎(chǔ)知識,包括系統(tǒng)模型、傳感器模型、瞬態(tài)故障模型以及攻擊模型.第 2節(jié)介紹兩種多傳感器融合算法.第 3節(jié)詳細(xì)闡述本文提出的基于融合間隔和歷史測量的傳感器攻擊檢測和識別方法,并提出一種基于構(gòu)建ROC曲線選擇瞬態(tài)故障模型參數(shù)的方法.為了增加算法的可讀性,第3節(jié)給出一種算法的實例.第4節(jié)通過EV3平臺驗證算法的性能,并介紹在實際場景中瞬態(tài)故障模型的構(gòu)建.第5節(jié)總結(jié)本文工作并提出未來的研究方向.
為了更好地理解本文提出的基于融合間隔和歷史測量的傳感器攻擊檢測和識別方法,本節(jié)主要介紹本工作中的一些基礎(chǔ)知識.首先介紹系統(tǒng)模型,并簡單分析了在具有非線性系統(tǒng)模型的CPS中,本文提出的檢測算法的可擴(kuò)展性.之后介紹了本文使用的抽象傳感器的模型,詳細(xì)描述了傳感器間隔的構(gòu)建.然后介紹用來區(qū)分瞬態(tài)故障和攻擊的瞬態(tài)故障模型.最后介紹本文用到的3種攻擊類型:偏差攻擊、隨機(jī)攻擊和隱身攻擊.
本文考慮具有測量相同物理變量(例如,速度)的N個傳感器組成的CPS,利用多個傳感器產(chǎn)生的冗余信息為控制器提供更準(zhǔn)確的估計值.本文假設(shè) CPS在T(系統(tǒng)運行的總時間)周期內(nèi)以周期性的方式查詢所有傳感器,不斷地獲取所有傳感器的測量,然后執(zhí)行傳感器融合算法和攻擊檢測算法.由于大多數(shù)CPS具有已知的動力學(xué),本文假設(shè)CPS由一個離散線性時不變系統(tǒng)組成,其形式如下:
其中,xt=(xt1,xt2,xt3,...,xtn)∈Rn,表示在t時刻的狀態(tài);ut=(xt1,xt2,xt3,...,xtp)∈Rp,表示控制器在t時刻的輸入信號;yt∈Rm為系統(tǒng)輸出,即傳感器的測量值;ωt∈Rq和vt∈Rl,分別表示系統(tǒng)干擾和測量噪聲;A、B、C屬于系統(tǒng)信息,A∈Rn×m和B∈Rn×p,分別為狀態(tài)矩陣和控制輸入矩陣,C∈Rm×n為輸出矩陣.
本文主要研究具有上述線性系統(tǒng)模型的 CPS中傳感器的攻擊檢測和識別問題.然而,本文提出的傳感器攻擊檢測方法可以很容易地擴(kuò)展到具有非線性系統(tǒng)模型的情況,如變速和轉(zhuǎn)彎的情況.擴(kuò)展思路主要有兩個:(1) 根據(jù)實際的輸入調(diào)整瞬態(tài)故障模型.例如,可以使用查找表,該查找表包含系統(tǒng)在不同操作模式下訓(xùn)練的多個瞬態(tài)故障模型的參數(shù)值.即,每一個速度段給出一組瞬態(tài)故障模型參數(shù),針對不同的系統(tǒng)操作模式動態(tài)地選擇合適的參數(shù).(2) 針對轉(zhuǎn)彎的情況.對于轉(zhuǎn)彎的瞬間,那個時刻點t不使用歷史測量,對于其他的時刻點,本文提出的算法都是適用的.
如圖1所示,本文專注于一個廣泛使用的CPS架構(gòu),它的基本工作流程是:CPS通過傳感器實時地感知物理對象的變化,然后通過網(wǎng)絡(luò)把傳感器的測量信息發(fā)送給控制器.控制器中的計算單元根據(jù)多個傳感器的測量信息正確地認(rèn)識環(huán)境,并根據(jù)一定的算法做出相應(yīng)決策,再通過網(wǎng)絡(luò)將決策反饋給執(zhí)行器,最后由執(zhí)行器執(zhí)行該決策,進(jìn)而改變物理對象.在整個過程中,可能有些地方會受到惡意攻擊.例如,在通過網(wǎng)絡(luò)把傳感器的測量發(fā)送給控制器這個過程中,攻擊者可能會通過物理攻擊或網(wǎng)絡(luò)攻擊篡改傳感器的值,導(dǎo)致控制器收到的測量值是錯誤的,這可能導(dǎo)致整個CPS不能正常運行.要實現(xiàn)對CPS的精確控制,必須保證各種傳感器輸出真實可靠.因此,實現(xiàn)傳感器故障的快速準(zhǔn)確檢測,對于提高CPS的安全可靠性具有十分重要的意義.本文結(jié)合CPS安全可靠性這一迫切需求,利用多傳感器冗余信息,開展傳感器攻擊檢測和識別方法及應(yīng)用的研究.本文在控制器這里添加一種傳感器攻擊檢測方法,當(dāng)控制器收到傳感器的測量值時,首先經(jīng)過攻擊檢測算法,判斷收到的值是否是正確的,然后再進(jìn)行下一步工作.
目前文獻(xiàn)中使用的傳感器模型大致分為概率傳感器模型和抽象傳感器模型兩類.在前者中,每個傳感器向控制器提供具有已知概率分布的被噪聲破壞的單個測量,如高斯分布.噪聲分布對更可能成為真正有價值的點賦予更多的權(quán)重.因此,概率傳感器模型非常適合分析預(yù)期的系統(tǒng)性能,但需要了解噪聲分布的知識.其中,在錯誤的噪聲假設(shè)條件下設(shè)計的檢測器會降低攻擊檢測的準(zhǔn)確性[22].在后者中,每個傳感器向控制器提供一個包含所有可能為真實值的點的間隔,這種類型的傳感器模型假定不知道區(qū)間上的噪聲分布,但即使在最壞的情況下,也可以構(gòu)造這些區(qū)間來包含未知的真實值.由于抽象測量是真實值的最壞情況界限,因此,它們非常適用于拜占庭故障和傳感器攻擊下系統(tǒng)運行的最壞情況分析.
本文采用抽象傳感器模型.抽象間隔可以基于制造商關(guān)于傳感器的精度和規(guī)范以及諸如采樣抖動和同步誤差的物理限制來構(gòu)造.在本文中,每個傳感器圍繞其自身測量構(gòu)造一個區(qū)間[Si(t)–δi,Si(t)+δi],用SiF(t) 表示.其中,Si(t)是傳感器Si在t時刻的測量值,δi是傳感器的誤差界限(即,誤差精度).傳感器Si的間隔大小為2δi.間隔大小反映了傳感器的精度,小的間隔意味著獲得的測量具有較高的可信度.另外,傳感器Si在時間t的真實值由τi(t)表示(通常是未知的).有時傳感器可能會提供錯誤的測量,如果t時刻Si的測量值偏離真實值,并且其偏離值大于δi,則Si(t)被稱為故障測量.用謂詞F(Si,t)表示傳感器Si在t時刻提供了錯誤的測量.故障測量的定義形式化為如下定義.
定義1(故障測量).
傳感器Si的瞬態(tài)故障模型是一個三元組(δi,fi,wi),其中,δi是誤差界限;(fi,wi)是瞬態(tài)閾值,其指定在任何大小為wi的窗口中,Si可以提供至多fi個錯誤測量.瞬態(tài)閾值用于定義瞬態(tài)故障和非瞬態(tài)故障之間的邊界.如果Si不違反其瞬態(tài)閾值,則稱為瞬態(tài)故障,由謂詞TF(Si,t)表示,否則稱為非瞬態(tài)故障.
定義2(瞬態(tài)故障).
其中,如果Si在t時刻提供了故障的測量,則F′(Si,t)=1.否則,F′(Si,t)=0;如果(t≥wi),則從第 1 輪檢測開始累加,即t′=1.
本文把永久性故障和惡意攻擊都形式化為非瞬態(tài)故障,以相同的方式對待它們.當(dāng)然,也可能存在符合瞬態(tài)故障模型的攻擊,這將留作以后的工作,本文僅考慮表現(xiàn)為非瞬態(tài)故障的攻擊.因此,如果傳感器Si在整個系統(tǒng)操作期間至少出現(xiàn)1次非瞬態(tài)故障,則稱Si受到了攻擊,用謂詞A(Si,t)表示.
定義3(攻擊).
其中,T是系統(tǒng)運行的總時間.
目前,攻擊者一般有物理攻擊和網(wǎng)絡(luò)攻擊兩種攻擊手段.物理攻擊是指通過損壞或替換傳感器來完成,或通過其他物理手段引入偏差來實現(xiàn)[23].網(wǎng)絡(luò)攻擊是指通過利用其軟件中的漏洞或用一個全新的版本替換其代碼來危害傳感器.因此,攻擊者可以通過網(wǎng)絡(luò)訪問傳感器,甚至不需要物理接近.在現(xiàn)代傳感器中也可以利用在其他嵌入式系統(tǒng)中可能發(fā)生的任何軟件缺陷.
如第 1.1節(jié)中所述,本文假設(shè)系統(tǒng)中的傳感器通過共享總線進(jìn)行通信.因此,通過獲得對傳感器的控制,攻擊者能夠獲得當(dāng)前輪次的所有傳感器測量以及之前所有傳感器發(fā)送到總線上的歷史測量數(shù)據(jù).本文假設(shè)攻擊者可以代表損壞的傳感器發(fā)送任何測量,并且最壞情況下攻擊者具有無限的計算能力和全系統(tǒng)知識,包括傳感器的規(guī)范、采用的傳感器融合算法和攻擊檢測算法等.由于每個傳感器的輸出是一個間隔,那么,攻擊者的目標(biāo)是通過篡改某些傳感器的值,使其間隔最大化,從而降低了所提供的測量的置信度,使系統(tǒng)處于不安全狀態(tài).由于CPS的性質(zhì)和體系結(jié)構(gòu),攻擊者可以利用物理層和網(wǎng)絡(luò)層的弱點.根據(jù)攻擊者不同的攻擊目的,本文考慮3種攻擊類型.
(1) 偏差攻擊(bias attack).攻擊者為被攻擊的傳感器添加一個偏差值Δ,其中,Δ=2δmax,δmax是指所有傳感器中最大的誤差精度.W=(w1,w2,w3,…,wT),即窗口的大小即為系統(tǒng)的總運行時間T.對t=1,2,…,T,有
(2) 隨機(jī)攻擊(random attack).該攻擊類型與偏差攻擊非常相似,其主要區(qū)別在于,該攻擊是為t時刻被攻擊的傳感器添加一個隨機(jī)的偏差,偏差的范圍是(0,2δmax).當(dāng)添加的偏差值很小時,系統(tǒng)很難發(fā)現(xiàn)此攻擊.顯然,隨機(jī)攻擊比偏差攻擊更難被檢測到.
(3) 隱身攻擊(stealth attack).攻擊者用一個新的測量代替當(dāng)前時刻的測量值,最大化融合間隔的大小并盡可能地使任意兩個傳感器的間隔相交.這類攻擊是在假設(shè)攻擊者已知系統(tǒng)所使用的融合算法、所有測量數(shù)據(jù)以及傳感器的規(guī)范等知識的前提下所設(shè)計的攻擊.其攻擊的目的是盡可能地保持不被檢測到.該攻擊類型是 3種攻擊類型中危害性和隱蔽性最強(qiáng)的.
本節(jié)介紹一種基于抽象傳感器模型的融合算法,該算法由 Marzullo在 1990年提出[15].該算法的輸入是N個傳感器的間隔和一個數(shù)字f,其中,f表示系統(tǒng)中被破壞的傳感器數(shù)目的上限.算法的輸出是一個間隔,在本文中稱為融合間隔,其跨越包含至少N-f個間隔中的最小到最大點.由于存在至多f個損壞的傳感器,至少存在N-f個正確的傳感器,因此真實值可以在任何N-f個間隔組中.最后,算法輸出包含所有這樣的組的最小間隔.

融合間隔的計算步驟如下:首先,我們對所有傳感器的下界和上界分別以升序和降序進(jìn)行排序,結(jié)果分別存放在str_start和str_end數(shù)組中.然后,我們按照數(shù)組下標(biāo)(從0開始)從小到大的順序開始掃描str_start,直到掃描到融合間隔的下界l與所有傳感器的交點共N-f個為止,這個數(shù)值就是融合間隔的下界l.按同樣的方法掃描str_end,得到融合間隔的上界h.

在上述經(jīng)典的傳感器融合算法的基礎(chǔ)上,本文提出了一種改進(jìn)的傳感器融合算法,其核心思想是利用歷史測量來減小融合間隔的大小,從而提高融合間隔的精確度.
如第 1.1節(jié)所述,CPS具有已知的系統(tǒng)動力學(xué)模型,因此,可以通過系統(tǒng)動力學(xué)方程來使用歷史測量以改進(jìn)融合算法.本文將歷史測量加入到融合算法中的基本思路是:把t-1時刻的所有傳感器(共N個)的測量,通過動力學(xué)方程映射到t時刻,這時,t時刻就有 2N個測量值,此時發(fā)生故障的傳感器的數(shù)量最大是 2f,然后使用經(jīng)典的融合算法計算融合間隔.在添加過去的測量之后,改進(jìn)的融合算法仍然需要滿足兩個標(biāo)準(zhǔn):(1) 在包含真實值的前提下,融合間隔盡可能地小.(2) 融合間隔不大于未使用歷史測量時獲得的融合間隔.
為了比較上述兩種融合算法,本文考慮了超聲波傳感器受到隨機(jī)攻擊的情況,分別使用兩種融合算法來計算融合間隔.實驗結(jié)果如圖 3所示.從圖中可以看出,使用歷史測量的融合算法得到的融合間隔永遠(yuǎn)不會大于不使用歷史測量的融合算法得到的融合間隔.該現(xiàn)象說明,歷史測量的使用確實可以縮小融合間隔的大小,提高融合算法的精確度.
由于真實值通常是不知道的,因此很難確定哪個傳感器提供了錯誤的測量值.Marzullo在1990年提出基于抽象傳感器的融合算法的同時,也提出了一種基于融合間隔的傳感器攻擊檢測方法.該方法的主要思想是讓每個傳感器與融合間隔進(jìn)行比較,任何不與融合間隔相交的傳感器都是故障的.

證明:在故障傳感器數(shù)量有限的情況下,融合算法會產(chǎn)生一個包含真值的融合區(qū)間.由于真實值不可能存在于兩個不相交的區(qū)間中,因此,如果傳感器Si的間隔不與融合區(qū)間相交,則意味著Si一定是故障的.
本節(jié)描述了本文提出的用于傳感器攻擊檢測和識別問題的改進(jìn)的成對不一致(boosted pairwise inconsistency,簡稱 BPI)算法.該方法在基于 PI方法[21]的基礎(chǔ)上考慮了融合間隔和歷史測量,并解決了當(dāng)兩個傳感器的間隔相交時傳感器的攻擊檢測和識別問題.
本文提出的傳感器攻擊檢測和識別方法基于傳感器之間的成對不一致關(guān)系.本節(jié)首先介紹兩個關(guān)鍵概念,即傳感器之間的成對不一致類型:弱不一致性和強(qiáng)不一致性.該部分建立在假設(shè)真實值通常不知道的前提下,因此不知道哪些傳感器提供了正確的測量.然而,已知的是傳感器測量之間的相互關(guān)系,本文正是利用這種相互關(guān)聯(lián)的信息來檢測和識別攻擊.兩個傳感器Si和Sj之間的第1種關(guān)系是弱不一致性,由謂詞WI(Si,Sj,t)表示.如果當(dāng)且僅當(dāng)其中一個傳感器提供了故障的測量,那么兩個傳感器在給定的回合中是弱不一致性的.
定義5(弱不一致性).
由于真實值是未知的,這個條件通常很難驗證.因此,該定義不能用于判斷兩個傳感器是否是弱不一致性.然而,因為真實值不能位于兩者中,因此,如果兩個傳感器的間隔彼此不相交,則它們中的一個必須已經(jīng)提供了錯誤的測量.
由上述弱不一致性的定義可知,瞬態(tài)故障和攻擊可能在單個回合中都表現(xiàn)出弱不一致性.因此,本文引入強(qiáng)不一致性來消除兩者之間的歧義.如果兩個傳感器中至少有一個是非瞬態(tài)故障(傳感器不符合其瞬態(tài)故障模型),那么這兩個傳感器之間存在強(qiáng)不一致性.形式化地,有如下定義.
定義6(強(qiáng)不一致性).
與弱不一致性的定義類似,因為不知道真實值,很難判斷Si是否是非瞬態(tài)故障.特別地,如果兩個傳感器在給定的窗口中頻繁地發(fā)生弱不一致,那么它們變得強(qiáng)不一致.
引理1.給定傳感器Si、Sj和時間t,
注意,如果t 3.1.1 弱不一致檢測 弱不一致檢測方法是本文提出的傳感器攻擊檢測和識別方法的核心部分,是提高攻擊檢測和識別性能的關(guān)鍵步驟.由于2015年P(guān)ark等人提出的基于PI的攻擊檢測方法僅考慮了兩個傳感器不相交的情況,忽略了兩個傳感器相交時也可能存在故障的情況,并且該方法無法檢測和識別到隱身攻擊.針對這些情況,本文提出了一種新的弱不一致檢測方法來解決這些問題.本文提出的弱不一致檢測方法分為兩步. (1) 兩個測量不相交. 首先比較當(dāng)前時刻(t)任意兩個傳感器的測量,如果兩個傳感器的測量不相交,則至少有一個傳感器提供了故障測量,即它們在t時刻是弱不一致關(guān)系. 然后融合過去和當(dāng)前的測量,將所有傳感器的測量從t–1時刻映射到t時刻,在t時刻共2N個測量.最后在t時刻比較任意兩個測量值,注意,不包括同一個傳感器不同時刻的兩個測量.如果這兩個測量不相交,那么這兩個傳感器之間存在弱不一致關(guān)系. (2) 兩個測量相交. 當(dāng)兩個測量相交時,主要是從不同的角度利用融合間隔和歷史測量來判斷故障. 第1步:首先計算t時刻的融合間隔,讓每個傳感器和融合間隔進(jìn)行比較,如果兩個傳感器Si和Sj均不與融合間隔相交,并且這兩個傳感器的測量相交,則Si和Sj是弱不一致關(guān)系. 第2步:結(jié)合歷史測量進(jìn)行判斷.首先計算t–1時刻的融合間隔,將每個傳感器在t–1時刻的測量與該融合間隔進(jìn)行比較;然后把t–1時刻的測量映射到t時刻,再進(jìn)行兩兩比較.當(dāng)滿足下列條件時,說明傳感器Si和Sj是弱不一致關(guān)系. 算法1給出了具體實現(xiàn).第1行~第8行實現(xiàn)了在t時刻任何兩個測量之間的比較,并將不一致性信息存儲在弱不一致數(shù)組中.第9行將所有傳感器的測量值從時間t–1時刻映射到t時刻.第10行調(diào)用融合算法計算融合間隔.第 11行實現(xiàn)了當(dāng)前時刻和歷史的傳感器測量之間的比較.第 12行完成了單個傳感器和融合間隔的比較,并將這些傳感器的信息存儲在不一致數(shù)組中.使用弱不一致檢測方法最終會得到一個弱不一致數(shù)組,里面存放了在每一個時刻存在弱不一致關(guān)系的傳感器的信息.這些信息將會在傳感器的攻擊檢測和識別中用到. 3.1.2 強(qiáng)不一致檢測 本小節(jié)通過采用上述的不一致概念來展示本文提出的傳感器攻擊檢測方法.由定義 6可知,如果兩個傳感器之間存在強(qiáng)不一致關(guān)系,則說明兩個傳感器中至少有一個是非瞬態(tài)故障.因此,由定義3攻擊的定義可知,如果存在時間t≤T,使得傳感器Si和Sj是強(qiáng)不一致的,則說明系統(tǒng)中存在被攻擊的傳感器.其中,T是系統(tǒng)運行的總時間. 引理2(攻擊檢測). 其中,如果SI(Si,Sj,t)存在,則SI′(Si,Sj,t)=1;否則,SI′(Si,Sj,t)=0. 上述的攻擊檢測方法僅考慮檢測系統(tǒng)中是否存在傳感器被攻擊,并沒有考慮哪個傳感器被攻擊的問題.在本小節(jié)中,為了確定哪個傳感器受到攻擊,本文假設(shè)系統(tǒng)中至多有s(s<N–1)個傳感器受到攻擊.本文提出的攻擊識別方法是:累積強(qiáng)不一致信息,在強(qiáng)不一致對中,如果傳感器Si出現(xiàn)的次數(shù)超過s,則稱Si被攻擊了. 引理3.給定傳感器Si和時間t,用degree(Si,t)表示在t時刻與Si存在強(qiáng)不一致關(guān)系的傳感器的數(shù)量. 證明:假設(shè)有n(n>s)個傳感器和Si相連,與Si相連的傳感器用Sj表示.由于Si和Sj是強(qiáng)不一致關(guān)系,如果Si沒有被攻擊,那么Sj必須被攻擊.此時,共有n個傳感器受到攻擊,這與最多有s個傳感器被攻擊的假設(shè)相矛盾.證畢. 本文提出的 BPI方法需要精確的瞬態(tài)故障模型.現(xiàn)在的制造商一般會提供傳感器的瞬態(tài)故障規(guī)范.盡管制造商有時候會提供算法所需要的全部參數(shù),但對應(yīng)不同的應(yīng)用場景和需求,這些參數(shù)可能并不是最佳的(例如,在被高建筑物包圍的環(huán)境中使用 GPS).此外,針對不同的傳感器攻擊算法,有些參數(shù)制造商可能無法提供,比如本文提出的BPI算法的參數(shù)fi.那么,就有必要基于經(jīng)驗數(shù)據(jù)來開發(fā)瞬態(tài)故障模型.因此,本節(jié)提出一種通過構(gòu)建ROC曲線來選擇瞬態(tài)故障模型參數(shù)的新方法,用于抽象傳感器的攻擊檢測. 受試者工作特征曲線為ROC曲線(receiver operating characteristic curve).通常,該曲線的橫軸是假陽性概率(false positive rate),縱軸是真陽性概率(true positive rate),其目的主要是用來選擇最佳的界限值.將多個實驗得到的ROC曲線繪制到同一個坐標(biāo)中,就能很直觀地看出,ROC曲線的最左上角的點表示錯誤率最少且準(zhǔn)確率最高,意味著該點對應(yīng)的閾值是最好的. 本文提出的選擇瞬態(tài)故障模型參數(shù)方法的思想是:從實際的實驗平臺上獲取大量的實驗數(shù)據(jù)(傳感器的值),把這些數(shù)據(jù)應(yīng)用到攻擊檢測算法中(BPI方法),從而得到不同場景下傳感器的攻擊識別率和誤報率.然后把各個場景得到的 ROC曲線繪制到同一個坐標(biāo)系中.找到識別率最高、誤報率最小的點,即圖中最左上角的點,該點對應(yīng)的參數(shù)就是最佳的參數(shù).然而,由于每個參數(shù)對應(yīng)的值可能有無數(shù)多個,不可能把每一個參數(shù)的每個值都進(jìn)行實驗來得到其對應(yīng)的識別率和誤報率.因此,在進(jìn)行實驗之前,需要篩選出這些參數(shù)可能的取值范圍,然后再取這些范圍內(nèi)的點進(jìn)行實驗,最終確定參數(shù)的取值.在第1.3節(jié)中提出的瞬態(tài)故障模型有3個參數(shù).參數(shù)δi使用制造商提供的值,另外兩個參數(shù)fi和wi使用本文提出的基于構(gòu)建 ROC曲線選擇參數(shù)的方法進(jìn)行確定.其基本步驟如下. (1) 初步篩選參數(shù),選擇若干個值作為fi的候選值.根據(jù)受到攻擊的傳感器數(shù)量,本文考慮 3種攻擊情況:只有一個傳感器受到攻擊,另外兩個傳感器沒有故障;一個傳感器受到攻擊,另外兩個傳感器僅有一個傳感器存在瞬時故障;一個傳感器受到攻擊,另外兩個傳感器均存在瞬時故障.通過對無攻擊無故障的傳感器數(shù)據(jù)添加上面 3種攻擊和故障,會得到一些訓(xùn)練數(shù)據(jù).此外,分別用fi–1和fi+1代替3種類型的攻擊中的fi來形成一系列新的訓(xùn)練集.通過實驗得到不同fi對應(yīng)的識別率和誤報率.最后,本文選擇幾個誤報率較小但識別率還能接受的fi作為候選值.這樣做雖然不能保證攻擊檢測率最大,但可以保證誤報率最小. (2) 根據(jù)第 1.4節(jié)中設(shè)計的攻擊模型,為原始數(shù)據(jù)(無攻擊、無故障的傳感器數(shù)據(jù))添加 3種類型的攻擊.針對(1)中選取的每個候選值進(jìn)行實驗,獲得對應(yīng)窗口的誤報率和識別率后,構(gòu)建 ROC曲線,然后確定最終的參數(shù)值.本文選取參數(shù)的具體細(xì)節(jié)將在第4.1節(jié)中加以詳細(xì)介紹. 本小節(jié)主要是想通過一個簡單的例子來進(jìn)一步解釋上述傳感器攻擊檢測和識別算法.為了便于解釋,本文使用一個不一致圖G(V,E)來描述該算法.在不一致圖中,每個傳感器對應(yīng)一個頂點,兩個頂點之間的關(guān)系代表它們之間的不一致關(guān)系.如果該關(guān)系是弱不一致關(guān)系,則該圖表示弱不一致圖,用WI_Graph表示;如果該關(guān)系是強(qiáng)不一致關(guān)系,則該圖表示強(qiáng)不一致圖,用SI_Graph表示.該不一致圖的定義如下. 定義7(不一致圖). 本文設(shè)計了如圖4所示的實例,圖中有4個傳感器,窗口W=5,垂直虛線表示真實值(未知).假設(shè)系統(tǒng)中傳感器S1和S4受到攻擊(最多有2個傳感器被攻擊).注意,不要求被攻擊的傳感器在每一輪次中均受損,但需要滿足在給定窗口中是非瞬態(tài)故障,每個傳感器的瞬態(tài)故障模型見表1. Table 1 The parameters of the transient fault model in the example of Fig.4表1 圖4實例中對應(yīng)的瞬態(tài)故障模型的參數(shù) 根據(jù)第3.1.1節(jié)介紹的弱不一致檢測算法,得到如WI_Graph所示的弱不一致關(guān)系圖.從圖中可以看出,系統(tǒng)在每一輪次中都檢測到了弱不一致對.在t=1時,傳感器S1和S2之間存在弱不一致關(guān)系,這意味著這兩個傳感器至少有一個提供了錯誤的測量.到t=3為止,S1和S2之間共出現(xiàn)了3次弱不一致關(guān)系.根據(jù)第3.1.2節(jié)介紹的強(qiáng)不一致檢測方法可知,S1和S2之間存在強(qiáng)不一致關(guān)系,這意味著系統(tǒng)中存在攻擊,其他類似.該實例中所有傳感器的強(qiáng)不一致關(guān)系如圖 4中的SI_Graph所示.SI_Graph中的虛線代表在之前的檢測中已經(jīng)出現(xiàn)過該強(qiáng)不一致對.雖然,在t=3時,檢測到系統(tǒng)中存在攻擊,但此時無法判斷哪個傳感器受到了攻擊.直到t=5時,發(fā)現(xiàn)傳感器S1和S4的度均為3,大于2,根據(jù)第3.2節(jié)中給出的攻擊識別算法可以識別出在t=5時S1和S4均受到了攻擊. 本節(jié)從EV3機(jī)器人平臺上獲取實際的實驗數(shù)據(jù)來評估BPI算法的性能.首先介紹實驗的基本設(shè)置,之后介紹瞬態(tài)故障模型的參數(shù)選擇問題,然后評估幾種算法的攻擊檢測和識別性能,最后分析誤報的原因. 本文的實驗平臺選擇 LEGO EV3地面車輛,如圖 5所示.EV3是 2013年 LEGO公司開發(fā)的第三代MINDSTORMS機(jī)器人.它可以安裝多個傳感器,包括超聲波、電機(jī)(內(nèi)嵌角度傳感器)、陀螺儀、顏色傳感器等.根據(jù)需求,本文使用2個大型電機(jī)和1個超聲波傳感器來測量EV3的速度.這3個傳感器均可提供10Hz的測量. 為了獲得魯棒的瞬態(tài)故障模型參數(shù),本文根據(jù)第 3.3節(jié)提出的參數(shù)選擇方法選擇最終的實驗參數(shù).具體是,根據(jù)制造商提供的測量誤差設(shè)置傳感器的瞬態(tài)故障模型的參數(shù)δi.對某個確定的窗口wi,通過真實的訓(xùn)練數(shù)據(jù)來確定fi的值.本文首先以0.7m/s的恒定速度驅(qū)動EV3機(jī)器人直線運動,每個傳感器收集400個測量數(shù)據(jù).利用第 3.3節(jié)提出的參數(shù)選擇方法進(jìn)行實驗,為了模擬真實的攻擊情形,窗口wi中每個傳感器提供的故障數(shù)是隨機(jī)的.根據(jù)實驗結(jié)果,本文建立了如圖6所示的ROC曲線來確定fi的值.ROC曲線的x軸表示誤報率(誤報的數(shù)量/識別的總數(shù)量),y軸表示識別率((識別的總數(shù)-誤報的總數(shù))/測試總數(shù)).為了避免混淆,圖6中不包括w400的情況.從圖中可以看出,左上角的數(shù)據(jù)點具有更高的識別率、更低的誤報率,該點對應(yīng)的fi是最佳閾值.表 2總結(jié)了可變窗口大小的故障模型參數(shù),其中,wi表示窗口大小為i的檢測器. Table 2 Fault models for the sensors on EV3表2 EV3上瞬態(tài)故障模型的參數(shù) 為了評估本文在第3節(jié)中介紹的BPI算法,本節(jié)首先在平坦的地面上以恒定的速度驅(qū)動EV3來收集每個傳感器的數(shù)據(jù).本文收集了20次來自EV3設(shè)備上的未被攻擊的傳感器數(shù)據(jù),其中,所有傳感器以10Hz平均采樣40s,因此,每個傳感器有400個測量值. 本文假設(shè)在固定窗口中,攻擊者對3個抽象傳感器中的1個進(jìn)行攻擊,具體哪一個傳感器被攻擊是未知的.同時,對于被攻擊的傳感器,本文添加第1.4節(jié)中設(shè)計的3種攻擊類型.注意,被攻擊的傳感器不要求在每一輪中都提供故障的測量,每個窗口中傳感器提供故障測量的數(shù)量是隨機(jī)的,但需要保證在給定窗口中是非瞬態(tài)故障.此外,在所有的檢測數(shù)據(jù)中,其他傳感器可能存在瞬態(tài)故障,也可能不存在瞬態(tài)故障.表3給出了不同窗口和攻擊場景下3種攻擊檢測和識別方法的檢測率.其中,KF方法是一種基于卡爾曼濾波器的傳感器攻擊檢測方法.從表中可以看出,本文提出的BPI算法能夠比已有的算法檢測到更多的攻擊.對于3種攻擊,BPI方法在任何窗口中都比PI和KF方法更加魯棒,并且隨著窗口大小的增加,BPI方法逐漸達(dá)到穩(wěn)態(tài)檢測率.對于偏差攻擊,KF方法與BPI的檢測性能相近,BPI檢測器的平均檢測率比PI檢測器大約高25%,比KF方法高約2%.然而,對于隨機(jī)攻擊,KF方法的檢測性能明顯低于BPI方法,小窗口中BPI檢測器比PI檢測器平均約高53%,在大窗口中約高35%,平均比KF方法高14%.特別地,對于隱身攻擊來說,BPI方法的優(yōu)勢是顯而易見的.現(xiàn)有方法的檢測率幾乎是0,而BPI方法能夠檢測到攻擊,其檢測率平均能達(dá)到90%以上.PI方法不能檢測到隱形攻擊,是因為隱身攻擊的特點就是盡可能地最大化融合間隔并使當(dāng)前時刻任意兩個傳感器之間的間隔盡可能地相交.而 PI方法恰好是基于兩個傳感器之間的間隔不相交來判斷故障的,所以,基于PI的方法無法檢測到這種攻擊.基于KF的方法在大的窗口中偶爾可以檢測到攻擊,但檢測率僅有 0.01%左右.并且,其誤報率很高,這將在下一小節(jié)中詳細(xì)加以介紹. Table 3 Detection rate表3 檢測率 本文提出的 BPI算法的識別性能與檢測性能幾乎相同,但是識別比檢測需要花費更長的時間.表 4顯示了不同窗口和攻擊情形下 3種傳感器攻擊檢測方法的識別率.這些結(jié)果表明,對于偏差攻擊和隨機(jī)攻擊,除了 KF方法外,其他兩種方法的識別率通常隨窗口大小而有所改善.從表 4(a)可以看出,對于偏差攻擊,BPI方法的識別率大約平均比PI方法高30%左右,僅比基于卡爾曼的方法高3.3%左右.對于隨機(jī)攻擊來說,BPI方法大約平均比PI方法高49%左右,比基于KF的方法約高14%左右.從表4(b)可以看出,基于KF的方法對于隨機(jī)攻擊的識別性能明顯降低.這是由于,隨機(jī)攻擊為被攻擊的傳感器在被攻擊的時刻隨機(jī)添加一個 0~0.7的一個偏差值,當(dāng)這個偏差值較小時,由于測量值和估計值的偏差比較小,就會導(dǎo)致 KF方法無法檢測到故障.特別地,從表 4(c)中可以看出,對于隱身攻擊,基于PI的方法的識別率為0,基于KF的方法的識別率在大的窗口中偶爾能夠檢測到1次攻擊,僅0.01%左右,并且其誤報非常高.然而,本文提出的BPI方法平均可達(dá)到93%. Table 4 Identification rate表4 識別率 表5總結(jié)了不同窗口大小中 3種方法的誤報率.實驗結(jié)果表明,3種方法都存在誤報,這可能是由于這些窗口中存在瞬態(tài)故障的原因.此外,我們注意到,BPI方法的誤報率略高于PI方法.主要原因是瞬態(tài)故障的存在不能保證每輪被損壞的傳感器數(shù)量不超過f,即無法保證融合間隔一定包含真實值.此外,由于使用傳感器歷史測量,在某些攻擊情形中可能由于從根據(jù)歷史測量預(yù)測的當(dāng)前測量不夠準(zhǔn)確,導(dǎo)致誤報增加.然而,從表中可以看出,KF方法的誤報率非常高.其出現(xiàn)誤報的原因主要是由于瞬態(tài)故障的存在,導(dǎo)致KF方法產(chǎn)生殘留污染和殘余淹沒,從而造成誤報.此外,需要注意的是,對于偏差攻擊和隨機(jī)攻擊,KF方法的誤報率與BPI相近,但對于隱身攻擊,其誤報率能達(dá)到50%以上. Table 5 False rate表5 誤報率 本文研究了在存在瞬態(tài)故障時CPS的安全問題.首先在Marzullo提出的經(jīng)典融合算法的基礎(chǔ)上,通過融入歷史測量提出了一種改進(jìn)的融合算法,該算法可以得到更精確的融合間隔,具有更強(qiáng)的魯棒性.此外,本文結(jié)合歷史測量和融合間隔提出了一種新穎的傳感器攻擊檢測和識別方法,用于具有測量相同物理變量的多個傳感器的CPS.并且,提出了一種基于構(gòu)建ROC曲線的方法來選擇瞬態(tài)故障模型.最后在EV3平臺上獲得實際的實驗數(shù)據(jù),驗證了算法的性能,并與現(xiàn)有的基于卡爾曼濾波器的方法和基于 PI的方法進(jìn)行了比較.實驗結(jié)果表明,該算法在各種攻擊場景下均優(yōu)于現(xiàn)有的算法.基于本文的評估,未來的工作包括嘗試使用形式化驗證方法來驗證所提出算法的正確性,并將該算法部署在實際系統(tǒng)上進(jìn)行工業(yè)實踐.
3.2 攻擊識別
3.3 瞬態(tài)故障模型參數(shù)選擇
3.4 傳感器攻擊檢測實例

4 實驗評估
4.1 實驗設(shè)置

4.2 檢測性能分析

4.3 識別性能分析

4.4 誤報分析

5 總 結(jié)