Zum Inhalt springen
Novaz AuthenticatorLADEN

Wie funktionieren 2FA-Codes? TOTP erklärt

Vom Novaz-Team · Aktualisiert am 29. Oktober 2026
Schritte in Novaz geprüft mit Version 1.0.5

Aus der englischen Anleitung übersetzt. Auf der Website des Dienstes können Schaltflächen und Menüs in deiner Sprache etwas anders heißen.

Auf dieser Seite
  1. Zutat 1: der Einrichtungsschlüssel
  2. Zutat 2: die Zeit, in Schritten gezählt
  3. Daraus wird ein Code
  4. Warum die Website ihn akzeptiert
  5. Einstellungen, die ein Dienst ändern kann
  6. TOTP und HOTP
  7. Wovor TOTP nicht schützt
  8. In Authenticator App - Novaz

Eine Authenticator-App und eine Website berechnen beide dieselbe sechsstellige Zahl aus zwei Dingen, die beide haben: einem geheimen Schlüssel, den sie einmal ausgetauscht haben, und der aktuellen Uhrzeit. Bei der Anmeldung wird zwischen ihnen nichts gesendet. Deshalb funktioniert der Code ohne Empfang, und deshalb ändert er sich alle 30 Sekunden. Das Verfahren heißt TOTP (time-based one-time password, zeitbasiertes Einmalpasswort) und ist ein offener Standard (RFC 6238).

Zutat 1: der Einrichtungsschlüssel

Wenn du 2FA aktivierst, erzeugt die Website ein zufälliges Geheimnis und zeigt es dir als QR-Code, dazu eine Textversion, den sogenannten Einrichtungsschlüssel. Deine App speichert ihn. Ab dann haben die Website und deine App denselben Schlüssel, und niemand sonst sollte ihn haben.

Der QR-Code ist einfach ein Link in einem Standardformat, otpauth://totp/…, der den Schlüssel, den Namen des Dienstes, deinen Kontonamen und optional die unten beschriebenen Einstellungen enthält. Unser 2FA-QR-Code-Decoder zeigt, was in einem steckt.

Zutat 2: die Zeit, in Schritten gezählt

Beide Seiten nehmen die aktuelle Zeit als Sekunden seit dem 1. Januar 1970 (Unixzeit) und teilen sie durch 30, ohne Rest. Das Ergebnis ist eine ganze Zahl, die alle 30 Sekunden um eins steigt. RFC 6238 nennt sie T und empfiehlt standardmäßig einen Zeitschritt von 30 Sekunden („a default time-step size of 30 seconds“).

Daraus wird ein Code

Die App verarbeitet den Schlüssel und T mit HMAC, einer kryptografischen Funktion, meist mit SHA-1. Dann kürzt sie das Ergebnis auf eine kurze Zahl, nach einem Verfahren aus dem HOTP-Standard (RFC 4226, Abschnitt 5.3):

  1. Die letzten 4 Bits des HMAC-Ergebnisses bestimmen eine Position darin.
  2. Die App nimmt ab dieser Position 31 Bits als Zahl.
  3. Sie behält die letzten 6 Ziffern dieser Zahl. Manche Dienste nutzen 8.

Ändert sich der Schlüssel oder der Zeitschritt, entsteht ein völlig anderer Code. Aus einem Code lässt sich der Schlüssel nicht zurückrechnen.

Try it: a live TOTP code

Calculated in your browser from an example key. Don't paste a real setup key here.

Current code

…

Previous: …

Next: …

Unix time
…
Time step T = ⌊time ÷ 30⌋
…
Seconds left
…

Warum die Website ihn akzeptiert

Die Website führt dieselbe Berechnung mit ihrer Kopie des Schlüssels und ihrer eigenen Uhr durch. Stimmen die Zahlen überein, bist du drin. Zwei Details sorgen dafür, dass das in der Praxis funktioniert:

  • Etwas Spielraum für Verzögerungen. Ein Code, den du am Ende eines Zeitschritts eintippst, kommt vielleicht erst im nächsten an. RFC 6238 empfiehlt, höchstens einen Zeitschritt als Netzwerkverzögerung zuzulassen („at most one time step is allowed as the network delay“). Viele Websites akzeptieren deshalb auch den Code direkt vor dem aktuellen.
  • Jeder Code funktioniert nur einmal. Laut Standard darf ein Server einen bereits akzeptierten Code beim zweiten Versuch nicht mehr annehmen („MUST NOT accept the second attempt“). Die US-Richtlinien des NIST sagen dasselbe: Prüfstellen dürfen ein Einmalpasswort während seiner Gültigkeit nur einmal akzeptieren („SHALL accept a given OTP only once while it is valid“, NIST SP 800-63B-4).

Deshalb macht auch eine falsch gehende Uhr Codes unbrauchbar. Weicht dein iPhone eine Minute ab, berechnet es den Code für einen anderen Zeitschritt als die Website. Siehe Authenticator-Code funktioniert nicht?

Einstellungen, die ein Dienst ändern kann

Die Standards erlauben einige Abweichungen, und ein QR-Code kann sie mitbringen:

Einstellung Üblicher Wert Ebenfalls erlaubt
Hash SHA-1 SHA-256, SHA-512 (RFC 6238, Abschnitt 1.2)
Ziffern 6 7 oder 8 (RFC 4226, Abschnitt 5.3)
Intervall 30 Sekunden Andere Längen

Nutzt ein Dienst etwas Ungewöhnliches, füge ihn per QR-Code hinzu statt den Schlüssel einzutippen, damit deine App auch die Einstellungen bekommt.

TOTP und HOTP

HOTP, der ältere Standard, nutzt statt der Uhrzeit einen Zähler, der bei jeder Code-Anforderung steigt. TOTP ist HOTP mit dem Zeitschritt als Zähler: „TOTP = HOTP(K, T)“. Die meisten Websites nutzen heute TOTP.

Wovor TOTP nicht schützt

Weil du den Code selbst eintippst, kann eine überzeugend gefälschte Anmeldeseite danach fragen und ihn sofort verwenden. Das NIST sagt es deutlich: „OTP authentication is not phishing-resistant“ (die Authentifizierung mit Einmalpasswörtern ist nicht phishing-resistent). Passkeys und Sicherheitsschlüssel sind es. Mehr dazu unter Authenticator-App oder SMS.

In Authenticator App - Novaz

Novaz erzeugt standardmäßige TOTP-Codes auf deinem iPhone:

  • Über einen QR-Code: SHA-1, SHA-256 oder SHA-512; 6 bis 8 Ziffern; Intervalle von 1 bis 300 Sekunden.
  • Über einen von Hand eingetippten Schlüssel: immer 6 Ziffern, 30 Sekunden und SHA-1.

HOTP-Codes erzeugt die App nicht. Außerdem prüft sie die Uhr deines iPhone und warnt dich, wenn sie 15 Sekunden oder mehr abweicht.