Компьютерные сети

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 обязателен по стандарту

Предварительные знания

  • HTTP: The Language of the Web

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 защищает прошлые сессии?
  • Почему фишинговые сайты могут иметь замочек?

Связанные уроки

  • crypto-32-tls
HTTPS и TLS

0

1

Войти