Zweifaktorielle Authentifizierung, also die Sache mit dem immer wieder anderen Sicherheitscode, den man eingeben muss, wird auf immer mehr Plattformen angeboten. Und wir sollten sie alle nutzen. Wie das geht und was der Gedanke dahinter ist könnt Ihr hier nachlesen.

Das Login über eine User-ID und ein Passwort kennen wir seit Jahrzehnten. Passwörter werden tendenziell immer sicherer, enthalten mehr unterschiedliche Zeichenarten, werden länger, werden am Ende in einem Passworttank (bitte nicht LastPass, lieber beispielsweise Bitwarden) abgelegt, weil man sie sich sonst nicht mehr merken kann.

Warum noch diese Sache mit den Sicherheitscodes?

Das ist relativ einfach.

Auch ein Passwort kann geknackt werden, im Zweifel, indem auf dem PC ein Keylogger installiert wurde. Der kann ein Virus sein, manuell von einem bösen Angreifer installiert werden oder einfach als Hardwarekomponente heimlich zwischen Tastaturkabel und USB-Port gestöpselt worden sein.

Der „Fall LastPass“ zeigt auch ein Risiko bei Passworttanks: Die sind nur so sicher wie die Firma, die deren Speichermedium betreibt, und da können wir in den meisten Fällen nur auf deren Aussagen zur Sicherheit etc vertrauen. Was bei LastPass schonmal in die Hose gegangen ist.

Fazit: Spätestens bei wichtigen, essentiellen Zugängen (Bank, eMail, eigene Website oder gar eigener Shop…) reichen User-ID und Passwort längst nicht aus, um sicher zu sein. Man braucht mehr. Zusätzlich zu dem Authentisierungsfaktor „kennt User-ID und Passwort“ noch einen zweiten Faktor.

Damit dieser Faktor wirklich mehr Sicherheit bietet, darf er von uns nicht dort gespeichert oder notiert werden, wo das Passwort auch gespeichert ist. Die Kenntnis des Passworts und die Kenntnis eines derart statischen zweiten Faktors zum Login liegen dann nicht weit genug auseinander. Wer das eine erbeutet hat, wird mit hoher Wahrscheinlichkeit auch das andere erbeutet haben.

Der zweite Faktor muss also etwas anderes sein, etwas dynamisches, das jedes Mal anders aussieht und beispielsweise den Besitz eines bestimmten Gegenstandes belegt. Wir weisen dann beim Login Kenntnis der Zugangsdaten und Besitz des spezifischen Gegenstandes nach.

Einfach wäre hier: Ein Fingerabdruck. Dafür fehlen aber Standards, und PCs mit Fingerabdrucksensor sind halt nicht verbreitet. Zudem ist der Fingerabdruck statisch – wenn ich einmal vom Sensor die Daten abgegriffen habe, habe ich den zweiten Faktor.

Besser sind kryptographische Techniken.

Der aktuelle Standard für den 2. Faktor ist so eine krypographische Technik. Aber keine Angst, sie ist absolut nutzerfreundlich.

Die Technik nennt sich OTP (One Time Password) oder TOTP (Time based One Time Password). Der zweite Faktor ist eine meist sechsstellige Zahl, die in der Regel 30-90 Sekunden gültig ist und durch komplexe Algorithmen berechnet wird.

Grundlage sind Techniken aus der Kryptographie. Ein bestimmter Code, der mit der User-ID auf dem jeweiligen System verknüpft wird, dient zusammen mit dem aktuellen Datum und der aktuellen Uhrzeit zur Berechnung der sechs Ziffern. Durch die kryptographischen Technologien ist es nicht möglich, auf Basis von einer oder einer Reihe der Zahlen den ursprünglichen Code zu rekonstruieren. Das ginge nur, indem man alle möglichen Inhalte des Codes durchprobiert, was zu lange dauern würde.

Das alles klingt jetzt wahnsinnig kompliziert.

Ist es aber nicht.

Es ist nämlich ganz einfach.

  1. Man installiert sich eine Authenticaor-App. Alles, was OTP oder TOTP kann ist möglich. Ich empfehle freeOTP bzw. freeOTP+, warum, das erkläre ich später.
  2. Auf den jeweiligen Websites geht man durch die Sicherheitseinstellungen und aktiviert den zweiten Faktor, also das TOTP, OTP, 2FA oder wie das auch immer gerade genannt wird.
  3. Die Website zeigt nun einen QR-Code an, den man mit der App auf seinem Smartphone scannt. Im QR-Code sind der kryptographische Schlüssel, der genutzte Algorithmus und die Dauer, für die einzelne Schlüssel gültig sind, abgelegt
  4. In der App steht nun in der Regel schon der Eintrag für diesen Dienst wiedererkennbar drin, in der Regel wird auch ein passendes Icon ausgewählt. Kann man aber in den meisten Fällen noch ändern.
  5. In der Regel muss man in der App nun ggf. einmal auf den neuen Eintrag tippen, um den aktuellen Code zu sehen, und diesen auf der Website eingeben. Das ist für die Website die Bestätigung, dass alles funktioniert und man sich nicht durch einen Fehler ausgesperrt hat.

Das wars.

Wenn man sich das nächste Mal dort einloggt, muss man nach der Eingabe von User-ID und Passwort noch das Handy in die Hand nehmen, den entsprechenden Eintrag in der OTP-App antippen und die Zahlen eingeben. Man hat also nachgewiesen, dass man die Zugangsdaten kennt und im Besitz des Handies ist.

„Aber, was, wenn mein Handy kaputt ist?“

Dafür sorgen die meisten Dienste vor. Üblich ist, dass man eine Liste von Ersatzcodes herunterladen kann. Das sind numerische oder alphanumerische Codes, die man statt der Ziffern aus der App eingeben kann, um Zugang zum Account zu erlangen. Jeder Code funktioniert genau einmal.

Manchmal ist das auch abweichend. Bei Twitter wird zum Beispiel nur ein einiger alphanumerischer Code ausgegeben. Zudem hatte der QR-Code von Twitter anfangs haufenweise Twittervögel im Code stehen und der QR-Code-Reader, der in freeOTP+ implementiert ist, wollte das nicht mehr als QR-Code erkennen.

Diese Ersatzcode kann man zum Beispiel ausdrucken und irgendwo sicher ablegen.

Die Codes sind in den meisten Fällen 30 Sekunden gültig. Und zwar nicht für 30 Sekunden nachdem man den Code hat anzeigen lassen. Die 30 Sekunden beginnen jeweils mit der Sekunde 0 und der Sekunde 30 jeder Minute. Da Handies und Server heutzutage von Zeitservern eine wahnsinnig exakte Zeit abfragen können, ist das kein Problem, Server und App berechnen jeweils aus der Uhrzeit und dem kryptographsichen Schlüssel denselben Zahlencode für denselben Zeitraum.

Wenn der Code angezeigt wird, wird in den Apps auch in der Regel symbolisiert, wie lange der Code noch gültig ist, um nach Ablauf der Frist sofort den nächsten anzuzeigen. Wenn man also nicht schnell genug die 6 Ziffern eingeben kann, wartet man einfach auf den nächsten Code und 30 Sekunden reichen bequem für die Eingabe.

Warum empfehle ich freeOTP und freeOTP+?

Marktführer war früher der Google Autenticator. Der ist zwar auch nur eine rein lokale Anwendung und leitet die Codes nicht in seine Zentrale aus (auch nicht als Backup). Dafür ist er aber von Google und da gibt es Vorbehalte.

Microsoft hat auch einen OTP-Authenticator, der aber die Token (so nennt man die Daten auch, die für einen solchen Zugang gespeichert werden) in der Cloud speichert.

Vorteil: Wenn ich ein neues oder ein zweites Handy habe und es im Authenticator mit meinem Microsoft-Konto verknüpfe, kann ich die Token der gesicherten Webseiten auf das neue Handy übertragen.

Der Nachteil: Die Token werden auf den Computern von Microsoft gespeichert, und wer meinen Microsoft-Account knackt, hat die Codes.

Alternative Authenticator-Apps wie Authy erzeugen auch ein Backup. Die Reklame von Authy ist sogar einigermaßen unlauter. Beispielsweise werben sie mit

Google Authenticator lacks multi-device support.

Der zweite Faktor soll (!) eigentlich nur auf einem Gerät installiert werden. Wenn ich ein ganzes Rudel an Handies, Tablets und PCs mit dem zweiten Faktor versehe, ist es eben kein zweiter Faktor mehr, sondern eine Sammlung möglicher zweiter Faktoren, die alle gestohlen und geknackt werden können.

Außerdem kann man diese Codes, obwohl das nicht vorgesehen ist, problemlos auf mehreren Geräten speicher – dazu gleich mehr.

Google Authenticator is only available on mobile devices.

Und das ist auch gut so. Authy bietet auch ein Desktop-Programm an. Wenn ich eine Website auf meinem PC nutze und auf demselben PC nicht nur im Browser de Zugangsdaten sondern in einem separaten Programm den 2. Faktor ablege, führt das den 2. Faktor ad absurdum.

Google Authenticator has no encrypted recovery backups.

Das stimmt, aber die Webseiten haben Ersatzcodes.

Google Authenticator has limited password protection.

Stimmt ausnahmsweise, dafür können Google Authenticator und andere (freeOTP zum Beispiel) die Token biometrisch absichern. Ohne Fingerabdruck kein 2FA-Code.

Darüber hinaus nutzt Authy eine Telefonnummer zum Identifizieren des Nutzers, um Backups zuordnen zu können. Wer also Zugang zu meiner Rufnummer hat (das Klauen einer Mobilfunknummer bedingt nur ein bissl Social Engeneering und ist einfacher als gedacht!) kann alle Token auf ein neues Gerät übertragen.

Außerdem möchte man vielleicht gar nicht, dass

  • irgendeine Firma aus den USA, in denen die DSGVO ja nicht durchsetzbar ist
  • sowohl alle 2FA-Tokens als auch
  • die Handynummer

kennt.

freeOTP und freeOTP+ (Links sehe unten) sind Open Source Tools, die definitiv nichts ausleiten, rein lokal arbeiten und – durch die offengelegten Quelltexte – komplett transparent sind.

„Mein Passwortmanager kann auch 2FA speichern!“

Bitte nicht.

Es soll ein zweiter Faktor sein. Wenn Ihr zum Beispiel Bitwarden (oder allen Ernstes noch immer LastPass) nutzt, um Passwörter zu speichern, haben die Token dort nichts verloren. Es soll ein zweiter Faktor sein, keine Verlängerung des ersten Faktors „Passwort“ um sechs veränderliche Ziffern.

Wer Euren Passworttank knackt, hat dann alle Zugangsdaten und der zweite Faktor ist auch geknackt und damit komplett nutzlos.

Ihr wollt aber ein Backup der Codes haben, oder das Social Media Team Eurer Orga besteht aus zwei Leuten und beide brauchen denselben Token für Euren Twitter-Account?

Dann nehmt einfach Trick 17 und simuliert damit die Vorteile, die Authy bewirbt:

Den QR-Code kann man per Screenshot in eine Datei schreiben. Die nimmt man als Backup und kann dann sowohl nach dem Verlust des eigenen Handies als auch im Fall, dass mehrere Geräte den jeweiligen Token brauchen, eben mehrfach scannen.

Die App und der Server kommunizieren nicht, der Server weiß nicht, von wie vielen Geräte der QR-Code gescannt wurde.

Und mit diesem einfachen Trick – neben den selbstverständlich gut gesicherten Ersatzcodes! – seid Ihr auf der sicheren Seite. Egal, welche App Ihr nutzt.

freeOTP+ auf Google Play

freeOTP im AppStore

Kategorien: Allgemein