stringtranslate.com

Безопасность транспортного уровня

Transport Layer Security ( TLS ) — это криптографический протокол, разработанный для обеспечения безопасности связи по компьютерной сети. Протокол широко используется в таких приложениях, как электронная почта , мгновенные сообщения и передача голоса по IP , но его использование в обеспечении безопасности HTTPS остается наиболее заметным для общественности.

Протокол TLS направлен в первую очередь на обеспечение безопасности, включая конфиденциальность (приватность), целостность и подлинность посредством использования криптографии , например, использования сертификатов , между двумя или более взаимодействующими компьютерными приложениями. Он работает на уровне представления и сам состоит из двух уровней: протоколов записи TLS и протоколов рукопожатия TLS .

Тесно связанный протокол Datagram Transport Layer Security ( DTLS ) — это протокол связи , который обеспечивает безопасность приложений на основе датаграмм . В технической документации часто встречаются ссылки на "( D ) TLS ", когда это относится к обеим версиям. [1]

TLS — это предлагаемый стандарт IETF , впервые определенный в 1999 году, а текущая версия — TLS 1.3, определенная в августе 2018 года. TLS основан на ныне устаревших спецификациях SSL ( Secure Sockets Layer ) (1994, 1995, 1996), разработанных Netscape Communications для добавления протокола HTTPS в веб-браузер Netscape Navigator .

Описание

Клиент-серверные приложения используют протокол TLS для взаимодействия по сети таким образом, чтобы предотвратить подслушивание и несанкционированный доступ .

Поскольку приложения могут взаимодействовать как с TLS (или SSL), так и без него, клиенту необходимо запросить сервер на установку соединения TLS. [2] Одним из основных способов достижения этого является использование другого номера порта для соединений TLS. Порт 80 обычно используется для незашифрованного трафика HTTP , в то время как порт 443 является общим портом, используемым для зашифрованного трафика HTTPS . Другой механизм заключается в отправке серверу запроса STARTTLS , специфичного для протокола, для переключения соединения на TLS — например, при использовании почтовых и новостных протоколов.

После того, как клиент и сервер согласились использовать TLS, они договариваются о соединении с отслеживанием состояния , используя процедуру рукопожатия (см. § Рукопожатие TLS). [3] Протоколы используют рукопожатие с асимметричным шифром для установки не только настроек шифра, но и общего ключа для конкретного сеанса, с помощью которого дальнейшее общение шифруется с использованием симметричного шифра . Во время этого рукопожатия клиент и сервер согласовывают различные параметры, используемые для установления безопасности соединения:

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

TLS и SSL не вписываются четко ни в один из уровней модели OSI или модели TCP/IP . [4] [5] TLS работает «поверх некоторого надежного транспортного протокола (например, TCP)», [6] : §1  , что подразумевает, что он находится выше транспортного уровня . Он обеспечивает шифрование для более высоких уровней, что обычно является функцией уровня представления . Однако приложения обычно используют TLS, как если бы это был транспортный уровень, [4] [5] хотя приложения, использующие TLS, должны активно контролировать инициирование рукопожатий TLS и обработку обмениваемых сертификатов аутентификации. [6] : §1 

При использовании TLS соединения между клиентом (например, веб-браузером) и сервером (например, wikipedia.org) будут иметь все следующие свойства: [6] : §1 

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

Были предприняты попытки подорвать аспекты безопасности связи, которые TLS стремится обеспечить, и протокол был пересмотрен несколько раз, чтобы устранить эти угрозы безопасности. Разработчики веб-браузеров неоднократно пересматривали свои продукты, чтобы защититься от потенциальных уязвимостей безопасности после того, как они были обнаружены (см. Историю поддержки TLS/SSL веб-браузерами).

Безопасность транспортного уровня датаграмм

Datagram Transport Layer Security, сокращенно DTLS, — это связанный протокол связи, обеспечивающий безопасность приложений на основе датаграмм , позволяя им взаимодействовать способом, разработанным [7] [8] для предотвращения подслушивания , взлома или подделки сообщений . Протокол DTLS основан на ориентированном на поток протоколе Transport Layer Security (TLS) и предназначен для предоставления аналогичных гарантий безопасности. Однако, в отличие от TLS, его можно использовать с большинством ориентированных на датаграммы протоколов, включая User Datagram Protocol (UDP), Datagram Congestion Control Protocol (DCCP), Control And Provisioning of Wireless Access Points (CAPWAP), Stream Control Transmission Protocol (SCTP) инкапсуляция и Secure Real-time Transport Protocol (SRTP).

Поскольку датаграмма протокола DTLS сохраняет семантику базового транспорта — приложение не страдает от задержек, связанных с потоковыми протоколами, однако приложению приходится иметь дело с переупорядочением пакетов , потерей датаграммы и данными, размер которых превышает размер сетевого пакета датаграммы . Поскольку DTLS использует UDP или SCTP вместо TCP, он избегает проблемы сбоя TCP [ 9] [10] при использовании для создания туннеля VPN.

Первоначальный выпуск DTLS версии 1.0 2006 года не был отдельным документом. Он был представлен как серия дельт к TLS 1.1. [11] Аналогично последующий выпуск DTLS 2012 года является дельтой к TLS 1.2. Ему был присвоен номер версии DTLS 1.2, чтобы соответствовать его версии TLS. Наконец, DTLS 1.3 2022 года является дельтой к TLS 1.3. Как и две предыдущие версии, DTLS 1.3 призван предоставить «эквивалентные гарантии безопасности [TLS 1.3] за исключением защиты заказа/невоспроизводимости». [12]

Многие VPN-клиенты , включая Cisco AnyConnect [13] и InterCloud Fabric, [14] OpenConnect , [15] ZScaler tunnel, [16] F5 Networks Edge VPN Client , [17] и Citrix Systems NetScaler [18], используют DTLS для защиты трафика UDP. Кроме того, все современные веб-браузеры поддерживают DTLS-SRTP [19] для WebRTC .

История и развитие

Система безопасной сети передачи данных

Протокол безопасности транспортного уровня (TLS) вместе с несколькими другими базовыми платформами сетевой безопасности был разработан в рамках совместной инициативы, начатой ​​в августе 1986 года Агентством национальной безопасности, Национальным бюро стандартов, Агентством оборонных коммуникаций и двенадцатью коммуникационными и компьютерными корпорациями, которые инициировали специальный проект под названием Secure Data Network System (SDNS). [26] Программа была описана в сентябре 1987 года на 10-й Национальной конференции по компьютерной безопасности в обширном наборе опубликованных статей. Инновационная исследовательская программа была сосредоточена на проектировании следующего поколения защищенной компьютерной коммуникационной сети и спецификаций продукта, которые будут реализованы для приложений в публичных и частных интернетах. Она была предназначена для дополнения быстро появляющихся новых стандартов интернета OSI, продвигающихся вперед как в профилях GOSIP правительства США, так и в огромных усилиях ITU-ISO JTC1 по интернету на международном уровне. Первоначально известный как протокол SP4, он был переименован в TLS и впоследствии опубликован в 1995 году как международный стандарт ITU-T X.274|ISO/IEC 10736:1995.

Безопасное сетевое программирование (SNP)

Ранние исследовательские работы по безопасности транспортного уровня включали интерфейс прикладного программирования (API) Secure Network Programming ( SNP ), который в 1993 году исследовал подход с использованием API защищенного транспортного уровня, очень похожего на сокеты Беркли , для упрощения модернизации уже существующих сетевых приложений с мерами безопасности. SNP был опубликован и представлен на летней технической конференции USENIX 1994 года. [27] [28] Проект SNP финансировался грантом от NSA профессору Саймону Лэму в Техасском университете в Остине в 1991 году . [29] Secure Network Programming выиграл премию ACM Software System Award 2004 года . [30] [31] Саймон Лэм был включен в Зал славы Интернета за «изобретение защищенных сокетов и реализацию первого уровня защищенных сокетов, названного SNP, в 1993 году». [32] [33]

SSL 1.0, 2.0 и 3.0

Netscape разработала оригинальные протоколы SSL, а Тахер Элгамал , главный научный сотрудник Netscape Communications с 1995 по 1998 год, был назван «отцом SSL». [34] [35] [36] [37] Версия SSL 1.0 никогда не была публично выпущена из-за серьезных недостатков безопасности в протоколе. Версия 2.0, выпущенная в феврале 1995 года, быстро обнаружила ряд недостатков безопасности и удобства использования. Она использовала те же криптографические ключи для аутентификации и шифрования сообщений. Она имела слабую конструкцию MAC, которая использовала хэш-функцию MD5 с секретным префиксом, что делало ее уязвимой для атак на расширение длины. Она также не обеспечивала никакой защиты ни для начального рукопожатия, ни для явного закрытия сообщения, оба из которых означали, что атаки типа «человек посередине» могли остаться незамеченными. Более того, SSL 2.0 предполагал единую службу и фиксированный сертификат домена, что противоречило широко используемой функции виртуального хостинга на веб-серверах, поэтому большинство веб-сайтов были фактически ослаблены из-за использования SSL.

Эти недостатки потребовали полной переработки протокола до версии SSL 3.0. [38] [36] Выпущенный в 1996 году, он был создан Полом Кохером совместно с инженерами Netscape Филом Карлтоном и Аланом Фрейером, с эталонной реализацией Кристофера Аллена и Тима Диркса из Certicom. Более новые версии 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. [39] SSL 3.0 был объявлен устаревшим в июне 2015 года в соответствии с RFC  7568.

ТЛС 1.0

TLS 1.0 был впервые определен в RFC  2246 в январе 1999 года как обновление SSL версии 3.0, и написан Кристофером Алленом и Тимом Дирксом из Certicom. Как указано в RFC, «различия между этим протоколом и SSL 3.0 не являются драматичными, но они достаточно значительны, чтобы исключить взаимодействие между TLS 1.0 и SSL 3.0». Тим Диркс позже написал, что эти изменения и переименование из «SSL» в «TLS» были жестом спасения лица для Microsoft, «чтобы это не выглядело [как] IETF просто штампует протокол Netscape». [40]

Совет PCI предложил организациям перейти с TLS 1.0 на TLS 1.1 или выше до 30 июня 2018 года. [41] [42] В октябре 2018 года Apple , Google , Microsoft и Mozilla совместно объявили о прекращении поддержки TLS 1.0 и 1.1 в марте 2020 года. [20] TLS 1.0 и 1.1 были официально прекращены в RFC  8996 в марте 2021 года.

ТЛС 1.1

TLS 1.1 был определен в RFC 4346 в апреле 2006 года. [43] Это обновление TLS версии 1.0. Существенные отличия в этой версии включают:

Поддержка TLS версий 1.0 и 1.1 была повсеместно прекращена веб-сайтами примерно в 2020 году, что привело к отключению доступа к версиям Firefox до 24 и браузерам на базе Chromium до 29. [45] [46]

ТЛС 1.2

TLS 1.2 был определен в RFC  5246 в августе 2008 года. [23] Он основан на более ранней спецификации TLS 1.1. Основные отличия включают:

Все версии TLS были дополнительно улучшены в RFC  6176 в марте 2011 года, убрав их обратную совместимость с SSL, так что сеансы TLS никогда не согласовывают использование Secure Sockets Layer (SSL) версии 2.0. В настоящее время нет официальной даты прекращения поддержки TLS 1.2. Спецификации для TLS 1.2 также были переопределены в документе отслеживания стандартов RFC  8446, чтобы сделать его максимально безопасным; теперь его следует рассматривать как протокол отказоустойчивости, предназначенный только для согласования с клиентами, которые не могут общаться по TLS 1.3 (исходное определение RFC 5246 для TLS 1.2 с тех пор устарело).

ТЛС 1.3

TLS 1.3 был определен в RFC 8446 в августе 2018 года. [6] Он основан на более ранней спецификации TLS 1.2. Основные отличия от TLS 1.2 включают: [47]

Network Security Services (NSS), криптографическая библиотека, разработанная Mozilla и используемая ее веб-браузером Firefox , включила TLS 1.3 по умолчанию в феврале 2017 года. [49] Поддержка TLS 1.3 была впоследствии добавлена ​​— но из-за проблем совместимости для небольшого числа пользователей не была автоматически включена [50] — в Firefox 52.0 , который был выпущен в марте 2017 года. TLS 1.3 был включен по умолчанию в мае 2018 года с выпуском Firefox 60.0 . [51]

Google Chrome установил TLS 1.3 в качестве версии по умолчанию на короткое время в 2017 году. Затем он удалил ее из списка версий по умолчанию из-за несовместимых промежуточных устройств, таких как веб-прокси Blue Coat . [52]

Непереносимость новой версии TLS заключалась в окостенении протокола ; промежуточные устройства окостенели в параметре версии протокола. В результате версия 1.3 имитирует образ провода версии 1.2. Это изменение произошло очень поздно в процессе проектирования и было обнаружено только во время развертывания браузера. [53] Обнаружение этой непереносимости также привело к тому, что стратегия согласования предыдущей версии, в которой выбиралась самая совпадающая версия, была заброшена из-за неработоспособных уровней окостенения. [54] « Смазка » — точка расширения, в которой один участник протокола заявляет о поддержке несуществующих расширений, чтобы гарантировать, что нераспознанные, но фактически существующие расширения допускаются и, таким образом, противостоять окостенению, изначально была разработана для TLS, но с тех пор была принята в других местах. [54]

Во время хакатона IETF 100 , который состоялся в Сингапуре в 2017 году, группа TLS работала над адаптацией приложений с открытым исходным кодом для использования TLS 1.3. [55] [56] Группа TLS состояла из людей из Японии, Великобритании и Маврикия через команду cyberstorm.mu. [56] Эта работа была продолжена на хакатоне IETF 101 в Лондоне , [57] и хакатоне IETF 102 в Монреале. [58]

wolfSSL позволил использовать TLS 1.3 с версии 3.11.1, выпущенной в мае 2017 года. [59] Как первая коммерческая реализация TLS 1.3, wolfSSL 3.11.1 поддерживала Draft 18 и теперь поддерживает Draft 28, [60] финальную версию, а также многие старые версии. Была опубликована серия блогов о разнице в производительности между TLS 1.2 и 1.3. [61]

В, популярный проект OpenSSL выпустил версию 1.1.1 своей библиотеки, в которой поддержка TLS 1.3 была «главной новой функцией». [62]

Поддержка TLS 1.3 была добавлена ​​в Secure Channel (schannel) для GA- выпусков Windows 11 и Windows Server 2022. [ 63]

Безопасность на транспорте предприятия

Electronic Frontier Foundation похвалила TLS 1.3 и выразила обеспокоенность по поводу варианта протокола Enterprise Transport Security (ETS), который намеренно отключает важные меры безопасности в TLS 1.3. [64] Первоначально называвшийся Enterprise TLS (eTLS), ETS является опубликованным стандартом, известным как « ETSI TS103523-3», «Протокол безопасности промежуточного устройства, часть 3: безопасность корпоративной транспортировки». Он предназначен для использования исключительно в закрытых сетях, таких как банковские системы. ETS не поддерживает прямую секретность, чтобы позволить сторонним организациям, подключенным к закрытым сетям, использовать свой закрытый ключ для мониторинга сетевого трафика с целью обнаружения вредоносных программ и упрощения проведения аудита. [65] [66] Несмотря на заявленные преимущества, EFF предупредила, что потеря прямой секретности может облегчить раскрытие данных, а также заявила, что существуют лучшие способы анализа трафика. [64]

Цифровые сертификаты

Пример веб-сайта с цифровым сертификатом

Цифровой сертификат удостоверяет право собственности на открытый ключ названного субъекта сертификата и указывает на определенные ожидаемые использования этого ключа. Это позволяет другим (доверяющим сторонам) полагаться на подписи или на утверждения, сделанные закрытым ключом, который соответствует сертифицированному открытому ключу. Хранилища ключей и хранилища доверия могут быть в различных форматах, таких как .pem , .crt, .pfx и .jks .

Центры сертификации

TLS обычно полагается на набор доверенных сторонних центров сертификации для установления подлинности сертификатов. Доверие обычно закреплено в списке сертификатов, распространяемых с программным обеспечением агента пользователя, [67] и может быть изменено проверяющей стороной.

По данным Netcraft , которая отслеживает активные сертификаты TLS, ведущим на рынке центром сертификации (CA) был Symantec с начала их исследования (или VeriSign до того, как подразделение служб аутентификации было куплено Symantec). По состоянию на 2015 год на долю Symantec приходилось чуть менее трети всех сертификатов и 44% действительных сертификатов, используемых 1 миллионом самых загруженных веб-сайтов, по подсчетам Netcraft. [68] В 2017 году Symantec продала свой бизнес TLS/SSL компании DigiCert. [69] В обновленном отчете было показано, что IdenTrust , DigiCert и Sectigo являются тремя крупнейшими центрами сертификации по доле рынка с мая 2019 года. [70]

В результате выбора сертификатов X.509 необходимы центры сертификации и инфраструктура открытого ключа для проверки связи между сертификатом и его владельцем, а также для генерации, подписания и администрирования действительности сертификатов. Хотя это может быть удобнее, чем проверка личности через сеть доверия , массовые раскрытия слежки в 2013 году сделали более широко известным, что центры сертификации являются слабым местом с точки зрения безопасности, допуская атаки типа «человек посередине» (MITM), если центр сертификации сотрудничает (или скомпрометирован). [71] [72]

Важность SSL-сертификатов

Алгоритмы

Обмен ключами или соглашение о ключах

Прежде чем клиент и сервер смогут начать обмениваться информацией, защищенной TLS, они должны безопасно обменяться или согласовать ключ шифрования и шифр для использования при шифровании данных (см. § Шифр). Среди методов, используемых для обмена ключами/согласования, есть: открытые и закрытые ключи, сгенерированные с помощью RSA (обозначаются TLS_RSA в протоколе рукопожатия TLS), Диффи–Хеллмана (TLS_DH), эфемерный Диффи–Хеллмана (TLS_DHE), эллиптический-кривой Диффи–Хеллмана (TLS_ECDH), эфемерный эллиптический-кривой Диффи–Хеллмана (TLS_ECDHE), анонимный Диффи–Хеллмана (TLS_DH_anon), [23] предварительный общий ключ (TLS_PSK) [73] и безопасный удаленный пароль (TLS_SRP). [74]

Методы согласования ключей TLS_DH_anon и TLS_ECDH_anon не аутентифицируют сервер или пользователя и поэтому редко используются, поскольку они уязвимы для атак типа «человек посередине» . Только TLS_DHE и TLS_ECDHE обеспечивают прямую секретность.

Сертификаты открытых ключей, используемые во время обмена/соглашения, также различаются по размеру открытых/закрытых ключей шифрования, используемых во время обмена, и, следовательно, по надежности предоставляемой безопасности. В июле 2013 года Google объявила, что больше не будет использовать 1024-битные открытые ключи и перейдет на 2048-битные ключи, чтобы повысить безопасность шифрования TLS, которое она предоставляет своим пользователям, поскольку надежность шифрования напрямую связана с размером ключа . [75] [76]

Шифр

Примечания
  1. ^ abcd RFC  5746 должен быть реализован для исправления ошибки повторного согласования, которая в противном случае нарушила бы этот протокол.
  2. ^ Если библиотеки реализуют исправления, перечисленные в RFC  5746, это нарушает спецификацию SSL 3.0, которую IETF не может изменить в отличие от TLS. Большинство текущих библиотек реализуют исправление и игнорируют нарушение, которое оно вызывает.
  3. ^ ab Атака BEAST взламывает все блочные шифры (шифры CBC), используемые в SSL 3.0 и TLS 1.0, если они не были смягчены клиентом и/или сервером. См. § Веб-браузеры.
  4. ^ Атака POODLE взламывает все блочные шифры (шифры CBC), используемые в SSL 3.0, если они не смягчены клиентом и/или сервером. См. § Веб-браузеры.
  5. ^ abcdefg Шифры AEAD (такие как GCM и CCM ) можно использовать только в TLS 1.2 или более поздней версии.
  6. ^ abcdefgh Шифры CBC можно атаковать с помощью атаки «Счастливая тринадцать», если библиотека не написана тщательно для устранения побочных каналов синхронизации.
  7. ^ abcdef Атака Sweet32 взламывает блочные шифры с размером блока 64 бита. [86]
  8. ^ Хотя длина ключа 3DES составляет 168 бит, эффективная сила безопасности 3DES составляет всего 112 бит, [87] что ниже рекомендуемого минимума в 128 бит. [88]
  9. ^ ab IDEA и DES были удалены из TLS 1.2. [89]
  10. ^ Наборы шифров abc 40-битной стойкости были намеренно разработаны с уменьшенной длиной ключа, чтобы соответствовать отмененным в настоящее время правилам США, запрещающим экспорт криптографического программного обеспечения, содержащего определенные стойкие алгоритмы шифрования (см. Экспорт криптографии из США ). Эти слабые наборы запрещены в TLS 1.1 и более поздних версиях.
  11. ^ Использование RC4 во всех версиях TLS запрещено RFC  7465 (поскольку атаки RC4 ослабляют или нарушают RC4, используемый в SSL/TLS).
  12. ^ Только аутентификация, без шифрования.

Целостность данных

Код аутентификации сообщения (MAC) используется для обеспечения целостности данных. HMAC используется для режима CBC блочных шифров. Аутентифицированное шифрование (AEAD), такое как режим GCM и CCM, использует интегрированный в AEAD MAC и не использует HMAC . [6] : §8.4  PRF на основе HMAC или HKDF используется для подтверждения связи TLS.

Заявки и принятие

При проектировании приложений TLS обычно реализуется поверх протоколов транспортного уровня, шифруя все данные, связанные с протоколами, такими как HTTP , FTP , SMTP , NNTP и XMPP .

Исторически TLS использовался в основном с надежными транспортными протоколами, такими как Transmission Control Protocol (TCP). Однако он также был реализован с транспортными протоколами, ориентированными на датаграммы, такими как User Datagram Protocol (UDP) и Datagram Congestion Control Protocol (DCCP), использование которых было стандартизировано независимо с использованием термина Datagram Transport Layer Security ( DTLS ).

Веб-сайты

Основное применение TLS — защита трафика World Wide Web между веб-сайтом и веб-браузером, закодированным с помощью протокола HTTP. Такое использование TLS для защиты трафика HTTP составляет протокол HTTPS . [91]

Примечания
  1. ^ см. § Таблицу шифров выше
  2. ^ см. § Веб-браузеры и § Атаки на разделы TLS/SSL

Веб-браузеры

По состоянию на апрель 2016 года последние версии всех основных веб-браузеров поддерживают TLS 1.0, 1.1 и 1.2 и включают их по умолчанию. Однако не все поддерживаемые операционные системы Microsoft поддерживают последнюю версию IE. Кроме того, многие операционные системы Microsoft в настоящее время поддерживают несколько версий IE, но это изменилось в соответствии с часто задаваемыми вопросами о политике жизненного цикла поддержки Internet Explorer от Microsoft, заархивированными 20 июня 2023 г. на Wayback Machine : «начиная с 12 января 2016 года только самая последняя версия Internet Explorer, доступная для поддерживаемой операционной системы, будет получать техническую поддержку и обновления безопасности». Затем на странице перечисляется последняя поддерживаемая версия IE на эту дату для каждой операционной системы. Следующей критической датой будет дата, когда операционная система достигнет стадии окончания жизненного цикла. С 15 июня 2022 года Internet Explorer 11 прекратил поддержку редакций Windows 10 , которые следуют политике современного жизненного цикла Microsoft. [95] [96]

Меры по снижению уровня известных атак пока недостаточны:

Библиотеки

Большинство библиотек программирования SSL и TLS являются бесплатным программным обеспечением с открытым исходным кодом .

В докладе, представленном на конференции ACM 2012 года по компьютерной и коммуникационной безопасности [98], показано, что многие приложения неправильно использовали некоторые из этих библиотек SSL, что приводило к уязвимостям. По словам авторов:

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

Другие применения

Simple Mail Transfer Protocol (SMTP) также может быть защищен TLS. Эти приложения используют сертификаты открытых ключей для проверки идентичности конечных точек.

TLS также может использоваться для туннелирования всего сетевого стека для создания VPN , как в случае с OpenVPN и OpenConnect . Многие поставщики к настоящему времени объединили возможности шифрования и аутентификации TLS с авторизацией. Также с конца 1990-х годов наблюдалось существенное развитие в создании клиентских технологий вне веб-браузеров, чтобы обеспечить поддержку клиент-серверных приложений. По сравнению с традиционными технологиями IPsec VPN, TLS имеет некоторые неотъемлемые преимущества в области межсетевого экрана и обхода NAT , что упрощает администрирование для больших групп удаленного доступа.

TLS также является стандартным методом защиты сигнализации приложения Session Initiation Protocol (SIP). TLS может использоваться для обеспечения аутентификации и шифрования сигнализации SIP, связанной с VoIP и другими приложениями на основе SIP. [99]

Безопасность

Атаки на TLS/SSL

Ниже перечислены наиболее значимые атаки на TLS/SSL.

В феврале 2015 года IETF выпустила информационный RFC [100], в котором обобщены различные известные атаки на TLS/SSL.

Атака повторного согласования

В августе 2009 года была обнаружена уязвимость процедуры повторного согласования, которая может привести к атакам с инъекцией открытого текста против SSL 3.0 и всех текущих версий TLS. [101] Например, она позволяет злоумышленнику, который может перехватить соединение https, вставлять свои собственные запросы в начало разговора клиента с веб-сервером. Злоумышленник фактически не может расшифровать клиент-серверное общение, поэтому это отличается от типичной атаки «человек посередине». Краткосрочное исправление заключается в том, чтобы веб-серверы прекратили разрешать повторное согласование, что обычно не требует других изменений, если только не используется аутентификация клиентского сертификата . Чтобы устранить уязвимость, было предложено расширение индикации повторного согласования для TLS. Оно потребует от клиента и сервера включать и проверять информацию о предыдущих рукопожатиях в любые повторные рукопожатия. [102] Это расширение стало предлагаемым стандартом и ему был присвоен номер RFC  5746. RFC был реализован несколькими библиотеками. [103] [104] [105]

Атаки понижения рейтинга:FREAK атака иАтака в тупике

Атака с понижением версии протокола (также называемая атакой с откатом версии) обманывает веб-сервер, заставляя его устанавливать соединения с предыдущими версиями TLS (например, SSLv2), которые давно заброшены как небезопасные.

Предыдущие модификации исходных протоколов, такие как False Start [106] (принятый и включенный Google Chrome [107] ) или Snap Start , как сообщается, вводили ограниченные атаки понижения версии протокола TLS [108] или позволяли вносить изменения в список наборов шифров, отправляемых клиентом на сервер. При этом злоумышленник мог преуспеть в том, чтобы повлиять на выбор набора шифров, пытаясь понизить версию набора шифров, согласованную для использования либо более слабого симметричного алгоритма шифрования, либо более слабого обмена ключами. [109] Доклад, представленный на конференции ACM по компьютерной и коммуникационной безопасности в 2012 году, продемонстрировал, что расширение False Start находилось под угрозой: при определенных обстоятельствах оно могло позволить злоумышленнику восстановить ключи шифрования в автономном режиме и получить доступ к зашифрованным данным. [110]

Атаки с понижением уровня шифрования могут заставить серверы и клиентов согласовывать соединение с использованием криптографически слабых ключей. В 2014 году была обнаружена атака типа «человек посередине» под названием FREAK, которая затрагивала стек OpenSSL , веб-браузер Android по умолчанию и некоторые браузеры Safari . [111] Атака заключалась в том, чтобы обманом заставить серверы согласовать соединение TLS с использованием криптографически слабых 512-битных ключей шифрования.

Logjam — уязвимость безопасности , обнаруженная в мае 2015 года, которая использует возможность использования устаревших 512-битных групп Диффи–Хеллмана «экспортного класса», датируемых 1990-ми годами. [112] Она заставляет уязвимые серверы перейти на криптографически слабые 512-битные группы Диффи–Хеллмана. Затем злоумышленник может вывести ключи, которые определяют клиент и сервер, используя обмен ключами Диффи–Хеллмана .

Атаки между протоколами: DROWN

Атака DROWN — это эксплойт, который атакует серверы, поддерживающие современные наборы протоколов SSL/TLS, используя их поддержку устаревшего, небезопасного протокола SSLv2 для атаки на соединения, использующие современные протоколы, которые в противном случае были бы безопасными. [113] [114] DROWN использует уязвимость в используемых протоколах и конфигурации сервера, а не какую-либо конкретную ошибку реализации. Полные сведения о DROWN были объявлены в марте 2016 года вместе с исправлением для эксплойта. На тот момент более 81 000 из 1 миллиона самых популярных веб-сайтов были среди защищенных TLS веб-сайтов, которые были уязвимы для атаки DROWN. [114]

ЗВЕРЬ атакует

23 сентября 2011 года исследователи Тай Дуонг и Джулиано Риццо продемонстрировали доказательство концепции под названием BEAST ( Browser Exploit Against SSL/TLS ) [115], использующее Java-апплет для нарушения ограничений политики одного источника для давно известной уязвимости цепочки блоков шифра (CBC) в TLS 1.0: [116] [117] злоумышленник, наблюдающий за 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 . Ранее не было продемонстрировано практических эксплойтов для этой уязвимости , которая была первоначально обнаружена Филиппом Рогауэем [118] в 2002 году. Уязвимость атаки была устранена в TLS 1.1 в 2006 году, но TLS 1.1 не получил широкого распространения до этой демонстрации атаки.

RC4 как потоковый шифр невосприимчив к атаке BEAST. Поэтому RC4 широко использовался как способ смягчения атаки BEAST на стороне сервера. Однако в 2013 году исследователи обнаружили больше уязвимостей в RC4. После этого включение RC4 на стороне сервера больше не рекомендовалось. [119]

Chrome и Firefox сами по себе не уязвимы для атаки BEAST, [120] [121] однако Mozilla обновила свои библиотеки NSS для смягчения атак типа BEAST . NSS используется Mozilla Firefox и Google Chrome для реализации SSL. Некоторые веб-серверы , имеющие неисправную реализацию спецификации SSL, могут в результате перестать работать. [122]

10 января 2012 года компания Microsoft выпустила бюллетень по безопасности MS12-006, в котором была устранена уязвимость BEAST путем изменения способа, которым компонент Windows Secure Channel ( Schannel ) передает зашифрованные сетевые пакеты с сервера. [123] Пользователи 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 года. [124]

Атаки ПРЕСТУПЛЕНИЯ и НАРУШЕНИЯ

Авторы атаки BEAST также являются создателями более поздней атаки CRIME , которая может позволить злоумышленнику восстановить содержимое веб-cookie-файлов, если используется сжатие данных вместе с TLS. [125] [126] При использовании для восстановления содержимого секретных аутентификационных cookie-файлов она позволяет злоумышленнику выполнить перехват сеанса в аутентифицированном веб-сеансе.

Хотя атака CRIME была представлена ​​как общая атака, которая может эффективно работать против большого количества протоколов, включая, помимо прочего, TLS и протоколы прикладного уровня, такие как SPDY или HTTP , были продемонстрированы и в значительной степени нейтрализованы в браузерах и серверах только эксплойты против TLS и SPDY. Эксплойт CRIME против сжатия HTTP не был нейтрализован вообще, хотя авторы CRIME предупреждали, что эта уязвимость может быть даже более распространенной, чем сжатие SPDY и TLS вместе взятые. В 2013 году был анонсирован новый случай атаки CRIME против сжатия HTTP, получивший название BREACH . На основе атаки CRIME атака BREACH может извлекать токены входа, адреса электронной почты или другую конфиденциальную информацию из зашифрованного TLS веб-трафика всего за 30 секунд (в зависимости от количества извлекаемых байтов), при условии, что злоумышленник обманом заставит жертву посетить вредоносную веб-ссылку или сможет внедрить контент в действительные страницы, которые посещает пользователь (например, беспроводная сеть под контролем злоумышленника). [127] Все версии TLS и SSL подвержены риску BREACH независимо от используемого алгоритма шифрования или шифра. [128] В отличие от предыдущих случаев CRIME, от которых можно успешно защититься, отключив сжатие TLS или сжатие заголовков SPDY, BREACH использует сжатие HTTP, которое в действительности невозможно отключить, поскольку практически все веб-серверы полагаются на него для повышения скорости передачи данных для пользователей. [127] Это известное ограничение TLS, поскольку он подвержен атаке с использованием выбранного открытого текста против данных прикладного уровня, которые он призван защищать.

Атаки по времени на заполнение

Более ранние версии TLS были уязвимы к атаке «Оракул заполнения», обнаруженной в 2002 году. Новый вариант, названный атакой «Счастливая тринадцать» , был опубликован в 2013 году.

Некоторые эксперты [88] также рекомендовали избегать тройного DES CBC. Поскольку последние поддерживаемые шифры, разработанные для поддержки любой программы, использующей библиотеку SSL/TLS Windows XP , например Internet Explorer на Windows XP, — это RC4 и Triple-DES, и поскольку RC4 теперь устарел (см. обсуждение атак RC4 ), это затрудняет поддержку любой версии SSL для любой программы, использующей эту библиотеку на XP.

Исправление было выпущено как расширение Encrypt-then-MAC для спецификации TLS, выпущенное как RFC  7366. [129] Атака Lucky Thirteen может быть смягчена в TLS 1.2, используя только шифры AES_GCM; AES_CBC остается уязвимым. SSL может защищать электронную почту, VoIP и другие типы коммуникаций по незащищенным сетям в дополнение к его основному варианту использования безопасной передачи данных между клиентом и сервером [2]

атака ПУДЛЯ

14 октября 2014 года исследователи Google опубликовали уязвимость в конструкции SSL 3.0, которая делает режим работы CBC с SSL 3.0 уязвимым для атаки padding ( CVE - 2014-3566). Они назвали эту атаку POODLE ( Padding Oracle On Downgraded Legacy Encryption ). В среднем злоумышленникам нужно сделать всего 256 запросов SSL 3.0, чтобы раскрыть один байт зашифрованных сообщений. [94]

Хотя эта уязвимость существует только в SSL 3.0, а большинство клиентов и серверов поддерживают TLS 1.0 и выше, все основные браузеры добровольно переходят на SSL 3.0, если рукопожатия с более новыми версиями TLS не удались, если только они не предоставляют пользователю или администратору возможность отключить SSL 3.0, и пользователь или администратор это делают [ необходима цитата ] . Таким образом, посредник может сначала провести атаку отката версии , а затем воспользоваться этой уязвимостью. [94]

8 декабря 2014 года был анонсирован вариант POODLE, который влияет на реализации TLS, не обеспечивающие должным образом соблюдение требований к байтам заполнения. [130]

RC4 атаки

Несмотря на существование атак на RC4 , которые нарушали его безопасность, наборы шифров в SSL и TLS, основанные на RC4, по-прежнему считались безопасными до 2013 года на основе способа, которым они использовались в SSL и TLS. В 2011 году набор RC4 был фактически рекомендован в качестве обходного пути для атаки BEAST . [131] Новые формы атак, раскрытые в марте 2013 года, окончательно продемонстрировали осуществимость взлома RC4 в TLS, что свидетельствует о том, что это не является хорошим обходным путем для BEAST. [93] Аль-Фарданом, Бернстайном, Патерсоном, Пёттерингом и Шульдтом был предложен сценарий атаки, в котором использовались недавно обнаруженные статистические смещения в таблице ключей RC4 [132] для восстановления частей открытого текста с большим количеством шифрований TLS. [133] [134] Атака на RC4 в TLS и SSL, требующая 13 × 2 20 шифрований для взлома RC4, была представлена ​​8 июля 2013 года и позже описана как «осуществимая» в сопутствующей презентации на симпозиуме по безопасности USENIX в августе 2013 года. [135] [136] В июле 2015 года последующие улучшения в атаке сделали ее все более практичной для взлома безопасности TLS, зашифрованного с помощью RC4. [137]

Поскольку многие современные браузеры были разработаны для отражения атак BEAST (за исключением Safari для Mac OS X 10.7 или более ранних версий, для iOS 6 или более ранних версий и для Windows; см. § Веб-браузеры), RC4 больше не является хорошим выбором для TLS 1.0. Шифры CBC, которые в прошлом были затронуты атакой BEAST, стали более популярным выбором для защиты. [88] Mozilla и Microsoft рекомендуют отключать RC4 там, где это возможно. [138] [139] RFC  7465 запрещает использование наборов шифров RC4 во всех версиях TLS.

1 сентября 2015 года Microsoft, Google и Mozilla объявили, что наборы шифров RC4 будут отключены по умолчанию в их браузерах ( Microsoft Edge , Internet Explorer 11 на Windows 7/8.1/10, Firefox и Chrome ) в начале 2016 года. [140] [141] [142]

Атака усечения

Атака усечения TLS (выход) блокирует запросы на выход из учетной записи жертвы, так что пользователь неосознанно остается в сети. Когда отправляется запрос на выход, злоумышленник вводит незашифрованное сообщение TCP FIN (больше никаких данных от отправителя), чтобы закрыть соединение. Поэтому сервер не получает запрос на выход и не знает об аварийном завершении. [143]

Опубликованная в июле 2013 года, [144] [145] атака заставляет веб-сервисы, такие как Gmail и Hotmail, отображать страницу, которая информирует пользователя об успешном выходе из системы, при этом гарантируя, что браузер пользователя сохраняет авторизацию в службе, позволяя злоумышленнику с последующим доступом к браузеру получить доступ и взять под контроль учетную запись вошедшего в систему пользователя. Атака не основана на установке вредоносного ПО на компьютер жертвы; злоумышленникам нужно только разместить себя между жертвой и веб-сервером (например, настроив мошенническую беспроводную точку доступа). [143] Эта уязвимость также требует доступа к компьютеру жертвы. Другая возможность заключается в том, что при использовании FTP соединение данных может иметь ложный FIN в потоке данных, и если правила протокола для обмена оповещениями close_notify не соблюдаются, файл может быть обрезан.

Атака открытым текстом против DTLS

В феврале 2013 года два исследователя из Royal Holloway, Лондонского университета, обнаружили атаку по времени [146] , которая позволила им восстановить (части) открытого текста из соединения DTLS с использованием реализации DTLS OpenSSL или GnuTLS при использовании режима шифрования Cipher Block Chaining .

Нечестивая атака PAC

Эта атака, обнаруженная в середине 2016 года, использует уязвимости в протоколе автообнаружения веб-прокси (WPAD) для раскрытия URL-адреса, к которому веб-пользователь пытается перейти по веб-ссылке с поддержкой TLS. [147] Раскрытие URL-адреса может нарушить конфиденциальность пользователя не только из-за веб-сайта, к которому осуществляется доступ, но и потому, что URL-адреса иногда используются для аутентификации пользователей. Службы обмена документами, такие как предлагаемые Google и Dropbox, также работают, отправляя пользователю токен безопасности, включенный в URL-адрес. Злоумышленник, получивший такие URL-адреса, может получить полный доступ к учетной записи или данным жертвы.

Эксплойт работает практически против всех браузеров и операционных систем.

атака Sweet32

Атака Sweet32 взламывает все 64-битные блочные шифры, используемые в режиме CBC, как и в TLS, эксплуатируя атаку дня рождения и либо атаку «человек посередине» , либо инъекцию вредоносного JavaScript в веб-страницу. Цель атаки «человек посередине» или инъекции JavaScript — позволить злоумышленнику захватить достаточно трафика для проведения атаки дня рождения. [148]

Ошибки реализации:Жук Heartbleed,Атака BERserk, ошибка Cloudflare

Ошибка Heartbleed — это серьезная уязвимость, характерная для реализации SSL/TLS в популярной криптографической программной библиотеке OpenSSL , затрагивающая версии 1.0.1–1.0.1f. Эта уязвимость, о которой сообщили в апреле 2014 года, позволяет злоумышленникам красть закрытые ключи с серверов, которые обычно должны быть защищены. [149] Ошибка Heartbleed позволяет любому человеку в Интернете читать память систем, защищенных уязвимыми версиями программного обеспечения OpenSSL. Это ставит под угрозу секретные закрытые ключи, связанные с открытыми сертификатами, используемыми для идентификации поставщиков услуг и шифрования трафика, имен и паролей пользователей и фактического контента. Это позволяет злоумышленникам прослушивать коммуникации, красть данные напрямую из служб и пользователей и выдавать себя за службы и пользователей. [150] Уязвимость вызвана ошибкой перечитывания буфера в программном обеспечении OpenSSL, а не дефектом в спецификации протокола SSL или TLS.

В сентябре 2014 года компания Intel Security Advanced Threat Research объявила о варианте уязвимости Daniel Bleichenbacher PKCS#1 v1.5 RSA Signature Forgery [151] . Эта атака, получившая название BERserk, является результатом неполного декодирования длины ASN.1 подписей открытого ключа в некоторых реализациях SSL и позволяет провести атаку «человек посередине» путем подделки подписи открытого ключа. [152]

В феврале 2015 года, после того как СМИ сообщили о скрытой предварительной установке рекламного ПО Superfish на некоторых ноутбуках Lenovo, [153] исследователь обнаружил, что доверенный корневой сертификат на затронутых машинах Lenovo небезопасен, поскольку к ключам можно было легко получить доступ, используя название компании Komodia в качестве парольной фразы. [154] Библиотека Komodia была разработана для перехвата клиентского трафика TLS/SSL для родительского контроля и наблюдения, но она также использовалась в многочисленных программах рекламного ПО, включая Superfish, которые часто тайно устанавливались без ведома пользователя компьютера. В свою очередь, эти потенциально нежелательные программы устанавливали поврежденный корневой сертификат, позволяя злоумышленникам полностью контролировать веб-трафик и подтверждать подлинность ложных веб-сайтов.

В мае 2016 года сообщалось, что десятки датских веб-сайтов, защищенных HTTPS и принадлежащих Visa Inc., были уязвимы для атак, позволяющих хакерам внедрять вредоносный код и поддельный контент в браузеры посетителей. [155] Атаки срабатывали, поскольку реализация TLS, используемая на затронутых серверах, неправильно повторно использовала случайные числа ( nonces ), которые должны использоваться только один раз, гарантируя уникальность каждого рукопожатия TLS. [155]

В феврале 2017 года ошибка реализации, вызванная одним неправильно набранным символом в коде, используемом для разбора HTML, создала ошибку переполнения буфера на серверах Cloudflare . Похожая по своим последствиям на ошибку Heartbleed, обнаруженную в 2014 году, эта ошибка переполнения, широко известная как Cloudbleed , позволяла неавторизованным третьим лицам считывать данные в памяти программ, работающих на серверах, — данные, которые в противном случае должны были быть защищены TLS. [156]

Обзор веб-сайтов, уязвимых для атак

По состоянию на июль 2021 года Движение за доверие к Интернету оценило долю веб-сайтов, уязвимых для атак TLS. [92]

Прямая секретность

Forward secrecy is a property of cryptographic systems which ensures that a session key derived from a set of public and private keys will not be compromised if one of the private keys is compromised in the future.[157] Without forward secrecy, if the server's private key is compromised, not only will all future TLS-encrypted sessions using that server certificate be compromised, but also any past sessions that used it as well (provided that these past sessions were intercepted and stored at the time of transmission).[158] An implementation of TLS can provide forward secrecy by requiring the use of ephemeral Diffie–Hellman key exchange to establish session keys, and some notable TLS implementations do so exclusively: e.g., Gmail and other Google HTTPS services that use OpenSSL.[159] However, many clients and servers supporting TLS (including browsers and web servers) are not configured to implement such restrictions.[160][161] In practice, unless a web service uses Diffie–Hellman key exchange to implement forward secrecy, all of the encrypted web traffic to and from that service can be decrypted by a third party if it obtains the server's master (private) key; e.g., by means of a court order.[162]

Even where Diffie–Hellman key exchange is implemented, server-side session management mechanisms can impact forward secrecy. The use of TLS session tickets (a TLS extension) causes the session to be protected by AES128-CBC-SHA256 regardless of any other negotiated TLS parameters, including forward secrecy ciphersuites, and the long-lived TLS session ticket keys defeat the attempt to implement forward secrecy.[163][164][165] Stanford University research in 2014 also found that of 473,802 TLS servers surveyed, 82.9% of the servers deploying ephemeral Diffie–Hellman (DHE) key exchange to support forward secrecy were using weak Diffie–Hellman parameters. These weak parameter choices could potentially compromise the effectiveness of the forward secrecy that the servers sought to provide.[166]

Since late 2011, Google has provided forward secrecy with TLS by default to users of its Gmail service, along with Google Docs and encrypted search, among other services.[167]Since November 2013, Twitter has provided forward secrecy with TLS to users of its service.[168] As of August 2019, about 80% of TLS-enabled websites are configured to use cipher suites that provide forward secrecy to most web browsers.[92]

TLS interception

TLS interception (or HTTPS interception if applied particularly to that protocol) is the practice of intercepting an encrypted data stream in order to decrypt it, read and possibly manipulate it, and then re-encrypt it and send the data on its way again. This is done by way of a "transparent proxy": the interception software terminates the incoming TLS connection, inspects the HTTP plaintext, and then creates a new TLS connection to the destination.[169]

TLS/HTTPS interception is used as an information security measure by network operators in order to be able to scan for and protect against the intrusion of malicious content into the network, such as computer viruses and other malware.[169] Such content could otherwise not be detected as long as it is protected by encryption, which is increasingly the case as a result of the routine use of HTTPS and other secure protocols.

A significant drawback of TLS/HTTPS interception is that it introduces new security risks of its own. One notable limitation is that it provides a point where network traffic is available unencrypted thus giving attackers an incentive to attack this point in particular in order to gain access to otherwise secure content. The interception also allows the network operator, or persons who gain access to its interception system, to perform man-in-the-middle attacks against network users. A 2017 study found that "HTTPS interception has become startlingly widespread, and that interception products as a class have a dramatically negative impact on connection security".[169]

Protocol details

The TLS protocol exchanges records, which encapsulate the data to be exchanged in a specific format (see below). Each record can be compressed, padded, appended with a message authentication code (MAC), or encrypted, all depending on the state of the connection. Each record has a content type field that designates the type of data encapsulated, a length field and a TLS version field. The data encapsulated may be control or procedural messages of the TLS itself, or simply the application data needed to be transferred by TLS. The specifications (cipher suite, keys etc.) required to exchange application data by TLS, are agreed upon in the "TLS handshake" between the client requesting the data and the server responding to requests. The protocol therefore defines both the structure of payloads transferred in TLS and the procedure to establish and monitor the transfer.

TLS handshake

Simplified illustration of the full TLS 1.2 handshake with timing information

When the connection starts, the record encapsulates a "control" protocol – the handshake messaging protocol (content type 22). This protocol is used to exchange all the information required by both sides for the exchange of the actual application data by TLS. It defines the format of messages and the order of their exchange. These may vary according to the demands of the client and server – i.e., there are several possible procedures to set up the connection. This initial exchange results in a successful TLS connection (both parties ready to transfer application data with TLS) or an alert message (as specified below).

Basic TLS handshake

A typical connection example follows, illustrating a handshake where the server (but not the client) is authenticated by its certificate:

  1. Negotiation phase:
    • A client sends a ClientHello message specifying the highest TLS protocol version it supports, a random number, a list of suggested cipher suites and suggested compression methods. If the client is attempting to perform a resumed handshake, it may send a session ID. If the client can use Application-Layer Protocol Negotiation, it may include a list of supported application protocols, such as HTTP/2.
    • The server responds with a ServerHello message, containing the chosen protocol version, a random number, cipher suite and compression method from the choices offered by the client. To confirm or allow resumed handshakes the server may send a session ID. The chosen protocol version should be the highest that both the client and server support. For example, if the client supports TLS version 1.1 and the server supports version 1.2, version 1.1 should be selected; version 1.2 should not be selected.
    • The server sends its Certificate message (depending on the selected cipher suite, this may be omitted by the server).[170]
    • The server sends its ServerKeyExchange message (depending on the selected cipher suite, this may be omitted by the server). This message is sent for all DHE, ECDHE and DH_anon cipher suites.[23]
    • The server sends a ServerHelloDone message, indicating it is done with handshake negotiation.
    • The client responds with a ClientKeyExchange message, which may contain a PreMasterSecret, public key, or nothing. (Again, this depends on the selected cipher.) This PreMasterSecret is encrypted using the public key of the server certificate.
    • The client and server then use the random numbers and PreMasterSecret to compute a common secret, called the "master secret". All other key data (session keys such as IV, symmetric encryption key, MAC key[171]) for this connection is derived from this master secret (and the client- and server-generated random values), which is passed through a carefully designed pseudorandom function.
  2. The client now sends a ChangeCipherSpec record, essentially telling the server, "Everything I tell you from now on will be authenticated (and encrypted if encryption parameters were present in the server certificate)." The ChangeCipherSpec is itself a record-level protocol with content type of 20.
    • The client sends an authenticated and encrypted Finished message, containing a hash and MAC over the previous handshake messages.
    • The server will attempt to decrypt the client's Finished message and verify the hash and MAC. If the decryption or verification fails, the handshake is considered to have failed and the connection should be terminated.
  3. Finally, the server sends a ChangeCipherSpec, telling the client, "Everything I tell you from now on will be authenticated (and encrypted, if encryption was negotiated)."
    • The server sends its authenticated and encrypted Finished message.
    • The client performs the same decryption and verification procedure as the server did in the previous step.
  4. Application phase: at this point, the "handshake" is complete and the application protocol is enabled, with content type of 23. Application messages exchanged between client and server will also be authenticated and optionally encrypted exactly like in their Finished message. Otherwise, the content type will return 25 and the client will not authenticate.

Client-authenticated TLS handshake

The following full example shows a client being authenticated (in addition to the server as in the example above; see mutual authentication) via TLS using certificates exchanged between both peers.

  1. Negotiation Phase:
    • A client sends a ClientHello message specifying the highest TLS protocol version it supports, a random number, a list of suggested cipher suites and compression methods.
    • The server responds with a ServerHello message, containing the chosen protocol version, a random number, cipher suite and compression method from the choices offered by the client. The server may also send a session id as part of the message to perform a resumed handshake.
    • The server sends its Certificate message (depending on the selected cipher suite, this may be omitted by the server).[170]
    • The server sends its ServerKeyExchange message (depending on the selected cipher suite, this may be omitted by the server). This message is sent for all DHE, ECDHE and DH_anon ciphersuites.[1]
    • The server sends a CertificateRequest message, to request a certificate from the client.
    • The server sends a ServerHelloDone message, indicating it is done with handshake negotiation.
    • The client responds with a Certificate message, which contains the client's certificate, but not its private key.
    • The client sends a ClientKeyExchange message, which may contain a PreMasterSecret, public key, or nothing. (Again, this depends on the selected cipher.) This PreMasterSecret is encrypted using the public key of the server certificate.
    • The client sends a CertificateVerify message, which is a signature over the previous handshake messages using the client's certificate's private key. This signature can be verified by using the client's certificate's public key. This lets the server know that the client has access to the private key of the certificate and thus owns the certificate.
    • The client and server then use the random numbers and PreMasterSecret to compute a common secret, called the "master secret". All other key data ("session keys") for this connection is derived from this master secret (and the client- and server-generated random values), which is passed through a carefully designed pseudorandom function.
  2. The client now sends a ChangeCipherSpec record, essentially telling the server, "Everything I tell you from now on will be authenticated (and encrypted if encryption was negotiated). "The ChangeCipherSpec is itself a record-level protocol and has type 20 and not 22.
    • Finally, the client sends an encrypted Finished message, containing a hash and MAC over the previous handshake messages.
    • The server will attempt to decrypt the client's Finished message and verify the hash and MAC. If the decryption or verification fails, the handshake is considered to have failed and the connection should be torn down.
  3. Finally, the server sends a ChangeCipherSpec, telling the client, "Everything I tell you from now on will be authenticated (and encrypted if encryption was negotiated)."
    • The server sends its own encrypted Finished message.
    • The client performs the same decryption and verification procedure as the server did in the previous step.
  4. Application phase: at this point, the "handshake" is complete and the application protocol is enabled, with content type of 23. Application messages exchanged between client and server will also be encrypted exactly like in their Finished message.

Resumed TLS handshake

Public key operations (e.g., RSA) are relatively expensive in terms of computational power. TLS provides a secure shortcut in the handshake mechanism to avoid these operations: resumed sessions. Resumed sessions are implemented using session IDs or session tickets.

Apart from the performance benefit, resumed sessions can also be used for single sign-on, as it guarantees that both the original session and any resumed session originate from the same client. This is of particular importance for the FTP over TLS/SSL protocol, which would otherwise suffer from a man-in-the-middle attack in which an attacker could intercept the contents of the secondary data connections.[172]

TLS 1.3 handshake

The TLS 1.3 handshake was condensed to only one round trip compared to the two round trips required in previous versions of TLS/SSL.

To start the handshake, the client guesses which key exchange algorithm will be selected by the server and sends a ClientHello message to the server containing a list of supported ciphers (in order of the client's preference) and public keys for some or all of its key exchange guesses. If the client successfully guesses the key exchange algorithm, 1 round trip is eliminated from the handshake. After receiving the ClientHello, the server selects a cipher and sends back a ServerHello with its own public key, followed by server Certificate and Finished messages.[173]

After the client receives the server's finished message, it now is coordinated with the server on which cipher suite to use.[174]

Session IDs

In an ordinary full handshake, the server sends a session id as part of the ServerHello message. The client associates this session id with the server's IP address and TCP port, so that when the client connects again to that server, it can use the session id to shortcut the handshake. In the server, the session id maps to the cryptographic parameters previously negotiated, specifically the "master secret". Both sides must have the same "master secret" or the resumed handshake will fail (this prevents an eavesdropper from using a session id). The random data in the ClientHello and ServerHello messages virtually guarantee that the generated connection keys will be different from in the previous connection. In the RFCs, this type of handshake is called an abbreviated handshake. It is also described in the literature as a restart handshake.

  1. Negotiation phase:
    • A client sends a ClientHello message specifying the highest TLS protocol version it supports, a random number, a list of suggested cipher suites and compression methods. Included in the message is the session id from the previous TLS connection.
    • The server responds with a ServerHello message, containing the chosen protocol version, a random number, cipher suite and compression method from the choices offered by the client. If the server recognizes the session id sent by the client, it responds with the same session id. The client uses this to recognize that a resumed handshake is being performed. If the server does not recognize the session id sent by the client, it sends a different value for its session id. This tells the client that a resumed handshake will not be performed. At this point, both the client and server have the "master secret" and random data to generate the key data to be used for this connection.
  2. The server now sends a ChangeCipherSpec record, essentially telling the client, "Everything I tell you from now on will be encrypted." The ChangeCipherSpec is itself a record-level protocol and has type 20 and not 22.
    • Finally, the server sends an encrypted Finished message, containing a hash and MAC over the previous handshake messages.
    • The client will attempt to decrypt the server's Finished message and verify the hash and MAC. If the decryption or verification fails, the handshake is considered to have failed and the connection should be torn down.
  3. Finally, the client sends a ChangeCipherSpec, telling the server, "Everything I tell you from now on will be encrypted."
    • The client sends its own encrypted Finished message.
    • The server performs the same decryption and verification procedure as the client did in the previous step.
  4. Application phase: at this point, the "handshake" is complete and the application protocol is enabled, with content type of 23. Application messages exchanged between client and server will also be encrypted exactly like in their Finished message.
Session tickets

RFC 5077 extends TLS via use of session tickets, instead of session IDs. It defines a way to resume a TLS session without requiring that session-specific state is stored at the TLS server.

When using session tickets, the TLS server stores its session-specific state in a session ticket and sends the session ticket to the TLS client for storing. The client resumes a TLS session by sending the session ticket to the server, and the server resumes the TLS session according to the session-specific state in the ticket. The session ticket is encrypted and authenticated by the server, and the server verifies its validity before using its contents.

One particular weakness of this method with OpenSSL is that it always limits encryption and authentication security of the transmitted TLS session ticket to AES128-CBC-SHA256, no matter what other TLS parameters were negotiated for the actual TLS session.[164] This means that the state information (the TLS session ticket) is not as well protected as the TLS session itself. Of particular concern is OpenSSL's storage of the keys in an application-wide context (SSL_CTX), i.e. for the life of the application, and not allowing for re-keying of the AES128-CBC-SHA256 TLS session tickets without resetting the application-wide OpenSSL context (which is uncommon, error-prone and often requires manual administrative intervention).[165][163]

TLS record

This is the general format of all TLS records.

Content type
This field identifies the Record Layer Protocol Type contained in this record.
Legacy version
This field identifies the major and minor version of TLS prior to TLS 1.3 for the contained message. For a ClientHello message, this need not be the highest version supported by the client. For TLS 1.3 and later, this must to be set 0x0303 and application must send supported versions in an extra message extension block.
Length
The length of "protocol message(s)", "MAC" and "padding" fields combined (i.e. q−5), not to exceed 214 bytes (16 KiB).
Protocol message(s)
One or more messages identified by the Protocol field. Note that this field may be encrypted depending on the state of the connection.
MAC and padding
A message authentication code computed over the "protocol message(s)" field, with additional key material included. Note that this field may be encrypted, or not included entirely, depending on the state of the connection.
No "MAC" or "padding" fields can be present at end of TLS records before all cipher algorithms and parameters have been negotiated and handshaked and then confirmed by sending a CipherStateChange record (see below) for signalling that these parameters will take effect in all further records sent by the same peer.

Handshake protocol

Most messages exchanged during the setup of the TLS session are based on this record, unless an error or warning occurs and needs to be signaled by an Alert protocol record (see below), or the encryption mode of the session is modified by another record (see ChangeCipherSpec protocol below).

Message type
This field identifies the handshake message type.
Handshake message data length
This is a 3-byte field indicating the length of the handshake data, not including the header.

Note that multiple handshake messages may be combined within one record.

Alert protocol

This record should normally not be sent during normal handshaking or application exchanges. However, this message can be sent at any time during the handshake and up to the closure of the session. If this is used to signal a fatal error, the session will be closed immediately after sending this record, so this record is used to give a reason for this closure. If the alert level is flagged as a warning, the remote can decide to close the session if it decides that the session is not reliable enough for its needs (before doing so, the remote may also send its own signal).

Level
This field identifies the level of alert. If the level is fatal, the sender should close the session immediately. Otherwise, the recipient may decide to terminate the session itself, by sending its own fatal alert and closing the session itself immediately after sending it. The use of Alert records is optional, however if it is missing before the session closure, the session may be resumed automatically (with its handshakes).
Normal closure of a session after termination of the transported application should preferably be alerted with at least the Close notify Alert type (with a simple warning level) to prevent such automatic resume of a new session. Signalling explicitly the normal closure of a secure session before effectively closing its transport layer is useful to prevent or detect attacks (like attempts to truncate the securely transported data, if it intrinsically does not have a predetermined length or duration that the recipient of the secured data may expect).
Description
This field identifies which type of alert is being sent.

ChangeCipherSpec protocol

CCS protocol type
Currently only 1.

Application protocol

Length
Length of application data (excluding the protocol header and including the MAC and padding trailers)
MAC
32 bytes for the SHA-256-based HMAC, 20 bytes for the SHA-1-based HMAC, 16 bytes for the MD5-based HMAC.
Padding
Variable length; last byte contains the padding length.

Support for name-based virtual servers

From the application protocol point of view, TLS belongs to a lower layer, although the TCP/IP model is too coarse to show it. This means that the TLS handshake is usually (except in the STARTTLS case) performed before the application protocol can start. In the name-based virtual server feature being provided by the application layer, all co-hosted virtual servers share the same certificate because the server has to select and send a certificate immediately after the ClientHello message. This is a big problem in hosting environments because it means either sharing the same certificate among all customers or using a different IP address for each of them.

There are two known workarounds provided by X.509:

To provide the server name, RFC 4366 Transport Layer Security (TLS) Extensions allow clients to include a Server Name Indication extension (SNI) in the extended ClientHello message. This extension hints to the server immediately which name the client wishes to connect to, so the server can select the appropriate certificate to send to the clients.

RFC 2817 also documents a method to implement name-based virtual hosting by upgrading HTTP to TLS via an HTTP/1.1 Upgrade header. Normally this is to securely implement HTTP over TLS within the main "http" URI scheme (which avoids forking the URI space and reduces the number of used ports), however, few implementations currently support this.[citation needed]

See also

References

  1. ^ i.e. "Delegated Credentials for (D)TLS". Ietf. Archived from the original on 2024-06-26. Retrieved 2024-06-26.
  2. ^ a b Lawrence, Scott; Khare, Rohit (May 2000). Upgrading to TLS Within HTTP/1.1. Internet Engineering Task Force. doi:10.17487/RFC2817. RFC 2817.
  3. ^ "SSL/TLS in Detail". TechNet. Microsoft Docs. October 8, 2009. Archived from the original on 2022-08-13. Retrieved 2021-10-24.
  4. ^ a b Hooper, Howard (2012). CCNP Security VPN 642–648 Official Cert Guide (2 ed.). Cisco Press. p. 22. ISBN 9780132966382.
  5. ^ a b Spott, Andrew; Leek, Tom; et al. "What layer is TLS?". Information Security Stack Exchange. Archived from the original on 2021-02-13. Retrieved 2017-04-13.
  6. ^ a b c d e f E. Rescorla (August 2018). The Transport Layer Security (TLS) Protocol Version 1.3. IETF TLS workgroup. doi:10.17487/RFC8446. RFC 8446. Proposed Standard. Obsoletes RFC 5077, 5246 and 6961; updates RFC 5705 and 6066.
  7. ^ Rescorla, Eric; Modadugu, Nagendra (April 2006). Datagram Transport Layer Security. doi:10.17487/RFC4347. RFC 4347.
  8. ^ Rescorla, Eric; Modadugu, Nagendra (January 2012). Datagram Transport Layer Security Version 1.2. doi:10.17487/RFC6347. RFC 6347.
  9. ^ Titz, Olaf (2001-04-23). "Why TCP Over TCP Is A Bad Idea". Archived from the original on 2023-03-10. Retrieved 2015-10-17.
  10. ^ Honda, Osamu; Ohsaki, Hiroyuki; Imase, Makoto; Ishizuka, Mika; Murayama, Junichi (October 2005). "Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency". In Atiquzzaman, Mohammed; Balandin, Sergey I (eds.). Performance, Quality of Service, and Control of Next-Generation Communication and Sensor Networks III. Vol. 6011. Bibcode:2005SPIE.6011..138H. CiteSeerX 10.1.1.78.5815. doi:10.1117/12.630496. S2CID 8945952.
  11. ^ RFC 4347 § 4
  12. ^ Rescorla, Eric; Tschofenig, Hannes; Modadugu, Nagena (April 21, 2022). The Datagram Transport Layer Security (DTLS) Protocol Version 1.3. doi:10.17487/RFC9147. RFC 9147.
  13. ^ "AnyConnect FAQ: tunnels, reconnect behavior, and the inactivity timer". Cisco. Archived from the original on 26 February 2017. Retrieved 26 February 2017.
  14. ^ "Cisco InterCloud Architectural Overview" (PDF). Cisco Systems. Archived (PDF) from the original on 2022-08-09. Retrieved 2022-11-29.
  15. ^ "OpenConnect". OpenConnect. Archived from the original on 2 February 2017. Retrieved 26 February 2017.
  16. ^ "ZScaler ZTNA 2.0 Tunnel". ZScaler. Archived from the original on 2022-11-29. Retrieved 2022-11-29.
  17. ^ "f5 Datagram Transport Layer Security (DTLS)". f5 Networks. Archived from the original on 2022-11-29. Retrieved 2022-11-29.
  18. ^ "Configuring a DTLS Virtual Server". Citrix Systems. Archived from the original on 2016-12-21. Retrieved 2022-11-29.
  19. ^ "WebRTC Interop Notes". Archived from the original on 2013-05-11.
  20. ^ a b c d e Bright, Peter (17 October 2018). "Apple, Google, Microsoft, and Mozilla come together to end TLS 1.0". Archived from the original on 17 October 2018. Retrieved 17 October 2018.
  21. ^ a b c d "Here is what is new and changed in Firefox 74.0 Stable – gHacks Tech News". www.ghacks.net. 10 March 2020. Archived from the original on 2020-03-11. Retrieved 2020-03-10.
  22. ^ a b c d "TLS 1.0 and TLS 1.1 – Chrome Platform Status". chromestatus.com. Archived from the original on 2023-07-07. Retrieved 2020-03-10.
  23. ^ a b c d e T. Dierks; E. Rescorla (August 2008). The Transport Layer Security (TLS) Protocol Version 1.2. IETF TLS workgroup. doi:10.17487/RFC5246. RFC 5246. Obsolete. Obsoleted by RFC 8446; obsoletes RFC 3268, 4346 and 4366; updates RFC 4492.
  24. ^ a b "Using TLS to protect data". www.ncsc.gov.uk. Archived from the original on July 21, 2021. Retrieved August 24, 2022.
  25. ^ "TLS 1.3: One Year Later". IETF. Archived from the original on July 8, 2020. Retrieved August 24, 2022.
  26. ^ "Creating TLS: The Pioneering Role of Ruth Nelson". Archived from the original on 2020-06-24. Retrieved 2020-07-04.
  27. ^ Woo, Thomas Y. C.; Bindignavle, Raghuram; Su, Shaowen; Lam, Simon S. (June 1994). SNP: An interface for secure network programming (PDF). Proceedings USENIX Summer Technical Conference. Archived (PDF) from the original on 2014-12-12. Retrieved 2023-07-05.
  28. ^ "1994 USENIX Summer Technical Conference Program, Boston, 6–10 June 1994". Archived from the original on 6 October 2023. Retrieved 21 January 2024.
  29. ^ Simon S. Lam (PI/PD), "Applying a Theory of Modules and Interfaces to Security Verification," NSA INFOSEC University Research Program grant no. MDA 904-91-C-7046, 6/28/91 to 6/27/93.
  30. ^ "2004 ACM Software System Award citation". ACM. Archived from the original on 17 June 2013. Retrieved 25 July 2012.
  31. ^ "ACM Press Release, March 15, 2005". ACM. Archived from the original on 10 January 2016. Retrieved 25 July 2012.
  32. ^ "Internet Hall of Fame inductee Simon S. Lam". Archived from the original on 6 February 2024. Retrieved 3 Mar 2024.
  33. ^ "Computer Scientist Inducted into Internet Hall of Fame". Archived from the original on 8 March 2024. Retrieved 3 Mar 2024.
  34. ^ Messmer, Ellen. "Father of SSL, Dr. Taher Elgamal, Finds Fast-Moving IT Projects in the Middle East". Network World. Archived from the original on 31 May 2014. Retrieved 30 May 2014.
  35. ^ Greene, Tim. "Father of SSL says despite attacks, the security linchpin has lots of life left". Network World. Archived from the original on 31 May 2014. Retrieved 30 May 2014.
  36. ^ a b Oppliger, Rolf (2016). "Introduction". SSL and TLS: Theory and Practice (2nd ed.). Artech House. p. 13. ISBN 978-1-60807-999-5. Retrieved 2018-03-01 – via Google Books.
  37. ^ "THE SSL PROTOCOL". Netscape Corporation. 2007. Archived from the original on 14 June 1997.
  38. ^ Rescorla 2001
  39. ^ "POODLE: SSLv3 vulnerability (CVE-2014-3566)". Archived from the original on 5 December 2014. Retrieved 21 October 2014.
  40. ^ "Security Standards and Name Changes in the Browser Wars". Archived from the original on 2020-02-29. Retrieved 2020-02-29.
  41. ^ Laura K. Gray (2015-12-18). "Date Change for Migrating from SSL and Early TLS". Payment Card Industry Security Standards Council blog. Archived from the original on 2015-12-20. Retrieved 2018-04-05.
  42. ^ "Changes to PCI Compliance are Coming June 30. Is Your Ecommerce Business Ready?". Forbes. Archived from the original on 2018-06-21. Retrieved 2018-06-20.
  43. ^ T. Dierks; E. Rescorla (April 2006). The Transport Layer Security (TLS) Protocol Version 1.1. IETF TLS workgroup. doi:10.17487/RFC4346. RFC 4346. Historic. Obsoleted by RFC 5246. Obsoletes RFC 2246.
  44. ^ a b c "Transport Layer Security Parameters – Cipher Suites". Internet Assigned Numbers Authority (IANA). Archived from the original on 2016-12-21. Retrieved 2022-12-16.
  45. ^ Mackie, Kurt. "Microsoft Delays End of Support for TLS 1.0 and 1.1 -". Microsoft Certified Professional Magazine Online. Archived from the original on 2021-06-14. Retrieved 2021-06-14.
  46. ^ "TLS 1.2 FAQ – Knowledge Base". Answers.psionline.com. Archived from the original on 20 February 2022. Retrieved 20 February 2022.
  47. ^ "Differences between TLS 1.2 and TLS 1.3 (#TLS13)". WolfSSL. 2019-09-18. Archived from the original on 2019-09-19. Retrieved 2019-09-18.
  48. ^ "Archived copy". Archived from the original on 2024-03-17. Retrieved 2024-03-17.{{cite web}}: CS1 maint: archived copy as title (link)
  49. ^ "NSS 3.29 release notes". Mozilla Developer Network. February 2017. Archived from the original on 2017-02-22.
  50. ^ "Enable TLS 1.3 by default". Bugzilla@Mozilla. 16 October 2016. Archived from the original on 12 August 2018. Retrieved 10 October 2017.
  51. ^ "Firefox — Notes (60.0)". Mozilla. Archived from the original on 2018-05-09. Retrieved 2018-05-10.
  52. ^ "ProxySG, ASG and WSS will interrupt SSL connections when clients using TLS 1.3 access sites also using TLS 1.3". BlueTouch Online. 16 May 2017. Archived from the original on 12 September 2017. Retrieved 11 September 2017.
  53. ^ Sullivan, Nick (2017-12-26). "Why TLS 1.3 isn't in browsers yet". The Cloudflare Blog. Archived from the original on 2017-12-26. Retrieved 2020-03-14.
  54. ^ a b Thomson, Martin; Pauly, Tommy (December 2021). Long-Term Viability of Protocol Extension Mechanisms. doi:10.17487/RFC9170. RFC 9170.
  55. ^ "TLS 1.3 IETF 100 Hackathon". Archived from the original on 2018-01-15.
  56. ^ a b IETF – Internet Engineering Task Force (2017-11-12), IETF Hackathon Presentations and Awards, archived from the original on 2021-10-28, retrieved 2017-11-14
  57. ^ "Hurrah! TLS 1.3 is here. Now to implement it and put it into software". Archived from the original on 2018-03-27. Retrieved 2018-03-28.
  58. ^ IETF – Internet Engineering Task Force (2018-07-15), IETF102-HACKATHON-20180715-1400, archived from the original on 2021-10-28, retrieved 2018-07-18
  59. ^ "wolfSSL TLS 1.3 BETA Release Now Available". [email protected]. 11 May 2017. Archived from the original on 9 July 2018. Retrieved 11 May 2017.
  60. ^ "TLS 1.3 PROTOCOL SUPPORT". [email protected]. Archived from the original on 2018-07-09. Retrieved 2018-07-09.
  61. ^ "TLS 1.3 Draft 28 Support in wolfSSL". [email protected]. 14 June 2018. Archived from the original on 9 July 2018. Retrieved 14 June 2018.
  62. ^ "OpenSSL 1.1.1 Is Released". Matt Caswell. 11 Sep 2018. Archived from the original on 8 December 2018. Retrieved 19 Dec 2018.
  63. ^ "Protocols in TLS/SSL (Schannel SSP)". Microsoft Docs. May 25, 2022. Archived from the original on 25 January 2023. Retrieved 21 February 2023.
  64. ^ a b Hoffman-Andrews, Jacob (2019-02-26). "ETS Isn't TLS and You Shouldn't Use It". Electronic Frontier Foundation. Archived from the original on 2019-02-26. Retrieved 2019-02-27.
  65. ^ TS 103 523-3 – V1.1.1 – CYBER; Middlebox Security Protocol; Part 3: Profile for enterprise network and data centre access control (PDF). ETSI.org. Archived (PDF) from the original on November 14, 2018.
  66. ^ Cory Doctorow (February 26, 2019). "Monumental Recklessness". Boing Boing. Archived from the original on February 27, 2019.
  67. ^ Rea, Scott (2013). "Alternatives to Certification Authorities for a Secure Web" (PDF). RSA Conference Asia Pacific. Archived (PDF) from the original on 7 October 2016. Retrieved 7 September 2016.
  68. ^ "Counting SSL certificates". Archived from the original on 16 May 2015. Retrieved 20 February 2022.
  69. ^ Raymond, Art (3 August 2017). "Lehi's DigiCert swallows web security competitor in $1 billion deal". Deseret News. Archived from the original on 29 September 2018. Retrieved 21 May 2020.
  70. ^ "Market share trends for SSL certificate authorities". W3Techs. Retrieved 21 May 2020.
  71. ^ Ryan Singel (March 24, 2010). "Law Enforcement Appliance Subverts SSL". wired.com. Archived from the original on April 12, 2014.
  72. ^ Seth Schoen (March 24, 2010). "New Research Suggests That Governments May Fake SSL Certificates". EFF.org. Archived from the original on March 25, 2010.
  73. ^ P. Eronen, Ed. (December 2005). Eronen, P; Tschofenig, H (eds.). Pre-Shared Key Ciphersuites for Transport Layer Security (TLS). Internet Engineering Task Force. doi:10.17487/RFC4279. RFC 4279. Retrieved 9 September 2013.
  74. ^ D. Taylor, Ed. (November 2007). Using the Secure Remote Password (SRP) Protocol for TLS Authentication. Internet Engineering Task Force. doi:10.17487/RFC5054. RFC 5054. Retrieved December 21, 2014.
  75. ^ Gothard, Peter (31 July 2013). "Google updates SSL certificates to 2048-bit encryption". Computing. Incisive Media. Archived from the original on 22 September 2013. Retrieved 9 September 2013.
  76. ^ "The value of 2,048-bit encryption: Why encryption key length matters". SearchSecurity. Archived from the original on 2018-01-16. Retrieved 2017-12-18.
  77. ^ Sean Turner (September 17, 2015). "Consensus: remove DSA from TLS 1.3". Archived from the original on October 3, 2015.
  78. ^ RFC 8422
  79. ^ RFC 5288, 5289
  80. ^ RFC 6655, 7251
  81. ^ RFC 6367
  82. ^ RFC 5932, 6367
  83. ^ a b RFC 6209
  84. ^ RFC 4162
  85. ^ "On the Practical (In-)Security of 64-bit Block Ciphers — Collision Attacks on HTTP over TLS and OpenVPN" (PDF). 2016-10-28. Archived (PDF) from the original on 2017-04-24. Retrieved 2017-06-08.
  86. ^ "NIST Special Publication 800-57 Recommendation for Key Management — Part 1: General (Revised)" (PDF). 2007-03-08. Archived from the original (PDF) on June 6, 2014. Retrieved 2014-07-03.
  87. ^ a b c Qualys SSL Labs. "SSL/TLS Deployment Best Practices". Archived from the original on 4 July 2015. Retrieved 2 June 2015.
  88. ^ RFC 5469
  89. ^ RFC 7905
  90. ^ "Http vs https". Archived from the original on 2015-02-12. Retrieved 2015-02-12.
  91. ^ a b c d As of May 03, 2024. "SSL Pulse: Survey of the SSL Implementation of the Most Popular Websites". Qualys. Archived from the original on 2021-03-08. Retrieved 2024-05-30.
  92. ^ a b ivanr (19 March 2013). "RC4 in TLS is Broken: Now What?". Qualsys Security Labs. Archived from the original on 2013-08-27. Retrieved 2013-07-30.
  93. ^ a b c Bodo Möller, Thai Duong & Krzysztof Kotowicz. "This POODLE Bites: Exploiting The SSL 3.0 Fallback" (PDF). Archived (PDF) from the original on 2014-10-14. Retrieved 2014-10-15.
  94. ^ "Internet Explorer 11 has retired and is officially out of support—what you need to know". June 15, 2022. Archived from the original on 2022-06-15. Retrieved 2022-06-15.
  95. ^ "Internet Explorer 11 desktop app support ended for certain versions of Windows 10". Retrieved 2022-06-17.
  96. ^ "Java Secure Socket Extension (JSSE) Reference Guide". Oracle Help Center. Archived from the original on 2022-01-22. Retrieved 2021-12-24.
  97. ^ Georgiev, Martin; Iyengar, Subodh; Jana, Suman; Anubhai, Rishita; Boneh, Dan; Shmatikov, Vitaly (2012). The most dangerous code in the world: validating SSL certificates in non-browser software. Proceedings of the 2012 ACM conference on Computer and communications security (PDF). Association for Computing Machinery. pp. 38–49. ISBN 978-1-4503-1651-4. Archived (PDF) from the original on 2017-10-22.
  98. ^ Audet, F. (2009). The Use of the SIPS URI Scheme in the Session Initiation Protocol (SIP). doi:10.17487/RFC5630. RFC 5630.
  99. ^ Sheffer, Y.; Holz, R.; Saint-Andre, P. (2015). Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS). doi:10.17487/RFC7457. RFC 7457.
  100. ^ "CVE – CVE-2009-3555". Archived from the original on 2016-01-04.
  101. ^ Rescorla, Eric (2009-11-05). "Understanding the TLS Renegotiation Attack". Educated Guesswork. Archived from the original on 2012-02-11. Retrieved 2009-11-27.
  102. ^ "SSL_CTX_set_options SECURE_RENEGOTIATION". OpenSSL Docs. 2010-02-25. Archived from the original on 2010-11-26. Retrieved 2010-11-18.
  103. ^ "GnuTLS 2.10.0 released". GnuTLS release notes. 2010-06-25. Archived from the original on 2015-10-17. Retrieved 2011-07-24.
  104. ^ "NSS 3.12.6 release notes". NSS release notes. 2010-03-03. Archived from the original on March 6, 2012. Retrieved 2011-07-24.
  105. ^ A. Langley; N. Modadugu; B. Moeller (2010-06-02). "Transport Layer Security (TLS) False Start". Internet Engineering Task Force. IETF. Archived from the original on 2013-09-05. Retrieved 2013-07-31.
  106. ^ Gruener, Wolfgang. "False Start: Google Proposes Faster Web, Chrome Supports It Already". Archived from the original on 2010-10-07. Retrieved 2011-03-09.
  107. ^ Smith, Brian. "Limited rollback attacks in False Start and Snap Start". Archived from the original on 2011-05-04. Retrieved 2011-03-09.
  108. ^ Dimcev, Adrian. "False Start". Random SSL/TLS 101. Archived from the original on 2011-05-04. Retrieved 2011-03-09.
  109. ^ Mavrogiannopoulos, Nikos; Vercautern, Frederik; Velichkov, Vesselin; Preneel, Bart (2012). A cross-protocol attack on the TLS protocol. Proceedings of the 2012 ACM conference on Computer and communications security (PDF). Association for Computing Machinery. pp. 62–72. ISBN 978-1-4503-1651-4. Archived (PDF) from the original on 2015-07-06.
  110. ^ "SMACK: State Machine AttaCKs". Archived from the original on 2015-03-12.
  111. ^ Goodin, Dan (2015-05-20). "HTTPS-crippling attack threatens tens of thousands of Web and mail servers". Ars Technica. Archived from the original on 2017-05-19.
  112. ^ Leyden, John (1 March 2016). "One-third of all HTTPS websites open to DROWN attack". The Register. Archived from the original on 1 March 2016. Retrieved 2016-03-02.
  113. ^ a b "More than 11 million HTTPS websites imperiled by new decryption attack". Ars Technica. March 2016. Archived from the original on 2016-03-01. Retrieved 2016-03-02.
  114. ^ Thai Duong & Juliano Rizzo (2011-05-13). "Here Come The ⊕ Ninjas". Archived from the original on 2014-06-03.
  115. ^ Goodin, Dan (2011-09-19). "Hackers break SSL encryption used by millions of sites". The Register. Archived from the original on 2012-02-10.
  116. ^ "Y Combinator comments on the issue". 2011-09-20. Archived from the original on 2012-03-31.
  117. ^ "Security of CBC Ciphersuites in SSL/TLS: Problems and Countermeasures". 2004-05-20. Archived from the original on 2012-06-30.
  118. ^ Ristic, Ivan (Sep 10, 2013). "Is BEAST Still a Threat?". Archived from the original on 12 October 2014. Retrieved 8 October 2014.
  119. ^ "Chrome Stable Release". Chrome Releases. 2011-10-25. Archived from the original on 2015-02-20. Retrieved 2015-02-01.
  120. ^ "Attack against TLS-protected communications". Mozilla Security Blog. Mozilla. 2011-09-27. Archived from the original on 2015-03-04. Retrieved 2015-02-01.
  121. ^ Smith, Brian (2011-09-30). "(CVE-2011-3389) Rizzo/Duong chosen plaintext attack (BEAST) on SSL/TLS 1.0 (facilitated by websockets-76)". Archived from the original on 2012-02-10. Retrieved 2011-11-01.
  122. ^ MSRC (2012-01-10). Vulnerability in SSL/TLS Could Allow Information Disclosure (2643584). Security Bulletins (Technical report). MS12-006. Retrieved 2021-10-24 – via Microsoft Docs.
  123. ^ Ristic, Ivan (Oct 31, 2013). "Apple Enabled BEAST Mitigations in OS X 10.9 Mavericks". Archived from the original on 12 October 2014. Retrieved 8 October 2014.
  124. ^ Goodin, Dan (2012-09-13). "Crack in Internet's foundation of trust allows HTTPS session hijacking". Ars Technica. Archived from the original on 2013-08-01. Retrieved 2013-07-31.
  125. ^ Fisher, Dennis (September 13, 2012). "CRIME Attack Uses Compression Ratio of TLS Requests as Side Channel to Hijack Secure Sessions". ThreatPost. Archived from the original on September 15, 2012. Retrieved 2012-09-13.
  126. ^ a b Goodin, Dan (1 August 2013). "Gone in 30 seconds: New attack plucks secrets from HTTPS-protected pages". Ars Technica. Condé Nast. Archived from the original on 3 August 2013. Retrieved 2 August 2013.
  127. ^ Leyden, John (2 August 2013). "Step into the BREACH: New attack developed to read encrypted web data". The Register. Archived from the original on 5 August 2013. Retrieved 2 August 2013.
  128. ^ P. Gutmann (September 2014). Encrypt-then-MAC for Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). Internet Engineering Task Force. doi:10.17487/RFC7366. RFC 7366.
  129. ^ Langley, Adam (December 8, 2014). "The POODLE bites again". Archived from the original on December 8, 2014. Retrieved 2014-12-08.
  130. ^ "ssl – Safest ciphers to use with the BEAST? (TLS 1.0 exploit) I've read that RC4 is immune". Serverfault.com. Archived from the original on 20 February 2022. Retrieved 20 February 2022.
  131. ^ Pouyan Sepehrdad; Serge Vaudenay; Martin Vuagnoux (2011). "Discovery and Exploitation of New Biases in RC4". In Alex Biryukov; Guang Gong; Douglas R. Stinson (eds.). Selected Areas in Cryptography: 17th International Workshop, SAC 2010, Waterloo, Ontario, Canada, August 12–13, 2010, Revised Selected Papers. Lecture Notes in Computer Science. Vol. 6544. pp. 74–91. doi:10.1007/978-3-642-19574-7_5. ISBN 978-3-642-19573-0.
  132. ^ Green, Matthew (12 March 2013). "Attack of the week: RC4 is kind of broken in TLS". Cryptography Engineering. Archived from the original on March 14, 2013. Retrieved March 12, 2013.
  133. ^ AlFardan, Nadhem; Bernstein, Dan; Paterson, Kenny; Poettering, Bertram; Schuldt, Jacob. "On the Security of RC4 in TLS". Royal Holloway University of London. Archived from the original on March 15, 2013. Retrieved March 13, 2013.
  134. ^ AlFardan, Nadhem J.; Bernstein, Daniel J.; Paterson, Kenneth G.; Poettering, Bertram; Schuldt, Jacob C. N. (8 July 2013). "On the Security of RC4 in TLS and WPA" (PDF). Information Security Group. Archived (PDF) from the original on 22 September 2013. Retrieved 2 September 2013.
  135. ^ AlFardan, Nadhem J.; Bernstein, Daniel J.; Paterson, Kenneth G.; Poettering, Bertram; Schuldt, Jacob C. N. (15 August 2013). On the Security of RC4 in TLS (PDF). 22nd USENIX Security Symposium. p. 51. Archived (PDF) from the original on 22 September 2013. Retrieved 2 September 2013. Plaintext recovery attacks against RC4 in TLS are feasible although not truly practical
  136. ^ Goodin, Dan (15 July 2015). "Once-theoretical crypto attack against HTTPS now verges on practicality". Ars Technical. Conde Nast. Archived from the original on 16 July 2015. Retrieved 16 July 2015.
  137. ^ "Mozilla Security Server Side TLS Recommended Configurations". Mozilla. Archived from the original on 2015-01-03. Retrieved 2015-01-03.
  138. ^ "Security Advisory 2868725: Recommendation to disable RC4". Microsoft. 2013-11-12. Archived from the original on 2013-11-18. Retrieved 2013-12-04.
  139. ^ "Ending support for the RC4 cipher in Microsoft Edge and Internet Explorer 11". Microsoft Edge Team. September 1, 2015. Archived from the original on September 2, 2015.
  140. ^ Langley, Adam (Sep 1, 2015). "Intent to deprecate: RC4". Archived from the original on May 23, 2013. Retrieved September 2, 2015.
  141. ^ Barnes, Richard (Sep 1, 2015). "Intent to ship: RC4 disabled by default in Firefox 44". Archived from the original on 2011-01-22.
  142. ^ a b John Leyden (1 August 2013). "Gmail, Outlook.com and e-voting 'pwned' on stage in crypto-dodge hack". The Register. Archived from the original on 1 August 2013. Retrieved 1 August 2013.
  143. ^ "BlackHat USA Briefings". Black Hat 2013. Archived from the original on 30 July 2013. Retrieved 1 August 2013.
  144. ^ Smyth, Ben; Pironti, Alfredo (2013). Truncating TLS Connections to Violate Beliefs in Web Applications. 7th USENIX Workshop on Offensive Technologies (report). Archived from the original on 6 November 2015. Retrieved 15 February 2016.
  145. ^ AlFardan, Nadhem; Paterson, Kenneth G (2012). Plaintext-recovery attacks against datagram TLS (PDF). Network and distributed system security symposium (NDSS 2012). Archived from the original on 2012-01-18.{{cite conference}}: CS1 maint: unfit URL (link)
  146. ^ Goodin, Dan (26 July 2016). "New attack bypasses HTTPS protection on Macs, Windows, and Linux". Ars Technica. Condé Nast. Archived from the original on 27 July 2016. Retrieved 28 July 2016.
  147. ^ Goodin, Dan (August 24, 2016). "HTTPS and OpenVPN face new attack that can decrypt secret cookies". Ars Technica. Archived from the original on August 24, 2016. Retrieved August 24, 2016.
  148. ^ "Why is it called the 'Heartbleed Bug'?". The Washington Post. 2014-04-09. Archived from the original on 2014-10-09.
  149. ^ "Heartbleed Bug vulnerability [9 April 2014]". Comodo Group. Archived from the original on 5 July 2014.
  150. ^ Bleichenbacher, Daniel (August 2006). "Bleichenbacher's RSA signature forgery based on implementation error". Archived from the original on 2014-12-16.
  151. ^ "BERserk". Intel Security: Advanced Threat Research. September 2014. Archived from the original on 2015-01-12.
  152. ^ Goodin, Dan (February 19, 2015). "Lenovo PCs ship with man-in-the-middle adware that breaks HTTPS connections". Ars Technica. Archived from the original on September 12, 2017. Retrieved December 10, 2017.
  153. ^ Valsorda, Filippo (2015-02-20). "Komodia/Superfish SSL validation is broken". Filippo.io. Archived from the original on 2015-02-24.
  154. ^ a b Goodin, Dan (26 May 2016). ""Forbidden attack" makes dozens of HTTPS Visa sites vulnerable to tampering". Ars Technica. Archived from the original on 26 May 2016. Retrieved 26 May 2016.
  155. ^ Clark Estes, Adam (February 24, 2017). "Everything You Need to Know About Cloudbleed, the Latest Internet Security Disaster". Gizmodo. Archived from the original on 2017-02-25. Retrieved 2017-02-24.
  156. ^ Diffie, Whitfield; van Oorschot, Paul C; Wiener, Michael J. (June 1992). "Authentication and Authenticated Key Exchanges". Designs, Codes and Cryptography. 2 (2): 107–125. CiteSeerX 10.1.1.59.6682. doi:10.1007/BF00124891. S2CID 7356608. Archived from the original on 2008-03-13. Retrieved 2008-02-11.
  157. ^ "Discussion on the TLS mailing list in October 2007". Archived from the original on 22 September 2013. Retrieved 20 February 2022.
  158. ^ "Protecting data for the long term with forward secrecy". Archived from the original on 2013-05-06. Retrieved 2012-11-05.
  159. ^ Bernat, Vincent (28 November 2011). "SSL/TLS & Perfect Forward Secrecy". Archived from the original on 2012-08-27. Retrieved 2012-11-05.
  160. ^ "SSL Labs: Deploying Forward Secrecy". Qualys.com. 2013-06-25. Archived from the original on 2013-06-26. Retrieved 2013-07-10.
  161. ^ Ristic, Ivan (2013-08-05). "SSL Labs: Deploying Forward Secrecy". Qualsys. Archived from the original on 2013-09-20. Retrieved 2013-08-31.
  162. ^ a b Langley, Adam (27 June 2013). "How to botch TLS forward secrecy". imperialviolet.org. Archived from the original on 8 August 2013.
  163. ^ a b Daignière, Florent. "TLS "Secrets": Whitepaper presenting the security implications of the deployment of session tickets (RFC 5077) as implemented in OpenSSL" (PDF). Matta Consulting Limited. Archived (PDF) from the original on 6 August 2013. Retrieved 7 August 2013.
  164. ^ a b Daignière, Florent. "TLS "Secrets": What everyone forgot to tell you…" (PDF). Matta Consulting Limited. Archived (PDF) from the original on 5 August 2013. Retrieved 7 August 2013.
  165. ^ L.S. Huang; S. Adhikarla; D. Boneh; C. Jackson (2014). "An Experimental Study of TLS Forward Secrecy Deployments". IEEE Internet Computing. 18 (6): 43–51. CiteSeerX 10.1.1.663.4653. doi:10.1109/MIC.2014.86. S2CID 11264303. Archived from the original on 20 September 2015. Retrieved 16 October 2015.
  166. ^ "Protecting data for the long term with forward secrecy". Archived from the original on 2014-02-12. Retrieved 2014-03-07.
  167. ^ Hoffman-Andrews, Jacob. "Forward Secrecy at Twitter". Twitter. Archived from the original on 2014-02-16. Retrieved 2014-03-07.
  168. ^ a b c Durumeric, Zakir; Ma, Zane; Springall, Drew; Barnes, Richard; Sullivan, Nick; Bursztein, Elie; Bailey, Michael; Halderman, J. Alex; Paxson, Vern (5 September 2017). "The Security Impact of HTTPS Interception". NDSS Symposium. doi:10.14722/ndss.2017.23456. ISBN 978-1-891562-46-4. Archived from the original on 22 March 2019. Retrieved 11 March 2019.
  169. ^ a b These certificates are currently X.509, but RFC 6091 also specifies the use of OpenPGP-based certificates.
  170. ^ "tls – Differences between the terms "pre-master secret", "master secret", "private key", and "shared secret"?". Cryptography Stack Exchange. Archived from the original on 2020-09-22. Retrieved 2020-10-01.
  171. ^ Chris (2009-02-18). "vsftpd-2.1.0 released – Using TLS session resume for FTPS data connection authentication". Scarybeastsecurity. blogspot.com. Archived from the original on 2012-07-07. Retrieved 2012-05-17.
  172. ^ Rescorla, Eric (August 2018). "Cryptographic Negotiation". The Transport Layer Security (TLS) Protocol Version 1.3. IETF. sec. 4.1.1. doi:10.17487/RFC8446. RFC 8446.
  173. ^ Valsorda, Filippo (23 September 2016). "An overview of TLS 1.3 and Q&A". The Cloudflare Blog. Archived from the original on 3 May 2019. Retrieved 3 May 2019.
  174. ^ Wildcard SSL Certificate overview, archived from the original on 2015-06-23, retrieved 2015-07-02
  175. ^ Named-based SSL virtual hosts: how to tackle the problem (PDF), archived (PDF) from the original on 2012-08-03, retrieved 2012-05-17

Further reading

Primary standards

The current approved version of (D)TLS is version 1.3, which are specified in:

The current standards replaces these former versions, which are now considered obsolete:

Extensions

Other RFCs subsequently extended (D)TLS.

Extensions to (D)TLS 1.3 include:

Extensions to (D)TLS 1.2 include:

Extensions to (D)TLS 1.1 include:

Extensions to TLS 1.0 include:

Informational RFCs

External links