jueves, octubre 13, 2016

Cómo la NSA podría haber "troyanizado los números primos" para descifrar tus comunicaciones

Desde que los documentos filtrados por Edward Snowden salieron a la luz el mundo se ha estado haciendo muchas preguntas por los detalles técnicos de cómo lo hacían. Casos como la pertenencia de las principales empresas tecnológicas norteamericanas al programa PRISM, han ido recibiendo respuestas poco a poco después, como el caso de Yahoo! del que ya se sabe que escaneo los correos electrónicos de sus clientes para filtrar datos al gobierno de Estados Unidos, usando una tecnología para escanear el contenido de los mensajes que entran y salen de sus sistemas en tiempo real.

Figura 1: Cómo la NSA podría haber "troyanizados los números
primos" para descifrar tus comunicaciones

Al final, PRISM es un programa fácil de saber cómo lo podrían haber implementado, ya que se basa en forzar a que cada compañía, con el uso de la legislación del Acta de Patriotismo, a cumplir la ley que en Estados Unidos se aprobaron. Son empresas de ese país, que deberían cumplirla.

Figura 2: Diapositiva del programa PRISM

Sin embargo, de todos los programas que salieron a la luz pública, los que tenían que ver con las técnicas de criptografía de las comunicaciones son los que más han llamado la atención de los investigadores. Saber cómo los miembros de la NSA tenían la capacidad de descifrar las comunicaciones por medio del programa TURBULENCE o BULLRUN han tenido a las mentes más prominentes investigando en cuáles podrían ser las puertas que estuvieran utilizando. 
De aquellas investigaciones han salido artículos académicos que explican casos como el descifrado de los datos del iPhone 5C con la técnica de NAND Mirroring o el bug de LogJam, y un buen número de vulnerabilidades explotables en muchos de los sistemas de cifrado utilizados comúnmente. 

Figura 4: Programa BULLRUN de la NSA

Puesto esto en perspectiva, parece que el programa de BULLRUN, incluía una parte en la que la NSA podría estar influyendo en los estándares de cifrado, así como en las implementaciones de los mismos, tal y como recogía en un artículo de hace ya más de tres años que llamé "Cómo la NSA mató el espíritu de Internet".  Los investigadores pusieron los ojos encima de los sistemas de cifrado. Uno tras otro, buscando dónde podrían estar esos fallos, y rápidamente el número de implementaciones fallidas dejó atónito al mundo.

Casos como el GoTo Fail en la verificación de los certificados de iPhone, que llevó después a una reinserción de un algoritmo debilitado en iOS7, o el de GNU/TLS más las sospechas en TrueCrypt sumado al bug de OpenSSH podrían ser la consecuencia de este programa. ¿Cómo podrían tantos sistemas de cifrado tener estos bugs?
El número de vulnerabilidades que han aparecido en productos de seguridad, es alto, y aún así se ven casos que van desde investigaciones que explican como se puede producir el robo de claves de cifrado de GNUPG por medio de técnicas Tempest por la existencia de implementaciones "ruidosas", hasta estudios que demostraron el pasado año que los números primos utilizados en la fase de negociación del algoritmo Diffie-Hellman para el intercambio de claves eran en el 56% de los casos un número de un conjunto de diez, y que en total, analizando los resultados obtenidos solo se utilizaban 68.000 valores distintos del total del conjunto de 1024-bits que podrían usarse.

Figura 6: Resultados empíricos al revisar las negociaciones DH en Alexa Top 1 Millón

Las sospechas llevaban a pensar que, si alguien pudiera incidir en los números primos que se utilizan como base para los algoritmos de generación de números aleatorios, se podría conseguir que esa aleatoriedad no fuera tal y por tanto incidir en el resultado cifrado final del proceso para, en tiempo útil, poder descifrar dicha comunicación. Y este es el estudio que han publicado esta semana pasada los investigadores de las universidades de Pensilvania y Lorraine
En su trabajo se centran en ver cómo si se eligen los parámetros semilla en los algoritmos utilizados en la generación de números primos con alguna singularidad específica se puede llegar a conseguir un sistema que permita calcular en tiempo útil todos los factores posibles y conseguir descifrar la comunicación. Un caso concreto es el uso de los valores por defecto como semilla del algoritmo DUAL_EC DRBG (Dual Elliptic Curve Deterministic Random Bit Generator) que ha sido descubierto ya en el código de uno de los productos de cifrado más populares inyectado por algún atacante con los valores de semilla modificados.

Figura 8: Juniper Networks reconoce que le inyectaron este bug

Con esta inyección, el tiempo de procesado de los cálculos necesarios para descifrar una clave se reduce hasta tiempos de 80 minutos - utilizando hardware dedicado de gran potencia - algo que por supuesto está al alcance de una organización como la NSA.

Figura 9: Tiempo necesario para el experimento

Visto este estudio, sabiendo que el conjunto de números está limitado al conjunto de números primos de 1024-bits, y pudiendo incidir en la semilla de la generación de los mismos para modificar la probabilidad de unos sobre otros aprovechando la dependencia de los algoritmos de aleatorización en parámetros de inicialización que pueden ser configurados, los investigadores determinan que cualquier sistema que utilice claves de 1024-bits está potencialmente expuesto a ser descifrado.

Figura 10: Consideraciones finales del artículo

La conclusión, al final, lleva a pensar en sistemas de 2048 que dificulten el proceso a cualquier sistema que intenten modificar las probabilidades de elección de claves o a realizar una auditoría de las configuraciones de todos los parámetros de configuración de todos los algoritmos usados en la generación de claves, desde los sistemas de elección de números aleatorios hasta los sistemas de generación de números primos, ya que cualquier inyección de un cambio de probabilidades permitiría una reducción del tiempo de procesado de las claves.

Saludos Malignos!

7 comentarios:

faby dijo...

excelente!

Roberto Fock dijo...

Genial articulo.

Jorge Guajardo Medina dijo...

Omaigosh

Jon66 dijo...

Brutal. Gran artículo. Gracias

Alex dijo...

Hará ya unos 15 años leí en Crytogram, el imperdible boletín electrónico que mensualmente edita Bruce Schneier, la entrevista al responsable de una de las principales empresas de cifrado de Estados Unidos.

Comentaba que la exportación de criptografía está prohibida en Estados Unidos, llegándose a considerar exportación de armas, con penas que incluyen la pena de muerte. Pero que el gobierno les dejaba exportar si introducían puertas traseras y bugs en el código.

Por ello dicho entrevistado hacía la reflexión de que cualquier empresa que ya estuviera exportando software de cifrado, lo hacía con puertas traseras.

Comentario a parte, sí, seguro que Gmail, Yahoo, Hotmail y otros espían a los usuarios y dan libre acceso al gobierno de Estados Unidos a las cuentas, mensajes, contactos, redes de confianza, ¿Por qué no iba a ser así? No es ser conspiranoico, sino que pensar lo contrario es ser bastante ingenuo y poco realista.

XaviN dijo...

El rfc 5114 siempre me ha parecido algo sospechoso...

Victor Iglesias dijo...

Hay algo muy básico que no entiendo, ¿cómo con 1024 bits se pueden generar tan sólo 68000 valores distintos? 2^1024 es un valor gigantesco. Según la función de Gauss para los números primos, la cantidad aproximada de números primos en un intervalo de 1 a m sería:

m / (ln(m))

Entonces en nuestro caso sería 2^1024 / ( ln(2^1024) ) y ese valor es enorme. Hay millones de números primos que se pueden representar con 1024 bits, no sólo 68000

Entrada destacada

Infraestructuras Críticas y Sistemas Industriales: Auditorías de Seguridad y Fortificación de @0xWord

Desde hoy está disponible a la venta un nuevo libro de 0xWord centrado en la seguridad de los Sistemas Industriales y las Infraestructuras...

Entradas populares