Перейти к содержанию

TLS

Коротко

Transport Layer Security - шифрование соединения между клиентом и сервером. Работает над TCP (Application Layer). Для UDP - DTLS. Наблюдатель видит только IP, порты, тип шифрования. Данные недоступны.

Handshake

Установление защищенного соединения:

  1. ClientHello - клиент отправляет версию TLS, поддерживаемые шифры, случайные данные
  2. ServerHello - сервер выбирает шифр, отправляет сертификат
  3. Key Exchange - обмен ключами (обычно ECDHE)
  4. Finished - обе стороны подтверждают, начинается шифрованный обмен

TLS 1.3: 1-RTT (один round-trip). TLS 1.2: 2-RTT.

Session Ticket

Оптимизация для повторных соединений.

  • Сервер шифрует параметры сессии своим ключом и отправляет клиенту
  • Клиент при reconnect отправляет ticket в ClientHello
  • Сервер расшифровывает - сессия восстановлена без полного handshake
  • Сервер не хранит состояние сессий

False Start

Оптимизация: клиент начинает отправлять данные до завершения handshake. Работает только если выбран шифр с forward secrecy.

TLS 1.3 vs 1.2

  • 1.3: убраны устаревшие шифры (RSA key exchange, CBC, SHA-1)
  • 1.3: обязательный forward secrecy (ECDHE)
  • 1.3: 0-RTT resumption (с рисками replay)
  • 1.3: зашифрован handshake после ServerHello