您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

SIP系列讲座-SIP安全-2

2017-11-07 14:23:34   作者:james.zhu   来源:Asterisk微信公众号   评论:0  点击:


  在前面的讲座中,我们讨论了SIP身份验证和签权问题,SIP加密的安全证书介绍。在本章节中,我们继续讨论关于SIP安全的其余几个话题,这些话题包括:SIP和RTP加密,TLS使用讨论,SRTP,TLS的压力测试结果分享,RFC几种标准之间的冲突。
  1、SIP和RTP加密需要关注两个方面的加密,一个方面是对SIP信令加密(SIP/TSL),包括对用户消息,SDP等文本消息加密,保证信令安全。另外一个加密就是对语音加密(SRTP),保证用户之间的语音流的安全。如果仅对SIP加密,不对RTP加密,则没有什么实际意义。
  2、在SIP加密中,SIP使用了TLS来实现加密,读者可以看到加密锁介于应用层和传输层的,早期的加密使用的是SSL,TLS慢慢替代了SSL。TLS使用的是服务器和终端密码共享机制来实现传输。
  这里,在使用TLS时需要有几个地方需要特别注意:
  • 系统支持TLS和SSL时,首先使用的应该是TLS安全机制,但是如果客户端要求使用SSL,则也可以使用SSL 2.0。在RFC7586的标准中不推荐这样的处理机制。
  • TSL两种处理机制的不同:对称和非对称处理方式。对称模式是双方共享一个密钥,处理速度比较快,占用资源比较少,操作简单,但是需要加密解密处理,另外,只能使用在已经创建的通信通道上,不同的密钥对不同的用户,不能对用户进行认证。
  非对称方式可以支持密钥的不同发送,更加安全,也容易集成。但是,处理速度比较慢,另外需要消耗更多系统资源。
  在上面我们已经提到了加密的各种优缺点,资源消耗是一个比较重要的话题。加密以后的系统性能可能会受影响。
  以上数据是使用OpenSIPS的早期版本对认证/非认证模式,加密和不加密,使用UDP/TCP的吞吐量做的测试。读者可以看到,通过不同的配置方法会导致完全不同的结果,而且测试结果相差很多。
  以上图例是OpenSIPS配置为一个outbound Proxy 环境下的吞吐量测试结果,读者可以看到,如果设置了TLS以后的差距。注意,此数据是介于OpenSIPS平台的早期版本做的测试,用户也调整了一些必要的参数来支持不同的TLS加密。目前OpenSIPS的性能和TSL版本都已经升级,服务器性能可能有所提升。关于如何进行测试,读者可以参考我们的链接资源,通过优化自己的平台来进一步提升TLS以后的性能。
  TLS可以对SIP信令进行加密处理,也包括SDP的加密,这样就完全保证了信令的安全。
  3、TSL可以支持端对端的加密,也可以支持通过跳转(Hop-by-Hop)的加密方式。端对端加密(End-to-End)则需要整个系统都使用TLS加密方式。
  端对端的TLS加密方式操作比较简单,一般部署在集成商或者简单的电话系统中,这取决于部署需求。但是,它存在一些问题,例如,Proxy不能读取SIP消息,甚至告警消息。另外,因为已经SIP已经加密,运营商或者服务提供商所提供的服务可能不能到得完整的支持。最后,如果是跨国的服务的话,端对端的SIP加密是不允许的。
  Hop By Hop加密方式是目前部署非常普遍的一种加密方式。从服务端角度来说,Hop By Hop的加密方式则相对比较好一点。如果遇到跨国的测试时,则可以取消加密,呼叫仍然可以正常工作。另外,Hop by Hop 的方式可以支持SIP修改一些SIP头参数,例如可以修改Record-Route 或Via 头域。
  选择什么样的方式都是有成本的。两种加密方式同样会导致不同的语音数据结果,例如,丢包情况,和时延。以下图例是两种方式的延迟测试结果,希望读者要注意:
  4、我们通过一个TLS对SIP加密的实例来说明整个TLS加密过程,大致流程和以前介绍的认证过程是基本相同的,这里仅介入了TLS的密钥交换:
  这里,用户需要注意,如果需要对SIP整个路径加密,需要使用sips访问服务器地址,当然这里的端口是5061而不是默认的5060端口。例如,格式为:
  sips:james@hiastar.com
  另外,用户的SIP数据也可以实现部分安全加密,可以使用sip:方式来访问服务器或者IPPBX,因为B2BUA或者用户的IPPBX已经创建了介于运营商和本地服务器之间的TLS连接。
  最后,在使用TLS时,如果使用sips访问服务器,那就说明用户使用TCP传输,而不是UDP测试。因为TLS要求使用TCP测试。很多时候,用户终端的传输方式没有做调整,也导致了很多类似常识性的错误发生。
  5、关于SIP应用环境和TLS使用时的几个RFC标准的冲突。我们现在仅讨论了TLS和SIP加密的流程和基本原理。因为以前的传统PSTN环境中,几乎没有所谓的安全问题或安全机制的考虑。在SIP技术发展如此凶猛的市场中,事实上,在加密层面,基于SIP的标准就存在很多方面的冲突或者不统一,这样就导致了很多兼容性方面的问题,例如终端和服务器端的问题,服务器端到服务器端的问题,应用层面的TLS问题等争议。根据协议制定者的提议(具体提议内容参考链接),目前,各种RFC标准之间互相有冲突的结果方面包括:
  1. RFC 3261 要求 url支持,sip,sips,证书,hop by hop,但是如何让证书和主机关联是一个问题,也没有非常明确规定最后一个hop的处理。
  2. 对于TLS证书的使用上,RFC 3263要求的是Domain Name,而几乎同一时间发布的RFC3261则要求的是Host Name。这两个规范可能有冲突或歧义。
  3. RFC 5922中的Domain 证书问题,把authentication和authorization混合在了一起。
  4. RFC 5923 对TLS证书认证重新连接的问题没有解释清楚包括证书连接重用的问题。
  5. 如果TLS证书连接出现错误以后,没有比较清晰的错误码。
  在本章节的讨论中,我们首先讨论了关于TLS的定义和使用方式,SIP加密的流程,使用TLS以后服务器的性能问题,TLS在不同标准中的一些争议。大家一定要注意使用TLS以后的性能问题,同时因为标准不同所产生的兼容性问题。最后,笔者还是建议读者更多参考RFC 3261,以RFC 3261为基本标准。
  在接下来的讲座中,我们将继续讨论关于SIP安全的几个问题,SRTP,各种安全问题,防止手段和开源检查工具。
  参考资料:
  https://tools.ietf.org/html/rfc7568
  http://www.cs.columbia.edu/~hgs/papers/Shen1008_TLS.pdf
  https://www.acunetix.com/
  https://www.cisco.com/c/en/us/about/press/internet-protocol-journal/back-issues/table-contents-45/123-security.html
  关注微信号:asterisk-cn 获得更多行业技术信息,访问开源IPPBX网站获得开源IPPBX技术帮助和下载:www.issabel.cn/forum。
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

相关热词搜索: Asterisk SIP

上一篇:Mitel一体化联络中心解决方案

下一篇:最后一页

相关阅读:

专题