La respuesta, basada en el STARTTLS RFC para SMTP ( RFC 3207 ) es:
STARTTLS es menos seguro que TLS.
En lugar de hablar por mí mismo, permitiré que el RFC hable por sí mismo, con los cuatro bits relevantes resaltados en NEGRITA :
Se puede lanzar un ataque de hombre en el medio eliminando la respuesta "250 STARTTLS" del servidor. Esto provocaría que el cliente no intente iniciar una sesión TLS. Otro ataque de hombre en el medio es permitir que el servidor anuncie su capacidad STARTTLS, pero alterar la solicitud del cliente para iniciar TLS y la respuesta del servidor. Para defenderse de tales ataques, tanto los clientes como los servidores DEBEN poder configurarse para requerir una negociación TLS exitosa de un conjunto de cifrado apropiado para los hosts seleccionados antes de que los mensajes puedan transferirse con éxito. También se DEBE proporcionar la opción adicional de usar TLS cuando sea posible. Una implementación MAYO proporciona la capacidad de registrar que TLS se usó para comunicarse con un par dado y generar una advertencia si no se usa en una sesión posterior.
Si la negociación de TLS falla o si el cliente recibe una respuesta 454, el cliente debe decidir qué hacer a continuación. Hay tres opciones principales: continuar con el resto de la sesión SMTP , [...]
Como puede ver, el RFC en sí mismo establece (no muy claramente, pero lo suficientemente claro) que NADA requiere que los clientes establezcan una conexión segura e informen a los usuarios si falla una conexión segura. Se explícitamente da a los clientes la opción de establecer silencio de texto plano conexiones.
No hay diferencia en la seguridad entre las dos opciones.
SSL / TLS abre primero una conexión SSL / TLS, luego comienza la transacción SMTP. Esto debe ocurrir en un puerto que no tiene un servidor SMTP no SSL / TLS que ya se está ejecutando; Es imposible configurar un solo puerto para manejar tanto texto sin formato como conexiones encriptadas debido a la naturaleza de los protocolos.
STARTTLS inicia la transacción SMTP y busca soporte del otro extremo para TLS en la respuesta a EHLO. Si el cliente ve STARTTLS en la lista de comandos admitidos, envía STARTTLS y comienza la negociación para el cifrado. Todo esto puede (y generalmente ocurre) en el puerto SMTP estándar de 25, en parte por compatibilidad con versiones anteriores, pero también para permitir el cifrado oportunista entre puntos finales que ambos lo admiten pero no necesariamente lo requieren.
En general, SSL / TLS solo se usa entre clientes finales y servidores. STARTTLS se usa más comúnmente entre MTA para asegurar el transporte entre servidores.
Dadas esas dos implementaciones, STARTTLS podría interpretarse como inseguro si el usuario o el administrador están asumiendo que la conexión está encriptada pero no la han configurado para requerir encriptación. Sin embargo, el cifrado utilizado es exactamente el mismo que SSL / TLS y, por lo tanto, no es más o menos vulnerable a un ataque Man-in-the-Middle más allá de este tipo de error de configuración.
fuente
Para el correo electrónico en particular, en enero de 2018 se lanzó RFC 8314 , que recomienda explícitamente que se use "TLS implícito" en lugar del mecanismo STARTTLS para envíos IMAP, POP3 y SMTP.
(énfasis añadido)
fuente
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.
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,
fuente
Sí, tienes lo básico correcto. Y sí, STARTTLS es definitivamente menos seguro. No solo puede regresar a texto plano sin notificación, sino porque está sujeto a ataques intermedios. Dado que la conexión comienza en claro, un MitM puede eliminar el comando STARTTLS y evitar que se produzca el cifrado. Sin embargo, creo que los servidores de correo pueden especificar que las transferencias solo ocurran después de que se haya configurado un túnel cifrado. Entonces puedes evitar esto.
Entonces, ¿por qué existe tal cosa? Por razones de compatibilidad. Si alguna de las partes no admite el cifrado, es posible que aún desee que la conexión se complete correctamente.
fuente
De acuerdo con @Greg. Esos ataques son posibles. Sin embargo, los MTA se pueden configurar (dependiendo del MTA) para usar "TLS obligatorio", no "TLS oportunista". Lo que esto significa es que se usa TLS y solo TLS (esto también incluye STARTTLS) para las transacciones de correo electrónico. Si el MTA remoto no es compatible con STARTTLS, el correo electrónico se devuelve.
fuente
No, es no menos seguro, cuando la aplicación gestiona correctamente.
Hay cuatro vías para manejar TLS y muchos programas le permiten elegir:
starttls
, usa una conexión sin cifrar cuando falla)starttls
y falla si no funciona)La ventaja de TLS en un puerto dedicado es que puede estar seguro de que no hay respaldo cuando utiliza un programa que aún no conoce o que no expone la configuración detallada para el manejo de errores en su asistente de inicio.
Pero, en general, la seguridad depende del manejo de los errores de seguridad. Un programa podría decidir cambiar al puerto de texto sin formato cuando también falla TLS en el puerto TLS. Debe saber qué hará y elegir configuraciones seguras. Y los programas deben usar valores predeterminados seguros.
fuente