В свете большой Утечка паролей в LinkedIn, я думал о безопасности паролей. Фреймворки веб-разработки, с которыми я работал в прошлом, обычно хранят основную соль уровня приложения в качестве константы приложения, а затем объединяют все пароли пользователей с этим значением (генерируются случайным образом для каждого приложения). например в псевдокоде: password = hash(App::salt + userPassword)
.
Я прочитал много советов, в которых предлагается создать случайную соль для каждого пользователя, а затем сохранить ее в базе данных вместе с паролем каждого пользователя. У меня вопрос, как это повышает безопасность? Если злоумышленник получит список дайджестов паролей из базы данных, он, вероятно, тоже сможет получить соль, верно? Или есть какой-то вектор атаки, о котором я не знаю, который получит дайджесты паролей без доступа к остальной части таблицы?