¿Por qué los sistemas que realizan autenticación de contraseña realmente envían el
contraseña por el cable? ¿Por qué no hacer que el servidor emita un
desafío ...
Déjame revertir la pregunta. ¿Qué obtendría si no enviara la contraseña por el cable? La respuesta a menudo no será nada.
El lugar principal donde usamos la contraseña es en Internet. Cuando visita una página web, esta página está controlada por el servidor y, por lo tanto, puede considerarla una extensión del servidor. Si el servidor está comprometido o es malo, tan pronto como escribe la contraseña en la página, puede considerar que está comprometido y esta contraseña debe cambiarse.
En su pregunta, parece preocuparse por el ataque MitM, pero solo considere el MitM que puede adjuntarse cuando envía el formulario y no cuando recibe la página, pero ambos son tan mortales. No importa si su contraseña no es "supuesta" para ser enviada o no, tan pronto como se escribe es lo mismo.
Entonces, ¿es totalmente inútil usar la autenticación de desafío-respuesta en una página web?
Si usas TLS, diría que sí. Recuerde que el cliente es solo una extensión del servidor.
Si no usa TLS, puede ayudar contra el espionaje pasivo, pero sigue siendo inútil contra MitM activo; Donde puedes modificar el contenido de la página. El hecho de que MitM activo sea mucho más difícil de lograr que las escuchas pasivas fue una razón que motivó la creación de dicho esquema. Consulte autenticación de resumen .
¿Por qué es diferente SSH?
Porque el servidor no controla al cliente. El cliente está completamente separado del servidor. Esto significa que cuando escribí mi contraseña secreta en el cliente, incluso si respondo a un desafío de un servidor malvado, mi contraseña secreta sigue siendo segura.
Es lo mismo con tu tarjeta de crédito. El chip inteligente en su tarjeta de crédito contiene una clave secreta que se utiliza para responder a un desafío-respuesta cada vez que realiza una compra. Esta clave secreta está protegida incluso si realiza una compra desde un terminal malvado.
Nota: Una ventaja del mecanismo de desafío-respuesta también es que le permite al usuario reutilizar la misma contraseña con varios servidores. Este punto es necesario para la tarjeta de crédito, por ejemplo, ya que usarán muchos terminales (servidores) y solo tendrán una contraseña.
El mecanismo de respuesta-desafío solo funciona cuando el servidor no controla al cliente.
Esto significa que si quisiéramos usar la autenticación de desafío-respuesta para la página web, tendríamos que implementarla en el nivel del navegador y no en el nivel de la página web. Si esa sería una buena idea o no es una pregunta completamente diferente.
Creo que esto se debe a que no se puede saltear la contraseña
el lado del servidor.
Es cierto que si utiliza el cifrado simétrico, no podrá proteger la contraseña correctamente en el servidor, ya que la necesita para verificar la respuesta del desafío. Es por eso que usa el cifrado asimétrico para el esquema de desafío-respuesta. Por ejemplo, tanto SSH como su tarjeta de crédito están utilizando el cifrado asimétrico. Con el cifrado asimétrico, puede almacenar la clave pública en el servidor y el usuario puede mantener su clave privada ... privada.