Seguridad en el correo electrónico: DKIM, SPF y DMARC

Resumen de los protocolos DKIM, SPF y DMARC usados para aumentar la seguridad del correo electrónico, prevenir el spoofing de direcciones y asegurar la entrega de mensajes.

Seguridad en el correo electrónico: DKIM, SPF y
DMARC

DKIM (DomainKeys Identified Mail), SPF (Sender Policy Framework) y DMARC (Domain-based Message Authentication, Reporting and Conformance) son protocolos desarrollados por la comunidad técnica que tiene como objetivo prevenir el spoofing de correo electrónico, asegurando la entrega de los mensajes adecuados y el marcado de como spam de los mensajes no deseados.

Si bien estos tres protocolos están diseñados para trabajar de forma conjunta, el más opcional de todos es DMARC. DKIM y SPF se pueden configurar de forma independiente.

Antes de aplicar cualquier cambio que pueda afectar a la distribución de los mensajes de correo electrónico es recomendable realizar un estudio de los efectos que se pueden producir. Una mala o incompleta configuración puede provocar que correos enviados por nuestros usuarios sean rechazados o marcados como Spam.

Para configurarlos necesitamos acceso a editar los registros DNS de nuestro dominio, pues todos se añaden como entradas TXT

DKIM: DomainKeys Identified Mail

En tanto a DKIM, este protocolo se encarga de firmar digitalmente los correos enviados desde nuestras cuentas. Permite que si un mensaje ha sido modificado en tránsito (mientras viajan entre servidores) no pase desapercibido; además sirve para comprobar que el correo proviene del dominio del que dice proceder.

Sin entrar en detalles técnicos, utiliza una clave asimétrica (clave pública - clave privada) para firmar los mensajes. Son firmados utilizando la clave privada, que gestiona el proveedor, y el servidor de correo que recibe el mensaje comprueba (utilizando la clave pública que se encuentra publicada como TXT en nuestro dominio) si concuerdan.

En el caso del dominio gonzaleztroyano.es, que tiene el servicio de correo electrónico en Google Workspace podemos ver el siguiente registro:

Para la siguiente consulta:

dig TXT google._domainkey.gonzaleztroyano.es +short

Obtenemos el siguiente resultado:

"v=DKIM1; k=rsa;
p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgFzQIWqfpq2XbSazxHsoIBaYnE9gJ04X9kI2jYdLYJWtIUZD9wsJ1jY2K5Esdd768lWhz5APXnDRuAeTsupAx/h9QleMzWSna3khC01YQuw4FyxllKUoqbSb3C7atm79QbJ9VXiqzCwc/0LzI73d1sPkBwRVcy5Nii4GHHZGzQ3vRHvBRY2angrqPsN3s1fX0nQCeaH8L4r/aTALKN1xx5WZ61BfLcwd4gc70vpK/ABlaxXePlI0FifoFCeoxH9A6SRlZF75EcE8RWZmfI/0LIEoXNXsOwsyBmIfCx6/OU5gN+zdqx3vIwSF5FpDaJHdLsWzS9fRZp9qdwos4OKPcwIDAQAB"

En el caso de los correos del subdominio educa.madrid.org se usa el siguiente selector DKIM para la firma de los correos electrónicos salientes:

Para la siguiente consulta:

dig TXT dkim_educamadrid._domainkey.educa.madrid.org +short

Obtenemos el siguiente resultado:

"v=DKIM1; k=rsa; p="
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr9MeSYdTKbW2Sa+Iwizf1dJEiqYxNKG1WtgqfU92jF5SU1urPxZy3FBfq5qZtGbsXL6TcTNAXUOwKv9D3r5C6ddZSrfVaNMRfHiMGJ8xZuLHSSXerN89zh3wPKA4T6A+3zW2igoy3JAk7i8ZfjOuqiqO+iDe" "a6ViwTgevG+g0ut3f3GtkpwdK4GNOWt"
"rPoplDuMalXl0kGRjpIagGy2d2v/sX5Yr5om+veJb2XXHbBaMk7g8w5V7nCE6XtnXWneOyLoaptyZK4/mbzA+INFdL1ZEEedla7Gx+d+QPHobr2SMikAvN1hixMYdn+yW5/pz5d3e4R4azlP/JK7zJsFfOwIDAQAB"
💡
Se ven varios registros, encerrados entre comillas (") debido a los límites que algunos servidores DNS imponen en la longitud máxima de los registros TXT.

Es posible que un dominio tenga varios selectores DKIM, cada uno de un servicio o servidor. Para ver con qué selector se cifra cada correo, podemos investigar las cabeceras a la hora de recibirlo. En el caso del ejemplo anterior:

Selector DKIM usado en este correo electrónico

SPF: Sender Policy Framework

Sobre SPF, es utilizado para identificar desde qué servidores (por sus direcciones IP) esperamos como propietarios del dominio que se envíen mensajes en nuestro nombre.

En el caso del dominio gonzaleztroyano.es, vemos el siguiente registro SPF. Tal y como se muestra en el registro, solo Google y Sendinblue están autorizados para enviar correo electrónico utilizando este dominio.

Para la consulta:

dig TXT gonzaleztroyano.es +short | grep spf1

Obtenemos el siguiente resultado:

"v=spf1 include:_spf.google.com include:spf.sendinblue.com -all"

En tanto al registro SPF de EducaMadrid, vemos que autoriza una serie de IPs en REDIRIS y otro par de ellas más. Al igual que en gonzaleztroyano.es, el “-all” deniega todos los orígenes que no estén explícitamente indicados en el registro:

Para la consulta:

dig TXT educa.madrid.org +short | grep spf1```

Obtenemos el siguiente resultado:
```plain
"v=spf1 include:spf.puc.rediris.es ip4:193.146.123.99 ip4:193.146.123.95 -all"

DMARC: Domain-based Message Authentication, Reporting and Conformance

DMARC es el último de los protocolos que aquí trataremos. Es el protocolo que cierra el círculo en la seguridad del correo electrónico, y no es estrictamente necesaria su configuración (la implementación de SPF y DKIM sí es altamente recomendable).

Utilizándolo podemos anunciar la política que queremos que otros sistemas utilicen en el caso de que reciban un mensaje de correo electrónico que aparentemente proceda de nuestro dominio pero que falle en alguno de los protocolos anteriormente descritos.

Para comprobar la correcta aplicación de la política podemos usar esta herramienta online que pone Google a disposición de administradores. No es necesario ningún tipo de registro y aunque la información no es muy exhaustiva, para un primer reconocimiento puede ser muy útil.