Могу ли я изменить значение соли при смене пароля пользователя? - PullRequest
13 голосов
/ 28 апреля 2011

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

Ответы [ 2 ]

21 голосов
/ 28 апреля 2011

Вы должны изменить соль.Соль разработана так, чтобы быть уникальной (как можно больше) для всех экземпляров пароля.

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

Конечно, старый пароль, будучи старым, больше не является допустимым способом ввода ваша система, но, поскольку пользователи, как правило, используют пароли повторно, старый пароль все же может оказаться полезным (с точки зрения злоумышленника).В частности, пользователь может повторно использовать этот старый пароль, когда он снова изменит свой пароль (это то, что большинство пользователей делают, когда сталкиваются с системой, которая требует регулярной смены пароля: они чередуются между двумя паролями).

2 голосов
/ 28 апреля 2011

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

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

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

Так что, возможно, будет хорошей идеей изменить соль при установке нового пароля.

...