My question is this: If a good password is used, and all other security practices held equal, does a server administered by a single person gain much practically by switching to SSH keys?
Il problema con questa domanda è che è basato sulla premessa di persone che usano buone password, qualcosa che le persone, nella pratica, non fanno. Ci stai chiedendo di trarre una conclusione "pratica" da una premessa teorica che non regge in pratica.
In entrambi i casi, ritengo che il più grande rischio sia che un utente malintenzionato possa ottenere il segreto di un utente e utilizzarlo per l'autenticazione come tale utente. Con l'autenticazione basata su password potrebbero:
- Indirizza i tuoi utenti a un attacco di phishing. Come ha dimostrato il 2016, questo può avere molto successo.
- Ruba il tuo database delle password e decifra le voci per trovare password deboli.
- Indirizza i tuoi utenti a rubare le loro password su altri servizi, nella speranza che alcuni di essi riutilizzino quelle password nel tuo sistema.
Con l'autenticazione basata su chiave (come di solito praticata, con le chiavi memorizzate sui PC degli utenti con passphrase debole o assente), i modi in cui un utente malintenzionato può ottenere le chiavi degli utenti è hackerando nel loro computer che memorizza la chiave privata . Questo potrebbe essere ottenuto bersagliando i tuoi utenti con malware, che è un altro attacco realistico.
Se sei veramente serio riguardo alla sicurezza dell'autenticazione SSH, devi guardare non solo all'utilizzo delle chiavi private, ma anche a come memorizzarle in modo sicuro in modo che gli attaccanti non possano facilmente rubarle da i tuoi utenti. Le smartcard sono la soluzione classica qui; un dispositivo hardware dedicato che genera internamente una coppia di chiavi e promette di non rivelare mai la chiave privata; il client SSH deve inoltrare la richiesta di autenticazione affinché la smartcard firmi.
Una variante più recente consiste nell'utilizzare un'applicazione per smartphone per generare e archiviare i tasti SSH sul telefono e un client SSH che inoltra richieste di autorizzazione al telefono, in modo che possa autenticare l'utente senza rivelare la chiave privata. Non ho alcuna connessione con la compagnia, ma ho utilizzato la versione gratuita di Kryptonite di recente e, sebbene sia uno strumento giovane, si sta dimostrando abbastanza bene .