StartTLS

La commandeStartTLS (également connue sous le nom de STARTSSL, StartSSL ou TLS opportuniste) est une extension du protocole TLS permettant le chiffrement d’informations grâce à au protocole Transport Layer Security. StartTLS en tant qu’extension du protocole est utilisé principalement pour la communication par email avec les protocoles SMTP, IMAP et POP. HTTP met en œuvre sa propre procédure (définie dans la RFC 2871), qui toutefois ressemble beaucoup à StartTLS. De nos jours, HTTPS (RFC 2818) est devenu le protocole le plus courant. En dehors des protocoles d’email ci-dessus, StartTLS peut également au moins lancer le chiffrement avec les protocoles suivants :

  • LDAP (RFC 4511)
  • FTP (RFC 4217)
  • XMPP (RFC 6120)
  • NNTP (RFC 4642)

Chez les fournisseurs d’accès, StartTLS est devenu, et de loin, le procédé de chiffrement des emails favori, pour la raison qu’il est compatible avec de nombreux domaines et certificats différents dans un même serveur. Il n’est pourtant pas irréprochable, car il transmet sous une forme d’abord non chiffrée des données personnelles, comme l’adresse IP, et les attaques de l’homme du milieu (HDM) restent possibles étant donné que StartTLS peut être écrasé sans que le fournisseur ne le remarque.

Comment fonctionne StartTLS ?

En tant que commande supplémentaire pour SSL/TLS, StartTLS a le grand avantage que le chiffrement ne fait pas obstacle à la communication avec les clients qui ne supportent pas la méthode. Avec StartTLS, on a par conséquent beaucoup moins de problèmes de compatibilité. Si toutefois un serveur refuse TLS, un programme d’email (client) doit savoir quoi faire des données. Autre avantage, la gestion du chiffrement se fait des deux côtés, grâce à quoi, en cas de défaut de communication, des processus automatisés rendent inutile l’intervention de l’administrateur ou de l’utilisateur.

Avec StartTLS, une connexion commence toujours sans chiffrement, et ce au port prévu pour le texte non chiffré. Ce n’est qu’après l’exécution de la commande StartTLS que le protocole négocie le chiffrement avec le client, et ce sans avoir à établir de nouvelle connexion. Grâce à StartTLS, en cas de défaut dans la communication, il n’y a pas besoin de contacter le port : le client peut se contenter de recourir à la procédure StartTLS fournie par le serveur.

StartTLS présente des inconvénients du point de vue des logiciels de sécurité. Les pare-feu doivent analyser le procédé au niveau de l’application pour faire la différence entre les données chiffrées, et non chiffrées. Il en va à peu près de même pour les serveurs relais, qui travaillent de préférence avec des ports séparés, alors qu’avec StartTLS, on ne change pas de port. Cela rend le stockage en mode cache difficile, voire impossible.

En matière de protection des données, StartTLS est loin d’être parfait. La plupart des programmes d’email utilisent l’option « TLS si possible », ce qui fait que l’utilisateur ne sait pas si la liaison avec le serveur mail est chiffrée ou non. On note également une augmentation du risque d’attaque de l’homme du milieu lorsque l’exploitant du réseau élimine tout simplement par filtrage l’extension TLS, ce qui lui permet de participer au protocole d’échange des données. En effet, si la commande StartTLS n’est pas exécutée, les données sont transmises sans être chiffrées, et sans non plus, le plus souvent, que l’utilisateur ne l’apprenne.

Conseil

Consultez notre article sur les les attaques de l’homme du milieu pour découvrir le fonctionnement de cette méthode d’espionnage.

C’est pourquoi il y a lieu de procéder à un test préalable soigneux afin de s’assurer que le serveur gère bien StartTLS. Ce n’est qu’à partir de là qu’on pourra utiliser le procédé par défaut. Si la communication chiffrée échoue, c’est le signe d’un problème extérieur.

Exemple : email

Il s’agit de chiffrer un email par la procédure TLS. On choisit le protocole StartTLS pour pouvoir intégrer la méthode de chiffrement sans difficulté dans le fonctionnement normal. L’option correspondante se trouve normalement dans la configuration du compte, ou dans les réglages de compte de votre client email. Après l’envoi de l’email, la communication commence :

  1. Le client demande au serveur email, par « 250-STARTTLS », s’il accepte la méthode de chiffrement.
  2. Si le retour est positif (« go ahead »), la connexion chiffrée est mise en place.
  3. Le client relance la connexion. À partir de là, la connexion pour l’email se fait sous forme chiffrée.

Comment tester StartTLS ?

Les protocoles TLS utilisent différents ports selon les fournisseurs. Étant donné que StartTLS s’intègre très simplement dans la communication, rendant un changement de port inutile, on peut tester la procédure de chiffrement à partir d’une console adéquate. On voit ainsi quel port chaque fournisseur utilise pour StartTLS. La commande suivante permet de contrôler (p. ex. dans NetCat) si un serveur email accepte StartTLS comme méthode de chiffrement en fonctionnement normal :

 

$ nc smtp.test.server smtp
220 Mailserver ESMTP Exim 4.69 Wed, 18 Jul 2018 12:19:15 +0200
ehlo test
250-Mailserver Hello ionos [10.1.2.73]
250-SIZE 78643200
250-PIPELINING
250-STARTTLS
220-go ahead
250 HELP
Quit
221 Mailserver closing connection

On devrait trouver ici la commande « STARTTLS » pour activer le chiffrement. On peut aussi voir que les données personnelles, comme l’adresse IP, sont transmises non chiffrées.

Avec OpenSSL, la commande se présente comme suit :

 

$ openssl s_client -host mail.test.server-port 25 -starttls smtp
CONNECTED(00000003)
[...]
250 HELP
ehlo test
250-Mailserver Hello ionos [10.1.2.73]
250-SIZE 52428800
250-PIPELINING
250-AUTH PLAIN LOGIN
250 HELP

Avec SMTP, en revanche, l’authentification n’est pas aussi facile. Elle est rendue possible le plus souvent par la procédure « AUTH PLAIN », qui réclame un codage des données d’accès en Base64. Cela consiste en la génération avec la commande en langage PERL $ perl -MMIME::Base64 -e 'print encode_base64("\000user-ju\000secret")' d’un code qui est ensuite transmis au serveur SMTP (« AUTH PLAIN [Code] »). Si le serveur répond ensuite par « Authentication succeeded » (code inclus), le test pour StartTLS est réussi. Cela fait, les autres commandes d’exécution de l’email peuvent s’effectuer.

Conseil

Pour tester StartTLS avec des serveurs ou des protocoles qui ne sont pas compatibles avec OpenSSL, on peut avoir recours à l’outil gnuts-cli du paquet gnuts-bin.


Attendez ! Nous avons quelque chose pour vous !
Votre messagerie professionnelle

Créez une adresse personnalisée
Affichez votre sérieux sur Internet
Nom de domaine inclus
À partir d' 1 € HT/mois (1,20 € TTC)
Conseiller personnel inclus !