Wer bei der Einrichtung vergessen hat, das "secret" zu speichern, ist aber auch noch nicht verloren - solange er in der Lage ist, die exportierten Einstellungen der betreffenden FRITZ!Box zu entschlüsseln. Dort findet sich bei den Einstellungen für ein Benutzerkonto dann auch dieses "shared secret" ... in Base32-Kodierung:
Rich (BBCode):
boxusers {
users {
enabled = yes;
id = 13;
name = "GA-Test";
email = "";
password = "<removed>";
vpn_access = no;
googleauth_sharedsecret = "WI5MJOGQCBFOXTNIPLSNOVQEO67RWU6C";
googleauth_devicename = "";
googleauth_setupdate = "2022-05-13 14:57:51";
box_admin_rights = secobj_access_rights_readwrite_from_homenetwork_only;
nas_rights = secobj_access_rights_none;
phone_rights = secobj_access_rights_readwrite_from_homenetwork_only;
homeauto_rights = secobj_access_rights_readwrite_from_homenetwork_only;
} {
[...]
}
Das kann man dann auch in seinem Kennwort-Safe speichern und von dort (sofern der ein "auto-type"-Feature hat) auch automatisch eintragen lassen, wenn man den Safe auf dem Gerät hat, mit dem man sich am FRITZ!OS anmelden will.
Das macht aber beim FRITZ!OS(-Login) jetzt nicht so viel Sinn, weil da die 2FA ja nur bei bestimmten Aktionen erforderlich ist und dann ein "Dialog-Fenster" (mittlerweile in der
dialog.js
separat implementiert) über den restlichen Seiteninhalt gelegt wird ... aber bei anderen Seiten/Konten kann das durchaus hilfreich sein, zumal viele Kennwort-Safes die Konten auch entsprechenden Webseiten zuordnen können, so daß man da auch nicht lange in irgendwelchen Listen suchen muß und gleich die passenden Einträge angeboten bekommt.
Wenn es AVM jetzt noch schafft, das Dialog-Fenster für die 2FA automatisch so anzuzeigen, daß bei einem angemeldeten Benutzer, für den die 2FA aktiviert ist, auch (a) automatisch der untere Teil sichtbar ist und (b) sogar noch der Cursor im richtigen Feld steht, dann könnte man auch beim FRITZ!OS mit "auto-type" arbeiten und müßte die Ziffern nicht "von Hand" übertragen, solange der Kennwort-Safe das anbietet.
Mit drei geänderten Stellen in der (ebenfalls neuen)
twofactor.js
ist das auch schon erledigt:
Rich (BBCode):
--- twofactor.js 2022-05-13 20:12:17.231030441 +0200
+++ twofactor.js 2022-05-13 20:11:37.738663295 +0200
@@ -133,7 +133,7 @@
function buildTfInfo(data) {
const tfInfo = html2.div({
- class: "hide",
+ class: ((data.googleauth && googleAuth.isAvailable) ? "show" : "hide"),
id: "uiTFInfo"
});
let linktxt = "{?1973:73?}";
@@ -154,6 +154,7 @@
noLink: true
})));
return html2.fragment(html2.toggleLink({
+ initial: (data.googleauth && googleAuth.isAvailable),
closedText: linktxt,
destination: "#uiTFInfo"
}), html2.br(), tfInfo);
@@ -318,6 +319,7 @@
if ((data.googleauth && googleAuth.isAvailable && googleAuth.isConfigured) || (data.dtmf && data.code) || data.button) {
dlgStart(data);
pollState.start();
+ if (data.googleauth && googleAuth.isAvailable) jsl.focus('uiGoogleAuthCode-input');
} else if (data.starterror) {
error = parseInt(data.code || "", 10);
if (error === 91) {
(die Datei ist bei AVM "minified", daher kann man das nicht einfach als Patch so anwenden) ... damit funktioniert zumindest mit KeePass (2.51.1) auch das "auto-type" (nicht davon irritieren lassen, daß es am Ende "etwas dauert" -> AVM hat da ein Polling drin und da kann es schon mal eine Sekunde dauern, bis das
{Enter}
dann auch zu einem Roundtrip zum Server (also der Box) führt).
Mal schauen ... wenn AVM das nicht mehr auf die Kette bekommen sollte vor dem Release, werde ich wohl doch mal ein "modscript" bzw. einen Patch dafür machen. Im Moment lohnt das aber noch nicht, denn AVM wird da sicherlich noch einmal ändern ... derzeit steht im 2FA-Fenster (wenn man's ausklappt) ja auch noch, man könne die 2FA wieder abschalten (zumindest in der 113.07-39-86427 Inhouse).
Und auch beim Google Authenticator (GA) kann man Konten auf andere Geräte übertragen - einfach im Menü der App … jedenfalls solange das Ziel eine Kamera hat und ebenfalls die GA-App benutzen soll.
Ansonsten kann man auch den Weg über einen "dummen" QR-Code-Leser gehen, wenn man ein Gerät als "Zwischenwirt" hat, das über eine Kamera UND die passende Reader-App verfügt. Die Übertragung erfolgt als URL
otpauth-migration://offline?data=<base64>
(viele Reader-Apps kopieren den gelesenen "Text" ins Clipboard und man kann den dann z.B. als Notiz einfügen oder irgendwie anders teilen, um ihn auf einen PC zu bekommen) und dann muß er nur noch dekodiert werden (
https://github.com/dim13/otpauth), damit man ihn auch aus der GA-App in andere Apps oder seinen eigenen Password-Safe übernehmen kann.
Das ist jetzt zwar nicht gerade ein Kindergeburtstag (deshalb ist es auch hilfreich, wenn man das "shared secret" gleich beim Einrichten einer 2FA mit TOTP sichert - am besten eben in "Textform"), aber wer bisher nur ein einzelnes Gerät mit der GA-App verwendet und tatsächlich Angst hat, dieses könnte "untergehen", der kann sich auf diesem Weg seine Daten auch sichern ... wo das am besten geschieht, kann sich jeder selbst aussuchen.
Ich rate aber von der Speicherung als Screenshot ab, auch wenn es dann einfacher sein mag, die Daten erneut einzulesen - ansonsten muß man eben die Zeichen in die neue App/den Kennwort-Safe eintragen. Aber (für meinen Geschmack) zu viele QR-Code-Reader (bzw. andere Apps, die ein Bild auf entsprechende Muster scannen) machen das automatisch und ständig "im Hintergrund" (man denke nur an die zunehmend verbreiteten "Anti-Gaffer"-Codes auf RTWs und der Kleidung von Helfern) und da ist dann so ein angezeigter QR-Code auch schnell mal "ungewollt" an einer anderen Stelle gelandet und man hat es gar nicht bemerkt.
Das kann einem zwar bei dem "secret" in Textform auch passieren, aber ohne Kontext ist das erst mal nur irgendeine Zeichenfolge (beim QR-Code ergibt sich der Kontext aus der
otpauth
-URL, die darin verschlüsselt ist) und man sollte natürlich (auch bei "Zettelwirtschaft") den Zweck der Zeichen nur so notieren, daß man selbst daraus schlau wird, aber kein anderer.
Bei der Speicherung in einem Kennwort-Safe macht es natürlich dann doch wieder Sinn, das gemeinsam mit den anderen Daten für einen Account (Benutzername, Kennwort) irgendwo in einem Eintrag abzulegen - da steht und fällt die Sicherheit dann ja ohnehin mit dem Zugriff auf diesen Kennwort-Safe.