TLS¶
Коротко¶
Transport Layer Security - шифрование соединения между клиентом и сервером. Работает над TCP (Application Layer). Для UDP - DTLS. Наблюдатель видит только IP, порты, тип шифрования. Данные недоступны.
Handshake¶
Установление защищенного соединения:
- ClientHello - клиент отправляет версию TLS, поддерживаемые шифры, случайные данные
- ServerHello - сервер выбирает шифр, отправляет сертификат
- Key Exchange - обмен ключами (обычно ECDHE)
- 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