Это архив блога mr.The Блог больше не обновляется. статьи сохранены в ознакомительных целях.

Как хранить пароли пользователей

2009-08-16

Рано или поздно все задумываются о хранении паролей пользователей. Многие останавливаются на алгоритме md5. Двойном md5, солёном md5 (salt md5) и других его разновидностях... Да, хорошая, длинная соль(salt) и не стандартная комбинация пароль+соль+md5 делает хеш достаточно сложным, что бы его нельзя было найти в базах. Но, если ваш сайт\сервер будет взломан, и будет получен доступ к базе данных и к файлам - брутфорс паролей не станет проблемой.
.
Как же с этим бороться?
.

Есть несколько простых правил:
.
1) Пароль пользователя должен содержать цифры, буквы в разном регистре и спец символы. Кончено заставить пользователей это сделать - не реально. Но у нас есть соль. И она должна содержать спец символы.
.
2) Использование разных алгоритмов хеширования. Не нужно зацикливаться на одном md5.  Есть куча других алгоритмов, даже если вы думаете, что они не надёжны - оборачивайте их в md5!
.
3) Хеширование пароля должна быть максимально медленной. Используйте медленные алгоритмы, например md2. Но так как он не надёжен - оборачивайте его в так полюбившийся всем md5. Перебор 1000 паролей на компьютере средней мощности должен занимать больше 1 секунды.
.
4) И, в продолжение п.1, в комментариях подсказывают, что соль должна содержать все символы x00-xFF. С такой солью брут будет длиться много дольше, особенно, если она не известна.
.
5)  Сделайте модуль для веб-сервера, который хеширует пароль. Даже имея доступ к вашей базе и файлам, при грамотной настройке прав - до модулей злоумышленник не доберётся.
.
Итак, использование этих простых советов поможет вам сохранить пароли ваших пользователей.