如果发起人受到妥协 /故意作弊,TLS是否会阻止重播攻击



背景:我正在使用使用持久的TCP连接到后端服务器的移动应用程序(在线聊天)。在上一个版本中,我们使用了众所周知的加密方案来保护有效载荷并使用共享的秘密密钥进行签名。这为数据篡改和逆向工程提供了足够的保护。但是流量仍然容易重播攻击:有人可以捕获网络流量并重播它,并且服务器会接受请求,因为它不知道它是真实的还是重播的。为了解决这个问题,我们介绍了时间戳和NONCES,这些时间戳和NONCES提供了防止重播攻击的保护

一切都很好。后来决定使用TLS(传输层安全性)来保护客户端和服务器之间的所有通信。TLS已实施并为针对中间攻击的人提供额外的保护,我们将服务器的公共证书固定在客户端上。

这使我提出了一个问题:仍然有必要使用自定义加密并防止重播攻击,因为TLS已经提供了针对这些的保护?在我的研究中,我发现TLS在传输过程中提供保护,即阻止中间人的人,但> 如果发起人本身想欺骗系统并修改有效负载或重播流量 怎么办?TLS是否可以防止故意的作弊者试图以某种方式拦截其操作系统网络中的流量?我的理解是TLS提供了端到端的加密,但我怀疑TLS流量实际上可以重播,如果发起人希望这样做。

我也知道基于内存的攻击,攻击者将在设备上修改此修改有效载荷(甚至可能是记录和重播)上的内存。但是,即使我们的自定义加密 重播卫队也无法保护这些。

来自:https://www.owasp.org/index.php/transport_layer_protection_cheat_cheat_sheet#benefits

" TLS还提供了两个通常被忽略的额外好处;完整性保证和重播预防。TLS通信流包含内置控件,以防止使用加密数据的任何部分进行篡改。此外,还建立了控制措施。以防止捕获的TLS数据流在以后重播。

应注意,TLS在传输过程中为数据提供了上述保证。TLS不为静止的数据提供这些安全益处。因此,必须添加适当的安全控件以在应用程序内或数据存储中静止时保护数据。"

tls仅保护运输,因此它提供了仅修改或重播加密数据的保护。它不能防止加密之前或解密后的任何形式的修改或重新估计数据。通过TLS连接再次发送相同的数据实际上是完全有效的。

但是,您用来检测重播的nonce和时间戳也不能防止修改或重播。发件人仍然可以使用相同的数据,但使用新的Nonce和新的时间戳"保护"这些数据。只要攻击者能够修改客户端代码,如果客户端在攻击者拥有的系统上运行(例如智能手机游戏)智能手机的所有者喜欢作弊。

最新更新