Урок 3 из 4 · 7 мин
Зашифрованный DNS: DoH и DoT
Два стандарта заворачивают DNS-запросы в шифрование. Что это на самом деле скрывает, чего всё ещё не скрывает, и как это поддерживает macOS.
Предыдущий урок описал обычный DNS-запрос как открытку: её может прочитать любой, кто держит её в руках по пути. Есть два стандарта IETF, которые кладут эту открытку в конверт: DNS over TLS (DoT, RFC 7858) и DNS over HTTPS (DoH, RFC 8484). Оба шифруют один и тот же запрос; различаются они в основном тем, как они его передают.
DNS over TLS
RFC 7858 прямо формулирует свою цель: «шифрование, обеспечиваемое TLS, устраняет возможности для подслушивания и подмены DNS-запросов на пути следования», решая проблему того, что «почти все DNS-запросы отправляются без шифрования, что делает их уязвимыми для перехвата злоумышленником». DoT использует собственный выделенный порт, 853, а не обычный порт 53. RFC объясняет почему: «эта рекомендация не использовать порт 53 для DNS over TLS призвана избежать сложностей при выборе использования или неиспользования TLS и снизить риск атак с понижением уровня защиты».
DNS over HTTPS
RFC 8484 идёт другим путём: «каждая пара запрос-ответ DNS сопоставляется с обменом по HTTP», передаваемым через тот же порт 443, который использует обычный HTTPS-трафик. RFC отмечает у этого побочное преимущество: «порт 443, используемый по умолчанию для HTTPS, и возможность смешивать трафик DoH с остальным трафиком HTTPS в одном и том же соединении могут удержать непривилегированные устройства на пути следования от вмешательства в работу DNS», поскольку выделить и заблокировать такой запрос сложнее, когда он выглядит как любой другой веб-запрос.
| DNS over TLS (DoT) | DNS over HTTPS (DoH) | |
|---|---|---|
| Порт | 853, выделен для DoT | 443, общий с обычным трафиком HTTPS |
| Как виден в сети | Как собственный, отдельный трафик (его легко заметить и, если сеть того захочет, заблокировать) | Сливается с обычным веб-сёрфингом |
Что скрывает шифрование, а что всё ещё нет
Оба стандарта не дают оператору сети или Wi-Fi-подслушивающему прочитать ваши запросы при передаче. Ни один из них не скрывает их от резолвера, которому вы их отправили. RFC 8484 прямо говорит, что DoH не меняет то, что способен увидеть сам сервер: там отмечается, что «различные способы передачи DNS-запросов и ответов действительно дают данные, которые можно использовать для сопоставления запросов», и что обычные веб-механизмы, такие как IP-адрес клиента, cookie-файлы и данные сессии TLS, означают, что «DoH не привносит новых проблем по сравнению с теми, что уже связаны с HTTPS», на стороне сервера. RFC 7858 схожим образом отмечает, что DoT «не решает другие проблемы безопасности DNS» и что «даже при зашифрованных сообщениях хорошо расположенная сторона может извлечь определённые сведения из анализа времени и размера сообщений». Короче говоря: зашифрованный DNS перемещает того, кто видит ваши запросы, к оператору выбранного вами резолвера, а не устраняет видимость полностью.
Есть и второй пробел, о котором стоит знать. Само по себе шифрование DNS-запроса не скрывает, к какому сайту вы затем подключаетесь: следующее за этим рукопожатие TLS обычно передаёт имя хоста в открытом виде. Как объясняет Cloudflare, рассказывая об индикации имени сервера (SNI), «SNI включает имя хоста в сообщение Client Hello — самый первый шаг рукопожатия TLS», отправляемый ещё до установления шифрования. Расширение Encrypted SNI (ESNI), поясняет тот же источник, «дополняет расширение SNI, шифруя его часть в сообщении Client Hello», что «не позволяет тому, кто подслушивает соединение между клиентом и сервером, увидеть, какой сертификат запрашивает клиент». Поддержка сокрытия SNI по-прежнему зависит от согласия и браузера, и сайта, и пока работает не в каждом соединении.
Как это поддерживает macOS
Apple описывает настройку DNS для Mac, iPhone и iPad, которая делает именно это: она позволяет устройству «направлять DNS-запросы устройства через зашифрованный DNS-сервер с помощью DNS over HTTPS или DNS over TLS». Она поставляется в виде конфигурационного профиля, который может ограничивать зашифрованный резолвер конкретными доменами через «дополнительные домены соответствия» или применяться только в определённых сетях с помощью «правил по требованию», которые могут учитывать, например, имя сети (SSID).
Главное
- DoT (RFC 7858) шифрует DNS с помощью TLS на выделенном порту 853; DoH (RFC 8484) шифрует его и передаёт через обычный порт HTTPS, 443, смешивая с остальным веб-трафиком.
- Оба стандарта не дают подслушивающим на пути в сети прочитать ваши запросы.
- Ни один из них не скрывает ваши запросы от резолвера, которому вы их отправили: сам RFC 8484 говорит, что DoH «не привносит новых проблем по сравнению с теми, что уже связаны с HTTPS», на стороне сервера.
- Даже при зашифрованном DNS рукопожатие TLS для самого сайта обычно раскрывает его имя хоста в открытом виде (SNI), если не используется такое расширение, как Encrypted SNI.
- macOS и iOS поддерживают зашифрованный DNS через документированный конфигурационный профиль DNS, который может задавать DoH или DoT и ограничивать их определёнными доменами или сетями.
Проверьте себя
1. Какой порт использует DNS over TLS (DoT) и почему именно выделенный?
- Порт 80, тот же, что и у HTTP
- Порт 853, выбранный отчасти для того, чтобы избежать атак с понижением уровня защиты, которые могли бы возникнуть из-за неоднозначности на порте 53 — Верно.
- Порт 25, тот же, что и у почты
- Каждый раз случайный порт
RFC 7858 выделяет DoT собственный порт, 853, объясняя, что отказ от порта 53 для этого «снижает риск атак с понижением уровня защиты».
2. Почему DNS over HTTPS (DoH) использует порт 443?
- Потому что это единственный свободный порт
- Потому что использование порта 443 совместно с обычным HTTPS-трафиком затрудняет выделение и блокировку DoH — Верно.
- Потому что порт 443 быстрее других портов
- DoH не использует порт 443
RFC 8484 отмечает, что смешивание DoH с обычным HTTPS-трафиком на порте 443 «может удержать непривилегированные устройства на пути следования от вмешательства в работу DNS».
3. Скрывают ли DoH или DoT ваши DNS-запросы от резолвера, которому вы их отправляете?
- Да, полностью
- Нет, они скрывают запросы от пути в сети, но оператор резолвера по-прежнему видит их — Верно.
- Только DoH скрывает их от резолвера
- Только DoT скрывает их от резолвера
RFC 8484 утверждает, что DoH «не привносит новых проблем по сравнению с теми, что уже связаны с HTTPS» на стороне сервера, а значит оператор резолвера по-прежнему способен видеть и сопоставлять запросы.
4. Даже при зашифрованном DNS, что обычно всё ещё раскрывает, к какому сайту вы подключаетесь?
- Пароль от Wi-Fi
- Имя хоста, передаваемое в открытом виде в сообщении Client Hello (SNI), если не используется такое расширение, как Encrypted SNI — Верно.
- Частный IP-адрес вашего Mac
- Кэш DNS-резолвера
Cloudflare объясняет, что «SNI включает имя хоста в сообщение Client Hello» ещё до начала шифрования; Encrypted SNI (ESNI) призван это скрыть, но пока распространён не повсеместно.
Примените на практике в FireAI
Примените этот урок на своём Mac.
- Глубокая проверка без расшифровки чего-либо — Получайте реальные подробности о защищённом соединении, при этом FireAI никогда не читает то, что внутри него.
- Списки угроз (по желанию) — Сверяйте свой трафик с открытыми данными об угрозах, никуда его не отправляя.
- Заблокируйте приложению доступ в интернет — целиком или только к одной компании или домену — Отрежьте именно то, что нужно, — всё приложение целиком или только одну компанию, с которой оно связывается.
Источники
- RFC 7858: Specification for DNS over Transport Layer Security (TLS)
- RFC 8484: DNS Queries over HTTPS (DoH)
- Cloudflare Learning: DNS over TLS vs. DNS over HTTPS
- Cloudflare Learning: What is SNI? / Encrypted Client Hello
- Apple Platform Deployment: DNS settings declarative configuration for Apple devices
Примените это на своём Mac
Все функции бесплатно на 17 дней, без банковской карты.