Infrastruktur

Anleitung: 2FA, MFA, OTP Codes exportieren & migrieren (Google Authenticator, Microsoft Authenicator)

In dieser Anleitung geht es um eine „2FA-Leidensgeschichte“ und meine Lösung dafür. Wir betrachten gemeinsam, wie sich 2FA-Keys von einer OTP-App (wie Goggles Authenticator App oder die Microsoft Authenticator App) zu einer anderen App übertragen lassen. Die Migration kann Retter in der Not sein und ich hoffe somit, dass dieser Artikel jemandem helfen kann.

2FA, MFA, OTP und Co

Wer auf dieser Seite gelandet ist, ist mit großer Wahrscheinlichkeit mit all diesen Begriffen vertraut. Um die Sache abzurunden, hier noch ein wenig Kontext: Diverse Dienste im Netz bieten mittlerweile die Authentifizierung über einen sogenannten „zweiten Faktor“ an. Gemeint ist damit, dass neben dem Nutzernamen und Kennwort („etwas, das man kennt“) in einer zweiten Stufe ein „Einmal-Code“ eingegeben werden muss, der von einem speziellen Gerät / App stetig neu generiert wird („etwas, das man besitzt“).

2FA steht dabei für 2 Factor Authentication, MFA für Multi Factor Authentication. Häufig wird in diesem Zusammenhang auch von OTP gesprochen, was One Time Password bedeutet. Das sind alles sehr allgemeine Begriffe.

In unserem Kontext geht es konkret um Apps, die das Erstellen von OTPs ermöglichen, in dem sie mit einem Online-Dienst als zweiter Faktor verbunden werden. Diese Apps nutzen in der Regel den TOTP-Standard, bei dem die One-Time-Codes basierend auf der aktuellen Zeit als Eindeutigkeitsmerkmal generiert werden.

Damit genug der Vorrede und des Überblicks.

Warnung: Zugriff auf TOTPs zu verlieren kann fatal sein

Im Normalfall (Bestfall) wird bei der Verknüpfung einer 2FA-App und eines Onlinedienstes eine Backup-Methode definiert. Häufig sind das eine begrenzte Anzahl an Secrets (eine Art TAN-Liste), mit denen sich ein Login auch dann durchführen lässt, wenn das 2FA-Gerät nicht zur Verfügung steht. Wenn man diese Backup-Authentifizierungsmethode nicht besitzt, lebt man sehr gefährlich.

Es gilt dann: Wenn 2FA-Gerät oder App weg / defekt: Kein Login mehr möglich.

Ich weise deshalb direkt am Anfang dieser Anleitung darauf hin, dass Änderungen an eurer 2FA-App im schlimmsten Fall fatale Konsequenzen, wie einen dauerhaften Zugriffsverlust auf einen Account, haben können. Ihr handelt auf eigene Verantwortung und solltet wissen was ihr tut. Ich weise jede Verantwortung / Haftung in diesem Kontext von mir.

Es ist daher essenziell, dass die Datenbank eures 2FA-Gerätes / -App mit jedem neuen MFA-Account regelmäßig gesichert und an einer geschützten Stelle aufbewahrt wird!

Wie ihr euch vielleicht bereits denken könnt, ist dieser Artikel genau einer solchen Situation entsprungen: Kein Zugriff mehr auf die OTP-App und kein Backup-Code.

Mein AWS-OTP-Fail

Für diejenigen, die es interessiert, fasse ich meine Geschichte kurz zusammen. Irgendwann (es ist Jahre her) klang ein Angebot für die Webservices von Amazon AWS zu gut. Kurzerhand angemeldet und ein paar Dinge ausprobiert.

Nachdem es (durch für mich bis heute nicht nachvollziehbare Dinge) zu einem Account-Hack über einen ungeschützten API-Key gekommen war (das hat Amazon damals alles vorbildlich geregelt, inklusive Notfallanruf), habe ich für meinen AWS-Account natürlich eine 2FA eingerichtet. Da der Schreck mit dem unbefugten Zugriff immer noch saß und zu dem Zeitpunkt die AWS-Services für mich uninteressant waren, habe ich den Account wieder geschlossen. Kapitel abgeschlossen.

Tja, denkste‘. Jahre später wollte ich dann das Passwort meine Amazon-Shopping-Accounts ändern: „Bitte OPT eingeben!“. Öhm, ich habe das doch nie für Amazon aktiviert, oder? Auch der telefonische Second-Level-Support hat nach Verifizierung anhand andere Merkmale keine Idee gehabt, wieso der Shopping-Account einen 2FA-Schutz hat.

Einige Stunden später traf mich der Gedanken dann wie ein Blitz: „Hab ich etwa damals AWS mit meinem normalen Amazon-Account bzw. der gleiche E-Mail-Adresse ausprobiert?!“. Stellt sich schnell heraus: Leider ja. Und jetzt begann der „Spaß“.

Natürlich war das alte Smartphone (ein Apple iPhone 5S), auf welchem die Instanz der Goggle Authenticator App installiert war, schon lange nicht mehr im Dienst und komplett gelöscht. Damit war der Zugriff auf den OTP weg und somit auch auf den AWS-Account. (Für diejenigen, die sich jetzt wundern: Man kann sich bei AWS auch in geschlossene Accounts weiter einloggen, hat dort aber nur noch sehr begrenzte Möglichkeiten.)

Also: AWS Support kontaktiert, bestimmt insgesamt zwei Stunden mit Amazon USA telefoniert, bis am Ende feststand: Es eine eidesstattliche Versicherung von einem Notar beglaubigt werden, um den MFA-Schutz von dem Account zu entfernen. Puh. Also einen Notar gesucht, der an das US-Formular von Amazon einen Zettel gebunden hat, das meine Identität bestätigt. Dieses hat Amazon in den USA natürlich nicht ausgereicht, weil es ja kein eingetragener US-amerikanischer Notar war (kein Wunder: Wir sind ja auch in Deutschland). An dem Punkt es mir dann mit Bürokratie gereicht.

(Nur nebenbei: Es gibt auch hier noch Wege, die offenbar in den USA anerkannt werden. Dazu muss der Notar-Schrieb dann aber irgendwie überbesetzt und von irgendeinem Gericht beglaubigt werden. Habe ich nicht mehr genau verfolgt, weil teuer und zeitaufwendig.)

Wenigen Tage später kam mir dann mitten in der Nacht die vermeintlich rettende Idee: Ganz vielleicht liegt auf Crashplan (meine Onlinebackup-Dienst) noch irgendwo ein Dump von einem lokalen iTunes iPhone Backup des besagten iPhone 5S. Gesucht, gebannt, heruntergeladen, Smartphone – welches ich glücklicherweise (!!!) nie verkauft habe – genommen und Backup eingespielt. Backup korrupt. Argh. Nach Rumgefummel mit externen SSDs, einer älteren Windows VM und iTunes hat das Aufspielen dann geklappt.

Und: Profit. Tatsächlich war auf dem Backup die Google Authenticator App noch da – inklusive des AWS-OTP für den alten Account. Also direkt eingeloggt, juhu!

Da die wenigsten Geschichten an Happy End haben: Tja, wenn ein AWS-Account einmal deaktiviert und die 90 Tage Periode zur Löschung abgelaufen ist, gibt es offenbar keine Chance mehr ein MFA-Gerät von dem Account zu entfernen. Somit ist hier endgültig Ende gewesen!

(Im Rückblick besonders toll, dass mich der AWS-Support trotzt des Wissens um den Account-Status zum Notar geschickt hat. Wäre spannend geworden, ob sie das MFA überhaupt hätten entfernen können, wenn sie die Identifikation anerkannt hätten.)

ABER: Immerhin funktionieren die TOTP von dem alten Gerät für den normalen Amazon-Shopping-Account, sodass ich hier nach dieser Odyssee wenigstens hier alles erledigen konnte.

Was lernen wir daraus: OTP-Zugriff verlieren sucks! Und: Ohne valide Backup-Methode hat man aus Deutschland bei einem US-Konzern wenig Chancen einer „einfachen“ alternativen Identifizierung. Das ist aus Sicherheitsaspekten sicherlich gut, für dumme Anwender (wie mich) aber gleichzeitig übel.

Außerdem hat es mal wieder gezeigt: Speicherplatz ist zu billig, um alte Daten zu löschen. Ohne das ewig alte lokale iPhone-Backup wäre früher Game Over gewesen.

OTP-Schlüssel exportieren und importieren (von Goggle Authenticator nach Microsoft Authenticator)

Wem die Story oben zu lang und langweilig war, hier die Ausgangssituation:

Ein alter, aber wichtiger OTP liegt auf einem alten Smartphone in der Google Authenticator App und soll in die Bibliothek, der aktuell verwendeten Microsoft Authenticator App auf einem anderen iPhone übertragen werden.

Ein Neueinrichten des 2FA-Gerätes beim Onlinedienst ist in Ermangelung einer Backupmethode nicht möglich (da ist in jedem Fall die sicherste und empfohlene Methode, wenn ihr noch an die 2FA-Einstellungen in eurem Account kommt!)

Die Herausforderung: Um einen Account in einer anderen TOTP-App zu erstellen bzw. diesen zu übertragen, braucht man die sogenannten Seedkeys – also den „Samen“ aus dem die TOTP berechnet werden. Lange war das in meiner Situation unmöglich an diese heranzukommen, weil die Google Authenticator App keine kompatible Exportfunktion angeboten hat. Das hat sich glücklicherweise geändert.

Hinweis: Für reine iOS-Nutzer habe ich keinen Weg gefunden, wie man OTP-Accounts direkt von einer App zur anderen übertragen kann. Ihr braucht also mindestens temporär Zugriff auf ein Android-Gerät für diesen Weg.

Ich stand dabei vor einer besonderen Herausforderung, weil auf dem alten Smartphone natürlich eine ewig alte Version des Google Authenticators (3.1.44.01) lief. Da die App-Reviews voll von Hilfeschreien sind, durch den Verlust sämtlicher OTP-Accounts nach dem App-Update des Google Authenticators ausgelöst wurden, wollte ich Updaten unbedingt verhindern.

Es gab dank der aktuellen Goggle Authenticator Version (4.x) jedoch jetzt eine Hintertür. Mein Weg sieht also folgendermaßen aus, bevor wir in die Details gehen:

  1. Account aus Google Authenticator auf altem Smarpthone exportieren (via QR-Code)
  2. QR-Code mit Google Authenticator 4.x einlesen (neuen Account hinzufügen)
  3. Account aus Google Authenticator exportieren (via QR-Code)
  4. QR-Code mit Aegis auf Android-Gerät einlesen (neuen Account hinzufügen)
  5. Account aus Aegis exportieren (via QR-Code)
  6. Aegis-QR-Code mit Microsoft Authenticator einlesen (neue Account hinzufügen)
  7. Fertig.

Wer nicht das Handicap hat, auf einer alten Google Authenticator Version zu hängen, kann natürlich Schritt 1 und 2 überspringen. Wer nicht Microsoft Authenticator als Ziel der Migration hat, für den fallen auch Schritte 5 und 6 weg.

OTP-Migration im Detail

Im Folgenden gehen wir die Schritte im Detail durch. Ich versuche das Ganze anhand von Bildern zu beschreiben, damit es leicht nachvollziehbar ist.

Schritt 1: 2FA-Account aus Google Authenticator (3.x) exportieren

Im ersten Schritt müssen wir die Seedkeys für den gewünschten 2FA-Account aus der Google Authenticator App herausbekommen. Dazu gibt es eine Exportfunktion, die QR-Codes erstellt, welche jedoch (meinen Recherchen zur Folge) nur wirklich valide von der Google Authenticator App selbst wieder eingelesen werden können.

Hier gibt es drei wichtige Dinge zu beachten:

  1. Für das beste Ergebnis am besten nur einen oder zwei Accounts (falls ihrer mehrere übertragen müsst) pro Export auswählen
  2. Den generierten QR-Code gut absichern (er enthält den Seedkey und damit den Zugriff auf den Account!)
  3. Am Ende den Dialog zur Löschung der Codes nach dem Export unbedingt verweigern! (als Sicherheit, denn noch wissen wir nicht, ob der QR-Code funktioniert)

Hinweis: Solltet ihr unter Android unterwegs sein, verhindern die meisten OTP-Apps das Erstellen von Screenshots. Dann hilft nur ein Displayfoto mit einem anderen Smartphone. Unter iOS sind Screenshots hingegen kein Problem.

Schritt 2: QR-Code mit Google Authenticator 4.x einlesen

Da der von Google Authenticator 3.x erstellte QR-Code nach viel Ausprobiererei irgendwie nur von Google Authenticator (auch in neueren Versionen) selbst gelesen werden kann, erfolgt jetzt der Import in Google Authenticator 4.x.

Dazu gibt es jetzt keine Screenshots. Dieses funktioniert genau so, als würdet ihr einen beliebigen anderen 2FA-Account hinzufügen.

Im Anschluss unbedingt testen, ob der importierte Account gültige OTPs erzeugt, indem ihr euch damit einloggt!

Schritt 3: 2FA-Account aus Google Authenticator (4.x) exportieren

In nächsten Schritt exportieren wir den eben importierten OTP-Account direkt wieder. Für viele von euch beginnt bei diesem Schritt wahrscheinlich die eigentliche Reise.

Der Hintergrund ist oben bereits erwähnt: Die Export-QR-Codes von 4.x sind auch von anderen Apps einlesbar. Bei Google Authenticator 3.x ist das bei mir nicht der Fall gewesen.

Auch hier gilt wieder:

  1. Für das beste Ergebnis am besten nur einen oder zwei Accounts (falls ihrer mehrere übertragen müsst) pro Export auswählen
  2. Den generierten QR-Code gut absichern (er enthält den Seedkey und damit den Zugriff auf den Account!)
  3. Am Ende den Dialog zur Löschung der Codes nach dem Export unbedingt verweigern! (als Sicherheit, denn noch wissen wir nicht, ob der QR-Code funktioniert)

Schritt 4: QR-Code mit Aegis einlesen

Für den nächsten Schritt habe ich die OTP-App Aegis verwendet, welche es nur für Android gibt. Eine Alternative könnte Authenticator Pro (ebenfalls nur iOS) sein. Ob diese die Google Authenticator Codes aber richtig liest, habe ich nicht getestet. Unter iOS gibt es noch OTP Auth, was jedoch leider die Google Authenticator Codes auch nicht direkt gelesen hat.

Deshalb mein „Umweg“ über Aegis. Viele von euch haben diese App vielleicht sogar als endgültiges Ziel für ihre Accounts. Dann entfallen natürlich die noch folgenden Schritte 5 und 6.

Im Anschluss unbedingt testen, ob der importierte Account gültige OTPs erzeugt, indem ihr euch damit einloggt!

Schritt 5: 2FA-Account aus Aegis exportieren

In anschließenden Schritt exportieren wir den eben importierten OTP-Account direkt wieder. Aegis erstellt nämlich ziemlich universell lesbare Seedkeys.

Auch hier gilt wieder:

  1. Für das beste Ergebnis am besten nur einen oder zwei Accounts (falls ihrer mehrere übertragen müsst) pro Export auswählen
  2. Den generierten QR-Code gut absichern (er enthält den Seedkey und damit den Zugriff auf den Account!)
  3. Am Ende den Dialog zur Löschung der Codes nach dem Export unbedingt verweigern! (als Sicherheit, denn noch wissen wir nicht, ob der QR-Code funktioniert)

Schritt 6: QR-Code mit Microsoft Authenticator einlesen

Am Ende unserer Reise wird der mit Aegis exportierte Seedkey-QR-Code dann mit dem Microsoft Authenticator eingelesen und so der Account importiert.

Auch dazu gibt es keine Screenshots. Dieses funktioniert genau so, als würdet ihr einen beliebigen anderen 2FA-Account hinzufügen.

Im Anschluss unbedingt testen, ob der importierte Account gültige OTPs erzeugt, indem ihr euch damit einloggt!

Fertig! 🙂

Ist Microsoft Authenticator eine gute Wahl?

Bei all meinen stundenlangen Recherchen habe ich neben vielen Einträgen verzweifelter Nutzer, natürlich auch unzählige an Meinungen zu verschiedenen OTP-Apps gelesen.

Grundsätzlich bin ich vor knapp 3 Jahren vom Google Authenticator zu Microsoft Authenticator gewechselt, weil Microsoft zu diesem Zeitpunkt bereits eine Backup-Funktion in Zusammenhang mit einem Microsoft-Konto via iCloud auf dem iPhone angeboten hat. Bei Google gab es das nicht. Das hat sich mittlerweile geändert, soweit ich informiert bin.

Prinzipiell ist die OTP-App von Microsoft gelungen und funktioniert bisher problemlos. Zudem ist dort auch Microsofts eigenes 2FA-Verfahren implementiert, was praktisch ist, um sich schnell an M365-Diensten oder ähnlichem anzumelden.

Nach dem Ritt durch die Import- und Exportwelt verschiedener OTP-Apps bin ich derzeit aber stark am Nachdenken, meine Codes parallel ggf. in einer weiteren Anwendung, wie Aegis oder OTP Auth zu sichern. Denn so wie es sich darstellt, hat die Microsoft OTP-App gar keine allgemeine Exportfunktion. Die Daten liegen lediglich in der iCloud. Eine Migration, wie ich sie oben beschrieben habe, wäre damit zu einer anderen App mit dem Microsoft Authenticator aber nicht möglich.

Schlusswort

Ich hoffe, dieser – viel zu lange – Artikel hilft jemandem anderen, der vor einem ähnlichen Problem steht. Generell hat mir das Ganze gezeigt: Man fängt irgendwann meist irgendwie mit 2FA an und in dem Moment ist die OTP-App beinahe nebensächlich.

Genau das kann am Ende ein schwererer Fehler sein. Wer also zufällig diesen Post gelesen hat und sich erst mit OTP beschäftigt: Wählt eure OTP-App weise aus und achtet auf eine Backup-Funktion!

Hinweis: Mit Sternchen (*) markierte Links sind Affiliate-Links / Partnerlinks. Mit einem Kauf über diesen Link erhalten wir als Seitenbetreiber eine Verkaufsprovision. So kannst du das Projekt ganz einfach unterstützen. Mehr Informationen dazu findest du hier.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert