为什么会出现GPS虚拟定位
现代人的生活已经离不开手机,离不开地图,一旦遇到定位不准的问题,就会产生很多问题,而且有些会很严重,比如打车找不到车、外卖找不到顾客,更惨的是开车的时候在高速上转圈圈,多跑个100公里也是有可能的。
大家把定位准确当做一个理所应当的事情,现在定位技术这么发达,北斗3代成功组网,定位怎么还会不准呢?确实,随着时间的推进,定位的精度是越来越高的,但是有一个潜在风险,会导致定位精度下降。
这个风险来自卫星定位欺骗技术的泛滥。卫星定位欺骗,或者位置干扰,是通过地面上的卫星伪基站广播定位信号,让周边的定位设备误以为接受到了真实的定位信号,从而将定位结果设置为干扰者预设的一个位置。之前我们比较多的听说一些人用伪通信基站去群发垃圾短信,而今天,位置干扰也越来越普遍,比如:
- 远程打卡:现在办公app例如,企业微信,钉钉等有app打卡的功能,要求在特定位置定位成功之后进行特定的操作。有了这个往往在家里就能操作。
- 刷单:一些司机为了获取接单奖励或者挑单,用作弊办法修改自己的定位点,让平台以为他在某个指定的位置,或者完成了某个订单。
- 干扰无人机:市面上的无人机都植入了禁飞区域坐标,通过虚拟定位干扰无人机对禁飞区域的判断,
- 反跟踪:运营车辆上都装有北斗定位装置,一些企业或个人不希望自己的真实位置被发现,于是进行位置干扰。
GPS虚拟定位的矛:如何实现虚拟定位
市面上普通设备定位的过程是:卫星发送信号 -> 设备(手机)接收信号 -> 设备根据信号解算出位置 -> 设备通过OS输出定位相关信息 -> 应用软件读取位置相关信息 -> 应用
从上面的流程中我们可以理解,定位伪造方法有很多种,有些只影响单一的设备,例如直接在设备上修改定位结果,然后模拟os输出,这种方法比较常见,技术含量也相对低一点,可能需要手机的root权限什么的。而我们现在要详细说的卫星伪基站-GPS虚拟定位的方法,则是技术含量比较高的方法,这个方法可以将附近所有设备的位置全部干扰,具体的影响范围和基站的发射功率有关,小功率的基站只影响附近几米的范围,而大功率的基站,可以影响周边几十公里,甚至在室内接受不到卫星信号的情况下,都会被干扰。
这种干扰能够将定位点定位到任意位置,而且运动速度、方向都可以指定。于是用户可能发现自己的定位点在几千公里之外,或者轨迹成为一个奇怪的形状,比如画圆圈或者沿某条道路在行驶。
位置干扰技术的原理是什么呢?简单来说,卫星定位是通过接收到卫星信号,读取信号报文,获得时间戳,然后用时间戳和本地时间相减计算出和卫星的距离,再求解一个4元方程组(x,y,z坐标以及本地时钟偏移量)。
由于卫星信号的规格是公开的,我们可以将任意的时间填充到信号报文中,再通过特定的载波信号发射出去,就可以让其他设备获得错误的定位信号。最简单的方法,是直接把某个地点的信号录下来,然后在另一个位置回放。要定位到指定位置,只需要用该位置计算出每颗星播发的时间戳即可。而现在已经有人把整个报文编写、载波调制、信号发射这一系列步骤做了封装,成为货架产品,任何人只要买了设备就可以自己输入目标经纬度以及速度方向,甚至是整段轨迹,然后就可以进行位置干扰了。
比如,HackRF是一款设备,可以发射自定义的信号,有一些开源软件可以生产GNSS的软信号,再通过HackRF发射出去,就成了一个伪基站。而且,一个设备可以同时发送多路信号,模拟多颗卫星。
为什么卫星信号这么容易被干扰呢?因为GPS设计之初并没有在安全性上考虑的很严谨,所以报文完全没有加密,用户侧也没有做鉴权,是完全开放的。
后续的伽利略、格洛纳兹、北斗也都遵循相同的设计理念,报文、调制过程都是类似的,都会被干扰。安全性比较好的方式,是军码,这种报文采用专用的频率进行发射,其报文规格、编码方式都是保密的,要读取报文需要专门的秘钥,因此难以破解或者干扰,但这种方法无法解决民用设备的安全性问题。
GPS虚拟定位的盾:如何检测避免出现GPS虚拟定位
专业厂商的做法:
目前一些芯片厂商,以及部分位置服务商,在做一些工作去发现这种干扰,从而避免影响到用户。具体的方法包括:
- 载波校验:真信号和假信号同时出现时,可以检查信号强度是否有异常(假信号往往信号很强,才能覆盖真信号)。
- 信号方向校验:检测信号的来源方向,如果不是来自天空,则有异常(对天线有要求)。
- 报文一致性校验:检查报文的每个字段是否和真实信号一致。
- 解算校验:解算后发现某些卫星的距离异常,比如同时收到真信号和假信号。
- 多源校验:结合惯导、网络定位以及其他定位方式校验卫星定位的结果是否异常。
普通人可以做的:
以上这些方法可以在一定程度上降低被干扰的概率,但是还是无法彻底杜绝。对于普通用户来讲,当发现自己的定位结果异常时,如何发现是由于卫星信号干扰导致呢?
- 首先,看自己的定位结果是不是出现在机场、油库、驾校这些地点,或者自己的位置附近是否有油库或者是一些敏感设施。
- 然后,确认自己设备的定位结果来自卫星定位而不是网络定位,如果是安卓用户可以下载一个AndroiTS GPS Test软件,如果显示Fix或ON,则代表卫星定位成功,否则是网络定位。对于iPhone,下载phyphox,进入GPS页面,如果速度为负说明是网络定位,否则是卫星定位。
- 此外,在明确手机定位方式是卫星定位的情况下,如果周边的多台手机都定位在了错误的位置(至少偏离了200米以上,如果偏离距离不远,有可能是卫星定位点漂移了),则大概率此地被某个周边的伪卫星基站给干扰了。
有些干扰未必是干扰者的本意,他本来可能只想控制某个小范围的设备,但是天线功率设置不合理,信号被扩散到很远的地方。
能够明确有干扰,如何解决呢?只能向政府部门寻求帮助,可以打电话给当地的无线电管理部门,要求排查。无线电管理部门有专门的仪器可以检测伪基站信号,确定位置,并将设备关停。欢迎大家举报非法的无线电干扰行为。
说明:本文参考了高德技术公开的文章