¿Es posible implementar un protocolo de inicio de sesión con criptografía asimétrica en lugar del método de contraseña con hash?
Por ejemplo, al crear una cuenta, el cliente genera un par de clave privada / pública a partir de un hash del nombre de usuario, contraseña y otros datos adicionales. La clave pública se envía al servidor con el nombre de usuario, y el servidor almacena el nombre de usuario y la clave pública. Cuando el usuario desea iniciar sesión, ingresa su contraseña, el cliente regenera la clave privada, firma un nonce con ella y envía el mensaje firmado al servidor. El servidor puede autenticar al usuario ya que conoce la clave pública asociada con el nombre de usuario.
¿Hay algún defecto en este protocolo?
¿Y cuáles serían las ventajas sobre almacenar el hash de contraseña?
EDITAR: De hecho, encontré una respuesta bastante completa aquí: enlace