opciones de hash del administrador de contraseñas (scrypt + sha256)

4

Información de fondo: Contraseña maestra es un administrador de contraseñas sin estado. (De manera determinista) genera una contraseña usando una función hash, dependiendo de su contraseña maestra y el nombre del sitio (también algunos otros campos, pero estos no son importantes para esta pregunta).

Entonces, si recuerda su contraseña maestra y el nombre del sitio (y algunos pequeños detalles), puede generar la contraseña para la cuenta de su sitio cada vez, sin almacenar las contraseñas (encriptadas o no) en algún lugar de su computadora (que necesita copias de seguridad) o en la nube (lo que significa que debe confiar en un tercero adicional).

Genera una contraseña en dos partes:

  • Parte 1: scrypt_key = scrypt(password + some salts + other details) .
  • Parte 2: sha256(scrypt_key + site name + other details) .

Esta última parte se usa (bastante impresa, no en binario) para la contraseña de un sitio.

Para obtener una versión detallada, consulte la página del algoritmo: enlace .

Mi pregunta real es entonces: ¿Cuáles son las consecuencias de usar sha en lugar de scrypt para la segunda parte? Obviamente saben de la existencia de Scrypt, así que ¿por qué no lo utilizaron también para la segunda parte?

La única razón por la que puedo pensar por qué usar sha para la segunda parte es que si un atacante encuentra una colisión, es probable que la colisión encontrada no sea la que necesita (por ejemplo, sha256("abcdef") equivale a sha256(scrypt_key + ...) ).

    
pregunta Matty 13.11.2015 - 15:10
fuente

2 respuestas

2

Las funciones de derivación de clave lenta como SCrypt, BCrypt o PBKDF2 son necesarias para proteger contraseñas relativamente cortas y débiles, o para generar una clave a partir de dichas contraseñas ( P assword- B ased- K ey- D erivation- F unction). Los usuarios deben recordar sus contraseñas, por lo que generalmente no son muy fuertes, por eso se eligió a SCrypt para hacer hash de la contraseña del usuario.

Por otro lado, el hash con un SHA-256 rápido es absolutamente seguro para "contraseñas" muy fuertes. La clave generada con SCrypt es una contraseña / clave tan fuerte, por lo que no hay razón para usar SCrypt nuevamente.

Finalmente, se debe decidir cuánto tiempo se puede dedicar a calcular el hash, digamos que está dispuesto a gastar 1 segundo de potencia de CPU. Es una buena decisión pasar tanto tiempo como sea posible para el primer hash de SCrypt, y solo un poco de tiempo para el segundo hash. De lo contrario, debilitaría el hash SCrypt, porque perdió tiempo para el segundo hash.

    
respondido por el martinstoeckli 13.11.2015 - 21:09
fuente
0

scrypt necesita mucha más potencia que SHA2, ya que necesita potencia de computación y memoria. La clave maestra está protegida con scrypt porque es mucho más lenta. Pero las contraseñas para los sitios web se procesan con la clave de escritura segura, pero esta vez se usa SHA256 porque es más rápido. La clave scrypt se usa para el hash y crea una base sólida para el hash.

Es posible que el proceso de hashear las contraseñas del sitio web con scrypt utilizando la clave scrypt lleve demasiado tiempo, lo que no es necesario aquí.

La segunda parte es para hacer que los ataques de hardware de fuerza bruta sean más difíciles pero al mismo tiempo obtener un buen rendimiento y seguridad.

    
respondido por el Daniel Ruf 13.11.2015 - 18:21
fuente

Lea otras preguntas en las etiquetas