TOTP & HOTP
TOTP (Time-based One-Time Password, RFC 6238) und HOTP (HMAC-based One-Time Password, RFC 4226) sind die beiden RFCs, die jeder 2FA-Einschreibungs-QR implementiert. Das kodierte URI-Schema otpauth:// ist der De-facto-Standard von Google Authenticator, universell in allen großen Authenticator-Apps.
TOTP-Spec:RFC 6238 (zeitbasiert, 2011).
HOTP-Spec:RFC 4226 (zählerbasiert, 2005).
URI-Schema:Google Authenticator Key URI Format, das Format, auf das sich alle Authenticatoren einigen.
HOTP-Spec:RFC 4226 (zählerbasiert, 2005).
URI-Schema:Google Authenticator Key URI Format, das Format, auf das sich alle Authenticatoren einigen.
Was es ist
Ein 2FA-Einschreibungs-QR ist eine URL im Schema otpauth://, die den gemeinsamen Schlüssel plus identifizierende Metadaten trägt. Format:
otpauth://TYPE/LABEL?secret=SECRET&issuer=ISSUER&algorithm=ALG&digits=N&period=SEC- TYPE,
totp(zeitbasiert) oderhotp(zählerbasiert). - LABEL,
Issuer:Account, URL-kodiert. Beispiel:GitHub:alice@example.com. - secret, der gemeinsame Schlüssel, Base32-kodiert (RFC 4648 §6 Alphabet: A-Z, 2-7).
- issuer, der Dienstname, in der Authenticator-App angezeigt. Redundant mit dem Label, verbessert aber die UX bei Apps, die das Label nicht analysieren.
- algorithm,
SHA1(Standard),SHA256oderSHA512. Alle Authenticatoren unterstützen SHA1; wenige SHA256/SHA512. - digits,
6(Standard) oder8. Die meisten Consumer-Apps erwarten 6. - period, nur TOTP.
30(Standard) oder60Sekunden. HOTP hat stattdessen einencounter-Parameter.
Kanonische Testvektoren
| Fall | Eingaben | Erwartete otpauth://-URI |
|---|---|---|
| TOTP, minimal (SHA1, 6 Stellen, 30 s) | issuer=GitHub | otpauth://totp/GitHub:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=GitHub |
| TOTP, SHA256, 8 Stellen | issuer=Corp | otpauth://totp/Corp:bob?secret=JBSWY3DPEHPK3PXP&issuer=Corp&algorithm=SHA256&digits=8 |
| HOTP, counter=0 | issuer=YubiKey | otpauth://hotp/YubiKey:carol?secret=JBSWY3DPEHPK3PXP&issuer=YubiKey&counter=0 |
| TOTP, RFC-6238-Referenzschlüssel | issuer=Example | Standard-RFC-Testschlüssel (12345678901234567890). Erzeugt TOTP 94287082 bei T=59 s. |
Live Base32-Schlüssel-Validator
Authenticator-Apps lehnen Schlüssel ab, die etwas außerhalb des Base32-Alphabets (A-Z, 2-7) enthalten. Nachfolgend ist der gleiche Validator, den Abundera im TOTP-Generator einbettet, läuft in Ihrem Browser.
Geben Sie einen Schlüssel zur Validierung ein.
Häufige Fallstricke
- Base32 ist nicht Base64. Base64 verwendet A-Z, a-z, 0-9, +, /, jeder dieser Kleinbuchstaben oder die Ziffern 0, 1, 8, 9 im Schlüssel bedeutet, dass Ihnen eine Base64-Zeichenfolge übergeben wurde, die von jedem Authenticator abgelehnt wird.
- Schlüssellänge. RFC 4226 §4 empfiehlt mindestens 128 Bit (26 Base32-Zeichen) für HOTP und 160 Bit (32 Zeichen) für TOTP. Schlüssel unter 80 Bit (16 Zeichen) sind technisch legal, werden aber als schwach markiert.
- Algorithmus-Unterstützung variiert. Google Authenticator ignoriert den
algorithm-Parameter und verwendet immer SHA1. Damit SHA256/SHA512 wirksam wird, müssen Ihre Nutzer 1Password, Authy, Bitwarden oder Microsoft Authenticator nutzen. - Stellenanzahl-Unterstützung variiert. Die meisten Authenticatoren ignorieren
digits=8und kürzen stillschweigend auf 6. Wenn 8-stellige OTPs wichtig sind (Bankwesen, manche Behörden-Apps), testen Sie Ihren Ziel-Authenticator vor dem Rollout. - Label URL-kodieren. Sonderzeichen in Issuer oder Account (
:,@, Leerzeichen) müssen im Label prozent-kodiert sein, sonst lässt ältere Authenticator-Software das Label ganz weg. Abundera erledigt das automatisch. - Schlüssel nie wiederverwenden. Jedes Konto erhält einen frischen kryptographisch-zufälligen Schlüssel. Den gleichen Schlüssel über Dienste zu verwenden bedeutet: Eine Kompromittierung bei einem bricht alle.
- Speicherung zählt mehr als der QR. Der QR ist ein einmaliger Bootstrap. Die Authenticator-App speichert den Schlüssel nach dem ersten Scan. Wird dieser Schlüssel später im Klartext exportiert (manche Apps tun das), bedeutet ein Festplatten-Leak jede 2FA kompromittiert.
Authenticator-Kompatibilität
| App | TOTP SHA1 | TOTP SHA256/512 | HOTP | 8 Stellen | Hinweise |
|---|---|---|---|---|---|
| Google Authenticator | Ja | Ignoriert | Ja | Ignoriert | Die De-facto-Baseline. Immer zuerst damit testen. |
| 1Password | Ja | Ja | Ja | Ja | Vollständige RFC-Unterstützung. |
| Authy | Ja | Ja | Nein | Ja | Dropped HOTP in neueren Versionen. |
| Bitwarden | Ja | Ja | Ja | Ja | Vollständige RFC-Unterstützung. |
| Microsoft Authenticator | Ja | Ja | Ja | Ja | Vollständige RFC-Unterstützung. |
| YubiKey Authenticator | Ja | Ja | Ja | Ja | HOTP ist der kanonische YubiKey-Modus. |
| Duo Mobile | Ja | Ignoriert | Nein | Ignoriert | Verwendet eigenen Push-Flow; TOTP ist nur Fallback. |
Siehe auch
- /totp-2fa-qr-code/, der TOTP-Generator mit Base32-Validator inline.
- /hotp-qr-code/, HOTP-zählerbasierte Variante.
- /standards/, zurück zum Standards-Index.