HTTPS是否足以避免重播攻击?


10

我正在为移动应用程序在服务器上公开一些REST方法。

我想避免用户可以嗅探如何构建HTTP方法(从移动应用程序),然后将其再次发送到服务器。范例:

  • 移动应用发送请求
  • 用户使用代理,可以检查网络上发生了什么
  • 用户看到并保存手机刚刚发送的请求
  • =>现在,我不希望用户能够手动发送该请求

是否足以通过HTTPS保护服务器?

Answers:


7

如果将服务器配置为仅根据rfc2246 F.2节使用TLS协议,则HTTPS足以保护服务器免受重放攻击(同一消息发送两次)。

传输之前,传出数据受MAC保护。为了防止消息重播或修改攻击,从MAC机密(序列号[...])计算出MAC


1
不再是真实的,如果有(草案)TLS 1.3 0-RTT门票被启用。此外,尽管并不严格在问题的范围之内,但是如果使用Web浏览器,即使使用当前的TLS版本,仍可以发起重播攻击。
Alex Shpilkin '18年

9

HTTPS只是意味着传输的数据已加密,因此只有客户端和服务器才能解密它(在理想情况下,不是在谈论MITM攻击等)。

这样,协议中的任何内容都不会阻止重放攻击的发生。

您将需要构建某种避免重放攻击的机制(例如过期令牌或在过程完成后失效的令牌),以确保您的应用程序不容易受到重放攻击。此机制可与普通HTTP一起使用。


8
这个答案似乎暗示了相反的情况:stackoverflow.com/questions/2769992/… 知道为什么会有区别吗?
Brian Armstrong

1
@BrianArmstrong我认为问题在于Emirikol的回答提到HTTPS具有不同的实现。有些协议可以防止重放攻击,而有些则不能。(在进行密钥交换时会发生这种情况,但RSA密钥交换会阻止,但匿名密钥交换不会。reftools.ietf.org/html/draft-ietf-tls-ssl-version3-00#appendix-F)因此,这就是令牌(例如csrf)很重要(参考方案在这里:stackoverflow.com/a/2770135/4206925
MewX
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.