{"id":1508,"date":"2013-11-27T22:07:09","date_gmt":"2013-11-27T21:07:09","guid":{"rendered":"http:\/\/www.nageurs.com\/blog\/radio-piscine\/?p=1508"},"modified":"2013-11-27T22:07:09","modified_gmt":"2013-11-27T21:07:09","slug":"comment-signer-ses-emails-avec-la-norme-dkim","status":"publish","type":"post","link":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/comment-signer-ses-emails-avec-la-norme-dkim\/","title":{"rendered":"Comment signer ses emails avec la norme DKIM ?"},"content":{"rendered":"<p>Aller, un petit article sur la s\u00e9curit\u00e9 informatique pour changer !\u00a0R\u00e9cemment, pour certifier les emails envoy\u00e9s aux membres du site nageurs.com, l&rsquo;ajout d&rsquo;un m\u00e9canisme de signature a \u00e9t\u00e9 mis en place bas\u00e9 sur la norme DKIM.<\/p>\n<p>Cette norme DKIM pour <em>DomainKeys Identified Mail<\/em> permet de lutter contre le phishing, et surtout de garantir que l&#8217;email n&rsquo;a pas \u00e9t\u00e9 modifi\u00e9 entre le moment o\u00f9 il a \u00e9t\u00e9 envoy\u00e9 ou re\u00e7u grace \u00e0 un m\u00e9canisme de signature \u00e9lectronique.<\/p>\n<p>Les objectifs \u00e9taient d&rsquo;am\u00e9liorer les taux de d\u00e9livrabilit\u00e9 des emails envoy\u00e9s, ne pas tomber dans les bo\u00eetes spam, et aussi faire appara\u00eetre sur Gmail la page Google+ \u00e0 droite des messages envoy\u00e9s par le site. Et surtout par curiosit\u00e9 et d\u00e9fi !<\/p>\n<p>On peut le voir sur l&rsquo;image ci-dessous, le mail est correctement sign\u00e9 (<em>signed-by: nageurs.com<\/em>).<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1509\" title=\"signature dkim\"toto src=\"https:\/\/www.nageurs.com\/blog\/radio-piscine\/files\/2013\/11\/Image-1.png\" alt=\"\" \/><\/p>\n<p>N&rsquo;ayant pas trouv\u00e9 d&rsquo;article complet sur le sujet, et notamment sur le m\u00e9canisme de signature \u00e0 la main des emails, j&rsquo;ai d\u00e9cid\u00e9 d&rsquo;en faire un petit tutoriel qui explique toutes les \u00e9tapes, et de vous proposer ici. La lecture (en diagonable bien entendu) de la <a title=\"RFC 4871\" href=\"http:\/\/tools.ietf.org\/html\/rfc4871\">RFC 4871<\/a> est essentielle pour comprendre toutes les subtilit\u00e9s de cette norme, et je vous conseille d&rsquo;y jeter un coup d&rsquo;oeil pour prendre connaissance d&rsquo;autres m\u00e9thodes de chiffrement, d&rsquo;algorithmes de concat\u00e9nation, et de fonction de hashage que je n&rsquo;\u00e9voquerai pas dans cet article.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"related google+ page\"toto src=\"https:\/\/www.nageurs.com\/blog\/radio-piscine\/files\/2013\/11\/related.png\" alt=\"\" width=\"199\" height=\"219\" \/>Voici maintenant les \u00e9tapes \u00e0 suivre pour chiffrer des emails. La premi\u00e8re \u00e9tape est de g\u00e9n\u00e9rer une paire de cl\u00e9s : une publique et l&rsquo;autre qui restera priv\u00e9e. Pour cela il suffit de lancer les commandes suivantes :<\/p>\n<pre>openssl genrsa -out rsa.private 1024<\/pre>\n<pre>openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM<\/pre>\n<p>Dans les DNS du serveur ajouter une zone DKIM pour le domaine <span style=\"color: #ff0000;\">dkim<\/span>._domainkey.nageurs.com (vous pouvez remplacer dkim par autre chose, mais garder la cha\u00eene _domainkey). Comme valeur mettre k=rsa; p=<span style=\"color: #ff0000;\">[la cl\u00e9 publique sur une seule ligne sans espace]<\/span><\/p>\n<p>Il faut bien entendu retirer les lignes \u00ab\u00a0&#8212;&#8211;BEGIN PUBLIC KEY&#8212;&#8211;\u00a0\u00bb et \u00ab\u00a0&#8212;&#8211;END PUBLIC KEY&#8212;&#8211;\u00a0\u00bb pour votre enregistrement DNS.<\/p>\n<p>Ce site permet de v\u00e9rifier que le champ DKIM de votre domaine est correct : <a href=\"http:\/\/dkimcore.org\/c\/keycheck\">http:\/\/dkimcore.org\/c\/keycheck<\/a> Il faut parfois attendre plusieurs heures\/jours que se propagent les modifications DNS.<\/p>\n<p>Une fois l&rsquo;enregistrement r\u00e9alis\u00e9, il reste l&rsquo;\u00e9tape de signature des emails. Cette signature est compos\u00e9e d&rsquo;un certain nombre de champs que nous allons voir ci-dessous.<\/p>\n<p>Voyons \u00e9tape par \u00e9tape comment fonctionne la signature de l&#8217;email. Imaginons que vous souhaitez signer le mail suivant :<\/p>\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"background-color: #ccc; width: 400px; padding: 5px;\" valign=\"middle\">From: test@nageurs.com<br \/>\nTo: toto@nowhere.com<br \/>\nMailer: sans importance<br \/>\nSubject: bonjour de nageurs.com&nbsp;<\/p>\n<p>Bonjour Toto,<br \/>\nSi tu aimes la natation, inscris toi sur nageurs.com !<\/p>\n<p>A+<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Pour l&rsquo;exemple on va choisir de signer en utilisant l&rsquo;algorithme de cryptage rsa, et la fonction de hashage sha1.<\/p>\n<p>La premi\u00e8re \u00e9tape est d&rsquo;appliquer la fonction de hashage sur le contenu de l&#8217;email. Tous les retours \u00e0 la ligne \u00e9ventuels \u00e0 la fin du contenu sont supprim\u00e9s, et saut de ligne sont les deux caract\u00e8res \\r\\n, ainsi la taille totale du contenu de l&#8217;email ci-dessus est de 75 caract\u00e8res.<\/p>\n<p>On applique la fonction SHA1 puis on encore le text en base64. Cela donne la cha\u00eene suivante :<\/p>\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"background-color: #ccc; width: 400px; padding: 5px;\" valign=\"middle\">8FSexY8XmsBEh\/+aIkM3hzA104I=<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>On isole ensuite les champs d&rsquo;ent\u00eate que l&rsquo;on veut utiliser pour la signature, par exemple \u00ab\u00a0From\u00a0\u00bb, \u00ab\u00a0To\u00a0\u00bb, et \u00ab\u00a0Subject\u00a0\u00bb avec le d\u00e9but du champ DKIM-Signature. Si on veut signer un champ qui n&rsquo;existe pas dans le mail d&rsquo;origine on l&rsquo;ajoute pour cette \u00e9tape de signature. Ainsi nous allons signer toute la cha\u00eene suivante :<\/p>\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"background-color: #ccc; width: 400px; padding: 5px;\" valign=\"middle\">From: test@nageurs.com<br \/>\nTo: toto@nowhere.com<br \/>\nSubject: bonjour de nageurs.com<br \/>\nContent-type:<br \/>\nDKIM-Signature: v=1; a=rsa-sha1; q=dns\/txt; l=75; s=dkim;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>c=simple\/simple;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>h=From:To:Subject:Content-type;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>d=nageurs.com; i=@nageurs.com;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>bh=8FSexY8XmsBEh\/+aIkM3hzA104I=;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>b=<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Quelques explications sur le champ DKIM-Signature ajout\u00e9 ci-dessus. Le champ \u00ab\u00a0c\u00a0\u00bb (ici simple\/simple) correspond au couple d&rsquo;algorithmes de concat\u00e9nation \u00e0 utliser, la premi\u00e8re valeur pour les en-t\u00eates afin de g\u00e9n\u00e9rer le champ \u00ab\u00a0b\u00a0\u00bb, le second pour le contenu du mail qui permettra de g\u00e9n\u00e9rer le champ \u00ab\u00a0bh\u00a0\u00bb.<\/p>\n<p>&nbsp;<\/p>\n<p>Le champ \u00ab\u00a0bh\u00a0\u00bb est g\u00e9n\u00e9r\u00e9 le premier \u00e0 partir d&rsquo;un hash sur le contenu du mail. La fonction de hash est d\u00e9finie par le champ \u00ab\u00a0a\u00a0\u00bb, ici \u00ab\u00a0a=rsa-sha1\u00a0\u00bb. Les ent\u00eates du champ \u00ab\u00a0h\u00a0\u00bb sont celles isol\u00e9es ci-dessus, juste avant le d\u00e9but du champ \u00ab\u00a0DKIM-Signature\u00a0\u00bb qui se termine pour le moment par \u00ab\u00a0b=\u00a0\u00bb.<\/p>\n<p>&nbsp;<\/p>\n<p>La cha\u00eene ci-dessus est ensuite encrypt\u00e9e avec la cl\u00e9 priv\u00e9e, et pass\u00e9e en base64. Cela donne la cha\u00eene :<\/p>\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"background-color: #ccc; width: 400px; padding: 5px;\" valign=\"middle\">VZbTjEgzUo8z0Bgf7wXQcnvRIoz78U8Eov7gsiZho4HJHzr2Pvh97k+3\/0AUL+M<br \/>\nwOdu6KS5cdu\/q5JrFyOZtCiurl8VIx2jAvsXQsLvIsUlAbPbMWewx827Va1DD2dqj<br \/>\nENDJHo29xJDm18PIBmkrUmkZ1xxcTGjf68hGEuyTTBg=<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Il suffit de rajouter cette cha\u00eene en face du champ \u00ab\u00a0b=\u00a0\u00bb et assembler le mail complet avec les ent\u00eates d&rsquo;origine. Cela donne l&#8217;email suivant :<\/p>\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"background-color: #ccc; width: 600px; padding: 5px;\" valign=\"middle\">From: test@nageurs.com<br \/>\nTo: toto@nowhere.com<br \/>\nMailer: sans importance<br \/>\nSubject: bonjour de nageurs.com<br \/>\nDKIM-Signature: v=1; a=rsa-sha1; q=dns\/txt; l=75; s=dkim;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>c=simple\/simple;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>h=From:To:Subject:Content-type;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>d=nageurs.com; i=@nageurs.com;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>bh=8FSexY8XmsBEh\/+aIkM3hzA104I=;<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>b=VZbTjEgzUo8z0Bgf7wXQcnvRIoz78U8Eov7gsiZho4HJHzr2Pvh97k+3\/0AUL+MwO<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>du6KS5cdu\/q5JrFyOZtCiurl8VIx2jAvsXQsLvIsUlAbPbMWewx827Va1DD2dqjENDJHo<br \/>\n<span style=\"color: #ccc;\">&#8230;&#8230;..<\/span>29xJDm18PIBmkrUmkZ1xxcTGjf68hGEuyTTBg=<br \/>\n&nbsp;<\/p>\n<p>Bonjour Toto,<br \/>\nSi tu aimes la natation, inscris toi sur nageurs.com !<\/p>\n<p>A+<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Pour tester que cela fonctionne vous pouvez bien s\u00fbr vous envoyer un email. Il y a auss des outils en ligne permettent ensuite de tester que le mail cr\u00e9\u00e9 a un ent\u00eate DKIM-Signature valide : <a href=\"https:\/\/9vx.org\/~dho\/dkim_validate.php\">https:\/\/9vx.org\/~dho\/dkim_validate.php<\/a><\/p>\n<p>Comme pr\u00e9vu, quelques jours plus tard, la page Google+ appara\u00eet \u00e0 droite des emails !<\/p>\n<p>Et voil\u00e0 maintenant vous savez comment signer un email \ud83d\ude42<\/p>\n<p>N&rsquo;h\u00e9sitez pas \u00e0 faire un lien vers cet article ! Merci \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aller, un petit article sur la s\u00e9curit\u00e9 informatique pour changer !\u00a0R\u00e9cemment, pour certifier les emails envoy\u00e9s aux membres du site nageurs.com, l&rsquo;ajout d&rsquo;un m\u00e9canisme de signature a \u00e9t\u00e9 mis en place bas\u00e9 sur la norme DKIM. Cette norme DKIM pour DomainKeys Identified Mail permet de lutter contre le phishing, et surtout de garantir que l&#8217;email &hellip; <a href=\"https:\/\/www.nageurs.com\/blog\/radio-piscine\/comment-signer-ses-emails-avec-la-norme-dkim\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Comment signer ses emails avec la norme DKIM ?&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[59],"class_list":["post-1508","post","type-post","status-publish","format-standard","hentry","category-non-classe","tag-informatique"],"_links":{"self":[{"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/posts\/1508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/comments?post=1508"}],"version-history":[{"count":27,"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/posts\/1508\/revisions"}],"predecessor-version":[{"id":1537,"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/posts\/1508\/revisions\/1537"}],"wp:attachment":[{"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/media?parent=1508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/categories?post=1508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nageurs.com\/blog\/radio-piscine\/wp-json\/wp\/v2\/tags?post=1508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}