DKIM Explicado

On julio 11, 2023
10min read
Piotr Malek Technical Content Writer @ Mailtrap
Viktoriia Ivanenko Technical Content Writer @ Mailtrap

La firma DKIM, junto con otros métodos, como SPF o DMARC, es uno de los métodos más comunes para autenticarse como el remitente de un mensaje de correo electrónico. A continuación, te explicamos por qué deberías usarlo y cómo funciona realmente. ¡Comencemos!

¿Qué es DKIM? 

DomainKeys Identified Mail (DKIM) es una firma digital añadida a cada correo electrónico enviado desde una dirección de correo electrónico determinada. No es una firma como otras que ves en la parte inferior de un correo electrónico corporativo. De hecho, normalmente, ni siquiera ves el DKIM. Es un conjunto aparentemente aleatorio de caracteres ocultos en el código fuente de un correo electrónico, un lugar donde la gente no suele mirar, pero los servidores que aceptan correos electrónicos entrantes si lo hacen. 

Después de todo, DKIM es un estándar de la industria para la autenticación de un correo electrónico. Por supuesto, añadir una firma DKIM no garantiza la entrega, pero aumenta significativamente las probabilidades de un resultado positivo.

¿Por qué usar DKIM?

Imagine el siguiente escenario. Estás enviando un mensaje de seguimiento rápido a un posible inversor después de una reunión: “Yvonne, avísame si te gustaría continuar con lo que discutimos anteriormente”. Pasa algún tiempo, y nunca recibiste la respuesta de Yvonne, pero te encuentras con ella en otra reunión y mencionas discretamente ese correo electrónico.

Desconcertada, Yvonne dice: “Mark, nunca he sabido de ti”.Hay muchas razones potenciales para la falla en la entrega, pero, lo que se verificó es que Mark olvidó configurar la autenticación DKIM para su cuenta de correo electrónico. Como resultado, el servidor de Yvonne no estaba muy seguro de si realmente era Mark enviándole un correo electrónico y descartó el mensaje.

El principal objetivo de DKIM es prevenir la suplantación de identidad. La suplantación de correo electrónico ocurre cuando se cambia el contenido del mensaje original y se lo envia desde un remitente alternativo que parece una fuente confiable. Este tipo de ataque cibernético se usa ampliamente para el fraude, por ejemplo, alguien que envía mensajes de solicitud de pago desde una dirección de correo electrónico que se parece a la tuya (mark@whithercompany.io  vs. mark@whither-company.io).

¿Cómo se ve un encabezado DKIM?

Aquí tienes un ejemplo de un registro de correo identificado con DomainKeys:

DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=newyork;
     c=relaxed/simple; q=dns/txt; t=1117574938; x=1118006938;
     h=from:to:subject:date:keywords:keywords;
     bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;
     b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ
              VoG4ZHRNiYzR

El DKIM se compone de diferentes elementos, descritos con varias etiquetas y valores correspondientes a cada uno. Vamos a desglosar el significado de cada elemento utilizado anteriormente:

Tag y su valorSignificadoObligatorio/facultativo
v=1Versión. Siempre es igual a ‘1’.Obligatorio
a=rsa-sha256Algoritmo de firma (el que se utiliza para crear un registro DKIM en el extremo del remitente). Por lo general, es rsa-sha o rsa-sha256. Hay otros algoritmos, pero no siempre son compatibles con los clientes receptores.Obligatorio
d=example.comEl dominio del remitente de un mensaje (donde está firmado DKIM).Obligatorio
s=newsSelector:  esto incluye instrucciones sobre qué clave pública usar para resolver un DKIM determinado (más sobre esto adelante).Obligatorio
c=relaxed/relaxedAlgoritmo de canonicalización que se utiliza tanto para el encabezado como para el cuerpo.Obligatorio
q=dns/txtMétodo de consulta que se utiliza para recuperar la clave pública. Por defecto, es “dns/txt”.Opcional (recomendado)
t=1126524832Una marca temporal de cuando se firmó el mensaje.Obligatorio
x=1149015927Tiempo de caducidad de este DKIM (si un correo electrónico llega después del tiempo de caducidad, la verificación fallará incluso si todo lo demás coincide perfectamente).Opcional (recomendado)
h=from:to:subject:date:keywords:keywords;Lista de encabezados, separados por dos puntos.Obligatorio
bh=MHIzKDU2Nzf3MDEyNzR1Njc5OTAyMjM0MUY3ODlqBLP=El cuerpo del mensaje en hash, después de ser canonicalizado con el método de la etiqueta “c” y luego ejecutar la función hash de la etiqueta “a”. (bh – body hash)Obligatorio
b=hyjCnOfAKDdLZdKIc9G1q7LoDWlEniSbzc+yuU2zGrtruF00ldcFVoG4WTHNiYwGY finalmente, esta es la firma digital de ambos encabezados y cuerpo, hashed con la misma función.Obligatorio

Como puede ver, la firma es solo una pequeña parte de DKIM. Todo lo que está por encima son metadatos, que describen cómo se calcularon los valores hash.

Observe cómo dos de las etiquetas se marcaron como opcionales: no son necesarias para que DKIM se verifique correctamente, pero agregan una capa adicional de seguridad. Hay varias otras etiquetas opcionales que puedes usar: “i” – Identidad de un usuario o un agente (recomendado); “l” – longitud del cuerpo del mensaje y “z”- lista de encabezados originales del mensaje (ambos no recomendados).

¿Cómo funciona DKIM?

La firma y recepción de DKIM se realiza en tres pasos:

1. El remitente decide qué incluir en un registro DKIM

Como remitente, puedes limitarte a solo ciertas partes de los campos de encabezado (“From”, “To”, “Cc”, “Subject”, etc.), y también puedes llegar a incluir todo el encabezado y el cuerpo en DKIM. También puedes optar por añadir algunos o todos los campos opcionales mencionados anteriormente.

Técnicamente, cuanto más detalles específicos se incluyan, más confiable será la autenticación. Pero también debes tener cuidado con esto, ya que incluso los detalles más pequeños cambiados por tu servidor de correo electrónico SMTP conducirán a una autenticación DKIM fallida del lado receptor. Piense, por ejemplo, en los mensajes “reenviados por…” que se agregan a los correos electrónicos al reenviarlos desde clientes de correo electrónico. Si incluyes todo el cuerpo en DKIM, este inevitablemente fallará ya que el cuerpo acaba de ser modificado.

Pero no te preocupes. No es necesario que decidas la forma del DKIM cada vez que envíes un correo electrónico. Un servidor se encarga automáticamente de que debas configurarlo solo una vez. 

2. Se crea el DKIM y se envía un mensaje que lo incluye

Una vez que el servidor sabe qué incluir en el DKIM y se inicia el envío de correo electrónico, comienza a hashear el contenido. Ya sabemos cómo se veían las etiquetas “b” y “bh” en nuestro ejemplo. Para darte un ejemplo más, así es como se vería el paso anterior si se aplicara hash con el método SHA256:

568291DDA7ECE2594254BC8E7D70DA150968D022021081BB6E3FC40DC9C260D6
CE328291830AB02CFB1D8CDEC3C2B35C73F92ADF335BCCF38C6784AC9922A8C1

Aunque puede parecer complejo, tales hashes son extremadamente fáciles de descifrar con varias herramientas en línea (¡pruébalo vos mismo!). Es por eso que, antes de que se envíe un correo electrónico, cada hash se cifra con una llamada clave privada. Puedes tener una clave privada separada para cada selector que utilices, incluso si envías todos los correos electrónicos desde el mismo dominio. Esto puede significar una clave para los correos electrónicos de marketing, otra para los correos electrónicos transaccionales y una tercera para los correos electrónicos enviados a los proveedores. El uso de diferentes claves privadas es importante por razones de seguridad.

Una vez que todo está configurado, ¡se envía el correo electrónico!

3. Se recibe un mensaje y el servidor valida las firmas DKIM

En cuestión de segundos, el servidor de correo receptor recibe un mensaje y debe tomar una decisión importante: permitir o no la entrada del correo electrónico. Cuando ve que se incluye un DKIM con el mensaje, inmediatamente inicia el proceso de validación.

Con los campos de dominio (“d”) y selector (“s”) visibles en DKIM, el servidor puede obtener la clave pública que corresponde a esta combinación ejecutando una consulta de DNS apropiada (dichos datos están disponibles públicamente). Luego, con la clave pública recién adquirida y los campos cifrados “b” y “h”, el servidor receptor crea sus propios hashes y los compara con los recibidos en el mensaje. Si hay una coincidencia, la autenticación es correcta. Si no es así, la autorización de DKIM falla. Eso no significa que el mensaje será descartado, pero reduce sus posibilidades de ser entregado.

¿Cómo añades la firma DKIM a tus correos electrónicos?

La adición de DKIM requiere cambiar algunos detalles de tus registros DNS. Muchos clientes de correo electrónico explican el proceso en detalle, por lo que no nos centraremos en él aquí. Consulte los siguientes enlaces para conocer los detalles específicos de los proveedores más populares:

Si tu cliente de correo electrónico no ofrece ninguna ayuda para implementar DKIM, o si estás configurando tu propia infraestructura, consulte la documentación oficial de DKIM. Con Mailtrap Email API, obtienes registros DKIM con una rotación automatizada trimestral que ayuda a mantener tu infraestructura de correo electrónico segura.

¿Cómo puedes testar si DKIM se configuró correctamente?

Una vez que se añade DKIM, asegúrese de validarlo con un analizador DKIM en línea. Utilice, por ejemplo, MXToolbox o Mail-tester.com — este último se puede utilizar para comprobar los registros SPF simultáneamente.

También puedes enviar un correo electrónico de prueba a tu cuenta de Gmail o Yahoo y verificar si el mensaje llegó con tu firma DKIM.

Una vez que llegue el mensaje, expanda el encabezado del correo electrónico con el icono del triángulo debajo del nombre del remitente. Si el dominio del remitente aparece tanto para “mailed-by” como para “signed-by”, el mensaje se verificó con éxito con DKIM.

También puedes hacer clic en los tres puntos en la esquina superior derecha y “Mostrar original”. Aquí vas a ver el resultado de la autenticación DKIM. Si dice ‘PASS‘ y tu dirección de dominio, todo funciona bien. 

Para verificar el registro DKIM en Yahoo, haz clic en “Ver encabezado completo” y busque el rastro de DKIM. Si encuentras dkim=pass (ok), ¡has pasado la prueba!

¿Qué es Gappssmtp? 

gappssmtp es una clave de dominio predeterminada para los correos electrónicos enviados a través del servidor SMTP de gmail. El registro de autenticación DKIM a veces mostrará gappssmtp. Por ejemplo, si recibiste un correo electrónico dename@railsware.com, el registro DKIM mostrará railsware-com.20150623.gappssmtp.com.

Para verificar el registro de autenticación DKIM, por sospecha de phishing o de otro tipo, localice el menú desplegable “mostrar detalles” bajo el nombre del remitente. La sección “firmado por” es lo que está buscando para determinar si el correo electrónico fue enviado desde un servidor seguro. Si dice “gmail”, entonces el registro DKIM incluirá gappssmtp, por lo tanto, el correo electrónico se envió desde un servidor seguro con una clave de autenticación predeterminada.

Los correos electrónicos enviados a través de un servicio, como un calendario, unidad, caja o algo así, no tienen un DKIM. Solo podrás localizar una firma proporcionada por el servicio. Esas firmas, incluido gappssmtp, se asignan automáticamente y simplemente verifican la seguridad del correo electrónico que se recibió. Es un procedimiento estándar y automatizado realizado con fines de verificación.

Tres grandes conceptos erróneos sobre DKIM 

DKIM cifra tu correo

La principal preocupación de DKIM es verificar y confirmar que el mensaje está intacto. Los hashes bajo las etiquetas “bh” y “b” ofrecen protección contra la modificación y reproducción de mensajes, incluida la protección parcial contra el robo de identidad y la falsificación. Una prueba de verificación DKIM aprobada básicamente significa que el correo electrónico enviado tiene permiso para ser enviado desde este dominio y que el contenido del mensaje no fue alterado mientras estaba en tránsito.

Una firma DKIM se puede falsificar ya que sus detalles están disponibles en los registros DNS

No, no se puede falsificar. DKIM se basa en PKI (Infraestructura de clave pública), lo que significa que hay un par de claves involucradas. Una pública y otra privada. Si bien es cierto que la clave pública se publica en los registros DNS (y está disponible para que todos la recuperen), la clave privada se mantiene solo en el servidor del proveedor de servicios de correo electrónico. La clave privada se mantiene en secreto y se utiliza para firmar mensajes. La clave pública no puede firmar mensajes y se utiliza sólo para la verificación. 

DKIM te salva del spam de una vez por todas

¡Eso quisiéramos! Como la firma digital DKIM solo permite probar que el remitente está autorizado a enviar mensajes desde el dominio, y que el mensaje no se entrometió en el camino, DKIM solo reduce las posibilidades de que los spammers usen direcciones de correo electrónico falsificadas o robadas. 

Sin embargo, nada les impide comprar un dominio, configurar un registro DKIM y continuar con sus actividades de spam. De hecho, esto podría incluso, de alguna manera, legitimar el spam. 

Sin embargo, usar un nombre de dominio real en lugar de uno falso puede minimizar los ataques de phishing, como cuando recibes un correo electrónico falso de tu “banco” pidiéndote que confirmes los detalles de tu tarjeta de crédito.

DKIM key rotation: mantenga actualizada la seguridad de su DKIM

Aunque las claves públicas de 1024 bits de DKIM son difíciles de descifrar y las claves de 2048 bits son casi imposibles, todavía se publican en los registros DNS y, por lo tanto, podrían convertirse en un objeto de ataque. Las claves privadas (clave de firma) también podrían ser robadas si el sistema donde se almacena es hackeado.

Para mitigar los riesgos de comprometer las claves DKIM, debes minimizar el tiempo en que se utilizan activamente. El proceso de reemplazo sistemático del antiguo par de teclas DKIM con el nuevo se llama key rotationo rotación de claves DKIM.

En general, el periodo de rotación de claves recomendado es desde la sustitución trimestral hasta cada seis meses. La frecuencia de rotación de claves debe ser establecida por la organización, pero definitivamente, es una necesidad en el flujo de trabajo. 

El proceso de rotación de claves puede volverse bastante complicado dentro de las empresas que tienen múltiples flujos de correo electrónico, subdominios delegados o flujos enviados en su nombre por terceros. Por lo tanto, para mantener el flujo de correo electrónico seguro, el proceso de rotación de claves DKIM debe planificarse con anticipación.

¿Cómo rotar las claves DKIM? 

El proceso de rotación de claves DKIM se divide en dos fases principales: preparación y rotación per se. 

Primero, en la fase de preparación, identificas todos los flujos de correo que se envían desde tu empresa: desde mensajes transaccionales y mensajes conversacionales dentro de la empresa hasta correos electrónicos enviados por proveedores externos. La preparación también incluye informar a las partes interesadas internas, los administradores de correo electrónico, los administradores de DNS y el personal de soporte técnico interno responsable de los flujos de correo electrónico sobre el proceso de rotación de claves. También deben saber qué hacer en caso de rotación de teclas de emergencia si las claves DKIM se ven comprometidas inesperadamente.

En segundo lugar, en la fase de implementación, defines tu esquema de rotación del selector, rotas las claves y posteriormente realizas la auditoría .  

Messaging, Malware y Mobile Anti-Abuse Working Group (M3AAWG) han creado una guía paso a paso para las mejores prácticas de rotación de claves DKIM. Recuerda, la seguridad del correo electrónico siempre debe ser lo primero. 

Otras consideraciones

Esto concluye nuestra guía de DKIM, pero no debería ser el final de tus esfuerzos para mejorar la capacidad de entrega del correo electrónico. Echa un vistazo a nuestra guía sobre entregabilidad, donde enumeramos muchas otras ideas. Asegúrate de autenticar también con SPF (Sender Policy Framework) y DMARC (Domain-based Message Authentication, Reporting, and Conformance) para que tu dominio sea aún más creíble. Sólo se necesita un poco de tiempo y esfuerzo, pero la recompensa puede ser enorme.

Article by Piotr Malek Technical Content Writer @ Mailtrap
Article by Viktoriia Ivanenko Technical Content Writer @ Mailtrap

Experienced content and marketing specialist: content creation for the blog and video channel, UX/UI copies, technical writing, app localizations, and SEO. Skilled in marketing strategies, video production and management, creating brand concepts, technical and marketing writing, and analytical skills. Strong information technology professional of 10+ years work experience with a background from The University of Edinburgh, UK and Clark University, USA.