Электронная библиотека » Коллектив Авторов » » онлайн чтение - страница 16


  • Текст добавлен: 9 ноября 2013, 23:45


Автор книги: Коллектив Авторов


Жанр: Зарубежная компьютерная литература, Зарубежная литература


сообщить о неприемлемом содержимом

Текущая страница: 16 (всего у книги 69 страниц) [доступный отрывок для чтения: 18 страниц]

Шрифт:
- 100% +
«Грубая сила»

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

Основы метода «грубой силы»

В качестве примера рассмотрим велосипедный замок, который открывается набором ключевой комбинации из трех цифр. Каждая цифра – это число от 0 до 9. Открыть замок нетрудно, если располагать временем и если ключевая комбинация во время вскрытия замка не изменяется. Общее число всевозможных комбинаций (ключей) – 10 3 , или 1000. Предположив, что велосипедный вор способен перебирать 30 комбинаций в минуту, определим, что в худшем для него случае он откроет замок приблизительно через 1000: 30 = 33 мин. При этом имейте в виду, что после выбора очередной комбинации число возможных комбинаций (ключевое пространство) уменьшается, а шансы угадать ключевую комбинацию на следующем шаге увеличиваются.

Метод «грубой силы» всегда приводит к успеху, потому что ключевое пространство, как бы велико оно ни было, всегда конечно. Противостоять «грубой силе» можно, увеличивая длину ключа и тем самым время расшифровки сообщения. В случае примера с велосипедным замком три цифры ключевого пространства позволят велосипедному вору украсть велосипед максимум за 33 мин. Поэтому для велосипедного вора в данном случае метод «грубой силы» выглядит привлекательным. Рассмотрим велосипедный замок с ключевой комбинацией из пяти цифр, для которого число возможных комбинаций равно 100 000. Теперь для подбора ключевой комбинации методом «грубой силы» потребуется 55,5 ч. Ясно, что большинство воров отказалось бы от этой затеи и искало бы более легкую добычу.

Суть метода «грубой силы» применительно к симметричным алгоритмам, например к DES, аналогична подбору ключевых комбинаций велосипедного замка. Именно таким образом алгоритм DES был взломан компьютером «Deep Crack» («Искусный взломщик»). Ключ DES состоит из 56 бит, поэтому при взломе проверялись все битовые комбинации ключа между строкой из 56 нулей и 56 единиц, пока не был найден нужный ключ.

В случае распределенных попыток взлома DES пример с пятицифровым велосипедным замком должен быть слегка изменен. Идею метода распределенной «грубой силы» можно проиллюстрировать на примере подбора ключевой комбинации несколькими ворами, действующими одновременно и имеющими в своем распоряжении точную копию велосипедного замка, закрытого одной и той же ключевой комбинацией оригинала. Предположим, что 50 воров пытаются одновременно подобрать ключевую комбинацию. Каждый из них должен перебрать 2000 комбинаций (подпространство ключей). Причем ни у каких двух воров подпространства ключей не пересекаются. В таком случае каждую минуту тестируется ни 30 комбинаций, а 1500 комбинаций в минуту, и все возможные комбинации могут быть проверены приблизительно за 67 мин. Вспомните, что ранее одному вору требовалось для подбора ключевой комбинации 55 ч, а 50 совместно подбирающих комбинации воров смогут украсть велосипед за время, едва превышающее 1 ч. Распределенные компьютерные приложения, основанные на тех же принципах, позволили Distributed.net взломать DES менее чем за 24 ч.

Использовать метод «грубой силы» к RSA и к другим криптосистемам с открытым ключом сложнее. Поскольку алгоритм RSA может быть раскрыт разложением ключа на сомножители, то при небольшой длине используемых ключей (намного меньше, чем любая программная реализация RSA смогла бы себе позволить) человек с помощью карандаша и бумаги сможет взломать алгоритм. Но для ключей с большим количеством битов время нахождения сомножителей ключа (время факторизации) резко возрастает. Кроме того, факторизацию трудно реализовать распределенными вычислениями. Атаки, основанные на распределенной факторизации, потребуют большей координации действий участников атаки, чем при параллельном подборе ключей из ключевого пространства. Известны проекты, например проект www-факторизации (www.npac.syr.edu/factoring.html), предназначенные для решения этих вопросов. В настоящее время в рамках проекта www-факторизации предпринимаются попытки разложить на сомножители ключи со 130 цифрами. Для сравнения 512-битовые ключи приблизительно состоят из 155 цифр.

Применение метода «грубой силы» для расшифровки паролей

Часто, особенно если доступен список зашифрованных паролей, для расшифровки паролей используется метод «грубой силы». Обычно точное число символов в пароле неизвестно, но в большинстве случаев справедливо полагать, что в пароле от 4 до 16 символов. Одному символу пароля может быть присвоено около 100 значений, поэтому число паролей изменяется от 1004 до 10016. Несмотря на внушительные числа, они конечны, поэтому пароль может быть определен с помощью атаки методом «грубой силы».

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

Обычно пароли хранятся в формате кэш-величин. После ввода пароля при помощи однонаправленных кэш-функций вычисляется его кэш-величина, например как это реализовано в алгоритме MD5 (Message Digest 5 – дайджест сообщения 5). Вычисленная кэш-величина запоминается. Функции кэширования однонаправлены в том смысле, что по кэш-величине практически невозможно восстановить данные, по которым она была вычислена. Серверу не обязательно знать пароли. Ему достаточно удостовериться, что пользователь знает свой пароль. При установлении подлинности пользователя вычисляется кэш-величина введенного им пароля, которая сравнивается с величиной, хранимой на сервере. При их совпадении подтверждается подлинность пользователя. В противном случае системой попытка подключения отвергается и в журнале регистрации сохраняются необходимые сведения.

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

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

Наиболее часто для вскрытия паролей методом «грубой силы» используются программы L0phtcrack для Windows и Crack and John the Ripper для UNIX. Их применяют не только зловредные хакеры. Специалисты в области безопасности считают их полезными при аудите компьютерных систем. Ведь зная, сколько времени потребуется на взлом пароля специалисту в области безопасности, можно приблизительно оценить время, необходимое злоумышленнику для того, чтобы сделать то же самое. Далее будет кратко рассказано о каждой их этих программ. Но помните, что всегда следует получить письменное разрешение системного администратора на их использование до начала применения любой из этих программ.

Программа L0phtcrack

Организация L0pht выпустила в 1997 году программу L0phtCrack – инструментальное средство аудита паролей для Windows NT. В ней реализовано несколько способов восстановления паролей по их кэш-величинам, основанным главным образом на методе «грубой силы». Выбираемый набор символов определяет время и производительность, необходимые для перебора ключевого пространства. Очевидно, что чем больше символов в пароле, тем больше времени уйдет на атаку. Но атаки со словарем, которые для взлома паролей используют слова из базы данных паролей, обычно эффективны и не требуют много времени для вскрытия «слабых» паролей. В таблице 6.1 показана зависимость времени вскрытия паролей программой L0phtcrack 2.5 от выбранного набора символов.

Таблица 6.1. Время взлома паролей программой L0phtcrack 2.5 в результате атаки методом «грубой силы» на процессоре Quad Xeon 400 МГц

Использовано с разрешения LOpht


L0pht Heavy Industries – разработчик L0phtcrack продала права на программу @stake Security. После покупки @stake Security выпустила программу под названием LC3, которая является преемником L0phtcrack. LC3 – это усовершенствованная версия L0phtcrack 2.5, в которую добавлены возможности распределенного поиска паролей и простое приложение пассивного прослушивания сети, позволяющее перехватывать передаваемые по Ethernet кэши паролей. Дополнительно в состав LC3 включен мастер взлома паролей, помогающий в проведении аудита системных паролей менее квалифицированным пользователям. На рисунке 6.2 представлен отчет атаки со словарем на простые пароли пользователя программной LC3.

Рис. 6.2. Отчет результата простой атаки со словарем


В программе LC3 можно найти ряд усовершенствований программы L0phtcrack 2.5. Перепроектированный пользовательский интерфейс – одно из них. L0phtCrack и LC3 – коммерческие пакеты программ, но 15-дневную пробную версию программы можно получить по адресу www.atstake.com/research/lc3/download.html.

Утилита Crack

Одна из самых ранних и широко используемых утилит взлома паролей называется просто Crack. Так ее автор Алек Муффет (Alec Muffett) назвал программу угадывания паролей для UNIX-систем. Crack выполняется в UNIX-системах и взламывает их пароли. В основном работа программы основана на словарях. В последней версии программы Crack7 (v5.0a от 1996 года) автор дополнительно предусмотрел возможность применения метода «грубой силы» в случае неудачи атаки со словарем. В этом подходе наиболее интересным является то, что программа может выявить типовые случаи «улучшения» пользователями своих паролей. Например, вместо пароля «password» кто-то может выбрать вариант «pa55word». Программа Crack поддерживает конфигурируемые пользователем правила перестановки, которые отлавливают подобные варианты. Дополнительные сведения об Алеке Муффетте (Alec Muffett) и его программе Crack можно найти по адресу www.users.dircon.co.uk/~crypto.

Программа John the Ripper

John the Ripper – очередная программа взлома паролей. Она отличается от Crack тем, что работает под управлением UNIX, DOS и Win32. Crack больше подходит для систем старшего поколения, использующих алгоритмы crypt(), а John the Ripper – для современных систем, работающих по алгоритму MD5 и соответствующих ему форматов паролей. В основном John the Ripper используется против паролей UNIX, но выпущены расширения программы, позволяющие взламывать другие типы паролей, например кэш-величины паролей Windows NT LanManager (LANMAN) или пароли сервера Netscape LDAP (Netscape Lightweight Directory Access Protocol – реализация компанией Netscape упрощенного протокола службы каталогов). Программа John the Ripper поддерживает режим запоминания результата (incremental mode): у программы есть полезное свойство автоматически сохранять состояние программы во время взлома. В результате при прерывании работы программы подбор паролей возобновляется с прерванного места даже на другой системе. John the Ripper – часть проекта OpenWall, описание которого можно найти по адресу www.openwall.com/john.

Пример экранной формы программы John the Ripper показан на рис. 6.3, где дана вскрытая простая секция файла паролей в формате OpenBSD. Показанный ниже фрагмент файла паролей – отчет работы программы John the Ripper. На консоль выводится каждый подобранный пароль. Выведенное на консоль время подбора четырех паролей едва превышает 1 мин только потому, что автор поместил действующие пароли в начало списка паролей, используемого программой как словарь паролей. В действительности подбор паролей займет намного больше времени. После взлома файла паролей при помощи опции show его можно отобразить в читаемом виде.

Рис. 6.3. Образeц экранной формы программы John the Ripper

Неверное использование алгоритмов шифрования

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

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

Неверно организованный обмен ключами

Поскольку в алгоритме Диффи-Хеллмана не предусмотрена проверка подлинности участвующих в обмене ключами лиц, то он уязвим к атакам типа MITM – «злоумышленник посередине» (man-in-the-middle attacks). Протокол SSH-1 – наиболее известный пример, подтверждающий сказанное. Поскольку в протоколе не предусмотрено подтверждение подлинности клиента или сервера, то нельзя исключить возможность прослушивания коммуникаций. Именно это стало одной из главных причин пересмотра протокола SSH-1 и замены его на протокол SSH-2. В протоколе SSH-2 предусмотрено установление подлинности сервера или клиента. В зависимости от настроек протокола SSH-2 предупреждает или предотвращает атаки типа MITM, после того как клиент и сервер связались между собой хотя бы один раз. Но даже протокол SSH-2 уязвим к атакам типа MITM до первого ключевого обмена между клиентом и сервером.

В качестве примера атаки типа MITM рассмотрим следующую ситуацию. Пусть Алиса, используя алгоритм Диффи-Хеллмана, впервые обменивается ключами с Чарли, и их трафик проходит через сегмент сети, контролируемый Бобом. Если Боб не вмешался в обмен ключами, то он не сможет расшифровать и прочитать сообщения Алисы и Чарли, передаваемые через контролируемый им сегмент сети. Но предположим, что Боб, перехватив открытые ключи Алисы и Чарли, послал им свой собственный открытый ключ. Тогда Алиса будет уверена, что открытый ключ Боба – это открытый ключ Чарли, а Чарли будет думать, что открытый ключ Боба – это открытый ключ Алисы.

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

Ясно, что такой обмен нежелателен, потому что третье лицо не только может получить доступ к конфиденциальной информации, но и изменить ее по своему желанию. При этом типе атак криптографические алгоритмы не взламываются, потому что для Боба секретные ключи Алисы и Чарли остались неизвестными. Так что фактически алгоритм Диффи-Хеллмана не взломан. Следует осторожно подходить к использованию механизма обмена ключами, реализованному в любой криптосистеме с открытым ключом. Если протокол обмена ключами не поддерживает установления подлинности одной, а лучше двух сторон, участвующих в обмене информации, то он может быть уязвим к атаке типа MITM. В системах аутентификации используются цифровые сертификаты (обычно X.509 – стандарт на шифрование данных при их передаче в сетях), например поставляемые Thawte или VeriSign.

Кэширование пароля по частям

Ранние версии клиентов Windows запоминали пароли в формате кэш-величин LanManager (LANMAN), который на самом деле чрезвычайно опасен с точки зрения безопасности аутентификации. Но поскольку эта глава посвящена криптографии, то обсуждение аутентификации LANMAN будет ограничено обсуждением уязвимостей хранения паролей.

Так же как и в UNIX, пароли LANMAN никогда не хранятся в читаемом формате. Они всегда записаны в формате кэш-величин. Ошибка заключается в том, что, несмотря на использование для шифрования паролей криптостойкого алгоритма DES, формат хранения кэшированных величин таков, что его можно относительно просто вскрыть. Каждый пароль должен состоять из 14 символов. Если в пароле менее 14 символов, то он дополняется до 14 символов. При шифровании пароль разбивается на две половинки по 7 символов в каждой, каждая из которых зашифрована алгоритмом DES. Результирующая кэш-величина пароля состоит из двух соединенных половинок пароля, зашифрованных алгоритмом DES.

Поскольку известно, что DES – это криптостойкий алгоритм, то в чем ошибка реализации? Разве просто взломать алгоритм DES? Не все так просто. Вспомните, что существует приблизительно 100 символов, которые можно использовать для записи пароля. Выбирая пароли из 14 символов, получается около 100 14 или 1.0x10 28 возможных вариантов. Пароли LANMAN сильно упрощены, потому что в них прописные и строчные буквы не различаются: все символы представлены прописными буквами. Более того, если пароль состоит менее чем из 8 символов, то вторая половинка всегда идентична первой и нет необходимости в ее взломе. Если используются только буквы (без цифр и знаков пунктуации), то число всевозможных комбинаций пароля сокращается до 26 7 (грубо говоря, до 8 млрд). Это число может показаться слишком большим для атаки «грубой силы», но вспомните, что это теоретическая оценка наибольшего числа возможных комбинаций. А поскольку большинство паролей пользователей повторяются, то атака со словарем приведет к успеху быстрее. Суть в том, что атака со словарем на два пароля из 7 символов (или даже на один) приведет к взлому пароля намного быстрее, чем та же атака на пароль из 14 символов.

Предположим, что в процедуре кэширования паролей LANMAN используются сильные пароли из двух и более символов. К сожалению, среди пользователей распространена привычка добавлять в конец пароля дополнительные символы. Например, если пользователь добавит в строку чисел или символов свой день рождения, например «MONTANA45 %», то пароль безопаснее от этого не станет. LANMAN разобьет его на две строки: «MONTANA» и «45 %». Вероятно, и первая, и вторая строки будут быстро определены. Первая – в результате атаки со словарем, а вторая – атаки «грубой силы», потому что она состоит только из трех символов. Поэтому в операционных системах Windows NT и Windows 2000 следует по возможности исключить кэширование LANMAN, но при этом клиенты Win9x не смогут установить их подлинность.


Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Следующая
  • 4.6 Оценок: 5

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации