¿Cómo aumenta la seguridad la salazón? [duplicar]

-1

Actualmente estoy asistiendo a un curso sobre seguridad de software. Recientemente se me ha presentado la idea de la creación de contraseñas, en la que un valor aleatorio se concatena a una contraseña antes de que se elimine y se almacene. Creo que entiendo la operación correctamente, pero no entiendo cómo esto hace que el proceso en sí sea más seguro.

Obviamente, para que se produzca la autenticación, tiene que haber una referencia a la sal utilizada para la contraseña específica durante la creación, creando así un hash correspondiente. En esta referencia hay un enlace directo tanto a la sal como a la contraseña / hash. Si un perpetrador tiene acceso a la base de datos, comprometiendo los hashes y las sales, ¿no tendría acceso al algoritmo o referencias a la sal también?

Según mi comprensión de la salazón, este método parece ser seguridad por oscuridad.

    
pregunta vbiqvitovs 01.07.2014 - 20:30
fuente

2 respuestas

3

Este tema está ampliamente documentado en toda la web, así como en este sitio , por lo que tómese el tiempo para investigar un poco por tu cuenta habría sido una forma mucho más rápida de obtener respuestas. Sin embargo, si solo tiene problemas para entender el concepto, una explicación simple puede ayudar.

En pocas palabras, altera el hash de una contraseña para que no coincida físicamente con el hash de otra contraseña.

Por ejemplo, un usuario tiene la contraseña "password123" y se le asigna un hash SHA1. En la base de datos de contraseñas, todos los usuarios con la contraseña "password123" tendrán exactamente el mismo hash, debido a la naturaleza de las funciones de hash.

Entonces, si un atacante violara la base de datos y forzara la contraseña del usuario mencionado anteriormente, podría buscar todos los hashes que coincidan con el usuario original y sabría que sus contraseñas también son "password123".

Al implementar un salt, los hashes de contraseñas ya no serían idénticos entre sí, aunque la contraseña real sigue siendo la misma. Esto requiere que el atacante entre y trate de forzar la fuerza de la segunda contraseña (que tiene un salt diferente), aunque sea la misma que la primera. En pocas palabras, evita que un atacante descubra una contraseña y luego descubra varias otras.

En tu pregunta, tienes razón en que la sal está normalmente junto al hash, por lo que cualquier persona que haya accedido a una base de datos de hashes de contraseña también tendrá acceso a las sales. Sin embargo, eso no resta valor al propósito original, ya que evita que múltiples hashes sean brutalmente forzadas en una sola estimación. Todos y cada uno de los hash deben ser adivinados por sí mismos.

    
respondido por el JTApps 01.07.2014 - 21:46
fuente
0

Este tema realmente se ha discutido hasta la muerte, por lo que esta es solo la versión corta.

Las sales tienen varios beneficios. La más importante es que obliga a un atacante a romper cada hash individualmente.

Sin sales, el atacante debe revisar su lista de posibles contraseñas solo una vez. Para cada elemento, calcula el hash y comprueba si coincide con alguno de los hashes almacenados. Entonces, para buscar un espacio de n contraseñas posibles, el atacante necesita como máximo n cálculos de hash.

Con sales, efectivamente hash cada contraseña con una variación única del algoritmo hash básico. Ahora un atacante no puede hacer un solo cálculo y comparar el resultado con todos los hashes almacenados. Necesitan atacar cada hash individualmente. Entonces, si hay m hashes almacenados con sales únicas, buscar un espacio de n contraseñas posibles requiere a lo sumo m * n cálculos de hash. Eso es mucho más esfuerzo que antes.

Las sales no tienen que ser secretas. Solo tienen que ser lo suficientemente aleatorios para que sean realmente únicos (no solo en su propia aplicación sino a nivel mundial). 16 bytes de una fuente como /dev/urandom están bien.

Sin embargo, tenga en cuenta que las sales no convierten mágicamente los algoritmos hash débiles en fuertes. No protegen un hash particular . Tampoco ayudan si el algoritmo hash subyacente es tan rápido que un atacante puede compensar fácilmente el esfuerzo adicional.

Por lo tanto, conceptos como "MD5 salado" o "SHA salado" (lo que sea que eso signifique) no tienen sentido. Si el atacante puede calcular cientos de miles de millones de hashes por segundo, simplemente no le importan algunos cálculos adicionales. Las sales solo son efectivas en el contexto de un algoritmo hash fuerte como bcrypt.

    
respondido por el Fleche 01.07.2014 - 23:20
fuente

Lea otras preguntas en las etiquetas