Open Source im professionellen Einsatz

© marc hericher, Fotolia.com

USB-Dongle zum Selbstbau tippt lästige Passwörter ein

Fremde Finger

, ,

Gute Passwörter sind schwer zu merken und aufwändig einzutippen. Das nimmt der USB-Stick Open Kubus bastelfreudigen Anwendern ab und implementiert zudem Einmalpasswörter.

Wenn es darum geht, einen Benutzer zu authentifizieren, nutzt das Gros der Linux-Anwender Passwörter. Die haben aber eine Reihe von Problemen: Denkt es sich der Benutzer aus, ist es oft zu kurz und lässt sich einfach erraten. Erzeugt es ein Zufallsgenerator, ist es so kompliziert, dass Benutzer es vergessen oder irgendwo notieren. Außerdem müssen Passwörter geheim bleiben, denn gerade in fremden Umgebungen drohen Keylogger oder neugierige Blicke über die Schulter. Einmalpasswörter lösen das Dilemma, sie sind nach einmaligem Gebrauch ungültig, sodass es nur wenig stört, wenn sie jemand abhört [1].

Einfach umzusetzen sind Kennwortlisten. Generatoren erzeugen Listen mit vielen Kennwörtern, hinterlegen eine Kopie auf dem Server, auf dem die Anwender sich authentifizieren sollen. Dazu tragen sie eine zweite Ausfertigung mit sich herum. Die meisten Banken sichern mit diesem TAN-Verfahren Überweisungen beim Onlinebanking.

Meldet sich der Anwender an, kann das System beispielsweise nach dem zehnten Passwort fragen. Wer die Kennwortliste besitzt, schaut das passende Passwort nach und authentifiziert sich so erfolgreich. Nachteil: Im Alltag erweist sich das Verfahren als unpraktisch. Benutzer müssen die Liste immer parat haben, sie bei jedem Anmeldevorgang rauskramen und das Passwort mühevoll abtippen. Außerdem darf niemand sonst die Liste zu Gesicht bekommen.

Gehirn zum Herumtragen

Praktischer wäre es, die Kennwörter dynamisch zu generieren. Software, die direkt auf dem PC läuft, kommt dafür nicht in Frage, wenn das System portabel sein soll. Zudem lässt sich diese Passwortliste beliebig kopieren - niemand hätte also etwas gewonnen. Daher liegt es nahe, dass externe Hardware-Token das jeweils gültige Passwort generieren. Das ist die Idee von Open Kubus.

Auf Grundlage der Hardwareplattform USBprog entstand dafür in einem früheren Artikel des Linux-Magazins ein universeller Programmieradapter [2]. Als Mikrocontroller kommt der weitverbreitete ATMega32 zum Einsatz. Er ist kostengünstig und es gibt für ihn eine Vielzahl freier Entwickleranwendungen. Ein weiterer Baustein, der USBN9604, ermöglicht den Zugriff auf USB. Diese Variante lässt sich nachbauen und durch einen Taster erweitern (siehe Abbildung 1). Platine, Bestückungsliste und Schaltplan bietet das Projekt unter der GPLv2 zum Download an [3].

Abbildung 1: Eine Variante des Projekts nutzt den Adapter USBprog und erweitert ihn um einen Taster. Damit lösen die Anwender das Übertragen des Passworts aus.

Abbildung 1: Eine Variante des Projekts nutzt den Adapter USBprog und erweitert ihn um einen Taster. Damit lösen die Anwender das Übertragen des Passworts aus.

Da heute praktisch jeder Rechner eine USB-Schnittstelle besitzt, lässt sich der Stick fast überall verwenden. Er präsentiert sich dem Computer als USB-Tastatur, zu dem viele Betriebssysteme schon Treiber mitbringen. Drückt der Anwender den Taster, veranlasst dies den Stick dazu, ein Kennwort auszugeben, das sich nach dem in Abbildung 2 dargestellten Verfahren berechnet.

Abbildung 2: Das jeweilige Einmalpasswort berechnet das Token aus dem Datenblock und der Laufnummer. Beides verschlüsselt es mittels AES und kodiert es ähnlich zu Base-64.

Abbildung 2: Das jeweilige Einmalpasswort berechnet das Token aus dem Datenblock und der Laufnummer. Beides verschlüsselt es mittels AES und kodiert es ähnlich zu Base-64.

Das Open-Kubus-Team hat zusätzlich eine zweite, funktional gleichwertige Schaltung entwickelt (siehe Abbildung 3). Sie passt in ein noch kleineres Gehäuse und besteht aus viel weniger Teilen. Als Mikrocontroller kommt ein Atmega16u4 zum Einsatz, ein Atmega16 mit integriertem USB-Controller. Damit entfällt der Baustein für einen externen USB-Controller. Außerdem befinden sich noch eine LED und ein Taster auf dem Stick. Wegen der komplexen Mehrlagen-Platine bietet das Projekt diese Hardware fertig im Internet an [4].

Abbildung 3: Wer nicht löten will, kauft Open Kubus fertig mit Gehäuse. Diese Version integriert den USB-Treiber im Mikrocontroller Atmega16u4.

Abbildung 3: Wer nicht löten will, kauft Open Kubus fertig mit Gehäuse. Diese Version integriert den USB-Treiber im Mikrocontroller Atmega16u4.

Das auf dem Stick laufende Programm verwendet jeweils einen 14 Byte langen Datenblock aus entweder zufälligen Zeichen oder einer Stick-ID. Vor ihn hängt der Mikrocontroller eine 2 Byte lange Laufnummer. Drückt ein Benutzer den Taster, hängt er Laufnummer und Datenblock zusammen und verschlüsselt beides mit einem ebenfalls auf dem Stick gespeicherten 256-Bit-Schlüssel. Die drei Angaben speichert ein EEPROM, das sich auf dem Controllerchip befindet.

Als letzten Schritt wandelt Open Kubus die 16 Byte des verschlüsselten Onetime-Passworts in druck- beziehungsweise tippbare Zeichen und schickt sie an den USB-Tastaturtreiber (siehe Abbildung 2). Da der Stick nicht weiß, welche Tastaturvariante im angeschlossenen Rechner aktiv ist, sendet er vor dem Pad den Keycode für ein »y«, um zwischen deutschen und englische Layouts zu unterscheiden.

Einlass gewähren

Um eine Anmeldung zu überprüfen, müssen der Gegenstelle ebenfalls Datenblock, AES-Schlüssel und eine Laufnummer bekannt sein. Sie wandelt die Tastatureingabe wieder in die 16 Byte des Onetime-Passworts um und entschlüsselt es mit dem symmetrischen AES-Schlüssel. Die ersten zwei entschlüsselten Oktette müssen einen höheren als den im Server gespeicherten Wert haben - so erkennt das Verfahren Replay-Attacken. Aus diesem Grunde müssen Server die Laufnummer untereinander synchronisieren, falls sich Open Kubus gegen mehrere Geräten authentifiziert. Sowohl Server und Stick erhöhen nun die Laufnummer. Spätestens nach 65536 Anwendungen verweigert der Server jedoch weitere Anmeldungen, weil die aktuelle Firmware danach einen Wrap-Around macht.

Als Kryptopgraphie-Bibliothek nutzt Open Kubus auf dem Stick die AVR-Crypto-Lib, die viele kryptopgraphische Funktionen für Atmel-Mikroprozessoren bereits anbietet [5]. Sie berücksichtigt dabei die knappen Ressourcen an Flash- und Arbeitsspeicher. Die große Zahl unterstützter Algorithmen ermöglicht dem experimentierfreudigen Anwender auch andere Kryptoverfahren. Änderungen wie eine andere Handhabung des Wrap-Around oder ein Bit-Shift des Datenblocks in Abhängigkeit zur Laufnummer wären ebenfalls denkbar.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

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

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook