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.
Beachte dazu auch die Seite Azure MFA und Radius/NPS und MFA und OnPremises
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)
- What is a Microsoft-compatible security key?
https://docs.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/microsoft-compatible-security-key - FIDO2-Sicherheitsschlüsselanbieter für
Passwordless
https://learn.microsoft.com/de-de/azure/active-directory/authentication/concept-authentication-passwordless#fido2-security-key-providers - Passwordless authentication options for Microsoft Entra ID
https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-authentication-passwordless#fido2-security-keys - FIDO2 security key providers
https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-authentication-passwordless#fido2-security-key-providers - Yubico https://www.yubico.com/support/contact/
- Feitian https://www.ftsafe.com/about/Contact_Us
- HID https://www.hidglobal.com/contact-us
- Ensurity https://www.ensurity.com/contact
- eWBM https://www.ewbm.com/support
- AuthenTrend https://authentrend.com/about-us/#pg-35-3
Noch nicht aufgeführt aber vermutlich auch funktionstüchtig:
- Solokeys
https://solokeys.com/ - Nitrokey
https://www.nitrokey.com/de
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.
- FIDO 2.0: Client To Authenticator
Protocol
https://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-client-to-authenticator-protocol-v2.0-rd-20170927.html - Client to Authenticator Protocol (CTAP)
https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html - Configuring two-factor authentication
https://help.GitHub.com/en/GitHub/authenticating-to-GitHub/configuring-two-factor-authentication#configuring-two-factor-authentication-using-a-security-key - WebAuthnIO
https://webauthn.io/
Testseite, um 2FA mit Browser und unterschiedlichen Endgeräten zu testen. - Solokeys Hardware (Open Source)
https://GitHub.com/solokeys/solo-hw - SoloKeys NFC Guide
https://static.solokeys.com/en/start/let-s-start/
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.
https://webauthndemo.appspot.com/
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.
- Windows Hello and FIDO2 Security Keys enable secure and easy authentication
for shared devices
https://www.microsoft.com/en-us/microsoft-365/blog/2018/04/17/windows-hello-fido2-security-keys/ - Windows Hello FIDO2 certification gets you closer to passwordless
https://techcommunity.microsoft.com/t5/Windows-IT-Pro-Blog/Windows-Hello-FIDO2-certification-gets-you-closer-to/ba-p/534592 - Microsoft Achieves FIDO2 Certification for Windows Hello
https://fidoalliance.org/microsoft-achieves-fido2-certification-for-windows-hello/ - Anmeldung ohne Passwort: "Windows Hello" wird zum FIDO2-Authenticator
https://www.heise.de/security/meldung/Anmeldung-ohne-Passwort-Windows-Hello-wird-zum-FIDO2-Authenticator-4418470.html - Windows Hello und Datenschutz
https://support.microsoft.com/de-de/help/4468253/windows-10-sign-in-options-and-privacy#managesecuritykey - FIDO 2.0: Client To Authenticator Protocol
https://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-client-to-authenticator-protocol-v2.0-rd-20170927.html - All about FIDO2, CTAP2 and WebAuthn
https://techcommunity.microsoft.com/t5/Identity-Standards-Blog/All-about-FIDO2-CTAP2-and-WebAuthn/ba-p/288910
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:
https://myprofile.microsoft.com/
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
- How to enable FIDO2 password-less
authentication with Microsoft Azure AD for
use with Windows 10 and SaaS web apps
https://www.jasonsamuel.com/2019/09/18/how-to-enable-fido2-password-less-authentication-with-microsoft-azure-ad-for-use-with-windows-10-and-saas-web-apps/
Allerdings sind viele Schritte auch selbsterklärend.
Multi-Factor Passwordless Login with
YubiKey 5 NFC
https://www.youtube.com/watch?v=FUrOHAWKwIo
- How-to: Password-less FIDO2 Security Key
Sign-in to Windows 10 HAADJ Devices
https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/how-to-password-less-fido2-security-key-sign-in-to-windows-10/ba-p/1434583
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.
- Entsperren von Windows mit Windows Hello-Begleitgeräten
(IoT)
https://docs.microsoft.com/de-de/windows/uwp/security/companion-device-unlock - RFC6238 - TOTP: Time-Based One-Time
Password Algorithm
https://datatracker.ietf.org/doc/html/rfc6238
TOTP - Time-based One-Time Passwords für Arduino
https://GitHub.com/lucadentella/TOTP-Arduino - ISO/IEC 14443 NFC-Standard
https://de.wikipedia.org/wiki/ISO/IEC_14443 - Yubikey
https://sarwiki.informatik.hu-berlin.de/Yubikey
Weitere Links
- Login ohne Kennwort
- MFA und OnPremises
- Azure MFA und Radius/NPS
-
How-to: Password-less FIDO2 Security Key Sign-in to Windows 10
HAADJ Devices
https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/how-to-password-less-fido2-security-key-sign-in-to-windows-10/ba-p/1434583 - What is a Microsoft-compatible security key?
https://docs.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/microsoft-compatible-security-key - FIDO2-Sicherheitsschlüsselanbieter für Passwordless
https://learn.microsoft.com/de-de/azure/active-directory/authentication/concept-authentication-passwordless#fido2-security-key-providers - Client to Authenticator Protocol (CTAP)
https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html - Windows Hello FIDO2 certification gets you closer to
passwordless
https://techcommunity.microsoft.com/t5/Windows-IT-Pro-Blog/Windows-Hello-FIDO2-certification-gets-you-closer-to/ba-p/534592 - Using Token2 FIDO2 security keys as the default sign-in
option for Windows (Registry modification method)
https://www.token2.com/site/page/using-token2-fido2-security-keys-as-the-default-sign-in-option-for-windows-registry-modification-method-?passwordless - Anmeldung ohne Passwort: "Windows Hello" wird zum
FIDO2-Authenticator
https://www.heise.de/security/meldung/Anmeldung-ohne-Passwort-Windows-Hello-wird-zum-FIDO2-Authenticator-4418470.html - Expanding Azure Active Directory support for FIDO2 preview
to hybrid environments
https://techcommunity.microsoft.com/t5/Windows-IT-Pro-Blog/Expanding-Azure-Active-Directory-support-for-FIDO2-preview-to/ba-p/981894 - FIDO Alliance ShowCase - Liste der Anbieter
https://fidoalliance.org/fido-certified-showcase/ - Configuring two-factor authentication recovery methods
https://help.GitHub.com/en/GitHub/authenticating-to-GitHub/configuring-two-factor-authentication-recovery-methods - How to enable FIDO2 password-less authentication with
Microsoft Azure AD for use with Windows 10 and SaaS web apps
https://www.jasonsamuel.com/2019/09/18/how-to-enable-fido2-password-less-authentication-with-microsoft-azure-ad-for-use-with-windows-10-and-saas-web-apps/ - Using YubiKeys with Azure MFA
https://support.yubico.com/support/solutions/articles/15000024567-using-yubikeys-with-azure-mfa - ArduKey - OTP-Generator für Zweifaktor-Authentifizierung
(2FA) mit Arduino
https://sicherheitskritisch.de/2015/06/ardukey-otp-generator-fuer-zweifaktor-authentifizierung-2fa-mit-arduino/ - Simulate Yubikey with Arduino Leonardo
https://GitHub.com/pagong/arduino-yksim - FIDO U2F Security Key - U2F USB Two Step Authentication
Security - 2nd Generation
https://www.adafruit.com/product/3363 - Homebrew NFC/PIV Physical Access Control System (Yubikey Neo)
https://www.youtube.com/watch?v=dGSfpO6svW0
https://GitHub.com/darconeous/SimpleCardAuth