FIDO2, WebAuthn, Passkeys in 2022 und 2023

Zuletzt hat das Thema FIDO2 in IT-Medien und in der allgemeinen Wahrnehmung an Aufmerksamkeit gewonnen. Unter dem Strich befinden wir uns aber leider immer noch nicht an einem Punkt, an dem man großflächig auf Passwörter verzichten könnte - so wie wir uns die Zukunft der Authentifizierung vorstellen. Zweifelsfrei befindet sich FIDO2 auf einem guten Weg, dennoch gibt es noch für alle Beteiligten viel zu tun. Mit diesem Artikel versuchen wir die aktuelle Verbreitung und Unterstützung von FIDO2 einzuordnen und auch ein paar Hintergrundinformationen über die verschiedenen Standards und Begriffe zu geben.

FIDO2 - Historie und Varianten

Die FIDO Alliance veröffentlichte zunächst folgende Spezifikationen:

  • FIDO U2F - FIDO Universal Second Factor
  • FIDO UAF - FIDO Universal Authentication Framework
  • Später folgte die CTAP - Client to Authenticator Protocols

Zusammen mit dem W3C begann die Standardisierung, welche dann in ihrer finalen Version 2019 als Web Authentication (WebAuthn) offiziell zu einem W3C Web Standard wurde. CTAP sowie WebAuthn bilden zusammen den FIDO2 Standard. Zur Finalisierung des Standards wurde darüber hinaus FIDO U2F zu CTAP1 umbenannt - Gruß an die verwirrenden USB Benennungen. Die neueren Spezifikationen benutzen meist den Begriff CTAP1 bzw. FIDO U2F.

In den jeweiligen Spezifikationen werden verschiedene Komponenten und Implementierungsdetails beschrieben. So beschreibt CTAP die Kommunikation zwischen einem Computer und einem sogenannten externen Authentifizierer, Token oder Sicherheitsschlüssel, womit ein Gerät wie der Nitrokey 3 gemeint ist. WebAuthn beschreibt die Implementierung im Browser und interagiert mit CTAP, also mit dem entsprechenden Sicherheitsschlüssel. Präziser gesagt wird hier CTAP2 für WebAuthn benutzt, im Gegensatz zu CTAP1 bzw. FIDO U2F.

FIDO2 vs. FIDO U2F

FIDO U2F bezeichnet "Universal Second Factor", was die Kernfunktion und zugleich die Einschränkung des Standards beschreibt. FIDO U2F ist immer ein zweiter Faktor (2FA), d.h. in der Praxis benötigt man neben einem FIDO U2F Sicherheitsschlüssel immer noch einen weiteren Faktor, welcher zumeist das klassische Passwort ist. Grundsätzlich gilt: Jedes FIDO2-Gerät kann auch als FIDO U2F Gerät benutzt werden - zumindest jedes was wir bis heute in der Hand hielten.

FIDO2 hingegen kommt mit der zentralen Neuerung, dass nun ein FIDO2-Sicherheitsschlüssel nicht nur als zweiter Faktor benutzt werden kann, sondern auch das Passwort überflüssig machen kann. Technisch unterscheiden sich die Ansätze darin, dass i.d.R. FIDO U2F keine Daten auf dem Sicherheitsschlüssel hinterlegt, sondern der zweite Faktor z.B. kryptographisch, wiederholbar von einem Geräteschlüssel abgeleitet wird - der dann für einen 2FA Login verwendet werden kann. Wohingegen FIDO2 das Anlegen einer Identität auf dem Sicherheitsschlüssel möglich macht; diese bezeichnet man als Resident Key (RK) oder Discoverable Credential. Es handelt sich hierbei um einen kryptographischen Schlüssel der, anders als bei FIDO U2F, auf dem Sicherheitsschlüssel abgespeichert wird und zum Passwort-losen Login benutzt werden kann.

In der Praxis ist für den Benutzer meist nicht eindeutig sichtbar, welche der beiden Methoden benutzt wird. Jedoch kann man einige Details i.d.R. aus dem Registrierungs-Prozess ableiten:

  • Für einen zweiten Faktor, also ein FIDO U2F-basierter Login, wird keine "Benutzer Verifikation" bzw. Geräte-PIN benötigt. D.h. um den Sicherheitsschlüssel mit einem Dienst zu registrieren ist es nur nötig die sogenannte "User Presence" zu bestätigen, was in der Regel durch einen Knopfdruck auf dem Sicherheitsschlüssel geschieht (kapazitiver Sensor bei den Nitrokeys). Zum Login ist schließlich auch nur die "User Presence" zu verifizieren.
  • FIDO2 hingegen benötigt eine Form der "Benutzer Verifikation", im Falle der Nitrokeys ist dies stets eine PIN. Letztere wird auch für einen Login verwendet. (Insbesondere schlägt die Registrierung fehl, wenn zuvor kein PIN für den Sicherheitsschlüssel eingerichtet wurde.)

Wie angedeutet sind das aber nur Indikatoren und es ist möglich eine FIDO U2F Anmeldung mit "Benutzer Verifikation" zu realisieren (z.B. Facebook), also ist die PIN-Eingabe selbst noch kein eindeutiger Hinweis auf die verwendete Methode.

Beide Varianten lassen sich hervorragend auf der Webseite webauthn.io testen und nachstellen. Unter "Advanced Settings" kann man für die Registrierung und Authentifizierung wählen, ob man eine "Benutzer Verifikation" wünscht oder nicht ("Require User Verification"). Wie zuvor beschrieben: Wenn man beide Checkboxen aktiviert, dann wird FIDO2 benutzt und ein "Resident Key" auf dem Sicherheitsschlüssel hinterlegt, wozu man zur Eingabe der PIN aufgefordert wird. Deaktiviert man hingegen beide Checkboxen, dann wird FIDO U2F benutzt und es werden in der Regel keine Daten auf dem Sicherheitsschlüssel hinterlegt. Hierbei ist keine PIN-Eingabe notwendig, sondern lediglich eine Bestätigung der "User Presence".

Zu Beachten ist, dass diese Beschreibung vereinfacht ist und technisch nicht ins letzte Detail vollständig ist und es zahlreiche Untervarianten gibt. Dennoch kann man mit der Hilfe von webauthn.io ziemlich gut beide Methoden testen, wenn da nicht das Problem der Kompatibilität der Endgeräte bzw. Browser wäre...

Passkeys

Der recht neue Begriff Passkeys bezeichnet die Implementierung von Sicherheitsschlüsseln direkt auf den Endgeräten (Computer, Smartphone, Tablet) und nicht auf einem separaten physischen Sicherheitsschlüssel. Üblicherweise werden die Passkeys in einem Passwortmanager gespeichert, was deren Backup und Synchronisation zwischen mehreren Endgeräten ermöglicht. Dies reduziert die Einstiegshürde für Benutzer, da sie kein Geld für einen zusätzlichen Sicherheitsschlüssel ausgeben müssen. Dies kommt sicherlich dem Ziel entgegen, Passwörter bei Millionen oder Milliarden durchschnittlicher Internetnutzer abzulösen. Passkeys bieten jedoch gegenüber physischen Sicherheitsschlüsseln eine geringere Sicherheit. Glücklicherweise sind Passkeys kompatibel zu WebAuthn, so dass Webseiten lediglich einen Standard, nämlich die Unterstützung für WebAuthn implementieren brauchen und dann sowohl für Passkeys als auch für physische Sicherheitsschlüssel nutzbar sind.

Kompatibilität und Verbreitung

Man würde meinen, dass im Prinzip das Problem der Passwörter gelöst sei. Also wieso hat man immer noch hunderte (hoffentlich verschiedene) Passwörter für unzählige Webseiten und Dienste, die man irgendwie verwalten muss? Ganz einfach: FIDO2/U2F steht und fällt mit der Unterstützung durch Webseiten und Dienste. Darüber hinaus ist auch der Browser eine wichtige Komponente, die entsprechende Unterstützung für FIDO2/U2F mitbringen muss. Wohingegen die Sicherheitsschlüssel selbst ziemlich gut und auch von verschiedenen Herstellern verfügbar sind.

Webseiten und Dienste

Die FIDO U2F Unterstützung ist hier verhältnismäßig gut, während die FIDO2 Unterstützung noch ausbaufähig ist. So kann man bereits bei sehr vielen Diensten FIDO U2F nutzen, darunter sind unter anderem: Nextcloud, GitHub, Odoo, Gitlab, Facebook, Google uvw. Passwortlose Anmeldungen mittels FIDO2 finden sich vergleichsweise selten, z.b. bei Microsoft oder Nextcloud. Wir listen auf dongleauth.com eine Übersicht kompatibler Dienste auf. Wie man dort sieht, ist noch viel Platz nach oben. Als prominentestes Beispiel sei Amazon (d.h. der Markt, nicht AWS) erwähnt, welches mit seiner Marktmacht die Verbreitung von sicheren Logins durch FIDO2 oder 2FA unterdrücken. Auch Banken unterstützen leider kaum FIDO2 für Logins oder Zahlungsabwicklung, obwohl FIDO2 für PSD2 spezifiziert ist.

Erwähnenswert ist hier die inkonsistente Unterstützung. Microsoft bietet ausschließlich Passwortlose Authentifizierung mittels FIDO2 an. Nextcloud ist der einzige uns bekannte Dienst, der tatsächlich beides anbietet: FIDO U2F als einen zweiten Faktor für Logins und auch Passwortlose Anmeldungen mittels FIDO2. Letztere aber recht unüblich ohne PIN-Eingabe also als Ein-Faktor Authentisierung (zukünftig soll die PIN-Abfrage hinzu kommen). Wie zuvor schon angedeutet, macht Facebook etwas noch ungewöhnlicheres, indem nur FIDO U2F zusammen mit PIN Verifikation angeboten wird.

Schlussendlich ist die Sicherheit von jedem einzelnen Benutzer nur so gut wie es der Dienst zulässt, bzw. anbietet. Um hier voranzukommen sind auch die Benutzer gefragt: Verwendet FIDO wo es nur geht! Fordert "Eure" Webseiten auf, aktuelle Sicherheitsstandards wie FIDO2 umzusetzen! Damit wir morgen ohne Passwörter durch die digitale Welt kommen können.

Browser und Smartphones

Browser und Smartphones sind bzgl. FIDO2 eine große Baustelle. Ähnlich wie bei Webseiten und Diensten ist die FIDO U2F Unterstützung gut. Hier einmal zunächst eine (grobe) Übersicht:

  • Chromium, Chrome, und Edge haben generell eine sehr gute Unterstützung über alle Betriebssysteme hinweg.
  • Firefox hat vollständige Unterstützung unter Windows. Für macOS und Linux fehlte bis vor kurzem CTAP2/FIDO2 vollständig, was Mitte Januar 2023 mit Version 109 folgen soll.
  • Safari kommt mit einer vollständigen Unterstützung daher.
  • Opera kann laut Selbstbeschreibung auch mit vollständigem Umfang punkten.
  • iOS (NFC) kommt ebenfalls mit vollständigem Support daher.
  • Android Smartphones (NFC) kommen leider mit der massiven Einschränkung, dass keine PIN-Eingabe vorgesehen ist, so dass keine Resident Keys benutzt werden können, sondern lediglich FIDO U2F. So ist es unter Android möglich auf vielen Webseiten und Diensten einen FIDO U2F Sicherheitsschlüssel als zweiten Faktor zu hinterlegen. Erwartet der Dienst aber den FIDO2 Standard, also die Eingabe der PIN, so versagt Android vollständig, sogar über USB. Es gibt bessere Drittanbieter Bibliotheken, die eine vollständige Implementierung des Standards bereitstellen, aber die meisten Apps benutzen leider die von den Google Play Services bereitgestellten (unvollständigen) Funktionen.

Selbst für den informierten Benutzer ist das eine Zumutung. Es bleibt wohl auch noch auf absehbare Zeit das Geheimnis dieser marktbeherrschenden Unternehmen, warum sie nicht für den Endbenutzer die bestmöglichen Sicherheits-Standards realisieren.

Gerade die fehlende Unterstützung von FIDO2 durch Android und (aktuell noch) Firefox auf macOS und Linux sind besonders unangenehm für Benutzer. Insbesondere die Akzeptanz von FIDO2 Sicherheitsschlüssel als Passwortersatz wird durch diese fehlende Unterstützung stark erschwert. Das ist natürlich schädlich für die Akzeptanz und langfristigen Ziele von FIDO2, das Internet für den Benutzer sicherer zu machen.

Die Zukunft

Wie man gut erkennen kann werden wir kurzfristig nicht alle unsere Passwörter vergessen können. Aus diesem Grund wird es zukünftig Einmalpasswörter sowie einen Password Safe für den Nitrokey 3 geben, um weiterhin gewöhnliche Passwort-Logins zu unterstützen und für den Benutzer sicherer zu gestalten.

Sobald Android und Firefox FIDO2-Unterstützung erhalten werden, gibt es für Webseiten keine Gründe auf FIDO2 und passwortloses Login zu verzichten. Wir nehmen an, dass anschließend die Unterstützung von FIDO2 durch Webseiten stärker zunehmen wird.

Gleichzeitig dürfte die jüngst umgesetzte Unterstützung von Passkeys in den populären Betriebssystemen (Windows, macOS, iOS, Android) die Verbreitung von WebAuthn beflügeln.

FIDO2 hat noch wesentlich mehr Einsatzmöglichkeiten als die Anmeldung bei Onlinediensten. So kann man damit z.B. SSH Logins absichern und auf einem Linux System Logins oder Root-Rechte absichern. Dies und noch einiges mehr, wie man FIDO2 Sicherheitsschlüssel einsetzen kann um den Alltag sicherer zu gestalten, wird in einem der nächsten Artikel das Thema sein.

23.12.2022

Comments

Excelent overview! The info about the different names/terms should also be made available on docs dot nitrokey dot com
thanks, we are checking how to include these lines into the docs, maybe we'll just link this article to reduce redundancy.
Double that, thanks a lot for that great overview.
Thank you for this. Also directs me to the right people since I haven't been able to get my NK3 to work on my Angerdroid. Just want to note the strong negative correlation between software openness and Fido2 support. Android < iOS; Firefox < Edge, Safari & Chrome. Apache support... almost nonexistent. At least Linux has it mostly together... mostly.
Liebes Nitrokey-Team! Vielen Dank für diesen Artikel. Ich konnte den im letzten Absatz erwähnten Folgeartikel nicht finden - ist er noch nicht veröffentlicht? Mich würde interessieren wie man die passwortlose Authentifizierung an einem Linux-System mit einem FIDO2/3-Key einrichtet. Dafür würde eine pam_fido2 benötigt werden oder plant ihr eine pam_nitrokey?
Hey DD, die Inhalte sind noch nicht in einen Blog-Artikel erschienen, aber Linux Logins über FIDO2 haben wir bei uns in der Dokumentation beschrieben. Kann ich sehr empfehlen, insbesondere auch für `sudo` authentifizierung.
Wie sieht denn *heute* (Ende 2023) die Passkey Unterstützung für die beiden schwächelnden Kandidaten (Firefox, Android) aus? Hat sich etwas getan, um das volle Nitrokey 3 Potenzial nutzen zu können? Ansonsten vielen Dank für den informativen Blogpost!
Hey, ja auf der Seite von Firefox sieht das alles besser aus. Volle FIDO2 Unterstützung (technisch CTAP2) wurde Anfang des Jahres hinzugefügt, soweit ich weiß ist diese auch standardmäßig aktiviert. (about:config -> security.webauthn.ctap2) Vereinzelt haben wir von Fällen gehört bei denen es nötig war das man diesen auch mal wieder ausschaltet damit bestimmte Dienste funktionieren. Ich würde dies aber als die üblichen Kompatibilitäts-/Kinderkrankheiten bezeichnen - hier sieht es also doch sehr positiv aus. Bei Android hingegen, kann man im Artikel verlinken Bugtracker ein wenig Aktivität sehen und am Ende steht auch ein Hinweis auf einen Changelogeintrag der Hoffnung macht - ob das nun aber wirklich das meint was nötig wäre für vollen FIDO2 support, kann ich leider nicht sagen, genausowenig ab wann das tatsächlich auf Endgeräten landet.

Add new comment

Fill in the blank.