Moin Moin!
- Ich schreibe ein Skript, welches nach dessen Aufruf ein Einmalpasswort an mein Mobiltelefon schickt, egal ob per SMS, E-Mail oder E-Mail über SMS. Das Einmalpasswort sollte dabei recht stark sein, denn daran hängt in einer feindlichen Umgebung nun der eigentliche Schutz.
- Das Skript schreibt das Passwort in eine Datei (oder Datenbank).
- Beim Login in meine eigentliche Applikation muss nun nicht nur das Applikationspasswort, sondern auch das Einmalpasswort korrekt angegeben werden.
- Das Einmalpasswort wird von dem System / aus der Datenbank entfernt.
Guter Ansatz.
Das Einmal-Passwort ist reines Rauschen, hängt weder vom HTTP-Request noch von irgendwelchen anderen Daten (Datum, Uhrzeit, Prozess-ID, ...) auf dem Servern ab. Damit das Tippen nicht so schwierig wird, codiert man das Passwort als Base64 o.ä.
Haken: SMS und E-Mail haben keine garantieren Zustellzeiten. Ich habe bei beiden schon Zustellzeiten von über 8 Stunden beobachtet.
Zusätzlich würde ich das Applikationspasswort noch in kurzen Abständen ändern.
Generell eine gute Idee.
Außerdem sollte in einem bestimmten Zeitraum nur eine kleine Anzahl von Einmalpasswörtern generiert werden dürfen.
Damit öffnest Du DoS-Angriffen Tür und Tor. Was schadet es der DB, wenn ein paar 10.000 unnütze Einmal-Passworte in der DB liegen, die in ein paar Minuten ohnehin wieder gelöscht werden?
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".