Warum sollte ich kein Verschlüsselungssalz verwenden, das ich selbst eingebe, und eine Funktion verwenden, um ein Salz für mich zufällig zu sortieren?

StackOverflow https://stackoverflow.com/questions/8393169

Frage

Ich schreibe nur ein Salz und in PHP-Dokumentationen verwenden die Leute immer eine Zufallsvariablenfunktion.Was ist der Nachteil, wenn Sie ein Salz eingeben, anstatt es zu erzeugen?

War es hilfreich?

Lösung

Der Punkt des Salzes besteht darin, dem Hash Entropie hinzuzufügen. Kryptografische Hashes sind so konzipiert, dass eine geringfügige Änderung der Eingabe einen großen Unterschied im resultierenden Hash bewirkt. Daher kann (abgesehen von einem Fehler im Algorithmus) nicht festgestellt werden, ob die ursprüngliche Eingabe dieselbe war, wenn die Ähnlichkeit zwischen zwei unterschiedlich gesalzenen Eingaben überprüft wird Hashes.

Wenn Sie jedoch für alle das gleiche Salz verwenden, verlieren Sie viel von dem Nutzen, der sich daraus ergibt. Zwei identische Passwörter, die mit demselben Salt gehasht wurden, geben Ihnen denselben Hash.

  • Wenn Sie für alle das gleiche Salz verwenden, kann zumindest jemand herausfinden, dass zwei Benutzer das gleiche Passwort haben.

  • Noch wichtiger ist, dass die Zeit, die jemand zum Knacken von Passwörtern aufwenden muss, erheblich verkürzt wird, da er jetzt denselben Hash für jeden Benutzer gleichzeitig überprüfen kann.

  • Im schlimmsten Fall könnte jemand bereits eine Nachschlagetabelle für das von Ihnen verwendete Salz haben, was es trivial macht, das Passwort jedes Benutzers zu knacken.

    Während es möglich ist, ein einfaches Salz (wie die Benutzer-ID) zu verwenden, um das Ziel zu erreichen, das Knacken zu erschweren, ist es nur ein winziger Aufwand, eine zufällige Zeichenfolge zu verwenden, und macht das Knacken gleichmäßig schwieriger (da es fast unmöglich ist, das Salz im Voraus vorherzusagen, wird die Wahrscheinlichkeit, eine vorberechnete Nachschlagetabelle für dieses Salz zu haben, viel geringer).

Andere Tipps

  • Warum sollten Sie Ihre Benutzer zwingen, etwas einzugeben?

  • Zufällig generierte Bytes haben viel mehr Entropie als Benutzereingaben (normalerweise nur alphanumerisches ASCII).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top