FIDO Passkeys 2 – In Zukunft ohne Passwort
Im ersten Teil dieser Artikelserie haben wir die Historie von Passwörtern und deren immer größer werdende Unsicherheit bei der Authentifizierung diskutiert. Faktisch stellen Passwörter heute keine ausreichende Sicherheit mehr dar und sollten auch nicht mehr verwendet werden – zumindest nicht ohne einen weiteren Faktor. Aber auch gängige Multi-Faktor-Authentifizierungen stellen zum Teil große Herausforderungen an die Anwender dar oder sind ebenfalls angreif- und manipulierbar und damit ebenfalls wenig sicher.
FIDO Passkeys
Die FIDO Alliance hat sich auf die Fahne geschrieben, das Internet und dessen Nutzung gleichzeitig einfacher nutzbar und durch eine stärkere Authentifizierung als derzeit üblich dennoch sicherer zu machen [1]. Auf der Website ist die Rede davon, das weltweite Passwort-Problem lösen zu wollen – "Solving the World's Password Problem". Die Abkürzung FIDO steht hierbei für Fast IDentity Online, also für eine schnelle Online-Identifizierung von Nutzern im Internet. Die Mitglieder der FIDO Alliance sind viele große und bekannte Tech-Konzerne. Allen voran treiben die Unternehmen Apple, Google und Microsoft (Nennung in alphabetischer Reihenfolge, keine Wertung) die Bemühungen rund um die FIDO Passkeys voran.
Der Begriff "Passkey" ist ein Kunstwort und lehnt sich mit dem ersten Wortteil an das bekannte "Passwort" an. Bei Passkeys werden aber keine Wörter als Shared Secret geteilt, stattdessen basieren sie auf kryptographischen Schlüsseln, deshalb der zweite Wortteil "-key". Der kryptographische Schlüssel besteht eigentlich aus einem Schlüssel-Paar: einem privaten Schlüssel und einem öffentlichen Schlüssel. Im Prinzip ist das Verfahren nicht neu, wird die Anmeldung mit einem sog. "Public/Private Keypair" doch schon jahrelang in anderen Umgebungen verwendet, wie z. B. dem SSH-Login unter Unix/Linux-Betriebssystemen. Aber auch in weiteren Bereichen kommen diese Schlüsselpaare bereits seit langer Zeit zum Einsatz.
Die Grundidee hierbei ist, dass der private Schlüssel immer privat bleibt und nie herausgegeben wird, er verbleibt also immer bei der Identität, also dem/der Nutzer:in, der/die authentifiziert werden soll. Lediglich der öffentliche Schlüssel wird verteilt und kann von den authentifzierenden Stellen gespeichert und verwendet werden. Mit dem öffentlichen Schlüssel können nur Überprüfungen von mit den privaten Schlüsseln erfolgten Signaturen vorgenommen werden. Es ist nicht möglich, mit dem öffentlichen Schlüssel eine Signatur für eine manipulierte Authentifizierung zu fälschen.
FIDO Passkeys basieren auf dem bereits 2019 verabschiedeten WebAuthn-Standard, um mit Public-Private-Keypairs eine Authentifizierung im Webbrowser durchführen zu können [2]. Ein Passkey ist immer für eine bestimmte Domäne gültig und kann nicht für mehrere Domänen verwendet werden. Durch diese Domänenbindung sind Passkeys automatisch phishing-resistent, es kann also auf einer fremden Domäne keine versehentliche bzw. ungewollte Anmeldung geben. Angreifer kommen so weniger bis gar nicht an fremde Identitäten. Die Auswahl, welcher der gespeicherten Passkeys für eine Domäne verwendet wird, obliegt dem Browser, nicht dem Nutzer, was gleichzeitig die Sicherheit als auch die Einfachheit der Anwendung erhöht. Damit die Nutzer eine weitere Unterstützung bei der Verwendung von Passkeys bekommen, können die privaten Schlüssel unter Berücksichtigung weiterer Sicherheitsvorkehrungen geräteübergreifend synchronisiert werden, so dass z. B. ein auf einem Mobilgerät erzeugter Passkey auch vom Desktop-Rechner aus verwendbar ist.
Login / Authentifizierung
Schauen wir uns den Vorgang der Authentifizierung mit FIDO Passkeys einmal im Detail an. Die Animation verdeutlicht den Ablauf zusätzlich:
- Ein Nutzer möchte sich wie gewöhnlich an einer Website (oder Mobile-App) anmelden.
- Wenn die Website die Nutzung von Passkeys ermöglicht, kann der Browser dem Nutzer anbieten, diese zu verwenden.
- Zur Anmeldung mit einem Passkey schickt die Website dem Browser eine sog. "Challenge Response", also ein Rätsel, welches der Browser lösen und mit dem passenden privaten Schlüssel signieren und wieder an die Website zurücksenden muss.
- Im Folgenden wird dem Nutzer ein auf dem Gerät gespeicherter (privater) Passkey zur Verwendung angeboten. Bei mehreren vorhandenen Passkeys bekommt der Nutzer die Möglichkeit, einen Passkey zu wählen.
- Die Verwendung des gewählten Passkeys wird mittels eines weiteren Merkmals, bestenfalls eines biometrischen Merkmals wie Fingerabdruck oder Gesichtserkennung, bestätigt.
- Mit der Bestätigung wird der Zugriff auf den sicheren Speicherbereich, wo der "private" Schlüssel abgelegt ist, freigeschaltet, der Browser kann das Rätsel lösen und mit dem "privaten" Schlüssel signieren. Im Anschluss sendet er die signierte Lösung an den Server der Website zur Überprüfung zurück.
- Die Website prüft dann, ob das Rätsel erfolgreich gelöst wurde und ob die Signatur erfolgreich mit dem für den Nutzer auf dem Website-Server gespeicherten "öffentlichen" Schlüssel verifiziert werden kann. Nur der passende öffentliche Schlüssel zum privaten Pendant kann hierfür verwendet werden. Schlägt die Überprüfung der Signatur fehl, kann der Nutzer nicht erfolgreich authentifiziert werden.
- Passt die Signatur zum öffentlichen Schlüssel, ist alles erledigt: Der Nutzer ist angemeldet.
Der private Schlüssel verlässt bei dem o. g. Verfahren nie das Device des Nutzers, es wird lediglich die Lösung des Rätsels mit dem privaten Schlüssel signiert und diese Signatur kann von der Website mit dem öffentlichen Schlüssel verifiziert werden.
Registrierung
Damit sich ein Nutzer mit seinen Passkeys bei einer Website authentifizieren kann, muss zunächst der öffentliche Schlüssel für den Nutzer auf dem Server der Website registriert, also gespeichert werden. Bestenfalls geschieht dies bereits bei der initialen Registrierung eines Nutzers, kann aber auch nachträglich durchgeführt werden. Bestehende Nutzerkonten müssen also nicht neu registriert werden (sofern der Website-Betreiber alles richtig macht). Die Animation zeigt wieder den schematischen Ablauf.
- Der Browser sendet eine Registrierungsanfrage an die Website.
- Diese antwortet mit den Bedingungen an eine Schlüssel-Generierung. Eine Bedingung kann z. B. die Verwendung eines bestimmten kryptographischen Algorithmus' sein.
- Kann der Browser die geforderten Bedingungen erfüllen, wird der Nutzer gefragt, ob für den angegebenen Nutzernamen ein Schlüsselpaar für diese Website erzeugt (generiert) und gespeichert werden soll.
- Diese Frage bestätigt der Nutzer wieder unter Verwendung eines zusätzlichen Faktors (z. B. Gesichtserkennung, Fingerabdruck etc.).
- Mit dem zusätzlichen Faktor wird dann wieder der Zugriff auf den sicheren Speicherbereich für den Browser freigegeben, in dem nun das neue Schlüsselpaar für die Website generiert und gespeichert wird.
- Im Anschluss sendet der Browser mit der Antwort den "öffentlichen" Schlüssel des Passkeys an den Server der Website, der diesen dann speichern kann. Der "private" Schlüssel verbleibt auf dem Gerät des Nutzers, dieser wird nicht verteilt!
Da mit dem "öffentlichen" Schlüssel alleine kein Missbrauch betrieben werden kann, ist es zudem nicht erforderlich, diesen auf der Serverseite zu hashen, wie es bei Shared Secrets wie Passwörtern der Fall ist.
Wie es weitergeht...
Im nächsten und letzten Teil dieser Serie werden wir uns die Vorteile der FIDO Passkeys genauer und detaillierter anschauen und diskutieren. Aber dort, wo Licht ist, ist bekanntermaßen auch immer mit Schatten zu rechnen, deshalb sollen auch etwaige Stolpersteine nicht verschwiegen werden. Zudem werden wir uns anschauen, wie die Verbreitung und Implementierung zum aktuellen Zeitpunkt auf Websites aussehen, wie das praktische Handling ist und warum wir vielleicht – trotz PassKEYS – den guten PassWORT-Manager doch noch nicht abschaffen sollten...