Wie sicher ist TOTP bei eigenem Login-System?

nicht0502

Praktikant
Beiträge
8
Lösungen
1
Likes
19
Punkte
8
Fachgebiete
C#, .NET
Ich implementiere gerade 2FA in mein .NET-Login-System und überlege, TOTP zu nutzen. Ich habe dazu die Lib 'OATH-TOTP' eingebunden und es funktioniert soweit. Meine Frage: Gibt es bekannte Sicherheitslücken oder Fallstricke bei der Nutzung von TOTP, die man beachten sollte? Besonders interessiert mich, ob die Zeit-Synchronisierung ein Risiko darstellt. Hat jemand Erfahrungen oder Tipps?
 
Beste Antwort
TOTP ist an sich eine solide Wahl für 2FA, wenn man die Basics im Griff hat. Klar, Zeit-Synchronisierung kann ein Thema sein, aber das ist lösbar. Wichtig ist, dass die Server- und Client-Uhren einigermaßen synchron laufen. Kriegt man mit NTP auf dem Server ganz gut hin. Aber mal ehrlich, die größeren Probleme sind oft menschlicher Natur - wie schlecht gewählte Passwörter oder unsichere Speicherung der Seeds. Der Seed sollte nie im Klartext auf dem Server rumliegen. Am besten verschlüsselt speichern.

Ein weiterer Punkt: TOTP allein schützt nicht vor Phishing. Wenn jemand dem Nutzer die TOTP-Codes abluchst, ist das genauso schlecht wie ein Passwort-Diebstahl. Man sollte immer noch auf zusätzliche Sicherheitsmaßnahmen achten, wie...
Ich hab mal bei einem kleinen Projekt versucht, 2FA mit TOTP einzubauen - aus Neugier, wie das eigentlich funktioniert. Das Setup war erstaunlich unkompliziert, aber ich bin trotzdem über ein paar Sachen gestolpert.

Die Zeit spielt ja bei diesen Codes eine zentrale Rolle. Anfangs haben meine Test-Logins nie funktioniert, bis ich gecheckt hab, dass mein Server ein paar Minuten daneben lag. Seit ich NTP regelmäßig laufen lasse, ist das Problem weg. War so ein klassischer WTF-Moment.

Ein bisschen unsicher war ich auch bei der Frage, wo man den geheimen Schlüssel speichert. Ich hab’s erstmal so gelöst, dass ich den Seed verschlüssele, bevor ich ihn in meine SQLite-Datenbank schreibe. Ob das für ein echtes Produkt ausreicht? Keine Ahnung, aber besser als gar nichts.

Was ich gelernt hab: Auch wenn alles erstmal läuft, lohnt es sich, komische Fälle durchzuspielen - Handy auf falsche Zeit stellen, mehrere Logins in kurzer Zeit, sowas halt. Da kommen manchmal Fehler ans Licht, die man im Standardflow nicht sieht.
 
TOTP ist an sich eine solide Wahl für 2FA, wenn man die Basics im Griff hat. Klar, Zeit-Synchronisierung kann ein Thema sein, aber das ist lösbar. Wichtig ist, dass die Server- und Client-Uhren einigermaßen synchron laufen. Kriegt man mit NTP auf dem Server ganz gut hin. Aber mal ehrlich, die größeren Probleme sind oft menschlicher Natur - wie schlecht gewählte Passwörter oder unsichere Speicherung der Seeds. Der Seed sollte nie im Klartext auf dem Server rumliegen. Am besten verschlüsselt speichern.

Ein weiterer Punkt: TOTP allein schützt nicht vor Phishing. Wenn jemand dem Nutzer die TOTP-Codes abluchst, ist das genauso schlecht wie ein Passwort-Diebstahl. Man sollte immer noch auf zusätzliche Sicherheitsmaßnahmen achten, wie IP-Blocking bei verdächtigen Logins oder Rate Limiting.

Ein Tipp aus der Praxis: Schau dir mal an, welche Berechtigungen die Libs brauchen. Manchmal ziehen die mehr mit rein, als einem lieb ist. Und wenn du gerade dabei bist, mach einen Pen-Test. Lieber vorher die Lücken finden, als wenn es zu spät ist.

Denkt man oft nicht dran, aber: User-Schulung kann viel bringen. Die sollen verstehen, warum 2FA wichtig ist und wie sie ihre Geräte sichern. Hab schon erlebt, dass jemand die TOTP-App auf einem unsicheren Gerät hatte. Tja, dann hilft das beste Sicherheitskonzept wenig.
 
Hey, also ich hab mich auch mal mit TOTP beschäftigt, als ich was für ein Schulprojekt gemacht hab. Das coole ist ja, dass es ziemlich sicher ist, wenn man es richtig einsetzt. Aber ja, es gibt ein paar Sachen, die man beachten sollte! 😅

Also, wegen der Zeit-Synchronisierung: Das ist wirklich wichtig! Beide Seiten, also der Server und die App, müssen halbwegs synchron sein. Wenn die Uhrzeiten zu sehr auseinandergehen, kann das zu Problemen führen. Ich hab mal gelesen, dass man die Zeitfenster ein bisschen großzügiger gestalten kann, um das Risiko zu minimieren. Manche Systeme erlauben ein paar Minuten Abweichung. Vielleicht hilft das?

Ein anderer Punkt ist, wie du die geheimen Schlüssel speicherst. Die sollten gut geschützt sein, weil wenn jemand da rankommt, kann er Tokens generieren, die dann als echt durchgehen. Verschlüsselung ist hier dein Freund! 😎

Ansonsten hab ich mal gehört, dass es wichtig ist, das Setup gut zu kommunizieren. So Sachen wie Backup-Codes sind goldwert, falls jemand sein Handy verliert oder so.

Hoffe, das hilft ein bisschen weiter.
 
TOTP ist so sicher, wie du es implementierst. Die Lib 'OATH-TOTP' ist schon okay, aber die wirkliche Sicherheit kommt eher von deinem Gesamtsystem. Klar, die Zeit-Synchronisierung kann ein Problem sein, wenn die Uhren total aus dem Takt sind. Aber ehrlich gesagt, da hat man früher 'ne NTP-Synchronisation gemacht und gut war's. Wenn die Server und Clients grob dieselbe Zeit haben, dann passt das schon.

Fallstricke? Ja, ein paar. Zum Beispiel die Lagerung der geheimen Schlüssel - wenn die offen rumliegen, ist TOTP auch nicht sicherer als ein Post-it mit dem Passwort am Monitor. Und dann halt das gute alte Problem mit den Nutzern, die ihre 2FA-Daten verlieren und dann nicht mehr reinkommen. Da hilft nur, ein Backup-System zu haben, sonst hast du die Leute bald auf der Matte stehen.

Wenn du’s richtig machst, ist TOTP 'ne solide Methode. Aber wie bei allem: Was nichts kostet, ist auch nichts wert. Also lieber die Basics sauber umsetzen, dann klappt das.
 
Zurück
Oben