cryptography saltedhash rainbowattack

cryptography - ¿Qué es exactamente un ataque de arco iris?



saltedhash rainbowattack (7)

Estaba leyendo algunos artículos sobre sales y hashes de contraseñas y algunas personas mencionaron ataques de arcoíris. ¿Qué es exactamente un ataque de arcoíris y cuáles son los mejores métodos para prevenirlo?


Es cuando alguien usa una tabla Rainbow para descifrar las contraseñas.

Si te preocupa esto, debes usar Salt . También hay una pregunta de Stack Overlow que podría ayudarte a entender la sal un poco mejor que Wikipedia ...



Hablando en términos generales, encriptas una gran cantidad de posibles cadenas cortas de texto plano (es decir, para contraseñas) y almacenas los valores encriptados junto con el texto plano. Esto hace que (relativamente) sencillo buscar simplemente el texto sin formato cuando tiene el valor encriptado.

Esto es más útil para hashes de contraseñas débiles y / o sin sal. Un ejemplo popular es el hash LAN Manager , utilizado por versiones de Windows hasta XP para almacenar contraseñas de usuario.

Tenga en cuenta que una tabla de arcoiris pre calculada incluso para algo tan simple como el hash LM requiere mucho tiempo de CPU para generar y ocupa una buena cantidad de espacio (del orden de 10s de gigabytes IIRC).


Rainbow Tables básicamente permite que alguien almacene un gran número de hashes precalculados de manera factible.

Esto facilita descifrar sus contraseñas hash, ya que en lugar de realizar un montón de funciones hash, el trabajo ya se ha realizado y prácticamente solo tienen que hacer una búsqueda en la base de datos.

La mejor protección contra este tipo de ataque es usar una sal (caracteres aleatorios) en su contraseña. es decir, en lugar de almacenar md5 (contraseña), almacenar md5 (contraseña + sal), o incluso mejor md5 (salt + md5 (contraseña)).

Dado que incluso con tablas de arcoiris, será casi imposible almacenar todos los hashes salados posibles.

Por cierto, obviamente tienes que almacenar tu sal con tu hash para que puedas autenticar al usuario.


Tarde en la fiesta, pero también sabía que Rainbow Tables era un método de ataque contra contraseñas hash / sin sal. Sin embargo, en Twitter recientemente se compartió http://codahale.com/how-to-safely-store-a-password/ y, dependiendo de sus necesidades e inquietudes, es posible que no pueda acceder al almacenamiento seguro de contraseñas.

Espero que esto sea informativo para ti.



El artículo de wikipedia es un poco difícil de entender. En pocas palabras, puede pensar en una Tabla Arcoiris como un gran diccionario con hashes precalculados y las contraseñas desde las cuales se calcularon.

La diferencia entre Rainbow Tables y otros diccionarios radica simplemente en el método de almacenamiento de las entradas. La tabla Rainbow está optimizada para hashes y contraseñas, y de este modo logra una gran optimización del espacio mientras mantiene una buena velocidad de búsqueda. Pero, en esencia, es solo un diccionario.

Cuando un atacante le roba una larga lista de hashes de contraseñas, puede verificar rápidamente si alguno de ellos está en la tabla Rainbow. Para aquellos que sí lo son, Rainbow Table también contendrá la cadena de la que fueron extraídos.

Por supuesto, hay demasiados hash para almacenarlos todos en una tabla Rainbow. Entonces, si un hash no está en la tabla en particular, el hacker no tiene suerte. Pero si sus usuarios usan palabras simples en inglés y las ha procesado solo una vez, existe una gran posibilidad de que una buena tabla Rainbow contenga la contraseña.