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

TLS/SSL

TLS/SSL — это собирательное название криптографических протоколов, обеспечивающих защищённую передачу данных между узлами в компьютерной сети. Основное назначение протоколов — гарантировать конфиденциальность (шифрование), целостность (обнаружение изменений) и аутентификацию сторон (проверка подлинности сервера, а иногда и клиента) при обмене информацией, прежде всего в сети Интернет. Наиболее широкое применение TLS/SSL получил в протоколе HTTPS, обеспечивающем безопасную работу веб-сайтов.

История

SSL (Secure Sockets Layer)

Протокол SSL был разработан компанией Netscape Communications в середине 1990-х годов для защиты данных, передаваемых между веб-браузерами и серверами. Первая версия SSL 1.0, созданная в 1994 году, никогда не публиковалась из-за серьёзных уязвимостей. В 1995 году была выпущена версия SSL 2.0, которая стала первым общедоступным протоколом, однако она содержала ряд конструктивных недостатков. В 1996 году появился SSL 3.0, разработанный Полом Кочером, который исправил многие проблемы предшественника и стал основой для будущего стандарта.

Переход к TLS

В 1999 году IETF (Internet Engineering Task Force) опубликовала спецификацию TLS 1.0 (RFC 2246), основанную на SSL 3.0, но с рядом изменений, направленных на повышение безопасности. Фактически TLS стал стандартизированной версией SSL. Последующие версии протокола (TLS 1.1 в 2006 году, TLS 1.2 в 2008 году) постепенно устраняли уязвимости и вводили более стойкие алгоритмы шифрования. TLS 1.3, выпущенный в 2018 году (RFC 8446), стал самым значительным обновлением, сократив время установки соединения и отказавшись от устаревших и небезопасных криптографических схем.

Устаревание SSL

Из-за доказанных уязвимостей (таких как атака POODLE) и выхода более совершенных версий TLS, IETF официально объявила SSL 3.0 устаревшим в 2015 году. Начиная с середины 2010-х годов все современные браузеры и серверы прекратили поддержку SSL v2.0 и v3.0 по умолчанию, допуская использование только TLS 1.2 и, позднее, TLS 1.3.

Принцип работы

Протокол TLS/SSL работает на сеансовом уровне модели OSI (между транспортным и прикладным уровнями). Он устанавливает защищённое соединение в два основных этапа:

Рукопожатие (Handshake)

  1. Приветствие (Hello). Клиент (например, браузер) отправляет серверу список поддерживаемых версий протокола, наборов шифров (cipher suites) и другие параметры. Сервер выбирает наиболее подходящий вариант и в ответном сообщении приветствия сообщает свой выбор и свой цифровой сертификат.
  2. Аутентификация и обмен ключами. Клиент проверяет подлинность сертификата сервера (обычно с помощью цепочки доверия до доверенного корневого центра сертификации). Если сертификат действителен, клиент генерирует общий секретный ключ (сессионный ключ) и безопасно передаёт его серверу, используя асимметричное шифрование (например, алгоритм Диффи-Хеллмана или его эллиптический вариант ECDHE). В процессе рукопожатия также может проводиться аутентификация клиента (взаимная аутентификация), но это встречается реже.
  3. Завершение. После того как обе стороны вычислили один и тот же сессионный ключ, они уведомляют друг друга о начале зашифрованной передачи данных. Само рукопожатие обычно занимает 1-2 сетевых раунда (в TLS 1.3 — один раунд).

Защищённая передача данных

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

Криптографические основы

Симметричное шифрование

Используется для основного потока данных после установления соединения. Оно значительно быстрее асимметричного. В TLS 1.2 и 1.3 поддерживаются алгоритмы: AES (в режимах GCM, CCM), ChaCha20-Poly1305.

Асимметричное шифрование

Применяется на этапе рукопожатия для аутентификации и безопасного обмена ключами. Основные используемые методы:

Хэш-функции

Используются в алгоритмах HMAC (Hash-based Message Authentication Code) для проверки целостности сообщений, а также в процессе генерации ключей. В современных версиях применяются SHA-256, SHA-384.

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

Аутентификация сервера (а иногда и клиента) осуществляется с помощью сертификатов X.509. Сертификат содержит имя сервера (Common Name или SAN), открытый ключ сервера, срок действия и подпись удостоверяющего центра (CA). Браузеры и другие клиенты имеют встроенный список доверенных корневых CA. Для HTTPS также требуются сертификаты, соответствующие проверке CN и SAN (проблема несоответствия имени сертификата приводит к ошибке безопасности).

Версии протокола

ВерсияГод публикацииСтатусОсобенности
SSL 2.01995Запрещён (RFC 6176)Многочисленные уязвимости (атака на рукопожатие, слабые хэши). Не поддерживается.
SSL 3.01996Запрещён (RFC 7568)Уязвим к атаке POODLE. Не поддерживается.
TLS 1.01999Устаревший (RFC 8996)Основан на SSL 3.0, но несовместим с ним. Уязвим к атакам BEAST, Lucky13. Не рекомендуется к использованию.
TLS 1.12006Устаревший (RFC 8996)Добавлена защита от атак на CBC, но устарел.
TLS 1.22008АктивныйПоддерживает современные наборы шифров (AES-GCM, ECDHE). Широко распространён.
TLS 1.32018Активный (рекомендуемый)Упрощённое рукопожатие (1-RTT), отказ от устаревших алгоритмов (RSA, 3DES, CBC), исключена возможность понижения безопасности. Поддерживает только прямую секретность.

Применение

HTTPS (HTTP over TLS)

Наиболее заметное применение TLS/SSL — шифрование трафика между веб-браузером и веб-сервером. Современные браузеры (Chrome, Firefox, Edge) помечают сайты без HTTPS (то есть без TLS) как небезопасные и блокируют некоторые функции, такие как геолокация или доступ к камере. Практически все крупные веб-сайты (Поисковые системы, социальные сети, банки) используют HTTPS.

Электронная почта

Протоколы SMTP, IMAP и POP3 могут использовать TLS для шифрования соединений между почтовыми клиентами и серверами. Используется как STARTTLS (дополнительное шифрование на старом соединении), так и SMTPS, IMAPS, POP3S (TLS с самого начала соединения).

VPN и туннелирование

Некоторые технологии VPN (например, OpenVPN в режиме TLS) используют TLS/SSL для аутентификации и управления ключами, обеспечивая безопасность туннеля через открытые сети.

Другие протоколы

TLS/SSL применяется в мессенджерах (XMPP, Matrix), при обновлении ПО (пакетные менеджеры), в системах онлайн-банкинга, при работе с базами данных и многих других приложениях, требующих безопасности.

Критика и уязвимости

Несмотря на свою надёжность, TLS/SSL неоднократно подвергался атакам, направленным на перехват данных или снижение уровня защиты:

Для устранения этих уязвимостей были выпущены обновления протоколов, отключены старые версии и введены более строгие криптографические требования (например, запрет на экспортные шифры).

Правовое регулирование в России

В Российской Федерации использование криптографических средств, включая TLS/SSL, регулируется Федеральным законом № 149-ФЗ «Об информации, информационных технологиях и о защите информации» и подзаконными актами (например, приказы ФСБ и Минцифры). Для применения шифрования при передаче данных в некоторых категориях систем (например, в государственных информационных системах, системах персональных данных) требуется использование сертифицированных ФСБ России криптографических модулей (СКЗИ). Ряд ведомств, в частности Главный радиочастотный центр (GRCh), контролирует соответствие реализаций TLS/SSL требованиям российских стандартов криптографии (ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012). На практике это означает, что для работы на территории РФ во многих корпоративных и государственных сетях могут требоваться сертификаты российских удостоверяющих центров (например, Минцифры) и поддержка ГОСТ-овых наборов шифров в настройках TLS.

Источники

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

На главную BFOmetr →