孫 聰 曾薈銘 宋煥東 王運柏 張宗旭 馬建峰
(西安電子科技大學網絡與信息安全學院 西安 710071)
無人機(unmanned aerial vehicle,UAV)的飛行依賴于傳感器對環境的測量感知,以確定無人機所處的狀態.準確地對系統狀態做出估計是無人機系統可靠安全(safety)決策的前提[1],然而,無人機飛行控制系統的狀態估計面臨嚴重的傳感器注入攻擊威脅[2],攻擊者通過干擾被感知的物理環境或者從物理上損害傳感器等手段,誤導無人機傳感器接受惡意輸入,估計出錯誤系統狀態,從而使無人機控制器產生錯誤輸出并導致飛行異常.與物理層拒絕功能的阻塞干擾(jamming)攻擊[3]不同,傳感器注入的目的是通過錯誤的信號或數據改變無人機傳感器對環境的感知,以在控制系統層面改變無人機行為,故亦稱為傳感器欺騙.傳感器注入攻擊在諸多領域有著廣泛應用,如針對植入式醫療設備的音頻攻擊[4]、對汽車防抱制動系統(antilock braking systems,ABS)的磁場注入[5]和對自動駕駛車輛的激光雷達數據欺騙[6]均說明此類攻擊的有效性.
在傳感器注入攻擊檢測和緩解方面,針對單一傳感器數據特性(如GPS 信號)的研究相對較多[7],而對不局限于特定數據/信號特性的通用傳感器注入攻擊緩解技術的研究則相對較少,一些現有方法還依賴于輔助傳感器的正常工作[8]或要求增加特定硬件[9].特別地,如何基于無人系統的有限計算資源對傳感器注入攻擊進行準確地在線檢測和緩解,仍是亟待解決的問題.在這方面,基于系統識別的攻擊檢測框架[10]和基于非線性物理不變量擬合的檢測方案[11]通過在線檢查所感知的物理狀態是否與控制模型確定的預期狀態一致來檢測外部傳感器攻擊,檢測效果因控制模型精度不同而存在差異.后續的恢復方法[12-13]對受攻擊無人機的系統狀態進行恢復,但由于無人機系統本身屬于非線性系統,因此基于系統識別得到的線性模型恢復出的系統狀態[12]的準確性有限,僅能提供無人機進入失效保護(failsafe)模式之前的短暫恢復,而基于機器學習的抗攻擊前饋控制器[13]監控無人機的主控制器,在攻擊下代替無人機主控制器恢復無人機,相比模型預測結果參與傳感器融合的恢復機制[12]而言,這種前饋恢復機制缺乏穩定性和持續性.
本文的基本思想是利用機器學習模型對非線性系統的準確刻畫能力,結合容忍預測誤差短時振蕩的攻擊檢測及恢復算法,在無人機飛行控制系統軟件層面實現準確的傳感器注入攻擊檢測和系統狀態恢復.同時通過對輕量級機器學習模型的設計和選擇,克服無人機計算資源對非線性系統模型的運行時開銷的限制.具體地,本文提出的基于機器學習的無人機傳感器攻擊在線檢測和恢復方法LDR 建立了不同傳感器相對應的輕量級機器學習預測模型,該模型可預測出對應傳感器下一時刻的狀態.飛控內嵌的LDR 系統通過比對模型預測值和傳感器測量值,準確檢測并及時隔離受攻擊的具體傳感器,防止攻擊者繼續誤導或破壞傳感器,并使用機器學習模型的預測值替代傳感器測量值參與無人機后續控制過程,使得無人機在受攻擊后的一段時間內能夠正常飛行.本文的主要貢獻包括3 個方面:
1)提出的LDR 利用輕量級機器學習預測模型對陀螺儀、加速度計、GPS、磁力計等多種傳感器的注入攻擊進行有效檢測和傳感器度量恢復.
2)提出的LDR 攻擊檢測及恢復算法利用誤差超限計數閾值和恢復有效計數閾值容忍傳感器模型預測誤差振蕩導致的誤報,相比現有檢測和恢復方法提升了傳感器度量的恢復效果.
3)在開源飛控系統ArduPilot 4.1.0 上的實驗說明了LDR 在線檢測和恢復的開銷滿足飛控系統運行時的要求,LDR 系統在正常飛行下的誤報滿足飛行可靠性要求,LDR 預測模型有效,LDR 系統針對GPS 傳感器攻擊和陀螺儀讀數攻擊的在線檢測和恢復效果相比現有工作[12-13]更好.
Nassi 等人[14]將無人機系統所面臨的攻擊歸納為直接物理訪問攻擊(包括針對無人機固件的供應鏈攻擊)、臨近物理側攻擊(包括針對相機數據、陀螺儀/加速度計/羅盤等傳感器數據、GPS 信號的欺騙和抑制攻擊)、無線信道攻擊(包括網絡邊信道攻擊、傳統WiFi 攻擊).本文主要針對臨近物理側的傳感器注入攻擊進行檢測和恢復,此類攻擊利用的相關目標傳感器包括GPS 接收器、相機、加速度計、陀螺儀、磁力計等.
從控制模型理論分析和仿真的角度研究無人機系統錯誤數據注入攻擊和檢測的工作通常難以從系統安全的視角考慮具體控制系統軟件和攻擊在具體系統上的可實現性,如將無人機抽象為線性非時變控制系統模型[15-16],將隱蔽攻擊序列(包括直接控制獲取攻擊和機載導航攻擊[16])均抽象為從理論上直接注入系統模型.此外,還可以直接將傳感器抽象為非線性系統并構建用于攻擊檢測的非線性模型結構[17].
而從系統安全的視角,典型GPS 欺騙攻擊[18-19]能夠引入位置、導航和時間計算方面的錯誤,導致無人機偏離預定軌跡.通過分析無人機飛控軟件的GPS失效保護模式,能夠給出針對不同類型無人機實施有效GPS 欺騙的攻擊策略[20].無人機的微機電系統(micro-electromechanical systems,MEMS)陀螺儀可在聲音頻段共振,這種聲學干擾引起陀螺儀性能衰減,利用這種性能衰減在飛控軟件中的傳播可導致無人機墜毀[21],類似的攻擊還被應用在MEMS 加速度計上[22].利用光線對光流傳感器的輸入進行欺騙攻擊,能夠控制無人機在定點懸停模式下的側向速度[23].現有的攻擊方案還考慮了無人機具備擴展卡爾曼濾波(extended Kalman filter,EKF)或控制不變量[10]等基于先驗不變量的異常檢測機制,如當前已實現的錯誤數據注入、人為延遲、飛行模式切換攻擊[2]能夠推斷檢測閾值并據此構造隱蔽的傳感器攻擊.針對ArduPilot 飛控系統的數據融合實施的錯誤數據注入能夠繞過EKF 異常檢測機制操作磁力計讀數,在無人機無法接收地面站或GPS 信號時導致無人機偏航[24].
已有針對傳感器攻擊提出的多種防御方案[2,18-19,21-22,24],然而這些方案或僅針對特定傳感器,或對控制系統硬件和算力有很高要求.在慣性測量單元(inertial measurement unit,IMU)受攻擊產生故障時,現有容錯方案[8]使用其余傳感器估計的位置和航向信息來恢復受損的姿態狀態,使無人機在沒有IMU讀數的情況下穩定飛行一定時長.對Lucas-Kanade 光流傳感方法的傳感器輸入欺騙攻擊(包括圖像欺騙和激光欺騙等),隨機采樣一致性(random sample consensus,RANSAC)算法能夠合成緩解攻擊的傳感器輸出[23].DeepSIM[25]通過比較本機航拍照片和預存衛星圖片進行位置驗證,實現了一種高成本、高魯棒性的GPS 欺騙檢測.BlueBox[9]的跨層安全架構利用外部獨立的軟硬件計算單元進行異常檢測和恢復,硬件冗余使得BlueBox 具有相對于傳統模型更強的恢復能力.基于單分類器的入侵檢測方法[26]利用多種單分類器(包括單類支持向量機、自動編碼器和局部離群因子算法)進行異常檢測,檢測的精度較差,且未實現系統狀態恢復.
對硬件算力的限制和對安全機制的通用性要求促使了面向多種傳感器攻擊的飛控內嵌的通用運行時檢測和恢復機制的發展.使用系統識別方法能夠生成反映無人機物理特性、控制算法和外部物理定律的控制不變量模型[10],控制不變量模型在運行時利用其前序預測結果與無人機當前目標狀態預測出對傳感器的當前期望值,若時間窗口內無人機傳感器的測量值和期望值的差異大于閾值,則檢測出外部攻擊異常.后續提出的系統恢復方案[12]利用這種控制不變量模型的物理狀態預測值,為每個傳感器設計一個軟件傳感器,軟件傳感器預測傳感器測量值并替換潛在被攻擊的實際傳感器測量值,該方案對傳感器測量值的恢復持續時間較短且對個別傳感器類型的恢復效果有限.SAVIOR[11]使用非線性物理不變量擬合的無人機系統模型相比控制不變量線性模型更準確,但該方法尚不支持攻擊恢復.PIDPiper[13]基于長短期記憶(long short term memory,LSTM )實現了一種抗攻擊的前饋控制器,將LSTM模型控制器以C++代碼形式嵌入飛控,深度模型在線根據控制器輸出的偏移量大小決定是否接管PID 控制器,盡管無法判斷傳感器是否存在異常(即不存在一般意義的檢測機制),PID-Piper 仍能夠根據控制誤差啟動恢復,該方案的實際恢復穩定性和持續性不及文獻[12]的攻擊恢復方案.LDR 能夠對計算資源受限的無人機及其開源飛控系統進行有效的在線攻擊檢測和恢復,達到優于文獻[12-13]的檢測和恢復效果.方案特點對比如表1 所示.

Table 1 Comparison on the Characteristics of Primary Attack Mitigation Schemes表1 主要攻擊緩解方案特點對比
本節介紹LDR 的具體方案.方案保護的典型傳感器包括GPS、陀螺儀、加速度計和磁力計.
考慮到EKF 的傳感器噪聲矯正效果不利于攻擊檢測且傳感器融合過程不利于攻擊影響的隔離,LDR 選擇在傳感器測量值進入EKF 傳感器融合過程之前插入LDR 傳感器預測模塊及相應的恢復開關機制,插入預測模塊的無人機飛控系統整體運行架構如圖1 所示.由于不同傳感器的測量值以一定的順序接入EKF 傳感器融合過程,因此圖1 中虛線內部分實際上在傳感器融合過程中存在多個實例,每個實例對應于1 個傳感器,其中的LDR 傳感器預測模塊對不同的傳感器使用不同的預測模型(具體見2.2 節).

Fig.1 Architecture of LDR embedded in UAV flight controller system圖1 無人機飛控系統中內嵌的LDR 系統架構
原始飛控系統的多個傳感器的測量值在融合后會與系統目標狀態一起輸入控制器.引入LDR 傳感器預測模塊后,該模塊依據目標狀態實時運行,并使用檢測算法(具體見2.3 節)檢測各傳感器狀態是否受到攻擊,當檢測到傳感器攻擊時,開啟恢復開關,隔離被攻擊的傳感器;同時進入恢復狀態,用LDR 傳感器預測模塊對傳感器讀數的預測值替代被攻擊傳感器的測量值用于EKF 傳感器融合.未被攻擊的傳感器則繼續工作.如受攻擊傳感器的測量值與對應的LDR 傳感器預測模塊輸出的累積誤差在特定時間窗口內小于特定恢復閾值,則認為攻擊已停止,關閉恢復開關,無人機繼續使用正常的傳感器測量值進行飛行控制.
LDR 傳感器預測模塊的內部構造如圖2 所示.其中,機器學習模型將前一時刻該機器學習模型的預測值和無人機系統的目標狀態值作為輸入,迭代輸出當前時刻的預測值.由于每個機器學習模型對應于一個特定的無人機狀態變量(具體見2.2 節),而狀態變量可能不能與真實傳感器測量值直接比較(如表2 中加速度計傳感器預測模型預測的速度矢量不能與測量出的加速度直接比較),因此對于機器學習模型的預測輸出,先通過適當轉換處理,生成當前時刻LDR 傳感器預測模塊對傳感器的預測輸出;對于無需轉換處理的模型預測輸出,直接作為傳感器預測輸出使用.在攻擊檢測時(見2.3 節),將傳感器預測輸出與真實傳感器測量值進行比對.當1 個檢測窗口時間內,傳感器測量值與對應的傳感器預測輸出的累積誤差多次超過相應的誤差閾值(不同傳感器誤差閾值不同),則檢測到攻擊存在,觸發恢復開關開啟信號,由傳感器的預測輸出代替測量值參與后續傳感器的融合和控制流程.
由于本文的目標是構建可內嵌于飛控的在線檢測和恢復機制,因此對機器學習模型有嚴格的效率要求.本文使用簡單神經網絡模型(包括單層感知機和多層感知機)訓練各個傳感器所需的預測模型,解決無人機傳感器輸出的時間序列預測問題.
本文針對四旋翼無人機的10 個狀態變量分別構建機器學習預測模型,陀螺儀、加速度計、GPS、磁力計分別使用這些模型進行預測.狀態變量與使用該變量的傳感器的對應關系如表2 所示.在狀態變量集合{px,py,pz,ψ,ωx,ωy,ωz,vx,vy,vz}中,每一種狀態變量在任一時刻的目標狀態值都能夠在無人機飛行時從PID 姿態控制器獲取.特別是飛控系統中無法直接獲得加速度的目標狀態值,因而,LDR 加速度計預測模塊對無人機加速度的預測需要先使用機器學習模型預測速度,再將每一時刻的預測速度矢量在線轉換處理為預測加速度矢量,用于與加速度計的測量值進行比較.而對于磁力計,飛控系統亦無法獲得磁力矢量的目標狀態值,因而LDR 磁力計預測模塊使用機器學習模型預測偏航角(yaw),記作ψ.但與LDR 加速度計預測模塊的預測輸出轉換(從速度預測值轉換為加速度預測值)不同,LDR 磁力計預測模塊直接使用預測出的偏航角執行攻擊檢測.磁場測量值向偏航角測量值的轉換基于公式[27]:
其中,mx、my、mz分別為機體坐標系沿x、y、z軸的磁場測量值,?和θ分別為翻滾角(roll)和俯仰角(pitch)的測量值.對于磁力計受攻擊情況下的恢復,由于無人機磁力計度量的作用是矯正姿態四元數,LDR 直接將預測得到的偏航角引入EKF 傳感器融合過程以實現對姿態的矯正,而不再將預測偏航角轉化為磁力計讀數的預測值.
模型的訓練過程使用無人機正常飛行過程中的目標狀態值和測量值數據進行.具體地,使用狀態變量當前時刻的測量值和無人機目標狀態值作為輸入特征,使用狀態變量下一時刻的測量值作為輸出特征,以使模型學習到正常飛行時狀態變量測量值的時序特征.對于不同機器學習預測模型,需要收集不同的狀態變量測量值和目標狀態值的時間序列數據,作為預測模型訓練所使用的輸入特征和輸出特征.因此,我們在無人機正常(仿真)飛行過程中收集狀態變量測量值和目標狀態值的時間序列數據,然后應用具體機器學習預測模型的訓練過程(使用的神經網絡結構見3.1 節).特別地,為訓練LDR 加速度計預測模塊所使用的速度預測模型,需要獲得速度測量值的時間序列,本文從控制器內部直接獲取速度測量值序列用于預測模型的訓練.為訓練LDR 磁力計預測模塊所使用的偏航角預測模型,將磁力矢量的測量值序列轉化為偏航角測量值序列,用于預測模型訓練.
本文的機器學習模型與飛控系統中的EKF 都是基于前一時刻估計量進行下一時刻狀態估計,但飛控系統的EKF 實現需要IMU 傳感器的測量值方可執行狀態估計,而本文機器學習模型在完成初始狀態設置后即可獨立運行,無需傳感器提供輸入.當特定傳感器不可用時,本文機器學習模型可作為替換,維持EKF 的正常運行.
圖1 所示LDR 傳感器預測模塊及恢復開關的運行時功能可由算法1 描述.算法1 在傳感器的每個采樣周期上的輸出是由本文LDR 檢測和恢復機制處理后的傳感器讀數的參考值,該值在攻擊未檢出時即為傳感器的真實測量值,而在攻擊檢出時改為使用恢復機制提供的預測模型輸出值.算法接受當前時刻的傳感器目標狀態值、傳感器測量值以及上一時刻機器學習預測模型的預測值作為輸入,首先獲得機器學習預測模型當前時刻的預測值,并轉換為LDR 傳感器預測模塊在當前時刻對傳感器的預測輸出predi.WinTH表示檢測窗口閾值,即檢測窗口包含的時間片數量.如果當前時刻是一個檢查點(新檢測窗口開始),重置當前檢測窗口內的時間片計數i、誤差計數errCnt、測量值與預測值的累積誤差errSum,并判斷恢復模式是否已啟動(recovS ig是否為true).若未啟動,則使用當前傳感器測量值sensi重置預測輸出pred0,這樣在下一輪可以校準預測模型的輸出.此后,計算預測輸出與傳感器測量值的均方誤差并計入累積誤差errSum中,進而得出當前檢測窗內的平均累計誤差err.設計誤差閾值ErrTH和誤差超限計數閾值ErrCntTH,當檢查到平均累計誤差err連續大于設定的誤差閾值ErrTH的次數超過ErrCntTH次時,認為無人機受到了傳感器攻擊,開啟恢復模式并發出受到傳感器攻擊的警報.在恢復模式下(recovS ig為true),實際傳感器的測量值sensi被替換為傳感器的預測輸出predi.設計恢復閾值RecovTH和恢復有效計數閾值RecovCntTH,當累積誤差連續小于設定的恢復閾值RecovTH的次數超過RecovCntTH次時,則認為攻擊已結束,關閉恢復模式,無人機將繼續使用真實傳感器的值.
算法1.攻擊檢測及恢復算法
輸入:當前時刻i的傳感器目標狀態tgti,傳感器測量值sensi,上一時刻機器學習預測模型的預測值predi-1;
輸出:每一個傳感器采樣周期傳感器讀數的參考值sensi.
特別地,算法1 的啟動需要初始預測值pred-1參與;在現實中,使用無人機未受攻擊的狀態下的一個特定時刻傳感器測量值作為初始pred-1.算法1 的復雜度在單個時間片內由行③④的預測過程和轉換過程決定,轉換過程相比預測過程更為簡單.除這2 個過程外,其余部分復雜度為O(1).因此,在實現中選擇高效的機器學習預測模型尤為重要(見第3.1 節).相比于文獻[12-13]的算法,算法①由于引入了誤差超限計數閾值ErrCntTH和恢復有效計數閾值RecovCntTH,使得算法①能夠更好地應對急轉等預測振蕩情況,防止由于短時的預測誤差振蕩所導致的誤報,第3.2 節攻擊恢復效果實驗顯示本文LDR 攻擊檢測和恢復方法在恢復持續時間上有優勢.
1)機器學習模型結構及訓練
本文使用無人機執行20 次飛行任務的日志,在Keras 框架下訓練本文的機器學習預測模型.飛行任務為無人機在多個隨機的位點進行起飛、降落、轉彎等機動操作.數據采樣頻率為400 Hz 時,所有任務的數據量約為70 萬條,每一條數據包括所有傳感器所需收集的信息.訓練數據以覆蓋無人機在各種飛行模式和典型環境下的姿態特征為核心要求.在訓練集與測試集數據量比例為7∶3 下,對于表2 中每個無人機狀態變量所對應的機器學習模型,單個模型從模型的訓練到模型的測試完成1 次所需時間平均僅約30 s.由于模型訓練所需資源較少,因而本文使用一個自動化程序來遍歷搜索不同的模型參數的組合,模型參數包括每層神經元數量、神經網絡層數、批次大小(batch size)等.在每一個參數組合下自動訓練、測試機器學習模型,從而找到適合不同傳感器的神經網絡結構.最終得到的每個無人機狀態變量對應的機器學習預測模型結構如表3 所示,所有模型均使用Adam 優化器,損失函數選擇均方差(mean square error,MSE)損失,激活函數選擇ReLU.
2)加速度預測的去噪
為檢測加速度計攻擊和恢復加速度狀態而引入的預測輸出“速度→加速度”轉換(見表2),要求將每一時刻的預測速度矢量v(t)在線轉換處理為預測加速度矢量a(t),轉換方式是求解采樣時間間隔內的平均加速度,即計算得到的加速度會包含大量高頻噪聲,從而使其在與真實傳感器測量值直接比較時會有大量的錯誤警報.本文使用一階低通數字濾波器[28]對預測輸出轉換得到的加速度進行過濾,衰減高頻頻率使得最后得到的加速度變化更加平滑.具體地,濾波后加速度的輸出值Y定義為
其中,a為通過加速度公式直接計算的加速度,fc為低通濾波器的截止頻率,Ts為采樣周期.
3)系統參數選擇
算法1 所述攻擊檢測與恢復算法的有效運行依賴于合適的檢測窗口閾值WinTH、誤差閾值ErrTH、恢復閾值RecovTH、誤差超限計數閾值ErrCntTH和恢復有效計數閾值RecovCntTH.在飛控運行過程中,相對于傳感器測量值的實際變化,模型預測的變化趨勢可能存在超前或滯后.因此,本文采用動態時間規整算法[29],從正常飛行數據集中計算出最大時間位移,計算模型預測值序列和測量值數據序列的最佳對齊方式,并將該時間位移的長度作為檢測窗口閾值WinTH.確認了檢測窗口閾值WinTH后,可從檢測窗口觀察到預測模型輸出與真實傳感器測量值之間的最大誤差,從而計算出誤差閾值ErrTH.誤差閾值ErrTH應盡可能小,以規避漏報,同時要略大于所有正常飛行數據中觀測到的最大均方誤差MaxError,從而容忍突然的風力增加等外部因素引起的一些意外誤差,減少誤報的可能性.由于攻擊者對無人機傳感器發起攻擊引起的外部誤差遠大于外部因素引起的暫時性誤差,并且攻擊者無法生成與無人機飛行時目標狀態緊密相關的惡意信號序列,本文進一步設置恢復閾值RecovTH,且有MaxError<RecovTH≤ErrTH.當傳感器真實值與預測輸出的差值在一個檢測窗口內多次處于恢復閾值之下時,可認為攻擊已停止.在獲得檢查窗口閾值WinTH和誤差閾值ErrTH后,通過實驗觀測在實際飛行時,1 個檢測窗口時間內有可能的真實傳感器檢測值與預測模型輸出的差值超過誤差閾值ErrTH的次數,將誤差超限計數閾值ErrCntTH設置為大于這個次數值.在獲得檢查窗口閾值WinTH和恢復閾值RecovTH后,通過實驗觀測從傳感器注入攻擊停止時起,1 個檢測窗口時間內有可能的真實傳感器檢測值與預測模型輸出的差值超過恢復閾值的次數,將恢復有效計數閾值RecovCntTH設置為大于這個次數值.
4)模型加載與插入位置
由于本文實驗所使用的ArduPilot 由C++編寫,因此本文使用的基于C++的開源機器學習實現框架frugally-deep[30]運行適用于飛控性能約束的機器學習預測模型.frugally-deep 能快速、高效運行深度神經網絡,可以加載Keras 訓練好的預測模型,并提供了輕量級的推理和預測功能;可以在資源受限的環境中使用,保證模型在無人機上運行時預測效率不影響正常飛行,達到預期的在線檢測和恢復效果.
將每個傳感器上的攻擊檢測和恢復算法實現為具體函數模塊,將傳感器對應的LDR 預測和恢復模塊插入該傳感器測量的對應函數中.其中,將GPS 對應的位置矢量預測和恢復模塊插入函數NavEKF2_core::readGpsData()中;將磁力計對應的偏航角預測和恢復模塊插入函數NavEKF2_core::SelectMagFusion()中;將陀螺儀對應的角速度矢量預測和恢復模塊、加速度計對應的加速度矢量預測和恢復模塊均插入函數NavEKF2_core::readIMUData()中.
本節首先介紹評估LDR 系統的實驗設置,然后評估LDR 系統的運行效率、正常飛行下可靠性、預測模型的有效性對2 種公開攻擊(GPS 傳感器攻擊和陀螺儀讀數攻擊)的恢復效果及優勢.
1)實驗設置與攻擊設置
本文使用2 個四旋翼無人機系統評估實現的LDR 系統.其中,ArduPilot Mega SITL 為軟件在環仿真環境,真實無人機則使用雷迅V5+作為飛控硬件.表4 列出了本文所使用的無人機的控制軟件版本及各類傳感器數量.仿真環境的主機配置為Intel CoreTMi5-11 400@2.60 GHz CPU,6 GB RAM.真實飛控硬件配置包括ARM Cortex-M7 處理器(時鐘頻率216 MHz),512 KB RAM,以及2 MB 用以存儲飛控二進制文件的閃存.表5 列出了真實無人機傳感器的具體配置,無人機與地面站通信頻率為840~845 MHz,數據傳輸速率為345 Kbps.

Table 4 UAV Types and Number of Sensors for Evaluations表4 評估用無人機類型及傳感器數量

Table 5 Sensor Configuration of Real UAV表5 真實無人機的傳感器配置
由于真實傳感器攻擊需要特殊攻擊設備,難以在實驗環境下直接實施,因而本文沿用當前主流的攻擊模擬方式[12-13],使用軟件實現的攻擊模塊模擬了傳感器受到攻擊的效果,并將攻擊模塊直接插入飛控代碼中.具體地,在各類型傳感器代碼中添加一段惡意攻擊代碼,該段攻擊代碼在無人機運行時可以修改傳感器的測量值,以模仿傳感器實際受到攻擊時的傳感器讀數效果.為使得傳感器攻擊能受控生效,使用MAVLink 命令從地面站遠程開啟和關閉攻擊.本文所設置的攻擊來自文獻[12-13],攻擊包括:GPS 傳感器攻擊,可以讓無人機偏離原定航線;陀螺儀讀數攻擊,會使得無人機墜毀.
2)LDR 檢測與恢復開銷
本節比較添加LDR 系統之前和之后的飛控主循環的每一次迭代運行時間,以評估時間開銷,所有時間開銷在仿真環境下測得.具體地,首先測量原始飛控軟件運行1 次主循環的時間開銷;然后以此為基準,依次插入每個傳感器對應的LDR 檢測和恢復模塊,包括運行代碼所依賴的庫;隨后分別測量主循環運行1 次的時間開銷;最后,將所有的傳感器對應的LDR 檢測和恢復模塊同時插入測量總時間開銷.
圖3 為同一飛行任務上,飛控系統在未插入任何傳感器的LDR 檢測和恢復機制時(圖3(a))、插入單一類型傳感器的LDR 檢測和恢復模塊時(圖3(b)~(e)),以及插入全部傳感器的LDR 檢測和恢復模塊時(圖3(f )),其主控制循環的時間開銷比較.縱軸為每次主循環運行的時間開銷.在ArduCopter 中,原始飛控軟件的系統循環執行頻率為400 Hz,調度程序在每個執行周期(2.5 ms)內執行1 次控制功能,并使用執行周期內的剩余時間調度輔助任務.由于飛控軟件對不同傳感器的采樣頻率不同(如對磁力計的采樣頻率常為100 Hz),不同的LDR 檢測和恢復模塊也需分別運行在相應頻率上,而陀螺儀和加速度計的運行頻率高(400 Hz),因而導致對應的LDR 模塊的時間開銷最高.經實驗測量,原始飛控軟件運行1 次主循環的平均時間開銷為0.026 ms,向所有傳感器插入LDR 系統后的飛控軟件運行1 次主循環的平均時間開銷為0.180 ms.雖然主循環平均時間開銷有明顯增長,但由于主循環平均時間開銷相比執行周期(2.5 ms)仍僅占較小比例,且峰值時間開銷也在2.5 ms 以內,因而添加LDR 系統后,所有控制功能及輔助任務均能在執行周期內完成,因此添加LDR 系統導致的時間開銷增長可接受,不影響無人機正常飛行操作.

Fig.3 Runtime cost of the main control loop before and after LDR module is inserted into the flight controller system圖3 飛控系統在插入LDR 模塊前后的主控制循環的運行時間開銷比較
本文還比較了添加LDR 系統前后ArduCopter 進程運行時的內存消耗峰值,以評估空間開銷.在仿真環境下,通過記錄20 次飛行任務過程中測量的內存消耗峰值,發現添加LDR 系統后,內存消耗僅增長7.25%,可見LDR 的檢測和恢復機制對飛控運行時的內存消耗影響非常小.
由于本文方案和PID-Piper 均使用神經網絡模型進行預測,且模型運算是方案的主要開銷,因此我們從浮點運算數(floating-point operand,FLOP)指標出發,比較這2 種方案的機器學習模型計算開銷.FLOP 的大小取決于模型結構內部的連接數量.每條連接均需執行一次加法運算和一次乘法運算,因此,模型的浮點運算數是連接數量的倍增.PID-Piper 僅為計算3 個姿態角,即翻滾角、俯仰角和偏航角,就部署了3個結構相同的神經網絡模型.這些模型的層數和神經元數量均多于本文使用的模型,其總浮點運算數達到約50 000.相比之下,本文模型不僅層數更少,涵蓋的狀態數量更多,且所有模型的浮點運算數總和僅有120,遠低于PID-Piper 的計算開銷.由于計算時延與網絡層數和浮點運算數正相關,因此,本文模型相比PID-Piper 的機器學習模型是更輕量級的,具有更低的計算開銷和時延.
3)正常飛行下的可靠性和預測有效性
本文測試了在沒有攻擊的情況下實際飛行時LDR 的運行情況,以說明LDR 檢測和恢復機制在沒有攻擊下的可靠性.本文隨機選擇了10 個飛行任務,與機器學習模型訓練用任務不同,用于檢驗可靠性的任務動作包括起飛、降落、轉彎等,飛行模式設置為auto 模式,每個任務時間為3 min,所有任務的總時間為30 min.測試結果發現,這10 個任務中有2 個任務激活了LDR 檢測和恢復系統,這2 個任務均激活了陀螺儀傳感器LDR 檢測和恢復機制,即出現了檢測誤報.LDR 檢測和恢復功能激活后,使得任務失敗的次數為0,在2 次出現誤報的任務中,無人機飛行平穩后LDR 系統的警報都能自動關閉.
進一步地,在仿真環境下驗證無人機在一個隨機的測試飛行任務過程中,無人機LDR 預測的傳感器讀數與真實傳感器的測量值的吻合程度,以說明LDR 的機器學習模型預測的有效性.如圖4 所示,模型的預測結果與真實傳感器的測量結果基本吻合,磁力計對應的偏航角的預測值與真實測量值的抖動是計數方式上產生的0°與359°之間的微小偏航角變化,在物理上不存在無人機偏航角的大幅度變化.

Fig.4 Effectiveness of model prediction of machine learning in LDR system圖4 LDR 系統的機器學習模型預測的有效性
4)LDR 對公開攻擊的檢測和恢復效果
為了測試LDR 在檢測公開攻擊和從公開攻擊中恢復飛控狀態的有效性,本文首先在仿真環境下針對陀螺儀和GPS 分別發起攻擊,測量了在攻擊發起后LDR 對攻擊的檢測用時(time to detection,TTD)和恢復效果;然后在真實無人機上測試LDR 系統對GPS 攻擊的恢復效果.檢測用時的計算方法為:
其中,tdetect為LDR 系統首次報告檢測出攻擊的時刻,tattack為攻擊實際發起的時刻.
本文GPS 攻擊實驗通過對GPS 測量的位置信息注入偏差來達到攻擊的目的,攻擊在無人機飛行途中發起,通過攻擊代碼緩慢地對GPS 注入攻擊偏移,無人機的降落點將會偏離計劃航點約55 m.針對這一攻擊,LDR 系統的平均檢測用時為0.88 ms.圖5(a)三維圖給出了無人機在未受攻擊情況下的行進路線、無人機從特定點開始受到持續GPS 攻擊的行進路線,以及LDR 系統生效的無人機在受GPS 攻擊后的行進路線.相應地,圖5(b)為無人機GPS 傳感器在未受攻擊、受攻擊、受攻擊且LDR 系統生效這3 種情況下,位置信息測量值的y軸變化差異;圖5(c)為受攻擊、受攻擊且LDR 系統生效2 種情況下,GPS 傳感器測量值(或LDR 對GPS 的預測值)相比未受攻擊時的GPS 測量值的偏移量比較.

Fig.5 Recovery effect of LDR system under GPS sensor attack圖5 LDR 系統在GPS 傳感器攻擊下的恢復效果
本文陀螺儀讀數攻擊實驗在無人機飛行途中對無人機的陀螺儀讀數進行注入.圖6(a)三維圖給出了無人機在未受攻擊情況下的行進路線、無人機從特定點開始受到陀螺儀讀數攻擊的行進路線,以及LDR 系統生效的無人機在受到陀螺儀讀數攻擊后的行進路線.針對這一攻擊,LDR 系統的平均檢測用時為1.24 ms.可見在LDR 系統未生效的情況下,無人機受到攻擊后很快墜毀;而在LDR 系統的恢復下,無人機還可正常運行約5.1 s,此時長即為有效恢復持續時間.盡管LDR 系統成功阻止了傳感器攻擊,防止了無人機立即墜毀,但由于預測誤差的原因,LDR 系統無法永久或長期替換物理傳感器,因此需要在有效恢復持續時間內使用其他控制信道接管無人機.圖6(b)為無人機姿態翻滾角變化曲線,可見攻擊注入會使無人機翻滾角發生高頻變化,從而導致無人機墜毀,而LDR 系統生效的無人機的翻滾角變化相比無攻擊情況下的無人機翻滾角相差不大.圖6(c)為受攻擊、受攻擊且LDR 系統生效2 種情況下無人機翻滾角相比未受攻擊時的翻滾角的偏移量曲線比較,可見引入LDR 系統使得翻滾角偏移量顯著減小.

Fig.6 Recovery effect of LDR system under gyroscope reading attack圖6 LDR 系統在陀螺儀讀數攻擊下的恢復效果
本文在真實無人機上測試LDR 的恢復效果.雖然LDR 恢復機制能在陀螺儀讀數攻擊下延緩無人機失控,但使用地面站對攻擊生效后的無人機進行控制接管仍存在一定概率失敗,因此在真實無人機上本文僅進行GPS 傳感器攻擊的注入.本文設計一個距離為13.51 m 的直線折返飛行任務,即無攻擊情況下無人機起飛后沿該路線折返2 次后回到起飛位置.我們在無人機第1 次開始折返時,給無人機注入(0.05~0.15 )m/20 ms 的GPS 傳感器攻擊,測得無人機完成飛行任務時距離起飛點的距離為4.37 m.在同樣的攻擊下,在起飛后第1 次開始折返時開啟LDR 系統,無人機完成飛行任務時距離起飛點的距離為0.89 m.實驗說明LDR 檢測系統在實際無人機飛行任務上有效.
5)LDR 與其他傳感器攻擊恢復方案的比較
以下對比LDR 與其他無人機傳感器攻擊在線恢復方案,包括軟件傳感器SW-Sensor[12]、PID-Piper[13]的恢復效果差異.由于文獻[10-11]僅支持檢測而不支持對傳感器測量值和無人機狀態的恢復,因此本文不與文獻[10-11]比較.由于文獻[12]未開源實現,本文盡最大努力使用Matlab 的系統識別工具對該方案進行了復現,并使用訓練數據推導出模型,使用測試數據驗證其模型的準確性.PID-Piper 提供了在ArduCopter 3.7.0 上的開源實現,本文使用該公開版本進行對比試驗,進行相同的攻擊實現、攻擊測試并記錄下相同的傳感器數值變化.
實驗結果顯示,SW-Sensor[12]、PID-Piper[13]和LDR 都能夠對GPS 傳感器攻擊和陀螺儀讀數攻擊做出響應.在對受攻擊的無人機進行恢復方面,圖7 為GPS 攻擊下3 種恢復方案的效果對比.受GPS 攻擊且無恢復機制的無人機的GPS 傳感器測量值相比未受攻擊時的偏移量隨時間逐漸增加.對于LDR、SWSensor、PID-Piper,偏移量增大后逐漸減小.GPS 的預測值相比未受攻擊時的偏移量更大,說明受攻擊后的無人機偏離預定軌跡的幅度越大.可見,LDR 相比SW-Sensor 的恢復(偏移量趨向0)更迅速,無人機受到攻擊后偏離幅度更小.而PID-Piper 的實際恢復效果較差,無法阻止無人機的持續性偏離.

Fig.7 GPS sensor attack recovery effect comparison between LDR and related research work圖7 LDR 與相關研究工作的GPS 傳感器攻擊恢復效果比較
圖8 為陀螺儀讀數攻擊下,3 種恢復方案在無人機姿態翻滾角指標上的恢復效果對比.圖8(a)(b)給出了LDR 預測得到的翻滾角與未受攻擊狀態下的翻滾角相比的偏差絕對值曲線.圖8(a)給出了SWSensor 預測得到的翻滾角與未受攻擊狀態下的翻滾角相比的偏差絕對值曲線.圖8(b)給出了PID-Piper預測得到的翻滾角與未受攻擊狀態下的翻滾角相比的偏差絕對值曲線.翻滾角的偏差絕對值越大,代表無人機受到攻擊后機體擺動幅度越大.由圖8 結合圖6(c)結果可見,SW-Sensor 和PID-Piper 在無人機受到陀螺儀讀數攻擊后翻滾角偏差和振蕩非常大,與沒有應用任何恢復機制時的偏差相比(見圖6(c)),機體擺動幅度減小不明顯.而LDR 系統檢測到陀螺儀讀數攻擊后,翻滾角保持了一段時間的平穩,且相比SW-Sensor 和PID-Piper 的翻滾角偏差有顯著減小,表明在受到攻擊后LDR 仍能有效恢復陀螺儀讀數,使無人機保持一段時間較為平穩地飛行.

Fig.8 Gyroscope reading attack recovery effect comparison between LDR and related research work圖8 LDR 與相關研究工作的陀螺儀讀數攻擊恢復效果比較
本文主要考慮針對傳感器實施的攻擊,由于本文檢測和恢復機制皆依賴于模型預測結果,攻擊者可能會嘗試通過操縱模型決策或模型輸入輸出的方式來繞過本文方案.然而,決策和數據皆位于飛控軟件內部.攻擊者要達成意圖,需要借助軟件層面(如控制流劫持)或網絡層面的攻擊手段.這些攻擊手段的攻擊面正交于本文所關注的傳感器攻擊,因而超出了本文的研究范疇.此外,本文可以借助已有的軟件安全機制應對這些安全威脅.如將飛控系統部分實現為可信執行環境中的可信應用[31],以阻止攻擊者操縱飛控的數據流和控制流,從而確保模型決策和預測結果的可靠性.
此外,無人機在實際運行中可能會因部件磨損、使用環境改變等因素導致系統行為改變,致使模型不再準確可靠.對此,可以定期在安全受控環境下對無人機進行飛行測試,收集飛行日志進行分析,并按需更新模型以適應新的系統行為模式.由于本文模型訓練時間短、訓練開銷小,僅需通用PC 機即可完成,因此更新模型不會引入難以承擔的時間開銷和算力開銷.
飛控系統本身的基于EKF 的傳感器融合機制能夠提供一定程度的抗干擾能力,使無人機的傳感器測量值在無人機機體正常抖動、噪聲等擾動下正常飛行.這些噪聲和干擾也確實會一定程度上影響本文機器學習模型的訓練和檢測,本文使用的緩解方法是通過實施真實無人機上的硬件手段(減震板等降噪措施)和軟件手段(如濾波)減輕其影響.
更低的攻擊頻率和更小的攻擊幅度可能會對本文的檢測和恢復產生影響,使得本文的檢測算法需要使用更緊的閾值,收緊閾值也可能導致潛在的漏報產生,我們雖然證明了本文提出的檢測及恢復算法在2 種典型公開攻擊下的有效性,但針對隱蔽攻擊的檢測和恢復效果仍有待進一步驗證.
本文提出了一種基于機器學習的無人機傳感器攻擊在線檢測和恢復方案LDR.證明了針對2 類典型的傳感器注入攻擊,由機器學習模型的非線性系統表征能力、所提出的檢測和恢復算法對短時預測振蕩導致的誤報的緩解能力,以及輕量級機器學習模型的有限運行時開銷所帶來的檢測恢復效果,達到了相比現有在線傳感器攻擊檢測和恢復方案更好的檢測和恢復效果.未來的工作包括3 個方面:1)將本文方案應用于其他的開源無人機飛控系統,如PX4;2)將本文方案應用于更多的傳感器注入攻擊形式,特別是一些攻擊注入量較小的隱蔽攻擊,并討論不同機器學習模型和檢測算法的檢測敏感程度差異;3)嘗試引入其他非線性控制模型用于無人機系統狀態恢復.
作者貢獻聲明:孫聰提出了論文核心思想并撰寫論文;曾薈銘設計檢測算法、實現論文軟件并進行主要實驗;宋煥東實施部分對比試驗;王運柏實現部分對比方案;張宗旭協助部分軟件功能實現;馬建峰提出指導意見并修改論文.