2009-05-18 4 views
7

Es gab eine couple von great Diskussionen über Salz Best Practices, und es scheint die überwältigende Empfehlung ist, ein anderes Salz für jedes Passwort zu generieren und es neben dem Kennwort in der Datenbank zu speichern.Speichern von Salz in Code anstelle von Datenbank

Wenn ich jedoch den Zweck von Salz richtig verstehe, ist es die Chance zu reduzieren, dass Sie durch Rainbow Table Attacken kompromittiert werden. Ich verstehe also, dass es für jeden Benutzer optimal ist, es in der Datenbank zu speichern, aber was ist, wenn sich das Salz nicht in der Nähe der Datenbank befindet? Wenn ich einen einzelnen Salt-Wert im Code speichere (was auf dem Webserver in einer kompilierten DLL wäre), würde das nicht dem gleichen Zweck dienen, wenn ein Angreifer irgendwie Zugriff auf die Datenbank bekommen würde? Es scheint mir sicherer zu sein.

Antwort

15

Der Zweck eines Salzes ist es, die Regeneration einer Rainbow-Tabelle pro Passwort zu verlangen. Wenn Sie ein einzelnes Salz verwenden, muss der Hacker/Cracker nur einmal die Rainbow-Tabelle regenerieren und er hat alle Ihre Passwörter. Wenn Sie jedoch einen zufälligen pro Benutzer generieren, muss er einen pro Benutzer generieren. Beim Hacker-Teil viel teurer. Deshalb können Sie ein Salz im Klartext speichern, es spielt keine Rolle, ob der Hacker es kennt, solange es mehrere gibt.

Sicherheit durch Dunkelheit ist nicht gut, Microsoft hat uns das gelehrt.

+2

und wenn Sie eine Menge Spaß haben wollen, tun Sie beides;) oder beides und speichern Sie einen dup in der Datenbank, oder beides, mit einem dritten Salz in der Datenbank und einem vierten Salz, das ein dup ist: D – Malfist

8

... bis der Angreifer Zugriff auf die DLL erhält.

16

Der Wert eines Salzes liegt darin, dass es für jeden Benutzer unterschiedlich ist. Sie müssen diesen nicht eindeutigen Wert auch abrufen können, wenn Sie den Hashwert zu Vergleichszwecken neu erstellen.

Wenn Sie einen einzelnen Salt-Wert speichern, den Sie für jedes Passwort verwenden, reduzieren Sie den Wert für ein Salz an erster Stelle massiv.

1

Die Lektion, die ich aus Salzen gelernt hätte, ist: Divide and Conquer (Sicherheit)

7

Neben anderen Antworten, es ist auch erwähnenswert, dass ein Angreifer Ihr Salz in der gleichen Art und Weise herausfinden konnte er ein Passwort herausfinden würde, : Mit einem ihm bekannten Passwort kann er einen Brute-Force-Angriff auf mögliche Salze durchführen.

+0

Großartig Punkt, danke. – ern