中国联通取号平台关键技术研究与实践
通信世界网消息(CWW)虽然移动互联网应用呈爆发式增长,但数以亿计用户的身份识别、网络资源的合法使用、安全可靠的用户鉴权,始终是移动互联网发展过程中难以解决的问题。传统的用户认证校验方式在安全性和便捷性方面存在技术瓶颈,如何既快捷又安全地实现用户身份认证成为移动互联网发展的关键,由此基于运营商网络能力的用户取号服务应运而生,逐渐在移动互联网用户认证环节中成为主流技术方案。本文对中国联通取号服务平台(以下简称“联通取号平台”)及其关键技术进行介绍和分析,为后续相关平台的建设和应用提供参考。
取号产品概述及应用说明
应用场景
中国联通取号服务主要应用于一键登录场景(如图1所示)。在用户未登录时,点击“登录”即可弹出一键登录页面,在该页面上,直接显示用户当前手机号码;同时,出于隐私考虑,手机号的中间四位以“*”号代替。用户无需进行其他操作,直接点击该页面的“一键登录”按钮,即可完成登录。
图1 中国联通取号业务应用场景
业务流程
联通取号业务本质上是获取联通网络中用户的手机号码,并通过相关流程使接入的应用获取用户的手机号码。用户携带规定参数访问取号门户服务器,门户服务器根据用户的公网地址进行路由,如果失败则返回异常,如果成功则重定向到鉴权服务器url。鉴权服务器返回鉴权码,并自动重定向到商家指定的ret_url,同时鉴权服务器将鉴权码和用户号码信息备案到取号网关。商家通过部署在ret_url上的服务获取鉴权码,使用鉴权码向取号网关查询用户号码信息,取号网关返回用户号码信息,整个流程结束(如图2所示)。
图2 中国联通鉴权码取号业务流程
联通取号平台技术方案
联通取号平台业务架构
联通取号平台的整体业务架构(如图3所示)包括分省前置模块、头增强前置模块、核心系统、业务运维与监控平台、能力开放平台。
图3 中国联通取号平台整体业务架构
1.分省前置模块
进行Radius数据的接收、解析和处理,并将处理后的数据传输到总部的核心系统。根据联通大网结构,该模块直接部署在各省,用于接收大网设备转发的Radius数据。同时,该模块还具备鉴权码生成和发放功能。
2.头增强前置模块
处理大网设备携带的头增强数据,解析HTTP(超文本传输协议)和HTTPS(超文本传输安全协议)两种协议下的用户信息,并将处理后的数据传输到核心系统。与分省前置模块一样,该模块也具备鉴权码生成和发放功能。
3.核心系统
接收分省前置模块和头增强前置模块的数据,并进行数据处理形成取号核心能力,也可为用户提供安卓和iOS等系统的SDK(软件开发工具包)。同时,该系统对用户接入进行接入鉴权、隐私控制、权限控制等操作。除此之外,该系统还具备生成话单、出账、信控等账务体系功能以及业务风控、稽核、生成黑白名单等安全体系功能。
4.业务运维与监控平台
具备业务查询统计、账号管理、业务审核、系统参数配置等功能。
5.能力开放平台
面向接入用户提供快速取号、鉴权码取号、号码校验、白名单取号等多个取号产品。同时,该平台还提供产品门户,便于用户了解和使用功能、管理业务和应用等。
Radius数据方案
联通取号平台利用PGW(PDN网关)等设备特征,从网络中采集3A认证的Radius消息。Radius协议可实现对网络接入用户的身份认证、授权和计费功能。在该平台上,网络设备向取号平台转发Radius消息,分省前置模块在接收到Radius消息之后,根据协议,解析出手机号码和Framed-IP-Address(用户私网IP),以此作为取号平台的基础数据。
由于用户的私网IP在不同省份甚至同一省份存在重复现象,相关应用无法根据用户的私网IP查询到手机号。因此在数据采集时,需要分省部署前置机,确保在每台前置机接收的数据中,私网IP不重复,并与手机号是一一对应的关系。
对于省内私网IP重复的情况,通过部署多个省分前置机的方式创造一个逻辑上的省分概念,在联通取号平台中被称为“大区”。前置机在发送手机号和私网IP的同时,将“大区”编码发送给核心系统,由此核心系统才能拥有“私网IP—手机号—大区编码”的数据关系。
网络设备在进行组网时,会利用公网地址进行区分,不同“大区”用户的公网地址是不同的。用户取号时,先根据用户的公网地址路由到不同的“大区”,再根据用户的私网IP查询手机号码。
如何获取用户的私网IP?联通取号平台有两种方案,对应两款取号产品。
一种是“快速取号”产品,主要面向内部应用。其技术原理是通过SDK方式自行采集私网IP?并将私网IP以参数的方式传给取号平台,平台直接根据参数中的私网IP查询用户手机号码进行取号。
另一种则是“鉴权码取号”产品,主要面向行业用户。用户通过内网向前置机发起请求,分省前置模块检测请求中用户的源IP,即用户的私网IP,生成鉴权码返回给用户,同时将鉴权码和私网IP发送给核心系统。鉴权码取号是通过鉴权码查询用户的私网IP,再通过私网IP查询用户的手机号码,最终完成取号。
头增强数据方案
除Radius数据方案之外,联通取号平台还采用了头增强数据方案。在Radius数据方案中,网络设备转发全量用户的实时Radius数据到取号平台;而在头增强方案中,用户发起取号之后,才会进行头增强操作。
联通取号平台需要在UPF(用户面功能)或PGW设备中配置头增强规则,并将取号平台的地址设置为头增强地址,只要用户访问取号平台的地址,网络设备就会触发头增强,随即在请求头中插入用户手机号码等信息。
联通取号平台的头增强服务器在接收到请求时,请求头中已经包含用户手机号码信息,只需将其解析就可获取用户手机号码。头增强服务器生成鉴权码并将其返回给用户,同时将鉴权码与手机号的对应关系传输到核心系统,后续流程与Radius数据方案一致。
需要指出的是,对于HTTP请求,网络设备可以直接在HTTP请求头中插入用户信息;而对于HTTPS请求,由于其通道具有加密性,网络设备无法像对HTTP请求一样直接在请求头中插入信息。
但根据TLS协议(安全传输层协议),客户端和服务端可通过“握手”建立安全连接。在“握手”时,客户端发送ClientHello消息,联通取号平台则利用网络设备识别Client Hello消息并进行Extension扩展编程,从而实现对HTTPS请求的头增强。
用户手机端发起TLS“握手”时,发送Client Hello消息,UPF等网络设备识别出Client Hello消息,在消息中增加Extension扩展字段(注:联通取号平台选择的扩展字段ID为17516),网络设备在该扩展字段插入用户手机号码等信息。
头增强数据解析程序获取增强后的Client Hello消息,从Extension扩展字段中解析出用户手机号码等信息,删除Extension扩展内容,并将Client Hello消息报文还原为未增强之前的内容。此举的主要原因是在TLS“握手”时,客户端会发送Encrypted Handshake Message消息,该消息将之前发送的所有数据生成摘要,用会话密钥(Master Secret)加密,然后由服务端进行校验,验证之前“握手”信息是否被中途篡改过。如果不删除网络设备插入的扩展数据,恢复原有报文内容,则无法完成该校验,从而导致“握手”失败,无法成功建立通道,影响正常通信。
为了强化头增强方案的防欺诈功能,联通取号平台对头增强信息进行加密传输,针对不同头增强设备进行了加密算法适配,支持RC4、AES、SM2等多种加密方式。
安全与风控策略研究
针对基于OpenID和OAuth等协议的一键登录技术的攻击手段有很多,如中间人攻击、重放攻击、“网络钓鱼”、网络窃听等。联通取号平台的业务流程与之相似,因此同样需要防范相关风险。
风控策略
在用户登录账户的过程中,攻击者具备两个基础特征,即设备聚集性和活动聚集性。根据这些特性,为加强系统安全,联通取号平台在实际运营中设立了多种风控策略。
一是号码风控。同一个手机号码,在短时间内大量取号,会被认为是异常行为,该号码将被取号平台停用取号功能一段时间。
二是应用风控。平台上的应用风控是通过控制日总取号量和峰值取号量实现的。用户可自行设置每日的最高取号量和每秒最多取号量,当超过设置的限额时,该应用将被停用取号功能一段时间。此外,用户还可以根据需要设置“豁免”时段,以此应对节假日可能出现的业务高峰。
三是IP风控。同一个IP在短时间内大量取号,会被认为是异常行为,“命中”风控规则,该IP将被取号平台停用取号功能一段时间。
防“钓鱼”安全策略
鉴权码取号是目前联通取号平台应用最广泛的取号产品。
在“钓鱼”场景中,恶意应用程序通过非法方式获取用户Token,从而实现攻击行为。授权服务器会把授权码和访问令牌转发到ret_url对应的地址,如果攻击者伪造ret_url对应的地址,并诱导用户发送请求,之后授权凭证将返回给攻击者伪造的地址,从而实现攻击。为防止该业务的“钓鱼”攻击风险,联通取号平台设计了如下安全策略。
第一步,由手机端向取号门户发起请求,取号门户校验用户请求的各项参数,包括用户的签名是否正确等,防止被非法攻击。
第二步,取号门户系统进行路由时,系统会限定地址,路由的下一跳只能是系统内配置的分省前置地址或头增强前置地址。
第三步,联通取号平台生成的鉴权码暗含用户和应用的信息,仅支持用户对该应用的使用,避免鉴权码泄露之后被非法使用。
第四步,联通取号平台重定向到请求参数中的ret_url时,校验该地址是否为用户的正确地址,若为非法地址直接返回异常,取号失败。
第五步,用户利用鉴权码取号时,应用软件采用常见的基于名单的过滤方法,校验用户的IP是否在白名单内,同时校验用户的签名信息等是否正确,确保合法调用。
防热点攻击策略
随着移动互联网的普及和发展,Wi-Fi已经成为人们生活中不可或缺的一部分,但同时也成为恶意攻击者布下各种网络陷阱的载体。2018年我国公共Wi-Fi的数量近7.37亿个,而风险Wi-Fi占比高达46.08%,Wi-Fi环境下的网络安全问题成为信息安全的新困局。
在现实生活中,存在不少用户打开手机热点供其他用户使用的场景,如A用户打开热点,B用户连接使用该热点的Wi-Fi网络。而在取号业务中,B用户可以通过该热点发起攻击。因为在Radius数据方案的鉴权码取号流程中,B通过A的网络连接到前置机,前置机检测到的源地址是A用户的私网IP,而Radius数据方案基于用户私网IP查询手机号,因此取号结果是A的手机号码。在头增强方案中,由于B使用的是A的网络,在网络设备进行头增强时,在请求中插入的也是A的号码,所以取号的结果也是A的手机号码。
联通取号平台防热点攻击策略从用户私网IP入手,利用SDK采集用户的私网IP,取号时SDK将用户私网IP发送给服务端进行校验,如果SDK采集的私网IP与前置机检测的源IP或头增强中解析出的私网IP不一致,则返回异常,如果一致则返回成功。
同时,取号平台还根据请求中的TTL值(生存时间值)来判断是否为热点连接。TTL字段是由发送端初始设置的,每个处理该数据报文的路由器都需要将TTL值减1。手机正常请求的TTL值为64,而经过热点连接上的请求的TTL值为63,联通取号平台利用此值判断是否为热点连接,并进行相关处理。
防取错号策略
在Radius数据方案中,取号是根据用户的私网IP来查询用户号码。由于用户的私网IP是动态变化的,即同一个用户不同时段的私网IP可能是不同的,而且同一个私网IP在不同的时间段也可能分配给不同的用户。
联通取号平台通过“上下线”机制来确保数据的准确性。在Radius消息中有一个“Acct-Status-Type”字段,其值可能为Start(1)、Stop(2)、Update(3),分别表示用户在网络中上线、下线、状态更新。联通取号平台建立以私网IP为索引的数据表,并根据Radius消息中“Acct-Status-Type”值对数据表进行操作:Start则插入数据、Stop则删除数据、Update则更新数据。
这样的机制十分依赖数据的实时性和完整性,一旦数据采集有延时,或者数据有丢失,则会导致取错号的情况发生。联通取号平台防范取错号的主要策略有两点。
一是数据实时性保障。前置机与核心系统“断连”之后,在前置机中缓存1分钟之内的数据,如果连接在1分钟之内重新建立,则前置机将缓存数据继续发送到核心系统。若连接无法在1分钟之内重新建立,则前置机丢弃缓存数据,同时核心系统清空该前置机所承载用户的数据,避免取错号的发生。
二是数据完整性保障。秉承Start数据和Stop数据是成对出现的原则,联通取号平台对所有Radius消息进行监控,在收到某个号码的Start消息之后,如果该号码的下一条还是Start消息,而非Stop消息,则代表该Stop消息已经丢失,平台将该私网IP在数据表中删除,避免取错号。
结语
目前,联通取号平台对内支撑中国联通APP、联通公众APP等业务,日均调用量超过20亿次;对外服务今日头条、阿里、腾讯等150家用户的3万余款APP,在业内得到了广泛应用,极大助力了移动互联网用户认证安全性和便捷性的提升。本文介绍了中国联通取号产品的相关应用场景和业务流程,分析了联通取号平台的技术架构,提出了Radius数据方案和头增强数据方案,并对各方案的现网部署实践和关键技术进行了研究。此外,还对联通取号平台的安全与风控策略进行了阐述,为电信运营商后续相关业务平台的建设运营提供了参考和借鉴。
*本篇刊载于《通信世界》6月10日*
第11期 总945期