root.comexample.comA recordchain of trust verified by signatures

DNSSEC

11 хв. читанняКриптографія

DNS, систему, яка перетворює такі імена, як example.com, на IP-адреси, було розроблено в 1983 році без автентифікації. Будь-яка відповідь, яка нібито надійшла з авторитетного сервера домену, приймалася. DNSSEC виправляє це, додаючи криптографічні підписи до кожного запису DNS, дозволяючи клієнтам перевірити, чи відповідь не була підроблена. Прийняття відбувається повільно, але там, де його розгортають, воно працює.

Повний текст статті подано англійською мовою нижче.

DNSSEC (Розширення безпеки системи доменних імен) додає криптографічні підписи до записів DNS, дозволяючи клієнтам перевіряти автентичність і цілісність відповідей DNS. Без DNSSEC мережевий зловмисник може підробити DNS-відповіді та перенаправити трафік на контрольовані зловмисником сервери — це основа викрадення DNS. За допомогою DNSSEC підроблені відповіді не проходять перевірку підпису та відхиляються.

Що додає DNSSEC

Чотири нові типи записів:

  • RRSIG — підпис над набором записів. Кожен підписаний запис має відповідний RRSIG.
  • DNSKEY — відкритий ключ, який використовується для перевірки підписів RRSIG для зони.
  • DS (підписувач делегування) — знаходиться в батьківській зоні, вказуючи на DNSKEY у дочірньому. Встановлює ланцюжок довіри.
  • NSEC/NSEC3 — доводить, що в зоні НЕ існує імені. Необхідно, тому що «це ім’я не існує» також є відповіддю, яку потрібно автентифікувати.

Як працює перевірка

Щоб перевірити IP-адресу example.com:

  1. Resolver запитує example.com для запису A. Отримує IP-адресу та підпис RRSIG.
  2. Resolver запитує example.com для його DNSKEY (ключ підпису зони, ZSK).
  3. Resolver перевіряє RRSIG за допомогою ZSK.
  4. Щоб перевірити сам DNSKEY, резолвер запитує батьківську зону (.com) для запису DS example.com.
  5. Запис DS містить хеш DNSKEY example.com, підписаний ключами .com.
  6. Це рекурсує до кореня, відкритий ключ якого жорстко закодовано в резольверах.

Кінцевий результат: перевірений ланцюжок від кореня через .com до example.com, що закінчується на початковому A запис. Виявляється будь-яке втручання на будь-якому кроці.

Типи та ротація ключів

DNSSEC використовує два типи ключів для кожної зони:

  • Zone-Signing Key (ZSK). Підписує фактичні записи (A, MX, TXT тощо). Часто змінюється (від місяців до року), оскільки він часто використовується.
  • Ключ підпису ключа (KSK). Підписує ZSK. Повертається рідко, оскільки це опорна точка, на яку посилається батьківська зона. Його ротація потребує узгодження з реєстратором для оновлення запису DS.

Кореневий KSK ротується приблизно раз на п’ять років. Ротація 2017 року була першою в історії та вимагала років підготовки, щоб гарантувати, що резолвери в усьому світі мали новий відкритий ключ.

Прийняття

DNSSEC Прийняття відбувається нерівномірно:

  • TLD рівень: Більшість основних доменів верхнього рівня підписані. .com, .org, .net, .gov, більшість кодів країн.
  • Рівень домену: Станом на 2026 рік приблизно 5% доменів .com мають DNSSEC увімкнено — повільне зростання.
  • Рівень розпізнавання: Усі основні загальнодоступні резолвери (1.1.1.1, 8.8.8.8, 9.9.9.9) перевірити DNSSEC. Більшість резолверів провайдерів також роблять це. Ті, які не просто повертають все, що отримують без перевірки.
  • Рівень клієнта: Більшість операційних систем довіряють перевірці свого налаштованого резолвера; самі підписи не перевіряють. Кілька програм і реалізацій DNS-over-HTTPS виконують перевірку на стороні клієнта.

Чому впровадження відбувається повільно

Кілька перешкод:

  • Складність операцій. Ключі повинні бути згенеровані, підписи повторно згенеровані, коли записи змінюються, згортання регулярно. Неправильна конфігурація повністю порушує домен (кожен резолвер повертає SERVFAIL).
  • Більші відповіді DNS. Підписані відповіді у кілька разів більші за непідписані. Стара інфраструктура DNS передбачала, що відповіді міститимуться в окремих пакетах UDP; підписані відповіді часто цього не роблять, тому потрібен резервний протокол TCP.
  • Обмежена перевага для кінцевого користувача. DNSSEC захищає від підробки DNS-рівня, але не від зловмисного IP-адреси призначення. Більшість користувачів не помічають, чи є DNSSEC, чи його немає.
  • Кращі альтернативи для деяких випадків використання. Зашифрований DNS (DoH, DoT, DNSCrypt) захищає запити DNS від несанкціонованого втручання, що бореться з тією самою загрозою з меншими витратами складність.

DNSSEC проти зашифрованого DNS

Ці дві проблеми вирішують частково збігаються, але різні проблеми:

  • DNSSEC доводить, що відповідь автентична та непідроблена. Сам запит усе ще видимий у мережі.
  • Зашифрований DNS приховує запит і відповідь від мережі, але не підтверджує автентичність відповіді — він просто довіряє налаштованому резолверу.

Найнадійніше налаштування: зашифрований DNS до резолвера, який перевіряє DNSSEC. Приховати запит під час передачі, перевірити відповідь криптографічно. Cloudflare 1.1.1.1 і Google 8.8.8.8 через DoH сьогодні пропонують обидва.

DANE: що дає змогу DNSSEC

Одна з низхідних технологій DNSSEC розблоковує DANE (DNS-автентифікація іменованих об’єктів). DANE публікує відбитки сертифікатів TLS у DNS, захищені DNSSEC. Браузер може перевірити сертифікат веб-сайту, надсилаючи запит DNS замість того, щоб покладатися виключно на центри сертифікації. Застосування обмежене (здебільшого використовується для SMTP, а не HTTPS, через політику реалізації браузера).

Як перевірити, чи домен підписано DNSSEC

Перевірка командного рядка: dig +dnssec example.com — відповідь містить підписи, якщо DNSSEC увімкнено. Онлайн-інструменти, такі як DNSSEC-Analyzer (Verisign Labs), візуально показують повний ланцюжок довіри. Розширення веб-переглядача можуть позначати статус перевірки DNSSEC для кожної сторінки.

Часті запитання

Чи потрібен DNSSEC моєму домену?
Не строго. Захист, який він забезпечує, є значущим, але частковим. Для більшості персональних сайтів експлуатаційні витрати на запуск DNSSEC переважують переваги. Для сайтів, які обробляють фінансові транзакції, державні послуги або цільові об’єкти високої вартості, DNSSEC і DANE додають вартий захисний рівень.
Чи DNSSEC запобігатиме всім DNS-атакам?
Ні. DNSSEC запобігає підробці відповіді DNS на дроті, але не запобігає: зловмисному авторитетному серверу, який брехне з дійсними підписами, захопленню облікового запису реєстратора (зловмисник публікує нові ключі) або атакам на IP-адресу призначення після законної розв’язки DNS. Це шар, а не повне рішення.
Чому мій браузер не перевіряє DNSSEC?
Браузери делегують перевірку DNSSEC налаштованому резолверу. Якщо резолвер перевіряє та відхиляє неправильні відповіді, браузер ніколи їх не бачить. Були пропозиції щодо перевірки на стороні браузера, але вони не були прийняті. Використовуйте резолвер перевірки (1.1.1.1, 9.9.9.9), і ви отримаєте переваги DNSSEC.
Що станеться, якщо в домені, підписаному DNSSEC, виникне проблема?
Перевірка не вдається, і більшість резолверів повертає SERVFAIL. Здається, домен недоступний. Це трапилося під час виробництва (збій HBO Max у 2021 році стався через неправильну конфігурацію DNSSEC). Компроміс: коли DNSSEC працює, це безпечно; коли ламається, то голосно ламається.
Чи DNSSEC те саме, що DNS через HTTPS?
Ні. DNSSEC додає підписи до відповідей DNS для перевірки автентичності. DNS через HTTPS (DoH) шифрує DNS-запити під час передачі. Вони доповнюють один одного і краще використовувати разом.
Пояснення DNSSEC: додавання криптографічних підписів до пошуків DNS