2010-09-29 10 views

Respuesta

15

Una tabla rainbow es una optimización para invertir funciones hash: encontrar la contraseña cuando todo lo que tienes es su hash. Aunque esto no es estrictamente necesario aquí, recomiendo leer What are rainbow tables and how are they used?, que tiene una muy buena explicación que borra algunos conceptos erróneos comunes.

Hay dos partes para el cifrado RAR (o casi cualquier cosa que use una contraseña para cifrar algunos datos). Primero, una clave de cifrado se deriva de la contraseña, utilizando un key derivation function (KDF). Luego, la clave de cifrado se utiliza para cifrar o descifrar los datos.

Incluso si el KDF es una función hash, una tabla rainbow no ayudaría: el atacante no tiene la salida del KDF. Cuando se usa una contraseña para autenticación, la salida de KDF es lo que está almacenado en la base de datos. Cuando se utiliza una contraseña para el cifrado, la salida de KDF es la clave secreta, que es lo que persigue el atacante.

En cualquier caso, rainbow tables only help against unsalted hashes. WinRAR uses a good KDF (PBKDF2) que incluye una sal.

A KDF transforma una cadena de longitud variable en una clave de tamaño fijo. Una propiedad clave de un KDF es que debe diferenciar las cadenas de entrada del mapa con claves distintas. Un cryptographic hash function (SHA-1, SHA-256, ...) logra esto. Cuando la cadena de entrada es una contraseña proporcionada humana, hay otras dos propiedades importantes que una función hash no alcanza por sí solo:

  • Si dos personas eligen la misma contraseña, no debe llegar a tener el mismo llave.
  • El KDF debe ser lento para calcular, de modo que un atacante no pueda encontrar la contraseña por fuerza bruta.

Una sal logra la primera propiedad. La segunda propiedad se logra haciendo algo como esto: tomar la contraseña, agregar la sal, cortar el lote; toma este hash, agrega la sal, hash el lote; repite muchas veces

Una tabla de arcoiris es una optimización para calcular preimágenes a través de funciones "unidireccionales": funciones que son fáciles de calcular en una dirección pero casi imposible de invertir, es decir, dado x es fácil de calcular y = f (x) pero dado que no hay un método conocido para encontrar x tal que y = f (x) aparte de adivinar x y verificar. Las funciones hash son así. La encriptación con una clave simétrica no es así: el atacante no puede calcular f más de lo que puede calcular su inversa. Por lo tanto, las tablas de arco iris no pueden ayudar a romper el cifrado simétrico.

6

Las tablas del arco iris se utilizan para decodificar Hashes, no el cifrado. Una tabla de arcoiris es solo una lista de hashes precalculados para algún conjunto de posibles entradas.

Así que si precalcula el hash para cada contraseña de Windows, cuando quiere recuperar una contraseña desconocida, todo lo que necesita es el hash de la base de datos SAM y luego buscarlo en la tabla rainbow. La tabla del arco iris luego le da una contraseña que corresponderá a ese hash. Esto es complicado por la contraseña, pero esa es la idea básica.

Las tablas de Rainbow no ayudan a descifrar el cifrado. En teoría, usted puede precomputar todo el posible texto cifrado para todas las claves posibles y todas las posibles entradas de texto sin formato, pero probablemente necesite más bits para almacenar estos datos que átomos en el universo, sin mencionar que esos átomos lo harían. probablemente se haya evaporado a nada antes de llegar allí. Sería más rápido (aunque aún prohibitivamente lento) simplemente para forzar la fuerza bruta.

+0

esta es una explicación muy buena y muy detallada. ¡Gracias! Exactamente lo que estaba buscando. Por cierto, ¡algunos de nosotros necesitamos dormir! ;) Puede consultar el perfil del otro usuario y ver cuánto tiempo no se ha registrado (en relación con su último comentario). – Frankie

+0

Me disculpo. Tendemos a dormir en momentos diferentes en el otro lado del globo. ;-) –

+0

Si tienes un bloque de texto plano, entonces * puedes * usar tablas de arco iris contra el cifrado. En este caso, la forma encriptada de ese bloque de texto sin formato es equivalente al "hash"; la teoría de las tablas del arco iris es igualmente aplicable. – caf

1

Una manera fácil de vencer a una tabla de arcoíris para passowrds hash es usar salt. No estoy familiarizado con el cifrado en los archivos RAR, pero the Wikipedia page dice que RAR3 usa un badass encryption scheme.

+0

El algoritmo de encriptación es irrelevante aquí, lo que importa es la forma en que la clave se deriva de la contraseña. [RAR usa una buena función de derivación de clave] (http://blog.zorinaq.com/?e=15), pero eso es irrelevante para el uso de las tablas rainbow de todos modos (vea la respuesta de Andrew o la mía). – Gilles

3

Las tablas de Rainbow ayudan a recuperar el texto sin formato de un hash generado por una función hash criptográfica, pero los archivos RAR usan el cifrado AES para los datos del archivo y los encabezados. Es un tipo diferente de animal.

+0

El algoritmo de encriptación es irrelevante aquí, lo que importa es la forma en que la clave se deriva de la contraseña. [RAR usa una buena función de derivación de clave] (http://blog.zorinaq.com/?e=15), pero eso es irrelevante para el uso de las tablas rainbow de todos modos (vea la respuesta de Andrew o la mía). – Gilles

+0

@Gilles - sí, ese era mi punto. Supongo que fuiste tú quien me dio un voto negativo, que creo que no se merece. Por favor invierta su voto negativo. –

-2

Andre: Las sales no hacen que los hashes sean más difíciles de romper. Dado que la sal se almacena en texto plano justo al lado del hash, es fácil quitar esa parte del hash crack ...

El propósito de una sal es asegurarse de que los textos planos idénticos tengan diferentes valores hash. Por ejemplo, supongamos que su contraseña es entropy9 y su hash es 649acba24bab481f16ee49cdf0a40870. Ahora, si ve el hash de otra persona también es 649acba24bab481f16ee49cdf0a40870, ¡sabrá su contraseña de inmediato! Obviamente esto también tiene implicaciones en contextos que no son de seguridad, como con hashmaps, etc.

+0

Esto debería haber sido un comentario, no una respuesta. –

+2

Esto no es del todo correcto – NullUserException

+0

@Jim Necesita 50 representantes para comentar. – NullUserException

Cuestiones relacionadas