Современная техника взлома паролей 1
Даже если не рассматривать мою статью, за годы было написано множество работ (как солидных, так и шуточных) о том, как создавать надежные пароли. Однако, большинство из них основывается скорее на анекдотических предположениях, нежели на фактических доказательствах. То, что следует ниже — это ряд серьезных рекомендаций.
Атака, которую я буду рассматривать, — это автономный подбор пароля. Эта атака основывается на том, что взломщик либо располагает зашифрованной копией вашего документа, либо имеет зашифрованный файл паролей сервера и может тестировать пароли так быстро, насколько это для него возможно. Бывают случаи, когда подобная атака бессмысленна. В частности, банковские карты достаточно защищены, даже несмотря на всего лишь четырехзначный PIN-код, поскольку вы не можете перебирать его автономно. А полиция с большей вероятностью получит ордер для доступа к вашему почтовому ящику на Hotmail, нежели будет морочиться со взломом пароля. Система депонирования ключа в вашей шифровальной программе наверняка более уязвима, чем ваш пароль, так же, как и любые "секретные вопросы", которые вы установили на случай, если забудете основной пароль.
Современные средства автономного перебора одновременно быстры и умны. AccessData продает Password Recovery Toolkit (Пакет восстановления паролей), или PRTK. В зависимости от взламываемой программы PRTK способна проверять до сотен тысяч паролей в секунду, при этом вначале она тестирует наиболее распространенные и уже затем переходит к более сложным.
Таким образом, стойкость вашего пароля опирается на две вещи: на механизмы программы, замедляющие подбор паролей, и на порядок, в котором средства вроде PRTK проверяют различные пароли.
Некоторые прикладные программы содержат процедуры, предназначенные для намеренного замедления подбора паролей. Хорошие шифровальные средства не используют ваш пароль непосредственно как ключ шифрования; в них реализован процесс, преобразующий пароль в криптографический ключ. И программа может сделать этот процесс настолько медленным, насколько захочет.
Результаты налицо. Microsoft Office, к примеру, имеет простейшую схему преобразования пароля в ключ, так что PRTK может проверять по 350.000 паролей Microsoft Word в секунду, работая на 3 ГГц Pentium 4, являющимся на сегодня эталонным ПК. А WinZip и того хуже — свыше миллиона проверок в секунду для версии 7.0, правда с версии 9.0 криптографическая замедляющая функция стала значительно лучше: PRTK может пробовать лишь 900 паролей в секунду. PGP тоже сильно усложняет жизнь для программ вроде PRTK, так же допуская порядка 900 проверок в секунду.
При взломе программ с намеренно замедленными функциями важно, чтобы ни одна попытка не прошла даром. Простая атака полным перебором на шестизначный пароль из строчных букв, от "aaaaaa" до "zzzzzz", потребует более 308 миллионов комбинаций. Это совершенно нерационально, поскольку большую часть времени программа будет тестировать маловероятные пароли типа "pqzrwj".
По словам Эрика Томпсона из AccessData, обычный пароль состоит из корня и дополнения. Корень — не обязательно словарное слово, но все же нечто произносимое. Дополнение — это либо окончание (в 90% случаев), либо приставка (10% случаев).
Итак, первая атака, которую предпринимает PRTK, — это проверка словаря из примерно 1.000 распространенных паролей, чего-то вроде "letmein", "password", "123456" и т.п. Затем, она тестирует их же с сотней дополнительных часто встречающихся окончаний: "1", "4u", "69", "abc", "!" и пр. Хотите верьте, хотите нет, но одни эти 100.000 комбинаций восстанавливают порядка 24% паролей.
Затем PRTK применяет ряд более сложных словарей корней и дополнений. Эти словари включают:
- Словарь общеупотребимых слов: 5.000 слов
- Словарь имен собственных: 10.000 слов
- Полный словарь: 100.000 слов
- Словарь фонетических конструкций: 1/10.000 от числа комбинаций полного перебора
Словарь фонетических конструкций весьма занятен. Это не совсем словарь; это схема цепочек Маркова, которая генерирует произносимые англоязычные строки данной длины. Например, PRTK способна сгенерировать и проверить словарь всех произносимых шестизначных строк или всех едва произносимых семизначных строк. Сейчас они работают над механизмами генерации для других языков.
Кроме того, PRTK производит полный перебор всех четырехзначных строк; она прогоняет словари со всеми строчными буквами (что наиболее распространено), с первой заглавной (второй по распространенности случай), со всеми заглавными и с последней заглавной; она проверяет словари с распространенными подстановками: "$" вместо "s", "@" вместо "a", "1" вместо "l" и т.д., включая даже "l33t-speak" с цифрой "3" вместо "e".
Словари дополнений содержат такие компоненты:
- Все двузначные цифровые комбинации
- Все даты с 1900 по 2006
- Все трехзначные цифровые комбинации
- Все одиночные символы
- Все комбинации из одной цифры плюс одиночного символа
- Все двузначные комбинации символов
Фирменный соус AccessData — это последовательность, в которой программа проверяет различные комбинации словарей корней и дополнений. Исследования, проведенные компанией, показали, что лидером популярности паролей является семи-девятизначный корень плюс одно из распространенных дополнений, причем более вероятно, что человек выберет непредсказуемый корень, нежели необычное дополнение.
Как правило, PRTK работает на сети компьютеров. Взлом паролей — это элементарно распараллеливаемая задача, к тому же легко выполняемая в фоновом процессе. В крупной организации типа Секретной Службы сотни компьютеров могут пыхтеть над чьим-то паролем. Фирма под названием Tableau разрабатывает специализированную FPGA-микросхему, предназначенную для аппаратного ускорения работы PRTK с такими "медленными программами", как PGP и WinZip: по грубым оценкам, в 150-300 раз.
Насколько все это круто? По оценкам Эрика Томпсона, за время от пары недель до месяца его программа способна взломать от 55% до 65% всех паролей. (Разумеется, это очень существенно зависит от атакуемого приложения.) Это хорошие, но не сногсшибательные результаты.
Однако, лишь при отсутствии личных и биографических данных. При всякой возможности AccessData собирает любую доступную личную информацию по объекту атаки перед началом работы. Если она может просмотреть другие пароли, то может предположить, какие типы паролей предпочитает человек. Насколько крупный он использует корень? Какой вид корня? Куда он ставит дополнение, в начало или в конец? Использует ли символьные подстановки? Почтовые индексы являются распространенными дополнениями, так что они тоже идут в файл. Так же как и адреса, имена из адресной книги, другие пароли и все прочие приватные данные. Вся эта информация несколько повышает процент успеха PRTK, но, что более важно, сокращает время поиска с недель до дней и даже часов.
Теперь, если вы хотите, чтобы ваш пароль было трудно подобрать, следует выбирать нечто, чего нет ни в одном словаре корней и дополнений. Нужно смешивать заглавные и строчные буквы в середине корня. Нужно вставлять цифры и знаки в середину корня, причем не в качестве распространенных подстановок. Либо вы должны переместить дополнение в середину корня. Или использовать два корня с дополнением посередине.
Даже что-нибудь из менее приоритетных словарных вариантов PRTK — семизначная фонетическая конструкция совместно с необычным дополнением — едва ли будет угадана. Равно, как пароль, составленный из первых букв предложения, особенно если в такую мешанину добавить символы и цифры. Да, конечно, такие пароли трудно запомнить, поэтому для их хранения вам следует пользоваться такой программой, как бесплатный и открытый Password Safe. (Кстати, PRTK способна тестировать только 900 паролей Password Safe 3.0 в секунду.)
Но даже если так, это все равно может вам не помочь. AccessData продает еще одну программу, Forensic Toolkit (Экспертно-следственный пакет), которая, помимо всего прочего, сканирует жесткий диск на предмет любых строк печатного текста. Она просматривает документы, системный реестр, почтовый архив, своп-файлы, свободное пространство диска... абсолютно всё. А затем формирует из всего найденного словарь, который скармливает PRTK.
И PRTK взламывает более 50% паролей лишь по одному такому словарю.
Так происходит потому, что подсистема управления памятью ОС Windows в процессе обычной работы оставляет фрагменты данных повсюду. Вы вводите пароль в программу, и он размещается где-то в памяти. Windows выгружает страницу памяти на диск, и она сохраняется в хвосте какого-то файла. Она перемещается в дальний угол вашего жесткого диска и остается там навечно. Linux и MacOS в этом отношении едва-ли сколь-нибудь лучше.
Я должен отметить, что все сказанное не имеет ничего общего с алгоритмом шифрования и длиной ключа. Слабый 40-битовый алгоритм не делает эти атаки проще, а стойкий 256-битовый алгоритм нисколько их не усложняет. Описанные атаки симулируют процесс ввода пользователем своего пароля, поэтому итоговый размер ключа не играет никакой роли.
Многие годы я повторял, что наиболее легкий способ атаковать криптографическую программу практически никогда не связан со взломом алгоритма, поскольку почти неизбежно в ней присутствует программная ошибка, позволяющая вам обойти математику и взломать софт. Похожая ситуация происходит и здесь. Самый простой способ узнать пароль — это даже не заниматься его подбором, а использовать сущностные недостатки самой операционной системы.
1 В оригинале статья называется "Choosing Secure Passwords", но переводчик счел нужным ее переименовать, поскольку, на его взгляд, приведенное в ней описание методик подбора паролей представляет больший интерес, чем рекомендации по созданию паролей, незначительно отличающиеся от всех остальных, — прим. пер.
комментариев: 9796 документов: 488 редакций: 5664
Для генерации ключа из пароля там используется стандарт s2k.
Его реализация разрабатывалась давно, когда компьютеры были относительно медленными. В новой версии GnuPG для более быстрых компьютеров для замедления подбора паролей рекоммендуется увеличить число итераций до 65535, что замедлит подбор пароля в 128 раз.
Для этого необходимо поместить в файл (для Windows синтаксис комманд будет немного отличаться):
строку:
Или использовать параметр коммандной строки: --s2k-count 8388608
Для проверки следует выполнить следующие комманды:
И получить результат вида:
Подробности см. в Linux-crypto
Кроме предложенных способов придумывания пароля можно предложить альтернативные варианты использования парольных фраз с гарантированной энтропией, абсолютно стойкие к ускоренному перебору с помощью любых статистических или эвристических механизмов:
проект Diceware
Так же стоит задуматься о шифровании всей ОС (Win или *nix), выносе загрузчика и дополнительного ключа на внешний носитель (*nix).
комментариев: 1515 документов: 44 редакций: 5786
комментариев: 11558 документов: 1036 редакций: 4118
Опечатка или я чего-то не понял? По умолчанию PGP и GnuPG используют режим Iterated-salted S2K с числом итераций равным 65535. Но при желании в GnuPG это число действительно можно повысить.
комментариев: 9796 документов: 488 редакций: 5664
Смотрим патч здесь
s2k mode 3, это конечено же и есть iterated+salted S2K.
В оригинальной версии действительно 65536 итераций, число которых и рекомендуется увеличить в 128 раз.
8388608 / 65536 = 128
комментариев: 11558 документов: 1036 редакций: 4118
Если так, то прежде, чем прописывать в конфиге s2k-count 8388608, следует снять пароли со всех закрытых ключей, а потом снова их установить, когда параметр указан.
Любопытно, но в документации нет сведений о влиянии этой опции на существующие ключи. Следует полагать, что действие параметра распространяется только на новые? Unknown, Вы это проверяли?
комментариев: 9796 документов: 488 редакций: 5664
По идее должно работать со всеми ключами и файлами. Это просто недокументированная опция.
Для дискового шифрования это более актуально, чем для хранения ключей. Но проверить это в стабильной ветке Debian не представляется возможным, не буду вдаваться здесь в технические детали. Если что, то я не виноват :)
По поводу статьи: в 99% случаев лучше простой подход Шнайера, а заморочки с искусственным увеличенем числа итераций или паролями с фиксированной энтропией – это только в качестве любопытного примера для особо параноидальных случаев.
комментариев: 34 документов: 10 редакций: 1
В качестве метода указал атаку перебором и 8-символьный пароль. В ответ он мне выдал: прогнозируемое время поиска пароля – 1 год!!!
И это всего-навсего ZIP-архив, который не является криптостойким, что уж говорить за PGP и другие профессиональные системы защиты.
Так что – извините за выражение – не надо ля-ля о возможности взлома паролей на обычных десктопах, это – иллюзия!
И щеголять огромным количеством перебора тоже не надо – это реклама, не больше. Гораздо логичнее и объективнеее будет указывать более нужный параметр – время взлома.
комментариев: 1515 документов: 44 редакций: 5786
комментариев: 437 документов: 30 редакций: 15
Есть хороший сайт на эту тему:
http://www.password-crackers.ru/
http://www.password-crackers.com/
комментариев: 9796 документов: 488 редакций: 5664
В статье указывается перебор со словарём, словарными корнями и суффиксами, что должно быть намного быстрее для "неслучайных" паролей. Насколько это соответствует Вашему методу перебора?
комментариев: 11558 документов: 1036 редакций: 4118
Сайт действительно хороший, стоит добавить в /Библиотека/Ссылки.
комментариев: 437 документов: 30 редакций: 15
Добавил в раздел.
Пусть цифра в 100к машин не кажется вам преувеличеной, некоторые люди имеют ботнет и побольше.
комментариев: 1515 документов: 44 редакций: 5786