Подбирайте перец так же, как вы выбираете криптографические ключи: используйте CSPRNG вашей ОС, чтобы сгенерировать перец размером 16–32 байта (128–256 бит).
Если в вашей системе есть аппаратный модуль безопасности (HSM) или защищенный анклав, вы можете хранить там один перец для всех пользователей. В противном случае вам придется использовать обычный файл, поэтому установите права доступа соответствующим образом.
В некоторых случаях можно иметь перец на пользователя. Для этого вы, как правило, не можете использовать HSM или безопасный анклав, поскольку у вас будет слишком много записей для него, а также вам придется хранить, какой пользователь идет с каким перцем. Таким образом, это может сделать вещи менее безопасными, а не более безопасными.
Соли не являются секретными по определению. Храните соль в той же базе данных, что и хеш имени пользователя и пароля.Для всех текущих безопасных функций хеширования паролей соль является частью выходных данных алгоритма хеширования паролей, поэтому для нее не требуется отдельный столбец базы данных.
Что бы вы ни делали, убедитесь, что у вас есть способ сделать резервную копию и восстановить перцы. В конце концов, он не будет резервироваться резервными копиями вашей базы данных! Если он утерян, ваши пользователи не смогут войти в систему. Помните, что безопасность — это сочетание конфиденциальности, целостности и доступности, поэтому не позволяйте перцу стать единой точкой отказа.