Saltar al contenido
ecdsa.com

Ataque de canal lateral

Un ataque que obtiene secretos a partir del comportamiento físico o temporal de un cálculo —su tiempo de ejecución, sus accesos a la caché, su consumo de energía, sus emisiones electromagnéticas o su reacción a fallos inducidos— y no a partir de sus entradas y salidas.
También se escribeside channeltiming attackconstant-timefault attack

Canales clásicos: un tiempo de ejecución que depende de bits secretos (Kocher, 1996), accesos a memoria dependientes de secretos observados a través de cachés compartidas (Flush+Reload y técnicas similares), trazas de consumo eléctrico y electromagnéticas de tarjetas inteligentes y microcontroladores, y la inyección de fallos (glitches de tensión o de reloj, láseres, Rowhammer) que hace que un dispositivo emita una firma defectuosa a partir de la cual se puede calcular la clave. La medición remota de tiempos también es viable: Lucky Thirteen (2013) atacó a través de la red las comprobaciones de relleno CBC de TLS.

La criptografía asimétrica está especialmente expuesta porque la multiplicación escalar y la exponenciación modular recorren en bucle los bits de la clave o del nonce. Las defensas son el código de tiempo constante (sin bifurcaciones ni índices de memoria que dependan de secretos, ni instrucciones de tiempo variable), el enmascaramiento (blinding) de escalares y mensajes, las fórmulas completas con escaleras uniformes y, frente a los fallos, verificar la firma antes de entregarla y usar nonces hedged.

Para los desarrolladores, la regla práctica es usar bibliotecas mantenidas con un historial de trabajo en tiempo constante (BoringSSL, OpenSSL, libsodium, el paquete crypto de Go, RustCrypto, las bibliotecas noble) y no reimplementar nunca la aritmética. En lenguajes con compiladores JIT o recolección de basura, el tiempo constante solo se logra en la medida de lo posible, lo que importa en hosts compartidos y en navegadores.

Estándares y referencias

Todos los términos