He estado releyendo el magnífico libro de Neal Stephenson titulado Criptonomicón (debo señalar que en España se ha publicado en tres volúmenes, mientras que la edición original en inglés realizada por Avon Books es uno sólo). Además de una sorprendente historia perfectamente construida, con diálogos que pueden ser leídos en diversos niveles, y una bien conformada mezcla de personajes reales y ficticios, constituye lo que muchos han venido a denominar la “biblia” de los hackers. Esto se debe a que ofrece una buena y amena introducción a la historia de la computación y a los diversos desarrollos habidos en tecnología de la información; así como una explicación de lo que supone hoy en día la seguridad informática y, por ende, de los diferentes medios de vulnerarla.
Como sugiere el título de este post, voy a centrarme en explicar lo que Stephenson llama “phreaking Van Eck” y, en general, en el espionaje informático por canales indirectos.
En el segundo libro de la edición en castellano del Criptonomicón titulado “El Código Pontifex”, Stephenson nos explica este concepto a través de una apuesta que hacen dos de los personajes. La escena se desarrolla en una habitación de hotel donde Cantrell y Pekka (no entro en más detalles para no desvelar la trama de la historia) intentan acceder al ordenador de Tom Howard que está en la habitación contigua. Para ello no utilizan ningún tipo de programa invasivo. El autor lo explica así:
Si pones una hoja en blanco sobre una lápida y le pasas la punta de un lápiz por encima, obtienes una línea horizontal, oscura en algunos lugares y tenue en otros, y sin demasiado sentido. Si vas bajando por la página a intervalos cortos, la anchura de una línea de lápiz, y repites el proceso, comienza a aparecer una imagen. El proceso de ir recorriendo la página en una serie de trazos horizontales es lo que un cerebrín llamaría escaneo de barrido, o simplemente barrido. Con un monitor de vídeo convencional -un tubo de rayos catódicos- el rayo de electrones rastrea moviéndose físicamente hacia abajo por el vidrio como sesenta u ochenta veces por segundo. En el caso de una pantalla de portátil, no hay escaneo físico; los píxeles individuales se apagan y encienden directamente. Pero aún así se produce el rastreo; lo que se escanea y se pone de manifiesto en la pantalla es una región de la memoria del ordenador llamado buffer de pantalla. El contenido del buffer de pantalla debe pegarse en la pantalla sesenta u ochenta veces por segundo o (1) la pantalla parpadea y (2) la imagen se mueve bruscamente. La forma en que el ordenador te habla no es controlando la pantalla directamente sino más bien manipulando los bits contenidos en ese buffer, con la seguridad de saber que otros subsistemas en el interior de la máquina se encargan del trabajo rutinario de mandar la información a la pantalla física. Sesenta u ochenta veces por segundo, el sistema de vídeo dice ¡mierda!, es hora de refrescar la pantalla, y va al comienzo del buffer de pantalla -que, recuerda, no es más que una zona en particular de la memoria- y lee los primeros bytes, que indican el color que se supone debe tener el píxel en la esquina superior izquierda de la pantalla. Esa información se envía a lo que sea que actualiza la pantalla, ya sea un rayo de electrones o un sistema de portátil para controlar directamente los píxeles. Se leen los siguientes bytes, normalmente los del píxel a la derecha del primero, y así hasta llegar al extremo derecho de la pantalla. Eso dibuja la primera línea de la lápida. Como ya se ha llegado al extremo derecho de la pantalla, ya no quedan más píxeles en esa dirección. Está implícito que los siguientes bytes a leer de la memoria corresponderán al píxel más a la izquierda en la segunda línea de barrido contando desde arriba. Si se trata de una pantalla de rayos catódicos, se nos produce ahora un pequeño problema de tiempos ya que el rayo de electrones se encuentra ahora en el extremo derecho de la pantalla y se le pide que dibuje un píxel en el extremo izquierdo. Debe retroceder. Eso lleva un poco de tiempo; no demasiado, pero sí mucho más que el intervalo de tiempo entre dibujar dos píxeles que se encuentran mejilla con mejilla. Esa pausa se conoce como intervalo de barrido horizontal. Se produce uno al final de cada línea hasta que el barrido ha llegado al último píxel en la esquina inferior derecha de la pantalla y ha completado un dibujo de la lápida. Pero ya es hora de empezar de nuevo, y por lo tanto el rayo de electrones (si lo hay) debe saltar en diagonal hasta el píxel de la esquina superior izquierda. Eso también lleva un poco de tiempo y se llama intervalo de barrido vertical. Esos problemas surgen de limitaciones físicas inherentes al barrido de rayos de electrones por el espacio en un tubo de rayos catódicos, y básicamente desaparecen en el caso de una pantalla de portátil como la que Tom Howard ha situado a unas pulgadas frente a Pekka, al otro lado de la pared. Pero la temporización de vídeo de la pantalla del portátil sigue el modelo de la de una pantalla de tubo de rayos catódicos. (Esto se debe simplemente a que la vieja tecnología es conocida universalmente por aquellos que necesitan comprenderla, y funciona bien, y se han creado y probado todo tipo de tecnologías y programas para funcionar dentro de ese esquema, y por qué jugar con el éxito, especialmente cuando tus márgenes de beneficios son tan pequeños que sólo se pueden detectar empleando técnicas de la mecánica cuántica, y cualquier fallo de compatibilidad con la tecnología anterior enviará a tu compañía directamente al sumidero). En el portátil de Tom, cada segundo está dividido en setenta y cinco partes perfectamente regulares durante las que se realiza un dibujo completo de la lápida seguido de un intervalo de barrido vertical. Randy puede seguir la conversación entre Pekka y Cantrell lo suficiente para comprender que ya han conseguido deducir, analizando la señal que atraviesa la pared, que Tom Howard tiene configurada la pantalla para ofrecer 768 líneas y 1.024 píxeles por cada línea. Por cada píxel, se leen cuatro bytes del buffer de vídeo y se envían a la pantalla. (Tom está empleando la definición de color más alta posible para la pantalla, lo que significa que se requiere un byte para representar cada una de las intensidades de azul, verde y rojo y otro que básicamente sobra, pero se deja por ahí porque a los ordenadores les gustan las potencias de dos, y ahora los ordenadores son tan ridículamente rápidos y potentes que, aunque todo está sucediendo siguiendo un horario que para un ser humano sería agresivo, los bytes extras no afectan en nada.) Cada byte son ocho dígitos binarios o bits, y por tanto, 1.024 veces por línea, se leen 4 x 8 = 32 bits del buffer de pantalla. Sin saberlo Tom, su ordenador está colocado justo aliado de una antena. Los cables que Pekka pegó a la pared pueden leer las ondas electromagnéticas que radian continuamente los circuitos del ordenador. El portátil de Tom se vende como ordenador no como estación de radio, por lo que podría parecer raro que estuviese emitiendo cosas. En realidad, es un efecto secundario de que los ordenadores sean bichos binarios, 10 que significa que todas las comunicaciones chip-a-chip, subsistema-a-sub sistema, que se producen en el interior de la máquina -todo lo que se mueve por esas tiras planas de cables o en las pequeñas trazas metálicas en las placas de circuito consisten en transiciones de cero a uno y de uno a cero.
Siento la cita tan extensa, pero es útil a los efectos de explicar lo que quiero (además de servir para que aquellos que no han leído este libro decidan lanzarse de lleno). En definitiva, cada cable y procesador de un ordenador en funcionamiento son como diminutos emisores de radio, por lo que únicamente es preciso poseer el receptor y decodificador necesario para traducir ese ruido en imágenes y texto. Hasta aquí la teoría explicada en el libro. Pasemos a lo que se puede hacer hoy en día:
Los ataques por medio de canales indirectos se dirigen a los puntos de contacto entre el ordenador y el mundo real, a menudo escasamente protegidos: los aledaños del teclado, de la pantalla o de la impresora, sea durante las fases previas a la encriptación de la información, o una vez traducida a formas inteligibles por nosotros.
Gibbs, W. Wayt. Espionaje informático por canales indirectos, en Investigación y Ciencia, número 394, página 69.
La idea de obtener información por canales indirectos (eavesdropping en inglés) es muy antigua. Ya durante la Primera Guerra Mundial los espías clavaban varillas metálicas en el suelo cerca de las líneas de teléfono para, con la ayuda de un amplificador, captar las conversaciones. Del mismo modo, se descubrió que las ondas de radiofrecuencia que emiten los monitores de los ordenadores pueden ser reconstruidas desde una sala cercana o. incluso, desde un edificio contiguo. Con la finalidad de proteger los equipos, científicos militares estadounidenses crearon el programa “Tempest”: se trataba de establecer un apantallamiento electromagnético que impidiera la “escucha” de las emisiones.
Con la llegada de las pantallas planas se pensó que el problema estaba solucionado. Sin embargo, el doctor Markus Kuhn demostró lo contrario en su tesis doctoral. Corroboró que también este tipo de pantallas emiten señales digitales desde sus cables de vídeo que pueden ser descodificadas a distancia.
Además de esta forma de acceder a la información que se muestra en una pantalla de ordenador, también es posible detectar lo que se escribe, registrando las pulsaciones efectuadas en el propio teclado. De esta forma se pueden conocer las claves secretas, códigos PIN y cualquier otra información clasificada sin necesidad de ejecutar un programa invasivo (tipo troyano) en el equipo objetivo. Martin Vuagnoux y Sylvain Pasini, alumnos de posgrado en el Instituto Federal Suizo de Tecnología (Lausana), no sólo han publicado artículos sobre el tema, sino que han colgado dos vídeos explicativos en internet (grabados en 2008):
Creo que las imágenes hablan por sí solas. La captación de las pulsaciones del teclado se puede hacer desde una distancia de 20 metros incluso con paredes interpuestas.
Como hemos apuntado, además de estos medios de obtener información de cualquier usuario, también se pueden captar las imágenes de lo que está haciendo en la pantalla mientras trabaja. Por ejemplo, es posible ver los reflejos de las imágenes de la pantalla que se proyectan sobre determinados objetos (tazas, cristales de las ventanas, las propias gafas de la persona que está trabajando) e incluso, aunque pueda parecer sorprendente, es posible leer la pantalla de un ordenador apuntando un telescopio con una cámara a los ojos del usuario (para ello sería preciso someter la imagen a un proceso de desconvolución).
En definitiva, resulta mucho más difícil protegernos de este tipo de intromisiones que del correo basura, el phishing y los virus. No existen programas para bloquear los canales indirectos.
La escena que se desarrollaba en la novela de Stephenson termina con los protagonistas leyendo lo que Tom Howard estaba escribiendo en su procesador un texto bastante comprometedor:
-¿Significa esto que has ganado la apuesta? –pregunta Randy.-Sólo si puedo descubrir la forma de cobrarla –dice Cantrell.
Más información:
–ClearShot – Eavesdropping on Keyboard Input from Video. David Balzarotti, Marco Cova y Giovanni Vigna en Proceedings of the IEEE Symposium on Security and Privacy, págs. 170-183; 12-22 de mayo de 2008. (artículo completo en mi web).
–Compromising Reflections, or, how to read lcd monitors around the corner. Michael Backes, Markus Dürmuth y Dominique Unruth en Proceedings of the IEEE Symposium on Security and Privacy, págs. 158-169; 12-22 de mayo de 2008. (artículo completo en mi web).