Diese Frage ist viel aufgekommen, aber ich habe die Antwort nicht gefunden. Ich habe die OAUTH 2-Spezifikation gelesen und das separate "Sicherheitsüberlegungen" -Dokument, aber ich bin immer noch unscharf auf etwas.Wie verhindert Oauth 2 Replay-Angriffe in mobilen Anwendungen?
Der Umstand ist: RESTful basierte Webdienste, auf die mobile Anwendungen zugreifen. Ich bin sowohl die Server-Ressource (Ersteller und Host der RESTful-Dienste) als auch die Autorisierungsautorität (ich speichere die IDs und Passwörter des Benutzers und bestätige die Identität). Drittanbieter erstellen die mobilen Anwendungen, die meine Dienste nutzen. Ich verwende OAuth 2.0, um die Benutzer-ID und das Kennwort des Benutzers zu überprüfen und ein Token auszustellen. TLS über https wird verwendet.
Ein Nonce mit einer gesengten Nachricht wird normalerweise verwendet, um Replay-Attacken zu verhindern, aber wie ich es verstehe, funktioniert das in einer mobilen Anwendung nicht, denn um eine Nachricht zu signieren, benötigen Sie ein gemeinsames Geheimnis. Jedes in einer mobilen App gespeicherte Geheimnis (mit dem Sie Nachrichten signieren können) ist kein Geheimnis mehr. Ein Nonce kann also nicht verwendet werden.
So haben wir Sitzungstoken, die nach einer konfigurierbaren Zeitspanne ablaufen und mit einem "Refresh-Token" aufgefrischt werden können.
Meine Frage ist: Wenn TLS besiegt ist (Beispiel: Benutzer ist dumm genug, um sein Mobiltelefon mit einem Proxy-Server zu verbinden und ein Zertifikat des Proxy zu installieren, das dem Proxy-Server-Besitzer dann ermöglicht, den unverschlüsselten Datenverkehr zu lesen) , was verhindert, dass ein Hacker eine Anfrage mit einem gültigen Sitzungstoken erneut abspielt (solange es noch am Leben ist) oder schlimmer noch, die Sitzung stundenlang mit dem Aktualisierungstoken fortsetzt, um kontinuierlich neue Sitzungstoken zu erhalten?
Basierend auf dem, was ich bei OAuth gelesen habe, hängt es wirklich davon ab, welche Art von Token Sie ausgeben und die damit verbundenen Parameter. Es ist offensichtlich die erste Verteidigung, die Zeit zu begrenzen, in der ein Token aktiv ist. Aber es gibt auch den MAC-Typ von Token, der die Verwendung eines Nonce- und MAC-Schlüssels für die Integrität innerhalb von Anforderungen beinhaltet. Ich denke, es ist wichtig, nicht auf OAuth für die Sicherheit zu vertrauen, und sicherzustellen, dass Sie es in SSL/TLS mit starken kryptografischen Parametern umschließen. –