La respuesta depende en cierto grado de lo que quiere decir con "seguro".
Primero, su resumen no captura la diferencia entre SSL / TLS y STARTTLS.
- Con SSL / TLS, el cliente abre una conexión TCP al "puerto SSL" asignado al protocolo de aplicación que desea usar, y comienza a hablar TLS de inmediato.
- Con STARTTLS, el cliente abre una conexión TCP al "puerto de texto sin formato" asociado con el protocolo de aplicación que quiere usar, luego le pregunta al servidor "¿qué extensiones de protocolo admite?". El servidor luego responde con una lista de extensiones. Si una de esas extensiones es "STARTTLS", el cliente puede decir "está bien, usemos TLS" y los dos comienzan a hablar TLS.
Si el cliente está configurado para requerir TLS, los dos enfoques son más o menos igualmente seguros. Pero hay algunas sutilezas sobre cómo se debe usar STARTTLS para que sea seguro, y es un poco más difícil para la implementación de STARTTLS obtener esos detalles correctamente.
Por otro lado, si el cliente está configurado para usar TLS solo cuando TLS está disponible, y usa texto sin formato cuando TLS no está disponible, lo que el cliente podría hacer es primero intentar conectarse al puerto SSL utilizado por el protocolo, y si eso falla, luego conéctese al puerto de texto sin formato e intente usar STARTTLS, y finalmente retroceda a texto sin formato si TLS no está disponible en ninguno de los casos. Es bastante fácil para un atacante hacer que falle la conexión del puerto SSL (todo lo que se necesita son algunos paquetes TCP RST oportunos o el bloqueo del puerto SSL). Es un poco más difícil, pero solo un poco, que un atacante derrote la negociación de STARTTLS y haga que el tráfico permanezca en texto sin cifrar. Y luego el atacante no solo puede leer su correo electrónico, sino que también puede capturar su nombre de usuario / contraseña para su uso futuro.
Entonces, la respuesta simple es que si se está conectando a un servidor que ya sabe que admite TLS (como debería ser el caso cuando envía o lee un correo electrónico), debe usar SSL / TLS. Si se ataca la conexión, el intento de conexión fallará, pero su contraseña y correo electrónico no se verán comprometidos.
Por otro lado, si se está conectando a algún servicio que no sabe si es compatible con TLS, STARTTLS puede ser marginalmente mejor.
Cuando se inventó STARTTLS, los ataques de "escucha pasiva" eran muy comunes, los ataques "activos" en los que el atacante inyectaba tráfico para tratar de reducir la seguridad eran menos comunes. En los 20 años más o menos desde entonces, los ataques activos se han vuelto más factibles y más comunes.
Por ejemplo, si está tratando de usar una computadora portátil en un aeropuerto u otro lugar público e intenta leer su correo a través del wifi que se proporciona allí, no tiene idea de lo que está haciendo esa red wifi con su tráfico. Es muy común que las redes wifi enruten ciertos tipos de tráfico a "servidores proxy" que se interponen entre las aplicaciones de su cliente y los servidores con los que intentan hablar. Es trivial para esos proxies deshabilitar tanto STARTTLS como "probar un puerto y luego otro" en un intento de hacer que su cliente recurra a texto sin cifrar. Sí, esto sucede, y es solo un ejemplo de cómo una red puede espiar su tráfico. Y tales ataques no se limitan a las agencias estatales de tres letras,