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

Шифрование SSL/TLS

SSL/TLS (Secure Sockets Layer / Transport Layer Security) — это криптографические протоколы, предназначенные для обеспечения безопасной передачи данных между узлами в компьютерной сети, в первую очередь между веб-сервером и браузером. Протоколы обеспечивают конфиденциальность, целостность и аутентификацию передаваемой информации, защищая её от перехвата, подмены и несанкционированного доступа.

История

Разработка протокола началась в середине 1990-х годов в компании Netscape Communications. Первая версия, SSL 1.0, не была опубликована из-за серьёзных уязвимостей. В 1995 году была выпущена версия SSL 2.0, которая, однако, также содержала критические недостатки, включая слабую аутентификацию и уязвимость к атакам типа «человек посередине» (MITM).

В 1996 году появился SSL 3.0, который исправил основные недостатки предыдущей версии и стал стандартом де-факто для защищённых соединений в интернете. Однако SSL 3.0 также был признан устаревшим и небезопасным после публикации атаки POODLE в 2014 году.

В 1999 году Международная инженерная группа интернета (IETF) стандартизировала протокол TLS 1.0, который базировался на SSL 3.0, но с рядом улучшений. Впоследствии были выпущены версии TLS 1.1 (2006), TLS 1.2 (2008) и TLS 1.3 (2018). Начиная с 2020-х годов, версии TLS 1.0 и 1.1 считаются устаревшими и не рекомендуются к использованию из-за уязвимостей к атакам BEAST и другим.

Архитектура и принцип работы

Протокол SSL/TLS работает на транспортном уровне модели OSI, поверх протокола TCP (Transmission Control Protocol). Он не является единым протоколом, а состоит из двух подпротоколов:

  • Рукопожатие (Handshake Protocol) — отвечает за установление безопасного соединения, согласование криптографических параметров и аутентификацию сторон.
  • Запись (Record Protocol) — обеспечивает шифрование и аутентификацию передаваемых данных после установления соединения.

Процесс установления соединения (TLS Handshake)

  1. ClientHello: Клиент (браузер) отправляет серверу сообщение, содержащее список поддерживаемых версий TLS, наборы шифров (cipher suites), методы сжатия и случайное число.
  2. ServerHello: Сервер выбирает из предложенных клиентом параметров наиболее подходящие и отправляет свой ответ, включая выбранную версию TLS, набор шифров, случайное число и, при необходимости, свой цифровой сертификат.
  3. Сертификат и аутентификация: Сервер отправляет клиенту свой цифровой сертификат, который содержит открытый ключ сервера и информацию о его владельце, заверенную центром сертификации (CA). Клиент проверяет подлинность сертификата, используя цепочку доверия до корневого сертификата CA.
  4. Key Exchange: Клиент генерирует предварительный главный секрет (pre-master secret), шифрует его открытым ключом сервера и отправляет серверу. Обе стороны на основе этого секрета и случайных чисел вычисляют главный секрет (master secret), из которого затем генерируются сессионные ключи для симметричного шифрования.
  5. Завершение рукопожатия: Клиент и сервер обмениваются сообщениями, подтверждающими, что все последующие данные будут зашифрованы.

В версии TLS 1.3 процесс рукопожатия был оптимизирован: он сократился до одного раунда (round-trip) в большинстве случаев, что уменьшило задержки при установлении соединения.

Классификация и виды

Протоколы SSL/TLS классифицируются по версиям:

  • SSL 2.0 (1995) — устаревший, небезопасный.
  • SSL 3.0 (1996) — устаревший, небезопасный.
  • TLS 1.0 (1999) — устаревший, не рекомендуется.
  • TLS 1.1 (2006) — устаревший, не рекомендуется.
  • TLS 1.2 (2008) — широко используется, поддерживает большинство современных криптоалгоритмов.
  • TLS 1.3 (2018) — самая современная и безопасная версия, исключает устаревшие алгоритмы, ускоряет рукопожатие.

Криптографические алгоритмы

SSL/TLS использует комбинацию асимметричной и симметричной криптографии.

Асимметричная криптография

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

  • RSA (Rivest–Shamir–Adleman) — классический алгоритм, основанный на сложности факторизации больших чисел.
  • ECDSA (Elliptic Curve Digital Signature Algorithm) — алгоритм на основе эллиптических кривых, обеспечивает более высокую производительность при той же стойкости.
  • Diffie-Hellman (DH) и его вариант на эллиптических кривых (ECDH) — для обмена ключами, обеспечивающий свойство Perfect Forward Secrecy (PFS): компрометация долговременного ключа сервера не позволяет расшифровать ранее перехваченные сессии.

Симметричная криптография

Используется для шифрования передаваемых данных после установления соединения. Применяются алгоритмы:

  • AES (Advanced Encryption Standard) — наиболее распространённый блочный шифр, используемый в режимах GCM (Galois/Counter Mode) или CBC (Cipher Block Chaining).
  • ChaCha20 — потоковый шифр, часто используемый в паре с Poly1305 для аутентификации, особенно на мобильных устройствах.
  • 3DES (Triple DES) — устаревший алгоритм, не рекомендуется к использованию.

Хеширование и аутентификация

Для проверки целостности данных и аутентификации сообщений используются:

  • HMAC (Hash-based Message Authentication Code) на основе SHA-256 или SHA-384.
  • AEAD (Authenticated Encryption with Associated Data) — режимы, совмещающие шифрование и аутентификацию (например, AES-GCM, ChaCha20-Poly1305).

Применение

SSL/TLS является основой безопасности современных интернет-коммуникаций. Основные области применения:

  • HTTPS: Защита трафика между веб-сервером и браузером. Используется для защиты онлайн-банкинга, электронной коммерции, почтовых сервисов, социальных сетей и любых сайтов, передающих конфиденциальные данные.
  • SMTP, IMAP, POP3: Защита электронной почты при передаче через почтовые серверы (STARTTLS).
  • VPN: Некоторые VPN-протоколы (например, OpenVPN) используют TLS для установления защищённого канала.
  • VoIP: Защита голосовых вызовов (например, в протоколах SIP и RTP).
  • API и микросервисы: Обеспечение безопасности взаимодействия между серверными приложениями.
  • IoT: Защита передачи данных от устройств Интернета вещей.

Уязвимости и атаки

Несмотря на высокий уровень безопасности, SSL/TLS подвержен ряду атак, особенно на старые версии:

  • POODLE (2014) — атака на SSL 3.0, позволяющая расшифровать данные.
  • BEAST (2011) — атака на TLS 1.0, использующая уязвимость в режиме CBC.
  • Heartbleed (2014) — уязвимость в реализации OpenSSL, позволяющая читать память сервера.
  • CRIME/BREACH — атаки, использующие сжатие данных для восстановления содержимого.
  • DROWN (2016) — атака, использующая уязвимости SSL 2.0 для взлома TLS-соединений.
  • Logjam (2015) — атака на протокол Diffie-Hellman с использованием слабых параметров.

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

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

Для аутентификации сервера в SSL/TLS используются цифровые сертификаты, соответствующие стандарту X.509. Сертификат содержит:

  • Открытый ключ сервера.
  • Идентификационные данные владельца (доменное имя, организация).
  • Срок действия.
  • Подпись центра сертификации (CA).

Центры сертификации (например, Let's Encrypt, DigiCert, GlobalSign, Comodo) являются доверенными третьими сторонами, которые подтверждают подлинность сертификата. Корневые сертификаты CA встроены в операционные системы и браузеры, что позволяет клиенту проверять цепочку доверия.

Существуют также самоподписанные сертификаты, которые не проходят проверку CA, но могут использоваться в тестовых средах или внутренних сетях.

Стандартизация

Протоколы TLS стандартизированы IETF в серии документов RFC:

  • RFC 2246 (TLS 1.0)
  • RFC 4346 (TLS 1.1)
  • RFC 5246 (TLS 1.2)
  • RFC 8446 (TLS 1.3)
  • RFC 8447 (использование TLS в различных протоколах)

Источники

  • RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3.
  • RFC 5246 — The Transport Layer Security (TLS) Protocol Version 1.2.
  • RFC 2246 — The TLS Protocol Version 1.0.
  • Rescorla, E. (2000). SSL and TLS: Designing and Building Secure Systems. Addison-Wesley.
  • NIST Special Publication 800-52 Rev. 2 — Guidelines for the Selection, Configuration, and Use of Transport Layer Security (TLS) Implementations.
  • OpenSSL Project — документация и руководства.

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

На главную BFOmetr →