default-user
Goto Top

2FA und TOTP - funktioniert das auch ohne Dienstleister?

Trotz Recherche im Web fand ich bisher keine Beschreibung, die meine Unsicherheit ausgeräumt hätte.
Wenn ich denn schon 2FA + TOTP nutze, dann möchte ich wenigstens von Drittanbietern unabhängig sein. Geht das überhaupt? Oder muss ich z.B. FreeIPA oder andere nutzen, damit die TOTPs generiert werden?

Konkret: Ich betreibe mehrere Websites – bisher nur mit Username + Passwort. Beide sind 20-stellige Zufalls-Passworte, die mit KeePass generiert wurden. Bisher denke ich, dass das sicher genug ist, auch in der heutigen Zeit.

Jetzt hat mich ein IT-ler verunsichert und meinte, ich würde erst mit 2FA sicher gehen können in der heutigen Zeit. Also habe ich mir über F-Droid die App FreeOTP+ auf meinem Android installiert. In deren Beschreibung steht aber wieder etwas von Verbindungen zu Dienstleistern wie Google (ausgerechnet!!!) oder FreeIPA usw.

Solange ich keine Antwort auf die folgenden Fragen im Web oder hier im Forum finden kann, werde ich gewiss keine 2FA + TOTPs nutzen.

Fragen:
Wenn ich auf meinen Websites 2FA aktiviere und dann den Barcode in die App scanne, reicht das dann aus, dass die App beim nächsten Einloggen mir ein passendes OTP generiert?

Woher "weiß" meine Website, dass das OTP korrekt ist?

Und was ist, wenn mein Smartphone defekt wird? Wie komme ich dann noch an meine Websites, die ja dann auf einem OTP bestehen werden?

Content-ID: 3175818212

Url: https://administrator.de/contentid/3175818212

Printed on: August 31, 2024 at 22:08 o'clock

Mystery-at-min
Mystery-at-min Jul 12, 2024 at 18:31:35 (UTC)
Goto Top
Nun, es muss auch einen Austausch geben. Nur irgendein Code hilft ja nicht. Irgendwie muss die App mit dem Auth-Backend der Seite usw verknüpft sein und diesen Code verifizieren.
default-user
default-user Jul 12, 2024 at 18:53:37 (UTC)
Goto Top
Ich fand inzwischen einen Hinweis im Web, dass beim Anlegen der 2FA ein Code per Zufallsgenerator erzeugt wird, auf dessen Basis mittels eines NTP-Zeitservers jeweils alle 30 Sekunden ein neues OTP errechnet wird.

Ich kann zwar eigentlich relativ gut technisches Englisch verstehen. Aber so, wie es verschiedentlich beschrieben wird, verstehe ich das Ganze dann leider doch nicht.
LordGurke
Solution LordGurke Jul 12, 2024 updated at 19:08:45 (UTC)
Goto Top
Zitat von @Mystery-at-min:

Nun, es muss auch einen Austausch geben. Nur irgendein Code hilft ja nicht. Irgendwie muss die App mit dem Auth-Backend der Seite usw verknüpft sein und diesen Code verifizieren.

TOTP ist einfach ein privater Schlüssel, der vom Server generiert und i.d.R. per QR-Code mit einer beliebigen TOTP-Authenticator-App geteilt wird.
Danach kann in der App ein jeweils 30s lang gültiger Code generiert werden, der dann zusätzlich beim Login eingegeben wird.
Ist universell und funktioniert sogar in isolierten Netzwerken. Und erst recht ohne externen Dienstleister.

Und weil der Code nur 30s gültig ist, müssen die Webseite und die TOTP-App die gleiche Uhrzeit haben, weil sonst die Codes nicht passen.
default-user
default-user Jul 12, 2024 at 19:57:34 (UTC)
Goto Top
Zitat von @LordGurke:
TOTP ist einfach ein privater Schlüssel, der vom Server generiert und i.d.R. per QR-Code mit einer beliebigen TOTP-Authenticator-App geteilt wird.

Von welchem Server? Vom Server meiner Website bzw. von einem Script in meiner Website?
LordGurke
Solution LordGurke Jul 12, 2024 at 20:15:26 (UTC)
Goto Top
Genau, im Script (serverseitig ausgeführt natürlich, kein Javascript beim Client) generierst du diesen Schlüssel. Wird gerne auch "Shared Secret" genannt.
default-user
default-user Jul 12, 2024 at 21:50:47 (UTC)
Goto Top
Ich danke dir herzlich! Endlich verstehe ich, wie der Ablauf genau ist und dass ich nicht auf Drittanbieter in dieser Ablaufkette angewiesen bin.

Auch meine Befürchtung ist inzwischen ausgeräumt, ich könnte mich evtl. bei Defekt oder Verlust des Smartphones aussperren. Es gibt sowohl über Eingriff in die Datenbank (php-MyAdmin) als auch durch Eingriff per FTP Möglichkeiten, die 2FA wieder so zu deaktivieren, dass die normalen Credentials funktionieren.

Zwar glaube ich immer noch, dass meine Accounts auch heute noch ziemlich sicher sind, wenn sowohl Username als auch das Passwort aus über 20-stelligen Zufallszeichen bestehen. Aber man weiß ja nie, was noch kommt.
Es könnte sich ja auch mal ein Softwarefehler in der Prüfung der Credentials einschleichen oder jemand findet einen Weg, diese Prüfung auszuhebeln....
UnbekannterNR1
UnbekannterNR1 Jul 12, 2024 at 22:33:26 (UTC)
Goto Top
Tipp, für Backup Du kannst den Code, der zum Generieren gescannt wird, auch speichern z.b. in KeePass.
Damit hast Du bei Smartphone Verlust ein Backup davon. Und es gibt auch KeePass Plugins, die dann Dir den 2FA Code alle 30 Sek neu berechnen, was dann den Sinn vom 2FA ein wenig aushebelt, aber so ist das nun mal. face-smile

Es gab auch mal die Möglichkeit diese Codes aus dem Google Authenticator Backup auszulesen, aber ich glaube, das wurde geändert.

Generell rate ich davon ab, seinen zweiten Faktor von einem Gerät abhängig machen.
maretz
maretz Jul 13, 2024 at 00:18:25 (UTC)
Goto Top
Moin, erstmal solltest du dir überlegen was du denn unter "Sicher" überhaupt verstehst. Du kannst 20 Zeichen nutzen, du kannst 2FA nutzen,... - es ist immer nur eine Frage des Aufwandes. Dein ganzer Kram bringt dir nämlich mal so rein gar nix wenn der Angreifer gezielt vorgeht und ggf. deinen Rechner direkt übernimmt (oder teile deiner Infra).

"Sicher" ist in sofern nur die Dienste wirklich auf ein absolutes Minimum zu reduzieren - was aber eher unwahrscheinlich ist. Was passiert zB. wenn du bei deiner 2FA das Problem hast das jemand in der generierungs-SW nen Problem findet (und wie man schon öfters gesehen hat - selbst bei "Standard"-Implementierungen wie OpenSSL,... wurde nach zig Jahren noch was gefunden).. Andersrum glaube ich persönlich das heute ein gezielter Angriff auch gar nicht mehr gross über die Auth geht - entweder gegen das Gerät des Ziels oder gegen die Infra des Anbieters selbst (blöd wenn du 100 Zeichen als Passwort hast, 17 Auth-Faktoren -> der aber einfach zB. alle deine Daten "offen" auf den Server legt oder die sogar versehentlich im Web abrufbar macht).

Von daher ist einfach die Frage - wie Sicher willst du es haben und was ist für DICH der Mittelweg zwischen "Sicher" und "Machbar"? Zumal du ja auch bei 2FA noch immer irgendeinen Weg brauchst um ranzukommen - ist ja zB. blöd wenn du deinen Mail-Account per 2FA sicherst, das immer übers Handy entsperrst und im Urlaub irgendwo am A... der Welt wird dir das Handy geklaut/du verlierst est/geht kaputt... und du kommst mal an so gar nix mehr ran...