Как разрешить конфликт между RFC?

RFC 4034 и RFC 6762 кажутся противоречащими друг другу.

RFC 4034 гласит следующее:

Отправитель НЕ ДОЛЖЕН использовать сжатие DNS-имен в поле «Следующее доменное имя» при передаче NSEC RR.

*выделено мной

RFC 6762 утверждает следующее:

Все совместимые реализации многоадресной DNS ДОЛЖНЫ, по крайней мере, правильно генерировать и анализировать ограниченный формат записи DNS NSEC, описанный ниже:

  • Поле «Следующее доменное имя» содержит собственное имя записи. При использовании со сжатием имен это означает, что поле «Следующее доменное имя» всегда занимает ровно два байта в сообщении.

Похоже, это конфликт. В одном RFC говорится, что не следует использовать сжатие имен, а в другом предлагается, чтобы совместимые реализации должны иметь возможность генерировать и анализировать записи со сжатием имен.

Учитывая, что mDNS предназначен для правильной работы с существующими преобразователями DNS, как я, как программист, должен реализовать методы для создания и анализа записей NSEC?

Должен ли я использовать сжатие имен или нет?


person Nathan Osman    schedule 23.03.2017    source источник


Ответы (1)


Хотя mDNS сильно заимствован у DNS, это не один и тот же протокол. Между ними существует множество существенных различий, и использование NSEC записей является одним из них. Поскольку DNSSEC не имеет смысла в контексте mDNS (mDNS не имеет делегирования), mDNS присваивает тип записи NSEC для собственного использования. Что должно заменить функциональность DNS NXDOMAIN, как это (из раздела 6.1 RFC 6762):

Каждый раз, когда ответчик получает запрос на имя, для которого он
подтвердил исключительное владение, для типа, для которого это имя не имеет записей
, ответчик ДОЛЖЕН (за исключением случаев, разрешенных в пункте (a) ниже) ответить< br> подтверждение отсутствия этой записи с использованием записи DNS NSEC
[RFC4034]. В случае многоадресной DNS запись NSEC используется не для своих обычных свойств безопасности DNSSEC [RFC4033], а просто
как способ выражения того, какие записи существуют или не существуют с заданным
именем.

Причина, по которой записи DNS NSEC не должны использовать сжатие имен, заключается в том, что они должны иметь ровно одно четко определенное двоичное представление, которое может быть криптографически подписано. Разрешение сжатия будет означать, что существует несколько разных правильных представлений одного и того же контента в формате передачи, что может вызвать проблемы при проверке подписи, поскольку нельзя быть уверенным, какое представление использовалось при создании подписи.

mDNS ничего не подписывает, поэтому это ограничение не применяется, поэтому можно свободно использовать сжатие имен в записях NSEC.

Так что да, конфликт есть. Но это не конфликт между двумя RFC для одного и того же протокола, это конфликт между двумя разными протоколами. В разделе 19 RFC 6762 перечислены основные различия между DNS и mDNS, и на самом деле есть несколько существенных различий. Мне не кажется реалистичным ожидать использования одного и того же кода для обоих протоколов.

person Calle Dybedahl    schedule 24.03.2017