Перейти к содержимому
ecdsa.com

Заголовок DKIM-Signature

Поле заголовка (RFC 6376, § 3.5), где подпись DKIM записана парами «тег=значение», в том числе тегами v, a, c, d, s, h, bh, b и необязательными i, l, t и x.
Другие написанияDKIM-SignatureDKIM selector_domainkeybh tag

Пример: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=s2026; t=1792483200; x=1793088000; h=from:to:subject:date:message-id; bh=…; b=…. bh — хеш тела, то есть SHA-256 канонизированного тела в кодировке base64; при канонизации тела relaxed пустое тело даёт 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=. Подпись охватывает перечисленные заголовки по порядку, а затем сам заголовок DKIM-Signature с пустым значением b=.

Теги, которые стоит проверить: h= обязательно должен включать From (этого требует RFC 6376); если указать заголовок больше раз, чем он встречается в письме (избыточное подписание, oversigning), атакующий не сможет добавить его вторую копию; l= ограничивает длину подписанной части тела, из-за чего любой может дописать в письмо свой текст, поэтому этот тег использовать не следует; t= и x= задают время подписи и время истечения срока действия; i= — идентификатор агента или пользователя в пределах домена d=.

Запись с ключом по адресу s._domainkey.d имеет вид v=DKIM1; k=rsa; p=… (открытый ключ в base64: для RSA на практике это структура SubjectPublicKeyInfo, для k=ed25519 — сам 32-байтный ключ); пустое значение p= отзывает ключ. Ключ RSA длиной 2048 бит занимает в base64 392 символа, больше предельных 255 байт одной строки TXT, поэтому его нужно разбить на несколько строк внутри одной записи.

Стандарты и ссылки

Все термины