Woher weiß bei der 2-Faktor-Authentifizierung(2FA) die Website, dass das mit einem anderen Endgerät erzeugte TOTP Passwort das richtige ist?
Ich habe nämlich festgestellt dass die Passwörter von der Authentizificator App auch erzeugt werden, wenn ich offline bin.
3 Antworten
Die App generiert auf Grundlage der aktuellen Uhrzeit und des Tokens, den Du der App am Anfang mal gegeben hast, das OTP. Du kannst das testen, indem Du das Token verschiedenen Apps auf verschiedenen Systemen gibst - die werden alle das gleiche OTP anzeigen.
PS: Wichtig ist dabei nur, dass die Geräte alle die korrekte Uhrzeit haben.
Der "Generator" hat einen Schlüssel. Der schlüssel wurde Dir zugeteilt und aus dem was der Generator erzeugt kann der Empfänger feststellen ob auch wirklich Dein Schlüssel zum generieren verwendet wurde.
Nur wenn dem Angreifer Dein Schlüssel bekannt ist, kann der auch Daten generieren die der Echtheitsprüfung stand halten.
So ähnlich ist das mit den TAN Generatoren in die man die EC Karte hinein steckt oder das Gegenstück auf der Handyapp.
Deine EC Karte - oder die App auf dem Handy - enthält einen Schlüssel. Nur wenn Deine EC Karte im TAN Generator steckt, kann auch eine für Dich gültige TAN erzeugt werden.
Im Prinzip besteht das TOTP dann nur aus dem Schlüssel und der aktuellen Uhrzeit und die Website überprüft dann nur die Plausibelität?
Ganz vereinfacht kann man sich das so vorstellen.
Die Kunst dabei ist aber, den Schlüssel zu verschleiern. Sonst könnte man ja durch auswerten von einigen Transaktionen einen "Nachschlüssel" herstellen.
Tatsächlich gelang das mehrfach bei der EC Karte. Früher in den 1980ern bis in die späten 1990er - als nicht überall Internet "einfach so" verfügbar war - liefen die meisten EC Kassensysteme offline.
Anfangs wurde über die Daten die auf der Karte gespeichert waren nur grob überschlagen ob die PIN auch zur Karte passt. Deswegen konnte man sich damals auch die PIN nicht selber aussuchen. Die hing von einem Schlüssel der Bank, Deinem Namen, Deiner Kontonummer und der Kartenfolgenummer ab.
Hier konnte man dann durch auslesen der Karte dann einen PIN errechnen der zwar nicht unbedingt der PIN war den die Bank Dir gegeben hatte, aber die meisten Automaten zufrieden stellte.
Im Laufe der Zeit gab es diverse Upgrades. Aber die Geldautomaten brachten eine zweite Sicherheitsstufe. Auf der EC Karte waren am Schluss 18 Unsichtbare Markierungen die nur der Automat erkennen konnte. Viele kennen das noch, dass die Karte plötzlich nicht mehr im Geldautomaten funktionierte, aber an der Tankstelle immer noch problemlos. Dann war die Karte an zu vielen Stellen abgerieben bzw. beschädigt, der Magnetstreifen aber noch in Ordnung.
Hohe Sicherheit gibt es nur noch online durch mehrfache Frage und Antwortspielchen die über verschlüsselte Verbindungen laufen.
Die Offline Verfahren haben einen ziemlich langen Schlüssel drin. Die Kunst ist, dass die "Antwort", also der generierte Code viel weniger Informationen enthalten kann wie der Schlüssel selber hat. Und das Datum und die Uhrzeit bestimmen auf welche Weise der Schlüssel umgerechnet wird. So kann man mit alten Codes die man abgefangen hat nicht den vollständigen Schlüssel ausrechnen um dann neue generieren zu können.
Das kannst Du Dir vorstellen als wenn Du ein dickes Buch nimmst. Dann nimmst Du Monat + Jahreszahl und schlägst diese Seite auf. Jetzt nimmst Du den Tag des Monates und suchst Dir die entsprechende Zeilennummer. Die Stunde des Tages ist dann das Wort in dieser Zeile. Nur wenn Du das korrekte Buch hast, kannst Du dann das Wort heraus suchen, das aktuell passt.
Bei digitalen Schlüsseln ist das natürlich komplizierter. Hier werden dann Teile des Schlüssels abhängig vom zeitstempel auf unterschiedliche Weise vermischt.
Aus dem Schlüssel 1234567890 wird heute zum Beispiel eine 42, morgen vielleicht eine 4711. Wenn Du nur diese beiden Zahlen abgefangen hast, kannst Du auch wenn Du weißt wie das Verfahren genau funktioniert nicht den vollständigen Schlüssel ausrechnen. Der hat ja mehr Ziffern als die beiden Zahlen die Du abgefangen hast zusammen.
Um das also bei Deinem generator aus zu rechnen müsste man tausende, eher Millionen und Milliarden generierte Codes abfangen und wissen wann die generiert wurden um den ganzen Schlüssel ausrechnen zu können.
Die 2FA, die in der Regel verwendet wird, basiert auf TOTP - einem zeitbasierten Online-Passwort.
Einfach gesagt: Bei der Einrichtung wird ein geheimer Schlüssel generiert. Mit diesem wird aus der aktuellen Uhrzeit (auf 30 Sekunden gerundet) ein Schlüssel (Hash) gebildet. Aus diesem werden 6 oder 8 Stellen genommen, die deinen Code darstellen.
Da sowohl dein Gerät als auch der Server den Schlüssel kennen, kann durch einen einfachen Vergleich die Korrektheit überprüft werden.
Wichtig ist, dass der Schlüssel geheim bleibt und die Uhrzeit korrekt ist
Mit dem am Anfang gegebenen Token ist der QR Code gemeint?