SSL 3.0
SSL 3.0 — это третья версия протокола Secure Sockets Layer (SSL), криптографического протокола, предназначенного для обеспечения безопасной передачи данных между клиентом и сервером в компьютерной сети. Разработанный компанией Netscape Communications в 1996 году, SSL 3.0 стал предшественником протокола Transport Layer Security (TLS) и на протяжении многих лет являлся основой для защиты интернет-соединений, в частности, в протоколе HTTPS. В настоящее время протокол признан устаревшим и небезопасным, его использование настоятельно не рекомендуется из-за критических уязвимостей.
История
Предпосылки создания
В середине 1990-х годов с ростом популярности Всемирной паутины возникла острая необходимость в защите конфиденциальных данных, передаваемых между веб-браузерами и серверами. Первая версия протокола SSL (SSL 1.0) была разработана компанией Netscape в 1994 году, но никогда не публиковалась из-за серьёзных проблем безопасности. В 1995 году была выпущена версия SSL 2.0, которая, однако, также содержала ряд уязвимостей, включая отсутствие защиты от атак типа «человек посередине» (MITM) и слабую аутентификацию.
Разработка и стандартизация
SSL 3.0 был представлен компанией Netscape в 1996 году как значительное улучшение по сравнению с предшественником. Протокол устранил многие недостатки SSL 2.0, добавив поддержку более совершенных криптографических алгоритмов, улучшенную аутентификацию и защиту от известных атак. В 1999 году на основе SSL 3.0 был разработан стандарт TLS 1.0, который был опубликован Инженерным советом Интернета (IETF) в документе RFC 2246. Несмотря на появление TLS, SSL 3.0 продолжал широко использоваться в течение многих лет, особенно в устаревших системах и программном обеспечении.
Устаревание и отказ от использования
В 2014 году исследователи безопасности из Google обнаружили критическую уязвимость в протоколе SSL 3.0, получившую название POODLE (Padding Oracle On Downgraded Legacy Encryption). Эта атака позволяла злоумышленнику расшифровать зашифрованные данные, например, файлы cookie сессии, используя особенности блочного шифрования в режиме CBC. После публикации информации об уязвимости ведущие разработчики браузеров и серверного программного обеспечения (включая Google, Mozilla, Microsoft и Apple) начали поэтапно отключать поддержку SSL 3.0 по умолчанию. В 2015 году IETF официально признала SSL 3.0 устаревшим в документе RFC 7568, рекомендовав прекратить его использование.
Архитектура и принцип работы
SSL 3.0, как и последующие версии TLS, работает на транспортном уровне модели OSI, располагаясь между прикладным протоколом (например, HTTP) и транспортным протоколом (обычно TCP). Протокол обеспечивает три основные функции безопасности: аутентификацию сторон, конфиденциальность данных и целостность данных.
Подпротоколы
SSL 3.0 состоит из двух основных подпротоколов:
- Протокол записи (Record Protocol): Отвечает за фрагментацию, сжатие, шифрование и добавление кода аутентификации сообщения (MAC) к данным, передаваемым между клиентом и сервером. Он обеспечивает конфиденциальность и целостность данных на уровне сессии.
- Протокол рукопожатия (Handshake Protocol): Используется для установления безопасного соединения. В ходе рукопожатия стороны согласовывают версию протокола, выбирают криптографические алгоритмы, обмениваются ключами и аутентифицируют друг друга (обычно сервер, а при необходимости и клиент).
Процесс рукопожатия
Процесс установления соединения по SSL 3.0 включает несколько этапов:
- ClientHello: Клиент отправляет серверу сообщение, содержащее поддерживаемые версии протокола, список криптографических алгоритмов (шифров) и случайное число.
- ServerHello: Сервер выбирает версию протокола и шифр из предложенных клиентом, отправляет своё случайное число и свой сертификат (обычно X.509).
- ServerHelloDone: Сервер сообщает, что его часть приветствия завершена.
- ClientKeyExchange: Клиент генерирует предварительный секрет (pre-master secret), шифрует его открытым ключом из сертификата сервера и отправляет обратно. Из этого секрета и случайных чисел обе стороны вычисляют общий сессионный ключ.
- ChangeCipherSpec: Клиент и сервер отправляют сообщения, указывающие, что с этого момента все данные будут шифроваться с использованием согласованных параметров.
- Finished: Стороны обмениваются зашифрованными сообщениями, подтверждающими успешное завершение рукопожатия.
После завершения рукопожатия начинается защищённая передача данных прикладного уровня.
Криптографические алгоритмы
SSL 3.0 поддерживал широкий спектр криптографических алгоритмов, хотя многие из них в настоящее время считаются небезопасными.
Шифрование
- Симметричное шифрование: Использовались блочные шифры (DES, 3DES, RC2, IDEA) и поточный шифр RC4. Режим шифрования для блочных шифров — CBC (Cipher Block Chaining).
- Асимметричное шифрование: Для обмена ключами и аутентификации применялись алгоритмы RSA и Diffie-Hellman (включая анонимный вариант).
Хеширование и аутентификация
- Хеш-функции: Для вычисления кодов аутентификации сообщений (MAC) использовались MD5 и SHA-1.
- MAC: В SSL 3.0 использовался собственный механизм вычисления MAC, который отличался от более поздних версий TLS. Он включал в себя конкатенацию секретного ключа, данных и некоторых констант.
Сертификаты
Для аутентификации сервера (и опционально клиента) использовались цифровые сертификаты стандарта X.509. Сертификаты выдавались удостоверяющими центрами (CA) и содержали открытый ключ и информацию о владельце.
Уязвимости и критика
Основной причиной отказа от SSL 3.0 стало наличие множества критических уязвимостей, которые делали протокол небезопасным для использования.
Атака POODLE
Наиболее известная уязвимость, обнаруженная в 2014 году. Атака POODLE (Padding Oracle On Downgraded Legacy Encryption) эксплуатировала особенности блочного шифрования в режиме CBC. Злоумышленник, имеющий возможность перехватывать и модифицировать трафик (например, в общедоступной Wi-Fi сети), мог заставить клиент и сервер переключиться на SSL 3.0 (атака понижения версии) и затем расшифровать данные, такие как файлы cookie сессии. Уязвимость была оценена как критическая, так как позволяла получить доступ к конфиденциальной информации.
Другие уязвимости
- Отсутствие защиты от атак понижения версии: Протокол не имел надёжных механизмов для предотвращения принудительного перехода на более старые и небезопасные версии (SSL 2.0).
- Слабые алгоритмы: Поддержка устаревших и небезопасных алгоритмов, таких как RC4 (подверженного атакам на основе статистического анализа) и 3DES (с низкой производительностью и уязвимостью к атакам Sweet32).
- Проблемы с реализацией MAC: Механизм вычисления MAC в SSL 3.0 был менее надёжным, чем в TLS 1.0, и делал протокол уязвимым для некоторых атак на целостность данных.
- Отсутствие поддержки современных расширений: SSL 3.0 не поддерживал расширения, такие как SNI (Server Name Indication) и ALPN (Application-Layer Protocol Negotiation), которые стали стандартом в более поздних версиях TLS.
Влияние и наследие
Несмотря на то, что SSL 3.0 был признан устаревшим и небезопасным, его роль в истории развития интернет-безопасности огромна. Протокол стал первым широко распространённым стандартом для защиты веб-трафика и заложил основы для всех последующих версий TLS. Многие концепции, реализованные в SSL 3.0, такие как протокол рукопожатия и протокол записи, были перенесены в TLS с минимальными изменениями.
SSL 3.0 также способствовал популяризации HTTPS и электронной коммерции, предоставив пользователям и владельцам сайтов инструмент для защиты конфиденциальных данных. Однако, его уязвимости, особенно POODLE, стали важным уроком для сообщества разработчиков, показав необходимость постоянного совершенствования криптографических протоколов и своевременного отказа от устаревших технологий. В настоящее время все современные браузеры и серверы отключают поддержку SSL 3.0 по умолчанию, а его использование считается грубым нарушением правил безопасности.
Источники
- RFC 6101: The Secure Sockets Layer (SSL) Protocol Version 3.0 (исторический документ).
- RFC 7568: Deprecating Secure Sockets Layer Version 3.0.
- B. Moller, T. Duong, K. Kotowicz. "This POODLE Bites: Exploiting The SSL 3.0 Fallback." (2014).
- W. Stallings. "Cryptography and Network Security: Principles and Practice." (6th edition).
- IETF. "Transport Layer Security (TLS) Protocol Version 1.0." RFC 2246.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →