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 le courriel n'a pas été modifié pendant son acheminement et provient bien 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 publique et privée
2. Publication DNS : La clé publique est publiée sous forme d'enregistrement TXT
3. Signature du message : Les courriels sortants sont signés avec la clé privée
4. Vérification de la signature : Le serveur destinataire 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 | Description | Exemple |
|---|---|---|
| v | Version | v=DKIM1 |
| k | Type de clé | k=rsa |
| p | Clé publique (base64) | p=MIGfMA0GCSqG... |
| t | Drapeaux (facultatif) | t=y (mode test) |
| h | Algorithmes de hachage | 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 principaux :
- 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 enregistrement TXT contenant 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
Utiliser des clés de 2048 bits
Les anciennes clés de 1024 bits sont de plus en plus vulnérables. La plupart des fournisseurs utilisent désormais par défaut des clés de 2048 bits.
Faire tourner les clés périodiquement
Faites tourner les clés DKIM chaque année ou après un incident de sécurité. Publiez une nouvelle clé avec un nouveau sélecteur avant de basculer.
Signer les en-têtes importants
Vérifier que les champs From, To, Subject, Date et Message-ID sont inclus dans les signatures.
Ne pas modifier les messages signés
Les listes de diffusion et les services de transfert qui modifient le contenu rendent DKIM invalide. Utilisez ARC (Authenticated Received Chain) pour les messages transférés.
Limitations DKIM
DKIM seul n'empêche pas l'usurpation : il prouve seulement qu'un message n'a pas été modifié. Un domaine peut avoir DKIM valide alors que les attaquants envoient un courriel usurpé non signé. Le DMARC aborde cette question en précisant ce qu'il faut faire des messages non signés.