La réponse dépend dans une certaine mesure de ce que vous entendez par "sûr".
Tout d'abord, votre résumé ne rend pas bien compte de la différence entre SSL/TLS et STARTTLS.
- Avec SSL/TLS, le client ouvre une connexion TCP sur le "port SSL" attribué au protocole d'application qu'il veut utiliser, et commence immédiatement à parler TLS.
- Avec STARTTLS, le client ouvre une connexion TCP sur le "port en clair" associé au protocole d'application qu'il veut utiliser, puis demande au serveur "quelles sont les extensions de protocole que vous prenez en charge ?". Le serveur répond alors avec une liste d'extensions. Si l'une de ces extensions est "STARTTLS", le client peut alors dire "OK, utilisons TLS" et les deux commencent à parler TLS.
Si le client est configuré pour exiger TLS, les deux approches sont plus ou moins aussi sûres. Mais il existe certaines subtilités sur la façon dont STARTTLS doit être utilisé pour être sûr, et il est un peu plus difficile pour l'implémentation de STARTTLS d'obtenir ces détails correctement.
D'autre part, si le client est configuré pour utiliser TLS uniquement lorsque TLS est disponible, et pour utiliser le texte clair lorsque TLS n'est pas disponible, le client pourrait d'abord essayer de se connecter au port SSL utilisé par le protocole et, en cas d'échec, se connecter au port texte clair et essayer d'utiliser STARTTLS, et enfin revenir au texte clair si TLS n'est pas disponible dans les deux cas. Il est assez facile pour un attaquant de faire échouer la connexion au port SSL (il suffit de quelques paquets TCP RST au bon moment ou de bloquer le port SSL). Il est un peu plus difficile - mais seulement un peu - pour un attaquant de faire échouer la négociation STARTTLS et de faire en sorte que le trafic reste en clair. Dans ce cas, l'attaquant peut non seulement lire votre courrier électronique, mais aussi capturer votre nom d'utilisateur et votre mot de passe pour une utilisation ultérieure.
La réponse simple est donc la suivante : si vous vous connectez à un serveur dont vous savez déjà qu'il prend en charge TLS (comme ce devrait être le cas lorsque vous envoyez ou lisez des e-mails), vous devez utiliser SSL/TLS. Si la connexion est attaquée, la tentative de connexion échouera, mais votre mot de passe et votre courriel ne seront pas compromis.
D'autre part, si vous vous connectez à un service dont vous ne savez pas s'il prend en charge TLS, STARTTLS peut être légèrement meilleur.
Lorsque STARTTLS a été inventé, les attaques "passives" par écoute seulement étaient très courantes, les attaques "actives" dans lesquelles l'attaquant injectait du trafic pour tenter de diminuer la sécurité étaient moins courantes. Au cours des quelque 20 années qui se sont écoulées depuis, les attaques actives sont devenues plus réalisables et plus courantes.
Par exemple, si vous essayez d'utiliser un ordinateur portable dans un aéroport ou un autre lieu public et que vous essayez de lire votre courrier via le réseau wifi qui y est fourni, vous n'avez aucune idée de ce que ce réseau wifi fait de votre trafic. Il est très courant que les réseaux wifi acheminent certains types de trafic vers des "proxies" qui s'interposent entre vos applications clientes et les serveurs avec lesquels elles tentent de communiquer. Il est facile pour ces proxies de désactiver STARTTLS et "essayer un port puis un autre" afin d'inciter votre client à revenir au texte clair. Oui, cela arrive, et ce n'est qu'un exemple de la façon dont votre trafic peut être espionné par un réseau. Et ces attaques ne sont pas limitées aux agences étatiques en trois lettres, elles peuvent être réalisées par un adolescent avec un ordinateur à 35 dollars caché dans un lieu public quelque part.