Montag, 5. Dezember 2016

November 2016 - Zwei-Faktor-Authentifizierung (SMS-Authentifizierung)



2FA - Allgemein

Die Zwei-Faktor-Authentifizierung, kurz 2FA, wird verwendet, um einen Nutzer mittels Kombination zweier unabhängiger und in ihrer Art unterschiedlicher Komponenten zu identifizieren. Die beiden Komponenten bestehen meist aus etwas, das der Benutzer weiss, etwas, das er besitzt oder etwas, das zu ihm gehört.
Bereits die Kombination aus Bankkarte und PIN ist als 2FA anzusehen, da der Kunde den PIN weiss und die Bankkarte besitzt. Bei einem Login auf einer Website o.ä. ist nicht von 2FA zu sprechen, weil Benutzername und Passwort beides Dinge sind, die der Benutzer wissen muss, beides sind Komponenten die einer Art angehören.
Die Zwei-Faktor-Authentifizierung ist nur dann erfolgreich, wenn beide Faktoren eingesetzt werden und korrekt sind. Fehlt eine Komponente oder ist eine falsch, lässt sich der Benutzer nicht "zweifelsfrei identifizieren" und bekommt folglich auch keinen Zugriff zum System.

Beispiele für Faktoren:

- etwas, das der Benutzer besitzt: Hardware-Token, Bankkarte, Schlüssel, Smartphone, etc.

- etwas, das der Benutzer weiss: Benutzername, Kennwort, Einmalkennwort, PIN, etc.

- etwas, das zum Benutzer untrennbar gehört: Fingerabdruck, Iris, Stimme etc.


Am häufigsten werden die beiden Faktoren durch etwas, das der Benutzer besitzt (Token) und etwas, das er weiss (Kennwort) zusammengesetzt. Bei diesen Komponenten ist es aber zwingend notwendig, dass der Benutzer den jeweiligen Token immer mitführt. Wird er verloren, gestohlen oder der Benutzer hat ihn nicht dabei, ist eine Authentifizierung nicht möglich. Hinzu kommen Erstanschaffungs- sowie Ersatzbeschaffungskosten. Das sind die Nachteile dieser Methode.

SMS-Authentifizierung

Eine Gegenmassnahme, um diesen Nachteilen ein Stück weit aus dem Weg zu gehen, ist die tokenlose Zwei-Faktor-Authentifizierung, die als Alternative geschaffen wurde. Die Rede ist hier von der SMS-Authentifizierung. Hier wird, wie aus dem Namen hervorgeht, zur Authentifizierung vom Server eine SMS an den Benutzer verschickt. Das bedeutet, das Smartphone oder Mobiltelefon des Benutzers dient als Hardware-Token, also etwas, das der Benutzer besitzt.
Wenn der Benutzer sich also an einem Server anmelden will, gibt er zunächst seine Zugangsdaten, die nur er kennt, meist bestehend aus Benutzername und Passwort, ein (erster Faktor). Der Server generiert dann einen Code und schickt diesen per SMS (zweiter Faktor) an den Benutzer. Durch korrekte Eingabe dieses Codes kann sich der Benutzer am Server zweifelsfrei identifizieren lassen.
Der Vorteil dieser Methode ist, dass kein zusätzlicher Hardware-Token mitgeführt werden muss, da die meisten Leute das Smartphone sowieso immer dabei haben. Zwar kann auch ein Smartphone gestohlen oder verloren gehen, jedoch ist die Wahrscheinlichkeit hier etwas geringer. Zudem kann das Smartphone bei vielen Diensten auch gebraucht werden, um sich z.B. über einen Browser anzumelden, folglich muss kein zusätzlicher PC verwendet werden. Weiterhin ist die Sicherheit auch dadurch erhöht, dass Smartphones meist mit PINs gesperrt sind und dass professionelle Systeme dafür sorgen, dass bereits verwendete Codes nicht beim Empfänger verbleiben, sondern gelöscht werden.

Praxis

Es existieren einige Unternehmen, die einem den allgemeinen SMS-Versand abnehmen möchten. Daneben werben sie natürlich auch für die Möglichkeit, den Kunden eine 2FA via SMS zu bieten.
In der Schweiz agierende Unternehmen sind zum Beispiel folgende:

- aspsms.ch
- websms.ch

Von letzerem Anbieter stammt auch die folgende Grafik, welche etwas besser veranschaulicht, wie die SMS-Authentifizierung praktisch abläuft.


(Klicken zum vergrössern)


Für das E-Banking setzen die Banken schon lange auf die 2FA per SMS Methode.
Vor allem bei sensiblen Daten werden solche 2FA-Methoden eingesetzt, daher kommt es immer häufiger vor, dass Unternehmen die 2FA einsetzten.


Umsetzung

Die meisten Anwendungen, die die 2FA benutzen, sind Web-Anwendungen. Für Web-Anwendungen wird immer öfter das ASP.NET Framework, welches von Microsoft entwickelt wurde, verwendet. Daher findet man im Internet am häufigsten Beispiele in ASP.NET-Anwendungen mit dem MVC-Modell (Model, View, Control).  
ASP.NET-Anwendungen können, da es von Microsoft entwickelt wurde, mit C# programmiert werden. 
Eine andere Möglichkeit neben Web-Anwendungen sind Desktop-Applikation z.B. mit dem .NET Framework entwickelt. Diese müssen aber zusätzlich auch eine spezielle API zum Versenden von SMS einbinden.
Bei beiden Möglichkeiten wird ein SMS-Gateway (wie oben in der Grafik ersichtlich) benötigt.
Dieses wird dann meist bei einem Anbieter (siehe Obengenannte) bezogen, der teilweise auch noch die benötigten APIs zur Verfügung stellt.