SSL 加密请求是否容易受到重放攻击?如果是这样,有什么好的选择可以防止这种情况发生?
SSL 加密请求是否容易受到重放攻击?
信息安全
tls
攻击
2021-08-28 08:09:20
1个回答
SSL/TLS 通道本身使用 MAC(消息验证码)保护免受重放攻击,使用 MAC 密钥和序列号计算。(MAC 机制确保了 TLS 通信的完整性)。请参阅TLS 1.1 规范附录 F.2:
为了防止消息重放或修改攻击,MAC 由 MAC 秘密、序列号、消息长度、消息内容和两个固定字符串计算得出。
编辑:正如@CodesInChaos 指出的那样,还必须考虑握手,否则可能会重播整个 TLS 连接(不仅仅是一些记录,这是 MAC 和序列号可以防止的)。如果攻击者重放相同的Client Hello
消息,服务器将返回Server Hello
具有不同服务器随机值的 a ,从而改变密钥交换的其余部分。此外,在 RSA 密钥交换模式下,只有最初的合法客户端才知道它加密的预主密钥;在 DHE 密钥交换模式中,客户端和服务器随机数在服务器密钥交换消息中一起签名(因此良好的随机数也很重要)。(在这个问题中有更多关于这两种模式的内容。)
从您的问题中不清楚您要保护什么免受重放攻击。通常,这将是在您的应用程序使用的 SSL/TLS 层之上发送的消息。
SSL/TLS 提供的加密当然可以防止窃听者看到该应用程序请求,因此无法使用他们自己单独的 SSL/TLS 连接重放它。
但是,SSL/TLS 本身并不一定会阻止合法的初始用户重播请求。需要这种额外保护级别的协议和应用程序往往在应用程序级别具有基于 nonce 的机制来解决这个问题(这与 SSL/TLS 相当独立,尽管防止窃听会有所帮助)。