Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist Salt in Bezug auf MYSQL sha1?

Ein Salt ist ein Wert, der einem Passwort (oder einem anderen Geheimnis) hinzugefügt wird, das Sie auf eine Weise hashen möchten. Dies bedeutet, dass es vor, nach oder irgendwo innerhalb des Passworts stehen kann, solange seine Position und sein Wert für ein bestimmtes angegebenes Passwort konsistent sind.

Was dies bewirkt, ist, dass Wörterbuchangriffe – im Grunde Wörterbücher gängiger Passwörter, die ohne Salz vorgehasht werden – davon abgehalten werden, ein Einwegpasswort zu „erraten“, solange der Angreifer den Hash nicht kennt. Wenn jedes Passwort einen anderen Hash hat, dann wird es für einen Angreifer sehr schwierig, ein Wörterbuch zu erstellen, das zum Knacken Ihrer Passwörter optimiert ist (sie würden ein Wörterbuch für jedes einzelne Salt benötigen und sie müssten auch wissen, wo das Salt in jedem Passwort platziert wurde ).

Damit all dies anwendbar ist, muss ein Angreifer natürlich zuerst die Hashes Ihrer Passwörter haben. Das hat nichts damit zu tun, Passwörter anzugreifen, indem man sie durch eine Eingabeaufforderung errät.

In Bezug auf MySQL, insbesondere wenn Sie beim Hashen eines Passworts ein Salt angeben, stellen Sie sicher, dass Sie irgendwo aufzeichnen, was dieses Salt war. Wenn ein Benutzer dann versucht, sich zu authentifizieren, kombinieren Sie diesen aufgezeichneten Salt-Wert mit dem Passwort (während des Aufrufs von crypt zum Beispiel) und wenn der resultierende Hash übereinstimmt, haben sie das richtige Passwort eingegeben. (Beachten Sie, dass das Hashing eines Passworts zu keinem Zeitpunkt rückgängig gemacht wird; also in eine Richtung.)