id: Гость   вход   регистрация
текущее время 14:40 28/03/2024
создать
просмотр
редакции
ссылки

Современная техника взлома паролей 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-битовый алгоритм нисколько их не усложняет. Описанные атаки симулируют процесс ввода пользователем своего пароля, поэтому итоговый размер ключа не играет никакой роли.


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


© 2007 Брюс Шнайер
Перевод © 2007 SATtva


1 В оригинале статья называется "Choosing Secure Passwords", но переводчик счел нужным ее переименовать, поскольку, на его взгляд, приведенное в ней описание методик подбора паролей представляет больший интерес, чем рекомендации по созданию паролей, незначительно отличающиеся от всех остальных, — прим. пер.


 
На страницу: 1, 2, 3 След.
Комментарии [скрыть комментарии/форму]
— unknown (14/01/2007 14:44)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Вниманию пользователей GnuPG:

Для генерации ключа из пароля там используется стандарт s2k.
Его реализация разрабатывалась давно, когда компьютеры были относительно медленными. В новой версии GnuPG для более быстрых компьютеров для замедления подбора паролей рекоммендуется увеличить число итераций до 65535, что замедлит подбор пароля в 128 раз.

Для этого необходимо поместить в файл (для Windows синтаксис комманд будет немного отличаться):



строку:



Или использовать параметр коммандной строки: --s2k-count 8388608

Для проверки следует выполнить следующие комманды:



И получить результат вида:



Подробности см. в Linux-crypto

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

проект Diceware

Так же стоит задуматься о шифровании всей ОС (Win или *nix), выносе загрузчика и дополнительного ключа на внешний носитель (*nix).
— spinore (14/01/2007 16:36)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
Опция --s2k-count появилась по слухам в gpg 1.4.6
— SATtva (14/01/2007 17:50)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
В новой версии GnuPG для более быстрых компьютеров для замедления подбора паролей рекоммендуется увеличить число итераций до 65535, что замедлит подбор пароля в 128 раз.

Опечатка или я чего-то не понял? По умолчанию PGP и GnuPG используют режим Iterated-salted S2K с числом итераций равным 65535. Но при желании в GnuPG это число действительно можно повысить.
— unknown (14/01/2007 18:33)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Да, опечатка и небольшая путаница:

Смотрим патч здесь



s2k mode 3, это конечено же и есть iterated+salted S2K.
В оригинальной версии действительно 65536 итераций, число которых и рекомендуется увеличить в 128 раз.

8388608 / 65536 = 128
— SATtva (14/01/2007 19:44)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Кстати, как это отразится на существующих закрытых ключах? GnuPG хранит показатель числа итераций в файле связки для каждого ключа или берёт показатель только из конфигурации? В последнем случае при попытке использовать закрытый ключ пользователь станет получать ошибку неверного пароля.

Если так, то прежде, чем прописывать в конфиге s2k-count 8388608, следует снять пароли со всех закрытых ключей, а потом снова их установить, когда параметр указан.

Любопытно, но в документации нет сведений о влиянии этой опции на существующие ключи. Следует полагать, что действие параметра распространяется только на новые? Unknown, Вы это проверяли?
— unknown (14/01/2007 21:09)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Всё дело в том, что в Linux gpg активно используется не только для шифрования почты, но и для множества других целей. Например, для менеджмента ключей шифрования дисков. Вот что написано в инструкции к одной из таких систем в разделе GnuPG.



Included optional gpg patch makes gpg password iteration 128 times slower.
gpg stores new iteration value along with seed bytes into symmetric cipher
encrypted output file or secret keyring, so unpatched gpg versions will read
and decrypt the data just fine.



По идее должно работать со всеми ключами и файлами. Это просто недокументированная опция.
Для дискового шифрования это более актуально, чем для хранения ключей. Но проверить это в стабильной ветке Debian не представляется возможным, не буду вдаваться здесь в технические детали. Если что, то я не виноват :)

По поводу статьи: в 99% случаев лучше простой подход Шнайера, а заморочки с искусственным увеличенем числа итераций или паролями с фиксированной энтропией – это только в качестве любопытного примера для особо параноидальных случаев.
— omni (17/01/2007 17:52)   профиль/связь   <#>
комментариев: 34   документов: 10   редакций: 1
Что я скажу в ответ на все эти ваши научные выкладки. Взломом паролей я никогда не занимался, но недавно один раз понадобилось подобрать пароль к забытому ZIP-архиву. Скачал лучший взломщик ZIP-архивов – AZPR 4, который перебирает чуть ни миллионы комбинаций в секунды. Запустил его, он правильно определил проц, частоту свыше 3-х гигагерц, попросил указать метод и вероятную длину пароля.
В качестве метода указал атаку перебором и 8-символьный пароль. В ответ он мне выдал: прогнозируемое время поиска пароля – 1 год!!!
И это всего-навсего ZIP-архив, который не является криптостойким, что уж говорить за PGP и другие профессиональные системы защиты.
Так что – извините за выражение – не надо ля-ля о возможности взлома паролей на обычных десктопах, это – иллюзия!
И щеголять огромным количеством перебора тоже не надо – это реклама, не больше. Гораздо логичнее и объективнеее будет указывать более нужный параметр – время взлома.
— spinore (17/01/2007 21:30)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
omni, наверняка программа AZPR не является лучшей в своём роде. За год переберутся все возможные пароли такой длины, допсутим. Это означает, что с большой вероятностью пароль будет найден менее чем за год. + Учтите, что могут ломать не на 3ГГц компьютере, а на кластере, если ваш архив сильно кому-то понадобится.
— Kent (17/01/2007 22:47)   профиль/связь   <#>
комментариев: 437   документов: 30   редакций: 15
AZPR (или расширенный вариант, ARCHPR) является лучшей в своём роде.
Есть хороший сайт на эту тему:
http://www.password-crackers.ru/
http://www.password-crackers.com/
— unknown (18/01/2007 09:07)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
В качестве метода указал атаку перебором и 8-символьный пароль.

В статье указывается перебор со словарём, словарными корнями и суффиксами, что должно быть намного быстрее для "неслучайных" паролей. Насколько это соответствует Вашему методу перебора?
— SATtva (18/01/2007 11:07)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Есть хороший сайт на эту тему:
http://www.password-crackers.ru/

Сайт действительно хороший, стоит добавить в /Библиотека/Ссылки.
— Kent (18/01/2007 20:24, исправлен 18/01/2007 20:50)   профиль/связь   <#>
комментариев: 437   документов: 30   редакций: 15
В английской версии подборка софта побольше. Поэтому и дал две ссылки.

Добавил в раздел.
— Гость (19/01/2007 20:55)   <#>
Загружаем взломом этого пароля ботнет в 100000 машин, и получаем резултьтать за полминуты, вместо года.
Пусть цифра в 100к машин не кажется вам преувеличеной, некоторые люди имеют ботнет и побольше.
— spinore (19/01/2007 21:24)   профиль/связь   <#>
комментариев: 1515   документов: 44   редакций: 5786
100.000 – это всего лишь 5 порядков. Обычно криптостойкие пароли нормальной длины имеют куда больший запас порядков по времени относительно мощности современных систем, даже доступных для АНБ.
— Гость (20/01/2007 07:01)   <#>
ну так обычно пароли не являются криптостойкими, и имхо 100к машин хватит чтобы сломать 90% паролей за обозримое время.
На страницу: 1, 2, 3 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3