- •Знакомство с ssl
- •Цифровые сертификаты
- •Типы сертификатов
- •Аутентификация на стороне клиента или сервера
- •Файл ключей и файл со списком доверенных источников
- •Ssl и WebSphere Application Server
- •Ssl и Integrated Solutions Console
- •Какие преимущества дает использование ssl?
- •2. От теории к практике: взлом ssl
- •От теории к практике
- •3. Найдена дыра в протоколе ssl
- •4. Взлом ssl. Перехват паролей в зашифрованных соединениях.
- •Руководство
- •5. Войны в песочнице — Часть 2. Обход https
- •Secure Sockets Layer
- •Пассивное наблюдение
- •Man in the middle
- •Пользовательские интерфейсы
- •Как пользователь использует ssl?
- •Завершение истории
- •6. Критическая уязвимость в ssl вышла из разряда теоретических: исследователи выпустили программу для взлома шифрования
- •Криптографический троян
- •Mozilla и OpenSsl: просто ужасно, не так ли?
- •7. Повышение защищенности протокола https при помощи прокси-сервера
2. От теории к практике: взлом 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. Созданный экспертами эксплоит направлен именно на него.