STARTTLS est une commande permettant de lancer une communication chiffrée à l’aide de TLS (Transport Layer Security), sans changer de port. On parle aussi de « TLS opportuniste ».

Comment fonctionne StartTLS ?

En tant qu’extension du protocole TLS, StartTLS permet d’ajouter une couche de chiffrement tout en restant compatible avec les clients qui ne prennent pas TLS en charge. Il présente ainsi moins de problèmes de compatibilité. Si un serveur ne prend pas en charge TLS, le client doit alors décider comment traiter les données. Autre avantage : la négociation du chiffrement s’effectue automatiquement entre le client et le serveur, sans nécessiter d’intervention manuelle, même en cas de défaut de communication.

Avec StartTLS, la connexion débute toujours en clair, sur le port normalement utilisé pour les communications non chiffrées. Ce n’est qu’après l’exécution de la commande STARTTLS que le chiffrement est négocié avec le client, sans qu’il soit nécessaire d’établir une nouvelle connexion. Même en cas d’échec de la négociation, aucun changement de port n’est requis : le client peut simplement relancer la procédure StartTLS proposée par le serveur de messagerie.

Image: Graphique récapitulatif du fonctionnement de StartTLS
Lors de la communication entre deux serveurs, StartTLS chiffre les échanges si les deux le prennent en charge.

Exemple avec un email

StartTLS est utilisé pour intégrer facilement le chiffrement dans le flux de communication normal. Vous trouverez généralement cette option dans la configuration du compte ou dans les paramètres de votre client de messagerie.

Une fois l’email envoyé, la communication démarre :

  1. Le client envoie une requête EHLO pour demander les méthodes de chiffrement.
  2. Le serveur de messagerie répond 250-STARTTLS pour indiquer qu’il accepte la procédure StartTLS.
  3. Le client envoie STARTTLS pour démarrer le chiffrement.
  4. Le serveur répond avec le code d’état 220 OK ; ce code signale que le serveur est prêt à établir une connexion chiffrée.
Adresse email professionnelle
Découvrez une nouvelle façon de traiter vos emails
  • Adresse email à votre nom
  • Fonctions d'IA pour rédiger des emails parfaits (en option)
  • Messagerie sécurisée avec protection anti-spam

Domaines d’application de StartTLS

StartTLS est une extension de protocole principalement utilisée dans la communication par email pour les protocoles SMTP, IMAP et POP. HTTP dispose de son propre procédé (spécifié dans la RFC 2817), qui est très similaire à StartTLS. De nos jours, l’utilisation de HTTPS (RFC 2818) est toutefois plus courante. Outre les protocoles de messagerie électronique mentionnés, StartTLS peut initier le processus de chiffrement avec les protocoles suivants :

Chez les fournisseurs d’accès Internet, StartTLS est désormais de loin le procédé de chiffrement d’emails le plus populaire. En effet, il permet d’utiliser de nombreux domaines et certificats différents sur un seul serveur. Toutefois, StartTLS présente certaines failles de sécurité. Par exemple, des informations sensibles comme l’adresse IP sont initialement transmises sans être chiffrées, ce qui ouvre la porte à des attaques de l’homme du milieu. Un attaquant peut ainsi bloquer la commande STARTTLS, forçant la connexion à rester non chiffrée, sans que ni l’utilisateur ni le fournisseur ne s’en aperçoive.

Avantages et inconvénients de StartTLS

StartTLS présente des inconvénients du point de vue des logiciels de sécurité. Les pare-feux 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 proxys, qui travaillent de préférence avec des ports séparés, alors qu’avec StartTLS, les ports ne sont pas modifiés. Cela rend la mise en 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 email est chiffrée ou non. Il existe également une augmentation du risque d’attaques de l’homme du milieu, car un opérateur réseau malveillant peut tout simplement filtrer l’extension StartTLS. Il peut alors intercepter les échanges de données. En effet, si la commande STARTTLS n’est pas exécutée, les données sont transmises en clair, sans que l’utilisateur ne s’en aperçoive généralement.

C’est pourquoi il est nécessaire 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.

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. Cela permet de déterminer les ports utilisés par chaque fournisseur pour StartTLS. La commande suivante permet de contrôler (par exemple dans NetCat) si un serveur email accepte le protocole StartTLS comme méthode de chiffrement en fonctionnement normal :

$ nc smtp.ionos.fr 587
220 mail.exemple.fr (mreue011) Nemesis ESMTP Service ready
ehlo test.local
250-mail.exemple.fr Hello test.local [80.187.86.70]
250-8BITMIME
250-SIZE 141557760
250 STARTTLS
STARTTLS
220 OK
bash

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 en clair sans chiffrement.

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

$ openssl s_client -starttls smtp -connect smtp.ionos.fr :587
CONNECTED(00000005)
[…]
SSL handshake has read 4650 bytes and written 1659 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Protocol: TLSv1.3
Server public key is 3072 bit
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
250 STARTTLS
bash

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. Une fois l’authentification validée, les autres commandes SMTP peuvent être exécutées normalement.

Conseil

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

Cet article vous a-t-il été utile ?
Aller au menu principal