¿Por qué Firefox divide HTTPS?

9

Estoy usando la versión 28.0 del navegador Firefox. Para acceder a enlace , coloco un proxy con un certificado autofirmado y mi PC cliente puede acceder al sitio HTTPS. Luego, olfateé el tráfico en mi PC cliente y observé algo extraño;

Cada solicitud HTTPS enviada desde Firefox se divide en dos segmentos TCP. Uno solo tiene un carácter (" G "), el otro incluye el resto (" ET / HTTP 1.1 ...")

¿Por qué Firefox se comporta así?

    
pregunta appleleaf 16.07.2014 - 09:56
fuente

1 respuesta

10

Esta es la técnica de "división 1 / n-1" que se implementó en las bibliotecas SSL como una solución para el ataque BEAST.

El ataque BEAST es la aplicación a un contexto web de un ataque de texto simple elegido . El ataque funciona cuando:

  • El cifrado utiliza un cifrado de bloque en modo CBC .
  • El atacante puede elegir los datos que se cifran (en un contexto web, esto se hace con Javascript).
  • Justo antes de enviar sus bytes para cifrar, el atacante conoce la IV que se usará con el modo CBC.

En SSL 3.0 y TLS 1.0, el IV para un registro es el último bloque cifrado del registro anterior, por lo que el atacante puede verlo espiando en la línea (la configuración de ataque supone que el atacante puede espiar la línea < em> y envían información a un Javascript mal plantado en el navegador de la víctima, esto es realista en el escenario "WiFi en un restaurante", con un punto de acceso controlado por un atacante).

La "división 1 / n-1" evita el ataque porque el marco con 1 byte incluye un valor MAC, que el atacante no puede predecir, y que también se encripta. La sutileza es una cuestión de sincronización : cuando el atacante elige los datos que se cifrarán, no se han emitido los registros "1" ni los registros "n-1"; solo cuando el atacante haya insertado sus n bytes se computarán y enviarán los dos registros. El efecto neto es que el atacante no podrá conocer el IV para el registro n-1 antes de enviar sus n bytes para cifrar. El atacante aún podrá predecir el IV para el registro "1", pero un byte no es suficiente para que el atacante saque el ataque BEAST.

Teóricamente, un "0 / n split" sería posible (un primer cuadro sin ningún tipo de datos, luego el cuadro real) y sería aún mejor (de manera académica), pero, aunque se admite hasta el momento como se refiere al estándar , varias implementaciones implementadas se ahogan en registros vacíos, por lo que la "división 1 / n-1" Se considera más práctico.

El ataque BEAST también requiere que el atacante tenga mucho control sobre los bytes que necesita enviar, por ejemplo. no debe estar restringido a solo caracteres ASCII; el ataque prototipo se basó en un par de vulnerabilidades adicionales que se han corregido desde entonces, por lo que incluso sin la división 1 / n-1, el ataque ya no funcionaría. Pero los diseñadores de bibliotecas SSL son cautelosos y no quieren que la seguridad SSL se vea amenazada por una vulnerabilidad en otro componente de la aplicación.

TLS 1.1 y las versiones posteriores son inmunes porque su encabezado de registro incluye un IV específico para el registro.

    
respondido por el Thomas Pornin 16.07.2014 - 13:08
fuente

Lea otras preguntas en las etiquetas