Signature DKIM
Une signature DKIM est une signature cryptographique ajoutée aux en-têtes d'un e-mail (l'en-tête DKIM-Signature) qui permet aux destinataires de vérifier que le message a été autorisé par le domaine expéditeur et n'a pas été altéré en transit. Les tags clés incluent d (domaine), s (sélecteur), b (signature) et bh (empreinte du corps).
Ce guide fait partie de notre guide complet sur DKIM. Voir aussi : l’enregistrement DKIM et pourquoi DKIM échoue.
Une signature DKIM est une signature cryptographique ajoutée aux en-têtes d’un e-mail — portée dans l’en-tête DKIM-Signature — qui permet à un serveur destinataire de vérifier que le message a été autorisé par le domaine expéditeur et n’a pas été altéré en transit. La signature est générée avec une clé privée détenue par l’expéditeur et contrôlée à l’aide d’une clé publique correspondante publiée dans le DNS.
À quoi ressemble l’en-tête DKIM-Signature
La signature voyage sous la forme d’un unique champ d’en-tête ajouté en tête du message. Elle regroupe tout ce dont un destinataire a besoin — le domaine signataire, le sélecteur, quels en-têtes ont été signés, une empreinte du corps, et la signature elle-même — dans une série de paires tag=value séparées par des points-virgules.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=example.com; s=selector1; t=1700000000;
h=from:to:subject:date;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=Cg5Xje8kY0m5xT1pW2qL4vN8rH6dF3aZ9cU7bE0iQoR2sT4uV6wX8yZ1
aB3cD5eF7gH9jK2lM4nP6qR8sT0uV2wX4yZ6aB8cD0eF2gH4jK6l=
L’en-tête est inséré par le serveur de messagerie de l’expéditeur avant que le message ne quitte le domaine. Les sauts de ligne et l’indentation ne servent qu’au repliement — la valeur est logiquement une seule chaîne continue.
Les tags d’une signature DKIM
Chaque tag porte une pièce du puzzle de vérification. Le signataire choisit ces valeurs ; le vérificateur les relit pour reconstruire et contrôler la signature.
| Tag | Nom | Objectif |
|---|---|---|
v | Version | Version DKIM. Toujours 1. |
a | Algorithme | Algorithme de hachage et de signature, par ex. rsa-sha256 ou ed25519-sha256. |
d | Domaine | Le domaine signataire — l’identité que DKIM authentifie. |
s | Sélecteur | Nomme quelle clé publique récupérer dans le DNS du domaine. |
h | En-têtes signés | Liste séparée par des deux-points des champs d’en-tête couverts par la signature. |
bh | Empreinte du corps | Empreinte du corps (canonicalisé) du message. |
b | Signature | La signature cryptographique réelle, encodée en base64. |
c | Canonicalisation | Comment les en-têtes/le corps sont normalisés avant le hachage, par ex. relaxed/relaxed. |
t / x | Horodatages | t est le moment où le message a été signé ; x est le moment où la signature expire. |
Comment fonctionne la signature (à l’envoi)
Lorsqu’un message quitte le serveur expéditeur, DKIM fait deux choses. D’abord, il canonicalise le corps et le hache, stockant le résultat dans bh. Ensuite, il canonicalise les en-têtes nommés dans h — ainsi que l’en-tête DKIM-Signature lui-même (avec un b vide) — hache ce bloc, et signe l’empreinte avec la clé privée du domaine. La signature résultante devient la valeur b. Comme la clé privée ne quitte jamais l’expéditeur, seul le véritable propriétaire du domaine peut produire une signature qui se validera.
Comment fonctionne la vérification (à la réception)
Le serveur destinataire lit l’en-tête DKIM-Signature pour connaître le domaine (d) et le sélecteur. Il interroge le DNS à <selector>._domainkey.<domain> pour récupérer la clé publique depuis l’enregistrement DKIM. Il répète ensuite le travail de l’expéditeur : il canonicalise et hache le corps, le compare à bh, canonicalise et hache les en-têtes signés, et utilise la clé publique pour contrôler b par rapport à cette empreinte d’en-têtes. Si l’empreinte du corps correspond et que la signature se vérifie, DKIM passe. Le contrôle bh est ce qui détecte toute altération du corps du message — même un seul caractère modifié produit une empreinte différente et fait échouer le contrôle.
Quand les signatures échouent
Une signature DKIM échoue dès que le message que le destinataire voit ne correspond plus à ce que l’expéditeur a signé. Les causes les plus courantes sont :
- Modification en transit — les listes de diffusion, les transitaires et certaines passerelles réécrivent les objets, ajoutent des pieds de page ou ré-encodent le corps, ce qui casse l’empreinte du corps.
- Non-correspondance de l’empreinte du corps — toute modification de la portion signée du corps change
bh, de sorte que la vérification échoue même si la clé est correcte. - Clé erronée ou manquante — le sélecteur pointe vers un enregistrement DNS absent, expiré, ou contenant la mauvaise clé publique.
Pour une analyse plus complète des causes et solutions, consultez pourquoi DKIM échoue, et utilisez l’outil de recherche DKIM gratuit pour confirmer que la clé publique d’un sélecteur est publiée et bien formée.
Foire aux questions
Qu’est-ce qu’une signature DKIM ?
Une signature DKIM est une signature cryptographique ajoutée aux en-têtes d’un e-mail dans le champ DKIM-Signature. L’expéditeur la génère avec une clé privée sur certains en-têtes et une empreinte du corps. Les destinataires la vérifient à l’aide d’une clé publique dans le DNS, prouvant que le message provient du domaine et n’a pas été altéré.
Que signifie le tag b= dans une signature DKIM ?
Le tag b= contient la signature réelle : une valeur encodée en base64 produite en signant une empreinte des en-têtes signés canonicalisés avec la clé privée du domaine expéditeur. Le destinataire la décode et la vérifie à l’aide de la clé publique récupérée dans le DNS. Si les en-têtes signés ont changé en transit, le contrôle b= échoue.
Pourquoi une signature DKIM échoue-t-elle après un transfert ?
Les transitaires et les listes de diffusion modifient souvent le message — ajout de pieds de page, réécriture de l’objet, ou ré-encodage du corps. Comme DKIM signe le corps exact et certains en-têtes, une telle modification altère l’empreinte calculée de sorte qu’elle ne correspond plus au bh signé ou à l’empreinte des en-têtes. La signature échoue alors à la vérification même si l’original était valide.
Qu’est-ce que l’empreinte du corps (bh) dans DKIM ?
Le tag bh= est une empreinte du corps du message après canonicalisation, calculée avec l’algorithme nommé dans a. À la réception, le vérificateur recalcule l’empreinte du corps et la compare à bh. Une non-correspondance signifie que le corps a été altéré en transit, de sorte que la signature est rejetée avant même que la signature cryptographique dans b= ne soit contrôlée.