Was ist das Bedrohungsmodell? Es könnte von Vorteil sein, den Kennwortspeicher mit einem anwendungsseitigen Geheimnis zu schützen, aber nur, wenn Sie der Meinung sind, dass es ein realistisches Szenario ist, dass Ihre Datenbank kompromittiert wird - ohne Ihren Anwendungsserver, der das enthält geheim, auch kompromittiert.
Normalerweise wird die Anwendungsschicht als der anfälligere Teil und die Datenbankschicht als besser geschützt angesehen, und aus diesem Grund wird es nicht als nützlich angesehen, die Daten mit einer Anwendungsseite zu schützen Geheimnis. Dies ist jedoch möglicherweise nicht bei jeder App der Fall, und ich persönlich würde diese Annahme angesichts der Verbreitung der SQL-Injection etwas in Frage stellen.
Der Nachteil bei der Einführung eines App-seitigen Geheimnisses besteht darin, dass Sie sich jetzt Sorgen machen müssen Schlüsselverwaltungsprozesse. Was ist Ihr Mechanismus zum Ersetzen des Schlüssels, wenn er kompromittiert wird? Wirst du es selbstverständlich drehen? Wie wird Ihr Schlüssel gespeichert, damit Sie Server verschieben und nicht verlieren können (wodurch möglicherweise alle Ihre Daten unbrauchbar werden)? Für kurzlebige Schlüssel (die zum Beispiel zum Signieren von Sitzungstoken verwendet werden) ist dies möglicherweise nicht wichtig, aber für die langfristige Speicherung von Kennwörtern wird dies wichtig.
Der weitere Nachteil bei symmetrischen Chiffren (insbesondere Blockchiffren) besteht darin, dass sie korrekt implementiert werden . Da Sie Hashing durchführen und keine Wiederherstellbarkeit benötigen, können Sie stattdessen das Geheimnis in den Hash aufnehmen (als "Pfeffer") ... aber dann können Sie bei einer Schlüsseländerung nicht alle Kennwortdaten erneut hashen Sie müssten also eine Multi-Key-Methode für den Rollover haben.
ETA-Kommentar @Pacerier:
Hashing verhindert nicht einen Offline-Ratenangriff von jemandem, der die Kennwortdatenbank erhalten hat. Es erhöht nur die Zeit, die dieser Angriff benötigt, um Früchte zu tragen. Mit einem Hashing-Schema von angemessener Schwierigkeit (dh Runden der Schlüsselableitung anstelle der Rohsalzlänge an sich) wird diese Zeit hoffentlich zu lang, damit Sie bemerken, dass Sie gehackt wurden, und die Passwörter aller ändern, bevor zu viele Ihre Konten gehen verloren.
Der Schutz des Inhalts mit einem geheimen Schlüssel (entweder durch Verschlüsselung oder durch Einbeziehen des geheimen Schlüssels in das Hash-Material) verhindert den Offline-Ratenangriff, jedoch nur solange der geheime Schlüssel selbst vorhanden ist nicht durchgesickert. Wenn sich der geheime Schlüssel auf dem vom Datenbankserver getrennten App-Server befindet, können die Kennwörter nur angegriffen werden, wenn beide Computer kompromittiert sind.
Wie viel von einem Vorteil ist fraglich, da viele Arten von Angriffen enden können Beides wird gefährdet, insbesondere wenn der App-Server und der Datenbankserver auf demselben Computer installiert sind. Es gibt auch einen Preis für die Verwaltbarkeit, wie besprochen. Ob es also einen Nettonutzen gibt, muss von Fall zu Fall anhand des Bedrohungsmodells beurteilt werden.