十分钟搞懂手机号码一键登录

手机号码一键登录是最近两三年出现的一种新型应用登录方式 , 比之前常用的短信验证码登录又方便了不少 。登陆时 , 应用首先向用户展示带有本机号码掩码的授权登录页面 , 用户点击“同意授权”的按钮之后 , 应用即可获取到完整的本机号码 , 从而完成用户的登录认证 。在这个过程中 , 应用只要确认登录用的手机号码是在绑定了此号码的手机上发起的即可认证成功 , 从这一点来看 , 它和短信验证码登录并无本质区别 , 都是一种设备认证登录方式 。这篇文章就来捋一下其中的技术门道 。
这几年为了保护用户的隐私安全 , Android和IOS系统都限制了应用获取本机号码的能力 , 即使通过某些技术手段获取到了本机号码 , 这个号码还可能是被篡改的 , 所以应用直接读取本机号码用于登录是不可行的 。那么这些应用是怎么获取到真实的本机号码的呢?答案是电信运营商 , 手机要打电话、要上网、要计费 , 运营商肯定能对应到正确的手机号码 。国内的运营商就是移动、联通、电信这三家 , 它们都开放了这种能力 。对于在互联网大潮中被管道化的运营商来说 , 不失为一种十分有意义的积极进取 。
手机流量上网的原理手机号码一键登录是借助手机流量上网来实现的 , 所以先要搞清楚流量上网的原理 。
目前网上已有很多关于一键登录的技术文章 , 但是内容基本雷同 , 关于获取手机号码的部分 , 所述都是通过运营商的数据网关能力 , 语焉不详 , 对于有追求的技术人来说 , 难以忍受 。这个章节就来介绍下这种从数据网关获取手机号码的能力是如何实现的 , 因为通信专业知识十分繁杂 , 我也没有经过专业的学习 , 大家也不想接触到很多的专业名词 , 所以这里只保留一些关键的专业名词 , 尽量以通俗易懂的方式来理清这个机制 。
五层网络模型对网络比较熟悉的同学 , 应该了解五层协议 , 那么手机流量上网时的五层网络模型有何不同呢?

十分钟搞懂手机号码一键登录

文章插图
 
从上图可以看出 , 手机流量上网的主要区别在数据链路层和物理层 。在数据链路层 , 流量上网没有mac地址的概念 , 它采用一种点对点协议(PPP) , 手机端通过拨号方式建立这种PPP连接 , 然后发送数据 。在物理层 , 流量上网通过手机内置的基带模块进行无线信号的调制、解调工作 , 从而实现与移动基站之间的电磁波通信 。
流量上网的机制点对点协议支持身份验证功能 , 手机端发起连接时会携带自己的身份证明 , 一般就是手机卡内置的IMSI , 这个IMSI也会保存在运营商的数据库中 , 因此基站就可以验证连接用户的身份 , 当然这个验证过程不是简单的对比IMSI , 会有更多安全机制 。为了更清楚的了解流量上网机制 , 下面再来一张4G流量上网时手机与运营商的交互示意图:
十分钟搞懂手机号码一键登录

文章插图
 
核心组件手机:这其中对流量上网起到关键作用的就是手机卡和基带模块 。手机卡中保存了IMSI , 全称International Mobile Subscriber Identification Number , 国际移动用户识别码 。IMSI是手机卡的身份标识 。
基站:就是外边常见的铁架子信号塔 , 是一种能覆盖一定范围的无线电收发信息电台 , 手机会连接到它 , 然后它再通过光纤连接到运营商网络 , 从而实现移动通信 。
MME:Mobility Management Entity , 移动控制单元 。手机建立连接时会先访问到这里 , 负责:手机与基站的接入控制 , 手机卡的鉴权、会话管理、安全传输 , 漫游控制、跨运营商通信等 。
HSS:Home Subscriber Server , 归属签约用户服务器 。保存本地签约的手机卡信息 , 包括手机卡IMSI与手机号的对应关系 , 手机号的套餐信息、手机号的归属地信息等 。
S-GW:Service Gateway , 服务网关 。4G环境下 , 用户侧与运营商核心网之间的业务网关 。访问能不能进入 , 能做什么业务 , 去哪里做业务 , 是在这里控制的 。跨运营商计费、漫游计费等也在这里完成 。


推荐阅读