Ataques de tablas arcoíris - Descifrado de contraseñas hasheadas
Lectura de 2 min aprox.
Una tabla arcoíris (rainbow table) es una tabla precalculada que se utiliza para invertir la búsqueda de la contraseña original a partir de un valor hash. Al crear de antemano una tabla de correspondencia entre una gran cantidad de contraseñas y sus valores hash, se puede identificar rápidamente la contraseña original cotejándola con un hash filtrado. Es un método de ataque eficiente que aprovecha el equilibrio entre tiempo y espacio, y a fecha de 2025 sigue siendo una amenaza vigente contra los sistemas que usan hashes rápidos como MD5 o SHA-1.
El esquema de almacenamiento determina el daño tras una filtración
La filtración de valores hash no contiene en sí misma las contraseñas en texto claro. Sin embargo, si las contraseñas se almacenaron con una función hash rápida y sin sal, el simple cotejo con una tabla precalculada devuelve muchos de esos hashes a texto claro en poco tiempo. Aunque el hecho de la filtración sea el mismo, la magnitud del daño resultante ya quedó determinada por la elección del esquema de almacenamiento. Además, corregir el esquema de almacenamiento después de una filtración no surte efecto sobre los valores hash que ya salieron de la organización. Los hashes solo pueden regenerarse en la base de datos que permanece en las propias manos; la copia que está en manos del atacante conserva el esquema antiguo. Por eso el esquema de almacenamiento de contraseñas es la capa que fija el límite superior del daño cuando no se puede impedir la intrusión, y es la parte que no puede compensarse con una respuesta posterior. En este sentido, su papel difiere del de los mecanismos que actúan a posteriori, como la detección de intrusiones o los procedimientos de divulgación.
Cómo funcionan las tablas arcoíris
Cómo funcionan las tablas arcoíris y ejemplos numéricos
Una tabla arcoíris almacena cadenas creadas aplicando alternadamente una función de reducción y una función hash. Una tabla arcoíris MD5 para una contraseña de 8 caracteres de letras minúsculas y dígitos (unas 2,8 billones de combinaciones) se puede construir con unos 460 GB, y el descifrado se completa en cuestión de minutos. Por otro lado, para una contraseña de 12 caracteres con letras mayúsculas y minúsculas, dígitos y símbolos, el tamaño de la tabla se dispara a cientos de petabytes, lo que la hace prácticamente imposible de construir. Es decir, basta con aumentar la longitud y la variedad de caracteres de la contraseña para que la eficacia de un ataque con tabla arcoíris disminuya drásticamente.
Contramedidas frente a las tablas arcoíris
La contramedida más eficaz es añadir una sal (datos aleatorios) a la contraseña antes de aplicarle el hash. Cuando se añade una sal, incluso contraseñas idénticas generan valores hash distintos para cada usuario, lo que inutiliza las tablas precalculadas. En el almacenamiento moderno de contraseñas, los algoritmos de hash como bcrypt y Argon2, que añaden una sal automáticamente y permiten ajustar el coste de cálculo, son el estándar. Los desarrolladores de servicios no deben usar hashes rápidos como MD5 o SHA-1 para almacenar contraseñas.
Defensas del lado del usuario
Una contraseña aleatoria de 16 caracteres o más tiene una probabilidad astronómicamente baja de estar incluida en una tabla arcoíris, lo que le otorga una gran resistencia frente a este ataque. Aumentar la entropía de una contraseña es la mejor defensa contra cualquier ataque sin conexión.
¿Te resultó útil este artículo?