Сети и протоколы
Что делает TLS и зачем он нужен
TCP согласовал номера последовательности, DNS разрешил имя в IP. Теперь браузеру и серверу нужно договориться о шифровании прежде, чем передавать что-либо ценное. Это согласование и есть TLS-рукопожатие — разница между открыткой и запечатанным конвертом.
Что делает TLS одним предложением
TLS (Transport Layer Security) оборачивает каждый байт данных приложения в симметрично зашифрованный конверт, который никто в сети не может прочитать. Конверт согласовывается с помощью асимметричной криптографии в ходе рукопожатия; после согласования симметричный ключ обрабатывает все данные на полной скорости.
Простой HTTP передаёт каждое слово, которое вы вводите, в открытом виде. Ваш пароль, баланс банка, читаемая статья — всё это видно любому в той же кафе-сети wifi, вашему провайдеру или корпоративному прокси. TLS превращает тот же провод в закрытый туннель.
Метафора: запечатанный конверт
Антон хочет отправить Диме сообщение, но боится, что почтальон его прочитает. Он кладёт сообщение в коробку, запирает печатью и отправляет. Только у Димы есть подходящий ключ. Перед отправкой обе стороны договариваются о печати и ключе: Антон предлагает замки, которые знает, Дима выбирает один и присылает свою половину ключа плюс ID-карту от Кары — доверенного издателя. Они объединяют половины в общую печать. TLS 1.3 сделал встречу короче, позволив Антону прислать свою половину в первом сообщении.
Три гарантии TLS
- Конфиденциальность — никто в сети не может прочитать данные.
- Целостность — никто не может незаметно изменить данные.
- Аутентификация — сервер доказывает, что владеет доменом (через сертификат от доверенного CA).
- TLS 1.2 холодное рукопожатие
- 2 RTT
- TLS 1.3 холодное рукопожатие
- 1 RTT
- TLS 1.3 возобновление (PSK)
- 1 RTT (без проверки сертификата)
- TLS 1.3 0-RTT
- 0 RTT для запроса
- Доля HTTPS в веб-трафике (2025)
- ≥95%
- Браузер показывает замок когда
- TLS-рукопожатие успешно
Один сценарий от начала до конца
Вы набираете https://. Браузер уже завершил DNS (знает IP) и TCP (соединение открыто). Теперь он строит TLS-печать. После её построения каждый HTTP-запрос и ответ едет внутри неё. Браузер показывает замок.
Замок означает: никто в сети не может прочитать то, что проходит между вами и этим хостом. Это не означает, что сайт заслуживает доверия — мошеннический сайт может иметь валидный замок. Это не означает, что устройство в безопасности. Гарантируется только канал.
Что на самом деле защищает TLS?
Иконка замка в браузере означает...
Расставьте шаги TLS-рукопожатия по порядку (упрощённо):
- 1 Антон отправляет список поддерживаемых шифров и свою половину ключа
- 2 Дима выбирает шифр, отправляет свою половину ключа и сертификат
- 3 Антон проверяет сертификат против доверенных CA
- 4 Обе стороны объединяют половины в общий секрет
- 5 Каждое сообщение после этого момента зашифровано
Заполните пропуск: TLS превращает ваше соединение в запечатанный _______, который может открыть только сайт.
Почему это работает
Почему TLS 1.3 сократил рукопожатие до одного RTT. TLS 1.2 требовал двух round-trip: один для согласования параметров шифра, второй для обмена ключевым материалом. TLS 1.3 поместил ключевой материал клиента в самое первое сообщение — ClientHello — чтобы сервер мог вычислить общий секрет и начать шифрование в том же проходе. На межконтинентальных линках это экономит полный RTT (80–300 мс) при каждом холодном соединении.
- 01Одним предложением: что произошло бы, если бы вы посетили банковский сайт без TLS?
- 02Какие три гарантии даёт TLS, и какую из них обеспечивает сертификат?
- 03Почему TLS 1.2 требовал двух RTT, а TLS 1.3 — только одного?
TLS оборачивает каждый байт данных в зашифрованный конверт, который все в сети видят проходящим, но только отправитель и получатель могут прочитать. Он даёт три гарантии: конфиденциальность (шифрование), целостность (MAC/хеш транскрипта) и аутентификацию (сертификат сервера подтверждает владение доменом перед доверенным CA). До TLS 1.3 построение этого канала требовало двух round-trip; TLS 1.3 сократил это до одного, поместив ключевой материал клиента в открывающее сообщение. Замок означает только, что канал запечатан — не то, что сайт заслуживает доверия или устройство в безопасности.
встречается в47
- Federation и lookahead: батчинг за пределами DataLoadermiddle
- Senior GraphQL API: scheduling-контракт, изоляция арендаторов, наблюдаемостьsenior
- Инвалидация, dirty-биты и containmiddle
- Слои композитора: продвижение, перекрытие и память GPUmiddle
- Observability в проде: LoAF, INP и полная поверхность атакиsenior
- Hidden classes, деревья переходов и расположение в памятиmiddle
- V8 в production: Isolates, сжатие указателей и реальные аварииsenior
- Что такое воркеры и зачем они нужныjunior
- Механика web workers: dedicated, shared и OffscreenCanvasmiddle
- Structured clone и transferablesmiddle
- SharedArrayBuffer, Atomics и cross-origin isolationsenior
- Пулы воркеров, Comlink и наблюдаемость в продакшенеsenior
- Восемь слоёв трассировки: от service worker до второй навигацииmiddle
- Пять канонических поломок: где производство стабильно ломаетсяsenior
- Метод трёх треков: чтение трасс и построение системы мониторингаsenior
- Лок и single-flight: ограничение параллельных rebuildmiddle
- Stale-while-revalidate и CDN request coalescingmiddle
- Детектирование stampede и дизайн TTL для продакшенаmiddle
- Метастабильный сбой, fencing-токены и production-постмортемыsenior
- Что такое отношение: таблицы, строки, ключи и ограниченияjunior
- Ограничения, ключи и типы данных Postgresmiddle
- JSONB, массивы и когда side table побеждаетmiddle
- Целостность схемы: deferral, версионирование и сбои в продакшнеsenior
- Где происходит data fetching — и почему это решает LCPjunior
- React Server Components и Suspense streamingmiddle
- Senior internals: RSC payload, слои кэша и production паденияsenior
- Что такое OpenTelemetry: API, SDK, Collector, OTLPjunior
- Сигналы OTel, Semantic Conventions и проводной формат OTLPmiddle
- Collector OTel: receivers, processors, exporters и паттерны развёртыванияmiddle
- Vendor-нейтральность, eBPF-инструментирование, Operator и OTel в браузере и serverlesssenior
- Эксплуатация OTel Collector: надёжность, version skew, режимы отказа и управлениеsenior
- Что такое trace propagation и почему сломанная propagation хуже отсутствия трейсовjunior
- traceparent и tracestate: полный формат W3C-заголовкаmiddle
- Baggage и async-границы: перенос контекста через очереди и callback''''иmiddle
- Async context на разных языках, service mesh, миграция B3 и безопасностьsenior
- Production-сбои propagation, span links и платформенный дизайнsenior
- Debugging-воронка: SLO → RED → trace → profilejunior
- Архитектура OTel: один SDK, четыре сигнала, один wire-форматmiddle
- Петля инцидента: от пейджера до постмортема до предотвращенияmiddle
- Масштаб, безопасность и ROI наблюдаемых системsenior
- At-most-once, at-least-once, exactly-once: три контракта доставкиjunior
- Consumer-side dedup: самый дешёвый путь к exactly-once processingmiddle
- Exactly-once в production: impossibility-доказательство, гибридные паттерны и реальные инцидентыsenior
- Что такое OAuth и почему пароли — не ответjunior
- Authorization code flow с PKCEmiddle
- Sender-constrained токены: DPoP и mTLSsenior
- OAuth в production: audience атаки, observability и реальные провалыsenior