DANE

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

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

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