DNSSEC: аутентификация ответов DNS
Узнайте, как DNSSEC использует цифровые подписи для защиты DNS от подмены и отравления кэша
«DNSSEC: аутентификация ответов DNS» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Отравление кэша DNS: атака Каминского
В 2008 году исследователь Дэн Каминский сообщил о критической атаке на резолверы DNS. Атака использовала небольшое 16-разрядное поле идентификатора транзакции в ответах DNS. Если завалить резолвер поддельными ответами со случайными идентификаторами транзакций, атакующий мог с некоторой статистической вероятностью подобрать правильный идентификатор до прихода настоящего ответа. Отравленный кэш перенаправляет всех пользователей этого резолвера на серверы под управлением атакующего на протяжении нескольких недель, пока не истечёт срок действия кэша.
Что DNSSEC добавляет к DNS
DNSSEC (расширения безопасности DNS) добавляет к ответам DNS криптографическую аутентификацию. Каждый набор записей DNS в зоне, подписанной DNSSEC, сопровождается цифровой подписью. Резолверы, выполняющие проверку, проверяют эти подписи перед принятием записей. Поддельный или изменённый ответ будет иметь недействительную подпись и будет отклонён. DNSSEC защищает от отравления кэша и подделки ответов, но не шифрует запросы DNS.
Ключ подписи зоны и ключ подписи ключей
DNSSEC использует иерархию из двух ключей для каждой зоны. Ключ подписи зоны (ZSK) используется для повседневной подписи отдельных наборов записей DNS. Ключ подписи ключей (KSK) подписывает только набор записей DNSKEY, содержащий открытые ключи ZSK и KSK. ZSK можно часто менять, например ежемесячно, тогда как KSK меняется реже, например ежегодно, поскольку хеш KSK необходимо зарегистрировать в родительской зоне, а ротация этого ключа требует сложных операционных процедур.
RRSIG: подписи ресурсных записей
Каждый подписанный набор записей DNS, называемый набором ресурсных записей, имеет соответствующую запись RRSIG, содержащую криптографическую подпись этого набора. Когда резолвер запрашивает запись DNS, ответ включает и саму запись, и её RRSIG. Резолвер проверяет RRSIG с помощью открытого ключа зоны. Подпись охватывает содержимое записи, её тип, класс и срок действия, предотвращая как изменение записей, так и повторное использование старых действительных подписей.
Записи DS: связь родительской и дочерней зон
Цепочка доверия в DNSSEC строится с помощью записей DS, то есть записей подписи делегирования. Когда зона делегирует полномочия дочерней зоне, родительская зона публикует запись DS, содержащую хеш открытого ключа KSK дочерней зоны. Резолвер, доверяющий родительской зоне, может проверить, что хеш KSK дочерней зоны совпадает с записью DS, установив доверие к подписям дочерней зоны. Эта цепочка простирается от корневой зоны DNS через домены верхнего уровня до отдельных доменных зон.
Запись DNSKEY: публикация открытого ключа зоны
Каждая зона, подписанная DNSSEC, публикует свои открытые ключи подписи в записях DNSKEY. Обычно публикуются две записи DNSKEY: одна для ZSK и одна для KSK. Хеш открытого ключа KSK регистрируется как запись DS в родительской зоне, связывая доверие к зоне с её родительской зоной. Хеш KSK корневой зоны заранее записан в резолверах, выполняющих проверку, как высший якорь доверия, называемый якорем доверия корневой зоны.
Цепочка доверия от корня до конечной зоны
Проверка DNSSEC начинается с корневой зоны, якорь доверия KSK которой заранее записан в резолверах. DNSKEY корневой зоны используется для проверки её RRSIG, которая подтверждает подлинность записей DS для доменов верхнего уровня, таких как .com. DNSKEY зоны .com проверяет её RRSIG для записей DS отдельных доменов. Эта цепочка криптографических проверок простирается от корня до запрошенного домена, гарантируя аутентичность каждого звена.
Проверка DNSSEC в резолверах
Получив ответ, резолвер, выполняющий проверку DNSSEC, проверяет всю цепочку доверия. Он получает записи DNSKEY, проверяет подписи RRSIG, прослеживает записи DS до корневого якоря и проверяет сроки действия подписей. Если проверка не проходит, резолвер возвращает ошибку SERVFAIL, а не потенциально поддельные записи. Большинство крупных общедоступных резолверов, включая резолверы Cloudflare по адресу 1.1.1.1 и Google по адресу 8.8.8.8, выполняют проверку DNSSEC.
Трудности внедрения DNSSEC
Внедрение DNSSEC идёт медленно, несмотря на преимущества этой технологии для безопасности. Ротация ключей требует координации между операторами зон и реестрами родительских зон. Ошибка при ротации KSK может сделать всю зону недоступной. Ротация KSK корневой зоны ICANN в 2019 году потребовала многолетней подготовки. Из-за подписей размер зоны значительно увеличивается. Операторы должны реализовать автоматическую ротацию ключей и мониторинг. Эти операционные сложности привели к тому, что многие небольшие операторы доменов отказались от DNSSEC.
DNSSEC не шифрует трафик DNS
Распространённое заблуждение состоит в том, что DNSSEC обеспечивает конфиденциальность запросов DNS. Это не так. DNSSEC только аутентифицирует ответы; запросы и ответы по-прежнему передаются в виде открытых пакетов UDP через порт 53. Любой, кто отслеживает сеть, может видеть каждое запрошенное доменное имя. DNS через TLS и DNS через HTTPS обеспечивают конфиденциальность запросов, шифруя трафик DNS. DNSSEC и эти протоколы дополняют друг друга: один обеспечивает аутентичность, а другие — конфиденциальность.
DNSSEC в реальном мире
По состоянию на 2024 год примерно 90 процентов корневой зоны DNS и крупных доменов верхнего уровня подписаны с помощью DNSSEC. Однако подписано лишь около 20–30 процентов отдельных доменных имён. Поддержка проверки DNSSEC браузерами и приложениями неоднородна. Преимущества DNSSEC для безопасности особенно велики в сочетании с DANE (аутентификация именованных сущностей на основе DNS), который использует DNSSEC для публикации отпечатков сертификатов TLS и позволяет клиентам проверять сертификаты, не полагаясь только на центры сертификации.
Цепочка доверия DNSSEC
Как резолвер, выполняющий проверку DNSSEC, устанавливает доверие к записям DNS домена с нуля?
DNSSEC: основные выводы
DNSSEC добавляет к ответам DNS криптографические подписи, предотвращая отравление кэша и подделку ответов. ZSK подписывают наборы записей, KSK подписывают записи DNSKEY, а записи DS связывают доверие между родительскими и дочерними зонами. Проверка начинается с заранее записанного якоря доверия корневой зоны. DNSSEC не шифрует трафик DNS; DNS через HTTPS и DNS через TLS обеспечивают конфиденциальность, а DNSSEC — аутентичность. Операционная сложность, включая ротацию ключей, замедлила широкое внедрение технологии.
Часто задаваемые вопросы
Урок «DNSSEC: аутентификация ответов DNS» бесплатный?
Да — полный текст урока «DNSSEC: аутентификация ответов DNS» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «DNSSEC: аутентификация ответов DNS»?
Узнайте, как DNSSEC использует цифровые подписи для защиты DNS от подмены и отравления кэша Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «DNSSEC: аутентификация ответов DNS»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что делает протокол безопасным
- SSH: защита удалённого доступа
- SFTP и SCP: безопасная передача файлов
- DNSSEC: аутентификация ответов DNS