Speichern von Salz im Code statt in der Datenbank

7

Es gab ein Paar von große Diskussionen über die besten Praktiken von Salz, und es scheint die überwältigende Empfehlung zu sein, für jedes Passwort ein anderes Salz zu generieren und es zu speichern neben dem Passwort in der Datenbank.

Wenn ich jedoch den Sinn von Salz richtig verstehe, dann soll es die Wahrscheinlichkeit verringern, dass Sie durch Rainbow-Table-Angriffe kompromittiert werden. Ich verstehe also, dass es am besten wäre, wenn Sie es in der Datenbank speichern, es für jeden Benutzer zu ändern, aber was ist, wenn das Salz nicht in der Nähe der Datenbank ist? 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.

    
ern 18.05.2009, 16:20
quelle

5 Antworten

15

Der Zweck eines Salzes ist es, die Regenerierung einer Regenbogen-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.

    
Malfist 18.05.2009, 16:28
quelle
16

Der Wert eines Salzes liegt darin, dass es für jeden Benutzer anders 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 das Vorhandensein eines Salzes massiv.

    
Glen 18.05.2009 16:24
quelle
8

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

    
pjc50 18.05.2009 16:23
quelle
7

Zusätzlich zu anderen Antworten ist es auch erwähnenswert, dass ein Angreifer sein Salz auf die gleiche Weise herausfinden könnte, wie er ein Passwort herausfinden würde: Mit einem bekannten Passwort (sein eigenes), kann er einen Brute-Force-Angriff auf möglich machen Salze.

    
Nick Johnson 19.05.2009 09:09
quelle
1

Die Lektion, die ich von Salzen gelernt habe, lautet: Teile und überwinde (Sicherheit)

    
ATorras 18.05.2009 17:18
quelle