Criptografía chivata: cómo crackear dispositivos inviolables

Gonzalo Álvarez Marañón    25 enero, 2021
Criptografía chivata: cómo crackear dispositivos inviolables, desde la llave de seguridad Titan de Google a la distribución cuántica de claves

La llave de seguridad Titan de Google o la YubiKey de Yubico son el último grito en seguridad de autenticación multifactor. Según la propia página de Google:

«Las llaves cuentan con un chip de hardware dotado de firmware diseñado por Google para verificar que nadie las ha manipulado. Estos chips se han diseñado para resistir los ataques físicos que buscan extraer el firmware y el material secreto de la llave».

En otras palabras, una llave Titan o YubiKey almacena tu clave privada y debería ser imposible extraerla del dispositivo. Debería. Porque poderse, se puede, tal y como demostraron en enero varios investigadores del NinjaLab en un trabajo titánico (vale, sí, era un chiste malo). ¿Cómo lo consiguieron? Usando un ataque de canal lateral.

Cómo funcionan los ataques de canal lateral

¿Qué pasa cuando los algoritmos matemáticos abandonan las pizarras de los criptógrafos y se programan dentro de chips del Mundo Real™? En el burdo mundo físico, alejado de los ideales cuerpos platónicos, a un bit no le queda más remedio que ser representado como una corriente eléctrica que pasa (“1”) o no pasa (“0”) por un transistor. Y, por sutilmente que circule, una corriente eléctrica inevitablemente produce efectos a su alrededor: una pequeña radiación electromagnética, una pequeña variación de temperatura, una pequeña subida en el consumo de energía, un pequeño desplazamiento de aire, un sonido imperceptible, …

Si eres capaz de medir esos efectos, eres capaz de leer claves, estados intermedios, memoria, en fin, de extraer información suficiente como para sortear el algoritmo matemático. Da igual lo segura que sea tu criptografía, si la implementación en hardware permite un ataque de canal lateral, quedará en nada.

Ilustración 1. Modelo criptográfico tradicional (ideal), frente al modelo criptográfico de canal lateral (real)

Los criptoanalistas descubrieron desde los albores de la criptografía mecánica que todo dispositivo criptográfico se “chiva” de lo que está pasando en su interior. En lugar de atacar los algoritmos, los ataques de canal lateral atacan la implementación de los algoritmos. Resumiendo: si hay hardware implicado, habrá un canal lateral filtrando información. Es pura física. Veámoslo con un ejemplo.

El ataque por análisis de potencia contra RSA

En un artículo anterior, expliqué los ataques matemáticos contra el popular algoritmo de cifrado de clave pública RSA, aunque solo mencioné de pasada la posibilidad de los ataques de canal lateral. Como bien sabes, para cifrar con RSA se realiza la siguiente operación con la clave pública, e y n:

c = me mod n

mientras que para descifrar se utiliza la clave privada, d:

m = cd mod n

El objetivo del atacante es extraer del dispositivo esta clave privada, d. Como ves, el funcionamiento de RSA se basa en la operación de exponenciación. Dado que RSA utiliza números enteros muy, muy grandes, los matemáticos buscaron atajos para que el cálculo de estas operaciones fuese rápido. Concretamente, suele utilizarse el algoritmo de exponenciación binaria, también conocido como cuadrado y multiplica. Es muy sencillo de entender. Para calcular 34 = 11100 puedes hacer las siguientes operaciones:

  • 32 = 9 (cuadrado)
  • 92 = 81 (cuadrado)

Para calcular este resultado ha bastado con elevar al cuadrado dos veces seguidas. Veamos qué pasa con otro exponente. Para 35 = 11101 el algoritmo funciona así:

  • 32 = 9 (cuadrado)
  • 92 = 81 (cuadrado)
  • 81 × 3 = 243 (multiplicación)

En este caso, se han realizado dos cuadrados y una multiplicación. Finalmente, considera 312 = 111100:

  • 32 = 9 (cuadrado)
  • 9 × 3 = 27 (multiplicación)
  • 272 = 729 (cuadrado)
  • 2792 = 531.441 (cuadrado)

A estas alturas, te habrás percatado de cómo funciona el algoritmo: tras ignorar el primer “1” del exponente, si te encuentras con un “1”, haz una cuadrado y una multiplicación; si te encuentras con un “0”, haz solo un cuadrado. Da igual lo grandes que sean la base y el exponente, siempre se puede exponenciar mediante estas dos operaciones de manera extraordinariamente eficiente. En resumen, siempre se eleva al cuadrado y sólo se multiplica si el bit de exponente que se procesa es 1.

Ahora bien, como puedes imaginar, cuadrado y multiplicación son dos operaciones que se tomarán mucho más tiempo que solo cuadrado. Si pudieras ver el tiempo que está tardando un circuito en operar, deducirías qué operación está realizando y, por tanto, cuál es el exponente privado, d. Y la realidad es que es tan sencillo como observar el consumo del dispositivo, tal y como se muestra en la siguiente figura:

Figura 1. Análisis de consumo de un chip operando con RSA (fuente: Understanding Cryptography: A textbook for students).

De la observación de la traza, se deduce que la clave secreta es:

operaciones: S SM SM S SM S S SM SM SM S SM …

clave privada: 0 1 1 0 1 0 0 1 1 1 0 1 …

Por supuesto, este ataque funciona para claves de cualquier longitud. Del mismo modo, otros algoritmos de cifrado filtran información de otras formas, pero, por desgracia, todos filtran algo. Y cuando el análisis de potencia no filtra la información buscada, existen otros muchos ataques.

Tipos de ataques de canal lateral

Además del ataque de canal lateral basado en consumo de potencia, los investigadores han ido descubriendo otras muchas formas de obtener información de un dispositivo hardware en operación:

  • Ataque a la caché: la caché es una memoria de acceso directo casi instantáneo, usada para almacenar datos e instrucciones muy utilizados. Cuando los datos se cargan en caché por primera vez (cache miss) se produce un retardo, al contrario de cuando los datos ya están en cache (cache hit), cuyo acceso es instantáneo. Esta diferencia en los tiempos de acceso filtra valiosa información que puede ser utilizada por un adversario para obtener datos confidenciales de la memoria. Los devastadores Meltdown y Spectre son ejemplos de este tipo de ataque.
  • Ataque de tiempo: se lleva a cabo mediante la medición del tiempo que tardan distintas instrucciones de un algoritmo criptográfico en ejecutarse según diversos parámetros. Las variaciones de tiempo permiten extraer información de la clave.
  • Ataque de monitorización de consumo: no todas las operaciones que realiza un algoritmo son igual de complejas. En general, a mayor complejidad, mayor consumo. Midiendo estas variaciones de consumo se puede extraer información sobre los argumentos del algoritmo, como en el ejemplo visto para RSA.
  • Ataque electromagnético: todo dispositivo electrónico filtra radiación electromagnética, que puede proporcionar directamente el contenido de la información confidencial. Estas mediciones pueden utilizarse para inferir claves criptográficas utilizando técnicas equivalentes a las del análisis de potencia o pueden utilizarse en ataques no criptográficos, como, por ejemplo, TEMPEST, que permiten reproducir la información de un monitor desde otra habitación.
  • Ataque de sonido: se puede deducir el funcionamiento del procesador de un dispositivo y romper su criptografía escuchando con un smartphone convencional el sonido de sus condensadores y bobinas al operar. También existen ataques no criptográficos que explotan el sonido emitido por las teclas de un teclado al introducir una contraseña o el ruido de las cabezas de una impresora de chorro de tinta al imprimir.
  • Análisis diferencial de fallos: cuando se induce al hardware a fallar de manera intencionada, las respuestas inesperadas que arroja la ejecución de un algoritmo pueden utilizarse para obtener información sobre sus datos. Son muy famosos los ataques padding oracle contra RSA o el ataque de extensión de longitud, basados en esta técnica.

La criptografía no se ejecuta sobre papel, sino sobre hardware

Por muy seguro que sea un algoritmo sobre el papel, cuando se ejecuta en hardware se abre la puerta a los ataques de canal lateral. Aunque se conocen desde principios del siglo XX, habían pasado relativamente desapercibidos porque exigen la proximidad física del atacante para realizarlos. Pero gracias a smartphones y drones es sencillo hoy implantar micrófonos y sensores en cualquier lugar para lanzar ataques de canal lateral contra las víctimas. Con el tiempo, estos ataques serán cada vez más fáciles y baratos. Ni siquiera la distribución cuántica de claves se libra de los ataques de canal lateral.

Además de los mencionados, continuamente se descubren nuevos ataques: arranque en frío, basados en software, en mensajes de error, ópticos, etc. Existen muchas contramedidas que pueden añadirse a los diseños hardware para contrarrestar estos ataques: inyectar aleatoriedad, añadir ruido, borrar datos, etc. Se trata de una carrera en la que los atacantes van siempre un paso por delante de los ingenieros y que, por desgracia, no tiene final a la vista.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *