Ataque de canal lateral
Debido a que los ataques de canal lateral se basan en la relación entre la información emitida (filtrada) a través de un canal lateral y los datos secretos, las contramedidas se dividen en dos categorías principales: (1) eliminar o reducir la divulgación de dicha información y (2) eliminar la relación entre la información filtrada y los datos secretos, es decir, hacer que la información filtrada no esté relacionada, o más bien no esté correlacionada, con los datos secretos, típicamente a través de alguna forma de aleatorización del texto cifrado que transforma los datos de una manera que se puede deshacer una vez completada la operación criptográfica (por ejemplo, descifrado).
En la primera categoría, las pantallas con blindaje especial para disminuir las emisiones electromagnéticas, reduciendo la susceptibilidad a los ataques de TEMPESTAD, ahora están disponibles comercialmente. El acondicionamiento y filtrado de líneas eléctricas puede ayudar a disuadir los ataques de monitoreo de energía, aunque tales medidas deben usarse con cautela, ya que incluso las correlaciones muy pequeñas pueden permanecer y comprometer la seguridad. Las carcasas físicas pueden reducir el riesgo de instalación subrepticia de micrófonos (para contrarrestar ataques acústicos) y otros dispositivos de microcontrol (contra ataques de consumo de energía de la CPU o de imágenes térmicas).
Otra contramedida (todavía en la primera categoría) es atascar el canal emitido con ruido. Por ejemplo, se puede agregar un retraso aleatorio para disuadir los ataques de sincronización, aunque los adversarios pueden compensar estos retrasos promediando múltiples mediciones (o, más generalmente, utilizando más mediciones en el análisis). A medida que aumenta la cantidad de ruido en el canal lateral, el adversario necesita recopilar más mediciones.
Otra contramedida en la primera categoría es utilizar software de análisis de seguridad para identificar ciertas clases de ataques de canal lateral que se pueden encontrar durante las etapas de diseño del propio hardware subyacente. Los ataques de sincronización y los ataques de caché son identificables a través de ciertas plataformas de software de análisis de seguridad disponibles comercialmente, que permiten realizar pruebas para identificar la vulnerabilidad de ataque en sí, así como la efectividad del cambio arquitectónico para eludir la vulnerabilidad. El método más completo para emplear esta contramedida es crear un ciclo de Vida de desarrollo Seguro para el hardware, que incluye la utilización de todas las plataformas de análisis de seguridad disponibles en sus respectivas etapas del ciclo de vida de desarrollo de hardware.
En el caso de ataques de temporización contra objetivos cuyos tiempos de cómputo están cuantificados en conteos discretos de ciclos de reloj, una contramedida efectiva es diseñar el software para que sea isócrono, es decir, para que se ejecute en una cantidad de tiempo exactamente constante, independientemente de los valores secretos. Esto hace que los ataques de sincronización sean imposibles. Tales contramedidas pueden ser difíciles de implementar en la práctica, ya que incluso las instrucciones individuales pueden tener un calendario variable en algunas CPU.
Una contramedida parcial contra ataques de potencia simples, pero no ataques de análisis de potencia diferencial, es diseñar el software de manera que sea «seguro para PC» en el «modelo de seguridad de contador de programas». En un programa seguro para PC, la ruta de ejecución no depende de valores secretos. En otras palabras, todas las ramas condicionales dependen solo de la información pública.(Esta es una condición más restrictiva que el código isócrono, pero una condición menos restrictiva que el código libre de ramas.A pesar de que las operaciones de multiplicación consumen más energía que NOP en prácticamente todas las CPU, el uso de una ruta de ejecución constante evita que tales diferencias de potencia dependientes de la operación (diferencias de potencia al elegir una rama sobre otra) filtren información secreta.En arquitecturas donde el tiempo de ejecución de la instrucción no depende de los datos, un programa seguro para PC también es inmune a los ataques de sincronización.
Otra forma en la que el código puede ser no isócrono es que las CPU modernas tengan una caché de memoria: el acceso a información poco utilizada incurre en una gran penalización de tiempo, revelando cierta información sobre la frecuencia de uso de bloques de memoria. El código criptográfico diseñado para resistir ataques de caché intenta usar la memoria de una manera predecible (como acceder solo a la entrada, las salidas y los datos del programa, y hacerlo de acuerdo con un patrón fijo). Por ejemplo, se deben evitar las búsquedas de tablas dependientes de datos porque la caché podría revelar a qué parte de la tabla de búsqueda se accedió.
Otras contramedidas parciales intentan reducir la cantidad de información filtrada de las diferencias de potencia dependientes de los datos.Algunas operaciones usan potencia que está correlacionada con el número de 1 bits en un valor secreto.El uso de un código de peso constante (como el uso de puertas de Fredkin o codificación de doble carril) puede reducir la fuga de información sobre el peso de Hamming del valor secreto, aunque es probable que las correlaciones explotables permanezcan a menos que el equilibrio sea perfecto. Este «diseño equilibrado» se puede aproximar en el software manipulando los datos y su complemento juntos.
Se han construido varias» CPU seguras » como CPU asíncronas; no tienen referencia de tiempo global. Si bien estas CPU tenían la intención de hacer que los ataques de sincronización y potencia fueran más difíciles, la investigación posterior encontró que las variaciones de sincronización en los circuitos asíncronos son más difíciles de eliminar.
Un ejemplo típico de la segunda categoría (descorrelación) es una técnica conocida como cegamiento. En el caso de descifrado RSA con exponente secreto d {\displaystyle d}
y el exponente de cifrado correspondiente e {\displaystyle e}
y módulo m {\displaystyle m}
, la técnica se aplica de la siguiente manera (para simplificar, la reducción modular por m se omite en las fórmulas): antes de descifrar, es decir, antes de calcular el resultado de d {\displaystyle y^{d}}
para un determinado texto cifrado y {\displaystyle y}
, el sistema elige un número aleatorio r {\displaystyle r}
y lo encripta con público exponente e {\displaystyle e}
para obtener r e {\displaystyle r^{e}}
. Entonces, el descifrado se realiza en los ⋅ r e {\displaystyle y\cdot r^{e}}
para obtener ( y ⋅ r e ) d = d ⋅ r e ⋅ d = d ⋅ r {\displaystyle {(y\cdot r^{e})}^{d}=y^{d}\cdot r^{e\cdot d}=y^{d}\cdot r}
. Desde la decodificación del sistema eligió r {\displaystyle r}
, se puede calcular su inversa modulo m {\displaystyle m}
para cancelar el factor r {\displaystyle r}
en el resultado y obtener y d {\displaystyle y^{d}}
, el resultado real de la descifrado. Para los ataques que requieren recopilar información de canal lateral de operaciones con datos controlados por el atacante, el cegamiento es una contramedida efectiva, ya que la operación real se ejecuta en una versión aleatoria de los datos, sobre la que el atacante no tiene control ni conocimiento.
Una contramedida más general (en el sentido de que es efectiva contra todos los ataques de canal lateral) es la contramedida de enmascaramiento. El principio de enmascaramiento es evitar manipular cualquier valor sensible y {\displaystyle y}
directamente, sino manipular un compartir de él: un conjunto de variables (llamadas «acciones») y 1 , . . . , y d {\displaystyle y_{1},…,y_{d}}
tal que y = y 1 1 . . . ⊕ y d {\displaystyle y = y_{1}\oplus …\oplus y_{d}}
(donde ⊕ {\displaystyle \oplus }
es la operación XOR). Un atacante debe recuperar todos los valores de los recursos compartidos para obtener información significativa.
Recientemente, el modelado de caja blanca se utilizó para desarrollar una contramedida genérica a nivel de circuito de baja sobrecarga contra ataques EM y de canal lateral de potencia. Para minimizar los efectos de las capas de metal de nivel superior en un CI que actúa como antenas más eficientes, la idea es incrustar el núcleo criptográfico con un circuito de supresión de firma, enrutado localmente dentro de las capas de metal de nivel inferior, lo que conduce a la inmunidad de ataque de canal lateral de alimentación y EM.