Un ataque de sincronización funciona mediante el análisis estadístico de cuánto tiempo tarda su programa en aceptar una clave de autenticación determinada.
Por ejemplo, es posible que haya notado que una contraseña correcta generalmente tarda menos tiempo en procesarse para cierta aplicación, mientras que una entrada de contraseña incorrecta puede tardar un poco más. (Tenga en cuenta que lo contrario también podría ser cierto)
Usando la información, un atacante podría detectar lentamente la clave de autenticación correcta para un sistema a través de un método repetido de prueba y error, combinado con análisis estadístico.
- Además de una plataforma única, ¿qué técnica de encriptación usarías para proteger la transmisión inalámbrica del espionaje alienígena avanzado?
- ¿Podría ser hackeado mi teléfono inteligente?
- Gestión de claves: ¿Por qué el uso de documentos electrónicos disponibles al público como pads únicos no proporciona un cifrado esencialmente irrompible?
- ¿Qué vectores y / o técnicas de ataque deberían conocer los CISO, pero a menudo se pasan por alto?
- ¿Qué tan seguro es WordPress en comparación con sus competidores?
Al saber cómo funciona, podemos prevenir un ataque de tiempo. Aquí hay un pseudocódigo simple para ilustrar lo anterior:
def is_pwd_correct(password, user_name): user_password = database.get_pwd(user_name) for index,value in enumerate(password): if user_password[index] != value: # a wrong value in a password causes the loop to be returned # early. This allows for a timing attack to occur. return False return True
Para evitar un ataque de tiempo, simplemente podemos hacer que la comparación sea una comparación de tiempo constante. Ya sea utilizando una función de temporizador o no regresando prematuramente en una comparación incorrecta.
Para más lecturas,
Ataques de tiempo en aplicaciones web
Una lección sobre ataques de tiempo (o, no use MessageDigest.isEquals)