¿Qué es un registro DNS DKIM?

Un registro DKIM es un registro TXT de DNS especializado que almacena la clave pública que se ha usado para verificar la autenticidad de un correo electrónico.

Objetivos de aprendizaje

Después de leer este artículo podrás:

  • Describir cómo DKIM ayuda a detener el spam en el correo electrónico
  • Ver un ejemplo de registro DKIM
  • Explicar cómo funcionan las cabeceras DKIM

Copiar enlace del artículo

¿Qué es DKIM?

DomainKeys Identified Mail (DKIM) es un método de autenticación de correo electrónico que ayuda a evitar que los spammers y otros elementos maliciosos se hagan pasar por un dominio legítimo.

Todas las direcciones de correo electrónico tienen un dominio: la parte de la dirección después del símbolo "@". Los spammers y los atacantes pueden intentar suplantar un dominio cuando envían correos electrónicos para llevar a cabo ataques de phishing u otros fraudes.

Supongamos que Chuck quiere engañar a Alice, que trabaja para example.com, con el fin de que le envíe información confidencial de la empresa. Podría enviarle un correo electrónico que pareciera que viene de "bob@example.com" para engañarla y hacerle creer que él también trabaja para example.com.

DKIM, junto con el Marco de políticas del remitente (SPF) y la Autenticación de mensajes, informes y conformidad basada en dominios (DMARC), dificulta que los atacantes puedan suplantar dominios de esta manera. Los correos electrónicos que no superan DKIM y SPF se marcan como "spam" o no son entregados por los servidores de correo electrónico. Si example.com ha configurado DKIM, SPF y DMARC para su dominio, es probable que Alice ni siquiera vea el correo electrónico malicioso de Chuck, ya que irá a su carpeta de spam o será rechazado por el servidor de correo electrónico.

¿Cómo funciona DKIM?

Hay dos aspectos principales de DKIM: el registro DKIM, que se almacena en los registros del Sistema de nombres de dominio (DNS) para el dominio, y la cabecera DKIM, que se adjunta a todos los correos electrónicos del dominio.

DKIM usa esquemas de firma digital basados en criptografía de clave pública para autenticar de dónde procede un correo electrónico, que realmente procede de un servidor que envía correos electrónicos desde ese dominio. Se utilizan un par de claves criptográficas: una clave privada para que el remitente firme los mensajes, y una clave pública para que el receptor verifique las firmas. Un receptor no puede utilizar la clave pública para firmar mensajes y viceversa.

El proveedor de correo electrónico genera la clave pública y la clave privada. Entregan la clave pública al propietario del dominio, que almacena la clave pública en un registro DNS de acceso público: el registro DKIM.

Todos los correos electrónicos enviados desde ese dominio incluyen una cabecera DKIM, que contiene una sección de datos firmada con la clave privada: esto se conoce como "firma digital". Un servidor de correo electrónico puede comprobar el registro DNS DKIM, conseguir la clave pública y usarla para verificar la firma digital.

Este proceso también garantiza que no se haya cambiado el correo electrónico en tránsito. No se verificará la firma digital si se han alterado las cabeceras o el cuerpo del correo electrónico, como un sellado a prueba de manipulaciones en un bote de medicamentos.

¿Qué es un registro DKIM?

Un registro DKIM almacena la clave pública DKIM, una cadena de caracteres aleatoria que se usa para verificar cualquier cosa firmada con la clave privada. Los servidores de correo electrónico consultan los registros DNS del dominio para ver el registro DKIM y la clave pública.

Un registro DKIM es realmente un registro TXT ("texto") de DNS . Los registros TXT pueden utilizarse para almacenar cualquier texto que un administrador de dominio quiera asociar a su dominio. DKIM es uno de los muchos usos de este tipo de registro DNS.

Aquí tienes un ejemplo de registro TXT de DNS DKIM:

Nombre Escribir Contenido TTL
big-email._domainkey.example.com TXT v=DKIM1; p=76E629F05F70
9EF665853333
EEC3F5ADE69A
2362BECE4065
8267AB2FC3CB
6CBE
6000

Nombre

A diferencia de la mayoría de los registros TXT de DNS, los registros DKIM se almacenan con un nombre especializado y no solo con el nombre del dominio. Los nombres de los registros DKIM siguen este formato:

[selector]._domainkey.[dominio]

El selector es un valor especializado emitido por el proveedor de servicios de correo electrónico que utiliza el dominio. Se incluye en la cabecera DKIM para permitir que un servidor de correo electrónico realice la búsqueda DKIM necesaria en el DNS. El dominio es el nombre del dominio de correo electrónico. ._domainkey. se incluye en todos los nombres de registros DKIM.

Para buscar el registro DKIM, los servidores de correo electrónico usan el selector DKIM proporcionado por el proveedor de servicios de correo electrónico, y no solo el nombre de dominio. Supongamos que example.com utiliza Big Email como su proveedor de servicios de correo electrónico, y supongamos que Big Email utiliza el selector DKIM big-email. La mayoría de los registros DNS de example.com se llamarían example.com, pero su registro DNS DKIM tendría el nombre big-email._domainkey.example.com, que aparece en el ejemplo anterior.

Contenido

Esta es la parte del registro DNS DKIM que enumera la clave pública. En el ejemplo anterior, v=DKIM1 indica que este registro de TXT debe interpretarse como DKIM, y la clave pública lo es todo después de p=.

Tipo de registro y TTL

Estos son campos estándar en los registros DNS. TXT indica que se trata de un registro TXT de DNS. "TTL" significa tiempo de vida (medido en segundos), e indica el tiempo que este registro debe considerarse válido antes de que deba actualizarse. Los registros DKIM suelen tener un TTL de varios minutos.

¿Qué es una cabecera DKIM? ¿Cómo funciona una firma DKIM?

El servidor de correo electrónico remitente crea su firma digital usando las cabeceras del correo electrónico, el cuerpo del correo electrónico (en realidad un hash del cuerpo del correo electrónico - leer más a continuación) y su clave privada. Esta firma digital se adjunta al correo electrónico como parte de la cabecera DKIM.

La cabecera DKIM es una de las muchas cabeceras que se adjuntan a un correo electrónico. La mayoría de las aplicaciones de correo electrónico no muestran la cabecera al mostrar un correo electrónico, a no ser que el usuario seleccione ciertas opciones. Por ejemplo, en Gmail los usuarios pueden ver la cabecera de un correo electrónico si hacen clic en los tres puntos verticales de la parte superior derecha del correo electrónico, y luego hacen clic en "Mostrar original."

Aquí tienes un ejemplo de cabecera DKIM:

v=1; a=rsa-sha256; 
        d=example.com; s=big-email;
        h=from:to:subject;
      bh=uMixy0BsCqhbru4fqPZQdeZY5Pq865sNAnOAxNgUS0s=;
  b=LiIvJeRyqMo0gngiCygwpiKphJjYezb5kXBKCNj8DqRVcCk7obK6OUg4o+EufEbB
tRYQfQhgIkx5m70IqA6dP+DBZUcsJyS9C+vm2xRK7qyHi2hUFpYS5pkeiNVoQk/Wk4w
ZG4tu/g+OA49mS7VX+64FXr79MPwOMRRmJ3lNwJU=
  • v= muestra la versión de DKIM que se está utilizando.
  • d= es el nombre de dominio del remitente.
  • s= es el selector que debe utilizar el servidor receptor para buscar el registro DNS.
  • h= enumera los campos de cabecera que se usan para crear la firma digital, o b. En este caso, se utilizan las cabeceras de, para y asunto. Si Bob enviara un correo electrónico a Alice con el dominio example.com y el asunto fuera "Receta de tarta de queso," el contenido utilizado aquí sería "bob@example.com" + "alice@example.com" + "Receta de tarta de queso". (Este contenido también se canonizaría, es decir, se pondría en un formato estandarizado).
  • bh= es el hash del cuerpo del correo electrónico. Un hash es el resultado de una función matemática especializada llamada función hash. Se incluye para que el servidor de correo electrónico receptor pueda calcular la firma antes de que se cargue todo el cuerpo del correo electrónico, ya que los cuerpos de los correos electrónicos pueden tener una longitud variable y, en algunos casos, cargarlos puede llevar mucho tiempo.
  • a= es el algoritmo usado para calcular la firma digital, o b, así como para generar el hash del cuerpo del correo electrónico, o bh. En este ejemplo, se utiliza RSA-SHA-256 (RSA utiliza SHA-256 como función hash para la firma digital, y SHA-256 para el hash del cuerpo).
  • b= es la firma digital, generada a partir de h y bh, y firmada con la clave privada.

La firma digital (b=) permite que el servidor receptor 1. autentique el servidor emisor y 2. garantice la integridad, es decir, que el correo electrónico no haya sido manipulado.

El servidor receptor hace esto tomando el mismo contenido que aparece en h= más el hash del cuerpo (bh=) y usando la clave pública del registro DKIM para comprobar si la firma digital es válida. Si se ha utilizado la clave privada correcta y si el contenido (cabeceras y cuerpo) no ha sido alterado, el correo electrónico supera la comprobación DKIM.

¿Cómo se relaciona el DKIM con DMARC?

DMARC es un método de autenticación de correo electrónico desarrollado sobre DKIM y SPF. DMARC describe lo que hay que hacer con un correo electrónico que no supera SPF y DKIM. Juntos, SPF, DKIM y DMARC ayudan a evitar el spam y la suplantación de identidad de correo electrónico. Al igual que los registros DKIM, las políticas de DMARC se almacenan como registros TXT de DNS.

Cloudflare ofrece un Asistente de DNS de seguridad en correo electrónico que permite que los usuarios configuren rápidamente los registros TXT de DNS de autenticación de correo electrónico, lo cual ayuda a los administradores de dominios a impedir que elementos malintencionados se hagan pasar por su dominio.

Más información sobre los registros DNS para correo electrónico:

Para aprender más sobre DKIM, consulta RFC 6376.