Учёные из академии ВВС США проанализировали возможность подбора пароля по специальному словарю, созданному при помощи графических клавиатурных «паттернов», используемых пользователями для создания надёжного, но легко запоминающегося пароля.
Введение
В настоящее время пароли являются самым часто используемым способом аутентификации пользователей системы. С учётом увеличивающихся возможностей параллельных вычислений потребность в надёжных паролях растёт с каждым днём. В исследовании 2004 года товарищей J. Jan R. Anderson, и A. Grant [1] было доказано, что около трети пользователей используют небезопасные пароли. Помимо этого уязвимый пароль в одном сервисе может компрометировать в других, так как зачастую используется одна и та же парольная фраза. Обычно взлом аккаунтов производится при помощи brute-force атаки (атаки методом грубой силы aka полный перебор), поскольку современные вычислительные мощности компьютеров позволяют достичь скорости подбора, исчисляющейся миллионами паролей в секунду. Чтобы «заставить» пользователей придумывать более сложные парольные комбинации вводятся специальные правила. В основном, в этих правилах указывается какой длины должен быть пароль, необходимость наличия специальных символов, а также проверяется наличие набранного пароля в открытых словарях для брутфорса.
Типичным примером данных правил может служить следующий список:
- Длина пароля должна быть не менее 12 символов
- Должен содержать 2 специальных символа
- Должен содержать 2 цифры
- Должен содержать 2 символа в верхнем регистре
- Пароль не должен содержать слов из словаря известных паролей
Этот набор правил является общим для всех пользователей для того, чтобы никто не создавал слишком простых паролей. С другой стороны, весьма трудно придумать пароль, который одновременно отвечает этим правилам и, который реально запомнить.
Вследствие ужесточения правил создания парольных фраз многие пользователи прибегают к альтернативным методам создания запоминающегося пароля на основе графических клавиатурных паттернов (прим. пер.: графическим клавиатурным паттерном в основном является «соседство» символов на клавиатуре по вертикали, горизонтали и/или диагонали). Примером такого вида паролей является 1qaz!QAZ2wsx@WSX. Хотя на первый взгляд он выглядит достаточно случайным, содержит 16 символов и кажется достаточно надежным, анализ последовательности нажатий клавиш выдаёт довольно простой паттерн.
Понятно, что пользователь выбрал легко запоминающийся пароль, но очевидно, что паттерн начинается с цифры «1», продолжается вниз до буквы «z», затем повторяется с нажатым Shift'ом, а затем повторяется та же техника нажатий для колонки от «2» до «x». В этой статье рассказывается о методе визуализации и развитии эвристического анализа, который позволяет подбирать, на первый взгляд, сложные пароли.
Распространённые атаки на пароли
Есть ряд общих способов вскрытия паролей. В основном это методы, основанные на социальной инженерии (СИ), фишинге, shoulder surfing (подглядывании), кейлогерах, атаках по словарю и атаках методом полного перебора. Целью надежного пароля является защита от атак перебора по словарю, а также увеличение сложности подбора пароля методом полного перебора. Современные системы взлома паролей становятся всё более изощрёнными и сложными, примером может служить наиболее известная утилита «John the Ripper». Функционал Джони позволяет проводить атаки не только методом грубой силы, но и позволяет за счёт расширенных правил генераций автоматически создать набор вариаций общеупотребительных слов, используемых в качестве пароля. Данная практика часто используется пользователями для усиления своих паролей, заменяя буквы на специальные символы или числа. К примеру, кличка вашей любимой собаки Fido модифицируется к чему-то вроде F!D0. Конечно, это увеличивает набор для проверки, но таким образом достигается выход за рамки словаря. Таким образом, такие инструменты как «John the Ripper» позволяют достаточно быстро и просто взломать пароли состоящие из композиции слов, особенно если одно из слов является логином.
Следствием этих достижений во взломе паролей является то, что пользователи, интересующиеся своей безопасностью, мотивированы в создании более сложных паролей. В попытке создать легко запоминающийся, но сложный пароль, пользователи прибегают к использованию паролей на основе клавиатурных паттернов.
Подход
Исследование сосредоточено на способности распознавать клавиатурные графические паттерны. Использовался следующий подход:
- сбор паролей, в том числе тех, которые известно что созданы при помощи клавиатурных паттернов;
- разработка техники визуализации для последующего анализа паролей с целью выделений общих частей паттернов;
- разработка эвристики на основе признанных моделей;
- создание словаря паролей на основе созданной эвристики;
- применение инструмента взлома на реально пароле.
Сбор паролей
Целью сбора являлся большой набор возможных комбинаций паролей. Мы не могли произвести сбор, опираясь на один из словарей, так как нам необходимы были пароли, отвечающие довольно строгим правилам. Для решения это задачи был создано онлайн руководство по созданию паролей. С помощью студентов была собрана большая база паролей, которая и использовалась для последующего анализа.
Одна из статей учебника объясняла концепцию паролей основанных на клавиатурных паттернах и попросили их себе представить. Для достижения цели использовалась система визуализации, работающая в реальном времени.
Используя созданный инструмент мы собрали более 250 уникальных паролей, основанных на паттернах при помощи 161 пользователей. Дополнительно было сгенерировано более 500 «случайных» паролей.
Визуализация паттернов
Следующим шагом является анализ набора паролей, основанных на клавиатурных графических паттернах, для поиска общих черт. Простого изображения, содержащего линии соединяющие последовательно нажатые клавиши на графической клавиатуре, было недостаточно. В таком случае линии бы накладывались друг на друга, если клавиши на клавиатуре были в том же ряду, или не рисовались бы линии вообще, если бы на одну клавишу нажимали несколько раз подряд. Таким образом, последовательность ввода символов вводила бы в заблуждение.
Необходимо было создать способ визуализировать такие ситуации как: нажатие клавиши Shift, многократное нажатие одной клавиши, многократный ввод набора символов. Первый подход заключался в воспроизведении пароля последовательно, символ за символом. Этот подход решает проблему распознавания паттернов, но не решает проблему визуализации и сканирования большого количества паролей.
Для улучшения распознавания паттернов при сравнении нескольких паролей используются следующие правила:
- Последовательно нажатые клавиши соединяются дугами.
- При нажатой клавише Shift увеличивать толщину дуги.
- Многократные нажатия на одну клавишу изображаются дугами, концами которых является один узел, таким образом, чтобы образовывался «цветок»
- Многократный ввод последовательности символов отображается путём смещения дуг.
- Многократное последовательное нажатие одной клавиши изображаются в виде лепестков со смещением.
- Дуги всегда рисуются по часовой стрелке, чтобы соблюдать порядок нажатий клавиш.
Рисунок, демонстрирующий все эти правила, показан ниже.
С жирными линиями всё понятно — была нажата клавиша Shift. Кроме того, клавиши «d» и «t» были нажаты несколько раз. Восемь нажатий клавиши «t» образуют дугу к клавише, а также четырёхлистник, и вложенный в него трёхлистник. Таким же образом можно проанализировать многократное (четырёхкратное) нажатие клавиши «d». Повторяющаяся комбинация символов «qwqwqw» отображения при помощи смещения дуг. Благодаря тому, что дуги всегда рисуются по часовой стрелке, можно определить последовательность нажатий клавиш без указательных стрелок на дугах.
На следующем рисунке показаны примеры визуализации клавиатурных паттернов, содержащихся в анализируемой базе. Если пароль создан не на основе графических клавиатурных паттернов, как в 4 примере на рисунке, то это видно сразу.
Основной задачей было определение основных структурных элементов паттернов из базы, для быстрого распознавания паролей. Далее показан пример поиска таких уникальных элементов, из которых можно составить паттерн, на основе таблицы 4x4, сгенерированной специальным инструментом.
Прототип инструмента взлома паролей использующий паттерны
На основе проведённых исследований был создан набор элементарных паттернов, разделённых на несколько категорий: двойное нажатие, тройное нажатие, змейка, пара, тройка, и т.д.
С использованием полученных элементарных паттернов были сгенерированы всевозможные комбинации паролей длиной от 8 до 12 символов. Диапазон длин паролей был выбран произвольно, однако при большом желании его можно увеличить, что приведёт к сильному увеличению объёма словаря.
Генератор паролей создавал пароли используя следующую структуру (отсортированы по приоритету):
- Соответствие правилу сложности пароля.
- Части пароля направлены в одну сторону.
- Части пароля имеют одинаковую длину.
- Все части пароля введены с Shift'ом или нет.
- Части пароля направлены слева направо, или сверху вниз.
- Части пароля имеют только один разрыв на клавиатуре.
Примеры сгенерированных паролей по этим правилам показаны на рисунке ниже.
Результирующий словарь содержит около 500.000 вариантов. Однако в нём содержатся далеко не все комбинации, поскольку стандартная 94 символьная клавиатура предполагает гораздо большее количество вариантов, а именно:
4.8 * 1023 = (948 + 949 + 9410 + 9411 + 9412)
возможных комбинаций паролей.
Результаты
Тесты взлома паролей показали, что даже сгенерированная база позволяет подобрать пароль, основанный на графическом паттерне, более чем в 20% случаях за короткий промежуток времени. К примеру «John the Ripper» по методу грубой силы не смог подобрать ни одного пароля более чем за 18 часов, а используя созданный словарь паттернов, Джони подобрал 11 паролей (18%) менее чем за одну секунду.
Ссылки используемые в статье:
[1] J. Yan, A. Blackwell, R. Anderson, and A. Grant. Password memorability and security: empirical results. IEEE Security & Privacy 2, 25-31 (2004)
Ссылка на саму статью здесь.
Автор: c4n