客户端/服务器随机丢失时的 SSL 重放攻击

信息安全 密码学 tls 攻击预防 随机数
2021-09-06 22:12:17

嘿,研究 SSL 协议,我想知道如果服务器 nonce 丢失,有人怎么能进行重放攻击?我发现的所有材料都说随机数会阻止它,但是没有例子说明为什么或如何

1个回答

如果服务器使用与前一次握手相同的随机数(server_randomSSL/TLS 规范中称为“” )和相同的会话 ID,那么攻击者可以发送与客户端在前一次会话期间发送的完全相同的数据包,并且服务器将接受整个事情。至少如果服务器使用 RSA 密钥交换密码套件(这是最常见的情况)。

这可以通过遵循各种加密元素的计算方式轻松看出。ClientKeyExchange消息包含使用服务器公钥加密的 pre-master-secret;该数据包可以重放,并且仍然是同一预主密钥的正确加密版本。然后,加密和 MAC 密钥通过确定性的 SSL/TLS “PRF”从预主密钥、client_random导出server_random因此,如果随机数不变(即,如果服务器使用与server_random以前相同的ClientHello信息,并且攻击者发送的消息与前一个会话期间相同)并且 pre-master-secret 也不变,那么服务器将推断出相同的对称密钥,因此将接受捕获的加密数据包作为真实的。

进行重放的攻击者不会对应用程序数据的外观有任何额外的了解;该攻击不是解密攻击。但从服务器的角度来看,这看起来像是第二次真正的自愿连接。对于用于信用卡支付的 HTTPS POST 请求的 SSL 连接,这意味着双重支付。

幸运的是,实现一个始终使用相同服务器随机数和相同会话 ID 的 SSL 服务器需要非标准量级的无能。我并不是说它永远不会发生。只是它很少发生。值得注意的是,TLS 规范坚持认为 theclient_random和 the的前四个字节server_random应该以 1 秒的精度对当前日期和时间进行编码:如果遵守,即使时钟严重倾斜,仅此一项就可以确保服务器具有有严重缺陷的 RNG 仍然会server_random在一秒钟后使用 distinct 。