Wie funktioniert das Einmalpasswort (OTP)?
In diesem Artikel werden wir zwei verschiedene Einmalpasswortmethoden vorstellen: E-Mail/Telefon + Verifizierungscode und dynamischer Code.
Mit der Weiterentwicklung des Internets nutzen wir eine Vielzahl von Online-Diensten, um fast alle unsere Bedürfnisse zu befriedigen. Der erste Schritt zur Nutzung dieser Dienste ist oft die Registrierung und der Login. Wenn es um Registrierung und Anmeldung geht, werden Benutzer-ID und Passwortauthentifizierung immer noch weit verbreitet verwendet, obwohl seit den Zeiten der Nutzung von eigenständigen Desktop-Computern, die sich nicht mit dem Internet verbinden konnten, über drei Jahrzehnte vergangen sind.
Früher mussten wir uns vielleicht nur das Passwort für unser E-Mail-Konto merken, aber heute nutzen wir oft Dutzende oder sogar Hunderte von Online-Diensten, und wir können nicht dasselbe Passwort für alle verwenden (wenn das Passwort für ein Konto kompromittiert wird, sind alle Konten, die dasselbe Passwort verwenden, gefährdet). Infolgedessen wird passwortlose Anmeldung immer beliebter und wird allmählich zum Mainstream-Ansatz.
Es gibt viele verschiedene Methoden zur passwortlosen Authentifizierung, einschließlich, aber nicht beschränkt auf soziale Anmeldung, E-Mail/Telefon + Verifizierungscode und die Verwendung von Authenticator-Apps mit dynamischen Passwörtern. Die beiden letztgenannten Methoden können als Einmalpasswörter (OTPs) klassifiziert werden.
Was ist ein Einmalpasswort (OTP)?
Ein OTP ist eine automatisch generierte Zeichenfolge, die nur für eine einzelne Anmeldesitzung oder einen kurzen Zeitraum gültig ist. Da ein OTP nur einmal verwendet werden kann, kann es das Risiko eines Anmeldeinformationenverlusts verhindern, wie z.B. ein verlorenes oder gestohlenes Passwort.
Theoretisch kann ein OTP eine zufällige Zeichenfolge einer bestimmten Länge sein, einschließlich Groß- und Kleinbuchstaben und sogar Sonderzeichen. Aber um die Benutzererfahrung zu verbessern, verwenden die meisten Dienste reine Zahlen, wenn sie OTPs verwenden.
E-Mail / Telefon + Verifizierungscode
Viele Websites verlangen, dass Sie Ihre Identität überprüfen, indem sie einen Verifizierungscode (oder Passcode) an die registrierte E-Mail-Adresse oder Telefonnummer senden.
Stellen Sie sich vor, Jack und Joe spielen ein Ratespiel, bei dem Jack sich eine Zahl zwischen 0 und 999 ausdenkt und Joe drei Chancen gibt, die Zahl innerhalb einer Minute zu erraten. Abgesehen davon, dass er den Zahlenbereich kennt, hat Joe keine weiteren Informationen.
Wir alle wissen, dass es fast unmöglich ist, dass Joe die Zahl innerhalb einer Minute mit nur drei Versuchen richtig rät.
E-Mail / Telefon + Verifizierungscode funktioniert nach dem gleichen Prinzip: Der Verifizierungscode ist in der Regel nur für einen sehr kurzen Zeitraum gültig, normalerweise nicht länger als 10 Minuten (ähnlich wie Jack Joe „eine Minute“ zum Raten der Zahl gibt). Zusätzlich hat die API oder Methode zur Verifizierung des Verifizierungscodes in der Regel eine Ratenbeschränkung, um Brute-Force-Angriffe auf den Passcode zu verhindern (wie Jack Joe nur „drei Chancen“ gibt).
Für potenzielle Angreifer ist es fast unmöglich, diese Methode zu knacken. Das System teilt dem Benutzer den Verifizierungscode jedoch über einen vertrauenswürdigen Kanal (E-Mail oder Telefon) mit, sodass der Benutzer ihn direkt überprüfen kann.
Dynamischer Code
Dynamischer Code, auch bekannt als zeitbasiertes OTP (TOTP), ist „dynamisch“ in dem Sinne, dass er sich im Laufe der Zeit ändert. Wenn eine Webanwendung TOTP verwendet, dann folgt sie in der Regel RFC6238 - TOTP: Time-Based One-Time Password Algorithm.
Hash-basiertes Einmalpasswort
Bevor wir TOTP einführen, müssen wir kurz RFC4226 - HOTP: Ein HMAC-basiertes Einmalpasswort-Algorithmus erklären (HMAC ist ein Hashing-Algorithmus). Der HOTP-Algorithmus funktioniert wie folgt:
-
Geheimnis: HOTP erfordert einen gemeinsamen geheimen Schlüssel K, der zwischen dem Server und dem Client identisch ist.
-
Zähler: Der Kern von HOTP ist ein Zähler C, der bei jeder Generierung eines neuen Passworts inkrementiert wird.
-
HMAC-Berechnung:
-
Verwenden Sie HMAC-SHA-1 (oder andere Hash-Funktionen), um den Authentifizierungscode zu berechnen:
-
Hierbei ist H ein 160-Bit-Hash-Wert.
-
-
Trunkierung: Extrahieren Sie einen Teil des Hash-Werts H, um das OTP zu generieren. Angenommen, wir möchten ein 6-stelliges OTP, verläuft der Prozess wie folgt:
- Extrahieren Sie das letzte Byte von H als Trunkierungsversatz O.
- Extrahieren Sie die 4 Bytes ab O und konvertieren Sie sie in eine Ganzzahl T.
- Nehmen Sie die letzten d Ziffern von T, d.h. OTP = T mod 10^d.
Zusammengefasst lautet die HOTP-Formel:
wobei d die gewünschte OTP-Länge ist (in der Regel 6-8 Ziffern).
Zeitbasiertes Einmalpasswort
TOTP ist eine Erweiterung von HOTP, bei der der Zähler durch einen Zeitschritt ersetzt wird. Es verwendet die aktuelle Zeit, um einen dynamischen Verifizierungscode zu generieren; daher läuft das OTP im Laufe der Zeit automatisch ab. Das Funktionsprinzip ist wie folgt:
-
Zeitschritt: TOTP verwendet die aktuelle Zeit T anstelle des HOTP-Zählers C. Der Zeitschritt ist ein festgelegtes Zeitintervall (in der Regel 30 Sekunden).
- Zum Beispiel: Angenommen, der Zeitschritt beträgt 30 Sekunden und der aktuelle Unix-Zeitstempel ist T. Der TOTP-Zähler wird wie folgt berechnet: T' = T / Zeitschritt
- Dabei ist T′ der Zeitschrittzähler, in Einheiten von 30 Sekunden.
-
OTP-Generierung: Ersetzen Sie T′ im HOTP-Algorithmus, um das OTP zu generieren:
-
Dynamische Aktualisierung: Da TOTP auf dem Zeitschritt basiert, ändert sich das OTP im Laufe der Zeit, sodass der Server seine Gültigkeit überprüfen kann, solange das OTP innerhalb des gültigen Zeitfensters liegt.
Zusammengefasst lautet die TOTP-Formel:
Basierend auf unseren Erfahrungen mit Authenticator-Apps können wir den geheimen Wert zwischen dem Gerät und dem Server durch das Scannen eines QR-Codes oder das direkte Kopieren und Einfügen synchronisieren und müssen dann einmal den aktuellen dynamischen Code eingeben, um sicherzustellen, dass der geheime Wert derselbe ist.
In den frühen Tagen der Nutzung mobiler Geräte stellten wir möglicherweise fest, dass die Zeit auf verschiedenen Geräten nicht dieselbe war und wir die Zeit auf den Geräten regelmäßig manuell anpassen mussten. In den letzten Jahren verwenden fast alle Geräte den Netzwerk-Zeitdienst (NTP), um die Gerätezeit regelmäßig zu synchronisieren und zu aktualisieren. Auch wenn die Uhr des Geräts nicht völlig genau ist, können die häufigen Updates sicherstellen, dass die Zeit auf verschiedenen Geräten vernünftigerweise konsistent ist. Basierend auf dieser Annahme kann der dynamische Code weiterhin verwendet werden, selbst wenn das Gerät offline ist, während es in einem Offline-Zustand schwierig wäre, einen Verifizierungscode zu erhalten.
Schlussbemerkungen
In diesem Artikel haben wir zwei verschiedene Einmalpasswortmethoden vorgestellt: E-Mail/Telefon + Verifizierungscode und dynamischer Code.
E-Mail/Telefon + Verifizierungscode basiert auf Kommunikationsinfrastruktur und externen E-Mail- oder Kurznachrichtendiensten (SMS); dynamischer Code ist nicht auf externe Dienste und Kommunikationsmittel angewiesen und kann offline verwendet werden.
Logto, als beliebter, leistungsstarker und hochgradig erweiterbarer IAM-Dienst (Identity and Access Management), unterstützt beide OTP-Methoden und ermöglicht es den Benutzern, die für ihre geschäftlichen Bedürfnisse am besten geeignete Lösung auszuwählen.