Beiträge

Das Problem mit dem Google Authenticator

funkmast

Gute Netzabdeckung, ein großes Angebot von preiswerten Smartphones und der Trend „bring your own device“ führten zu einem Paradigmenwechsel beim Thema Mehr-Faktor-Authentisierung.

Während vor einigen Jahre Mehr-Faktor- oder Zwei-Faktor-Authentisierung nur von großen Unternehmen angegangen wurde und solchen die einen hohen Schutzbedarf haben, wurde nun doch erkannt, dass Daten zu schützen, die Aufgabe eines jeden Geschäftsführers ist.

Gleichzeitig wird immer öfters auf die einfachereren und preiswerteren Varianten mit einem Smartphone-App, Email oder SMS zurückgegriffen. Doch muss man sich klarmachen, wieviel Sicherheit bei dem Einsatz solch schwacher Faktoren noch übrig bleibt.

Der Google Authenticator

Der Google Authenticator war eine der ersten Apps, die die OTP-Funktionalität bisheriger Hardware-Token in Software auf einem Smartphone abbildete. Der Google Authenticator unterstützt HOTP und TOTP Algorithmen. Alternative Apps sind FreeOTP (TOTP) oder HDE OTP (TOTP).

Die Nutztung des Smartphones als Authentisierungsdevice hat durchaus seine Berechtigung. Denn ein wichtiger Aspekt eines Besitztums zur Anmeldung ist, dass der Benutzer diesen mit sich trägt und nicht auf dem Schreibtisch liegen oder im Computer stecken lässt.

Das Seed (1)

Die OTP Algorithmen HOTP und TOTP arbeiten auf der Basis eines symmetrischen geheimen Schlüssels oder auch Seed, anhand dessen die Einmalpassworte berechnet werden. Das bedeutet aber auch, dass dieses Seed sicher geschützet werden muss. Ob dieses im Smartphone jeweils immer gegeben ist, darf – da das Smartphone auch nur ein leistungsstarker Computer mit veralteter Software und schlechtem Virenschutz ist – berechtigter Weise bezweifelt werden.

Das Seed (2)

Doch ein viel einfacherer Missbrauch ergibt sich aus dem bequemen Konzept zur Initialisierung der Smartphone App.

QrCode-TOTP

Dies geschieht über den QRCode, in dem das oben genannte Seed im Klartext enthalten ist. Der hier gezeigte QRCode enthält den folgenden Inhalt:

otpauth://totp/TOTP00017410?secret=O6LVCAVTS2IJ25NKXKOOGCNTJIOFNUXA&counter=1&digits=6&issuer=privacyIDEA

Dabei ist O6LVCAVTS2IJ25NKXKOOGCNTJIOFNUXA der geheime Schlüssel in sogenannter „Base32“ Schreibweise. Das mag für das menschliche Auge zwar merkwürdig und kompliziert aussehen, ist für den Computer oder das Smartphone aber tatsächlich Klartext.

Da dies ein zeibasierter OTP Token ist, wird jedes Gerät, das diesen QRCode scannt, immer den gleichen OTP-Wert anzeigen.

Ein Selbstversuch

Ich lade ein zum Selbstversuch: Haben Sie zwei Smartphones zur Hand? Installieren Sie auf beiden Smartphones den Google Authenitcator, HDE OTP oder FreeOTP. Einzige Voraussetzung für das Gelingen dieses Versuchs ist es, dass die Uhren der beiden Smartphones genau gehen.

Versuch 1

Scannen Sie den QRCode mit Ihrem Smartphone A und mit ihrem Smartphone B.

Starten Sie den Google Authenticator und beobachten Sie, dass auf beiden Smartphones jeweils das gleiche Einmalpasswort angezeigt wird. Zwei Mal das gleiche Einmalpasswort? Da stimmt doch was mit der Namensgebung nicht!

Versuch 2

Dieser Versuch verdeutlicht das Problem noch etwas mehr. Löschen Sie den Token von Smartphone B. Drucken Sie diese Seite mit dem QRCode aus und legen sie sie eine Woche in die Schublade.

Nach einer Woche gehen Sie zur Schublade und Scannen mit Smartphone B den QRCode. Smartphone B wird sofort die gleichen Einmalpassworte wie das Smartphone A anzeigen.

Das Problem im Unternehmen

Aufgrund der Struktur des TOTP-Algorithmus und des Rollout-Prinzips des Google Authenticators können Sie identische Kopien des Tokens erstellen. Auch noch nach Wochen und Monaten.

Ein Unternehmen, das die Passwortweitergabe unter Mitarbeitern verhindern will, darf sich bei der Einführung einer Zwei-Faktor-Lösung nicht blind auf diesen Algorithmus verlassen. Denn derselbe QRCode kann von allen Kollegen gescannt werden, so dass jeder Mitarbeiter den Token des anderen Kollegens hat. Schon wieder ist es dem Unternehmen nicht möglich, sicherzustellen, welcher Mitarbeiter denn nun wirklich hinter dem Account steckt. Die Idee des zweiten Faktors ist ausgehebelt.

Eine mögliche Lösung

Das Problem liegt hier im Rollout-Prozess, bei dem der geheime Schlüssel im Klartext übertragen wird. Ein besseres Rollout-Konzept weist der TiQR-Token auf. Dabei erzeugt das Smartphone den Schlüssel und scannt einen QRCode, in dem aber nur ein Registrierungslink enthalten ist, wohin der Schlüssel (über einen verschlüsselten Kanal) gesendet werden muss.

Doch dieser Rollout-Prozess erfordert auch eine aufwändigere Infrastruktur. Das Smartphone muss online sein und für den Registrierungslink muss ein verstrauenswürdiges Zertifikat vorhanden sein.

Gerade die Leichtigkeit des Rollouts im Falle des Google Authenticators haben gewiss zu seinem Erfolg beigetragen. Doch es bleibt nicht aus, dass man bei der Einführung einer Zwei-Faktor-Lösung sich Gedanken machen muss, wie die diversen Prozesse am besten umzusetzen sind. Schwächen in der Sicherheit sind nur dann tragbar, wenn man sich bewusst für diese entschieden hat und das Restrisiko akzeptieren und damit leben kann.

 

HOTP oder TOTP

Mit HOTP und TOTP sind zwei Algorithmen standardisiert, die offen sind und nach heutigem Dafürhaltenvom Algorithmus her als sicher angesehen werden können.

Viele Hersteller klassischer Hardware-Token und aber auch Smartphone-Apps bedienen sich dieser Algorithmen, um Einmalpasswörter zu erzeugen. Immer wieder taucht in unseren Projekten die Frage auf, ob denn HOTP- oder TOTP-Token eingesetzt werden sollen.

Das kommt drauf an.

HOTP und TOTP sind, wie eingangs erwähnt, nach heutigem Kenntnisstand per se als sicher anzusehen. D.h. aus einem oder mehrerer gewonnenen OTP-Werte könnten keine zukünftigen OTP-Werte berechnet werden. Ebenso kann im Falle von HOTP aus der Kenntnis des Zählers kein zukünftiger OTP-Wert berechnet werden. In beiden Fällen geht der symmetrische, geheime Schlüssel in einen HMAC-SHA1 Algorithmus ein. Zusätzlich wird das Ergebnis auf 6 oder 8 stellen gekürzt, so dass die Angriffsmöglichkeiten weiter schwinden.

In der praktischen Handhabung unterscheiden sich HOTP und TOTP aber sehr. Wenn man sich dies vor Augen hält, kann es bei der Entscheidungsfindung entsprechend helfen.

Ich starte nicht mit HOTP, damit ich mit TOTP aufhören kann. Es ist lediglich eine historische Herangehensweise. HOTP ist der ältere Algorithmus. (HOTP: RFC4226, Dezember 2005, TOTP: RFC6238, Mai 2011).

HOTP

Nachteile

  • Die TAN-Liste. HOTP ist ereignisbasiert. Ein Tastendruck zählt einen Zähler hoch. Der so erzeugte OTP-Wert wird erst ungültig, wenn entweder dieser OTP-Wert oder ein nachfolgender OTP-Wert benutzt wird. Wenn der Benutzer sich einen OTP-Wert drückt, hat er alle Zeit der Welt, diesen einzutippen. Das bedeutet aber auch, dass er sich diesen OTP-Wert aufschreiben kann. Und den nächsten. Und noch einen. Somit ist der Benutzer in der Lage, sich eine TAN-Liste zu erzeugen. Diese kann er mit seinen Arbeitkollegen teilen, in die Schreibtischschublade legen oder ins Portemonnaie stecken.

Vorteile

  • HOTP ist ereignisbasiert. Das macht ihn robust und stromsparend. Naja, das mit dem Strom lassen wir mal gerade bei Seite. Aber es existiert nicht das Problem, dass die Uhr des Tokens aus der Synchronisation mit dem Server läuft. Weil er keine Uhr hat. Der Mechanismus, einen out-of-sync HOTP-Token wieder zu synchronisieren ist ebenso einfach und robust. In der Praxis ist der HOTP-Token einfacher anzuwenden als ein TOTP-Token.
  • Der HOTP-Token lässt sich nicht so leicht klonen. Wenn man bspw. einen Google Authenticator ausrollt, so kann der QR-Code, der das geheime Seed enthält, auf zwei oder mehreren Smartphones gescannt werden. Wenn man nun anfängt, sich mit dem Smartphone 1 zu authentisieren, so zählt das Smartphone 1 den Zähler hoch. Im Server wird ebenfalls der Zähler hochgezählt. Kommt nun der Kollege mit dem gleichen Seed auf dem Smartphone 2, so erzeugt er einen bereits verbrauchten OTP-Wert. Die Zähler zwischen den Smartphones laufen auseinander.
    • Im Falle eines Angriffs: Wenn ein Angreifer den QR-Code scannt und sich erfolgreich anmeldet, wird dadurch der Zähler im Server hochgezählt. Wenn nun der legitime Besitzer kommt, erzeugt er einen bereits verbrauchten OTP-Wert und kann sich nicht anmelden. Wenn der Angreifer sich schon öfters als einmal angemeldet hat, dann wird auch das Resynchronisieren des legitimen Benutzers fehlschlagen. Ein Angriff ist somit also potentiell leichter zu bemerken.

TOTP

Nachteile

  • Die Uhr und die Synchronität. Der TOTP-Token ist zeitbasiert. D.h. in diesem kleinen Token tickt eine Uhr, die möglichst genau so schnell gehen soll, wie die in dem Server. Es existieren hier Mechanismen, diese synchron zu halten. So kann bei jeder Authentisierung das Offset der Uhr ermittelt werden. Wenn ein Benutzer sich aber sehr lange nicht anmeldet, dann geht die Uhr sehr falsch, so dass man Probleme bekommen kann. Die Resynchronisierung erweist sich in der Praxis nicht immer so leicht, wie beim HOTP Token.
  • Die Uhr im Auslieferungszustand. Die Uhr im Auslieferungszustand könnte schon eine unbekannte Zeitdrift haben, die man erstmal feststellen muss. Der HOTP-Token wird mit dem Counter „0“ ausgeliefert.
  • Der TOTP-Token schneidet die Unix-System-Time in Zeitscheiben. Dies können 30 oder 60 Sekunden sein. In manchen Fällen kann das zu Verwirrungen führen. Wählt man die Zeitscheibe falsch, dann schlägt die Authentisierung und die Synchronisation fehl!
  • Der TOTP-Token lässt sich leichter Klonen. Im Falle des Google Authenticators kann der QR-Code mit verschiedenen Smartphones gescannt werden. Jedes Smartphone erzeugt zu jedem Zeitpunkt einen gültigen OTP-Wert.
    • Lediglich innerhalb der Zeitscheibe von 30 oder 60 Sekunden kann eine Authentisierung fehlschlagen, weil sich in diesem Fenster der Angreifer schonmal angemeldet hat. Nach einer Minute ist aber nichts mehr davon zu merken, dass ein Angreifer einen Klon des Smartphone-Tokens besitzt.
  • Mit einem TOTP-Token kann man sich innerhalb von 30 oder 60 Sekunden nur einmal anmelden. Während das für den klassischen Einsatzzweck eines Remote-Zugang durchaus OK ist, kann dies in anderen Fällen problematisch sein. Nutzt man OTP bspw. für die SSH-Server-Farm, so kann es durchaus notwendig sein, sich öfters als alle 30 Sekunden einen OTP-Wert zu erzeugen.

Vorteile

  • Es können keine TAN-Listen erzeugt werden.

 

Fazit

HOTP und TOTP haben beide ihre Vor- und Nachteile. In machen Fällen passt der eine besser, in anderen der andere. Welcher Tokentyp in Ihrem Szenario passt, lässt sich am besten im Rahmen eines Projekts klären.  Alle Tokentypen werden von privacyIDEA unterstützt und können in beliebigen Mischbetrieben genutzt werden.