Ich stieß auf eine Diskussion, in der ich erfuhr, dass das, was ich getan hatte, nicht darin bestand, Passwörter zu salzen, sondern sie zu peppen, und seitdem habe ich begonnen, beides mit einer Funktion wie:
hash_function($salt.hash_function($pepper.$password)) [multiple iterations]
Ignoriert man den gewählten Hash-Algorithmus (ich möchte, dass dies eine Diskussion über Salze und Paprika ist und nicht über bestimmte Algorithmen, aber ich verwende einen sicheren), ist dies eine sichere Option oder sollte ich etwas anderes tun? Für diejenigen, die mit den Begriffen nicht vertraut sind:
Ein Salt ist ein zufällig generierter Wert, der normalerweise mit der Zeichenfolge in der Datenbank gespeichert wird, um die Verwendung von Hash-Tabellen zum Knacken von Kennwörtern zu verhindern. Da jedes Passwort sein eigenes Salz hat, müssen sie alle einzeln brutal gezwungen werden, um sie zu knacken. Da das Salt jedoch mit dem Kennwort-Hash in der Datenbank gespeichert ist, bedeutet ein Datenbankkompromiss, dass beide verloren gehen.
Ein Pfeffer ist ein standortweiter statischer Wert, der getrennt von der Datenbank gespeichert wird (normalerweise im Quellcode der Anwendung fest codiert) und der geheim sein soll. Es wird verwendet, damit ein Kompromiss der Datenbank nicht dazu führt, dass die Kennworttabelle der gesamten Anwendung brutal erzwungen wird.
Fehlt mir etwas und ist das Salzen und Peppen meiner Passwörter die beste Option, um die Sicherheit meiner Benutzer zu schützen? Gibt es eine potenzielle Sicherheitslücke auf diese Weise?
Hinweis: Nehmen Sie zum Zweck der Diskussion an, dass die Anwendung und die Datenbank auf separaten Computern gespeichert sind, keine Kennwörter usw. freigeben, sodass ein Verstoß gegen den Datenbankserver nicht automatisch einen Verstoß gegen den Anwendungsserver bedeutet.