OTP steht für One-Time Password (manchmal auch One-Time Passcode). Es ist ein kurzer Code, meist vier bis acht Ziffern, der für einen einzigen Login oder eine einzige Transaktion gültig ist und danach verfällt. Weil jeder Code nur einmal und nur innerhalb eines kurzen Zeitfensters funktioniert, ist ein Code, der nach der Verwendung abgegriffen wird, für einen Angreifer wertlos. Genau diese Wegwerf-Eigenschaft ist der Grund, warum OTPs existieren.
Sie haben mit ziemlicher Sicherheit schon einmal einen eingegeben: die sechs Ziffern, die Ihnen Ihre Bank vor einer Überweisung per SMS schickt, den Code, den eine Authenticator-App beim Anmelden anzeigt, oder die Nummer, die Ihnen eine Website per E-Mail sendet, um sicherzugehen, dass Sie es wirklich sind. All das sind OTPs – sie unterscheiden sich hauptsächlich darin, wie der Code erzeugt wird und wie er Sie erreicht.
Wie funktioniert ein OTP?
Dienst und Nutzer brauchen eine Möglichkeit, sich darauf zu einigen, welcher Code gerade gültig ist, ohne das Passwort selbst auf erratbare Weise zu übertragen. Es gibt zwei Standardverfahren, und der Unterschied liegt darin, was den Codewechsel auslöst.
- HOTP (HMAC-basiertes Einmalpasswort). Der Code wird aus einem gemeinsamen Geheimnis und einem Zähler abgeleitet. Das Token des Nutzers erhöht den Zähler bei jeder Codeerzeugung. Der Verifizierer des Dienstes erhöht seinen entsprechenden Zustand nach Annahme des erwarteten Codes. Ein HOTP-Code verfällt nicht allein durch Zeitablauf.
- TOTP (zeitbasiertes Einmalpasswort). Der Code wird aus einem gemeinsamen Geheimnis und der aktuellen Uhrzeit abgeleitet, gerundet auf ein Zeitfenster (üblicherweise 30 Sekunden). Der Code ändert sich von selbst mit der Zeit, unabhängig davon, ob ihn jemand verwendet hat. Das ist das Verfahren, das Authenticator-Apps nutzen.
TOTP ist das verbreitetere der beiden Verfahren, weil der automatische Verfall begrenzt, wie lange ein gestohlener Code nützlich ist. HOTP kommt weiterhin bei Hardware-Tokens und in Abläufen vor, in denen sich eine zeitsynchronisierte Uhr nur schwer gewährleisten lässt.
Wie wird ein OTP zugestellt?
Erzeugungsverfahren und Zustellkanal sind voneinander unabhängige Entscheidungen. Ein Code kann auf dem eigenen Gerät des Nutzers berechnet oder auf dem Server erzeugt und zugesendet werden.
- SMS. Der Server erzeugt einen Code und sendet ihn per SMS an die Telefonnummer des Nutzers. Universelle Erreichbarkeit, keine App nötig. Gleichzeitig ist es der am leichtesten abfangbare Kanal – per SIM-Swap oder Netzwerkangriff.
- E-Mail. Der Code kommt im Posteingang des Nutzers an. Bequem und ohne App, aber nur so sicher wie das E-Mail-Konto selbst.
- Sprachanruf. Ein automatisierter Anruf liest den Code vor – das hilft Nutzern, die keine SMS empfangen können oder eine barrierefreie Option benötigen.
- Authenticator-App. Der Code wird lokal per TOTP berechnet. Nichts wird über das Netzwerk gesendet, also gibt es nichts, was unterwegs abgefangen werden könnte.
Jeder Kanal tauscht Erreichbarkeit gegen Angriffsschwierigkeit. SMS und E-Mail erreichen fast jeden; app-basierte Codes sind schwerer zu stehlen, erfordern aber, dass der Nutzer vorab eine App eingerichtet hat.
Wo werden OTPs eingesetzt?
Die bekannteste Verwendung ist als zweiter Faktor bei der Zwei-Faktor-Authentifizierung, bei der das OTP den Besitz eines Telefons oder Geräts zusätzlich zum Passwort nachweist. Aber OTPs tauchen weit über den Login hinaus auf.
- Login-Verifizierung: Bestätigung einer Anmeldung, besonders von einem neuen Gerät oder Standort.
- Transaktionsbestätigung: Freigabe einer Zahlung, einer Überweisung oder einer Änderung von Auszahlungsdetails.
- Kontowiederherstellung: Bestätigung der Kontrolle über eine Telefonnummer oder E-Mail-Adresse vor dem Zurücksetzen eines Passworts.
- Step-up-Prüfungen: Anforderung eines neuen Codes vor einer sensiblen Aktion, auch mitten in einer Sitzung.
Ob ein OTP einen Login tatsächlich "two-factor" macht, hängt vom Rest des Ablaufs ab. Der Unterschied wird in Zwei-Faktor-Authentifizierung vs. zweistufige Verifizierung behandelt.
Sicherheitsaspekte und Best Practices
OTPs sind einfach – und genau deshalb kommt es auf die Details an. Einige Grundregeln halten sie wirksam.
- Kurzer Verfall. Begrenzen Sie die Gültigkeitsdauer streng. Wenige Minuten für SMS und E-Mail, das Standard-30-Sekunden-Fenster für TOTP. Je kürzer das Fenster, desto geringer die Chance, dass ein Code wiederverwendet wird.
- Begrenzung der Anfragerate. Begrenzen Sie sowohl die Anzahl der Codes, die ein Nutzer anfordern kann, als auch die Anzahl der Rateversuche. Ein sechsstelliger Code hat eine Million Möglichkeiten, die ein unbegrenzter Angreifer per Brute-Force durchprobieren kann; wenige Versuche pro Code schließen diese Lücke.
- Einmalige Verwendung, serverseitig erzwungen. Machen Sie einen Code ungültig, sobald er akzeptiert wird, und ebenso nach zu vielen Fehlversuchen. Verlassen Sie sich nicht auf den Client, um Wiederverwendung zu verhindern.
- Den Code niemals loggen. Halten Sie OTPs aus Anwendungslogs, Analysen und Fehlerberichten heraus. Ein Code, der in einer Log-Datei steht, ist ein Code, den ein Insider oder ein Log-Leak lesen kann.
- Den Code an den Kontext binden. Verknüpfen Sie einen Code mit dem konkreten Nutzer und der Aktion, für die er ausgestellt wurde, damit ein Code, der für einen Zweck gedacht war, nicht für einen anderen eingesetzt werden kann.
Ein kurzer Hinweis zum Phishing: Ein Nutzer kann dazu verleitet werden, einem Angreifer auf einer gefälschten Seite einen SMS- oder App-Code vorzulesen. OTPs sind also nicht phishing-sicher wie Hardware-Keys. Sie blockieren dennoch den weitaus häufigeren Angriff: das Einloggen mit einem gestohlenen Passwort allein.
OTPs senden und verifizieren
Sie können einen OTP-Flow selbst betreiben: Code erzeugen, mit einer Ablaufzeit speichern, senden und die Eingabe des Nutzers innerhalb des Zeitfensters prüfen. Wenn Sie Zustellung und Verifizierung komplett abgeben möchten (einschließlich Begrenzung der Anfragerate und Ablaufzeit), sendet und validiert das Verifications-Produkt von Bird Codes über SMS, Sprache und E-Mail. Wenn Sie nur den Transport benötigen und die Verifizierungslogik selbst übernehmen möchten, deckt das SMS-Produkt die Codezustellung an Telefone ab.
FAQ
Was ist der Unterschied zwischen HOTP und TOTP?
HOTP erhöht den Zähler des Nutzer-Tokens bei der Codeerzeugung. Der Verifizierer des Dienstes erhöht seinen Zustand nach Annahme des erwarteten Codes. TOTP leitet seinen Code aus der aktuellen Uhrzeit ab, sodass er sich nach einem festen Zeitplan ändert (üblicherweise alle 30 Sekunden). TOTP ist verbreiteter, weil der automatische Verfall die Nutzbarkeit eines gestohlenen Codes begrenzt.
Sind SMS-OTPs sicher?
Sie sind für die meisten Konten sicher genug und blockieren den Großteil reiner Passwort-Angriffe, aber SMS kann durch SIM-Swap-Betrug oder Netzwerkangriffe abgefangen werden. Für hochwertige Konten sind eine Authenticator-App oder ein Hardware-Key vorzuziehen.
Wie lange sollte ein OTP gültig bleiben?
Lang genug, damit der Nutzer ihn lesen und eintippen kann, und keinen Moment länger. Wenige Minuten für SMS oder E-Mail und das Standard-30-Sekunden-Fenster für TOTP. Kürzere Fenster verringern die Chance, dass ein geleakter Code noch nutzbar ist.
Kann derselbe OTP zweimal verwendet werden?
Das sollte er nicht. Ein korrekt implementiertes System macht einen Code ungültig, sobald er akzeptiert wird, und ebenso nach zu vielen Fehlversuchen. Erzwingen Sie die einmalige Verwendung auf dem Server, niemals auf dem Client.
Einmalpasswörter sind eine kleine Idee, die in der Kontosicherheit großes Gewicht trägt. Wie sie in eine vollständige Login-Absicherung passen, erfahren Sie unter Was ist Zwei-Faktor-Authentifizierung. Oder sehen Sie sich an, wie Bird Codes erzeugt, zustellt und prüft – im Verifications-Produkt.