Comprender los Principios de las Tablas Rainbow
En este paso, profundizaremos en los principios fundamentales de las Tablas Rainbow. Una Tabla Rainbow es una tabla precalculada utilizada para invertir funciones hash criptográficas, generalmente para descifrar hashes de contraseñas. En lugar de probar todas las contraseñas posibles (fuerza bruta) o todas las palabras de un diccionario, una Tabla Rainbow almacena cadenas precalculadas de valores hash y sus correspondientes valores en texto plano.
La idea fundamental es intercambiar tiempo de cómputo por espacio de almacenamiento. Cuando un sistema almacena contraseñas, típicamente almacena sus valores hash, no las contraseñas en texto plano en sí. Por ejemplo, si tu contraseña es password123, el sistema podría almacenar su hash MD5, que es 4d7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e. Cuando intentas iniciar sesión, la contraseña que ingresas se hashea y ese hash se compara con el hash almacenado.
Una Tabla Rainbow funciona creando largas "cadenas" de hashes y valores en texto plano. Comienza con un texto plano, lo hashea, luego aplica una "función de reducción" al hash para obtener otro texto plano, hashea ese, y así sucesivamente. Solo se almacenan en la tabla los puntos de inicio y fin de estas cadenas.
Consideremos un ejemplo simplificado:
- Comienza con un texto plano
P1.
- Hashea
P1 para obtener H1.
- Aplica una función de reducción
R a H1 para obtener P2.
- Hashea
P2 para obtener H2.
- Aplica
R a H2 para obtener P3.
...y así sucesivamente, para una longitud de cadena predefinida.
Cuando tienes un hash objetivo HT que deseas descifrar, aplicas la función de reducción R a HT para obtener un texto plano potencial P_temp. Luego hasheas P_temp y aplicas R nuevamente, repitiendo este proceso hasta que generas un hash que coincide con uno de los puntos finales almacenados en tu Tabla Rainbow. Si se encuentra una coincidencia, recuperas el punto de inicio correspondiente de la tabla y regeneras la cadena desde ese punto de inicio hasta que encuentras el texto plano que produjo el hash objetivo HT.
Este método reduce significativamente la cantidad de cómputo necesario en el momento del descifrado, ya que la mayor parte del trabajo pesado (hashear y reducir) se realiza de antemano durante la fase de generación de la tabla.
Para confirmar tu comprensión, considera el compromiso involucrado en el uso de Tablas Rainbow.