Как целевой почтовый сервер может узнать селектор DKIM

Вопрос или проблема

В DKIM DNS-записи можно установить “поддомен”. Этот “поддомен” называется селектором. Он позволяет иметь несколько DKIM-ключей для одного и того же домена.

Есть что-то, что я не понимаю во время проверки DKIM.

Предположим, что Боб отправляет письмо Алисе. Как почтовый сервер Алисы должен знать этот селектор? Этот селектор не отображается в записи DMARC (и нигде больше), так как же конечный почтовый сервер может узнать имя селектора?

Спасибо

Он содержится в заголовке DKIM.

Пример:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=default;

Это соответствует TXT-записи в следующей DNS-записи:

default._domainkey.example.com

Если у вас есть электронная почта, вы можете посмотреть на поле s=. Если у вас его нет, или электронная почта достаточно старая, чтобы селектор больше не существовал, вы можете найти домен на archive.prove.email, который содержит более 1 миллиона уникальных пар домен-селектор. Если кто-то ранее предоставил этот селектор, вы можете получить исторические значения DKIM-ключей для этого домена. В реальном времени вы могли бы обратиться к DNS, но для прошлых электронных писем вам понадобится обратиться к историческому реестру, как этот.

Поле заголовка DKIM-Signature в самом электронном сообщении содержит используемый селектор (а также домен d=) в качестве обязательной части подписи / заголовка:

RFC 6376

s= Селектор, разделяющий пространство имен для тега "d=" (домен)
  (обычный текст; ОБЯЗАТЕЛЬНО).

  Интернационализированные имена селекторов ДОЛЖНЫ быть закодированы как A-метки, как
  описано в разделе 2.3 [RFC5890].

  ABNF:

  sig-s-tag    = %x73 [FWS] "=" [FWS] selector
  ... 
    ИНФОРМАТИВНЫЙ ПРИМЕР поля заголовка подписи, разделяющегося
    на несколько строк:

   DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane;
      c=simple; q=dns/txt; [email protected];
      t=1117574938; x=1118006938;
      h=from:to:subject:date;
      z=From:[email protected]|To:[email protected]|
       Subject:demo=20run|Date:July=205,=202005=203:44:08=20PM=20-0700;
      bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;
      b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZVoG4ZHRNiYzR

что соответствует DNS-записи brisbane._domainkey.example.net

Селектор находится в заголовке DKIM-Signature, который добавляется к электронному письму подписантом вместе с идентификатором домена подписи (SDID).

Селектор находится в теге s=, и вместе с доменом в теге d= у вас есть все необходимое, чтобы найти запись в DNS.

Этот селектор не отображается в записи DMARC

Селектор должен присутствовать в элементе <record><auth_results><dkim><selector>...</selector></dkim></auth_results></record>. Хотя мне интересно, почему отчетный сервер оставляет селектор без внимания, его присутствие не является строгим требованием.

Ответ или решение

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

Структура заголовка DKIM

Заголовок DKIM-Signature выглядит следующим образом:

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=default;

В данном примере:

  • d=example.com указывает домен, который подписал сообщение.
  • s=default — это селектор.

Селектор (например, "default") позволяет использовать несколько ключей DKIM для одного и того же домена. Таким образом, для тем же домена можно иметь несколько различных ключей, что полезно для управления ключами и их ротацией.

Поиск DNS-записи DKIM

Когда почтовый сервер назначения (например, сервер Алиссы) получает письмо от отправителя (например, от Боба), он извлекает селектор из заголовка DKIM-Signature. Используя этот селектор вместе с доменом из поля d=, сервер может построить уникальный DNS-запрос для получения соответствующей TXT-записи DKIM.

Формат DNS-запроса будет таким:

default._domainkey.example.com

Таким образом, сервер сначала составляет строку для поиска, основанную на селекторе и домене, а затем выполняет запрос к DNS-серверу, чтобы получить запись, содержащую публичный ключ DKIM.

Проверка подписи

После получения TXT-записи DKIM, сервер может проверить подпись сообщения, используя полученный публичный ключ и алгоритм, указанный в заголовке DKIM-Signature. Если проверка пройдет успешно, это будет означать, что письмо не было изменено после его подписания.

Вывод

Таким образом, почтовый сервер назначения получает селектор DKIM из заголовка DKIM-Signature, который был добавлен отправителем к письму. Селектор, вместе с доменным именем, позволяет серверу формировать запрос для получения соответствующего публичного ключа из DNS, что позволяет выполнить проверку подлинности сообщения.

Если вам нужна дополнительная информация о том, как работает DKIM и его интеграция с другими протоколами, такими как SPF и DMARC, не стесняйтесь спрашивать.

Оцените материал
Добавить комментарий

Капча загружается...