emailr_
Todos los artículos
explainer·9 min

DKIM explicado: cómo funciona la firma de email

authenticationdkimsecurity

Resumen

DKIM es una firma criptográfica que demuestra que tu email no ha sido manipulado y que realmente proviene de tu dominio. Piensa en ello como un sello de cera que se rompe si alguien abre el sobre.

En 2016, unos hackers vulneraron el sistema de email de una gran campaña política. Pero lo más dañino no fue la brecha en sí, sino lo que vino después. Los atacantes modificaron algunos de los emails robados antes de publicarlos, añadiendo contenido inventado a hilos de mensajes reales. Sin firmas criptográficas, no había forma de probar qué emails eran auténticos y cuáles habían sido alterados.

Este es el problema que DKIM resuelve. No solo demostrar que un email proviene de quien dice provenir, sino probar que no ha sido modificado desde que se envió.

DKIM—DomainKeys Identified Mail—añade una firma criptográfica a cada email que envías. Esta firma está vinculada matemáticamente al contenido del email. Cambia un solo carácter y la firma se vuelve inválida. Es el equivalente digital de un sello a prueba de manipulaciones.

La criptografía detrás de DKIM

DKIM usa criptografía de clave pública, la misma tecnología que asegura las conexiones HTTPS y los monederos de criptomonedas. Si no estás familiarizado con cómo funciona, aquí va el concepto esencial.

Generas dos claves vinculadas matemáticamente: una privada y otra pública. Cualquier cosa cifrada con la clave privada solo puede descifrarse con la clave pública, y viceversa. La clave privada permanece secreta; la clave pública se comparte con el mundo.

Cuando envías un email, tu servidor de correo toma ciertas partes del mensaje—típicamente la dirección From, el Subject, la Date y el cuerpo—y crea un hash (una huella de longitud fija) de ese contenido. Luego cifra ese hash usando tu clave privada. El hash cifrado es tu firma DKIM.

La firma se añade al email como un encabezado. Cuando el email llega a su destino, el servidor receptor recupera tu clave pública desde DNS, descifra la firma para obtener el hash original y luego crea su propio hash del contenido del email. Si ambos hashes coinciden, el email es auténtico y no ha sido modificado. Si no coinciden, algo cambió.

La belleza de este sistema es que solo alguien con tu clave privada puede crear una firma válida. Y como la firma está ligada al contenido del email, cualquier modificación—hasta añadir un espacio—la invalida.

Qué firma realmente DKIM

No todas las partes de un email se firman. DKIM te permite especificar qué encabezados incluir en la firma, y esta elección importa más de lo que podrías pensar.

El encabezado 'From' siempre se firma—ese es el objetivo, probar quién envió el email. La mayoría de implementaciones también firman 'To', 'Subject', 'Date' y 'Message-ID'. El cuerpo del email se firma por separado (su hash aparece en el campo 'bh' de la firma).

Los encabezados que podrían cambiar legítimamente durante el tránsito—como los 'Received' que añade cada servidor por el que pasa el email—normalmente no se firman. Si se firmaran, la firma se rompería cada vez que el email fuera reenviado.

Esta firma selectiva es a la vez una característica y una limitación. Permite que los emails pasen por múltiples servidores sin romper DKIM, pero también significa que los encabezados no firmados pueden modificarse sin ser detectado. Un atacante sofisticado podría potencialmente añadir encabezados engañosos a un email legítimamente firmado.

Selectores y rotación de claves

Cuando buscas una clave pública DKIM en DNS, no consultas solo el dominio: consultas un 'selector' específico dentro de ese dominio. Este detalle, que parece menor, habilita capacidades importantes.

Un selector es simplemente un nombre que identifica qué clave usar. Tu firma DKIM incluye un campo 's=' que especifica el selector, y el servidor receptor busca [selector]._domainkey.[yourdomain] para encontrar la clave pública.

¿Por qué importa esto? Porque te permite tener múltiples claves activas simultáneamente. Podrías usar distintos selectores para diferentes servicios de email—uno para tu plataforma de marketing y otro para tus emails transaccionales. Cada servicio tiene su propia clave privada y, si una se ve comprometida, puedes revocarla sin afectar a las demás.

Los selectores también permiten la rotación de claves. Las buenas prácticas de seguridad indican que deberías generar nuevas claves periódicamente, pero no puedes simplemente sustituirlas al instante: los emails en tránsito firmados con la clave antigua fallarían la verificación. Con selectores, puedes publicar una nueva clave bajo un selector nuevo, empezar a firmar con ella los emails nuevos y mantener la clave antigua activa hasta que se entreguen todos los emails en tránsito. Luego retiras la clave antigua.

La mayoría de servicios de email gestionan esto automáticamente, pero si administras tu propia infraestructura de correo, la rotación de claves es algo que debes planificar.

La relación de DKIM con SPF y DMARC

DKIM no existe de forma aislada. Es una pieza de un sistema de autenticación de email de tres partes, y entender cómo encajan es crucial.

SPF verifica que el servidor emisor esté autorizado a enviar para el dominio. DKIM verifica que el contenido del email sea auténtico y no haya sido modificado. Pero ninguno de los dos, por sí solo, vincula la autenticación con la dirección 'From' que los destinatarios realmente ven.

Aquí es donde entra DMARC. DMARC requiere que SPF o DKIM (o ambos) pasen Y que el dominio autenticado se alinee con el dominio visible en 'From'. Sin DMARC, un atacante podría enviar un email que pase SPF para su propio dominio mientras muestra tu dominio en el encabezado 'From'.

DKIM tiene una ventaja significativa sobre SPF: sobrevive al reenvío. Cuando alguien reenvía tu email, la IP del servidor de reenvío no estará en tu registro SPF, por lo que SPF falla. Pero la firma DKIM viaja con el contenido del email, así que permanece válida incluso después del reenvío. Por eso es importante tener tanto SPF como DKIM: cubren las debilidades del otro.

Cuando DKIM falla

Los fallos de DKIM ocurren, y no siempre se deben a atacantes. Entender las causas comunes te ayuda a solucionar problemas de entregabilidad.

La causa más común es la modificación del contenido por servidores intermedios. Algunas puertas de enlace de seguridad de correo agregan pies de página a los emails salientes o modifican enlaces para seguimiento. Si estas modificaciones ocurren después de la firma DKIM, la firma se invalida. La solución es asegurarte de que la firma DKIM ocurra al final, después de todas las modificaciones de contenido.

Las listas de correo son otro culpable frecuente. Muchas listas de correo modifican el Subject (añadiendo prefijos '[listname]') o agregan pies de página. Como normalmente se firma Subject, estas modificaciones rompen DKIM. Algunos software modernos de listas de correo vuelven a firmar los emails con la clave DKIM de la lista, pero muchos no.

Las discrepancias de claves también causan fallos. Si rotas tu clave DKIM pero no actualizas DNS, o si hay un error tipográfico en el registro DNS, la verificación fallará. Prueba siempre después de hacer cambios.

Por último, el desfase de reloj puede causar problemas. Las firmas DKIM incluyen una marca de tiempo, y algunas implementaciones rechazan firmas que son demasiado antiguas o del futuro. Si el reloj de tu servidor de correo está significativamente desajustado, las firmas podrían fallar la verificación.

Configurar DKIM correctamente

Si usas un servicio de email gestionado como Google Workspace, Amazon SES o una email API dedicada, la configuración de DKIM suele ser sencilla: ellos generan las claves y te indican qué registro DNS añadir. Pero aún hay decisiones que tomar y trampas que evitar.

La longitud de la clave importa. El mínimo es 1024 bits, pero 2048 bits es ahora la recomendación estándar. Algunos sistemas antiguos no manejan claves de 2048 bits en DNS (hay soluciones que implican dividir la clave en varias cadenas), pero esto es cada vez más raro. No uses claves de 1024 bits en nuevas implementaciones.

Prueba a fondo antes de depender de DKIM. Envía emails de prueba a Gmail, Outlook y Yahoo, luego revisa los encabezados para confirmar que DKIM está pasando. Busca 'dkim=pass' en el encabezado Authentication-Results. Si ves 'dkim=fail' o ningún resultado de DKIM, algo está mal.

Supervisa tus reportes de DMARC. Te mostrarán las tasas de acierto/fallo de DKIM en todo tu email. Un aumento repentino de fallos podría indicar un problema de configuración, una clave comprometida o que alguien intenta suplantar tu dominio.

Planifica la rotación de claves desde el principio. Incluso si hoy no rotas claves, prepara tu infraestructura para poder hacerlo. Usa nombres de selector significativos que incluyan fechas o números de versión, dejando claro qué clave es la actual.

Frequently asked questions

¿DKIM cifra mis emails?

No. DKIM firma los emails; no los cifra. La firma prueba la autenticidad y la integridad, pero el contenido del email sigue siendo legible por cualquiera que lo intercepte. Para cifrado, necesitas S/MIME o PGP, o confiar en TLS para el cifrado en tránsito.

¿Puedo usar la misma clave DKIM para varios dominios?

Técnicamente sí, pero no se recomienda. Si la clave se ve comprometida, todos los dominios se verán afectados. Cada dominio debería tener su propio par de claves. La mayoría de los servicios de email gestionan esto automáticamente.

¿Por qué algunos de mis emails pasan DKIM y otros fallan?

Normalmente esto significa que algo está modificando algunos emails después de la firma. Verifica si tienes herramientas de seguridad de correo, respuestas automáticas o reglas de reenvío que puedan alterar el contenido. También comprueba que todas tus fuentes de envío estén correctamente configuradas para DKIM.

¿Con qué frecuencia debo rotar claves DKIM?

No hay un estándar universal, pero hacerlo anualmente es una base razonable. Una rotación más frecuente (trimestral) es mejor si puedes automatizarla. Lo importante es contar con un proceso de rotación, no la frecuencia específica.

e_

Escrito por el equipo de emailr

Construyendo infraestructura de email para desarrolladores

¿Listo para empezar a enviar?

Obtén tu clave API y envía tu primer email en menos de 5 minutos. No se requiere tarjeta de crédito.