TLS Mensaje finalizado

2

Estoy implementando un sistema similar a TLS , y me gustaría configurar un Finished de mensaje, para evitar los ataques de reproducción.

Por lo que entiendo TLS , contiene un hash en los mensajes de intercambio anteriores. Este hash se cifra y se firma con el algoritmo negociado.

Mi pregunta es sobre qué hash en este mensaje. No se especifica en el capítulo sobre el mensaje finalizado , en el RFC ...

¿Son los mensajes (no cifrados), o más bien lo que se envió a través de la red (y que se han cifrado / firmado)?

    
pregunta EisenHeim 31.03.2016 - 16:26
fuente

1 respuesta

6

En SSL / TLS, el hash es handshake messages , es decir, el contenido sin cifrar. La entrada de hash incluye los encabezados de 4 bytes para cada mensaje de intercambio (un byte para el tipo de mensaje, tres bytes para la longitud del mensaje); sin embargo, no contiene los encabezados de grabación, ni nada relacionado con el procesamiento de registros (por lo tanto, sin relleno o MAC). El mensaje "ChangeCipherSpec" (un solo byte de valor 1) no es un "mensaje de intercambio", por lo que no se incluye en la entrada de hash.

Cada mensaje de saludo puede dividirse en varios registros; De manera similar, un solo registro puede contener varios mensajes de intercambio. Esta división y fusión no tiene ningún impacto en el proceso de hash.

Esto se especifica realmente en el RFC:

  handshake_messages
     All of the data from all messages in this handshake (not
     including any HelloRequest messages) up to, but not including,
     this message.  This is only data visible at the handshake layer
     and does not include record layer headers.  This is the
     concatenation of all the Handshake structures as defined in
     Section 7.4, exchanged thus far.

Nota obligatoria: debe indicarse que diseñar un protocolo como SSL / TLS es muy difícil ; Muchos de los detalles pueden ser erróneos y poner en peligro la seguridad. El TLS real se equivocó en varios puntos, y esto provocó muchos problemas (consulte esta respuesta ). Definir su propio protocolo y hacer su propia implementación, está bien con el propósito de aprender o simplemente divertirse, pero le insto a que reconsidere cualquier importancia al implementar tales cosas para uso de producción.

    
respondido por el Thomas Pornin 31.03.2016 - 16:40
fuente

Lea otras preguntas en las etiquetas