高防服务器安全套接层( Secure Sockets Layer,SSL)是为网络通信供给安全及数据完整性的一种安全协议。SSL能够在传输层对网络连接进行加密以防止传输的数据明文被监听和截获。
然而,SSL协议加密、解密和密钥协商的过程中会耗费大批的系统资源,严重降低机器的性能,因此,通常只有在传输密码等机密信息时才应用SSL协议进行传输。
图1是在SSL协议密钥协商过程中,客户端与服务器端耗费的CPU盘算资源的对照图。可以看到,如果应用RSA系列的公钥密码算法,那么服务器端所要耗费的资源都会比客户端多。在最极端的情况下,应用RSA4096进行加解密,服务器端需要消费相当于客户端资源的25倍才干完成盘算。
攻击者可以利用SSL协议耗费资源的特征进行拒绝服务攻击。
1、THC SSL DOS攻击
在进行SSL数据传输之前,通信双方首先要进行SSL握手,以协商加密算法交换加密密钥,进行身份认证。通常情况下,这样的SSL握手过程只需要进行一次即可,但是在SSL协议中有一个 Renegotiation选项,通过它可以进行密钥的重新协商以建立新的密钥。
THC SSL DOS攻击是安全研究人员在2011年提出的一种针对SSL的拒绝服务攻击方法。旧这种方法就是利用 Renegotiation选项,造成被攻击目标资源耗尽。在进行SSL连接并握手之后,攻击者重复不断地进行密钥重新协商过程,而密钥重协商过程需要服务器投入比客户端多15倍的CPU盘算资源。攻击者只需要一台普通的台式机就能够拖慢一台高性能服务器,而如果有大批主机同时进行攻击,则会使服务器忙于协商密钥而完整结束响应。
THC SSL DOS攻击的原理如图2所示。
另外,即使服务器不支撑 Renegotiation,攻击者依然可以通过另行打开新的SSL连接的方法来制作类似的攻击效果。
2、SSL洪水攻击
在SSL握手的过程中,服务器会耗费较多的CPU盘算资源进行加解密,并进行数据的有效性检验。对于客户端发过来的数据,服务器需要先消费大批的盘算资源进行解密,之后才干对数据的有效性进行检验。重要的是,不论数据是不是是有效的,服务器都一定要先进行解密才干够倣检查攻击者可以利用这个特征进行SSL洪水攻击。
在进行洪水攻击时,一个要点是需要攻击者能够在客户端大批地发出攻击恳求,这就需要客户端所进行的盘算尽可能地少。对于SSL洪水攻击,比较不错的方法是在数据传输之前,进行SSL握手的过程中发动攻击。攻击者并不需要完成SSL握手和密钥交换,而只需要在这个过程中让服务器去解密和验证,就能够大批地耗费服务器的盘算资源,因此,攻击者可以非常容易地枸造密钥交换过程中的恳求数据,达到减少客户端盘算量的目标。
SSL洪水攻击的原理如图3所示。
攻击者可以应用 Sslsqueeze等工具来发动SSL洪水攻击。