手机一键登录是最近两三年出现的一种新型应用登录模式,比之前常用的短信验证码登录方便很多。登录时,应用程序首先向用户显示带有本地号码掩码的授权登录页面。用户点击“同意授权”按钮后,应用可以获得完整的本地号码,从而完成用户的登录认证。在这个过程中,只要确认登录使用的手机号码是在与该号码绑定的手机上发起的,就可以成功认证应用。从这个角度来说,它和短信验证码登录没有本质区别,都是一种设备认证登录方式。本文将探索技术门道。
近年来,为了保护用户的隐私和安全,Android和iOS系统限制了应用程序获取本地电话号码的能力。即使通过某种技术手段获取了本地电话号码,这个号码仍然可能被篡改,所以应用程序直接读取本地电话号码进行登录是不可行的。那么这些应用是如何获得真实的本地号码的呢?答案是电信运营商。如果手机需要打电话、上网、充电,运营商必须能够对应正确的手机号码。国内的运营商是中国移动、中国联通、中国电信,都开放了这个能力。对于在互联网大潮中已经管道化的运营商来说,是一个非常有意义和积极的进步。
手机流量上网原理手机号一键登录是借助手机流量上网实现的,所以首先要了解手机流量上网原理。
目前网上有很多关于一键登录的技术文章,但内容基本相同。至于关于获取手机号的部分,都是通过运营商的数据网关能力,含糊不清,让追的技术人员难以忍受。本章将介绍这种从数据网关获取手机号码的能力是如何实现的。因为通信的专业知识很复杂,而且我也没有专业学过,大家也不希望接触很多专业术语,所以这里只保留一些关键的专业术语,尽量用通俗易懂的方式把这个机制讲清楚。
五层网络模型熟悉网络的同学应该知道五层协议,那么手机流量在线时五层网络模型有什么区别呢?
从上图可以看出,手机流量上网的数据链路层和物理层的主要区别。在数据链路层,互联网流量没有MAC地址的概念。它采用点对点协议(PPP),手机通过拨号建立这个PPP连接,然后发送数据。在物理层,通过手机内置的基带模块对无线信号进行调制解调,实现与移动基站的电磁波通信。
互联网点对点协议接入机制支持认证功能。手机发起连接时会携带自己的标识,一般是手机卡内置的IMSI。该IMSI也将存储在运营商的数据库中,因此基站可以验证连接用户的身份。当然,这个验证过程并不是简单的比较IMSI,还会有更多的安全机制。为了更好的理解流量上网的机理,这里再来一个4G流量上网时手机和运营商交互的示意图:核心手机:其中手机卡和基带模块是流量冲浪的关键。IMSI,全称国际移动用户识别号,存储在手机卡中。IMSI的身份是手机卡。
基站:就是外面常见的铁架信号塔。这是一个能在一定范围内发送和接收信息的电台。手机会接入它,然后它通过光纤接入运营商网络,实现移动通信。
MME:移动性管理实体,移动性控制单元。手机建立连接时,会先访问这里,负责:手机与基站之间的访问控制、手机卡的认证、会话管理、安全传输、漫游控制、跨运营商通信等。
HSS:归属订户服务器,属于订户服务器。保存本地签约的手机卡信息,包括手机卡IMSI与手机号码的对应关系、手机号码的套餐信息、手机号码的归属地信息等。
服务网关。4G环境下,用户端与运营商核心网之间的服务网关。能不能准入,能办什么业务,在哪里办业务都在这里控制。跨运营商计费、漫游计费等。也在这里完成。
PDN网关,PDN网关。运营商核心网与互联网之间的网关,通过它手机才能真正上网。它会给手机分配一个IP地址,控制上网速度,收取流量。
Pcrf:策略和计费规则功能,策略和计费控制单元,存储每个用户的网络接入策略和计费规则。
为了便于理解,上网的过程大致分为两部分(对应上图中的1和2):
以上是手机流量上网的基本原理。可以看到,运营商完全有能力通过IMSI或GUTI获取当前网民的手机号码。关于运营商的一键登录是如何实现的,我还没有找到相关介绍,但是我可以想象:手机应用通过运营商的SDK发起获取手机号码的服务请求,这个时候会携带IMSI或者GUTI。服务请求到达S-GW,并且S-GW被认证,然后这个服务请求被路由到用于在运营商的核心网络中获得移动电话号码的服务。该服务根据业务规则从HSS取出手机号码,并执行一些处理。
一键登录原理了解手机流量上网原理。我们来看看接下来的一键登录业务是如何实现的。这部分属于上层应用开发,大家应该相对比较熟悉。
如果你已经接入了微信的第三方应用登录,或者其他类似的第三方应用登录,流程都差不多。先来看图:
以下是一些关键步骤:
实际上,这里还有另一个安全问题:
14登录请求:如果用户随机创建一个认证令牌,然后向应用服务提交请求,应用服务又向认证服务提交请求,这就是跨站攻击。虽然这个令牌可以被屏蔽,但是必然会浪费资源,给服务器造成压力。
微信的这个第三方应用登录比较好。在用户登录之前,应用服务器生成一个随机数,然后当应用前端提交给应用服务器的时候,应用服务器就可以用这个随机数来验证这个随机数。
数字验证场景
除了登录之外,运营商网关的这种号码检索能力还可以用于验证手机号码。在一些关键业务中,比如支付过程中,需要用户输入本地手机号码或其中的一部分,然后由运营商认证服务验证手机号码是否是本地的。
隐私保护,设备的唯一标识。如今,人们越来越重视隐私问题。经常会出现这种情况:当你在一个电子商务网站上搜索一个产品,然后访问其他网站时,有人推荐你为这种产品做广告。还有一种情况感觉很恐怖。你刚和人聊了一件事,然后你在一个App上看到了关于这件事的推荐。一些人猜测该应用程序在窃听。但基于目前的舆论和监督,窃听风险太大。之所以会这样,可能真的是算法太厉害了。
近年来,Android和iOS系统都限制了应用程序对唯一手机标识的访问,如IMEI、Mac地址、序列号、广告id等。目的是防止用户的信息在多个app之间产生关联,造成用户隐私的泄露以及一些安全问题和法律风险。前面提到的跨app广告行为自然被打压了。
在了解一键登录的技术原理时,看到某运营商为绑定SIM卡的设备提供唯一Id服务。口号是处理手机操作系统限制访问手机唯一标识的问题。在如今越来越重视隐私保护的前提下,如果将这种能力开放给广告平台,那将是一个历史的逆转。
手机号作为身份的问题。由于手机号登录方式在国内被广泛使用,限制手机号在app之间的关联,进而综合分析用户的行为,在技术上有一定难度。比如一个大厂运营着各种不同种类的热门app,就有能力更全面的了解某个用户。如果要限制的话,可能要通过法律层面来解决。至于不同厂商之间的手机号关联行为,不太可能出现基于商业利益的保护。
在这种国内商业环境下,如果你真的很在意自己的隐私,最好只用账号密码登录。否则频繁更换手机号码可能是一种无奈的办法。
手机号码总数有限。为了有效利用手机号码资源,手机号码注销后,会在一段时间后被运营商转售。如果一个新手机号的机主用这个手机号登录了一个App,而这个手机号之前已经在这个APP上注册过,导致大量的使用记录,那么这个手机号的前机主的隐私就会被泄露。所以现在大家都不敢随便换手机号了,因为注册地太多,留下无数使用痕迹。
在了解一键登录的技术原理时,我们还可以看到,某运营商提供了一项“手机号码变更绑定SIM卡通知”的服务,应用可以根据这项服务解绑重新出售的手机号码与应用账号之间的关系,从而保护用户的隐私。如上所述,手机卡是由IMSI识别的。如果手机号被转卖,会绑定一个新的IMSI,运营商可以据此生成通知。当然,运营商也需要排除更换手机卡和携号转网的情况。在这些情况下,新的IMSI将与手机号码绑定。
不得不说运营商的这个服务还是挺好的。
这是这篇文章的主要内容,因为我不是知识渊博。如有错漏,请指正。
想了解更多关于手机号一键登录如何实现(android手机号一键登录)的内容,请扫微信
或微信搜索jiemingpan
版权说明:本文版权由作者自行负责,如有侵权请联系本站删除。