我們發現了一種利用低成本軟體無線電裝置進行全球定位系統欺騙的方法, 該方法可用於改變受影響裝置的位置狀態和時間,這會對基於位置的服務造成安全威脅。我們還研究了智慧裝置使用的其他定位方法(如WiFi)以及如何欺騙它們並給出了防止此類欺騙的建議。
1 GPS系統簡介我們通常所說的 GPS 全球定位系統是由美國國防部建造完成。目前在太空中共有31顆衛星在同時運作,一般我們需要至少4顆衛星來完成三角定位。GPS衛星同時傳送民用L1和軍用L2兩種無線訊號。我們通常使用的是沒有加密的L1民用 1575.42MHz 的超高頻波段。
每個衛星都配置有原子鐘,並時刻向外廣播其位置、時間和偽隨機噪音碼(由1023個正負號組成的簽名模式, PRN碼)。因為所有GPS衛星都使用相同的頻率來廣播民用訊號,這些PRN碼用來標識訊號發射源,所以非常重要。PRN碼的構成模式也隨時重複變換,GPS訊號接收器透過其正負號的獨特排列方式,來判斷和衛星之間的通訊傳輸延遲。GPS訊號接收器使用這些延遲,配合衛星方位和時間戳,精確測量出自身位置。
2 GPS定位原理首先,讓我們明確我們的需求。我們想要知道的是我們的位置座標(x, y, z),如果從一個已知座標(x1, y1, z1)的衛星廣播一個訊號,然後我們試著去測量訊號傳送至到達的時間差(在gps系統中我們用的是電磁波,我們知道它的速度),我們就能得出下面的等式:
,這個等式有3個未知變數x, y, z,因此單單一個等式解不出來,我們可以再加兩個已知位置的點(衛星),我們把它們記作(x2,y2,z2) 和 (x3,y3,z3),就有下面的方程組:
現在我們就能解出我們的位置(x, y, z)了,但在工程應用中這樣還不夠。為了測量電磁波傳送至到達的時間差,需要在電磁波傳送的時候寫一個時間戳t1,這是衛星上的時鐘時間參考值,當訊號到達我們這裡時,我們提取出時間戳t1,再計算t1和當地時間t2的差值來計算時間差。然而當地時間和衛星時間並不是同步的,會出現一個時間偏移量∆t1,所以這個時間偏移量也要被考慮進去,於是修正後的方程式如下所示:
所以有4個變數,就需要4個衛星來建立4個等式,以下高等數學內容略。以上內容說明我們需要偽造至少4顆衛星的訊號才能使gps定位。其中是從接收機天線到衛星天線的距離,包括接收機和衛星時鐘偏移(以及其他偏差,如大氣延遲),故也稱為偽距(PR)。
3 GPS訊號幀GPS訊號幀結構如上圖所示。GPS訊號的位元率是50 bps。GPS衛星以不同的頻帶和不同的調製方式廣播GPS訊號,L1訊號是民用中最常見的訊號,其引數如下表所示。
ParameterValueCodeC/A CodeModulationBPSKFrequency1575.42MHzCode Rate1.023 MHz
接收到的全球定位系統訊號的強度非常弱,約為-130 dBm,大多數全球定位系統接收器在室內無法工作。這使得GPS訊號干擾或欺騙變得非常容易,因為攻擊者不需要生成強訊號來覆蓋真實的GPS訊號。
4 BRDC 資料BRDC(廣播星曆資料)檔案包含每天唯一的全球定位系統衛星星曆資訊。星曆資料提供了每顆衛星的精確位置資料、、,因此接收機可以獲得先驗資訊以計算位置。您可以從https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/broadcast_ephemeris_data.html網站下載RINEX格式的BRDC檔案。其檔案命名規則如下:
小結以上內容只是作為鋪墊,具體欺騙攻擊實現下期可見。
----------------