Ответы На Острые Вопросы о <s>Взломе</s> Восстановлении Паролей

Больше 20 лет мы делаем программы для восстановления паролей. И всё это время получаем похожие вопросы не совсем о наших программах:

Ответы на них взаимосвязаны. Давайте разбираться как.

Взлом пароля – это законно?

Пароля к чужому документу? Разумеется нет!

Как и другие несанкционированные проникновения, взлом паролей к чужим файлам и доступ к данным, хранящимся в них, противозаконен. Мы предупреждаем об этом в лицензии к нашим программам, производители защиты борются со взломом по-своему – замедляют (иногда драматически) проверку паролей.

Взлом чужих паролей – это незаконно. Восстановление собственных утраченных паролей (и чужих паролей при расследовании преступлений) – да, вполне.

Взлом пароля или восстановление пароля. В чем разница?

Взлом стойкой защиты сегодня – это перебор паролей.

Это как будто вы сидите, вводите все-все варианты один за другим и смотрите, откроется ли файл. Только за вас это делает программа со скоростью десятки-сотни-тысячи-миллионы-миллиарды паролей в секунду.

Такой перебор паролей называется «атака грубой силы».

Сколько придётся ждать успеха, зависит от двух факторов: количества вариантов для проверки и скорости самой проверки.

Смотрите, чем больше алфавит, который может составлять пароль, тем больше количество вариантов для проверки. А с увеличением длины пароля, количество вариантов растёт в геометрической прогрессии:

кол-во_вариантов = длина_алфавитадлина_пароля

Например, пароль длиной 1 символ из только прописных букв латиницы – это 261=26 вариантов. Пароль длиной 2 символа – это 262=676. Три – уже 263=17576 и т.д

Пароль длиной 1 символ из прописных и строчных букв латиницы – это уже 26*2=521=52 варианта для проверки, а пароль длиной три символа уже 523=140608 и т.д.

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

Расчёт количества вариантов паролей в Passcovery Suite
Зависимость количества вариантов паролей от настроек алфавита и длины пароля

Ну хорошо, с настройками составления пароля и количеством вариантов определились. Давайте взламывать! Когда будет результат?

Плохие новости – ожидание затянется. Серьёзно затянется…

Я уже говорил, что производители защиты по-своему борются со взломом парольной защиты. Например, замедляют проверку пароля.

Чаще всего, эта задержка незаметна (а может даже и полезна – ого, как надёжно всё шифруется, раз требует времени!), когда вы вводите один правильный пароль, но она здорово замедляет скорость перебора всех подряд паролей.

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

Вроде всё просто. Слишком просто. И слишком быстро. Неприемлемо быстро! (Вот Adobe с защитой в Adobe Acrobat 9 в курсе 😜)

Поэтому алгоритм хеширования не сразу отдаёт ключ шифрования. Сначала он хеширует сам ключ. Потом ещё раз. И ещё раз. И ещё. И ещё… И так сотни, тысячи и даже десятки тысяч раз! Этот трюк называется «растяжение ключа». Он прост, но весьма эффективен в замедлении массовой проверки паролей.

Маленькая задержка при проверке одного пароля превращается в годы ожидания при проверке миллиардов паролей.

Например, Apple, с выпуском iOS 10.2 уничтожила вероятность взлома паролей к файлам резервных копий, установив 10 000 000 (десять миллионов!) итераций хеширования. Скорость перебора паролей упала почти до нуля, а GPU ускорение стало бесполезным.

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

Другое дело восстановление собственных паролей.

Как правило, забытый пароль – это не результат полной амнезии и «чистого листа». Пароль, его структура, слова, его составляющие, крутятся в голове. Верный пароль маячит, где-то на грани досягаемости. Шелестит в голове своими крылышками, среди похожих. Как ключ от четвёртой комнаты, на пути к философскому камню, перед Гарри Поттером. Надо только протянуть руку и выхватить его из общего роя.

Это и есть суть восстановления пароля и его отличие от взлома: не надо проверять все ключи мира, достаточно отсечь лишнее, ограничить набор только вероятными значениями, по-быстрому их проверить и найти восстановить нужный пароль!

Распространенные и результативные способы восстановления пароля

Умелое манипулирование диапазоном проверки ощутимо сокращает количество вариантов, сохраняет шансы вхождения искомого пароля в массив выделенных значений и приносит результат.

Но это по прежнему атака грубой силы, только по ограниченному набору значений:

Атака грубой силы по маске

Маска – это какая-то известная, фиксированная часть пароля. Она остаётся неизменной на протяжении всей атаки, меняется только неизвестная часть. Не самый частый случай, конечно.

Например, если известно, что пароль начинался с имени «Jack», заканчивался годом его рождения – «56», а в середине были какие-то символы, то маска вида «Jack?????56» позволит проверить все 11-символьные пароли, но только с началом «Jack» и окончанием «56».

Настройки простой маски в Passcovery Suite
Настройка простой маски с известной частью пароля

Атака по позиционной маске

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

Например, если известно, что пароль начинается с какой-то неопределённой заглавной буквы, заканчивается цифрами, а в середине только строчные, то нет смысла проверять массу паролей с другими условиями. Позиционная маска позволит проверить пароли только с такими условиями.

Настройка алфавита и позиционной маски в Passcovery Suite
Настройка алфавита и позиционной маски по известной структуре пароля

Атака по словарю

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

Например, который год подряд, топовое место в рейтинге популярных паролей занимает пароль «1234567890». Отличный же пароль: аж целых 10 (!) символов длиной! Что не так?! 😅

Настройки атаки по словарю Passcovery Suite
Выбор словаря для атаки

Атака по объединённым словарям с мутациями

А что, если объединить несколько слов в один пароль и провести в нём замену символов? Действительно, получится пароль, недостижимо длинный для обычной атаки грубой силы и отсутствующий в словарях. Восстановить его можно, объединяя словарь возможных значений и задавая правила возможных замен/мутаций символов. Программы Пасковери умеют делать такое.

Например, мы описывали историю восстановления пароля к файлу резервной копии Apple iOS 13.x, как раз с похожим случаем. Тогда мы составили список возможных слов, составляющих пароль, добавили мутаций пароля, запустили поиск и успешно восстановили утраченный пароль.

Настройки объединения и мутации словарей в Passcovery Suite
Настройка объединения словарей и замены символов в полученных паролях

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

И всё равно: гарантий восстановить, а тем более взломать хороший качественный пароль не существует (и это здорово, на самом деле: какой смысл в защите, если взломать её может любой, у кого есть компьютер, так ведь?..).

100% гарантий не существует, но всё же успех возможен!

Обладая эффективным инструментом, производительным «железом» и правильными представлениями о пароле, вы обеспечите себе отличные шансы на победу и преуспеете в восстановлении своего утраченного пароля.

denglad Автор: Денис Гладыш, совладелец и руководитель компании Пасковери – поставщика высокоскоростных программных решений с GPU ускорением для восстановления паролей к файлам популярных форматов; автор первых версий программы Accent OFFICE Password Recovery, созданных в 1999 году.