Mensaje terminado loco en TLS

2

He intentado entender el contenido del Finished Message de TLS. Estoy utilizando Wirehark para capturar el tráfico entre mi navegador e Internet. Noté una "rigidez" cuando el conjunto de cifrado elegido es AES_GCM. Beign it es un cifrado de flujo, no tiene relleno, por lo que, si lo hice correctamente, los datos que se envían en el mensaje finalizado son:

  • Nonte explícito de 8 bytes
  • 12 bytes Verify_data
  • etiqueta de autenticación de 16 bytes

Es decir, 36 bytes en total. El "problema" es que el tamaño del paquete del mensaje finalizado es 40 bytes .

Y aquí está:

¿Porquéelpaquetedemensajestiene40bytesycuálessonlosbytesrojos?

¿YporquéWireharkvedossolicitudesdesaludo?

Yotroesto...elClienterespondeconunpaquete176bytes:

¿Qué me estoy perdiendo?

    
pregunta 12.05.2014 - 21:26
fuente

1 respuesta

4

Cada mensaje de saludo tiene un encabezado, que contiene su tipo (como un mensaje de saludo) y su longitud. Este encabezado es además del encabezado de registro. Consulte sección 7.4 para obtener una descripción del encabezado: un byte para el tipo de mensaje y tres bytes para el longitud del mensaje.

En el caso del mensaje Finished , el encabezado debe ser 14 00 00 0C (en hexadecimal), con 0x14 que significa "Terminado" y 00 00 0C que codifica la longitud del contenido del mensaje (12 bytes). Por lo tanto, lo que está cifrado con GCM es en realidad 16 bytes, no 12. GCM agrega el nonce explícito de 8 bytes (que se combina con el nonce implícito de 4 bytes, lo que produce el nonce de 12 bytes que raw GCM realmente necesita), y la etiqueta de autenticación de 16 bytes, para un total de 40 bytes, como puede observar.

Por supuesto, este registro está cifrado, por lo que no ve su contenido; en particular, Wireshark no mostrará el encabezado del mensaje de intercambio. Todo lo que se sabe por el encabezado de registro es que el registro contiene "algunos datos de intercambio".

En cuanto a su segunda pregunta, es posible que el cliente no esté contento con el protocolo de enlace y quiera comenzar uno nuevo, enviando inmediatamente un ClientHello justo después de Finished . Se pueden combinar dos mensajes de reconocimiento en un solo registro de "reconocimiento".

    
respondido por el Tom Leek 13.05.2014 - 00:20
fuente

Lea otras preguntas en las etiquetas