Сравнение одноразовых солей и паролей сервера

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

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

(Отказ от ответственности: я не пытаюсь заново изобрести колесо / написать протокол входа в систему (я знаю, я знаю: используйте SSL/TLS). Мне просто любопытно, как функционирует протокол входа в систему на высоком уровне)

2 ответа

Решение

Вы должны генерировать соль только один раз и можете каждый раз при смене пароля.

Клиенту не нужно хранить соль где-либо или даже знать об этом. Соль будет храниться на сервере - вместе с хешем.

Рекомендуется хранить хэш и соль в двух разных базах данных.

Вы создаете новую соль только тогда, когда пользователь изначально устанавливает пароль. Затем вы сохраняете соль вместе с хэшем пароля.

Другие вопросы по тегам