Afin d'apporter des éléments de réponse à cette problématique, différents systèmes ont vu le jour afin d'authentifier la source des messages emails. Je vous propose de vous présenter les SPF, DKIM et autres SenderID en mettant en avant tant leurs forces et faiblesses.
Je conclurai par quelques recommandations sur ce qui me semble intéressant de mettre en place sur vos serveurs de mails.
Le système Sender Policy Framework (SPF) permet au propriétaire d'un nom de domaine ("exemple.com") d'utiliser les champs de type « TXT » du système DNS afin de spécifier quels sont les serveurs de messagerie autorisés à envoyer des messages pour ce nom de domaine. Ce système s'appuie sur le principe que les informations présentes dans les enregistrements DNS sont correctes et de confiance. On va ainsi identifier de façon explicite les serveurs de mail autorisés à émettre des mails pour un nom de domaine.
Lors de la réception d'un message, le serveur de mail va vérifier, via une requête DNS, via les enregistrements de type « TXT » si le message est bien en provenance des serveurs de mails listés comme "de confiance". Si le mail provient bien d'un serveur listé alors le mail est considéré comme "non spam". Dans le cas contraire, le message est rejeté.
Ce système est simple, mais souffre de quelques problèmes :
- Bien que techniquement simple à mettre en place, il est encore très peu utilisé. Il est donc impossible de tagger en "spam" un mail si aucune information n'est présente dans les champs TXT du nom de domaine de l'émetteur des messages (c'est le cas pour la très grande majorité, sinon la totalité des noms de domaines actifs sur Internet) : Les spammeurs sont dans ce cas en mesure d'émettre des messages en masquant leurs messages comme provenant de la société "exemple.com".
- SPF considère aussi que le serveur de messagerie à l'origine des messages n'a pas été compromis et qu'il n'est pas non plus en mode "relais ouvert". Un serveur en relais ouvert implémentant du SPF est donc une prise de choix pour un spammer.
- Ce système pose aussi problème dans le cas ou les messages sont renvoyés (forward) d'un serveur à un autre : Avec SPF, il faudrait que les serveurs de relais ("forwarders") soient aussi présents dans la zone DNS du domaine concerné... difficile à mettre en place !
DomainKeys
Identified Mail (DKIM)
DomainKeys
Identified Mail (DKIM) est un système dans lequel l'émetteur d'un
message insère dans l'entête de celui-ci une signature électronique
cryptographique de sorte que le serveur recevant le message va être
en mesure de vérifier la source mais ainsi l'intégrité du message
et de certains de ses entêtes.
Lors de la réception d'un message, le serveur va vérifier la signature en utilisant pour ce faire la clef publique de l'émetteur qui aura été publiée préalablement par le serveur émetteur dans une zone DNS spécifique. Si la signature est vérifiée avec succès alors l'origine et le contenu du message sont authentiques. Dans le cas contraire, le système peut réagir en rejettant le mail, en le détruisant ou en le redirigeant.
Au même titre que pour SPF, le système DKIM souffre aussi de quelques problèmes :
- Il est encore une fois très peu utilisé coté émetteurs de mails, très peu de mails sont signés : donc pas grand chose à se mettre « sous la dent » coté serveurs en réception.
Toute modification du message ayant pour effet de rentrer invalide la signature numérique, l'insertion de "legal disclaimers" ou d'indication de test de détection de code malicieux via un antivirus va provoquer un changement du message donc rentre la signature invalide. A noter que qu'il est possible de rajouter dans les entêtes le résultat d'un test antivirus sans rendre la signature invalide : La liste des entêtes pris en compte lors du calcul de la signature est elle-même fournie dans l'entête DKIM.
Un serveur de mail devant vérifier la signature électronique de chaque message entrant, cela va mécaniquement générer une augmentation de la charge de traitement sur les serveurs de messagerie. Ceci dit, vu le très petit nombre de message signés, ce n'est pas un problème en soit !
SenderID
Le système SenderID est très similaire à SPF : Alors que SPF s'efforce de protéger l'enveloppe du message (ie le contenu des informations présentes dans les commandes SMTP de serveurs à serveurs) ; SenderID vise à protéger certains entêtes du message lui-même.
Afin d'identifier quels serveurs ont le droit d'émettre des messages pour le compte d'un nom de domaine, les deux systèmes utilisent les enregistrements présents dans les zones DNS des noms de domaine : La syntaxe des informations des enregistrements TXT est de plus la même entre SPF et SenderID.
SenderID et SPF sont donc similaires dans le sens ou ils ont comme objectif de vérifier la véracité de l'émetteur des messages associés à un nom de domaine précis, cependant ils fonctionnent à un niveau protocolaire différent : Dans ce sens, SenderID est plus proche de DKIM que de SPF.Il existe certaines polémiques quand à SenderID et son respect des normes, notamment avec SPF.
DKIM, SenderID et SPF : Un rapide benchmark
- SPF reste une solution simple à mettre en œuvre mais qui pose une contrainte importante : comme la vérification est en mode point à point (ie d'un serveur de mail à un autre ; ou MTA à MTA ) il ne fonctionne pas dans le cas de forwarders ou de relais.
- DKIM est quant à lui un peu plus complexe à mettre en place (quoi que) mais donne une vérification de bout en bout (ie, l'émetteur signe son mail, le destinataire vérifie) : Il peut y avoir des serveurs de relais entre deux, cela ne pose aucun problème.
- SenderID est en pleine perte de vitesse. Parier sur ce cheval c'est partir perdant !
Autrement dit : La solution d'avenir est DKIM mais SPF peut être un début de réponse.
Par quel bout commencer ?
- Configurez vos serveurs DNS afin que vous soyez « SPF ready » en y ajoutant les enregistrements TXT qui vont bien au niveau de vos zones DNS. L'investissement est assez minime.
- Encore mieux, signez vos mails en DKIM. C'est un investissement à long terme. De plus en plus de serveurs de mails supportent DKIM.
Sur les serveurs de réception de mails
- Intégrez SPF dans votre système de scoring : Un mail validé a plus de chances d'être véridique car émis d'une source « fiable ». Ne basez cependant vos décisions uniquement sur ce type de test.
- Si une signature DKIM est présente, vérifiez la. Encore une fois, c'est DKIM est la voie royale vers plus de confiance dans le domaine des communications emails
Pour ceux qui rétorqueront que SPF et DKIM ne sont pas encore déployés et que donc ça ne sert à pas grand chose de s'exciter sur le sujet, j'aurai une recommandation très "terre à terre", surtout si vous êtes la cible d'attaques récurrentes de phishing :
En conclusion
Les systèmes SPF et DKIM sont des systèmes encore peu utilisés. Leur potentiel est intéressant mais reste limité du fait de leur faible niveau de déploiement au niveau mondial.
Afin de casser ce problème assez classique de la poule et de l'œuf, commencez à activer SPF sur vos serveurs de messagerie et intégrez-le dans vos mécanismes de scoring sur vos serveurs de réception. Les plus consciencieux complèteront leur dispositif via DKIM afin d'en étendre d'adoption, ou commenceront directement par DKIM...(this is the way to go)
Si vous êtes un acteur Internet de taille respectable et suffisamment motivé, la mise en place de ces mécanismes au cas par cas vous permettra d'en retirer plus rapidement la valeur : Cela permettra de protéger vos clients contre les messages usurpant votre identité.
C'est un sujet que nous seront amenés à rediscuter tant le domaine est vaste et intéressant.
Remerciements : Un « kudo » à Sylvain Houdusse, expert dans le domaine pour avoir eu la gentillesse de relire ce bulletin.
Merci pour cet article tres instructif.
L'article suivant (en anglais, mais il y a une image parlante) montre la progression de DKIM dans les messages:
http://blogs.cisco.com/news/comments/domainkeys_identified_mail_dkim_grows_significantly/
Deux points a rajouter:
-SPF est facile a mettre en oeuvre pour l'emeteur mais attention a mettre a jour le TXT si vouz vener a utiliser d'autres serveurs pour envoyer des emails sous votre nom! Pensez services en lignes et reseaux sociaux.
-DKIM ne valide pas l'envoyeur. DKIM certifie qu'un domaine a pris la responsabilite d'envoyer le message. Cela peut etre le domaine de l'envoyeur mais aussi le domaine d'une tierce personne.
Finalement, google, yahoo et d'autres grand noms verifient deja les signatures DKIM.
Très bon article, dommage qu'il ne manque le DK (DomainKeys) utilisé par Yahoo http://help.yahoo.com/l/fr/yahoo/mail/yahoomail/context/context-07.html
Ca en fait 4 à mettre en place, Mais malheureusement tant que les FAI ne jouent pas le jeux, ça servira pas à grand chose... Les adresses wanadoo, orange, free, neuf représentent déjà 50% de nos clients, et chez les particuliers ça doit pas être loin de 90%
Paypal utilise les 4 et pourtant le phishing continue d'exploser...
Nous aussi nous utilisons les 4 et pourtant on continue d'être considéré comme spam auprès de nos clients.
A croire que la seule solution c'est le mail payant, mais où va-t'on ?!
Biose,
Effectivement ces systèmes n'ont d'intérêt que si l'ensemble des acteurs jouent le jeu: Rien ne sert de signer si personne ne vérifie les signatures... ou le sender dans le cas de SPF. L'engagement d'acteurs comme Gmail et Yahoo! peut être assimilé à un signal déclencheur pour "provoquer" une prise de conscience sur la valeur associée à ces mécanismes.
Concernant mon "impasse" sur DomainKeys : Yahoo! en est effectivement à l'origine. Cependant, DomainKeys a évolué pour devenir DKIM : La RFC 4871 (DKIM) indique un "merci" à DomainKeys dans son annexe "E" (Acknowledgements) et si vous regarder le status de la RFC 4870 (DomainKeys), on veut voir qu'elle a été remplacée par la RFC4817 (DKIM).
Merci cette précision car c'est effectivement assez peu clair : La "jungle" de ces mécanismes concurrents n'est pas simple à appréhender.. Cela a peut-être ralenti leur adoption.
La gestion de son enregistrement TXT de sa zone DNS est effectivement essentielle. Pour ceux qui envoient des messages depuis leur compte Gmail en utilisant leur nom de domaine, il est possible d'utiliser SPF dans ce cas (http://www.openspf.org/Introduction).
Votre remarque sur DKIM est très claire et permet de mieux comprendre peut-être la complémentarité de SPF et de DKIM.
Malheureusement Yahoo ne prend toujours pas en compte le DKIM, et s'en tient à son propre DK. Après un test rapide, j'ai désactivé le DK en laissant juste le DKIM et le petit logo d'authentification à coté de l'expédieur à disparu...
Donc pour être "authentifié" partout il faut utilisé :
Le MTA devient une vraie usine à gaz mais c'est le prix à payer pour être considéré comme émeteur de confiance...
Merci pour ces tests. J'ai posé la question à l'un de mes contacts travaillant avec Yahoo! autour de la problématique du phishing et lui ai remonté ces quelques informations.
Il indique effectivement que Yahoo supporte effectivement toujours les deux systèmes DomainKey ainsi que DKIM. Que faut-il comprendre dans ce cas ?
Une option : Peut-être que le petit logo d'authentification n'est-il affiché que dans le cas de DomainKey et que pour une raison ou une autre Yahoo d'affiche rien dans le cas d'une signature DKIM... Il s'agit ici de rendre la sécurité (DKIM/DomainKey) visible à l'utilisateur : Peut-être que Yahoo a décidé de restreindre cela uniquement à "sa" techno DomainKeys ?
Une autre façon de voir si DKIM est en place ou pas : Définir une politique adsp indiquant de rejeter le message si la signature est invalide : Si Yahoo fait du DKIM __et__ respecte la politique asdp alors on pourra être pleinement positifs. Par contre, si adsp n'est pas supporté par Yahoo mais qu'il font quand même du DKIM on ne pourra pas le savoir via ce test...
Autre piste pour découvrir le mystère ? Affaire à suivre.
Bon week-end !
En regardant un entête de mail reçu sur une boîte Yahoo!, on peut confirmer qu'ils vérifient bien les signatures DKIM
"Authentication-Results: mta190.mail.sp2.yahoo.com from=slyweb.org; domainkeys=neutral (no sig); from=slyweb.org; dkim=pass (ok)"
Après, utilisent t'ils le résultat pour identifier les mails spam, c'est une autre question....
Merci Sylvain ! Nous avons donc la réponse :
Yahoo vérifie bien la signature DKIM mais n'affiche pas le petit logo d'authentification comme ils le font dans le cas de DomainKeys.