Ataques de temporización: extracción de claves a partir del tiempo de ejecución
Demuestre un ataque de temporización de caché contra una implementación cuyo tiempo no es constante.
Ataques de temporización: extracción de claves a partir del tiempo de ejecución es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.
¿Qué es un ataque de temporización?
Un ataque de temporización es un ataque de canal lateral en el que un adversario mide cuánto tardan las operaciones criptográficas para inferir datos secretos. Incluso diferencias de nanosegundos pueden revelar bits de la clave.
Por qué el tiempo de ejecución filtra secretos
Las bifurcaciones y los accesos a memoria dentro del código criptográfico suelen depender de valores secretos. Un bucle que termina antes al encontrar un bit cero se ejecuta más rápido; el atacante mide esa diferencia.
Ataques de temporización de caché contra AES
Las búsquedas clásicas en tablas de AES acceden a líneas de caché de la CPU cuyas direcciones dependen de los bytes de la clave. Herramientas como Flush+Reload permiten al atacante observar a qué líneas de caché se accedió.
El oráculo de temporización RSA de Bleichenbacher
El ataque de Bleichenbacher de 1998 aprovechó diferencias de tiempo en la validación del relleno PKCS#1 v1.5. Millones de textos cifrados elegidos podían permitir recuperar una clave privada RSA de 1024 bits.
Ataques de temporización remotos
Incluso a través de la red, las diferencias de tiempo inferiores a un milisegundo se pueden medir con suficientes muestras. Lucky13 aprovechó la temporización del MAC en modo CBC de TLS a través de Internet.
Medir el tiempo en Python
Utilice time.perf_counter_ns() para obtener una resolución de nanosegundos. Para demostrar una comparación vulnerable:
import time
def vulnerable_compare(a, b):
for x, y in zip(a, b):
if x != y:
return False
return len(a) == len(b)
start = time.perf_counter_ns()
vulnerable_compare(b"secret_key_here", b"wrong_key_xxxxx")
elapsed = time.perf_counter_ns() - start
print(f"Elapsed: {elapsed} ns")Simular un oráculo de temporización
Un oráculo de temporización indica si una conjetura es correcta y además filtra información temporal. Se puede recuperar un secreto byte a byte midiendo qué conjetura tarda más antes de devolver False.
Análisis estadístico de los datos de temporización
Las mediciones individuales contienen ruido. Los atacantes recopilan miles de muestras para cada candidato y utilizan pruebas estadísticas (la prueba t y la prueba de Welch) para distinguir la señal del ruido.
El ataque de Manger contra OAEP
En 2001, Manger demostró que incluso RSA con relleno OAEP filtra información si la implementación distingue entre "el primer byte es cero" y otros errores mediante diferencias de tiempo.
Ejemplos del mundo real
OpenSSL, GnuTLS y NSS han tenido CVE relacionados con ataques de temporización. El ataque Lucky13 contra TLS (CVE-2013-0169) afectó prácticamente a todas las bibliotecas TLS cuando se divulgó.
Comprobación de conocimientos
¿Qué técnica estadística ayuda a los atacantes a distinguir la señal de temporización del ruido de las mediciones?
Resumen de la lección
Los ataques de temporización extraen secretos criptográficos mediante la medición de diferencias en el tiempo de ejecución. Funcionan localmente (caché) o de forma remota (red). El análisis estadístico separa la señal del ruido. La solución es utilizar código de tiempo constante, como se explica en la lección sobre contramedidas.
Preguntas frecuentes
¿La lección «Ataques de temporización: extracción de claves a partir del tiempo de ejecución» es gratis?
Sí — el texto completo de «Ataques de temporización: extracción de claves a partir del tiempo de ejecución» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Ataques de temporización: extracción de claves a partir del tiempo de ejecución»?
Demuestre un ataque de temporización de caché contra una implementación cuyo tiempo no es constante. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cryptology Academy?
No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Ataques de temporización: extracción de claves a partir del tiempo de ejecución»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?
Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Ataques de temporización: extracción de claves a partir del tiempo de ejecución
- Análisis de consumo: SPA y DPA
- Canales laterales electromagnéticos y acústicos
- Contramedidas: enmascaramiento, blinding y código de tiempo constante