新方法增强SIP协议的安全性

时间:2022-06-15 01:00:32

新方法增强SIP协议的安全性

SIP在VoIP中是负责会话建立的协议,在没有外加安全机制的前提下并不能保证用户通话的机密性和完整性。本文给出了一种基于AES对称加密算法的安全认证机制,确保SIP报文的机密性和完整性。

SIP协议

面临安全威胁

最常见的SIP攻击都是指向SIP协议本身的一些安全漏洞。比如,SIP采用的明码原文传输机制决定了它的信息总是以未加密的明码原文形式在网络上传输,因此容易被识别和篡改。 归纳起来,针对SIP的主要攻击有如下几项。

1.中间人攻击

如果没有外加安全机制,SIP协议无法防御以ARP欺骗或其他技术实施的中间人攻击。一旦中间人攻击形成,通话双方的所有RTP包都将先被传输至攻击者的电脑上。从某种意义上说,攻击者的电脑成为了两个用户之间的一个看不见的路由器。此外,因为所有的RTP包都是以明码原文形式传输的,攻击者可以轻易地重组这些包并获得.wmv可执行文件。一些常见的软件,如Wireshark可以帮助重组RTP包。

2.密码获取攻击

未经授权的第三方可以通过截取REGISTER报文中的信息破解用户密码。

在实施了中间人攻击后,攻击者将有能力截取明码报文。而后,未经授权的第三方可以根据报文中的信息执行字典式攻击,破解该报文所代表的用户密码。

在SIP协议中,用户密码是以哈希值的形式在网络上传输的,而哈希算法从理论上确保了不能由密文推出原文。尽管如此,攻击者可以将他能预测到的各种可能的密码写入字典中,并逐个计算它们的哈希值。一旦攻击者计算出了与报文中相同的哈希值,用户密码也就被破解了。此外,与穷举式攻击不同,字典式攻击更难被察觉。这是因为该攻击可以离线操作,因此不受SIP服务器的安全设置的约束,例如“用户最多只能尝试输入3次密码”等。

然而,我们注意到,字典式攻击在本质上是不稳定的。这是因为该攻击的成功与否完全取决于用户的密码是否被提前输入在攻击者的字典里。换句话说,如果用户使用的是相对简单的密码,例如12345,该密码的安全级别将非常低; 然而,假如用户使用了由大小写字母以及各种数字组成的复杂密码,该密码的安全级别将会显著提高,因为攻击者很难在其字典中预测到这种密码组合。虽然如此,在VoIP通信中将所有的安全压力都只放在用户的密码上并不是个明智的选择。大多数用户,即便意识到简单密码的缺陷,出于方便记忆的考虑依然倾向于使用简单密码,例如他们的名字、房屋号码、手机号码、车牌照或者生日,而在离线字典式攻击下,这些简单密码的易受攻击性将会被进一步扩大。

3.拒绝服务攻击(DoS)

攻击者可以通过大量发送包含伪造IP地址的报文来实现拒绝服务攻击。通常来说,攻击者会在报文的From包头中添加一个伪造的地址以伪装自己,并将受害者的IP地址添加在To包头中。当SIP实体接受到该报文后,UA会自动回复该报文而不进行询问。这是因为SIP协议中将UA设定为不对会话INVITE进行验证,而只是产生一些对应的变量,如tag和call-ID值,来唯一地标识该对话。因此,攻击者可以编写一个很简单的程序生成含有随机信息的INVITE报文。而随着大量INVITE报文的生成和发送,受害UA将会在短时间内收到大量未接来电,从而导致该UA丧失与其他合法用户通信的能力。

4.会话终止攻击

一旦会话在用户双方三次握手建立后,任何通信一方都可以终止会话。在此条件下,攻击者可以监控用户双方间的通话,截取其传输的报文,提取报文中的关键会话变量,如branch、tag以及call-ID值。根据这些变量,攻击者可以产生一个伪造的BYE报文发送给通话的任意一方,造成该通话在未经授权的情况下即被终止。

SIP协议的安全机制

本质上,SIP协议应用的两种安全机制分别为逐跳机制(hop-by-hop)和端对端机制(end-to-end)。HTTP摘要认证和S/MIME就是被应用于SIP的两种常见的端对端安全机制。

对HTTP摘要认证而言,用户将会被SIP服务器询问其储存于数据库中的密码,而作为应答,用户密码的摘要将会被传输于底层协议中。S/MIME则采用了非对称加密技术,依靠认证中心(CA)签发的证书和个体产生的签名,为UA和SIP服务器提供认证功能; 同时,S/MIME也采用对称加密技术为SIP的载荷SDP提供机密性保证。但是,仍然有一些SIP报文的包头不能被S/MIME所加密,这是因为SIP协议规定SIP报文中的某些包头必须被设定为明码原文并可以被中间实体所修改,例如Via包头。

当分析上述两种端对端安全机制的优点和缺陷时,我们注意到:

执行和部署HTTP认证机制很容易,但是它使用的算法相对简单也导致了其只能提供相对较低的安全级别。尽管MD5哈希算法可以确保攻击者不能仅仅根据哈希值反推出原文; 但是,由于原文包含的除用户密码以外的所有变量在SIP报文中都是以明文方式传输,一旦大量的“变量―哈希值”对(pairs)被截获,用户密码的安全性将会在离线字典式攻击下变得十分脆弱。

S/MIME可以保证SIP报文的机密性、完整性、认证性以及不可否认性。但是S/MIME使用的隧道模式也导致了大量的数据传输以及更多的带宽需求,因此实施起来更为复杂。此外,在当今盛行的IPv4环境下,S/MIME最大的制约条件就是公共密钥基础架构(PKI)的缺乏。而一旦使用另一种自签凭证,Diffie-Hellman密钥交换技术并不能阻止可能的中间人攻击,这又将引发新的安全问题。

对于逐跳安全机制来说,IPSec和TLS是两种最常见的机制。

在单向的TLS认证中,只有用户可以认证SIP服务器,因为服务器持有CA签发的证书,但反之则不然。与S/MIME类似,此协议同样使用非对称加密技术并因此依赖于IPv4环境下缺少的PKI。此外,TLS认证机制只能被部署在相邻的SIP实体间。因此,当一个SIP实体(尤其是服务器)需要维持大量的与其他不同SIP实体相同步的TLS连接时,该实体很可能会变得超负荷。

IPSec协议运行于网络层,它可以提供对整个原始报文的封装并为其添加新的包头。这可以保证即便是那些特殊的SIP包头(即那些必须对中间实体可见的包头)也不会对未经授权的第三方可见。但是,IPSec在IPv4中只是一个非强制性的选择,这也导致了其较低的部署和执行率。

简而言之,当逐跳安全机制和端对端安全机制共同执行时,SIP协议可以得到充足的安全支持。但遗憾的是,部署这些安全机制都存在着或多或少的局限性。其中之一就是在当前网络环境中缺乏PKI,而这又恰恰是实施非对称加密技术的必要条件之一。

增强安全性的建议

作者提出了一种可能的解决方法: 允许UA采用对称密钥加密算法来询问sip服务器。

为了保证通信的认证和机密性,在用户和服务器之间实施作者提出的安全机制的具体步骤为以下几个方面。

1.加密及认证

(1) 用户Alice首先生成一个nonce1值,并将该值、服务器uri以及username一起作为REGISTER #1报文的一部分发送给服务器。报文中其他包头均被设为anonymous。

(2)服务器在收到报文后,初始化一个对Alice的询问。服务器产生一个新的nonce2值(防止重放攻击)和一个会话密钥Ks,并用Ks加密nonce2和realm值。同时,服务器根据收到的username值从数据库中调用Alice的密码password,计算出哈希值Kh=HMAC[password, (nonce1, username, uri)],并用该哈希值加密会话密钥Ks,以此发起对Alice的挑战。

上一篇:立思辰创新政府办公外包服务 下一篇:CCD开启数码视讯传奇