Actualmente estoy usando SHA-512 con 100000 rondas debido a la implementación más sencilla. El algoritmo genera contraseñas de un servicio (por ejemplo, amazon) y una contraseña maestra. ¿Me beneficiaría de cambiar a bcrypt / scrypt?
Basado en la aclaración del OP, cambiaré mi respuesta.
Así que estás haciendo algo equivalente a:
sha-512x100000("stackexchange.com"|"master password")
... realmente no es una gran idea. Su elección de la función hash no es su mayor problema aquí. Como atacante, una vez que descifro una de tus contraseñas y recupero la contraseña maestra, me resulta trivial descifrar todas tus otras cuentas.
Le sugeriría que cambie a usar contraseñas derivadas de /dev/random
, o usar un administrador de contraseñas adecuado.
RESPUESTA ORIGINAL
Sí, no utilice las funciones de hash SHA-X para el hashing de contraseñas. Sería mejor cambiar a algo diseñado para ser una función de hash de contraseña.
hashes SHA-2 (que incluyen SHA-224, SHA-256, SHA-384 y SHA -512) fueron diseñados para el rendimiento: era parte del requisito de diseño que las implementaciones de software y hardware de estas funciones hash fueran lo más rápidas posible. Suponiendo que su servidor está usando una implementación de software de SHA-512 y el atacante que intenta forzar la fuerza bruta de las contraseñas está usando una plataforma de GPU o un hardware dedicado de SHA-512, entonces le está dando al atacante una ventaja sobre usted porque puede realice conjeturas con una eficiencia mucho mayor de lo que el servidor puede generar los hashes en primer lugar.
En resumen, los hashes SHA están diseñados para ser rápidos, especialmente en hardware. Una propiedad muy mala para una función de hashing de contraseña.
bcrypt , scrypt , y en menor medida PBKDF2 , están diseñados para ser lentos e ineficientes en hardware: muy buenas propiedades para las funciones de hashing de contraseña.
De esos tres (bcrypt, scrypt y PBKDF2) parece que scrypt es la opción más moderna y la mejor. Sin embargo, a partir de los resultados de la Competencia de hash de contraseñas de 2013 - 2015, parece que Argon2 (y la finalista Catena, Lyra2, yescrypt y Makwa) soplan scrypt fuera del agua, así que usa uno de esos si lo tienes disponible.