Alerta importante: Google y Yahoo exigirán DMARC a partir de abril de 2024.
PowerDMARC

Firma DKIM: ¿Qué es, por qué se necesita y cómo funciona?

Firma DKIM

Firma DKIM

Tiempo de lectura: 6 min

Claves de Dominio Correo Identificado (DKIM) es un método de autenticación de correo electrónico que permite a una organización asumir la responsabilidad de un mensaje enviado. Utiliza la criptografía de clave pública para "firmar" digitalmente los correos electrónicos, demostrando a los destinatarios que el mensaje fue enviado por el propietario del dominio. Los receptores pueden cotejar la firma con la clave pública publicada de su dominio para verificar la firma.

Este artículo examinará DKIM en detalle y le dará una visión general de cómo funciona este método de autenticación de correo electrónico.

¿Qué es la firma DKIM?

DKIM son las siglas de DomainKeys Identified Mail. Es un sistema de autenticación de correo electrónico que proporciona integridad y no repudio mediante el uso de firmas criptográficas. Junto con DMARC puede ayudar a crear una sólida infraestructura de protección contra la falsificación para sus correos electrónicos.

El protocolo DKIM crea una firma criptográfica para cada mensaje enviado a los destinatarios, así como una firma de dominio que se añade a la cabecera del mensaje.

Esta firma es utilizada por el receptor para verificar que el mensaje fue realmente enviado por el propietario del dominio y no por otra persona. También verifica que el mensaje no ha sido manipulado a lo largo de su recorrido desde el emisor hasta el receptor.

Si no coincide, entonces

  1. El mensaje fue alterado durante la transmisión, o
  2. El mensaje se envía en nombre de otra persona que tiene acceso a la clave privada del servidor emisor

En estos casos de firmas no coincidentes, DKIM impedirá que esos correos se entreguen a sus destinatarios porque no podrán validarlos como mensajes legítimos de su marca.

¿Cómo funciona una firma DKIM?

Las firmas DKIM funcionan insertando una firma digital en la cabecera de un correo electrónico. Esta firma puede ser verificada por el servidor receptor y utilizada para determinar si un correo electrónico ha sido manipulado o no durante el tránsito.

DKIM utiliza la criptografía de clave pública, que se basa en un par de claves: una privada y otra pública. La clave pública se distribuye a cualquiera que la quiera, mientras que la clave privada se mantiene en secreto (normalmente por el propietario).

Cuando usted firma un correo electrónico utilizando DKIM, su clave privada se utiliza para crear un hash del contenido del mensaje y luego encripta ese hash con la clave pública del receptor. Este hash cifrado se inserta en la cabecera del mensaje, donde puede ser validado por el receptor.

Las claves de la firma DKIM

Las firmas DKIM se generan utilizando dos claves criptográficas, una pública y otra privada. La clave pública se publica en DNS, mientras que la clave privada se mantiene en secreto.

Cuando se firma un correo electrónico, la clave privada se utiliza para generar un hash del mensaje. Este hash se encripta con la clave pública y se envía junto con el propio mensaje.

Cuando el destinatario recibe esta información, utiliza su clave privada para descifrar el hash y verificar que coincide con el contenido original del mensaje.

Las partes de la firma DKIM

Una firma DKIM consta de dos partes: una cabecera y el cuerpo. La cabecera contiene información sobre la identidad del remitente, incluyendo su dirección de correo electrónico y su clave pública. El cuerpo contiene el mensaje real que se envió.

  1. Para calcular una firma DKIM, primero se toma un hash MD5 de su nombre de dominio (por ejemplo, "ejemplo.com"), que es su clave pública.
  2. A continuación, concatena su nombre de dominio con un hash SHA1 (por ejemplo, "sha1(ejemplo.com)") y lo añade al mensaje original que se envió.
  3. A continuación, toma otro hash MD5 de esta cadena combinada (por ejemplo, "md5(sha1(ejemplo.com))") y lo adjunta como cabecera al principio de su mensaje antes de enviarlo para su entrega.

Pasos de la firma DKIM

Introducción a DKIM:

  1. El primer paso es crear una clave privada, que se utiliza para firmar el mensaje.
  2. El segundo paso es crear una clave pública, que se utiliza al verificar la firma.
  3. El tercer paso es generar dos registros TXT de DNS: uno para la clave pública y otro para el nombre del selector.
  4. El cuarto paso es publicar estos registros en su archivo de zona DNS.

Pasos de la firma DKIM:

1. El remitente genera un mensaje con un identificador único llamado función hash criptográfica (normalmente SHA-256). Este identificador único se denomina campo de cabecera DKIM-Signature y contiene información sobre quién lo ha firmado y cuándo lo ha hecho.

2. El remitente añade al mensaje campos de cabecera adicionales que contienen información sobre:

3. Por último, los destinatarios que deseen verificar estas firmas utilizarán su copia de la clave pública del remitente a partir de sus registros DNS o de un servicio intermedio como SenderID o Mailgun, y luego la utilizarán para validar cualquier mensaje con cabeceras DKIM adjuntas.

Comprensión de las etiquetas utilizadas en la firma DKIM

Este es un ejemplo de cómo podría ser un registro de firma DKIM:

DKIM-Signature: v=1;

a=rsa-sha256;

s=jun2005.eng;

c=relajado/relajada;

d=ejemplo.com;

s=dkim;

t=1526555738;

bh=mhU6OJb5ldZf+z/pX9+0Nc4tj/lmyYHWbR8LgI2Q=;

h=To:From:Subject:Date:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding;

b=s1sdZCdX9vxocsMSlT7cOrYixl1g8wfkdzrVe7BGN6ZdPV9xu2A

v= Esta etiqueta nos indica la versión del DKIM.

a= Especifica el algoritmo utilizado por el firmante para generar su clave pública. Puede ser uno de los siguientes: RSA1_5, RSA-SHA1 o RSASSA-PSS. Si falta esta etiqueta, se asume RSA-SHA1.

c= Especifica el algoritmo de canonicalización utilizado para generar hashes a partir de los campos de cabecera, tal y como exige [BCP14]. Va seguido de una lista separada por comas de 1 o más algoritmos de canonicalización (por ejemplo, "c=relaxed"). Si se omite esta etiqueta, se asume una canonización relajada.

d= Especifica qué nombre de dominio debe utilizarse al generar las firmas de los mensajes enviados por este servidor (o por otro destinatario).

s= La etiqueta "s" es la cadena de selección, que es utilizada por un servidor receptor para determinar qué clave pública debe utilizarse para verificar la firma.

t= La etiqueta de marca de tiempo se utiliza para registrar cuándo se creó la firma y suele representarse como una marca de tiempo Unix (el número de segundos desde el 1 de enero de 1970).

bh= Esta etiqueta representa el hash del cuerpo, que es una versión encriptada del contenido de su mensaje (incluidas las cabeceras). Esto ayuda a evitar la manipulación de los mensajes después de que hayan sido firmados por DKIM y antes de que lleguen a sus destinatarios.

h= El valor hash de la cabecera contiene todas las cabeceras en su totalidad (incluidas las firmadas por Sender Policy Framework o DomainKeys Identified Mail), excepto las que se han excluido explícitamente incluyéndolas en una lista de exclusión. Este valor debe calcularse utilizando SHA-1 o MD5.

b= La etiqueta "b" es la representación codificada en base64 de una función hash criptográfica en el cuerpo canonizado del mensaje (es decir, después de eliminar la codificación MIME).

Generar una firma DKIM

  1. Generar una clave pública y privada.
  2. Generar una cabecera y un pie de página DKIM.
  3. Firme el contenido del correo electrónico con su clave privada utilizando el algoritmo seleccionado, por ejemplo, RSA-SHA256 o RSA-SHA512
  4. Comprime el mensaje utilizando el algoritmo seleccionado, por ejemplo, deflactar o ninguno.
  5. Inserte las cabeceras DKIM al principio del mensaje antes de cualquier cabecera MIME.
  6. Inserte el pie de página DKIM después de cualquier pie de página MIME.

Garantizar la validez de la firma DKIM

Se pueden tomar algunas medidas para garantizar que la firma DKIM sea válida:

  1. Determine si desea utilizar un algoritmo de firma DKIM tradicional o uno optimizado.
  2. Calcule un valor hash para la cabecera y el cuerpo de su mensaje (normalmente sería SHA-256).
  3. Elija un algoritmo de firma adecuado (como RSA o ECDSA).
  4. Verifique que su clave pública coincide con el selector que especificó anteriormente en el Paso 1 (esto se hace utilizando el DNS).
  5. Firme su mensaje utilizando su clave privada y almacénela como una cadena ASCII en formato Base64 dentro del encabezado de su mensaje de correo electrónico (además de colocarla en el DNS).

Verificación de una firma DKIM

La verificación de firmas DKIM es complicada. Requiere mucha experiencia para configurarla y mantenerla, y a menudo se utiliza junto con otros sistemas como SPF, que también son complicados.

Por ello, la mayoría de los vendedores de correo electrónico utilizan una herramienta de verificación de firmas DKIM, como un comprobador de registros DKIM para comprobar sus firmas DKIM. Esta herramienta comprueba las claves DKIM que se han añadido a un correo electrónico y las verifica con una base de datos pública. Si las claves son válidas y de confianza, el correo electrónico puede considerarse legítimo.

Esto es importante por varias razones: en primer lugar, asegura que sus correos electrónicos no sean marcados como spam por los ISPs o los clientes de los ISPs; en segundo lugar, le permite evitar que su dominio esté en la lista negra de otros dominios (esto se llama envenenamiento de dominio); finalmente, ayuda a asegurar que sus correos electrónicos no se vean atrapados en ningún tipo de ataque man-in-the-middle.

Conclusión

DKIM es una solución prometedora que permite a una organización validar la legitimidad de los correos electrónicos, especialmente los procedentes de remitentes externos. Cuando se aplica de forma coherente en un entorno de mensajería, proporciona a los destinatarios un alto grado de confianza en que un correo electrónico fue enviado por un representante autorizado del dominio del remitente. Sin embargo, es importante señalar que, aunque DKIM proporciona un mecanismo de verificación, no es suficiente para proteger contra los ataques de fraude por correo electrónico, como la suplantación de identidad y el phishing. Para ello, es necesaria una política DMARC de rechazo es obligatoria.

¿Necesita ayuda?

La autentificación del correo electrónico es una parte necesaria de la estrategia de marketing digital de cualquier empresa. Con tantos correos electrónicos que se envían y reciben cada día, es fácil que su marca se pierda en la confusión. Pero con los servicios de autenticación de correo electrónico de PowerDMARC, puede asegurarse de que sus correos electrónicos sean vistos por las personas adecuadas. 

Nuestra solución de autenticación de correo electrónico le ayudará:

Salir de la versión móvil