Sanvi

2 分钟

APP本机号码登录原理解密

不知道最近大家有没有注意到,很多app的注册和登录页面变成了下面这个样子:

或者下面这个样子:

这种注册和登录方式,相比于传统的短信验证码来说简单太多了。只要用户一点击按钮,那么马上就能识别号码并注册/登录成功。那么这种技术到底是怎么实现的,和短信验证码有什么区别,到底是否安全呢?现在让狗十三君来带领大家一探究竟。

传统验证码

我们知道传统的认证方式,是基于短信验证码的方式。app首选让客户输入自己的手机号,然后通过运营商向客户下发一条短信,短信的内容就是app经营者所事先生成好的验证码。只有用户输入了正确的验证码,app经营者才会认为这个用户是该手机号码的持有者。

这种验证方式被广泛应用于用户注册、登录、支付等场景。

但是我们知道,基于文本短信的验证码其实是2G时代的遗留产物。目前所有手机的文本短信仍然停留在2G GSM协议上。这种协议要求终端设备(手机)向每个基站注册并“明文”交换信息。如下图所示:

现代手机基本都是4G的,在带宽足够的情况下,手机终端和基站会采用高级加密协议保证双方通话安全。

但是在信号不好的情况下,比如回到家卧室里或者客厅中,手机会降频选择到2G信道,这就给了伪基站可趁之机,由于基于2G GSM协议的短信交换是明文的,所以伪基站可以强制要求降频段的手机注册到自己身上,然后代理手机向真正的基站发送报文,这样就可以劫持短信验证码。如下图所示:

运营商一键登录

到了5G时代,这种落后的方式终于要被淘汰掉了。因为5G网络根本不兼容2G GSM协议,所以大家再也不用担心短信被劫持的问题了。而又因为5G网络足够的带宽和信道加密技术,使得隧道验证身份得到可能。

实现一键注册/登录的原理在于,app只要消耗一点点移动流量(非wifi),便可以在得到用户授权的情况下,从运营商提供的5G信道信息中获取到手机号码和信道加密的真伪信息。即在5G可信信道下,手机号、设备信息已经可以从流量报文中获取,而不再依赖下发短信这种原始的方式运行了。

只要能够接入运营商网络的认证设备(手机入网+SIM卡),那么这些设备连接到5G基站的信令都已经包含了足够的身份信息,并且除非得到用户授权,这些加密信息是根本无法被app运营者解开的。

所以有了这种操作方式,短信验证码这种古老的方式终于可以走入历史的垃圾堆了,对于app运营者来说,省了一大笔给用户发送验证短信的费用;而用户,再也不用盯着短信是否达到手机了,也不用因为收件箱满了,或者是被手机安全软件拦截,导致无法收到短信的情况出现。

当然最重要的是,也不会出现一觉醒来被扒光身家的恐怖操作。

当然,要想使用一键登录功能,必须是得到电信运营商及用户双重授权操作的app,需要使用经过电信运营商授权电子签名的sdk进行开发。