versión SSL / TLS cambiar sobre la razón

3

Estoy estudiando el protocolo SSL / TLS, más específicamente su protocolo de enlace. Sé que inicialmente, un cliente envía un mensaje Cliente Hola al servidor que incluye la versión TLS compatible con el cliente.

Tengo una aplicación que usa conexiones HTTPS, implementada con WinHTTP en el cliente y Apache Java en el servidor. Estoy rastreando el tráfico HTTPS con Wireshark , que tiene este aspecto:

Client Hello,         version-TLS 1.2
Server Hello,         version-TLS 1.2
Client Key Exchange,  version-TLS 1.2
Client Cipher spec,   version-TLS 1.2
Application data,     version-TLS 1.2
Encrypted alert       version-TLS 1.2  [from client]
FIN                   version-TLS 1.2
ACK                   version-TLS 1.2

No sé lo que significa Encrypted alert (en Wireshark se muestra como Encrypt alert (21) ): dado que el cliente lo envía, asumo que es una alerta de Cerrar notificación .

Unos segundos después de que se cierre la sesión inicial, se inicia una nueva sesión de la siguiente manera:

Client Hello,         version-TLS 1.0
Server Hello,         version-TLS 1.0
Client Key Exchange,  version-TLS 1.0
Client Cipher spec,   version-TLS 1.0
Application data,     version-TLS 1.0
Encrypted alert       version-TLS 1.0  [from client]
FIN                   version-TLS 1.0
ACK                   version-TLS 1.0

A partir de esto, concluyo los cambios de versión, y así el cifrado.

Esto no parece suceder siempre: a veces, una nueva sesión utilizará TLS 1.2, a veces recurre a TLS 1.0. ¿Cuál es la razón de esto?

    
pregunta Vishal Santharam 15.05.2014 - 09:28
fuente

1 respuesta

2

Sus registros son parciales; usted no muestra todos los paquetes. En particular, no puede haber en SSL un registro de "datos de la aplicación" si no se ha completado un protocolo de intercambio, y un saludo completo (abreviado o no) necesariamente contiene dos mensajes de "cambio de especificaciones de cifrado". Además, tenga en cuenta que cuando un sistema envía varios mensajes de intercambio sucesivos (como es común para un servidor: el ServerHello suele ir seguido de un Certificate y luego un ServerHelloDone ), los mensajes generalmente se ajustarán dentro del mismo < em> grabar .

En cuanto a las versiones, hay dos de ellas en SSL: la versión de protocolo negociada en ClientHello y ServerHello , y la utilizada en los encabezados de registro. No necesariamente coinciden (aunque deberían, al menos después del par de mensajes de saludo). Debes inspeccionar estos campos más a fondo.

Después de un "cambio en la especificación de cifrado", los registros posteriores se cifran, por lo que Wireshark no puede ver su contenido; solo se ve el tipo general (protocolo de enlace, alerta, datos de la aplicación ...), ya que forma parte del encabezado del registro. Por eso ve "alerta cifrada".

Algunos clientes probarán varias versiones: primero comienzan con una versión muy anunciada, pero no les gusta lo que ven, pueden volver a intentarlo con otra versión máxima anunciada. Esto puede ser lo que observas.

Esta respuesta es una introducción detallada a SSL / TLS. lo que debería ayudar en el análisis de apretones de manos grabados.

    
respondido por el Tom Leek 15.05.2014 - 13:14
fuente

Lea otras preguntas en las etiquetas