Такой неполный полный перебор

3 января, 2023, Oleg Afonin
Рубрика: «Разное»
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Из множества методов восстановления паролей полный перебор — наименее эффективный. Почему же мы продолжаем рассказывать о методе полного перебора? Дело в том, что именно скорость полного перебора позволяет оценить как время, потребное для гарантированного восстановления пароля той или иной сложности, так и оборудование, необходимое для гарантированного восстановления в течение заданного временного промежутка. Что означают цифры? Миллион паролей в секунду — много это или мало? И как быстро, в конце концов, вы сможете взломать этот пароль? Об этом и многом другом — в сегодняшнем материале.

Полный перебор, или «метод грубой силы»

Полный перебор всего пространства возможных паролей — самый простой и оттого популярный метод криптографического анализа. Посредством полного перебора можно взломать принципиально любой пароль. Единственное ограничение – время, в течение которого должен быть восстановлен доступ к данным.

Основная идея метода полного перебора проста: в качестве потенциальных паролей опробуются все возможные комбинации указанных символов. В качестве указанных символов могут использоваться буквы (в том числе из национальных алфавитов), цифры и специальные символы. Весьма часто ограничения на использованные символы накладывается на стороне приложения или сервиса — к примеру, позволяется использовать исключительно буквы латиницы, цифры и ограниченный набор специальных символов. В то же время политики безопасности могут диктовать минимальную длину пароля и обязательное использование тех или иных элементов (например, как минимум одной заглавной буквы, цифры или специального символа).

Простейшие математические вычисления позволяют точно узнать максимальную продолжительность атаки: время, за которое можно перебрать всё пространство паролей заданной длины. Формула включает число возможных символов, из которых состоит пароль, которое возводится в степень количества знаков в пароле. Так, если в качестве возможных символов используются только буквы английского алфавита (их 26), причём как строчные, так и прописные (это ещё 26), а длина пароля — 5 знаков, то возможное число комбинаций будет таким:

(26 + 26) ^ 5 = 380,204,032

Цифры экспоненциально увеличиваются с увеличением длины пароля. Например, для 7-значных паролей одного типа общее количество составляет:

(26 + 26) ^ 7 = 1,028,071,702,528

При добавлении чисел и специальных символов из расширенного диапазона число возможных комбинаций превышает возможности метода прямого перебора:

(26 + 26 + 10 + 33) ^ 7 = 69,833,729,609,375

Чтобы узнать максимальное время, в течение которого будет гарантированно найден пароль заданной длины, достаточно разделить число комбинаций на скорость перебора для заданного типа файлов средствами доступного аппаратного обеспечения. Например, если скорость перебора на компьютере для файла составит 10 миллионов комбинаций в секунду, на восстановление пароля из первого примера (5 букв, оба регистра) уйдёт не более пяти минут. Если скорость составляет 100 паролей в секунду (например, вы пытаетесь взломать зашифрованный последней версией Microsoft Office документ без использования GPU), а пароль содержит не менее 7 символов из расширенного диапазона, то максимальное время атаки увеличивается примерно до 700 миллиардов секунд или ~ 22 тысяч лет.

Основная сложность в переборе паролей в том, что в ряде случаев ни длина пароля, ни наборы использованных символов заранее неизвестны, поэтому приходится либо пробовать все возможные комбинации, либо использовать альтернативный подход. В то же время нужно понимать, что все альтернативные способы ограничивают исследуемое пространство пароля и могут не обнаружить те или иные пароли, если они не укладываются в заданные условия. Такие методы атаки используются для того, чтобы в ускоренном режиме опробовать наиболее вероятные с точки зрения эксперта пароли.

Всегда ли можно найти пароль полным перебором?

Предположим, что в нашем распоряжении достаточно времени и условно бесконечные вычислительные ресурсы. Означает ли это, что методом полного перебора рано или поздно мы точно найдём любой пароль? Казалось бы, ответ положительный, но вспомним, что «все альтернативные способы ограничивают исследуемое пространство пароля и могут не обнаружить те или иные пароли, если они не укладываются в заданные условия». А метод полного перебора — не ограничивает?

Оказывается, ограничивает, а в реальных приложениях для восстановления паролей «полный» перебор — не такой уж и полный. К примеру, в большинстве программ, работающих с алфавитами на основе латиницы, в качестве набора символов, по которому осуществляется перебор, используются прописные и заглавные буквы латинского алфавита (реже — с дополнительными буквами из различных европейских языков), цифры и очень ограниченный набор специальных символов. А если пользователь, к примеру, носитель языка панджаби, на котором говорит 125 миллионов человек? А если он из Китая, и в пароле может встретиться любой из доступных иероглифов, у которых даже точное число неизвестно, но уже превышает 100,000? А если он просто ввёл комбинацию из набора символов Unicode, удерживая клавишу Alt и воспользовавшись цифровой клавиатурой — например, ☼ (0x263C)?

К слову, в своей актуальной 15-й версии стандарт Unicode определяет 149,186, и доступный набор постоянно расширяется.

В любом из этих случаев атака «полным перебором» не приведёт к положительному результату: нужных символов просто не окажется в том наборе, на основе которого запускается перебор.

А если запустить атаку по всем 149,186 символам Unicode? Боюсь, в этом случае не помогут даже условно бесконечные вычислительные ресурсы: пароль даже из 6 символов, хотя бы один из которых выбивается из стандартного ряда, потребует 149186^6 операций, что приблизительно составляет 11e30, или 11 нониллионов (плюс-минус несколько сотен тысяч октиллионов). Такое количество паролей не обсчитает и всё существующее на планете «железо».

А действительно ли в пароле может оказаться любой из 149,186 символов стандарта Unicode? Здесь тоже ответ — отрицательный. Ряд специальных символов (например, перевод строки) не может использоваться в составе паролей в принципе, а ряд приложений и вовсе ограничивает пароли символами ASCII. В то же время многие приложения позволяют использовать большую часть из набора символов Unicode, причём для одного и того же формата файла, сохранённого в разных приложениях (а иногда и в разных версиях одного приложения) могут действовать разные ограничения. Как правило, из документации к соответствующему продукту можно заранее узнать возможные наборы символов, из которых может быть составлен пароль для различных форматов файлов. Для примера, вот выдержка из документации к операционной системе Windows 10, пароль к учётным записям которой может быть составлен из символов следующих множеств:

  • Буквы верхнего регистра европейских языков (от A до Z, буквы с диакритическими знаками, греческие и кириллические знаки)
  • Буквы нижнего регистра европейских языков (от a до z, эсцет, буквы с диакритическими знаками, греческие и кириллические знаки)
  • Базовые 10 цифр (от 0 до 9)
  • Не буквы и не цифры (специальные символы): (~!@#$%^&*_-+=`|\(){}[]:;»‘<>,.?/) Символы валют, такие как евро или фунт стерлингов, не считаются специальными символами для этого параметра политики.
  • Любой символ Юникода, классифицируемый как цифра или буква, но не в верхнем или нижнем регистре. Эта группа включает символы Юникода из азиатских языков.

Вопрос к внимательному читателю: каков размер множества символов, из которых может состоять пароль к учётной записи Windows 10?

Пароли и «умные» атаки

Общее число паролей, которое необходимо проверить в процессе атаки, зависит как от длины и сложности самого пароля, так и от криптографической стойкости конкретного формата данных, определяющей скорость перебора на заданном оборудовании. Криптографическая стойкость в современных приложениях может отличаться на несколько порядков:

Как видно из графиков, при использовании одинаковой аппаратной конфигурации скорость перебора самого стойкого формата на графике на три порядка (в тысячу раз!) ниже, чем скорость перебора паролей менее стойких. К примеру, скорость перебора паролей к зашифрованным документам Microsoft Office 2013 порядка 7000 паролей в секунду при условии использования аппаратного ускорителя. 7000 паролей в секунду — это много или мало? Попробуем разобраться.

Воспользовавшись услугами одного из калькуляторов стойкости паролей, рассчитаем число возможных комбинаций у паролей различной длины и сложности. Простейший пароль, составленный из 6 букв нижнего регистра (только латиница), потребует перебора 309 миллионов комбинаций. На видеокарте NVIDIA GTX 1080 можно перебирать такие пароли со скоростью 7100 паролей в секунду для формата Microsoft Office 2013; соответственно, восстановление такого пароля займёт максимум 12 часов. Однако даже такой простой пароль, если в нём будет 8 символов, состоит из 2.8 триллионов возможных комбинаций, перебор которых займёт 12.5 лет.

Таким образом, получаем следующие реальные скорости атак:

В секунду В час За сутки
MS Office 2013 7100 25,560,000 613,440,000
Какой пароль можно восстановить 2-3 символа 4 символа (буквы и цифры) 5 символов (буквы и цифры) (с трудом)

Таким образом, время, потребное на восстановление того или иного пароля, зависит не только от длины и сложности пароля и мощности аппаратного обеспечения, но и от того, насколько криптографически стойким является тот или иной формат.

Разумеется, никто не станет тратить месяцы и годы на полный перебор всего пространства паролей. Вместо этого возможное пространство паролей ограничивают тем или иным образом — например, используя список уже известных паролей пользователя или список из 10,000 самых распространённых паролей. В ряде случаем используются обычные словари.

От чего ещё зависит скорость восстановления пароля?

Посмотрим на графики ещё раз:

Как видим, скорость перебора (а, следовательно, и скорость атаки) в основном зависит от двух факторов: криптографической стойкости конкретного формата (в первом приближении — число операций, необходимое для проверки пароля) и скорости аппаратного обеспечения. Однако есть и ещё один фактор, определяющий скорость атаки. Это — используемое для перебора программное обеспечение. В разных продуктах скорость атаки на тот или иной формат может отличаться в разы, а в некоторых случаях (возможность или невозможность использования аппаратного ускорения) — на порядке. В наших тестах мы пользуемся продуктом Elcomsoft Distributed Password Recovery собственной разработки.

Формат данных

Что же касается формата данных, то значение имеет не только формат файла, но даже версия приложения, в которой этот файл был сохранён. Сравним, к примеру, стойкость шифрования резервных копий устройств под управлением iOS.

  • iOS 9 (CPU): 2,400 паролей в секунду (Intel i5)
  • iOS 9 (GPU): 150,000 паролей в секунду (NVIDIA GTX 1080)
  • iOS 10.0 (CPU): 6,000,000 паролей в секунду (Intel i5)
  • iOS 10.2+ (CPU): 0.05 паролей в секунду (или 5-6 в минуту) (Intel i5)

В 2016 году мы обнаружили ошибку в алгоритме шифрования резервных копий, созданных устройствами под управлением iOS 10. Допущенная разработчиками Apple позволила перебирать пароли со скоростью порядка шести миллионов паролей в секунду силами только центрального процессора, без помощи со стороны аппаратного ускорителя. После того, как мы опубликовали информацию об ошибке, Apple быстро исправили уязвимость, а в iOS 10.2 настолько ужесточили требования к безопасности, что скорость перебора паролей снизилась до 5-6 паролей в минуту (на CPU) или единиц паролей в секунду с использованием GPU. Таким образом, метод полного перебора полностью потерял актуальность, если речь идёт о паролях длиннее 2-3 символов.

Другой пример. Разработчики Microsoft постепенно усиливают стойкость защиты файлов, сохраняемых новыми версиями Microsoft Office: если файлы, сохраняемые Office 97-2000, можно было вскрыть практически моментально, то для уже в версии Office 2010 защита стала куда более стойкой, а документы Office 2013 и вовсе требуют кропотливой работы. В то же время пароли к документам OpenOffice можно перебирать со скоростью порядка миллиона паролей в секунду (на GPU).

6 знаков, нижний регистр 6 букв+цифр, оба регистра 7 знаков, нижний регистр 7 букв+цифр, оба регистра 8 знаков, нижний регистр 8 букв+цифр, оба регистра
MS Office 2013, CPU 119 дней 60 лет 8.5 лет 3700 лет 220 years вечность
MS Office 2013, GPU 0,5 дня 3 мес 2 нед 16 лет 1 год 975 лет
RAR5, CPU 56 дней 28 лет 4 года 1744 лет 103 года вечность
RAR5, GPU 2 часа 26 дней 4 дня 4.4 лет 3 мес 273 года
BitLocker, CPU 5 лет 900 лет 127 лет вечность 3300 лет вечность
BitLocker, GPU 4 дня 2 года 3.6 мес 130 лет 7.7 лет вечность

Такая скорость означает, что если пароль, состоящий из 6 букв одного регистра, можно восстановить методом полного перебора за полдня, то пароль из 6 букв (в обоих регистрах) и цифр уже потребует 3 месяцев работы. Для более сложных паролей «умные» атаки и использование графических ускорителей являются обязательными условиями. Для взлома длинных и сложных паролей рекомендуются распределённые атаки.

Если же в пароле попадаются специальные символы или символы Unicode, то время подбора пароля превысит любые разумные сроки. Вы можете убедиться в этом, попробовав пароли разной длины и сложности:

Password Meter — A visual assessment of password strengths and weaknesses (uic.edu)

И последняя небольшая иллюстрация — пароль, состоящий из одного-единственного символа.

  • Только цифры: 10 возможных вариантов
  • Буквы латиницы в одном регистре: 26 вариантов
  • Буквы латиницы в одном регистре + цифры: 36 вариантов
  • Буквы латиницы в обоих регистрах + цифры: 62 варианта
  • По же плюс специальные символы: 95 вариантов

Для того, чтобы вычислить число вариантов, возможных для пароля заданной длины и сложности, число возможных для использования символов возводится в степень длины пароля. К примеру, для цифрового пароля, состоящего из двух знаков, значение будет 10^2 = 100 вариантов. Пароль, состоящий из 6 символов латинского алфавита в единственном регистре, будет иметь 26^6 = 308,915,776 возможных комбинаций.

Заключение

Существуют различные методы, которыми можно получить доступ к зашифрованным данным, и восстановление установленного пользователем пароля – лишь один из них. Атака на пароль с использованием метода полного перебора — крайняя мера, к которой имеет смысл прибегать лишь после того, как были исчерпаны все остальные возможности.

О каких «остальных» возможностях речь? В первую очередь — о словарных атаках, в которых используются как ранее найденные пароли самого пользователя (если таковые были обнаружены), так и пароли, использующиеся другими пользователями в интернете — например, словарь, составленный из 10,000 часто используемых паролей. Если это не поможет, используются словари естественных языков. В наших условиях это — словари английского и русского языков, а также словари, использующие различные правила транслитерации, в том числе и такие, в которых слова на русском языке набираются на клавиатуре с международной раскладкой. Где взять подобные словари? Часть из них входит в состав Elcomsoft Distributed Password Recovery, а часть можно приобрести отдельно у нас на сайте.


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

REFERENCES:

Elcomsoft Distributed Password Recovery

Производительное решение для восстановление паролей к десяткам форматов файлов, документов, ключей и сертификатов. Аппаратное ускорение с использованием потребительских видеокарт и лёгкое масштабирование до 10,000 рабочих станций делают решение Элкомсофт оптимальным для исследовательских лабораторий и государственных агентств.

Официальная страница Elcomsoft Distributed Password Recovery »

НАШИ НОВОСТИ