Насколько мне известно, жизненный цикл паролей в приложении должен быть примерно равен:
- хэш-пароля и сохранен при создании
- хеш-кандидата и сверен с сохраненным значением при проверке
Таким образом, мы стремимся не извлекать данные из БД, особенно пароли, даже хэшированные. Тем не менее, этот подход подразумевает, что мы используем константы algo + params для хеширования, поэтому мы можем повторно хэшировать и получать одно и то же значение каждый раз, что на самом деле является недостатком.
В случае Argon2 хэшировать мы не можем таким образом, так как соль случайна для каждой записи и добавляется к хешу (вместе с остальными параметрами), поэтому мы должны принести данные из БД и только затем проверить кандидата на пропуск.
Вопросы:
- Прав ли я в понимании обработки хэшированных паролей в Argon2 или что-то пропустил?
- должен такого родаизменение шаблона обработки пароля будет рассматриваться как негативно влияющее на безопасность приложения?