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

时间:2018-06-29 22:28:50

标签: php security encryption server rsa

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

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

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

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

所以我的问题是:

  1. 此错误的名称是什么? :D
  2. 如何阻止它?有没有办法告诉服务器(例如在php中)只处理一次每个请求?或有解决此问题的另一种方法。

感谢阅读。

1 个答案:

答案 0 :(得分:0)

您要避免的问题(第一个问题)是针对后端的重播攻击,在这种情况下,攻击者可以执行Cyphertext Only Attack

还有另一个问题:在一个协议(如您正在设计的协议)中,可以进行的一组请求/响应可能会受到限制,并且更糟的是可以猜测的(认为是错误的)。这导致攻击者能够执行Known Plaintext Attack

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

  • 使用TLS(也称为https)进行传输,这可以保护您免遭窥探入侵者的侵害。
  • 实施随机数,以防止具有相同密文的相同纯文本消息,但要注意它甚至不接近TLS。 (如Laurence Cherone和Luke Joshua Park在评论中所建议)

您可以在Security Stackexchange处关注后续问题,该问题专门针对此类信息安全主题。