Поиск по этому блогу

13 янв. 2009 г.

От теории к практике: взлом SSL

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

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

MD5

Одним из самых широко распространенных алгоритмов хэширования является Message-Digest algorithm 5, или попросту MD5. Он был разработан еще в начале 90-х и благодаря своему использованию в различных интернет-спецификациях широко применяется везде, где требуется функция хеширования. Как и любой другой алгоритм, связанный с безопасностью, он пристально изучался экспертами непосредственно с момента своего появления.

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

В конечном итоге, способ проведения подобной атаки на MD5 был найден; однако это не единственная существующая ее разновидность. В 2004 году был разработан метод, позволяющий создать два файла с одинаковым хешем MD5. Создаваемые файлы должны были быть практически идентичными, за исключением 128 смежных байтов, которые могли отличаться.

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

Впрочем, в 2007 году способ проведения атаки был доработан, что позволило создавать конфликты с куда большей степенью свободы. Данный метод получил название "атаки с подобранным префиксом" (chosen prefix attack). Он позволял атакующим взять два произвольных файла (подобранных префикса) и затем сгенерировать такие суффиксы для каждого из файлов, которые позволяли создать хэш MD5, одинаковый для них обоих.

И если случай со 128 байтами не привел к отказу от MD5, то после этой ситуации отмена MD5 уж точно должна была состояться. Однако реакция специалистов оказалась идентичной той, которая наблюдалась в 2004 году – метод был признан лишь интересной теорией, а не практической уязвимостью. А между тем, он позволял проделывать весьма конкретные трюки – такие как подготовка фальшивых предсказаний относительно исхода президентских выборов в США в 2008 году, хотя и не подвергал непосредственной опасности системы, строящие свою защиту с использованием MD5.

И наконец, доклад, представленный на 25-й конференции Chaos Communication Congress, должен окончательно похоронить все доводы о том, что дыра в MD5 является "теоретической".

PKI

Одной из систем, которые могут использовать MD5, является инфраструктура открытых ключей (PKI). PKI - это механизм, позволяющий машинам и людям доказывать свою идентичность другим компьютерным системам. Самым видимым вариантом применения PKI могут считаться сертификаты безопасных сайтов, которые подтверждают, что, например, безопасное соединение с https://amazon.com/ - это действительно соединение с компьютерами Amazon, а не проделка какого-нибудь хитроумного хакера. Делается это с помощью организации иерархической архитектуры доверенных структур.

В корне системы, на самом доверительном уровне, располагаются центры сертификации. Это компании наподобие Verisign и Thawte. Считается, что они выдают сертификаты только тем людям и организациям, которые подтвердили заявленные о себе данные. В случае если все условия соблюдены, центр сертификации выпускает сертификат, представляющий из себя небольшой файл, который содержит текст примерно следующего содержания: "этот сервер находится под контролем Amazon, подтверждено Verisign".

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

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

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

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

Сертификаты обычно заказывают онлайн. Тот, кому нужен сертификат, заполняет запрос на подпись сертификата (Certificate Signing Request, CSR), внося в него персональную информацию, указывая тип необходимого сертификата, имя домена, на который будет выдан сертификат, а также некоторую криптографическую информацию. После этого запрос отсылается в центр сертификации, который после проверки всех данных криптографически подписывает его, создавая, таким образом, сертификат.

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

От теории к практике

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

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

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

Сертификат промежуточного центра можно использовать для подделки сертификата того же amazon.com и осуществления MITM атак, поскольку проблема невозможности предоставления гарантий аутентичности в этом случае исчезает. Браузер клиента поверит сертификату amazon.com и не поднимет тревоги.

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

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

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

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

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

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

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

Оригинал: http://arstechnica.com/news.ars/post/20081231-theoretical-attacks-yield-practical-attacks-on-ssl-pki.html

Комментариев нет:

Sociable