¿Cómo trato con seguridad la falla de validación del certificado SSL cuando la fecha del cliente es incorrecta?

3

Tengo una aplicación que se ejecuta en dispositivos móviles y se conecta a mi servidor a través de HTTPS.

A veces, la conexión falla porque el dispositivo tiene una fecha establecida en el pasado (antes de la fecha de 'válida desde' en mi certificado).

Puedo cambiar el código de la aplicación que se ejecuta en los dispositivos móviles y también puedo cambiar las cosas en el servidor, ¿cómo puedo solucionarlo?

Estoy investigando 2 posibilidades:

  • Elija la fecha actual de la respuesta del servidor y cambie la aplicación cliente para usarla para validar el certificado (sé que la fecha está disponible al menos desde el encabezado http de "Fecha"). ¿Puedo / debo interferir en el proceso de validación de esa manera?

  • Intente comprar un certificado válido desde el 1/1/1970 (que es la fecha que algunos clientes móviles suponen) y hasta 1 año a partir de ahora. ¿Ves problemas potenciales en eso?

¿Alguna otra opción para solucionar esto?

    
pregunta Cleber Goncalves 22.04.2014 - 12:59
fuente

1 respuesta

3

Usar la fecha del servidor en sí es contraproducente: un servidor falso podría enviar una fecha falsa.

En realidad, hay en SSL un campo para la fecha: los primeros cuatro bytes de client_random y% los campos server_random contienen la fecha y hora actuales , como lo conocen el cliente y el servidor, respectivamente . Esto implica lo siguiente:

  • Un atacante pasivo, escuchando a escondidas en la línea, puede detectar clientes cuyo reloj no está bien.
  • Un atacante activo, que ejecuta un servidor falso, puede saber la fecha y la hora del cliente, hasta una precisión de 1 segundo.

El escenario de ataque aquí es un atacante que ha robado la clave privada de un servidor. El certificado ha sido revocado; sin embargo, el atacante también obtuvo certificados de CA y CRL que "probaron" que el certificado era válido en varias fechas anteriores. El atacante, en posición de hacer MitM , ejecuta un servidor falso y emula a Internet tiempo, en particular, enviar al cliente la CRL pasada con la fecha que el cliente considera actual.

Un cliente desactualizado puede hacer que las conexiones falle en caso de que su fecha actual esté demasiado lejos en el pasado, o demasiado lejos en el futuro. La recuperación normal para ese caso es quejarse al usuario, para que establezca la fecha y la hora correctamente. Sobre una base teórica pura, no puede existir ningún otro método que siempre funcione contra los atacantes MitM: dicho atacante puede, como dije, "emular" una versión antigua de Internet (como un todo), evitando así que el dispositivo obtenga la verdadera fecha actual o incluso que se dé cuenta de que su reloj no está configurado correctamente.

Puede intentar obtener una marca de tiempo de alguna Autoridad de marca de tiempo ; sin embargo, esto implica validar el certificado TSA o, más precisamente, suponiendo que la clave privada TSA nunca ha sido robada. Por lo tanto, en la práctica , es posible hacer una suposición razonablemente sólida de la fecha y la hora actuales de una manera que los atacantes encuentren difícil para engañar. Pero eso es costoso (conexiones adicionales a TSA) y depende de estos TSA externos, que pueden no ser gratuitos y / o pueden no estar de acuerdo con obtener tantas solicitudes de marca de tiempo desde sus dispositivos implementados.

Editar: si realiza verificaciones de revocación con OCSP, y el cliente insiste en incluir un nonce en la solicitud, entonces obtiene (de alguna manera) la misma propiedad que con la TSA: con las mismas advertencias: aún debe asumir que la clave de alguna entidad no ha sido robada (TSA, respondedor de OCSP, CA ...), y aún necesita hacer conexiones adicionales.

    
respondido por el Thomas Pornin 22.04.2014 - 15:16
fuente

Lea otras preguntas en las etiquetas