¿Cómo se decide exactamente el cifrado utilizado cuando se usa TLS (correo)?

2

(Espero que este sea el lugar correcto, no estaba seguro de cuál de los sitios de stackexchange utilizar) Tengo la siguiente pregunta:

Al intercambiar correo con otra empresa, los correos que enviamos se cifran utilizando TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039). Sin embargo, nuestro mensaje de saludo muestra: %código% y su mensaje de saludo (cuando nos envían correos) muestra: Cipher Suites (49 suites) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038) [...]

Por lo que entiendo, el orden de cifrado que el cliente envía en su saludo debe utilizarse para seleccionar el cifrado.

Por consiguiente, espero que se use Cipher Suites (49 suites) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) Cipher Suite: TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 (0x00a3) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x006b) Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) [...] .

Cuando recibimos correos de ellos, se cifran utilizando TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) como se esperaba.

¿Hay otros factores que no conozco? El "problema" ocurre con otras compañías.

    
pregunta whatever 09.06.2017 - 13:30
fuente

2 respuestas

2

Un punto importante a destacar es que la máquina y el software que la otra compañía utiliza para enviar correos electrónicos no es necesariamente el mismo que la máquina y el software que se usa para recibir correos electrónicos. E incluso cuando son iguales, las configuraciones SSL para los roles de "cliente" y "servidor" pueden ser distintas.

Si desea inferir los conjuntos de cifrado utilizados por un servidor determinado, debe hablar con él en su función de servidor, con una herramienta de escaneo que se conectará repetidamente y hará que Handshake intente resolver cómo reacciona el servidor; Una de estas herramientas es TestSSLServer . Dos advertencias aquí:

  • Si el SSL / TLS se realiza después de un comando STARTTLS explícito, la herramienta deberá enviar ese STARTTLS y, de manera más general, controlar el bit del protocolo SMTP antes del protocolo de enlace. No todas las herramientas hacen eso (TestSSLServer, en este momento, no lo hace).

  • No debe escanear máquinas que no sean las suyas. Asegúrese de obtener el consentimiento de la otra compañía para hacerlo.

En cualquier caso, para responder a su pregunta específica: en SSL y TLS, el cliente envía una lista de conjuntos de cifrado admitidos, ordenados por preferencia. Entonces el servidor elige. Cómo elige el servidor depende completamente de ello. Algunos servidores son corteses y siguen las preferencias del cliente. Otros servidores hacen cumplir su propio orden de preferencia. Aún otros servidores hacen una especie de mezcla entre los dos, por ejemplo. aplicarán AES sobre 3DES (independientemente de lo que el cliente diga que prefiere) pero seguirán la elección del cliente para el tamaño de la clave (AES-128 vs AES-256).

También hay otros parámetros a tener en cuenta. Por ejemplo, un cliente SSL puede anunciar, junto con su soporte de conjuntos de cifrado que hacen ECDHE, una lista de curvas elípticas que puede manejar para ECDHE. El servidor también podría admitir ECDHE, pero optar por no usarlo porque no admite ninguna de las curvas implementadas en el lado del cliente.

Notablemente (y esto parece plausible, ya que observa que se está eligiendo una suite de cifrado DHE, no ECDHE), he observado las dos cosas siguientes, que pueden coincidir con su situación:

  • Algunos clientes no envían la extensión de curvas elípticas admitida y / o la extensión compatible con formatos de punto .

  • Algunos servidores, cuando se enfrentan con un cliente que no envía una o ambas de estas extensiones, concluirán que no es posible realizar una criptografía de curva elíptica con ese cliente (independientemente de las afirmaciones en la lista de conjuntos de cifrado), y respaldo a conjuntos de cifrado no EC, por ejemplo, algunos con DHE.

respondido por el Thomas Pornin 09.06.2017 - 14:18
fuente
1
  

... el orden de cifrado que el cliente envía en su saludo debería usarse para seleccionar el cifrado.

El servidor es libre de elegir el cifrado que mejor se adapte al servidor de la lista de cifrados que ofrece el cliente. Las estrategias típicas son elegir el primer cifrado que admite el servidor en la preferencia del cliente (es decir, elegir según la preferencia del cliente) o elegir el primer cifrado que el cliente admite según la preferencia del servidor (es decir, elegir según la preferencia del servidor) . Estas dos formas a menudo se pueden configurar en el servidor, como ssl_prefer_server_ciphers on con nginx, pero el servidor también puede emplear cualquier otra estrategia para elegir el cifrado.

  

... y su mensaje de saludo (cuando nos envían correos) muestra:

Los sistemas de cifrado y el orden que utiliza una aplicación como cliente TLS pueden ser los mismos, pero no es necesario que sean los mismos que utiliza como servidor. Esto significa que no puede aplazar el orden de cifrado cuando se utiliza como servidor del orden en el ClientHello. Si el cifrado y el orden del cliente y el servidor son los mismos, depende de la aplicación específica y de la pila TLS.

    
respondido por el Steffen Ullrich 09.06.2017 - 14:06
fuente

Lea otras preguntas en las etiquetas