Wie TOTP funktioniert
Beim Scannen eines 2FA-QR-Codes speichert die App ein gemeinsames Secret, typischerweise 20 Zufallsbytes als 32-stelliger Base32-String. Alle 30 Sekunden berechnet sie HMAC-SHA1(Secret, ⌊jetzt / 30⌋), nimmt vier Bytes aus dem Ergebnis an einem Offset, den das letzte Nibble vorgibt, und reduziert diese Zahl modulo 10⁶ auf sechs Stellen. Der Server macht dasselbe und akzeptiert meist auch das vorige und nächste Fenster, um Uhrenabweichung zu tolerieren. Auf dem Telefon ist kein Netzwerk beteiligt, weshalb Authenticator-Apps offline funktionieren.
Die otpauth-URI
Der QR-Code enthält eine URI wie otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Example&digits=6&period=30&algorithm=SHA1. Hier eingefügt füllt sie jeden Parameter aus. Die meisten Dienste nutzen die Vorgaben (SHA-1, 6 Stellen, 30 s); einige nutzen 8 Stellen oder SHA-256, und manche Apps ignorieren den Algorithmus-Parameter, eine häufige Ursache für „der Code ist falsch“-Tickets.
Eine 2FA-Einrichtung debuggen
- Das Secret hier und in der App eingeben; die Codes müssen übereinstimmen. Wenn nicht, wurde das Secret falsch getippt oder die App ignoriert die Parameter.
- Stimmen die Codes überein, aber der Server lehnt sie ab, geht die Serveruhr falsch. TOTP setzt voraus, dass beide Seiten sich bis auf das Fenster genau über die Zeit einig sind.
- Prüfen, dass der Server mit einem Fenster von ±1 verifiziert und die Wiederverwendung desselben Codes ablehnt (Replay).
Sicherheitshinweise
Das Secret ist die ganze Sicherheit: Wer es hat, kann für immer Codes erzeugen. Speichern Sie es verschlüsselt, loggen Sie es nie, und bevorzugen Sie WebAuthn / Passkeys, wo möglich, da TOTP-Codes in Echtzeit gephisht werden können. Diese Seite ist für Entwickler, die ihre eigene Einrichtung testen; behandeln Sie jedes in einen Browser eingefügte Secret als Testdaten.
Fragen
Warum unterscheidet sich mein Code von der App?
Prüfen Sie, dass das Secret identisch ist (Base32 ignoriert Groß-/Kleinschreibung und Leerzeichen, aber jeder Buchstabe zählt), dass Stellen, Periode und Algorithmus dem entsprechen, was der Dienst vorgibt, und dass Ihre Computeruhr stimmt. Ein Code, der genau ein Fenster danebenliegt, bedeutet eine Uhrendifferenz von etwa 30 Sekunden.
Was ist das Base32-Alphabet?
A–Z und 2–7; kein 0, 1, 8 oder 9, damit Secrets beim Vorlesen eindeutig sind. Padding mit = ist optional. Das Tool lehnt andere Zeichen ab und sagt, welche.
Was ist der Unterschied zwischen TOTP und HOTP?
HOTP (RFC 4226) nutzt einen Zähler, der bei jeder Verwendung hochzählt; TOTP (RFC 6238) ersetzt den Zähler durch die aktuelle Zeit geteilt durch die Periode. Hardware-Tokens mit Knopf sind HOTP; Apps sind TOTP. Geben Sie oben einen Zähler ein, um HOTP zu berechnen.
Kann ich Codes für Google Authenticator oder Authy erzeugen?
Ja, beide implementieren Standard-TOTP. Steam Guard und manche Banking-Apps nutzen proprietäre Varianten, die dieses Tool nicht nachbildet.