it-swarm.com.de

Geheime Salze; Warum verlangsamen sie Angreifer mehr als ich?

Beim Studium von Dan Bonehs Folien für 'Sitzungsmanagement und Benutzerauthentifizierung' (2011) erwähnt er 'geheime Salze' auf der Folie 'Weitere Abwehrkräfte' (Folie 48 von 58).

Er schlägt vor, in der Datenbank zu speichern:

Alice|SA|H(pwA , SA , rA)

In dem Alice der Benutzername ist, SA das mit Alice verknüpfte Salz und H(pwA , SA , rA) das Ergebnis des Hashing von Alices Passwort pwA zusammen mit dem Salz und einem kleinen Zufallswert rA.

Ich verstehe nicht, warum das Hinzufügen eines kurzen Zufallswerts r (8 Bit) die Überprüfung um den Faktor 128 verlangsamt, während ein Angreifer um den Faktor 256 verlangsamt wird.

54
harm

Dies würde wahrscheinlich in der Hörvorlesung erklärt, die diese Folien begleiten.

Ich vermute, dass er dies unter der Annahme berechnet, dass Benutzer im Allgemeinen ihre korrekten Passwörter eingeben. Sie müssen nur die Optionen für r durchlaufen, bis Sie eine finden, die einen korrekten Hash erzeugt.

Wenn Sie das richtige Passwort erhalten haben, werden Sie auf ein r stoßen, das einen korrekten Hash erzeugt. Wann genau dies geschieht, ist unterschiedlich (da es zufällig ist), aber im Durchschnitt werden Sie die Hälfte aller Optionen (2 ** 8 = 256, 256/2 = 128) durchgehen, bevor Sie es finden.

Der Angreifer versucht jedoch normalerweise falsche Passwörter. Dies bedeutet, dass sie jede einzelne Option von r ausprobieren müssen, dh die vollen 256.

Nur um --- noch etwas hinzuzufügen Xiongs Antwort :

Im Falle eines Datenbankkompromisses versucht ein Angreifer, alle Passwörter (oder zumindest die interessantesten) wiederherzustellen, was bedeutet, dass er jedes Kandidatenpasswort mit jedem möglichen "geheimen Salz" versuchen muss, was ziemlich teuer ist

In der Zwischenzeit muss der Server nur das mögliche "geheime Salz" mit dem vom Benutzer eingegebenen Passwort durchlaufen. Es ist wahrscheinlich, dass nicht nur das Passwort korrekt ist, sondern auch nur eines für jeden Benutzer, der sich anmeldet

14
Mr. E

Zusätzlich zum oben genannten:

schutz vor Regenbogentischen und (verteilten) Bruteforce-Angriffen.

Regenbogentabellen enthalten die Ergebnisse eines bestimmten Hashs, dh wenn Sie eines für einen bestimmten Hash-Typ haben (z. B. sha1). Sie können einfach das Ergebnis nachschlagen und eine Reihe von Hashes ziemlich einfach "entschlüsseln". Was nicht funktioniert, wenn Sie Haschblöcke haben oder jeder einzelne Hasch auf sich selbst gesalzen ist.

Gleiches gilt für Distributed Bruteforce-Angriffe. Wenn Sie versuchen, ein Hash-Ergebnis rückzuentwickeln/zurück zu erraten (unter Verwendung von Sicherheitslücken in einem Hashing-Algorithmus), können Sie diese verwenden, um ähnliche Hashes zu beschleunigen. Die Verwendung mehrerer Maschinen (des verteilten Teils), die nach einem weiteren Versatz suchen, erhöht die Trefferchance erheblich. Wenn der Treffer an einer beliebigen Stelle in einem bestimmten Bereich auftreten kann, erhöht sich die Wahrscheinlichkeit eines Treffers erheblich, wenn Sie mit mehreren Offsets gleichzeitig beginnen. Außerdem kann jeder entdeckte Hash erneut mit den anderen Hashes innerhalb des Sets getestet werden, das Sie bruteforce möchten.

Dies alles wird unbrauchbar, wenn Sie einen Hash salzen, da das Ergebnis nicht mehr linear, vorhersehbar oder durchsuchbar ist.

0
RC NL