12 Stimmen

Welchen Zweck hat das "Salz" beim Hashing?

Ok, ich versuche, den Grund für die Verwendung von Salz zu verstehen.

Wenn sich ein Benutzer registriert, generiere ich ein eindeutiges Salt für ihn/sie, das ich in der DB speichere. Dann verschlüssle ich es und das Passwort mit SHA1. Und wenn er/sie sich anmeldet, haue ich es erneut mit sha1($salt.$password) .

Aber wenn jemand meine Datenbank hackt, kann er das gehashte Passwort UND das Salt sehen.

Ist das schwieriger zu knacken als ein Hashing des Passworts ohne Salz? Das verstehe ich nicht

Tut mir leid, wenn ich dumm bin

10voto

Mark Byers Punkte 761508

Wenn Sie kein Salt verwenden, kann ein Angreifer offline eine Passwort<->Hash-Datenbank vorberechnen, noch bevor er in Ihren Server eingedrungen ist. Durch das Hinzufügen eines Salzes wird die Größe dieser Datenbank erheblich vergrößert, was die Durchführung eines solchen Angriffs erschwert.

Außerdem können sie nach dem Einbruch ein häufig verwendetes Kennwort erraten, einen Hashwert daraus bilden und dann alle Kennwörter in der Datenbank auf Übereinstimmungen überprüfen. Da für jeden Benutzer ein anderes Salz verwendet wird, können sie immer nur ein Passwort angreifen.

In der Wikipedia gibt es einen Artikel über Salze in der Kryptographie .

1voto

Percutio Punkte 971

Eine weitere Absicht hinter der Verwendung eines Salt ist es, sicherzustellen, dass zwei Benutzer mit demselben Passwort nicht denselben Hash in der Benutzertabelle haben (vorausgesetzt, ihr Salt ist nicht gleich). Die Kombination aus einem Salt und einem Passwort kann jedoch am Ende zur gleichen "Zeichenkette" oder zum gleichen Hash führen, so dass der Hash genau gleich ist.

1voto

Mike Daniels Punkte 8472

Wenn ein Angreifer eine riesige Tabelle mit Hash-Werten für Klartext-Passwörter Durch die Verwendung eines Salzes wird verhindert, dass er dieselbe Tabelle zum Knacken von mehr als einem Passwort verwendet. Der Angreifer müsste für jeden Salt eine eigene Tabelle erstellen. Beachten Sie, dass Ihr Salt ziemlich lang sein sollte, damit dies tatsächlich funktioniert. Andernfalls wird die vorberechnete Tabelle des Angreifers wahrscheinlich ohnehin den Hash aus Salt und Passwort enthalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X