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.X
  5. Запись DS содержит хеш DNSKEY домена example.com, подписанный ключами домена .com.
  6. Это выполняется рекурсивно до корня, открытый ключ которого жестко запрограммирован в преобразователях.

Конечный результат: проверенная цепочка от корня через .com до example.com, заканчивающаяся исходной записью A. Обнаруживается любое вмешательство на любом этапе.

Типы и ротация ключей

DNSSEC использует два типа ключей для каждой зоны:

  • Zone-Signing Key (ZSK). Подписывает фактические записи (A, MX, TXT и т. д.). Часто меняется (от нескольких месяцев до года), поскольку он часто используется.
  • Ключ для подписи ключей (KSK). Подписывает ZSK. Ротируется редко, поскольку это опорная точка, на которую ссылается родительская зона. Для его ротации требуется согласование с регистратором обновления записи DS.

Корневой ключ KSK меняется примерно раз в пять лет. Ротация 2017 года была первой в истории и потребовала многих лет подготовки для обеспечения того, чтобы резольверы во всем мире имели новый открытый ключ. .com, .org, .net, .gov, коды большинства стран.

  • Уровень домена: Примерно 5% доменов .com имеют включенный DNSSEC по состоянию на 2026 год — медленный рост.
  • Уровень разрешения: Все основные общедоступные преобразователи (1.1.1.1, 8.8.8.8, 9.9.9.9) проверить DNSSEC. Большинство преобразователей ISP тоже. Те, которые не просто возвращают все, что получают, без проверки.
  • Уровень клиента: Большинство операционных систем доверяют проверке свой сконфигурированный преобразователь; они сами подписи не проверяют. Некоторые приложения и реализации DNS-over-HTTPS выполняют проверку на стороне клиента.
  • Почему внедрение происходит медленно

    Несколько препятствий:

    • Операционная сложность. Ключи должны генерироваться, подписи обновляются при изменении записей, регулярно обновляются. Неправильная конфигурация полностью нарушает работу домена (каждый преобразователь возвращает SERVFAIL).
    • LБольшие ответы DNS. Подписанные ответы в несколько раз больше, чем беззнаковые. Старая инфраструктура DNS предполагала, что ответы будут помещаться в отдельные пакеты UDP; подписанные ответы часто этого не делают, требуя резервного TCP.
    • LОграниченная выгода для конечного пользователя. 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 over HTTPS (DoH) шифрует DNS-запросы при передаче. Они дополняют друг друга, и их лучше всего использовать вместе.
    Объяснение DNSSEC: добавление криптографических подписей в поиск DNS