Qu'est-ce que DKIM?
DKIM (DomainKeys Identified Mail) est une méthode d'authentification par courriel qui permet au serveur d'envoi de signer numériquement les messages sortants. Le serveur récepteur peut alors vérifier cette signature à l'aide d'une clé publique publiée dans DNS, confirmant que l'email n'a pas été modifié en transit et provient en fait du domaine revendiqué.
Comment fonctionne DKIM
1. Génération de clés : Le propriétaire du domaine génère une paire de clés publiques/privées
2. DNS Publication: La clé publique est publiée sous forme d'enregistrement TXT
3. Message Signature: Les courriels sortants sont signés avec la clé privée
4. Vérification de la signature : Le serveur de réception récupère la clé publique et vérifie la signature
Le processus de signature
Lorsqu'un courriel est envoyé :
1. Mail server calculates a hash of message headers and body
2. Hash is encrypted with the private key (creating the signature)
3. Signature is added as a DKIM-Signature header
4. Email is transmitted
Le processus de vérification
Lorsqu'un courriel est reçu :
1. Server extracts the DKIM-Signature header
2. Finds selector and domain (s=selector; d=domain.com)
3. Queries DNS for selector._domainkey.domain.com TXT record
4. Uses public key to decrypt the signature
5. Calculates its own hash of the message
6. Compares: match = pass, mismatch = fail
Format de l'enregistrement DKIM
Les enregistrements DKIM sont des enregistrements TXT dans un sous-domaine spécifique:
selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
Composants d'enregistrement
| Balise | Désignation des marchandises | Exemple |
|---|---|---|
| V | Version | v=DKIM1 |
| k | Type de clé | k=rsa |
| p | Clé publique (base64) | p=MIGfMA0GCSqG... |
| t | Drapeaux (facultatif) | t=y (mode d ' essai) |
| h | Algorithmes Hash | h=sha256 |
Sélecteurs
Les sélecteurs permettent plusieurs clés DKIM par domaine :
google._domainkey.example.com # Google Workspace
s1._domainkey.example.com # Sendgrid
mailchimp._domainkey.example.com # Mailchimp
Chaque service de messagerie fournit son propre sélecteur et clé.
En-tête de signature DKIM
Une signature DKIM ressemble à :
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79...
Champs clés :
- d=: Domaine de signature
- s=: Sélecteur (utilisé pour trouver l'enregistrement DNS)
- h=: En-têtes inclus dans la signature
- b=: La signature réelle
- bh=: Hachage corporel
Mise en place de DKIM
Pour Google Workspace
1. Aller à la console Admin → Applications → Gmail → Authentifier l'email
2. Générer la clé DKIM (2048 bits recommandé)
3. Ajouter un enregistrement TXT fourni par Google
4. Activer la signature DKIM
Pour les services tiers
La plupart des services de messagerie (SendGrid, Mailchimp, etc.) fournissent :
1. Un enregistrement CNAME à ajouter (pour leur clé gérée)
2. Ou un disque TXT avec la clé publique
Exemple (SendGrid):
s1._domainkey.example.com CNAME s1.domainkey.sendgrid.net
Vérification de DKIM
Envoyez un courriel de test à un service qui affiche les en-têtes (Gmail affiche les résultats d'authentification). Utilisation de la ligne de commande :dig google._domainkey.example.com TXT
Utilisation de DomScan:
curl "https://domscan.net/v1/health?domain=example.com"
# Reports DKIM status based on common selectors
Meilleures pratiques DKIM
Utilisez les clés 2048 bits
Les anciennes clés 1024 bits sont de plus en plus vulnérables. La plupart des fournisseurs sont maintenant par défaut à 2048 bits.
Clés tournantes Périodiquement
Rotation des clés DKIM chaque année ou après des incidents de sécurité. Publier une nouvelle clé avec un nouveau sélecteur avant de changer.
Signer les en-têtes importants
S'assurer que les signatures portent sur le sujet, la date et le message-ID.
Ne modifiez pas les messages signés
Les listes d'envoi ou les services de transfert qui modifient le contenu briseront DKIM. Utilisez ARC (Authenticated Reçu Chain) pour envoyer le courrier.
Limitations DKIM
DKIM seul n'empêche pas le spoofing – cela prouve seulement qu'un message n'a pas été modifié. Un domaine peut avoir DKIM valide alors que les attaquants envoient un email spoofed non signé. Le DMARC aborde cette question en précisant ce qu'il faut faire des messages non signés.