Открыть сервис

Протокол SSL 3.0

SSL 3.0 (Secure Sockets Layer, версия 3.0) — это устаревший криптографический протокол, предназначенный для обеспечения безопасной передачи данных между клиентом и сервером в компьютерных сетях, в первую очередь в сети Интернет. Разработанный компанией Netscape Communications в 1996 году, он стал последней версией протокола SSL и непосредственным предшественником протокола Transport Layer Security (TLS). На протяжении более 15 лет SSL 3.0 был одним из основных средств защиты веб-трафика, однако в 2014 году в нём была обнаружена критическая уязвимость POODLE, после чего использование протокола было повсеместно прекращено.

История

Предпосылки создания

В середине 1990-х годов коммерческое использование Интернета начало активно развиваться. Возникла необходимость в защите конфиденциальных данных — номеров кредитных карт, паролей и личной переписки — при передаче по открытым сетям. Существовавшие на тот момент протоколы безопасности (например, S-HTTP) не получили широкого распространения. Компания Netscape Communications, разработчик популярного браузера Netscape Navigator, взяла на себя инициативу по созданию универсального протокола защиты транспортного уровня.

Разработка и версии

Первая версия протокола, SSL 1.0, была разработана внутри компании в 1994 году, но никогда не публиковалась из-за серьёзных проблем безопасности. В 1995 году была выпущена и включена в браузер Netscape Navigator 1.1 версия SSL 2.0. Она содержала ряд уязвимостей, в том числе отсутствие защиты целостности сообщений и слабые методы аутентификации. В ответ на критику сообщества Netscape приступила к разработке SSL 3.0.

Протокол SSL 3.0 был представлен в 1996 году. Его спецификация была опубликована в виде интернет-черновика (draft) и впоследствии легла в основу стандарта TLS 1.0, который был принят IETF (Internet Engineering Task Force) в 1999 году (RFC 2246). Несмотря на появление TLS, SSL 3.0 оставался широко распространённым в течение многих лет, особенно в старых версиях браузеров и на серверном программном обеспечении.

Закат протокола

14 октября 2014 года исследователи безопасности из Google (Бадд Мёллер, Тай Дуонг и Кшиштоф Котович) опубликовали информацию об уязвимости POODLE (Padding Oracle On Downgraded Legacy Encryption). Эта атака позволяла злоумышленнику, контролирующему сетевой трафик, расшифровать содержимое защищённых сессий, например, файлы cookie аутентификации. Уязвимость была связана с особенностями заполнения (padding) блоков шифра в режиме CBC (Cipher Block Chaining) в SSL 3.0.

После публикации POODLE все основные разработчики браузеров и веб-серверов (Google, Mozilla, Microsoft, Apple) объявили о прекращении поддержки SSL 3.0 по умолчанию. В декабре 2014 года IETF официально объявила протокол устаревшим (deprecated) в RFC 7568. С этого момента использование SSL 3.0 в современных сетях считается небезопасным и не рекомендуется.

Архитектура и принцип работы

SSL 3.0 функционирует на транспортном уровне модели OSI (между транспортным и прикладным уровнями). Он обеспечивает три основных сервиса безопасности:

  • Аутентификация: проверка подлинности сторон (обычно сервера, а в двусторонней аутентификации — и клиента) с помощью цифровых сертификатов.
  • Конфиденциальность: шифрование передаваемых данных для защиты от перехвата.
  • Целостность: использование кодов аутентичности сообщений (MAC) для обнаружения подделки или изменения данных в пути.

Подпротоколы

Протокол SSL 3.0 состоит из двух основных подпротоколов:

  1. Протокол установления соединения (Handshake Protocol): Этот подпротокол отвечает за начальную настройку защищённого канала. В ходе рукопожатия (handshake) стороны согласовывают версию протокола, выбирают криптографические алгоритмы (шифр-набор, cipher suite), обмениваются ключами (обычно с использованием асимметричного шифрования, например, RSA или Diffie-Hellman) и аутентифицируют друг друга. В SSL 3.0 рукопожатие включает несколько этапов:
  • Клиент отправляет сообщение ClientHello (список поддерживаемых шифров, версий и случайное число).
  • Сервер отвечает ServerHello (выбранный шифр, версия, своё случайное число), а также отправляет свой сертификат и, при необходимости, запрос сертификата клиента.
  • Клиент проверяет сертификат сервера, генерирует предварительный главный секрет (pre-master secret), шифрует его открытым ключом сервера и отправляет обратно.
  • Обе стороны на основе предварительного главного секрета и случайных чисел вычисляют главный секрет (master secret) и из него — сессионные ключи.
  • Завершающие сообщения (Finished) подтверждают успешность установления соединения.
  1. Протокол записи (Record Protocol): Этот подпротокол отвечает за фрагментацию, сжатие (опционально), шифрование и добавление MAC к данным, поступающим от прикладного уровня (например, HTTP). Зашифрованные фрагменты затем передаются транспортному протоколу (обычно TCP). В SSL 3.0 шифрование и вычисление MAC выполняются последовательно: сначала к данным добавляется MAC, затем вся конструкция (данные + MAC + padding) шифруется.

Криптографические алгоритмы

SSL 3.0 поддерживал широкий набор шифр-наборов, включая:

Уязвимости и критика

SSL 3.0, несмотря на значительное улучшение по сравнению с SSL 2.0, был подвержен нескольким классам атак, которые в конечном итоге привели к его полному отказу.

Уязвимость POODLE (CVE-2014-3566)

Это самая известная и критическая уязвимость SSL 3.0. Суть атаки заключается в том, что при использовании блочного шифрования в режиме CBC протокол не проверяет корректность заполнения (padding) после расшифровки. Злоумышленник, контролирующий сеть (например, в публичной Wi-Fi-сети), может заставить браузер жертвы выполнить JavaScript-код, который инициирует множество запросов к целевому сайту. Анализируя зашифрованные ответы, атакующий может с высокой вероятностью угадать один байт зашифрованного текста (например, cookie). Повторяя атаку, он может расшифровать весь cookie-файл и перехватить сессию пользователя. Атака POODLE была особенно опасна тем, что злоумышленник мог принудительно понизить версию протокола до SSL 3.0, если сервер поддерживал его для совместимости (атака downgrade).

Другие атаки

  • BEAST (Browser Exploit Against SSL/TLS): Атака, опубликованная в 2011 году, также нацеленная на режим CBC в SSL 3.0 и TLS 1.0. Она позволяла расшифровать cookie-файлы, используя предсказуемость вектора инициализации (IV) в этих протоколах. Хотя BEAST была более актуальна для TLS 1.0, она также затрагивала SSL 3.0.
  • Атака на RC4: Потоковый шифр RC4, часто использовавшийся в SSL 3.0 как альтернатива режиму CBC, также был признан небезопасным. Исследования показали, что статистические аномалии в выходном потоке RC4 позволяют со временем восстановить часть зашифрованного текста.
  • Отсутствие поддержки современных алгоритмов: SSL 3.0 не поддерживает современные алгоритмы аутентифицированного шифрования (AEAD), такие как AES-GCM и ChaCha20-Poly1305, а также надёжные алгоритмы обмена ключами, такие как ECDHE (Elliptic Curve Diffie-Hellman Ephemeral).

Применение

На протяжении 1990-х и 2000-х годов SSL 3.0 был основным протоколом для защиты HTTPS-соединений. Он использовался в браузерах (Netscape Navigator, Internet Explorer, Firefox, Chrome), веб-серверах (Apache, Nginx, IIS), почтовых клиентах (для защищённого POP3, IMAP, SMTP) и других приложениях, требующих безопасной передачи данных.

После раскрытия уязвимости POODLE в 2014 году использование SSL 3.0 было полностью прекращено. Современные браузеры и операционные системы блокируют его по умолчанию. На серверной стороне администраторы отключают поддержку SSL 3.0 в конфигурациях веб-серверов и других служб. В настоящее время протокол SSL 3.0 не используется в безопасных сетевых коммуникациях.

Наследие

SSL 3.0 сыграл ключевую роль в развитии безопасного Интернета. Он стал первым по-настоящему массовым криптографическим протоколом, обеспечившим защиту электронной коммерции и онлайн-банкинга. Его архитектура и принципы работы легли в основу протокола TLS, который является его прямым преемником. Хотя сам SSL 3.0 устарел, его идеи — многоэтапное рукопожатие, использование сертификатов, разделение на подпротоколы — продолжают жить в современных версиях TLS (1.2, 1.3). Термин «SSL» до сих пор часто используется как синоним для TLS, хотя технически это некорректно.

Источники

  • RFC 6101: The Secure Sockets Layer (SSL) Protocol Version 3.0 (информационная версия, 2011).
  • RFC 7568: Deprecating Secure Sockets Layer Version 3.0 (2014).
  • B. Möller, T. Duong, K. Kotowicz. "This POODLE Bites: Exploiting The SSL 3.0 Fallback" (2014).
  • T. Dierks, E. Rescorla. "The Transport Layer Security (TLS) Protocol Version 1.2" (RFC 5246, 2008).
  • A. Freier, P. Karlton, P. Kocher. "The SSL Protocol Version 3.0" (Netscape, 1996).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →