Tomemos algunas notas a las respuestas anteriores.
Primero, probablemente no sea la mejor idea usar algoritmos hash del lado del cliente. Si su contraseña está salada en el lado del servidor, no podrá comparar hashes (al menos no si no almacena el hash del cliente en la base de datos en una de las capas de hash de la contraseña, que es la misma o peor). Y no desea implementar el algoritmo hash utilizado por la base de datos en el lado del cliente, sería una tontería.
En segundo lugar, el intercambio de claves criptográficas tampoco es ideal. El MITM podría teóricamente (considerando que tiene un certificado raíz instalado en el cliente) cambiar las claves criptográficas y cambiar con sus propias claves:
Conexión original (sin considerar tls) de un servidor teórico que intercambia claves:
El cliente solicita claves públicas> el servidor contiene las claves privadas, genera claves públicas para el cliente> el servidor envía claves públicas al cliente
Ahora, en una pista teórica MITM:
El cliente solicita claves públicas> MITM genera claves privadas falsas > El servidor contiene las claves privadas, genera claves públicas para el cliente> MITM recibe las claves públicas del servidor original, ahora, podemos enviar nuestras claves públicas falsas al cliente y Siempre que una solicitud provenga del cliente, descifraremos los datos del cliente con las claves falsas, cambiaremos la carga útil (o la leeremos) y encriptaremos con las claves públicas originales > MITM envía claves públicas falsas al cliente.
Ese es el punto de tener un certificado CA confiable en TLS, y así es como recibe un mensaje del navegador que advierte si el certificado no es válido.
En respuesta al OP: en mi humilde opinión no puedes hacer eso, porque tarde o temprano alguien querrá atacar a un usuario de tu servicio e intentará romper tu protocolo.
Sin embargo, lo que puede hacer es implementar 2FA para evitar que las personas intenten iniciar sesión con la misma contraseña. Sin embargo, tenga cuidado con los ataques de repetición.
No soy bueno con la criptografía, corrígeme si me equivoco.