¿Dónde están las contraseñas con hash? [duplicar]

0

La forma en que entiendo la seguridad de la contraseña es que el usuario ingresa una contraseña, que luego se convierte utilizando una función hash. El sitio web luego lo compara con el hash almacenado para ver si es correcto.
De esa manera solo se almacena el hash, por lo que si un atacante se entera de que no tiene la contraseña original. ¿Dónde exactamente se convierte en un hash? Si se hace del lado del cliente, esperaría que un
el atacante que conoce el hash podría modificar el código del lado del cliente para enviarlo directamente al servidor.
Pero si se hace en el servidor, entonces la contraseña de texto sin formato debe enviarse a través de la red,
lo que parece ser un problema de seguridad si un atacante puede escuchar la conexión.
¿Cuál de estos métodos se utiliza y cómo se solucionan los posibles fallos de seguridad?

    
pregunta Carmeister 16.08.2014 - 19:53
fuente

2 respuestas

2

Sí, su primera respuesta es correcta: si se realiza desde el lado del cliente, en esencia, el hash de la contraseña es la contraseña.

La práctica habitual es hacerlo en el servidor a través de HTTPS. Sí, las personas en el lado del servidor pueden, en principio, ver su contraseña, pero también tienen acceso completo a todos los datos que su contraseña puede ver / cambiar. Esta es una muy buena razón para nunca reutilizar las contraseñas en diferentes sitios y usar contraseñas aleatorias para cada sitio guardado en un administrador de contraseñas cifradas (como keepass).

Tenga en cuenta que hay una tercera opción, el Secure Remote Password Protocol , que es más complicado, pero evita ambos ataques. descrito arriba. Requiere hashing tanto del lado del cliente como del servidor y utiliza exponenciación modular (similar a un intercambio de claves diffie-hellman). Por supuesto, en este momento el SRP no se usa ampliamente, ya que todavía no está integrado en los navegadores web (y hacerlo en JS permite un ataque directo desde el lado del servidor al cambiar el JS a algo que envía la contraseña en texto sin formato desde el navegador ).

    
respondido por el dr jimbob 16.08.2014 - 20:15
fuente
0

En aplicaciones web, normalmente se hace en el lado del servidor. La contraseña de cleartext se envía al servidor, luego las sales del código del servidor y la hace un hash.

La contraseña remota segura es un enfoque mucho mejor, pero aún está sujeto a ataques de fuerza bruta con contraseñas frecuentes para recuperar la contraseña de texto simple del usuario si el atacante tiene acceso al servidor.

Un enfoque aún mejor es el fortalecimiento de múltiples partes secretas, lo que da como resultado una credencial criptográficamente sólida (basada en una contraseña sin almacenamiento del lado del cliente) que no puede ser atacada por el diccionario a menos que todas las partes coludan contra el usuario. Sin embargo, no estoy al tanto de ninguna implementación ampliamente adoptada.

    
respondido por el Jeff-Inventor ChromeOS 17.08.2014 - 04:39
fuente

Lea otras preguntas en las etiquetas