En junio, investigadores de tres universidades estadounidenses publicaron un artículo que describe un ataque real que aprovecha que los cambios de frecuencia del CPU dependen de su carga (un comportamiento estándar de las computadoras modernas). La frecuencia de un CPU se mide en hercios, de ahí proviene el nombre de Hertzbleed, el cual sugiiere que un cambio en esta frecuencia produce una fuga de datos.
Podemos clasificar este método como un ataque de hardware, ya que explota vulnerabilidades u otros puntos débiles específicos en el hardware. Existen varios ataques de este tipo, pero la mayoría requieren acceso directo a la computadora de destino o solo a un chip específico, ¡pero Hertzbleed es capaz de operar a distancia!
El estudio es muy interesante y, a pesar de ser complejo, puede resumirse en términos más simples. Pero, para comprender al menos de forma básica sus puntos clave, es necesario un poco de conocimiento previo. Por lo que decidimos hacer ambas cosas: publicar una explicación sencilla de Hertzbleed y otra un tanto más compleja (sin hacer uso de elaborados gráficos o cálculos ininteligibles).
La explicación sencilla
Para ahorrar energía, las computadoras modernas no mantienen la misma frecuencia en todo momento. En cambio, la frecuencia (de igual maneras que el voltaje de la CPU) se ajusta de forma automática de acuerdo con su carga. Cuando hay pocas tareas, la frecuencia suele ser muy baja, por ejemplo, de 900 MHz en lugar de los 3,2 GHz nominales. Si hay muchas tareas, la frecuencia de uno o varios núcleos del CPU puede pasar por encima de la frecuencia estándar. En la práctica, la carga (el número y la complejidad de las tareas) no es el único criterio para que la frecuencia cambie, esta puede ser menor, por ejemplo, si la computadora se sobrecalienta.
Los investigadores aprovecharon dicha funcionalidad nativa para medir el estado del CPU al momento de ejecutar un programa de cifrado de datos y conseguir robar información importante. Encontraron una característica en un algoritmo de cifrado moderno que “obliga” a la computadora a incrementar la frecuencia al procesar ciertos datos. Mientras la frecuencia aumenta, los datos se procesan de forma más rápida y la computadora atacada responde a las solicitudes con mayor rapidez. Al medir el tiempo de respuesta, los investigadores pudieron reconstruir la clave secreta de cifrado. Al tener esta clave, teóricamente pueden interceptar y descifrar los datos intercambiados entre el sistema objeto del ataque, por ejemplo, y otras computadoras en una red privada virtual. Todo esto sin que sea posible registrar el “robo” de la clave.
Hertzbleed desarrolla la idea de los ataques de hardware mediante canales laterales. Además, introduce de forma teórica la posibilidad de robar datos en remoto, enviando solicitudes a través de la red a las potenciales víctimas. De momento esto sigue siendo un ejercicio meramente teórico que se encuentra en la búsqueda de vulnerabilidades complejas en las computadoras modernas con CPU. No obtsnate, hay una posibilidad en el futuro de que estos ataques sean “simplificados”.
Una explicación un poco más compleja
Los ataques de canal lateral se llevan a cabo observando el funcionamiento de un solo chip o de una computadora de forma indirecta. El método clásico de ataque de canal lateral implica observar variaciones en la corriente eléctrica consumida por el chip. Por ejemplo, si el chip se encuentra cifrando datos mediante una clave secreta, los cambios en el consumo de energía en algunos casos pueden ser usados para reconstruir la clave.
Los canales laterales pueden basarse tanto en software como en hardware. Spectre, el conocido estudio, usa un canal lateral de este tipo directamente en la computadora, explotando funciones de ejecución especulativa para robar información secreta. Además, no siempre se necesita conectar un voltímetro en la computadora para monitorizar el consumo de energía del CPU, ya que suele tener uno incorporado. Ya se ha desarrollado un ataque relacionado con Hertzbleed usando un sistema para monitorizar el consumo de energía promedio de los procesadores Intel.
Ahora veamos el ajuste dinámico de la frecuencia de la computadora. Esto se puede gracias a la técnica de escalado dinámico de voltaje y frecuencia (DVFS). De hecho, junto con la frecuencia, el voltaje del CPU también varía para garantizar condiciones de funcionamiento óptimas (un consumo de energía bajo, con poca carga y un funcionamiento estable a máxima capacidad). Los investigadores describen detalladamente cómo llevaron a cabo numerosos experimentos DVFS en procesadores Intel (una tecnología que la propia Intel llama Turbo Boost). Cargaron la computadora con muy poca carga (cálculos aritméticos básicos) y observaron cómo cambiaba la frecuencia. Observaron varios patrones: haciéndolo muy simple, con un conjunto de datos de cálculo, la frecuencia del CPU solía aumentar, pero con otro no. Además, una mayor frecuencia supuso cálculos más rápidos y, por ende, un resultado más veloz.
Veamos un tercer término técnico que es relevante también en todo esto: la programación en tiempo constante. Esto es importante cuando se trata de implementar en un programa un algoritmo de cifrado. Por ejemplo, tenemos un programa que recibe un mensaje determinado y genera el mismo mensaje, pero cifrado. Podemos introducir datos, pero no conocemos la clave secreta de cifrado, que, mientras, estamos tratando de establecer observando el tiempo de ejecución, ya que el tiempo de ejecución de la función depende de los datos de entrada. Es como si intentáramos abrir una caja fuerte cerrada con un código digital secreto, el cual se comporta de manera diferente si las secuencias de números que fueron introducidas son casi correctas, dándonos pistas de “calientes” y “frías”. Gran parte de los programas que implementan algoritmos de cifrado cuentan con un mecanismo protector que evita intentos de determinar la clave de esta manera, que es el mismo principio de la programación en tiempo constante.
El resultado más importante del estudio de Hertzbleed es que el ajuste dinámico de la frecuencia del CPU rompe el principio de la programación en tiempo real, es decir, la no variación en el tiempo de cifrado. Los autores demuestran cómo aprovechar esto eligiendo un sistema con un software de cifrado de datos real e introduciendo una secuencia de caracteres que el programa trató de descifrar. Los mensajes se eligieron para crear condiciones que permitieran a un atacante reconstruir la clave de cifrado. Además, la clave se extrae mediante un canal lateral, es decir, la fuga de datos se produce debido a un cambio en la frecuencia de la CPU y, por ende, en el tiempo de ejecución del programa y el tiempo de respuesta a la solicitud del atacante.
Faltan consecuencias
En nuestra “explicación un poco más compleja” de Hertzbleed, descubrimos aproximadamente… un 0,05 % de la información real presentada por los investigadores. Hay matices infinitos que igual tienen relevancia para comprender su funcionamiento. Los investigadores utilizaron, de forma particular, una característica del algoritmo de encapsulación de claves SIKE para crear las condiciones necesarias para las fugas de datos mediante el tiempo de respuesta o el cambio de frecuencia. Esto se parece al ataque Spectre que mencionamos antes, el cual requiere crear condiciones especiales en el software atacado para permitir el robo de datos importantes. Según los resultados del estudio, estrictamente hablando, es imposible decir sin equivocarse dónde se encuentra la vulnerabilidad, si en la computadora o en el programa.
Y esnecesario mencionar un aspecto evidente de la implementación: a pesar de que los investigadores demostraron un ataque real práctico (no teórico), lo llevaron a cabo en condiciones controladas. La variación en el tiempo de respuesta era siempre constante según los inputs. Pero ¿qué pasa si la computadora ejecuta otras tareas que afectan también al tiempo de respuesta y hacen que los datos sean más alarmantes? Incluso en circunstancias tan idóneas, la reconstrucción de la clave de cifrado (en dos experimentos distintos) tardó 36 y 89 horas. Durante este tiempo, se enviaron al programa de cifrado, miles de solicitudes por segundo, siendo la única forma de garantizar que todas las funciones necesarias para el funcionamiento del software y el hardware estuvieran alineadas para producir la fuga de datos. ¡Eso es demasiado tiempo!
Todo esto hizo que la reacción al estudio fuera ambigua. Por un lado, a las vulnerabilidades se les asignaron los identificadores habituales: CVE-2022-23823 para Intel y CVE-2022-24436 para AMD. Parecería que el problema era solo de las computadoras. Pero Intel y AMD informaron que no tienen planes de lanzar alguna actualización para los sistemas afectados (para Intel, las CPU de 8ª a 11ª generación). De hecho, el cambio en el algoritmo SIKE hizo imposible el ataque demostrado. Microsoft y Cloudflare, que utilizan SIKE como uno de los elementos de sus sistemas de cifrado, actualizaron su propio software.
No obstante, este estudio es de suma importancia. Como pasó con Spectre en 2018, este no será el último ataque de este nuevo tipo. Si se puede mostrar un ejemplo de fuga de datos a través del ajuste dinámico de la frecuencia del CPU, es seguro que otros vendrán. De igual manera, es un campo de trabajo importante para los criptógrafos. SIKE es un algoritmo sumamente reciente, candidato al título de “solución de cifrado poscuántica”. De hecho, se analizó su robustez contra cualquier ataque de canal lateral y demostró ser bastante resistente. Pero el estudio de Hertzbleed muestra que han aparecido nuevas opciones.
Generalmente, como suele pasar en estos estudios, dicho ataque fue “descubierto” pero no pudo ser implementado de forma completa ni exitosa. Los desarrolladores de CPUs y de programas que son particularmente sensibles a los hackeos sacarán sus propias conclusiones y realizarán cambios antes de que sea posible efectuar un robo. Pero existe una pequeña posibilidad de que la próxima vez estos investigadores, u otros, localicen algo que permita a los atacantes, por ejemplo, interceptar el tráfico de red cifrado o descifrar el cifrado permaneciendo en el anonimato. Con un poco de imaginación es posible llevar el esquema representado en este estudio a dichas proporciones. Pero esto, y el estudio de Hertzbleed (y nuestro intento por describirlo más fácilmente) muestra que no se trata de una tarea fácil. Para las vulnerabilidades de la clase Spectre, no se ha demostrado este avance en más de cuatro años. Aquí también, lo más probable es que las cosas sigan igual: dentro de un año más o menos, publicarán otro informe con ligeros avances y que aclare el anterior. Y esa conclusión es positiva, ya que en realidad ¡ya tenemos suficientes problemas con la seguridad de la información!