El análisis de potencia es una forma de ataque de canal lateral en el que el atacante estudia el consumo de energía de un dispositivo de hardware criptográfico. Estos ataques se basan en propiedades físicas básicas del dispositivo: los dispositivos semiconductores se rigen por las leyes de la física, que dictan que los cambios en los voltajes dentro del dispositivo requieren movimientos muy pequeños de cargas eléctricas (corrientes). Al medir esas corrientes, es posible obtener una pequeña cantidad de información sobre los datos que se están manipulando.
El análisis de potencia simple ( SPA ) implica la interpretación visual de trazas de potencia o gráficos de actividad eléctrica a lo largo del tiempo. El análisis de potencia diferencial ( DPA ) es una forma más avanzada de análisis de potencia, que puede permitir a un atacante calcular los valores intermedios dentro de los cálculos criptográficos a través del análisis estadístico de los datos recopilados de múltiples operaciones criptográficas. El SPA y el DPA fueron introducidos a la comunidad de criptografía abierta en 1998 por Paul Kocher , Joshua Jaffe y Benjamin Jun. [1]
En criptografía , se utiliza un ataque de canal lateral para extraer datos secretos de algún dispositivo seguro (como una tarjeta inteligente , una "caja negra" resistente a la manipulación o un circuito integrado ). El análisis de canal lateral normalmente intenta extraer de forma no invasiva claves criptográficas y otra información secreta del dispositivo. Un ejemplo sencillo de esto es el problema de los tanques alemanes : los números de serie de los tanques proporcionan detalles de los datos de producción de los tanques. En seguridad física, un ataque no invasivo sería similar a la apertura de cerraduras , en la que un ataque exitoso no deja rastro de la presencia del atacante.
El análisis de potencia simple ( SPA ) es un ataque de canal lateral que implica el examen visual de gráficos de la corriente utilizada por un dispositivo a lo largo del tiempo. Las variaciones en el consumo de energía ocurren a medida que el dispositivo realiza diferentes operaciones. Por ejemplo, diferentes instrucciones ejecutadas por un microprocesador tendrán diferentes perfiles de consumo de energía.
Por lo tanto, el flujo de código que depende de un valor secreto filtrará el flujo de código a través del monitoreo del consumo de energía (y, por lo tanto, también filtrará el valor secreto). Como ejemplo simple, considere una verificación de contraseña como la siguiente:
bool comprobar_contraseña ( const char entrada []){ const char contraseña_correcta [] = "hunter2" ; si ( strlen ( entrada ) != strlen ( contraseña_correcta )) devuelve falso ; para ( int i = 0 ; i < strlen ( contraseña_correcta ); i ++ ){ si ( entrada [ i ] != contraseña_correcta [ i ]) { devolver falso ; } } devuelve verdadero ; }
Esta comprobación de contraseñas puede contener un ataque de tiempo , ya que el tiempo de ejecución no es constante. Observar el consumo de energía permitirá saber la cantidad de bucles ejecutados. Sin embargo, existe una mitigación posible. Es posible que la función no muestre al usuario un resultado explotable si, por ejemplo, hay un retraso de compensación antes de que se devuelva la respuesta. O el código está estructurado para completar todos los bucles independientemente de la falta de coincidencia de la posición de los caracteres entre la entrada y la contraseña secreta. Podemos ver un código de muestra de este tipo en la sección de algoritmos de Ataque de tiempo .
De manera similar, las operaciones de multiplicación y elevación al cuadrado en las implementaciones RSA a menudo se pueden distinguir, lo que permite a un adversario calcular la clave secreta. Incluso si la magnitud de las variaciones en el consumo de energía es pequeña, los osciloscopios digitales estándar pueden mostrar fácilmente las variaciones inducidas por los datos. Los filtros de frecuencia y las funciones de promediado (como las integradas en los osciloscopios) se utilizan a menudo para filtrar los componentes de alta frecuencia.
El análisis de potencia diferencial ( DPA ) es un ataque de canal lateral que implica analizar estadísticamente las mediciones de consumo de energía de un criptosistema . El ataque explota los sesgos que varían el consumo de energía de los microprocesadores u otro hardware mientras se realizan operaciones utilizando claves secretas. Los ataques DPA tienen propiedades de procesamiento de señales y corrección de errores que pueden extraer secretos de las mediciones que contienen demasiado ruido para ser analizadas mediante un simple análisis de potencia. Con DPA, un adversario puede obtener claves secretas analizando las mediciones de consumo de energía de múltiples operaciones criptográficas realizadas por una tarjeta inteligente vulnerable u otro dispositivo.
El análisis de potencia diferencial de orden superior ( HO-DPA ) es una forma avanzada de ataque DPA. El HO-DPA permite incorporar múltiples fuentes de datos y diferentes desfases de tiempo en el análisis. El HO-DPA se practica menos que el SPA y el DPA, ya que el análisis es complejo y la mayoría de los dispositivos vulnerables se pueden descifrar más fácilmente con SPA o DPA. [2]
El análisis de potencia proporciona una forma de "ver dentro" de un hardware que de otro modo sería "a prueba de manipulaciones". Por ejemplo, el programa de claves de DES implica la rotación de registros de claves de 28 bits. Muchas implementaciones comprueban el bit menos significativo para ver si es un 1. Si es así, el dispositivo desplaza el registro hacia la derecha y antepone el 1 en el extremo izquierdo. Si el bit es un cero, el registro se desplaza hacia la derecha sin anteponer un 1. El análisis de potencia puede distinguir entre estos procesos, lo que permite a un adversario determinar los bits de la clave secreta.
Las implementaciones de algoritmos como AES y triple DES que se consideran matemáticamente fuertes pueden ser fácilmente descifrables mediante ataques de análisis de potencia. Como resultado, los ataques de análisis de potencia combinan elementos de criptoanálisis algorítmico y seguridad de implementación.
En el caso de aplicaciones en las que los dispositivos pueden caer en posesión física de un adversario, la protección contra el análisis de potencia suele ser un requisito de diseño importante. Según se informa, los análisis de potencia también se han utilizado contra módulos de acceso condicional utilizados en sistemas de televisión de pago. [3]
El equipo necesario para realizar ataques de análisis de potencia está ampliamente disponible. Por ejemplo, la mayoría de los osciloscopios de almacenamiento digital proporcionan la funcionalidad de recopilación de datos necesaria, y el análisis de datos se realiza normalmente utilizando PC convencionales. También hay productos comerciales diseñados para laboratorios de pruebas. [4] El proyecto de código abierto ChipWhisperer fue la primera cadena de herramientas completa de hardware y software de código abierto para experimentos de análisis de potencia. [5]
Los ataques de análisis de potencia generalmente no pueden ser detectados por un dispositivo, ya que el monitoreo del adversario normalmente es pasivo. Además, el ataque no es invasivo. Como resultado, los gabinetes físicos, las capacidades de auditoría y los detectores de ataques son ineficaces. En cambio, los ingenieros de criptosistemas deben asegurarse de que las variaciones de potencia de los dispositivos no revelen información que los adversarios puedan usar.
Un simple análisis de potencia permite distinguir fácilmente el resultado de las ramificaciones condicionales en la ejecución de software criptográfico, ya que un dispositivo hace cosas diferentes (consume diferente potencia) dependiendo de si se toma la ramificación condicional. Por este motivo, se debe tener cuidado para garantizar que no haya valores secretos que afecten a las ramificaciones condicionales dentro de las implementaciones de software criptográfico. Otras fuentes de variación, como las diferencias en el microcódigo, las ramificaciones introducidas por los compiladores y las variaciones en el consumo de potencia en los multiplicadores, también suelen provocar vulnerabilidades de SPA.
El análisis diferencial de potencia es más difícil de prevenir, ya que incluso pequeños sesgos en el consumo de energía pueden llevar a debilidades explotables. Algunas estrategias de contramedidas implican modificaciones algorítmicas de modo que las operaciones criptográficas se realicen sobre datos que están relacionados con el valor real por alguna relación matemática que sobrevive a la operación criptográfica. Un enfoque implica cegar parámetros para aleatorizar su valor. Otras estrategias de contramedidas para reducir la efectividad de los ataques DPA implican modificaciones de hardware: se ha considerado que variar la frecuencia del reloj interno del chip desincroniza las señales eléctricas, lo que a su vez conduce a mejoras algorítmicas del DPA tradicional. [6] [7]