Emezeta.com

Criptoanálisis: Las tablas «rainbow»


Uno de los métodos más conocidos (y menos efectivo) para recuperar una contraseña es la denominada fuerza bruta. Este método, realiza una comprobación una a una de todas las claves posibles, lo que por norma general (dependiendo de lo bien elegida que esté la contraseña) hace que el proceso tarde demasiado.

key llave lock candado

Es por esto que siempre se insiste en utilizar letras mayúsculas y minúsculas, cifras y letras, y una longitud de más de 11 carácteres, como mínimo. Por ejemplo, una contraseña con sólo letras minúsculas se tardaría aproximadamente 2.42 días en averiguarse.

Funciones hash


Antes de continuar debemos saber que una función hash no es más que un sistema para obtener una «secuencia» (una cadena de carácteres, un conjunto de números...) que representará de manera única una entidad (un archivo, un documento...).

hash file md5 sha iso mp3 doc funcion

Así pues, se suele utilizar algoritmos de hash como MD5 o SHA para comprobar la integridad de un fichero.

Por ejemplo, imaginemos una imagen ISO que, al descargarla desde Internet, podemos generar un hash SHA de dicho fichero.

Si la secuencia es exactamente igual a la secuencia que el autor colgó en su página en un fichero de texto, significa que la imagen se ha descargado de internet correctamente.

Por el contrario, si son distintas, significa que la imagen ISO descargada es diferente a la original (errores en la descarga, corrupción de datos, etc...).

Salt


Este tipo de algoritmos hash es frecuentemente utilizado en la generación de contraseñas, con un grave error cometido en muchas ocasiones: no añadir «sal» (salt) al hash.

salt key claves sal keys

En criptoanálisis se denomina «salt» a un fragmento aleatorio (carácteres, números...) que se le añade al hash obtenido, para conseguir que si dos usuarios generan una misma contraseña, su hash no sea idéntico (si fuera idéntico, podría suponer un problema de seguridad).

Tablas Rainbow


Las tablas rainbow son una estructura de datos (mapas o arrays asociativos, veáse en forma de tabla) que proveen información acerca de la recuperación de contraseñas en texto plano generadas con ciertas funciones hash conocidas.

rainbow arco iris arcoiris

En esta estrategia de recuperación se sacrifica el espacio en disco duro y memoria a cambio del coste de velocidad (tiempo de ejecución).

Así pues, existen varias tablas rainbow para cada algoritmos (generalmente gigantes, pueden ocupar hasta 40 gigas o más) previamente computadas, y que se utilizan de apoyo para realizar la fuerza bruta de una manera más eficiente y mucho más rápida, reduciendo el tiempo de ejecución considerablemente.

Prevención


Se comenta que una buena táctica para evitar este tipo de ataques es utilizar carácteres de espacio (ASCII 32) en las contraseñas, y evidentemente, utilizar sistemas que añadan «salt» a los hashes. Además, hay muchas otras recomendaciones para elegir tu contraseña.

Enlaces


Algunos enlaces interesantes sobre el tema:

  • RainbowCrack: Proyecto de implementación de tablas rainbow para algoritmos como LM, MD5, SHA1 y otros. Contiene un parche para añadir soporte para los algoritmos NTLM, MD2, MD4 y RIPEMD160. Desarrollado por Philippe Oechslin.
  • OphCrack: Implementación multiplataforma (Windows, Linux y Mac) para el uso de tablas rainbow. Incluye también un LiveCD (basado en Slax) con herramientas útiles.
  • Rainbow Tables SHMoo: Más información y datos acerca de las tablas rainbow, incluyendo algunos torrents para descargar alguna de estas tablas.
  • How rainbow tables work: ¿Cómo funcionan las tablas rainbow? Documentación en inglés, acerca de esta estrategia.
  • Free Rainbow Tables: Más tablas rainbow para determinados algoritmos.