Договориться перед разговором
Рукопожатие (handshake) — обмен служебными сообщениями, которым стороны устанавливают соединение и договариваются о параметрах.
При чём тут безопасность: многие атаки бьют именно по рукопожатиям: переполняют их, перехватывают или подделывают. Разберём три главных: TCP, TLS и Wi-Fi.
Трёхэтапное рукопожатие TCP
- Клиент отправляет SYN — «хочу соединиться».
- Сервер отвечает SYN-ACK — «согласен».
- Клиент подтверждает ACK.
Только после этого идут данные. По ответам на SYN сканеры портов понимают, открыт ли порт.
SYN-флуд
Атака SYN-флуд: злоумышленник шлёт тысячи SYN и не завершает рукопожатие. Сервер держит «полуоткрытые» соединения и перестаёт принимать новых клиентов — это отказ в обслуживании.
Защита: механизм SYN cookies, фильтрация на границе сети, сервисы защиты от DDoS.
Рукопожатие TLS
Мы разбирали его в модуле 3: стороны договариваются о версии и алгоритмах, сервер предъявляет сертификат, вырабатывается общий ключ.
Атаки на этом этапе — попытки заставить стороны выбрать старую слабую версию (понижение протокола). Защита — отключить устаревшие версии TLS.
Рукопожатие Wi-Fi
В WPA2-Personal устройство и точка доступа проводят четырёхэтапное рукопожатие, подтверждая знание пароля без его передачи.
Перехватив это рукопожатие, злоумышленник может пытаться подобрать пароль офлайн. Поэтому пароль Wi-Fi должен быть длинным. WPA3 защищён от такого подбора.
Главное за урок
- TCP: SYN → SYN-ACK → ACK; незавершённые рукопожатия — основа SYN-флуда.
- TLS-рукопожатие атакуют понижением версии — отключай старые версии.
- Перехваченное рукопожатие WPA2 позволяет подбирать слабый пароль офлайн.