Google Authenticator
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).
Google Authenticator | |
---|---|
Basisdaten | |
Entwickler | |
Erscheinungsjahr | 20. September 2010 |
Aktuelle Version | 5.10 (14. September 2021) |
Betriebssystem | Android, iOS, Blackberry OS |
Lizenz | proprietäre Lizenz[1], proprietäre Lizenz, Apache-Lizenz, Version 2.0[2][1] |
deutschsprachig | ja |
play.google.com/store/apps/details?id=com.google.android.apps.authenticator2 |
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]
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 Algorithmen wie SHA2 werden seit Jahren nicht berücksichtigt.[5]
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, solange nicht das gesamte Gerät (sicher) verschlüsselt ist. Angreifer können so den zusätzlichen Schutz durch das zweistufige Verfahren aushebeln.[6]
Auf einem nicht gesperrten Smartphone kann zudem jeder die aktuellen Bestätigungscodes abrufen; die App selbst ist nicht separat mit PIN oder Fingerabdruck geschützt.
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.
Bedienungsfreundlichkeit
Konten samt Geheimnis können nur per QR-Code auf ein anderes Gerät übertragen werden, eine Backup-Möglichkeit fehlt. Bei Verlust oder Funktionsuntüchtigkeit des Geräts hilft dies jedoch nicht, alle 2FA-geschützten Konten müssen neu eingerichtet werden.
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
Weblinks
- Projektseite (englisch)
Einzelnachweise
- gitlab.com.
- f-droid.org.
- RFC 4226 HOTP: HMAC-based One-time Password Algorithm
- RFC 6238 TOTP: Time-Based One-Time Password Algorithm
- Plans to support SHA256? · Issue #11 · google/google-authenticator-libpam. Abgerufen am 23. März 2021 (englisch).
- 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).