Reicht HTTPS aus, um Wiederholungsangriffe zu vermeiden?

10

Ich stelle einige REST-Methoden auf einem Server für eine mobile App zur Verfügung.

Ich möchte vermeiden, dass Benutzer die Erstellung von HTTP-Methoden (über die mobile App) abhören und sie dann erneut an den Server senden können. Beispiel:

  • Die mobile App sendet eine Anfrage
  • Der Benutzer verwendet einen Proxy und kann überprüfen, was im Netzwerk vor sich geht
  • Der Benutzer sieht und speichert die Anforderung, die das Mobiltelefon gerade gesendet hat
  • => Jetzt möchte ich nicht, dass der Benutzer diese Anfrage manuell senden kann

Reicht es aus, den Server über HTTPS zu sichern?

MartinMoizard
quelle

Antworten:

7

HTTPS kann ausreichen, um den Server vor Wiederholungsangriffen zu schützen (dieselbe Nachricht wird zweimal gesendet), wenn der Server so konfiguriert ist, dass nur das TLS-Protokoll gemäß Abschnitt F.2 von rfc2246 zugelassen wird.

Ausgehende Daten werden vor der Übertragung mit einem MAC geschützt. Um Nachrichtenwiederholungs- oder Änderungsangriffe zu verhindern, wird der MAC aus dem MAC-Geheimnis, der [...] Sequenznummer, berechnet.

Emirikol
quelle
1
Dies gilt nicht mehr für (Entwurfs-) TLS 1.3, wenn 0-RTT-Tickets aktiviert sind. Auch, wenn auch nicht unbedingt im Rahmen die Frage einer Replay - Attacke noch montiert werden , auch mit aktuellem TLS - Versionen , wenn ein mit Web - Browser .
Alex Shpilkin
9

HTTPS bedeutet einfach, dass die transportierten Daten verschlüsselt werden, sodass nur der Client und der Server sie entschlüsseln können (in einer idealen Welt, in der nicht über MITM-Angriffe usw. gesprochen wird).

Daher verhindert nichts im Protokoll, dass Wiederholungsangriffe stattfinden.

Sie müssen einen Mechanismus zur Vermeidung von Wiederholungsangriffen einbauen (z. B. ablaufende Token oder Token, die nach Abschluss des Vorgangs ungültig werden), um sicherzustellen, dass Ihre Anwendung nicht für Wiederholungsangriffe anfällig ist. Dieser Mechanismus kann mit normalem HTTP verwendet werden.

Oded
quelle
8
Diese Antwort scheint das Gegenteil zu suggerieren: stackoverflow.com/questions/2769992/… Irgendeine Idee, warum der Unterschied?
Brian Armstrong
1
@BrianArmstrong Ich denke, das Problem ist, dass HTTPS unterschiedliche Implementierungen hat, wie in der Antwort von Emirikol erwähnt. Einige Protokolle verhindern Wiederholungsangriffe, andere nicht. (Es kommt vor, dass beim Schlüsselaustausch der RSA-Schlüsselaustausch verhindert wird, der anonyme Schlüsselaustausch jedoch nicht. Ref: tools.ietf.org/html/draft-ietf-tls-ssl-version3-00#appendix-F ) Deshalb Token ( wie csrf) sind wichtig (Referenzszenario ist hier: stackoverflow.com/a/2770135/4206925 )
MewX