# Ataque de canal lateral

En seguridad informática, un ataque de canal lateral es un ataque basado en información obtenida gracias a la propia implementación física de un sistema informático, en lugar de basarse en puntos débiles del algoritmo implementado como sería el caso de recurrir a criptoanálisis o explotar errores en el software.
Por ejemplo, la sincronización de información, el consumo de energía, fugas electromagnéticas o incluso sonidos pueden ser una fuente adicional de información que puede explotarse para romper el sistema. Algunos ataques de canal lateral requieren conocimientos técnicos sobre el funcionamiento interno del sistema, aunque otros como es el caso del análisis de diferencias de consumo energético resultan eficaces como ataques de caja negra. Muchos ataques de canal lateral poderosos están basados en los métodos estadísticos con los que Paul Kocher fue pionero.
Los intentos de romper un criptosistema mediante el engaño o la persuasión sobre personas que disponen de acceso legítimo no suelen considerarse como ataques de canal lateral: véase ingeniería social y criptoanálisis de manguera de goma. Para los ataques sobre los propios sistemas computacionales (que se usan normalmente para realizar criptografía y por lo tanto contienen claves criptográficas o archivo de texto plano), véase seguridad informática. Según investigadores de Microsoft Research y de la Universidad de Indiana, la popularización de las aplicaciones de la denominada Web 2.0 y del software como un servicio ha aumentado también significativamente la posibilidad de los ataques de canal lateral en la web, incluso cuando la comunicación entre el navegador web y el servidor está cifrada, por ejemplo a través de cifrado HTTPS o WiFi.

## General

Las clases generales de ataques de canal lateral incluyen:
* Ataque al caché — ataques basados en la capacidad del atacante para monitorizar los accesos al caché realizados por la víctima en un sistema físico compartido, como un entorno virtualizado o algún tipo de servicio en la nube.
* Ataques de sincronización — ataques basados en tomar medidas del tiempo que tardan en realizarse distintos cálculos, como puede ser comparar una determinada contraseña del atacante con la contraseña desconocida de la víctima.
* Ataque de monitorización de consumo energético — ataques que utilizan la variación en el consumo de energía del hardware durante los cálculos.
* Ataques electromagnéticos — ataques basados en la fuga de radiación electromagnética, que puede proporcionar directamente textos planos y otra información. Tales mediciones pueden utilizarse para deducir claves criptográficas por medio de técnicas equivalentes a las empleadas para los ataques basados en el consumo energético, y también se pueden usar en análisis no criptográficos, por ejemplo TEMPEST (también conocido como interferencia de Van Eck o ataques de monitorización de radiación).
* Criptoanálisis acústico — ataques que explotan sonidos producidos durante los cálculos, similar a la monitorización del consumo energético.
* Análisis de fallos diferenciales — en donde se obtiene información secreta mediante la introducción de fallos en un cálculo.
* Persistencia de datos — en los que se lee información sensible después haber sido supuestamente eliminada.
* Ataques de fallos iniciados por software — en la actualidad es una clase rara de canal lateral. Row hammer es un ejemplo en el que puede cambiarse qué memoria es inacessible a base de acceder con una frecuencia excesiva a la memoria adyacente, causando de ese modo una pérdida de la retención de estado.
* Ópticos — permiten obtener información sensible y otros datos secretos mediante la grabación visual con una cámara de alta resolución o cualquier otro dispositivo con una funcionalidad similar (ver ejemplos más abajo).
En todos los casos, el principio subyacente es que los efectos físicos causados por el funcionamiento de un criptosistema pueden proporcionar (de forma (co)lateral) información añadida útil sobre los secretos que esconde el sistema, por ejemplo, la clave criptográfica, información parcial de estado, textos planos completos o parciales, etcétera. El término cryptophthora (degradación de secretos) se usa a veces para expresar la degradación de material secreto a consecuencia de filtraciones a través de un canal lateral.

## Ejemplos

Un ataque de canal lateral al caché funciona observando las operaciones críticas para la seguridad, como puede ser la entrada de la tabla T de AES o los accesos al multiplicador en una exponenciación modular. Un atacante puede entonces obtener la clave secreta basándose en los accesos realizados (o no realizados) por la víctima, deduciendo la clave de encriptación. Además, a diferencia de otros ataques de canal lateral, este método no produce un fallo en la operación criptográfica que está en marcha, por lo que pasa de forma completamente inadvertida para la víctima.
En 2017 se descubrieron en las CPU dos vulnerabilidades basadas en el caché (denominadas Meltdown y Spectre), que permiten a un atacante acceder al contenido en memoria de otros procesos y del propio sistema operativo.
Un ataque sincronizado observa la entrada y salida de información de la CPU o de la memoria en el hardware en el que se ejecuta el criptosistema o algoritmo. Simplemente con observar variaciones en la duración de las operaciones criptográficas, podría ser posible determinar la clave secreta completa. Dichos ataques conllevan análisis estadísticos de las mediciones de temporización y han sido demostrados a través de diferentes redes.
Un ataque de monitorización del consumo energético puede aportar información todavía más detallada solamente con observar el consumo de energía de un dispositivo de hardware como puede ser una CPU o un circuito criptográfico. Estos ataques están categorizados, grosso modo, dentro del campo de los análisis simples de energía y los análisis de energía diferenciales.
Las fluctuaciones en la corriente eléctrica también generan ondas de radio, lo que posibilita el uso de ataques que se dedican a analizar variaciones en las emisiones electromagnéticas. Estos ataques suelen emplear técnicas estadísticas similares a las de un ataque basado en la monitorización del consumo energético.
Se conocen varias analogías históricas en relación con los modernos ataques de canal lateral. Un documento desclasificado en 2008 por la Agencia de Seguridad Nacional revela que ya en 1943 un ingeniero con un teléfono Bell observó picos descifrables en un osciloscopio asociados con la salida desencriptada de cierto teletipo usado en encriptación. Según Peter Wright, antiguo científico del MI5, el Servicio Secreto Británico analizó las emisiones de equipo de cifrado francés en los años 60. Se sospecha también que en los años 80 espías del KGB instalaron micrófonos en el interior de máquinas de escribir IBM Selectric para monitorizar el ruido eléctrico generado cuando la bola de la máquina se movía para golpear el papel; las características de aquellas señales podían usarse para determinar qué tecla se había pulsado.
El consumo de energía en los aparatos produce calentamiento, que se contrarresta mediante efectos de enfriamiento. Los cambios de temperatura crean estrés mecánico, y este estrés a su vez puede crear emisiones acústicas (es decir, ruido) por parte de las CPU (de unos 10 kHz en algunos casos). Investigaciones recientes realizadas por Adi Shamir y otras personas han sugerido que puede obtenerse también de este modo información acerca del funcionamiento interno de criptosistemas y algoritmos. Esto es un caso de ataque acústico; si puede observarse la superficie del chip de la CPU, o en algunos casos el paquete del CPU, las imágenes infrarrojas pueden también proporcionar información acerca del código que se está ejecutando en la CPU. Esto se conoce como ataque de imágenes termales.
Algunos ejemplos de ataques ópticos de canal lateral:
* El robo de información de ordenadores no conectados a Internet
* La exfiltración de una clave secreta AES con un análisis de circuito de imagen con una resolución de picosegundos

## Contramedidas

Puesto que los ataques de canal lateral dependen de la relación entre la información emitida (filtrada) a través de un canal lateral y la información secreta, las contramedidas se dividen en dos categorías principales:
* La supresión o reducción de la divulgación de esa información.
* La eliminación de la relación entre la información filtrada y la información secreta. Es decir, hacer que la información filtrada no tenga relación (no pueda correlacionarse) con la información secreta. Normalmente esto se hace mediante algún tipo de aleatorización de los textos cifrados que transforma la información de tal modo que pueda obtenerse de nuevo la información original una vez que la operación criptográfica (por ejemplo, el descifrado) ha tenido lugar.
Para aplicar la primera categoría existen pantallas disponibles comercialmente que cuentan con un aislamiento especial que atenúa las emisiones electromagnéticas, reduciendo la susceptibilidad a los ataques basados en las especificaciones TEMPEST. El debido acondicionamiento y filtrado de la instalación eléctrica puede ayudar a detener los ataques basados en las fluctuaciones eléctricas, si bien estas medidas debe tomarse de forma cuidadosa, dado que pueden quedar todavía correlaciones muy pequeñas que puedan comprometer la seguridad. Las barreras físicas pueden reducir el riesgo de una instalación subrepticia de micrófonos (para contrarrestar los ataques acústicos) o de otros dispositivos de microescucha como pueden ser aparatos que midan el consumo energético de la CPU o que formen parte de un ataque mediante imagen térmica.
Otra contramedida perteneciente a la primera categoría consiste en bloquear el canal emitido usando ruido. Por ejemplo, puede añadirse un retraso aleatorio para atajar los ataques sincronizados, si bien un atacante podría compensar estos retrasos tomando el valor medio de distintas medidas (o, más generalmente, usando más muestras en el análisis). A medida que aumenta el ruido en el canal lateral, el atacante necesita tomar cada vez más muestras.
En el caso de ataques sincronizados contra objetivos cuyos tiempos computacionales estén cuantificados en ciclos de reloj discretos, una contramedida eficaz consiste en diseñar el software para que sea isócrono, es decir, para que se ejecute en un tiempo siempre constante, independientemente de cualquier valor secreto que maneje. Esto hace que los ataques sincronizados resulten imposibles. Sin embargo, una contramedida de este tipo puede ser difícil de llevar a la práctica, dado que determinadas instrucciones de la CPU pueden necesitar más o menos tiempo que otras en completarse.
Una contramedida parcialmente eficaz contra los ataques basados en análisis simples del consumo energético –pero no contra los basados en análisis de energía diferenciales– es diseñar el software de forma que sea "seguro" en lo concerniente al "modelo de seguridad del contador de programa". En un programa de este tipo, la ruta de ejecución no depende de valores secretos, o dicho de otro modo, todas las ramas condicionales dependen únicamente de información pública (una condición más restrictiva que el código isócrono, pero menos que el código libre de ramificaciones). Aunque las operaciones de multiplicación consumen más energía que un NOP en prácticamente todas las CPU, el uso de una ruta de ejecución constante impide que esas variaciones en el uso de la energía que dependen de la operación que se realice (diferencias energéticas en función de que se use una u otra rama) revelen cualquier información secreta. En las arquitecturas donde el tiempo de ejcución de las instrucciones no depende de la información, un programa que se ajuste al modelo de seguridad del contador de programa también es inmune a los ataques sincronizados.
Otra forma en la que el código puede no ser isócrono se debe a las CPU modernas que tienen un caché de memoria: los accesos a información usada con poca frecuencia suponen una gran penalización temporal que revela cierta información sobre la frecuencia del uso de los bloques de memoria. El código criptográfico diseñado para resistir los ataques basados en el caché intenta usar memoria sólo de un modo predecible (como sería acceder sólo a la entrada, la salida y la información del programa siguiendo en todo momento un patrón fijo). Por ejemplo, deben evitarse las tablas de consulta que dependen de la información, puesto que el caché podría revelar a qué parte de la tabla se ha accedido.
Otras contramedidas parciales intentan reducir la cantidad de información que revelan las diferencias en el consumo de energía basadas en los datos que se manejan. Ciertas operaciones utilizan energía que se correlaciona con el número de 1 bit de un valor secreto. Emplear un código de peso constante (como sería el uso de puertas Fredkin o la codificación a doble rail) puede reducir la fuga de información acerca del peso Hamming del valor secreto, si bien es posible que queden correlaciones explotables a menos que el equilibrio sea perfecto. Uno puede aproximarse a este "diseño equilibrado" en software manipulando conjuntamente tanto la información como su complemento.
Se han construido varias "CPU seguras" en forma de CPU asíncronas; no tienen una referencia global de tiempos. Si bien estas CPU se pensaron para dificultar los ataques sincronizados y los basados en fluctuaciones del consumo energético, posteriores investigaciones revelaron que las variaciones temporales en los circuitos asíncronos eran más difíciles de eliminar.
Un ejemplo típico de la segunda categoría (eliminación de la correlación) es una tećnica denominada cegado. En el caso de las desencriptación de RSA con un exponente secreto $d$, el correspondiente exponente de encriptación $e$ y módulo $m$, la tećnica se aplica de la forma siguiente (para hacerlo más sencillo, la reducción modular de m se omite en las fórmulas): antes de proceder a la desencriptación –es decir, antes de computar el resultado de $y^{d}$ para un texto cifrado $y$), el sistema elige un valor aleatorio $r$ y lo encripta con el exponente público $e$ para obtener $r^{e}$. A continuación, se procede a la desencriptación de $y\cdot r^{e}$ para obtener ${(y\cdot r^{e})}^{d}=y^{d}\cdot r^{e\cdot d}=y^{d}\cdot r$. Puesto que el sistema de desencriptación eligió $r$, puede computar su módulo inverso $m$ para eliminar el factor $r$ del resultado y finalmente obtener $y^{d}$, que es el resultado de la desencriptación. En el caso de ataques que necesitan obtener información vía canal lateral de operaciones con datos controlados por el atacante, la técnica del cegado es una contramedida eficaz, dado que la operación en sí se lleva a cabo con una versión aleatorizada de la información sobre la cual el atacante no tiene control ni conocimiento alguno siquiera.
Otra contramedida más general, en el sentido de que resulta eficaz contra todos los ataques de canal lateral, es la del enmascaramiento. El principio del enmascaramiento consiste en evitar manipular cualquier información sensible $y$ de forma directa, y en lugar de ello manipular una versión compartida de ella: una serie de variables (llamadas "cuotas") $y_{1},...,y_{d}$ de forma que $y=y_{1}\oplus ...\oplus y_{d}$ (donde $\oplus$ es la operación puerta XOR). Un atacante tendría que obtener todos los valores de las cuotas para conseguir cualquier información significativa.