1. ホーム

[解決済み】塩の文字列はどこに保存していますか?

2022-04-02 04:35:29

質問

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

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

セキュリティの観点から、ソルトを別の場所に保存することに意味はあるのでしょうか?サーバーコードとDBが同じマシンにあるウェブアプリケーションを考えてみましょう。もし、塩がそのマシンのフラットファイルに保存されているなら、もしデータベースが危険にさらされたら、塩のファイルもそうなる可能性があります。

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

どのように解決するのですか?

レインボーテーブルのポイントは、事前に作成され、他の人の計算時間を節約するために大量に配布されていることです - それはちょうどそれが直接パスワードと塩の組み合わせをクラックすると同じように、その場でレインボーテーブルを生成するために時間がかかります(レインボーテーブルを生成するときに行われていることは、実質的にブルートフォースハッシュの計算を事前に実行しているので)、したがって、誰かが塩を知っていれば虹テーブル&を生成できる、という主張は偽りである。

ソルトのポイントは、単に1つのレインボーテーブルでDB内のすべてのパスワードを破ることができないようにすることなのです。