Говорим о том, что собой представляет технология DANE для аутентификации доменных имен по DNS и почему она не получила широкого распространения в браузерах.


/ Unsplash / Paulius Dragunas

Что такое DANE


Сертификационные центры (CA) — это организации, которые занимаются удостоверением криптографических SSL-сертификатов. Они ставят на них свою электронную подпись, подтверждая подлинность. Однако порой возникают ситуации, когда удостоверения выдаются с нарушениями. Например, в прошлом году Google инициировали «процедуру прекращения доверия» к сертификатам Symantec из-за их компрометации (подробно эту историю мы освещали в нашем блоге — раз и два).

Чтобы избежать таких ситуаций, несколько лет назад в IETF начали разрабатывать технологию DANE (но она не получила широкого распространения в браузерах — почему так получилось, поговорим далее).

DANE (DNS-based Authentication of Named Entities) — это набор спецификаций, который позволяет использовать DNSSEC (Name System Security Extensions) для контроля достоверности SSL-сертификатов. DNSSEC представляет собой расширение для системы доменных имен, которое минимизирует атаки, связанные с подменой адресов. Используя две эти технологии, веб-мастер или клиент могут обратиться к одному из операторов зон DNS и подтвердить валидность используемого сертификата.

По сути, DANE выступает в качестве самоподписанного сертификата (гарантом его надежности является DNSSEC) и дополняет функции CA.

Как это работает


Спецификация DANE описана в RFC6698. Согласно документу, в ресурсные записи DNS был добавлен новый тип — TLSA. Он содержит информацию о передаваемом сертификате, размерность и тип передаваемых данных, а также сами данные. Веб-мастер создает цифровой отпечаток сертификата, подписывает его с помощью DNSSEC и размещает в TLSA.

Клиент подключается к сайту в интернете и сравнивает его сертификат с «копией», полученной от DNS-оператора. Если они совпадают, то ресурс считается доверенным.

На wiki-странице DANE приведен следующий пример DNS-запроса к серверу example.org по TCP-порту 443:

IN TLSA _443._tcp.example.org

Ответ на него выглядит так:

 _443._tcp.example.com. IN TLSA (
   3 0 0 30820307308201efa003020102020... )

DANE имеет несколько расширений, которые работают с другими записями DNS помимо TLSA. Первое — DNS-запись SSHFP для проверки ключей при SSH-соединениях. Оно описано в RFC4255RFC6594 и RFC7479. Второе — запись OPENPGPKEY для обмена ключами с помощью PGP (RFC7929). Наконец, третье — запись SMIMEA (в RFC стандарт не оформлен, есть только его черновик) для криптографического обмена ключами по S/MIME.

В чем проблема с DANE


В середине мая прошла конференция DNS-OARC (это некоммерческая организация, которая занимается вопросами безопасности, стабильности и развития системы доменных имён). На одной из панелей эксперты пришли к выводу, что технология DANE в браузерах провалилась (по крайней мере, в текущем варианте реализации). Присутствующий на конференции Джефф Хастон (Geoff Huston), ведущий научный сотрудник APNIC, одного из пяти региональных интернет-регистраторов, отозвался о DANE как о «мертвой технологии».

Популярные браузеры не поддерживают аутентификацию сертификатов с помощью DANE. На рынке встречаются специальные плагины, которые раскрывают функциональность TLSA-записей, однако и их поддержку постепенно прекращают.

Проблемы с распространением DANE в браузерах связывают с длительностью процесса валидации по DNSSEC. Система вынуждена производить криптографические расчеты для подтверждения подлинности SSL-сертификата и проходить по всей цепочке DNS-серверов (от корневой зоны до домена хоста) при первом подключении к ресурсу.


/ Unsplash / Kaley Dykstra

Этот недостаток пытались устранить в Mozilla с помощью механизма DNSSEC Chain Extension для TLS. Он должен был сократить количество DNS-записей, которые приходилось просматривать клиенту во время аутентификации. Однако внутри группы разработчиков возникли разногласия, которые разрешить не удалось. В итоге проект забросили, хотя он был одобрен IETF в марте 2018 года.

Еще одной причиной низкой популярности DANE считается слабая распространенность DNSSEC в мире — с ним работает всего 19% ресурсов. Эксперты посчитали, что этого недостаточно для активного продвижения DANE.

Скорее всего, индустрия будет развиваться в другом направлении. Вместо того чтобы использовать DNS для верификации сертификатов SSL/TLS, игроки рынка, наоборот, будут продвигать протоколы DNS-over-TLS (DoT) и DNS-over-HTTPS (DoH). Последний мы упоминали в одном из наших предыдущих материалов на Хабре. Они шифруют и проверяют запросы пользователей к DNS-серверу, не давая злоумышленникам возможности подменить данные. В начале года DoT уже внедрили в Google для своего Public DNS. Что касается DANE — получится ли у технологии «вернуться в седло» и все же стать массовой, предстоит увидеть в будущем.

Что еще у нас есть для дополнительного чтения:

Как автоматизировать управление ИТ-инфраструктурой — обсуждаем три тренда
JMAP — открытый протокол заменит IMAP при обмене электронными письмами

Как сэкономить с помощью прикладного программного интерфейса
DevOps в облачном сервисе на примере 1cloud.ru
Эволюция архитектуры облака 1cloud

Как работает техподдержка 1cloud
Мифы об облачных технологиях

Комментарии (18)


  1. Evengard
    01.06.2019 23:15
    +1

    Честно говоря я не очень понимаю, как DNS over TLS или DNS over HTTPS поможет против подделки каким-то DNS-сервером записей.


    1. mxms
      02.06.2019 00:06

      Правильный ответ — никак. Собственно это про защиту канала передачи данных от / к DNS и никак не заменяет DNSSEC / DANE.


    1. YourChief
      02.06.2019 02:24

      Есть возможность развития в этом направлении, она описана в этой статье в блоге APNIC. Если коротко — DoT может заменить DNSSEC если авторитативные серверы будут поддерживать DoT и отвечать по нему резолверам.


    1. Zoomerman
      02.06.2019 04:22

      Честно говоря я не очень понимаю, как DNS over TLS или DNS over HTTPS поможет против подделки каким-то DNS-сервером записей.

      Тут просто. Если DNS сервер будет работать по принципу HTTPS, то для получения надежного ответа, к нему нужно будет обращаться напрямую с использованием TLS. В этом случае ответ от сервера можно считать валидным, т.к. вероятность его подмены в пути очень мала.

      Если TLSA записи передавать открытым текстом, то ничего не мешает на узле провайдера заменять данные своим сертификатом. Вкупе с возможностью организовать MiTM это вообще сводит к нулю идею HTTPS для сайтов.


      1. DerRotBaron
        02.06.2019 11:19

        В случае использования DNSSEC, с открытым текстом проблем нет, так как TLSA от MiTM не будут приняты. И точкой доверия в этом случае будут только авторитативные DNS.
        В случае же с DoTLS/DOH с TLSA, но без DNSSEC к авторитативным серверам добавляется ещё и резолвер, которому нет проблем подменить сразу и A и TLSA.


  1. sHaggY_caT
    02.06.2019 08:51

    Эту проблему можно решить с помощью блокчейна. Да, тут тоже накладные расходы, но если это не специализированный блокчейн, а выполняющий и другие функции, то это не проблема, если данный блокчейн уже широко используется.


    1. bm13kk
      02.06.2019 13:54

      Блокчейн пока что не решил ни одной проблемьі. Вьі предлагаете его использовать в вопросе безопастности всего .


      1. 0xd34df00d
        02.06.2019 16:16

        Просто надо еще диплернинг подключить.


        1. sHaggY_caT
          02.06.2019 19:28

          Блокчейн пока что не решил ни одной проблемьі. Вьі предлагаете его использовать в вопросе безопастности


          Как это связано?

          всего


          Не всего, а DNS. Кстати, вместо DNS тоже можно юзать блокчейн. А на смартконтрактах организовать покупку доменных имён и их освобождение, перепродажу.


          1. vibornoff
            03.06.2019 12:25

            Да вы namecoin придумали. Не взлетело.


            1. sHaggY_caT
              03.06.2019 15:59

              del


    1. Tatikoma
      02.06.2019 13:58

      Namecoin?


    1. Tangeman
      02.06.2019 16:43

      Вы не поверите: How Certificate Transparency Works


  1. Revertis
    02.06.2019 13:52

    Для начала, мне кажется, можно было бы ограничить национальные ЦА своими национальными доменами. Чтобы условный турецкий «TUBITAK Kamu SM SSL Sertifika Hizmet Saglayicisi» не мог выпустить сертификаты для условного google.com. То же самое с будущим российским ЦА, чтобы он был ограничен для ru/рф/su доменов.
    Я думаю, что небольшую такую табличку добавить во все браузеры не составит труда (хотя, конечно, конкуренцию урежет).


    1. Tangeman
      02.06.2019 16:54

      Частично эту проблему решает CAA в DNS, но малоэффективно пока не защищено DNSSEC или аналогичными механизмами.


  1. achekalin
    02.06.2019 14:00

    Чаще вижу ситуацию, когда днс-серверы не позволяют создать даже CAA, не то что ещё какие-то новопоявившиеся днс-записи: чаще всего это ограничение веб-интерфейса хостера ДНС. И это, среди прочего, не всегда от лени, но ещё и от нежелание разбираться в сложных вещах при настройке простого по идее самого протокола ДНС-сервера. Т.е. здесь "работает — не трогай" играет против безопасности.


    Подумать шире — и поймём, что настройка веб-морды (скорее ее обновление) мельчайшая из проблем. Если админы не разобрались, а оттого побаиваются подписывания днс-зон, то и использовать эти фичи даже на рекурсивных серверах они если и будут, то неохотно.


    Ну а принудительно весь мир на dnssec перевести с 1 июля чего года, например — просто невозможно, интернет есть сеть, где рулят не законы, а настоятельные рекомендации (и почти нет наказаний за их нарушение). Переналадки ДНС же — дело тонкое, если что-то пойдет не так — мало не покажется, так что внедряет новшество очень немногие.


    1. Tatikoma
      02.06.2019 14:26

      DNS flag day вполне неплохо заставляет шевелиться админов с перенастройкой серверов.


      1. Tangeman
        02.06.2019 17:00

        Это больше пугалка чем шевелилка. Пока DNSSEC повсеместно не используется (а именно для него важны EDNS и DNS-over-TCP), ни первый, ни второй DNS Flag Day ровным счётом ничего не меняют для подавляющего большинства клиентов (и серверов) — т.е. всё что резолвилось раньше будет и дальше резолвится, разве что всех клиентских резолверов принудительно заставят использовать DNS-over-TCP для обычных запросов (что практически невероятно).