¿Cuánto tiempo dura una clave simétrica HTTPS?

8

Según tengo entendido, HTTPS / SSL / TLS funciona mediante el intercambio de claves EC / DHE / RSA, proporcionando una clave simétrica compartida (es decir, para AES) que se usa para futuras comunicaciones.

¿Cuánto tiempo dura esta clave simétrica mantenida en uso por los principales navegadores antes de que se negocie una nueva clave?

    
pregunta arcyqwerty 10.04.2014 - 22:22
fuente

1 respuesta

15

La imagen completa es la siguiente: la criptografía asimétrica (RSA, DH ...) da como resultado un secreto compartido denominado master secret . Del secreto maestro se derivan las claves simétricas utilizadas para el cifrado.

La distinción se relaciona con la diferencia entre una conexión y una sesión . Cuando un cliente abre una conexión a un servidor, los dos pueden participar en un nuevo apretón de manos completo, con criptografía asimétrica, lo que resulta en un nuevo secreto maestro. O podrían acordar reutilizar un secreto maestro de una conexión anterior. Este último caso se llama un "apretón de manos abreviado". Las diferentes conexiones que funcionan con el mismo secreto maestro se denominan sesión y se identifican mediante un ID de sesión que el cliente y el servidor se envían entre sí en su ClientHello y ServerHello mensajes. Consulte esta respuesta para obtener detalles sobre este proceso.

Cuando se reutiliza un secreto maestro, es decir, para una nueva conexión dentro de una sesión, se derivan nuevas claves simétricas, sin embargo, porque la derivación funciona sobre el secreto principal Y dos valores aleatorios que el cliente y el servidor se envían mutuamente en su cuenta. mensajes iniciales Por lo tanto, las claves simétricas se renuevan con cada conexión, pero a través de la derivación de un "secreto maestro" que puede ser recordado por un largo tiempo y reutilizado para muchas conexiones sucesivas.

Cuando se establece una conexión, la situación normal es que las claves no se renuevan hasta que finalice la conexión. En cualquier momento, según la especificación de protocolo , el cliente o el servidor pueden solicitar un nuevo protocolo de enlace, dentro de la conexión; el nuevo saludo puede o no puede ser "abreviado" (un apretón de manos abreviado ocurre solo si ambas partes lo aceptan), pero de todos modos resultará en nuevas claves simétricas (pero no necesariamente en un nuevo secreto maestro).

En la práctica, esto no sucede. Se producirá un protocolo de enlace adicional en la conexión si el servidor quiere forzar al cliente a autenticarse con un certificado (este es el caso común con IIS: primer protocolo de enlace sin autenticación del cliente, y cuando se envía la solicitud HTTP y el servidor aprende el destino real). camino, se dispara un apretón de manos adicional). Pero es bastante raro que el software implementado realmente haga nuevos handshakes solo para la renovación de la clave. La razón principal es que la renovación de claves no es necesaria para la robustez criptográfica: AES utiliza bloques de 128 bits, y no bloques de 64 bits, precisamente para que las claves no sean renovadas en condiciones prácticas.

Entonces, lo que ocurre (especialmente en un contexto web) es lo siguiente:

  • Las claves simétricas para una conexión permanecen sin cambios hasta el final de esa conexión.
  • Una conexión se mantiene mientras el cliente y el servidor lo permitan; en un contexto web, el servidor normalmente cerrará las conexiones que han estado inactivas por más de uno o dos minutos.
  • Las sesiones , es decir, los valores secretos principales, son recordados por los clientes y los servidores y se reutilizan cuando es posible. Un navegador web típico recordará las sesiones SSL hasta que se cierre (como un proceso, es decir, todas las ventanas cerradas). Un servidor web típico recordará las sesiones SSL durante un período de tiempo determinado, que es configurable (generalmente de 10 minutos a 10 horas aproximadamente), también sujeto a la RAM disponible y un límite configurable (cada sesión recordada utilizará un par de kilobytes como máximo) ).

Las claves simétricas para una conexión se guardan solo en la RAM. El secreto maestro normalmente se mantendrá solo en la memoria RAM, pero cuando varios servidores front-end operan detrás de un equilibrador de carga, pueden compartir los secretos maestros a través de varios métodos, que incluso pueden ser una base de datos. En tales configuraciones, los valores secretos maestros se pueden almacenar en un medio de almacenamiento permanente (lo que plantea muchos problemas potenciales, por supuesto).

Si apaga el sistema cliente (no solo lo pone en modo de suspensión o hibernación, sino que realmente lo apaga), entonces está prácticamente garantizado que todas las claves simétricas, incluido el secreto maestro, han desaparecido definitivamente del cliente. máquina.

    
respondido por el Tom Leek 11.04.2014 - 04:26
fuente

Lea otras preguntas en las etiquetas