2FA: Zwei-Faktor-Authentifizierung mit TOTP

Die Zwei-Faktor-Authentifizierung (2FA) oder im allgemeinen als Mehr/Multi-Faktor-Authentifizierung (MFA) bekannt, hat im Bereich der IT-Sicherheit in den letzten Jahren stark an Bedeutung gewonnen.

Eines der bekanntesten Verfahren ist das Time-based One-time Password (TOTP) Verfahren. TOTP ist in Verwendung in unterschiedlichen MFA-Lösungen, zu denen der Sophos Authenticator und Google Authenticator gehören. Viele kennen das Verfahren auch von kleinen Hardware-Token, welche alle 60 Sekunden ein neues Einmalpasswort generieren und anzeigen.

Wie funktioniert das TOTP Verfahren?

Das TOTP Verfahren wurde 2011 durch die Internet Engineering Task Force (IETF) veröffentlicht. Die technischen Spezifikationen sind unter der RFC-ID 6238 beschrieben. Bei diesem Verfahren wird ein Hash gebildet, welcher sich aus einem geheimen Passwort in Kombination mit der zum Zeitpunkt der Berechnung des Hashes genommenen Uhrzeit zusammensetzt.

Die Berechnungsformel ist wie folgt darzustellen:

TOTP = HOTP (SecretKey, CurrentTime)

HOTP bedeutet HMAC-based One-time Password Algorithmus. Dieser Standard ist in der RFC 4226 beschrieben und besagt – vereinfacht ausgedrückt, die Festlegung des Hashs auf eine bestimmte Weise.

Die Variable SecretKey beinhaltet das “Shared Secret”. Dieses “Secret”, ein Passwort, ist dem Server und dem Client bekannt. CurrentTime lässt die aktuelle Zeit in die Berechnung einfließen:

CurrentTime=floor((unixtime(now)-unixtime(T0)) / TI)

Die zusätzliche Variable T0 wird standardmäßig mit dem Wert “1. Januar 1970” gefüllt. Die Variable T1 enthält das Aktualisierungsintervall.

Anschließend wird das finale Einmalpasswort mit folgender Formel generiert:

Result = TOTP mod 10^d

^d steht für die gewünschte Anzahl der Stellen des One-Time-Passwords, üblicherweise 6 oder 8.

Um leichte Abweichungen der Uhrzeit zwischen Client und Server zu akzeptierten, können bei der Implementierung des Verfahrens Anpassungen zur Akzeptanz dieser Abweichungen eingebaut werden.

Die Praxis: Aktivierung der Zwei-Faktor-Authentifizierung

Damit sich ein User Tokens generieren lassen kann (z.B. mittels eines Smartphones als Generator), muss die Verwendung für den User eingerichtet werden.

Grundsätzlich sind dazu 3 wichtige Schritte notwendig:

1, Auf dem Authentifizierungsserver wird ein SecretKey für den Benutzer generiert. Die Zuhilfenahme eines kryptographisch sicheren Zufallsgenerators erhöht die Sicherheit und ist grundsätzlich zu empfehlen. Niemals sollten Zufallszahlengeneratoren verwendet werden, die mit statischen Grundwerten arbeiten. Um eine Wiederherstellung von Tokens gewährleisten zu können, muss der SecretKey für jeden User gesichert werden. Hier empfehlen sich verschlüsselte Speicher, um einen Diebstahl des Keys vorzubeugen.

2. Der generierte SecretKey wird der 2FA App des Benutzers bekannt gemacht. Ein etablierter Weg ist die Bereitstellung des Keys mittels QR-Code, in welchem Informationen wie der SecretKey, der Issuer des Keys sowie eine kurze Beschreibung enthalten sind.

3. Die genutzte App generiert einen Token, der zur Verifikation an den Server übertragen wird. Der Server vergleicht nun den erhaltenen Token des Clients mit einem von ihm selbst generierten Token. Stimmen diese Tokens überein, kann die App für den Benutzer aktiviert und genutzt werden.

 

Sicherheit bei der Implementierung

Wenn eine Lösung beziehungsweise ein Verfahren nicht sauber implementiert wurde, bilden sich Sicherheitslücken. Nachfolgend finden Sie einige Tipps für eine ‘sichere’ Implementierung der  Zwei-Faktor-Authentifizierung:

  • Zufallszahlengenerator: Um einen komplexen SecretKey zu generieren ist es zwingend erforderlich, dass das zufällige Passwort kryptografisch komplext ist. Es sollte mindestens 24 Stellen haben.
  • Jeder Benutzer benötigt ein eigenes, individuelles Passwort und einen individuellen SecretKey.
  • Ein 6 oder 8 stelliges One-Time-Passwort ist relativ anfällig für Brute-Force-Angriffe. Um zu verhindern, dass das Passwort erraten werden kann, muss sichergestellt werden, dass der Nutzer nur X Versuche pro Intervall hat.
  • Ein mehrmaliges Verwenden von One-Time-Passworten innerhalb eines Intervals darf nicht möglich sein (Schutz gegen s.g. Replay-Angriffe).
  • Die Übertragung des Keys sollte IMMER verschlüsselt erfolgen.
  • Zur Erstellung des QR-Codes sollten keine Onlinedienste (z.B. chart.googleapis.com) genutzt werden. Zum einen können hier ungewollte Abflüsse der Keys entstehen, zum anderen kann der Abgleich des Keys aufgrund von zeitlichen Differenzen bei der Erstellung fehlschlagen.

 

Kontaktieren Sie jetzt Ihren CEMA IT-Security Spezialisten!

Klicken Sie hier, um E-Mails von CEMA zu erhalten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.