TLS 1.3
TLS 1.3 | |
---|---|
Название | Transport Layer Security v.1.3 |
Уровень (по модели OSI) | Сеансовый |
Семейство | TLS |
Создан в | Март 2018 |
Назначение протокола | Защита передачи данных |
Спецификация | RFC 8446 |
Основные реализации (клиенты) | Mozilla Firefox и Google Chrome |
TLS 1.3 — версия протокола защиты транспортного уровня (англ. Transport Layer Security)[1], являющаяся седьмой итерацией протокола TLS и его предшественника SSL (англ. Secure Sockets Layer). Протокол предназначен для защиты передаваемых данных между узлами сети, а именно предоставление шифрования, аутентификации и целостности соединения[2].
Версия 1.3 была утверждена в качестве стандарта 9 августа 2018 года Инженерным советом Интернета (англ. Internet Engineering Task Force, IETF)[3][4].
Установка соединения в TLS 1.3
[править | править код]Процедура установки соединения также называется фазой рукопожатия (англ. Handshake)[5]. Данная процедура была модифицирована в версии 1.3 и значительно сократила время работы. TLS 1.3 необходима только одна передача в оба конца для установки соединения. В новой версии TLS 1.3 количество переговоров между клиентом и сервером сократилось с четырёх до двух, обмен ключами и схема цифровой подписи через расширение больше не требуются.
Возобновление сеанса 0-RTT
[править | править код]Также в TLS 1.3 была включена система рукопожатий 0-RTT, которая требует ноль циклов для установки соединения . Клиент имеет возможность подключиться к уже посещённому серверу ещё до разрешения от TLS 1.3 обмена данными. Это происходит путём хранения секретной информации, такой как идентификатор сеанса или билеты предыдущих сеансов. Данная система имеет несколько недостатков в безопасности, о которых рассказано в соответствующем разделе.
Схема установки соединения в TLS 1.3
[править | править код]- Клиент посылает сообщение ClientHello, состоящее из:[6]
- Открытый ключ клиента key_share, полученный по протоколу Диффи-Хеллмана или идентификаторы секретных ключей pre_shared_key, если используется шифрование по заранее заданному секретному ключу, известному обоим узлам сети;
- Предполагаемый режим обмена секретными ключами psk_key_exchange_modes;
- Модель алгоритма цифровой подписи signature_algorithms.
- Сервер отвечает следующими сообщениями:
- Ответная часть открытого ключа key_share или выбранный идентификатор секретного ключа pre_shared_key;
- Серверное сообщение EncryptedExtensions для передачи в зашифрованном виде дополнения, включающие в себя параметры тонкой настройки;
- При необходимости аутентификации, серверное сообщение CertificateRequest для получения клиентского сертификата;
- Сертификат сервера Certificate
- Сообщение Certificate_verify, которое содержит цифровой сертификат сервера;
- Сообщение о завершении процедуры рукопожатия Finished
- Клиент проверяет сертификат сервера, генерирует итоговый секретный ключ (в случае выбора данного способа генерации) и отправляет сообщения:
- Сообщение о завершении процедуры рукопожатия Finished (формальная отправка для подтверждения);
- В случае запроса клиентского сертификата отправляет свой сертификат Certificate;
- Зашифрованное сообщение (с этого момента происходит шифрование данных).
Особенности процедуры Handshake TLS 1.3
[править | править код]- Узлы при первой возможности переходят к зашифрованному виду и практически все сообщения в Handshake получаются зашифрованными;
- Добавлено серверное сообщение Encrypted Extensions, включающее в себя дополнительные параметры в зашифрованном виде[7];
- Экономия целого полного цикла общения клиента и сервера и как следствие уменьшение времени работы процедуры минимум на 100 миллисекунд.
Улучшения безопасности TLS 1.3
[править | править код]В TLS 1.3 были удалены устаревшие и небезопасные функции, которые присутствовали в предыдущих версиях, такие как:
- Алгоритмы шифрования DES и 3DES;
- Алгоритмы хэширования MD5 и SHA-1;
- Export-шифры и шифр RC4;
- Блочный шифр AES в режиме CBC (Cipher Block Chaining).
В новой версии TLS было реализовано свойство Perfect Forward Secrecy, дающее гарантию некомпрометации сеансового ключа без обязательного обмена ключами протоколом RSA[8][9]. Уменьшена потенциальная вероятность неправильной настройки протокола из-за его упрощения с точки зрения администрирования. Как писалось ранее, общение межу узлами сети почти сразу происходит в зашифрованном виде, благодаря чему увеличивается криптонадежность протокола[10].
Кроме этого, в новой версии поддерживается протокол шифрования HCDH и может не затрагивать протокол обмена ключами на основе протокола DH.
Уязвимости TLS 1.3
[править | править код]В новой версии протокола исправлено большинство недостатков и уязвимостей предыдущих версий, однако на данный момент обнаружено несколько уязвимостей в безопасности:
- Существует несколько проблем безопасности в сеансах возобновления 0-RTT:
- Отсутствие полной прямой секретности. То есть в случае компрометации ключей сеанса, злоумышленник может расшифровать данные 0-RTT, отправленные клиентом на первом этапе. Данная проблема решается постоянным изменением ключей сеанса[11].
- Отсутствие гарантии запрета повторного подключения. Если злоумышленнику каким-то образом удастся завладеть вашими зашифрованными данными 0-RTT, он может обмануть сервер и заставить его поверить в то, что запрос пришёл с сервера, поскольку у него нет возможности узнать, откуда пришли данные. Отправка подобных запросов несколько раз называется атака повторного воспроизведения.
- Неполный отказ от RSA, из-за которого появляется возможность скомпрометировать обмен ключами через утекающие процессорные кэши. Данная уязвимость была использована для проведения новой вариации атаки Блейхенбахера, которая была изложена группой специалистов в статье.
- Уязвимость при работе с функционалом URL программного обеспечения Cisco Firepower Threat Defense. Злоумышленник может без прохождения проверки подлинности обойти блокировку трафика для определённых URL-адресов[12]. Злоумышленник может воспользоваться этой уязвимостью, отправив созданные подключения TLS 1.3 на уязвимое устройство. Успешный эксплойт может позволить злоумышленнику обойти защиту TLS 1.3 и получить доступ к URL-адресам, которые находятся за пределами уязвимого устройства. Уязвимость вызвана логичной ошибкой обработки Snort-соединений в протоколе TLS 1.3.
- Зачастую оба узла соединения поддерживают старую версию TLS с набором шифров, поддерживающим обмен ключами RSA. Используя этот факт, злоумышленник может внедрить вредоносный JavaScript файл в браузер клиента через вредоносную точку доступа по типу Wi-Fi. Внедрённый файл создаёт специальный HTTPS-запрос, включающий в себя обход посредника для прослушивания зашифрованных данных[13]. Данная уязвимость даёт возможность проведения криптографических атак Zombie POODLE и GOLDENDOODLE Attack[13].
Совместимость с предыдущими версиями
[править | править код]В версии TLS 1.3 набор шифров (Cipher Suites) был существенно уменьшен по сравнению с версией TLS 1.2 и принадлежит классу шифров AEAD[14]. Данные наборы регистрируются и хранятся в специальном реестре TLS IANA[15], в котором присваивается уникальный идентификационные номер. Из-за этого у протокола версии 1.3 отсутствует обратная совместимость с более ранними версиями даже при использовании одинаковых наборов шифров[16].
Доступные наборы шифров для TLS 1.3:
- TLS_AES_128_CCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_AES_128_GCM_SHA256
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_CCM_8_SHA256
Поддерживающие TLS 1.3 версии браузеров
[править | править код]На данный момент протокол TLS 1.3 поддерживается следующими браузерами и версиями[17]:
Минимальные | Рекомендуемые | |
---|---|---|
Google Chrome | 67 | 70 или выше |
Mozilla Firefox | 60 | 63 или выше |
Android Chrome | 1.3 | в 70 версии |
Samsung Internet | 6.2 | 7.2 |
Примечания
[править | править код]- ↑ ГОСУДАРСТВЕННЫЙ СТАНДАРТ СТБ 34.101.65-2014
- ↑ TLS
- ↑ Sectigo . sectigo.com. Дата обращения: 7 декабря 2021. Архивировано 28 сентября 2020 года.
- ↑ IETF утверждает TLS 1.3 в качестве Интернет-Стандарта . Anti-Malware.ru (26 марта 2018). Дата обращения: 7 декабря 2021. Архивировано 6 декабря 2021 года.
- ↑ Варвара Николаева. Что такое TLS-рукопожатие и как оно устроено . Tproger (2 июля 2019). Дата обращения: 7 декабря 2021. Архивировано 7 декабря 2021 года.
- ↑ Eric Rescorla. The Transport Layer Security (TLS) Protocol Version 1.3. — Internet Engineering Task Force, 2018-08. — № RFC 8446. Архивировано 26 ноября 2021 года.
- ↑ A Walkthrough of a TLS 1.3 Handshake . commandlinefanatic.com. Дата обращения: 8 декабря 2021. Архивировано 1 ноября 2021 года.
- ↑ Kim Crawley. What Forward Secrecy Does For TLS 1.3 | Venafi (англ.). www.venafi.com. Дата обращения: 7 декабря 2021. Архивировано 8 декабря 2021 года.
- ↑ RSA Vulnerabilities . paginas.fe.up.pt. Дата обращения: 7 декабря 2021. Архивировано 8 декабря 2021 года.
- ↑ Why use TLS 1.3? | SSL and TLS vulnerabilities (англ.). Дата обращения: 7 декабря 2021. Архивировано 7 декабря 2021 года.
- ↑ TLS 1.3 Handshake: Taking a Closer Look (амер. англ.). Hashed Out by The SSL Store™ (20 марта 2018). Дата обращения: 7 декабря 2021. Архивировано 4 декабря 2021 года.
- ↑ NVD - CVE-2020-3285 . nvd.nist.gov. Дата обращения: 7 декабря 2021. Архивировано 6 декабря 2021 года.
- ↑ 1 2 ddos. New TLS 1.3 protocol vulnerability, thousands of websites face data leakage risks (амер. англ.). InfoTech News (15 февраля 2019). Дата обращения: 7 декабря 2021. Архивировано 6 декабря 2021 года.
- ↑ Cipher suites — Edge certificates (англ.). Cloudflare Docs. Дата обращения: 7 декабря 2021. Архивировано 7 декабря 2021 года.
- ↑ Transport Layer Security (TLS) Parameters . www.iana.org. Дата обращения: 7 декабря 2021. Архивировано 21 декабря 2016 года.
- ↑ Как работает TLS, в технических подробностях . tls.dxdt.ru. Дата обращения: 7 декабря 2021. Архивировано 15 ноября 2021 года.
- ↑ TLS 1.3 - Support Tables - W3cubDocs . docs.w3cub.com. Дата обращения: 7 декабря 2021. Архивировано 4 декабря 2021 года.
Ссылки
[править | править код]- E. Rescorla. The Transport Layer Security (TLS) Protocol Version 1.3 // IETF Datatracker. — 2018. — 1 August. — ISSN 2070-1721.
- Александр Венедюхин, Ключи, шифры, сообщения: как работает TLS (Техническое описание TLS), 04/09/2015
- Benjamin Dowling, Marc Fischlin, Felix Günther, Douglas Stebila. A Cryptographic Analysis of the TLS 1.3 Handshake Protocol // Cryptology ePrint Archive. — 2021. — 22 February.
- Taking Transport Layer Security (TLS) to the next level with TLS 1.3
- Patrick Nohe. TLS 1.3: A Complete Overview (англ.) (16 июля 2019).