LinkedInの大きなパスワードリークに照らして、私はパスワードのセキュリティについて考えてきました。私が過去に使用したWeb開発フレームワークは、通常、マスターのアプリケーションレベルのソルトをアプリ定数として保存し、すべてのユーザーパスワードをその値でソルトします(アプリごとにランダムに生成されます)。例:擬似コード:password = hash(App::salt + userPassword)
。
ユーザーごとにランダムなソルトを生成し、それを各ユーザーのパスワードと一緒にデータベースに保存することを提案する多くのアドバイスを読みました。私の質問は、これによりセキュリティがどのように向上するかということです。攻撃者がデータベースからパスワードダイジェストのリストを入手した場合、攻撃者もソルトを取得できる可能性がありますよね?または、テーブルの残りの部分にアクセスせずにパスワードダイジェストを取得する、私が知らない攻撃ベクトルはありますか?