SSL/TLS 握手受到 Finished 消息、主密钥的签名和身份验证哈希以及所有先前握手消息的保护,以防止降级尝试。
考虑一个使用强弱密码套件混合的客户端,它连接到支持同一组密码的服务器。通常,一方或双方都更喜欢强密码,并且连接将被安全地建立。
攻击者需要具备哪些能力才能主动将握手降级为弱密码套件之一?我假设攻击者无法破坏通过 RSA 或 (EC)DH 建立的主密钥。
我认为他们必须至少能够做到以下几点:
- 计算修改后握手的有效哈希值(例如,删除一些密码套件或更改为无效值),不知道主密钥,也可能不知道原始哈希值(取决于使用的加密方案)
- 对密文(明文未知)执行这些哈希修改,因为完成的消息是加密的
- 修改 Finished 消息的加密身份验证标签(因为 SSL/TLS 使用 authenticate-then-encrypt),使其对修改后的握手散列有效,同样不知道原始值。
散列函数的“破坏性如何”,密码必须具有“可塑性”才能实现这种攻击?今天或在可预见的未来(考虑到对 MD5、SHA1、RC4 等的现有攻击)是否有可能对现有的旧密码套件之一进行攻击,除了可能是主密钥的导出版本被攻击者暴力破解?
或者在客户端中启用那些“中等安全”的密码套件并依赖握手保护是否安全?