拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GNSS欺骗检测原理与实战:从信号特征到多源融合防御

GNSS欺骗检测原理与实战:从信号特征到多源融合防御 1. 为什么突然都在聊GNSS欺骗检测GNSS这个词这几年出镜率越来越高但大多数普通用户对它的理解还停留在“手机里的定位功能”。真正在行业里摸爬过的人才知道GNSS一旦被人故意干扰后果远不止“导航迷路”这么简单。相比传统的压制式干扰——就是那种让卫星信号直接淹没在噪声里的大功率设备——欺骗式干扰要阴险得多。它不屏蔽信号而是模仿真实卫星信号给接收机喂一个“假位置”让设备在完全无感的情况下算出错误坐标。最近很多行业群都在讨论gnss欺骗检测技术就是因为这种攻击已经从实验室论文变成了实际威胁无人机被诱骗到禁飞区、车辆定位被篡改、共享单车电子围栏被绕过、金融交易时间戳被伪造这些都不是科幻场景。我最早接触这个方向是做高精度测量设备测试时一位老前辈提醒我别只盯着精度看先想清楚你能不能分辨输入信号到底是真的还是假的。当时我不以为然觉得卫星在天上信号经过那么远距离的传播怎么可能轻易被伪造。后来真正做了欺骗检测方案才发现这个问题比想象中复杂得多。它涉及射频前端、数字信号处理、惯导融合、场景语义判断甚至还要考虑天线硬件形态。这篇文章会从原理到实操把我这几年在gnss欺骗检测上踩过的坑、验证过的方法、能用到的工具和软件全部梳理一遍适合刚接触GNSS安全方向的测试工程师、无人系统开发者也想给做GNSS/INS融合、车载定位的同学提供一些可以直接上手的思路。1.1 欺骗攻击到底是怎么实现的要理解检测先得理解攻击。真实的GNSS信号从卫星发射到接收机要经历约两万公里路径到达地面后功率只有-120dBm左右比噪声底还低。接收机能处理这种信号靠的是码分多址的解扩增益和载波跟踪环路的相干积分。欺骗设备不需要像压制干扰那样功率大得吓人它只需要生成结构完全合法的卫星信号——包括正确的C/A码相位、载波频率、导航电文——然后比真实信号稍微强一点点就能让接收机的跟踪环路“锁”到假信号上再通过逐步偏移伪距把接收机解算的位置慢慢拖到攻击者想要的地方。这个过程有两个关键点一是欺骗信号要做得“像”二是要做得“稳”。做得像意味着码率、频率、电文格式都要符合协议做得稳意味着不能一上来就让位置突变否则接收机内部的定位残差检测就会发现异常。所以高级欺骗往往是缓慢牵引每次只移动几米或几十米接收机整段定位轨迹平滑得就像真实运动一样普通用户完全察觉不到。理解了这一点你就明白为什么单纯靠“定位对不对”来判断欺骗是不可行的。欺骗的目标恰恰是让定位看起来“很对”。检测必须回到信号层和数据源层去寻找那些物理世界很难伪造、或造假成本极高的一致性特征。1.2 哪些场景最容易中招不是所有设备都容易被欺骗但凡是基于民用GPS L1 C/A码的接收机理论上都是靶子。最容易中招的是这几类场景第一类是固定或半固定位置的高精度设备。比如测绘用的基站、连续运行参考站CORS站、农业自动驾驶的基准站。这类设备天线架在野外位置固定欺骗信号只要制造一个几米的偏移就可能导致整个网络的差分改正数出问题下游所有移动站的精度全部崩掉。第二类是低速或静止的物联网终端。共享单车锁、集装箱追踪器、电子围栏里的资产标签。这类设备通常使用低成本的单频接收机没有额外的航位推算传感器攻击者只要伪造一个“位置在围栏内”的信号就能让设备误判骑行者已正常还车。第三类是与自动驾驶相关的GNSS/INS组合系统。前装车载定位一般用多频多系统接收机加IMU融合欺骗难度比单个接收机高但并非不可攻破。如果攻击者知道车辆的大概位置从某个方向注入伪信号让GNSS输出开始缓慢漂移而IMU短期内无法判断这种漂移是否真实——因为车辆本身就在转弯、加减速惯导的输出本来就是动态变化的——等到滤波器把假位置“吸收”进去再想纠正就比较困难了。第四类是无人机的GNSS导航系统。这是目前社会关注度最高的场景。无人机高度依赖GNSS做定位和航向很多飞控甚至直接用GNSS速度做闭环控制。欺骗攻击一旦成功无人机可能飞到完全错误的位置返航点被篡改跟着受骗的导航数据飞行。我见过一些做无人机研发的朋友在机载端做冗余检测但真正做得可靠的不多。我的观点是任何接收GNSS信号且会依据定位结果做决策的系统都应该至少具备一层欺骗检测能力。哪怕是手机上的地图应用检测到“GNSS信号可疑”后切换到WiFi/基站混合定位也是一种缓解手段。所以gnss欺骗检测不是一个纯粹的学术题目而是一个工程安全需求。2. 检测思路从天线到载波的一层层验证欺骗信号无论怎么伪装都会在物理层留下痕迹。检测的核心思路就是把接收机从“盲信信号”变成“审查信号”。下面我按从易到难、从硬件到软件的顺序介绍几层常用的检测方法。实际项目里这些方法往往要组合使用形成多级判决。2.1 第一道防线信号功率与信噪比的可疑变化最简单的检测维度是信号功率。正常情况下一颗GPS卫星到达地面的信号功率非常平稳虽然会有多路径和仰角变化引起的波动但整体范围在几个dB以内。欺骗信号为了抢占接收机跟踪环路通常会设置成比真实信号高3~10dB。如果你在接收机的原始观测量里看到某颗卫星的载噪比C/N0整体抬升明显而且多颗卫星同时出现一致的“抬升”这就是一个很强的欺骗嫌疑信号。但这个方法不能单独用因为现实中有两个干扰因素一是多路径反射也可能让某颗卫星的C/N0升高不过那通常只影响个别卫星不会出现全星座一致性升高二是自动增益控制AGC的作用欺骗信号太强时接收机前端AGC会把增益压低单个卫星的C/N0可能反而不高但你会发现噪声底被整体压低同时所有可见卫星的C/N0呈现一种“不自然的平齐”。我做过一个实验用信号模拟器加一个小功率功放在天线旁半米位置注入欺骗信号接收机屏幕上几乎所有卫星的C/N0都在短时间内变成了45dBHz左右上下浮动不超过1dB。正常卫星信号肯定不会这么整齐。这就是一个非常明显的“指纹”。所以检查接收机输出的卫星列表时不妨多看一眼载噪比分布的离散程度离散度低到异常就值得警惕。2.2 第二道防线载波相位与多普勒的一致性功率检测只能发现“低水平的攻击者”如果是采用精确时间同步、功率控制良好的欺骗设备它可以让信号功率和真实值非常接近此时就要用到更细腻的物理量载波相位、多普勒频移以及它们之间的时间变化率。这里要明白一个基本关系GNSS接收机跟踪的是扩频码和载波。真实场景下由于卫星运动接收机接收到的载波信号存在多普勒频移多普勒的大小和方向取决于卫星相对接收机的速度。欺骗设备要模拟多个卫星的信号就必须模拟出每个卫星对应的多普勒变化。但普通欺骗设备往往是静态或者缓慢移动的它生成的多普勒和真实多普勒之间会有系统性偏差。检测方法就是做“一致性校验”伪距的变化率应当与载波多普勒测量值一致载波相位的变化应当与多普勒积分一致。如果某个卫星的伪距变化率和载波多普勒对不上说明信号可能被篡改。这个检测对硬件要求不高普通接收机都能输出原始观测数据难点在于算法要处理好周跳和噪声。更高阶的做法是利用载波相位测量值做检测。真实信号从卫星到接收机载波相位是高度相关的欺骗信号即使码相位做得准载波相位却很难做到和真实卫星同时同相。因为载波频率很高传播路径上任何一点微小差异都会导致相位差。接收机如果采用双频或多频接收对比不同频率上的相位关系就会发现欺骗信号在不同频点上的相位差不符合电离层延迟的正常规律。2.3 第三道防线多天线与阵列方案说到硬件方案目前防欺骗能力最强的一类是“多天线载波相位检测”。原理很直观真实卫星信号从天上下来到达两个不同位置的天线时由于传播路径差会在两个天线之间产生一个载波相位差。这个相位差与卫星方位角和天线基线完全相关。欺骗信号如果从一个点源发射出来它到达两个天线的波前方向是同一个方向两个天线之间的相位差就会呈现“单点源”特征和卫星星历算出来的理论相位差对不上。这个方案最典型的是双天线测向接收机或者更复杂的天线阵列。例如利用两副天线基线长度在半米左右同时接收信号测量同一个卫星信号在两天线之间的相位差再与已知的卫星仰角、方位角计算出的预期相位差比对如果残差超过阈值就判定存在欺骗。这种方案的检测概率很高对中高水平的欺骗设备都有效但代价是硬件成本高、标定复杂——天线相位中心的差异、线缆延迟的不一致都会影响测量精度。我个人的建议是如果你做的是高价值平台比如无人车、无人机、测量车可以采用双天线方案如果你只是给低成本终端做防欺骗就不要硬上多天线用软件层面的检测加融合位置校验更划算。方案取舍的本质是“威胁级别与成本匹配”。3. 实战用软件与融合方案识别欺骗信号讲完原理进入实操。这一章会介绍几个我实际用过的工具和流程包括天宝GNSS软件里怎么看信号质量、怎么用IMU和GNSS/INS组合识别假定位以及我自己做过的一个小实验。这些都是可以直接“抄作业”的内容。3.1 天宝GNSS软件里的几个关键判据做过测绘和工程测量的人对天宝Trimble不陌生它的GNSS后处理软件和接收机在行业里使用率很高。很多人用天宝软件只做“静态解算”“动态解算”其实软件里内置了不少和信号质量相关的指标可以用来做欺骗检测。以天宝的接收机配合其自带软件为例你可以在观测文件里查这几个字段信噪比SNR或载噪比C/N0。前面提到过正常信号在开阔环境下GPS L1 C/A载噪比一般在40~50dBHz之间。如果你发现某颗星长时间稳定在60dBHz以上或者全部卫星都在同一个异常高的载噪比值上先别急着高兴“信号好”要警惕是不是进了欺骗源的范围。多路径指标Multipath。天宝软件中的多路径指标通常是通过伪距和载波相位的组合计算出来的。真实的多路径误差有周期性、且随仰角变化欺骗信号导致的“假多路径”往往是无规律的常数偏移。接收机自主完好性监测RAIM残差。这是比较重要的一个字段。RAIM通过冗余观测判断是否有异常卫星正常情况下的残差应该呈现高斯分布。如果是欺骗信号由于部分卫星的伪距是伪造的而且伪造值之间存在不自洽RAIM残差会明显增大。虽然RAIM主要是针对故障卫星不是专门的欺骗检测但它是第一道软件筛查。载波相位观测值的连续性。天宝软件里可以查看每个频点的载波相位观测值是否连续如果有大量异常周跳也可能说明信号环境被干扰。注意欺骗信号不一定导致周跳相反它可能让环路“锁得很死”所以周跳少不是安全的充分条件。实际查看时我习惯把原始观测文件里几个关键通道的C/N0和伪距残差曲线拉出来观察是否有“异常整齐”的现象。如果所有卫星的C/N0都是集中在一个特别整的数值附近建议马上检查周围是否有可疑射频源。3.2 IMU和GNSS/INS组合靠“体感”识破假定位单靠GNSS自身检测总归有盲区。欺骗检测领域有一个很实用的思路引入 “运动一致性” 校验。GNSS给出的位置变化率速度要和IMU测量的加速度积分对得上GNSS给出的姿态角和IMU测量的角速度对得上。只要二者矛盾超过阈值就可以怀疑GNSS信号有问题。GNSS/INS组合导航系统里滤波器通常是卡尔曼滤波或因子图优化会同时融合GNSS观测和惯性观测。正常情况下GNSS位置更新帮助IMU修正漂移IMU帮助GNSS平滑跳变。但在欺骗场景下GNSS输出的是一个平滑的假轨迹滤波器会把它当成真实观测逐步吸收。这时你去看滤波器的“新息序列”——就是实际观测值和预测值之间的差——会发现它变得不太干净要么新息均值明显偏离零要么新息的协方差与滤波器的理论预估不一致。有一种比较实用的检测方法把GNSS观测暂时从滤波器里剔除只跑纯惯导短时预测再用预测位置和GNSS报告位置做差。如果差值和载体机动水平匹配不上或者差值在短时间内呈现出规律的线性增长那就是欺骗的强信号。很多商用组合导航模块比如支持GNSS/INS的板卡内部也会输出一个“GNSS状态指示”但不同厂商的实现水平差别很大最好自己处理原始数据。举个例子我测试过一个车辆定位模块在正常开阔道路行驶时GNSS位置和纯惯导推算位置的误差通常在5米以内。后来用欺骗模拟器注入一个缓慢向东移动的假轨迹误差开始缓慢增加到20米、50米而且误差方向非常单一几乎不随车辆转弯而变化。这就说明GNSS的轨迹和真实运动不匹配。我当时的判断流程是先看位置差值是否持续增大再看位置差的方向与车辆航向是否相关如果无关基本可以判定GNSS输出不可信。这里也顺便说下GNSS/INS融合检测的痛点如果欺骗信号被设计成“随载体真实运动同步调整”比如欺骗设备实时跟踪载体轨迹并给出一个带误差但动态一致的假位置那么IMU校验就很难识别。这种情况下需要更高层的场景语义——比如地图匹配、视觉里程计等。做无人车的人都知道不能依赖单一传感器这也是L3级以上自动驾驶普遍要求“GNSSIMU摄像头激光雷达”多源融合的原因之一。3.3 我自己做过的一个检测小实验我搭过一个非常简单的欺骗检测测试平台目的不是防御高级攻击而是验证“载噪比检测载体运动一致性检测”组合的有效性。平台由一台低成本双频GNSS接收机、一个消费级IMUMPU6050级别的、一台信号模拟器组成。模拟器通过一个小功放连接到一根发射天线放在接收机天线旁边约1米处。实验流程分三步先在完全正常的卫星信号下采集5分钟基线数据记录各卫星C/N0分布、接收机计算的定位残差、以及IMU/GNSS位置差。打开模拟器从低功率开始缓慢增加直到接收机锁定位置开始漂移。这时候用软件实时记录观测数据和IMU数据。切断模拟器再采集5分钟恢复数据。实验结果显示欺骗开启前各卫星C/N0范围在38~50dBHz之间离散度较大欺骗开启后所有被模拟的卫星C/N0迅速集中到43±1dBHz非常“整齐”。而在运动一致性上由于接收机天线基本静止IMU输出接近零速度但GNSS解算位置却出现了每分钟约30米的缓慢偏移这种“静止但位置移动”的矛盾直接用肉眼就能看出来。这个实验说明一件事低成本的欺骗检测并非不可能关键在于你是否有意地去监控那些“平时不会注意”的指标。很多接收机为了用户体验会把非正常信号环境的信息隐藏起来你需要拿到原始观测数据自己分析。4. 常见问题与避坑指南实操过程中我遇到过大量看起来像欺骗、实际却是其他原因造成的“假警报”也遇到过真正欺骗信号差点漏检的情况。下面整理几个高频问题也算是给后来人避坑。4.1 误报太多怎么办很多团队做完第一版检测算法都会遇到误报率过高的问题。正常环境下多路径、电离层闪烁、树荫遮挡都可能让载噪比波动、载波相位异常于是算法疯狂报警用户不堪其扰。我总结的经验是不要用单指标做判决而是用多指标加权打分。比如载噪比异常只能作为一个弱提示权重设为0.2如果是载噪比异常伪距残差变大IMU位置差持续同向增长三个同时出现才触发强告警。同时要考虑时序上的持续性单次测量异常可能是偶发噪声连续5秒以上的异常才是可疑事件。时间窗别设太短否则没办法区分瞬时干扰和连续欺骗。另外一个很容易忽略的点接收机本身的质量差异很大。便宜的模块在射频前端滤波、抗多径算法上做得差观测量噪声大导致同样的阈值在好接收机上能用在便宜模块上就疯狂误报。如果要做产品级检测一定要针对每一款接收机做阈值标定不要指望一套参数通吃所有硬件。4.2 为什么单点测载波相位有时不靠谱有人会想那我每颗卫星多测量载波相位检测相位突变不就行了实际操作时你会发现单天线接收机在动态环境下的载波相位观测受动态应力影响很大。车辆震动、天线轻微摆动、接收机晶振漂移都会导致载波相位测量值出现缓慢变化。如果你想用载波相位做检测必须区分“真实运动引起的多普勒”和“欺骗信号造成的相位不一致”但这个区分在单天线条件下很困难。这也是为什么目前检测能力最强的仍是双天线或多天线方案。双天线可以做成“短基线载波相位双差”消除大部分接收机钟差和卫星钟差只保留几何关系。做双天线检测时必须保证两个天线到接收机的射频线缆等长否则线缆延迟差会直接叠加到相位差里标定不好就会误判。我在实验中发现普通RG174线材的温度变化就会导致相位漂移最好使用低损耗、相位稳定的电缆或者在使用前做线缆延迟校准。4.3 大疆GNSS笔试提到的考点和实际工程差距有不少朋友问我大疆的GNSS笔试相关话题。虽然具体题目不会公开但从岗位描述和行业讨论能看出他们比较看重候选人是否理解GNSS定位链路中的误差源、抗干扰手段、以及GNSS与其他传感器融合的基本原理。欺骗检测这类题目出现在笔试里通常不会让你现场设计一个完整的检测算法更可能考察你对GNSS信号结构的理解比如C/A码特性、载波频段、导航电文的校验方法。我的个人建议是准备这类笔试时不要死记概念要自己推一遍“真实信号和欺骗信号在接收机基带处理中的差异”。你如果能说清楚为什么欺骗信号的载波相位难以精确同步、为什么码相位和载波相位之间存在一致性约束、为什么移动轨道设计可以避免位置跳变那基本就答到了点子上。而实际工程和大疆笔试的差距在于笔试是静态知识工程是要在算力、功耗、成本三重约束下做取舍。比如无人机上做欺骗检测不可能带着一台上千块的双天线接收机消费级无人机更多依赖飞控内部的状态估计和异常检测。你要是能提出一种“在低成本单天线接收机上用IMU和数据链信息辅助识别欺骗”的思路会比背十个欺骗检测算法更能打动面试官。5. 做完检测之后告警、缓解与记录检测出欺骗信号只是第一步。更重要的下一步是怎么响应。很多团队把检测模块做完发现只能弹个告警却没有任何自动缓解动作这在实车上就是“知道了但没反应”等于没做。我分享一下我常用的三层响应策略第一层是标记与降权。检测模块发现可疑信号后立刻在导航解算中降低GNSS观测的权重或者直接剔除某些异常卫星。此时如果系统里还有IMU、轮速、视觉等其他信息源滤波器会自动切换到其他传感器维持短时定位。第二层是模式切换。对于无人机和自动驾驶系统当GNSS被持续欺骗时应该从“GNSS主导模式”切换成“IMU/视觉主导模式”并限制执行机构使用GNSS速度做闭环。很多飞控在丢星时会报警但在欺骗时不会因为信号“看起来正常”。你自己加的检测模块就要接这个逻辑一旦判决为欺骗等同于丢星甚至比丢星更危险必须让飞控进入保守模式。第三层是记录与事后分析。欺骗检测不只是实时告警还要存储原始射频快照、中频采样、或者至少存储基带观测数据。我发现不少工程师在测试时只记录最终定位结果不记录中间信号指标等出了问题再去复盘已经找不到证据了。正确做法是循环保存最近10分钟的低速率基带统计信息包括各卫星C/N0、伪距残差、载波相位连续性、AGC值等等。这些数据不仅能帮你确认是否被攻击还能利用攻击特征反推欺骗设备的位置为取证创造条件。在告警策略上有一条非常容易被忽略别直接给用户显示“位置错误”而是显示“定位精度下降请切换至其他模式”。因为普通用户并不理解GNSS欺骗让他看到“被攻击”反而可能引发恐慌。面向专业用户则可以展示详细的可视化诊断。同样一个检测引擎面向C端和B端的交互设计完全不同。6. 后续扩展从检测到防护gnss欺骗检测发展到最后一定会走向防护。检测是被动的攻击者发现你在检测可以不断调整攻击策略防护则是要主动让欺骗失效。目前工程上比较实用的防护思路有三个一是天线方向图设计。真实卫星信号来自天空欺骗信号通常来自地面或低空。通过设计具有低仰角抑制功能的天线或者采用抗干扰天线阵列可以大大降低地面欺骗信号的接收增益。很多高端测量型天线本身就能抑制部分低仰角干扰但完全依靠天线还不够因为欺骗源如果放在高处、对准天线主瓣照样能侵入。二是信号认证。民用GNSS没有加入认证机制但已经有一些方案通过加密的导航电文子帧来验证信号来源。比如GPS的民用认证信号CHIPS计划以及欧盟伽利略系统的商业认证服务。不过这些服务需要接收机硬件支持目前普及率极低。你如果做安全要求极高的系统可以考虑增加一个单独的认证信号接收通道用认证信息对普通信号做交叉校验。三是分布式监测网络。单个接收机的检测能力有限但如果组成一个监测网络多个接收机共享观测数据欺骗检测能力会大幅提升。因为同一个欺骗源会影响一片区域内的多个接收机而真实卫星信号在空间上具有一致性。通过比对不同位置接收机解算出的卫星时钟误差可以反演出欺骗源的广播特征。国内很多CORS站网本身就是天然的监测网络只需在基准站软件里增加欺骗检测模块就能为整个区域提供告警服务。我做过的项目中最有成就感的不是算法本身而是把检测结果接入到客户现有的监控大屏里让运维人员能实时看到“当前信号可信度评分”。一旦评分降低系统自动切换到备用传感器同时通知后台人工复核。这种“技术到产品”的转化才是gnss欺骗检测真正落地的地方。我个人在实际操作中的体会是不要追求单个检测算法极致完美而是要把检测阈值、响应策略、数据分析三者当成一个闭环来设计。欺骗检测不是一项独立功能它本质上是一种系统级的安全意识。你可以不用顶级硬件但一定要在软件层面把“信号一致性”这个概念贯穿到整个定位链路里。这样做出来的系统即使无法防住最尖端的欺骗设备也能让普通攻击者不敢轻易下手。
返回列表