Número de bytes en un protocolo de enlace TLS

1

¿Cómo puedo identificar con precisión la cantidad exacta de bytes que ClientHello y ServerHello necesitan en un tráfico TLS? esto es para el propósito del análisis de tráfico para capturar los bytes de interés TLS (solo para el cliente y para el servidor).

    
pregunta anonymous 01.02.2018 - 16:24
fuente

3 respuestas

3
  

¿Cómo puedo identificar con precisión la cantidad exacta de bytes que ClientHello y ServerHello necesitan en un tráfico TLS?

El tamaño de ClientHello varía. Parte de esto depende de la implementación o configuración de un cliente TLS específico, especialmente la cantidad de cifrados ofrecidos por el cliente y las extensiones. Luego hay diferencias específicas de casos de uso: por ejemplo, el cliente podría agregar la extensión ALPN para indicar el soporte para HTTP / 2 en el caso de un cliente web. El tamaño de la extensión server_name depende del tamaño del nombre de host de destino. Y luego podría haber adicionalmente un identificador de sesión o un ticket de sesión si el cliente intenta reanudar una sesión existente. Solo si se conocen todas estas variaciones, puede calcular el tamaño de ClientHello simplemente completando las partes necesarias en la estructura de ClientHello.

El mismo ServerHello tiene un tamaño de variable similar y depende principalmente del tipo de extensiones agregadas. Pero, después de ServerHello, obtiene partes variables adicionales hasta el mensaje ServerHelloDone, como los certificados (que pueden diferir tanto en número como en tamaño), las partes específicas de intercambio de claves y una solicitud de certificado opcional de tamaño variable. Similar, solo si se sabe todo esto, puede calcular el tamaño del sitio.

Si, en cambio, solo desea obtener algunas estadísticas sobre esto, puede hacer una captura de paquetes de su caso de uso favorito, extraer las partes relevantes y medir su tamaño (o mirar los campos de longitud como sugiere RoraZ). Tenga en cuenta que cualquier conclusión que saque de esto solo se aplica al caso de uso y al contexto que ha medido. Puede ser muy diferente si se usan otros clientes u otros servidores o incluso si se usan los mismos clientes o servidores pero el nombre de host y los certificados difieren.

Si ya ha capturado el tráfico, obtener el tamaño de cada registro es simple, ya que todos los registros siguen la misma estructura descrita en RFC 5246 sección 6.2 Record Layer : primero es el ContentType (un byte - 0x16 para los registros en el protocolo de enlace TLS), luego la versión del protocolo (dos bytes) y luego tiene la longitud de los datos restantes (uint16 , es decir, dos bytes).

    
respondido por el Steffen Ullrich 01.02.2018 - 17:14
fuente
1

Si ejecuta una herramienta como Wireshark es una opción ... aquí hay una instantánea de un saludo de TLS: puede ver la longitud en bytes del cliente hola, servidor hola (incluye trama Ethernet / TCP):

Másdetallesestándisponiblescuandoseleccionascadacuadro.Porejemplo,aquíestáelclienteHola:

NotaTambiénagregué"ssl" (que incluye TLS) en la caja de filtro de Wireshark para reducir el ruido de la red. Wireshark también tiene un SDK .

    
respondido por el HTLee 01.02.2018 - 19:13
fuente
0

El cliente no es un gran bloque de 2000 bytes, he visto entre 80 y 300 bytes en mi red aproximadamente, algunos tienen sslid que es de 32 bytes más y otros tienen extensiones que otros no, pero no es una Gran bloque de 2000 bytes de memoria, el del servidor hello es similar. Le sugeriré que capture el tráfico en su red y haga el ejercicio.

    
respondido por el camp0 01.02.2018 - 16:43
fuente

Lea otras preguntas en las etiquetas