burakcanbalta/GPS-Spoofing
GitHub: burakcanbalta/GPS-Spoofing
一个基于机器学习和信号处理技术的GPS欺骗攻击检测系统,用于识别伪造的GNSS信号以保障导航安全。
Stars: 0 | Forks: 1

## GPS Spoofing 与位置欺骗:GNSS 安全的技术剖析
## 1. 引言
GNSS(全球导航卫星系统)——包括 GPS、Galileo、GLONASS、BeiDou——如今已不仅仅是“导航”。交通运输、金融(证券交易所交易的时间戳)、电信(基站同步)、电网以及国防系统,都直接依赖于 GNSS 提供的位置和时间信息。这种依赖性使得 GNSS 成为既关键又面临广泛攻击面的基础设施。
问题的根源在于:民用 GNSS 信号在设计上是开放且未经验证的。只要信号足够强且结构上看起来“正确”,GPS 接收器就会将其视为真实信号——大多数民用系统缺乏一种密码学机制来验证信号是否确实来自卫星。这构成了 GNSS spoofing 的理论基础。
## 2. 什么是 GPS Spoofing?
GPS spoofing 是一种向接收器发送虚假位置、速度或时间数据,诱使其计算出错误的 PVT(位置、速度、时间)解的攻击。接收器通过处理虚假信号(而不是真实的卫星信号,或叠加在其上),就会“相信”自己处于与实际情况不同的位置、时间或速度。
研究并模拟此类攻击具有以下几个正当目的:
- **防御与电子战(EW)测试** — 评估依赖 GNSS 的系统的弹性
- **无人机与自主系统安全测试** — 分析导航系统在面对虚假信号时的行为
- **关键基础设施风险分析** — 衡量依赖时间/位置的系统(金融、电信、能源)对 spoofing 场景的抵抗力
- **学术研究** — 开发并验证新的检测算法
## 3. 漏洞的技术根源
GPS spoofing 之所以成为可能,并非出于单一原因;它是由几个结构性弱点共同导致的。
### 3.1 民用 GNSS 信号缺乏验证
民用 GPS(L1 C/A)、Galileo(E1 开放服务)和 GLONASS 信号未加密,且不包含消息级别的密码学验证。军用 GPS 信号(P(Y) 码、M-code)是加密的,因此要伪造它们困难得多;但在民用方面,只要到达接收器的信号在结构上看起来是正确的,且强度高于特定阈值,接收器就会将其视为真实信号。这种情况在文献中通常被称为“基于强度的信任”——这正是 spoofing 所利用的漏洞:当发送的虚假信号比真实卫星信号更强时,接收器的跟踪环路就会锁定到虚假信号上。
### 3.2 单一来源依赖
如果接收器仅依赖于单一的 GNSS 星座(例如仅依赖 GPS L1),那么单一的虚假信号源就能彻底误导接收器。相反,在多星座(GPS + Galileo + GLONASS + BeiDou)和多频(如 L1 + L5)接收器中,攻击者必须同时一致地伪造所有信号——这极大地增加了攻击的复杂性和成本。
### 3.3 时间与相位精度
GNSS 接收器持续跟踪每个卫星信号的扩频码和载波相位。PVT 解正是基于这种跟踪。即使是远低于毫秒级的代码和相位变化,也足以导致位置解发生偏移——这解释了为什么“对齐/拖拽”式的渐进攻击会如此有效:接收器不会将信号的变化视为突然的跳跃,而是将其感知为自然的漂移。
### 3.4 接收器端的逻辑缺陷
在许多消费级甚至部分工业级接收器中,**RAIM(接收器自主完整性监控)**要么被关闭,要么配置薄弱。RAIM 是一种完整性检查,旨在检测接收器接收到的卫星测量值之间的不一致(例如某个卫星产生的解与其他卫星不匹配)。同样,如果不进行多普勒频移和载噪比分析,虚假信号“物理上的不一致”行为(例如不切实际的多普勒值)可能会在未被察觉的情况下被接受。
## 4. 攻击技术
在文献中,spoofing 攻击通常根据其复杂性和真实程度分为四类。
**重放 / Meaconing。** 最简单的方法:录制真实的 GNSS 信号,随后(在相同或不同的位置)原样重放。攻击者不生成信号,只是“录制并播放”。在这种情况下,接收器会产生短暂的、通常不一致的错误位置;这种方法并不高级,但成本低廉,在现实中依然可能有效。
**对齐 / 拖拽式 Spoofing。** 一种更高级的技术:攻击者首先在时间和相位上将虚假信号与真实信号同步(在接收器未察觉的情况下“坐到它旁边”),然后逐渐增强虚假信号的功率以压制真实信号,从而接管接收器的跟踪环路。此后,位置和路线信息就可以被攻击者逐步操纵。由于没有突然的跳跃,其检测难度比重放攻击更高。
**伪造星座(完全虚假的星座)。** 这种方法不寻求与真实信号同步;而是在实验室/模拟器环境中生成完全虚假但内部自洽的卫星星座。接收器误认为这个虚假星座是真实的,并直接锁定到一个错误的 PVT 解上。由于具有极高的可控性,这是测试和研究场景中最常用的方法。
**传感器融合绕过。** 现代自主系统(无人机、车辆)通常不仅依赖 GNSS;还依赖 IMU、里程计和基于视觉的导航。如果系统没有在这些传感器之间进行交叉检查,就可以通过精心设计虚假的 GNSS 信号,使其与其他传感器看起来“同步”,从而绕过传感器融合层。这比纯粹的 GNSS spoofing 更复杂,但对于现实世界中的自主系统来说,这是一种更现实的威胁模型。
## 5. 测试与分析方法学
系统性地评估(出于防御目的)spoofing 场景通常包括以下几个阶段:
1. **目标接收器分析** — 支持哪些星座,RAIM 和合理性检查是否处于活动状态,使用的是单频还是多频?
2. **信号建模** — 使用离线 I/Q 数据集或 GNSS 模拟器生成虚假信号;在受控的实验室条件下调整信号功率和相位同步。
3. **场景测试** — 观察在生成的虚假信号下接收器 PVT 解的变化;记录位置、速度和时间偏差。
4. **检测与分析** — 检查多普勒频移、C/N0 一致性和 PRN(伪随机噪声码)一致性等信号特征;可以使用 CUSUM(累积和)等统计方法或基于机器学习的分类器来进行异常检测。
### 5.1 基于实验室的与符合伦理的实验设计
从法律和伦理角度来看,此类研究**必须在不进行实时 RF 广播的情况下**,仅在受控环境中进行——在大多数国家,未经频谱监管机构许可在 GNSS 频段发射信号属于违法行为,并且会带来影响真实系统(飞机、船只、紧急服务)的风险。因此,学术和机构研究通常遵循以下方法:
- 使用**预先录制的、开放获取的 I/Q 数据集**代替实时广播——在这一领域,最常被引用的来源包括 **TEXBAT**(德克萨斯大学 Spoofing 测试集)、**FGI**(芬兰大地测量研究所)数据集以及在 Mendeley Data 上共享的各种 GNSS 录音。
- 如果需要生成信号,则不进行 RF 广播;而是将其限制在 **GNSS 模拟器**内部,或在有线/隔离(屏蔽/无回声)的实验室环境中进行。
- 在评估中使用**检测率、误报率、检测时间以及位置误差**等性能指标。
- 在检测方面,除了 CUSUM 等经典统计方法外,诸如 Random Forest 和 LSTM 之类的机器学习模型在文献中也经常被使用。
### 5.2 逐步分析流程
典型的研究流程如下:首先选择合适的数据集(如 TEXBAT 或 FGI);然后提取 SNR、多普勒频移、可见 PRN 数量和 PVT 残差等特征;在这些特征上应用基于统计或机器学习的异常检测算法;通过 ROC 曲线、累积分布函数(CDF)和检测时间来评估结果;最后,以对比的方式研究多传感器和多星座的使用对检测性能的影响。
## 6. Spoofing 的潜在影响
成功的 spoofing 攻击所造成的影响,与目标系统对 GNSS 的依赖程度成正比:
- **导航错误** — 错误的位置和路线计算,特别是在自主系统中,可能会转化为物理安全风险
- **时间同步破坏** — 在依赖 GNSS 时间参考的系统中(电信基站、金融交易时间戳、电网同步),可能会引发多米诺骨牌效应般的错误
- **自主车辆/无人机路线偏差** — 利用虚假的位置信息将车辆引导至非预期区域,或错误地触发安全协议(如地理围栏)
- **关键基础设施可靠性风险** — 在基于位置/时间信息的自动化系统中做出错误决策
## 7. 检测与防御方法
没有任何单一的预防措施足以防御 GNSS spoofing;有效的防御通常依赖于多层机制的组合。
**密码学验证。** Galileo 提供的 **OSNMA(开放服务导航消息认证)**是一项重要进展,它为民用信号增加了密码学消息验证。通过向导航消息添加类似数字签名的验证层,它使接收器能够确认信号确实来自 Galileo——这超越了传统的“基于强度的信任”模型,是民用 GNSS 安全领域采取的最具体措施之一。
**RAIM 与接收器内部一致性检查。** 接收器具备在其内部检测接收到的测量值之间不一致性的能力——特别是当可见卫星数量较多时,这是一种旨在回答“哪个测量值与其他测量值不匹配”这一问题的完整性检查。
**多星座与多频对比。** 同时利用 GPS、Galileo、GLONASS 和 BeiDou 生成解并进行对比;这要求攻击者必须同时且一致地伪造所有星座,从而大幅增加了攻击成本。
**基于信号的检测。** 通过监控 SNR/C/N0 异常、非预期的多普勒频移和 PRN 码不一致性,来评估信号在物理上是否“真实”。
**DOA(到达方向)与多天线使用。** 真实的 GNSS 信号来自不同卫星的不同方向;而来自单一 spoofing 源的虚假信号通常看起来像是从同一个方向到来的。利用多天线阵列测量信号的到达角度,就可以检测出这种不一致性。
**传感器融合。** 利用 IMU、里程计和基于视觉的导航数据与 GNSS 解进行交叉检查,当突然出现且物理上不一致的 GNSS 跳变与其他传感器数据不符时,可将其标记出来。
**基于机器学习的异常检测。** 上述所有的信号和传感器特征,都可以作为输入提供给机器学习模型(如 Random Forest、LSTM),这些模型能够学习并识别经典统计方法无法捕捉的更复杂的 spoofing 模式。
## 8. 结论
GNSS spoofing 利用了基于“只要信号足够强就视为真实”这一假设的结构性漏洞。这是民用 GNSS 设计理念的自然结果——在优先考虑开放性和可访问性的同时,密码学验证长期被忽视。尽管像 OSNMA 这样的举措已经开始弥补这一缺陷,但当今的大多数民用系统仍然依赖于基于强度的信任模型。
因此,真正的弹性并非源自单一的解决方案,而是来自分层防御方法:在可能的情况下应使用密码学验证;在接收器端应保持 RAIM 和信号一致性检查处于激活状态;尽可能使用多星座/多频率;在关键系统中,不应将 GNSS 视为孤立的手段,而应作为传感器融合的一部分来评估。正因如此,spoofing 研究不应仅仅关注“如何进行攻击”,而应该致力于回答“这些防御层中缺少了哪一层以及为什么”——而实现这一目标的途径不是通过实时 RF 广播,而是依赖于 recorded 数据集和隔离的实验室环境。
## 参考文献与扩展阅读
- Humphreys, T. E. 等 — *德克萨斯大学 Spoofing 测试集 (TEXBAT)。*
- 芬兰大地测量研究所 (FGI) — GNSS spoofing/jamming 数据集。
- 欧洲 GNSS 局 (EUSPA) — *Galileo 开放服务导航消息认证 (OSNMA) 用户指南。*
- RTCA / ICAO — 关于 RAIM 和接收器完整性监控标准的技术文档。
- Psiaki, M. L. & Humphreys, T. E. (2016). *GNSS Spoofing 与检测。* Proceedings of the IEEE。
- Tippenhauer, N. O. 等 (2011). *论成功实施 GPS Spoofing 攻击的要求。* ACM CCS。
标签:逆向工具