Пароли для профессионалов
Данная статья есть попытка собрать на одной страничке все самое главное об особенностях паролей, их применении, выборе, хранении. О многом здесь можно расписывать подробнее, но врядли стоит. Опыта каждый все равно набирается сам, а вехи "где копать" здесь как раз и обозначены.
Вещи, которые все знают, но не всегда вспоминают
Пароль - это просто набор символов. Чаще всего у системы нет другого способа узнать вас, кроме как по паролю. Значит кто угодно может ввести правильный пароль и получит соответствующие полномочия.
Пароль может быть узнан, угадан или подобран. Добавьте возможность в некоторых случаях обойти систему защиты из-за слабостей примененного алгоритма, ошибок в реализации, backdoor'ов и получите полный список того чего следует опасаться.
Например, пароли на отшаренные ресурсы в Windows-9x можно было подбирать посимвольно! Надо ли объяснять как это упрощало их подбор злоумышленником?От слабостей алгоритма и ошибок програмного обеспечения вариантов защиты только два. Если есть исправляющий положение патч - ставить, если его нет - не пользоваться слабой системой. Есть очень редкий третий вариант, когда исходники открыты и вы в состоянии сами написать такой патч. Те кто это может, обычно не нуждаются в напоминании связаться с авторами, чтобы исправления были внесены в репозитарий разработки.
С течением времени ясно прослеживается тенденция к тому, что дыр становится все меньше. Сегодня взломы из-за плохо выбранного или плохо сохраняемого в тайне пароля происходят намного чаще чем из-за неправильной конфигурации или ошибок програмного обеспечения.Вот три способа ломать парольную защиту, когда ее нельзя обойти, воспользовавшись несовершенством системы. Именно в этих трех направлениях нужно думать, выбирая и храня пароль. А также читая дальше эту статью. Здесь все зависит не от далеких разработчиков, а от пользователя. От нас. От вас.
Длина имеет значение
Две главных характеристики пароля - количество символов (длина) и количество вариантов символа в каждой позиции (алфавит).
Как известно из комбинаторики общее количество возможных паролей при заданной длине(L) и алфавите(A) вычисляется как (A**L). A в степени L. Время(T) за которое пароль заданной длины будет гарантированно подобран методом Грубой силы меньше или равно (A**L)/V, где V - скорость перебора. Итак, мы можем записать T<=(A**L)/V. Эту формулу обычно называют формулой Андерсона. Следующая таблица вычислена по этой формуле и наглядно демонстрирует зависимости указанных величин.
алфавит | 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 лет |
Можно сделать вывод что, как и ожидалось от степенной, быстрорастущей функции, увеличение длины пароля всего на 2 символа дает в 500 раз (2661/5.32) больше вариантов, чем увеличение алфавита на 18 символов (с 62 до 80).
Если вы внимательно ознакомитесь с краткой таблицей заповедей по выбору пароля, то заметите, что в ней нет обычной рекомендации использовать символы кроме больших и малых латинских букв и цифр. Я советую создавать более длинные пароли, чем включать в них спецсимволы. Такие как .,:;()[]{}#$%
Действительно "как правило" спецсимволы в пароле не доставляют хлопот. По крайней мере программисту. Пароль пожалуй единственная, введенная пользователем информация, которую программисты веб-сервисов могут не фильтровать на наличие нежелательных символов. Весь остальной пользовательский ввод обязан фильтроваться. Об этом уже столько раз говорилось, что хочется попросить прощения за повторение.
Я предпочитаю сделать пароль чуть длиннее, и при этом на "нормальном" парольном алфавите - 62 символа. Почему? Пароли не стоит произносить, но произносимость влияет на запоминаемость. А спецсимволы произносимость снижают.
Кроме того бывает что мы в жизни попадаем на нестандартные клавиатуры. Сколько времени понадобиться юзеру, чтобы найти где точка на французской клавиатуре? Считайте что все кто это видит тут же приметят в какой позиции у него точка. В этом случае фактически длина пароля сократится на один символ! А как показывают расчеты лучше "потерять" кусок алфавита, чем сократить длину пароля.
Очень важно отметить что привычное место знака равно в указанной формуле по праву занимает оценка меньше или равно. Предположим злоумышленник как-либо узнал, что ваш пароль 9 символов в длину, и собирается последовательно перебрать все комбинации: aaaaaaaaa, aaaaaaaab, aaaaaaaac и так далее до zzzzzzzzz. Что будет если ваш пароль действительно aaaaaaaaa? Он найдется сходу! Не надо думать что в таком случае самый выгодный пароль zzzzzzzzz, так как он будет попробован последним. Алгоритм подбора легко изменить и возможно злоумышленник как раз начнет с конца.
Он может начать и с середины. Точек старта может быть много, если вычисление будет вестись на многопроцессорной системе или кластере в несколько потоков. Поэтому каждый символ пароля следует выбирать случайным образом и надеяться, что он окажется достаточно далеко от точки старта алгоритма перебора. Помните, время в указанной формуле обычно всегда меньше вычисленного в правой части. Вычисленное есть время гарантированного нахождения пароля. За это время будут перебраны все возможные комбинации.
Скорость перебора
Скорость перебора может сильно различаться для разных случаев. Об этом будет сказано подробнее ниже в разделе, посвященном местам применения паролей. Не буду приводить аналогичные таблицы для других скоростей. Так как зависимость линейная каждый может легко пересчитать указанные времена на свою скорость.
Например в случае если скорость перебора 1,000 паролей в секунду времена в таблице надо умножить на 10,000. Если скорость перебора 15 млн. паролей в секунду, указанные времена нужно поделить на 1.5. К счастью скорости перебора в 100 млн. паролей в секунду на сегодняшнем оборудовании не встречаются. Так что сокращение максимального время нахождения пароля на порядок от указанного в таблице уже невозможно.
"К счастью" потому что все-таки парольные системы призваны защищать. Такие большие времена взлома будут вам очень не к счастью если вы забудете пароль к собственным данным.Если злоумышленник не может предположить длину вашего пароля и вынужден будет перебирать все варианты паролей длиной скажем от 5 до 8 символов, то время такого полного перебора очевидно может быть оценено как сумма времен перебора 5-ти, 6-ти, 7-ми, и 8-ми символьных паролей. Из таблицы времен видно, что главное слагаемое в этом ряду - время перебора паролей максимальной выбранной длины. Остальные слагаемые иногда пренебрежимо малы.
Если вы сами окажетесь в роли злоумышленника, например забыв стойкий пароль на собственный архив, то затратив 252 суток и 17 часов на перебор всех 8 символьных паролей, вы без труда потратите еще 95 минут, на перебор всех 6 символьных. Кстати ситуация вполне реальна. На Zip архивах последних версий нет возможности обойти шифрование, а скорость полного перебора как раз 10 - 15 млн. паролей в секунду. 250 дней на восстановление забытого пароля... Не дай вам бог забыть стойкий пароль. А не стойкие вы не должны использовать.
Генераторы паролей, запоминаемых и нет
Не следует ожидать что запоминаемые пароли будут также произносимы и привычны как обычные слова. Однако если сравнивать их с тем что генераторы дают в случайных, незапоминаемых паролях, то запоминаемые конечно "приятнее".Не стоит забывать и о главном генераторе паролей - собственной голове. Вещь незаменимая в хозяйстве, но иногда глючная. Один раз в жизни мы с другом уже придумывали пароль, глядя на вещи в комнате, смешивая названия. Нам казалось что не забудем никогда. Как назло этим паролем мы зашифровали rar-архив. Когда через пару месяцев нам понадобилось его расшифровать... Пароль вспомнился только чудом и путем невероятного мозгового штурма.
Вообще смешивать слова - хорошая идея. Если делать это вдумчиво, не спеша, подгоняя под себя, то можно получить действительно легкозапоминаемый, но трудноподбираемый пароль. Как раз для частого использования в качестве пароля на локальную систему или парольный менеджер. Именно, эти пароли обязаны не забываться.
Смешивать слова для получения пароля нужно не по слогам, или не всегда по слогам. Иначе такой пароль может подобраться по модифицированному словарю, полученному, путем перебора комбинаций слогов словарных слов. Такой словарь хотя и будет больше обычного, но количество слов в нем будет относительно невелико.Так как пароли необходимо набирать быстро, чтобы никто не подсмотрел, можно потребовать от генератора паролей оптимизации для быстрого набора. Однако в перечисленных генераторах, такая опция мне не попадалась. Кроме того просто чередовать в пароле символы с разных сторон клавиатуры может оказать не всегда удобно.
Я считаю что тут лучше всего может помочь ручная оптимизация. Возьмите пароль, пусть даже сгенерированный автоматом. Попробуйте понабирать его. Посмотрите насколько он запоминаемый для вас. Оптимизируйте - поменяйте несколько символов. В конце концов не так много паролей требуют такой оптимизации. Только по "Схеме" часто используемые, самые важные.
Статья взята с сайта www.phormula.nm.ru