Распределение символов в паролях / Хабр
Dr. Colin Gillespie
Как известно, в последнее время Sony выступает мальчиком для битья среди хакеров. Благодаря Sony, много учетных записей и паролей циркулируют в интернете. Недавно, Трой Хант провел небольшой анализ этих паролей. Вот выдержка его поста:
- Из примерно сорока тысяч паролей, треть подвержена простой атаке по словарю.
- Только один процент паролей содержал небуквенно-цифровые символы.
- 93 процента паролей содержали от 6 до 10 символов.
В этом посте, мы исследуем остальные 24 тысячи паролей, которые выдержали атаку словарем.
Распределение символов
Как отмечает Трой, абсолютное большинство паролей содержало только один тип символов — или все в нижнем регистре, или все в верхнем. Однако, всё даже хуже, если мы рассмотрим частоту символов. В базе паролей существуют 78 уникальных символов. Если эти пароли были бы по настоящему случайными, каждый символ должен встречаться с вероятностью 1/78 = 0,013. Но, когда мы посчитаем реальную частоту символов, мы явно увидим, что распределение не случайное. Следующий график показывает топ 20-ти парольных символов, а красная линия показывает ожидаемое 1/78 распределение. Неудивительно, что гласные «e», «a» и «o» очень популярны, а также цифры «1», «2» и «0» (в этом порядке). Заглавные буквы не входят в топ двадцатку. Мы также можем построить график суммарной вероятности для символов. В этом графике, красные точки показывают ожидаемый паттерн при использовании настоящих случайных паролей (ссылка на график побольше). Ясно, что пароли не так случайны как бы хотелось.
Порядок символов
Давайте рассмотрим порядок символов в пароле. Для простоты возьмем только 8-символьные пароли. Самая популярная цифра в пароле это «1». Если бы её расположение было случайным, то мы бы ожидали равномерное распределение. Но вместо этого мы получаем:##Distribution of "1" over eight character passwords
0.06 0.03 0.04 0.04 0.13 0.13 0.22 0.34
Из этого следует, что из 84 процентов паролей, которые содержат цифру «1», эта цифра случается только во второй половине пароля. Ясно, что люди любят ставить единицу в конце пароля. Та же картина с цифрой «2»: 0.05 0.05 0.04 0.05 0.13 0.11 0.30 0.27
И с «!» #Small sample size here
0.00 0.00 0.00 0.00 0.00 0.11 0.16 0.74
Мы наблюдаем похожие паттерны и с остальными буквенно-цифровыми символами.
Число символов необходимых для угадывания пароля
Предположим, мы соберем все возможные пароли используя первые N самых популярных символов. Сколько паролей мы покроем в нашей выборке? Следующий график показывает пропорцию паролей покрытых в нашем списке используя первые N символов: Для покрытия 50% паролей в списке, нам понадобилось 27 первых символов. Собственно, использование только 20 символов покрывает около 25% паролей, а использование 31 символа покрывает 80% паролей. Помните, что эти пароли не поддались
атаке по словарю.
Итог
Обычно, когда мы подсчитываем вероятность угадывания пароля, мы предполагаем, что каждый символ выбирается с одинаковой вероятностью, то есть вероятность выбора «e» равна выбору «Z». Это явно неверно. Также, в последнее время много систем заставляют пользователей выбирать различные типы символов в паролях. А это так просто добавить циферку в конец. Я не хочу рассматривать эффективные техники подбора паролей, но понятно, что брутфорс не тот метод. Лично, я забросил попытки запомнить пароли давным давно и просто использую менеджер паролей. Например мой WordPress пароль длинее 12-ти символов и состоит из совершенно случайных цифр, букв и спец. символов. Конечно, вам лишь нужно держать свой менеджер паролей защищенным…От переводчика: Да, я таки попал в категорию людей приписывающих единички и восклицательные знаки для обхода настырных сайтов. Sad but true.
56