none
Salt in db_user mit speichern? RRS feed

  • 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 Datenbank

    den Hash von 12345 in Feld Passwort
    den Hash von 4711 in Feld Salt
    oder Hash von 12345 und 4711 in Feld Passwort

    ab?
    Prüfen tue ich doch später auf
    Hash (12345 + 4711 ) ,oder?
    Könnt ihr mir ein bisschen weiterhelfen?

    Gruss

    Dienstag, 7. Januar 2014 12:38

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

    Dienstag, 7. Januar 2014 13:58

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

    Dienstag, 7. Januar 2014 13:58
  • Okay danke schön. Das hilft mir schon mal weiter.
    Mittwoch, 8. Januar 2014 13:53