3.重放攻击
光靠使用报文鉴别码(MAC)不能防止对方重复发送过时的信息包。SSL通过在生成MAC的数据中加入隐藏的序列号,来防止重放攻击。这种机制也可以防止被耽搁的,被重新排序的,或者是被删除数据的干扰。序列号的长度是64bit,因此打包不会有问题。另外,序列号由每个连接方向分别维护,而且在每一次新的密钥交换时进行更新,所以不会有明显的弱点。
4.密码组回滚攻击(CipherSuite Rollback attack)
SSL 2.0密钥交换协议中有一个严重的缺陷:主动攻击者能够在暗地里迫使一个家庭用户使用功能被削弱的出口加密算法,即使通信双方都支持并首选了较高等级的算法。这就是人们所说的密码组回滚攻击(CipherSuite Rollback attack),它通过编辑在hello报文中发送的所支持密码组的明文列表来达到自身的目的。SSL 3.0修正了这个缺陷,它使用一个master_secret来对所有的握手协议报文进行鉴别,这样一来,便可在握手结束时检查出敌方的上述行为,如果有必要,还可结束会话。
接着,我们来详细描述一下SSL 3.0中防止修改握手协议报文的机制。在SSL握手协议中,有几个常见的弱点,我们将依次进行介绍。
所有初始的握手协议报文在传送时都是未保护的,此时密钥交换协议会将当前会话状态改为未决的会话状态,而不是修改当前使用中的各个参数。在协商完成之后,通信的每一方都发送一个短的更改密码规格报文(change cipher spec message),该报文仅仅是警告对方将当前状态升级为未决的会话状态。虽然change_cipher_spec报文未受保护,但是新的会话状态还是将以下一个报文为开始。紧跟在change_cipher_spec报文之后的是结束(finished)报文,它包含了一个报文鉴别码(MAC),此MAC由被master_secret加密过的所有握手协议报文计算得出。(基于特殊的非安全性因素,change_cipher_spec报文和alert报文在finished报文中没有进行鉴别。)48字节长的master_secret从未被泄露出去,而且会话密钥由它产生。这就保证了即使会话密钥被人截获,master_secret仍可安然无恙,所以握手协议报文能够安全的得到鉴别。Finished报文使用新建的密码组(ciphersuite)对自身进行保护。通信各方只有在收到对方的finished报文并对其进行核实后,才会接收应用层的数据。
5.中间人攻击(man_in_the_middle attack)
SSL 3.0中包含了对Diffie-Hellman密钥交换进行短暂加密的支持。Diffie-Hellman是一种公开密钥算法,它能有效地提供完善的保密功能,对于SSL来说是一个有益的补充。在SSL 3.0 Diffie-Hellman密钥交换系统中,服务器必须指定模数和原始根(这两个数均为素数),以及Diffie-Hellman的指数。为了防止服务器端产生的陷门,客户端应该对模数和原始根进行仔细的检查,看它们是否为固定公共列表上的可靠数值。在SSL 3.0中,通过对服务器端的Diffie-Hellman指数的鉴别,可以抵御众所周知的中间人(man-in-the-middle)攻击。(匿名客户不必拥有证书。)另外,在SSL 3.0中并不支持具有较高性能的Diffie-Hellman变量,如较小的指数变量(160bit)或椭圆曲线变量。
责任编辑:虫虫