No te limites solo analizando el ataque desde afuera. Tienes que ver la imagen más grande ... piensa en medidas de seguridad como capas de una cebolla. Apila tantos como puedas con la esperanza de cerrar cualquier ángulo de ataque. Los hashes de contraseña son una de esas capas.
¿Es tan fácil hackear una base de datos? Quiero decir que en lugar de encontrar nuevas formas de hash, ¿por qué no pueden hacer que su base de datos sea más segura o "a prueba de piratería"?
No importa lo difícil que sea hackear la base de datos. Tenga en cuenta que el hashing de la contraseña debe proteger la contraseña incluso desde el sistema o el administrador de la base de datos.
Tenga en cuenta que incluso si tratara de hacerlo, no es necesariamente fácil proteger la base de datos de contraseñas. ¿Cómo lo protegerías? ¿Con otra contraseña? ¿Dónde almacenaría esa contraseña maestra? ¿Cómo protegería la contraseña maestra de que alguien pueda leer todo el sistema?
Si un pirata informático logra piratear una base de datos, ¿por qué querría saber las contraseñas con hash?
Bueno, para intentar atacarlos.
Observe cómo se usan las contraseñas: el usuario legítimo entrega un nombre de usuario y una contraseña de texto simple a la pantalla de inicio de sesión, el texto claro se revisa y se compara con el hash de la contraseña.
Todos los atacantes pueden hacer exactamente lo mismo, excepto que hacerlo en la pantalla / indicador de inicio de sesión real es ineficaz: lleva tiempo y se detecta fácilmente; muchos sistemas bloquearán una cuenta después de algunos intentos fallidos.
Entonces, cuando el atacante obtiene la lista de hashes de contraseñas, puede hacer el mismo hashing en su propio programa: cegadoramente rápido, y especialmente con ataques "dicitoneales" o "arco iris", que intercambian RAM / almacenamiento contra el tiempo. p>
Entonces, ¿no deberían estar todos los campos con hash?
No puede hash todos los campos porque su aplicación necesita conocer el valor de los otros campos, simplemente. Es difícil recuperar el valor de una versión con hash, incluso para un usuario legítimo.
Pero, de hecho, hay bases de datos que hacen algo así: cifran (no hash) los datos reales también. Desea evaluar si vale la pena desde el punto de vista del rendimiento, y luego tiene que asegurarse de que el cifrado realmente proporcione seguridad real. Es decir, debe asegurarse de que su clave permanezca protegida mientras el DB necesita tener acceso a ella, y así sucesivamente.
El cifrado no es apropiado para las contraseñas porque en realidad no queremos que se puedan descifrar (las mismas ideas que al comienzo = > trabajos internos, y la dificultad de hacer que la clave de cifrado sea más segura que las contraseñas reales querías asegurarte en primer lugar).