¿es más fácil obtener la contraseña original si tiene múltiples hashes?

5

La mayoría de los usuarios suelen utilizar la misma contraseña para varias aplicaciones. Digamos que todas estas aplicaciones tienen la contraseña de alguna manera. ¿Sería más fácil para un atacante obtener la contraseña original si tuviera acceso a todos los hashes diferentes? Por supuesto, es probable que el atacante que observa los hashes sepa cuál es el más débil y solo intente hacer fuerza bruta con esto, pero ¿ha ganado algo al tener acceso a otros hashes de la misma contraseña? Suponiendo también que el atacante no tiene ninguna tabla de arco iris que contenga alguno de estos hash.

Entonces, si un atacante tiene acceso a todos estos hashes de la misma contraseña, ¿puede ser más rápido en romperla que simplemente intentar atacar con fuerza bruta uno de los hashes md5 (como en este caso es el enlace más débil)?

  • 33c38d9db9759da0d0a813968bc3c1fb
  • 7b8758cf3cb6e540d60b3e9999c48fbef0502ac6
  • faa81286aa90907253a58acfd83d2d89e58120031630d60dc05d0cd365b6df8d
  • $1$NPeNiNCA$AwpOWKuur2LZvXiJxNM6U1
  • $5$VHVZwDnI4aAEUG2m$ZhSJ537JmYJ5ISDxPQ6doWxPOrz9AMjyvxYxecViK23
  • $5$3bRXBWCpG9GEHdm$a2xIBbgK.fyr5k26BhUGo2QCvl25yQU1I9mwFp7mmh5p
  • $6$Hcdqud1hDgz$5MOEbgtOdxfF289OSXrmIevt7NnZBLaQkNGKeijR/X09ZDEbQ/ZfObJjNo0J64t4haSSqihRhfPe4z8l.ptro1
  • $6$hqaQ3RzX$bk8dgMsAlmDPpOX0IWWIrJ9T3awblvI.PCipeqJDdJZSVDQJgCRsQRX8pKpFU2XNcvRr56e3MARcTQR5oJ94V/
  • $2a$13$Hdz8T8vlEqwCvhixyu4rlel2cjj.TfA1qXEZ2dXhabogN35Idd8Je
  • $2a$15$hLPoYhbVJNA48A/Wmv1I5.5XBv/G/1s8BGfDLU7mt37ojGhNjETd2

por cierto, la contraseña original es hello12345world12345 , no estoy intentando (hacerte) descifrar la contraseña de alguien ;-)

    
pregunta Carlos Campderrós 23.01.2013 - 10:21
fuente

2 respuestas

7

En teoría, tener varios hashes puede ayudar; en la práctica, no tanto.

La teoría

Consideremos SHA-256. Desde esta función, podemos definir otra función hash, que llamaremos SHB-256, tal que SHB-256 ( m ) = SHA-256 ( m ) XOR m . En palabras simples, computo el XOR del SHA-256 y los primeros 256 bits de m .

Este "SHB-256" es tan bueno como una función hash criptográfica como SHA-256: es igualmente resistente a Colisiones, preimágenes y segundas preimágenes. Sin embargo, si le doy ambos SHA-256 ( m ) y SHB-256 ( m ), entonces un XOR simple de ambos valores produce los primeros 256 bits de m .

La práctica

Aprovechar varios hash computados con la misma contraseña se basa en qué tan similares son las funciones de hash, para permitir "cancelar" entre sí. Esta es una propiedad muy mal definida y (hasta ahora) no investigada a fondo. Que yo sepa, no se conoce tal atajo con funciones hash existentes. Hay muchos detalles en mente; Las funciones iteradas y el uso de sales hacen que el asunto sea aún más complejo.

Lo que un atacante realista puede hacer cuando se enfrenta a múltiples hashes es usar el que le será más fácil atacar, e ignorar los otros. Si uno de ellos no tiene sal, entonces el atacante lo atacará, lo que permite el ataque simultáneo de varias contraseñas con hash y el uso de tablas precomputadas (arco iris). De lo contrario, utilizará la función que será más eficiente cuando se implemente en su hardware (por ejemplo, si se enfrenta a PBKDF2 y Bcrypt , el atacante apuntará a PBKDF2, que es más fácil de implementar en una GPU). Como lo dice @Polynomial, tus hashes serán tan fuertes como los más débiles de ellos.

Un efecto indirecto adicional es sobre su presupuesto de CPU. Al hacer registro , deberá codificar la contraseña del usuario con todas las funciones hash. Para las funciones de hash que son "configurablemente lentas", como bcrypt o PBKDF2, esto puede incitarlo a configurarlas para que sean "un poco más rápidas" de lo que habría hecho si solo hubiera usado una, a fin de mantener sus propios costos. dentro de límites tolerables. Esto reduce de manera correspondiente los esfuerzos del atacante, ya que he solo tiene que romper un hash, no todos.

    
respondido por el Thomas Pornin 23.01.2013 - 12:52
fuente
0

Depende de la fuerza de su contraseña y del algoritmo de hash utilizado para el hashing. Hay programas que usan CPU + GPU para romper los hashes usando ataques de fuerza bruta. Entonces, si usa una contraseña común, es fácil de descifrar usando una PC y una tarjeta gráfica. Hay muchas aplicaciones disponibles que utilizan el poder de la GPU junto con la CPU. No importa si da dos o tres tipos de hashes de una contraseña, el tiempo de fuerza bruta depende de la fuerza de la contraseña y del algoritmo de hashing.

Si tengo 5 hashes diferentes de tu contraseña y uno de ellos es muy débil, entonces esa contraseña se puede recuperar rápidamente atacando el hash del algoritmo de hashing más débil.

    
respondido por el sujeesh 23.01.2013 - 11:21
fuente

Lea otras preguntas en las etiquetas