Zum Inhalt springen

Google Authenticator

aus Wikipedia, der freien Enzyklopädie
Google Authenticator

colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | Logo der App
Basisdaten

Maintainer Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Entwickler Google
Erscheinungsjahr 20. September 2010
Aktuelle Version 7.0
(2. August 2024)
Aktuelle Vorabversion Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value))
Betriebssystem Android, iOS, Blackberry OS
Programmier­sprache Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Lizenz Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
deutschsprachig ja
Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Datei:Google Authenticator for Android icon.svg
Logo bis April 2023

Google Authenticator ist eine Mobile App des Unternehmens Google. Sie ermöglicht eine Zwei-Faktor-Authentisierung (2FA) mittels Einmalkennwörtern gemäß der branchenübergreifenden Initiative For Open Authentication (OATH).

Funktionsweise und Schwachstellen[Bearbeiten]

Bei nicht-RFC-konformer Implementierung mit in der Länge reduzierten Geheimcodes unterstützt Google Authenticator zwei Einmalkennwort-Verfahren. Den HOTP-Standard (HMAC-based one-time password) nach RFC 4226, ein auf einem Zähler basierendes Einmalkennwort-Verfahren,<ref>Vorlage:RFC-Internet</ref> und den davon abgeleiteten TOTP-Standard (Time-based one-time password) nach RFC 6238, ein zeitbezogenes Einmalkennwort-Verfahren.<ref name="RFC6238" />

Google Authenticator verwendet einen nur 80 Bit langen Geheimcode. Nach RFC 4226 sollte die Länge des Geheimcodes hingegen mindestens 128 Bit betragen, 160 Bit sind empfohlen. Feature-Requests zur Unterstützung moderner Hashfunktionen wie SHA-2 bleiben seit Jahren unberücksichtigt.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/github.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Google Authenticator speichert die mit den Servern vereinbarten Geheimnisse (Shared Secrets) im Klartext in einer SQLite-Datenbank auf dem Mobilgerät. Die Sicherheit des Verfahrens hängt damit von der Sicherheit des verwendeten Mobilgeräts ab. Wird diese Sicherheit durch den Anwender (beispielsweise durch das bei Smartphones anzutreffende Rooten) oder durch Sicherheitslücken im Betriebssystem kompromittiert, können die Geheimnisse auch von Nichtberechtigten ausgelesen und zur Berechnung von Einmalpasswörtern verwendet werden. Wenn Angreifer in den physischen Besitz des Mobilgeräts – selbst im ausgeschalteten Zustand – gelangen, können sie die Geheimnisse aus dem Speicher des Geräts auslesen, sofern nicht das gesamte Gerät (sicher) verschlüsselt ist. Angreifer können so den zusätzlichen Schutz durch das zweistufige Verfahren aushebeln.<ref name="recover-google-authenticator-keys" />

Auf einem nicht gesperrten Smartphone kann zudem jeder die aktuellen Bestätigungscodes abrufen. Es sei denn, die integrierte Fingerprint-Identifikation in der App wurde aktiviert.

Trotz Schwächen in den Implementierungsdetails bewirkt die Nutzung der Zwei-Faktor-Authentifizierung sogar mit dieser App einen großen Zugewinn an Sicherheit, da der Aufwand für einen Angreifer bei Einsatz dieses Verfahrens erheblich höher ist als bei einer Ein-Faktor-Authentifizierung nur über ein Passwort.

Synchronisation und Backup[Bearbeiten]

Vor Version 6.0 konnten Konten samt Geheimnis nur per QR-Code auf ein anderes Gerät übertragen werden, eine Backup-Möglichkeit fehlte. Bei Verlust oder Funktionsuntüchtigkeit des Geräts half dies jedoch nicht, alle 2FA-geschützten Konten müssen neu eingerichtet werden.

Seit Version 6.0 werden die eingerichteten Konten mit dem Google-Konto synchronisiert und dort mutmaßlich im Klartext abgelegt.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 25. April 2023; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.heise.de (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref><ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 26. April 2023; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.heise.de (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Quellcode-Lizenz[Bearbeiten]

Die Google Authenticator-App für Android war ursprünglich unter der Apache-Lizenz quelloffen und, wurde aber später proprietär.<ref name="lwn-otp">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 22. Januar 2014; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/lwn.net (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> Die letzte Open-Source-Version stammt aus dem Jahr 2020. Google stellte den früheren Quellcode seiner Authenticator-App auf seinem GitHub-Repository zur Verfügung; auf der zugehörigen Entwicklungsseite heißt es:<ref>Vorlage:GitHub</ref><ref>Vorlage:GitHub (Android-Version)</ref>

Dieses Open-Source-Projekt ermöglicht es Ihnen, den Code herunterzuladen, der die Version 2.21 der Anwendung angetrieben hat. Nachfolgende Versionen enthalten Google-spezifische Workflows, die nicht Teil des Projekts sind.

Pseudocode[Bearbeiten]

Pseudocode des TOTP-Algorithmus gemäß RFC 6238:<ref name="RFC6238" />

function GoogleAuthenticatorCode(string secret)
    key := base32decode(secret)
    message := floor(current Unix time / 30)
    hash := HMAC-SHA1(key, message)
    offset := last nibble of hash
    truncatedHash := hash[offset..offset+3]  //4 bytes starting at the offset
    Set the first bit of truncatedHash to zero  //remove the most significant bit
    code := truncatedHash mod 1000000
    pad code with 0 until length of code is 6
    return code

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references> <ref name="recover-google-authenticator-keys"> Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Auf Android-Mobilgeräten wird der Geheimcode unter /data/data/com.google.android.apps.authenticator2/databases/databases gespeichert).@1@2Vorlage:Toter Link/gist.github.com (Seite nicht mehr abrufbar. Suche im Internet Archive) </ref> <ref name="RFC6238"> Vorlage:RFC-Internet </ref> </references>