Présentation
DKIM (DomainKey Identified Mail) permet de signer les messages expédiés par un serveur SMTP. Pour ceci, une paire de clé doit être générée, la clé publique est ensuite publiée via DNS, la clé privée est fournie au serveur SMTP.
À la réception d’un message signé via DKIM, un serveur mail va se référer à l’entête “DKIM-Signature” pour identifier le domaine et le selecteur, puis va chercher la clé publique sur les enregistrements DNS afin de vérifier la signature.
Configuration du DNS
C’est une entrée de type “TXT” (mentionnée de type DKIM chez OVH), appliquée à “selecteur._domainkey.domain.com” (selecteur et domain doivent être adaptés).
Le champ fonctionne sur un principe clé=valeur ; on retrouve les champs suivants :
- v= : version. DKIM1
- k= : type de clé. “rsa”
- p= : clé publique
- t= : ? (t=s) ; il semble que ce champ puisse poser problème dans le cas d’utilisation de sous-domaines
Analyse de la signature
https://help.returnpath.com/hc/fr/articles/222438487-Informations-d-ent%C3%AAte-de-la-signature-DKIM
Dans les entêtes d’un mail. Entête “DKIM-Signature”
Balises obligatoires :
- v= : version. Actulemment, c’est 1
- a= : algo pour générer la signature. Ca sera quasi toujours rsa-sha256
- d= : pour identifier le domaine responsable de la signature
- s= : sélecteur ; avec le domaine, permet de trouver l’emplacement de la clé publique dans le DNS
- h= : liste d’entetes qui seront utilisées pour créer la signature (et sont donc authentifiées) ; par exemple “h=To:From:Subject;”
- b= : hachage de la valeur “h” ; c’est généralement ceci que l’on appelle “signature DKIM”
- bh= : hachage du corps du message
Balises optionnelles :
- t= : horodatage du message
- x= : horodatage de l’expiration de la signature. Doit être postérieure à “t”
ARC (Authenticatd Received Chain)
https://www.dmarcanalyzer.com/fr/arc-est-ici/
Permet de résoudre des situations où SPF ou DKIM ne fonctionnent plus (typiquement lorsqu’il y’a un transfert de mail, soit via forward automatique, soit lors d’un transfert via une mailing-list).
En gros, lorsqu’un serveur de transfert reçoit un mail avec un résultat DMARC valide, il “encapsule” ce résultat dans une en-tête ARC. Il peut ensuite retransmettre l’ensemble (message + entête ARC) au destinataire suivant (qui peut être un autre intermédiaire, ou bien le destinataire final).
Si DMARC échoue, mais que l’ensemble de la chaîne ARC est valide, un serveur peut choisir de valider le mesage quand même.
En-têtes ARC :
ARC-Authentication-Results (AAR) : regroupe les infos d’authentification du mail d’origine (SPF, DKIM, DMARC)
ARC-Message-Signature (AMS) : une signature (comme pour DKIM) pour certifier le contenu de l’ensemble du message (excepté l’ARC-Seal)
ARC-Seal (AS) : une signature (comme pour DKIM) de l’ensemble de la chaîne des ARC-Seal
Chaque certification ARC est assortie d’un numéro d’instance (i) commençant à 1. Il peut y avoir plusieurs certifications ARC successives.
Gestion via Office 365
https://security.microsoft.com/dkimv2
Nécessite de paramétrer les entrées DNS (probablement du CNAME)