Einmal-Passwörter

Autor : Gerd Raudenbusch
Stand : 11.11.2024

Einmal-Passwörter stellen eine effektive Methode zur Verbesserung der Sicherheit in digitalen Anwendungen dar. Denn selbst, wenn das Einmal-Passwort mitgelesen werden konnte, ist es nach wenigen Sekunden ungültig. Auch als zweiter Faktor durch die Kombination von etwas, das der Benutzer weiß (sein Passwort), mit etwas, das er besitzt (den zeitbasierten Einmalcode), wird eine robuste Authentifizierung erreicht.

Inhalt

Einführung

Das Time-based One-Time Password (TOTP) hat sich als Standard etabliert. TOTP ist ein Algorithmus zur Generierung von zeitlich begrenzten Einmalpasswörtern (One-Time Passwords, OTP), die in der Regel alle 30 Sekunden wechseln. Das Verfahren basiert auf einem geheimen Schlüssel und der aktuellen Zeit, um einen temporären Code zu erzeugen, der für eine kurze Zeit gültig ist.

TOTP findet Anwendung in verschiedenen Bereichen, insbesondere:

Die Generierung eines TOTP-Codes erfolgt durch die Kombination eines geheimen Schlüssels (Token) und der aktuellen Zeit. Der Algorithmus verwendet die Unixzeit, die in Sekunden seit dem 1. Januar 1970 gemessen wird. Diese Zeit wird in Intervalle unterteilt, typischerweise 30 Sekunden. Innerhalb jedes Intervalls wird ein Hash-Wert erzeugt, der dann in einen sechs- oder achtstelligen Code umgewandelt wird.

Die Schritte zur Erstellung eines TOTP-Codes sind wie folgt:

  1. Geheimer Schlüssel: Ein geheimer Schlüssel wird bei der Einrichtung des TOTP-Systems generiert und zwischen dem Server und dem Benutzergerät geteilt.
  2. Zeitintervall: Die aktuelle Zeit wird in Intervalle unterteilt (z.B. alle 30 Sekunden).
  3. Hashing: Der geheime Schlüssel und das aktuelle Zeitintervall werden durch einen Hash-Algorithmus (z.B. HMAC-SHA1) verarbeitet.
  4. Code-Generierung: Der resultierende Hash wird bearbeitet, um einen temporären Code zu erzeugen, der für die Authentifizierung verwendet werden kann.

Vorgehen

TOTP-Token erstellen

Um einen neuen privaten TOTP-Token zu würfeln, empfiehlt sich pyotp. Es kann als python3-Modul mit pip3 install pyotp installiert werden.

Zum Würfeln eines neuen Tokens dient der Befehl

python -c "import pyotp; secret_key = pyotp.random_base32(); print('(}'.format(secret_key))"

Einmal-Passwort erzeugen

Um aus dem privaten TOTP-Token ein Einmal-Passwort zu erzeugen, kann oathtool verwendet werden, welches man mit sudo apt install oathtool installieren kann. Anschließend erzeugt der folgende Befehl ein neues Einmal-Passwort inform eines sechsstelligen TOTP-Codes :

oathtool --base32 --totp <token>

Die OTPauth-URL

Die OTPauth-URL ist ein spezielles Format, das von den Authenticator-Apps, verwendet wird, um ein One-Time-Password (OTP) zu generieren. Die OTPauth-URL besteht aus verschiedenen Parametern, die wie folgt aufgebaut sind:

otpauth://<scheme>?<type>&<secret>&<label>&<issuer>&<period>&<counter>

Ein Beispiel für eine OTPauth-URL könnte wie folgt aussehen:

otpauth://totp/OpenVPN?secret=4LRW4HZQCC52QP7NIEMCIT4FXYOLWI75&label=OpenVPN&issuer=OpenVPN

Diese URL enthält den Scheme otpauth, den Typ totp, das geheime Schlüsselwort 4LRW4HZQCC52QP7NIEMCIT4FXYOLWI75, den Label OpenVPN und den Issuer OpenVPN.

QR-Code erstellen

Um einen QR-Code aus einer beliebiggen Zeichenkette zu erstellen, kann qrencode verwendet werden, welches man mit sudo apt install qrencode installieren kann. Den QR-Code erzeugt man als Bild im png-Format mit dem Befehl :

qrencode -o ./<bildname>.png '<URL>'

QR-Code lesen

Um den Text eines QR-Codes zu lesen, empfiehlt sich das Tool zbarcam, welches man mit sudo apt install zbarcam installiert. Der Befehl zum Auslesen lautet :

zbarcam -1 >./<dateiname>.txt

TOTP-Authenticatoren

Ein TOTP-Authenticator ist eine Software oder Anwendung, die das Verfahren des Time-based One-Time Password (TOTP) implementiert, indem sie die geheimen TOTP-Token inform von OTPauth-URLs oder QR-Codes installiert und für jeden Eintrag das aktuelle Einmal-Passwort anzeigt.

Es ist nicht notwendig, dafür Authenticatoren von großen Herstellern zu verwenden. Außerdem beherrschen Passwort-Manager, wie KeepassXC diese Funktion ebenso.

Die folgenden Authenticatoren sind kostenlos, quelloffen und herstellerunabhängig, und sie unterstützen den Import und Export von OTPauth-URLs und QR-Code :

Plattform Name Download-URL
Linux Authenticator Authenticator auf GitHub
Linux, Windows, macOS Authy Authy auf authy.com
Linux, Windows, macOS 2fast 2fast auf GitHub
Android Aegis Authenticator Aegis auf GitHub
Android, iOS FreeOTP FreeOTP auf GitHub
Android andOTP andOTP auf GitHub
iOS Raivo OTP Raivo OTP auf GitHub

Zurück zur Hauptseite