¿TLS_FALLBACK_SCSV proporciona protección general contra los ataques de downgrade?

8

La bandera TLS_FALLBACK_SCSV se promocionó como una forma de evitar POODLE, que abusó del potencial de degradar a SSLv3 desde TLS. ¿La implementación de este indicador evita ataques de degradación similares (por ejemplo, FREAK, Logjam) contra TLS?

Por lo que puedo decir, TLSv1.2 no tiene cifrados de exportación, por lo que el hecho de no lograr una baja de calificación (suponiendo que tanto el cliente como el servidor lo admitan) debería evitar las degradaciones de grado de exportación.

¿Mi razonamiento es correcto aquí? ¿Es una protección válida?

    
pregunta Polynomial 22.05.2015 - 11:11
fuente

3 respuestas

9

TLS_FALLBACK_SCSV no protege contra Logjam por el mismo motivo por el que realmente funciona. Ese mecanismo anti-fallback se basa en que el cliente lo coloque en el ClientHello y, en última instancia, forme parte de la entrada a la función hash que calcula el mensaje final Finished . Esto funciona solo siempre que el atacante activo no pueda romper el cifrado de protocolo de enlace de inmediato y corregir en tiempo real el contenido del mensaje Finished . Pero eso es exactamente lo que sucede con Logjam: el atacante modifica el mensaje ClientHello para incluir el conjunto de cifrado RSA de exportación como parte de las suites de clientes, de modo que el ClientHello que recibe el servidor no es lo que el cliente envía. Mientras está en eso, el atacante también puede modificar otras partes del ClientHello y el ServerHello que regresa como respuesta, por ejemplo. para modificar la versión máxima anunciada (desde TLS 1.2 hasta TLS 1.0) y eliminar TLS_FALLBACK_SCSV.

Las cosas van por ese camino:

  • El cliente envía un ClientHello que dice "TLS 1.2, puede usar DHE-RSA, TLS_FALLBACK_SCSV".
  • El atacante cambia eso a ClientHello que dice "TLS 1.0, puede usar solo DHE-EXPORT-RSA, no TLS_FALLBACK_SCSV".
  • El servidor responde con un ServerHello que dice "ok, TLS 1.0, DHE-EXPORT-RSA, sin reserva".
  • El atacante vuelve a cambiar eso en un ServerHello que dice "ok, TLS 1.2, DHE-RSA, su antirrevolucionario fue visto y bien procesado".
  • El servidor envía los parámetros exportar DH, debidamente firmados, con un módulo de 512 bits. El atacante los dejó fluir como están al cliente.
  • El cliente espera parámetros DH "normales", pero no se distinguen de los parámetros DH "exportados", excepto por el tamaño del módulo, y el cliente está totalmente satisfecho con hacer un DH débil si el servidor parece querer hacerlo (aparentemente , algunas versiones de Safari incluso aceptan utilizar un módulo de 16 bits ...).
  • El protocolo de enlace continúa, utilizando este módulo de 512 bits que tanto el cliente como el servidor acuerdan usar (aunque uno de ellos lo considera "exportar" y no el otro).
  • El atacante lo rompe de inmediato (gracias a su pequeño tamaño y módulo predecible), y así obtiene la clave de sesión que utilizan el cliente y el servidor.
  • Al final del protocolo de enlace, tanto el cliente como el servidor calculan los mensajes Finished que deben enviar y que deben recibir. Vieron distintos mensajes de protocolo de enlace (el atacante modificó el ClientHello y el ServerHello ) pero el atacante tiene, en ese punto, el cifrado y las claves MAC, para poder descifrar, parchear y volver a cifrar los mensajes Finished voluntad de mantener la ilusión.

Resumen: TLS_FALLBACK_SCSV es un mecanismo "anti-downgrade", pero cubre solo la versión del protocolo y, lo que es más importante, funciona solo mientras el handshake degradado Todavía es resistente a la rotura inmediata y total. Esto estuvo bien para POODLE, donde el ataque se produce solo después del saludo, cuando se envían los mensajes cifrados. Pero no para Logjam.

En cuanto a FREAK, es más o menos lo mismo, excepto que se basa en un error adicional en la implementación del cliente: el cliente debe aceptar el uso de una clave efímera enviada por el servidor aunque, desde el punto de vista del cliente , no se debe enviar dicha clave ya que el cliente no solicitó una suite de cifrado RSA de exportación (no hay una suite de cifrado RSA no exportable en SSL / TLS que aún use un par de claves RSA efímeras).

Si bien es tentador afirmar que el problema es un "defecto de protocolo" y radica en el hecho de que los parámetros de exportación DH no se pueden distinguir de los parámetros de DH que no se exportan (este es el punto de vista de los autores del ataque Logjam), Mi propio análisis es que el verdadero problema es que tanto el cliente como el servidor aceptan usar criptografía débil: el servidor con el apoyo voluntario de DHE-export, el cliente al aceptar hacer DH con un módulo demasiado corto.

    
respondido por el Thomas Pornin 22.05.2015 - 15:15
fuente
1

Creo que tu razonamiento es sólido, es simplemente defectuoso

como señaló @SOJPM:

  

Creo que SCSV evita los ataques de degradación del Protocolo (por ejemplo, TLS - > SSL)   mientras que FREAK y Logjam atacan suites de cifrado débiles. - SOJPM

Por lo tanto, TLS_FALLBACK_SCSV protege el protocolo utilizado, no la suite de cifrado.

Debes desactivar los cifrados de exportación, SSL, RC4, etc. Debido al simple hecho, sus otras formas se basan en una implementación correcta tanto en el cliente como en el servidor de las características de seguridad como el mecanismo TLS_FALLBACK_SCSV . y otras mitigaciones. Además, una de esas máquinas está fuera de su control, no debería depender de que sea correcta o incluso correcta.

La desactivación también es parte de la seguridad en profundidad (solo permite un conjunto selecto de cifrados incluidos en una gran lista) y la optimización de la criptografía. (Un conjunto limitado es más fácil de optimizar para un servidor que un conjunto grande, ya que cada cifrado necesita su propio conjunto de memoria.

    
respondido por el LvB 22.05.2015 - 11:56
fuente
1

No.
TLS_FALLBACK_SCSV no funcionará para esto. Es solo el cliente que dice "Mira, me hiciste volver por segunda vez y con una versión de protocolo reducida".

Pero Logjam o FREAK no dependen de una segunda conexión. Funciona con la primera conexión. La rebaja no está en el nivel de protocolo. Está en los parámetros que se entregan.

    
respondido por el StackzOfZtuff 22.05.2015 - 13:35
fuente

Lea otras preguntas en las etiquetas