Benutzer mit den meisten Antworten
Salt in db_user mit speichern?

Frage
-
Hi zusammen, ich programmiere gerade meine Benutzerverwaltung um (diese hat noch keine gehashten und gesalted Passwörter, nur eine einfache Verschlüsselung)
Jetzt möchte gerne auf gehashte Passwörter umstellen. Da tun sich nur ein paar Fragen auf.
Muss ich für jeden User ein eigenen Salt generieren? Wenn ja muss ich diesen ja auch in der Datenbank ablegen, oder?
Wenn ich jetzt das Passwort 12345 und den Salt 4711 habe.
Lege ich jetzt in der Datenbankden Hash von 12345 in Feld Passwort
den Hash von 4711 in Feld Salt
oder Hash von 12345 und 4711 in Feld Passwortab?
Prüfen tue ich doch später auf
Hash (12345 + 4711 ) ,oder?
Könnt ihr mir ein bisschen weiterhelfen?
Gruss
Antworten
-
Hallo Thomas,
Du musst für jedes Kennwort (Benutzer) einen Salt erzeugen, da ansonsten bei gleichen Kennwörtern, das gleiche Ergebnis heraus käme - wenn Du den gleichen Schlüssel und Algorithmus verwendest.
Kombiniert wird der Salt jeweils mit dem eingegeben Kennwort - anhängen oder voranstellen - und daraus wird der Hash ermittelt. Der errechnete Hash wird anfangs zusammen mit dem Salt in der Datenbank gespeichert und später für den Vergleich herangezogen.
Den Salt muss man nicht geheim halten und kann ihn zusammen mit dem Hash des Kennwort ablegen. Verwendest Du verschiedene Verfahren oder Schlüssel kannst Du zusätzlich eine Information dazu speichern. Nur den Schlüssel sollte man nicht nach außen geben oder in einer Tabelle zugänglich machen.
Ein Beispiel mit einer Klasse und Speichern (dort für MySql) hatte ich mal gegeben in How to search a msql databse.
Gruß Elmar
- Als Antwort markiert Thomas Klinger2 Mittwoch, 8. Januar 2014 13:53
Alle Antworten
-
Hallo Thomas,
Du musst für jedes Kennwort (Benutzer) einen Salt erzeugen, da ansonsten bei gleichen Kennwörtern, das gleiche Ergebnis heraus käme - wenn Du den gleichen Schlüssel und Algorithmus verwendest.
Kombiniert wird der Salt jeweils mit dem eingegeben Kennwort - anhängen oder voranstellen - und daraus wird der Hash ermittelt. Der errechnete Hash wird anfangs zusammen mit dem Salt in der Datenbank gespeichert und später für den Vergleich herangezogen.
Den Salt muss man nicht geheim halten und kann ihn zusammen mit dem Hash des Kennwort ablegen. Verwendest Du verschiedene Verfahren oder Schlüssel kannst Du zusätzlich eine Information dazu speichern. Nur den Schlüssel sollte man nicht nach außen geben oder in einer Tabelle zugänglich machen.
Ein Beispiel mit einer Klasse und Speichern (dort für MySql) hatte ich mal gegeben in How to search a msql databse.
Gruß Elmar
- Als Antwort markiert Thomas Klinger2 Mittwoch, 8. Januar 2014 13:53