¿Qué es una Mesa Arcoíris?
Las contraseñas en un sistema informático no se almacenan directamente como textos sin formato, sino que se codifican mediante cifrado. Una función hash es una función unidireccional, lo que significa que no se puede descifrar. Cada vez que un usuario ingresa una contraseña, se convierte en un valor hash y se compara con el valor hash ya almacenado. Si los valores coinciden, el usuario se autentica.
Una tabla arcoíris es una base de datos que se utiliza para obtener autenticación al descifrar el hash de la contraseña. Es un diccionario precalculado de contraseñas de texto sin formato y sus valores hash correspondientes que se pueden usar para averiguar qué contraseña de texto sin formato produce un hash en particular. Dado que más de un texto puede producir el mismo hash, no es importante saber cuál era realmente la contraseña original, siempre que produzca el mismo hash.
¿Cómo funciona el Rainbow Table Attack?
Una tabla arcoíris funciona haciendo un criptoanálisis de manera muy rápida y efectiva. A diferencia del ataque de fuerza bruta, que funciona calculando la función hash de cada string presente con ellos, calculando su valor hash y luego comparándolo con el de la computadora, en cada paso. Un ataque de tabla arcoíris elimina esta necesidad al calcular hashes del gran conjunto de strings disponibles. Hay dos pasos principales en esto:
Creación de una tabla
Aquí, se toma el hash de una string y luego se reduce para crear una nueva string, que se reduce nuevamente, repetidamente. Por ejemplo, creemos una tabla de la contraseña más común, 12345678 , usando la función hash MD5 en los primeros 8 caracteres:
- Primero tomamos la string y la pasamos a través de la función hash md5.
hashMD5(12345678) = 25d55ad283aa400af464c76d713c07ad
- Reducimos el hash tomando solo los primeros 8 caracteres. Luego, lo volvemos a triturar.
hashMD5(25d55ad2) = 5c41c6b3958e798662d8853ece970f70
- Esto se repite hasta que haya suficientes hashes en la string de salida. Esto representa una string, que comienza desde el primer texto sin formato y termina en el último hash.
- Después de obtener suficientes strings, las almacenamos en una mesa.
Descifrar la contraseña
Comenzando con el texto cifrado (la contraseña), se verifica si existe en la base de datos. Si es así, vaya al comienzo de la string y comience a generar hash hasta que haya una coincidencia. Tan pronto como se obtiene la coincidencia, el proceso cesa y se descifra la autenticación. El siguiente diagrama de flujo explica los pasos:
Ventajas y desventajas de Rainbow Table Attack
ventajas:
- A diferencia de la fuerza bruta, realizar la función hash no es el problema aquí (ya que todo está precalculado). Con todos los valores ya calculados, se simplifica a una simple operación de búsqueda y comparación en la tabla.
- No es necesario conocer la string de contraseña exacta. Si el hash coincide, no importa si la string no es la contraseña en sí. Será autenticado.
Desventajas:
- Se requiere una gran cantidad de almacenamiento para almacenar tablas.
- Con todos los valores ya calculados, se simplifica a una simple operación de búsqueda y comparación en la tabla.
Defensa contra los ataques de Rainbow Table
Los ataques de la tabla Rainbow se pueden prevenir fácilmente mediante el uso de técnicas de sal , que son datos aleatorios que se pasan a la función hash junto con el texto sin formato. Esto garantiza que cada contraseña tenga un hash único generado y, por lo tanto, se evita el ataque de la tabla arcoíris, que funciona según el principio de que más de un texto puede tener el mismo valor hash.
Otra técnica que ayuda a prevenir los ataques de precálculo es el estiramiento de claves. Con esto, la sal, la contraseña y algunos valores hash intermedios se ejecutan a través de la función hash varias veces para aumentar el tiempo de cálculo necesario para codificar cada contraseña. Un enfoque alternativo, llamado refuerzo de clave, amplía la clave con una sal aleatoria, pero luego (a diferencia del estiramiento de clave) elimina la sal de forma segura. Esto obliga tanto al atacante como a los usuarios legítimos a realizar una búsqueda de fuerza bruta del valor salt. Por lo tanto, no tiene sentido eludir la salazón.