Криптография
TLS
2013 год, Сноуден: АНБ записывает весь интернет-трафик в надежде расшифровать позже. Это атака 'Harvest Now, Decrypt Later'. Perfect Forward Secrecy делает её бессмысленной - прошлые сессии защищены уничтоженными ключами. TLS 1.3 делает PFS обязательным.
- **HTTPS повсюду**: Firefox и Chrome показывают предупреждение для HTTP. 95%+ веб-трафика в 2024 - TLS. Let's Encrypt автоматизировал выдачу сертификатов.
- **QUIC/HTTP3**: TLS 1.3 встроен в QUIC. 0-RTT handshake для UDP. YouTube, Google Search, Cloudflare используют QUIC для снижения латентности на мобильных сетях.
- **Cloudflare Radar**: 40%+ глобального HTTP трафика проходит через Cloudflare. Все соединения - TLS 1.3 с ECDHE (X25519 в 93% случаев).
- **mTLS (mutual TLS)**: клиент тоже предоставляет сертификат. Используется в service mesh (Istio, Linkerd), API authentication, IoT устройствах.
TLS 1.2: классический handshake
TLS 1.2 (RFC 5246, 2008) требует 2 RTT до начала данных. ClientHello -> ServerHello + Certificate + ServerHelloDone -> ClientKeyExchange + ChangeCipherSpec + Finished -> ChangeCipherSpec + Finished. Только после этого первые зашифрованные данные.
TLS 1.0 и 1.1 устарели: NIST запретил их в 2021. PCI DSS требует TLS 1.2+ с 2018. Cloudflare отключил TLS 1.0/1.1 в 2020. Браузеры Chrome, Firefox, Safari отказываются от TLS 1.0/1.1 с 2020. Только TLS 1.2 и 1.3 считаются безопасными.
Почему RSA key exchange в TLS 1.2 (без ECDHE) не обеспечивает forward secrecy?
TLS 1.3: революционный рефакторинг
TLS 1.3 (RFC 8446, 2018): 1 RTT handshake, только сильные алгоритмы, обязательный forward secrecy. 0-RTT (early data) для resumed sessions. Удалены все небезопасные cipher suites. Handshake зашифрован с Certificate Verify.
0-RTT early data: клиент отправляет данные в первом пакете, используя session ticket из предыдущей сессии. Ограничение: не replay-safe (нужна идемпотентность запросов). Cloudflare и Google поддерживают 0-RTT для GET запросов. QUIC (HTTP/3) использует TLS 1.3 как основу.
Как TLS 1.3 достигает 1 RTT вместо 2 RTT в TLS 1.2?
Cipher Suites: что за строки в настройках
Cipher suite - набор алгоритмов для одного TLS-соединения. В TLS 1.2 имя длинное: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. В TLS 1.3 только 5 AEAD-суит: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256.
Почему в TLS 1.3 только 5 cipher suites, а в TLS 1.2 было сотни?
Perfect Forward Secrecy: защита прошлого
PFS (Perfect Forward Secrecy): компрометация долгосрочного ключа сервера не раскрывает прошлые сессии. Достигается ephemeral DH: каждое соединение использует новую DH-пару, уничтожаемую после завершения. Даже запись всего трафика бесполезна без эфемерного ключа.
NSA 'Harvest Now, Decrypt Later': записывать зашифрованный трафик сегодня, расшифровать когда появится квантовый компьютер. PFS защищает от текущей компрометации, но не от квантовых атак на записанный ECDH-трафик. Поэтому NIST стандартизирует KYBER (ML-KEM) для постквантового KEM в TLS.
Как PFS защищает прошлые сессии при компрометации приватного ключа сервера?
Итоги
- **TLS 1.2**: 2 RTT, поддерживал небезопасные суиты. Уязвим при RSA key exchange (нет PFS). Минимум для новых систем.
- **TLS 1.3**: 1 RTT, 0-RTT для resumed sessions. Только AEAD suites. PFS обязателен. Certificate зашифрован. HKDF для key schedule.
- **Cipher suites**: TLS 1.3 = 5 суит (все AEAD). TLS 1.2 = сотни, нужно явно отключать слабые.
- **PFS**: ephemeral DH-ключи уничтожаются после сессии. Server private key не участвует в key derivation. Защищает от 'Harvest Now, Decrypt Later'.
Связанные темы
TLS объединяет всю симметричную и асимметричную криптографию:
- PKI и сертификаты — TLS аутентификация через X.509 сертификаты. CA подписывает ключ сервера. Браузер проверяет цепочку до Root CA.
- Обмен ключами — ECDHE (X25519, P-256) - основа PFS в TLS 1.3. DH-секрет через HKDF даёт сессионные ключи.
- Потоковые шифры — ChaCha20-Poly1305 - один из двух основных AEAD в TLS 1.3. Предпочитается на мобильных устройствах без AES-NI.
Вопросы для размышления
- 0-RTT в TLS 1.3 не защищён от replay атак. Почему это допустимо для GET запросов, но не для POST? Как Cloudflare это обрабатывает?
- NSA записывала трафик до появления TLS 1.3. Поможет ли PFS против 'Harvest Now, Decrypt Later' если атакующий использует квантовый компьютер в 2030?
- mTLS требует сертификаты на клиенте. Как Kubernetes Istio автоматически выдаёт и ротирует mTLS сертификаты для микросервисов?