¿Qué papel juega la sincronización del reloj en la comunicación SSL?

16

Recientemente hemos implementado la seguridad de WS Trust sobre SSL para las comunicaciones de nuestros clientes / servidores. Nuestra aplicación es utilizada por miles de nuestros clientes, repartidos por todo el mundo. Uno de los problemas que hemos tenido en el pasado con las comunicaciones seguras es que los clientes con relojes no sincronizados tienen dificultades para conectarse, lo que resulta en llamadas y frustraciones. Desafortunadamente, la reacción que ha causado en el pasado es simplemente deshabilitar esta comprobación o simplemente aumentar el sesgo de reloj aceptable a cantidades casi infinitas.

No quiero que la seguridad de nuestro sistema se vea comprometida, ni quiero provocar una afluencia de quejas de clientes que no tienen sus relojes estrechamente sincronizados con la hora de nuestros servidores (que se sincronizan con la hora de Internet). ). Para evitar que la verificación de sincronización se deshabilite efectivamente, primero debo poder explicar a mis gerentes por qué esto es una mala idea y por qué los beneficios de la sincronización del reloj superan el costo de las quejas o confusiones de los clientes.

  1. ¿Qué función desempeña la sincronización de reloj en las comunicaciones SSL y qué tipo de vulnerabilidades la desactiva?
  2. ¿Cuál se considera típicamente el rango máximo aceptable para la sincronización de reloj en aplicaciones seguras para el cliente?
pregunta mclark1129 13.11.2014 - 17:51
fuente

2 respuestas

16

En SSL, los relojes se utilizan para validación de certificados . El cliente debe asegurarse de que habla con el servidor correcto; para eso, el cliente validará el certificado del servidor. La validación implica verificar muchas cosas; Dos de ellos involucran relojes:

  • El certificado del servidor (y todos los certificados de CA involucrados) deben incluir la hora actual en su rango de tiempo de validez. Cada certificado como un notBefore y un notAfter campos; la hora actual debe estar entre estas dos fechas.

  • El cliente debe obtener el estado de revocación de cada certificado al obtener (y validar) una CRL (Lista de revocación de certificados) de los emisores correspondientes (la CA). Una CRL se considera aceptable si (en particular) "no es demasiado antigua": nuevamente, la CRL tiene un campo thisUpdate que dice cuándo se produjo, y un campo nextUpdate que más o menos sirve como vencimiento fecha de la CRL.

Si el reloj del cliente está apagado, se interrumpirá una o ambas funcionalidades. Por ejemplo, el certificado del servidor se considerará como "caducado hace mucho tiempo" o "aún no se puede utilizar", lo que lleva al rechazo.

Aceptar que el reloj del cliente está apagado significa que el cliente se modifica para ignorar las fechas en los certificados y CRL. La última consecuencia para la seguridad es que si un atacante logra robar la clave privada de un servidor, ese atacante podrá suplantar ese servidor para siempre. El punto de revocación es tener un método verificado para recuperarse de tal compromiso; y el punto de expiración del certificado es evitar que el CRL crezca indefinidamente. Si los clientes ignoran la revocación y / o el vencimiento, entonces la consecuencia es que una vez que se produce un compromiso, estará condenado para siempre . Lo que generalmente se considera algo malo.

En una nota más brillante, esto es un problema para los clientes, no para el servidor. Si opera el servidor, entonces es el trabajo del cliente , no el suyo, validar su certificado correctamente. Si el cliente realmente insiste en hacer las cosas de forma insegura y en ser vulnerable, entonces realmente no puede evitarlo, al menos no técnicamente (puede hacer las cosas por contrato : si la incompetencia del cliente permite una violación, el cliente debería pagar por ello).

En una nota similar, si los clientes pueden hablar con su servidor, entonces están conectados a algún tipo de red, lo que significa que Internet La sincronización horaria basada en es una posibilidad. Requerir un reloj preciso es un desafío para algunos dispositivos integrados, pero no debería serlo para computadoras en red (incluidos los teléfonos inteligentes).

    
respondido por el Thomas Pornin 13.11.2014 - 18:36
fuente
2

Versión simple (para administradores): las sincronizaciones de tiempo pueden evitar ataques de reproducción. Sin ellos, alguien podría registrar los paquetes enviados entre el cliente y el servidor, descifrar, modificar los datos y luego reenviar el flujo de paquetes y nadie sería más sabio. Pero, debido a que el descifrado lleva tiempo, una marca de tiempo (validada en ambos lados) puede indicar que la transmisión es una "reproducción".

¿Quizás podría considerar un período de tiempo de espera más prolongado para su empresa / aplicación? En lugar de una ventana estrecha, podría obtener algún beneficio al ampliar la ventana. Esto tendría que ser analizado para su impacto total en sus sistemas, por supuesto.

    
respondido por el schroeder 13.11.2014 - 18:03
fuente

Lea otras preguntas en las etiquetas