Чем обеспечивается безопасность HTTPS
Что проверяют
Понимаете ли вы, от чего именно защищает HTTPS и от чего нет. Для тестировщика это ещё вопрос о том, что проверять руками: сертификат, редиректы, заголовки. Следом обычно просят рассказать про рукопожатие или о том, что увидит пользователь при просроченном сертификате.
Как отвечать
HTTPS это обычный HTTP поверх TLS. Сам SSL давно запрещён, актуальные версии TLS 1.2 и 1.3. TLS даёт три свойства:
- конфиденциальность: данные шифруются симметричным ключом, о котором клиент и сервер договариваются при рукопожатии через ECDHE. Даже если ключ сервера утечёт позже, записанный раньше трафик не расшифровать;
- целостность: шифры AEAD, например AES-GCM и ChaCha20-Poly1305, вместе с шифрованием проверяют, что данные не подменили по дороге;
- аутентификация сервера: сервер предъявляет сертификат, подписанный удостоверяющим центром. Браузер проверяет цепочку до доверенного корня, срок действия и совпадение домена с полем SAN.
Чего HTTPS не гарантирует: что сайт честный (сертификат на фишинговый домен выпускается бесплатно за минуту), что сервер надёжно хранит данные и что скрыт сам домен, он виден в SNI.
Практическая часть для QA:
- сертификат: срок, цепочка, список доменов, поведение браузера и клиента при просроченном или самоподписанном;
- редирект:
http://отвечает 301 наhttps://, на странице нет смешанного контента; - заголовки:
Strict-Transport-Security(HSTS), флагSecureна cookie; - инструменты: просмотр сертификата в браузере,
curl -v,openssl s_client -connect host:443, SSL Labs для публичного сервера.
Где спотыкаются
Говорят, что HTTPS работает на SSL. Название осталось в быту, но SSL 3.0 запрещён ещё в 2015 году, и называть его действующим протоколом ошибка.
Считают, что замок в адресной строке означает надёжный сайт. Он означает только защищённое соединение с владельцем сертификата на этот домен.
Думают, что асимметричное шифрование применяется ко всем данным. Оно участвует только в рукопожатии, а поток шифруется симметрично: так на порядки быстрее.