YubiKey OTP

Abbildung 2 zeigt die Wirkung von Variante 1 (Auslieferungszustand) beispielhaft in einem Texteditor. Nach jedem Tastendruck erscheint der generierte Schlüssel in Form einer Zeichenkette – hier bei vier Tastendrücken. In der Ausgabe erkennt man auch bereits die Unterteilung des Schlüssels in einen statischen und einen dynamischen Teil. Die ersten 12 Byte der gezeigten Schlüssel sind jeweils identisch und beinhalten die Kennung des YubiKey (Public ID, 48 Bit). Über sie kann der Autorisierungsserver erkennen, welchen generierten YubiKey-Schlüssel es auf seine Gültigkeit hin zu überprüfen gilt. Schlüssel, die nicht zum Schließkreislauf gehören, lassen sich so sehr schnell identifizieren und zurückweisen.

Sobald Sie kurz auf den Knopf des YubiKey drücken, erzeugt er einen Schlüssel zur einmaligen Verwendung in Form einer einzigartigen Zeichenkette. Dafür verknüpft das Token eine Reihe interner Felder miteinander, unter anderem die vergebene Private ID, zwei Zugriffszähler, eine Benutzerkennung, einen Zeitwert und eine Zufallszahl. Diese Bitfolge wird um eine CRC16-Checksumme nach ISO-13239 ergänzt, mit einem 128-Bit-AES-Schlüssel kryptographisch gesichert und anschließend in eine Zeichenkette im ModHex-Format umgewandelt (siehe Kasten "ModHex"). Abbildung 3 zeigt den Aufbau des Schlüssels [5].

Abbildung 3: Der Aufbau des YubiKey-Schlüssels.

Die AES-Verschlüsselung stellt sicher, dass niemand die im YubiKey gespeicherten statischen (Private ID) und dynamischen Werte (Zählerstände s.count und s.use zur Anzahl der Einsteckvorgänge in den USB-Port und zu Knopfdrücken) auslesen kann. Die veränderlichen Werte sorgen dafür, dass bei jedem Knopfdruck eine andere Zeichenkette entsteht.

Als wirksamer Schutz vor sogenannten Replay-Attacken dienen die beiden Zähler s.count und s.use, die der Autorisierungsserver mit den Daten von der letzten Autorisierung vergleicht. Dabei müssen die übermittelten Zählerwerte größer ausfallen als die zuletzt verwendeten.

Kasten: ModHex

Für die Codierung binärer Daten wie etwa Schlüssel in druckbare Zeichen existieren zahlreiche Verfahren. Dazu zählen beispielsweise Base64 bei MIME, oder der Unix-Standard Uuencode und viele andere mehr. Der Hersteller des YubiKey hat sich dafür entschieden, mit ModHex ein eigenes Kodierungsverfahren zu definieren und einzusetzen. Hierbei steht nicht die Effizienz im Vordergrund, sondern die Kompatibilität mit den diversen Tastaturdesigns und deren Lokalisierungen (Sprachbelegung, Tastenanordnung, Eigenheiten). Dazu reduziert ModHex die Menge der "druckbaren Zeichen" auf die 16 Buchstaben "cbdefghijklnrtuv". Im Ergebnis wird, wie bei hexadezimaler Codierung, jedes Byte auf zwei Zeichen verteilt. Das entspricht einer Overhead bei der Kodierung um 100 Prozent (Base64: 33 Prozent, Uuencode: 40 Prozent, 7Plus: 3125 Prozent). Da die zu übermittelnde Datenmenge gering ausfällt und der YubiKey die Tastatureingabe selbst vornimmt, kann man den zusätzliche Overhead vernachlässigen.

Kurzüberblick Protokoll

Den generierten Schlüssel nimmt das Nutzerfrontend des Servers entgegen, bei dem Sie sich anmelden möchten – das kann ein SSH-Server oder ein Webformular sein. Das Nutzerfrontend lässt sich so konfigurieren, dass es aus der Public ID entnimmt, welcher Nutzer sich anmeldet. Für den Nutzer entfällt damit die Eingabe von Nutzername und Passwort: Stattdessen genügt ein Tastendruck auf dem YubiKey.

Das Nutzer-Frontend leitet die Schlüsseldaten an die Middleware weiter, beispielsweise zur Bibliothek Libpam-yubico über /etc/pam.d/ssh. Libpam-yubico bedient sich der Library Libykclient3, welche die Kommunikation mit dem Autorisierungsserver übernimmt. Der Schlüssel wird in seine zwei Hauptbestandteile Public ID und den verschlüsselten Teil zerlegt und per HTTP(S) an den Autorisierungsserver gesendet.

TIPP

Details zur Konfiguration der pam.d/ssh finden Sie im nächsten Beitrag der YubiKey-Serie.

Im Beispiel aus Abbildung 4 prüft der Autorisierungsserver, ob es für die übermittelte Public ID "vvtlhejdeeriHi" zugehörige Autorisierungsdaten gibt. Der Datensatz besteht unter anderem aus der Private ID, dem Passwort sowie den Zählerwerten s.count und s.use. Damit kann der Autorisierungsserver die Daten entschlüsseln und überprüfen. Im Erfolgsfall liefert er den Status "OK" zurück. Näheres zum Protokoll finden Sie bei Interesse unter [6].

Abbildung 4: Der Ablauf bei der Anmeldung: YubiKey, Frontend, Middleware, Backend.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare
Mehrere Dienste mit einem YubiKey?!
Arno (unangemeldet), Sonntag, 26. Oktober 2014 20:17:21
Ein/Ausklappen

Super Artikel,

ich habe aber noch eine /vielleicht was doofe) Frage:

- Kann ich also mit nur EINEM YubiKey mehrere Dienste (zB. Google 2-Step-Auth UND WOrdpress 2-Step-Auth UND Windows Login) nutzen? Oder brauche ich für jeden Dienst einen eigenen USB/NFC Schlüssel?

Dank Euch!
Arno


Bewertung: 260 Punkte bei 64 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: Mehrere Dienste mit einem YubiKey?!
Jörg Luther, Dienstag, 28. Oktober 2014 11:56:56
Ein/Ausklappen

Ich habe mal den Autor befragt. Seine Auskunft: Ein Schlüssel genügt, um damit mehrere Dienste abzusichern. Es wird jedesmal ein eindeutiger Zugang/Key erzeugt. Es ist ratsam, einen Zweitschlüssel zu hinterlegen. Das geht definitiv über PAM (lokal), die Webdienste sind nach Meinung des Autors da noch nicht ganz so weit. Der Zweitschlüssel sichert den Fall ab, dass der Erstschlüssel kaputtgeht, Sie ihn verlieren oder er gestohlen wird.

Herzliche Grüße
Jörg Luther
Chefredakteur


Bewertung: 230 Punkte bei 67 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: Mehrere Dienste mit einem YubiKey?!
Arno (unangemeldet), Dienstag, 28. Oktober 2014 22:56:09
Ein/Ausklappen

Super, danke für die schnelle Antwort!


Arno


Bewertung: 265 Punkte bei 71 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...