Ataque de tiempo


En criptografía , un ataque de sincronización es un ataque de canal lateral en el que el atacante intenta comprometer un sistema criptográfico analizando el tiempo necesario para ejecutar algoritmos criptográficos. Cada operación lógica en una computadora toma tiempo para ejecutarse, y el tiempo puede diferir según la entrada; con mediciones precisas del tiempo de cada operación, un atacante puede retroceder hasta la entrada. Encontrar secretos a través de la información de tiempo puede ser significativamente más fácil que usar el criptoanálisis de pares de texto sin formato y texto cifrado conocidos. A veces, la información de tiempo se combina con el criptoanálisis para aumentar la tasa de fuga de información. [1]

La información puede filtrarse de un sistema a través de la medición del tiempo que lleva responder a ciertas consultas. Cuánto puede ayudar esta información a un atacante depende de muchas variables: el diseño del sistema criptográfico, la CPU que ejecuta el sistema, los algoritmos utilizados, una variedad de detalles de implementación, contramedidas de ataque de tiempo, la precisión de las mediciones de tiempo, etc. Los ataques de tiempo se pueden aplicar a cualquier algoritmo que tenga una variación de tiempo dependiente de los datos. La eliminación de dependencias de tiempo es difícil en algunos algoritmos que utilizan operaciones de bajo nivel que frecuentemente presentan tiempos de ejecución variados.

Los ataques de temporización a menudo se pasan por alto en la fase de diseño porque dependen mucho de la implementación y pueden introducirse involuntariamente con las optimizaciones del compilador . Evitar los ataques de sincronización implica el diseño de funciones de tiempo constante y una prueba cuidadosa del código ejecutable final. [1]

Muchos algoritmos criptográficos se pueden implementar (o enmascarar mediante un proxy) de manera que reduzcan o eliminen la información de tiempo dependiente de los datos, un algoritmo de tiempo constante . Considere una implementación en la que cada llamada a una subrutina siempre regresa en exactamente x segundos, donde x es el tiempo máximo que lleva ejecutar esa rutina en cada posible entrada autorizada. En tal implementación, es menos probable que la sincronización del algoritmo filtre información sobre los datos proporcionados a esa invocación. [2] La desventaja de este enfoque es que el tiempo utilizado para todas las ejecuciones se convierte en el peor de los casos de desempeño de la función.

El tiempo de ejecución del algoritmo de multiplicar y elevar al cuadrado utilizado en la exponenciación modular depende linealmente del número de bits '1' en la clave. Si bien el número de bits '1' por sí solo no es suficiente información para encontrar la clave fácilmente, se pueden usar ejecuciones repetidas con la misma clave y diferentes entradas para realizar un análisis de correlación estadística de la información de tiempo para recuperar la clave por completo, incluso por un atacante pasivo. Las mediciones de tiempo observadas a menudo incluyen ruido (de fuentes tales como la latencia de la red o las diferencias de acceso a la unidad de disco entre un acceso y otro, y las técnicas de corrección de errores utilizadas para recuperarse de los errores de transmisión). Sin embargo, los ataques de sincronización son prácticos contra una serie de algoritmos de cifrado, incluidosRSA , ElGamal y el Algoritmo de Firma Digital .

En 2003, Boneh y Brumley demostraron un ataque de tiempo práctico basado en la red en servidores web habilitados para SSL , basado en una vulnerabilidad diferente relacionada con el uso de RSA con optimizaciones del teorema del resto chino . La distancia real de la red fue pequeña en sus experimentos, pero el ataque recuperó con éxito una clave privada del servidor en cuestión de horas. Esta demostración condujo a la implementación y el uso generalizados de técnicas de cegamiento en las implementaciones de SSL. En este contexto, el cegamiento pretende eliminar las correlaciones entre la clave y el tiempo de cifrado. [3]