Why do systems that do password authentication actually send the
password over the wire? Why not just have the server issue a
challenge...
Lasciatemi invertire la domanda. Cosa otterresti inviando la password via cavo? La risposta sarà spesso nulla.
Il luogo principale in cui utilizziamo la password è su Internet. Quando visiti una pagina web, questa pagina è controllata dal server e quindi puoi considerarla un'estensione del server. Se il server è compromesso o è malvagio, non appena digiti la password nella pagina, puoi considerarla compromessa e questa password dovrebbe essere modificata.
Nella tua domanda ti sembra di preoccuparti dell'attacco MitM, ma considera solo il MitM che può essere aggiunto quando invii il modulo e non quando ricevi la pagina, ma entrambi sono letali. Non importa se la tua password non è "supposta" da inviare o meno, non appena viene digitata è la stessa cosa.
Quindi è totalmente inutile utilizzare l'autenticazione challenge-response su una pagina web?
Se usi TLS, direi di si. Ricorda che il client è solo un'estensione del server.
Se non si utilizza TLS, può essere di aiuto contro l'intercettazione passiva, ma è comunque inutile contro il MitM attivo; dove puoi modificare il contenuto della pagina. Il fatto che il MitM attivo sia molto più difficile da estrarre rispetto alle intercettazioni passive è stato un motivo che ha motivato la creazione di tale schema. Vedi autenticazione digest .
Why is SSH different?
Perché il server non controlla il client. Il client è completamente separato dal server. Ciò significa che quando ho digitato la mia password segreta nel client, anche se rispondo a una richiesta di un malvagio server, la mia password segreta è ancora al sicuro.
È la stessa cosa con la tua carta di credito. Lo smart chip della tua carta di credito contiene una chiave segreta che viene utilizzata per rispondere a una sfida-risposta ogni volta che effettui un acquisto. Questa chiave segreta è protetta anche se fai un acquisto da un terminale malvagio.
Nota: un vantaggio del meccanismo challenge-response è che consente all'utente di riutilizzare la stessa password con più server. Questo punto è necessario per la carta di credito, ad esempio poiché utilizzeranno molti terminali (server) e avranno solo una password.
Il meccanismo Challenge-response funziona solo quando il server non controlla il client.
Ciò significa che se volessimo utilizzare l'autenticazione challenge-response per la pagina web, sarebbe necessario che fosse implementata a livello di browser e non a livello di pagina web. Se questa sarebbe una buona idea o no è una domanda completamente diversa.
I believe this is because then you can't salt and hash the password on
the server side.
È vero che se utilizzi la crittografia simmetrica, non sarai in grado di proteggere correttamente la password sul server in quanto ne hai bisogno per verificare la risposta della sfida. Ecco perché utilizzi la crittografia asimmetrica per lo schema challenge-response. Ad esempio, sia SSH che la tua carta di credito utilizzano la crittografia asimmetrica. Con la crittografia asimmetrica, è possibile memorizzare la chiave pubblica sul server e l'utente può mantenere la sua chiave privata ... privata.