
FIDO2 ist momentan in aller Munde. Der neue Standard der Allianz für Fast IDentity Online (FIDO) entwickelt sich zu einer echten Alternative für die unbeliebten Passwörter. Und weil der FIDO2 Standard auch vom World Wide Web Consortium (W3C) favorisiert wird, sollte man diesen nun auch mal genauer betrachten.
Wie funktioniert Fido2?
Passwörter haben immer den Nachteil, dass sie nur sicher sind, solange sie eine Geheimnis sind. Die ganze Idee der Password Authentisierung basiert auf dem Konzept, das ich einem Dienst mein Geheimnis verrate, und dieser das Geheimnis überprüfen kann. Es wird zum Beispiel ein Hash (eine Art Quersumme) aus dem Passwort gebildet und dieser mit einem abgespeicherten Hash verglichen. Bei einem geeigneten Hashalgorithmus kann ich bei identischen Passwordhashs sagen, das gelieferte Passwort und das gespeicherte Passwort, bzw. der Hash sind identisch. Das Problem: mein Passwortgeheimnis ist schwierig zu verwalten. Ich kann es vergessen, oder jemand kann es einfach ausspionieren und dann selbst nutzen. Manchmal geht es auch einem Serverbetreiber bei einem Hackerangriff verloren.
FIDO geht einen anderen Weg. Das Geheimnis wird auf einem Sicherheitschip verwaltet, FIDO nennt die Kombination von einen Sicherheitsschlüssel und der Software einen Authenticator. Das kann ein externes Token oder ein Platform Authenticator, wie in Windows 10 oder auch Android sein. Jede einzelne FIDO Identität hat eine individuelles Geheimnis, eine zufällige Zahl, die nicht ausgelesen werden kann. Aus diesem sicheren Geheimnis erstellt der Authenticator bei der Anmeldung und der Registrierung für einen Dienst ein asymmetrisches Schlüsselpaar. Den geheimen Schlüssel (private key) errechnet der Authenticator aus der Domäne des Webdienstes und seinem eigenem Geheimnis. Daraus lässt sich dann einfach der öffentliche Schlüssel (public key) ableiten.
Der Authenticator muss die Krypto-Schlüssel eines Dienstes also nicht speichern. Er kann sie sich immer wieder bei Gebrauch neu errechnen! Ein Webdienst speichert bei der Registrierung nur den Public Key in der Cloud. Das Geheimnis bleibt sicher bei mir.
Bei jeder Anmeldung an einem Dienst schickt der angefragte Server eine Authentifizierungsaufforderung (Challenge) in Form einer zufälligen Zahl an den Authenticator. Diese Zahl wird mit dem zum Dienst passenden geheimen Schlüssel digital unterschrieben und zurückgesendet. Der Server kann dann die digitale Unterschrift mithilfe des bei der Registrierung hinterlegten öffentlichen Teil meines Schlüssels überprüfen. Stimmen die Daten überein, so kann der Dienst sicher sein, dass ich mich tatsächlich angemeldet habe.

Ist FIDO sicher?
FIDO macht einiges anders und hat gute Ansätze dem lästigen Thema Abhören, Phishing und Passwortdiebstahl Paroli zu bieten. Bei jeder Anmeldung wird eine andere Challenge übertragen und signiert. Damit ist ein Belauschen auf der Leitung nutzlos. Und selbst wenn die Verbindung mitgeschnitten wird, so ist das Geheimnis nie über die Leitung gegangen. Replay-Attacken sind unmöglich. Das Passwort selbst wurde nie übertragen.
Hacker, die große Passwortdatenbanken gestohlen haben, werden mit den öffentlichen Schlüsseln nichts anfangen können, denn das Geheimnis liegt beim Anwender in einem Sicherheitsschlüssel.
Und ein Trojaner, der meinen Sicherheitsschlüssel von meinem Computer klauen möchte, kommt nicht an den Sicherheitsschlüssel. Dieser ist sicher im Chip gespeichert und lässt sich nicht extrahieren. Sollte ein Trojaner versuchen unbemerkt im Hintergrund eine Anmeldung mit einem FIDO Schlüssel zu erzwingen, so wird dieses nicht unbemerkt bleiben. Der Standard erfordert, dass die Sicherheitsschlüssel bei Verwendung eine Überprüfung durch den Anwender anfordern. Dazu blinken die Tokens, wenn eine Anforderung zur Berechnung eines Schlüssels vorliegt . Und erst wenn der Anwender die goldene Kontaktfläche berührt wird dieses als Zustimmung akzeptiert. Der Standard nennt dieses „User Present“ (UP). Für erhöhte Sicherheitsanforderungen können sogar komplexere Bestätigungen, wie eine PIN oder ein biometrisches Merkmal verlangt werden. Android und Windows 10 nutzen dieses Art von Personenüberprüfung („User Verification“, UV) um zu verhindern, das ein gestohlener Sicherheitsschlüssel von einer fremden Person missbraucht wird.
Ich finde die einzige Schwachstelle im Konzept von FIDO is die Gefahr, das mir mein Schlüssel gestohlen wird. Je mehr Dienste auf FIDO umstellen, desto mehr Identitäten werden sich auf meinem Schlüssel befinden. Man wird einfach diesen Schlüssel genauso schützen müssen wie den eigenen Hausschlüssel. Der Ansatz von Windows, den Sicherheitsschlüssel zusätzlich mit einer Windows Hello Abfrage zu schützen, verhindert wirkungsvoll den Missbrauch. Insgesamt wird mit FIDO die Hürde für einen Identitätsdiebstahl sehr hoch gelegt. Ein Angriff aus der Ferne nur über das Internet ist mit FIDO nicht mehr möglich!