Урок 3 з 4 · 7 хв
Шифрований DNS: DoH і DoT
Два стандарти загортають DNS-пошуки в шифрування. Що це насправді приховує, чого досі не приховує, і як це підтримує macOS.
Попереднє заняття описало звичайний DNS-пошук як листівку: читабельну для будь-кого, хто обробляє її дорогою. Існує два стандарти IETF, щоб покласти цю листівку в конверт: DNS через TLS (DoT, RFC 7858) і DNS через HTTPS (DoH, RFC 8484). Обидва шифрують той самий пошук; вони переважно різняться тим, як його переносять.
DNS через TLS
RFC 7858 прямо заявляє свою мету: «шифрування, надане TLS, усуває можливості для підслуховування та втручання в DNS-запити на шляху», вирішуючи те, що «майже всі DNS-запити надсилаються незашифрованими, що робить їх вразливими до підслуховування зловмисником». DoT використовує власний виділений порт, 853, а не звичайний порт 53. RFC пояснює чому: «ця рекомендація проти використання порту 53 для DNS через TLS покликана уникнути ускладнень при виборі використання чи невикористання TLS і зменшити ризик атак пониження версії».
DNS через HTTPS
RFC 8484 обирає інший шлях: «кожна пара DNS-запит-відповідь відображається в HTTP-обмін», що переноситься через той самий порт 443, який використовує звичайний трафік HTTPS. RFC зазначає, що це має побічну вигоду: «типовий порт HTTPS 443 і можливість змішувати трафік DoH з іншим трафіком HTTPS у тому самому з’єднанні можуть стримувати непривілейовані пристрої на шляху від втручання в операції DNS», бо пошук важче виокремити й заблокувати, коли він виглядає як будь-який інший вебзапит.
| DNS через TLS (DoT) | DNS через 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, шифруючи частину SNI в Client Hello», що «заважає будь-кому, хто підслуховує між клієнтом і сервером, бачити, який сертифікат запитує клієнт». Підтримка приховування SNI досі залежить від того, чи погоджуються на це і браузер, і сайт, і поки що працює не в кожному з’єднанні.
Як це підтримує macOS
Apple документує налаштування DNS для Mac, iPhone та iPad, що робить саме це: воно дозволяє пристрою «спрямовувати DNS-запити пристрою через зашифрований DNS-сервер за допомогою DNS через HTTPS чи DNS через 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 через TLS (DoT), і чому виділений?
- Порт 80, той самий, що й HTTP
- Порт 853, обраний частково, щоб уникнути атак пониження версії, які могли б виникнути через неоднозначність на порту 53 — Правильно.
- Порт 25, той самий, що й пошта
- Кожного разу випадковий порт
RFC 7858 призначає DoT власний порт, 853, пояснюючи, що уникнення порту 53 для нього «зменшує ризик атак пониження версії».
2. Чому DNS через 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 TLS (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 днів, без банківської картки.