已经在FreeBuf发布 (https://www.freebuf.com/articles/wireless/70578.html)
GPS的安全性不是一个新话题。
最著名的例子恐怕要算2011年伊朗劫持美国无人机[1]。2011年12月4日,美国的一架RQ-170无人机,在伊朗领空飞行。伊朗军方并没有击落它,而是使用了某种GPS欺骗的方法使这架飞机乖乖的降落在伊朗东北部的Kashmar。这架完好的无人机为伊朗军方提供了一个极好的研究标本,他们从中获取了不少技术和军事机密。
从那以后,GPS欺骗的研究就越来越火了。
GPS系统的基本原理是怎样的呢?
GPS卫星星座由24颗卫星组成[2]。24颗卫星均匀分布在6个轨道平面上,即每个轨道面上有4颗卫星。卫星的分布经过了巧妙的设计,这种布局的目的是保证在全球任何地点、任何时刻至少可以观测到4颗卫星。为什么一定要4颗卫星呢?GPS定位是通过测距来实现的。GPS接收机要测量每颗卫星到它之间的距离,距离等于光速乘以时间,这就构成一个方程式。卫星的位置是已知的,接收机的空间三维位置是未知的,时间也是未知的,所以一共有4个未知数。因此我们需要4个方程,才能解出4个未知数。
那么为什么GPS接收机能够被欺骗?GPS卫星通过不断的广播信号,告诉接收机,自己在什么位置。这是一个单向的广播信号,而且经过了太空到地面这么远的传播,信号已经变得非常非常弱。此时,如果有一个GPS模拟器,在接收机旁边,假装成卫星,那么这个模拟器的信号很容易盖过真正的GPS信号。就像下面这张图的情况,接收机只能听到那个嗓门大的。
过去做一个GPS模拟器并不是一件容易的事,GPS信号有复杂的格式,发射方法。一个商用级的GPS模拟器售价高达百万元人民币。比较简单的一种方法是“重放攻击”,也就是录制一段GPS信号,然后再播放出来,就像下图的示例。
但是,随着软件无线电技术的不断发展,以及丰富的开源代码不断涌现。现在,攻击者已经可以找到几乎现成的开源代码,配合软件无线电设备,就能够发射GPS信号,任意地点,任意时间,以假乱真!
这会产生哪些后果呢?美国德克萨斯州立大学奥斯汀分校,Todd Humphreys教授领导的无线导航实验室[3],是GPS安全研究领域,非常领先的一个团队。2012年,Todd Humphreys教授发表了TED演讲[4],呼吁公众注意GPS安全性;2013年,这个团队成功欺骗了一艘游艇,改变了航向[5];2014年,他们又成功欺骗了一架无人机,控制了它的飞行位置[6]。
除了扰乱定位系统以外,GPS欺骗还可以扰乱定时系统,改变通信基站,金融交易系统的授时信息。据说这样的时间差,可以在交易中抢得先机于是从中获利[7]。在军事应用中,这中攻击就会产生更严重的后果。1996年,中国两枚导弹发射失败疑因GPS被美军做手脚[8]。
我们国家当然知晓GPS系统的风险,这就是为什么我们一定要有自己的北斗系统!说到这里,要介绍一下GPS民用信号和军用信号的差别。
GPS卫星在1575.42MHz发射的1.023MHz带宽的信号,是民用信号,对全球开放的,标准是完全公开的[9]。各个芯片厂家可以根据这个标准设计GPS芯片,用在各种电子设备中。
GPS卫星在1227.60MHz发射的10.23MHz带宽的信号,是军用信号。这种信号使用了高强度的加密措施,只有美国军方能够使用。破解不是不可能,只是复杂度很高,也很难实现欺骗攻击。也就是说,除了美国军方以外,其他人都只能使用非常开放的民用GPS信号。
在这里,我们再说回到开头的例子,为什么伊朗能够劫持使用了美国“军用”GPS信号的无人机呢?有专家分析认为[10],伊朗可能是通过压制1227.6MHz的信号,使无人机的定位系统回退到1575.42MHz的民用信号,从而在不加密的民用信号上实现了欺骗。
如今,全球只有四个卫星导航系统:分别是美国GPS系统、欧洲伽利略GALILEO系统、俄罗斯的格洛纳斯GLONASS系统和中国的北斗系统。中国,经过十几年的努力,终于可以摆脱对美国GPS系统的依赖。在“北斗”系统完全建成后,将会意味着中国开始拥有不受美国方面任何干扰、向世界任何地点发动任何攻击的能力。
那么,是不是中国使用了北斗就可以高枕无忧了?不是。北斗的民用级信号同样是薄弱的,同样有可能被“重放攻击”和“欺骗攻击”。因此对军用系统、重要的民用系统,应该使用不同级别的授权加密信号;最低级别的民用信号仅可用于消费电子产品;在安全性和产品成本之间取得恰当的平衡。”
另外,目前中国仍然有大量的设备还在使用GPS定位,大到通信基站,船舶飞机,小到手机和各种物联网设备。GPS欺骗攻击的门槛已经变得如此之低,不得不让人担忧这些系统的安全性。在无法改变GPS芯片的情况下,建议开发者们在应用层结合蜂窝网络定位,Wifi定位等各种信息,做一个综合的判断,避免定位定时错误可能带来的后果。
[1] https://en.wikipedia.org/wiki/Iran–U.S._RQ-170_incident
[2] http://baike.haosou.com/doc/5348881-5584335.html
[3] https://radionavlab.ae.utexas.edu/
[4] http://www.ted.com/talks/todd_humphreys_how_to_fool_a_gps?language=zh-cn
[5] http://www.digitaltrends.com/mobile/gps-spoofing/
[6] http://gpsworld.com/drone-hack/
[8] http://military.china.com/important/11132797/20121231/17609033.html