¿Es más seguro cifrar SALT con la contraseña de un usuario dado?

18

Estoy aprendiendo sobre seguridad web. Entiendo que las contraseñas están saturadas con sal. ¿Por qué las sales no están encriptadas con la contraseña del mismo usuario? En la nube, ¿esto no dificulta mucho el descifrado de contraseñas?

generando

  1. generar sal
  2. cifrarlo con AES usando la contraseña del usuario como clave
  3. guarda la sal y el hash cifrados

Recuperando

  1. descifrar sal usando la contraseña provista
  2. hash salt + contraseña
  3. comparar con hash guardado
pregunta Kevin 05.09.2014 - 07:27
fuente

3 respuestas

38
  

generar sal cifrarlo con AES usando la contraseña del usuario como clave guardar   La sal y el hash encriptados

Podrías hacer esto y sería una sal efectiva, sin embargo, en realidad no sería más seguro que solo usar una sal regular.

Consideremos dos vectores de ataque:

Colisiones de contraseñas

Obviamente, no queremos que dos usuarios con la misma contraseña tengan la misma contraseña hash. Para evitar esto, utilizamos un valor aleatorio de sal y asumimos que la probabilidad de que dos usuarios con la misma contraseña y el mismo valor aleatorio de sal sea efectivamente 0.

Sin embargo, si dos usuarios tienen la misma contraseña y coincidentemente la misma sal, tendrán el mismo hash, independientemente de si la sal está cifrada con su contraseña o no está cifrada en absoluto. Por lo tanto, al cifrar la sal, no es menos probable que ocurra una colisión en la sal . Los únicos factores que lo hacen menos probable es la calidad de los valores aleatorios utilizados para la sal y el número de bits.

Ataques de fuerza bruta

Si un atacante está intentando un ataque de fuerza bruta y ha cifrado la sal, el único paso adicional que tienen que hacer es descifrar la sal almacenada en cada iteración y usarla para producir el hash que comparó con la contraseña hash para ver si tienen un partido.

Esto requiere un poco más de esfuerzo por parte de un atacante, pero cuando se trata de criptografía, hacer que algo tome solo dos o tres veces más no es significativo. Si Brute forzar una contraseña ahora toma 3 días en lugar de 2, realmente no la ha hecho mucho más segura. Si está tratando de hacer que algo sea seguro, quiere que se tarde 5000 años en lugar de 2 días.

Si quieres reducir los ataques de fuerza bruta, es mejor que repitas el proceso de hashing decenas de miles de veces o que utilices una función de hash diseñada específicamente para ser computacionalmente lenta.

    
respondido por el thexacre 05.09.2014 - 08:02
fuente
22

Las sales no pretenden ser secretas, su único requisito es ser globalmente único.

Hasta que tenga más experiencia, no intente ser inteligente con la criptografía. Utilice soluciones listas para usar como bcrypt o scrypt y deje los detalles a los profesionales. Es difícil acertar con la criptografía, y agregar más y / o complejidad innecesaria solo aumenta la probabilidad de cometer un error y reducir la seguridad.

    
respondido por el Stephen Touset 05.09.2014 - 07:30
fuente
0

Como dice thexacre, no impide los métodos de fuerza bruta, porque la suposición puede usarse para descifrar el hash.

Sin embargo, si resulta que existe (por ejemplo, un descubrimiento futuro) una vulnerabilidad sistemática en el hash utilizado, entonces una sal encriptada podría resultar valiosa. Sin embargo, dependiendo de la naturaleza del ataque, podría ser posible obtener tanto sal como contraseña tan fácilmente como derivar la contraseña solo.

    
respondido por el Ben Voigt 08.09.2014 - 05:07
fuente

Lea otras preguntas en las etiquetas