2016年8月11日 星期四

保護GPS不受欺騙者(spoofer)攻擊對導航未來至關重要

GPS容易受到欺騙攻擊(spoofing attacks)。下面告訴我們如何保護這些重要的導航信號
By Mark L. Psiaki and Todd E. Humphreys
Posted 29 Jul 2016 | 19:00 GMT
Illustration: Brian Stauffer

在一月份,就在美國總統奧巴馬發表了他的最後的國情咨文演說的前一小時,兩艘美國海軍巡邏艇流浪到伊朗水域。伊朗軍方截獲此二船隻,並抓捕了10位美國水手,使總統上台演說的時機相當尷尬。

船員們第二天就被釋放,但似乎沒有軍方官員能夠解釋為什麼船會從預期的路徑偏離。國防部長Ashton B. Carter只說,當時訓練有素的船員「迷航(misnavigated)」了,調查仍在進行中。

即使沒有一個明確的解釋,事件仍促使人們猜測伊朗當時發出假的GPS信號,引誘水手到其他航線。伊朗人要劫持(hijack)GPS系統絕不容易,因為軍用GPS信號是被重度加密的—但這個想法不是無法想像的。 2011年,伊朗誇口說藉著玩弄GPS,奪取了一個高度機密的CIA無人機,使其降落在伊朗而非阿富汗。

在無人機被捕獲的前三年,我們其中一人(Humphreys)已經開發出唯一被公開承認的GPS欺騙程序,可以做到此壯舉。一個欺騙者發送假的GPS信號,對導航系統距離而言跟真的沒有什麼區別。與此同時,我們的另一個人(Psiaki)很難在行動中用探測器上抓到欺騙者。 受到伊朗人的刺激,美國國土安全部在無人機事件發生後不久便決定調查GPS欺騙。該機構邀請在德州大學奧斯汀分校(University of Texas at Austin)的Humphreys小組於2012年6月到新墨西哥州的白沙導彈靶場攻擊無人直升機,該小組的任務是透過發送虛假的位置數據到盤旋無人機的GPS,迫使它降落。欺騙者告訴無人機他正在上升,使它自動調整—它幾乎要撞上沙子裡。

操作員在撞擊前手動置換了受欺騙的自動駕駛儀才避免了災難。儘管如此,白沙無人機駭入事件造就了許多國家新聞和慌亂的立法者。不久,Humphreys出庭到一個有關無人機安全的美國國會委員會。

此後,GPS欺騙一直對重要導航系統的可信度造成危險但少為人知的威脅。為了防止GPS欺騙,我們需要了解對手如何在第一時間破壞GPS信號。有了這些知識後,我們必須迅速採取行動,以各種方式警告GPS使用者注意這些錯誤的信號。

無人機的實例赤裸裸地表明GPS的漏洞,但我們認為其他目標更加令人擔憂。手機信號塔、證券交易所,以及電網都至少部分依賴於GPS的精確計時。協調好的欺騙可能中斷通信、混淆自動化金融交易員,並造成停電、癱瘓電力。最壞的情況下,GPS欺騙的操作者可能取得飛機或輪船,誘導撞擊,以方便搶劫甚至綁架貴賓。

Andrew Schofield聽取了2013年Humphreys在西南偏南互動會議提出白沙無人機測試細節後,這些情節令他感到憂心。會談後Schofield上前給Humphreys他的名片,上面的頭銜為「德拉克白玫瑰號之主(Master of the White Rose of Drachs)」。然後他問「你想追求更大的獵物嗎?」

白玫瑰號一艘65公尺(213英尺)的超級遊艇,依靠GPS來安全地航行於公海。這艘US $ 80萬的船,標榜擁有老主人的畫及有黃金和大理石的浴室,屬於英國一位地產大亨。Schofield,這艘船的船長,提供Humphreys出海的機會,以測試他所信任的船舶是否會被欺騙。

The White Rose of Drachs frequents the waters off the shores of the Mediterranean under the care of Master Andrew Schofield. Photo: White Rose of Drachs
Schofield [center, standing] observes the effects of a live GPS spoofing demo on the bridge of the superyacht. Photo: Fatima Humphreys
The ship’s crew uses this navigation desk to plot a daily course. Photo: Todd Humphreys
A GPS spoofing-detection system is mounted above the bridge of the White Rose, in front of the ship’s receivers. Photo: Mark L. Psiaki
A GPS spoofing-detection system is mounted above the bridge of the White Rose, in front of the ship’s receivers. Photo: Mark L. Psiaki

起初,Humphreys認為這個提議聽起來好得令人難以置信。他花了幾個小時核實Schofield作為經驗豐富水手兼專業帆船協會的總裁的憑據。儘管如此,Humphreys仍懷疑Schofield有黑暗的一面。為了評估船長的意圖,Humphreys輕描淡寫地說他的欺騙攻擊將配備一個「毒藥丸軟體(poison software pill)」,使其無法在計劃試驗的時限和區域外使用。Schofield眼睛都沒眨一下就說,這聽起來像個明智的預防措施。

Humphreys放心了,並開始計劃地中海航行[PDF]以測試欺騙者能否產生一連串的謊言,毫不誇張地讓白玫瑰號偏離航向。攻擊將在公海發動,並需要英國和愛爾蘭的總燈塔委員會(General Lighthouse Authorities)的批准才能啟動;否則,即使單純用於研究目的,篡改GPS信號仍將成為犯罪。

規劃之後的幾個月後,白玫瑰號於2013年6月起航從摩納哥到希臘的羅得斯(Rhodes, Greece)。遊艇的頭頂上的有兩個GPS天線,將接收到的信號傳給艦橋上一對標準GPS接收器。船上同時還有Humphreys的欺騙者[PDF],軟體和硬體總共約$ 2,000美元,其中包括一個無線電接收器、發射器和數字信號處理芯片。

在這段旅途的第一部分,遊艇的GPS接收器盡職盡責地從幾十顆衛星記錄位置資訊,如同往常的航行。然後,在巡航的第二天,Humphreys團隊用偽造的信號取代原信號被艦橋接收,偽造的信號指出該船往左漂移了3度。

他們是如何做到的呢?在正常操作中,GPS接收器透過同時計算與多個衛星的距離來推斷位置。每個衛星都帶著原子鐘,然後廣播其位置、時間和由1023個正負號組成的簽名圖樣(signature pattern),被稱為虛擬隨機噪音碼(pseudorandom noise code)(或PRN碼)。這些代碼用來識別一個信號是從衛星A還是衛星B傳來,因為所有GPS衛星都用相同的頻率廣播民用信號,所以PRN碼是必要的。

A ship's crew relies on GPS signals emitted from a constellation of satellites to safely navigate the seas. Illustration: James Provost
To spoof a vessel, an attacker transmits false GPS signals to override the signals the ship receives from these satellites. Illustration: James Provost
Then, the attacker adjusts the coordinates so that the crew believes the ship has blown off course [blue line]. Illustration: James Provost
When the crew resets the ship's path, they unwittingly guide it onto a new route [red line]. Illustration: James Provost

構成PRN碼的圖樣也隨著時間重複,其正負號的獨特排列使GPS接收器能用來確定衛星和接收機之間的信號傳輸延遲。接收方使用這些延遲,以及衛星位置和時間標記,三角測量出它的精確位置。為了得到良好的修正,一個接收器必須同時接收來自四顆或更多衛星信號—它只能使用三個衛星計算座標,但它需要第四顆衛星來將它價格低廉、有漂移傾向的時鐘與精確的星載原子鐘進行同步。

總體而言,31個導航衛星構成了常用的GPS網路,並由美國空軍操作。這些衛星實際上廣播兩套PRN碼:一個用於民間而一個用於美軍。民間PRN碼是不加密的,且發布在公開的資料庫中。軍用代碼被加密,加密的形式為只有當接收器有機密密鑰的存取權時,圖樣才是可預測的。並非解開這些代碼,而是利用密鑰讓接收器在信號剛好到達之前知道代碼將是什麼。雖然非軍事接收器可以取用軍用GPS信號,但他們無法預知代碼或用代碼來計算自己的位置。出於安全考慮,空軍頻繁地變換軍用信號的密鑰,因此只有擁有新密鑰的接收器可以使用最新的代碼。

若要攻擊如白玫瑰號上的民用接收機,一個欺騙者的操作者根據衛星軌道計算出在給定時間內目標附近的GPS衛星。然後欺騙者使用公開資料庫中的可用公式偽造每個衛星的PRN碼。接著,欺騙者在一瞬間廣播微弱的信號,該信號承載附近與所有衛星相同的代碼。GPS接收器將這些弱信號註冊為這些衛星所傳送更強真實信號的一部分。

然後有一門微妙的藝術是「拖離(drag-off)」,攻擊者必須輕巧地覆蓋掉真實信號。要做到這一點,操作者逐漸增加GPS假信號的功率,直到接收器抓牢這些新信號。如果信號增加得太突兀,接收器或甚至船上的人類航海家可能會發覺不對勁。一旦接收器鎖定到錯誤的信號,操作者可以將欺騙者和接收器調整到一個新的座標集合,並捨棄真實信號。

講回白玫瑰號,船員指出船體明顯地—實際上並不明顯—的往左漂移了三度,這是Humphreys的團隊在攻擊開始時誤導船的接收器進行記錄。然而,漂移十分輕微,使船員以為這是由自然力所造成,如水流和側風,所以他們稍微把船體向右調整。實際上這個糾正動作居然讓他們偏離航向。

船員的行動使得白玫瑰號偏出其預定航線一公里,在Humphreys約一小時後結束欺騙時,Schofield仍不知情。同樣的伎倆也可以執行於自動駕駛的船舶,此時由導航系統而非船員進行航線修正。

說得委婉一點,Schofield有點沮喪。他和他的船員在船上的安全完全仰賴GPS,例如用導航遠離風暴,或在夜間或霧天能明確地避開淺灘和水下危險。雖然Humphreys的欺騙程序對普通電腦駭客而言組裝過於複雜,但這項技術很多國家甚至個人都有達到—有傳聞指出北韓有「(野外in the wild)」的欺騙行為。

幸運的是,來自美國康奈爾大學的Psiaki和他的學生已經開發出反欺騙的防禦。事實上,Psiaki是在Humphrey的小組攻擊無人機的同一時間在白沙測試早期欺騙探測器的原型。該原型機成功地檢測到每一次攻擊,但是是在幾小時的離線計算後。

Psiaki可以做出即時的版本嗎?如果可以,Schofield想在白玫瑰號上測試—這件事很快地實現了。

防止GPS欺騙主要有三種方式:加密、信號失真檢測和到達方向感測(cryptography, signal-distortion detection, and direction-of-arrival sensing)。任何單一方法都無法停止欺騙,但Psiaki的研究小組發現,結合這些策略能提供一個可商業化部署的適度安全對策。



Who’s Out There?


Illustration: James Provost 

每個GPS衛星發送唯一的代碼來辨識自己的接收器[上圖]。
每個代碼包含一個獨特的圖樣[中圖]。接收機使用至少來自
四顆衛星的信號推測位置[下圖]。


加密方法[PDF]提供使用者在飛行中認證信號的辦法。以一種方法為例,民用接收器將使用完全或部分不可預測的,類似那些由美國軍方使用的PRN碼,因此欺騙者無法提前合成代碼。不過若要驗證每一個新的信號,每個民用接收器將不得不帶有類似軍事接收機持有的加密密鑰,我們很難防止攻擊者取得如此廣泛分佈的密鑰。

或者,接收器可以只記錄信號中不可預測的一部分,並等待其發送方廣播有數位簽章的加密密鑰來驗證其來源。然而,這種方法將需要美國空軍修改GPS信號的廣播方式的,而民用接收器的製造商也要改變這些設備的構建。它也需要短暫的延遲,意味著導航的更新不會立即驗證。

保護平民一個更簡單的方法是讓它們「搭美國軍方加密信號的便車」。軍事信號已經可以被民用接收器接收或記錄,即使它們無法被解密和用於導航。一旦他們記錄了信號,民用接收器就能觀察到PRN碼的噪音痕跡(noisy trace),即使他們無法弄清楚實際的代碼。這意味著這些接收器可以藉由尋找民用信號後方的軍用加密信號的痕跡來驗證民用信號。這個策略仰賴一台在安全地方的第二民用接收機[PDF],以驗證信號範圍內的痕跡應該是怎樣的。否則,欺騙者可以製造假的痕跡伴隨於任何操作者想欺騙的平民信號後。

缺點是所有的加密技術都容易被專門的系統攔截信號、延遲,並以更高的能量重新廣播,誘使接收器從合法的信號切換到延遲的。這樣的機關稱為干擾信號發出設備(meacon),可以使用多個天線來添加不同長度的延遲。通過調整長度,欺騙者的操作者可以選擇他要如何顛覆一台GPS接收器。


Original Data: Todd Humphreys. Redrawn by IEEE Spectrum

「拖離」:在欺騙的開始[上圖],攻擊者促使船員
駕駛遊艇離開原來的路線。GPS衛星發出的代碼在
欺騙者抓到船的接收器時消失了[中圖]。基於到達
方向感測的欺騙探測器,在它檢測到的信號來源太
少變化時會警告船員[下圖]。

防禦欺騙攻擊的另一種選擇是失真檢測[PDF],它根據GPS信號被欺騙時所發生曇花一現但可觀察到的尖音(blip)來警告用戶有可疑活動。通常GPS接收器會使用一些不同策略來追蹤輸入信號的振幅峰值。當一個模仿信號被發送時,接收器會看到原始信號和假信號的合成,而這合成使得在拖離船的期間,振幅曲線將出現尖音。

與失真檢測有關的問題是添加更多的信號處理頻道,且可能的話,適量的增加硬體,使得用戶可以更高精度追蹤信號的振幅曲線。這種技術用來尋找不自然的特徵,例如一個超出了一定高度或寬度的振幅尖峰。然而,失真檢測只有在它捕捉到攻擊開始到拖離結束之間的信號才能運作—這過程可能只持續幾分鐘。

最後的檢測方法是到達方向感測。Psiaki在白沙演示的原始欺騙探測器即使用這種技術。但是正如你可能還記得,它需要幾小時的離線資料處理來檢測欺騙。隨著白玫瑰號的改道仍記憶猶新,Schofield想知道是否有即時版可以安裝在船上。

到達方向感測利用了一個事實,即實際欺騙者在同一時間只能在一個地方。正如我們所描述的,欺騙者發送模仿操作員所選GPS衛星的假信號,這藉由偽造目標附近衛星的PRN碼來實現。但蹊蹺之處在於,欺騙者將所有信號都從單一天線傳送,他們將從同一方向到達。另一方面,真實的GPS信號來自好幾個衛星的,因此會有多種角度。

如果你能分別感測到每個信號的到達方向,你便可輕易確定你是否被欺騙。為了驗證這個想法,Psiaki實驗室最近打造一個使用軟體和兩個天線的系統,應用干涉原理檢測欺騙。具體來說,它測量的屬性稱為載波相位[PDF],分辨信號對兩個天線有何不同,然後根據那些不同確定信號到達的角度。

載波相位監測是計算GPS信號的都卜勒頻移週期的方法。都卜勒頻移發生於信號發射器與接收器有相對移動時。想想消防車經過你的經典例子:當他駛離時,警笛的頻移是從高到低。 GPS衛星與GPS接收器也有相對移動,且此相對運動對每個衛星都不同。

A GPS spoofing-detection system built at Cornell University is deployed on the bridge of the luxurious White Rose as it cruises the Mediterranean. Photo: Mark L. Psiaki
An early prototype of a GPS spoofer shows the radio-frequency conversion chains, digital-signal-processing board, and control computer. Photo: Todd Humphreys
A spoofed map suggests an impossible route over land as the White Rose’s crew navigates the Corinth Canal, in Greece. Photo: Todd Humphreys
Todd Humphreys assembles a GPS spoofer with his son, Ramon, at their home in Half Moon Bay, Calif., in 2009. Photo: Fatima Humphreys
A control-panel screen displays an unbelievable speed and depth during a spoofing demo on board the superyacht. Photo: Mark L. Psiaki

所以在Psiaki的檢測方案中,檢測器用來測量接收信號的載波相位。如果在不同衛星間測量出的載波相位差對作為檢測器的兩個天線有很大變化,我們就知道信號是從多個方向到達。但是如果系統檢測到載波相位差很小或沒有變化,就意味著它選到的是一組從單一欺騙者而來的信號。

早期的測試看上去有希望的,但檢測器的阻礙在於計算載波相位差必要的信號處理需要離線計算。問題是,我們的原始程序被寫成編程語言時就無法與由GPS接收機使用的軟體進行即時通信。然而在2014年4月,Humphreys的研究小組在德州大學奧斯汀分校提供了這個操作難題的一塊關鍵拼圖,他們證明了GPS軟體無線電其中的關鍵部件如混頻器,過濾器和調製器/解調器是以軟體而非硬體來實施,這能使Psiaki的離線代碼在即時使用時只有6秒的延遲。軟體GPS無線電基本上藉由腳本命令實現離線碼的即時執行,從而避免了將繁瑣程式碼翻譯成即時編程語言的必要性。

在Schofield的要求,我們在2014年6月白玫瑰號巡航意大利時測試了這個防禦系統。由Humphreys策劃欺騙攻擊,使船以為它在一條前往利比亞的荒謬航道,推測以高於900節(或每小時1000英里)的速度直線前進,在低於海平面23公里處(或14英里)穿越意大利和西西里島!

Psiaki的欺騙探測器[PDF]通過測量來自衛星和欺騙者的7個GPS信號的載波相位,在襲擊一開始就警告艦橋中的船員有欺騙活動。正當攻擊開始時,探測器發現它期待在真正載波相位看到的變化突然消失了。計畫拖離至利比亞的欺騙活動,在開始後約125秒進入攻擊,但是Psiaki的系統在中第一個在6秒內就抓到了攻擊。


今年上半年,GPS製造商U-blox公司在一次更新導航系統M8線的韌體更新中,釋出了消費者GPS接收機的第一款商用欺騙防禦。該公司總部設在瑞士,並沒有公布檢測方法的細節。但是我們可以肯定這是失真檢測,因為這種方法最容易透過韌體更新來實現,只需要一些額外的信號處理演算法。

但是,基於失真的方法可能會使他們錯過未能及早發現的攻擊。加密方法是非常有效的(請詢問美軍),但這需要GPS信號廣播方式在物理上的改變,或是額外的高頻寬通信連結。歐洲全球導航衛星系統[PDF]的建築師伽利略已經接受了這種做法,並已測試在他們的系統廣播民用的數位加密信號。不幸的是,這樣的系統仍然易受信號干擾攻擊。

到達方向感測是我們的選擇的方法,但它的實施通常比失真檢測來得更昂貴。此程序在由多個天線執行時是最有效的,但大型陣列無法輕易容納於手持設備上。而且部分欺騙行為仍可以欺騙它:如果一個欺騙者的目標只有一兩個GPS信號,而不是範圍內所有衛星的信號,有些載波相位差甚至在攻擊後仍然存在。

最後,我們認為最強的欺騙防禦可能會結合失真檢測和到達方向感測。失真檢測將在攻擊階初始段幫助,而到達方向感測則提供防禦的第二道防線。

但是,我們不能保證像這樣組合的解決方案,一般用戶能負擔得起。商業開發人員必須在銷售收入分攤大量成本,但大多數消費者並不需要欺騙保護。這是個關於安全的賭注,賭伊朗特工對阻撓美國駕駛找到時髦的新餐館或載小孩去看棒球比賽不感興趣。

對於那些像Schofield擁有雄厚的財力且需要面對真正的風險的人,至少有一個製造商已經在銷售雙天線接收器,它可以很容易地升級,以添加到達方向演算法。這製造商可能很快就能將抗欺騙產品推向市場,每單位大約$10,000美金。商用飛機,大型船舶和自動化股票交易商的經營者應該願意支付這麼多錢來鎖好他們的馬廄,在甚至不知道馬賊是否在附近潛伏的情況下。

與此同時,Schofield的好消息是,為了執行欺騙,攻擊者必須足夠接近目標以確定它的精確位置,記錄目標看到的GPS衛星,並在其視線的直線上傳遞假信號。幸運的是,在白玫瑰號視野之外的船都無法執行駭入。

所有工作僅僅是偽造的物理信號對網宇實體系統(cyberphysical)的安全造成巨大挑戰的一小塊。駭客可能發送虛假的雷達信號到高檔車的自動剎車系統,讓它在擁擠的高速公路上戛然而止?這種可能性很重要,正在成長且令人震驚。我們認為紅隊/藍隊的發展戰略,其中紅隊攻擊系統而藍隊防守,可能對其他處理感應器欺騙的任務相當有用,因為發現此戰略在我們的任務中運作成功。我們將全力支持藍隊。

這篇文章將出現在2016年8月的印刷品,發布名稱為「GPS說謊(GPS Lies)」。

作者簡介:
Mark L. Psiaki是維吉尼亞理工學院航太和海洋工程系的教授。最近他從康奈爾大學機械和航太工程學院的教職退休,他就是在那裡開始了他的GPS欺騙檢測工作。Todd E. Humphreys是德州大學奧斯汀分校的航太工程和工程力學系的副教授。聯邦調查局(FBI)特工多次參觀了他的實驗室,詢問他有關欺騙者的事。

來源:http://spectrum.ieee.org/telecom/security/protecting-gps-from-spoofers-is-critical-to-the-future-of-navigation