SIP协议的安全性机制研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SIP协议的安全性机制研究
赵鹏通信一团技术室
摘要网络环境中的SIP协议需要安全机制保证信息传输的安全性。本文介绍了SIP协议在客户端和服务器段运用的安全性机制,包括客户端的主叫保密、认证字符串、处理可疑响应
以及服务器端的注册服务器、代理服务器、Internet服务器采取的安全机制。
关键词SIP协议安全机制服务器认证
1 引言
软交换是一种使用IP网络作为承载网络的技术,这使得软交换网络在发展过程中需要面对和解决IP技术本身存在的许多问题以及软交换技术作为一个新技术而存在的问题。软交换网络的通信协议和媒体信息主要采用IP数据包的形式进行传送,而且网络中接入的节点比较多,用户的接入方式和接入地点都非常灵活,所以软交换网络也就面临着比较突出的安全问题。
作为实现软交换技术的基本协议之一,SIP协议通过三类基本方式实现协议的安全机制。首先,SIP协议中定义了形式为“User:Password”的基本认证信息。它由本地用户提供,向远端用户或服务器查询是否具有访问该远端用户或服务器的权限,并通过被查询用户或服务器的响应信息得知查询结果。
其次,SIP协议在SIP消息中通过定义Call-ID、Encryption、Authentication、Proxy-Authentication、Priority-Authentication等消息头字段,实现了对呼叫序号唯一性、信息加密、服务器和用户访问权限、用户优先权限等方面的控制。
最后,SIP呼叫中的消息发送和接收过程按照加密、数字签名、检验数字签名、解密的顺序进行。SIP呼叫对用户使用的数字签名形式不作规定,但用户一旦选定某次呼叫的数字签名形式和消息加密方式,该呼叫中所有消息及消息中所有字段都遵从选定的加密规则。SIP 点对点呼叫使用端到端的数字签名和消息加密方式,而由于SIP呼叫实现多方通信时仍然使用端到端建立呼叫的方式,所以端到端加密方式仍能满足呼叫中所需的共享信息加密。
基于上述三种基本方式,SIP协议在服务器端和客户端实现了安全性机制。通过对SIP协议的跟踪和研究,本文将从呼叫信息保密、可疑响应处理、认证字符串和认证机制等方面讨论基于SIP协议的软交换网络中客户端和服务器的安全性机制的实现问题。
2 客户端的安全性机制
在保护智能客户端时需要考虑的安全性保证问题包括身份验证、授权、数据验证、保护敏感数据、审核和日志记录、异常管理等。通过解决上述安全性问题,可以保证用户身份和权限的正确、确保信息的完整性、保护应用程序不受恶意输入的威胁,并随时跟踪网络环境配置的变化。
为了确保呼叫安全,排除接收到的干扰性和破坏性消息,SIP用户采取了一系列机制确保手法信息的安全性和可靠性。在发送请求时,SIP用户通过主叫保密机制保护主叫用户的本地URI信息;在收到呼叫请求时,SIP用户通过分析访问者在请求消息中提供的认证字符串,确认访问者的身份和权限;在收到响应消息时,SIP用户对不可靠的响应进行进一步确认和处理。
(1)主叫保密机制
可能造成用户信息泄露的原因有以下三个:首先,主叫用户在各类呼叫请求中的From 字段中提供的用户本地URI信息;其次,呼叫过程中被转发的SIP消息将在其Via字段中记录该消息经过的每一跳地址;最后,已建立的呼叫可能被截获,使后续消息传送到错误地址,泄露主叫的相关信息。
针对上述可能泄露主叫用户信息的渠道,SIP协议使用了下列的主叫保密机制,防止通过未经认证的渠道获得主叫用户信息。
SIP协议定义了Hide字段以限制其它用户对于主叫用户本地URI信息和Via的获取权限。主叫用户可以通过设置请求信息中的Hide字段,对收到请求的各类服务器或用户代理隐藏本地URI和Via字段中的路径内容。
主叫用户在发起呼叫时将在请求消息中加入Call-ID字段。Call-ID字段的值是由呼叫发起时间的长整型值和一个大随机数为要素生成的,降低了通过伪造Call-ID截获呼叫的可能。
此外,主叫用户还可以在请求消息定义Encryption字段,表示用户对本次呼叫内容进行了端到端的加密处理,加密算法由认证字符串中的Algorithm值给出。
(2)认证字符串
用户通过请求消息中的Authentication、Proxy-Authenticate和WWW-Authenticate字段向UAS、注册服务器、重定向服务器、代理服务器、Internet服务器等提供鉴定自身身份的认证字符串。
认证字符串是区分远端用户在本地所有权限的重要机制,使得本地SIP用户可根据需要对每个远端用户进行不同的权限设定。在本章SIP类定义中介绍了认证字符串(authstr)中包含的参数。服务器通过用户提供的认证字符串参数及其取值,能够判断用户的身份(username)、所属区域(realm)、时间权限(nonce)、透明传输(opaque)、消息加密算法(algorithm)等性质,并根据该用户性质做出相应的答复。
认证字符串中各参数的含义可以简单描述如下:
username:用户名参数。它是用户在SIP系统中的标识,是SIP URI的一部分;
realm:区域信息。它描述用户所属的网络区域或权限区域。realm信息必须包含进行认证的用户的主机名,此外也可能包含该用户所属的权限等级,如该用户属于具有呼出权限的用户群。
nonce:时间权限参数。它是由服务器定义的字符串,服务器在每次发送401响应时都会生成唯一的base64或十六进制数据字符串nonce。用户收到该响应后将获得的nonce参数加入认证字符串。
nonce参数一般是根据呼叫的时间戳值生成的,这类nonce的主要作用是防止呼叫建立阶段中,以重复发送同一请求为手段的破坏性攻击。由于呼叫建立时间只持续几秒钟,重复性攻击的破坏作用不大,所以服务器只在呼叫建立期间使用nonce参数,呼叫建立之后不保留nonce的值。若需要通过nonce进一步防止呼叫盗用,则需选取更不易仿造的序列作为nonce 的内容,并且要求服务器在整个呼叫过程中保留nonce的值,以鉴别呼叫相关的请求和响应的真伪。
opaque:透明传输参数,标识用户是否使用透明传输机制,即是否隐藏呼叫中除被叫用户之外的所有消息转发地址。
algorithm:加密算法参数,标明消息采取的加密算法。
(3)处理可疑响应
破坏者可能对呼叫进行监听,并在呼叫过程中插入未经认证的响应,甚至伪造与某次呼叫加密方式相同的响应,对呼叫进行终止、重定向或其它干扰性操作。由于服务器必须转发