NGN访问控制安全的切入点
——Diameter协议及其在SIP网络环境中的应用
谢玮
一、引言
Diameter系列协议是新一代的AAA技术,由于其强大的可扩展性和安全保证,正在得到越来越多的关注。在ITU,3GPP和3GPP2等国际标准组织中,都已经正式将DIAM-ETER协议作为NGN,WCDMA和cdma2000等未来通信网络的首选AAA协议。对于用户的访问控制是下一代网络(NGN)网络安全的重要组成部分,而本文讨论的Diameter协议在SIP环境中的应用则是这个问题的重要切入点。
二、Diameter协议的设计目的
RADIUS和TACACS+一直被广泛应用于很多的ISP和企业网。实际上,这两个协议在设计之初,都是应用于仅支持若干要求简单基于服务器认证的终端用户的小型网络设备的。目前接入提供商都在为成千上万的使用不同接入技术(包括无线、DSL、移动IP、以及以太网等)的并发终端用户提供AAA服务。AAA服务的安全、可升级性对于RADIUS和TACACS+来说也都不能十分令人满意。
现在的AAA协议已经无法胜任目前以及今后IP网络,尤其是NGN时代对AAA服务日益增长的要求。因此IETF着手开发了下一代AAA协议—Diameter协议,以期解决现在AAA服务中存在的一些问题。
Diameter的设计目的是创建一个能够充分满足目前乃至今后IP网络(包括NGN以及3G等等)用户访问控制要求的AAA协议。其设计要求的具体内容包括:
(1)具有良好的网络适应性和可扩展性;
(2)统一且良好的失败控制和检测机制;
(3)完整的传送层安全保证(包括域内和域间);
(4)数据传输可靠性保证机制;
(5)支持各种类型的代理,包括Proxy代理、重定向代理以及中继代理等:
(6)支持服务器发起的消息,即允许服务器主动发送消息给其客户端;
(7)与现有网络协议的良好可互操作性;
(8)支持节点间的能力协商机制:
(9)支持动态对等端发现和配置机制;
(10)支持安全和可扩展的漫游。
三、Diameter协议的特性与优势
Diameter协议有很多非常好的特性,使其在实际网络中应用时,相对于以前的AAA协议具有很大的优势。
(1)为了保证新一代的AAA协议能够很长一段时期内都能够满足各种不同网络环境的需求.Diameter协议采用了一种新的协议定义模式:首先推出一个轻量的、易于实施的基础协议,旨在提供一个AAA框架,其中包括实现AAA功能最基本的要求。并针对不同的网络情况和业务需求,分别制定相应的应用扩展。
(2)新一代的AAA协议为了能够在今后较长时期内更好的满足IP网络建设和业务几乎无法预期的发展速度,通过各种技术手段大大提高了Diameter的网络可扩展性和业务可扩展性。这其中包括扩展了请求标识长度,Diameter协议称为“端到端ID字段”,长度为4字节232(RADIUS:1字节255),这样可以大大提高支持的同时发起未决请求数量;属性值对(AVP)的数量空间从RADIUS的255个扩展为232个;Diameter还支持支持商家定义的命令,这是RADIUS所不具备的。
为了得到更可靠的传输保证,Diameter协议必须能够在可以提供重传策略的传输层上运行,以使其能够在对等端不可达时,有效地转换另一个主机。与RADIUS相反,Diameter协议要求代理链上的每一个节点都应在“传输层”对请求或响应进行确认。由于Diameter运行在提供可靠传输的SCTP上,代理链上的每个节点都有责任对没有确认的消息进行重传。而且SCTP协议还提供到服务器的流量控制。Diameter协议还有很多其它优秀特性:
(1)拥有良好的失败机制,支持失败替代(failover)和失败回溯(faiback):
(2)拥有快速检测到对端不可达的能力;
(3)拥有更好的包丢弃处理机制,Diameter协议要求对每个消息进行确认:
(4)支持服务器发起到客户的主动消息,这可以用于某些特殊计费业务(如预付费);
(5)可以保证数据体的完整性和机密性;
(6)支持端到端安全,支持TLS和IPSec;
(7)为每个会话进行认证/授权,以保证安全性;
(8)与RADIUS协议尽量兼容。
四、Diameter的框架结构
Diameter包含基础协议、传送协议、不同的应用扩展,如NASREQ和移动IP等。所有应用和服务共用的基本功能都在基础协议中实现,而应用特定的功能则会在不同的应用中实施。
Diameter基础协议旨在提供一个AAA框架,以用于各种应用。基础协议还定义了所有Diameter应用使用的,并且所有Diameter设备都必须支持的消息格式、传输、差错报告和安全服务。
图1是Diameter协议结构的示意图,图中的传输机制主要定义Diameter协议传输层的问题及解决方法,包括失败检测算法和状态机等,其它拥有各种不同功能的应用都必须支持基础协议。图中的SIP应用是Diameter协议应用在IP环境中的要求。
图1 Diameter协议框架结构
五、Diameter会话初始协议(SIP)应用概述
Diameter会话初始协议(SIP)应用是与会话初始协议(SIP)结合在一起使用的,在SIP服务器中提供Diameter客户端功能,SIP服务器必须能够请求Diameter服务器认证用户,授权SIP资源使用。 I
Diameter SIP应用扩展允许Diameter客户端向Diameter服务器为基于IP多媒体业务的初始会话协议(SIP)请求认证、授权信息。假定SIP服务器和Diameter客户端位于相同节点,SIP服务器能够接收、处理SIP请求消息和回答消息,分别基于为认证SIP请求消息和授权特定SIP业务的AAA体系结构。当SIP协议用于初始和终截多媒体会话或SIP协议用于非会话相关的应用时,Diameter SIP应用扩展提供Diameter规程,用于实现特定功能。
Diameter SIP应用扩展假定了一个通用体系结构,即归属域由一个或多个实现Diameter或SIP功能的节点构成。其中,至少有个这样的节点实现Diameter服务器功能。Diameter服务器有权使用用户数据库。特定用户的用户数据储在用户数据库中。网络中可以有多于一个的Diameter服务器,所有的Diameter服务器均有权使用用户数据库。
SIP网络环境中,归属域有多种配置。在其中一种配置情况下,SIP服务器被分配给用户,用于触发和执行业务。用户在网络中进行注册时动态分配SIP服务器。在这种配置情况下,要求有一个位于网络边缘的SIP服务器,支持对SIP请求和回答消息的路由算法。SIP服务器节点实现Diameter客户端功能。在另一种配置情况下,SIP输出代理被配置为SIP端点。在SIP输出代理节点中的输出Diameter客户端认证用户、为SIP请求消息要求授权并完成计费活动。
六、Diameter在SIP环境中应用的一般结构
图2是带有AAA构架的SIP环境结构简单示意图,该图仅仅是一个Diameter SIP应用的可能结构示例。图中SIP用户代理(UA)用来发起或终结SIP穿越一个或多个SIP服务器的SIP业务流;而两个SIP服务器都可以作为一个Diameter客户支持Diameter应用。
图2 Diameter在SIP环境中应用的一般结构
在图2中可以看到,SIP服务器1和SIP服务器2之间通过Diameter服务器相发送并接收不同的Diameter命令。这是由于图1中SIP服务器1位于网络的边缘,其主要的任务就是定位(寻址)SIP服务器2。服务器2并不位于网络边缘,它从Diameter服务器请求并接收认证和授权数据。Diameter SL(用户定位器)是用来定位包含该用户相关数据的Diameter服务器的。
七、Diameter在SIP环境中应用的简单流程示例
以一个SIP可管理网络域中Diameter服务器认证用户请求的简单流程举例。其中,网络大小中等,Diameter服务器负责保存用户记录并认证SIP请求。这里仅选择了一个SIP REGISTER请求作为示例,实际上SIP服务器可以请求认证任何其他的SIP请求。
从图3中可以看到,一个SIP用户代理客户端(UAC)发送了一个SIP REGISTER请求给自己的归属域(第1步)。SIP服务器1接收该SIP请求。我们假设该SIP服务器可以被定位,例如,它在该行政管理归属域的边缘。SIP服务器1中的Diameter客户端将通过发送一个Diameter用户授权请求(UAR)消息(第2步)与其自己的Diameter服务器联系,以决定是否允许该用户接受服务,如果可以,请求能够控制该用户的本地SIP服务器的地址。Diameter服务器以一个Diameter用户授权应答(UAA)消息应答(第3步),该消息将指明SIP服务器1可以使用的、适合的SIP服务器(SIP服务器2)列表或者一个或多个指向SIP服务器2的SIP URL。
SIP服务器1前转SIP REGISTER请求(第4步)给一个适合的SIP服务器(SIP服务器2)。SIP服务器2中的Diameter客户端通过发送一个Diameter多媒体认证请求(MAR)请求在Diameter服务器进行用户认证(第5步)。该请求同样也用于使Diameter服务器获得SIP或SIP服务器2的SIP URI列表,才能够准确的将同样用户的随后请求转给同一个SIP服务器2。Diameter服务器利用结果代码AVP值为DIAMETER_MUL TI_ROUND_AUTH的Diameter多媒体认证应答(MAA)消息(第6步)响应。该Diameter服务器还包括一个“征询”,SIP服务器2在SIP 401(未被授权的)响应(第7步)中将该征询映射到WWW认证头中,该响应被发送回SIP服务器1,随后返回给SIP UAC(第8步)。
SIP服务器1将接收到一个包含该用户认证信息(credentials)的SIP REGISTER请求(第9步)。需要注意的是,SIP服务器1不需要保留状态,并且该SIP请求也不一定会被传送到同一个SIP服务器1,在冗余配置下,很有可能有一组SIP服务器1。SIP服务器1中的Diameter客户端将通过发送一个Diameter UAR消息来与一个Diameter服务器联系(第10步),以判断哪个SIP服务器是分配给该用户的。该Diameter服务器将在一个Diameter UAA消息中发送该SIP服务器2的SIP或SIP URI(第11步)。
SIP服务器1则前转该SIP REGISTER请求给SIP服务器2(第12步)。SIP服务器2从该SIP REGISTER请求中提取认证信息。SIP服务器2中的Diameter客户端将这些认证信息放在一个Diameter MAR消息中,并将该消息发送给Diameter服务器(第13步)。此时Diameter服务器才能够认证该用户,认证成功后,将返回一个Diameter MAA消息(第14步),消息中的AVP结果码置为值DIAMETER_SUCCESS。该Diameter MAA消息还包括该用户的定制信息,以供SIP服务器2为用户提供服务使用。
SIP服务器2随后生成一个SIP 200(OK)响应(第15步),该响应被转发给SIP服务器1,并最终返回给SIP UAC(第16步)。
图3 在Diameter服务器中执行的认证过程