Die Notwendigkeit, das Salz für einen Hasch zu verstecken

Bei der Arbeit haben wir zwei konkurrierende Theorien für Salze. Die Produkte, an denen ich arbeite, verwenden so etwas wie einen Benutzernamen oder eine Telefonnummer, um den Hash zu salzen. Im Wesentlichen etwas, das für jeden Benutzer anders ist, uns aber jederzeit zur Verfügung steht. Das andere Produkt generiert zufällig ein Salt für jeden Benutzer und ändert sich jedes Mal, wenn der Benutzer das Kennwort ändert. Das Salz wird dann in der Datenbank verschlüsselt.

Meine Frage ist, ob der zweite Ansatz wirklich notwendig ist? Ich kann aus rein theoretischer Sicht verstehen, dass es sicherer ist als der erste Ansatz, aber was ist aus praktischer Sicht. Zur Authentifizierung eines Benutzers muss das Salt jetzt unverschlüsselt und auf die Anmeldeinformationen angewendet werden.

Nachdem ich darüber nachgedacht habe, sehe ich keinen wirklichen Sicherheitsgewinn bei diesem Ansatz. Wenn Sie das Salt von Konto zu Konto ändern, ist es für jemanden immer noch äußerst schwierig, den Hashing-Algorithmus brutal zu erzwingen, selbst wenn der Angreifer wusste, wie er schnell feststellen kann, was es für jedes Konto ist. Dies setzt voraus, dass die Passwörter ausreichend sicher sind. (Offensichtlich ist es wesentlich einfacher, den richtigen Hash für eine Reihe von Passwörtern zu finden, bei denen es sich ausschließlich um zwei Ziffern handelt, als den richtigen Hash für 8-stellige Passwörter zu finden.) Bin ich falsch in meiner Logik oder fehlt mir etwas?

BEARBEITEN: Okay, hier ist der Grund, warum es meiner Meinung nach wirklich umstritten ist, das Salz zu verschlüsseln. (Ich weiß, ob ich auf dem richtigen Weg bin).

Für die folgende Erklärung nehmen wir an, dass die Passwörter immer 8 Zeichen und das Salt 5 Zeichen sind und alle Passwörter aus Kleinbuchstaben bestehen (dies erleichtert nur das Rechnen).

Ein anderes Salz für jeden Eintrag bedeutet, dass ich nicht den gleichen Regenbogentisch verwenden kann (eigentlich könnte ich es, wenn ich einen von ausreichender Größe hätte, aber lassen Sie uns das für den Moment ignorieren). Dies ist der eigentliche Schlüssel zum Salz von dem, was ich verstehe, denn um jeden Account zu knacken, muss ich das Rad sozusagen für jeden neu erfinden. Wenn ich jetzt weiß, wie man das richtige Salt auf ein Passwort anwendet, um den Hash zu generieren, würde ich es tun, weil ein Salt wirklich nur die Länge / Komplexität des Hash-Ausdrucks erweitert. Ich würde also die Anzahl der möglichen Kombinationen reduzieren, die ich erzeugen müsste, um zu "wissen", dass ich das Passwort + salt von 13 ^ 26 auf 8 ^ 26 habe, weil ich weiß, was das Salz ist. Das macht es einfacher, aber immer noch sehr schwer.

Also auf die Verschlüsselung des Salzes. Wenn ich weiß, dass das Salt verschlüsselt ist, würde ich es nicht zuerst versuchen und entschlüsseln (vorausgesetzt, ich weiß, dass es eine ausreichende Verschlüsselungsstufe hat). Ich würde es ignorieren. Anstatt zu versuchen, herauszufinden, wie man es entschlüsselt, würde ich, wenn ich zum vorherigen Beispiel zurückkehre, einfach eine größere Regenbogentabelle generieren, die alle Schlüssel für die 13 ^ 26 enthält. Das Salz nicht zu kennen, würde mich definitiv verlangsamen, aber ich denke nicht, dass es die monumentale Aufgabe hinzufügen würde, zuerst zu versuchen, die Salzverschlüsselung zu knacken. Deshalb glaube ich nicht, dass es sich lohnt. Gedanken?

Hier ist ein Link, der beschreibt, wie lange Passwörter bei einem Brute-Force-Angriff Bestand haben:http://www.lockdown.co.uk/?pg=combi

Antworten auf die Frage(10)

Ihre Antwort auf die Frage