Ein salt ist ein Wert, der zu einem Passwort (oder einem anderen geheimen Schlüssel) hinzugefügt wird, das Sie in einer Richtung hashen möchten. Dies bedeutet, dass es sich vor, nach oder irgendwo innerhalb des Kennworts befinden kann, solange seine Position und sein Wert für ein gegebenes Kennwort konsistent sind.
Damit werden Wörterbuchangriffe - im Grunde genommen Wörterbücher mit gewöhnlichen Passwörtern, die ohne Salz vorgehackt wurden - von der Verwendung eines Einwegpassworts abgeschwächt, solange der Angreifer den Hash nicht kennt. Wenn jedes Passwort einen anderen Hashwert hat, ist es für einen Angreifer sehr schwierig, ein Wörterbuch zu erstellen, das für das Crawlen Ihrer Passwörter optimiert ist (sie benötigen ein Wörterbuch für jedes einzelne Salz und müssen auch wissen, wo das Salz in jedem Passwort platziert wurde) ).
Damit all dies anwendbar ist, muss ein Angreifer in erster Linie die Hashes Ihrer Passwörter haben. Dies hat nichts damit zu tun, Passwörter anzugreifen, indem man sie durch Eingabeaufforderungen rät.
In Bezug auf MySQL, speziell wenn Sie beim Hashing eines Passworts ein Salz angeben, stellen Sie sicher, dass Sie das Salz irgendwo notieren. Wenn ein Benutzer die Authentifizierung versucht, kombinieren Sie diesen aufgezeichneten Salt-Wert mit dem Passwort (während des Aufrufs von crypt
zum Beispiel) und wenn der resultierende Hash übereinstimmt, dann haben sie das korrekte Passwort eingegeben. (Beachten Sie, dass zu keinem Zeitpunkt das Hashing eines Passworts umgekehrt wird; also in einer Richtung.)
salt ist nichts anderes als eine Zeichenfolge, die Sie an das Kennwort anhängen, entweder als Konstante oder durch einen Algorithmus
was es für jeden erschwert, der gegen Ihre Sicherheit verstoßen hat und Zugriff auf Ihr gespeichertes Passwort hat, was es im Gegenzug für ihn nahezu unmöglich macht, Rainbow-Wörterbücher zu verwenden, um das echte Passwort zu entsperren, was aus Sicht eines Hackers kann nützlich sein, da viele Leute das selbe Passwort in vielen verschiedenen Seiten verwenden.
%Vor%So könntest du grundsätzlich ein Passwort speichern
Vor dem Hashing wird ein Klartext an den Klartext angehängt (oder umgekehrt), um Dictionary-Lookups teurer zu machen.