一种基于能力的轻量级SIP安全机制研究
2011-03-14陆万顺符云清
陆万顺 符云清
重庆大学计算机学院 重庆 400044
0 引言
近些年来,SIP协议作为VoIP核心控制协议已得到了越来越多的推广与应用。SIP协议是伴随着互联网的发展而诞生和发展的,它广泛借鉴了和继承了其他各种流行的网络协议,例如HTTP、SMTP等,因而不可避免的会面临各种安全威胁。
网络安全问题一直以来都是网络应用必须关注的问题,健康安全的网络环境对于我们的生活和工作是十分必要的。作为下一代互联网核心控制功能的SIP协议,安全显得尤为重要。现有SIP安全机制主要借鉴其他成熟网络应用协议的安全机制,并取得了一定的安全效果。但是随着网络不断的发展和VoIP业务的进一步创新以及推广普及,现有SIP安全机问题将会面临更为严峻的考验。
1 SIP安全问题概述
会话初始化协议(Session Initial Protocol,SIP)是一个应用层的控制协议,用来建立、修改和终止多媒体会话。SIP协议沿用了成熟的HTTP以及SMTP等现有应用协议,继承了他们简单易用等特性。而SIP只单纯地继承了这些协议的结构,而没有特别针对其安全问题进行本质性、创新性地改造。也正是这个原因,SIP不可避免地会遇到以下安全问题:
(1)由于SIP继承了HTTP以及SMTP等协议的结构,对于SIP协议,也将面临网络重放攻击、网络窃听、网络篡改、网络欺骗等常见的网络问题。
(2)由于SIP协议自身不成熟性和脆弱性以及SIP协议的应用特点,SIP也会遭受针对SIP应用的安全威胁,如冒充注册服务器、会话参数被恶意篡改、注册劫持攻击等。
(3)由于下一代互联网高度开放性和异构性,SIP也将面临很多新型安全威胁,例如由于恶意网络行为无法安全区分使得攻击者有机会恶意攻击SIP服务器,例如模仿正常操作注册服务器的SIP消息,插入的恶意SQL语句,恶意修改或者删除注册用户信息。
(4)拒绝服务/分布式拒绝服务是现有网络一个棘手问题。对于SIP协议,此类安全威胁危害更大,形式更为特别,除了常见的泛洪攻击,还包括了恶意发送终止、取消会话请求消息导致的正常会话建立和进行被拒绝等方式。
SIP网络安全就是要保证在合法的用户终端之间正常的建立会话连接,完整机密地进行多媒体会话参数协商;安全地保持和修改会话过程的顺利完成;安全有效地完成结束正常的通话过程。同时,由于SIP采用预先注册机制,保存用户URI作为用于使用惟一标识以实现SIP相应功能,SIP安全还包括注册过程的安全有效地实现。
图1 SIP消息过程传递示意图
SIP安全就是要保证SIP消息在顺利经过图中A、B、C、D四部分时的完整性、可用性和可信性。SIP安全相关研究者就此提出来很多解决方案,总结起来主要是安全认证和安全加密两种方式:在端与端之间实现安全认证,保证端点合法性和有效性;在消息传递过程中采用安全加密,保证 SIP消息传输过程中的安全性(图1)。
安全认证:认证主要是验证SIP网络UAC和UAS的合法性和有效性,常见认证方式有HTTP摘要认证和基于身份认证算法的安全认证等。
(1)HTTP摘要认证:基本的HTTP摘要认证是基于在HTTP报文头中用户名和密码等相关参数进行验证的原理,服务器对UAC进行单向认证,这种方式实现简单,但是脆弱性较高,验证参数易于被窃取,可能会遭受重放攻击等威胁,而且没有实现UAC对服务器的验证,面临冒充服务器的安全隐患;为此,相关研究者在此基础上进行了改进,设计出了双向的HTTP摘要认证等改进措施;但是改进后认证存在代价较高、效率较低的缺点。
(2)基于身份认证的安全认证:该认证方式是基于用户ID(SIP网络中即为用户注册的 URI)参与密钥协商进行验证的方式,是目前较为先进的安全验证方式,可以很好的提高安全效果。文献[3]介绍了几种类似的认证方式,并针对实现代价和效率上进行了改进,提出了一种相对轻量级别的认证方式,但是无法避免攻击者利用合法用户作为傀儡发起的DDoS安全威胁,认证方式缺乏一定的灵活性。
安全加密:安全加密主要是为了保证SIP消息能安全地在SIP网络链路上传输,最终安全完整的到达目的终端。常见加密方式有网络层IPSec加密、传输层TLS加密和应用层S/MIME加密。
(1)IPSec加密:通过在网络层相互信任的终端之间建立对等虚拟专用通道传送数据。但对于 SIP,此机制实现代价较高。另外,SIP是以URI作为用户惟一标识,而不是IP地址(SIP用户由于其快捷的移动性,IP地址是时刻动态变化的),同时IPSecAH不能穿越NAT,故只能使用空加密的ESP来替代AH,而SIP多采用UDP作为传输协议,且ESP-UDP极易遭受泛洪攻击,因此应用IPSec进行SIP安全加密不太现实。
(2)TLS加密:TLS结合SIPS URI使用,在传输层通过证书验证协商对SIP消息安全加密。但是它需要TCP作为传输层协议,而现有SIP实现大部分采用UDP实现快速连接,故TLS加密存在一定的应用局限性。
(3)S/MIME加密:将SIP消息体加密体进行传输,但是SIP消息头对中间转发人是可见的,可能会被攻击者截获并篡改消息头域内容,且S/MIME加密是基于PKI支持的,证书安全有效管理也是相当困难的。
针对SIP拒绝服务攻击,现有文献多是采用检测过滤的方式尽量的缓解DoS造成的破坏。对于DoS/DDoS,目前还没有很好的根除的方案,应尽早的发现和控制,减少其影响范围,同时检测策略应尽量轻量、低开销、覆盖全面,否则仍会给攻击者提供可趁之机。
现存SIP安全机制虽在一定程度上缓解了SIP面临的安全威胁,但较为被动,且存在一定局限性并缺乏一定的灵活性,而且都不能全面地解决SIP所面临的安全问题。本文将根据现有成熟先进的安全解决方案进行研究改造,找出一种轻量、高效、灵活的SIP安全机制。
2 一种基于能力的SIP安全机制
文献[3]提出了一种轻量级的认证协商机制,该机制基于DH算法,采用用户密码以及随机数计算协商密钥的方式,具体实施过程如图2。
图2 一种轻量安全认证和密钥协商机制示意图
其中重要的参数计算描述如下:
(1)用户代理UA(Alice)取随机数r,用共享的用户密码和H()hash函数,计算gH(pwd)mod p 和grmod p得出H(pwd)和 gr,当进入安全验证,UA选择随机数 NA,计算出H(pwd)+NA+r,与gr作为DH公钥信息装入请求消息传给服务器。
(2)服务器接收到H(pwd)+NA+r后,利用保存的共享用户密码计算取随机数NS计算gNSmod p,作为DH公钥信息装入401/407应答消息反馈给UA(Alice)进行挑战认证。
(3)UA接收到挑战应答后,计算主钥 MK=(gNS)NAmod p,然后得出认证密钥AK= H(MK,“AuthenticationKey”),加密密钥 EK= H(MK,“EncryptionKey”),一致密钥 IK= H(MK,“IntegrityKey”)。UA利用 AK和用户密码计算并放入请求消息发送给服务器端。
(4)服务器接收到请求消息后采用同样的方式得出AK、IK和EK,然后利用AK和保存的共享用户密码对用户进行安全认证。验证成功后,计算 responseS1= H(AK||gH(pwd),nonce1|| nonce2|| realm ||gNS||gNA),将此信息载入200OK响应UA。
(5)UA被认证通过后,UA和服务器利用新的随机数nonce2、nonce3计算 responseA2= H(AK|| gH(pwd),nonce2|| realm||username ||gNS||gNA)和 responseS2= H(AK||gH(pwd),,并通过EK和IK共同保证随后的正式请求消息的安全传递。当下一次的安全关联时,UA将重新选择随机数NA'来进行重新进行密钥协商。
以上方案是基于用户密码不会被窃取的假设条件下保证密钥协商的安全,故存在一定安全漏洞;另外这种方案对于攻击者利用分布式傀儡合法终端进行重放攻击却是无法进行安全保障的。因而我们在此基础上加入 OTP(一次口令)机制共同完成安全认证协商。在步骤 1中由服务器端发起OTP质疑,在步骤2中,服务器利用哈希安全算法对UA传来的OTP序列数进行验证,验证合格后,再继续往下进行。
文献[1]提出一种基于“能力”的TVA(Traffic Validation Architecture)模式来缓解DoS对IP互联网络造成的危害。文中指出,任何可以作为网络筛选数据包原则的信息即为能力。路由器利用能力标记将到来的消息按照一定规则进行排队,同时设置队列上限,然后按照此队列进行数据包选择,缓和非法数据包耗尽网络资源的风险。具体如图3所示。
图3 基于能力参数的消息队列
本文引入上述思想,在每个SIP网络域设置边界代理服务器,负责监控和过滤进入本网络域的SIP消息。边界代理服务器要求具备较高的业务处理能力和安全级别,且是有状态的代理服务器。边界代理服务器用一组安全分析策略对到来SIP消息进行安全分析,我们把这组分析策略定义为“能力”,按照能力参数对SIP消息进行排队。恶意攻击消息直接拒绝,可疑、不规范SIP消息放在队列后段,信任级别较好的优先放入队列前段。
由于SIP消息结构简单,不关心任何多媒体会话信息,因而我们的能力参数主要来源于SIP消息头域信息。我们将SIP消息的可用性、保密性、完整性、真实性、可审计性、私密性、抗毁性和可预测性等方作为能力标记的参考信息。例如SIP头域格式是否规范;头域字段值是否合格;SIP消息来源是否合法(边界代理服务器预先保存一组合法用户URI)。
边界代理服务器根据能力参数对SIP消息进行处理后,要求加入能力标记标识此消息安全级别,交给域内中间代理服务器逐跳转发(中间代理服务器为无状态代理服务),下一网络域代理服务器将此能力标记作为其的能力参数进行 SIP消息处理。
3 安全分析
本文采用了一次口令 OTP改进文献[3]提出的安全认证和密钥协商机制,能灵活有效地解决终端冒充欺骗(包括用户代理、注册服务器)、网络篡改等常见SIP安全威胁;由于服务器端是根据安全级别较高的秘密通行短语和用户注册信息利用严格保密的安全哈希迭代算法计算一次口令,而且需要和上一次计算的口令进行对比认证的,所以在一定程度避免了用户密码被窃取的风险,同时也避免了攻击者控制合法傀儡用户进行重放攻击造成的DDoS造成的影响;在本文方案中,没有专门的密钥的管理和分发机制,利用用户共享信息动态计算获得必需的验证和加密密钥,减少了证书交换和证书安全管理的开销;同时UA进行一次幂计算便可得到系统主钥,极大的提高了验证和协商的效率。这种轻量、高效的安全机制减轻了关联终端必要的进程负担,进而减少了SIP终端遭受资源耗尽型DoS攻击的概率。
采用基于能力的SIP-TVA,一方面,设置边界代理服务器利用能力标记对不同SIP消息进行排队,同时过滤掉不合法来源消息,缓解了SIP遭受DoS/DDoS造成的危害;另外对于庞杂的网络行为可以进行智能监控,利用能力标记对传送的SIP消息进行整体监控和消息行为预测,尽早的将非法消息控制源端,减小攻击行为影响范围;我们只选择了边界代理服务器为有状态代理服务器,网络域内中间代理服务器全部采用无状态代理服务器,执行简单的消息转发功能,减少SIP消息传输的系统开销。我们采用这种关键部分重点防御,整体轻量的方式也是为了缓解SIP-DoS/DDoS的危害,尽快安全实现SIP功能。
4 结束语
SIP作为下一代互联网核心控制协议,安全问题不可忽视。SIP安全机制要本着高效性、低开销、灵活度高、解决问题全面和效果明显的原则去设计。另外,SIP的安全问题要从本质特征出发,在网络的关键部分增加安全认证、安全加密等必要的安全措施实现整体安全,但是不能扼杀了新业务的加入和运行,不能影响应用SIP网络正常运行。因而我们不能总是被动的或者极端的去考虑SIP安全问题,要保证其应用网络的完整、一致性。
[1]Yang X,Wetherall David, Anderson Thomas.A DoS limiting network architecture.Computer Communication Review.2005.
[2]J.Rosenberg,Schulzrinne,H., Camarillo,G., Johnston, A..Peterson, J, Sparks, R..Handley, M., and E.Schooler, SIP: Session Initiation Protocol.RFC 3261.June 2002.
[3]Jaeduck Choi, Souhwan Jung, Kwangyong Bae, Hokun Moon, A Lightweight Authentication and Hop-by-Hop Security Mechanism for SIP Network, International Conference on Advanced Technologies for Communications.2008.
[4]N.Haller,Bellcore,C.Metz,P.Nesser,M.Straw,A..Bellcore.A One-Time Password System.RFC2289.Feb 1998.
[5]J.Franks,P.Baker,J.Hostetler,S.Lawrence,P.Leach,A.Luotonen, L.Stewart,HTTP Authentication:Basic and Digest Access Authentication.RFC2617.IETF Network Working Group.June 99.
[6]J.Ring,K.Choo,E.Foo,M.Looi.A new authentication mechanism and key agreement protocol for SIP using Identity-based cryptography.Proc.AusCERT2006. May 2006.
[7]J.Arkko,V.Torvinen,G.Camarillo, A.Niemi, T.Haukka.Security Mechanism Agreement for the Session Initiation Protocol (SIP).RFC 3329.IETF.January 2003.