¿Por qué las contraseñas no están hasheadas localmente? [duplicar]

1

La gente está reutilizando contraseñas todo el tiempo, y con muchos sitios que aceptan direcciones de correo electrónico como inicios de sesión, una contraseña robada puede desbloquear muchas cuentas. Entonces, ¿por qué no solo hash la contraseña localmente a través de javascript y envía la contraseña hash al servidor (obviamente a través de SSL) que luego la vuelve a copiar antes de guardarla en su base de datos. Esto haría:

1:

Muestre seguridad a los usuarios interesados, que sus contraseñas están al menos una vez escritas (mirando el código JS), lo que significa que sus contraseñas son algo seguras en cualquier caso.

2:

En el caso de una clave privada robada, las comunicaciones capturadas descifradas entre clientes y servidores solo revelarían una contraseña con hash. Esto proporcionaría acceso al servicio dañado, pero como la contraseña ya está oculta (y está asociada con el nombre del sitio o lo que sea), no se puede usar para ingresar a ningún otro sitio web con correo electrónico + contraseña a menos que se rompa el hash.

3:

En el caso de robar la base de datos de contraseñas, el hash del lado del servidor Y el hash del lado del cliente tendrían que "revertirse" para revelar la contraseña verdadera.

Ahora me doy cuenta de que estos 3 casos son algo raros, sin embargo no son exagerados, ya que las bases de datos de contraseñas son robadas , las claves privadas se filtran y los algoritmos hash se vuelven obsoletos (ver SHAttered). Ahora sé que el argumento 3 no es particularmente fuerte, ya que las contraseñas se han repetido muchas veces de todas formas, pero sin embargo, mi pregunta:

¿Por qué no es esta mejor práctica? ¿Estoy supervisando algún inconveniente? ¿Esto ya está implementado en algún lugar?

    
pregunta jaaq 24.04.2017 - 19:28
fuente

2 respuestas

0

Como dijo korockinout13, en muchos casos, solo se necesita el hash y no la contraseña de texto simple.

Esta es una vieja pregunta de la que se ha discutido bastante. Para obtener más información, consulte Debería hash ¿La contraseña antes de enviarla al servidor? .

    
respondido por el valkyrix 24.04.2017 - 21:53
fuente
2

Hashing las contraseñas en el cliente en el mejor de los casos no haría nada, y en el peor de los casos hará que los usuarios duden de la seguridad de sus aplicaciones. En lo que respecta al servidor, las contraseñas de hash del cliente son efectivamente las contraseñas de texto simple. Vea mis respuestas a sus preguntas individuales.

  1. No, no lo hace. Solo muestra que ha sido hash en el navegador. Para el usuario, esto no significa que la contraseña se haya vuelto a hash en el servidor. Si lo viera, asumiría que el hash se está haciendo solo en el navegador y supondría que la aplicación no es segura.

  2. Supongo que te refieres a una clave privada para el certificado SSL. Si esto ha sido robado, hay problemas mucho más grandes en juego. Con la información del certificado filtrada, alguien puede suplantar con éxito su servidor web, lo que significa que no se puede confiar en ninguno de los contenidos descargados. Los scripts del lado del cliente pueden simplemente arrebatar las contraseñas antes de que se cifren.

  3. No, solo necesitarían descifrar los hashes obtenidos del servidor. Nuevamente, en lo que respecta al servidor, la contraseña de hash del cliente es el texto claro.

respondido por el user52472 24.04.2017 - 22:05
fuente

Lea otras preguntas en las etiquetas