Cómo la NSA consiguió desactivar la criptografía en Internet (primera parte)

Por Arturo Quirantes, el 21 octubre, 2015. Categoría(s): Actualidad • Ingeniería • Matemáticas

NSA Crypto-Backdoor-1024x768

Desde el 11-S, las agencias de espionaje electrónico han pasado a modo descarado. Si hubo un tiempo en que la NSA («No Such Agency«) podía legalmente negar su propia existencia, ahora se dedica a espiar abiertamente al mundo entero sin que se le caiga la cara de vergüenza. «Te espiamos, y si no te parece bien es que quieres que los terroristas ganen» parece ser su nueva divisa.

Los nuevos espías electrónicos actúan como los magos: sabes que están haciendo trampas, pero aun así se guardan sus mejores trucos para que no los conozcas; porque todos sabemos que, cuando conocemos el truco, la magia pierde toda su… magia. Por eso, las revelaciones de Snowden les están haciendo tanto daño. Se están desvelando los mejores trucos de la NSA para mantener al mundo bajo vigilancia. Hace poco, una combinación de relevaciones de Snowden y trabajo académico ha sacado a la luz uno de los mejores trucos de los magos de Fort Meade.

Se trata de este: la criptografía en Internet no te protege. Para nada. Aunque creas que sí.

El tema es particularmente preocupante porque, hasta ahora, los trucos usados por los ciberespías se basaban en aprovechar errores de programación, insertar troyanos, descubrir vulnerabilidades en programas determinados; es decir, en meterse por agujeros ya existentes. Destripar los algoritmos de cifrado para recuperar la clave es algo particularmente difícil, y por eso no se utiliza más que como último recurso. Sin embargo, ahora conocemos que una combinación de vulnerabilidades descubiertas, criptoanálisis y fuerza bruta se han combinado para dar a la NSA las llaves de Internet.

Cada vez que se conecte usted a su banco, su tienda favorita, o en general siempre que entre en uno de esos sitios https y vea el logotipo del candado cerrado creyéndose seguro, recuerde que los datos están siendo enviados a EEUU para los efectos que surtan oportunos; y muy probablemente descifrados con éxito. Y un mensaje especial para los amigos de protegerse mediante redes virtuales: ¡corred, insensatos!

¿Cómo es eso posible? Veámoslo en cómodos pasos.

PASO 1: FREAK (NO FRIQUI)

Érase una vez una época en la que la criptografía fuerte no existía en Internet. El gobierno norteamericano, basándose en tratados gestados durante la Guerra Fría para contener al Pacto de Varsovia, contenía ahora la extensión del cifrado en el nuevo mundo digital. La lógica, por supuesto, consistía en evitar que los enemigos de EEUU pudiesen blindar sus comunicaciones. No fue hasta 1998 cuando los primeros sitios web en España comenzaron a usar cifrado fuerte. En la actualidad, la web segura utiliza claves asimétricas (dentro de la llamada criptografía de clave pública) de al menos 1.024 bits de longitud.

Como sucede en tantas ocasiones, los sistemas nuevos (seguros) y los antiguos (inseguros) tuvieron que convivir durante cierto tiempo, ya que cambiar el tipo de cifrado depende de cada servicio web, no es algo que se rehace totalmente de la noche a la mañana. Eso significa que hubo que mantener la compatibilidad entre ambos sistemas. El ordenador pedía una conexión segura (1.024 bits) o semisegura (512 bits), según las capacidades del servidor. Ahora imagínense que un atacante pudiese «convencer» al servidor del banco, empresa o tienda online para que cambie la conexión de segura a insegura. Eso le permitiría atacar la clave de 512 bits y descifrar la comunicación.

Se supone que la estructura de los protocolos de usados (tales como SSL y TLS) impiden poder hacer tal cosa. Para nuestra desgracia, resulta que sí pueden. En marzo de 2015, un grupo de investigadores descubrió una vulnerabilidad en los programas (clientes) basados en OpenSSL, tal como son usados en entornos Android y Apple.

El ataque, llamado FREAK (Factoring attack on RSA-Export Keys) se lleva a cabo sobre las claves asimétricas del tipo RSA. Se trata de un elegante ataque de intermediario o MITM (Man-In-The-Middle). El cliente, es decir, usted, envía una petición al servidor (el banco) del tipo «hola señor banco, soy yo, quiero una conexión de 1.024 bits.» El intermediario intercepta esa petición y la sustituye por otra que diga «hola señor banco, soy yo, quiero una conexión de 512 bits.» El servidor del banco atiende la petición y comienza una sesión protegida por un cifrado de bajo nivel que puede ser reventada con recursos informáticos fáciles de obtener.

En este caso «fáciles» resulta algo relativo. Descifrar una clave RSA pasa por conseguir la factorización de un número producto de dos factores primos. Si esos primos son grandes los requisitos de cómputo serán tan enormes que, en la práctica, podemos considerar seguro el sistema. Sin embargo, el aumento en la potencia de los ordenadores actuales y el uso de mejores técnicas de factorización hacen que, en la actualidad, sea posible comprometer claves cada vez más grandes. Ya en 2010 un grupo investigador se atrevió con una clave RSA de 768 bits, mucho más difícil. ¿Saben cuánto cuesta factorizar una clave de 512 bits hoy? Usando el servicio de computación EC2 de Amazon, basta con cien dólares y cuatro horas. Factorización como servicio, lo llaman.

Y aquí va lo peor del ataque FREAK: aunque se supone que cada conexión tiene una clave RSA en teoría, lo que hacen los servidores en la práctica es generar una sola clave RSA y usarla para todos los clientes. Es decir, no se trata de que vayan precisamente a por usted, sino que con la misma tacada espían a todos los clientes del sitio web. De repente, todos somos un objetivo desprotegido. Ni siquiera es necesario ver aquí la mano negra de los espías electrónicos, porque el motivo de usar la misma clave es pura y simple comodidad: es más rápido.

Teniendo en cuenta que la NSA es el mayor contratador de matemáticos del mundo, es seguro decir que conocían este truco años antes que los criptoanalistas civiles. Seguro que han puesto las botas, ya que a pesar de los años transcurridos desde la legalización del cifrado fuerte más de la cuarta parte de los servidores http del mundo seguían usando cifrado RSA de 512 bits en marzo de 2015. Hoy, cerca del final de año, la cifra ha caído al 12% pero sigue siendo enorme, y los servidores vulnerables incluyen sitios como Groupon, Airtel India, el MIT, Nissan Japan y el famoso acortador de direcciones tinyurl.com; en España la lista de sitios vulnerables incluye los diarios digitales El Economista y El Diario, la Junta de Andalucía y Correos.

¿Asustado? Pues entonces no siga leyendo.

PASO 2: LOGJAM

Los servidores vulnerables pueden ser reacondicionados y los clientes (nuestros navegadores de Internet) pueden ser parcheados. De todos modos, las claves RSA ya están pasadas de moda. Ahora lo que se lleva es el sistema de intercambio de claves Diffie-Hellman (DH), y su seguridad también se basa en efectuar una serie de operaciones casi imposibles de invertir. RSA se basa es la factorización de números primos. En el caso de DH, se trata de algo distinto, el llamado problema de los logaritmos discretos.

No les explicaré en qué consiste este problema. Lo que sí les diré es que, aunque la base de los algoritmos RSA y DH son diferentes, muchos en la comunidad criptográfica siempre han creído que son matemáticamente similares en cuanto a fortaleza, de modo que si te cargas uno también puedes cargarte el otro. Por supuesto, hay que demostrarlo, y eso es lo que hizo otro equipo de investigadores en mayo de 2015. El nuevo ataque, llamado LOGJAM, hace con el sistema DH lo que FREAK hacía con el RSA.

Los investigadores nuevamente aprovecharon una vulnerabilidad en los protocolos de autenticación de Internet, y nuevamente se debió a la necesidad de permitir conexiones de bajo nivel (512 bits) para sistemas viejos. La genialidad de LOGJAM es que consiguió hacerlo realidad en un tiempo corto. El ataque requiere dos fases. La primera (fase de precomputación) exige un montón de cálculos, pero dependen solamente del número primo p utilizado en el sistema (sí, también DH depende de un número primo, aunque por motivos distintos a RSA) y esta fase puede calcularse de antemano. En la segunda (fase de resolución), solamente hay que lidiar con el número aleatorio usado para una conexión en particular, y eso puede hacerse en apenas un minuto.

Por supuesto, eso es inútil si cada usuario tiene un p distinto, y en teoría así debería ser. En la práctica, adivinen qué pasa: la mayoría de los servicios de Internet usan un número muy limitado de primos p, y los reutilizan una y otra vez. El motivo es el mismo que en el caso RSA: comodidad y rapidez. Eso da lugar a situaciones inquietantes. Para que se hagan una idea, el 82% de los sistemas que usan DH con clave de 512 bits se basan en servidores Apache. ¿Saben cuántos números primos utilizan en total servidores Apache del mundo entero? ¡Uno solo!

Si tomamos el millón de dominios más activos de Internet, un 8% incluye esta vulnerabilidad. Eso significa que más del 7% de toda la Internet actual puede pasar de cifrada a legible sin más que atacar dos claves de 512. Afortunadamente, LOGJAM es relativamente fácil de parchear (los navegadores de Internet más usados ya lo han parcheado), aunque depende de que también los servidores (las webs a las que accedemos) se lo tomen en serio y cierren la vulnerabilidad.

Menos mal que las claves DH de 1.024 bits quedan fuera del alcance de la NSA ¿verdad? ¿Eh? ¿Verdad?

(Continuará…)



Por Arturo Quirantes, publicado el 21 octubre, 2015
Categoría(s): Actualidad • Ingeniería • Matemáticas