Я сейчас обновляю несколько проектов, используя различные небезопасные/ужасно небезопасные хэши паролей на основе MD5. Я теперь по крайней мере несколько лучше информирован о лучших практиках, но мне все еще интересно, что я делаю что-то неправильно. Я не видел конкретного процесса, который я реализую в другом месте, но, по крайней мере, один пользователь SO, похоже, хочет сделать что-то подобное. В моем случае:
-
Хэши паролей генерируются с использованием bcrypt. (Так как правильные параметры, похоже, являются bcrypt, scrypt или pbkdf2, а bcrypt был наиболее легко доступен для меня в PHP.)
-
Для каждого хеша используется другая, случайная соль. (Чтобы запретить злоумышленникам создавать пользовательскую таблицу радуги, рассчитанную с помощью одной статической соли.)
-
Хеш, параметры алгоритма и соль хранятся вместе. (С тех пор, что функция PHP crypt дает мне значение хэша.)
-
После успешного входа в систему хэш пересчитывается с помощью новой случайной соли.
Это последний шаг, о котором мне интересно. Мое намерение здесь разрешить обновление алгоритма хэширования с течением времени, поэтому пользователи, которые регулярно регистрируются, будут иметь свои пароли, хранящиеся в наиболее безопасном формате.
Мои вопросы:
-
Разве это пустая трата времени?
-
Существуют ли какие-либо опасности при этом?