Contramedidas: enmascaramiento, blinding y código de tiempo constante
Implemente enmascaramiento, blinding de puntos y comparaciones de tiempo constante.
Contramedidas: enmascaramiento, blinding y código de tiempo constante es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 4 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.
Las tres familias de contramedidas
Las contramedidas contra los canales laterales pertenecen a tres familias: enmascaramiento (aleatorizar los valores intermedios), cegado (aleatorizar las entradas y salidas) y código de tiempo constante (eliminar la temporización dependiente de los datos).
Enmascaramiento booleano
Haga XOR de cada valor intermedio con una máscara aleatoria nueva r. Procese el valor enmascarado x⊕r y quite la máscara al final. La traza de potencia ahora depende de x⊕r, no de x.
Enmascaramiento aritmético para multiplicaciones
Para las operaciones multiplicativas, utilice máscaras multiplicativas: sustituya x por x·r mod p. El esquema de enmascaramiento debe ser compatible con cada operación algebraica del cifrado.
Cegado de RSA
Antes de descifrar el texto cifrado c, elija un valor aleatorio r y calcule c' = c·r^e mod n. Descifre c' para obtener m·r mod n y, después, elimine r mediante una división. La exponenciación real nunca opera sobre el c original.
Cegado de puntos ECC
Aleatorice las coordenadas proyectivas: en lugar del punto afín (x,y), utilice (λx : λy : λ) para un valor aleatorio λ. La multiplicación escalar opera sobre coordenadas aleatorizadas, lo que cambia las trazas de potencia cada vez.
Reglas de programación de tiempo constante
1. No utilice bifurcaciones dependientes de secretos. 2. No utilice índices de memoria dependientes de secretos. 3. No realice salidas anticipadas. 4. Utilice operaciones de tiempo constante intrínsecas de la plataforma cuando estén disponibles (por ejemplo, crypto_verify_32).
Comparación de tiempo constante en Python
No utilice nunca == ni hmac.compare_digest con bytes sin procesar en rutas sensibles a la temporización. Utilice:
import hmac
def constant_time_compare(a: bytes, b: bytes) -> bool:
"""Uses HMAC double-HMAC trick for constant-time equality."""
# hmac.compare_digest is constant-time in CPython
return hmac.compare_digest(a, b)
# Example
secret = b"expected_mac_value"
received = b"attacker_provided__"
print(constant_time_compare(secret, received)) # False, but no timing leakProblemas de compiladores y arquitecturas
Los compiladores pueden optimizar y eliminar el código de tiempo constante. Utilice escrituras volatile, barreras de memoria o intrínsecos de ensamblador. Los compiladores de C disponen de -fno-delete-null-pointer-checks, pero no existe una garantía universal de tiempo constante.
Barajado y operaciones ficticias
Permute aleatoriamente el orden de las búsquedas en las S-boxes o inserte operaciones ficticias que consuman potencia sin afectar al resultado. Esto dificulta los ataques DPA, pero no elimina las filtraciones.
Contramedidas de hardware
Los aceleradores criptográficos dedicados (ARM TrustZone, AES por hardware de STM32) aplican el enmascaramiento en silicio. Las implementaciones ASIC incorporan apantallamiento metálico y una malla activa para detectar sondas físicas.
Comprobación de conocimientos
¿Qué contramedida evita los ataques de temporización contra RSA al aleatorizar el texto cifrado antes de la exponenciación?
Resumen de la lección
El enmascaramiento aleatoriza los valores intermedios; el cegado aleatoriza las entradas de RSA/ECC; el código de tiempo constante elimina las bifurcaciones de temporización. La defensa en profundidad combina las tres técnicas. Los aceleradores de hardware las aplican en silicio para ofrecer las garantías más sólidas.
Aprende Cryptology Academy con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 67
- Lecciones
- 261
Preguntas frecuentes
¿La lección «Contramedidas: enmascaramiento, blinding y código de tiempo constante» es gratis?
Sí — el texto completo de «Contramedidas: enmascaramiento, blinding y código de tiempo constante» 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 «Contramedidas: enmascaramiento, blinding y código de tiempo constante»?
Implemente enmascaramiento, blinding de puntos y comparaciones de tiempo 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 4 de 4.
¿Cuánto tiempo toma la lección «Contramedidas: enmascaramiento, blinding y código de tiempo constante»?
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