ソルトストリングはどこに保管していますか?質問する

ソルトストリングはどこに保管していますか?質問する

私は、データベース保存用のパスワードをハッシュするときに、常に適切なエントリごとのソルト文字列を使用してきました。私のニーズでは、ハッシュされたパスワードの隣にソルトを DB に保存すると、常に問題なく機能しました。

しかし、ソルトをデータベースとは別に保存することを推奨する人もいます。彼らの主張は、データベースが侵害された場合でも、攻撃者は特定のソルト文字列を考慮してレインボー テーブルを作成し、一度に 1 つのアカウントをクラックできるということです。このアカウントに管理者権限があれば、他のアカウントをクラックする必要すらないかもしれません。

セキュリティの観点から、ソルトを別の場所に保存する価値はあるでしょうか? サーバー コードと DB が同じマシン上にある Web アプリケーションを考えてみましょう。ソルトがそのマシン上のフラット ファイルに保存されている場合、データベースが侵害されると、ソルト ファイルも侵害される可能性が高くなります。

これに対する推奨される解決策はありますか?

ベストアンサー1

レインボー テーブルのポイントは、他の人の計算時間を節約するために事前に作成され、大量に配布されることです。レインボー テーブルをその場で生成するには、パスワードとソルトの組み合わせを直接解読するのと同じくらいの時間がかかります (レインボー テーブルを生成するときに実際に行われているのは、ハッシュをブルート フォースするための計算を事前に実行することです)。したがって、ソルトを知ることで誰かが「レインボー テーブルを生成できる」という主張は根拠がありません。

ソルトがユーザーごとに存在する限り、ソルトを別のファイルに保存することには実際のところ意味がありません。ソルトの目的は、1 つのレインボー テーブルで DB 内のすべてのパスワードを解読できないようにすることだけです。

おすすめ記事