DANE (англ. DNS-based Authentication of Named Entities) — набор спецификаций IETF, обеспечивающих аутентификацию объектов адресации (доменных имён) и предоставляемых сервисов с помощью DNS. Этот стандарт вводился в действие в 2011—2012 годах.

Описание

Многие современные приложения используют аутентификацию на базе сертификатов в защищённых транспортных соединениях, позволяя пользователям удостоверяться в подключении именно к тому серверу, к которому они хотели, и который называется именно так, а не иначе. Обычно аутентификация такого рода происходит через инфраструктуру открытых ключей с использованием цепочки сертификатов, заканчивающейся известным клиенту сертификатом удостоверяющего центра (CA). DANE предусматривает передачу доверенного сертификата, не известного ранее клиенту, средствами DNS с обязательной проверкой подлинности ответа DNS средствами DNSSEC в обход CA. DANE также может позволять владельцу домена выдавать ключи определённым CA. Также эта технология позволяет решать различные проблемы, связанные с использованием сторонних CA, например, не нужно делать сертификаты временными.

DANE, в отличие от других технологий, не распостранён, например в Mozilla Firefox и Google Chrome нет поддержки такой спецификации.

Принцип работы

Перед установлением безопасного соединения (HTTPS, TLS для любого поддерживающего протокола) клиент совершает ряд дополнительных DNS-запросов. В ответах на эти запросы клиенту передаются параметры сертификата или сам сертификат. При этом клиент устанавливает связь с сервером, адрес которого валидирован DNS-сервером клиента посредством DNSSEC. После открытия соединения клиент верифицирует ответ сервера либо при помощи имеющегося сертификата, либо его цифрового отпечатка (fingerprint).

Ресурсные записи

IANA стандартизировала одну новую запись TLSA (код 52). Формат записи:

                       1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  Cert. Usage  |   Selector    | Matching Type |               /
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               /
  /                                                               /
  /                 Certificate Association Data                  /
  /                                                               /
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Описание полей

  • Certificate Usage — тип передаваемого сертификата
  • Selector — размерность передаваемых данных
  • Matching Type — тип передаваемых данных
  • Certificate Association Data — данные сертификата

Пример DNS-запроса

Клиент при установлении защищённого соединения с сервером example.org по TCP-порту 443 выполняет дополнительный запрос:

IN TLSA _443._tcp.example.org

DNS-ответ

Полный сертификат PKI:

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

Ссылки