|
April 30, 2014, 08:37:14 AM |
|
Grundsätzlich funktioniert der Yubikey so:
Man bekommt auf einem "sicheren" Weg einen Seed, einen Samen oder Startwert. Welcher Weg dabei als Sicher anzusehen ist entscheidet die Verwendung. Das sicherste Wäre, wenn man den Postweg benutzt. Post UND PC zu infizieren und das ohne das DU es merkst dürfte nur eine Behörde können, die alle Kontrollen per Richterbeschluss aushebeln kann. Allerdings ist ein Postverfahren aufwendig und sicherlich nicht kostenfrei zu machen.
Ein weiterer Weg wäre eine Mail. Ebenfalls machbar wäre es, wenn die Webseite verschlüsselt ist, dort direkt abzulesen. Aber hier ist immer die Vorraussetzung, das der PC zu diesem Zeitpunkt sicher ist. Eventuell über eine Live-CD eines Linux booten und Webseite aufrufen.
Dieser Samen wird nun von beiden Seiten dazu benutzt sich auszuweisen. Man berechnet einen Hashwert und übermittelt diesen. Bei Bitcoin.de zb wechselt der hashwert Timebased alle 30sec. Solange ist mein OTP gültig. Aus meiner erfahrung weis ich, das ca 2-3sec vor Ablauf bereits zu Zeitfehlern kommt, weil eines der Geräte nicht sekundengenau syncron ist zum anderen. Zu Deutsch: meine PC-Uhr geht 2 sec nach gegenüber dem Server. Wenn beide den Hash aus dem selben Startwert und dem Timestamp berechnen müssen sie zum selben Ergebniss kommen. Das weist dich als Inhaber des Passwortes aus.
Das Problem des Hackers ist nun, das er zwei Passwörter braucht(bzw 3, wenn man den Benutzernamen ebenfalls geheim macht). Der Sicherheitsgewinn war ursprünglich dann gegeben, wenn das Programm auf einer unabhängigen Hardware läuft. Man geht dabei davon aus, das nicht beide Geräte vom selben Hacker infiziert sind. Aber das kann man heute nicht mehr sicher sagen. Bankingtrojaner infizieren PC und Smartphone und legen dann los. Deswegen den Yubikey als seperate nicht infizierbare Hardware. Sie hat nur 2 Funktionen: Seed annehmen und speichern sowie Hash ausgeben. Seed wieder ausgeben ist nicht machbar. jedenfalls nicht ohne die Hardware zu zerlegen.
PS: das Google Programm im Wikipedia-link ist ausreichend um es zu testen, aber nicht ausreichend um es sicher zu benutzen. Der Seed muss leider in Klartext gespeichert werden um daraus zusammen mit dem Timestamp den hash zu berechnen. Folglich kann man ihn problemlos auslesen. Beim Google Authentikator steht er sogar in der registry, das Programm muss also nicht mal aktiv sein dazu. Verschlüsseln wäre sinnlos, da der Schlüssel zum Entschlüsseln im Programm hinterlegt werden müsste(hardcodiert) und somit auch schnell entdeckt worden wäre. Er wäre dann auch bei allen gleich.
|