¿Averiguar qué hash de contraseña para permitirle descifrar todas las contraseñas idénticas?

3

Perdóneme, ya que soy muy nuevo en criptografía, pero parece interesante, y tengo una pregunta.

Declararé mis creencias y, por favor, siéntase libre de corregirme sobre los aspectos en los que estoy equivocado para que pueda aprender:

Esto es lo que creo que sé:

  1. Al intentar proteger una contraseña, pasa por una función de hash (es decir, SHA-1), y el hash resultante se almacena en la base de datos en lugar de la propia contraseña.
  2. Cada vez que se intenta iniciar sesión y escriben su contraseña, su entrada se revisa y luego se compara con el valor de hash en la base de datos
  3. ¿Esto significa que para un sistema de inicio de sesión determinado, si escribo "password1", siempre tiene el mismo valor de hash?

  4. Si ese es el caso, ¿no tendrían todos los miembros de un sistema de inicio de sesión que tienen la misma contraseña el mismo valor hash en la base de datos? ¿O hay una forma adicional de seguridad / diferenciación implementada para cada usuario para que mi "contraseña1" no tenga el mismo valor hash que la "contraseña1" de otro usuario?

pregunta user1299028 18.08.2014 - 23:16
fuente

3 respuestas

7
  1. Sí, más o menos. Idealmente se almacenan dos valores. Una sal única, y un hash de la contraseña salt +. Se genera y almacena una sal única global para cada contraseña.

  2. De nuevo, algo así. Primero se recupera la sal para esa cuenta de usuario de la base de datos, luego la sal + contraseña se revisa y se compara con el valor de hash que se encuentra en la base de datos.

  3. No, porque la sal será diferente para cada usuario, lo que dará como resultado un valor de hash final diferente para cada usuario.

  4. Vea 3. La sal es el componente adicional de seguridad / diferenciación que evita que los hashes sean iguales.

respondido por el Xander 18.08.2014 - 23:24
fuente
3

Verdadero

Todos los miembros con la misma contraseña tienen el mismo hash, a menos que el hash haya sido incluido con un valor aleatorio.

De hecho, el valor de hash para "password1" siempre es el mismo, independientemente de la aplicación web

    
respondido por el Ulkoma 18.08.2014 - 23:26
fuente
1

Curiosamente, todas tus preguntas se responden con la misma palabra: salt

Una sal es típicamente un gran valor aleatorio (128 bits).

Primero, se genera una sal única para cada contraseña. Ahora, en lugar de aplicar hash a la contraseña y almacenarla, adjuntamos el salt a la contraseña y luego hacemos un hash del resultado. Ahora, almacenamos la sal y el hash en la base de datos. Cuando el usuario intenta iniciar sesión, agregamos el salt y realizamos la misma técnica de hash para asegurarnos de obtener el mismo hash que la base de datos.

Esto tiene la propiedad de que cada hash almacenado será único, y cada contraseña (incluso la misma contraseña exacta) tendrá un hash diferente (porque la sal es única).

    
respondido por el Chris Murray 19.08.2014 - 11:32
fuente

Lea otras preguntas en las etiquetas