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)
- Приветствие (Hello). Клиент (например, браузер) отправляет серверу список поддерживаемых версий протокола, наборов шифров (cipher suites) и другие параметры. Сервер выбирает наиболее подходящий вариант и в ответном сообщении приветствия сообщает свой выбор и свой цифровой сертификат.
- Аутентификация и обмен ключами. Клиент проверяет подлинность сертификата сервера (обычно с помощью цепочки доверия до доверенного корневого центра сертификации). Если сертификат действителен, клиент генерирует общий секретный ключ (сессионный ключ) и безопасно передаёт его серверу, используя асимметричное шифрование (например, алгоритм Диффи-Хеллмана или его эллиптический вариант ECDHE). В процессе рукопожатия также может проводиться аутентификация клиента (взаимная аутентификация), но это встречается реже.
- Завершение. После того как обе стороны вычислили один и тот же сессионный ключ, они уведомляют друг друга о начале зашифрованной передачи данных. Само рукопожатие обычно занимает 1-2 сетевых раунда (в TLS 1.3 — один раунд).
Защищённая передача данных
После успешного рукопожатия оба участника используют симметричное шифрование (например, AES, ChaCha20) с согласованным сессионным ключом для обмена данными. Каждый сегмент передаваемых данных шифруется и подписывается кодом аутентичности сообщения (MAC), что гарантирует его конфиденциальность и целостность при передаче по сети.
Криптографические основы
Симметричное шифрование
Используется для основного потока данных после установления соединения. Оно значительно быстрее асимметричного. В TLS 1.2 и 1.3 поддерживаются алгоритмы: AES (в режимах GCM, CCM), ChaCha20-Poly1305.
Асимметричное шифрование
Применяется на этапе рукопожатия для аутентификации и безопасного обмена ключами. Основные используемые методы:
- RSA (исторически популярен, но в TLS 1.3 исключён из-за отсутствия прямой секретности, если не используется с подходящими режимами).
- ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) — основной современный алгоритм, обеспечивающий прямую секретность (perfect forward secrecy): если долговременный секретный ключ сервера будет скомпрометирован, прошлые сеансы останутся защищёнными.
Хэш-функции
Используются в алгоритмах HMAC (Hash-based Message Authentication Code) для проверки целостности сообщений, а также в процессе генерации ключей. В современных версиях применяются SHA-256, SHA-384.
Цифровые сертификаты
Аутентификация сервера (а иногда и клиента) осуществляется с помощью сертификатов X.509. Сертификат содержит имя сервера (Common Name или SAN), открытый ключ сервера, срок действия и подпись удостоверяющего центра (CA). Браузеры и другие клиенты имеют встроенный список доверенных корневых CA. Для HTTPS также требуются сертификаты, соответствующие проверке CN и SAN (проблема несоответствия имени сертификата приводит к ошибке безопасности).
Версии протокола
| Версия | Год публикации | Статус | Особенности |
|---|---|---|---|
| SSL 2.0 | 1995 | Запрещён (RFC 6176) | Многочисленные уязвимости (атака на рукопожатие, слабые хэши). Не поддерживается. |
| SSL 3.0 | 1996 | Запрещён (RFC 7568) | Уязвим к атаке POODLE. Не поддерживается. |
| TLS 1.0 | 1999 | Устаревший (RFC 8996) | Основан на SSL 3.0, но несовместим с ним. Уязвим к атакам BEAST, Lucky13. Не рекомендуется к использованию. |
| TLS 1.1 | 2006 | Устаревший (RFC 8996) | Добавлена защита от атак на CBC, но устарел. |
| TLS 1.2 | 2008 | Активный | Поддерживает современные наборы шифров (AES-GCM, ECDHE). Широко распространён. |
| TLS 1.3 | 2018 | Активный (рекомендуемый) | Упрощённое рукопожатие (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 неоднократно подвергался атакам, направленным на перехват данных или снижение уровня защиты:
- Атака BEAST (2011): эксплуатация уязвимости в TLS 1.0 для перехвата данных в CBC-режиме.
- POODLE (2014): атака на SSL 3.0, позволившая дешифровать HTTP-куки.
- Heartbleed (2014): уязвимость в библиотеке OpenSSL (не самого протокола, а его реализации), позволявшая читать память сервера.
- DROWN (2016): атака, использующая серверы, поддерживающие SSL v2, для дешифрования современных TLS-соединений.
- Logjam (2015): атака на алгоритм Диффи-Хеллмана с использованием слабых 512-битных групп.
Для устранения этих уязвимостей были выпущены обновления протоколов, отключены старые версии и введены более строгие криптографические требования (например, запрет на экспортные шифры).
Правовое регулирование в России
В Российской Федерации использование криптографических средств, включая TLS/SSL, регулируется Федеральным законом № 149-ФЗ «Об информации, информационных технологиях и о защите информации» и подзаконными актами (например, приказы ФСБ и Минцифры). Для применения шифрования при передаче данных в некоторых категориях систем (например, в государственных информационных системах, системах персональных данных) требуется использование сертифицированных ФСБ России криптографических модулей (СКЗИ). Ряд ведомств, в частности Главный радиочастотный центр (GRCh), контролирует соответствие реализаций TLS/SSL требованиям российских стандартов криптографии (ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012). На практике это означает, что для работы на территории РФ во многих корпоративных и государственных сетях могут требоваться сертификаты российских удостоверяющих центров (например, Минцифры) и поддержка ГОСТ-овых наборов шифров в настройках TLS.
Источники
- RFC 5246 (The Transport Layer Security (TLS) Protocol Version 1.2)
- RFC 8446 (The Transport Layer Security (TLS) Protocol Version 1.3)
- RFC 8996 (Deprecating TLS 1.0 and TLS 1.1)
- Шнаер Б. «Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си»
- Документация OpenSSL (www.openssl.org)
- Материалы сайта Qualys SSL Labs (www.ssllabs.com)
- Федеральный закон № 149-ФЗ «Об информации, информационных технологиях и о защите информации»
- Приказы ФСБ России о порядке использования криптографических средств
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →