Cryptology Academy · Lección

Contramedidas: enmascaramiento, blinding y código de tiempo constante

Implemente enmascaramiento, blinding de puntos y comparaciones de tiempo constante.

Lección 4 de 412 pasos

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 leak

Problemas 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.

Gratis para empezar

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

  1. Ataques de temporización: extracción de claves a partir del tiempo de ejecución
  2. Análisis de consumo: SPA y DPA
  3. Canales laterales electromagnéticos y acústicos
  4. Contramedidas: enmascaramiento, blinding y código de tiempo constante
← Volver a Cryptology Academy