Las respuestas hasta ahora no explican satisfactoriamente qué es una mesa arcoiris. No es lo mismo que un diccionario pre-hash; Es mucho más elegante que eso. Permite a los atacantes intercambiar el tiempo de precomputación, el tiempo de cálculo por contraseña, el tamaño del diccionario y el espacio de las contraseñas para buscar.
Imagine que tengo un programa para descifrar contraseñas que tiene un algoritmo predefinido para averiguar qué contraseña adivinar a continuación, e incluso puede saltar a una posición en la lista. Entonces puede pedirle la contraseña # 17453282, y le dirá que adivine “sh0ottheGazebo” o lo que sea. Ahora, como precomputación, haga lo siguiente:
- Elija una contraseña al azar que aún no haya descifrado.
- Hash para obtener un número. Divídalo por el tamaño del diccionario y tome el resto.
- Ejecute el cracker para obtener la contraseña correspondiente a ese número.
- Repita los pasos 2-3, digamos, 100,000 veces.
- Escriba el número final y la contraseña original.
- Repita los pasos 1-5, digamos, 10 mil millones de veces. Esto significa evaluar un billón de hashes, lo que puede llevar mucho tiempo en un clúster grande, pero solo tiene que hacerlo una vez.
Ahora puedes descifrar una contraseña del hash así:
- ¿La equivalencia es computable sobre el conjunto de funciones recursivas primitivas?
- ¿Cuál es una buena explicación del 'método potencial' para el análisis amortizado?
- ¿Cuáles son algunos buenos libros de nivel de entrada para Machine Learning?
- ¿Qué son las computadoras cuánticas y cómo funcionan?
- ¿Cómo fue estudiar informática antes de que fuera 'genial' hacerlo?
- Busque el hash en la mesa. Si está allí, elija la contraseña que inició la cadena.
- De lo contrario, ejecute el hash a través del cracker para obtener una contraseña diferente.
- Hash la contraseña.
- Si el resultado es el hash que estás tratando de romper, ¡ganas! De lo contrario, vaya a 1.
Entonces, si el hash que estás tratando de romper apareció en cualquiera de las cadenas de hash, eventualmente lo encontrarás. Esto requiere hasta 100,000 cálculos de hash y 100,000 búsquedas de tablas. Pero al hacer este trabajo, puede tomar una base de datos de contraseñas de cuatro mil millones de entradas y comprimirla en solo 10 mil millones de entradas, lo que significa que cabe en la RAM en una máquina grande.
Un problema con esta técnica es que la función hash no es unívoca, por lo que las cadenas pueden fusionarse. Para mitigar este problema, una tabla de arco iris hace un cálculo adicional, pero menos búsquedas. Por lo tanto, es eficiente incluso si la base de datos está en el disco. El artículo de Wikipedia (http://en.wikipedia.org/wiki/Rai…) tiene más detalles.