Der YubiKey NEO und seine Möglichkeiten als security Token
Ihr seid auf der Suche nach einem Sicheren Login Verfahren mit Hilfe eines Tokens? Oder wollt ihr eure e-Mails mit S/MIME unterschreiben, aber den privaten Schlüssel nicht auf der Festplatte eures PCs hinterlegen? All das und sogar eine OpenPGP Smartcard bietet euch der YubiKey NEO (Link) von yubico.
Was kann er? Wie aktiviert man einzelne Funktionen? Auf diese Fragen soll euch dieser Beitrag Antworten geben.
Betriebsmodi des Yubikey NEO
Der YubiKey Neo verfügt über drei verschiedene Betriebsmodi, die gleichzeitig aktiviert und genutzt werden können. Für jeden einzelnen Verbindungsmodus wird ein separates USB Gerät am PC erkannt. Die NFC Schnittstelle ist hingegen permanent aktiv. Zum aktivieren der verschiedenen Betriebsmodi wird das kostenlose Tool YubiKey NEO Manager von yubico verwendet (Download). Nach dem Start des NEO Managers sollte das Tool in etwa so aussehen:
Wichtig ist, dass ein Name und eine Seriennummer angezeigt wird. Sollte das nicht der Fall sein, wurde der YubiKey nicht erkannt (eventuell den Rechner neu starten, USB Verbindung prüfen,…). Nach einem Klick auf Change Connection Mode erscheint folgendes Fenster:
Hier lässt sich nun die einzelnen Verbindungsmodi einstellen. Die einzelnen Modi werden im folgenden näher erläutert.
Verbindungsmodus U2F
Bei U2F (universal second factor) handelt es sich um einen Authentifizierungsmechanismus gegenüber Webseiten nach dem Standard der FIDO (Fast Identity Online) Alliance. Da ihr diesen Artikel lest, möchte ich an dieser Stelle nicht näher auf den Sinn der multi-faktor-authentifizierung eingehen. Bei FIDO U2F wird ein zusätzliches Gerät (oder theoretisch auch als Software Lösung denkbar) zur Authentifizierung gegenüber einer Webseite verwendet. Im FIDO U2F Modus identifiziert sich der YubiKey NEO gegenüber dem Computer als Standard USB Eingabegerät (USB HID) und kann somit auch auf Firmencomputern verwendet werden, auf denen die Benutzung von USB Speichermedien per Richtlinie deaktiviert ist. Ganz um zusatzsoftware kann leider auch der Yubikey NEO nicht verzichten: Der Browser muss die Kommunikation zwischen dem FIDO U2F Gerät und der Webseite abwickeln. Implementiert ist U2F in Google Chrome seit der Version 38. Aktuell wird an der Implementierung in Firefox gearbeitet (bug 1065729) und auch Microsoft scheint daran zu arbeiten. Microsoft ist übrigens eines der aktiven Mitglieder der Fido Alliance.
Da dieser Artikel kein reiner U2F Artikel werden soll, möchte ich nur kurz ein paar Details zum technischen Hintergrund geben. Um das ganze zu verstehen sollte man wissen, dass beim Anmelden eines U2F Geräts an einer Webseite ein einmaliger Schlüssel im U2F Gerät erzeugt wird. Darüber kann die Webseite in einer späteren Loginprozedur den User bzw. YubiKey über ein challenge-response verfahren identifizieren. Wichtig ist, dass der Schlüssel nicht im Yubikey gespeichert wird. Er wird bei jeder Verwendung erneut aus der URL (und weiteren Daten) abgeleitet. Somit kann der YubiKey für unendlich viele Webseiten und Accounts verwendet werden. Der wesentliche Vorteil gegenüber one-time-pads (z.b. Google Authenticator) oder SMS-TANs ist, dass das U2F Verfahren eine wesentlich bessere Sicherheit gegen man-in-the-middle Angriffe bietet. Würde eine gefälschte Webseite versuchen die Authentifizierung umzulenken, würde der YubiKey den Schlüssel aus der falschen Webseite ableiten. Somit würde der Schlüssel nicht zu der eigentlichen Webseite passen und der Login wird verweigert.
Soll nun ein User gegenüber einer Webseite authentifiziert werden, wird er aufgefordert einen bei der Webseite hinterlegten, YubiKey in den USB Port zu stecken und die Sensorfläche zu berühren. Das Berühren der Sensorfläche löst die Authentifizierung aus und bestätigt zugleich, dass der User die Aktion bewusst auslöst.
Zum heutigen Zeitpunkt (3.11.2015) wird die Authentifizierung via U2F von Google, Dropbox und GitHub angeboten. Es existieren jedoch viele frei verfügbare Module, die sich für eigene Anwendungen verwenden lassen. Alle Details dazu lassen sich im Entwicklerbereich von yubico unter developers.yubico.com finden.
Die Aktivierung des U2F Logins läuft prinzipiell auf allen Seiten gleich ab. In den Sicherheitseinstellungen muss zuerst die zwei faktor authentifizierung aktiviert werden. Dabei muss je nach Anbieter eine Handynummer hinterlegt werden (für den Fall dass ihr nur einen YubiKey registriert und ihn verliert). Anschließend klickt ihr auf Gerät Hinzufügen (o.ä.). Nun werdet ihr aufgefort den YubiKey einzustecken und die Sensorfläche zu berühren. Nach dem erfolgreichen Einrichten wird der YubiKey wie folgt dargestellt (Beispiel: GitHub):
Wenn ihr euch nun in eurem Account einloggen wollt, werdet ihr im Anschluss an den herkömmlichen Login via Benutzername und Passwort nach dem Sicherheitsschlüssel gefragt. Im Fall von GitHub sieht das beispielsweise so aus:
Wer an dieser Stelle denkt „Genau das will ich, aber nicht mehr!“ sollte sich den wesentlich günstigeren FIDO U2F Security Key (Link) anschauen. Sieht genauso aus, ist allerdings blau. Weitere Funktionen aus diesem Artikel werden nicht unterstützt. Das ganze gibt es auch in klein, zum Verbleib im USB Port als YubiKey Nano (Link).
Verbindungsmodus CCID
Bei CCID (chip card interface device) handelt es sich um ein standardisiertes Protokoll für die Kommunikation zwischen SmartCard und PC. Dadurch ist kein herstellerspezifisches Protokoll oder Lesegerät erforderlich. Das CCID Protokoll wird standardmäßig von Windows unterstützt. Somit müssen keine Zusätzlichen Treiber installiert werden, der YubiKey taucht in diesem Fall im Gerätemanager als Microsoft Usbccid-Smartcard-Leser (WUDF) auf. Dank CCID kann der YubiKey NEO als OpenPGP Smartcard oder als herkömmliche Smartcard verwendet werden. Auf die OpenPGP Smartcard Funktionalität werde ich in einem späteren Artikel detaillierter eingehen.
Es stehen vier Slots zur Verfügung, auf denen X.509 Zertifikate gespeichert werden können. Die Zertifikate können entweder direkt auf dem Yubikey erzeugt werden oder sie werden aus einer Datei importiert. Die Verwaltung der Zertifikate und PINs erfolgt über das graphische Tool PIV Manger von yubico (Download). Alternativ stehen auch Kommandozeilentools zur Verfügung. Die Zertifikate können u.a. zur Authentifizierung, E-Mailverschlüsselung und Festplattenverschlüsselung verwendet werden. Letzteres erfordert allerdings, dass ihr ein selbstsigniertes X.509 Zertifikat erstellt und es für die Festplattenverschlüsselung freischaltet. Wie das geht, werde ich in einem separaten Artikel erklären. Damit hättet ihr die Möglichkeit eure Daten mit einer Smartcard und beispielsweise bitlocker zu schützen. Somit sind die Daten wesentlich besser gegen brute-force Angriffe geschützt, da der YubiKey nur eine begrenzte Anzahl an falschen PINs zulässt. Ein kurzer PIN lässt sich wesentlich leichter merken und ist sogar sicherer. Wird die PIN zu oft falsch eingegeben, „zerstört“ sich das Zertifikat selber und die Daten lassen sich nicht mehr entschlüsseln (Backup nicht vergessen!). Ab jetzt müsste sich der brute-force Angriff gegen den echten AES key richten und nicht gegen das eventuell schwache user Passwort.
Verbindungsmodus OTP
Hinter dem Verbindungsmodus OTP (one time pad = Einmalpasswort) verbergen sich viele Möglichkeiten. Nicht alle davon sind wirklich OTPs. Zur Verwaltung dieser Möglichkeiten wird die Software YubiKey Personalization Tool von yubico verwendet (Download). Die Einstellungen dieses Tools sind leicht verwirrend. Grundsätzlich müsst ihr im Hinterkopf behalten, dass der YubiKey NEO im OTP Modus zwei „Slots“ besitzt. Diese können mit verschiedenen Funktionen belegt werden und zwar vollkommen unabhängig von den Smartcard und U2F Funktionen. Die Funktion des ersten Slots lässt sich durch kurzes antippen der Sensorfläche aktivieren. Der zweite Slot wird verwendet durch ein langes drücken der Sensorfläche. Welche Funktion ihr auf welchen Slot legt bleibt euch überlassen. Zur Auswahl stehen folgende Funktionen, die ich nur kurz erläutern werde:
- Yubico OTP: Es wird ein AES Key erzeugt und von euch in der yubico cloud hinterlegt. Die Authentifizierung setzt also voraus, dass der Webseitenbetreiber die yubico cloud verwendet um seine Nutzer zu Identifizieren. Die Webseite schickt im Prinzip eine challenge an euren YubiKey und an die yubico clound in Verbindung mit eurem Benutzernamen. Wenn beide die challenge richtig beantworten, seid ihr authentifiziert.
- OATH-HOTP: Hierbei werden Einmalpasswörter erzeugt, die allerdings nicht wie z.b. bei dem Google Authenticator auf der Zeit (TOTP) basieren, sondern auf einem Zähler. Das Problem an diesen Verfahren ist leider, dass die Authentifizierung fehl schlägt, wenn die Zählerstände zu weit voneinander abweichen. Das passiert zum Beispiel wenn jemand mit dem YubiKey herumspielt, ohne eine Authentifizierung durchzuführen, welche die Zählerstände wieder synchronisieren würde. Eine gewisse Abweichung lässt sich jedoch erlauben.
- Static Password: Bei jedem aktivieren dieser Funktion wird eine voreingestellte Zeichenkette ausgegeben. Wer also Zugang zu dem YubiKey hat, hat auch Zugang zu diesem Passwort. Ihr könnt diese Funktion jedoch in Verbindung mit einem normalen Passwort nutzen. Somit erhöht ihr die Sicherheit und umgeht das Problem mit dem Verlust des YubiKeys, habt aber dennoch ein sehr sicheres Passwort. Dazu tippt ihr erst euer Passwort in das Passwortfeld und drückt anschließend auf den YubiKey. Hat den Vorteil, dass es mit jedem System funktioniert, da der YubiKey aus Treibersicht nur eine gewöhnliche Tastatur ist.
- Challenge Response: Auch hier wird ein challenge-response Verfahren verwendet, jedoch ohne die Notwendigkeit eines externen Validierungsservers (keine yubico cloud benötigt). Klingt cool, konnte ich leider nirgendwo unter echten Bedingungen testen und es besteht wieder das Problem mit den man-in-the-middle Angriffen. Der Vorteil ist jedoch, dass clientseitig keine zusätzlich Software benötigt wird. Die Kommunikation erfolgt vollständig über USB HID. Ihr würdet also während des Loginvorgangs keine Übertragung sehen.
Die NFC Schnittstelle des YubiKey NEO
Ich hoffe ihr kennt alle den Google Authenticator? Dieses Tool implementiert den TOTP Standard für zeitbasierte one time pads. Der Google Authenticator speichern das Secret jedoch auf dem Smartphone. Übertragen wird das Secret in der Regel bei der Ersteinrichtung via QR Code. Der YubiKey NEO ist in der Lage, diese Secrets zu speichern und auch direkt die OTPs zu berechnen. Wenn ihr den YubiKey NEO also an euer NFC fähiges Smartphone haltet, wird nur die Zeit zum Yubikey geschickt, dieser antwortet mit einer Liste an OTPs. Dazu wird auf dem Android Smartphone die Folgende App benötigt:
[appbox googleplay com.yubico.yubioath]
Für den PC steht die Anwendung yubioath-desktop von yubico zur Verfügung (Download). Damit muss nicht jedes mal das Smartphone aus der Hosentasche geholt werden, wenn nach einem Einmalpasswort gefragt wird. Auch hier verlassen die Secrets nie den YubiKey. Allerdings wird am PC nicht die NFC Schnittstelle sondern die USB Verbindung genutzt.
Fazit
Der YubiKey NEO überrascht mit einer riesigen Fülle an Funktionen, die sich im ersten Moment kaum überblicken lassen. Beim genauen Hinsehen zeigt sich jedoch, dass es sich um ein mächtiges Werkzeug handelt mit dem sich sehr viele Sicherheitsfeatures nutzen lassen. Wem das Gerät zu groß ist, der sollte sich den kleinen Bruder YubiKey NEO-n (Link) anschauen, allerdings dann ohne NFC. Noch wird U2F nur von sehr wenigen Seiten Angeboten, aber ich denke wir können davon ausgehen, dass sich der FIDO U2F Standard verbreiten wird. Ein Blick auf die Liste der Mitglieder der FIDO Alliance gibt mir ein gutes Gefühl dabei. Auch die offenheit des gesamten Standards trägt zu einem hohen Vertrauen bei.
Die Smartcard Funktionen ermöglichen einen universellen Einsatz zur Signatur von e-Mails, Code und Dokumenten. Weiterhin lassen sich Festplatten mit beispielsweise bitlocker schützen wobei das eigentliche Secret sicher auf einer Smartcard verwahrt wird. Ich habe meinen YubiKey NEO mittlerweile immer dabei und hoffe, dass viele weitere Webseitenbetreiber den Login via U2F anbieten werden.
wenn ich am Mac eine HBCI-Karte (Autorisierung für Onlinebanking) über einen USB-Cardreader angeschlossen habe, wie kann ich dann die Abruf-Reihenfolge bei gestecktem Stick ändern/vorgeben?
Der yubikey wird immer zuerst abgefragt