Resumen
En los últimos tiempos, ha habido un interés significativo en el nivel de resistencia al acceso no autorizado que pueden ofrecer los dispositivos de seguridad embebidos de bajo costo, como las tarjetas inteligentes con y sin contacto. Estos dispositivos se utilizan ampliamente en sistemas de consumo y financieros, lo que hace que su seguridad física y criptográfica sea un tema de investigación crítico. Es bien sabido que los laboratorios de análisis de semiconductores de alto nivel pueden realizar ingeniería inversa de hardware y firmware de tarjetas inteligentes utilizando equipos profesionales de prueba de chips. Sin embargo, la creación y operación de un laboratorio de semiconductores moderno requiere inversiones de capital que alcanzan millones de dólares estadounidenses, lo que hace que tales capacidades sean inaccesibles para la mayoría de los atacantes individuales y grupos pequeños. En este artículo, describimos un conjunto diverso de ataques prácticos de seguridad que pueden ser llevados a cabo con éxito por adversarios con recursos financieros limitados e infraestructura técnica básica. Las tres categorías principales de ataques se basan en equipos especiales pero asequibles: análisis diferencial de errores a través de glitch de señales, sobrescritura permanente de la memoria del chip y recuperación de claves criptográficas mediante el efecto de memoria residual. También existe una clase de ataques explotables basados en errores de diseño de protocolos tradicionales, y estos métodos pueden no requerir ningún equipo especializado o instrumentos de laboratorio. Describimos sistemáticamente el principio de funcionamiento, el procedimiento de implementación y los ejemplos de aplicación práctica de cada vector de ataque. Algunos de los ataques propuestos ofrecen una mejora significativa en el rendimiento en comparación con las técnicas de vanguardia previamente establecidas en la investigación de seguridad embebida. Otros casos de ataque sirven como advertencias valiosas para los diseñadores de hardware, ingenieros de protocolos y evaluadores de seguridad. En conjunto, todos los escenarios de ataque y resultados experimentales presentados en este artículo demuestran de manera convincente que crear hardware resistente al hacking, implementar lógica de firmware segura y desplegar eficazmente estos dispositivos en sistemas reales es una tarea mucho más compleja y difícil de lo que se suele pensar en la práctica.
1 Introducción
Un número creciente de sistemas digitales críticos a gran escala dependen en gran medida de las propiedades de resistencia al acceso no autorizado de las tarjetas inteligentes y los procesadores de seguridad especializados. Estos sistemas abarcan múltiples dominios industriales, incluyendo redes de televisión de pago por suscripción, sistemas globales de comunicaciones móviles GSM, medidores de gas y electricidad prepago, y plataformas de monedero electrónico en tarjetas inteligentes sin contacto para pagos minoristas. Cada uno de estos sistemas depende del hardware de seguridad embebido para aislar claves criptográficas, prevenir el hacking de firmware y bloquear el acceso no autorizado a datos confidenciales internos. Esta amplia dependencia hace que la solidez de los mecanismos de resistencia al hacking sea un problema fundamental para todo el ecosistema de seguridad embebida.
Es importante aclarar que la resistencia al hacking del hardware nunca es una propiedad absoluta e infalible. Un adversario bien financiado con acceso completo a equipos profesionales de prueba y sondaje de semiconductores puede extraer material de clave secreta de un chip de tarjeta inteligente mediante observación física directa de estructuras a nivel de transistores y manipulación eléctrica precisa de componentes en el chip. La comunidad de seguridad en general mantiene un consenso: con tiempo ilimitado y suficiente inversión financiera, cualquier dispositivo embebido resistente al hacking del tamaño de un chip puede ser completamente abierto y sometido a ingeniería inversa mediante análisis físico destructivo. En la literatura académica anterior también se ha documentado un pequeño conjunto de técnicas de bajo costo para atacar dispositivos comerciales específicos resistentes al hacking y procesadores embebidos de seguridad [2].
Con base en esto, el nivel efectivo de resistencia al hacking que ofrece cualquier producto de seguridad comercial puede medirse cuantitativamente mediante dos indicadores clave: el costo total de tiempo y los gastos financieros que los mecanismos de protección incorporados del dispositivo imponen a un atacante potencial. La evaluación precisa de estos dos costos es una tarea vital para la evaluación de riesgos de seguridad y la certificación de productos. Desafortunadamente, este problema de evaluación específico ha recibido mucha menos atención por parte de los investigadores académicos de seguridad, evaluadores industriales e ingenieros de desarrollo de lo que merece su importancia práctica. La lista relativamente corta de referencias publicadas al final de este artículo sirve como evidencia directa de esta brecha en la literatura existente.
Para estandarizar la clasificación de los atacantes y guiar el diseño de sistemas de seguridad que dependen parcialmente de la resistencia al hacking del hardware, adoptamos la taxonomía clásica de adversarios propuesta originalmente por el grupo de investigación de seguridad embebida de IBM [1]. Este sistema de clasificación divide a los posibles atacantes en tres categorías distintas según sus conocimientos, equipo y nivel de financiación.
Clase I (externos inteligentes): Estos adversarios suelen poseer una gran inteligencia y fuertes capacidades de autoaprendizaje en el campo de la electrónica embebida. Sin embargo, carecen de conocimientos internos exhaustivos sobre los detalles de diseño del sistema de seguridad objetivo. Solo tienen acceso a equipos de nivel medio disponibles comercialmente, que son asequibles para usuarios individuales. Su estrategia de ataque suele centrarse en explotar las debilidades internas existentes en la lógica de desbloqueo del sistema, en lugar de desarrollar y construir nuevos medios de hardware para crear vulnerabilidades explotables desde cero. La mayoría de los hackers aficionados e investigadores de seguridad independientes entran en esta categoría.
Clase II (internos informados): Estas personas tienen una formación técnica formal y años de experiencia profesional en hardware embebido o criptografía. Poseen un profundo conocimiento parcial de los segmentos críticos del sistema objetivo y tienen acceso físico y lógico potencial a la mayoría de los módulos funcionales del dispositivo. Pueden utilizar herramientas especializadas complejas e instrumentos de medición de precisión para análisis de hardware, monitoreo de buses de datos e ingeniería inversa criptográfica. Los hackers industriales profesionales y los ingenieros de sistemas embebidos senior con intenciones maliciosas son adversarios típicos de clase II.
Clase III (organizaciones financiadas): Estos sujetos pueden reunir equipos multifuncionales de especialistas con habilidades complementarias que abarcan análisis de hardware, criptoanálisis, ingeniería inversa de firmware y hacking de protocolos. Sus operaciones están respaldadas por importantes y continuos recursos financieros que permiten la investigación y el desarrollo de herramientas a largo plazo. Son capaces de realizar análisis estructurales en profundidad de sistemas de seguridad complejos, desarrollar metodologías de ataque altamente especializadas y sofisticadas, y desplegar el equipo de análisis de semiconductores más avanzado disponible en el mercado. A menudo reclutan a internos informados de clase II como miembros clave de sus equipos de ataque especializados para acelerar la explotación de vulnerabilidades.
En este artículo, presentamos, formalizamos y ampliamos una serie de técnicas de ataque de bajo costo que pueden hacer que las tarjetas inteligentes de consumo masivo y los dispositivos embebidos comerciales resistentes al hacking sean vulnerables a atacantes de clase II, y en muchos escenarios simplificados, incluso a atacantes de clase I con presupuesto limitado. Todos los métodos propuestos evitan la costosa infraestructura de laboratorio de semiconductores requerida por los ataques físicos tradicionales, lo que los hace prácticamente accesibles para los adversarios comunes.
2 Análisis diferencial de errores
En una publicación emblemática [5], Biham y Shamir presentaron el ataque clásico de análisis diferencial de errores dirigido al cifrador de bloques DES. Su ataque original requería 200 textos cifrados erróneos, cada uno de los cuales contenía errores de datos de un solo bit inducidos intencionalmente por la exposición controlada del procesador criptográfico a un entorno externo. El modelo de error básico adoptado en su investigación fue propuesto por primera vez por Boneh y sus colegas en [11], y los efectos prácticos de este modelo de error fueron confirmados y ampliados en estudios posteriores [16, 10]. Este modelo teórico asume que la exposición del procesador criptográfico embebido a radiación ionizante de baja intensidad o a un impacto eléctrico equivalente puede inducir errores aislados de un solo bit en los datos de trabajo, especialmente en el material de clave secreta procesado durante las rondas de cifrado de los cifradores de bloques.
Investigaciones posteriores [6] mostraron que este método tradicional de análisis de errores orientado a datos puede extenderse para la ingeniería inversa de algoritmos de cifrado de bloques propietarios, cuya estructura interna de rondas y disposición de S-boxes son completamente desconocidas para el atacante. En todos estos estudios tempranos, la observación crítica clave sigue siendo la misma: los errores de bits aleatorios que ocurren en las últimas rondas de cifrado revelan información crítica sobre la clave de cifrado secreta o la estructura subyacente del algoritmo. Esta filtración de información constituye la base matemática de todos los ataques de análisis diferencial de errores.
Resultados de investigación refinados adicionales se presentaron en [7], donde se optimizó la posición de inyección de errores para ataques a cifradores simétricos. El estudio demostró que si la inyección precisa de errores se limita solo a las últimas una o dos rondas del algoritmo objetivo, el número total de muestras de texto cifrado erróneo requeridas puede reducirse drásticamente. El trabajo anterior de Boneh [11] también extendió el modelo de error a criptosistemas asimétricos, demostrando que los esquemas de cifrado y firma de clave pública son igualmente vulnerables a la inyección de errores. Lo más notable es que el módulo compuesto de RSA puede ser completamente factorizado utilizando un pequeño conjunto de firmas digitales intencionalmente erróneas generadas por el dispositivo objetivo.
A pesar de estos prometedores resultados teóricos, todos los ataques propuestos anteriormente compartían una limitación práctica crítica: ningún estudio previo había demostrado con éxito la viabilidad práctica de su modelo idealizado de error de un solo bit aleatorio. Esta limitación restringía seriamente su aplicación en entornos reales en procesadores de seguridad comerciales. En la mayoría de los procesadores de seguridad de tarjetas inteligentes de consumo masivo, el material de clave secreta se almacena permanentemente en la EEPROM del chip junto con varios kilobytes de código ejecutable del sistema operativo y bibliotecas criptográficas. Tal disposición densa de memoria significa que un error de un solo bit inducido aleatoriamente tiene mucha más probabilidad de causar un fallo completo del procesador, dañar el firmware ejecutable o producir una salida de basura completamente no informativa, en lugar de generar los textos cifrados erróneos específicos requeridos para el análisis diferencial de errores tradicional. Esto hacía que los primeros ataques académicos basados en errores fueran en gran medida teóricos, más que prácticos para el hacking real de tarjetas inteligentes.
En esta sección del artículo, presentamos un modelo de error físicamente realista diferente que proporciona ataques criptográficos significativamente más potentes y robustos que el modelo tradicional de error de datos inducido por radiación. En secciones posteriores, consideraremos tipos adicionales de errores que pueden ser fácilmente inducidos por atacantes de clase I con presupuesto limitado utilizando herramientas caseras o comerciales de bajo costo. Demostraremos que estos vectores de error alternativos también proporcionan ataques altamente factibles y desplegables en el campo contra dispositivos comerciales resistentes al acceso no autorizado. La mayoría de los ataques propuestos pueden adaptarse adicionalmente a escenarios donde el algoritmo de cifrado utilizado es inicialmente desconocido o donde el atacante posee documentación técnica incompleta del sistema embebido objetivo. Todos estos métodos de ataque se ajustan perfectamente a la definición operativa de acciones que un adversario de clase I con recursos limitados puede realizar sin equipos de laboratorio industrial.
2.1 Ataque diferencial realista
En nuestra investigación anterior orientada a la industria [2], documentamos un ataque práctico basado en errores que ya ha sido ampliamente adoptado por los hackers aficionados para hackear tarjetas inteligentes de televisión de pago. El principio básico de este ataque consiste en inyectar un glitch eléctrico controlado —una transición estrecha y de alta velocidad— ya sea en el pin de entrada de la señal de reloj o en el bus de alimentación del chip microcontrolador objetivo. La implementación más común implica modificar la señal de reloj de referencia estándar de 5 MHz suministrada a la tarjeta inteligente, insertando uno o varios pulsos cortos de 20 MHz durante etapas específicas de la ejecución del programa.
Debido a las variaciones internas del hardware dentro del chip, este glitch de reloj provoca una distorsión selectiva de la señal. Diferentes caminos lógicos internos tienen valores únicos de retardo de compuerta, y los componentes internos del chip tienen diferentes parámetros de constante de tiempo RC. Como resultado, el transitorio inyectado distorsiona solo un subconjunto de las señales lógicas internas, en lugar de interrumpir el funcionamiento de todo el chip. Ajustando con precisión el desplazamiento temporal y la duración del pulso del glitch inyectado, el atacante puede hacer que la CPU del dispositivo ejecute una serie de instrucciones de máquina imprevistas e incorrectas, desviándose de la lógica original del firmware.
El conjunto exacto de instrucciones mal ejecutadas varía entre chips individuales del mismo modelo debido a las variaciones del proceso de fabricación y a defectos menores del silicio. Sin embargo, estos parámetros de glitch explotables pueden identificarse de manera fiable mediante una búsqueda exhaustiva sistemática utilizando circuitos de hardware simples que pueden ensamblarse completamente en casa con componentes que cuestan menos de cien dólares estadounidenses. Este bajo umbral de entrada hace que el ataque sea accesible para cualquier aficionado calificado en electrónica.
No reclamamos la invención original de esta técnica de glitching. Apareció por primera vez en la comunidad de hackers de televisión de pago y se utilizó activamente en círculos clandestinos al menos un año antes de nuestra documentación académica formal. En la implementación básica descrita en detalle en nuestro trabajo anterior [2], el ataque se dirige a un bucle de firmware simple diseñado para transmitir un segmento fijo de memoria al puerto serie del dispositivo.
La lógica del bucle original a nivel de ensamblador tiene la siguiente estructura:
1 b = answer_address
2 a = answer_length
3 if (a == 0) goto 8
4 transmit(*b)
5 b = b + 1
6 a = a - 1
7 goto 3
8 ...
El objetivo del hacker es encontrar el momento específico del glitch que permite que el contador de programa se incremente normalmente, pero modifica la instrucción de salto condicional en la línea 3 o la operación de decremento del contador del bucle en la línea 6 a un código de operación no previsto. Mediante la inyección repetida de este glitch calibrado durante la ejecución del bucle, el atacante puede eludir las restricciones de acceso a la memoria y volcar todo el contenido de la memoria interna protegida del chip a través de la interfaz serie externa.
Cuando este ataque de glitching a nivel de instrucción se aplica a la ejecución de un algoritmo criptográfico, en lugar de al código de control de flujo básico, demuestra una eficiencia aún mayor para la extracción de claves. La conclusión más importante de esta investigación es clara: los ataques basados en errores que se basan en la distorsión de la ejecución de instrucciones de la CPU son significativamente más fáciles de implementar y proporcionan una filtración más informativa que los ataques tradicionales que solo distorsionan los bits de datos de trabajo. Esta es una ventaja clave de nuestro ataque diferencial realista en comparación con trabajos teóricos anteriores.
2.2 Ataque a RSA
La variante del ataque de glitching de instrucciones de Lenstra proporciona un método extremadamente eficaz para hackear implementaciones de RSA en tarjetas inteligentes comerciales. La mayoría de los aceleradores RSA embebidos calculan la firma S para un mensaje M utilizando el módulo compuesto n = pq mediante el teorema chino del resto (CRT). El dispositivo primero calcula los valores de firma intermedios módulo los dos factores primos p y q por separado, y luego combina los dos resultados para generar la firma final válida para el módulo compuesto.
Si se inyecta un glitch eléctrico preciso durante una de las dos etapas de cálculo módulo primo, el atacante puede factorizar inmediatamente el módulo RSA n sin cálculos matemáticos complejos. Sea e la exponente pública de cifrado del esquema RSA. Si la firma generada S = M^d (mod pq) es matemáticamente correcta módulo el primo p, pero contiene un error inducido de un solo bit módulo el primo q, entonces el factor primo p puede calcularse directamente utilizando la función de máximo común divisor: p = gcd(n, S^e − M) (1).
Esta vulnerabilidad hace que las implementaciones de RSA basadas en CRT sean un objetivo ideal para los ataques de glitching de bajo costo. La tarjeta inteligente dedica la mayor parte de su tiempo de procesamiento criptográfico a calcular los valores de firma módulo p y q. Casi cualquier glitch aleatorio que distorsione la salida de cualquiera de estas etapas de cálculo creará la firma errónea necesaria para factorizar el módulo. El atacante no necesita apuntar con precisión a instrucciones específicas en el código del algoritmo, lo que reduce significativamente la complejidad de la calibración de los parámetros del glitch.
Lo más crítico es que este ataque requiere solo una muestra de firma errónea para completar la factorización del módulo. Esto proporciona una explotación completamente en línea en tiempo real en entornos transaccionales vivos. Un terminal POS minorista malicioso controlado por organizaciones criminales puede inyectar el glitch requerido durante una transacción normal de un cliente, factorizar el módulo RSA del banco en milisegundos, calcular la firma válida matemáticamente correcta y transmitir los datos de transacción legítimos al backend del banco sin ninguna desviación detectable.
Como resultado, los grupos criminales pueden extraer de manera encubierta las claves secretas RSA del banco sin que se detecte un comportamiento anómalo en el registro de transacciones por parte del cliente o del sistema backend del banco. La amenaza práctica se ve amplificada por la estrategia de despliegue del nuevo estándar de monedero electrónico EMV. Los bancos emisores mantienen solo 10,000 pares únicos de claves secretas RSA para toda su base de clientes [14]. Una vez que un conjunto de claves se ve comprometido mediante este ataque de glitching, los delincuentes pueden falsificar tarjetas inteligentes clonadas para una parte significativa de la base de usuarios del banco, lo que lleva a un fraude financiero a gran escala.
2.3 Ataque a DES
Cuando el atacante obtiene la capacidad de inducir selectivamente errores en instrucciones específicas de la CPU, surgen varias rutas de ataque simples y efectivas contra el cifrador de bloques DES. El método más intuitivo se dirige a la etapa de mezcla de claves en las dos últimas rondas de DES. El atacante puede desactivar una de las operaciones XOR de 8 bits que combina las subclaves de ronda con los datos de entrada de las S-boxes, distorsionando el código de operación correspondiente mediante glitching.
Repitiendo este glitch dirigido para desactivar secuencialmente cada operación XOR de byte de clave, el atacante obtiene una serie de salidas de texto cifrado erróneas diferentes. Cada salida errónea suele diferir del texto cifrado legítimo en los valores de salida de dos S-boxes, y en casos raros, de tres S-boxes. La aplicación de los métodos clásicos de criptoanálisis diferencial a estas muestras erróneas permite al atacante extraer aproximadamente cinco bits de información sobre la clave secreta por cada operación de byte de clave desactivada.
En la práctica, la recopilación de seis textos cifrados erróneos generados mediante glitching en las últimas rondas de DES proporciona aproximadamente 30 bits de los 56 bits de la clave maestra. Los bits de clave desconocidos restantes pueden recuperarse mediante una búsqueda exhaustiva con un costo computacional mínimo en equipos de consumo modernos. Esto reduce la complejidad computacional de la recuperación de la clave DES a una tarea trivial para atacantes con presupuesto limitado.
Una variante aún más rápida de este ataque se dirige a la lógica de control del bucle de la función de ronda de DES. El atacante distorsiona la variable de iteración del bucle o la instrucción de salto condicional de finalización de ronda mediante glitching, haciendo que el algoritmo termine después de solo una o dos rondas de cifrado en lugar de las dieciséis estándar. Cuando la estructura completa de rondas está desactivada, la clave secreta puede identificarse directamente mediante el análisis visual de la salida de cifrado truncada. El rendimiento práctico de este ataque simplificado depende algo de la implementación específica del firmware de la estructura de bucle de DES.
En general, la recuperación completa de la clave DES mediante glitching de instrucciones requiere solo de uno a diez textos cifrados erróneos, lo que representa una enorme mejora con respecto a las 200 muestras requeridas por el análisis diferencial de errores basado en datos tradicional. Esto plantea una pregunta práctica crítica: ¿qué tan factible es para un atacante con presupuesto limitado apuntar con precisión a instrucciones específicas en el firmware embebido?
En casi todas las tarjetas inteligentes comerciales, el fabricante precarga un conjunto fijo de subrutinas criptográficas y de comunicación en la memoria ROM interna e inalterable del chip. Aunque los proveedores a menudo promocionan este código ROM como un sistema operativo embebido ligero, funcionalmente actúa como una biblioteca de funciones fijas y un conjunto de herramientas de desarrollo para los programadores de aplicaciones. Estas subrutinas integradas casi siempre incluyen una implementación estandarizada del algoritmo DES o una alternativa propietaria, como el esquema de cifrado Telepass.
Un atacante de clase I puede adquirir el kit de desarrollo oficial de tarjetas inteligentes del fabricante por un costo único de solo unos pocos miles de dólares estadounidenses. Este kit incluye documentación técnica completa de la biblioteca ROM, interfaces de depuración de firmware completas y muestras físicas de tarjetas para pruebas de parámetros. Con esta información, el atacante puede localizar y apuntar con precisión a instrucciones individuales de DES para una inyección de glitch precisa con alta fiabilidad.
Cuando se enfrenta a una implementación de firmware completamente desconocida o no documentada, el atacante debe realizar pruebas experimentales limitadas para mapear las ventanas de tiempo de las instrucciones del dispositivo. Este paso de calibración ya es necesario para cada nuevo modelo de tarjeta para determinar los parámetros de voltaje y tiempo de glitch permisibles. Sin embargo, el espacio de búsqueda general para las configuraciones de glitch explotables es relativamente pequeño.
Después de analizar un pequeño número de implementaciones de firmware DES comunes, los atacantes pueden reconocer fácilmente los patrones de salida generados por la desactivación de instrucciones individuales en las dos últimas rondas. De hecho, muchas instrucciones no relacionadas con la mezcla de claves en la función de ronda, cuando se desactivan mediante glitching, filtran casi tanta información clave como las instrucciones oficiales de XOR de subclave. Esto simplifica aún más los ataques contra implementaciones desconocidas para adversarios inexpertos.
2.4 Ingeniería inversa de un cifrador de bloques desconocido
Los atacantes pueden utilizar glitches de reloj y de alimentación para reducir sistemáticamente el número efectivo de rondas en un cifrador de bloques propietario desconocido. Pruebas estadísticas de correlación simples pueden rastrear la relación entre los bits de texto plano de entrada y los bits de texto cifrado de salida. Una fuerte dependencia estadística repentina indica que el número de rondas de cifrado se ha reducido con éxito mediante la distorsión de instrucciones.
Este ataque de reducción de rondas sigue siendo práctico incluso cuando el atacante carece por completo de conocimientos previos sobre los detalles de implementación del algoritmo. Esta capacidad abre un poderoso caso de uso: los atacantes pueden realizar ingeniería inversa de cifradores de bloques clasificados y no publicados, como Skipjack, sin utilizar equipos costosos de eliminación de capas de semiconductores y microscopía electrónica.
Biham y Shamir investigaron previamente este escenario de ingeniería inversa utilizando su modelo tradicional de errores de un solo bit aleatorio [6, 7]. Su metodología identifica textos cifrados erróneos con una pequeña distancia de Hamming con respecto a las salidas legítimas, lo que corresponde a errores limitados a las últimas rondas de cifrado. Analizando estas muestras, los atacantes pueden dividir el texto cifrado en mitades izquierda y derecha de datos y rastrear la propagación de bits a través de las transformaciones de ronda.
Para cifradores basados en S-boxes, como DES, este análisis revela rápidamente la estructura interna de Feistel. La recopilación de 500 textos cifrados erróneos permite recuperar el diseño estructural aproximado del algoritmo, mientras que aproximadamente 10,000 muestras permiten recuperar completamente todas las entradas de las tablas S-box. Este proceso requiere un tiempo significativo de recopilación de datos y procesamiento computacional.
Nuestra técnica de glitching con distorsión de instrucciones supera a este método tradicional para la ingeniería inversa de cifradores desconocidos. Los atacantes pueden apuntar sistemáticamente a la última instrucción, luego a la penúltima, y así sucesivamente, avanzando paso a paso hacia atrás en la función de ronda. Este enfoque ordenado proporciona una filtración estructurada que simplifica el análisis estructural, requiriendo aproximadamente la misma cantidad de muestras de texto cifrado que el método de error de datos de Biham y Shamir.
Para demostrar la aplicabilidad práctica, analizamos el cifrador de bloques clasificado Red Pike como un estudio de caso práctico. Red Pike fue desarrollado por el GCHQ británico para cifrar datos gubernamentales con clasificación "Restringido". El Ministerio de Salud del Reino Unido planeaba desplegar Red Pike para cifrar registros médicos confidenciales de pacientes en los sistemas nacionales de salud.
La Asociación Médica Británica se opuso a este despliegue, argumentando que el cifrado médico debería utilizar algoritmos abiertos y revisados por pares que hubieran resistido ataques criptoanalíticos públicos durante al menos dos años. Los candidatos preferidos eran 3DES, Blowfish, SAFER K-128 y WAKE, todos los cuales tenían amplios historiales de verificación de seguridad.
Para demostrar la solidez criptográfica de Red Pike a la BMA, el gobierno del Reino Unido encargó una verificación de seguridad independiente realizada por cuatro criptógrafos académicos [18]. El documento de revisión publicado contiene indicios descriptivos limitados sobre la estructura interna del algoritmo sin revelar el código fuente completo ni la especificación.
En la revisión oficial se afirma que Red Pike utiliza las mismas operaciones primitivas básicas que el cifrador de bloques RC5 (pág. 4). Su función de ronda se limita a tres operaciones aritméticas simples: suma de enteros, OR exclusivo bit a bit y desplazamiento circular a la izquierda. El algoritmo no contiene tablas de sustitución estáticas, tiene un despliegue de claves mínimo y puede implementarse en solo cinco líneas de código de alto nivel (pág. 4).
Indicios adicionales publicados muestran que la influencia criptográfica de cada bit de clave se propaga rápidamente a través del estado de los datos durante el cifrado (pág. 10). La operación completa de cifrado de Red Pike requiere aproximadamente cien instrucciones aritméticas atómicas para completarse (pág. 19). Estas pistas nos permiten estimar la complejidad del ataque de glitching mediante una comparación directa con el algoritmo RC5 bien documentado [19].
La desactivación de la operación de suma de clave final de RC5 mediante la distorsión del glitch produce un patrón de salida característico. La mitad derecha de los datos se transforma en (B XOR A) shl A, donde A y B representan respectivamente las mitades izquierda y derecha del estado de Feistel. Esta firma de salida única muestra inmediatamente que el cifrador utiliza una estructura de Feistel equilibrada sin una capa de permutación final.
La desactivación de la siguiente instrucción de desplazamiento circular revela el ancho de desplazamiento de 32 bits, ocultando los parámetros de desplazamiento dependientes de los datos. La distorsión de la siguiente operación XOR da cambios de salida transparentes que confirman la función de mezcla bit a bit. La desactivación de la suma de clave de la penúltima ronda revela completamente la estructura matemática del famoso mecanismo de desplazamiento dependiente de los datos en RC5.
Después de observar estas salidas de patrón, el atacante puede inferir con precisión la estructura básica de la función de ronda del algoritmo:
A = ((A XOR B) shl B) op key
B = ((B XOR A) shl A) op key
La ingeniería inversa completa del complejo despliegue de claves de RC5 requiere un rastreo de instrucciones paso a paso adicional mediante glitching. Sin embargo, si el atacante adivina correctamente que la operación desconocida "op" es una suma de enteros, todos los bits de las subclaves de ronda pueden recuperarse directamente retrocediendo a través de las rondas de cifrado truncadas.
Este análisis lleva a una conclusión crítica sobre la seguridad: con la excepción del complejo despliegue de claves, RC5 es uno de los peores algoritmos para aplicaciones embebidas con hardware secreto. Los dispositivos que implementan RC5 son muy vulnerables a los ataques de glitching de instrucciones de bajo costo por parte de atacantes de clase I. Si Red Pike comparte esta estructura de ronda simple con un despliegue de claves simplificado, será aún más susceptible a nuestros ataques basados en errores de bajo costo propuestos.
Es importante destacar que el gobierno del Reino Unido planea eventualmente lanzar Red Pike como software de código abierto, por lo que este análisis no es una crítica directa al diseño criptográfico fundamental del algoritmo. Solo subraya las vulnerabilidades específicas de las implementaciones de hardware cerrado de cifradores de bloques ligeros simples.
Nuestras conclusiones proporcionan recomendaciones claras para los desarrolladores de hardware seguro. Los algoritmos secretos propietarios implementados en chips resistentes al hacking deben incluir una mayor complejidad estructural para aumentar los costos de ataque. Las grandes tablas S-box personalizadas almacenadas en EEPROM dedicada (físicamente separada de la memoria de programa) son una contramedida eficaz que aumenta la complejidad del hardware necesaria para ataques de glitching exitosos.
Otras medidas de protección razonables incluyen lógica de detección de errores de ejecución de instrucciones, cifrado múltiple con verificación por votación y un despliegue de claves complejo que garantice que la filtración de subclaves parciales no pueda utilizarse para recuperar la clave maestra secreta completa.
3 Ataques de sobrescritura de chip
Cuando el atacante posee documentación completa del firmware y el diseño del hardware del dispositivo objetivo, existen varios métodos de bajo costo para extraer claves criptográficas secretas mediante la manipulación de componentes específicos del hardware. Estos métodos incluyen la manipulación de los bits de fusibles integrados, el cambio de estados de puertas lógicas individuales y la sobrescritura de datos críticos almacenados en áreas de memoria no volátil. Investigaciones anteriores de Bovenslander documentaron un ataque clásico a tarjetas inteligentes utilizando dos microagujas de precisión para cortocircuitar un fusible de seguridad permanentemente quemado en el chip [12].
Este fusible se quema intencionalmente durante el ciclo de prueba final de fábrica para deshabilitar permanentemente las interfaces de depuración y la lectura inversa de la memoria del chip. Mediante el cortocircuito eléctrico del fusible con microagujas, el atacante reactiva las funciones de prueba de fábrica bloqueadas. Estas funciones de prueba restauradas permiten la lectura completa del contenido de la memoria de programa y datos protegida del chip sin restricciones criptográficas.
Incluso si el cortocircuito del fusible está bloqueado por bloqueos de hardware adicionales, las celdas de memoria individuales aún pueden ser manipuladas y modificadas mediante métodos físicos de bajo costo. Todos los ataques en esta categoría pueden realizarse con un presupuesto modesto accesible para atacantes individuales de clase I, sin necesidad de instalaciones de fabricación de semiconductores que cuesten millones de dólares.
3.1 Ataques de sobrescritura de ROM
La memoria ROM de máscara inalterable, utilizada comúnmente para almacenar sistemas operativos y bibliotecas criptográficas de tarjetas inteligentes, no es completamente resistente a la modificación física. Bits individuales en las celdas ROM pueden ser conmutados selectivamente utilizando un microscopio láser de corte estándar, un dispositivo ampliamente disponible en laboratorios universitarios.
Para algoritmos bien documentados, como la implementación estándar de DES, los atacantes pueden identificar bits críticos específicos en el código ROM. La conmutación de estos bits cuidadosamente seleccionados proporciona una extracción trivial de la clave secreta con un mínimo de cálculos posteriores. Las posiciones exactas de los bits varían algo según la implementación de cada fabricante, pero existen patrones de bits vulnerables universales en la mayoría de los códigos ROM de DES de consumo masivo.
Un ejemplo común de explotación es la modificación de una instrucción de salto condicional a una instrucción de salto incondicional. Este simple cambio de bit elude la lógica de iteración de rondas y hace que DES complete el cifrado después de solo una o dos rondas, haciendo que la clave sea directamente visible en la memoria durante la ejecución. Los atacantes también pueden desactivar gradualmente las instrucciones XOR de mezcla de claves conmutando bits individuales del código de operación en el programa ROM.
Cuando el atacante tiene documentación incompleta del firmware objetivo, los ataques de sobrescritura de ROM aún ofrecen poderosas rutas de explotación. Las tablas S-box fijas de DES almacenadas en la ROM pueden identificarse fácilmente por sus patrones estadísticos de distribución de bits conocidos. La sobrescritura selectiva de varios bits de las S-box convierte la función de sustitución no lineal de DES en una transformación lineal simple sobre el campo GF(2).
Una vez que la función de cifrado se linealiza mediante la modificación de la ROM, la clave maestra completa de 56 bits de DES puede extraerse matemáticamente utilizando solo un par de texto plano y texto cifrado conocidos. Esto elimina la necesidad de múltiples muestras de error o algoritmos complejos de criptoanálisis.
3.2 Ataques de modificación de EEPROM
Muchas tarjetas inteligentes modernas almacenan el firmware de aplicación y los algoritmos criptográficos en EEPROM regrabable, en lugar de en ROM de máscara fija. Este esquema de almacenamiento flexible permite actualizaciones de firmware en el campo, pero introduce superficies físicas adicionales para ataques. Los atacantes pueden usar dos microagujas finamente afiladas para forzar el establecimiento o restablecimiento de cualquier bit individual en la matriz de EEPROM [17].
Este método de manipulación de bits con microagujas puede reproducir todos los ataques de sobrescritura de ROM descritos anteriormente en dispositivos con memoria regrabable. La ventaja única de atacar la EEPROM es el control bidireccional de los bits: los atacantes pueden tanto establecer bits de 0 a 1 como restablecer bits de 1 a 0, creando estrategias de explotación mucho más flexibles que la conmutación unidireccional de bits de ROM.
La explotación práctica utiliza la regla de paridad impar aplicada por todas las implementaciones oficiales de DES. Cada byte de clave de 8 bits de DES requiere paridad impar como mecanismo de verificación de integridad. Los dispositivos de seguridad correspondientes rechazan cualquier clave cargada que contenga bytes con paridad par y devuelven un mensaje de error de paridad explícito a la interfaz del host.
Los módulos de seguridad bancarios, como el hardware VISA PIN, aplican estrictamente esta regla de paridad para evitar la manipulación no autorizada de claves. Supongamos que el atacante conoce la dirección de memoria fija de la clave DES objetivo almacenada en la EEPROM, pero no puede leer directamente el área de memoria protegida mediante comandos de software estándar. Este escenario es extremadamente común, ya que los desarrolladores de firmware de tarjetas inteligentes a menudo colocan claves secretas en direcciones fijas de EEPROM para un fácil acceso durante la ejecución.
El atacante puede realizar un simple ataque de adivinación de bits con microagujas. Primero, el atacante fuerza el primer bit del byte de clave objetivo al estado lógico 1 utilizando una microaguja. Luego, el atacante inicia una operación de cifrado utilizando la clave modificada y observa la respuesta del dispositivo.
Si la operación de cifrado se completa con éxito sin errores, el valor propio original del bit ya era 1. Si el dispositivo devuelve una notificación de error de paridad de clave, el valor propio original del bit era 0. El atacante repite este procedimiento secuencialmente para cada bit en los ocho bytes de la clave para recuperar completamente la clave maestra secreta de DES.
Este ataque funciona incluso si el atacante no comprende completamente el protocolo de redundancia de claves propietario del dispositivo. Si la modificación del bit provoca un estado de error inesperado no relacionado con la paridad, el atacante simplemente devuelve el bit a su estado original y pasa a la siguiente posición. Este proceso autocorregible asegura un daño permanente nulo al dispositivo objetivo durante la recuperación de la clave.
El equipo necesario para este ataque está ampliamente disponible. Los soportes para microagujas son equipos estándar en los departamentos de ingeniería eléctrica de las universidades, mientras que los microscopios láser de corte se encuentran comúnmente en laboratorios de biología celular para el procesamiento de muestras de tejidos. Los estudiantes de pregrado a menudo obtienen acceso no supervisado a estos dispositivos fuera del horario laboral para proyectos académicos. Los atacantes externos de clase I pueden adquirir versiones reacondicionadas de estas herramientas en el mercado secundario por un costo total de no más de unos pocos miles de dólares estadounidenses.
3.3 Ataques de destrucción de puertas
En una reunión informal del taller Fast Software Encryption de 1997, Eli Biham y Adi Shamir presentaron un innovador ataque físico dirigido a cifradores de bloques implementados en hardware. Su método utiliza un cortador láser de precisión para destruir permanentemente una única puerta lógica en el circuito de hardware del procesador criptográfico.
Su demostración se centró en implementaciones de DES aceleradas por hardware que siguen una estructura iterativa común. La mayoría de los núcleos de hardware DES contienen lógica combinacional para realizar una ronda de cifrado junto con un registro de estado dedicado. Este registro almacena la salida de la ronda k y la retroalimenta como entrada de estado de datos para la ronda k+1 para completar el proceso iterativo.
Biham y Shamir demostraron que la destrucción del camino de retroalimentación del bit menos significativo (LSB) de este registro de estado hace que el LSB de todas las salidas de la función de ronda permanezca constantemente en estado lógico 0. Este error de hardware de un solo bit crea un sesgo persistente en todas las salidas de cifrado posteriores.
Mediante la comparación estadística de los seis bits menos significativos de las mitades izquierda y derecha de los datos en varios textos cifrados erróneos, el atacante puede recuperar varios bits individuales de las subclaves de ronda secretas. La recopilación de aproximadamente diez textos cifrados de un chip físicamente dañado proporciona suficientes datos para el criptoanálisis diferencial para deducir la mayor parte del material de las subclaves de ronda.
Después de recuperar la mayor parte de las subclaves de ronda, los bits desconocidos restantes de la clave maestra de 56 bits pueden encontrarse mediante una búsqueda exhaustiva trivial en equipos de consumo. Este ataque se convirtió en el primer método probado para hackear implementaciones de hardware de DES cuando el texto plano de entrada permanece completamente desconocido para el atacante.
Esta capacidad independiente del texto plano hace que el ataque sea particularmente peligroso para aplicaciones de tarjetas inteligentes del mundo real. La mayoría de las tarjetas inteligentes de pago utilizan datos de estado interno de transacciones como texto plano para el cifrado, lo que significa que los valores de entrada nunca se revelan a partes externas durante el funcionamiento normal.
Proponemos una contramedida de hardware simple y de bajo costo para bloquear este ataque de destrucción de puertas. Un chip modificado con daño selectivo de puertas pierde la propiedad matemática de que el cifrado y el descifrado son operaciones inversas. Los desarrolladores pueden agregar una autoverificación ligera en tiempo de ejecución que verifica automáticamente esta relación inversa durante el arranque del dispositivo.
La autoverificación realiza una secuencia de verificación simple: genera un bloque de texto plano aleatorio, lo cifra con una clave de prueba temporal, descifra el texto cifrado resultante y compara la salida descifrada con el texto plano original. Una discrepancia indica una manipulación permanente del hardware, y el dispositivo puede bloquear permanentemente todo el material de clave secreta para evitar una mayor explotación. Uno de nuestros clientes industriales ya ha implementado este mecanismo de autoverificación en un nuevo chip seguro en desarrollo.
4 Ataques de memoria residual
En un artículo fundamental de la conferencia USENIX [15], Gutman documentó exhaustivamente los mecanismos físicos de la memoria residual: fenómenos en los que tanto la SRAM como la DRAM retienen valores de datos previamente almacenados durante un tiempo significativo después de la desconexión de la alimentación. Este efecto de retención de datos a largo plazo plantea cuestiones críticas de seguridad para los ingenieros que diseñan sistemas seguros de almacenamiento de claves.
Un ingeniero de seguridad responsable debe analizar cómo las características de la memoria residual en entornos reales afectan la protección de las claves criptográficas almacenadas en hardware de seguridad embebido. Realizamos un estudio de caso práctico dirigido a módulos de seguridad bancarios obsoletos ampliamente desplegados en redes globales de cajeros automáticos para cuantificar este riesgo en sistemas financieros en funcionamiento.
La mayoría de los bancos internacionales adoptan un sistema estandarizado de gestión de PIN desarrollado inicialmente por IBM y posteriormente perfeccionado por VISA para la seguridad de transacciones en cajeros automáticos [4]. Este sistema regula cómo se generan, almacenan y verifican los números de identificación personal (PIN) de los clientes en módulos de hardware de seguridad (HSM) especializados.
El PIN del usuario se deriva matemáticamente del número de cuenta bancaria principal mediante un proceso criptográfico estandarizado. Primero, el número de cuenta se cifra con una clave DES de 64 bits dedicada. La salida binaria del texto cifrado se decimaliza en una cadena de dígitos. A este resultado intermedio se le suma un valor de desplazamiento decimal fijo sin acarreo para generar el PIN final del usuario. El parámetro de desplazamiento permite a los bancos permitir que los clientes personalicen sus propios valores de PIN memorables sin cambiar la lógica criptográfica de derivación subyacente.
El ejemplo de cálculo estandarizado oficial de la especificación de seguridad de VISA [4] es el siguiente:
Número de cuenta: 8807012345691715
Clave PIN: FEFEFEFEFEFEFEFE
Resultado DES: A2CE126C69AEC82D
Resultado decimalización: 0224126269042823
PIN natural: 0224
Desplazamiento: 6565
PIN del usuario: 6789
El HSM bancario realiza todas las operaciones de derivación, verificación y gestión de claves PIN en hardware de confianza físicamente resistente al hacking. Este aislamiento de hardware asegura la política de doble control que establece que ningún empleado del banco puede obtener acceso completo al PIN en claro de ningún cliente en ningún momento del procesamiento de la transacción [20].
Para garantizar esta política, el HSM restringe la autorización de comandos en función de las clases de propiedad de las claves. Por ejemplo, el dispositivo ejecuta el comando de verificación de PIN solo si el valor del PIN proporcionado está cifrado con una clave única asignada exclusivamente al terminal de cajero automático o sucursal bancaria solicitante. Este control de acceso evita que el HSM se utilice como un oráculo criptográfico para realizar ataques de búsqueda exhaustiva sobre los valores de PIN de los clientes.
Todas las claves internas en el HSM se clasifican en grupos funcionales separados. Cada clave de trabajo se cifra con 3DES utilizando uno de los doce pares de claves maestras DES almacenadas en el área de SRAM de direcciones bajas del HSM. Las claves de comunicación con los cajeros automáticos se cifran bajo los pares maestros 14 y 15, mientras que las claves de liquidación interbancaria utilizan los pares 6 y 7 para el aislamiento.
Los valores cifrados de las claves a largo plazo, como la clave crítica de derivación de PIN, están integrados directamente en el código binario del firmware de la aplicación del HSM. Estos bloques de clave cifrados son completamente visibles para todos los programadores del banco que tienen acceso al código fuente del firmware, lo que significa que la única capa que protege las claves maestras en claro es la resistencia física del HSM al hacking.
La protección física contra el hacking se implementa mediante interruptores internos en la tapa. La apertura de la carcasa metálica del HSM activa los interruptores que cortan inmediatamente la alimentación del área de almacenamiento de claves SRAM para borrar instantáneamente todas las claves maestras en claro. El dispositivo requiere el reemplazo de la batería cada pocos años durante el mantenimiento programado, y el personal de confianza del banco recarga las partes componentes de las claves maestras después de cada operación de mantenimiento.
Obtuvimos y probamos un bloque HSM obsoleto fabricado a finales de la década de 1980 para nuestro experimento de memoria residual. Después de desconectar completamente el dispositivo durante un período prolongado y luego restaurar la alimentación, descubrimos que los valores de las claves maestras almacenadas en la SRAM permanecían casi completamente intactos.
Solo entre el 5% y el 10% de los bits de las claves sufrieron daños aleatorios debido a la degradación de la memoria residual durante el período de desconexión. Tenemos prohibido revelar los valores correctos exactos de las claves maestras, los valores residuales parciales leídos, el nombre del banco operativo y el fabricante del dispositivo debido a los acuerdos de confidencialidad firmados antes de la investigación.
Esta tasa moderada de errores de bits debido a la memoria residual ya es alarmante en sí misma. Sin embargo, la combinación de este efecto de memoria residual con la verificación de paridad impar incorporada de DES crea una vulnerabilidad extremadamente peligrosa que reduce drásticamente la complejidad de los ataques de recuperación de claves.
Si una clave doble DES recuperada contiene aproximadamente cinco bits dañados debido a la SRAM residual, un analista de seguridad ingenuo podría suponer que la complejidad de la búsqueda exhaustiva es igual al costo combinatorio de corregir 10 bits erróneos en el espacio de claves de 112 bits. Esto requeriría calcular (112 choose 10) operaciones DES, lo que a primera vista parece computacionalmente costoso.
Cada suposición de clave candidata requiere dos pasos computacionales: primero, descifrar el bloque de clave PIN públicamente cifrado utilizando la clave doble DES candidata. En segundo lugar, para los candidatos con paridad impar válida, cifrar un número de cuenta de prueba para verificar si la salida decimalizada coincide con el PIN del cliente objetivo. La carga teórica total se aproxima a 3 × (112 choose 10) operaciones DES, lo que equivale a aproximadamente 2^50 de complejidad computacional.
Una búsqueda exhaustiva directamente acelerada por hardware sobre la clave PIN revelada seguiría siendo más barata que realizar este flujo de búsqueda teórico complejo. Sin embargo, la redundancia de paridad a nivel de byte de DES reduce la complejidad real del ataque en varios órdenes de magnitud mediante el descarte dirigido de candidatos de clave no válidos.
Si ningún byte de clave contiene dos errores de bits simultáneos (el escenario más común), el atacante solo necesita siete suposiciones por cada byte observado con paridad par para recuperar la paridad válida. Para una clave doble DES estándar de 10 bytes, la complejidad total se reduce a 3 × 7^10 ≈ 2^30 operaciones, lo que es trivial para los dispositivos informáticos de consumo modernos.
Incluso en el peor de los casos, cuando un byte de clave contiene dos errores de bits, la complejidad de búsqueda total solo aumenta a aproximadamente 2^38 operaciones DES. Esta carga es completamente factible para un atacante de clase I decidido que utiliza instalaciones de GPU de bajo costo para la recuperación de contraseñas disponibles en el mercado de consumo.
La verificación de paridad de DES tiene un historial bien documentado de creación de vulnerabilidades de seguridad, en lugar de mejorar la protección. En un incidente histórico, el código DES con paridad forzada se integró en una aplicación Telnet cifrada. Las claves de sesión derivadas del intercambio de claves Diffie-Hellman se generan aleatoriamente, por lo que solo 1 de cada 256 claves generadas cumplía con los requisitos de paridad impar de DES.
Todos los demás intentos de intercambio de claves fallaban al cargarse, y dado que el firmware no verificaba los códigos de retorno de las funciones, la sesión cifrada continuaba utilizando material de clave basura no inicializado, creando una amenaza de seguridad catastrófica [8]. En otro incidente bancario, un malentendido llevó a que varias instituciones utilizaran contraseñas ASCII con paridad impar forzada como sus claves PIN operativas.
Los caracteres ASCII siempre tienen un cero en el bit más significativo, mientras que la verificación de paridad de DES solo verifica el bit menos significativo de cada byte. Esta discrepancia reduce la entropía efectiva de las claves derivadas de contraseñas por debajo del límite teórico de 2^48, debilitando aún más la protección contra ataques de diccionario [13]. Estos ejemplos históricos demuestran que la redundancia de paridad de claves crea consistentemente superficies de ataque imprevistas cuando se integra mal en sistemas reales.
5 Errores de protocolo
Los errores de diseño de protocolos criptográficos son un vector de ataque mucho más común de lo que la mayoría de los profesionales de la seguridad reconocen [3]. Muchas vulnerabilidades de protocolo no requieren equipos de laboratorio costosos para su explotación, y algunas pueden explotarse con solo modificaciones básicas de software o monitoreo pasivo de señales.
Un ejemplo clásico se dirige a los decodificadores de televisión de pago por satélite comerciales que utilizan una arquitectura de hardware de dos chips. Un coprocesador criptográfico especializado maneja el descifrado computacionalmente intensivo de los flujos de video transmitidos, mientras que el microcontrolador principal gestiona toda la comunicación entre el coprocesador y la tarjeta inteligente del suscriptor que contiene las claves.
Cuando un cliente deja de pagar la suscripción, el operador de radiodifusión transmite un mensaje de control objetivo por aire destinado a deshabilitar permanentemente la tarjeta inteligente del cliente y bloquear el descifrado futuro de video. El famoso hackeo "Kentucky Fried Chip" explotó esta lógica de protocolo simple reemplazando el microcontrolador principal del dispositivo con un bloque de terceros modificado.
El microcontrolador modificado contenía firmware personalizado que identifica y descarta el mensaje de cancelación de suscripción antes de que llegue a la tarjeta inteligente. Este reemplazo de hardware trivial elude por completo el sistema de control de acceso remoto del operador con costos recurrentes nulos para el atacante [3].
Otro ataque de error de protocolo bien documentado se dirige al microcontrolador embebido seguro Dallas Semiconductor DS5002FP, como se detalla en nuestra investigación anterior [2]. Este dispositivo utiliza memoria cifrada fuera del chip para proteger el firmware externo y el almacenamiento de datos. Un error crítico de protocolo en la lógica de autenticación de memoria permite a los atacantes eludir por completo el límite de cifrado y leer todo el contenido de la memoria externa en claro sin ninguna manipulación física del dispositivo.
Los ataques más graves a protocolos no requieren ningún equipo especializado, basándose exclusivamente en lógica de transacciones errónea y brechas en el control de acceso. Descubrimos una de esas vulnerabilidades que no requiere equipo, surgida de una modificación del software de usuario desplegado en una flota de módulos de hardware de seguridad de un banco importante.
El banco inició una actualización del sistema bancario central que requería cambiar el formato numérico de todos los números de cuenta de los clientes en su base de datos de transacciones. Dado que el PIN estándar del cliente se deriva criptográficamente directamente del número de cuenta, este cambio de formato cambiaría automáticamente el valor de PIN natural predeterminado para cada usuario.
Para evitar la insatisfacción de los clientes y los costos de soporte asociados con el restablecimiento masivo de PIN, el banco buscó una manera de conservar los PIN existentes de los clientes después de la migración de los números de cuenta. El equipo de seguridad planeaba calcular los valores de desplazamiento decimal ajustados para cada cuenta de manera que el PIN final del usuario permaneciera idéntico antes y después de la migración de la base de datos.
El firmware de fábrica del HSM del banco no incluía por defecto un comando de transacción para calcular estos desplazamientos de migración. Esta omisión intencional era una función de seguridad diseñada para evitar la manipulación de la derivación de PIN mediante la reasignación arbitraria de números de cuenta.
El banco contactó al fabricante del equipo para solicitar un parche de firmware personalizado que implementara la transacción de cálculo de desplazamiento requerida. El fabricante proporcionó el archivo binario modificado con una clara advertencia por escrito: el comando personalizado era extremadamente peligroso para el uso general y debía ejecutarse solo una vez durante la migración por lotes, y luego eliminarse permanentemente del firmware del HSM.
El fabricante no documentó explícitamente los riesgos de seguridad específicos que introducía el comando personalizado, dejando al equipo de ingeniería del banco sin conocimiento sobre la magnitud total de la vulnerabilidad. Debido a rotaciones de personal no planificadas y retrasos en los plazos del proyecto, la migración de números de cuenta se pospuso indefinidamente.
Como resultado, el peligroso parche de firmware personalizado permaneció instalado permanentemente en todos los bloques HSM de producción del banco sin una fecha programada de eliminación. Esto dejó una puerta trasera crítica de protocolo abierta para cualquier interno con privilegios básicos de acceso a los comandos del HSM.
Aproximadamente doce meses después del despliegue del parche, un programador de bajo nivel del banco descubrió una vulnerabilidad crítica en la sintaxis de la transacción personalizada. El comando no documentado tenía la siguiente estructura funcional: para un número de cuenta fuente X dado y un desplazamiento existente Y, calcular un nuevo desplazamiento Z que conserve el valor de PIN original para el número de cuenta objetivo.
Un programador malintencionado podía ingresar el número de cuenta de cualquier cliente y su valor de desplazamiento actual (la mayoría por defecto es cero) como parámetros X e Y. Luego ingresaba su propio número de cuenta como valor objetivo Z. El HSM devolvía el desplazamiento requerido para copiar instantáneamente el PIN del objetivo a su cuenta.
Utilizando esta simple explotación de protocolo, un interno podía calcular y extraer trivialmente el PIN en claro de cualquier cuenta de cliente en la base de datos del banco sin necesidad de hacking físico del hardware, criptoanálisis o privilegios elevados del sistema.
Afortunadamente para el banco y sus clientes, el programador ético informó responsablemente la vulnerabilidad del protocolo a la dirección de seguridad de la información del banco en lugar de explotarla para obtener ganancias financieras o robo de datos. Este incidente sirve como un poderoso ejemplo de los peligros de las modificaciones no documentadas del firmware en hardware de seguridad de confianza.
6 Conclusiones
En este artículo, hemos avanzado significativamente el estado del arte del análisis diferencial de errores para dispositivos de seguridad embebidos. Nuestro modelo de error orientado a instrucciones reduce el número de textos cifrados erróneos necesarios para la recuperación completa de la clave DES de las tradicionales 200 muestras a solo de una a diez, lo que reduce drásticamente la barrera para los atacantes con presupuesto limitado.
Hemos demostrado que las implementaciones de RSA basadas en CRT pueden ser completamente hackeadas con solo una firma errónea generada mediante ataques de glitching en tiempo real, lo que permite la factorización del módulo en el lugar durante transacciones minoristas normales. Esto crea amenazas inmediatas para la seguridad global de las tarjetas de pago EMV.
Nuestra técnica también permite la ingeniería inversa efectiva de cifradores de bloques propietarios completamente desconocidos. Para algoritmos de software compactos como RC5, nuestro método de distorsión de instrucciones supera al análisis de errores basado en datos clásico de Biham y Shamir tanto en velocidad como en facilidad de implementación.
A diferencia de muchas investigaciones académicas previas sobre ataques basados en errores que se basan en modelos de error teóricos idealizados, todos los métodos presentados en este trabajo utilizan mecanismos de error físicamente realistas y confirmados experimentalmente. Cada ataque descrito se ha implementado con éxito en condiciones de laboratorio y es directamente aplicable a dispositivos resistentes al hacking desplegados comercialmente en el campo.
El avance conceptual fundamental de nuestra investigación es el desplazamiento de la inyección de errores desde la distorsión de bits de datos en tiempo de ejecución hacia la distorsión del flujo de ejecución de instrucciones de la CPU. Este simple cambio de paradigma crea una filtración más robusta, una cobertura de ataque más amplia y menores costos de implementación para todos los ataques embebidos basados en errores.
También hemos confirmado que el equipo de laboratorio común y de bajo costo disponible para estudiantes universitarios y aficionados individuales puede utilizarse para ataques físicos a la superficie del chip. Las microagujas y los cortadores láser disponibles por solo unos pocos miles de dólares permiten extraer claves de dispositivos posicionados como criptográficamente seguros y físicamente resistentes al hacking.
Nuestra investigación confirma que los mecanismos de redundancia de claves criptográficas, como la regla de paridad impar obligatoria para las claves DES, amplifican drásticamente el impacto de las vulnerabilidades físicas de la memoria. Esto refuerza una lección clave de investigaciones previas sobre seguridad embebida [9]: el diseño de redundancia de claves requiere un análisis de seguridad mucho más cuidadoso del que históricamente ha recibido de los desarrolladores de algoritmos.
Un ejemplo real notable es la peligrosa interacción entre las reglas de paridad de byte de DES y los efectos de SRAM residual en los HSM bancarios obsoletos. Esta combinación permite a atacantes poco calificados recuperar conjuntos completos de claves maestras de módulos de seguridad retirados o desechados con un esfuerzo computacional mínimo.
Basándonos en esta conclusión, recomendamos una política operativa estricta: todos los módulos de seguridad resistentes al hacking retirados que contengan almacenamiento permanente de claves deben ser sometidos a destrucción física completa, incluida la trituración de los chips SRAM, para evitar ataques de recuperación de claves después de la puesta fuera de servicio.
Finalmente, nuestro trabajo clasifica los ataques en dos clases complementarias: exploits físicos de hardware y vulnerabilidades puramente de protocolo. Muchas violaciones de seguridad críticas eluden los complejos mecanismos de resistencia física al hacking aprovechando sutiles errores de lógica en los protocolos de comunicación y transacciones.
En conjunto, todos los resultados experimentales y estudios de caso en este artículo demuestran dos verdades fundamentales para la comunidad de seguridad embebida. Primero, la creación de dispositivos de hardware verdaderamente robustos y resistentes al hacking es exponencialmente más compleja de lo que sugiere la comprensión masiva de la industria. Segundo, la programación de firmware seguro y el despliegue correcto de estos dispositivos en sistemas distribuidos complejos representan un desafío de ingeniería igualmente difícil.