Blog

In einem früheren Beitrag diskutierte Zix | AppRiver, wie die Verantwortlichen für den SolarWinds-Angriff Token und Zertifikate als Teil ihrer Infektionskette missbraucht hatten. Die böswilligen Akteure missbrauchten dieselben Arten von Assets in zusätzlichen Kampagnen, die auf andere Entitäten abzielten. Dies führte zu einem bestätigten Zertifikatsicherheitsvorfall bei einem E-Mail-Sicherheitsanbieter.

Zix | AppRiver erkannte diese bösartigen Aktivitäten an und hielt es für notwendig, seinen Kunden eine Reihe von Artikeln zur Verfügung zu stellen, in denen die betroffenen Arten von Authentifizierungsmethoden und deren Funktionsweise erläutert werden. Wir beginnen mit der tokenbasierten Authentifizierung.

Tokenbasierte Authentifizierung: Eine Übersicht

Die tokenbasierte Authentifizierung behebt einige der Einschränkungen der sitzungsbasierten Authentifizierung. Im letzteren Fall erstellt ein Server eine Sitzung für einen Benutzer, wenn er sich anmeldet. Es speichert die Sitzungs-ID in einem Cookie, das alle nachfolgenden Anfragen begleitet, wenn der Benutzer angemeldet bleibt. Der Server überprüft dann die Identität eines Benutzers, indem er das Cookie mit den im Speicher gespeicherten Sitzungsdaten vergleicht.

Eine Illustration der sitzungsbasierten Authentifizierung. (Quelle: Sherry Hsu)
Eine Illustration der sitzungsbasierten Authentifizierung. (Quelle: Sherry Hsu)

Das Problem hierbei ist, dass die sitzungsbasierte Authentifizierung unter bestimmten Nachteilen leidet. Erstens muss der Server Sitzungen in seinem Speicher speichern. Es gibt auch das Problem, dass Cookies auf mehreren Geräten verschiedener Medien (z. B. Web und Mobil) funktionieren.

Hier kommt die tokenbasierte Authentifizierung ins Spiel. Bei dieser Form der Authentifizierung stellt eine Anwendung dem Client nach der Validierung eines Satzes von Benutzeranmeldeinformationen ein signiertes Token zur Verfügung. Der Client speichert dieses Token und sendet es mit jeder Anforderung.

Eine Illustration der tokenbasierten Authentifizierung mit einem JSON Web Token (JWT). (Quelle: Sherry Hsu)
Eine Illustration der tokenbasierten Authentifizierung mit einem JSON Web Token (JWT). (Quelle: Sherry Hsu)

In diesem Sinne unterscheidet sich die tokenbasierte Authentifizierung von der sitzungsbasierten Authentifizierung dadurch, dass sie zustandslos ist. Es geht nicht darum, Informationen über einen Benutzer auf einem Server oder in einer Sitzung zu speichern. Es speichert diese Daten im Token auf der Clientseite.

Vorteile und Herausforderungen der tokenbasierten Authentifizierung

Die tokenbasierte Authentifizierung bietet viele Vorteile. Chop-Chop stellt fest, dass Token auch auf verschiedenen Websites und Medien funktionieren, was eine Chance für eine größere Vielfalt von Benutzern schafft — insbesondere für diejenigen, die mobile Geräte verwenden. Darüber hinaus stehen Token für die Anmeldeinformationen eines Benutzers bei der Gewährung des Zugriffs auf Daten; Jemand, der ein Token kompromittiert hat, erhält nicht automatisch Zugriff auf die Kontoanmeldeinformationen des betroffenen Benutzers.

Davon abgesehen ist die tokenbasierte Authentifizierung nicht ohne Herausforderungen. Devbridge Group stellt fest, dass einige Sitzungstoken beispielsweise nicht auf sichere Weise generiert werden. Dies ermöglicht es einem Angreifer mit einer ausreichend großen Stichprobe von Sitzungs-IDs, ein Muster herauszufinden und die Token für einen größeren Pool von Benutzern zu erraten. Es gibt auch das Problem, dass Angreifer unsichere Token-Speicher, mehrere Anmeldungen und / oder lange Token-Validierungszeiten nutzen, um Authentifizierungsgeheimnisse zu stehlen.

Sichere Verwendung der tokenbasierten Authentifizierung

In Anbetracht der oben diskutierten Risiken finden Sie hier einige bewährte Methoden für die sichere Verwendung der tokenbasierten Authentifizierung:

  1. Generieren Sie starke Token. Insbesondere empfiehlt Devbridge, dass die Token eine große Anzahl möglicher Werte aufweisen, einen gewissen Grad an Pseudozufälligkeit aufweisen und aus mindestens 16 Bytes Länge bestehen.
  2. Geben Sie Token ein Ablaufdatum. Es ist wichtig, Bedingungen festzulegen, wie lange ein Token gültig bleibt, stellt Auth0 fest. Wenn ein Benutzer noch aktiv ist, kann das Token natürlich automatisch erneuert werden. Es ist jedoch auch ratsam, zuzulassen, dass ein Token abläuft, wenn sich der Benutzer abmeldet, und das Token zu beenden, unabhängig davon, was nach Ablauf einer bestimmten Zeitspanne passiert.
  3. Mehrere Anmeldungen nicht zulassen. Wie von Devbridge erwähnt, ist es möglich, Schlüsselattribute zu verwenden, um parallele Authentifizierungen zu verhindern, bei denen mehr als eine Person gleichzeitig mit demselben Benutzerkonto interagiert.
  4. Token sicher speichern. Lokaler Speicher ist hier nicht der richtige Weg. DEV Community empfiehlt die Verwendung einer Cookie-Richtlinie namens SameSite, um die Bedingungen anzugeben, unter denen ein Cookie in einer domänenübergreifenden Anforderung übergeben werden kann. Eine strikte SameSite-Richtlinie sowie die Anforderung, dass Benutzer eine Browserversion verwenden, die diese Funktionalität unterstützt, tragen dazu bei, Sitzungstoken sicher zu halten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.