Рекомендации: пароли с солью и перцем?

Я натолкнулся на дискуссию, в ходе которой я узнал, что то, что я делал, на самом деле не засолил пароли, а перебил их, и с тех пор я начал выполнять обе функции с такой функцией:

hash_function($salt.hash_function($pepper.$password)) [multiple iterations]

Игнорирование выбранного алгоритма хеширования (я хочу, чтобы это было обсуждение солей и перцев, а не конкретных алгоритмов, но я использую безопасный), это безопасный вариант или я должен делать что-то другое? Для тех, кто не знаком с условиями:

A поваренная соль является случайно сгенерированным значением, обычно хранящимся со строкой в базе данных, разработанной, чтобы сделать невозможным использование хеш-таблиц для взлома паролей. Поскольку у каждого пароля есть своя собственная соль, все они должны быть взломаны индивидуально, чтобы взломать их; однако, поскольку соль хранится в базе данных с хэшем пароля, компрометация базы данных означает потерю обоих.

A перец это статическое значение для всего сайта, хранящееся отдельно от базы данных (обычно жестко запрограммированное в исходном коде приложения), которое должно быть секретным. Он используется для того, чтобы компрометация базы данных не приводила к переборам всей таблицы паролей приложения.

Есть ли что-то, чего я пропускаю, и является ли засолка и засыпка моих паролей лучшим вариантом для защиты безопасности моего пользователя? Есть ли потенциальный недостаток безопасности в этом?

Примечание. Предположим, что в целях обсуждения приложение и база данных хранятся на отдельных компьютерах, не делятся паролями и т. Д., Поэтому нарушение работы сервера базы данных не означает автоматически нарушение работы сервера приложений.

Ответы на вопрос(4)

Ваш ответ на вопрос