接着,我们来详细描述一下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)或椭圆曲线变量。

【责任编辑:ROCK