подпись DKIM

Идентифицированная почта с ключами домена (DKIM) это метод аутентификации электронной почты, позволяющий организации взять на себя ответственность за отправленное сообщение. Он использует криптографию с открытым ключом для цифровой "подписи" электронных писем, доказывая получателям, что сообщение было отправлено владельцем домена. Получатели могут сверить подпись с опубликованным открытым ключом своего домена для проверки подписи.

В этой статье мы подробно рассмотрим DKIM и дадим вам общее представление о том, как работает этот метод проверки подлинности электронной почты.

Что такое DKIM Signature?

DKIM расшифровывается как DomainKeys Identified Mail. Это система аутентификации электронной почты, которая обеспечивает целостность и неотказуемость с помощью криптографических подписей. Наряду с DMARC может помочь создать надежную инфраструктуру защиты от подделок для вашей электронной почты.

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

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

Если они не совпадают, то либо:

  1. Сообщение было изменено во время передачи, или
  2. Сообщение отправляется от имени другого человека, имеющего доступ к закрытому ключу сервера-отправителя

В таких случаях несовпадения подписей DKIM не позволит доставить эти письма адресатам, поскольку они не смогут подтвердить их как легитимные сообщения от вашего бренда.

Как работает DKIM-подпись?

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

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

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

Ключи подписи DKIM

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

Когда электронное письмо подписывается, закрытый ключ используется для создания хэша сообщения. Затем этот хэш шифруется открытым ключом и отправляется вместе с самим сообщением.

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

Части подписи DKIM

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

  1. Чтобы вычислить DKIM-подпись, вы сначала берете MD5-хэш вашего доменного имени (например, "example.com"), который является вашим открытым ключом.
  2. Затем вы объединяете свое доменное имя с хэшем SHA1 (например, "sha1(example.com)") и добавляете его к исходному сообщению, которое было отправлено.
  3. Затем вы берете другой MD5-хэш этой комбинированной строки (например, "md5(sha1(example.com))") и прикрепляете его в качестве заголовка в начале вашего сообщения перед отправкой его на доставку.

Шаги, связанные с подписанием DKIM

Начало работы с DKIM:

  1. Первым шагом является создание закрытого ключа, который используется для подписи сообщения.
  2. Второй шаг - создание открытого ключа, который используется при проверке подписи.
  3. Третий шаг заключается в создании двух записей DNS TXT: одна для открытого ключа, а другая для имени селектора.
  4. Четвертый шаг - публикация этих записей в файле зоны DNS.

Этапы подписания DKIM:

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

2. Отправитель добавляет в сообщение дополнительные поля заголовка, содержащие информацию о:

  • в течение какого времени сообщение должно считаться действительным
  • как часто подпись должна перепроверяться на действительность
  • следует ли проверять подписи с помощью внешнего сервиса, такого как SPF (Sender Policy Framework)
  • какие ключи были использованы для подписания этого сообщения

3. Наконец, получатели, которые хотят проверить эти подписи, будут использовать свою копию открытого ключа отправителя из своих записей DNS или промежуточного сервиса, такого как SenderID или Mailgun, а затем использовать его для проверки всех сообщений с прикрепленными заголовками DKIM.

Понимание тегов, используемых в подписи DKIM

Вот пример того, как может выглядеть запись подписи DKIM:

DKIM-Signature: v=1;

a=rsa-sha256;

s=jun2005.eng;

c= расслабленный/расслабленный;

d=example.com;

s=dkim;

t=1526555738;

bh=mhU6OJb5ldZf+z/pX9+0Nc4tj/lmyYHWbR8LgI2Q=;

h=To:From:Subject:Date:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding;

b=s1sdZCzdX9vxocsMSlT7cOrYixl1g8wfkdzrVe7BGN6ZdPV9xu2A

v= Этот тег сообщает нам версию DKIM.

a= Здесь указывается алгоритм, используемый подписывающим лицом для генерации своего открытого ключа. Это может быть один из RSA1_5, RSA-SHA1 или RSASSA-PSS. Если этот тег отсутствует, то предполагается RSA-SHA1.

c= Указывает алгоритм каноникализации, используемый для генерации хэшей полей заголовка в соответствии с требованиями [BCP14]. Далее следует список из 1 или более алгоритмов каноникализации, разделенных запятыми (например, "c=relaxed"). Если этот тег опущен, то предполагается расслабленная каноникализация.

d= Указывает, какое доменное имя должно использоваться при генерации подписей для сообщений, отправляемых этим сервером (или другим получателем).

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

t= Метка timestamp используется для записи времени создания подписи и обычно представляется в виде временной метки Unix (количество секунд с 1 января 1970 года).

bh= Этот тег представляет хэш тела, который является зашифрованной версией содержимого вашего сообщения (включая заголовки). Это помогает предотвратить фальсификацию сообщений после того, как они были подписаны DKIM и до того, как они попали к адресатам.

h= Хеш-значение заголовка содержит все заголовки полностью (включая те, которые подписаны Sender Policy Framework или DomainKeys Identified Mail), за исключением тех, которые были явно исключены путем включения их в список исключений. Это значение должно быть вычислено с помощью SHA-1 или MD5.

b= Тег "b" - это base64-кодированное представление криптографической хэш-функции на канонизированном теле сообщения (т.е. после удаления MIME-кодировки).

Генерация подписи DKIM

  1. Сгенерируйте открытый и закрытый ключ.
  2. Сгенерируйте заголовок и нижний колонтитул DKIM.
  3. Подпишите содержимое электронной почты своим закрытым ключом с помощью выбранного алгоритма, например, RSA-SHA256 или RSA-SHA512.
  4. Сжать сообщение с помощью выбранного алгоритма, например, deflate или none.
  5. Вставьте заголовки DKIM в начало сообщения перед любыми заголовками MIME.
  6. Вставьте колонтитул DKIM после всех колонтитулов MIME.

Обеспечение достоверности подписи DKIM

Можно предпринять некоторые шаги, чтобы убедиться, что подпись DKIM действительна:

  1. Определите, хотите ли вы использовать традиционный алгоритм подписания DKIM или оптимизированный.
  2. Вычислите хэш-значение для заголовка и тела вашего сообщения (обычно это SHA-256).
  3. Выберите подходящий алгоритм подписи (например, RSA или ECDSA).
  4. Убедитесь, что ваш открытый ключ соответствует селектору, который вы указали ранее в шаге 1 (это делается с помощью DNS).
  5. Подпишите свое сообщение с помощью закрытого ключа и сохраните его как строку ASCII в формате Base64 в заголовке сообщения электронной почты (в дополнение к размещению в DNS).

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

Проверка подписи DKIM сложна. Она требует большого опыта для настройки и обслуживания, и часто используется в сочетании с другими системами, такими как SPF, которые также сложны.

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

Это важно по нескольким причинам: во-первых, это гарантирует, что ваши письма не будут помечены как спам провайдерами или клиентами провайдеров; во-вторых, это позволит вам избежать внесения вашего домена в черный список других доменов (это называется отравлением домена); наконец, это поможет гарантировать, что ваши письма не попадут под какую-либо атаку типа "человек посередине".

Заключение

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

Нужна помощь?

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

Наше решение для аутентификации электронной почты поможет вам:

  • Повышение доставляемости электронной почты путем проверки доменного имени и подписи DKIM
  • Улучшить имидж вашего бренда, показав получателям, что вы являетесь законным предприятием
  • Улучшить общий уровень обслуживания клиентов, убедившись, что они видят только законные сообщения от вас

Последние сообщения Ахона Рудра (см. все)