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?