Сети и протоколы
TLS 1.3: собери и сломай закалённый эндпоинт
Читать о handshake — не то же самое, что наблюдать его на проводе и доказать, что он безопасен. Подними реальный эндпоинт TLS 1.3, захвати каждый режим handshake, намеренно попробуй replay 0-RTT и покажи, что твои защиты держат — с доказательствами на уровне пакетов и логов на каждом шаге.
Преврати ментальную модель юнита в операционный навык: отдавай TLS 1.3 с корректной цепочкой и ротируемыми тикетами, наблюдай холодный, возобновлённый и 0-RTT handshake в захвате, продемонстрируй, что неидемпотентный replay 0-RTT отклоняется, и выведи метрики, на которые ты алертил бы в продакшене.
Подними закалённый эндпоинт TLS 1.3 (Nginx, Caddy или сервер на Go/Node), захвати и разбери холодный, возобновлённый и 0-RTT handshake, докажи, что переигранная мутация 0-RTT сдержана, и выведи метрики здоровья TLS — подтверждая каждое утверждение захватом, строкой лога или метрикой, а не словами.
- Расшифрованный захват handshake (или аннотированные скриншоты) для всех трёх режимов — холодный 1-RTT, тёплое возобновление по PSK и 0-RTT — с чётко выделенным отличительным сообщением в каждом.
- Доказательство, что идемпотентный 0-RTT GET принят, а изменяющий 0-RTT POST возвращает 425 Too Early, и что переигранный 0-RTT-запрос отклонён слоем защиты от replay — показано логами или захватами, а не описано.
- Сравнение до/после ротации STEK, показывающее, что коэффициент возобновления держится через ротацию, потому что старый ключ был сохранён для расшифровки.
- Короткий разбор: какой режим handshake использовал каждый запрос и почему, откуда берётся forward secrecy и на какую из четырёх метрик ты повесил бы алерт и при каком пороге.
- Добавь Encrypted ClientHello (ECH) через front-end, публикующий ECH-ключ в DNS-записи HTTPS/SVCB, и покажи в захвате, что внутренний SNI больше не виден наблюдателю на пути.
- Включи гибридный пост-квантовый обмен ключами (X25519MLKEM768) и захвати увеличенный ClientHello; покажи, что он вынуждает сегментацию TCP, и подтверди, что старый сервер откатывается через HelloRetryRequest.
- Воспроизведи инцидент со сломанной цепочкой: настрой сервер слать только leaf, захвати ошибку openssl verify 21, затем исправь добавлением intermediate и перепроверь return code 0.
- Напиши однастраничный on-call runbook по TLS: триаж по четырём метрикам, однострочники openssl для проверки цепочки и возобновления, процедура ротации STEK и чеклист политики маршрутов для 0-RTT.
Это цикл, который ты будешь запускать на каждом реальном развёртывании TLS: отдавай 1.3 с полной цепочкой, наблюдай, как холодный, возобновлённый и 0-RTT handshake пересекают провод, и назови, что делает каждый дешевле, докажи, что твои защиты от replay в 0-RTT действительно отклоняют replay, ротируй STEK без поломки возобновления и следи за четырьмя метриками, которые сигналят о проблемах первыми. Сделав это однажды на собственном эндпоинте, ты превращаешь handshake из схемы в то, что можешь захватить, сломать и защитить.