Компьютерные сети
HTTPS и TLS
Цели урока
- Понимать три гарантии TLS: confidentiality, integrity, authentication
- Прочитать handshake TLS 1.2 vs TLS 1.3 и видеть один RTT экономии у 1.3
- Различать симметричное (AES, ChaCha20) и асимметричное (RSA, ECDHE) шифрование, и зачем оба
- Понимать роль X.509-сертификата, CA, цепочки доверия и SNI
- Использовать openssl s_client для дебага TLS-проблем
Каждый раз, когда вы вводите пароль или номер карты, ваши данные проходят через десятки роутеров. Без TLS любой из них мог бы подсмотреть. Замочек в браузере - это математическая гарантия, что ваши секреты защищены.
- **Обязательно для SEO:** Google ранжирует HTTPS-сайты выше
- **Требование браузеров:** Chrome помечает HTTP как «Not Secure»
- **PCI DSS:** для приёма платежей HTTPS обязателен по стандарту
Предварительные знания
TLS Handshake
**TLS** (Transport Layer Security) - протокол шифрования между HTTP и TCP. HTTPS = HTTP поверх TLS. Перед передачей данных клиент и сервер выполняют **handshake** - договариваются о параметрах шифрования и обмениваются ключами.
**TLS 1.3** сократил handshake до 1-RTT (один round-trip). TLS 1.2 требовал 2-RTT. Для повторных соединений есть **0-RTT** - данные отправляются вместе с ClientHello (но есть риски replay-атак).
**Почему не SSL?** SSL - устаревшее название (SSL 3.0 → TLS 1.0). Все версии SSL и TLS 1.0/1.1 уязвимы. Используйте только TLS 1.2+ (лучше 1.3). «SSL-сертификат» - маркетинговый термин, реально это TLS-сертификат.
Сколько round-trip (RTT) занимает TLS 1.3 handshake?
Сертификаты
**Сертификат** - цифровой документ, подтверждающий владение доменом. Содержит публичный ключ сервера, имя домена, срок действия и подпись удостоверяющего центра (CA). Браузер проверяет сертификат перед установкой соединения.
**Wildcard-сертификат** (*.example.com) покрывает все поддомены первого уровня: api.example.com, www.example.com. Но НЕ покрывает a.b.example.com. Для этого нужен отдельный сертификат или SAN.
Что хранится в сертификате сервера?
Удостоверяющие центры (CA)
**CA** (Certificate Authority) - организация, выдающая сертификаты. Браузеры доверяют списку root CA (примерно 100-150 штук). CA подписывает сертификат своим приватным ключом. Браузер проверяет подпись публичным ключом CA.
**Let's Encrypt** - бесплатный автоматизированный CA. Выдаёт Domain Validation (DV) сертификаты. Для проверки владения используется ACME-протокол: положить файл на сервер или создать DNS-запись.
Почему браузер доверяет сертификату example.com?
Симметричное и асимметричное шифрование
TLS использует **оба типа** шифрования. **Асимметричное** (RSA, ECDH) - для обмена ключами (медленное, но безопасный обмен). **Симметричное** (AES, ChaCha20) - для шифрования данных (быстрое). Это **гибридная криптосистема**.
**Forward Secrecy (PFS):** ECDHE генерирует новый ключ для каждой сессии. Даже если приватный ключ сервера украдут потом, прошлые записанные сессии не расшифровать - эфемерные ключи уже удалены.
Для чего в TLS используется асимметричное шифрование?
HTTPS в действии
**HTTPS** = HTTP + TLS. Работает на порту 443. Обеспечивает: **конфиденциальность** (шифрование), **целостность** (данные не изменены), **аутентификацию** (это точно нужный сервер). Без HTTPS данные видны всем в сети.
**HSTS** (HTTP Strict Transport Security) - заголовок, требующий HTTPS. `Strict-Transport-Security: max-age=31536000; includeSubDomains`. Браузер запоминает и не даст зайти по HTTP даже случайно.
Замочек в браузере означает, что сайт безопасен
Замочек означает только шифрование соединения, не безопасность сайта
Фишинговые сайты тоже получают сертификаты (Let's Encrypt выдаёт всем). Замочек ≠ честный сайт. Он означает только: данные между вами и ЭТИМ сервером зашифрованы. Проверяйте домен!
Что НЕ защищает HTTPS?
Ключевые идеи
- **TLS** шифрует канал; TLS 1.3 = 1-RTT handshake
- **Сертификат** связывает публичный ключ с доменом; подписан CA
- **Гибридное шифрование:** ECDH для обмена ключом, AES для данных
- **HTTPS** = конфиденциальность + целостность + аутентификация
Связанные темы
TLS - основа безопасности в интернете:
- HTTP/2 и HTTP/3 — HTTP/2 требует TLS; HTTP/3 встраивает шифрование в QUIC
- Cookies — Secure-флаг требует HTTPS
- VPN — TLS используется в OpenVPN; похожие принципы
Вопросы для размышления
- Почему самоподписанные сертификаты вызывают предупреждение?
- Как Forward Secrecy защищает прошлые сессии?
- Почему фишинговые сайты могут иметь замочек?