Безопасность транспортного уровня
Безопасность транспортного уровня (TLS ), и его устаревший предшественник, Secure Sockets Layer (SSL ), представляют собой криптографические протоколы, предназначенные для обеспечения безопасности связи в течение компьютерная сеть. Некоторые версии протоколов широко используются в таких приложениях, как просмотр веб-страниц, электронная почта, обмен мгновенными сообщениями и передача голоса по IP (VoIP). Веб-сайты могут использовать TLS для защиты всей связи между своими серверами и веб-браузерами.
Протокол TLS нацелен в первую очередь на обеспечение конфиденциальности и целостности данных между два или более взаимодействующих компьютерных приложения. При защите с помощью TLS соединения между клиентом (например, веб-браузером) и сервером (например, wikipedia.org) должны иметь одно или несколько из следующих свойств:
- Соединение является частным (или безопасным), поскольку симметричная криптография используется для шифрования передаваемых данных. ключи для этого симметричного шифрования генерируются уникально для каждого соединения и основаны на общем секрете, который был согласован в начале сеанса (см. § Рукопожатие TLS). Сервер и клиент согласовывают детали того, какой алгоритм шифрования и криптографические ключи использовать, прежде чем будет передан первый байт данных (см. § Алгоритмы ниже). Согласование общего секрета является безопасным (согласованный секрет недоступен для перехватчиков и не может быть получен даже злоумышленником, который находится в середине соединения) и надежным (ни один злоумышленник не может изменить связи во время согласования без обнаружения).
- Идентификационные данные взаимодействующих сторон могут быть аутентифицированы с использованием криптографии с открытым ключом. Эту аутентификацию можно сделать необязательной, но обычно она требуется по крайней мере для одной из сторон (обычно для сервера).
- Соединение является надежным, поскольку каждое переданное сообщение включает проверку целостности сообщения с использованием аутентификации сообщения код для предотвращения необнаруженной потери или изменения данных во время передачи.
В дополнение к свойствам, указанным выше, тщательная конфигурация TLS может предоставить дополнительные свойства, связанные с конфиденциальностью, такие как прямая секретность, гарантирующая, что любое раскрытие ключей шифрования в будущем не может быть использовано для дешифрования любых сообщений TLS, записанных в прошлом.
TLS поддерживает множество различных методов для обмена ключами, шифрования данных и проверки целостности сообщений ( см. § Алгоритмы ниже). В результате безопасная конфигурация TLS включает в себя множество настраиваемых параметров, и не все варианты обеспечивают все свойства, связанные с конфиденциальностью, описанные в списке выше (см. § Обмен ключами (аутентификация), § Безопасность шифрования и § Таблицы целостности данных).
Были предприняты попытки подорвать аспекты безопасности связи, которые TLS стремится обеспечить, и протокол несколько раз пересматривался для устранения этих угроз безопасности (см. § Безопасность). Разработчики веб-браузеров также пересмотрели свои продукты для защиты от потенциальных слабых мест в системе безопасности после их обнаружения (см. история поддержки TLS / SSL веб-браузерами).
Протокол TLS состоит из двух уровней: запись TLS и протоколы подтверждения TLS.
TLS - это предлагаемый инженерной группой Интернета (IETF ) стандарт, впервые определенный в 1999 году, и текущая версия - это TLS 1.3, определенный в RFC 8446 (август 2018 г.). TLS основан на более ранних спецификациях SSL (1994, 1995, 1996), разработанных Netscape Communications для добавления протокола HTTPS в свой веб-браузер Navigator.
- 1 Описание
- 2 История и развитие
- 2.1 Система защищенных сетей передачи данных
- 2.2 Программирование защищенных сетей
- 2.3 SSL 1.0, 2.0 и 3.0
- 2.4 TLS 1.0
- 2.5 TLS 1.1
- 2.6 TLS 1.2
- 2.7 TLS 1.3
- 2.7.1 Безопасность транспорта предприятия
- 3 Цифровые сертификаты
- 3.1 Центры сертификации
- 4 Алгоритмы
- 4.1 Обмен ключами или согласование ключей
- 4.2 Шифр
- 4.3 Целостность данных
- 5 Приложения и внедрение
- 5.1 Веб-сайты
- 5.2 Веб-браузеры
- 5.3 Библиотеки
- 5.4 Другое использование
- 6 Безопасность
- 6.1 SSL 2.0
- 6.2 SSL 3.0
- 6.3 TLS
- 6.4 Атаки на TLS / SSL
- 6.4.1 Атака повторного согласования
- 6.4.2 Атаки на более раннюю версию: атака FREAK и атака Logjam
- 6.4.3 Межпротокольные атаки: DROWN
- 6.4.4 Атака BEAST
- 6.4.5 Атаки CRIME и BREACH
- 6.4.6 Временные атаки при заполнении
- 6.4.7 Атака POODLE
- 6.4.8 Атака RC4
- 6.4.9 Атака усечения
- 6.4.10 Атака Unholy PAC
- 6.4.11 Атака Sweet32
- 6.4.12 Реализация ошибки: ошибка Heartbleed, атака BERserk, ошибка Cloudflare
- 6.4.13 Обзор веб-сайтов, уязвимых для атак
- 6.5 Прямая секретность
- 6.6 Перехват TLS
- 7 Сведения о протоколе
- 7.1 Подтверждение TLS
- 7.1.1 Базовое рукопожатие TLS
- 7.1.2 Руки TLS с аутентификацией клиента hake
- 7.1.3 Возобновление подтверждения TLS
- 7.1.4 Подтверждение TLS 1.3
- 7.1.4.1 Идентификаторы сеанса
- 7.1.4.2 Билеты сеанса
- 7.2 Запись TLS
- 7.2.1 Протокол установления связи
- 7.2.2 Протокол предупреждений
- 7.2.3 Протокол ChangeCipherSpec
- 7.2.4 Протокол приложения
- 7.1 Подтверждение TLS
- 8 Поддержка виртуальных серверов на основе имен
- 9 Стандарты
- 9.1 Основные стандарты
- 9.2 Расширения
- 9.3 Информационные RFC
- 10 См. Также
- 11 Ссылки
- 12 Дополнительная литература
- 13 Внешние ссылки
Клиент-серверные приложения используют протокол TLS для связи по сети таким образом, чтобы предотвратить подслушивание и вмешательство.
Поскольку приложения могут взаимодействовать как с TLS (или SSL), так и без него, для клиента необходимо указать серверу настройку TLS-соединения. Один из основных способов добиться этого - использовать другой номер порта для TLS-соединений, например порт 443 для HTTPS. Другой механизм заключается в том, что клиент делает запрос к серверу для переключения соединения на TLS; например, сделав запрос STARTTLS при использовании протоколов почты и новостей.
После того, как клиент и сервер согласились использовать TLS, они согласовывают соединение с отслеживанием состояния, используя процедуру установления связи. Протоколы используют рукопожатие с асимметричным шифром , чтобы установить не только параметры шифра, но и общий ключ, специфичный для сеанса, с помощью которого дальнейшая связь шифруется с использованием симметричного шифра . Во время этого рукопожатия клиент и сервер согласовывают различные параметры, используемые для установления безопасности соединения:
- Рукопожатие начинается, когда клиент подключается к серверу с поддержкой TLS, запрашивая безопасное соединение, и клиент представляет список поддерживаемых наборы шифров (шифры и хэш-функции ).
- Из этого списка сервер выбирает шифр и хеш-функцию, которые он также поддерживает, и уведомляет клиента о решении.
- Сервер обычно затем обеспечивает идентификацию в виде цифрового сертификата . Сертификат содержит имя сервера, доверенный центр сертификации (CA), который подтверждает для проверки подлинности сертификата и открытого ключа шифрования сервера.
- Клиент подтверждает действительность сертификата перед продолжением.
- Для создания сеансовых ключей, используемых для безопасного соединения, клиент либо:
- шифрует случайное число с помощью открытого ключа сервера и d отправляет результат на сервер (который только сервер может расшифровать своим закрытым ключом); обе стороны затем используют случайное число для генерации уникального сеансового ключа для последующего шифрования и дешифрования данных во время сеанса
- использует обмен ключами Диффи – Хеллмана для безопасного создания случайного и уникального сеансового ключа для шифрования и дешифрования с дополнительным свойством прямой секретности: если закрытый ключ сервера будет раскрыт в будущем, он не может быть использован для дешифрования текущего сеанса, даже если сеанс перехватывается и записывается третьей стороной.
Это завершает рукопожатие и начинает защищенное соединение, которое шифруется и расшифровывается с помощью сеансового ключа, пока соединение не закрывается. Если какой-либо из вышеперечисленных шагов завершился неудачно, то квитирование TLS не удастся и соединение не будет создано.
TLS и SSL не подходят ни на один уровень модели OSI или модели TCP / IP. TLS работает «поверх какого-либо надежного транспортного протокола (например, TCP)», что означает, что он находится выше транспортного уровня . Он служит шифрованием для более высоких уровней, что обычно является функцией уровня представления . Однако приложения обычно используют TLS, как если бы это был транспортный уровень, хотя приложения, использующие TLS, должны активно контролировать инициирование установления связи TLS и обработку обменных сертификатов аутентификации.
| Протокол | Опубликован | Статус |
|---|---|---|
| SSL 1.0 | Неопубликовано | Неопубликовано |
| SSL 2.0 | 1995 | Не рекомендуется в 2011 г. (RFC 6176 ) |
| SSL 3.0 | 1996 | Устарело в 2015 г. (RFC 7568 ) |
| TLS 1.0 | 1999 | Устарело в 2020 г. |
| TLS 1.1 | 2006 | Устарело в 2020 г. |
| TLS 1.2 | 2008 | |
| TLS 1.3 | 2018 |
Сетевая система защищенных данных
Протокол безопасности транспортного уровня (TLS) вместе с несколькими другими базовыми платформами сетевой безопасности был разработан в рамках совместной инициативы, начатой в августе 1986 года среди национальных Агентство безопасности, Национальное бюро стандартов, Агентство оборонных коммуникаций y, а также двенадцать коммуникационных и компьютерных корпораций, инициировавших специальный проект под названием Secure Data Network System (SDNS). Программа была описана в сентябре 1987 года на 10-й Национальной конференции по компьютерной безопасности в большом количестве опубликованных статей. Инновационная исследовательская программа была сосредоточена на разработке следующего поколения защищенных компьютерных коммуникационных сетей и спецификаций продуктов, которые будут применяться для приложений в общедоступных и частных сетях. Он был призван дополнить быстро появляющиеся новые интернет-стандарты OSI, продвигающиеся как в профилях GOSIP правительства США, так и в огромных международных усилиях ITU-ISO JTC1 в Интернете. Первоначально известный как протокол SP4, он был переименован в TLS и впоследствии опубликован в 1995 году как международный стандарт ITU-T X.274 | ИСО / МЭК 10736: 1995.
Безопасное сетевое программирование
Ранние исследования в области безопасности транспортного уровня включали Безопасное сетевое программирование (SNP) интерфейс прикладного программирования (API), который в 1993 г. исследовал подход к созданию безопасного API транспортного уровня, очень похожего на сокеты Беркли, чтобы облегчить модернизацию уже существующих сетевых приложений с помощью мер безопасности.
SSL 1.0, 2.0 и 3.0
Netscape разработала оригинальные протоколы SSL, а Тахер Эльгамал, главный научный сотрудник Netscape Communications с 1995 по 1998 год, был назван «отцом SSL». SSL версии 1.0 никогда не выпускался публично из-за серьезных недостатков безопасности в протоколе. Версия 2.0, выпущенная в феврале 1995 года, содержала ряд недостатков в системе безопасности, которые потребовали разработки версии 3.0. Выпущенная в 1996 году версия 3.0 SSL представляет собой полную переработку протокола, созданного Полом Кохером в сотрудничестве с инженерами Netscape Филом Карлтоном и Аланом Фрейером, с эталонной реализацией Кристофера Аллена и Тима Диркса из Consensus Development. Более новые версии SSL / TLS основаны на SSL 3.0. Черновик SSL 3.0 1996 г. был опубликован IETF как исторический документ в RFC 6101.
SSL 2.0 был объявлен устаревшим в 2011 г. RFC 6176. В 2014 году было обнаружено, что SSL 3.0 уязвим для атаки POODLE, которая затрагивает все блочные шифры в SSL; RC4, единственный неблочный шифр, поддерживаемый SSL 3.0, также возможно взломан при использовании в SSL 3.0. Поддержка SSL 3.0 была прекращена в июне 2015 г. RFC 7568.
TLS 1.0
TLS 1.0 был впервые определен в RFC 2246 в январе 1999 г. как обновление SSL версии 3.0 и написано Кристофером Алленом и Тимом Дирксом из Consensus Development. Как указано в RFC, «различия между этим протоколом и SSL 3.0 несущественны, но они достаточно значительны, чтобы исключить возможность взаимодействия между TLS 1.0 и SSL 3.0». Тим Диркс позже писал, что эти изменения и переименование с «SSL» в «TLS» были жестом сохранения лица для Microsoft, «так что это не будет выглядеть [так], что IETF просто штампует протокол Netscape».
TLS 1.0 включает средства, с помощью которых реализация TLS может понизить уровень соединения до SSL 3.0, тем самым ослабив безопасность.
Совет PCI предложил организациям перейти с TLS 1.0 на TLS. 1.1 или новее до 30 июня 2018 г. В октябре 2018 г. Apple, Google, Microsoft и Mozilla совместно объявили о прекращении поддержки TLS 1.0 и 1.1 в марте 2020 года.
TLS 1.1
TLS 1.1 был определен в RFC 4346 в апреле 2006 года. обновление TLS версии 1.0. Существенные различия в этой версии включают:
- Добавлена защита от атак цепочкой блоков шифра (CBC).
- Неявный вектор инициализации (IV) был заменен явным IV.
- Изменение обработки ошибок заполнения.
- Поддержка IANA регистрация параметров.
TLS 1.2
TLS 1.2 был определен в RFC 5246 вавгусте 2008 года. Он основан на более ранней Спецификация TLS 1.1. Основные отличия включают:
- Комбинация MD5 - SHA-1 в псевдослучайной функции (PRF) была заменена на SHA-256 с возможностью использовать набор шифров, указанные PRF.
- Комбинация MD5-SHA-1 в готовом сообщении хэш была заменена на SHA-256, с возможность использовать хэш-алгоритмы, специфичные для набора шифров. Однако размер хэша в готовом сообщении должен по-прежнему составлять не менее 96 бит.
- Комбинация MD5-SHA-1 в элементе с цифровой подписью была заменена одним хешем, согласованным во время рукопожатия, который по умолчанию имеет значение SHA-1.
- Улучшение способности клиента и сервера указывать, какие хеши и алгоритмы подписи они принимают.
- Расширение поддержки аутентифицированного шифрования шифры, используемые в основном для режима Галуа / счетчика (GCM) и режима CCM для шифрования Advanced Encryption Standard (AES).
- Расширения TLS были добавлены определения и комплекты шифров AES.
Все версии TLS были дополнительно доработаны в RFC 6176 в марте 2011 г., удалена их обратная совместимость с SSL, так что сеансы TLS никогда не согласовать использование Secure Sockets Layer (SSL) версии 2.0.
TLS 1.3
TLS 1.3 был определен в RFC 8446 в августе 2018 года. Он основан на более ранней спецификации TLS 1.2. Основные отличия от TLS 1.2 включают:
- Отделение алгоритмов согласования ключей и аутентификации от наборов шифров
- Удаление поддержки слабых и менее используемых именованных эллиптических кривых
- Удаление поддержки MD5 и SHA- 224 криптографические хэш-функции
- Требование цифровых подписей даже при использовании предыдущей конфигурации
- Интеграция HKDF и полуэфемерного предложения DH
- Замена возобновления на PSK и билеты
- Поддержка установления связи 1- RTT и начальная поддержка 0- RTT
- Обязательная совершенная прямая секретность, посредством использования эфемерных ключей во время соглашения о ключах DH (EC)
- Отказ от поддержки многих небезопасных или устаревших функций, включая сжатие, повторное согласование, не AEAD шифров, обмен ключами не- PFS (среди которых статический RSA и статический DH обмен ключами), настраиваемые группы DHE, согласование формата точки EC, Изменить протокол спецификации шифра ol, время UNIX сообщения Hello и поле длины AD, вводимое в шифры AEAD
- Запрещение согласования SSL или RC4 для обратной совместимости
- Интегрированное использование хэша сеанса
- Устарело использование номер версии уровня записи и фиксация номера для улучшения обратной совместимости
- Перенос некоторых деталей алгоритма безопасности из приложения в спецификацию и перенос ClientKeyShare в приложение
- Добавление ChaCha20 потоковый шифр с кодом аутентификации сообщения Poly1305
- Добавление алгоритмов цифровой подписи Ed25519 и Ed448
- Добавление протоколы обмена ключами x25519 и x448
- Добавляет поддержку отправки нескольких ответов OCSP
- Шифрует все сообщения подтверждения после ServerHello
Network Security Services (NSS), библиотека шифрования, разработанная Mozilla и используемая его веб-браузером Firefox, включила TLS 1.3 от по умолчанию в феврале 2017 года. Впоследствии поддержка TLS 1.3 была добавлена - но из-за проблем с совместимостью для небольшого числа пользователей не была включена автоматически - в Firefox 52.0, выпущенный в марте 2017 года. TLS 1.3 был включен по умолчанию в мае 2018 года с выпуском Firefox 60.0.
Google Chrome установил TLS 1.3 в качестве версии по умолчанию на короткое время в 2017 году. Затем он удалил его по умолчанию из-за несовместимых промежуточных ящиков, таких как Веб-прокси Blue Coat.
Во время IETF 100 Hackathon, который проходил в Сингапуре в 2017 году, TLS Group работала над адаптацией приложений с открытым исходным кодом использовать TLS 1.3. В группу TLS вошли люди из Японии, Соединенного Королевства и Маврикия через команду cyberstorm.mu. Эта работа была продолжена на хакатоне IETF 101 в Лондоне и хакатоне IETF 102 в Монреале.
wolfSSL позволил использовать TLS 1.3 с версии 3.11.1, выпущенной в мае 2017 г. Как первая коммерческая реализация TLS 1.3, wolfSSL 3.11.1 поддерживал проект 18 и теперь поддерживает окончательную версию проекта 28, а также многие более старые версии. Была опубликована серия блогов о разнице в производительности между TLS 1.2 и 1.3.
В популярный проект OpenSSL выпустил версию 1.1.1 своей библиотеки., в котором поддержка TLS 1.3 была «главной новой функцией».
Enterprise Transport Security
Electronic Frontier Foundation высоко оценил TLS 1.3 и выразил озабоченность по поводу варианта протокола Enterprise Transport Security (ETS ), который намеренно отключает важные меры безопасности в TLS 1.3. ETS - это опубликованный стандарт, известный как ETSI TS103523-3, «Протокол безопасности промежуточного ящика, Часть 3: Безопасность транспорта предприятия», и предназначен для использования исключительно в частных сетях, таких как банковские системы, для обнаружения размещения вредоносных программ, незаконная кража данных и соблюдение нормативных требований в области аудита.
Цифровой сертификат удостоверяет право собственности на открытый ключ названным субъектом сертификата и указывает некоторые ожидаемые случаи использования этого ключа. Это позволяет другим (полагающимся сторонам) полагаться на подписи или утверждения, сделанные закрытым ключом, который соответствует сертифицированному открытому ключу.
Центры сертификации
TLS обычно полагается на набор доверенных сторонних центров сертификации для установления подлинности сертификатов. Доверие обычно закрепляется в списке сертификатов, распространяемых с программным обеспечением пользовательского агента, и может быть изменено проверяющей стороной.
Согласно Netcraft, который следит за активными сертификатами TLS, ведущим центром сертификации (ЦС) на рынке был Symantec с начала их опроса (или VeriSign до того, как Symantec приобрела бизнес-подразделение по услугам аутентификации). По данным Netcraft, в 2015 году на долю Symantec приходилось чуть менее трети всех сертификатов и 44% действительных сертификатов, используемых 1 миллионом самых загруженных веб-сайтов. В 2017 году Symantec продала свой бизнес TLS / SSL компании DigiCert. В обновленном отчете было показано, что IdenTrust, DigiCert и Sectigo входят в тройку ведущих центров сертификации с точки зрения доли рынка с мая 2019 года.
Как следствие выбора сертификатов X.509, центры сертификации и инфраструктура открытых ключей необходимы для проверки связи между сертификатом и его владельцем, а также для генерировать, подписывать и контролировать срок действия сертификатов. Хотя это может быть удобнее, чем проверка личности через сеть доверия , разоблачения в 2013 г. сделали более широко известным, что центры сертификации являются слабым местом с точки зрения безопасности, разрешение атак типа «человек посередине» (MITM), если центр сертификации сотрудничает (или скомпрометирован).
Обмен ключами или согласование ключей
Прежде чем клиент и сервер смогут начать обмен информацией, защищенной TLS, они должны безопасно обменяться или согласовать ключ шифрования и шифр для использования при шифровании данных (см. § Cipher). Среди методов, используемых для обмена / согласования ключей: открытые и закрытые ключи, сгенерированные с помощью RSA (обозначается TLS_RSA в протоколе подтверждения TLS), Диффи – Хеллмана (TLS_DH), эфемерный Диффи– Хеллман (TLS_DHE), эллиптическая кривая Диффи – Хеллмана (TLS_ECDH), эфемерная эллиптическая кривая Диффи – Хеллмана (TLS_ECDHE), анонимный Диффи – Хеллман (pre_DH_anon) -shared key (TLS_PSK) и Secure Remote Password (TLS_SRP).
Методы согласования ключей TLS_DH_anon и TLS_ECDH_anon не аутентифицируют сервер или пользователя и поэтому редко используются, потому что они уязвимы для атак типа "злоумышленник посередине". Только TLS_DHE и TLS_ECDHE обеспечивают прямую секретность.
Сертификаты открытых ключей, используемые во время обмена / соглашения, также различаются по размеру открытых / частных ключей шифрования, используемых во время обмена, и, следовательно, надежности обеспечиваемой безопасности. В июле 2013 года Google объявил, что он больше не будет использовать 1024-битные открытые ключи и вместо этого переключится на 2048-битные ключи, чтобы повысить безопасность шифрования TLS, которое он предоставляет своим пользователям, поскольку надежность шифрования напрямую связано с размером ключа.
| Алгоритм | SSL 2.0 | SSL 3.0 | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | Статус |
|---|---|---|---|---|---|---|---|
| RSA | Да | Да | Да | Да | Да | No | Определено для TLS 1.2 в RFC |
| DH -RSA | No | Да | Да | Да | Да | Нет | |
| DHE - RSA (прямая секретность) | No | Да | Да | Да | Да | Да | |
| ECDH -RSA | No | No | Да | Да | Да | Нет | |
| ECDHE - RSA (прямая секретность) | No | No | Да | Да | Да | Да | |
| DH -DSS | No | Да | Да | Да | Да | Нет | |
| DHE - DSS (для секретность отделения) | No | Да | Да | Да | Да | No | |
| ECDH -ECDSA | No | No | Да | Да | Да | Нет | |
| ECDHE - ECDSA (прямая секретность) | No | No | Да | Да | Да | Да | |
| ECDH - EdDSA | Нет | Нет | Да | Да | Да | Нет | |
| ECDHE - EdDSA (прямая секретность) | Нет | Нет | Да | Да | Да | Да | |
| PSK | No | No | Да | Да | Да | ||
| PSK - RSA | No | No | Да | Да | Да | ||
| DHE - PSK (прямая секретность) | No | No | Да | Да | Да | Да | |
| ECDHE - PSK (прямая секретность) | No | No | Да | Да | Да | Да | |
| SRP | No | No | Да | Да | Да | ||
| SRP - DSS | No | No | Да | Да | Да | ||
| SRP - RSA | No | No | Да | Да | Да | ||
| Kerberos | No | No | Да | Да | Да | ||
| DH -ANON (небезопасно) | No | Да | Да | Да s | Да | ||
| ECDH -ANON (небезопасный) | No | No | Да | Да | Да | ||
| ГОСТ Р 34.10-94 / 34.10-2001 | No | No | Да | Да | Да | Предлагается в черновиках RFC |
Cipher
| Cipher | Версия протокола | Статус | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Тип | Алгоритм | Номинальная мощность (биты) | SSL 2.0 | SSL 3.0. | TLS 1.0. | TLS 1.1. | TLS 1.2. | TLS 1.3. | |
| Блочный шифр. с режимом работы. | AES GCM | 256, 128 | N/A | N/A | N/A | N/A | Безопасный | Secure | Определено для TLS 1.2 в RFC |
| AES CCM | N/A | N / A | Неприменимо | Неприменимо | Защищено | Защищено | |||
| AES CBC | N/A | Небезопасно | Зависит от мер защиты | Зависит от мер защиты | Зависит от мер защиты | Н / Д | |||
| Камелия GCM | 256, 128 | Н / П | Н / Д | Н / Д | Н / Д | Защищено | Н / Д | ||
| Камелия CBC | Н / Д | Небезопасный | Зависит от смягчения | Зависит от смягчения | Зависит от смягчения | Н / Д | |||
| ARIA GCM | 256, 128 | N/A | N/A | N/A | N/A | Безопасный | Н / Д | ||
| ARIA CBC | N/A | N/A | Зависит от смягчения последствий | Зависит от средств защиты | Зависит от средств защиты | Н / Д | |||
| SEED CBC | 128 | Н / Д | Небезопасно | Зависит от мер защиты | Зависит от мер защиты | Зависит от мер защиты | Н / Д | ||
| 3DES EDE CBC | 112 | Небезопасное | Небезопасное | Небезопасное | Небезопасное | Небезопасное | Н / Д | ||
| ГОСТ 28147-89 CNT | 256 | N/A | N/A | Небезопасный | Небезопасный | Небезопасный | Н / Д | Определено в RFC 4357 | |
| IDEA CBC | 12 8 | Небезопасное | Небезопасное | Небезопасное | Небезопасное | Н / Д | Н / Д | Удалено из TLS 1.2 | |
| DES CBC | 056 | Небезопасное | Небезопасное | Небезопасное | Небезопасное | N/A | N / A | ||
| 040 | Небезопасное | Небезопасное | Небезопасное | N / A | Н / Д | Н / Д | Запрещено в TLS 1.1 и более поздних версиях | ||
| RC2 CBC | 040 | Небезопасный | Небезопасный | Небезопасный | N/A | N/A | N / A | ||
| Потоковый шифр | ChaCha20 - Poly1305 | 256 | N/A | N/A | N/A | N / A | Secure | Secure | Определено для TLS 1.2 в RFC |
| RC4 | 128 | Небезопасно | Небезопасно | Небезопасный | Небезопасный | Небезопасный | N/A | Запрещено во всех версиях TLS RFC 7465 | |
| 040 | Небезопасное | Небезопасное | Небезопасное | Н / Д | Н / Д | Н / Д | |||
| Нет | Null | – | Insecure | Insecure | Insecure | Insecure | Insecure | N / A | Определено для TLS 1.2 в RFC |
- Примечания
Целостность данных
A код аутентификации сообщения (MAC) используется для обеспечения целостности данных. HMAC используется для режима CBC блочных шифров. Аутентифицированное шифрование (AEAD), такое как режим GCM и режим CCM, использует MAC-адрес, интегрированный с AEAD, и не использует HMAC. PRF на основе HMAC или HKDF используется для установления связи TLS.
| Алгоритм | SSL 2.0 | SSL 3.0 | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | Статус |
|---|---|---|---|---|---|---|---|
| HMAC -MD5 | Да | Да | Да | Да | Да | No | Определено для TLS 1.2 в RFC |
| HMAC -SHA1 | No | Да | Да | Да | Да | Нет | |
| HMAC -SHA256/384 | No | No | No | No | Да | Нет | |
| AEAD | No | No | No | No | Да | Да | |
| ГОСТ 28147-89 IMIT | No | No | Да | Да | Да | Предлагается в проектах RFC | |
| ГОСТ Р 34.11-94 | No | No | Да | Да | Да |
При разработке приложений TLS обычно реализуется поверх протоколов транспортного уровня, шифруя все связанные с протоколом данные протоколов, таких как HTTP, FTP, SMTP, NNTP и XMPP.
Исторически TLS использовался в основном с надежными транспортными протоколами, такими как как протокол управления передачей (TCP). Однако он также был реализован с транспортными протоколами, ориентированными на датаграммы, такими как Протокол дейтаграмм пользователя (UDP) и Протокол управления перегрузкой дейтаграмм (DCCP), использование которых было стандартизированы независимо с использованием термина Безопасность транспортного уровня дейтаграмм (DTLS).
Веб-сайты
Основное использование TLS - защита World Wide Web трафика между веб-сайтом и веб-браузером закодирован по протоколу HTTP. Использование TLS для защиты HTTP-трафика представляет собой протокол HTTPS.
| Протокол. версия | Веб-сайт. поддержка | Безопасность |
|---|---|---|
| SSL 2.0 | 0,7% | Небезопасный |
| SSL 3.0 | 4,4% | Небезопасный |
| TLS 1.0 | 52,5% | Зависит от шифрования и защиты клиента |
| TLS 1.1 | 60.6% | Зависит от шифра и защиты клиента |
| TLS 1.2 | 98,8% | Зависит от шифрования и защиты клиента |
| TLS 1.3 | 37,4% | Защищено |
- Примечания
Веб-браузеры
По состоянию на апрель 2016 года последние версии всех основных веб-браузеров поддерживают TLS 1.0, 1.1 и 1.2, и по умолчанию они включены. Однако не все поддерживаемые операционные системы Microsoft поддерживают последнюю версию IE. Кроме того, многие операционные системы в настоящее время поддерживают несколько версий IE, но это изменилось в соответствии с разделом Microsoft FAQ по политике жизненного цикла поддержки Internet Explorer, начиная с 12 января 2016 г., только самая последняя версия Internet Explorer доступна для поддерживаемая операционная система получит техническую поддержку и обновления безопасности ". Затем на странице перечисляется последняя поддерживаемая версия IE на указанную дату для каждой операционной системы. Следующая критическая дата наступит, когда операционная система достигнет стадии завершения жизненного цикла, что указано в информационном бюллетене Microsoft о жизненном цикле Windows.
. Меры противодействия известным атакам пока недостаточно:
- Меры противодействия атаке POODLE : некоторые браузеры уже предотвращают откат на SSL 3.0; однако это уменьшение должно поддерживаться не только клиентами, но и серверами. Требуется отключение самого SSL 3.0, реализация «анти-POODLE разбиения записей» или запрета шифрования CBC в SSL 3.0.
- Google Chrome: завершено (TLS_FALLBACK_SCSV реализован с версии 33, возврат к SSL 3.0 отключен с версии 39, сам SSL 3.0 отключен по умолчанию с версии 40. Поддержка самого SSL 3.0 была прекращена с версии 44.)
- Mozilla Firefox: завершено (поддержка самого SSL 3.0 прекращена, начиная с версии 39. Сам SSL 3.0 отключен по умолчанию, а возврат к SSL 3.0 отключен, поскольку версия 34, TLS_FALLBACK_SCSV реализован с версии 35. В ESR сам SSL 3.0 отключен по умолчанию, а TLS_FALLBACK_SCSV реализован с ESR 31.3.)
- Internet Explorer: частично (только в версии 11 SSL 3.0 отключен по умолчанию с апреля 2015 года. Версия 10 и старше по-прежнему уязвимы для POODLE.)
- Opera : complete (TLS_FALLBACK_SCSV реализован с версии 20, «анти-POODLE», что эффективно только при реализации на стороне клиента, реализовано с версии 25, сам SSL 3.0 отключен по умолчанию ult с версии 27. Поддержка самого SSL 3.0 будет прекращена с версии 31.)
- Safari: завершено (только в OS X 10.8 и новее и iOS 8 шифрование CBC во время отката к SSL 3.0 запрещено, но это означает, что он будет использовать RC4, что также не рекомендуется. Сама поддержка SSL 3.0 отсутствует в OS X 10.11 и новее, а также iOS 9.)
- Защита от атак RC4 :
- Google Chrome отключил RC4, кроме как в качестве запасного варианта, начиная с версии 43. RC4 отключен с Chrome 48.
- Firefox отключил RC4, кроме как в качестве запасного варианта, начиная с версии 36. Firefox 44 отключил RC4 по умолчанию.
- Opera отключил RC4, кроме как в качестве запасного варианта, начиная с версии 30. RC4 отключен с Opera 35.
- Internet Explorer для Windows 7 / Server 2008 R2 и для Windows 8 / Server 2012 установил приоритет RC4 на самый низкий и также может отключить RC4, за исключением настройки реестра. Internet Explorer 11 Mobile 11 для Windows Phone 8.1 отключает RC4, за исключением случаев, когда другой активированный алгоритм не работает. Edge и IE 11 полностью отключили RC4 в августе 2016 года.
- Защита от атаки FREAK :
- Браузер Android, включенный в Android 4.0 и старше, все еще уязвим для атаки FREAK.
- Internet Explorer 11 Mobile по-прежнему уязвим для атаки FREAK.
- Google Chrome, Internet Explorer (настольный ПК), Safari (настольный и мобильный) и Opera (мобильный) имеют защиту от FREAK.
- Mozilla Firefox на всех платформах и Google Chrome в Windows не подвержены FREAK.
| Браузер | Версия | Платформы | Протоколы SSL | Протоколы TLS | Поддержка сертификатов | Устранены уязвимости | Выбор протокола пользователем. | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SSL 2.0 (небезопасно) | SSL 3.0 (небезопасный) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV. | SHA-2. | ECDSA. | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | |||||
| Google Chrome. (Chrome для Android ).. | 1–9 | Windows (7+). macOS (10.10+). Linux. Android (4.4 +). iOS (10.0+). Chrome OS | Отключено по умолчанию | Включено по умолчанию | Да | Нет | Нет | Нет | Да. (только настольный компьютер) | требуется SHA-2-совместимая ОС | требуется ECC-совместимая ОС | Не влияет ed. | Vulnerable. (HTTPS) | Vulnerable | Vulnerable | Vulnerable. (except Windows) | Vulnerable | Yes | |
| 10–20 | No | Enabled by default | Yes | No | No | No | Yes. (only desktop) | needs SHA-2 compatible OS | needs ECC compatible OS | Not affected | Vulnerable. (HTTPS/SPDY) | Vulnerable | Vulnerable | Vulnerable. (except Windows) | Vulnerable | Yes | |||
| 21 | No | Enabled by default | Yes | No | No | No | Yes. (only desktop) | needs SHA-2 compatible OS | needs ECC compatible OS | Not affected | Mitigated. | Vulnerable | Vulnerable | Vulnerable. (except Windows) | Vulnerable | Yes | |||
| 22–29 | No | Enabled by default | Yes | Yes | No | No | Yes. (only desktop) | needs SHA-2 compatible OS | needs ECC compatible OS | Not affected | Mitigated | Vulnerable | Vulnerable | Vulnerable. (except Windows) | Vulnerable | Temporary. | |||
| 30–32 | No | Enabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | needs SHA-2 compatible OS | needs ECC compatible OS | Not affected | Mitigated | Vulnerable | Vulnerable | Vulnerable. (except Windows) | Vulnerable | Temporary. | |||
| 33–37 | No | Enabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | needs SHA-2 compatible OS | needs ECC compatible OS | Not affected | Mitigated | Partly mitigated. | Lowest priority. | Vulnerable. (except Windows) | Vulnerable | Temporary. | |||
| 38, 39 | No | Enabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Partly mitigated | Lowest priority | Vulnerable. (except Windows) | Vulnerable | Temporary. | |||
| 40 | No | Disabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Mitigated. | Lowest priority | Vulnerable. (except Windows) | Vulnerable | Yes | |||
| 41, 42 | No | Disabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Mitigated | Lowestpriority | Mitigated | Vulnerable | Yes | |||
| 43 | No | Disabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Mitigated | Only as fallback. | Mitigated | Vulnerable | Yes | |||
| 44–47 | No | No | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Not affected | Only as fallback. | Mitigated | Mitigated | Temporary. | |||
| 48, 49 | No | No | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | |||
| 50–53 | No | No | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | |||
| 54–66 | No | No | Yes | Yes | Yes | Disabled by default. (draft version) | Yes. (only desktop) | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | |||
| 67–69 | No | No | Yes | Yes | Yes | Yes. (draft version) | Yes. (only desktop) | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | |||
| 70–83 | No | No | Yes | Yes | Yes | Yes | Yes. (only desktop) | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | |||
| 84–85 | 86 | No | No | Warn by default | Warn by default | Yes | Yes | Yes. (only desktop) | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | ||
| Browser | Version | Platforms | SSL 2.0 (insecure) | SSL 3.0 (insecure) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV certificate | SHA-2 certificate | ECDSA certificate | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Protocol selection by user | |
| Microsoft Edge. (Chromium based). OS independent | 79–83 | Windows (7+). macOS (10.12+). Linux. Android (4.4+). iOS (11.0+) | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Mitigated | Not affected | Not affected | Disabled by default | Mitigated | Mitigated | Yes | |
| 84–85 | 86 | No | No | Warn by default | Warn by default | Yes | Yes | Yes | Yes | Yes | Mitigated | Not affected | Not affected | Disabled by default | Mitigated | Mitigated | Yes | ||
| 88 | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Mitigated | Not affected | Not affected | Disabled by default | Mitigated | Mitigated | Yes | |||
| Browser | Version | Platforms | SSL 2.0 (insecure) | SSL 3.0 (insecure) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV certificate | SHA-2 certificate | ECDSA certificate | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Protocol selection by user | |
| Mozilla Firefox. (Firefox for mobile ). | 1.0, 1.5 | Windows (7+). macOS (10.12+). Linux. Android (4.1+). iOS (10.3+). | Enabled by default. | Enabled by default. | Yes | No | No | No | No | Yes | No | Not affected. | Not affected | Vulnerable | Vulnerable | Not affected | Vulnerable | Yes | |
| 2 | Disabled by defaul t. | Enabled by default | Yes | No | No | No | No | Yes | Yes | Not affected | Not affected | Vulnerable | Vulnerable | Not affected | Vulnerable | Yes | |||
| 3–7 | Disabled by default | Enabled by default | Yes | No | No | No | Yes | Yes | Yes | Not affected | Not affected | Vulnerable | Vulnerable | Not affected | Vulnerable | Yes | |||
| 8–10. ESR 10 | No | Enabled by default | Yes | No | No | No | Yes | Yes | Yes | Not affected | Not affected | Vulnerable | Vulnerable | Not affected | Vulnerable | Yes | |||
| 11–14 | No | Enabled by default | Yes | No | No | No | Yes | Yes | Yes | Not affected | Vulnerable. (SPDY) | Vulnerable | Vulnerable | Not affected | Vulnerable | Yes | |||
| 15–22. ESR 17.0–17.0.10 | No | Enabled by default | Yes | No | No | No | Yes | Yes | Yes | Not affected | Mitigated | Vulnerable | Vulnerable | Not affected | Vulnerable | Yes | |||
| ESR 17.0.11 | No | Enabled by default | Yes | No | No | No | Yes | Yes | Yes | Not affected | Mitigated | Vulnerable | Lowest priority. | Not affected | Vulnerable | Yes | |||
| 23 | No | Enabled by default | Yes | Disabled by default. | No | No | Yes | Yes | Yes | Not affected | Mitigated | Vulnerable | Vulnerable | Not affected | Vulnerable | Yes | |||
| 24, 25.0.0. ESR 24.0–24.1.0 | No | Enabled by default | Yes | Disabled by default | Disabled by default. | No | Yes | Yes | Yes | Not affected | Mitigated | Vulnerable | Vulnerable | Not affected | Vulnerable | Yes | |||
| 25.0.1, 26. ESR 24.1.1 | No | Enabled by default | Yes | Disabled by default | Disabled by default | No | Yes | Yes | Yes | Not affected | Mitigated | Vulnerable | Lowest priority. | Not affected | Vulnerable | Yes | |||
| 27–33. ESR 31.0–31.2 | No | Enabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Not affected | Mitigated | Vulnerable | Lowest priority | Not affected | Vulnerable | Yes | |||
| 34, 35. ESR 31.3–31.7 | No | Disabled by default. | Yes | Yes | Yes | No | Yes | Yes | Yes | Not affected | Mitigated | Mitigated. | Lowest priority | Not affected | Vulnerable | Yes | |||
| ESR 31.8 | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Not affected | Mitigated | Mitigated | Lowest priority | Not affected | Mitigated | Yes | |||
| 36–38. ESR 38.0 | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Not affected | Mitigated | Mitigated | Only as fallback. | Not affected | Vulnerable | Yes | |||
| ESR 38.1–38.8 | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Not affected | Mitigated | Mitigated | Only as fallback. | Not affected | Mitigated | Yes | |||
| 39–43 | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Not affected | Mitigated | Not affected | Only as fallback. | Not affected | Mitigated | Yes | |||
| 44–48. ESR 45 | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Not affected | Mitigated | Yes | |||
| 49–59. ESR 52 | No | No | Yes | Yes | Yes | Disabled by default. (draft version) | Yes | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Not affected | Mitigated | Yes | |||
| 60–62. ESR 60 | No | No | Yes | Yes | Yes | Yes. (draft version) | Yes | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Not affected | Mitigated | Yes | |||
| 63–77. ESR 68 | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Not affected | Mitigated | Yes | |||
| 78–81. ESR 78.0–78.3 | No | No | Disabled by default | Disabled by default | Yes | Yes | Yes | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Not affected | Mitigated | Yes | |||
| ESR 78.4 | 82 | ||||||||||||||||||
| Browser | Version | Platforms | SSL 2.0 (insecure) | SSL 3.0 (insecure) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV certificate | SHA-2 certificate | ECDSA certificate | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Protocol selection by user | |
| Opera Browser. (Opera Mobile ). (Pre-Presto and Presto ). | 1–2 | No SSL/TLS support | |||||||||||||||||
| 3 | Yes | No | No | No | No | No | No | No | No | No SSL 3.0 or TLS support | Vulnerable | Unknown | Unknown | N/A | |||||
| 4 | Yes | Yes | No | No | No | No | No | No | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Unknown | Unknown | Unknown | |||
| 5 | Enabled by default | Enabled by default | Yes | No | No | No | No | No | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Unknown | Unknown | Yes | |||
| 6–7 | Enabled by default | Enabled by default | Yes | No | No | No | No | Yes | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Unknown | Unknown | Yes | |||
| 8 | Enabled by default | Enabled by default | Yes | Disabled by default. | No | No | No | Yes | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Unknown | Unknown | Yes | |||
| 9 | Disabled by default. | Enabled by default | Yes | Yes | No | No | since v9.5. (only desktop) | Yes | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Unknown | Unknown | Yes | |||
| 10–11.52 | No | Enabled by default | Yes | Disabled by default | Disabled by default. | No | Yes. (only desktop) | Yes | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Unknown | Unknown | Yes | |||
| 11.60–11.64 | No | Enabled by default | Yes | Disabled by default | Disabled by default | No | Yes. (only desktop) | Yes | No | Mitigated. | Not affected | Vulnerable | Vulnerable | Unknown | Unknown | Yes | |||
| 12–12.14 | No | Disabled by default. | Yes | Disabled by default | Disabled by default | No | Yes. (only desktop) | Yes | No | Mitigated | Not affected | Mitigated. | Vulnerable | Unknown | Mitigated | Yes | |||
| 12.15–12.17 | No | Disabled by default | Yes | Disabled by default | Disabled by default | No | Yes. (only desktop) | Yes | No | Mitigated | Not affected | Mitigated | Partly mitigated. | Unknown | Mitigated | Yes | |||
| 12.18 | No | Disabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | |||
| Browser | Version | Platforms | SSL 2.0 (insecure) | SSL 3.0 (insecure) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV certificate | SHA-2 certificate | ECDSA certificate | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Protocol selection by user | |
| Opera Browser. (Opera Mobile ). (Webkit and Blink ). | 14–16 | Windows (7+). macOS (10.11+). Linux. Android (4.4+) | No | Enabled by default | Yes | Yes | No | No | Yes. (only desktop) | needs SHA-2 compatible OS | needs ECC compatible OS | Not affected | Mitigated | Vulnerable | Vulnerable | Vulnerable. (except Windows) | Vulnerable | Temporary. | |
| 17–19 | No | Enabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | needs SHA-2 compatible OS | needs ECC compatible OS | Not affected | Mitigated | Vulnerable | Vulnerable | Vulnerable. (except Windows) | Vulnerable | Temporary. | |||
| 20–24 | No | Enabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | needs SHA-2 compatible OS | needs ECC compatible OS | Not affected | Mitigated | Partly mitigated. | Lowest priority. | Vulnerable. (except Windows) | Vulnerable | Temporary. | |||
| 25, 26 | No | Enabled by default. | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Mitigated. | Lowest priority | Vulnerable. (except Windows) | Vulnerable | Temporary. | |||
| 27 | No | Disabled by default. | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Mitigated. | Lowest priority | Vulnerable. (except Windows) | Vulnerable | Yes. (only desktop) | |||
| 28, 29 | No | Disabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Mitigated | Lowest priority | Mitigated | Vulnerable | Yes. (only desktop) | |||
| 30 | No | Disabled by default | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Mitigated | Only as fallback. | Mitigated | Mitigated | Yes. (only desktop) | |||
| 31–34 | No | No | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Not affected | Only as fallback. | Mitigated | Mitigated | Temporary. | |||
| 35, 36 | No | No | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | needs ECC compatible OS | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | |||
| 37–40 | No | No | Yes | Yes | Yes | No | Yes. (only desktop) | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | |||
| 41–56 | No | No | Yes | Yes | Yes | Disabled by default. (draft version) | Yes. (only desktop) | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | |||
| 57–71 | 72 | No | No | Yes | Yes | Yes | Yes | Yes. (only desktop) | Yes | Yes | Not affected | Mitigated | Not affected | Disabled by default | Mitigated | Mitigated | Temporary. | ||
| Browser | Version | Platforms | SSL 2.0 (insecure) | SSL 3.0 (insecure) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV certificate | SHA-2 certificate | ECDSA certificate | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Protocol selection by user | |
| Microsoft Internet Explorer. (1–10). | 1.x | Windows 3.1, 95, NT,. Mac OS 7, 8 | No SSL/TLS support | ||||||||||||||||
| 2 | Yes | No | No | No | No | No | No | No | No | No SSL 3.0 or TLS support | Vulnerable | Vulnerable | Vulnerable | N/A | |||||
| 3 | Yes | Yes | No | No | No | No | No | No | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | Unknown | |||
| 4, 5, 6 | Windows 3.1, 95, 98, NT, 2000. Mac OS 7.1, 8, X,. Solaris, HP-UX | Enabled by default | Enabled by default | Disabled by default. | No | No | No | No | No | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | Yes | ||
| 6 | Windows XP | Enabled by default | Enabled by default | Disabled by default | No | No | No | No | Yes. | No | Mitigated | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | Yes | ||
| 7, 8 | Disabled by default. | Enabled by default | Yes | No | No | No | Yes | Yes. | No | Mitigated | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | Yes | |||
| 6 | Server 2003 | Enabled by default | Enabled by default | Disabled by default | No | No | No | No | Yes. | No | Mitigated | Not affected | Vulnerable | Vulnerable | Mitigated. | Mitigated. | Yes | ||
| 7, 8 | Disabled by default. | Enabled by default | Yes | No | No | No | Yes | Yes. | No | Mitigated | Not affected | Vulnerable | Vulnerable | Mitigated. | Mitigated. | Yes | |||
| 7, 8, 9 | Windows Vista | Disabled by default | Enabled by default | Yes | No | No | No | Yes | Yes | Yes | Mitigated | Not affected | Vulnerable | Vulnerable | Mitigated. | Mitigated. | Yes | ||
| 7, 8, 9 | Server 2008 | Disabled by default | Enabled by default | Yes | Disabled by default. (KB4019276) | Disabled by default. (KB4019276) | No | Yes | Yes | Yes | Mitigated | Not affected | Vulnerable | Vulnerable | Mitigated. | Mitigated. | Yes | ||
| 8, 9, 10 | Windows 7 / 8. Server 2008 R2 / 2012 | Disabled by default | Enabled by default | Yes | Disabled by default. | Disabled by default. | No | Yes | Yes | Yes | Mitigated | Not affected | Vulnerable | Lowest priority. | Mitigated. | Mitigated. | Yes | ||
| Internet Explorer 11. | 11 | Windows 7. Server 2008 R2 | Disabled by default | Disabled by default. | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated. | Disabled by default | Mitigated. | Mitigated. | Yes | |
| 11 | Windows 8.1 | Disabled by default | Disabled by default. | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated. | Disabled by default | Mitigated. | Mitigated. | Yes | ||
| Server 2012. Server 2012 R2 | |||||||||||||||||||
| Browser | Version | Platforms | SSL 2.0 (insecure) | SSL 3.0 (insecure) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV certificate | SHA-2 certificate | ECDSA certificate | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Protocol selection by user | |
| Microsoft Edge. (12–18). (EdgeHTML based). Client only.. Internet Explorer 11. | 11 | 12–13 | Windows 10. 1507–1511 | Disabled by default | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes |
| 11 | 14–18. (client only) | Windows 10. 1607–1803. Windows Server (SAC). 1709–1803 | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | |
| 11 | 18. (client only) | Windows 10. 1809–1903. Windows Server (SAC). 1809–1903 | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | |
| 11 | 18. (client only) | Windows 10. 1909. Windows Server (SAC). 1909 | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | |
| 11 | 18. (client only) | Windows 10. 2004. Windows Server (SAC). 2004 | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | |
| Internet Explorer 11. | 11 | Windows 10. 20H2. Windows Server (SAC) 20H2 | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | |
| 11 | Windows 10. 21Hx. Windows Server (SAC) 21Hx | No | Disabled by default | Yes | Yes | Yes | Enabled by default. (experimental). since Dev 10.0.20170 | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | ||
| Internet Explorer 11. | 11 | Windows 10. LTSB 2015 (1507) | Disabled by default | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | |
| 11 | Windows 10. LTSB 2016 (1607) | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | ||
| 11 | Windows Server 2016. (LTSB / 1607) | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | ||
| 11 | Windows 10. LTSC 2019 (1809). Windows Server 2019. (LTSC / 1809) | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | Yes | ||
| Browser | Version | Platforms | SSL 2.0 (insecure) | SSL 3.0 (insecure) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV certificate | SHA-2 certificate | ECDSA certificate | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Protocol selection by user | |
| Microsoft Internet Explorer Mobile. | 7, 9 | Windows Phone 7, 7.5, 7.8 | Disabled by default. | Enabled by default | Yes | No. | No. | No | No. | Yes | Yes | Unknown | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | Only with 3rd party tools | |
| 10 | Windows Phone 8 | Disabled by default | Enabled by default | Yes | Disabled by default. | Disabled by default. | No | No. | Yes | Yes | Mitigated | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | Only with 3rd party tools | ||
| 11 | Windows Phone 8.1 | Disabled by default | Enabled by default | Yes | Yes | Yes | No | No. | Yes | Yes | Mitigated | Not affected | Vulnerable | Only as fallback. | Vulnerable | Vulnerable | Only with 3rd party tools | ||
| Microsoft Edge. (13–15). (EdgeHTML based). | 13 | Windows 10 Mobile. 1511 | Disabled by default | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | No | |
| 14, 15 | Windows 10 Mobile. 1607–1709 | No | Disabled by default | Yes | Yes | Yes | No | Yes | Yes | Yes | Mitigated | Not affected | Mitigated | Disabled by default | Mitigated | Mitigated | No | ||
| Browser | Version | Platforms | SSL 2.0 (insecure) | SSL 3.0 (insecure) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV certificate | SHA-2 certificate | ECDSA certificate | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Protocol selection by user | |
| Apple Safari. | 1 | Mac OS X 10.2, 10.3 | No | Yes | Yes | No | No | No | No | No | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | No | |
| 2–5 | Mac OS X 10.4, 10.5, Win XP | No | Yes | Yes | No | No | No | since v3.2 | No | No | Vulnerable | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | No | ||
| 3–5 | Vista, Win 7 | No | Yes | Yes | No | No | No | since v3.2 | No | Yes | Vulnerable | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | No | ||
| 4–6 | Mac OS X 10.6, 10.7 | No | Yes | Yes | No | No | No | Yes | Yes | Yes | Vulnerable | Not affected | Vulnerable | Vulnerable | Vulnerable | Vulnerable | No | ||
| 6 | OS X 10.8 | No | Yes | Yes | No | No | No | Yes | Yes | Yes | Mitigated. | Not affected | Mitigated. | Vulnerable. | Mitigated. | Vulnerable | No | ||
| 7, 9 | OS X 10. 9 | Нет | Да | Да | Да | Да | Нет | Да | Да | Да | Смягчены. | Не затронуты | Смягчены. | Уязвимые. | Слабые. | Уязвимые | Нет | ||
| 8–10 | OS X 10.10 | Нет | Да | Да | Да | Да | Нет | Да | Да | Да | Смягчено | Не влияет | Снижено. | Наименьший приоритет. | Уменьшено. | Уменьшено. | Нет | ||
| 9–11 | OS X 10.11 | Нет | Нет | Да | Да | Да | Нет | Да | Да | Да | Смягчено | Не влияет | Не влияет | Наименьший приоритет | Слабый | Слабый | Нет | ||
| 10–12 | macOS 10.12 | Нет | Нет | Да | Да | Да | Нет | Да | Да | Да | Смягчено | Не влияет | Не влияет ed | Отключено по умолчанию | Снижено | Снижено | Нет | ||
| 11, 12 | 13 | macOS 10.13 | Нет | Нет | Да | Да | Да | Нет | Да | Да | Да | Смягчено | Не влияет | Не влияет | Отключено по умолчанию | Смягчается | Смягчено | Нет | |
| 12, 13 | 14 | macOS 10.14 | Нет | Нет | Да | Да | Да | Да (начиная с macOS 10.14.4) | Да | Да | Да | Смягчено | Не влияет | Не влияет | Отключено по умолчанию | Сглажено | Смягчено | Нет | |
| 13 | 14 | macOS 10.15 | Нет | Нет | Да | Да | Да | Да | Да | Да | Да | Смягчено | Не влияет | Не влияет | По умолчанию отключено | Смягчается | Смягчено | Нет | |
| 14 | macOS 11.0 | Нет | Нет | Да | Да | Да | Да | Да | Да | Да | Смягчено | Не влияет | Не влияет | По умолчанию отключено | Устранено | Устранено | Нет | ||
| Браузер | Версия | Платформы | SSL 2.0 (небезопасный) | SSL 3.0 (небезопасный) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | сертификат EV | сертификат SHA-2 | сертификат ECDSA | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Выбор протокола пользователем | |
| Apple Safari. (мобильный). | 3 | iPhone OS 1, 2 | No | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет | Уязвимый | Не затронут | Уязвимый | Уязвимый | Уязвимый | Уязвимые | № | |
| 4, 5 | iPhone OS 3, iOS 4 | Нет | Да | Да | Нет | Нет | Нет | Да | Да | начиная с iOS 4 | Уязвимый | Не затронут | Уязвимый | Уязвимые | Уязвимые | Уязвимые | Нет | ||
| 5, 6 | iOS 5, 6 | Нет | Да | Да | Да | Да | Нет | Да | Да | Да | Уязвимый | Не затронут | Уязвимый | Уязвимый | Уязвимый | Уязвимый | Нет | ||
| 7 | iOS 7 | Нет | Да | Да | Да | Да | Нет | Да | Да | Да | Смягчены. | Не затронуты | Уязвимые | Уязвимые | Уязвимые | Уязвимые | Нет | ||
| 8 | iOS 8 | Нет | Да | Да | Да | Да | Нет | Да | Да | Да | Смягчено | Не влияет | Снижено. | Наименьший приоритет. | Снижено. | Снижено. | Нет | ||
| 9 | iOS 9 | Нет | Нет | Да | Да | Да | Нет | Да | Да | Да | Смягчено | Не влияет | Не влияет | Наименьший приоритет | Слабый | Слабый | Нет | ||
| 10–11 | iOS 10, 11 | Нет | Нет | Да | Да | Да | Нет | Да | Да | Да | Сглаживается | Не влияет | Не влияет | По умолчанию отключено | Сглаживается | Смягчено | Нет | ||
| 12 | iOS 12 | Нет | Нет | Да | Да | Да | Да (начиная с iOS 12.2) | Да | Да | Да | Уменьшено | Не влияет | Не влияет | Отключено по умолчанию | Сглажено | Сглажено | Нет | ||
| 13 | iOS 13 | Нет | Нет | Да | Да | Да | Да | Да | Да | Да | Смягчено | Не влияет | Не влияет | Отключено по умолчанию | Сглаживается | Сглаживается | Нет | ||
| iPadOS 13 | |||||||||||||||||||
| 14 | iOS 14 | Нет | Нет | Да | Да | Да | Да | Да | Да | Да | Смягчено | Не влияет | Не влияет | По умолчанию отключено | Уменьшено | Уменьшено | Нет | ||
| iPadOS 14 | |||||||||||||||||||
| Браузер | Версия | Платформы | SSL 2.0 (небезопасный) | SSL 3.0 (небезопасный) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | EV. | SHA-2 | ECDSA | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Выбор протокола пользователем | |
| Протоколы SSL | Протоколы TLS | Поддержка сертификатов | Устранены уязвимости | ||||||||||||||||
| Google Android OS. | Android 1.0–4.0.4 | Нет | Включено по умолчанию | Да | Нет | Нет | Нет | Неизвестно | Да | с 3.0 | Неизвестно | Неизвестно | Уязвимое | Уязвимое | Уязвимое | Уязвимые | Нет | ||
| Android 4.1–4.4.4 | Нет | Включено по умолчанию | Да | Выключено по умолчанию | По умолчанию отключено | Нет | Неизвестно | Да | Да | Неизвестно | Неизвестно | Уязвимое | Уязвимое | Уязвимое | Уязвимое | Нет | |||
| Android 5.0–5.0.2 | Нет | Включено по умолчанию | Да | Да | Да | Нет | Неизвестно | Да | Да | Неизвестно | Неизвестно | Уязвимый | Уязвимый | Уязвимый | Уязвимые | Нет | |||
| Android 5.1–5.1.1 | Нет | По умолчанию отключено. | Да | Да | Да | Нет | Неизвестно | Да | Да | Неизвестно | Неизвестно | Не влияет | Только как резерв. | Снижены | Снижены | Нет | |||
| Android 6.0 - 7.1.2 | Нет | По умолчанию отключено. | Да | Да | Да | Нет | Неизвестно | Да | Да | Неизвестно | Неизвестно | Не влияет | По умолчанию отключено | Сглажено | Сглажено | Нет | |||
| Android 8.0 - 9.0 | Нет | No. | Да | Да | Да | Нет | Неизвестно | Да | Да | Неизвестно | Неизвестно | Не влияет | По умолчанию отключено | Смягчено | Смягчено | Нет | |||
| Android 10.0 | Нет | Нет | Да | Да | Да | Да | Неизвестно | Да | Да | Неизвестно | Неизвестно | Не влияет | По умолчанию отключено | Уменьшено | Уменьшено | Нет | |||
| Android 11.0 | Нет | Нет | Да | Да | Да | Да | Неизвестно | Да | Да | Неизвестно | Неизвестно | Не влияет | Отключено по умолчанию | Сглажено | Сглажено | Нет | |||
| Браузер | Версия | Платформы | SSL 2.0 (небезопасный) | SSL 3.0 (небезопасный) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 | сертификат EV | сертификат SHA-2 | сертификат ECDSA | BEAST | CRIME | POODLE (SSLv3) | RC4 | FREAK | Logjam | Выбор протокола пользователем | |
| Color or Note | Значение | |
|---|---|---|
| Версия браузера | Платформа | |
| Версия браузера | Операционная система | Будущий выпуск; в разработке |
| Версия браузера | Операционная система | Текущая последняя версия |
| Версия браузера | Операционная система | Бывшая версия; все еще поддерживается |
| Версия браузера | Операционная система | Предыдущий выпуск; долгосрочная поддержка все еще активна, но закончится менее чем через 12 месяцев |
| Версия браузера | Операционная система | Предыдущий выпуск; больше не поддерживается |
| н / д | Операционная система | Смешанная / неопределенная |
| Операционная система (Версия +) | Минимальная необходимая версия операционной системы (для поддерживаемых версий браузер) | |
| Эта операционная система больше не поддерживает | ||
- Примечания
Библиотеки
Большинство библиотек программирования SSL и TLS бесплатны и имеют открытый исходный код.
- BoringSSL, ответвление OpenSSL для Chrome / Chromium и Android, а также других приложений Google.
- Botan, криптографическая библиотека с лицензией BSD, написанная на C ++.
- cryptlib : портативный библиотека криптографии с открытым исходным кодом (включает реализацию TLS / SSL)
- Программисты Delphi могут использовать библиотеку Indy, которая использует OpenSSL или, альтернативно, ICS, которая теперь поддерживает TLS 1.3.
- GnuTLS : бесплатная реализация (лицензия LGPL)
- Java Secure Socket Extension : реализация Java, включенная в среду выполнения Java поддерживаются TLS 1.1 и 1.2, начиная с Java 7. (TLS 1.1 / 1.2 изначально были отключены по умолчанию для клиента на Java 7, но были включены в январе 2017 г.) Java 11 поддерживает TLS 1.3.
- LibreSSL : вилка OpenSSL от проекта OpenBSD.
- MatrixSSL : реализация с двойной лицензией
- mbed TLS (ранее PolarSSL): крошечная реализация библиотеки SSL для встроенных устройств, разработанная для простоты использования
- Сеть Службы безопасности : FIPS 140 проверенная библиотека с открытым исходным кодом
- OpenSSL : бесплатная реализация (лицензия BSD с некоторыми расширениями)
- RSA BSAFE Micro Edition Suite: мульти -платформенная реализация TLS, написанная на C, с использованием проверенного FIPS криптографического модуля
- RSA BSAFE SSL-J: библиотека TLS, предоставляющая как проприетарный API, так и JSSE API с использованием проверенного FIPS криптографического модуля
- SChannel : реализация SSL и TLS Microsoft Windows как часть своего пакета.
- Secure Transport : черт использование SSL и TLS, используемых в OS X и iOS как часть их пакетов.
- wolfSSL (ранее CyaSSL): встроенная библиотека SSL / TLS с упором на от скорости и размера.
| Реализация | SSL 2.0 (небезопасный) | SSL 3.0 (небезопасный) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 |
|---|---|---|---|---|---|---|
| Botan | Нет | No | Да | Да | Да | |
| cryptlib | Нет | Отключено по умолчанию во время компиляции | Да | Да | Да | |
| GnuTLS | No | По умолчанию отключено | Да | Да | Да | Да |
| Java Secure Socket Extension | No | Отключено по умолчанию | Да | Да | Да | Да |
| LibreSSL | No | No | Да | Да | Да | Начиная с версии 3.2.2 |
| MatrixSSL | Нет | Отключено по умолчанию во время компиляции | Да | Да | Да | да. (черновая версия) |
| mbed TLS (предыдущий y PolarSSL) | Нет | Отключено по умолчанию | Да | Да | Да | |
| Службы сетевой безопасности | No | Отключено по умолчанию | Да | Да | Да | Да |
| OpenSSL | No | Включено по умолчанию | Да | Да | Да | Да |
| RSA BSAFE Micro Edition Suite | Нет | По умолчанию отключено | Да | Да | Да | Еще нет |
| RSA BSAFE SSL-J | Нет | Отключено на по умолчанию | Да | Да | Да | Еще нет |
| SChannel XP / 2003 | Отключено по умолчанию MSIE 7 | Включено по умолчанию | Включено по умолчанию в MSIE 7 | Нет | Нет | Нет |
| SChannel Vista | По умолчанию отключено | Включено по умолчанию | Да | Нет | Нет | Нет |
| SChannel 2008 | По умолчанию отключено | Включено по умолчанию | Да | Отключено по умолчанию (KB4019276) | Отключено по умолчанию (KB4019 276) | Нет |
| SChannel 7/2008 R2 | Отключено по умолчанию | Отключено по умолчанию в MSIE 11 | Да | Включено по умолчанию в MSIE 11 | Включено по умолчанию в MSIE 11 | Нет |
| SChannel 8/2012 | Отключено по умолчанию | Включено по умолчанию | Да | Отключено по умолчанию | Отключено по умолчанию | Нет |
| SChannel 8.1 / 2012 R2, 10 v1507 и v1511 | Отключено по умолчанию | Отключено по умолчанию в MSIE 11 | Да | Да | Да | Нет |
| SChannel 10 v1607 / 2016 | Нет | Отключено по умолчанию | Да | Да | Да | Нет |
| Secure Transport OS X 10.2–10.8 / iOS 1–4 | Да | Да | Да | Нет | Нет | |
| Secure Transport OS X 10.9–10.10 / iOS 5–8 | No | Да | Да | Да | Да | |
| Secure Transport OS X 10.11 / iOS 9 | Нет | No | Да | Да | Да | |
| Seed7 Библиотека TLS / SSL | Нет | Да | Да | Да | Да | |
| wolfSSL (ранее CyaSSL) | Нет | Отключено по умолчанию | Да | Да | Да | да. (черновая версия) |
| Реализация | SSL 2.0 (небезопасный) | SSL 3.0 (небезопасный) | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 |
- ^SSL 2.0 client hello поддерживается, даже если SSL 2.0 не поддерживается или отключен из-за обратной совместимости.
- ^Реализация протокола SSL / TLS на стороне сервера по-прежнему поддерживает обработку полученных v2-совместимых приветственные сообщения клиента.
- ^Secure Transport: поддержка SSL 2.0 в OS X 10.8 была прекращена. Поддержка SSL 3.0 была прекращена в OS X 10.11 и iOS 9. TLS 1.1 и 1.2 доступны в iOS 5.0 и новее, а также OS X 10.9 и новее.
Документ, представленный на ACM 2012 г. конференция по компьютерной безопасности и безопасности связи показала, что некоторые приложения правильно используют некоторые из этих библиотек SSL, что приводит к уязвимостям. По мнению авторов
«основная причина большинства этих уязвимостей - ужасный дизайн API-интерфейсов для базовых библиотек SSL. Вместо того, чтобы выражать высокоуровневые свойства безопасности сетевых туннелей, такие как конфиденциальность и аутентификация, эти API-интерфейсы демонстрируют низкий -уровневая информация о протоколе SSL для разработчиков приложений. Как следствие, разработчики часто неправильно используют SSL API, неверно истолковывая и неправильно понимая их многочисленные параметры, параметры, побочные эффекты и возвращаемые значения. "
.
Другое использование
Простой протокол передачи почты (SMTP) также может быть защищен TLS. Эти приложения используют сертификаты открытых ключей для проверки идентичности конечных точек.
TLS также можно использовать для туннелирования всего сетевого стека для создания VPN, как в случае с OpenVPN и OpenConnect. Многие поставщики к настоящему времени объединили возможности шифрования и аутентификации TLS с авторизацией. С конца 1990-х годов также произошли существенные изменения в создании клиентских технологий вне веб-браузеров, чтобы обеспечить поддержку клиент-серверных приложений. По сравнению с традиционными технологиями IPsec VPN, TLS имеет некоторые неотъемлемые преимущества в брандмауэре и обходе NAT, которые упрощают администрирование для больших групп удаленного доступа.
TLS также является стандартным методом защиты сигнализации приложения протокола инициирования сеанса (SIP). TLS может использоваться для обеспечения аутентификации и шифрования сигналов SIP, связанных с VoIP и другими приложениями на основе SIP.
SSL 2.0
SSL 2.0 имел множество недостатков:
- Для аутентификации сообщений и шифрования использовались идентичные криптографические ключи. (В SSL 3.0 секреты MAC могут быть больше, чем ключи шифрования, поэтому сообщения могут оставаться устойчивыми к взлому, даже если ключи шифрования сломаны.)
- SSL 2.0 имел слабуюконструкцию MAC, которая использовала хэш-функцию MD5 с секретный префикс, что делало его уязвимым для атак с расширением длины ..
- SSL 2.0 не имел никакой защиты от рукопожатия, что означало, что атака «человек посередине» на понижение версии могла остаться незамеченной.
- SSL 2.0 использовал близкое TCP-соединение для обозначения конца данных. Это означало, что атаки с усечением были возможны: злоумышленник просто подделывает TCP FIN, оставляя получателя в неведении о незаконном конце сообщения с данными (SSL 3.0 устранил эту проблему с помощью явного предупреждения о закрытии).
- Предполагается SSL 2.0. единая служба и фиксированный сертификат домена, что противоречит стандартной функции виртуального хостинга на веб-серверах. Это означает, что большинство веб-сайтов практически не смогли использовать SSL.
SSL 2.0 был отключен по умолчанию, начиная с Internet Explorer 7, Mozilla Firefox 2, Opera 9.5 и Safari. Поддержка SSL 2.0 (и слабых 40-битных и 56-битных шифров) была полностью удалена из Opera с версии 10.
SSL 3.0
SSL 3.0 улучшен. SSL 2.0 за счет добавления шифров на основе SHA-1 и поддержки аутентификации по сертификату.
С точки зрения безопасности, SSL 3.0 следует считать менее желательным, чем TLS 1.0. Комплекты шифров SSL 3.0 имеют более слабый процесс получения ключей; половина установленного главного ключа полностью зависит от хеш-функции MD5, которая не устойчива к коллизиям и, следовательно, не считается безопасной. В TLS 1.0 установленный главный ключ зависит как от MD5, так и от SHA-1, поэтому процесс его создания в настоящее время не считается слабым. По этой причине реализации SSL 3.0 не могут быть проверены в соответствии с FIPS 140-2.
В октябре 2014 года было сообщено об уязвимости в конструкции SSL 3.0, в результате чего режим работы CBC с SSL 3.0 стал уязвимым. на атаку заполнения (см. #POODLE attack).
TLS
TLS имеет ряд мер безопасности:
- Защита от понижения версии протокола до предыдущей (менее безопасной) версии или более слабого набора шифров.
- Нумерация последующих записей приложения с помощью порядкового номера и использования этого порядкового номера в кодах аутентификации сообщения (MAC).
- Использование дайджеста сообщения, дополненного ключом (так что только ключ-держатель можно проверить MAC). Конструкция HMAC, используемая большинством наборов шифров TLS, указана в RFC 2104 (SSL 3.0 использовал другой MAC-адрес на основе хэша).
- Сообщение, завершающее рукопожатие («Завершено»), отправляет хэш всех обмененных сообщений рукопожатия, видимых обеими сторонами.
- Псевдослучайная функция разделяет входные данные пополам и обрабатывает каждый с другим алгоритмом хеширования (MD5 и SHA-1 ), затем выполняет XOR вместе для создания MAC. Это обеспечивает защиту, даже если один из этих алгоритмов оказывается уязвимым.
Атаки на TLS / SSL
Существенные атаки на TLS / SSL перечислены ниже.
В феврале 2015 года IETF выпустила информационный RFC, в котором резюмируются различные известные атаки на TLS / SSL.
Атака повторного согласования
В августе 2009 года была обнаружена уязвимость процедуры повторного согласования, которая может привести к атакам путем внедрения открытого текста против SSL 3.0 и всех текущих версий TLS. Например, он позволяет злоумышленнику, который может захватить https-соединение, вставить свои собственные запросы в начало разговора клиента с веб-сервером. На самом деле злоумышленник не может расшифровать обмен данными клиент-сервер, поэтому он отличается от типичной атаки «человек посередине». Кратковременное исправление состоит в том, что веб-серверы перестают разрешать повторное согласование, которое обычно не требует других изменений, если не используется сертификат клиента аутентификация. Чтобы устранить уязвимость, для TLS было предложено расширение индикации повторного согласования. Это потребует от клиента и сервера включения и проверки информации о предыдущих рукопожатиях в любые рукопожатия повторного согласования. Это расширение стало предлагаемым стандартом, и ему был присвоен номер RFC 5746. RFC реализован несколькими библиотеками.
Атаки перехода на более раннюю версию: атака FREAK и атака Logjam
Протокол атака перехода на более раннюю версию (также называемая атакой с откатом версии) обманывает сеть сервер для согласования соединений с предыдущими версиями TLS (такими как SSLv2), которые давно были признаны небезопасными.
Предыдущие модификации исходных протоколов, такие как False Start (принятые и включенные в Google Chrome) или Snap Start, по сообщениям, вводили ограниченные атаки на понижение версии протокола TLS или разрешенные модификации в список наборов шифров, отправленный клиентом на сервер. При этом злоумышленник может преуспеть во влиянии на выбор набора шифров в попытке понизить уровень набора шифров, согласованный для использования либо более слабого алгоритма симметричного шифрования, либо более слабого обмена ключами. Документ, представленный на конференции ACM по безопасности компьютеров и коммуникаций в 2012 году, продемонстрировал, что расширение False Start находится под угрозой: при определенных обстоятельствах оно может позволить злоумышленнику восстановить ключи шифрования в автономном режиме. и для доступа к зашифрованным данным.
Атаки перехода на более раннюю версию шифрования могут вынудить серверы и клиенты согласовывать соединение с использованием криптографически слабых ключей. В 2014 году была обнаружена атака человек посередине под названием FREAK, затрагивающая стек OpenSSL, веб-браузер по умолчанию Android и некоторые Браузеры Safari. Атака заключалась в том, чтобы обманом заставить серверы согласовать TLS-соединение с использованием криптографически слабых 512-битных ключей шифрования.
Logjam - это эксплойт безопасности, обнаруженный в мае 2015 года и использующий возможность использования устаревшего «экспортного уровня» 512-битного Диффи – Хеллмана группы, восходящие к 1990-м годам. Это вынуждает уязвимые серверы перейти на криптографически слабые 512-битные группы Диффи-Хеллмана. Затем злоумышленник может определить ключи, определенные клиентом и сервером, с помощью обмена ключами Диффи – Хеллмана.
Межпротокольные атаки: DROWN
Атака DROWN - это эксплойт, который атакует серверы, поддерживающие современные комплекты протоколов SSL / TLS, используя их поддержку устаревшего, небезопасного протокола SSLv2 для атаки на соединения с использованием современных протоколов, которые в противном случае были бы безопасными. DROWN использует уязвимость в используемых протоколах и конфигурации сервера, а не какую-либо конкретную ошибку реализации. Полная информация о DROWN была объявлена в марте 2016 года вместе с патчем для эксплойта. На тот момент более 81 000 из 1 миллиона самых популярных веб-сайтов были среди веб-сайтов, защищенных TLS и уязвимых для атаки DROWN.
Атака BEAST
23 сентября 2011 г. тайские исследователи Дуонг и Джулиано Риццо продемонстрировали доказательство концепции под названием BEAST (Использование браузера против SSL / TLS ) с использованием Java-апплета для нарушения политики того же происхождения ограничений для давно известной уязвимости цепочки блоков шифров (CBC) в TLS 1.0: злоумышленник, наблюдающий 2 последовательных блока зашифрованного текста C0, C1, может проверить, равен ли блок открытого текста P1 x, выбрав следующий блок открытого текста P2 = x C0
C1; согласно операции CBC, C2 = E (C1
P2) = E (C1
x
C0
C1) = E (C0
x), что будет равно C1, если x = P1. Практические эксплойты ранее не демонстрировались для этой уязвимости, которая была первоначально обнаружена Филипом Рогэуэем в 2002 году. Уязвимость атаки была устранена с помощью TLS 1.1. в 2006 году, но TLS 1.1 не получил широкого распространения до демонстрации этой атаки.
RC4 как поточный шифр невосприимчив к атаке BEAST. Поэтому RC4 широко использовался как способ смягчить атаку BEAST на стороне сервера. Однако в 2013 году исследователи обнаружили в RC4 больше слабых мест. После этого включение RC4 на стороне сервера больше не рекомендовалось.
Chrome и Firefox сами по себе не уязвимы для атаки BEAST, однако Mozilla обновила свои библиотеки NSS для смягчения атак типа BEAST . NSS используется Mozilla Firefox и Google Chrome для реализации SSL. Некоторые веб-серверы с нарушенной реализацией спецификации SSL могут перестать работать в результате.
Microsoft выпустила бюллетень по безопасности MS12-006 10 января 2012 года, в котором уязвимость BEAST была исправлена изменение способа, которым компонент Windows Secure Channel (SChannel ) передает зашифрованные сетевые пакеты со стороны сервера. Пользователи Internet Explorer (до версии 11), работающие в более старых версиях Windows (Windows 7, Windows 8 и Windows Server 2008 R2 ), могут ограничить использование TLS до 1.1 или выше.
Apple устранила уязвимость BEAST, реализовав разделение 1 / n-1 и включив его по умолчанию в OS X Mavericks, выпущенном 22 октября 2013 года.
CRIME и Атаки BREACH
Авторы атаки BEAST также
Базовое рукопожатие TLS
Далее следует типичный пример соединения, иллюстрирующий рукопожатие, когда сервер (но не клиент) аутентифицируется своим сертификатом:
- Фаза согласования :
- Клиент отправляет сообщение ClientHello с указанием самой высокой версии протокола TLS, которую он поддерживает, случайного числа, списка предлагаемых наборов шифров и предлагаемых методов сжатия. Если клиент пытается выполнить возобновленное рукопожатие, он может отправить идентификатор сеанса. Если клиент может использовать согласование протокола уровня приложения, он может включать в себя список поддерживаемых приложений протоколов, например, HTTP / 2.
- Сервер отвечает ServerHello сообщение, содержащее выбранную версию протокола, случайное число, набор шифров и метод сжатия из вариантов, предлагаемых клиентом. Чтобы подтвердить или разрешить возобновление рукопожатий, сервер может отправить идентификатор сеанса. Выбранная версия протокола должна быть самой высокой, поддерживаемой как клиентом, так и сервером. Например, если клиент поддерживает TLS версии 1.1, а сервер поддерживает версию 1.2, следует выбрать версию 1.1; версию 1.2 не следует выбирать.
- Сервер отправляет сообщение Сертификат (в зависимости от выбранного набора шифров сервер может не указывать его).
- Сервер отправляет свое сообщение ServerKeyExchange (в зависимости от выбранного набора шифров сервер может не указывать его). Это сообщение отправляется для всех наборов шифров DHE, ECDHE и DH_anon.
- Сервер отправляет сообщение ServerHelloDone, указывая, что это сделано с согласование рукопожатия.
- Клиент отвечает сообщением ClientKeyExchange, которое может содержать PreMasterSecret, открытый ключ или ничего. (Опять же, это зависит от выбранного шифра.) Этот PreMasterSecret зашифрован с использованием открытого ключа сертификата сервера.
- Затем клиент и сервер используют случайные числа и PreMasterSecret для вычисления общего секрета, называемого " главный секрет ». Все остальные ключевые данные (сеансовые ключи, такие как IV, симметричный ключ шифрования, ключ, MAC ключ) для этого соединения извлекаются из этого главного секрета (а также клиентского и -сгенерированные случайные значения), который передается через тщательно разработанную псевдослучайную функцию .
- Теперь клиент отправляет запись ChangeCipherSpec, по сути говоря серверу: «Все, что я вам говорю, теперь он будет аутентифицирован (и зашифрован, если параметры шифрования присутствовали в сертификате сервера) ". ChangeCipherSpec сам по себе является протоколом уровня записи с типом содержимого 20.
- Клиент отправляет аутентифицированное и зашифрованное сообщение Finished, содержащее хэш и MAC, поверх предыдущих сообщений подтверждения.
- Сервер попытается расшифровать сообщение Finished клиента и проверить хэш и MAC. Если расшифровка или проверка завершились неудачно, рукопожатие считается неудачным, и соединение должно быть разорвано.
- Наконец, сервер отправляет ChangeCipherSpec, говоря клиенту: «Все, что я скажу вам теперь on будет аутентифицирован (и зашифрован, если шифрование было согласовано) ".
- Сервер отправляет свое аутентифицированное и зашифрованное сообщение Finished.
- Клиент выполняет ту же процедуру дешифрования и проверки, что и сервер на предыдущем шаге.
- Приложение этап: на этом этапе «рукопожатие» завершено, протокол приложения включен с типом контента 23. Сообщения приложений, которыми обмениваются клиент и сервер, также будут аутентифицированы и, возможно, зашифрованы точно так же, как в их сообщении Finished. В противном случае тип содержимого вернет 25, и клиент не будет аутентифицироваться.
Подтверждение TLS с аутентификацией клиента
В следующем полном примере показан аутентифицированный клиент (в дополнение к серверу, как в примере выше) через TLS с использованием сертификатов, которыми обмениваются оба узла.
- Этап согласования:
- Клиент отправляет сообщение ClientHello с указанием самой высокой версии протокола TLS, которую он поддерживает, случайного числа, списка предлагаемых наборов шифров и методов сжатия.
- Сервер отвечает сообщением ServerHello, содержащим выбранную версию протокола, случайное число, набор шифров и метод сжатия из вариантов, предлагаемых клиентом. Сервер также может отправить идентификатор сеанса как часть сообщения для возобновления рукопожатия.
- Сервер отправляет свое сообщение Сертификат (в зависимости от выбранного набора шифров, это может быть опущено
- Сервер отправляет сообщение ServerKeyExchange (в зависимости от выбранного набора шифров, это может быть пропущено сервером). Это сообщение отправляется для всех наборов шифров DHE,ECDHE и DH_anon.
- Сервер отправляет сообщение CertificateRequest, чтобы запросить сертификат у клиента, чтобы соединение могло быть взаимно аутентифицировано.
- Сервер отправляет сообщение ServerHelloDone, указывая, что это выполнено с помощью согласования установления связи.
- Клиент отвечает сообщением Сертификат, которое содержит сертификат клиента.
- Клиент отправляет сообщение ClientKeyExchange, которое может содержать PreMasterSecret, открытый ключ или ничего. (Опять же, это зависит от выбранного шифра.) Этот PreMasterSecret зашифрован с использованием открытого ключа сертификата сервера.
- Клиент отправляет сообщение CertificateVerify, которое является подписью поверх предыдущего сообщения рукопожатия с использованием закрытого ключа сертификата клиента. Эта подпись может быть проверена с помощью открытого ключа сертификата клиента. Это позволяет серверу знать, что клиент имеет доступ к закрытому ключу сертификата и, следовательно, владеет сертификатом.
- Затем клиент и сервер используют случайные числа и PreMasterSecret для вычисления общего секрета, называемого «главным» секрет ». Все остальные ключевые данные («сеансовые ключи») для этого соединения извлекаются из этого главного секрета (и случайных значений, генерируемых клиентом и сервером), которые передаются через тщательно разработанную псевдослучайную функцию.
- Теперь клиент отправляет сообщение ChangeCipherSpec запись, по существу сообщающая серверу: «Все, что я скажу вам с этого момента, будет аутентифицировано (и зашифровано, если шифрование было согласовано)». ChangeCipherSpec сам является протоколом уровня записи и имеет тип 20, а не 22.
- Наконец, клиент отправляет зашифрованное сообщение Finished, содержащее хэш и MAC, поверх предыдущих сообщений подтверждения.
- Сервер попытается расшифровать сообщение Finished клиента сообщение и проверьте хэш и MAC. Если расшифровка или проверка завершились неудачно, рукопожатие считается неудачным, и соединение должно быть разорвано.
- Наконец, сервер отправляет ChangeCipherSpec, говоря клиенту: «Все, что я скажу вам теперь on будет аутентифицирован (и зашифрован, если шифрование было согласовано). "
- Сервер отправляет собственное зашифрованное Finishedсообщение.
- Клиент выполняет ту же процедуру дешифрования и проверки как это сделал сервер на предыдущем шаге.
- Фаза приложения: на этом этапе "рукопожатие" завершено, протокол приложения включен с типом содержимого 23. Сообщения приложений, которыми обмениваются клиент и сервер, также будут точно зашифрованы как в их сообщении «Завершено».
Возобновленное подтверждение связи TLS
Операции с открытым ключом (например, RSA) относительно дороги с точки зрения вычислительной мощности. TLS обеспечивает безопасный ярлык в механизме рукопожатия, чтобы избежать этих операций: возобновленные сеансы. Возобновленные сеансы реализуются с использованием идентификаторов сеанса или билетов сеанса.
Помимо повышения производительности, возобновленные сеансы также могут использоваться для единого входа, поскольку это гарантирует, что и исходный сеанс, и любой возобновленный сеанс происходят от одного и того же клиента. Это особенно важно для протокола FTP через TLS / SSL, который в противном случае пострадал бы от атаки типа «злоумышленник посередине», при которой злоумышленник мог бы перехватить содержимое дополнительных подключений к данным.
Подтверждение связи TLS 1.3
Подтверждение связи TLS 1.3 было сокращено до одного приема-передачи по сравнению с двумя циклами приема-передачи, необходимыми в предыдущих версиях TLS / SSL.
Сначала клиент отправляет на сервер сообщение clientHello, которое содержит список поддерживаемых шифров в порядке предпочтений клиента и делает предположение о том, какой алгоритм ключа будет использоваться, чтобы он мог отправить секретный ключ для совместного использования. если нужно. Угадывая, какой ключевой алгоритм будет использоваться, сервер исключает обход. После получения clientHello сервер отправляет serverHello со своим ключом, сертификатом, выбранным набором шифров и готовым сообщением.
После того, как клиент получает сообщение о завершении сервера, он теперь согласовывается с сервером, на котором следует использовать набор шифров.
Идентификаторы сеанса
При обычном полном рукопожатии сервер отправляет идентификатор сеанса как часть сообщения ServerHello . Клиент связывает этот идентификатор сеанса с IP-адресом сервера и портом TCP, так что, когда клиент снова подключается к этому серверу, он может использовать идентификатор сеанса для сокращения рукопожатия. На сервере идентификатор сеанса отображается на ранее согласованные криптографические параметры, в частности, на «главный секрет». Обе стороны должны иметь один и тот же «главный секрет», иначе возобновленное рукопожатие не удастся (это не позволяет подслушивателю использовать идентификатор сеанса). Случайные данные в сообщениях ClientHello и ServerHello фактически гарантируют, что сгенерированные ключи соединения будут отличаться от ключей в предыдущем соединении. В RFC этот тип рукопожатия называется сокращенным рукопожатием. В литературе это также описывается как подтверждение перезапуска.
- Фаза согласования:
- Клиент отправляет сообщение ClientHello с указанием самой высокой версии протокола TLS, которую он поддерживает, случайного числа, списка предлагаемых наборов шифров и методов сжатия. В сообщение включен идентификатор сеанса из предыдущего TLS-соединения.
- Сервер отвечает сообщением ServerHello, содержащим выбранную версию протокола, случайное число, набор шифров и метод сжатия из варианты, предлагаемые клиентом. Если сервер распознает идентификатор сеанса, отправленный клиентом, он отвечает тем же идентификатором сеанса. Клиент использует это, чтобы распознать, что выполняется возобновленное рукопожатие. Если сервер не распознает идентификатор сеанса, отправленный клиентом, он отправляет другое значение для своего идентификатора сеанса. Это сообщает клиенту, что возобновленное рукопожатие выполняться не будет. На этом этапе и клиент, и сервер имеют «главный секрет» и случайные данные для генерации данных ключа, которые будут использоваться для этого соединения.
- Теперь сервер отправляет запись ChangeCipherSpec, по существу сообщая клиент: «Все, что я вам скажу, будет зашифровано». ChangeCipherSpec сам по себе является протоколом уровня записи и имеет тип 20, а не 22.
- Наконец, сервер отправляет зашифрованное сообщение Finished, содержащее хэш и MAC, поверх предыдущих сообщений подтверждения.
- Клиент попытается расшифровать сообщение Finished сервера и проверить хэш и MAC. Если расшифровка или проверка завершились неудачно, рукопожатие считается неудачным, и соединение должно быть разорвано.
- Наконец, клиент отправляет ChangeCipherSpec, говоря серверу: «Все, что я скажу вам теперь будет зашифровано. "
- Клиент отправляет собственное зашифрованное сообщение Finished.
- Сервер выполняет ту же процедуру дешифрования и проверки, что и клиент на предыдущем шаге.
- Фаза приложения: на этом этапе «рукопожатие» завершено, протокол приложения включен с типом содержимого 23. Сообщения приложений, которыми обмениваются клиент и сервер, также будут зашифрованы точно так же, как в их сообщении Finished.
Билеты сеанса
RFC 5077 расширяет TLS за счет использования билетов сеанса вместо идентификаторов сеанса. Он определяет способ возобновления сеанса TLS, не требуя, чтобы состояние конкретного сеанса сохранялось на сервере TLS.
При использовании билетов сеанса сервер TLS сохраняет свое зависящее от сеанса состояние в билете сеанса и отправляет билет сеанса клиенту TLS для сохранения. Клиент возобновляет сеанс TLS, отправляя билет сеанса на сервер, а сервер возобновляет сеанс TLS в соответствии с состоянием конкретного сеанса в билете. Билет сеанса шифруется и аутентифицируется сервером, и сервер проверяет его действительность перед использованием его содержимого.
Одна из слабых сторон этого метода с OpenSSL заключается в том, что он всегда ограничивает безопасность шифрования и аутентификации передаваемого билета сеанса TLS до AES128-CBC-SHA256, неважно какие другие параметры TLS были согласованы для фактического сеанса TLS. Это означает, что информация о состоянии (билет сеанса TLS) не так хорошо защищена, как сам сеанс TLS. Особую озабоченность вызывает хранение ключей OpenSSL в контексте всего приложения (SSL_CTX), то есть в течение всего срока службы приложения, и не допускает повторного ввода ключей AES128-CBC-SHA256билеты сеанса TLS без сброса контекста OpenSSL для всего приложения (что необычно, подвержено ошибкам и часто требует ручного административного вмешательства).
запись TLS
Это общий формат все записи TLS.
| Смещение | Байт +0 | Байт +1 | Байт +2 | Байт +3 |
|---|---|---|---|---|
| Байт. 0 | Тип содержимого | Н / Д | ||
| Байты. 1..4 | Устаревшая версия | Длина | ||
| (Major) | (второстепенный) | (биты 15..8) | (биты 7..0) | |
| байты. 5.. (m − 1) | Протокол (я) | |||
| Байт. m.. (p-1) | MAC (необязательно) | |||
| Байт. p.. (q-1) | Заполнение (только блочные шифры) | |||
- Тип содержимого
- Это поле определяет тип протокола уровня записи, содержащийся в этой записи.
| Hex | Dec | Тип |
|---|---|---|
| 0x14 | 20 | ChangeCipherSpec |
| 0x15 | 21 | Alert |
| 0x16 | 22 | Подтверждение связи |
| 0x17 | 23 | Приложение |
| 0x18 | 24 | Heartbeat |
- Устаревшая версия
- В этом поле указывается основная и дополнительная версия TLS до TLS 1.3 для содержащегося сообщения. Для сообщения ClientHello это не обязательно должна быть самая высокая версия, поддерживаемая клиентом. Для TLS 1.3 и новее это должно быть установлено 0x0303, и приложение должно отправлять поддерживаемые версии в дополнительном блоке расширения сообщения.
| Основная. версия | Дополнительная. версия | Тип версии |
|---|---|---|
| 3 | 0 | SSL 3.0 |
| 3 | 1 | TLS 1.0 |
| 3 | 2 | TLS 1.1 |
| 3 | 3 | TLS 1.2 |
| 3 | 4 | TLS 1.3 |
- Длина
- Длина «протокольных сообщений», » Поля MAC "и" заполнение "объединены (т. Е. Q-5), но не более 2 байтов (16 KiB).
- Протокол (я)
- Одно или несколько сообщений, идентифицированных протоколом поле. Обратите внимание, что это поле может быть зашифровано в зависимости от состояния соединения.
- MAC и заполнение
- A код аутентификации сообщения, вычисленный по полю «сообщение (я) протокола» с включением дополнительного ключевого материала. Обратите внимание, что это поле может быть зашифровано или не включаться полностью, в зависимости от состояния соединения.
- В конце записей TLS перед всеми алгоритмами и параметрами шифрования не могут присутствовать поля «MAC» или «заполнение». были согласованы и согласованы, а затем подтверждены путем отправки записи CipherStateChange (см. ниже) для сигнализации о том, что эти параметры вступят в силу во всех дальнейших записях, отправленных тем же партнером.
Протокол рукопожатия
Большинство сообщений, которыми обмениваются во время настройка сеанса TLS основана на этой записи, если только не возникает ошибка или предупреждение, о которых необходимо сигнализировать записью протокола Alert (см. ниже), или режим шифрования сеанса не изменен другой записью (см. ниже протокол ChangeCipherSpec.).
| Смещение | Байт +0 | Байт +1 | Байт +2 | Байт +3 |
|---|---|---|---|---|
| Байт. 0 | 22 | Н / Д | ||
| Байт. 1..4 | Устаревшая версия | Длина | ||
| (Major) | (второстепенный) | (биты 15..8) | (биты 7..0) | |
| байты. 5..8 | Тип сообщения | Длина данных сообщения установления связи | ||
| (биты 23..16) | (биты 15..8) | (биты 7..0) | ||
| Байт. 9.. (n − 1) | Данные сообщения установления связи | |||
| Байт. n.. (n + 3) | Тип сообщения | Длина данных сообщения квитирования | ||
| (биты 23..16) | (биты 15..8) | (биты 7..0) | ||
| байты. (n +4).. | Данные сообщения подтверждения | |||
- Тип сообщения
- Это поле определяет тип сообщения подтверждения.
| Код | Описание |
|---|---|
| 0 | HelloRequest |
| 1 | ClientHello |
| 2 | ServerHello |
| 4 | NewSessionTicket |
| 8 | EncryptedExtensions (только TLS 1.3) |
| 11 | Сертификат |
| 12 | ServerKeyExchange |
| 13 | CertificateRequest |
| 14 | ServerHelloDone |
| 15 | CertificateVerify |
| 16 | ClientKeyExchange |
| 20 | Завершено |
- Длина данных сообщения установления связи
- Это 3-байтовое поле, указывающее длину данных подтверждения связи, не включая заголовок.
Обратите внимание, что несколько сообщений подтверждения могут объединяться в одну запись.
Протокол оповещения
Эта запись обычно не должна отправляться во время обычного подтверждения связи или обмена приложениями. Однако это сообщение может быть отправлено в любой момент во время рукопожатия и до закрытия сеанса. Если это используется для сигнализации о фатальной ошибке, сеанс будет закрыт сразу после отправки этой записи, поэтому эта запись используется для указания причины этого закрытия. Если уровень предупреждения помечен как предупреждение, удаленное устройство может решить закрыть сеанс, если решит, что сеанс недостаточно надежен для его нужд (перед этим удаленный компьютер также может отправить свой собственный сигнал).
| Смещение | Байт +0 | Байт +1 | Байт +2 | Байт +3 |
|---|---|---|---|---|
| Байт. 0 | 21 | Н / Д | ||
| Байт. 1..4 | Устаревшая версия | Длина | ||
| (Major) | (Второстепенный) | 0 | 2 | |
| Байт. 5..6 | Уровень | Описание | Н / Д | |
| Байт. 7.. (p − 1) | MAC (необязательно) | |||
| Байт. p.. (q − 1) | Заполнение (только блочные шифры) | |||
- Уровень
- В этом поле указывается уровень предупреждения. Если уровень фатальный, отправитель должен немедленно закрыть сеанс. В противном случае получатель может решить прервать сам сеанс, отправив собственное фатальное предупреждение и закрыв сам сеанс сразу после его отправки. Использование записей предупреждений является необязательным, однако, если они отсутствуютдо закрытия сеанса, сеанс может быть возобновлен автоматически (с его рукопожатием).
- Предпочтительно должно быть нормальное закрытие сеанса после завершения перенесенного приложения. предупреждение о предупреждении нового сеанса. Явная сигнализация безопасного безопасного безопасного безопасности перед эффективным закрытием его транспортного уровня полезна для предотвращения или обнаружения атак (например, попытка усечения безопасного транспорта данных, если они по сути не имеют предварительной длины или продолжительности, которую получатель защищенных данных может ожидать).
| Код | Тип уровня | Состояние соединения |
|---|---|---|
| 1 | предупреждение | соединение или безопасность могут быть нестабильными. |
| 2 | фатальное | соединение или безопасность могут быть скомпрометированы, либо произошла неисправная ошибка. |
- Описание
- В этом поле указывается тип отправляемого предупреждения.
| Код | Описание | Типы уровней | Примечание |
|---|---|---|---|
| 0 | Закрыть уведомление | предупреждение / фатальный | |
| 10 | Неожиданное сообщение | фатальный | |
| 20 | недопустимая запись MAC | фатальный | Возможно, плохая реализация SSL, или полезная нагрузка была изменена, например Правило брандмауэра FTP на сервере FTPS. |
| 21 | Ошибка дешифрования | фатальный | только TLS, зарезервировано |
| 22 | Переполнение записи | фатально | только TLS |
| 30 | Ошибка декомпрессии | фатальный | |
| 40 | Сбой установления связи | фатальный | |
| 41 | Нет сертификата | предупреждение / фатальный | Только SSL 3.0, зарезервировано |
| 42 | Неверный сертификат | предупреждение / критическое состояние | |
| 43 | Неподдерживаемый сертификат | предупреждение / фатальный | например для сертификата включена только проверка подлинности сервера и он представлен как сертификат клиента |
| 44 | Сертификат отозван | предупреждение / критическое состояние | |
| 45 | Срок действия сертификата истек | предупреждение / фатальный | Проверьте срок действия сертификата сервера также проверьте, что срок действия сертификата в представленной цепочке не истек |
| 46 | Сертификат неизвестен | предупреждение / фатальный | |
| 47 | Недопустимый параметр | фатальный | |
| 48 | Неизвестный центр сертификации (Центр сертификации ) | фатальный | только TLS |
| 49 | Доступ запрещен | фатальный | Только TLS - например, сертификат клиента не был представлен (TLS: пустое сообщение о сертификате или SSLv3: нет предупреждения о сертификате), но сервер настроен так, чтобы требовать его. |
| 50 | Ошибка декодирования | фатальная | только TLS |
| 51 | Ошибка дешифрования | предупреждение / фатальная | только TLS |
| 60 | Ограничение экспорта | фатальный | только TLS, зарезервировано |
| 70 | Версия протокола | фатальный | TLS включен ly |
| 71 | Недостаточная безопасность | фатальный | только TLS |
| 80 | Внутренняя ошибка | фатальный | только TLS |
| 86 | Несоответствующий откат | фатальный | только TLS |
| 90 | Пользователь отменен | фатальный | только TLS |
| 100 | Без повторного согласования | предупреждение | только TLS |
| 110 | неподдерживаемое расширение | предупреждение | только TLS |
| 111 | сертификат недоступен | предупреждение | только TLS |
| 112 | Нераспознанное имя | предупреждение / фатальный | только TLS; В индикаторе имени сервера клиента указано имя хоста, не поддерживаемое сервером |
| 113 | Ответ о неверном статусе сертификата | фатальный | только TLS |
| 114 | Неверное значение хэша сертификата | фатальный | только TLS |
| 115 | Неизвестный PSK идентификатор (используется в TLS-PSK и TLS -SRP ) | фатальный | только TLS |
протокол ChangeCipherSpec
| смещение | байт +0 | байт +1 | Байт +2 | Байт +3 |
|---|---|---|---|---|
| Байт. 0 | 20 | Н / Д | ||
| Байт. 1..4 | Устаревшие версия | Длина | ||
| (Major) | (Minor) | 0 | 1 | |
| Байт. 5 | Тип протокола CCS | Н / Д | ||
- Тип протокола CCS
- На данный момент только 1.
Протокол приложения
| Смещение | Байт +0 | Байт +1 | Байт +2 | Байт +3 |
|---|---|---|---|---|
| Байт. 0 | 23 | Н / Д | ||
| Байт. 1..4 | Устаревшая версия | Длина | ||
| (Major) | (Minor) | (биты 15..8) | (биты 7..0) | |
| байты. 5.. (m − 1) | Данные приложения | |||
| Байт. m.. (p − 1) | MAC (необязательно) | |||
| Байт. p.. (q −1) | Заполнение (только блочные шифры) | |||
- Длина
- Длина данных приложения (исключая заголовок протокола, включая MAC-адрес и концы заполнения)
- MAC
- 32 байта для SHA-256 на основе HMAC, 20 байтов для SHA-1 HMAC, 16 байтов для HMAC на основе MD5.
- Заполнение
- Переменная длина; последний байт содержит длину заполнения.
С точки зрения прикладного протокола TLS относится к нижнему уровню, хотя модель TCP / IP слишком грубая, чтобы это показать. Это означает, что квитирование TLS обычно (за исключением случая STARTTLS ) выполняется до запуска протокола приложения. В функции виртуального сервера на основе имени, предоставляемой на уровне приложений, все совместно размещенные виртуальные серверы совместно используют один и тот же сертификат, поскольку сервер должен выбрать и отправить сертификат сразу после сообщения ClientHello. Это большая проблема для хостинговых сред, потому что это означает либо один и тот же сертификат для всех клиентов, либо использование разных IP-адресов для каждого из них.
Существуют два известных пути, предоставляемых X.509 :
- Если все виртуальные серверы принадлежат одному домену, можно использовать сертификат с подстановочным знаком. Помимо свободного выбора имени хоста, который может быть сопоставлен с сертификатами с подстановочными знаками. В зависимости от используемого протокола приложения или приложения разные правила.
- Добавьте имя виртуального хоста в расширение subjectAltName. Основная проблема заключается в том, что сертификат необходимо перевыпускать всякий раз, когда добавляется новый виртуальный сервер.
Чтобы указать имя сервера, RFC 4366 Transport Layer Security (TLS) Расширения позволяют расширять расширение Server Name Indication (SNI) в расширенное сообщение ClientHello. Это расширение указывает серверу, какое имя клиент хочет подключиться, поэтому сервер может выбрать соответствующий сертификат для отправки клиентам.
RFC 2817 также документирует метод реализации виртуального хостинга на основе именного обновления HTTP до TLS с помощью заголовка Обновление HTTP / 1.1. Обычно это упрощается для основной реализации HTTP через TLS в URI схемы «http» (которая позволяет избежать разветвления пространства URI и уменьшает количество портов), однако в настоящее время поддерживается немногими реализациями.
Основные стандарты
Текущая утвержденная версия TLS - это версия 1.3, которая указана в:
Текущий стандарт заменяет предыдущие версии, которые теперь заменены устаревшими:
- RFC 2246 : «Протокол TLS версии 1.0».
- RFC 4346 : «Протокол безопасности транспортного уровня (TLS) версии 1.1».
- RFC 5246 : «Протокол безопасности транспортного уровня (TLS) Версия 1.2».
А также никогда не стандартизированные SSL 2.0 и 3.0, которые устаревшими:
- Internet Draft (1995), SSL Version 2.0
- RFC 6101 : "Протокол уровня защищенных сокетов (SSL) версии 3.0 ».
Расширение s
Другие RFC расширили TLS.
Расширения TLS 1.0 включают:
- RFC 2595 : «Использование TLS с IMAP, POP3 и ACAP». Задает расширение для служб IMAP, POP3 и ACAP, которое позволяет серверу и клиенту использовать транспортный уровень безопасности для частной аутентифицированной связи через Интернет.
- RFC 2712 : «Дополнение из Kerberos наборов шифров для безопасности транспортного уровня (TLS)». 40-битные комплекты шифрование, в этом документе, появляются только с
- RFC 2817 : «Обновление до TLS в HTTP /1.1», объясняет, как использовать механизм обновления в HTTP /, целью документирования того факта, что эти коды шифрования уже назначены. 1.1 для инициирования TLS через существующее TCP-соединение. Это позволяет незащищенному и защищенному HTTP-трафику совместно использовать один и тот же хорошо известный порт (в данном случае http: at 80, а не https: at 443).
- RFC 2818 : «HTTP Over TLS», отличает защищенный трафик от небезопасного за счет использования другого «порта сервера».
- RFC 3207 : «Расширение службы SMTP для безопасного SMTP через транспортный уровень». Задает расширение для службы SMTP, которое позволяет использовать SMTP-серверу и клиенту использовать безопасность транспортного уровня для обеспечения частной аутентифицированной связи через Интернет.
- RFC 3268 : «Наборы шифров AES для TLS». Добавляет наборы шифров Advanced Encryption Standard (AES) к ранее существовавшим симметричным шифрам.
- RFC 3546 : «Расширения безопасности транспортного уровня (TLS)», механизм для согласования расширений протокола во время инициализации сеанса и указать некоторые расширения. Устарело RFC 4366.
- RFC 3749 : «Методы сжатия протокола безопасности транспортного уровня», определяют преобразование для методов сжатия и DEFLATE метод сжатия.
- RFC 3943 : «Сжатие протокола безопасности транспортного уровня (TLS) с использованием Lempel-Ziv-Stac (LZS)».
- RFC 4132 : «Добавление Camellia наборов шифров к безопасности транспортного уровня (TLS)».
- RFC 4162 : «Добавление SEED Наборы шифров для безопасности транспортного уровня (TLS)».
- RFC 4217 : «Защита FTP с помощью TLS ".
- RFC 4279 :« Наборы шифров с предварительным общим ключом для безопасности транспортного уровня (TLS) », укажите три набора новых наборов шифров для протокола TLS для поддержки аутентификации на общих ключах.
Расширения TLS 1.1 включают:
- RFC 4347 : «Безопасность на транспортном уровне датаграммы » указывает вариант TLS, работающий по протоколам дейтаграмм (например, UDP).
- RFC 4366 : «Расширения безопасности транспортного уровня (TLS)» как набор расширений, так и универсальный механизм расширения.
- RFC 4492 : «Наборы шифровальных данных для шифрования с эллиптической кривой (ECC) для безопасности транспортного уровня (TLS)».
- RFC 4680 : «Сообщение подтверждения TLS для дополнительных данных».
- RFC 4681 : «Расширение сопоставления пользователей TLS».
- RFC 4785 : «Наборы шифрование с предварительным общим ключом (PSK) с нулевым шифрованием для транспортного уровня. Безопасность (TLS) ».
- RFC 5054 : «Использование протокола безопасного удаленного пароля (SRP) для аутентификации TLS». Определение набора шифров TLS-SRP.
- RFC 5077 : «Возобновление сеанса безопасности транспортного уровня (TLS) без состояния на стороне сервера».
- RFC 5081 : «Использование OpenPGP ключей для аутентификации TLS», устарело RFC 6091.
Расширения для TLS 1.2 включает:
- RFC 5288 : «AES Режим счетчика Галуа (GCM) Наборы шифров для TLS».
- RFC 5289 : «Наборы шифрованных эллиптических кривых TLS с SHA-256/384 и режимом счетчика Галуа (GCM) AES».
- RFC 5746 : «Индикация повторного согласования безопасности транспортного уровня (TLS) Расширение».
- RFC 5878 : «Расширения авторизации TLS».
- RFC 5932 : «Camellia Cipher Suites для TLS«
- RFC 6066 : «Расширения безопасности транспортного уровня (TLS): определения расширений», включает указание имени сервера и сшивание OCSP.
- RFC 6091 : «Использование OpenPGP Ключи для аутентификации на транспортном уровне (TLS)».
- RFC 6176 : «Запрещение уровня защищенных сокетов (SSL) версии 2.0».
- RFC 6209 : «Добавление ARIA наборов шифров к безопасности транспортного уровня (TLS)».
- RFC 6347 : «Версия 1.2 безопасности транспортного уровня дейтаграмм».
- RFC 6367 : «Добавление наборов шифрованных Camellia для защиты транспортного уровня (TLS)».
- RFC 6460 : «Suite B Profile для безопасности транспортного уровня (TLS)».
- RFC 6655 : «Наборы шифрованных AES-CCM для безопасности транспортного уровня (TLS)».
- RFC 7027 : «Кривые Brainpool для криптографии с эллиптическими кривыми (ECC) для безопасности транспортного уровня (TLS)».
- RFC 7251 : «Наборы шифров для шифрования эллиптических кривых (ECC) AES-CCM для TLS».
- RFC 7301 : «Безопасность транспортного уровня (TLS) Согласование протокола уровня приложений Расширение».
- RFC 7366 : «Шифрование, затем MAC для транспорта Layer Security (TLS) и Datagram Transport Layer Security (DTLS)».
- RFC 7465 : «Запрещение наборов шифрованных RC4».
- RFC 7507 : «Значение набора шифрованной аварийной сигнализации TLS (SCSV) для предотвращения атак на более раннюю версию протокола».
- RFC 7568 : «Устарело использование Secure Sockets Layer версии 3.0».
- RFC 7627 : «Хэш сеанса безопасности транспортного уровня (TLS) и расширенное расширение главного секрета».
- RFC 7685 : «Расширение ClientHello Padding для безопасности транспортного уровня (TLS)».
Инкапсуляции TLS включает:
Информационные RFC
- RFC 7457 : «Обобщение известных атак на безопасность транспортного уровня (TLS) и датаграмму TLS (DTLS)»
- RFC 7525 : «Рекомендации по безопасному использованию транспортного уровня. Безопасность (TLS) и безопасность транспортного уровня дейтаграмм (DTLS) »
- Согласование протокола уровня приложений - TL Расширение S, используемое для SPDY и TLS False Start
- Bullrun (программа дешифрования) - секретная программа защиты от шифрования, запускаемая Агентством национальной безопасности США
- Центр сертификации
- Прозрачность сертификата
- HTTP Strict Transport Безопасность - HSTS
- Файл связки ключей
- QUIC (Быстрые подключения к Интернету через UDP) - «... был разработан для обеспечения защиты, эквивалентной TLS / SSL»; Основная цель QUIC - улучшить воспринимаемую производительность ориентированных на соединение веб-приложений, которые в настоящее время используют TCP
- шифрование с сервером
- tcpcrypt
- DTLS
- ускорение TLS
Это Статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.
- Вагнер, Давид; Шнайер, Брюс (ноябрь 1996 г.). «Анализ протокола SSL 3.0» (PDF). Второй семинар USENIX по процедурам электронной торговли. USENIX Press. С. 29–40.
- Эрик Рескорла (2001). SSL и TLS: проектирование и создание безопасных систем. США: Addison-Wesley Pub Co. ISBN 978-0-201-61598-2.
- Стивен А. Томас (2000). Основы SSL и TLS для защиты Интернета. Нью-Йорк: Вили. ISBN 978-0-471-38354-3.
- Бард, Грегори (2006). «Сложная, но выполнимая блочно-адаптивная атака по выбранному открытому тексту на SSL». Международная ассоциация криптологических исследований (136). Проверено 23 сентября 2011 г.
- Канвел, Брайс. «Перехват пароля в канале SSL / TLS». Проверено 20 апреля 2007 г.
- Несколько авторов IETF. «RFC изменения для повторного согласования TLS». Проверено 11 декабря 2009 г.
- Создание VPN с использованием IPsec и SSL / TLS Статья в Linux Journal, написанная Рами Розен
- Полк, Тим; Маккей, Керри; Чохани, Сантош (апрель 2014 г.). «Рекомендации по выбору, настройке и использованию реализаций безопасности транспортного уровня (TLS)» (PDF). Национальный институт стандартов и технологий. Архивировано из оригинального (PDF) на 2014-05-08. Проверено 7 мая 2014 г.
- Абду, Абдель Рахман; ван Оршот, Пол (август 2017 г.). «Проверка местоположения сервера (SLV) и закрепление местоположения сервера: усиление аутентификации TLS». Сделки о конфиденциальности и безопасности. ACM.
| Викискладе есть носители, относящиеся к SSL и TLS. |
Спецификации (см. § Стандарты для старых версий SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1 ссылки)
- Протокол безопасности транспортного уровня (TLS) версии 1.2 RFC 5246
- IETF (Internet Engineering Task Force) TLS Workgroup
- нетерпимость к версии TLS
- Другое
- OWASP: шпаргалка по защите транспортного уровня
- Доклад о SSL / TLS, в котором делается попытка объяснить вещи понятными людям терминами.
- SSL: Основа веб-безопасности
- Уязвимость повторного согласования TLS - Инструменты IETF
- Надежное движение в Интернете - SSL Pulse - Обзор реализации TLS / SSL на самых популярных веб-сайтах
- Как создать CSR для SSL
- Как работает TLS Handshake в частном браузере