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:
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 Kryptosystem | Ein 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. |
Challenge | Eine 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ß. |
FIDO2 | Ein Standard zur starken und hardwarebasierten Authentifikation mittels asymmetrischer Kryptografie. |
WebAuthn | Eine JavaScript API, welche die FIDO2 Authentifikation über den Webbrowser ermöglicht |
Relying Party | Die Relying Party ist der Webdienst, bei dem der Nutzer sich authentifizieren möchte. |
Authenticator | Externes 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. |
2FA | Zwei-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.
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.
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.
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.
Am 23.07.2020 in der Kategorie Kommunikationssicherheit veröffentlicht.