Wie schützt ein Salz vor einem Wörterbuchangriff Stack-Überlauf

Ich habe das Lesen gerade ein wenig über die Verwendung von Salzen, und das Beispiel, das ich gibt habe gelesen, dass ein Salz zu einem Passwort hinzuzufügen, bevor gegen Wörterbuchangriff zu schützen Hashing.







Allerdings sehe ich nicht wirklich, wie das hilft - wenn der Angreifer Zugriff auf den Hash des Passworts hat (wie sie in dem Beispiel zu tun habe ich gelesen) sie höchstwahrscheinlich sie auch Zugriff auf das Salz haben. Daher kann nicht ein Angreifer nur voranstellen und das Salz zu jedem Element in einem Wörterbuch postpend bevor es durch das Wörterbuch laufen, um zu sehen, ob es den Hash übereinstimmt? Also müssen sie durch das Wörterbuch durchlaufen mehr als einmal, das ist offenbar nicht viel von einer Schutzverbesserung?

Diese Frage wurde vor gefragt und hat bereits eine Antwort. Wenn diese Antworten nicht vollständig Ihre Frage beantworten, wählen Sie bitte eine neue Frage stellen.

Ein Wörterbuch-Angriff ist ein Angriff, bei dem der Angreifer eine große Liste von Passwörtern nimmt, möglicherweise durch likelyhood / Wahrscheinlichkeit geordnet, und wendet den Algorithmus für jeden den es, das Ergebnis zu überprüfen.

Im Falle eines gesalzenen Passwort, ein solcher Angriff ist immer noch möglich (und nicht wesentlich kostspieliger), wenn der Angreifer das Salz hat (was normalerweise angenommen wird): Einfach Eingang das Salz in der Algorithmus auch.

Was ein Salz schützt vor, ist eine Regenbogen-Tabelle. Ein Regenbogen-Tabelle ist eine Tabelle, Paare von Klartext (beispielsweise Passwörter) und die entsprechenden Hash-Werte, sortiert von Hash enthält. Ein solches ermöglicht eine Tabelle, die eine einfache Suche nach dem Passwort, das Hash gegeben.

eine Regenbogen-Tabelle zu produzieren, ist ein kostspieliger Schritt (abhängig von der Größe des Wörterbuchs als Eingabe verwendet wird), aber dann kann man es ohne Kosten nutzen später so viele Passwörter zum Nachschlagen als wollte.







Als Salz dagegen schützt, da Sie jetzt eine separate Tabelle für jedes Salz benötigen würden. Auch mit dem einfachen 2-Buchstaben-Salz Unix-crypt, das schon ein Faktor von 3844. Moderne Passwort-Hash-Algorithmen verwenden, um ein viel größeres Salz (zum Beispiel bcrypt verwendet ein 128-Bit-Salz, das einen Faktor von 2 128 gibt.)

Zum Schutz gegen Wörterbuchangriff, auch, werden Sie einen langsamen Hash-Algorithmus statt, einen schnellen wie einfach MD5 oder SHA1 / SHA2 verwenden. Bcrypt ist ein solcher Algorithmus (mit einem konfigurierbaren Arbeitsfaktor) und der gleiche Autor später vorgeschlagen Scrypt (die nicht nur viel Zeit in Anspruch nimmt, sondern auch braucht viel Speicher, die Angreifer oft nicht so viel wie die Verarbeitungsleistung haben).

Es tut erhöhen, um die Arbeit, die sie durch die Erhöhung der Menge der möglichen Antworten in der Passwort-Datei zu tun haben.

Ein Mittel, einen Wörterbuch-Angriff zu tun, ist die Passwort-Datei zu scannen. Wenn es kein Salz ist und Sie „DFGE $% $% £ TEW“ sehen, dann wissen Sie das Passwort „password“. Hinzufügen von Salz bedeutet, dass Sie entweder ein viel größeres Wörterbuch verwenden enthält alle Werte für „PASSWORT“ mit allen möglichen Salze, oder man muss sich die Mühe verbringen, um das Salz zu lesen und die Verschlüsselung zu tun, die Sie verlangsamt. Es ist nicht mehr eine einfache Suche.

Salz hilft auch in Situationen, in denen mehr als ein Benutzer das gleiche Passwort wählt. Vor allem in den alten Tagen, wenn die Passwort-Datei für alle Benutzer lesbar war, macht es nicht offensichtlich, wenn ein anderer Benutzer das gleiche Passwort wie Sie hat, oder das gleiche Passwort wie man Sie kennen.

Eigentlich ein Salz schützt nicht vor Wörterbuch-Angriff. Es hat die folgenden Vorteile:

  1. Erhöhen Sie die Rechenkosten sie zu brechen, weil für jedes Passwort in der dictonary der Angreifer Hash es mit allen möglichen Salze zu versuchen brauchen.
  2. Verhindern, dass zwei Benutzer, die das gleiche Passwort haben auch den gleichen Hash zu haben. Auf diese Weise ein Angreifer muss explizit alle Passwörter brechen, selbst wenn es identische Passwörter in der gleichen Datei (die Hash-Passwort ist immer unterschiedlich).

Jedes Salz Wert erfordert ein anderes Wörterbuch, so dass jede Datenbank, die mit dem gleichen Wörterbuch angegriffen kein Salz verwenden kann.

Ohne Salz kann ein Angreifer nur ein Off-the-shelf verwenden vorausberechnet Wörterbuch, von denen es viele gibt.

Wenn Sie ein Salz für die gesamte Datenbank haben, dann müssen sie ein Wörterbuch speziell für Ihre Datenbank erstellen.

Wenn jeder Benutzer Datensatz seinen eigenen Salz hatte, jetzt müssen sie 1 Wörterbuch erstellen pro Benutzer.







In Verbindung stehende Artikel