¿Qué es un ataque de canal lateral?

Un ataque de canal lateral es una forma de ingeniería inversa. Los circuitos electrónicos son por diseño vulnerables cuando producen emisiones como subproductos que hacen que un atacante sin acceso al circuito deduzca como funciona y que información esta procesando. Las emisiones de calor y electromagnéticas son una fuente viable de información para un atacante. Como estas emisiones no juegan un papel en la forma de operar de un circuito, si no que, mas bien, son efectos laterales de que el circuito funciona, fue así como este tipo de ataques de ingeniería inversa se gano su nombre.

¿Existe realmente un riesgo?

El riesgo es, al menos, cuestión de reputación. Los investigadores de seguridad utilizan activamente análisis de canal lateral para determinar la vulnerabilidad de circuitos integrados de uso comercial. A menudo escogen como sujetos de análisis productos que son vendidos como de alta seguridad, que son capaces de proteger datos sensibles o algún valor financiero, en búsqueda de vulnerabilidades que no fueron previstas por el fabricante.

Un ejemplo reciente es el análisis de una matriz de puertas programables de la marca micorsemi  que se llevo a cabo por investigadores de la universidad de Cambridge en el reino unido y una compañía privada llamada Quo Vadis Labs [ver]. La investigación pretende que su análisis demostró la existencia de un backdoor al contenido de la matriz. Por supuesto que microsemi negó que ese fuera el caso argumentando que los investigadores simplemente analizaron y probaron una función que podía deshabilitarse permanentemente por los que adquirieran el chip después de ser instalado.

Bien, el año siguiente a esto, investigadores del instituto Horst Hortz para la seguridad en tecnologías de la información en Bochum, Alemania describió como rompieron el algoritmo de encriptación AES-256 que los diseñadores habían usado para proteger los circuitos descargados a un Xilinx Virtex-4 y Virtex-5 (otra marca de matriz de puertas programables).

Pero dejando de lado la reputación comercial que una empresa pudiera perder por lanzar productos vulnerables al mercado, existe siempre el riesgo de que un atacante quiera utilizar el análisis de canal lateral para reconstruir llaves de encriptación y así obtener acceso a dispositivos que se supone que salvaguardan información secreta o permiten algún beneficio financiero.

¿Como funciona un ataque de canal lateral?

Todos los ataques toman ventajas sobre cambios en el comportamiento de procesamiento que se exhibe durante la ejecución de algún algoritmo. Hay dos clases generales para analizar los canales laterales:

  1. Simple
  2. Diferencial

Dentro de esas dos clases, los atacantes pueden usar un rango de propiedades de los canales laterales, como el calor que el dispositivo genera, la energía que consume, o el tiempo de ejecución. Para sistemas incrustados donde un atacante tiene acceso al hardware el calor y la energía representan las dos principales fuentes de información, aunque también los ataques que se basan en la sincronización pueden ser usados cunado en un sistema de procesamiento que maneja varios hilos de procesos (multi thread) el atacante logra introducir su propio código o usar las interacciones con el sistema entre aplicaciones existentes.

Para sistemas de red, los ataques que se basan en la sincronización son mas viable y han sido ampliamente explorados. Por ejemplo, los sistemas que usan caches de memoria podrían ser particularmente vulnerables a ataques basados en el tiempo porque el cache causa una diferencia significante en el desempeño de una sección de código dada. El atacante podría forzar la cache a tener un estado particular corriendo software que modifica las lineas en una forma predeterminada y luego observar a prueba y error como se comportan las aplicaciones al desplazar su propia data.

De forma similar a los sistemas de caches, microcontroladores de menor calidad que no tengan un circuito dedicado a la encriptación a menudo toman rangos variables para realizar el computo necesario para encriptar datos. Los sistemas que comúnmente se usan para encriptar utilizan una mezcla de exponenciales – cuadráticos – y multiplicaciones, y proceden un bit a la vez. Elevar al cuadrado se puede lograr usando solo operaciones de desplazamiento, toma menos ciclos que la multiplicación de desplazamiento y suma serial que seria usado por microcontroladores de menor calidad. Entonces un atacante podría observar el tiempo que le toma procesar cada instrucción. Si el microcontrolador tiene un multiplicador dedicado, esto consumirá mas energía que la operación cuadrática, y consumir energía conlleva a genera mas calor y mas inferencia electromagnética.

En un algoritmo como descifrar datos RSA, se lleva a cabo una multiplicación solo si el bit exponente que esta siendo procesado es 1. Entonces el atacante podría simplemente medir los cambios en la corriente para, a partir de ahí, derivar la llave de cifrado un bit a la vez.

Cuando analizamos una conexión de red, es posible medir el tiempo que toma una petición a un servidor para determinar de esa manera si este esta detrás de un proxy ya que el salto que hace del proxy al servidor real añade unos cuantos nanosegundos al tiempo que normalmente tomaría. Esto nos permite detectar si alguien que visita nuestros servidores lo esta haciendo desde un proxy.

¿Como defenderse de los ataques de canal lateral?

Hay varias medidas que se pueden usar para prevenir, o al menos atrasar, un análisis de canal lateral. Se concentran principalmente en la reducción de diferencias entre pulsos y la aleatoriedad de los intervalos en donde el orden de las operaciones en los datos esta constantemente cambiando. Esta técnica es generalmente lo mejor que podemos hacer para prevenir las técnicas de correlación usadas en el análisis como una fuente de información.

Las técnicas usadas para mitigar las fugas de información incluyen pre-cargar registros y buses para prevenir que exista una lectura de energía que se base en el cambio de valores mientras los datos pasan por el bus.

Demostración

Acá un vídeo de dominio publico donde se expone una pequeña y entretenida demostración practica de como se conduce un ataque de análisis lateral.

Categorized in: