Das Thema MFA, war ja hier schon häufiger im Fokus. Nachdem ich im Juni 2022 meinen Nitrokey 3C NFC bestellt habe, wurde dieser ausgerechnet am Welt-Passwort-Tag am 04. Mai 2023 geliefert. Die Lieferverzögerungen wurden zumindest im Blog von Nitrokey transparent dargestellt.
Bisher
In der Vergangenheit habe ich viel TOTP genutzt. Vor allem nach dem Artikel MFA – Mehr Freude am Authentifizieren oder Möglichst Fehlerhafte Authentifizierung bin ich konsequenter geworden. Die sehr lange Liste in meiner Authenticator App und vor allem verschiedene Codes für den selben Dienst (bspw. mehrere unterschiedlich privilegierte Zugänge für AWS oder für meinen Blog) haben es immer etwas nervig gemacht den richtigen Code zu finden und abzutippen. Vielleicht hätte ein Wechsel der Authenticator App etwas gebracht, aber das steht weiterhin auf der ToDo-Liste.
Begriffe
Laut ChatGPT sind folgende Begriffsunterscheidungen relevant:
- WebAuthn: WebAuthn steht für Web Authentication und ist ein offener Webstandard, der von der World Wide Web Consortium (W3C) entwickelt wurde. Es ermöglicht eine starke, sichere und benutzerfreundliche Authentifizierung im Web, ohne dass Passwörter verwendet werden müssen. Mit WebAuthn können Benutzer ihre Identität verifizieren, indem sie verschiedene Authentifizierungsmethoden verwenden, wie beispielsweise biometrische Daten (z. B. Fingerabdrücke) oder Sicherheitsschlüssel (z. B. USB-Sicherheitsschlüssel).
- FIDO2: FIDO2 ist ein Sicherheitsstandard, der von der FIDO (Fast Identity Online) Alliance entwickelt wurde. FIDO2 basiert auf WebAuthn und umfasst sowohl WebAuthn als auch CTAP (Client to Authenticator Protocol). CTAP ermöglicht die Kommunikation zwischen einem Webbrowser und einem externen Authentifizierungsgerät, wie einem Sicherheitsschlüssel. FIDO2 erweitert die Unterstützung für starke, kennwortlose Authentifizierungsmethoden über verschiedene Plattformen hinweg und bietet eine erhöhte Sicherheit gegenüber herkömmlichen Passwortmethoden.
- Passkey: Der Begriff Passkey bezieht sich im Allgemeinen auf einen eindeutigen Code oder eine Kombination von Zeichen, die zur Authentifizierung oder zur Autorisierung von Benutzern verwendet werden. Eine Passkey kann ein Kennwort, eine PIN oder ein Passcode sein. Im Zusammenhang mit Sicherheitsschlüsseln oder drahtlosen Geräten kann eine Passkey als ein Sicherheitsmechanismus verwendet werden, um eine sichere Verbindung zwischen Geräten herzustellen. Eine Passkey kann auch bei der Zwei-Faktor-Authentifizierung eingesetzt werden, um die Sicherheit bei der Anmeldung zu erhöhen.
Zusammenfassend lässt sich sagen, dass WebAuthn ein offener Webstandard ist, der die Authentifizierung im Web ermöglicht, während FIDO2 ein Sicherheitsstandard ist, der auf WebAuthn aufbaut und eine kennwortlose Authentifizierung über verschiedene Plattformen hinweg unterstützt. Passkey ist ein allgemeiner Begriff für einen eindeutigen Code oder eine Kombination von Zeichen, die zur Authentifizierung oder Autorisierung verwendet werden können und auch im Zusammenhang mit Sicherheitsschlüsseln Verwendung finden können.
Ich gebe mir Mühe die Begriffe nachfolgend immer korrekt anzuwenden. Heise hat übrigens dazu einen guten Artikel veröffentlicht.
Erster Eindruck
Auf den ersten Blick macht der Nitrokey einen robusten Eindruck. Der USB-C-Stecker sitzt beim Einstecken relativ fest, aber das ist mir lieber als zu locker. Eine Schutzkappe würde mir ein besseres Gefühl geben, ist aber nicht erforderlich. Ich habe einen Adapter für USB-C auf USB-A drangesteckt – den kann man ja immer gebrauchen.
Leider lässt sich der Nitrokey nicht über USB-C an mein Smartphone anschließen, ohne die Hülle unten abzunehmen. Das liegt aber nicht am Nitrokey, sondern an der Hülle. Gut dafür habe ich (theoretisch) die Version mit NFC bestellt.
Erste Einrichtung und allgemeines Prinzip
Grundsätzlich ist der Sicherheitsstick sofort einsatzbereit. Ich habe zwar die Nitrokey App 2 installiert, aber nur um zu erfahren, dass die aktuelle Firmware bereits installiert war. Es gibt einige hilfreiche Links www.nitrokey.com/start und der Guide für Windows, aber man muss vor der Nutzung nicht viel lesen.
Bei der ersten Einrichtung bei einem Webservice erkennt das Betriebssystem, bzw. der Browser, dass noch keine PIN vergeben wurde und fordert den Nutzer zur Einrichtung einer PIN auf.

Auch sonst ist der Prozess durch den Browser bzw. das Betriebssystem gesteuert. Bei der Einrichtung wählt man die Option Sicherheitsschlüssel aus, gibt die PIN ein und bestätigt das physisch am Sicherheitsschlüssel durch Berühren. Beim ersten Mal habe ich das Berührungsfeld meines YubiKey vermisst, aber ohne ist es sogar besser.
Im Prinzip ist es das selbe bei der Nutzung, nur dass der Sicherheitsschlüssel dann als Anmeldeoption direkt angezeigt wird.
Ich muss nur aufpassen, da Windows Hello auch als Passkey hinterlegt ist und man den Sicherheitsschlüssel als zweite Option sieht. Spätestens nach dem Hinweis der falschen PIN fällt es auf.
Mittlerweile gibt es das Update auf die Firmware 1.5.0, aber das Update mit der Nitrokey App 2 ist trivial. Einzig, dass die App nach dem Update noch die alte Firmwareversion anzeigt und selbst neu gestartet werden muss, sorgte für einen kurzen Moment der Verwirrung.
Test mit Google
Da Google Anfang Mai den Support von Passkeys beworben hat und ist damit prädestiniert für den ersten Test. Außerdem halte ich den Google-Account für einen der schützenswertesten. Die Einrichtung ist sehr intuitiv.
Bei Google gibt es die Besonderheit, dass bereits jedes angemeldete Android-Gerät als Passkey hinterlegt ist und eine neue Anmeldung auf einem der Geräte bestätigt werden muss (ChromeOS ist mir nicht aufgefallen).
Generell hat Google eine sehr lange Liste an möglichen zweiten Faktoren bzw. zur Kontowiederherstellung nach vergessenem Passwort (SMS, andere Mailadresse, Wiederherstellungscodes etc.). Hier lohnt es sich unter Umständen frühere alte Methoden zu entfernen (ich habe meine Telefonnummer entfernt).
Google bietet an, dass der Nutzer entscheiden kann, ob zusätzlich zum Passkey ein Passwort erforderlich ist oder nicht. In jedem Fall muss ich aber die E-Mail-Adresse zur Identifizierung als ersten Schritt angeben. WebAuthn könnte auch diesen Schritt überflüssig machen.

Test mit Microsoft
Microsoft hat mit Hello und der Nutzung der PIN des Windows-Accounts bereits seit langen eine Passkey-Lösung in Windows integriert.
Microsoft unterscheidet zwischen USB- und NFC-Sicherheitsschlüssel. Eine Nutzung von NFC ist bei meinem Laptop nicht möglich, daher habe ich USB verwendet. Mal sehen, ob NFC später trotzdem genutzt werden kann.

Wie bei Google gibt es in der Authenticator-App viele Hinweise und Warnungen beim Einrichten von Sicherheitsschlüsseln – sehr vorbildlich.

Aus meiner Sicht macht Microsoft etwas richtig, was ich bei Google vermisst habe: WebAuthn ermöglicht eine Anmeldung ohne Angabe des Accounts (bspw. der E-Mailadresse) und genau das passiert. Beim Login gebe ich statt der E-Mail an, dass ich den Sicherheitsschlüssel nutzen möchte und schon kommt das übliche Passkey-Fenster, welches mir Hello oder den FIDOI2-Sicherheitsschlüssel anbietet. So habe ich mir das vorgestellt. Bei Google kam diese Option erst nach der Identifizierung.
Entsprechend kommt natürlich auch eine Fehlermeldung bei einem nicht registrierten Sicherheitsschlüssel.
Eine Kennwortlose Anmeldung ist auch hier möglich.FIDO2 Sicherheitsschlüssel
NFC unter Android
Der Test der NFC-Funktion auf dem Smartphone war nicht trivial und bisher nicht erfolgreich. Sowohl mit Firefox als auch mit Chrome hatte ich keinen Erfolg. Unter Android möchte Google lieber den Passkey des Google-Accounts auf dem Android-Gerät nutzen und fordert direkt den Fingerabdruck an.
Auf einem anderen Android-Gerät (mit einem anderen Google-Account) findet er gar keinen zugehörigen Passkey (weil der Google-Account des Gerätes ein anderer ist al der, mit dem man sich anmelden möchte) und kommt gar nicht auf die Idee nach dem Sicherheitsschlüssel zu fragen.
Auch Microsoft bietet diese Anmeldung auf meinem Android-Gerät gar nicht an und es ist keine Anmeldung auf dem Android-Gerät möglich.
Zusätzlich zum Firefox unter Android habe ich auch Chrome ausprobiert. Beim Google-Account war die Anmeldung im Chrome witzlos, da ich dort ja bereits über das OS angemeldet bin.
Alles in allem hatte ich also keinen Erfolg. Auch die Nutzung über USB statt NFC war gar nicht möglich.

Test auf dem iPhone
Um es kurz zu machen: Da die NFC-Schnittstelle bei Apple zu ist und die USB-C auf Lightning-Stecker auch eher schlecht funktionieren ist der Hauptvorteil, dass man sich von vornherein die Zeit zum Ausprobieren spart. Das Resultat ist aber das gleiche.
Ich vermute Passkeys auf Basis des OS werden sich auf mobilen Geräten eher durchsetzen als FIDO2-Sicherheitschlüssel. Schade eigentlich.
AWS
In AWS ist das Einloggen des Stammbenutzers leider immer sehr nervig (mit Absicht?). Da ich in AWS mehrere Zugänge für verschiedene Dienste mit unterschiedlichen Privilegien habe, wäre ein FIDO2-Sicherheitsschlüssel in der Theorie eine gute Sache.
In der Realität sieht die Anmeldung danach so aus:
- E-Mail-Adresse
- Captcha-Code
- Passwort
- Sicherheitsschlüssel des FIDO2-Sticks ODER den Code aus der TOTP-App
Das ist etwas bequemer, aber ich würde trotzdem gerne auf das Passwort oder zumindest das Captcha verzichten.

Test in der Fläche
Voller Tatendrang wollte ich nun einige Dienste mit FIDO2 bzw. WebAuthn absichern, aber Pustekuchen. Vor allem Dienste, die ich auch mal am Arbeits-PC nutzen wollen würde, weil eine duale Nutzung Sinn macht, wären so ideal. Diese Dienste nicht nur mit einem zweitem Faktor abgesichert zu nutzen, sondern ohne Passwort (das ja irgendwie von meinem KeePassXC auf den Arbeits-PC kommen muss (oder gar ohne Angabe des Anmeldenamens, bzw. der E-Mail-Adresse) wäre perfekt. Leider bieten weder LinkedIn noch Xing dies bisher an.
Mein MFA-Plugin für WordPress kann mit WebAuthn noch nicht umgehen, aber ich installiere mir nicht so leichtfertig zusätzliche Plugins.
Weitere Pläne
Der Schutz des KeePassXC-Containers ist noch geplant, hat aber ad hoc nicht funktioniert. Seitens NitroKey ist das in der aktuellen Firmware möglich. Demnächst möchte ich noch die Funktion für PGP testen.
Zusammenfassung
Das Hauptproblem von WebAuthn und FIDO2 ist aus meiner Sicht noch immer die unzureichende Verbreitung. Auf https://www.dongleauth.com/ oder https://passkeys.directory/ gibt es schöne Übersichten. Meiner Meinung nach könnten Passkeys hier erfolgreicher sein.
Ich bevorzuge einen separaten Sicherheitsschlüssel in Hardware und eine Lösung unabhängig von einem Ökosystem. Die Passkey-Lösung im Betriebssystem ist natürlich bequemer, aber eben nur auf einem Gerät. Die geplanten Synchronisationen sind für mich eher eine neue Schwachstelle als eine Lösung.