¿Puede el salt para PBKDF2 ser un hash de la contraseña ingresada por el usuario?

5

Quiero derivar una clave de una contraseña en una aplicación cliente que se usará como una clave maestra que descifra una clave de datos. Por lo que yo entiendo, la sal debe ser conocimiento privado. ¿Sería suficiente usar el hash (por ejemplo, SHA-1) de una contraseña como parámetro de sal para PBKDF2?

Nuevamente, por lo que yo entiendo, cuando el atacante obtendría conocimiento de este algoritmo, la sal no tendría valor. ¿Pero no sería más fácil para un atacante recuperar una sal generada pero almacenada? Tengo que almacenarlo en algún lugar, porque la clave no se utilizará una sola vez.

    
pregunta Rafael Bugajewski 14.05.2012 - 10:08
fuente

3 respuestas

14

Una sal no es un secreto, está destinada a hacer que el resultado Hash / PBKDF2 sea único para cada instancia utilizada. En lo que respecta a un conocimiento, la definición misma de sal requiere que sea aleatoria para cada hash computado . Si se derivó la contraseña, dos usuarios con la misma contraseña podrían terminar con el mismo verificador - > Malo.

    
respondido por el Jacco 14.05.2012 - 11:49
fuente
6

Si la sal se deriva de la contraseña, entonces la función completa de contraseña a hash almacenada es determinista; dos usuarios que usen la misma contraseña terminarán con el mismo hash. @Jacco dijo eso, pero dejó la implicación sin decir: si usa una sal derivada de una contraseña, entonces ya no tiene sal, solo una función hash elegante sin sal; y pierde la protección que proporciona el salt, es decir, para evitar que los atacantes utilicen tablas precomputadas (tablas de arco iris) y que utilicen ataques paralelos en una base de datos completa de contraseñas con hash (o encriptados con claves derivadas de contraseñas).

    
respondido por el Thomas Pornin 16.02.2013 - 23:21
fuente
1

Usted dice que va a almacenar la sal. Eso significa que, en caso de que un atacante acceda a la base de datos, ¿a qué prefiere que acceda? la contraseña / hash simple de la contraseña, o un salt generado inútil al azar?

No será más fácil para un atacante obtener acceso al Salt generado (si lo almacena donde habría guardado la contraseña con hash). Es el mismo nivel de dificultad.

Pero con la contraseña / hash de la contraseña, el atacante puede acceder a la clave maestra Y buscar la contraseña original (usando la tabla de arco iris / fuerza bruta) que podría usarse en otra cuenta de este usuario.

Si almacena el salt, genere uno aleatorio.

    
respondido por el Cyril N. 14.05.2012 - 10:59
fuente

Lea otras preguntas en las etiquetas