FIDO2 und WebAuthn: Login ohne Passwort

Gestohlene Nutzer- und Passwortkombinationen sind heutzutage weiterhin einer der Hauptgründe für kompromittierte Systeme und Infrastrukturen. Dabei werden jährlich Milliarden Zugangsdaten entwendet, welche laut dem 2019 Data Breach Investigations Report von verizon bei 29% der gemeldeten Fälle als Grundlage für einen Datenabfluss dienen. Die Dunkelziffer wird um ein Vielfaches höher sein.
Darum wird seit langem auch die Zwei-Faktor Authentifikation (2FA) empfohlen, welche im Verlust-Fall eines Passworts den Account und die Daten durch den zweiten Faktor schützt. Meldet sich ein Benutzer bei einem Dienst mit eingerichtetem zweitem Faktor an, wird neben dem Passwort der zweite Faktor zur Authentifikation verlangt. Die Zwei-Faktor Authentifikation kann über verschiedene Wege erfolgen. Dabei kann eine TAN über eine SMS oder E-Mail verschickt werden oder über eine passende App auf dem Smartphone generiert werden. All diese Verfahren müssen jedoch einen zentralen Umstand lösen:

Der Mensch ist das schwächste Glied in der Kette

Um Zugangsdaten zu stehlen, werden meist gefälschte Nachrichten oder Webseiten an Personen geschickt. Dabei werden diese zur Preisgabe von sensitiven Informationen verleitet. Dieses Vorgehen wird mit dem Begriff Phishing bezeichnet. Angriffe über Phishing werden immer professioneller und selbst eine Zwei-Faktor Authentifikation kann überwunden werden. Abbildung 1 illustriert ein Abgreifen einer TAN durch eine Phishingseite. In Schritt 1 wird zunächst die Webseite aufgerufen und ein Login Formular wird daraufhin zurückgegeben. Danach werden in Schritt 2 die Zugangsdaten (Benutzername und Passwort) erfragt und übermittelt. Anschließend in Schritt 3 wird nach dem zweiten Faktor, zum Beispiel eine TAN über eine SMS, gefragt. Die Informationen werden dann vom Angreifer im Hintergrund sofort zum Login beim eigentlichen Dienst genutzt.

Ablauf einer FIDO2 Registration
Ab­bildung 1 Ablauf eines Phishingangriffs mit einer 2FA

Um eine noch sicherere Authentifikation zu ermöglichen, welche zum einen den möglichen Verlust von einem Passwort eliminieren kann und zum anderen phishingresistent ist, wurde FIDO2 in Kombination mit WebAuthn etabliert. Das Authentifikationsprotokoll FIDO2 besteht aus einem Challenge-Response Verfahren mittels asymmetrischer Kryptografie (öffentlicher und privater Schlüssel). Es wird eine Challenge (hier eine zufällige Zeichenkette) vom Webdienst an den Nutzer geschickt, welche der Nutzer mit dem privaten Schlüssel digital signiert. Die digitale Signatur kann dazu genutzt werden, um die Antwort auf die Challenge mit Hilfe des öffentlichen Schlüssels auf dem Server zu verifizieren. Dadurch lässt sich die Urheberschaft eindeutig bestimmen. WebAuthn ist eine JavaScript API, die einem Browser die Kommunikation mit dem Webdienst über FIDO2 und einem sogenannten Authenticator ermöglicht. Der Authenticator speichert die kryptografischen Schlüssel für die Benutzerkonten und führt die kryptografischen Operationen zum Erstellen der Schlüssel und Signieren der Challenge durch. Dieses Verfahren kann als erster (Ersatz eines Passworts) oder zweiter Faktor (phishingresistente 2FA mit der optionalen Abfrage eines biometrischen Merkmals/Pins) eingesetzt werden.

Begriffe

Asymmetrisches KryptosystemEin kryptografisches Verfahren, bei dem kein gemeinsamer Schlüssel zwischen zwei Kommunikationspartnern geteilt wird. Es wird neben einem privaten Schlüssel, der geheim bleiben muss, ein öffentlicher Schlüssel erzeugt. Dieser kann öffentlich geteilt werden und dient als Schlüssel, um verschlüsselt mit dem Besitzer zu kommunizieren und digitale Signaturen des Besitzers zu prüfen.
ChallengeEine Challenge ist in diesem Fall eine zufällige Zeichenkette, welche vom Client mithilfe des Authenticators signiert wird. Dadurch ist sichergestellt, dass die Antwort auf die Challenge (die Signatur) nur dieser eine Authenticator weiß.
FIDO2Ein Standard zur starken und hardwarebasierten Authentifikation mittels asymmetrischer Kryptografie.
WebAuthnEine JavaScript API, welche die FIDO2 Authentifikation über den Webbrowser ermöglicht
Relying PartyDie Relying Party ist der Webdienst, bei dem der Nutzer sich authentifizieren möchte.
AuthenticatorExternes Authentifikationsgerät zum Beispiel Yubikey, Titan Security Key, Nitrokey. Auf diesen können Schlüssel generiert und gespeichert werden. Außerdem werden kryptografische Operationen direkt darauf ausgeführt.
2FAZwei-Faktor-Authentifikation ist eine Methode, um die Identität eines Nutzers durch eine Kombination aus zwei verschiedenen Faktoren zu bestätigen. Meist wird das Passwort ("etwas, das man weiß") mit "etwas, das man hat" (zum Beispiel einen Authenticator) oder "etwas, das man ist" (biometrisches Merkmal wie ein Fingerabdruck) verbunden.

Login ohne ein Passwort? Aber wie?

Für das FIDO2 Verfahren müssen zunächst die Voraussetzungen geschaffen werden. Neben einem Webdienst, der FIDO2 unterstützt, muss auch auf der Benutzerseite ein unterstützter Client verwendet werden. Stand heute sind die meisten gängigen Webbrowser wie Mozilla Firefox, Google Chrome, Microsoft Edge sowie Safari mit einer WebAuthn-Schnittstelle ausgestattet. Weitere unterstützte Browser können über Can I use WebAuthn? ermittelt werden. Ein weiteres wichtiges Element ist der Authenticator. Der Authenticator, beispielsweise der Yubikey, beherbergt das Schlüsselmaterial für einzelne Dienste und führt die nötigen kryptografische Operationen durch. Dadurch verlässt das Geheimnis den Authenticator nicht und ist vor Dritten geschützt.

Generiere ein Schlüsselpaar und registriere einen Nutzer

Will ein Nutzer sich bei einer Webseite (bezeichnet als Relying Party) registrieren, dann ...

  • ... initiiert der Nutzer zunächst den Registrierungsprozess.
  • Die Relying Party stellt eine Challenge und fragt den Browser des Nutzers nach einem neuen Schlüsselpaar.
  • Nachdem der Authenticator eine Bestätigung vom Nutzer erhält (zum Beispiel durch Blinken und Drücken des Authenticators) wird ein neues Schlüsselpaar generiert. Dabei wird pro Benutzerkonto auf einer Webseite ein neues Schlüsselpaar generiert.
  • Der öffentliche Schlüssel und optional eine signierte Beglaubigung wird an die Webseite zurückgesendet.
  • Der Server speichert den öffentlichen Schlüssel mit der passenden Nutzer ID.
Ablauf einer FIDO2 Registration
Ab­bildung 2 Ablauf einer FIDO2 Registration

Login mit einem Klick

Nach der Registrierung kann der Nutzer sich am Dienst authentifizieren.

  • Der Nutzer ruft das Anmeldeformular auf und initiiert den Login.
  • Die Webseite generiert eine einzigartige Challenge und sendet diese zum Client.
  • Die Herkunft der Challenge wird validiert.
  • Der Nutzer bestätigt zum Beispiel durch Drücken des Authenticators den Login.
  • Der Authenticator generiert eine Signatur (durch den privaten Schlüssel) der Challenge und sendet diese über den Webbrowser zurück.
  • Die Webseite verifiziert die Signatur mit dem öffentlichen Schlüssel und bei Erfolg wird der Nutzer angemeldet.
Ablauf einer FIDO2 Authentifikation
Ab­bildung 3 Ablauf einer FIDO2 Authentifikation

Wer bereits einen Authenticator mit FIDO2-Unterstützung besitzt, kann dieses Verfahren mit unterschiedlichen Einstellungen unter WebAuthn.io testen. Die Nutzung als zweiten Faktor bieten bereits einige Dienste wie Github, 1Password, Twitter und Google an. Einen passwortlosen Anmeldeprozess bietet zudem Microsoft an. Nach dem Registrieren eines Authenticators mit FIDO2-Unterstützung kann die passwortlose und phishingresistente Anmeldung bei Microsoftdiensten (unter anderem Outlook.com, Office, Skype, OneDrive, Xbox Live, Azure AD) durchgeführt werden. Neben Webdiensten wird auch der Login sowie die Authentifikation bei SSH mit einem Authenticator ab Ubuntu 20.04 unterstützt.

Vorteile für Unternehmen und Nutzer

Neben den Vorteilen für die Sicherheit des eigenen Kontos können auch Anbieter von Webdiensten vom Einsatz dieses Verfahrens profitieren. Kunden müssen sich aufgrund des kryptografischen Schlüsselmaterials keine Passwörter mehr merken. Dadurch verringert sich der Aufwand einen Account beim angebotenen Dienst zu eröffnen. Es genügt ein Klick auf Registrieren, ohne sich ein lästiges Passwort auszudenken. Weiter wird das Vertrauen in den eigenen Dienst erhöht, da das Risiko vom Passwortverlust eliminiert wird. Auch vergessene Passwörter gehören mit FIDO2 der Vergangenheit an und der Support wird massiv entlastet. Laut Yubico sind Passwortresets der größte Kostenfaktor im Support. Besonders ist auch, dass diese Art der Authentifikation im Gegensatz zur 2FA mit SMS oder einer App gegen Phishing resistent ist. Die Abwehr gegen Phishing wird durch drei Mechanismen sichergestellt. Zunächst wird die Herkunft der Daten vom Server verifiziert. Dabei wird im Browser geprüft, ob die gesetzte ID der Relying Party zur derzeitigen Domain passt. Ist dies nicht der Fall, zum Beispiel beim Besuchen einer Phishing-Webseite, wird der Vorgang vom Client abgebrochen. Die Antwort auf die Challenge des Servers wird anschließend durch eine fälschungssichere Signatur vor Manipulationen auf dem Weg zum Server geschützt. Des Weiteren ist die Challenge nur einmalig gültig und kann nicht wiederverwendet werden.

Melden Sie sich, wenn Sie sich zu den Möglichkeiten bei Authentifikationsverfahren beraten lassen wollen.

Das Verfahren FIDO2 birgt natürlich auch Fallstricke, denen man vorbeugen muss. Es besteht architekturbedingt keine Möglichkeit ein Backup von einem Authenticator zu erstellen. Jeder Authenticator ist einzigartig und ist nicht kopierbar (per Design), was diese Art der Authentifikation auch so sicher macht. Um dieses Problem zu umgehen sollten bei jedem Dienst zwei Authenticator registriert werden: geht einer verloren, steht der andere als Backup zur Verfügung. Eine Alternative wäre im Zweifel die Nutzung von Backup-Codes, die jedoch wieder den Faktor Mensch in den Authentifikationsprozess bringen. So können Phishing-Angriffe wieder gezielt die Eingabe von Backup-Codes verlangen, zum Beispiel mit einer Meldung "Ihr Sicherheitsschlüssel ist abgelaufen! Bitte geben Sie einen Ihrer verbliebenen Backup-Codes ein, um Ihre Identität zu bestätigen".

Fazit

Da Passwörter heutzutage weiterhin täglich gestohlen und für Einbrüche in Systeme verwendet werden, ist es wichtig das Risiko eines Diebstahls von Zugangsdaten zu minimieren und die Auswirkungen nach einem Verlust zu reduzieren. Um ein gutes Schutzniveau zu erreichen können sogenannte Authenticators genutzt werden, welche durch kryptografische Beweise einen sicheren Authentifikationsmechanismus bereitstellen. Dadurch können sich Benutzer ohne viel Aufwand auf eine sichere Art und Weise bei Webdiensten, auch passwortlos, anmelden und sind durch einen zweiten Faktor in Form eines physischen Authenticators geschützt. Um diese sehr sichere Authentifikation bei jeglichen Diensten zu ermöglichen, müssen auch Unternehmen die FIDO2-Anmeldung bereitstellen. Denn auf Anwenderseite ist die (passwortlose) Authentifikation mit einem Authenticator bereits bei allen bekannten Browser-Herstellern sowie anderen Systemen (wie Ubuntu 20.04) vertreten.