短信验证码不尽完美,那有没有更好的方案?
在 iPhone X 那场划时代的发布会上,苹果拿出了能够取代指纹识别技术(Touch ID)的 3D 结构光技术(Face ID),并且,在发布会上,苹果还很明确地表示,Face ID 比之前的指纹识别更为安全准确。言下之意,指纹识别并不是那么安全。
从数字密码到复杂密码,从指纹识别到人脸识别再到 3D 结构光,人们在计算设备上的登录方式一直在发生变迁,这其中,有技术进步的驱动,也有安全与方便的博弈。比如说,长位数包含大小写字母的复杂密码比短位数的数字密码更安全,然而却更不方便,人的惰性趋势人类倾向于更方便的密码而非更安全的密码。这也解释了,为什么乌克兰武装部队的「第聂伯罗」军队自动化控制系统的服务器密码是「123456」,用户名更是默认的「admin」。
指纹识别很方便,不过却并不十分安全,还有很多手机厂商的人脸识别,甚至可以被一张纸片骗过。目前 3D 结构光兼具了民用级别的方便和安全,不过成本和技术门槛又都比较高。
而在中国,一种独特的验证方式在近几年成为我们生活的日常,那就是短信验证码。各位读者不妨看看自己的手机的短信记录,恐怕九成以上都是服务信息以及验证码信息。
短信验证码不够完美,需要升级了
在不久前我们的一篇《短信验证码:是时候说再见了》中,我们说到了短信验证码的前世今生,以及它存在的问题:安全性。
就像古代镖局运镖一样,路程越长,被劫镖的概率就越大,传统的短信验证码从服务商到用户手中,经过了「服务商 —— 短信服务商 —— 运营商——用户」好几条链路。
尤其是在信号从基站天线发射,由手机等终端接收然后解调的最终这两个过程中,更是危机四伏,也就是镖局运镖路上的劫镖事故多发地段,这里潜伏着名为许多名为「短信嗅探」的歹人。不法分子通过改装的手机和伪基站,就可能获取周围的手机卡信息,并监听短信记录。
▲ 短信嗅探设备截取的短信
本质上,短信验证码,是一个证明「我是我自己」的事情,用作用户绑定和用户确认的情况其实更多。
不可否认的事实就是,在密码安全事故发生之前,大多数人的潜意识里,方便比安全的地位更高。而且因为手机的随身性,短信验证码还是比较方便的。所以,要想对短信验证码进行升级,光比短信验证码更安全其实没啥用,重要的是,比它安全的同时,还要更方便。方便的同时,能够顺应用户的操作习惯就更好了。
这些问题,通信业界自然也知晓,也在想办法去解决。再过不久就是双 11,又是用户购物消费的高峰期,与人们高涨的消费需求对应的是像阿里云这样的幕后技术在保障瞬时井喷的高并发需求。细分到短信验证码的老问题上,阿里云通信的号码认证服务(Phone Number Verification Service)一方面能够验证用户手机和身份,一方面又不需要通过短信这种可能被半路劫走的方式验证。
作为此前短信验证码的升级方案,阿里云通信的这个号码认证服务可以用户输入手机号码后,一键即可完成认证,不需要看着倒数 60 秒等着短信过来。技术上的原理其实不太复杂,号码认证服务先是整合三大运营商特有的网关认证能力,然后验证待校验手机号码和应用所在的手机 SIM 卡号码的一致性,并且在安全上提供仅限本机操作的防控。
关于号码认证服务和短信验证码的操作逻辑对比,看下面这张图就一目了然。
当然现在的智能手机已经很聪明了,很多手机都可以自动识别复制,甚至是自动填入验证码。但是在我看来,号码认证服务的一个隐性优势在于,消除了用户心中的「不确定状态」,很多人在输入难以辨认的图片验证码,按下「获取短信验证码」按钮之后,就进入了一个度秒如年的「扭曲时空」,如果 1 分钟内没有收到短信验证码,就会坐立难安胡思乱想。
再举个例子,我曾经是某款粉丝向手游的玩家,花了不少的时间和金钱,前不久这款游戏回馈核心玩家开始送周年礼物,虽然不贵但是有点儿纪念意义。礼物需要在网站上用手机号登录登记然后领取,数量有限先到先得。于是我就定好闹钟,准点登录,结果短信验证码在我输入手机号码点击获取三分钟后才收到,然而礼物在开抢一分钟的时候就没有了。
这个时候我也不知道是游戏方和短信服务商没有处理高并发的能力,还是附近基站不给力,还是新 iPhone 的基带不行。
阿里云通信的号码认证服务之所以定义为一种升级的方案,更安全就不用说了,之前短信验证码是镖局的人押着马车带着镖从劫匪埋伏好的路上走过,现在是验证信息坐着飞机从天上走,地上的劫匪只能望望天擦眼泪。
新体验怎么样?
在阿里云通信的官网上,已经有试用的 Demo 可以体验了。整个过程非常的快,尤其是相比于短信验证码来说,输入电话号码耗时 3 秒,认证不到 2 秒,整个过程也就不到 5 秒钟,也就是说秒速 5 厘米的樱花刚刚离开树梢一点点,「亚洲飞人」苏炳添还没跑到百米的一半,玛莎拉蒂 Levante 还没从零加速到百公里,认证就完成了,
要是在以往搞短信验证码,等个半分钟已经是很正常的事情了,等不到的情况相信大家也遇到过。
需要说明的是,这个用作演示的应用是正儿八经在工作的,刚开始我没插 SIM 卡不能进行验证,后来插卡了但没有给应用开相应权限,也能检测出来,并表示无法正常完成验证。
其实这个功能不光是方便了用户,节省了时间还保障了安全,对于 B 端的服务商来说,更是福音。对于需要拉新用户注册,或者做老用户激活以及留存的企业来说,以往的短信验证码,或者其他的注册以及登录方式,都需要层层输入点击跳转确认。就像霍金说,在科普书籍里面,多写一个公式就会多吓跑一半读者,注册登录环节每多一个步骤,就意味着多流失一部分用户。
当然,技术升级和进步往往不是一蹴而就,短信验证码在许多场景,还是没法被完全取代,比如说 4G 网络关闭的情况下,或者手机收验证码在电脑上进行登录等等。不过可以看到的是,越往后发展,号码验证服务和短信验证码的主次关系就越可能颠倒过来。
可以预见的是,未来升级到号码验证服务的互联网应用会越来越多,尤其是对安全要求比较的那些应用和服务。比如支付宝已经开始使用号码认证进行用户注册了。
某种程度上来说,号码验证服务相比于短信验证码服务的进步,就有些类似于苹果 Face ID 相比于指纹识别的更新,更安全是基本要求,更方便是升级体验的核心动力,更无感则是用户「喜新厌旧」的附加因素。
不光是阿里云通信会提供这样的号码验证服务,其他能够提供短信验证码服务的技术服务商,肯定也会参与进来,把验证服务的体验和安全往前再推进一步。
最后的问题就是价格了,相比于短信验证的价格,在具有阿里特色的双 11 促销价格下,单次的号码验证价格最低可以低至 2 分钱多一点,如果尝鲜使用最小量套餐的话,单次验证价格在 3 分钱,和传统短信验证价格持平,甚至还便宜一丢丢。可以说,对于普通消费者来说,衣服手机在双 11 值得抢购,对于服务需求方来说,号码验证也是如此,毕竟说不定过了双 11 就涨回去了。