¿Hay alguna desventaja al cifrar el hash de contraseña?

5

¿Es más seguro cifrar el hash de contraseña en la base de datos que almacenar solo el hash?

Supongamos que almacenamos el resultado SHA-256 cifrado con AES en lugar de hash directamente. ¿Es esta una buena protección contra una situación en el futuro cuando alguien romperá uno de los algoritmos?

    
pregunta Piotr Müller 25.11.2014 - 08:42
fuente

3 respuestas

4

En primer lugar, todas las contraseñas almacenadas deben incluirse con un sal pseudoaleatorio diferente. En segundo lugar, SHA-256 no es apropiado para almacenar contraseñas; en su lugar, desea utilizar un algoritmo de clave , como ya se ha mencionado. Hay muchos más detalles en Crackstation .

Un hash encriptado también se llama un hash con clave, y la clave a veces se llama "pimienta". No es necesario que haya un paso de cifrado separado. En cambio, la clave secreta es parte de la entrada a la función hash. Eso puede mejorar la seguridad de alguna manera. Hay dos maneras en que los atacantes pueden obtener una copia de sus hashes de contraseña. Una es comprometer el mecanismo de almacenamiento, como ocurre con la inyección SQL. En ese caso, un hash con clave puede hacer que sea imposible recuperar efectivamente las contraseñas de texto sin formato de los hashes porque la clave se puede compilar en un programa o mantener fuera del mecanismo de almacenamiento de contraseñas. La otra forma es comprometer el propio sistema operativo. En ese caso, la clave está comprometida y ya no es un impedimento contra los intentos de atacar las contraseñas.

Entonces, la respuesta corta es sí, pero primero debes hacer el trabajo subyacente correctamente.

    
respondido por el Bob Brown 25.11.2014 - 14:05
fuente
3

Siempre que te refieras a Hash primero ( BCrypt ) y luego encripte el hash, la seguridad no debería debilitarse, sin embargo, tampoco está mejorando la seguridad.
El cifrado es, por definición, un esquema reversible. Dado que en realidad no hay un caso de uso para el que requeriría el descifrado en este caso, el cifrado es la herramienta incorrecta para el trabajo.

Si busca usar una 'clave secreta' en combinación con el hash de contraseñas, debe utilizar un HMAC (en general, se denomina 'usar sal y pimienta'). Para obtener más información sobre HMAC y Hash, consulte: Hash de contraseña agregar Sal + pimienta o es suficiente sal? . Para una discusión sobre cómo implementar esto, vea: ¿Cómo aplicar un pimiento correctamente a bcrypt? .

    
respondido por el Monika 25.11.2014 - 11:31
fuente
1

Bob Brown ha cubierto la mayoría de los puntos destacados en su respuesta pero quería señalar que no Es una desventaja importante: la complejidad. Está aumentando la complejidad de su aplicación en cierta medida, menor (en el caso de agregar un pimiento al hash en el que necesita pensar en la administración de claves así como en el almacenamiento de hashes y sales de contraseñas) o mayor (en el caso de la implementación algo más sofisticado como AES y la necesidad de almacenar IVs o Nonces y posiblemente etiquetas / MAC, así como la salida, la sal y la administración de la (s) clave (s).

Entonces, ¿el valor que vas a agregar es suficiente para justificar el costo adicional de complejidad? Tendrás que responder a esa pregunta para tu aplicación. Yo diría que generalmente no lo hace, mientras que ciertamente hay casos en los que sí.

En cualquier caso, como mencionó Bob, debe comenzar con una base sólida y pasar a un mejor algoritmo de hashing como Bcrypt, independientemente de si decide encriptar o no.

    
respondido por el Xander 25.11.2014 - 15:38
fuente

Lea otras preguntas en las etiquetas