朱昌盛,王纯,李炜
(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876;2 东信北邮信息技术有限公司,北京 100191)
3G网络由于其高带宽、高速率的特点,可以开展更为丰富的数据业务。随着众多业务的开展,运营商和用户都需要可靠的安全机制来保护业务的安全使用和正确计费。很多数据业务的应用都需要在接入业务之前,在用户端和应用服务器之间进行双向的身份认证[1]。
在目前的很多业务中,用户端与应用服务器往往局限于双方的认证鉴权,这样存在两个缺陷,首先是这种方法要求双方在鉴权前协商好一个共享密钥,由于共享密钥的方式多种多样,不利于业务的继承。其次双方鉴权的安全级别比较低,很难达到目前运营商和用户对安全的高要求[2]。
HDC(Home Data Service Center)家庭数据业务中心是东信北邮家庭数据业务平台的重要组成部分,本文介绍了HDC的体系架构及业务体系流程,阐述了HDC的鉴权机制,客户端通过安全中间件与HDC、eBSF(enhanced Bootstrapping Server Function)进行交互,减轻了终端开发者的难度。设计实现了一种通用的安全级别比较高的鉴权机制,既可以用于现有的服务,也可以用于将来的新业务,从而避免为每一种新服务都提供独有的鉴权机制。不同应用的一个通用机制避免了各种机制之间的差异性,从而能以一种一致的方式解决安全认证的问题。
家庭业务体系架构将认证、密钥协商和管理、家庭信息管理等功能从业务平台中剥离出来,集中在家庭数据业务中心和eBSF实现,并通过接口向各业务平台提供服务。利用这种方式,可简化业务的开发复杂性,屏蔽终端形态和网络的多样性差异。该体系架构可支持各种家庭终端形态:存量移动终端和新增固定终端,有卡终端和无卡终端。家庭数据业务体系架构如图1所示。
图1 家庭数据业务体系架构
参考图1,终端的基本流程如下:
(1)客户端开机后,通过安全中间件与eBSF协商生成共享根密钥Ks,根密钥Ks用于推导客户端与业务平台AS间的共享密钥PSK_AS;
(2)安全中间件与HDC协商获得访问业务平台AS的Token;
(3)客户端访问业务平台,当需要进行身份认证时,客户端通过调用安全中间件获得Token;当需要对客户端与业务平台AS间传递的数据进行安全传输时,客户端调用安全中间件获取与业务平台AS间的共享密钥PSK_AS;
(4)客户端携带Token与业务平台交互,访问业务或用PSK_AS加密传输数据发给平台;
(5)业务平台向HDC验证Token并获得用户身份,如果业务平台需要对与终端间交互的内容加解密,如果业务平台没有PSK_AS,则向eBSF请求密钥。
HDC主要负责完成对家庭用户信息的统一管理、对家庭用户的统一认证、对家庭业务订购的统一管理功能。HDC主要包括ASF(Authentication Service Function)与HIM(Home Information Management)两个主要模块。
ASF模块的主要功能为:
(1)对终端进行身份认证,为认证通过的终端颁发Token,终端使用Token访问家庭业务平台;
(2)对Token进行管理和维护;
(3)终端携带Token访问业务平台时,ASF向业务平台提供Token验证服务。
HIM模块的主要功能为:
(1)维护家庭标识,维护家庭标识与家庭主、副号码的映射关系;
(2)为业务平台和ASF提供家庭用户信息数据的查询。
eBSF是东信北邮公司在3GPP TS 33.220[3]的BSF基础上,增加了对更多应用场景的支持,在BSF上做了安全增强。eBSF主要针对家庭数据业务的鉴权需求,在原有BSF的功能基础之上增加了对更多应用场景的GBA的支持,实现与终端的密钥协商功能, 并通过接口向业务平台提供密钥服务。
家庭数据业务的密钥体系为两层密钥体系,其体系架构如图2所示。
图2 密钥体系架构
终端在初始化时,采用eGBA(enhanced Generic Bootstrapping Architecture)机制与eBSF共同协商生成根密钥Ks。在eGBA初始化过程完成后,终端与eBSF共享Ks,当终端与网元ASF进行安全交互时,需要与ASF网元共享一个密钥PSK_ASF,该密钥由安全中间件和eBSF推导得到。当终端与业务平台AS做安全交互时,需要与业务平台AS共享一个密钥,在家庭数据业务中,终端与业务平台AS间的共享密钥PSK_AS是由终端安全中间件和eBSF分别利用根密钥Ks等参数推导得到。
安全中间件, 为了与网络侧HDC和eBSF配合,终端侧采用安全中间件实现终端侧的认证、密钥协商功能。各客户端通过调用安全中间件获取密钥或认证凭证,不必与HDC、eBSF直接交互。
安全中间件的主要作用是实现密钥生成和用户身份认证,为客户端提供服务,以简化客户端的开发难度。用户通过终端客户端使用业务时,在一些关键流程中,业务平台往往需要认证终端身份。此时客户端可调用中间件获取Token,并携带Token向业务平台发起请求,业务平台利用HDC验证Token有效性,并完成对用户身份的认证。对于某些业务,客户端需要使用密钥保护与业务平台之间的会话。此时,客户端可向安全中间件发起PSK_AS获取请求,安全中间件利用与eBSF共享的根密钥Ks为客户端生成PSK_AS,并返回给客户端。
客户端与平台间的身份认证采用基于Token的认证传递机制实现。Token是一个数据结构,如图3所示,其中包含了用户的身份信息和完整性保护信息。初始的Token是在中间件向HDC身份认证成功后,由HDC生成并发送给中间件的。之后,当客户端需要向业务平台认证身份时,可向中间件请求Token。客户端在业务请求中将Token发送到业务平台后,业务平台向HDC验证Token的真实性,若Token有效,则业务平台获得了用户身份,完成对用户的身份认证。
图3 Token数据结构
UserInfo:用户的身份信息由两部分组成:设备身份和用户身份。区分终端身份和用户身份的目的是,当多个用户在同一设备上使用时,如果不同用户身份可以接入的业务类型不同,则此时同时需要设备身份和用户身份来进行标识。
Type:标识Token类型,可包含以下类型:动态Token、静态Token。
SQN:ASF产生的32字节随机数,用于防止重放攻击,并用于终端生成动态Token使用。
B-TID(bootstrapping transaction identifier):用于标识对该Token进行完整性和机密性保护的密钥标识。
Exp Time:该Token的有效期,采用UTC时间。
Sec Level:该Token的安全级别,包含认证机制安全级别和密钥安全级别两部分信息。
ASF FQDN:用于标识构造该Token的ASF域名。
Extension:ASF在Token中添加的辅助信息,其字段长度可变。
MAC:ASF对该Token计算的完整性校验码,MAC=HMAC(HID,SQN,B-TID,ExpTime,Sec Level,Extension)。
ASF在生成Token后,应安全保存该Token中除MAC以外的各字段信息至Token过期。Token过期后,ASF将删除其上存储的该Token全部字段信息。待有新终端重新发起用户认证初始化请求后,ASF将生成新的Token,并保存该Token的字段信息。
业务平台收到终端带有Token的请求后,将向Token中ASF FQDN标识的ASF请求验证Token的有效性。ASF根据Token中的B-TID字段查询在ASF上保存的Token信息和生成该Token时使用的密钥。并利用上述查询结果检查Token的完整性、有效期和Token中各字段与ASF保存信息的一致性。若验证Token无效,则将验证失败的结果返回给AS。当Token的完整性、有效期和一致性检验通过后,ASF向HIM查询该Token所对应的用户信息。最终ASF将Token验证结果和Token所对应的用户信息返回给AS。
客户端与应用服务器(包括AS和ASF)之间是采用HTTP(HyperText Transfer Protocol)协议来通信的,通过HTTP Digest方式[4]进行注册,完成用户客户端和网络应用服务器间的双向认证。认证过程有两次请求-响应交互:第一次为摘要质询,服务器返回WWW-Authenticate消息头,请求客户端做消息摘要;第二次交互中,客户端在HTTP请求里带有Authorization消息头,包含摘要信息和其他参数,服务器收到后做客户端鉴权,在鉴权成功后送回响应,并带有Authentication-Info消息头。客户端根据该消息头中的参数进行服务器鉴权。具体流程见图4。
图4 客户端注册流程
应用服务器与eBSF之间是采用Diameter协议[5]来通信的。应用服务器与eBSF之间的通信目的是获取公共密钥及其有效期。Diameter协议是IETF(Internet Engineering Task Force)开发的新一代AAA(Authentication、Authorization、Accounting)协议,作为新一代的AAA技术的基础,Diameter协议在故障恢复、安全传输、数据加密、代理支持、能力协商等方面都有着显著的优势[6]。
Diameter协议用在实现时会用到自举请求信息BIR(BootstrappingInfo-Request message)和自举应答请求BIA(BootstrappingInfo-Answer message)这两个消息,主要会携带一些安全参数。BIR消息会携带B-TID、应用服务器ID等,BIA会携带共享密钥、密钥有效期等[7]。
家庭数据业务中心的体系流程如图5所示。终端开机或客户端调用触发安全中间件检查本地是否有有效Ks,若无则向eBSF发起eGBA初始化过程。
(1)终端向eBSF发送Bootstrapping_Registration.REQ请求,携带终端相关信息。
(2)eBSF返回终端Bootstrapping_Registration.RES响应,携带认证信息。
(3)终端向eBSF发送Bootstrapping_Authorization.REQ请求,携带鉴权信息。
图5 业务流程
(4)eBSF向终端发送Bootstrapping_Authorization.RES响应,携带鉴权成功信息。
家庭终端设备利用与eBSF进行eGBA后生成的根密钥Ks派生出终端与ASF密钥PSK_ASF,并基于PSK_ASF与ASF进行HTTP Digest认证。ASF向eBSF设备请求ASF密钥PSK_ASF,完成对家庭终端设备的认证。
(5)终端中间件向ASF发起用户认证初始化挑战请求。
(6)ASF向中间件返回用户认证初始化挑战响应,携带认证信息。
(7)终端中间件向ASF发送用户认证初始化请求,携带认证鉴权信息。
(8)ASF对终端鉴权成功后,向eBSF发送BIR请求。
(9)eBSF给ASF返回BIA响应,携带终端与eBSF的共享密钥及有效期等信息。
(10)ASF把信息同步给HIM。
(11)HIM给ASF返回同步信息响应。
(12)ASF给终端返回鉴权成功消息及Token。
用户访问业务认证过程。
(13)终端访问业务一时,向业务平台AS1发送业务请求,携带Token或携带PSK_AS公共密钥。
(14)AS1向ASF发送Token验证请求。
(15)ASF给AS1返回Token验证响应。
(16)业务平台AS1若没有PSK_AS密钥,则向eBSF请求密钥。
(17)eBSF向AS1返回PSK_AS密钥。
(18)AS根据Token的验证情况向终端返回业务响应。
(19)同样的,终端向业务平台AS2发送业务请求时,携带Token。
(20)业务平台AS2向ASF发送Token验证请求。
(21)ASF向业务平台AS2发送Token验证响应。
(22)业务平台AS2根据Token的验证情况向终端返回业务响应。
Token已过有效期,需要重新获取。
(23)当Token过了有效期时,向ASF进行初始化认证,获取Token。
在数据业务中,客户端与应用服务器认证鉴权的方式多种多样。目前许多业务采取HTTP Digest进行认证鉴权,采用的共享密钥的方式一般都比较简单,比如两方提前约定好密钥的构造形式、鉴权前加入密钥共享及确认的流程等方式,这样造成了安全级别及通用度的降低。
[1] 王文强,崔媛媛. 移动增值业务安全框架研究[J]. 电信网技术,2010,(2):28-34.
[2] 任亚梅,李炜. 基于GBA的认证鉴权流程[J]. 计算机系统应用,2011,(2):137-140,210.
[3] 3GPP, TS 33.220 GAA; Generic Bootstrapping Architecture(Release8)[S].3GPP, 2010,6月:50-65.
[4] RFC2617, IETF HTTP Authentication: Basic and Digest Access Authentication[S].June1999:5-30.
[5] RFC3588, IETF AAA Working Group, Diameter Base Protocol[S].September 2003:22-80.
[6] 徐鹏,廖建新,朱晓民,武家春. 移动IP与SIP集成应用中优化的AAA过程[J]. 通信学报,2006,27(1):1-7.
[7] 3GPP, TS 29.109 GAA; Zh and Zn Interfaces Based on the Diameter Protocol; Stage 3(Release 8)[S]. 2010,3月:11-26.