Tech Blog.

Thoughts, stories, ideas.

Multi-Factor Authentication

17. July 2016

Heutzutage sind Hacker-Attacken keine Seltenheit mehr. Um so wichtiger ist es, Daten gut zu schützen ohne den Aufwand für Datenzugriff massiv zu erhöhen.

Security sollte für alle (Private und Firmen) ein Thema sein. Ein grosses Problem ist, dass oft nur ein (1) Passwort oder Zertifikat/Key verwendet wird. Wenn diese Information gestohlen wird, kann sich der Dieb an sämtlichen Systemen authentisieren. Genau hier kommt eine Multi-Factor, oft auch Two-Factor genannte, Authentifizierung ins Spiel. Das Ziel ist es, mehrere Faktoren zu haben, die möglichst nie zusammen aufbewahrt werden. Ist einer der Faktoren dabei zusätzlich noch dynamisch (One-Time Passwort oder Challenge-Response Verfahren) sollte dies auch sogenannte Replay-Attacken verhindern.

Grundsätzlich kann eine Multi-Factor Authentication auch mit Passwort und Zertifikat realisiert werden. Bei SSH z.B. mit Passwort und RSA Key, im Web mit Passwort und x509 Zertifikaten. Im Nachfolgenden wird aber auf One-Time Passwörter und Challenge-Response Verfahren eingegangen, welche eine zusätzliche Hardware-Komponente voraussetzen. Die Idee dabei ist, dass ein Passwort (den Faktor Wissen) und eine Hardware (den Faktor Besitzen) im Spiel sind was den einfachen Diebstahl verhindert.

FIDO U2F

FIDO U2F ist ein sehr junges Protokoll, welches auf public Key Kryptographie aufbaut. Ein nativer Support im Browser (aktuell nur in Chrome / Chromium und per Addon in Firefox) ist Voraussetzung. Theoretisch kann es auch für SSH und andere Dienste verwendet werden. Auch hier ist die Voraussetzung, dass die Programme dies nativ unterstützen. Entsprechende Patches für den OpenSSH Client sind bereits verfügbar.
Nach erfolgreicher Authentifizierung per Passwort oder Zertifikat, schickt der Server dem Client eine einmalige Challenge worauf der Client dem Server eine, mit dem eigenen privaten Key signierte Response, zurück schickt.

OATH

Bei OATH gibt es zwei Protokolle, der Time-based One-time Password Algorithm TOTP (RFC6238) und der HMAC-based One-time Password Algorithm HOTP (RFC4226).

Zuerst wird ein Shared Secret zwischen Server und Client ausgetauscht. Oft wird dies durch einen QR-Code realisiert.

TOTP

Bei TOTP wird die Uhrzeit als Basis genutzt. Die Voraussetzung ist, dass bei Server und Client die Uhrzeit synchronisiert ist.
Der Authentication Code wird mit folgender Funktion generiert: HMAC(sharedSecret, timestamp) und ist für 30 Sekunden gültig.

HOTP

HOTP funktioniert gleich wie TOTP, nutzt aber an Stelle der Uhrzeit einen Counter, welcher Server- und Client-Seitig immer synchron sein müssen.
Der Authentication Code wird durch folgende Funktion generiert: HMAC(sharedSecret, counter) und ist für das nächste Login gültig (Zeitunabhängig).

One-Time Passwort (OTP)

One-Time Passwörter (OTP) sind ein einfaches Verfahren von Yubico, welches im Hintergrund zusätzliche Infrastruktur benötigt. Nach erfolgreicher Authentifizierung per Passwort oder Zertifikat, verlangt der Server noch ein OTP. Wird dieses gesendet, muss es der Server an einen Validation-Server weiterleiten für die Überprüfung der Einmaligkeit.

Drei OTPs sehen vom selben Yubikey zum Beispiel wie folgt aus:
<b>rjvrllbbckhe</b>flnbdhnbdgluhedfneecjrluudknuecu
<b>rjvrllbbckhe</b>nrvblgfvkcbdhbtnjegvdicnhcutundg
<b>rjvrllbbckhe</b>lvrdjdrjccrvkrlbiijictlullglfglj

Die ersten 12 Zeichen der Sequenz sind dabei der Publicname und die restliche Sequenz wird anhand eines AES-Keys und einem Counter generiert. Der AES-Key muss dabei dem Yubikey und dem Validation-Server (spezifisch dem yubikey-ksm) bekannt sein.
Bei jedem OTP wird der Counter mitgegeben, damit der Server seinen Counter synchronisieren kann.

Validation-Server

Die Validation-Server Software von Yubico yubikey-val und yubikey-ksm kann unkompliziert selber gehostet werden. Man kann aber auch die YubicoCloud, welche von Yubico selber gehostet und angeboten wird, verwenden.
Bei kritischer Infrastruktur ist das selber hosten Sicherheitstechnisch sicher sinnvoller. Dabei geht es weniger um den Datenschutz, sondern eher um die Verfügbarkeit. Wenn, als Beispiel, die Internet Anbindung unterbrochen wird und für die Reparatur der Firewall ein Login über Two-Factor Authentifizierung mit OTP nötig wäre, ist man in einem deadlock und hat keine Verbindung zum Internet mehr.