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 + ...)
).