AES 和 RSA:避免重新处理一个请求?



我正在尝试安全地在客户端和服务器之间发送数据。我使用 AES 加密敏感数据,然后使用 RSA 加密密钥,然后使用签名来确保数据不会更改。

它看起来很安全,但我听说过一个错误,我不知道它的名字,但这就是它的工作原理:

  1. 首先,客户端向服务器发送加密请求。
  2. 黑客可以看到加密的请求,但无法解密它。
  3. 黑客一次又一次地将加密请求重新发送到服务器,并试图找出发生了什么。

例如,客户端向上传图片并将该图片添加到他或她的墙上的服务器发送请求。 黑客可以重新发送此请求数百次,因此服务器将上传该图像并将其一次又一次地添加到客户端的墙上。 真是一团糟!

所以我的问题是:

  1. 这个错误叫什么名字?:D
  2. 如何阻止它?有一种方法可以告诉服务器(例如在PHP中?(只处理一次每个请求?或者这个问题还有另一种解决方案。

感谢您的阅读。

您要避免的(第一个问题(是对后端的重放攻击,在这种情况下,攻击者可以执行仅密码文本攻击。

还有另一个问题:在协议(如您正在设计的协议(中,可以发出的请求/响应集可能是有限的,更糟糕的是可以猜测(想想 erros(。这会导致攻击者能够执行已知的明文攻击

要克服它(第二个问题(:

  • 使用TLS(又名https(进行传输,这将保护您免受窥探入侵者的侵害。
  • 实现 nonce-s,以防止相同的纯文本消息具有相同的密码文本,但请注意,它甚至不接近 TLS。(正如Laurence Cherone和Luke Joshua Park在评论中所建议的那样(

您可以在Security Stackexchange上解决后续问题,它专门针对此类信息安全主题。

最新更新