Quiero implementar una autenticación de inicio de sesión de desafío-respuesta para mi aplicación web.
Tengo entendido que el servidor tiene que devolver la sal de la contraseña para el usuario para que el usuario pueda calcular el hash de la contraseña en el lado del cliente y luego enviarla de vuelta al servidor para comparar y verificar si el usuario está autenticado o no.
Sé que este tipo de autenticación es vulnerable a los ataques de diccionario porque el atacante puede ver la sal de contraseña en texto sin formato y la fuerza bruta ataca el servidor con esa sal de contraseña.
Como siempre, las capas de seguridad son las mejores, así que también agregaría SSL a la ecuación, de modo que el atacante tendría que romper SSL y forzar la contraseña con el saltador.
¿Hay formas en que pueda mejorar esto? He buscado en SRP (Contraseña remota segura) pero parece realmente complejo, mientras que el desafío-respuesta puede proporcionar tanto beneficio.