Как TLS защищает от MITM и где защита ломается
Вопрос
Как TLS защищает от атаки «человек посередине»? В каких случаях эта защита не срабатывает?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Атакующий не может подписать рукопожатие без закрытого ключа сертификата
Свой сертификат на чужой домен не пройдёт проверку цепочки до доверенного корня
Ломается, если в систему добавлен чужой корневой CA (корпоративные прокси, вредоносы)
Первый HTTP-запрос без HSTS можно перехватить (SSL stripping)
Клиент, отключивший проверку сертификата (rejectUnauthorized: false), беззащитен
Что могут спросить следом
- Как корпоративные прокси инспектируют HTTPS?
- Что такое certificate pinning и почему от него отходят в вебе?
Разбор
Посредник может перехватить пакеты, но чтобы выдать себя за сервер, ему нужно подписать рукопожатие закрытым ключом, которого у него нет. Если он подсунет свой сертификат, браузер не построит цепочку до доверенного корня или увидит несовпадение домена и покажет ошибку. Защита ломается в нескольких случаях. Если на устройство поставили чужой корневой сертификат, как делают корпоративные прокси для инспекции трафика, посредник выпускает сертификаты на лету и им доверяют. Если сайт без HSTS, первый открытый HTTP-запрос можно перехватить и не пустить пользователя на HTTPS. И если клиентский код отключил проверку сертификатов, например rejectUnauthorized: false в Node, защиты нет совсем. Для мобильных приложений иногда делают pinning, но в браузерах от него отказались из-за риска заблокировать сайт.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.