¿Puedo forzar una clave de hash de contraseña incluso si no sé el algoritmo de hash utilizado?

6

¿Puedo forzar con fuerza el hash de una contraseña incluso si no conozco el algoritmo subyacente?

Por ejemplo, si adquiero una base de datos con hashes de contraseña y el algoritmo hash utilizado es desconocido, como una mezcla aleatoria de SHA / MD5 / Bcrypt / custom / Salt / Pepper.

¿Un experto en descifrado de contraseñas aún podrá forzar bruscamente los hashes de contraseñas?

También supongo (para un sitio web público) que al menos puedes crear tu propia "cuenta" con una contraseña conocida, por lo que quizás tengas un par de hash de entrada > conocido. ¿Será de alguna utilidad?

    
pregunta user316 14.05.2014 - 06:21
fuente

4 respuestas

1

Tu pregunta no tiene mucho sentido para mí. Si ya conoce el hash y sabe qué información lo genera, ¿cuál es el punto de su fuerza bruta?

Por otra parte, hacer fuerza bruta significa aplicar un procedimiento muchas veces con diferentes entradas y comparar la salida con su hash. Si no sabe qué procedimiento utilizar, no hay forma de que pueda aplicarlo muchas veces.

Pero si conoce la entrada y el hash, puede forzar la fuerza bruta al principio para encontrar qué algoritmo se usa. Por ejemplo

sha1(i) , sha1(md5(i)) , md5(i) y así sucesivamente probando muchas combinaciones de posibles funciones hash. Podrías adivinar parcialmente lo que se usa. Por lo tanto, si la salida tiene una longitud de 160 bits, puede suponer que el último paso fue sha1 .

    
respondido por el Salvador Dali 14.05.2014 - 07:11
fuente
1

Será más difícil eliminar un hash sin saber la función de hash utilizada. Tendrás que adivinar tanto la función de hash como los datos de hash. Sin embargo, no hay razón para mantener en secreto la función hash.

Primero, generalmente es bastante evidente a partir de la longitud del hash (o al configurar una cuenta ficticia y probar muchas posibilidades obvias) qué algoritmo se usó para generarla. En general, es una mala idea modificar las funciones hash existentes para "rodar su propia" función hash, ya que (1) es innecesario, (2) será una pesadilla para mantener en varios sistemas, (3) si se hace mal, puede debilitar drásticamente la seguridad y (4) la forma en que se calcula la función hash estará en el código fuente / ejecutable y un atacante determinado que comprometa la lista de hashes, también podrá obtener el código fuente / ejecutable y podrá aplicar ingeniería inversa a la función hash desde allí.

Si realmente desea ir por la ruta en la que el hash no debe ser de fuerza bruta (hasta que comprometa el código fuente de la aplicación o el ejecutable), no debe usar un hash sino que debe usar un MAC (Código de autenticación de mensajes) . Puede construir un MAC a partir de una función hash utilizando el construcción HMAC : HMAC(password) = H(K1 ++ H(K2 ++ password)) donde H es una función hash, K es una clave secreta (almacenada en la aplicación que calcula la HMAC), K1 = K XOR 0x5c5c...5c y K2 = K XOR 0x3636...36 son dos claves secretas diferentes derivadas de K (donde 0x5c5c...5c y 0x3636...36 es un bloque del byte 0x5c o 0x36 repetido con la misma longitud que la clave secreta). Entonces, si tiene una clave secreta de 256 bits y utiliza SHA-256 como su función hash, hay aproximadamente 2 256 claves HMAC potenciales (~ 10 77 - para comparación solo ha habido unos 10 26 nanosegundos desde el Big Bang) que un atacante tendría que recorrer antes de encontrar el K utilizado (si de hecho encuentran el K correcto y no una colisión improbable que funcione para uno contraseña específica pero no otras).

Los MAC generalmente se usan para verificar la integridad del mensaje (en el sentido de que solo alguien con la clave secreta puede generar un MAC válido) y no para almacenar contraseñas / usuarios de autenticación, pero no hay razón para que no puedan usarse con este fin. El problema es el mismo: no desea que alguien que haya obtenido un mensaje y el hash asociado (MAC), pueda crear nuevos hashes (MAC) para otros mensajes (como parte de un ataque de fuerza bruta). Se cree que los MAC tienen seguridad contra este ataque; mientras que elegir un esquema aleatorio complicado como SHA1(SHA512(pw)++SHA256(MD5(pw)++MD4(pw))) es en principio mucho más fácil de adivinar para un atacante que una clave aleatoria de 256 bits (y es más probable que se escape de algún tipo de ataque de canal lateral).

Concedido usando un MAC es probablemente una exageración. Si utiliza contraseñas seguras y un hash salado reforzado con clave moderno (bcrypt, PBKDF, SHA512crypt), simplemente no es posible forzar la fuerza bruta.

    
respondido por el dr jimbob 14.05.2014 - 21:14
fuente
0

Dado que el atacante tiene una única entrada y salida conocidas, puede aplicar ingeniería inversa al algoritmo de hash con fuerza bruta. Variar el algoritmo de hash para cada contraseña lo hace mucho más difícil para él, pero todavía no es imposible.

    
respondido por el Daniel 14.05.2014 - 21:45
fuente
0

Se puede adivinar el algoritmo de hash, pero esta no es la forma en que puede proteger sus contraseñas en la base de datos. Si alguien puede robar toda su base de datos, entonces asumo que el problema es mucho más amplio en su sistema como cree, y también obtendrá su código fuente ... Desde allí no es un paso largo encontrar el algoritmo de hash que usa. .

Lo que realmente debes hacer es usar un algoritmo de hashing de contraseña real, que es intencionalmente muy lento. Así que olvide sha1 o md5, y use bcrypt (si no es posible, entonces use los anteriores con salt y con recuento de iteración recomendado actualmente ).

    
respondido por el inf3rno 15.05.2014 - 02:39
fuente

Lea otras preguntas en las etiquetas