http://pasw.ru/ писал(а):
1. -POlqIIzJz)}f~x2. XGb!dF0bU%t+]=t
3. >,XD7s<H)/MN!nR
4. KZVrp№(b8ql859"
5. KSYdOOvmJmC8+qZ
6. )*:>5qGWwE8WAvo
7. N\KS;y6OtG,+hG;
8. Fq.hKmci.L%S(V:
9. u1DvJ%v>aimy*pg
10. b2qF/S~iz0J]VKM

Две главных характеристики пароля - количество символов (длина) и количество вариантов символа в каждой позиции (алфавит).
Как известно из комбинаторики общее количество возможных паролей при заданной длине(L) и алфавите(A) вычисляется как (A**L). A в степени L. Время(T) за которое пароль заданной длины будет гарантированно подобран методом Грубой силы меньше или равно (A**L)/V, где V - скорость перебора. Итак, мы можем записать T<=(A**L)/V. Эту формулу обычно называют формулой Андерсона. Следующая таблица вычислена по этой формуле и наглядно демонстрирует зависимости указанных величин.
Время полного перебора всех возможных паролей заданного алфавита при скорости перебора 10,000,000 паролей в секунду
алфавит | 6 символов | 8 символов | 10 символов | 12 символов |
26 (латиница все маленькие или все большие) | 31 сек | 5 часов 50 мин | 163.5 суток | 303 года |
52 (латиница с переменным регистром) | 33 мин | 62 суток | 458 лет | 1,239,463 года |
62 (латиница разного регистра плюс цифры) | 95 мин | 252 суток 17 часов | 2,661 год | 10,230,425 лет |
68 (латиница разного регистра плюс цифры плюс знаки препинания .,;:!?) | 2 часа 45 мин | 529 суток | 6703 года | 30,995,621 лет |
80 (латиница разного регистра плюс цифры плюс знаки препинания .,;:!? плюс скобки а алфавите 80 (все символы плюс не буквенно-цифровые) будут перебраны за 5 лет и 4 месяца. В то же время все варианты 10 символьного пароля на алфавите "только буквы", будут перебираться без малого в сто раз дольше - 458 лет. Если добавить цифры, то и вовсе 2,661 год.
Можно сделать вывод что, как и ожидалось от степенной, быстрорастущей функции, увеличение длины пароля всего на 2 символа дает в 500 раз (2661/5.32) больше вариантов, чем увеличение алфавита на 18 символов (с 62 до 80).
Если вы внимательно ознакомитесь с краткой таблицей заповедей по выбору пароля, то заметите, что в ней нет обычной рекомендации использовать символы кроме больших и малых латинских букв и цифр. Я советую создавать более длинные пароли, чем включать в них спецсимволы. Такие как .,:;()[]{}#$%
Действительно "как правило" спецсимволы в пароле не доставляют хлопот. По крайней мере программисту. Пароль пожалуй единственная, введенная пользователем информация, которую программисты веб-сервисов могут не фильтровать на наличие нежелательных символов. Весь остальной пользовательский ввод обязан фильтроваться. Об этом уже столько раз говорилось, что хочется попросить прощения за повторение.
Я предпочитаю сделать пароль чуть длиннее, и при этом на "нормальном" парольном алфавите - 62 символа. Почему? Пароли не стоит произносить, но произносимость влияет на запоминаемость. А спецсимволы произносимость снижают.
Кроме того бывает что мы в жизни попадаем на нестандартные клавиатуры. Сколько времени понадобиться юзеру, чтобы найти где точка на французской клавиатуре? Считайте что все кто это видит тут же приметят в какой позиции у него точка. В этом случае фактически длина пароля сократится на один символ! А как показывают расчеты лучше "потерять" кусок алфавита, чем сократить длину пароля.
Очень важно отметить что привычное место знака равно в указанной формуле по праву занимает оценка меньше или равно. Предположим злоумышленник как-либо узнал, что ваш пароль 9 символов в длину, и собирается последовательно перебрать все комбинации: aaaaaaaaa, aaaaaaaab, aaaaaaaac и так далее до zzzzzzzzz. Что будет если ваш пароль действительно aaaaaaaaa? Он найдется сходу! Не надо думать что в таком случае самый выгодный пароль zzzzzzzzz, так как он будет попробован последним. Алгоритм подбора легко изменить и возможно злоумышленник как раз начнет с конца.
Он может начать и с середины. Точек старта может быть много, если вычисление будет вестись на многопроцессорной системе или кластере в несколько потоков. Поэтому каждый символ пароля следует выбирать случайным образом и надеяться, что он окажется достаточно далеко от точки старта алгоритма перебора. Помните, время в указанной формуле обычно всегда меньше вычисленного в правой части. Вычисленное есть время гарантированного нахождения пароля. За это время будут перебраны все возможные комбинации.