So weiß ich, gibt es andere Beiträge in Bezug auf Passwort-Speicherung und Verschlüsselung, aber meine Frage ist etwas anders. So nackt mit mir bis zum Ende.Dkrypt ein Passwort, ohne nach Master-Passwort zu fragen
Ich arbeite an einer Passwort-Manager-Website, zum Spaß. Und fragte sich, wie sicher diese Idee war, die ich hatte.
So offensichtlich jedes Passwort speichert der Benutzer verschlüsselt wird AES-256 mit ihrem Master-Passwort als Schlüssel und ein zufällig erzeugten Salz. Auch das Master-Passwort wird mit Bcrypt verschlüsselt, aber vorher wird es etwa 100.000 mal mit etwas wie einem Whirlpool gehashed, um die Belastung beim Login zu erhöhen.
Wenn ein Benutzer entscheidet, dass er nicht jedes Mal sein Passwort eingeben muss, wenn er ein Passwort für eine Site anfordert, kann das Programm das Passwort nicht entschlüsseln und automatisch ausfüllen, da das Master-Passwort zum Entschlüsseln der gespeicherten Passwörter benötigt wird.
Eine Idee, die ich hatte, war das Passwort in der aktuellen Sitzung des Benutzers zu speichern, aber das ist nicht wirklich eine gute Idee, weil ich versuche, dies unter der Annahme, dass der Angreifer bereits meinen Server durchbrochen hat und die Datenbank herunterlädt und herumschnüffelt.
Ein andere war allerdings das 100.000 Mal Hash-Passwort als Schlüssel für die AES-256-Verschlüsselung zu verwenden und diese Hash in der Sitzung zu speichern. Das ist besser als das Speichern im Klartext, aber der Angreifer kann die gespeicherten Passwörter dennoch entschlüsseln, wenn er die Informationen aus der Sitzung abrufen kann.
Gibt es bessere Möglichkeiten, oder ist dies ein verlorener Kampf der Hoffnung, in den der Angreifer nicht reinkommt, wenn ich eingeloggt bin?
Verwenden Sie ein temporäres Token, anstatt Hashwerte oder Kennwörter zu übergeben. – dandavis