¿Puede una contraseña ser la misma que su hash?

5

Así que mi amigo y yo estábamos pensando por qué las contraseñas tienen una longitud máxima (y encontré la respuesta aquí ) y tuve un pensamiento extraño ... ¿podría una contraseña ser la misma que su hash?
Me doy cuenta de que los hashes salados se basan en RNG, pero ¿es posible? Si es así, ¿cuáles son las posibilidades?

    
pregunta Tyler.I 16.01.2016 - 09:44
fuente

3 respuestas

5

En teoría, sí. Para probar esto, todo lo que debe hacer es hacer un hash de todos los hash de salida posibles y ver si alguno de ellos tiene el mismo valor que la entrada.

Esto puede tardar un poco.

En la práctica, muy pocas personas usan contraseñas que son en sí mismas salidas válidas para las funciones hash, ya que esto volvería a escribir recordando una cadena de más de 30 caracteres compuesta por dígitos y las letras A a F (suponiendo una representación hexadecimal). Además, el uso de sal en los algoritmos modernos de hash confundiría aún más el problema: la contraseña tendría que ser parte de su propio hash, y la sal sería la parte restante.

    
respondido por el Matthew 16.01.2016 - 09:56
fuente
1

En el caso de las contraseñas que se trocean sin el uso de un salt, es probable que exista una contraseña que se copie a sí misma. Una prueba formal de si existe o no es factible, pero uno puede hacer los cálculos asumiendo un oráculo aleatorio en lugar de una función hash. En ese caso, la probabilidad de que exista una contraseña de este tipo puede calcularse y resultará ser aproximadamente del 63%. Los cálculos completos se pueden ver en una respuesta en crypto SE.

La mejor práctica, sin embargo, es usar un salt cuando se escribe una contraseña. Eso cambia los cálculos pero también hace que la pregunta sea un poco ambigua. Hay al menos dos formas de interpretar la pregunta, cada una de las cuales se puede responder por separado.

¿Existe una contraseña que siempre se copie a sí misma independientemente de qué sal se elija?

No.

El motivo es que la sal está incluida en el hash de la contraseña. Y cuando pedimos que la contraseña y el hash de contraseña sean idénticos, entonces la implicación es que la contraseña en sí misma tendría que contener el salt. Y para cualquier otra opción de salt, la contraseña no se hará a sí misma.

¿Existe una contraseña que para al menos una opción de salt se copie a sí misma?

Muy probablemente sí. El análisis es similar al caso de contraseñas sin sal. Pero debido a que la entrada tiene más entropía que la salida, los números saldrán de manera muy diferente.

Veamos el cálculo utilizando algunos números concretos que se usan ampliamente. Sal: 48 bits, Hash de salida: 512 bits.

Esto significa que hay 2⁵⁶⁰ entradas posibles, cada una de las cuales tiene una probabilidad de coincidencia de 1 / 2⁵¹². La probabilidad de que ninguno de ellos coincida solo será (1 - 1 / 2⁵¹²) ^ (2⁵⁶⁰) utilizando la aproximación de antes de decir que (1 - 1 / 2⁵¹²) ^ (2⁵¹²) ≃ 27% la probabilidad de que ninguno coincida por lo tanto, sale como 27% ^ (2⁴⁸) ≃ 0.

    
respondido por el kasperd 16.01.2016 - 14:29
fuente
0

De vez en cuando aparece, qué interesante sería si la salida de un hash, o un hash salado fuera igual a la entrada.

Los algoritmos de hash no suelen tener ninguna protección contra esto como parte de los criterios de diseño. De hecho, sería muy fácil agregar un paso más, indicando que si la salida coincide con (parte de) la entrada, alterne el primer bit en la parte correspondiente, evitando así cualquier hallazgo.

Encontrar una entrada / salida coincidente ciertamente me fascinaría, sin embargo, ¿qué hace que no sea tan interesante, es cuando consideras qué representación del hash debería coincidir con la entrada?

La entrada suele ser una serie de bytes de 8 bits, ya sea como texto en varias codificaciones o como binario sin formato.

La salida es un número fijo de bytes sin procesar de 8 bits, representado a menudo como la representación hexadecimal de los valores n * 8 bits como un número.

Seguramente sería una curiosidad si la salida del MD5 de un número decimal (o binario) en formato de cadena (es decir, "12345 ....") sea un número hexadecimal que coincida exactamente con el mismo número, ¿verdad?

Pero, si la salida, interpretada como un gran número en un formato binario, sería exactamente el mismo número (cuando se imprime en el formato decimal), la mayoría de nosotros ni siquiera nos daríamos cuenta de la equivalencia. Pero sería tan interesante teóricamente.

Otro ejemplo, podría ser muy sospechoso, pero ¿te darías cuenta de que esta salida (falsa) de MD5 está en realidad en texto ASCII?

48454c5021496d207472617070656421

Si se publicara como una codificación Base64, sería muy difícil para la mayoría de nosotros ver ese hecho.

    
respondido por el chexum 16.01.2016 - 14:46
fuente

Lea otras preguntas en las etiquetas