Destacados

Más
Jueves, 3 de abril, 2008

Criptoanálisis: Las tablas «rainbow»

8 +30K

Las tablas rainbow son una estructura de datos que proveen información acerca de la recuperación de contraseñas generadas con ciertas funciones hash conocidas.

Publicidad

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.

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...).

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.

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.

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.
Comparte este artículo
Sobre el autor de Emezeta

Escrito por , más conocido como Manz. Es Ingeniero-Técnico en Informática de Gestión por la Universidad de La Laguna y residente en Santa Cruz de Tenerife.

8 comentarios de lectores
Jake Jake Viernes, 4 de abril de 2008, 01:44
1
Aunque, si la función hash es buena, es muy poco probable que ocurra, lo cierto es que la identificación no es única, es decir, dos contenidos diferentes pueden generar el mismo hash. Siguen siendo útiles para comprobar errores porque pequeños cambios en el elemento del conjunto de partida producen grandes cambios en el resultado de la función. Modo pedante off. Saludos.
Responder Permalink URL · Mozilla Firefox 2.0.0.13 · Windows XP ·
Kalifer Kalifer Viernes, 4 de abril de 2008, 10:36
2
Alguna vez he intentado petarme una contraseña a lo burro y ya no lo hago más, tarda la puta vida XD.
Responder Permalink URL · Opera 9.27 · Windows XP ·
jesusarmand0 jesusarmand0 Viernes, 20 de febrero de 2009, 14:45
3
Tio, esto no me queda claro: En la parte donde explicas SALT dices que es un grave error el NO AÑADIR SALT al HASH. Pero luego vuelves a hablar de la denominación de SALT en el criptoanálisis, y dices que el agregarle el SALT al HASH puede suponer un problema de seguridad, por el resultado que arroja a usuarios distintos. Aqui es donde me confundo. Y lo último es que al ver la imagen de diferencia entre HASH (con y sin) SALT el SALT esta añadido antes de generar el SALT pero en el texto dice. Que SALT es un fragmento que se le añade al HASHA obtenido. Entonces ¿Dónde debería aparecer el SALT? ¿Antes o después de generar el HASH??? Aclarame estos puntos porfavor sino voy a tener una confusión mas grande de la que ya tengo. Thanks Saludos desde Lima Perú
Responder Permalink Mozilla Firefox 3.0.6 · Windows 2003 Server ·
Manz Manz Viernes, 20 de febrero de 2009, 15:26
4
@jesusarmand0: He modificado el fragmento del texto para no inducir a dudas, quizás la negación hacía que no se entendiese bien. Añadir salt al hash es una característica deseable, lo ideal es que siempre se hiciera, lo que quería decir en ese párrafo es que puede resultar un problema de seguridad no añadir salt. Mas sobre salt en la wikipedia.
Responder Permalink URL · Mozilla Firefox 3.0.6 · Windows Vista ·
jesusarmand0 jesusarmand0 Viernes, 20 de febrero de 2009, 15:41
5
Gracias por la aclaración tío. Si así se corrigiesen y aclarasen las dudas en los medios tradicionales otro sería el mundo. Buenos post tío. Te deseo lo mejor Saludos desde Lima - Perú
Responder Permalink Mozilla Firefox 3.0.6 · Windows 2003 Server ·
exodoeviterno exodoeviterno Viernes, 27 de febrero de 2009, 19:40
6
abra algun programa para extraer los pass de los rar co este metodo
Responder Permalink Opera 9.63 · Linux ·
hacksnake hacksnake Martes, 1 de septiembre de 2009, 23:12
7
quisiera saber si hay tablas rainbow para obtener contraseñas en linux o si existe otra forma para obtener éstas,median te fuerza bruta?????? Mi pregunta se debe a que en mi escuela hay una competencia , donde hay que hackear un servidor pero este es un servidor linux.
Responder Permalink Mozilla Firefox 3.0.13 · Ubuntu Linux ·
ikki ikki Domingo, 3 de octubre de 2010, 08:11
8
el famoso algoritmo hash
Responder Permalink URL · Mozilla Firefox 3.5.13 · Windows XP ·
Publica tu opinión



Acepto las condiciones y políticas de privacidad de este sitio web.
Suscribirme a través de FeedBurner a los nuevos artículos del blog por email.

Previsualización

Aquí se previsualizará su comentario. Revise que sea correcto antes de publicarlo.