Qu'est-ce qu'un enregistrement DNS DKIM ?

Un enregistrement DKIM est un enregistrement DNS TXT spécialisé qui stocke la clé publique utilisée pour vérifier l'authenticité d'un e-mail.

Objectifs d’apprentissage

Cet article s'articule autour des points suivants :

  • Décrire comment DKIM aide à stopper le spam
  • Afficher un exemple d'enregistrement DKIM
  • Expliquer le fonctionnement des en-têtes DKIM

Copier le lien de l'article

Qu'est-ce que DKIM ?

La norme DomainKeys Identified Mail (DKIM) est une méthode d'authentification d'e-mail qui permet d'empêcher les spammeurs et autres parties malveillantes de de se faire passer pour un domaine légitime.

Toutes les adresses électroniques ont un domaine (la partie de l'adresse après le symbole « @ »). Les spammeurs et les attaquants peuvent essayer d'usurper l'identité d'un domaine lors de l'envoi d'e-mails pour mener à bien des attaques de phishing ou d'autres escroqueries.

Supposons que Chuck veuille inciter Alice, qui travaille pour exemple.com, à lui envoyer des informations confidentielles sur l'entreprise. Il pourrait lui envoyer un e-mail qui semble provenir de «–bob@exemple.com–» pour lui faire croire qu'il travaille également pour exemple.com.

Avec la norme DKIM, Sender Policy Framework (SPF) et Domain-based Message Authentication Reporting and Conformance (DMARC), il est beaucoup plus difficile pour les attaquants d'usurper l'identité de domaines de cette manière. Les e-mails qui ne passent pas les tests DKIM et SPF sont marqués comme « spam » ou ne sont pas délivrés par les serveurs de messagerie. Si exemple.com a configuré DKIM, SPF et DMARC pour son domaine, Alice ne verra probablement jamais l'e-mail malveillant de Chuck, car il ira dans son dossier de spam ou sera purement et simplement rejeté par le serveur de messagerie.

Comment fonctionne la norme DKIM ?

La norme DKIM comporte deux aspects principaux : l'enregistrement DKIM, qui est stocké dans les enregistrements du système de noms de domaine (DNS) pour le domaine, et l'en-tête DKIM, qui est joint à tous les e-mails provenant du domaine.

La norme DKIM utilise des systèmes de signature numérique basés sur la cryptographie à clé publique pour authentifier la provenance d'un e-mail, à savoir qu'il provient effectivement d'un serveur qui envoie des e-mails de ce domaine. Une paire de clés cryptographiques est utilisée : une clé privée pour l'expéditeur afin de signer les messages, et une clé publique pour le récepteur afin de vérifier les signatures. Un récepteur ne peut pas utiliser la clé publique pour signer des messages, et vice versa.

Le fournisseur de messagerie génère la clé publique et la clé privée. Il donne la clé publique au propriétaire du domaine, qui la stocke dans un enregistrement DNS accessible au public, l'enregistrement DKIM.

Tous les e-mails envoyés depuis ce domaine comportent un en-tête DKIM, qui contient une section de données signée avec la clé privée : c'est ce qu'on appelle une « signature numérique ». Un serveur de messagerie peut vérifier l'enregistrement DNS DKIM, obtenir la clé publique et l'utiliser pour vérifier la signature numérique.

Ce processus garantit également que l'e-mail n'a pas été modifié en cours de route. La signature numérique ne sera pas vérifiée si les en-têtes ou le corps du message ont été modifiés, comme un sceau inviolable sur une boîte de médicaments.

Qu'est-ce qu'un enregistrement DKIM ?

Un enregistrement DKIM stocke la clé publique DKIM, une chaîne de caractères aléatoire qui est utilisée pour vérifier tout ce qui est signé avec la clé privée. Les serveurs de messagerie interrogent les enregistrements DNS du domaine pour voir l'enregistrement DKIM et la clé publique.

Un enregistrement DKIM est en fait un enregistrement DNS TXT (« texte »). Les enregistrements TXT peuvent être utilisés pour stocker tout texte qu'un administrateur de domaine souhaite associer à son domaine. DKIM est l'une des nombreuses utilisations de ce type d'enregistrement DNS.

Voici un exemple d'enregistrement TXT DNS DKIM :

Nom Type Contenu TTL
big-email._domainkey.exemple.com TXT v=DKIM1 ; p=76E629F05F70
9EF665853333
EEC3F5ADE69A
2362BECE4065
8267AB2FC3CB
6CBE
6000

Nom

Contrairement à la plupart des enregistrements TXT du DNS, les enregistrements DKIM sont stockés sous un nom spécialisé, et pas seulement sous le nom du domaine. Les noms des enregistrements DKIM suivent ce format :

[sélecteur]._domainkey.[domaine] 

Le sélecteur est une valeur spécialisée émise par le fournisseur de services de messagerie utilisé par le domaine. Il est inclus dans l'en-tête DKIM pour permettre à un serveur de messagerie d'effectuer la recherche DKIM requise dans le DNS. Le domaine est le nom du domaine de messagerie. ._domainkey. est inclus dans tous les noms d'enregistrement DKIM.

Pour rechercher l'enregistrement DKIM, les serveurs de messagerie utilisent le sélecteur DKIM fourni par le fournisseur de services de messagerie, et pas seulement le nom de domaine. Supposons qu'exemple.com utilise Big Email comme fournisseur de services de messagerie et que Big Email utilise le sélecteur DKIM big-email. La plupart des enregistrements DNS d'exemple.com s'appelleraient exemple.com, mais leur enregistrement DNS DKIM s'appellerait big-email._domainkey.exemple.com, comme dans l'exemple ci-dessus.

Contenu

Il s'agit de la partie de l'enregistrement DNS DKIM qui indique la clé publique. Dans l'exemple ci-dessus, v=DKIM1 indique que cet enregistrement TXT doit être interprété comme DKIM, et la clé publique est tout ce qui suit p=.

Type d'enregistrement et TTL

Il s'agit de champs standard dans les enregistrements DNS. TXT indique qu'il s'agit d'un enregistrement DNS TXT. « TTL » signifie « time to live » (mesuré en secondes) et indique combien de temps cet enregistrement doit être considéré comme valide avant de devoir être actualisé. Les enregistrements DKIM ont généralement un TTL de plusieurs minutes.

Qu'est-ce qu'un en-tête DKIM ? Comment fonctionne une signature DKIM ?

Le serveur de messagerie qui envoie le message crée sa signature numérique en utilisant les en-têtes du message, le corps du message (en fait, un hachage du corps du message, voir ci-dessous) et sa clé privée. Cette signature numérique est jointe à l'e-mail dans le cadre de l'en-tête DKIM.

L'en-tête DKIM est l'un des nombreux en-têtes qui sont joints à un e-mail. La plupart des applications de messagerie n'affichent pas l'en-tête lors de l'affichage d'un e-mail, sauf si l'utilisateur sélectionne certaines options. Dans Gmail, par exemple, les utilisateurs peuvent afficher l'en-tête d'un e-mail en cliquant sur les trois points verticaux en haut à droite de l'e-mail, puis sur « Montrer l'original ».

Voici un exemple d'en-tête DKIM :

v=1 ; a=rsa-sha256 ; 
 d=example.com ; s=big-email ;
 h=from:to :sujet ;
 bh=uMixy0BsCqhbru4fqPZQdeZY5Pq865sNAnOAxNgUS0s= ; 
 b=LiIvJeRyqMo0gngiCygwpiKphJjYezb5kXBKCNj8DqRVcCk7obK6OUg4o+EufEbB 
 tRYQfQhgIkx5m70IqA6dP+DBZUcsJyS9C+vm2xRK7qyHi2hUFpYS5pkeiNVoQk/Wk4w
ZG4tu/g+OA49mS7VX+64FXr79MPwOMRRmJ3lNwJU=
  • v= indique quelle version de DKIM est utilisée.
  • d= est le nom de domaine de l'expéditeur.
  • s= est le sélecteur que le serveur récepteur doit utiliser pour rechercher l'enregistrement DNS.
  • h= liste les champs d'en-tête qui sont utilisés pour créer la signature numérique, ou b. Dans ce cas, les en-têtes from, to et subject sont utilisés. Si Bob a envoyé un e-mail à Alice en utilisant le domaine exemple.com et que l'objet était « Recette de gâteau au fromage », le contenu utilisé ici serait « bob@exemple.com » + « alice@exemple.com » + « Recette de gâteau au fromage ». (Ce contenu serait également canonisé - mis dans un format standardisé).
  • bh= est le hachage du corps de l'e-mail. Un hachage est le résultat d'une fonction mathématique spécialisée appelée fonction de hachage. Cette fonction est incluse pour que le serveur de messagerie récepteur puisse calculer la signature avant le chargement de l'ensemble du corps de l'e-mail, étant donné que les corps d'e-mail peuvent être de n'importe quelle longueur et que leur chargement peut prendre beaucoup de temps dans certains cas.
  • a= est l'algorithme utilisé pour calculer la signature numérique, ou b, ainsi que pour générer le hachage du corps du message, ou bh. Dans cet exemple, RSA-SHA-256 est utilisé (RSA utilise SHA-256 comme fonction de hachage pour la signature numérique et SHA-256 pour le hachage du corps du message).
  • b= est la signature numérique, générée à partir de h et bh et signée avec la clé privée.

La signature numérique (b=) permet au serveur récepteur 1. d'authentifier le serveur expéditeur et 2. de garantir l'intégrité, c'est-à-dire que l'e-mail n'a pas été altéré.

Pour ce faire, le serveur récepteur prend le même contenu que celui indiqué dans h= plus le hachage du corps (bh=) et utilise la clé publique de l'enregistrement DKIM pour vérifier si la signature numérique est valide. Si la clé privée correcte a été utilisée et si le contenu (en-têtes et corps du message) n'a pas été modifié, l'e-mail passe la vérification DKIM.

Quel est le lien entre DKIM et DMARC ?

DMARC est une méthode d'authentification du courrier électronique basée sur DKIM et SPF. DMARC décrit ce qu'il faut faire avec un e-mail qui échoue à SPF et DKIM. Ensemble, SPF, DKIM et DMARC contribuent à prévenir le spam et l'usurpation d'identité. Comme les enregistrements DKIM, les politiques DMARC sont stockées sous forme d'enregistrements DNS TXT.

Cloudflare propose un assistant DNS de sécurité du courrier électronique qui permet aux utilisateurs de configurer rapidement des enregistrements TXT DNS d'authentification du courrier électronique, ce qui aide les administrateurs de domaine à empêcher les parties malveillantes de se faire passer pour leur domaine.

En savoir plus sur les enregistrement DNS pour les systèmes de messagerie électronique :

Pour en savoir plus sur DKIM, voir RFC 6376.