dependencia de TLS en la hora del sistema

9

Estoy interesado en saber si hay alguna dependencia en la hora del sistema (según lo definido por Linux o Windows) al iniciar un apretón de manos seguro. Soy consciente de que TCP generalmente usa un número aleatorio (RFC 1323) para proporcionar una marca de tiempo para el pedido de mensajes, sin embargo, no estoy seguro de la utilización de TLS de sistema del tiempo . Puede imaginar que esta pregunta es aplicable a dos sistemas que desean establecer una conexión segura pero no comparten un tiempo sincronizado.

Saludos

marca

    
pregunta Nark 22.10.2014 - 16:59
fuente

2 respuestas

14

Durante el protocolo de enlace, el cliente y el servidor se envían mutuamente "valores aleatorios", que son secuencias de 32 bytes aleatorios. El "cliente aleatorio" forma parte del mensaje ClientHello , mientras que el "servidor aleatorio" forma parte del mensaje ServerHello .

En ambos casos, los primeros cuatro bytes del valor aleatorio codifican la fecha y la hora actuales (número de segundos desde el 1 de enero de 1970, 00:00 UTC). La razón por la que lo hacen es un poco confusa y se ha perdido en la niebla del Tiempo. La mejor explicación que podemos encontrar es la siguiente: si el cliente o el servidor no tiene una buena fuente de aleatoriedad, entonces al menos la inclusión del tiempo hará que Asegúrese de que no reutilicen exactamente el mismo valor "aleatorio". Por supuesto, la falta de una buena fuente aleatoria puede inducir otras debilidades (por ejemplo, si se usa un intercambio de claves basado en RSA, el cliente genera la clave pre-maestra aleatoria, por lo que el cliente DEBE tener un PRNG fuerte a mano).

Para validar el certificado del servidor, el cliente debe tener un conocimiento aproximado de la hora actual, ya que los certificados y CRL tienen fechas de caducidad. Esto no requiere que el servidor sepa la hora actual; tampoco necesita una sincronización precisa entre el cliente y el servidor.

Se ha argumentado que SSL se puede (ab) utilizar como una forma de obtener la hora actual: simplemente conectarse a un servidor SSL; haga el apretón de manos completo para que sepa que está hablando con el servidor correcto; use la noción de tiempo del servidor (de los primeros cuatro bytes de server_random como hora actual). Esto no es confiable. A partir de mis propias mediciones, aproximadamente el 15% de los servidores SSL implementados están totalmente desactivados (por años ), o simplemente no siguen el estándar y usan bytes aleatorios para los primeros cuatro bytes de server_random . En cualquier caso, un cliente no debe usar la hora del servidor para validar el certificado del servidor: el cliente debe validar el certificado para asegurarse de que habla con el servidor correcto, y el cliente debe asegurarse de que habla con el servidor correcto para poder confiar en que el server_random recibido realmente proviene del servidor esperado y, por lo tanto, contiene el momento adecuado. Aquí hay un problema intrínseco del huevo y la gallina.

Desde el punto de vista del protocolo SSL / TLS (como se especifica en RFC 5246 ), la validación del certificado está fuera de alcance: el servidor envía algunos certificados al cliente y, de alguna manera , el cliente obtiene conocimiento (con cierto grado de certeza) de la clave pública del servidor. En la práctica, los clientes hacen eso mediante la validación de certificados, que requiere (al menos) una noción de la fecha actual. Esta necesidad de un reloj local es un problema conocido para los sistemas integrados (al menos, para el cliente SSL incorporado que no puede contener una copia codificada de la clave pública esperada del servidor).

    
respondido por el Tom Leek 22.10.2014 - 17:24
fuente
2

TLS como protocolo no depende de la hora del sistema. El único punto donde se usa la hora del sistema es en el campo Aleatorio de Hola del cliente y mensajes de saludo de saludo del servidor. De RFC 5246 (TLS 1.2) :

  

No es necesario que los relojes estén configurados correctamente por el protocolo TLS básico;   Los protocolos de nivel superior o de aplicación pueden definir   requisitos

Relacionados con el protocolo TLS son certificados que tienen un intervalo de fechas donde es válido. Por supuesto, estos están relacionados con un tiempo sincronizado de alguna manera.

    
respondido por el Lekensteyn 22.10.2014 - 17:10
fuente

Lea otras preguntas en las etiquetas