Saltar al contenido principal

DKIM

DKIM (DomainKeys Identified Mail) es un método de autenticación de email que añade una firma criptográfica a los headers del mensaje saliente, permitiendo a los servidores receptores verificar que el mensaje proviene realmente del dominio reclamado y no fue alterado en tránsito.

Definición

DKIM (DomainKeys Identified Mail) es una especificación de autenticación de email que usa criptografía de clave pública para firmar los mensajes salientes, permitiendo a los servidores receptores confirmar que el correo proviene del dominio que dice y que el cuerpo y los headers seleccionados no fueron modificados en tránsito. El dominio firmante publica su clave pública en DNS; los servidores receptores la traen y la usan para verificar la firma embebida en el header DKIM-Signature.

DKIM se desarrolló a partir de dos propuestas previas que se solapaban —DomainKeys de Yahoo e Identified Internet Mail de Cisco— y se publicó por primera vez como IETF RFC 4871 en 2007. La especificación autoritativa actual es la RFC 6376, publicada en septiembre de 2011 y actualizada por la RFC 8301 (2018) y la RFC 8463 (2018) para exigir algoritmos criptográficos más fuertes. DKIM está ampliamente desplegado en todo el ecosistema de email y es un componente requerido de una política DMARC que ofrezca protección significativa.

Cómo funciona

Cuando el servidor de correo de una organización envía un mensaje, el módulo firmante DKIM (integrado en MTAs como Postfix, Exim y Microsoft Exchange, o provisto como servicio por proveedores transaccionales como SendGrid, Mailgun, Amazon SES y Postmark) realiza las siguientes operaciones.

El firmante elige un subset de headers para incluir en la firma —típicamente From, To, Subject, Date y Content-Type— y los canonicaliza usando uno de dos algoritmos definidos: simple (normalización mínima de espacios) o relaxed (más permisivo, tolerante a reescrituras menores en tránsito). El cuerpo del mensaje se canonicaliza de forma similar y se hashea con SHA-256 (algoritmo obligatorio desde que la RFC 8301 deprecó el SHA-1 más viejo). El firmante computa entonces una firma RSA o Ed25519 sobre el hash del header más una cadena estructurada de metadata de firma e inserta un header DKIM-Signature arriba del mensaje.

El header DKIM-Signature contiene: v=1 (versión), a=rsa-sha256 (algoritmo), d=example.com (dominio firmante, conocido como tag d=), s=selector1 (selector, usado para buscar la clave pública específica), h=from:to:subject (headers firmados), bh=<hash del cuerpo> y b=<firma en base64>.

El dueño del dominio publica la clave pública correspondiente en <selector>._domainkey.<dominio> como un registro DNS TXT. Cuando Gmail, Outlook, Yahoo Mail o cualquier MTA compatible con la RFC 6376 recibe el mensaje, consulta el DNS por ese registro, trae la clave pública y verifica la firma criptográfica. Una firma válida produce un resultado DKIM pass. Una firma faltante o inválida, o cualquier modificación a los headers firmados o al cuerpo en tránsito, produce un resultado fail o neutral, que se pasa al motor de evaluación DMARC.

Los selectores (tag s=) permiten a un dominio publicar varias claves DKIM al mismo tiempo, útil para rotar claves sin interrumpir el servicio o para aislar claves entre distintos sistemas de envío (por ejemplo, marketing._domainkey.example.com versus transactional._domainkey.example.com).

Dónde aparece

DKIM es un requisito fundacional de entregabilidad para cualquier servicio dependiente de email. Los proveedores transaccionales como Amazon SES, SendGrid (parte de Twilio), Mailgun (parte de Sinch), Postmark y SparkPost incluyen el firmado DKIM como paso obligatorio durante la verificación de dominio. El proveedor genera un par de claves RSA-2048 o Ed25519, muestra la clave pública como registro DNS TXT y le pide al dueño del dominio publicarla antes de habilitar el envío.

Para plataformas de concurso que despachan correos de confirmación de voto, el firmado DKIM es especialmente importante porque los correos deben pasar los chequeos aplicados por los grandes proveedores de bandeja —Google Workspace / Gmail, Microsoft Outlook y Exchange Online Protection, Yahoo Mail, Apple iCloud Mail y ProtonMail. Los mensajes sin firmar o con firmas que fallan tienen mucha mayor probabilidad de caer en spam o ser bloqueados por completo, evitando que los votantes confirmen sus envíos.

Herramientas de testing como Mail-Tester, GlockApps y MXToolbox DKIM Lookup permiten a los remitentes inspeccionar y validar su configuración DKIM antes de pasar a producción. Google Postmaster Tools y Microsoft SNDS proveen datos de entregabilidad agregados que reflejan tasas de pase DKIM en el tiempo.

Ejemplos prácticos

Una plataforma de concurso configurada con un selector DKIM s=contest para el dominio votes.example.com publica la clave pública en contest._domainkey.votes.example.com. Cada correo saliente de confirmación lleva un header DKIM-Signature firmado con la clave privada correspondiente. Cuando la cuenta de Gmail del votante recibe el mensaje, el filtro entrante de Gmail consulta el DNS, verifica la firma, registra un pass y reenvía el resultado a su clasificador de spam. El pass DKIM confirmado, combinado con el alineamiento SPF, satisface las condiciones para cumplir DMARC.

Un administrador de concurso rota de una clave RSA de 1024 bits (ya no considerada criptográficamente adecuada) a una de 2048 bits tras leer la RFC 8301. El selector viejo se mantiene activo siete días para cubrir mensajes en tránsito y luego se retira del DNS. Todos los nuevos mensajes usan el selector y la clave actualizados.

Conceptos relacionados

DKIM trabaja en conjunto con Registro SPF —que autentica la IP del servidor remitente— y DMARC —que define una acción de política y mecanismo de reportes con base en los resultados de SPF y DKIM. Las dos señales deben entenderse juntas; pasar DKIM solo no vuelve a un mensaje compatible con DMARC si el dominio d= no se alinea con el dominio RFC5322.From. En el contexto de operación de concursos, las consecuencias prácticas de fallos DKIM se explican en Voto con confirmación por correo, donde el inbox placement del mensaje de confirmación define directamente si un voto emitido se cuenta.

Del blog — guías y casos de estudio

Guías prácticas, análisis técnicos y casos de estudio anonimizados.60+ artículos. La selección rota.

Victor Williams — founder of Buyvotescontest.com
Victor Williams
En línea · respuesta en 5 min

Hola — pásame la URL del concurso y te paso precio en una hora. Aún sin tarjeta.