Fundamentos de Ataques Electromagnéticos (EMA)
Los ataques de análisis electromagnético (EMA) explotan las emisiones involuntarias de los dispositivos para extraer datos sensibles. En arquitecturas de hardware, las instrucciones intensivas en la Unidad Aritmético-Lógica (ALU) generan fluctuaciones de corriente más pronunciadas que las operaciones de bus, facilitando la filtración de información. Aunque las contramedidas tradicionales contra el Análisis de Potencia Diferencial (DPA) asumen que el ruido es suficiente para ocultar los datos, un acoplamiento electromagnético fuerte puede invalidar esta premisa, permitiendo ataques de Análisis Electromagnético de Emisión Única (SEMA) o ataques de orden superior contra implementaciones con enmascaramiento.
La evaluación de la vulnerabilidad requiere modelar distintos perfiles de adversarios, desde interceptores de bajo costo con sensores únicos hasta atacantes con capacidades de procesamiento de señal ilimitadas que pueden capturar múltiples trazas simultáneamente.
Estrategias de Mitigación y Blindaje
Para reducir la relación señal-ruido (SNR) y mitigar estas fugas, se emplean técnicas de blindaje electromagnético e inyección de ruido aleatorio. A nivel de sistema, es crucial restringir el acceso físico a las zonas críticas. Sin embargo, en el diseño de circuitos de baseband, la supresión de radiaciones parásitas suele pasarse por alto durante la selección de componentes y el ruteo de PCB. Una vez minimizada la fuga base para prevenir SEMA, se deben integrar contramedidas algorítmicas como el enmascaramiento aleatorio y el cálculo compartido para neutralizar el Análisis Electromagnético Diferencial (DEMA).
Metodología de Pruebas de Emisiones
La caracterización práctica de estas vulnerabilidades en dispositivos embebidos implica el uso de receptores de radio de banda ancha. El procedimiento estándar incluye:
- Identificación de frecuencias: Determinar la frecuencia de reloj del procesador y sus armónicos mediante espectroscopia.
- Detección de canales laterales: Ejecutar bucles de procesamiento a frecuencias audibles (ej. 1000 Hz) y rastrear el espectro AM/FM para localizar las portadoras que modulan la actividad computacional.
- Captura de trazas: Configurar sondas de near-field para capturar señales detsinadas a ataques SEMA/DEMA.
- Mapeo de emisiones: Analizar las variaciones espectrales de pantallas y buses de datos durante los ciclos de refresco.
- Validación del blindaje: Comparar la intensidad de la señal capturada con el dispositivo en espacio libre frente a uno enclosed en una jaula de Faraday con aperturas controladas.
Aritmética de Montgomery y su Implementación
La multiplicación modular es el núcleo de la criptografía de clave pública. El algoritmo de Montgomery optimiza esta operación evitando las divisiones costosas, sustituyéndolas por desplazamientos. A continuación, se presenta una implementación reetsructurada de la reducción de Montgomery, donde la selección del dígito $q_i$ en cada iteración depende exclusivamente del bit menos significativo, lo que permite un cálculo en paralelo sin esperar la propagación de acarreos.
def montgomery_reduction(operand, modulus, radix_base, word_len):
# operand: A, modulus: M, radix_base: r, word_len: n
# Returns A' = A * r^-n mod M
temp_val = operand
for i in range(word_len):
# Calculate quotient digit based on LSB
q_i = (temp_val % radix_base) * (-modulus % radix_base) % radix_base
temp_val = (temp_val + q_i * modulus) // radix_base
# Final conditional subtraction is omitted here to prevent side-channels
return temp_val
La multiplicación modular de Montgomery intercala los procesos de multiplicación y reducción. El acumulador se mantiene acotado, lo que define el tamaño de los registros necesarios.
def montgomery_multiplication(multiplicand, multiplier, modulus, radix_base, word_len):
# multiplicand: A, multiplier: B, modulus: M
# Returns C = A * B * r^-n mod M (without final subtraction)
accumulator = 0
for i in range(word_len):
b_i = (multiplier >> (i * word_len)) % radix_base
q_i = ((accumulator + multiplicand * b_i) % radix_base) * (-modulus % radix_base) % radix_base
accumulator = (accumulator + multiplicand * b_i + q_i * modulus) // radix_base
return accumulator
La omisión de la resta condicional final en esta etapa es deliberada: no solo es innecesaria para operaciones de exponenciación encadenada, sino que su ejecución dependiente de datos es una fuente crítica de fugas por canales laterales. Cuando se requiere un resultado estrictamente acotado, se aplican las siguientes funciones de finalización:
def finalize_montgomery_mod_m(accumulated_val, modulus):
# Returns result strictly < M
if accumulated_val >= modulus:
accumulated_val -= modulus
return accumulated_val
def finalize_montgomery_mod_r(accumulated_val, modulus, radix_limit):
# Returns result strictly < R (where R = radix_base^word_len)
if accumulated_val >= radix_limit:
accumulated_val -= modulus
return accumulated_val
Fugas de Canal Lateral en la Resta Condicional
El paso de resta condicional final en la multiplicación de Montgomery introduce una vulnerabilidad de canal lateral. La decisión de ejecutar o no la resta depende del valor del acumulador, el cual está correlacionado con los operandos secretos. Para mitigar esto, se debe realizar un análisis exhaustivo de las especificaciones de salida del bucle principal y aplicar técnicas de ciego (blinding) o aleatorización para que el patrón de ejecución de la resta sea independiente de los datos sensibles.
Comparativa de Algoritmos y Estrategias de Mitigación
| Algoritmo | Secuencia de Ejecución | Características Clave |
|---|---|---|
| Reducción de Montgomery | 1. Inicializar variable temporal. 2. Iterar n veces calculando q_i. 3. Retornar resultado. | El cálculo de q_i se basa en el LSB, facilitando la ejecución en arreglos pulsantes. |
| Multiplicación (Sin Resta) | 1. Inicializar acumulador en 0. 2. Iterar n veces actualizando acumulador. 3. Retornar acumulador. | Intercala multiplicación y reducción; el acumulador tiene un límite superior definido. |
| Vector de Ataque | Estrategias de Mitigación |
|---|---|
| Emisiones Electromagnéticas | Rediseño de PCB para minimizar radiación parásita, blindaje con jaulas de Faraday, inyección de ruido de corriente y control de acceso físico. |
| Fugas en Aritmética de Montgomery | Análisis formal de los límites de salida, eliminación de ramas dependientes de datos, aplicación de enmascaramiento y aleatorización de la resta condicional. |
Flujo de Implementación de Contramedidas
| Fase | Acción | Condición / Siguiente Paso |
|---|---|---|
| 1. Inicio | Evaluación de riesgos del sistema | Ir a Selección de Contramedidas |
| 2. Selección | Definir blindaje y algoritmos aleatorizados | Ir a Implementación |
| 3. Implementación | Aplicar modificaciones de hardware y software | Ir a Validación |
| 4. Validación | Ejecutar pruebas de canal lateral y EMA | ¿Cumple requisitos? |
| 5. Decisión | Si: Fin del proceso. No: Volver a Selección. | - |