DKIM, o DomainKeys Identified Mail, es un complemento de SPF y establece un mecanismo para firmar digitalmente el correo electrónico saliente de su dominio. Esto protege contra correos electrónicos que podrían haber sido alterados en tránsito entre el remitente y el destinatario al establecer un protocolo que verifique que la organización que entrega el correo electrónico tiene derecho a entregar el mensaje.
No hay ningún requisito para que los usuarios cambien su comportamiento, a diferencia del uso de algo como PGP o S / MIME, y DKIM ha sido adoptado por la mayoría de los principales proveedores de correo electrónico.
El DKIM es como un sello de autenticidad en un paquete que verifica que el paquete es realmente enviado por la persona o la empresa que está escrita en el paquete.
Entonces, ¿qué hace realmente DKIM?
Los destinatarios de un correo electrónico pueden aprovechar DKIM para confirmar la identidad del remitente y determinar si el mensaje se modificó en algún momento durante el tránsito. Para hacer esto, el agente de transferencia de correo del remitente ( MTA ) activará un subconjunto de encabezados de mensajes y firmará este hash con una clave privada. La clave pública se almacenará en un registro DNS TXT. La MTA receptora puede buscar la clave pública para el dominio de envío y validar la firma y obtener los valores de hash originales, que luego se comparan con los valores de hash recién creados. Si los valores coinciden, entonces DKIM era válido.

Cuando se configura un dominio para DKIM, los mensajes de correo electrónico de su dominio se enviarán con un encabezado DKIM-Signature, que contiene:
- Cómo se implementó la firma del mensaje
- Cuánto tiempo es válida la firma para
- Para qué dominio es válida la firma
- Hash de los encabezados y el cuerpo del mensaje, que se pueden usar para validar el mensaje, no se manipuló
Para configurar DKIM, verifique la configuración en su proveedor de correo electrónico. El proveedor de correo electrónico generará un par de claves público / privado y proporcionará la clave pública necesaria para su registro DNS TXT.
Nota importante: DKIM por sí solo no es un método confiable para autenticar la identidad del remitente de correo electrónico, y no impide falsificar el dominio visible en el encabezado “De”.
Dentro de DKIM
Entonces, ¿cómo se ve un registro DKIM? El registro se basa en el uso de un Selector DKIM, que se utiliza para apuntar a un registro DKIM específico en su DNS (, este será un registro DNS TXT ).
Su registro de clave pública se verá así selector._dominio.dominio. Por ejemplo, en mi sitio web, el registro DKIM parece default._domainkey.hiveagile.com.
El valor del registro se ve así:
v=DKIM1; k=rsa;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/9Ep3UzhLwCDqJh75ve/rLgBq/vOxmxuwQ
WAW9QlbJvIbttZwBi/TDT7j1YmjAOmCIlxJrYWmK+QSXvg0DL1tgVYb4oTjWQrZLEv8mYNGLXqO
OPGHI87fkI/FfsPNSkPPrQE2m7M2IUYDPwF7pxyt4wl+uc/nVtgcu7S2VD194wIDAQAB
Así que desglosemos cuáles son estos diferentes campos:
- v = DKIM1 — Esta es la versión del registro DKIM. Actualmente, solo hay una versión en uso, y esta es la primera etiqueta. Cualquier desviación de esto, y el registro se ignorará por completo ( mientras que es opcional incluir esta etiqueta, se recomienda usarla ).
- p = … — Esta es la clave pública utilizada por el proveedor de correo electrónico para que coincida con la firma DKIM generada utilizando la clave privada. Esto se genera junto con la clave privada durante el proceso de configuración de DKIM.
- k = rsa — Esta etiqueta opcional especifica que el tipo de clave es rsa. Tenga en cuenta que RSA es el valor predeterminado y debe ser compatible tanto con los firmantes como con los verificadores.
Hay algunas otras etiquetas que pueden ser útiles:
- n — Esta etiqueta le permite proporcionar notas que pueden ser útiles para una persona que mira el encabezado. Esta etiqueta debe usarse con moderación, dados los límites de caracteres de un registro DNS. Esto debe ser utilizado por los administradores.
- g — Granularidad de la tecla, con un valor predeterminado de “ * ”. Este valor debe coincidir con la parte local de la etiqueta “ i = ”. El propósito de este indicador es simplemente restringir qué dirección de firma puede usar el registro del selector.
- s — El tipo de servicio al que se aplica el registro. Se aplica un valor predeterminado de *, que permite todos los tipos de servicio. El único otro valor aceptado en este momento es “ email ”. Esta etiqueta es más prospectiva y, como tal, se puede omitir por ahora.
- t — Esto proporciona una lista de indicadores que se pueden usar para modificar la interpretación del selector.
- y -El dominio está probando DKIM
- s — Especifica que cualquier encabezado de firma DKIM que use la etiqueta “ i = ” debe tener el mismo valor de dominio en el lado derecho de la @ inicie sesión en la etiqueta “ i = ” y en la etiqueta “ d = ” de la firma. Esta etiqueta no debe incluirse si se requiere un subdominio.
La firma
Genial, así que hablamos un poco sobre la clave pública utilizada para DKIM, almacenada en un registro DNS TXT. Ahora, ¿cómo hacemos para usar esto?
Aquí hay un ejemplo de un encabezado Dkim-Signature en un correo electrónico de marketing que recibí recientemente de Atlassian:
Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=engagement.atlassian.com; h=content-type:from:mime-version:reply-to:to:subject; s=s1; bh=sNszhoSMPuyPkJZe6/yem+4zarc0ined1ljTPO1RyjU=; b=oJzun0+R2xFGe Xt8DyG7uG5m3M0Q0X/J1yNNwtFsUDXegO1vSTpZDyr0wIKnypWW8EyFAww1Gz1O0 LsVcr7GZV4EgW2yuQTnihlW8lkuE8BeEesM4JRjkemGHDkXtP2BJZGNW+kb2RRai 0hk2eY296cClV+3wmzlZ9ONQ+1eodI=
Los campos comunes utilizados en una firma:
- v = 1 — La versión utilizada para DKIM, actualmente solo en la versión 1. Esto debe ser incluido.
- a — El algoritmo utilizado para generar la firma ( requerida ). Los verificadores deben admitir tanto “ rsa-sha1 ” como “ rsa-sha256 ”. Los firmantes deben firmar usando “ rsa-sha256 ” a menos que el sistema no tenga suficientes recursos computacionales.
- c — Esta etiqueta opcional informa al verificador del tipo de canonicalización utilizada para preparar el mensaje para firmar. Hay dos nombres, utilizados para indicar los algoritmos utilizados tanto para el encabezado como para el cuerpo. Si solo se usa un nombre, ese nombre se usa para el encabezado y “ simple ” se usa para el cuerpo. Las opciones incluyen “ relajado ” o “ simple ”
- d — El dominio que envía el correo electrónico
- t — La marca de tiempo de cuándo se firmó el mensaje
- bh — El hash del contenido del cuerpo del mensaje canonicalizado
- h — Encabezados que cubrirá la firma dkim, separados por dos puntos
- s — El nombre del selector utilizado en DNS
- b — La firma de los encabezados de los mensajes, incluida la firma DKIM