您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > SSL协议脆弱性分析
SSL协议脆弱性分析摘要:本文从密码强度和版本兼容两方面分析了ssl协议可能存在的脆弱性问题,在此基础上研究了中间人攻击、证书攻击、通信业务流分析三种针对ssl协议的攻击方法对ssl加密通信造成的影响。关键词:ssl协议证书版本回溯密码强度1引言:随着网络安全意识的普遍提升,越来越多的网络应用逐步采用了ssl加密传输。由于ssl技术采用了加密、认证、密钥协商等机制来保障通信双方数据传输的保密性、完整性和通信端点的认证,因此ssl协议目前在网银交易、邮箱登陆、数据加密传输等方面得到了广泛应用。但ssl协议在实现过程中为了满足兼容性和易用性的要求,自身仍然存在一定的脆弱性问题,攻击者可以利用ssl协议的弱点对其进行攻击以获取敏感信息。2ssl协议安全套接层协议(ssl)是在internet基础上提供的一种保证私密性的安全协议。它能使客户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对客户进行认证。ssl协议是建立在可靠的传输层协议(如tcp)之上,同时与应用层协议独立无关,高层的应用层协议(如:http,ftp,telnet等)能透明地建立于ssl协议之上(图1所示)。从ssl的发展过程来看,目前主要包含了三个版本:sslv2、sslv3、tsl。sslv2的首要设计目标是为客户端和服务器之间的传输提供保密性,但在协议安全性方面存在一定的安全隐患。sslv3改善了sslv2的部分安全性问题,采用了更多的加密算法,包括数字签名标准dss、dh协议等,以及支持防止对数据流进行截断攻击的关闭握手。tls在sslv3的基础上又增强了对dh的支持和新的密钥扩展。ssl协议在实现过程中主要包括两个阶段:握手和数据传输阶段。握手阶段主要对服务器进行认证并确立用于保护数据传输的加密密钥。ssl必须在传输应用数据之前完成握手,一旦握手完成,数据就被分成一系列经过保护的记录进行传输。在传输片段之前,ssl协议通过计算数据的mac来提供完整性保护,将mac付加到片段的尾部,并对数据与mac整合在一起的内容进行加密,以形成经过加密的负载,最后给负载装上头信息,其过程如图2所示。3ssl协议脆弱性分析3.1密码强度问题ssl协议是以ciphersuite(加密套件)的形式确定数据传输所使用的加密算法,ssl会话一次连接的所有加密选项都被捆绑成各种加密套件,由任意选取的两字节常量来表示。加密套件指定会话双方的认证算法、密钥交换算法、加密算法和摘要(消息完整性)算法。表1列出了ssl协议采用的部分加密套件:从表1可以看出,ssl协议支持各种各样的加密套件,这些加密套件指定一组供连接使用的算法。这些算法的强度从较弱的可出口型(如40位模式的rc4)到强度较高的如3des都包含在内,ssl连接的安全自然就有赖于它所使用的加密算法的安全。从目前的计算能力来看出口模式中如rc4_40和des等加密算法都能被破译,若ssl连接采用此类加密算法,其加密数据的保密性就无从谈起,攻击者可以很容易利用现有的密码破译技术获取加密传输的数据。正常情况下ssl通信双方都会选择加密强度较高的加密套件,但以下两种情况可能在加密强度上为攻击者提供契机:(1)由于客户端与服务器必须就共同的加密套件达成一致才能通信,服务器和客户端为了保持较好的交互性通常会提供较多可供选择的加密套件,其中不乏加密强度较弱的加密算法(图3所示),这为攻击者对ssl协议的攻击提供了一定的条件,例如攻击者可以尝试对ssl通信双方的会话过程进行干扰,迫使通信双方选择加密强度较低的加密算法,为攻击者对加密数据的破译提供条件。(2)由于ssl协议中采用的各种加密和认证算法需要一定的系统开销,如ssl协议握手阶段对pre_master_secret的rsa私用密钥解密及计算master_secret和pre_master_secret的密钥处理都会消耗一定的系统资源,在数据传输阶段对记录的加密以及对记录的mac计算同样会消耗系统资源。而高安全的加密算法在系统开销上需要消耗较多系统资源,因此ssl协议在某些应用的实现过程中会采用较低加密强度的密码算法,这也会为攻击者提供破译条件。3.2版本兼容问题ssl协议从设计和使用过程来看主要包括sslv2、sslv3、tls三个版本,每个后续版本都对前一版本的安全性问题进行了改进,因此高版本协议能够较好地保障通信安全。但为了方便实际应用,ssl协议是允许向下兼容,会话双方可以通过协商采用低版本协议进行通信,并且该过程可以自动完成不需要用户进行干预。这样就产生了潜在的版本翻转攻击威胁,攻击者可以降低协议版本再利用低版本协议存在的脆弱性问题对通信过程进行攻击。其中sslv2对协议的握手过程没有很好的保护措施,将导致攻击者对ssl协议握手过程进行攻击,进而对加密算法进行篡改。图4展示了sslv3和tls协议的握手过程:从图中可以看出sslv3和tls协议在握手结束后会对之前的协商过程进行mac值的校验(图4中第5、6步所示),并且其校验值是以加密的形式进行传输,这样可以有效防止攻击者对握手过程的篡改,保障了协商过程的可靠性。而sslv2协议恰好缺乏对握手过程mac值的校验,攻击者可以在ssl通信的握手过程中伪冒其中一方对协议版本进行篡改,迫使通信双方采用低版本的ssl协议进行通信,由于缺乏握手过程的校验,该攻击可以顺利实施。sslv2协议还存在另一个问题,它仅仅使用tcp连接关闭来指示数据结束,这意味着它可能受制于截断攻击。由于ssl协议是构建于tcp协议之上,而tcp协议自身并不是一种安全性协议,它对tcp会话的完整性、有效性和一致性没有很好地保障,攻击者可以简单地伪造tcpfin数据报,而接收者无法辨别出它是否是合法的数据结束标志,从而误认为数据接收完成。sslv3之后的协议通过使用显式的关闭警示缓解了这一问题。4结束语利用ssl协议进行加密传输的方式在日常应用中大量存在,除本文中提到的攻击方法外,攻击者仍在尝试更多的攻击途径。对于敏感的信息和通信过程应该采用多种加密方式共同完成,提高攻击的难度,降低敏感信息被窃取的风险。参考文献[1]埃里克·雷斯克拉,ssl与tls,2002.[2]daniellucq,sslsecurityinthe.betld,,2008[3]qualysssllabs,sslsurveyhttpratingguide.,2010.[4]moxiemarlinspike,moretricksfordefeatingsslinpractice,blacdhatusa2009,2009.
本文标题:SSL协议脆弱性分析
链接地址:https://www.777doc.com/doc-6052032 .html