Zum Inhalt springen

Google Authenticator

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 6. Januar 2021 um 19:28 Uhr durch Koppapa (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Google Authenticator

Logo der App
Basisdaten

Entwickler Google
Erscheinungsjahr 20. September 2010
Betriebssystem Android, iOS, Blackberry OS
Lizenz proprietäre Lizenz[1], proprietäre Lizenz, Apache-Lizenz, Version 2.0[2][1], Apache-Lizenz
deutschsprachig ja

Google Authenticator ist eine Mobile App des Unternehmens Google Inc. Sie ermöglicht – ähnlich wie etwa Twilio Authy oder Microsoft Authenticator – eine Zwei-Faktor-Authentisierung mittels Einmalkennwörtern gemäß der branchenübergreifenden Initiative For Open Authentication (OATH).

Funktionsweise und Schwachstellen

Google Authenticator unterstützt in nicht RFC-konformer Implementierung mit in der Länge reduzierten Geheimcodes den Standard HMAC-based One-time Password Algorithmus (OATH-HOTP) nach RFC 4226, ein auf einem Zähler basierendes Einmalkennwortverfahren, und davon abgeleitet den Time-based One-time Password Algorithmus (OATH-TOTP) nach RFC 6238, der ein zeitbezogenes Einmalkennwortverfahren darstellt.[3][4]

Der Server, der eine durch Google Authenticator geschützte Anmeldung anbietet, generiert im Rahmen der erstmaligen Initialisierung einen 80 Bit langen Geheimcode, den der Benutzer auf ein persönliches Gerät – in der Regel ein Smartphone – übertragen muss. Hierzu wird das Geheimnis als QR-Code oder als Zeichenkette in Form einer Base32-Darstellung übermittelt.

Der unverschlüsselte Übertragungsvorgang ist eine Schwäche, genauso wie der Umstand, dass der Geheimcode im Klartext auf dem Gerät gespeichert wird. Auch verwendet das Google-Authenticator-Verfahren entgegen der Vorgabe im RFC 4226 nur einen 80 Bit langen Geheimcode – nach RFC 4226 sollte die Länge des Geheimcodes aber mindestens 128 Bit betragen, 160 Bit sind empfohlen. Da es sich bei dem Geheimnis um das Shared Secret des Verfahrens handelt, darf der Code auch nur von einem vertrauenswürdigen Rechner aus abgelesen werden. Auch eine Fotografie des QR-Codes würde das Geheimnis kompromittieren.

Der Authenticator speichert die mit den Servern vereinbarten Geheimnisse im Klartext in einer SQLite-Datenbank auf dem Mobilgerät. Die Sicherheit des Verfahrens hängt damit von der Sicherheit des verwendeten Betriebssystems 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 ohne Wissen des berechtigten Anwenders ausgelesen und zur Berechnung von Einmalpasswörtern verwendet werden; ein Angreifer kann so den zusätzlichen Schutz durch das zweistufige Verfahren aushebeln.[5]

Wenn ein Angreifer in den physischen Besitz des Mobilgeräts gelangt, kann er – selbst im ausgeschalteten Zustand – die Geheimnisse aus dem Speicher auslesen, solange nicht das gesamte Gerät verschlüsselt ist.

Trotz gewisser 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.

Pseudocode

   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

Benutzungsfreundlichkeit

In der Version vom 12. Mai 2020 können Konten/Tokens auf ein anderes Gerät übertragen werden (jedoch nur per QR-Code). Bei Verlust oder Funktionsuntüchtigkeit des Geräts hilft dies jedoch nicht, alle 2FA-geschützten Konten müssen neu eingerichtet werden (eine Backup-Möglichkeit fehlt).[6]

Einzelnachweise

  1. a b gitlab.com.
  2. f-droid.org.
  3. RFC 4226 HOTP: HMAC-based One-time Password Algorithm
  4. RFC 6238 TOTP: Time-Based One-Time Password Algorithm
  5. Recovering Google Authenticator keys from Android device for backup. Abgerufen am 19. November 2016 (Auf Android-Mobilgeräten wird der Geheimcode unter /data/data/com.google.android.apps.authenticator2/databases/databases gespeichert).
  6. Google Authenticator (Google Play)