引言
前段时间在知乎上回答了一个关于手机定位相关的问题,被一个知友问到“加一个人微信聊天之后,收到了人家的一个视频,随后也把这个人及他发的视频都删除了,几天后在网吧上网,被别人定位到了,勒索了一笔钱,说‘再来这一片,还能找到你’,他的位置是如何被定位的?“。地理位置是一种很隐私的信息,严重关系到个人的生命财产安全,当然一些设备也有很好的隐私保护政策,在未经用户允许的情况下,位置信息是不会被窃取的。但,现实生活中绝大部分人都是非科班出身的,并不能有效的防范位置信息泄露,有太多的方式可以诱导用户应允获取用户隐私信息,也有不少方式不需要用户同意就可以知道其位置信息。本人结合自己已有的知识储备,并查找了一些资料,重新温习了定位相关知识,本文就总结一下几种常见的定位技术及其原理。
利用手机常用的定位方式有:
- 卫星定位(GPS,北斗,伽利略,Glonass);
- 移动基站定位;
- WiFi辅助定位;
- AGPS定位。
1.卫星定位。
常见的卫星定位系统有GPS、北斗、伽利略和Glonass,虽然这些系统提供的服务有些差异,但其背后的定位原理都是相同,现在以应用最广泛的GPS为例来介绍卫星定位。
GPS(Global Positioning System)即全球定位系统,是由美国建立的一个卫星导航定位系统,利用该系统,用户可以在全球范围内实现全天候、连续、实时的三维导航定位和测速;另外,利用该系统,用户还能够进行高精度的时间传递和高精度的精密定位。
1.1GPS系统构成
GPS系统包括三大部分:空间部分–GPS卫星星座;地面控制部分–地面监控部分;用户设备部分–GPS信号接收机。如图1:
图1 GPS系统构成
1.1.1GPS工作卫星及其星座
21颗工作卫星和3颗在轨备用卫星组成GPS卫星星座。24颗卫星距地高度为20200km,运行周期为11小时58分(恒星时12小时),均匀分布在6个轨道平面内,轨道倾角为55度,各个轨道平面之间相距60度,每个轨道平面内各颗卫星之间相差90度。卫星通过天顶时,卫星可见时间为5个小时,在地球表面上任何地点任何时刻,在高度角15度以上,平均可同时观测到6颗卫星,最多可达9颗卫星。示例如图2:
图2 GPS卫星网络
为了解算测站的三维坐标,必须观测4颗GPS卫星,称为定位星座。
1.1.2地面监控系统
对于导航定位来说,GPS卫星是一动态已知点。星的位置是依据卫星发射的星历–描述卫星运动及其轨道的参数算得的。每颗GPS卫星所播发的星历,是由地面监控系统提供的。卫星上的各种设备是否正常工作,以及卫星是否一直沿着预定轨道运行,都要由地面设备进行监测和控制。地面监控系统另一个重要作用是保持各颗卫星的时间,求出钟差,然后由地面注入站发给卫星,卫星再由导航电文发给用户设备。
GPS工作卫星的地面监控系统包括一个主控站、三个注入站和五个监测站。主控站的作用是根据各监控站对GPS的观测数据,计算出卫星的星历和卫星钟的改正参数等,并将这些数据通过注入站注入到卫星中去;同时,它还对卫星进行控制,向卫星发布指令,当工作卫星出现故障时,调度备用卫星,替代失效的工作卫星工作;另外,主控站也具有监控站的功能;监控站主要任务是为主控站提供卫星的观测数据;注入站任务是将主控站发来的导航电文注入到相应卫星的存储器。
1.1.3GPS信号接收机
能够捕获到按一定卫星高度截止角所选择的待测卫星的信号,并跟踪这些卫星的运行,对所接收到的GPS信号进行变换、放大和处理,以便测量出GPS信号从卫星到接收机天线的传播时间,解译出GPS卫星所发送的导航电文,实时地计算出测站的三维位置,甚至三维速度和时间。
1.2GPS定位原理
GPS导航系统的基本原理是测量出已知位置的卫星到用户接收机之间的距离,然后综合多颗卫星的数据就可知道接收机的具体位置。要达到这一目的,卫星的位置可以根据星载时钟所记录的时间在卫星星历中查出。而用户到卫星的距离则通过纪录卫星信号传播到用户所经历的时间,再将其乘以光速得到(由于大气层电离层的干扰,这一距离并不是用户与卫星之间的真实距离,而是伪距)。
当GPS卫星正常工作时,会不断地用1和0二进制码元组成的伪随机码(简称伪码)发射导航电文。导航电文包括卫星星历、工作状况、时钟改正、电离层时延修正、大气折射修正等信息。GPS导航系统卫星部分的作用就是不断地发射导航电文。然而,由于用户接受机使用的时钟与卫星星载时钟不可能总是同步,所以除了用户的三维坐标x、y、z外,还要引进一个变量 t 即卫星与接收机之间的时间差作为未知数,然后用4个方程将这4个未知数解出来。所以如果想知道接收机所处的位置,至少要能接收到4个卫星的信号。如下图所示:
图3 GPS位置计算方法
从以上四个方程中解出x,y,z和t就可以定时、定位。
GPS定位方式,不需要sim卡,不需要连接网络,只要在户外,基本上随时随地都可以准确定位。其他类型卫星定位方式与GPS差不多,不再讲述。
2.基站定位
2.1相关概念
因为处在相同频率范围的信号会相互干扰,为防止相邻基站相互干扰,相邻的基站会选择不同的信道(不同频率范围的信号)与移动设备通信。如上图是一个蜂窝移动基站的示意图,其任意相邻的两个基站都具有不同的通信频段。基站不是孤立存在的,其覆盖区域相互交接,组成一张巨大的移动通信网络(如下图)。
图4 蜂窝基站
移动设备在插入sim卡开机以后,会主动搜索周围的基站信息,与基站建立联系,而且在可以搜索到信号的区域,手机能搜索到的基站不止一个,只不过远近程度不同,再进行通信时会选取距离最近、信号最强的基站作为通信基站。其余的基站并不是没有用处了,当你的位置发生移动时,不同基站的信号强度会发生变化,如果基站A的信号不如基站B了,手机为了防止突然间中断链接,会先和基站B进行通信,协调好通信方式之后就会从A切换到B。这也就是为什么同样是待机一天,你在火车上比在家里耗电要多的原因,手机需要不停的搜索、连接基站。每次坐火车,我都会把手机调成飞行模式,看看电影、听听歌,依然可以维持很长时间。
图5 移动网络
如上图所示,在这张巨大移动网络中,根据你所在的小区,所从属的基站就可大致知道你的位置信息,如果再加上一些估计算法,就可以更确切的找出你的位置。
2.2基站定位原理
移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(到达时刻)或 TDOA(到达时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。
上面的介绍有点官方,不是很容易理解。直白的说,距离基站越远,信号越差,根据手机收到的信号强度可以大致估计距离基站的远近,当手机同时搜索到至少三个基站的信号时(现在的网络覆盖这是很轻松的一件事情),大致可以估计出距离基站的远近;基站在移动网络中是唯一确定的,其地理位置也是唯一的,也就可以得到三个基站(三个点)距离手机的距离,根据三点定位原理,只需要以基站为圆心,距离为半径多次画圆即可,这些圆的交点就是手机的位置。网传的微信三点定位原理也是这个样子。
图6 三点定位原理
由于基站定位时,信号很容易受到干扰,所以先天就决定了它定位的不准确性,精度大约在150米左右,基本无法开车导航。定位条件是必须在有基站信号的位置,手机处于sim卡注册状态(飞行模式下开wifi和拔出sim卡都不行),而且必须收到3个基站的信号,无论是否在室内。但是,定位速度超快,一旦有信号就可以定位,目前主要用途是没有GPS且没有wifi的情况下快速大体了解下你的位置。另外,如果你的手机里没有基站位置数据包,还需要联网才行。
3.WiFi定位
WiFi(也就是Wireless Access Point:AP,或者无线路由器)定位的方法有很多种,例如可以依据测信号强度来判定目标的距离,也可以依据信号角度来检测目标的方向和角度,依据相位,时间和时间差来初步判定目标距离AP的位置等等。
3.1WiFi定位原理
- 每一个无线AP(路由器)都有一个全球唯一的MAC地址,并且一般来说无线AP在一段时间内不会移动;
- 设备在开启Wi-Fi的情况下,无线路由器默认都会进行SSID广播(除非用户手动配置关闭该功能),在广播帧包含了该路由器的MAC地址;
- 采集装置可以通过接收周围AP发送的广播信息获取周围AP的MAC信息和信号强度信息,将这些信息上传到服务器,经过服务器的计算,保存为“MAC-经纬度”的映射,当采集的信息足够多时候就在服务器上建立了一张巨大的WiFi信息网络;
- 当一个设备处在这样的网络中时,可以将收集到的这些能够标示AP的数据发送到位置服务器,服务器检索出每一个AP的地理位置,并结合每个信号的强弱程度,计算出设备的地理位置并返回到用户设备,其计算方式和基站定位位置计算方式相似,也是利用三点定位或多点定位技术;
- 位置服务商要不断更新、补充自己的数据库,以保证数据的准确性。当某些WiFi信息不在数据库中时,可以根据附近其他的WiFi位置信息推断出未知WiFi的位置信息,并上传服务器。
图7 WiFi 定位
3.2数据采集
这些AP位置映射数据怎么采集的呢?其采集方式大致可以分为主动采集和用户提交。
主动采集:
谷歌的街景拍摄车还有一个重要的功能就是采集沿途的无线信号并打上通过GPS定位出的坐标回传至服务器,Skyhook公司也是采用这样的方式。
用户提交:
Android手机用户在开启“使用无线网络定位”时会提示是否允许使用Google的定位服务,如果允许,用户的位置信息就被谷歌收集到。iPhone则会自动收集WiFi的MAC地址、GPS位置信息、运营商基站编码等,并发送给苹果公司的服务器。
由上面的介绍可知,WiFi定位在AP密集的地方有很好的效果,比如在GPS不能使用的室内,而且具有较快的反映速度,在不连上WiFi的情况下也可以定位,这就是有时候在不开数据服务时百度地图提示打开WiFi功能定位的原因。由于其依赖于WiFi,如果不想让人通过这种方式知道你的位置信息,直接关闭WLAN功能即可。
4.AGPS定位
AGPS(AssistedGPS:辅助全球卫星定位系统)是结合GSM/GPRS与传统卫星定位,利用基地台代送辅助卫星信息,以缩减GPS芯片获取卫星信号的延迟时间,受遮盖的室内也能借基地台讯号弥补,减轻GPS芯片对卫星的依赖度。AGPS利用手机基站的信号,辅以连接远程定位服务器的方式下载卫星星历 (英语:Almanac Data),再配合传统的GPS卫星接受器,让定位的速度更快。是一种结合网络基站信息和GPS信息对移动台进行定位的技术,既利用全球卫星定位系统GPS,又利用移动基站,解决了GPS覆盖的问题,可以在2代的G、C网络和3G网络中使用。
普通的GPS系统是由GPS卫星和GPS接受器组成,与普通的GPS不同,AGPS在系统中还有一个辅助定位服务器。在AGPS网络中,接收器可通过与辅助服务器的通信而获得定位辅助。由于AGPS接收器与辅助服务器间的任务是互为分工的,所以AGPS往往比普通的GPS系统有速度更快的定位能力、有更高的效率,可以很快捕捉到GPS信号,这样的首次捕获时间将大大减小,一般仅需几秒的时间(单纯GPS接收机首次捕获时间可能要2~3分钟时间),而精度也仅为几米,高于GPS的精度。 利用AGPS接收器不必再下载和解码来自GPS卫星的导航数据,因此可以有更多的时间和处理能力来跟踪GPS信号,这样能降低首次定位时间,增加灵敏度以及具有最大的可用性。
AGPS定位基本步骤
- AGPS手机首先将本身的基站地址信息通过网络传输到定位服务器;
- 定位服务器根据该手机的大概位置传输与该位置相关的GPS辅助信息(包含GPS的星历和方位俯仰角等)到手机;
- 该手机的AGPS模块根据辅助信息(以提升GPS信号的第一锁定时间TTFF能力)接收GPS原始信号;
- 手机在接收到GPS原始信号后解调信号,计算手机到卫星的伪距(伪距为受各种GPS误差影响的距离),并将有关信息通过网络传输到定位服务器;
- 定位服务器根据传来的GPS伪距信息和来自其他定位设备(如差分GPS基准站等)的辅助信息完成对GPS信息的处理,并估算该手机的位置;
- 定位服务器将该手机的位置通过网络传输到定位网关或应用平台(如手机上的GPS应用程序)。
图8 AGPS定位
AGPS的优势主要在其定位精度上。在室外等空旷地区,其精度在正常的GPS工作环境下,可达10米左右,堪称目前定位精度最高的一种定位技术。另一优点为:首次捕获GPS信号的时间一般仅需几秒,不像GPS的首次捕获时间可能要2~3分钟。虽然AGPS技术的定位精度很高、首次捕获GPS信号时间短,但是该技术也存在着一些缺点。首先,室内定位的问题目前仍然无法圆满解决。另外,AGPS的定位实现必须通过多次网络传输(最多可达六次单向传输),这对运营商来说是被认为大量的占用了空中资源,对消费者而言将产生不少的流量费用。而且AGPS手机比一般手机在耗电上有一定的额外负担,间接减短了手机的待机时间。除此之外,有时无法取得多个卫星传来的讯号,通常这是因为您的AGPS 话机天线接收器所在环境的限制。在这种情况下,AGPS 功能将不能很好地使用。
几种常用的定位方式介绍完了,那么文章最初那个知友遇到的问题,他怎么被定位的呢?
先分析一下有用信息:
- 使用的IPhone;
- 微信添加过对方为好友,随后解除好友关系;
- 接收了对方一段视频,随后并删除;
- 在那一片,还会被找到。
IPhone系统比较封闭,对用户隐私保护较好,微信对用户隐私保护也很好,那么是怎么被定位的呢?
首先想到是接收的视频(.exe格式,或其他)里含有病毒,在播放视频后,会感染手机,同时窃取一些用户信息。如果这病毒在系统里一直存在,随时窃取用户信息(包括位置信息),以IOS系统的安全性应该会发现并删除。这种方式应该不可行。
那会不会通过微信号或其他方式获取了用户的手机号码呢?由基站定位原理可以知道,手机在连接运营商服务时,会不断同步自己的一些状态信息,根据这些信息就可以获得用户的大致位置。但可以根据电话号码定位手机位置的技术应该只有公检法和运营商具备,个人或者公司怎么获取呢?这又是一个问题。
那会不会是通过WiFi定位呢?通过某些方式获得手机的一些信息,如MAC地址,然后通过附近的WiFi热点对手机进行了定位。当然,这也存在一些问题。
还有就是“在这一片,还会被找到”,说明在这一块区域应该有定位能力,那么应该是在这特定的区域内,安装了一些设备,对附近的手机进行定位与识别。
究竟是以怎样的方式窃取的位置信息,已经无从得知。也很有可能比我预想的简单很多,以一种更为简洁和直接的方式进行定位。随着IT技术发展,有越来越多的黑科技产生,信息安全也越来越重要。好多个人信息暴露在网络上,在互联网上裸奔很危险,以后要注意个人信息保护。
PS/欢迎探讨文中那位知友被别人如何定位的,我也很想知道。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167998.html原文链接:https://javaforall.cn