Длинный пароль: «Как придумать надёжный пароль?» – Яндекс.Знатоки – Создаем и запоминаем длинный пароль за небольшой отрезок времени / Habr

Создаем и запоминаем длинный пароль за небольшой отрезок времени / Habr

Здравствуйте. Хочу в этот воскресный вечер дополнить цепочку статей о создании паролей. Я не стану рассказывать о паролях для различных сайтов или служб, куда больше меня в последнее время волнует мастер-пароль, длинный и надежный, чтоб не меньше 20 символов. При этом как то не охото заморачиваться с запоминанием и придумыванием. Так же я крайне не одобряю использование части пароля как намек на то, от чего он используется, не люблю использование шаблона и прочее, что снижает безопасность. Интересует только рандом. Такой пароль создается обычно один и надолго, а у кого то и на всю жизнь. Многим приходилось заниматься придумыванием подобных вещей, и многие сталкивались с двумя проблемами:

Проблема №1 — Придумать.
Обычно, когда нужно срочно что-то придумать, зачастую соображалка резко отключается и фантазия объявляет забастовку. А в случае, когда нужно придумать безопасный пароль, некоторые, я в том числе, могут сидеть часами и в результате ни к чему не прийти. В следствии на помощь приходят генераторы, которые приводят нас ко второй проблеме.

Проблема №2 — Запомнить.
Допустим мы воспользовались генератором и увидели вариант «JnFayt4j6LfUBLNqsNw7LhuTby». Хорошо если первое пришедшее в голову слово будет не матерное. Запомнить такой пароль можно лишь зубрешкой, на которую может уйти не мало времени, а забыть такой пароль при длительном не использовании не трудно.

В данной статье я предложу метод создания и легкого запоминания вот таких паролей. И так…

Задача:
1. Составить пароль приличной длины.
2. Запомнить составленный пароль.
Условия:
Уложиться в 15 минут (постараться уложиться).

Решение:
1. Для начала разберемся с тем, какой длины пароль нам необходим. Обычно нас не ограничивают в узких рамках и количество символов может быть довольно большим. С длиной определились? Хорошо, запускаем генератор, ведь нам нужна помощь Великого Рандома.
Допустим мы решили остановиться на длине в 25 символов. Указываем в генераторе необходимые условия — буквы верхнего и нижнего регистра, цифры. Пробелы и спец. знаки я пока не затрагиваю, чтобы не усложнять статью. При желании сможете потом сами поэкспериментировать. Результат должен быть примерно следующим:
M56ZpEiRGVBdCjwR96cdF7SMY

TF25xfBQYCEBifsu8jqYT4izo
torhJFBusKzdPosURgr966xhP
pjwPXKEcHSbdjKdS3fcebfFPC
xb6ghWhmodomaUkH8ZS5Kfec4
fwRN33FST7VGfR2oGdu7xvG9T
qRKZSZQyUMZUkUqYsck7jfnXz
EHFtPexypPPFthpTCyLGFSFZt
V2cyqYKqUbzqnLE4QMQmRK5hN
Все эти действия можно уложить не напрягаясь в 1 минуту (если только генератор не грузится долго)

2. Открываем блокнот, копируем то, что получилось (результатов 10-15). Теперь нам необходимо поделить их на блоки по 5 символов, чтобы получилось примерно следующее:
M56Zp EiRGV BdCjw R96cd F7SMY
TF25x fBQYC EBifs u8jqY T4izo
torhJ FBusK zdPos URgr9 66xhP
pjwPX KEcHS bdjKd S3fce bfFPC
xb6gh Whmod omaUk H8ZS5 Kfec4
fwRN3 3FST7 VGfR2 oGdu7 xvG9T
qRKZS ZQyUM ZUkUq Ysck7 jfnXz
EHFtP exypP PFthp TCyLG FSFZt
V2cyq YKqUb zqnLE 4QMQm RK5hN
Теперь пробегаемся глазами по каждому блоку и выписываем те, что наиболее легко запомнить. Я выбрал для себя следующие:
R96cd EBifs T4izo FBusK URgr9 KEcHS Whmod omaUk H8ZS5 3FST7 oGdu7 EHFtP 4QMQm
Выбирал я на основе читаемости или ассоциаций.

omaUk — легко запоминается на слух «омаук», «ома ю кей»
Whmod — ассоциация «wh mod»
EBifs — no comments
H8ZS5 — просто не показался сложным для запоминание
В результате мы потратили еще минут 5 (2 на копирование и разбивку и 3 на выписывание понравившихся блоков)

3. Снова смотрим на то, что выписали и определяемся на каких блоках мы остановимся. Для 25 символов нам нужно 5 блоков. При окончательном выборе нам остается лишь избежать ситуации, в которой при отсеивании могут остаться лишь блоки без цифр. Мне наиболее всего понравились блоки Whmod H8ZS5 EBifs 3FST7 4QMQm. Остается последний этап — запомнить его.
Плюс еще 2 минуты.

4. Я почти уверен, что пока вы проделывали предыдущие шаги, пару или тройку блоков вы уже запомнили (пусть даже пока и без регистра). Теперь стоит задуматься в каком порядке расположить блоки. Я выбрал Whmod EBifs 4QMQm 3FST7 H8ZS5, потому что смог сходу его выговорить. Теперь откройте еще один блокнот или возьмите листок и ручку и постарайтесь зрительно вспомнить и написать все блоки с учетом регистра. В предыдущих шагах мы потратили 8 минут. Думаю за оставшиеся 7 вполне под силу выучить новый пароль, да еще и написать его раз 20 для практики.

Вывод:
Мы получили пароль, который удовлетворяет условиям задачи, и является при этом легким и надежным. Отчасти он так и остался рандомным, так как по сути мы лишь поменяли местами части результата генератора. Брутфорс такой пароль подбирать замучается, а наша паранойя будет спокойна, пока мы сами не предоставим ей повод беспокоиться. Используя данный метод можно без лишних проблем запомнить и куда более длинный пароль. Конечный результат зависит лишь от вашей памяти и усидчивости.

Как придумать безопасный пароль, который легко запомнить

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

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

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

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

Длина – это главное

В отличие от многих других случаев, для пароля длина – это главное. Пароли длиной до шести символов включительно, составленные из 95 ASCII-символов (26 букв латинского алфавита в обоих регистрах, 10 цифр и 33 служебных символов), взламываются методом полного перебора («грубой силы») на обычном персональном компьютере при помощи «числодробилки» современной видеокарты буквально за считанные минуты. Но добавление даже одного–двух символов уже серьёзно усложняет задачу, удлиняя время перебора до нескольких дней и даже месяцев.

Однако длина – пусть и главный, но далеко не единственный критерий оценки стойкости пароля. Принципиальное значение имеет отсутствие какого-то предсказуемого шаблона в самом наборе и неслучайности в последовательности символов пароля. Мера непредсказуемости появления таких символов носит название «информационной энтропии», и эта величина, рассчитываемая в битах энтропии, позволяет со значительной степенью точности оценить сложность пароля. Так, энтропия на один символ для пароля из всех ASCII-символов составит порядка 6,56 бит; таким образом, сложность 6-символьного пароля будет составлять 39,36 бита энтропии, 7-символьного – уже 45,95 бит, а 8-символьного – 52,48 бит.

Чтобы взломать пароль 52-битной сложности методом перебора, потребуется количество попыток, равное 2 в 52-й степени. При использовании пары современных видеокарт класса GeForce GTX 570, способных подбирать по 1,5 миллиарда паролей в секунду, перебор всех возможных комбинаций займёт примерно пару месяцев непрерывной работы, что, в общем, и даёт представление о стойкости такого пароля.

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

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

По оценкам Национального института стандартов и технологий США (NIST), энтропия первого символа из букв нижнего регистра и цифр в паролях, придуманных человеком, составляет 4 бита, последующих семи – 2 бита, а применение верхнего регистра и служебных символов добавляет ещё 6 битов, что в сумме даёт всего 24 бита, то есть в два с лишним раза меньше по сравнению с теоретическим максимумом для заданного набора символов и длины. То есть время подбора такого пароля даже методом «грубой силы» уменьшается вдвое, в реальности же «гибридная» атака позволит злоумышленнику добиться успеха намного быстрее.

И здесь мы снова возвращаемся к длине: сложность пароля длиной 14 символов теоретически составит 91,84 бита, а длиной 20 символов – уже 131,2 бита, и на взлом таких паролей только методом перебора при существующих вычислительных мощностях уйдёт несколько десятков, а то и сотен лет. Гибридные методики, разумеется, значительно снижают стойкость подобных кодов, а «человеческий фактор» делает их ещё уязвимее. Тем не менее длина делает своё дело: для обычного пользовательского пароля, даже если в нём есть не слишком явные шаблоны, рекомендуемое количество символов на сегодня должно быть не менее 14. Такой пароль будет намного безопасней, чем «суперстойкие» когда-то пароли из 6–8 символов.

Не будьте предсказуемы

После рассуждений о предсказуемости как свойстве человеческой натуры такой совет может прозвучать странно, и тем не менее. Для составления достаточно безопасного пароля вовсе не обязательно устанавливать генераторы и пытаться потом запомнить абракадабру. Можно просто попытаться стать чуть более «внезапными».

Среди самых банальных рекомендаций – не используйте псевдопароли и комбинации псевдопаролей вроде QWERTY, 123456 и тому подобных. Даже если часть такой последовательности будет присутствовать в вашем пароле, это кардинально снизит его безопасность. Недопустима повторяемость отдельных символов и их сочетаний: как цифр, так и чисел, как букв, так и слов.

Самое глупое, что можно придумать, – это вводить в качестве паролей русские слова в латинской раскладке. Если даже пресловутый Punto Switcher способен в реальном времени переключать раскладку, то странно ожидать отсутствия такой возможности у специализированного ПО.

Не используйте предсказуемые числа – даты, номера телефонов и индексы, номера соцстраховок и автомобилей. Поскольку профессиональные взломщики всё-таки отчасти математики, не стоит применять в паролях и какие-то хорошо известные константы – например, число «пи». Числовые последовательности (например, числа Фибоначчи) тоже вряд ли станут хорошей идеей.

Подстановка «похожих» символов в словарные слова не даст никакого эффекта, поскольку все взломщики давно в курсе, что «@» может заменять «a», а «5» – «s». Гораздо более эффективный вариант – исковеркать известные слова каким-то только одному вам понятным способом. Например, превратить «password» в «p&sUprtDt» – типичный шаблон тут отсутствует, поэтому словарный подбор ничего не даст, а если пароль будет достаточно длинным, то и метод «грубой силы» окажется малоэффективным.

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

Стёпка, хочешь щец?

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

Некоторые люди обладают фотографической памятью на символы, и для них не составляет труда запомнить даже самую нелепую абракадабру. Другим же приходится пользоваться иным способом, который описан в заголовке этой части статьи. Автор вовсе не сошёл с ума, просто в этом заголовке приведена часть мнемонического правила для запоминания глухих согласных в русском языке: «СТёПКа, ХоЧеШь ЩеЦ? — Фи!» Мнемотехника облегчает запоминание любой информации при помощи ассоциативных связей, подменяя абстрактные данные яркими образами.

Даже самый сложный пароль можно запомнить, используя мнемотехнику, особенно какую-то близкую вам тематику. К примеру, «AsTKp2eshe:)»: «Аркадий съел большую тарелку каши, попросил две ещё, улыбнулся» и т. п. Фразы не обязательно должны быть осмысленными: напротив, чем они абсурднее, тем легче запоминаются. Техник запоминания огромное множество, и если вы освоите хотя бы некоторые из них, они пригодятся вам не только для паролей. И повторим, что это отличный способ запомнить множество сложных паролей.

* * *

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

Не вводите свои пароли на чужих компьютерах, особенно тех, к которым имеет доступ большой или неограниченный круг людей. Даже если коварные злоумышленники не установили там кейлоггеры, запоминающие все нажатия клавиш, в настройках системы, браузера или ПО может быть по умолчанию предусмотрено запоминание всех вводимых паролей, неочевидное для пользователя. Если же вам всё-таки пришлось воспользоваться таким компьютером, поспешите заменить пароль с безопасной машины.

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

Подбор паролей длиной 12 символов и выше

При помощи современного оборудования, мы можем почти наверняка расшифровать быстрый хеш, например, MD5, NTLM, SHA1 и т. д. за разумное время.

Автор: NETMUX

Что я подразумеваю, когда говорю о взломе пароля длиной 12 и более символов? Я утверждаю, что при помощи современного оборудования, например, данной «бюджетной» установки, мы можем почти наверняка расшифровать быстрый хеш, например, MD5, NTLM, SHA1 и т. д. за разумное время. На практике подбор в лоб последовательностей длиной 8 и более символов бесперспективен в случае с распространенными алгоритмами хеширования. Когда же мы касаемся особенностей национального языка и человеческой психологии (например, среднее английское слово длиной 4.79 символа, а люди предпочитают использовать несколько слов при составлении паролей размером 10 и более символов), то здесь уже открываются более интересные возможности с точки зрения подбора подобных паролей. Более подробно о различных инструментах подбора рассказано в книге Hash Crack.  

Почему пароли длиной 12 и более символов уязвимы?

Люди, создающие пароли длиной 10 и более символов вручную, как правило, используют стандартные слова и фразы. Почему? Потому что запомнить пароль «horsebattery123» намного проще, чем «GFj27ef8%k$39». Здесь мы сталкиваемся с инстинктом следования по пути наименьшего сопротивления, который, в случае с созданием паролей, будет проявлен до тех пор, пока менеджеры паролей не станут использоваться более массово. Я согласен, что серия рисунков, посвященная устойчивости пароля, вполне имеет право на жизнь, но только в случае небыстрыми алгоритмами хеширования, наподобие bcrypt. В этой статье будут показаны примеры атак типа Combo (когда комбинируются элементы словаря) и Hybrid (когда к атаке типа Combo добавляется прямой перебор) при помощи утилиты Hashcat, которые, надеюсь, расширят ваш арсенал. В примерах ниже будет продемонстрировано, как злоумышленник может эффективно перебрать пространство ключей и взломать пароли, которые на первый взгляд кажутся устойчивыми.

Базовая информация об атаках типа Combo и Hybrid

Комбинационная атака (Combo): комбинируются все элементы из двух словарей.

Пример
Входные данные: dictionary1.txt dictionary2.txt
Комбинации паролей:
pass => password, passpass, passlion
word => wordpass, wordword, wordlion
lion => lionpass, lionword, lionlion

Гибридная атака (Hybrid): представляет собой атаку по словарю с примесью комбинаций сгенерированных по определенному шаблону.

Пример
Входные данные: dictionary.txt ?u?l?l
Комбинации паролей:
pass => passAbc, passBcd, passCde
word => wordAbc, wordBcd, wordCde
lion => lionAbc, lionBcd, lionCde

Примечание 1: Последовательность генерации паролей не совсем точна и приведена для описания общей идеи.

Примечание 2: Более подробные объяснения приведены на сайте Hashcat.

Комбинационная атака

Рассмотрим комбинационную атаку с использованием словаря, состоящим из 10 тысяч наиболее употребительных слов в порядке убывания популярности. Анализ проводился при помощи N-грамм и частотного анализа на базе триллионного сборника, собранного поисковой системой Google.

Рассмотрим пример двух случайно выбранных слов, соединенных в пароль длиной 16 символов, например shippingnovember и осуществляем комбинационную атаку на данный пароль, если бы использовался алгоритм MD5:

Пример
hashcat -a 1 -m 0 hash.txt google-10000.txt google-10000.txt

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

http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,h_9000,w_1200,f_auto,q_90/v1/148712/Screen_Shot_2017-01-01_at_2.35.25_PM_euctqj.png
Рисунок 1: Время подбора пароля shippingnovember при помощи комбинационной атаки

Критики могут возразить, мол, если вначале каждого слова сделать заглавные буквы или добавить цифру или специальный символ, то новый пароль (например, ShippingNovember) будет более устойчив. Проверим эту теорию на практике и скомбинируем словарь google-10000 в единый большой массив паролей при помощи утилиты combinator.bin, что позволит нам комбинировать полученные слова в сочетании с правилами.

Пример
combinator.bin google-10000.txt google-10000.txt > google-10000-combined.txt

Теперь, когда у нас есть словарь комбинаций, мы добавляем правила с целью подбора модифицированного пароля (ShippingNovember).

Пример
hashcat -a 0 -m 0 hash.txt google-10000-combined.txt -r best64.rule

http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,h_9000,w_1200,f_auto,q_90/v1/148712/Screen_Shot_2017-01-01_at_4.56.38_PM_yyoi7u.png
Рисунок 2: Время подбора пароля ShippingNovember при помощи словаря комбинаций и правил

Новый пароль расшифрован за 28 секунд. Схожим образом добавляются правила, учитывающие специальные символы, различное местонахождение комбинации и так далее. Думаю, вы уловили суть.

Пароли из 3 слов

Используя созданный словарь комбинаций, попробуем подобрать пароль из трех слов, например «securityobjectivesbulletin», при помощи комбинационной атаки.

Пример

hashcat -a 1 -m 0 hash.txt google-10000-combined.txt google-10000.txt
http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,h_9000,w_1200,f_auto,q_90/v1/148712/Screen_Shot_2017-01-01_at_5.56.24_PM_wprjxg.png
Рисунок 3: Время подбора пароля securityobjectivesbulletin

Схожий пароль с добавлением других символов взломается чуть медленнее. Улавливаете тенденцию?

Пароли из 4 слов

Теперь рассмотрим взлом паролей, состоящих из четырех слов (пример: «sourceinterfacesgatheredartists»). В этом случае пространство ключей увеличивается до 10.000.000.000.000.000 кандидатов, но в итоге подбор занимает разумное время. В основном из-за того, что используется алгоритм MD5. Мы создаем новый словарь комбинаций и осуществляем комбинированную атаку при помощи Hashcat.

Пример
hashcat -a 1 -m 0 hash.txt google-10000-combined.txt google-10000-combined.txt

http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,h_9000,w_1200,f_auto,q_90/v1/148712/Screen_Shot_2017-01-02_at_8.24.43_AM_bjesul.png
Рисунок 4: Время подбора пароля sourceinterfacesgatheredartists

Процесс перебора при помощи современных аппаратных средств мог занять 4 дня, но правильный кандидат был найден в течение 5 часов 35 минут. Добавление цифр или специальных символов сделало бы пароль вне нашей досягаемости, но использование лишь четырех случайных слов делает пароль уязвимым.

Гибридная атака

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

Атака по словарю Google-10000 + маска

В первом примере мы будем использовать тот же словарь из 10 тысяч наиболее встречающихся слов в качестве базы для генерации кандидатов для перебора. Затем мы воспользуемся пакетом утилит PACK (Password Analysis and Cracking Kit) и словарем hashesorg251015.txt с сайта weakpass.com. Я выбрал именно этот словарь из-за высокого рейтинга успешности и относительно небольшого размера. Мы будем изучать словарь hashesorg и по результатам анализа создадим маски на базе наиболее популярных паролей, ограниченных определенных набором символов. Эти маски будут использоваться в начале и в конце базовых слов из словаря google-10000.txt.

Пример

Вначале сгенерируем статистику по маскам на базе паролей длиной 5-6 символов и запишем результаты в отдельный файл (учтите, что процесс генерации может занять некоторое время).

python statsgen.py hashesorg251015.txt --minlength=5 --maxlength=6 --hiderare -o hashesorg_5or6.masks

Затем преобразуем маски в формат Hashcat (файл .hcmasks) для последующего использования в гибридных атаках.

python maskgen.py hashesorg_5or6.masks --optindex -o hashesorg_5or6.hcmask

Далее в режиме 6 в качестве параметров указывает словарь и набор масок. Алгоритм перебора будет выглядеть следующим образом: берется первая маска и комбинируется с каждым словом из словаря, затем вторая маска, третья и так далее, пока не закончится весь перечень масок. Некоторые атаки могут заканчиваться очень быстро, некоторые осуществляются чуть дольше. Во время тестирования будем подбирать пароль «environmentsqaz472»

Пример
hashcat -a 6 -m 0 hash.txt google-1000.txt hashesorg_5or6.hcmask
http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,h_9000,w_1200,f_auto,q_90/v1/148712/Screen_Shot_2017-01-02_at_6.55.26_PM_z9sk3y.png
Рисунок 5: Время перебора пароля environmentsqaz472

Подбор занял около 20 минут. Вначале мы добрались до маски ?l?l?l?d?d?d, а затем в течение 14 взломали пароль.

Атака на базе словаря Rockyou + Rockyou-1-60.hcmask

Теперь воспользуемся набором масок, который идет в комплекте с утилитой Hashcat и сгенерирован на основе паролей из набора Rockyou. Данный набор масок разбит на отдельные порции, которые с возрастанием диапазона номеров возрастают по размеру. Размер, как я предполагаю, возрастает из-за процента паролей, на базе которых сгенерирована конкретная порция масок. Мы будем использовать файл с именем rockyou-1-60.hcmask, поскольку там наиболее ходовые маски, которые хорошо зарекомендовали себя при гибридных атаках. Этот набор масок мы будем комбинировать с паролями из словаря Rockyou. В случае с другими словарями будьте осторожны и используйте файлы не слишком большого размера. Иначе атака будет занимать СЛИШКОМ много времени. Обычно я пользуюсь словарями размером менее 500 Мб (и даже меньше) и добавляю маски в начале и в конце слов. Берем случайный пароль «sophia**!» из словаря Rockyou и в начало добавляем случайную дату «1996». В итоге получаем пароль 1996sophia**!. Во время тестов каждая маска будет комбинироваться с элементом словаря Rockyou.

Пример
hashcat -a 7 -m 0 hash.txt rockyou-1-60.hcmask rockyou.txt
http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,h_9000,w_1200,f_auto,q_90/v1/148712/Screen_Shot_2017-01-02_at_7.17.59_PM_qrn3vx.png
Рисунок 5: Время подбора пароля 1996sophia**!

Во время перебора через несколько минут дело дошло до маски ?d?d?d?d. Данный пример показан с целью демонстрации процесса и эффективности гибридных атак. Файл rockyou-1-60.hcmask содержит 836 масок, сгенерированных на базе наиболее часто встречающихся паролей из словаря rockyou.txt. Если вам мало этого набора, в комплекте с Hashcat идут все маски, сгенерированные на базе остальных паролей.

Первые 5 символов + маска

Теперь создадим новый словарь и набор масок. Мы уже знаем, что среднее английское слово занимает 4.79 символов, и поэтому будем создавать словарь, содержащий элементы не более 5 символов. Данный словарь будет сгенерирован на базе файла rockyou.txt, где у каждого элемента будут отрезаны первые 5 знаков. Далее удаляются дубликаты, и полученный список сортируется и помещается в файл first5_dict.txt. Полученный словарь занимает 18 МБ, что слишком мало для атаки на быстрый алгоритм MD5, но вполне приемлемо для более медленного хеша.

Пример
cut -c 1-5 rockyou.txt | sort -u > first5_dict.txt

Затем мы будем комбинировать элементы словаря first5_dict.txt и маски из файла rockyou-1-60, который идет в комплекте с Hashcat. Некоторые кандидаты будут менее 12 символов, но вы можете исключить маски, длиной менее 7 символов и создать новый файл с расширением .hcmask. Вновь берем случайный пароль Alty5 из файла first5_dict.txt и добавим случайную последовательность цифр 9402847. В итоге получаем пароль Alty59402847.

Пример
hashcat -a 6 -m 0 hash.txt first5_dict.txt rockyou-1-60.hcmask
http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,h_9000,w_1200,f_auto,q_90/v1/148712/Screen_Shot_2017-01-08_at_11.03.14_AM_knmj2x.png
Рисунок 6: Время подбора пароля Alty59402847

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

Прямая атака по маске на пароль 12 и более символов

Я понимаю, что данный тип атак не относится к гибридным, но, тем не менее, использование 12  символьных и более масок все еще дает результаты особенно, если пользоваться утилитой PACK. Атака на пароль, закодированный определенным алгоритмом хеширования, может быть запланирована длительностью 1 день (86400 секунд) с учетом скорости аппаратных средств. Вначале нужно измерить скорость перебора, исходя из возможностей вашего оборудования, при помощи команды hashcat -b -m #type прямо в терминале. Быстро разберем создание масок для атаки на пароли длиной 12-15 символов при помощи утилиты PACK. Для генерации масок вновь воспользуемся словарем rockyou.txt, но вначале оценим скорость перебора хешей md5.

Пример (md5)
hashcat -b -m 0
http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,h_9000,w_1200,f_auto,q_90/v1/148712/Screen_Shot_2017-01-08_at_11.04.04_AM_ccwoe5.png
Рисунок 7: Оценка скорости перебора хешей md5

По результатам тестирования выяснилось, что скорость перебора - 76,000,000,000 ключей в секунду. Далее создаем набор масок на базе словаря rockyou.txt при помощи утилиты PACK.

Пример
python statsgen.py rockyou.txt -o rockyou.masks

Теперь создаем файл hcmask, при помощи которого часть паролей длиной 12-15 символов будут перебираться в течение 1 дня (86400 секунд).

Пример
http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,h_9000,w_1200,f_auto,q_90/v1/148712/Screen_Shot_2017-01-08_at_11.07.36_AM_slriec.png
Рисунок 8: Процедура подбора паролей по маске

Затем мы можем запустить серию атак по маскам, используя файл rockyou_12-15.hcmask, для перебора хешей md5. Промежуточные переборы будут завершаться спустя 1 день.

Пример
hashcat -a 3 -m 0 hash.txt rockyou_12-15.hcmask

Заключение

Как вы могли убедиться, пароли длиной 12 символов не являются настолько неуязвимыми. Требуется лишь немного хитрости и творчества для выработки правильной стратегии перебора. Кроме того, не думайте, что если пароль более 11 символов, то ваш любимый онлай-сервис захеширует все правильно. Спасибо компании Yahoo. Я надеюсь, что примеры выше убедили вас, что нужно использовать пароли несколько сложнее, чем просто комбинация случайных слов в нижнем регистре. Другие доказательства приведены в статье моего друга Троя Ханта. Если вы достаточно умны, то начнете использовать приложение-менеджер, например, 1Password или Keepass, предназначенное для генерации и хранения паролей. Кроме того, я бы хотел упомянуть микроблог Dumpmon, где можно поискать хеши в исследовательских целях.

Напоследок хочу привести следующую цитату: «Успешный кибер-генерал перед началом проникновения в систему выполняет множество вычислений в терминале» (CyberSunTzu).

Оптимальная длина и состав пароля / Habr

Введение.

На фоне многочисленных постов о паролях решил провести небольшое исследование.

В настоящее время парольная защита является самым распространённым и, к сожалению, самым ненадёжным методом защиты. Существует много статей на тему «Как составить стойкий пароль», но мне не встречались статьи, где приводятся реальные данные о надёжности паролей.

В исследовании проводится оценка надёжности паролей противостоять атакам грубой силы. Наиболее эффективный метод грубой силы при переборе паролей для хеш-функций является составление радужных таблиц.

Расчёты проводятся для трёх хеш-функций md5, sha1 и sha2 (модификация sha512). В расчёт не берутся данные о коллизиях в данных хеш-функциях, так как с практической точки зрения в реальном подборе пароля они не помогут, да и достойных реализаций в ПО на настоящий время в открытом доступе нет. В исследовании принимают участия пароли длиной 7, 8, 10 и 12 символов трёх различных алфавитов.

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

Инструментарий.

  • Компьютер с процессором Pentium 4 2.6 GHz и оперативной памятью 512 МБ;
  • Утилита winrtgen, входящая в состав Cain&Abel;

Промежуточные расчёты.

Количество комбинаций паролей равно (количество символов в алфавите)^(количество символов в пароле)
В исследовании принимают участие 3 алфавита:
  • А1={abcdefghijklmnopqrstuvwxyz0123456789} 36 символов
  • А2={[email protected]#$%^&*()-_+="} 51 символ
  • А3={[email protected]#$%^&*()-_+=} 77 символов
  • А4={0123456789} 10 символов

Результаты.

Для алфавита А1
Число символов Хеш алгоритм Дисковое пространство Время подсчёта
1 7 md5 2,98 ГБ 5 дней
2 8 md5 89,4 ГБ 159 дней
3 10 md5 113 249 ГБ 661,5 года
4 12 md5 178 754 329 ГБ 1,19851е+006 лет
5 7 sha1 2,98 ГБ 7 дней
6 8 sha1 89,4 ГБ 230 дней
7 10 sha1 113 249 ГБ 918 лет
8 12 sha1 178 754 329 ГБ 1,58632е+006 лет
9 7 sha512 2,98 ГБ 16 дней
10 8 sha512 89,4 ГБ 1,4 года
11 10 sha512 113 249 ГБ 1905 лет
12 12 sha512 178 754 329 ГБ 3,1438е+006

Для алфавита А2

Число символов Хеш алгоритм Дисковое пространство Время подсчёта
1 7 md5 232,5 ГБ 1 год
2 8 md5 17 881,4 ГБ 90,2 года
3 10 md5 77 486 038,2 ГБ 462539 лет
4 12 md5
5 7 sha1 232,5 ГБ 1,6 года
6 8 sha1 17 881,4 ГБ 129 лет
7 10 sha1 77 486 038,2 ГБ 638089 лет
8 12 sha1
9 7 sha512 232,5 ГБ 3,54 года
10 8 sha512 17 881,4 ГБ 286,5 года
11 10 sha512 77 486 038,2 ГБ 1,33807е+006 года
12 12 sha512

Для алфавита А3
Число символов Хеш алгоритм Дисковое пространство Время подсчёта
1 7 md5 596 ГБ 2,73 года
2 8 md5 41 723 ГБ 206 лет
3 10 md5 238 418 579 ГБ 1,38521е+006 лет
4 12 md5
5 7 sha1 596 ГБ 4 года
6 8 sha1 41 723 ГБ 301 год
7 10 sha1 238 418 579 ГБ 1,91805е+006 лет
8 12 sha1
9 7 sha512 596 ГБ 9 лет
10 8 sha512 41 723 ГБ 654 года
11 10 sha512 238 418 579 ГБ 3,95008е+006 лет
12 12 sha512

Для алфавита А4
Число символов Хеш алгоритм Дисковое пространство Время подсчёта
1 12 md5 59,6 ГБ 133 дня
2 15 md5 59 604,64 ГБ 426 лет
3 17 md5 5 960 464,47 ГБ 47 574 года
4 20 md5 1 665 497 181 ГБ 4,94612е+007 лет
5 12 sha1 59,6 ГБ 175 дней
6 15 sha1 59 604,64 ГБ 563 года
7 17 sha1 5 960 464,47 ГБ 60 505 лет
8 20 sha1 1 665 497 181 ГБ 6,2405е+007 лет
9 12 sha512 59,6 ГБ 359 дней
10 15 sha512 59 604,64 ГБ 1040 лет
11 17 sha512 5 960 464,47 ГБ 110 162 года
12 20 sha512 1 665 497 181 ГБ 1,12256е+008 лет

Прочерк там, где программа решила, что с неё хватит подсчётов.
Выводы.

Длину и состав паролей каждый должен выбрать для себе сам, от себя могу лишь сказать, лучше выбрать пароль до 12 символов и периодически его менять, нежели взять пароль 20 символов и чувствовать себя в полной безопасности.

P.S. Это мой первый пост на хабре, сильно не пинайте, пожалуйста.

UPD Добавлен алфавит А4 и статистика к нему.

Какой длины достаточно? Минимальные пароли на самых популярных сайтах / Habr

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

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

Когда я проводил занятия «Взломай сначала себя», то одним из первых задавал вопрос: «Каково правильное значение минимальной длины пароля?» Я снова думал об этом на этих выходных, во время работы над второй версии сайта Pwned Passwords, потому что подумал, что можно использовать ограничение на минимальную длину, чтобы уменьшить размер набора данных. Вместо того, чтобы проецировать своё мнение по данному вопросу, я решил пойти и проверить, как обстоят дела на крупнейших сайтах. Вот топ-15 с резюме и некоторыми дополнительными комментариями:



Описание немного вводит в заблуждение. Там написано, что пароль должен быть длиннее, чем 6 символов. На самом деле он должен быть 6 символов или длиннее.


Удивительно, но у Wikipedia минимальный критерий… вы просто должны указать какой-нибудь символ. Этого достаточно.

Но чёрт побери, это значительный прогресс по сравнению с тем, что было раньше:


«По крайней мере, Википедия отказалась от пустых паролей по причинам безопасности».

Не заявляя этого явно, Yahoo требует пароля хотя бы 8 символов, чтобы соответствовать критерию по минимальной длине:






Netflix разрешает сверхкороткие пароли всего из 4 сиволов. Возможно, одна из причин в том, чтобы упростить ввод пароля с телевизионного пульта.







Выложим все результаты в одной таблице:
Google 8
Facebook 6
Wikipedia 1
Reddit 6
Yahoo 8
Amazon 6
Twitter 6
Microsoft 8
Instagram 6
Netflix 4
LinkedIn 6
Twitch 8
Pornhub 6
Ebay 6
imgur 6

Удивлены? Многие люди выберут пароль из 6 символов, потому что он кажется коротким. 9 из 15 сайтов разрешают пароли из 6 символов, 4 сайта требуют минимум 8 символов, а есть ещё Netflix с минимальным ограничением в 4 символа и Wikipedia, ну, давайте не будем упоминать их ограничение… А вот мои мысли по этому поводу:

В каждом случае минимальная длина пароля — это чётное число! По вашему, насколько научно обоснован процесс определения идеальной минимальной длины, если все большие игроки просто приземлились на 4, 6 или 8?

Ни у кого нет 5 или 7, или 9, только красивые, приятные, симметричные чётные числа. Так что вот первый проницательный вывод из наблюдения — здесь определённо не замешана никакая наука.

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

Например, у нас двухфакторная аутентификация. Да, ею пользуется пугающе мало людей, но сейчас это доступная технология контроля безопасности на массовом рынке, и у нас есть доступ ко всем видам сервисов, которых не существовало даже пять лет назад. Мы также начинаем лучше понимать поведение пользователей при выборе паролей; в этом весь смысл проекта Pwned Passwords — признать, что люди принимают дерьмовые решения в области безопасности! Давайте выявим их на раннем этапе и поможем людям сделать правильный выбор (т. е. «тебе действительно не следует использовать такой пароль...»).

Затем есть элементы управления, основанные вокруг эвристик других пользователей, например, требование верификации через зарегистрированный адрес электронной почты, если пользователь пытается авторизоваться из необычного места (вы могли видеть, как Facebook раньше делал такое). То же самое при использовании нового браузера — это может привести к снижению доверия, из-за чего требуется дополнительная верификация. На самом деле, вся предпосылка «доверия» становится особенно важной, когда мы уходим от этого бинарного состояния: разрешить или запретить доступ. Попробуйте походить по разным сайтам через Tor — и вам придётся доказывать, что вы человек, потому что, как выяснилось, плохие парни особенно любят использовать инструменты анонимности.

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

О, и если вы действительно найдёте сайт с нечётным числом в качестве минимальной длины пароля, то оставьте комментарий ниже, потому что теперь мне уже стало интересно.

Ограничение максимальной длины пароля / Habr

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

С ограничением длины снизу всё понятно, но кому нужно ограничение сверху? Пусть пользователь вводит хоть 200 символов, если ему хочется, фрику будет приятно. Жалко байтиков в POST-запросе? Место в базе данных? Но вы же (я надеюсь!) храните хэш от пароля, который всегда постоянной длины! Считаете, что хэширование 200-символьных паролей убьёт производительность сервера? Не смешно.

При всём при этом создатель сайта заставляет пользователя:

  • Воспринять и осмыслить лишнюю информацию;
  • Поволноваться, не превышает ли его любимый пароль указанное ограничение;
  • Дважды пересчитать символы в 12-символьном пароле, чтобы убедиться, что всё нормально;
  • Придумать новый пароль, если любимый оказался длиннее (не всем живым людям придёт в голову чисто компьютерное решение убрать последние символы пароля: он может стать неблагозвучным).


Мало того, что это поле ввода заботливо не даёт ввести больше 16 символов, так ещё и его размер подогнан. Ввёл я семнадцатый символ. На экране не изменилось вообще ничего. Я не знаю, то ли случилась прокрутка и кружочки уползли влево, то ли пароль обрезался. Я не уверен, что размер поля именно 16 символов. Или мне кружочки пересчитывать?

Конечно, это всё не так страшно. Подумаешь, сервер заботливо обрежет пароль. Я могу спокойно вводить свои 18 символов каждый раз и не замечать неудобств. Однако некоторые известные сайты в своей недружелюбности пошли дальше:

Я поменял пароль на свой любимый 18-символьный и поднял глаза на экран, увидев кружочки. Я не заметил, что 17-й и 18-й кружочек не появился, потому что сайт решил, что их слишком много. Кружочки я, конечно, тоже не пересчитывал. Положение усугубляет то, что здесь нет предупреждения о максимальной длине пароля. В результате я сам не заметил, как поменял пароль не на тот, что хотел, а на более короткий.

Желая посетить сайт в следующий раз, я наивно ввёл те же самые 18 символов в форму логина:

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

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

Через поиск нашёл аналогичную историю в недавней статье «Цифровой динозавр 21-го века». Думаю, таких историй (включая нерассказанные) наберётся больше, чем может показаться разработчикам. Добавляя глупое ограничение, можно потерять клиента на ровном месте, затратив при этом время на написание лишнего кода для проверки этого ограничения.

Отправить ответ

avatar
  Подписаться  
Уведомление о