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

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

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

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

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

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

"v=DKIM1; h=sha256; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwY3QT9H4zJk3aLfMcXkyMG7q
LdKA75vVAmA+Trz5t3ulE9H9MFa8xY2dHjDHjJECRV4ZR2MwNN1kmbsS832qQ9Owp7Zu1g1Fn+8xr15u0vzOR3tv1Jm8LXLf16He
rSCGz84Ky25CkY+Gkzif0fmk9WSJPMBcTCYEnap+vd8k9IhENPSsfaDeoUCuWT1Ai53YgbECImatIrKz5P" "8b+5hsdddsgMvip
hMsJQ5NupYioFmwMT4RlEO9zbRjOrXwuEi5O0cpXilHpLIypiJUv1Up/DFQThwhbwDL++cOmnGnbWAjbTdfop1rW9Jk7dhl7vEzX
0BSXwFg1yI9N1Amc2a5HwIDAQAB"

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

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bq-srv.ru; s=mail;
	t=1533115247; bh=e6IZE49kmkJx8p6ujrQuU4DncHDsIuDx0vpJjbn+Azw=;
	h=From:To:Subject:Date:References:In-Reply-To;
	b=h+B10b3fSfDqkvhE4TBcmOXNggZkmkfGzA3yRoabesHCWmohF5OFPPh2GAq1QDHQs
	 QFm3yVv1FtLA5KWBY7fr/wceds5FE3VXeU98bXgEzvG4e9rOZrHgUJ1FFv3tkIGrZ+
	 3dpOsv0y8JVpawwy/A9KmQpgf//qggmCzt7jPCanGVeiQbZiIxSpRV59HFS+ADMl4O
	 kVILB5RTE3bbaDQxBX3fbBVHli3a/8usU0Lf/xWDUOAZJSKuxeb/oGnE5Ww6QfHJOJ
	 ATD1cNcgHjgvVkG04QVuGIwWN9n/WHUBBrjEEsmTqUzJwVsS0xkEusjC6ssU2v5S4A
	 cBNSKoELPD9jQ==

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

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

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

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

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

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

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

_domainkey IN TXT "o=~; r=postmaster@bq-srv.ru"

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

0

my-mails.ru

Всегда On-Line

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

Авторизация
*
*

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


Регистрация
*
*
*
*

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


Генерация пароля

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


51276208