Google Authenticator

Aus Android Wiki
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.

Der Google Authenticator ist eine App von Google zur Generierung sogenannter Schlüssel zur Verwendung während einer Zwei-Faktor-Authentifizierung. Die App generiert zeitbasierte Einmalpasswörter (Time-Based One-Time Password, kurz TOTP) nach dem RfC-Standard 6238. Verfügbar ist der Authenticator als App für die Betriebssysteme Android, iOS und Blackberry, sowie als PAM-Modul (libpam), bspw. für Linux-basierte Systeme. Der Quellcode ist Open Source und steht unter der Apache 2.0 Lizenz. [1]

Verwendung

Der Authenticator lässt sich prinzipiell als Client für jede Zwei-Faktor-geschützte Anmeldung verwenden, die sich an den o.g. RfC-Standard hält. hauptsächlich entwickelt wurde die App für die Verwendung der in der Zwei-Faktor-Authentifizierung eines Google-Kontos, die anfangs durch den Versand einer SMS an das registrierte Smartphone umgesetzt wurde. Die App löste dieses Verfahren als Standardauswahl bei der Einrichtung ab und bietet den Vorteil, dass der Nutzer auch ohne Netzempfang eine ANmeldung tätigen kann, ohne auf einen Notfallcode zurückgreifen zu müssen.

Nachdem ein Konto in der App eingerichtet wurde, erzeugt die App im 30 Sekundentakt 6-stellige Zifferncodes, der als zweiter Faktor bei einer Anmeldung angegeben werden muss.

Installation

Willkommensbildschirm der App beim ersten Start.

Die Client-App lässt sich i.d.R. über den zum Betriebssystem installierten App-Manager installieren, bspw. den Google Play Store. Da der Quellcode der App Open Source ist, ist der Authenticator auch beim freien App-Store F-Droid vertreten F-Droid Repository. Nach der Installation und dem ersten Aufruf der App erscheint ein Willkommens-Bildschirm, welcher den Hintergrund der App kurz erklärt, sowie die Möglichkeit bietet, ein neues Konto hinzuzufügen. Nach einem Klick auf diesen erscheinen die Möglichkeiten, wie ein neues Konto eingerichtet werden kann:

  • Barcode scannen
  • Schlüssel eingeben

Barcode scannen

Bei der Einrichtung der Zwei-Faktor-Authentifizierung in einem Google-Konto, sowie bei der Einrichtung des PAM-Moduls für einen Benutzer, wird ein QR-Code angezeigt, der von der App gescannt werden kann, um die notwendigen Daten zu erfassen. Dies ist die einfachste und schnellste Möglichkeit ein Konto einzurichten. Nachdem der Barcode gescannt wurde, wird das Konto sofort angelegt und der Name des Nutzers/Google-Konto auch als Name in der App verwendet (dieser kann später geändert werden).

Schlüssel eingeben

Als Alternative (bspw. weil das Smartphone keine Kamera hat, oder die Anwendung keinen QR-Code zur Verfügung stellt) kann die manuelle Einrichtung durch Eingabe des geheimen Schlüssels erfolgen. Dieser sollte nicht aufgeschrieben oder anderweitig aufbewahrt werden, da somit eine erneute (ggf. unberechtigte) Einrichtung auf einem anderen Gerät vereinfacht werden würde. Für Notfälle stehen i.d.R. Notfallcodes zur Verfügung.

Codes plötzlich falsch

Unter gewissen Umständen kann es möglich sein, dass die generierten Codes nicht mehr als korrekt angesehen werden, obwohl es vorher funktioniert hat. Die häufigste Ursache hierfür ist eine Diskrepanz der Server- und der Clientzeit. Da die Codes auf dem TOTP-Standard basieren (und damit zeitbasiert sind), wird zur Generierung eines Codes der hinterlegte Schlüssel, sowie die aktuelle Zeit genutzt. Ist die Zeit auf dem Client eine andere, als die auf dem Server, stimmen die Codes nicht mehr überein. Um dieses Problem zu lösen (welches meist auf dem Client-Gerät (mit der installierten App) vorhanden ist), stellt die Authenticator-App selbst die Möglichkeit bereit, die aktuell Zeit zu korrigieren. Der Menüpunkt versteckt sich in den Einstellungen unter Zeitkorrektur für Codes.

In einigen Fällen scheint die App-eigene Funktion keine Zeitabweichung festzustellen, die behoben werden müsste, sodass die Codes weiterhin als falsch erkannt werden. Hier hilft es ggf. andere Apps, bspw. auf dem Google Play Store, zu nutzen, um die aktuell Zeit mit einer Referenzzeit zu vergleichen und zu korrigieren. Eine dieser Apps ist bspw. die Android-App ClockSync Play Store, die die Atomzeit als Referenzzeit verwendet. Aufgrund der Android-Sicherheitsrichtlinien benötigen solche Apps allerdings Root-Zugang.[2]

Sichern (Backup) der Google Authenticator Konten

Es kann nötig sein, die eingerichteten Konten, bspw. bei einem Wechsel des Gerätes, zu sichern (also ein Backup zu erstellen) und auf einem anderen wiederherzustellen, insbesondere, wenn mehrere Konten vorhanden sind, die ggf. auf verschiedenen Geräten eingerichtet sind, sodass das neu Erstellen der Schlüssel nicht praktikabel ist (wenngleich dies die bevorzugte Variante sein sollte). Hierfür gibt es, aus nahelegenden Sicherheitsgründen, allerdings keine eingebaute Funktion in der App. Die eingerichteten Konten können allerdings mit Hilfe des Root-Zugangs recht einfach gesichert und wiederhergestellt werden. Root-Zugang ist mindestens auf dem Gerät benötigt, auf welchem die Konten aktuell eingerichtet sind. Eine Wiederherstellung auf dem Zielgerät ist prinzipiell (mit erhöhtem Arbeitsaufwand) auch ohne Root möglich. Der Hintergrund ist, dass die Konten in einer SQLite-Datenbank gespeichert werden. Da SQLite keine Benutzersteuerung oder anderweitige Zugriffsbeschränkung aufweist, kann jeder, der Zugriff auf die Datenbankdatei hat, diese auch lesen und verändern. Grundsätzlich hat bei einem Androidgerät nur die App selbst (als eigenständiger Benutzer im System), sowie der root-Benutzer Zugriff auf diese Datenbank.

Die Datenbank, in der die Konten gespeichert sind, befindet sich auf der Daten-Partition (/data) mit dem Pfad /data/data/com.google.android.apps.authenticator2/databases/ und dem Dateinamen databases.[3]

Root auf beiden Geräten

Ist auf beiden Geräten (dem Quell- und Zielgerät) der Root-Zugriff möglich, ist der einfachste Weg, die Datei databases auf dem Quellgerät zu kopieren und auf die externe SD-Karte oder einem PC abzulegen. Auf dem Zielgerät genügt nun das Einfügen der Datei an der selben Stelle (die vorhandene Datei überschreiben). Beim Start der App erscheinen nun die alten Konten.

Root auf dem Quell-Gerät

Ist nur auf dem Quellgerät ein Root-Zugang möglich, müssen die Konten manuell übertragen werden. Hierfür wird die ausführbare SQLite-Datei auf dem Quellgerät benötigt (siehe SQLite im Abschnitt Die Android Binary). Mit dieser kann die Datenbank-Datei geöffnet werden, indem folgender Befehl im Terminal ausgeführt wird (entweder über den Terminal Emulator Play Store oder mit Hilfe der ADB):

sqlite3 /data/data/com.google.android.apps.authenticator2/databases/databases

SQLite3 begrüßt uns nun mit der eigenen Version, einigen kurzen Hinweisen zur Verwendung und einer Eingabeaufforderung. Durch folgenden Befehl werden alle gespeicherten Konten und Zusatzdaten angezeigt, darunter auch die, die zur Neu-Einrichtung benötigt werden:

select email, secret from accounts;

Die Ausgabe wird in etwa folgender entsprechen (Daten abgeändert):

sqlite> select email, secret from accounts;
select email, secret from accounts;
Google:email@gmail.com|tweb53ojvrqm3ltwxfz5k63wk3icvrjn
test2|G4QKUONUWGGOWKIG
sqlite>

Auf dem Zielgerät müssen alle angezeigten Konten nun manuell eingerichtet werden. Hierfür gibt es im Menü (oben rechts das Drei-Punkte-Menü) der App den Punkte Konto einrichten. Als Methode kann ausschließlich Schlüssel eingeben verwendet werden. Der Name ist hier prinzipiell irrelevant, sinnvoll ist es aber, den gleichen zu nutzen, wie auf dem Quellgerät. Der Name ist der Wert vor dem | der auf dem Quellgerät ausgegebenen Daten. Als Schlüssel dient die Zeichenfolge nach dem |. Diese muss exakt abgetippt werden, Groß- und Kleinschreibung muss allerdings nicht beachtet werden. Es ist ratsam nach der Einrichtung eines Kontos die generierten Codes des Quell- und Zielgerätes zu vergleichen um Tippfehler zu identifizieren und das Konto ggf. zu löschen und erneut einzurichten. Das Ändern des Schlüssels ist nicht (ohne Root-Zugang) möglich.

Zum Verlassen der Shell auf dem Quellgerät genügt es, folgende Befehle nacheinander einzugeben und jeweils mit einem Enter zu bestätigen:

.exit
exit
exit

Einzelnachweise