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

NSA snowden

(continuación de la primera parte)

PASO 3: ATACANDO LOS 1.024 BITS

Desde hace años se especula con cuál es el tamaño mínimo de clave capaz de resistir los esfuerzos computacionales más fuertes. Hay que tener en cuenta especialmente a la NSA, que cuenta con recursos informáticos, matemáticos y presupuestarios casi ilimitados. ¿Cuánto es suficiente frente a tan imponente adversario? Y en un tono menos peliculero, ¿cuánto es suficiente para protegernos contra un enemigo organizado como una mafia de ladrones de bancos? Nos referimos aquí a la longitud de las claves asimétricas, como la RSA o la DH.

Ha habido opiniones para todos los gustos. Vea, por ejemplo, aquí y aquí, donde este que firma propugnaba en 2000 un límite mínimo de 1.866 bits para 2015. Otras recomendaciones de expertos en el campo, hechas entre 2004 y 2007, sugieren claves de al menos 2.048 bits. En la actualidad se considera que las claves de 1.024 ya son pequeñas. Con todo, nadie ha conseguido atacar con éxito una clave de 1.024 bits (que sepamos), de modo que gran cantidad de sitios web la siguen utilizando.

Ahora, las malas noticias. El mismo grupo que ideó el ataque LOGJAM hizo algunas predicciones sobre la posibilidad de romper una clave de 1.024 bits. Sería todo un reto, pero si como en el caso de LOGJAM hubiese pocos primos protegiendo las comunicaciones de Internet, el esfuerzo masivo de precomputación valdría la pena a un atacante avanzado.

¿Está una clave de 1.024 bits al alcance de la NSA? Recordemos que esta gente no mide sus ordenadores en flops sino en hectáreas. Los autores de LOGJAM hicieron algunos números, tomando como base sus propios esfuerzos para romper claves de 512 bits y los requeridos para romper la mayor clave DH reventada hasta la fecha (596 bits). En este último caso, el esfuerzo computacional fue equivalente a 50 años-núcleo (es decir, un ordenador de un solo núcleo funcionando durante 50 años; o uno de 100 núcleos durante 180 días). Una clave DH de 768 bits exige más de 36.500 núcleos-año.

¿Y una de 1.024 bits? Aunque extrapolar se hace difícil a estos tamaños, los autores dan las siguiente cifras: 45.000.000 de años-núcleo para la fase de precomputación y unos 30 días-núcleo para la fase de resolución. ¿Precio? Once mil millones de dólares con CPUs disponibles en la actualidad para reventar una clave de 1.024 bits en un año. Hasta el dueño de Zara podría permitirse una (media docena, en realidad). Y si en lugar de procesadores comerciales se utilizan chips específicos (ASIC), el precio podría bajar hasta los 100 millones.

La inversión es inmensa, y eso para una sola clave, pero nuevamente los espías se verán favorecidos por la extraordinaria vagancia que parecen tener los servicios de Internet a calcular números primos. Entre el millón de páginas web seguras (https) más visitadas, nada menos que un 18% utilizan el mismo número primo. El porcentaje es muy superior en el caso de las redes privadas virtuales (VPN), que utilizan el protocolo IKE: el 66% de ellas comparten el mismo número. Es decir, la NSA se lo tiene que currar durante un par de años (o menos, según su presupuesto) para espiar un quinto de las comunicaciones seguras de Internet ¡y dos tercios de las de redes privadas virtuales! Del correo electrónico supuestamente seguro, mejor ni hablemos.

Pero todo esto es conspiranoia de sillón. ¿O no?

PASO 4: LA NSA EN ACCIÓN

Ataques como los descritos anteriormente son, cuando menos, teóricos, y por supuesto la NSA no va a reconocer que los llevan a cabo. De ser así, no habría mas. Pero hay más. Las revelaciones de Edward Snowden son, en opinión de los expertos, compatibles con un esfuerzo masivo de descifrado tipo “LOGJAM con esteroides.” Una de las afirmaciones de Snowden es que la NSA puede derrotar protocolos como https y VPN de forma casi rutinaria.

No es el primero que sugiere algo así. En 2012 James Bamford, autor de libros sobre el funcionamiento de la NSA, afirmó que el gigantesco “centro de datos” que la agencia estaba construyendo en Utah a un coste de 2.000 millones de dólares (más 40 millones al año sólo en electricidad) es una instalación crítica para romper códigos, basada en un “enorme descubrimiento” que la NSA había realizado años antes en el campo del criptoanálisis y que le permitiría espiar todo tipo de comunicaciones cifrado mediante criptografía de clave pública.

Una copia clasificada del presupuesto oculto de la NSA para 2013, filtrada al público, indica que la agencia da alta prioridad a desarrollar “capacidades criptoanalíticas innovadoras [groundbreaking] para derrotar los sistemas criptográficos adversarios y explotar el tráfico en Internet.” Destacan dos programas con fuerte incremento presupuestario: “servicios criptoanalíticos de TI,” con 100 millones de dólares más de presupuesto, y algo llamado “programa C de criptoanálisis y explotación” que tiene asignados 360 millones de dólares, cuatro veces más que en 2011.

También hay detalles técnicos que apuntan en la dirección de un gran LOGJAM a escala gubernamental. Algunos de los documentos de Snowden muestran que las comunicaciones en los servicios de redes privadas virtuales (VPN) se consiguen de la siguiente forma: primero se intercepta la conexión cifrada, luego se envían algunos datos a los superordenadores, y éstos devuelven la clave al sistema que descifrará la comunicación.

¿Por qué este esquema tiene sentido? Pues porque si la NSA ha tenido éxito en el enorme esfuerzo computacional que requiere la fase de precomputación, el resultado no lo va a sacar de sus centros protegidos. La llave maestra no sale de casa. En su lugar, la información capturada se lleva al centro de datos, allí se efectúa la fase de resolución y se obtiene la clave para descifrar las comunicaciones VPN.

Visto lo visto, no me extraña que el gobierno norteamericano esté tan cabreado con el caso Snowden. Sus revelaciones hacen daño donde más duelen, ya que no solamente explica que Estados Unidos espía al mundo sino que detalla cómo lo hace, y eso permite pensar en contramedidas. Basta con cambiar un par de claves DH para que ese gigantesco esfuerzo en Utah resulte inútil. Sí, en la NSA deben estar realmente cabreados. Y también en su equivalente británico el GCHQ, que esa gente se lo comparte casi todo.

PASO 4: ¿AHORA QUÉ HACEMOS?

Si lo que he descrito hasta ahora es cierto (y todo parece indicar que así es), la teoría conspiranoica según la cuál todos somos objetivos para la NSA ya no es teoría. En realidad, llevamos décadas oyendo estas historias por boca de ex-empleados de la agencia, de profesionales del ramo, de escritores y periodistas. Yo podría recordárselas pero no quiero sonar a abuelo Cebolleta (cof, cof). Bástele, lector, con que tenga en cuenta que el peligro existe. Y es real. Y no estará siempre confinado a las agencias de inteligencia con tres letras. ¿Qué pasará si los grupos mafiosos organizados llegan un día al mismo nivel, sea mediante presupuesto o por simple Ley de Moore?

En el caso de la amenaza que nos ocupa, hay contramedidas que se pueden tomar. Algunas de estas opciones son sencillas. Otras requieren la participación de grandes empresas. He aquí algunas de las más efectivas:

Aumentar el tamaño mínimo de clave. A partir de ahora, 2.048 bits mínimo. Los servidores deben exigir ese tamaño, así como nuestros programas cliente (navegadores). Quien se aferre a claves más pequeñas que se actualice o calle para siempre. En conexión con esto:

Desactivar las opciones de cifrado. Ya no estamos en los noventa.

Usar otros tipos de cifrado. Se está hablando de sistemas de criptografía de curva elíptica como sustituto de la criptografía de clave pública basada en sistemas RSA o DH. Es más efectiva (claves más cortas y cálculos más rápidos para su uso).

No reutilizar las claves. Si los BOFHs pueden hacer algo por la seguridad en Internet, es eso. Nada de aprovechar la misma clave una y otra vez. En caso extremo, si hay que reutilizarlas, no uséis la misma siempre. Molestaros en crear diez, o mil, o un millón. La CPU es barata.

La moraleja es: no debemos confirmar ciegamente en la criptografía. Aunque es nuestra mejor opción para protegernos, no es un polvo mágico que se extiende y ya está. Por supuesto, todo eso es inútil en una sociedad que no valora su privacidad. ¿Que usted sí lo hace, me está diciendo? Claro. Ahora vaya a ver lo que su perfil de Facebook le dice al mundo, vea cuántas conexiones abiertas tiene su móvil, haga memoria de cuántas veces ha rellenado cupones para dar sus datos personales a cambio de la posibilidad de ganar un premio que nunca llega… y deje de considerar Gran Hermano como un referente social digno de atención. Hala, ya lo he dicho.


16 Comentarios

Participa Suscríbete

José Andrés

Y al igual que los 1.024 bits ¿los 2.048 bits no se quedarán cortos algún día? No sería más interesante usar otro tipo de cifrado como el sistemas de criptografía de curva elíptica que citas?

Un saludo.

x

Una cosa no me queda clara: si el 18% de páginas usan el mismo número primo … cada una de ellas puede espiar al otro 18%? no le veo sentido.

A menos que hable de una página concreta (llamémosle G) que implica al 18% de las visitas de Internet.

Generar el mismo número primo solo creo que sea posible si hay un defecto en los generadores actuales en la implementación o si se ha metido alguna puerta trasera en proyectos open source.

En cualquier caso buen árticulo.

Arturo Quirantes

No, no pueden. Podrá hacerlo quien consiga reunir los recursos informáticos masivos necesarios para descifrar la clave mediante fuerza bruta. Es decir, la NSA. Resulta que ese 18% de servidores utiliza el mismo número primo porque les resulta más cómodo usar uno ya precalculado que generar uno propio.

antonioantonio

Otra cosa es que si quieres seguridad, puedes poner 39 cerraduras en tu puerta, pero claro tendrás que ir con 39 llaves en el bolsillo, tendrás que abrir 39 cerraduras cada vez que habrás y cierres la puerta, y como pierdas una llave ya no entras, no es algo muy cómodo. Pero esto es así, en política se puede decir que no eres ni de izquierdas ni de derechas, pero en la vida real no se puede tener todo a la vez, o tienes seguridad o tienes comodidad, las dos cosas no es posible.
Un sistema seguro no es cómodo ni amigable, tampoco es agradable tener que prescindir de la tarjeta de crédito, de todas las redes sociales donde tienes que loguearte, del movil y del android… La tecnología está ahí y funciona, pero no somos ascetas para llevar una vida de ascetas en lo digital.

SopotaSopota

El problema nada tiene que ver con un sistema de seguridad excesivamente sencillo, de hecho los mejores sistemas de seguridad son los que tienen un funcionamiento simple (a los usuarios no les da alergia usarlos), pero que a nivel interno están bien implementados.

Recientemente he migrado todos los servidores con los que trabajo a Elipitic DH (compruebo la seguridad cada 6 meses), y no es en absoluto complicado, el único precio a pagar es que gente con navegadores tremendamente desfasados no pueda acceder a tu web, como Internet Explorer 6, Firefox 1.5 y por el estilo.

El verdadero desafío, como siempre, es vencer la desidia de los departamentos de TI y la ausencia de recursos básicos que muchas veces no proporcionan los de dirección. El artículo en su última parte acierta de pleno, a la sociedad simplemente no le importa su privacidad.

antonioantonio

Más que un sistema sencillo, me refería a un sistema cómodo. El ejemplo de las llaves es un sistema sencillo, pero en este caso redundante, el mismo sistema 39 veces y esto lo hace muy incómodo.
Lo que quería decir, es que las soluciones tecnológicas existen, pero quizás no sean lo suficientemente cómodas para el usuario medio.
Es como pagar en efectivo, el pago queda registrado solo entre el vendedor y tú, en cambio si pagas con tarjeta, hay terceras partes que registran ese pago, incluso pueden saber donde te encuentras, etc. Pagar siempre en efectivo es más efectivo en términos de privacidad pero no es tan cómodo como pagar con la tarjeta.

IvanIvan

Cambiar de método no sirve de nada. La única manera efectiva de atacar RSA es un man in the middle, y si el transporte de la clave se hace de forma segura, es decir, físicamente, y no online, la complejidad computacional del fuerza bruta es exponencial a medida que se incrementa el tamaño de la.clave. Yo uso claves de 4KB, que hacen que mis comunicaciones sean seguras y estoy muy tranquilo con la NSA.

JorgeJorge

Eso es así, salvo que los matemáticos que trabajan en la NSA hayan descubierto un algoritmo para factorizar mucho más rápido que no han hecho público. Por ejemplo. Y no es algo imposible.

Como dice Arturo, la NSA contrata a montones de mátemáticos, y no lo hace para que jueguen al ajedrez, sino para que investiguen.

Y después está el tema de la computación cuántica. Realmente no sabemos si disponen de algún desarrollo por esta vía. Pero tampoco lo necesitan de momento, por lo que parece.

Al final, el único sistema totalmente seguro es la libreta de un solo uso (versión informatizada, por comodidad). Si se hace bien, claro. Números verdaderamente aleatorios, sin patrones de ningún tipo, sin repetir JAMÁS un listado de números, y por supuesto sin que nadie consiga el listado.
Se sigue usando por buenos motivos. Si yo fuese un tipo chungo es el tipo de codificación que usaría para la comunicación crítica.

MiguelonMiguelon

Hola, tengo una pregunta simple de neófito en el tema.
¿Alguien me podría explicar cuál es el número mínimo de caracteres para conseguir una clave de 2048 bits?¿depende del usuario o del sitio que las administra?
Gracias

Luis AlbertoLuis Alberto

No entiendo muy bien tu pregunta. Si lo que quieres decir es cuántos caracteres son 2048 bits, tienes que pensar que 8bits=1byte y que 1 caracter es un byte, luego 2048 bits son 256 caracteres. Si lo que quieres es generar una clave privada para tu servidor que sea de 2048 bits para dar servicio SSL/TLS por ejemplo, puedes usar OpenSSL y éste te generará un par de clave privada y clave pública para poder hacerlo. Lo que puedes hacer en tu navegador es que no acepte conexiones TLS (por supuesto SSL tampoco) con cifrados inferiores a los 2048 bits pero ya te digo que eso hará que no te funcionen muuuuuuchas páginas.

MiguelonMiguelon

Vaaaya. Veo que se toma muy poco en serio esto de la seguridad…
La longitud del cifrado depende entonces del sistema que haya en el servidor donde esta alojada la página ¿no?
Pensaba que, por ejemplo, al rellenar un formulario para darme de alta en cualquier sitio, el elegir la longitud de “mi clave” 8 caracteres alfanuméricos frente a 4, hacía una encriptación mas robusta y que eso se traducía en una mayor seguridad (mas bits encriptados), y que depende de mi cómo usuario.
Hay formularios en los que no de dejan establecer claves con menos de 8 caracteres, por ejemplo.

Luis AlbertoLuis Alberto

Aquí estás mezclando churras y merinas. De lo que habla este artículo es del cifrado de las comunicaciones, que no tiene nada que ver con la clave que uses tú para acceder a Facebook, Gmail, Hacienda,…
Vamos por partes. Cuando te conectas a una página web vía https lo que ocurre bajo el capó y que tú no ves es que la página y tu navegador negocian una conexión segura. Esto sucede más o menos así (tendrás que disculpar el uso de anglicismos pero no estoy seguro de los términos correctos en español):
1. El navegador le dice al servidor “¡Eh fino! Querría conectarme seguramente y aquí tienes una lista de los cifrados que estoy dispuesto a usar”.
2. El servidor responde: “¡Claro chulo! Vamos a usar este algoritmo. Además he comprobado que puedo utilizar tu versión de TLS así que vamos bien. Te envío mi certificado, incluyendo mi clave pública”.
3. El cliente recibe y comprueba el certificado y utiliza la clave pública para cifrar lo que se conoce como una “pre-master key” (clave pre-maestra) que envía al servidor.
4. El servidor utiliza su clave privada para descifrar el mensaje del cliente. Ahora ambos utilizan esa “pre-master key” para computar una clave secreta compartida, lo que se conoce como “shared secret” (secreto compartido).
5. El cliente le manda un mensaje de test al servidor para que éste compruebe si el cifrado se ha establecido correctamente y le dice que de ahora en adelante utilizará el “secreto compartido” para cifrar sus comunicaciones.
6. El servidor responde con otro mensaje de test para que el cliente compruebe que ha establecido correctamente el canal seguro y le informa de que él también cifrará las conexiones con el secreto que comparten.
El problema de este método viene cuando los algoritmos de comunicación que se acuerdan no son seguros que es lo que hacen ataques como FREAK o LOGJAM.
Por otro lado, tienes las funciones de “hashing” que es lo que se utiliza para guardar las contraseñas de las páginas web. Estas funciones (como son el MD5, SHA-1, SHA-256,…) lo que hacen es crear una cadena caracteres de longitud fija a partir de una clave y que no es reversible: es decir, computacionalmente es sencillo llegar de la clave al hash pero es imposible partiendo del hash obtener la clave original (lo que se conoce como “one-way functions”). Cuando un sitio web se toma la seguridad mínimamente en serio, almacena las claves no por lo que son (pepito123) sino por el hash que producen (f4d3cbd56691bd8f58a397edd189053a). Esto permite que en caso de que se vulnere la seguridad, los passwords originales no sean tan sencillos de obtener.
Para atacar estos algoritmos se utilizan principalmente 2 métodos: las colisiones y la fuerza bruta. Las colisiones consisten en que dos valores distintos tengan el mismo hash. La incidencia de esto no es muy importante, excepto si se descubre un método para generarlas. Lo que suele ser lo normal es que se use la fuerza bruta para “reventar” los hashes. Esto se hace o a las bravas, probando directamente todas las combinaciones de mayúsculas, minúsculas, números y otros caracteres que, como imaginarás no es un método muy eficiente; o utilizando diccionarios que no son más que colecciones de palabras o frases que se pasan por el algoritmo (recuerda que ir de clave a hash suele ser un proceso muy rápido) y se compara el resultado con el hash que se busca romper. Por eso la seguridad es mayor cuando se utilizan muchos caracteres, números y símbolos y cuanto más se parezcan a algo aleatorio mejor (siempre será más fácil que te saquen la clave si usas passwords comunes como “123456” o “password” pero casi imposible si usas “efpiub_#@rbpvubwp9f82h’gfh¿?¿12eh4g48{}” o algo similar). De ahí que en algunas páginas te obliguen a usar por lo menos 8 caracteres o incluso a usar una mayúscula y un número, lo que hace que la fuerza bruta sea menos probable que funcione.

Deja un comentario

Tu email nunca será mostrado o compartido. No olvides rellenar los campos obligatorios.

Obligatorio
Obligatorio
Obligatorio

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>