DKIM – общее понимание

DKIM — DomainKeys Identified Mail – метод E-mail аутентификации, разработанный для обнаружения подделывания сообщений, пересылаемых по email. Метод дает возможность проверить, что письмо действительно было отправлено с заявленного домена. wikipedia.org

Примечание: надо понимать, что DKIM не несет ответственности за фактическое содержание заголовков, он лишь гарантирует их не изменение на всех этапах движения от отправителя к получателю. Таким образом, вопреки устоявшемуся мнению, DKIM не защищает вас от спама. Спамеры тоже могут подписывать свои сообщения.

В основе DKIM лежит ассиметричный алгоритм шифрования RSA .

Сообщения подписываются закрытым ключом, который хранится у отправляющего (подписывающего) сервера, а открытый публикуется в TXT-записи на серверах DNS. Для извлечения открытого ключа из публичной записи необходимо «собрать» доменное имя. Оно состоит из вашего домена, обязательной части технологии DKIM — _domainkey — и имени селектора

Как только доменное имя получено, извлекается TXT-запись, например:

Пример DKIM-подписи  из реального сообщения:

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

  • v= — версия DKIM. Всегда имеет значение 1;
  • a= — алгоритм, используемый для генерации подписи;
  • c= — тип канонизации заголовка/тела сообщения. Перед подписью сообщение необходимо привести его к стандартному (канонизированному), чтобы не возникло проблем при проверке на принимающей стороне, ведь промежуточные серверы могут незначительно модифицировать сообщение. Это достаточно важный параметр, стоит обратить на него особое внимание;
  • d= — домен, который будет просматриваться на предмет наличия публичного ключа;
  • s= — селектор. Позволяет взять публичный ключ из нужной TXT-записи, если их вдруг несколько (а такое вполне может быть, если подписывающих серверов больше одного);
  • t= — отметка времени создания подписи;
  • bh= — хэш канонизированного тела сообщения;
  • h= — подписанные поля заголовков (список заголовков может варьироваться. Наличие тех или иных заголовков в подписи может защитить вас от некоторых потенциальных уязвимостей DKIM);
  • b= собственно, сама подпись.

Информация выше дана лишь для справки. Ключи подписи DKIM подробно описаны в RFC 4871, советую обратиться именно к этому документу для лучшего понимания. К тому же это не все заголовки, их бывает и больше.

Сколько селекторов надо для счастья

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

Помимо DNS-записи с селектором существуют и другие.

Первая (запись политики) используется для информирования принимающих серверов о том, должны ли все письма домена быть подписаны (o=-) или нет (o=~), а также имеет ряд дополнительных опций (например адрес для обратной связи). Запись может выглядеть вот так:

Благодарим автора статьи (оригинал)

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

Войти с помощью: 
Авторизация
*
*
Войти с помощью: 
Регистрация
*
*
*
Войти с помощью: 
Генерация пароля
51276208