Правильное засоление и использование PHPass

Я использую PHPass для хэширования своих паролей в течение длительного времени. Я признаю, что все еще есть вещи, которые я не совсем понимаю (или игнорирую), чтобы правильно хешировать пароль, поэтому сегодня я просматривал всю информацию, которую я мог найти об этом.

Пересматривая документы PHPass, я сделал следующее:

Помимо фактического хэширования, phpass прозрачно генерирует случайные соли, когда новый пароль или кодовая фраза хэшируется, и он кодирует хэш-тип, соль и счетчик растяжения пароля в строку «хэш-кодировку», которую он возвращает. Когда phpass аутентифицирует пароль или кодовую фразу против сохраненного хеша, он также прозрачно извлекает и использует идентификатор хеш-типа, соль и счетчик итераций из «строки кодирования хэша». Таким образом, вам не нужно беспокоиться о соле и растягивании самостоятельно – phpass заботится о них для вас.

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

  1. Это безопасно? Если хеш скомпрометирован, у злоумышленника есть соль, используемая для хеширования пароля … Здесь кое-что не хватает.
  2. Я здесь действительно свободен беспокоиться о том, чтобы солить пароли? Могу ли я действительно полагаться на PHPass?

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

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

Немного фона
Соль не должна быть секретной, вместо этого соль «работает», убедившись, что хэш-результат уникален для каждого использованного экземпляра. Это делается путем выбора другого значения случайной соли для каждого вычисленного хэша.

Намерение соли не скомпрометировано, когда оно известно; злоумышленнику все равно необходимо атаковать каждый хэш отдельно. Поэтому вы можете просто сохранить соль вместе с паролем.

Итак, безопасен ли PHPass?
ДА! PHPass (в соответствии с лучшими практиками) генерирует для вас сильную случайную соль. Это хорошо изученная и качественная библиотека.

Интересные ссылки :
Как безопасно использовать хэш-пароли?
Как хранить соль?
Пароль Хейшинг добавляет соль + перец или достаточно соли?
Солярное поколение и программное обеспечение с открытым исходным кодом

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