¿El correo electrónico enviado desde una aplicación web de Java a través de una conexión HTTPS está encriptado?

3

Estoy trabajando en una aplicación web Java que se ejecuta en una conexión HTTPS. Esta aplicación envía correos electrónicos a sus usuarios. Quiero proteger esos correos electrónicos de ataques de intermediarios y otras amenazas potenciales. Mis preguntas son:

  1. ¿Necesito cifrar el contenido de mi correo electrónico? ¿Porque y como? ¿Por qué no?
  2. ¿HTTPS no cifra los datos transmitidos automáticamente?
  3. Si tengo que cifrarlos manualmente, ¿cómo los receptores los descifran?
  4. Cualquiera que sea la solución que sugiera, ¿cuál es la probabilidad y la gravedad de las amenazas potenciales?
pregunta Gurkirat Singh 15.03.2016 - 10:48
fuente

3 respuestas

6

Suponiendo que todo se haga correctamente ( todo , que no se da especialmente si uno lo hace solo), HTTPS aún no protegerá su correo electrónico, ya que los correos electrónicos no usan ese protocolo para ser transmitido Porque realmente necesita enviar el correo electrónico real a otros servidores utilizando el "protocolo de correo electrónico": SMTP . Pero incluso entonces, esta es una mala idea.

Por ejemplo, ¿qué son estos "otros servidores" exactamente? Si su destinatario está en gmail, por ejemplo, tiene que enviar el correo electrónico a los servidores de gmail, ¿verdad? Sin embargo, esto no es exactamente cómo funciona SMTP : su correo electrónico pasará de los servidores de correo a los servidores de correo hasta que llegue a su destino final. Esta conexión puede ser directa, pero no hay garantía de que realmente lo sea, ni mucho menos. Este simple hecho hace que el cifrado de extremo a extremo dentro de SMTP sea imposible por diseño : ¡cada real / MTA es un MitM! Sí, hubo intentos de hacer que SMTP sea seguro, pero el diseño sigue siendo malo desde el punto de vista de la seguridad. Consulte este artículo de Wiki , por ejemplo, especialmente:

  

La verificación obligatoria del certificado no es viable para la entrega de correo de Internet. Como resultado, la mayoría de los correos electrónicos que se entregan a través de TLS solo utilizan el cifrado oportunista.

Oportunista aquí significa que, de manera predeterminada, se borra el texto cada vez que alguien quiere leer ilegítimamente, si algo en el medio está roto, si algo no está configurado correctamente, etc. Y lo peor es que no está porque su conexión al primer relé (llamada MTA, en la otra respuesta) es realmente segura (porque hizo un buen trabajo perdiendo 8h de su tiempo en configuración y verificaciones completas) que la conexión entre ese primer relé y el segundo será seguro. No tienes ninguna garantía de eso en absoluto (y, una vez más, los mismos relés pueden ser malos).

¿Soluciones ?

  • No enviar correos electrónicos de texto simple. Utilice PGP / GPG, S / MIME o equivalente para cifrar sus correos electrónicos si desea mantenerlos en secreto. Estos proporcionan cifrado de extremo a extremo pero requieren una buena configuración de su parte y del lado del usuario. Para hacerlo correctamente (y proporcionar privacidad), debe autenticar manualmente a cada usuario. Esto puede no ser posible.

  • Otra solución sería utilizar un protocolo ya diseñado para ser seguro que proporcione cifrado de extremo a extremo (algunos protocolos de IM son realmente buenos para esto).

  • Como se propuso en la otra respuesta, proporcione un correo electrónico con un enlace a una página HTTPS protegida a la que solo puedan acceder los usuarios autenticados (un token en la URL no funcionará).

Sin embargo, nunca use SMTP (con o sin TLS / StartTLS) si necesita una garantía de una cantidad mínima de privacidad . SMTP no es seguro.

    
respondido por el JPatta 15.03.2016 - 12:44
fuente
3

Una forma de verificar la ruta de comunicación y la configuración, al menos desde la perspectiva de usted (el cliente) que se comunica con el servidor de correo directo (Microsoft / Apple / Google) es ejecutar Wireshark (herramienta de rastreo y analizador de paquetes) y enviar un correo electrónico de una cuenta a otra. Dependiendo de cómo haya configurado el cliente de correo, puede ver la ruta de comunicación que se está creando y si el cifrado (al menos para la ruta inicial) está cifrado, es decir, mediante algún tipo de ruta de cifrado TLS / SSL. Una vez que se encuentra en el servidor de correo de la empresa, es realmente difícil evaluar si la ruta completa, de salto a salto, de diferentes DNS y servidor de correo está encriptada. SMTP, POP3 IMAP, MIME no utilizan cifrado de datos o cifrado de encabezado de forma predeterminada.

    
respondido por el Neutron_boy 15.11.2016 - 15:06
fuente
1

Simplemente porque su aplicación web solo acepta conexiones HTTPS entrantes, no significa que todos los correos electrónicos que envía estén encriptados ... Esto es responsabilidad del servidor SMTP subyacente. Debe configurar el servidor SMTP para que solo envíe correos electrónicos cifrados. Entonces:

  • A1: Sí, pero no en el nivel de aplicación. Configure el servidor SMTP para usar SSL / TLS entre el cliente y el mismo, y para la comunicación entre MTA.
  • A2: Sí lo hace; entre el cliente (el navegador del usuario final) y el servidor (la aplicación web). No entre el servidor y el servidor SMTP (ya que no se hace a través de https).
  • A3: Exactamente, no pueden. Esta es la razón por la que necesita configurar el servidor SMTP para que dependa de los mecanismos de cifrado de SSL / TLS y no cifre los datos en el nivel de la aplicación.
  • A4: Si el servidor POP / IMAP del destino no está configurado correctamente, podría descargar el texto sin formato de los correos electrónicos, lo que revela una oportunidad para el hombre en el medio ...

Si el contenido del correo electrónico es realmente tan sensible, optaría por no dejar que deje la aplicación en absoluto. Puede enviar correos electrónicos a los usuarios para notificarles que hay un nuevo mensaje disponible en el portal y que deben iniciar sesión para verlo. Por supuesto, esto es menos fácil de usar que un correo electrónico directo ... Esta es la parte en la que debe evaluar la confidencialidad de los datos frente a la facilidad de uso y decidir.

    
respondido por el Stef Heylen 15.03.2016 - 11:49
fuente

Lea otras preguntas en las etiquetas