En este post vamos a conocer y aprender a usar DKIM, una de las implementaciones de seguridad más importantes en el correo electrónico, mediante la cual obtendremos diversas mejoras. Gracias a DKIM se puede autenticar el correo electrónico, evitando algunos tipos de ataques. Sin embargo, si somos emisores de correo electrónico, nos interesará implementarlo sobre todo porque conseguiremos una mayor entrega de los mensajes de email.
¿Qué es DKIM?
DKIM es un acrónimo de DomainKeys Identified Mail. Es un método de autenticación de correo electrónico que permite a un emisor verificar la autenticidad de la fuente del mensaje. Funciona realizando la asociación de un dominio con los mensajes de correo electrónico mediante una firma digital.
Como ya conocemos de otros mecanismos de firma digital, existe una llave pública y una privada. La llave privada se encuentra en el servidor de envío de correo electrónico y se usa para firmar los mensajes. La llave pública figura en el DNS del dominio del remitente, y sirve para verificar los mensajes de correo en destino usando la firma que se encuentra en ellos.
¿Por qué es tan importante la autenticación de correo electrónico?
Autenticar los correos electrónicos es muy importante, dado que muchos de los ataques de seguridad utilizan el email para propagarse. Tal como se construyó inicialmente el servicio de correo electrónico, es posible crear mensajes con cabeceras que simulan ser enviados por remitentes distintos, de modo que un atacante podría hacerse pasar fácilmente por otros remitentes.
Sin las firmas de seguridad que nos proporciona DKIM sería difícil identificar correos no deseados o ataques de phishing, entre otras cosas.
Proceso de firma digital con DKIM
Ahora vamos a ver el detalle sobre cómo se realiza la firma digital con DKIM, de modo que entendamos cómo este proceso puede garantizar la autenticidad e integridad de los mensajes.
Generación de claves criptográficas
El proceso comienza generando unas claves criptográficas. Como hemos dicho, existe una clave pública y una clave privada. La clave pública se encuentra disponible en el DNS del dominio. La clave privada es la que se usa para firmar los mensajes.
Inclusión de la firma en el encabezado del correo electrónico
Cuando se va a enviar el correo electrónico se genera una firma digital a partir del contenido del mensaje y la clave privada, mediante un algoritmo que garantiza seguridad de la firma, ya que es única para el mensaje enviado. Esa firma se incluye en las cabeceras del correo electrónico.
Algoritmos utilizados en la firma digital
Para la creación de la firma digital de DKIM se utilizan algoritmos criptográficos seguros. Algunos de ellos son RSA y SHA-256, que garantizan un buen balance entre el nivel de seguridad y la eficiencia en el procesamiento de las firmas.
Codificación Base64 y transformación del contenido
Para la transmisión de la firma se codifica en Base64. Esto se realiza para conseguir que la firma se envíe de manera segura en el mensaje. Adicionalmente, se pueden realizar algunos procesos para la transformación del mensaje en sí, por ejemplo la normalización de los espacios en blanco. Este proceso ayuda a asegurar que la firma del mensaje no se vea afectada si ocurren algunos cambios en el formateo del cuerpo del email.
Roles de la clave privada y pública en la verificación
Como ya conocemos en otros mecanismos de criptografía, la llave privada y pública forman un conjunto que nos permite verificar la autenticidad de un contenido.
- La llave privada permite generar las firmas de los mensajes.
- La llave pública está disponible para cualquier persona y sirve para verificar la autenticidad de la firma, cotejándola con el contenido del mensaje.
Verificación de firmas DKIM
La verificación de las firmas DKIM se tiene que realizar en el procesamiento de los mensajes en su recepción. Esa verificación permite comprobar si la firma coincide perfectamente con el contenido del mensaje y la llave pública que está disponible en el DNS del dominio del remitente.
En el caso de que la firma encaje bien con el contenido del mensaje y la llave pública, se entiende que el correo electrónico es auténtico. No sólo eso, sino además que el mensaje no se ha modificado durante el proceso de transferencia, lo que también nos sirve para asegurar la integridad del contenido.
Configuración e implementación de DKIM
La configuración e implementación de DKIM requiere la realización de algunos pasos que vamos a detallar:
- Comenzamos con la generación de las claves criptográficas, que se utilizarán para firmar los correos electrónicos. Para este punto podemos usar herramientas comunes como OpenSSL o acceder a las herramientas online de dkimcore.org, donde la podremos generar de manera sencilla.
- En un segundo paso se debe publicar la llave pública en el DNS del dominio como un registro TXT.
- Posteriormente, tenemos que realizar la configuración del servidor de correo electrónico para que pueda firmar los mensajes de manera automática con el contenido de la llave privada. Dependiendo del tipo de servidor, este proceso se realizará de una manera u otra.
Una vez realizada la configuración, es importante verificar que se ha realizado correctamente mediante mecanismos que resumiremos más adelante en este post.
Errores comunes y soluciones en DKIM
Ahora vamos a ver algunos de los posibles problemas que podemos encontrarnos cuando implementamos DKIM junto con sus soluciones.
Falta de configuración de registros DNS
Uno de los problemas frecuentes es la falta de la publicación de la llave pública en los registros de DNS del dominio del remitente, o incluso la publicación de manera incorrecta. Este problema se soluciona simplemente verificando que existe el registro TXT en las entradas DNS del dominio y que la llave pública indicada es correcta.
Problemas con la longitud de la firma digital
Podemos encontrarnos también problemas con la longitud de la firma digital. Esto puede ocurrir si la clave que se ha utilizado para generar la firma es demasiado corta, lo que nos puede llevar a una falta de seguridad en los mensajes. Para solucionarlo, tenemos que asegurarnos de que la longitud de la clave privada es suficientemente grande. Un valor adecuado es a partir de los 1024 bits.
Desincronización de las claves criptográficas
Este error se da cuando las claves pública y privada no corresponden entre sí. Esto podría ocurrir por ejemplo cuando se realiza la actualización de la clave privada. Por supuesto, si cambiamos la clave privada, no podemos olvidarnos de actualizar los registros de DNS con la llave pública correspondiente.
Ventajas de utilizar DKIM en tus correos electrónicos
Queremos ahora resumir los motivos por los cuales implementar DKIM aporta diversas ventajas en el servicio de correo electrónico.
Autenticación y seguridad reforzadas
Gracias a DKIM podemos estar seguros que los mensajes son auténticos y que provienen del remitente que afirma representar. Esto aumenta la seguridad del servicio de correo electrónico y evita diversos tipos de ataques como la suplantación de identidad.
Mejora de la entrega
Algo muy importante que nos aporta DKIM es la mejora de la entrega de los mensajes, ya que muchos filtros de spam realizan la comprobación de las firmas, entre otras medidas. Por tanto, si los mensajes están correctamente firmados, tenemos muchas menos posibilidades de que se vayan a la carpeta de spam.
Fortalecimiento de la reputación del remitente
El hecho de implementar DKIM puede mejorar la reputación de su dominio, ya que deja claro su compromiso con la seguridad y refuerza la confianza de los clientes.
Protección contra la suplantación de identidad
Como hemos dicho ya, DKIM es una de las principales vías para proteger los dominios contra ataques de suplantación de identidad en el envío de correo electrónico. Esto evitará que atacantes falsifiquen el origen de los mensajes, algo esencial para evitar prácticas de phishing.
Cumplimiento con estándares de seguridad
En muchos casos la implementación de DKIM no es simplemente una elección opcional. En realidad, es una necesidad para cumplir con los estándares de seguridad actuales.
¿Cómo comprobar la configuración de DKIM?
Finalizamos este artículo dando algunos consejos para comprobar la configuración de DKIM en los mensajes salientes.
La manera más sencilla para comenzar es utilizar herramientas online que nos ofrecen la verificación de los registros DKIM. Una de las más conocidas es MXtoolbox.
También podemos realizar una comprobación manual mediante una consulta en las entradas de DNS, por ejemplo con nslookup, para asegurarnos de que el registro TXT de DKIM esté presente y que se encuentra al día.