Comment DKIM trouve la clé
Une signature DKIM dans un message indique un domaine (d=) et un sélecteur (s=). Le serveur destinataire les assemble sous la forme selector._domainkey.domain, lit l'enregistrement TXT à cette adresse et utilise la clé publique de sa balise p= pour vérifier la signature. Un domaine peut publier autant de sélecteurs que nécessaire. Chaque service d'envoi peut ainsi avoir sa propre clé, et les clés peuvent être renouvelées sans interruption.
L'outil de vérification a besoin du sélecteur, car DNS ne permet pas de répertorier les sélecteurs d'un domaine. Il n'y a rien à analyser : le sélecteur provient de la signature d'un message réel.
Pourquoi une clé est faible ou défectueuse
La RFC 8301 indique que les clés RSA doivent comporter au moins 1024 bits et devraient en comporter 2048. Un vérificateur peut ignorer une clé plus courte, et le nôtre le fait. Une clé de 512 bits équivaut donc à une absence totale de signature. Les clés Ed25519 (RFC 8463) sont courtes par conception et robustes, mais tous les destinataires ne les vérifient pas encore. Elles sont donc généralement publiées avec une clé RSA plutôt qu’à sa place.
Le vérificateur décode entièrement la clé, car un enregistrement mal réparti entre plusieurs chaînes TXT, ou une chaîne base64 impossible à décoder, produit une clé qu’aucun destinataire ne peut utiliser. Un p= vide signifie que la clé a été révoquée volontairement. t=y indique qu’un domaine est encore en phase de test, et la RFC 6376 §3.6.1 demande aux vérificateurs de traiter ses e-mails exactement comme des e-mails non signés.
Questions
Comment trouver mon sélecteur DKIM et savoir si DKIM est activé ?
Envoyez-vous un message, puis ouvrez les en-têtes de la copie reçue. La présence d’un en-tête DKIM-Signature signifie que le message a été signé : le sélecteur est la valeur s= et le domaine est d=. Sans cet en-tête, le service utilisé pour l’envoi ne signe pas les messages. Chaque service d’envoi signe avec son propre sélecteur. Une newsletter et un message envoyé depuis votre boîte mail peuvent donc utiliser des sélecteurs différents.
La clé est valide, mais DKIM échoue avec « body hash did not verify ». Pourquoi ?
Le message a généralement été modifié après sa signature, par exemple par l’ajout d’un pied de page par une liste de diffusion ou la réécriture d’un lien par une passerelle de sécurité. La clé peut uniquement confirmer le contenu qui a été signé. Le test complet affiche le résultat réel de la vérification de votre message.
Guide complet : DKIM fail
Longueur de clé DKIM : 1024 ou 2048 bits ?
Une clé de 1024 bits est vérifiée partout, et RFC 8301 l’autorise. Elle reste néanmoins le minimum. Passez donc à 2048 bits lors de la prochaine rotation des clés.
Un domaine peut-il avoir plusieurs enregistrements DKIM ?
Oui, un par sélecteur. De nombreux domaines en ont plusieurs : un pour le fournisseur de messagerie et un pour chaque service de newsletter ou de facturation. Vérifiez-les un par un. Une clé supprimée du DNS fait échouer la vérification de tous les messages encore signés avec elle.
À quelle fréquence faut-il renouveler les clés DKIM ?
M3AAWG recommande une rotation au moins tous les six mois, et immédiatement si une clé privée a pu être divulguée. Publiez la nouvelle clé sous un nouveau sélecteur, utilisez-la pour la signature, puis supprimez l’ancien enregistrement uniquement lorsque les messages signés avec l’ancienne clé ont cessé d’arriver. Les expéditeurs réessaient pendant quatre à cinq jours, prévoyez donc environ une semaine.