Skip to content

2-wege Authentifizierung

Das Passwort als Mechanismus für die Authentifizierung von Benutzern ist tot, es hat es nur noch nicht bemerkt. Benutzer sind es gewohnt mit Passwörtern umzugehen, und sie funktionieren für eine breite Palette an Anwendungen, Protokollen und Geräten. Allerdings ist "funktionieren" zu viel gesagt. Denn die Sicherheits- und Supportprobleme bei vergessenen, erratenen, weitergegebenen, zu einfachen oder wiederverwendeten Passwörtern sind sehr hoch. Auch die großen sozialen Dienstbetreiber haben dies schon bemerkt, und versuchen auf zusätzliche Sicherheitsmerkmale zu setzen. So versucht Facebook zum Beispiel zu erraten welcher Login aus einem fremden Netzwerk unerwartet ist, oder welches Endgerät noch nicht benutzt wurde. Google und Amazon (bei den AWS Diensten) gehen hier schon einen Schritt weiter. Beide setzen auf Mehrfaktoren Authentifizierung. Google nennt es entsprechend 2-wege Verifizierung und Amazon AWS nennt es kurz MFA (für Multi Factor Authentication). Beiden gemeinsam ist die Option einmalpasswörter von einem (Hardware) Token erzeugen zu lassen, das sind 6-stellige Zahlen die sich alle 30 Sekunden ändern. Neben dem traditionellen Passwort muss dieser Code angegeben werden. Somit können sich nur Anwender anmelden, die das Hardware Gerät besitzen und das Passwort kennen. Statt einem Hardware Gerät bieten beide Anbieter auch an eine App auf dem Mobilfunkgerät zu verwenden. Google bietet dazu zum Beispiel den freien und kostenloses Google Authenticator für Android, iPhone oder Blackberry an. Einmalig überträgt dabei der Dienstanbieter ein gemeinsames Geheimnis via QR-Code (zum abfotografieren) oder als base32 String zum abtippen an das Soft Token (oder Virtuelles Token wie Amazon es nennt). Das Token gerät benutzt dieses Geheimnis und die aktuelle Uhrzeit (in 30 Sekunden Intervallen seit Unix Epoche) um daraus eine dezimale Ziffernfolge ähnlich einer PIN zu erzeugen. Alternativ bietet Google an mittels SMS den Code zugeschickt zu bekommen, oder aber eine Liste von Abstreichcodes (vergleichbar mit einer TAN Liste) für Notfälle auszudrucken. Alles in allem ein gutes Konzept bei Google, das man nutzen sollte. Im Web Browser kann ein Cookie nach jeder erfolgreichen Token Authentifizierung hinterlegt werden, so dass man diese Prozedur nur alle 30 Tage durchführen muss. Anwendungen wie Messenger, E-Mail Clients oder Mobile Apps können mit einem von Google erzeugten sekundären Passwort betrieben werden, das dann in einer Liste der bekannten Anwendungen steht und dort jederzeit wieder gesperrt werden kann. Amazon bietet auch eine ganze Reihe von zusätzlicher Authentifizierungsverfahren (Zertifikate und Zugriffsschlüssel) für Anwendungen an. Übrigens verwenden Google als auch Amazon dasselbe Token Protokoll TOTP das in RFC 6238 spezifiziert wird. Die 20byte Geheimnisse werden dabei in base32 codiert, erzeugt wird ein 6 stelliger Response Code mit dynamischer Offsetberechnung und die im HMAC eingesetzte Hashfunktion ist SHA-1. Genau für diese Parameter habe ich auch eine kleine Java (Swing) Anwendung für den Desktop geschrieben. Ich habe diese sowohl mit Google als auch Amazon getestet und sie funktioniert. Aktuell wird das dabei notwendige Geheimnis noch AES-128 verschlüsselt auf der Platte abgelegt, was die Sicherheit dieses Verfahrens im Vergleich zu einem reinen Hardware Token natürlich etwas einschränkt. Ich denke aber ich werde es noch um ein DPAPI oder TPM Modul zur Aufbewahrung des Geheimnisses erweitern. Das Projekt findet sich bei GitHub unter dem Namen et-otp.