BCrypt ... Salt

Hallo Community,

ich habe eine Frage zu folgenden Hashmethode: BCrypt (Spring Security 4.0.1.RELEASE API)

Ich kann ein Salt angeben, beim hashen. Wieso benötige ich das Salt nicht, wenn ich dann das Passwort checke? Ich war bisher der Meinung, dass man ein fixes Salt im Programmcode hinterlegt, um ein Passwort gehasht abzuspeichern und später wieder zu prüfen. jedenfalls habe ich es früher bei MD5 so gemacht. Warum ist das bei Blowfish nicht nötig?

Hi,

der Salt wird in das Ergebnis von BCrypt gehangen. Damit kannst du aus dem Hash aus der Datenbank (dein gespeichertes Passwort) den Salt extrahieren. (alles von $ bis /).

Und genau das macht die Methode. Sie nimmt den SALT aus deiner Datenbank.

Details siehe auch hier: security - How can bcrypt have built-in salts? - Stack Overflow

Und warum das so ausreicht siehe hier: Rainbow Table – Wikipedia

Gruß,

Martin

OK. Danke. Ist einleuchtend. Vor allem ist ein im Quellcode hinterlegtes fixes Salt auch nicht unbedingt sicherer. Vor allem Open Source Software hätte da überhaupt keine Vorteile.

Direkt im Quellcode hinterlegt macht es natürlich wenig Sinn. Eine gängige Option ist es, bei der Installation / dem ersten Start einen Schlüssel zu generieren.

1 Salt für alle Passwörter führt das Prinzip wieder ad absurdum

Nicht, wenn der Salt (im Wikipediaartikel “Pepper” genant) geheim und an anderer Stelle gespeichert ist (z. B. in einer Konfigurationsdatei statt in der Datenbank).

*** Edit ***

Ein “Pepper” hat natürlich den Nachteil, dass gleiche Passworte gleich bleiben. Daher ist er wahrscheinlich auch nur in Kombination mit Salt sinnvoll.

Wenn wer an die DB kommt, kommt er wahrscheinlich auch an den hinterlegten Salt. Daher immer für jedes PW einen neuen Salt generieren.

… wenn er an den in einer Datei hinterlegten “Pepper” kommt, kann er wahrscheinlich auch die Datei austauschen, die für die Nutzerauthentifizierung zuständig ist und alles mitplotten - kein Angriff auf die Hashes mehr erforderlich.
Was ich damit sagen möchte ist, dass jede Schutzmaßnahme nur vor bestimmten Szenarien schützt.