Привет, хабр! Сегодня процессе разработки системы авторизации для своего проекта передо мной встал выбор — в каком виде хранить пароли пользователей в базе данных? В голову приходит множество вариантов. Самые очевидные:
- Хранить пароли в БД в открытом виде.
- Использовать обычные хэши crc32, md5, sha1
- Использовать функцию crypt()
- Использовать статическую «соль», конструкции вида md5(md5($pass))
- Использовать уникальную «соль» для каждого пользователя.
Читать дальше →
Здесь я постараюсь собрать воедино и проанализировать всю информацию о пользовательских паролях на различных ресурсах.
Пароль [parole] — это секретное слово или набор символов, предназначенный для подтверждения личности или полномочий. Пароли часто используются для защиты информации от несанкционированного доступа. В большинстве вычислительных систем комбинация «имя пользователя — пароль» используется для удостоверения пользователя.
Sony Pictures database
Исследование Троя Ханта, который взял за предмет своих изысканий, базу пользователей Sony Pictures, стоит отметить, что все пароли хранилась в открытом виде. А дальше он проанализировал пользовательские пароли. Вот такие результаты у него получились.
Длина пароля
Как мы видим, основное количество паролей с диной от 6 до 10 символов. При этом у половины он менее 8 символов.
Используемые символы
1% - только буквы верхнего регистра
4% - только цифры
45% - только буквы нижнего регистра
50% - другие варианты
Криптографическая стойкость пароля определяется вариацией букв различных регистров + цифры + спец. символы * длина пароля. На данном примере мы можем наблюдать, что используются пассы одного типа.
Читать дальше →