Alle Artikel

TOTP: wie Einmalcodes in Authenticator-Apps funktionieren

Deutsche Banken nutzten jahrelang eigene TAN-Verfahren wie chipTAN oder photoTAN, bei denen ein separates Lesegerät oder die Handykamera einen Code aus einem angezeigten Muster berechnet. Seit die EU-Richtlinie PSD2 2019 eine "starke Kundenauthentifizierung" (SCA) für die meisten Online-Zahlungen vorschreibt, wandern viele dieser Verfahren in Banking-Apps ab, die im Kern denselben Mechanismus wie TOTP verwenden: ein gemeinsames Geheimnis plus Zeit statt eines zentral abgefragten Codes.

Ein gemeinsames Geheimnis plus Zeit

Bei der Einrichtung tauschen Server und Authenticator-App einen einzigen gemeinsamen geheimen Schlüssel aus (genau das ist im QR-Code kodiert). Danach berechnen beide Seiten unabhängig voneinander einen HMAC aus diesem Geheimnis und der aktuellen Unix-Zeit, gerundet auf ein 30-Sekunden-Intervall — und erhalten so denselben Code, ohne miteinander zu kommunizieren.

Warum das ohne Internet funktioniert

Da der Code lokal aus dem Geheimnis und der Systemzeit des Geräts berechnet wird, benötigt die Authenticator-App keine Netzwerkverbindung, um einen Code zu erzeugen. Die einzige Voraussetzung ist, dass die Uhren von Server und Telefon innerhalb einer kleinen zulässigen Abweichung synchronisiert sind (üblicherweise ±30–60 Sekunden).

Warum sich der Code alle 30 Sekunden ändert

Das kurze Zeitintervall begrenzt das Fenster, in dem ein abgefangener Code gültig bleibt, und verringert das Risiko, dass ein Angreifer ihn wiederverwendet. Der Server akzeptiert normalerweise das aktuelle und ein vorheriges Intervall, um eine kleine Netzwerkverzögerung bei der Codeeingabe auszugleichen.

Wofür man das braucht

  • Die Mechanik der Zwei-Faktor-Authentifizierung bei der Einrichtung oder Fehlersuche mit Authenticator-Apps verstehen.
  • Die eigene TOTP-Implementierung bei der Entwicklung eines Authentifizierungssystems testen.
  • Codes für automatisierte Tests erzeugen, ohne sie manuell vom Telefon einzugeben.

Wovor TOTP nicht schützt

TOTP schützt zuverlässig davor, dass ein gestohlenes Passwort allein ausreicht, aber nicht vor Echtzeit-Phishing: Gibt das Opfer sowohl Passwort als auch aktuellen TOTP-Code auf einer gefälschten Website ein, kann der Angreifer beide Werte sofort auf der echten Website verwenden, solange der Code noch gültig ist. Vor dieser Angriffsart schützen nur Hardware-Schlüssel nach dem Standard FIDO2/WebAuthn, die kryptografisch an eine bestimmte Domain gebunden sind.

Tool ausprobieren