FIDO2, U2F, Windows Hello

Benutzername und Kennwort werden schon sehr lange zur Authentifizierung von Anwendern genutzt. Und sicher genauso lange versuchen andere Menschen diese Daten in Erfahrung zu bringen, sei es durch "Cracking", d.h. viele Versuche ausprobieren, durch ausspähen (Keylogger und Co) oder Phishing (Anwender geben die Daten auf einer untergeschobenen Webseite o.ä. ein). Das gelingt auch erschreckend oft und die daraus resultierenden Schäden gehen in die Millionen oder gar Milliarden.

Herausforderung

Die Anmeldung per Benutzername und Kennwort ist einfach umzusetzen und einfach zu verstehen. Sie ist natürlich unsicher, da diese Paarung einfach "kopiert" werden kann. Das passiert sowohl auf dem Client durch Viren und Keylogger oder auf dem Kabel bei unverschlüsselten Übertragungen oder "Man in the Middle"-Angriffen. Am häufigsten aber sind Einbrüche bei Firmen der Weg, über den Anmeldedaten in großen Mengen ohne Verschulden des Anwender veruntreut werden. Viele Anbieter sichern ihre Benutzerdatenbanken mit den Anmeldedaten nicht oder zu schwach. Lange als sicher geltende Hash-Werte können heute dank "Cloud Rechenleistung" und spezialisierten CPUs in überschaubarer Zeit geknackt werden.

Auch E-Mails mit Links zu solchen Phishing-Seiten werden immer wieder bei Mitarbeitern von Firmen aber auch Privatanwendern zugestellt. Spamfilter können diese Mails nur dann erkennen, wenn Sie schlecht gemacht sind. Ansonsten bemühen sich die Angreifer die üblichen Prüfungen (IP-Listen, SPF,DKIM, DMARC u.a.) zu bestehen und selbst die Webseite wird besonders vorbereitet, indem Sie einen ähnlich klingenden Namen hat, per SSL abgesichert ist und der Schadteil erst aktiviert wird, wenn die Mail anscheinend zugestellt wurde.

Wir werden also damit leben müssen, dass solche Angriffe auch in Zukunft passieren und Anwender darauf hereinfallen. Natürlich können Sie Mitarbeiter trainieren und sensibilisieren aber einen 100% Schutz bietet das nicht.

Dieser Abschnitt gibt es so auch auf Login ohne Kennwort, da die Herausforderungen identisch sind.

Der zweite Faktor mit FIDO2-Key

Letztlich läuft es darauf hinaus, die Zugänge zu reduzieren und besser zu schützen. Es muss in der ersten Stufe zumindest von Extern verhindert werden, dass allein ein Zugriff mit Benutzername und Kennwort möglich ist. Ein weiterer Faktor kann die IP-Adresse sein (z.B. bei Niederlassungen), eine VPN-Verbindung mit Client Zertifikat, ein Benutzer-Zertifikat, ein Einmal-Token, ein Smartphone mit einer App o.a. Aber letztlich mache jeder Dienst und Service wieder das eigenes und erst durch den Zusammenschluss mehrerer Internetfirmen konnte sich mit FIDO ein Standard entwickeln, den mehr oder minder alle großen Anbieter unterstützen.

In der ersten Version haben nur Browser einen FIDO/U2F-Schlüssel unterstützt. Sie kaufen sich einen entsprechenden Key (ca. 5-50€ je nach Funktionsumfang). Es gibt jede Menge Hersteller und die Liste hier ist nicht repräsentativ. Zudem entwickeln sich die Produkte schnell weiter.

Hinweis: Nicht alle unterstützen den CTAP2-Standard, um damit sich auch an Windows selbst anzumelden. Die Google Titan-Keys unterstützen nur Fido/U2F und nicht Fido2. (Stand Feb 2020)

Microsoft führt hier folgende Hersteller auf (Stand Jan 2020)

Noch nicht aufgeführt aber vermutlich auch funktionstüchtig:

Jeder Schlüssel hat ein Geheimnis, quasi einen privaten Key und der verlässt nie den Schlüssel. Ein Browser kann aber den dazugehörigen öffentlichen Schlüssel abrufen und an den Anbieter übertragen. So wird der Schlüssel mit dem Anbieter verbunden. Damit nicht alle Anbieter den gleichen öffentlichen Schlüssel kennen und damit eine Zusammenführung der Identitäten möglich ist, kommt auch der Hostname der URL mit in die Rechnung.

Nach der Paarung kann der Anwender sich weiterhin per Benutzername und Kennwort an den Dienst wenden, der dann aber dem Browser z.B. eine Zufallszahl liefert. Dieser Wert wird mit dem Hostnamen an den Schlüssel übergeben und der Schlüssel erwartet eine Bestätigung von ihnen als Anwender. Das kann ein Druck auf einen Taster oder auch ein Fingerabdruck als höhere Sicherheit sein. Der Schlüssel braucht aber ihre Mithilfe und signalisiert auch, wenn eine Webseite diese Authentifizierung anfordert.

Der Schlüssel signiert dann den Wert und sendet ihn zurück. Der Browser sendet den Wert an die Webseite weiter, welche mit dem früher hinterlegten öffentlichen Key nun die Signatur prüfen kann und so die Beziehung zu diesem Schlüssel herstellt. Es bietet sich an, eventuell einen zweiten "Backup-Schlüssel" mit dem Dienst zu verbinden, denn Schlüssel gehen auch mal verloren oder kaputt. Die beiden Schlüssel haben natürlich nicht das gleiche Geheimnis.

Durch eine weitere Komponente, von der ein Angreifer erst mal nichts weiß, kann er sich nicht mehr anmelden und die Zugangsdaten missbrauchen. Der Anmeldedienst selbst kann aus einer "halben Anmeldung", d.h. Benutzername und Kennwort stimmt aber dann geht es nicht weiter, sogar das Konto sperren oder den Anwender zur Änderung des Kennworts auffordern oder zwingen. Denn schließlich ist es ja wohl nicht mehr der einzige Besitzer dieser Zugangsdaten.

Windows Anmeldung mit FIDO2

Eine Anmeldung an Facebook, Twitter, GitHub, Google etc. wird quasi immer mit einem Browser ausgeführt und da ist es relativ einfach und vor allem interessant, über so einen lokalen Key eine zweite Authentifizierung bereit zu stellen. Für Firmen gibt es schon sehr lange andere Lösungen wie z.B. RSA-Tokens, Smartcards etc. für die Absicherung von Fernzugängen, Webseiten etc.

Microsoft ist aber nicht nur in der FIDO-Alliance aktiv um seine Cloud-Dienste für Unternehmen (Office 365) und Privatpersonen (Hotmail, Outlook.com) und natürlich den Zukauf "GitHub" zu sichern. Auch für das Betriebssystem Windows selbst gibt es mittlerweile entsprechende Anknüpfungspunkte. Hier sind zwei Ansichten zu unterscheiden:

  • Windows als Token für Cloud-Dienste
    Warum sollte ich bei der Anmeldung im Browser bei GitHub o.ä. immer erst ein Hardware-Token in meinem PC stecken, wo doch der Computer selbst mit TPM-Chip, Bitlocker und Windows mit meiner Anmeldung eine gewisser "Faktor" spielen kann. Ein Windows Desktop kann mittlerweile auch ein FIDO-kompatibles Token für einen Browser virtuell bereitstellen, so dass ich keine USB-Sticks auf diesem PC mehr benötige. Für den Anwender ändert sich quasi nur etwas, wenn er sich auf einem "fremden PC" anmelden. Für einen Angreifer auf dessen PC gilt das natürlich auch. Ein Angreifer sollte natürlich nicht den "vertrauenswürdigen PC" gleich mit übernehmen. Dann ist es aber auch kein vertrauenswürdiger PC mehr. Hier hilft es dann sich am PC eben nicht mehr mit dem Kennwort anzumelden sondern mit einer PIN, Fingerbadruck o.ä. ,dass das Kennwort nicht mehr genutzt wird.
  • Tokens als Anmeldefunktion für Windows
    Umgekehrt kann ich natürlich die Anmeldung an Windows selbst über ein FIDO-Token zusätzlich absichern. Wenn ich eh schon ein Token für die Anmeldung an Diensten im Internet habe, dann kann das auch meine Windows Anmeldung besser absichern. Es gibt natürlich auch Notebooks mit Windows Hello, bei denen mein Fingerabdruck gescannt oder mein Gesicht mit Tiefenkameras und Infrarot erfasst werden. Aber das muss pro PC eingerichtet werden und eignet sich eher für den "persönlichen" PC, mit dem ich alleine und dauernd arbeite. Es gibt aber auch Orte, an denen mehrere Personen sich einen Computer im Schichtdienst teilen.

Die entsprechenden Anmeldeoptionen sehen Sie in den Windows Einstellungen:

Sie benötigen natürlich einen "passenden" Schlüssel, der von Windows auch unterstützt wird. Für viele Umgebungen wird ein FIDO2-Device reichen, da es schon mal eine sichere Anmeldung an anderen Diensten wie z.B. Webseiten per Browser erlaubt. Für eine Anmeldung an Windows selbst müssen sie aber genauer hinschauen, denn nicht jeder "Fido-Key" eignet sich auch für die Anmeldung am Windows Desktop. Achten Sie hier auf die Unterstützung des CTAP2-Protokolls. Einige dieser besseren Schlüssel können zudem auch eine Smartcard abbilden, d.h. sie können dort Zertifikate hinterlegen. Damit stehen ihnen dann weitere Anwendungen offen.

Zum Testen eines Fido-Sticks per Browser bietet sich folgende Webseite an.

Dann bleibt ihnen nur noch die Wahl eines passenden Sticks. Die gib es von verschiedenen Herstellern und unterschiedlichen Ausführungen (NFC, USB-A, USB-C) und Funktionsumfängen. Die einfachsten Sticks beginnen schon unter 10 Euro und im Bereich 25-50€ finden Sie dann auch CTOR2-Sticks. Eine Empfehlung kann ich hier aber nicht abgeben.

Fido und AzureAD

Natürlich sind nicht nur GitHub, Google, Facebook und Co mit Fido-Schlüsseln abzusichern. Auch Microsoft spielt eine aktive Rolle. Sie können Zugänge zum Azure Active Directory besser absichern.

Achtung: FIDO2-Sticks sind für "Passwordless SignOn" mit AzureAD P1/P2-Lizenzen möglich. Mit AzureAD Basic gibt es Einschränkungen. Testen Sie ihre Key ehe sie große Menge kaufen

Danach muss der Benutzer natürlich noch den FIDO2-Stick einrichten. Dazu muss er auch die Portalseite gehen. Früher war das noch https://aka.ms/mfasetup aber dieser Link geht noch auf die alte Seite. Besser ist der Weg über folgende URL:

Dort können Sie den Key einrichten und später dann nutzen. Ich erspare mir hier eine Bilderserie, die sich auch immer wieder schnell ändern dürfte. Im November 2019 war die Beschreibung auf folgenden Blog recht umfangreich

Allerdings sind viele Schritte auch selbsterklärend.

Multi-Factor Passwordless Login with YubiKey 5 NFC
https://www.youtube.com/watch?v=FUrOHAWKwIo 

FIDO mit lokalem AD

Interessant wird es, wenn Sie mithilfe von AzureAD auch die Anmeldung an ein lokales AD besser absichern können. Das folgende Bild und insbesondere der Vortrag auf der Ignite 2019 erklärt, was da im Hintergrund passiert:


Quelle: Ignite 2019 "Leverage the cloud to strengthen your On-Premises Active Directory security"
https://myignite.techcommunity.microsoft.com/sessions/81961

Auf diesen Aspekte gehe ich in der Zukunft sicher noch einmal genauer ein, nachdem ich damit praktische Erfahrungen gesammelt habe.

OneTime Token und RFC 6238

Es gibt mittlerweile eine ganze Gruppe von Geräten, die MultiFaktor mit Schlüssel bereitstellen. Interessant kann hier auch ein OneTime Token sein. Klassisch mit einer z.B. 6-stelligen Nummer, die sich alle 30 Sekunden ändert.

Interessant könnte es sei, wenn die Schlüssel ihr OTP auch per NFC samt einer "ID" bereitstellen würden. So könnte dann auch ein Zugangskontrollsystem den gleichen Token verwenden.

Weitere Links