Decubiertos fallos en algoritmos en Windows 2000 y XP

Desvelados serios problemas en el algoritmo que genera los números pseudoaleatorios en Windows 2000 y XP.

El pasado día 4 de noviembre, un equipo de investigadores israelíes encabezados por el Dr. Benny Pinkas, de la Universidad de Haifa y estudiantes de la Universidad de Jerusalén, publicaron un análisis criptográfico sobre el algoritmo usado por Microsoft Windows 2000 y XP para generar números aleatorios, el PRNG (Pseudo-Random Number Generator). Descubrieron que contiene serios problemas en su implementación.

Las conclusiones del estudio revelan (entre otros fallos) que es posible, y relativamente sencillo, predecir los resultados previos y futuros del algoritmo a partir del conocimiento de un estado interno del generador, así como las claves de sesión usadas y las que se usarán en un futuro para cifrar información.

Los sistemas de cifrado basados en criptografía asimétrica necesitan del cálculo de números aleatorios para generar claves de sesión, y de la arbitrariedad en general para un buen funcionamiento. De hecho, su seguridad radica en la aleatoriedad real de esos cálculos: cuanta más entropía, más complicado de predecir y más “calidad” del cifrado. El algoritmo es usado, por ejemplo, en cada conexión SSL (conexiones seguras) que se establece entre el navegador y los servidores HTTP, y también el cifrado local de información. De ser explotada esta vulnerabilidad, un atacante podrían llegar a predecir esos números generados, y desvelar los datos cifrados con este protocolo, obteniendo así una información que suele transmitirse cifrada precisamente por su importancia.

Otro problema descubierto además de una aleatoriedad débil, es la forma en la que es aplicada. Después de analizar el algoritmo mediante ingeniería inversa, los investigadores descubrieron que el estado del generador se actualiza cada 128KB de salida. Teniendo en cuenta que una conversación SSL del navegador por ejemplo consume entre 100 y 200 bytes, obteniendo un solo estado se pueden desvelar hasta de 600 a 1.200 conexiones futuras que utilizan la misma clave. Cualquier información cifrada anterior o posteriormente desde esa misma máquina quedaría comprometida si se tiene acceso a ella. Lo que mitiga el problema es que para poder llegar a tener acceso a esa información inicial de la que se deducirían el resto de “estados del algoritmo”, un atacante necesita poder tener acceso como administrador en el sistema. Digamos que para poder aprovechar el problema del algoritmo y poder descifrar la información, necesitaría tener el total control de la máquina para llegar a conocer un estado, con lo que el sistema ya estaría comprometido en sí.

En un principio, se creyó que el fallo sólo afectaba a los equipos con el sistema operativo Windows 2000. Pero días más tarde Microsoft ha reconocido que Windows XP también utiliza el mismo algoritmo. Aunque no así los sistemas equipados con Windows Vista, Server 2003 o Server 2008.

Microsoft no cataloga el fallo en su algoritmo como problema de seguridad y lo ha etiquetado como acceso local a información sensible. Alega que dicha información sólo estaría accesible para el propio usuario que la use o para un administrador con acceso al sistema, que por definición tiene control total de la máquina. Por su parte, los investigadores alegan que el peligro radica en el hecho en que el usuario podría tener acceso a información que no debería ser accesible de ningún modo por nadie, ni siquiera él mismo. En general, para que la vulnerabilidad pueda ser explotada, es necesario combinarla con un ataque previo.

Pinkas y su equipo pusieron sus investigaciones en conocimiento de Microsoft en marzo, y tras hacer público su hallazgo, y a pesar de que sólo ha sido catalogado como bug por parte del fabricante, Microsoft ha reconocido que introducirá una modificación en su generador de números aleatorios en Service Pack 3 para Windows XP, cuyo lanzamiento está previsto para la primera mitad de 2008. Por el contrario, no se ha dado ninguna información sobre si el problema será subsanado próximamente para Windows 2000.

No es la primera vez que se encuentran fallos en algoritmos para generar números pseudoaleatorios. Históricamente la arbitrariedad real ha sido perseguida por los programadores, de ahí que se utilice la palabra “pseudo” y no se hable de aleatoriedad real. Por otro lado, cabe recordar que los propios empleados de Microsoft ya recomendaron en agosto de 2007 una revisión del algoritmo en uno de sus documentos técnicos, titulado “On the Possibility of a Back Door in the NISTSP800-90 Dual Ec Prng”.