¿Cómo funcionan realmente las tablas de arcoiris y el hash?

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:

  1. Elija una contraseña al azar que aún no haya descifrado.
  2. Hash para obtener un número. Divídalo por el tamaño del diccionario y tome el resto.
  3. Ejecute el cracker para obtener la contraseña correspondiente a ese número.
  4. Repita los pasos 2-3, digamos, 100,000 veces.
  5. Escriba el número final y la contraseña original.
  6. 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í:

  1. Busque el hash en la mesa. Si está allí, elija la contraseña que inició la cadena.
  2. De lo contrario, ejecute el hash a través del cracker para obtener una contraseña diferente.
  3. Hash la contraseña.
  4. 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.

Un hash es básicamente una función de cifrado unidireccional. El contenido se cambia criptográficamente de manera sistemática para que el resultado sea siempre el mismo para el mismo contenido, pero en teoría es imposible revertir ese hash para recuperar el contenido.

Los desarrolladores inteligentes no almacenan contraseñas reales. En su lugar, escriben la contraseña y la almacenan en la base de datos para que, si la base de datos es pirateada, los piratas informáticos no tengan contraseñas reales sino una lista de hashes. Cuando una persona intenta iniciar sesión, el sistema agrega esa contraseña y la compara con la contraseña de la base de datos. Si coinciden, entonces la contraseña es buena. Los hashes comunes son SHA1, MD5, SHA256, etc.

Si un pirata informático tiene acceso a las contraseñas hash y sabe qué algoritmo se utilizó para hacer hash las contraseñas, puede crear su propia lista de contraseñas hash y comparar esa lista con la lista de hashes robados para ver qué coincidencia. Hacer esto sobre la marcha usaría mucha potencia de procesamiento de la computadora y tomaría mucho tiempo, que es donde entra una mesa arcoiris.

Una tabla de arcoiris es una lista de hashes pre-creados de un diccionario de posibles contraseñas. Para ser útiles, estas listas deben ser enormes. Tenga en cuenta que una contraseña de “lápiz” tendrá un hash muy diferente que “Lápiz”, por lo que la tabla del arco iris debería contener ambos. Para hacer este tipo de ataque aún más difícil, los desarrolladores inteligentes “salan” las contraseñas con caracteres aleatorios. Esto aumenta exponencialmente el número de posibilidades para cada contraseña que la tabla del arco iris necesitaría tener.

Comprender cómo funciona esto debería hacerte más consciente de lo importante que es tener contraseñas complejas y más largas (y no usar servicios que no usen sus contraseñas). En realidad, es mejor tener una contraseña más larga que una realmente compleja simplemente porque cada carácter adicional en la contraseña aumenta exponencialmente la dificultad y la potencia de la computadora necesaria para adivinarla. En términos simples: si el costo de adivinar la contraseña es mayor que el valor de lo que protege la contraseña, es poco probable que alguien se moleste.

NOTA: Si utiliza un sitio web que le envía por correo electrónico su contraseña de texto sin formato cuando la ha olvidado, el sitio no está descifrando sus contraseñas y al menos debe asegurarse de no usar esa misma contraseña en ningún otro lugar.