Tanto las tablas hash como las tablas arco iris almacenan valores hash precalculados. Las tablas Rainbow son una potencia de cálculo frente a la compensación de almacenamiento en comparación con las tablas hash. Se utilizan porque las tablas hash pueden crecer mucho, especialmente porque ha mejorado el rendimiento del hardware de craqueo. Puedes forzar más combinaciones, pero ahora necesitas almacenar más.
¿De cuánto espacio estamos hablando? Existen listas de contraseñas comunes (tomadas de piratas anteriores) con decenas de millones de contraseñas conocidas y es ahí donde suelen comenzar los crackers. Esto puede complementarse con cientos de millones de permutaciones de esas contraseñas débiles (si alguien usó password1111, otra persona probablemente usó password2222). Luego, por último, para completar las brechas se pueden completar con una búsqueda exhaustiva de todas las combinaciones posibles de contraseñas hasta una cierta longitud. Tome mil millones de contraseñas, con una longitud promedio de 8 caracteres y un hash de 32 bytes. Eso es 40 GB de espacio de almacenamiento para almacenar la tabla hash.
Una tabla de arco iris es una forma de almacenar la misma información usando menos espacio. No hay almuerzo gratis, aunque en la informática siempre puedes intercambiar almacenamiento por potencia informática y eso es lo que estás haciendo. Para construir una tabla de arco iris, primero se construye una tabla hash tradicional. A partir de esos valores de hash, se construye una cadena de hash utilizando funciones de hashing y reducción alternas. La función de reducción asigna los hashes a diferentes contraseñas en la lista. La longitud de la cadena determina la cantidad de compensación que se usa (más = más espacio ahorrado pero más trabajo para realizar una búsqueda).
Sólo se guardan el inicio y el final de la cadena y el resto se descarta, por lo que la mesa final es mucho más pequeña. La localización de una coincidencia ahora requiere múltiples búsquedas, lo que significa que lleva más tiempo que una tabla hash.
- Tanto las tablas hash como las tablas arco iris se utilizan para guardar los resultados de un ataque de precomputación.
- Las búsquedas en una tabla de arco iris son más lentas *, pero requieren menos espacio para almacenar los resultados precalculados de un número dado de contraseñas.
- Las búsquedas en una tabla hash son más rápidas *, pero requieren más espacio para almacenar los resultados precalculados de un número dado de contraseñas.
- Tanto las tablas hash como las tablas arcoiris son igualmente derrotadas y totalmente usando una sal pseudo-aleatoria por registro.
* Esto supone un tiempo de respuesta de hardware igual, lo que puede no ser el caso (es decir, la tabla de arco iris puede caber en la memoria principal pero la tabla hash requiere una lectura de un disco más lento porque es demasiado grande para caber en la memoria principal).