8. Password Authentication Method: "password"
8. Password Authentication Method: "password"
L'autenticazione a password usa i seguenti pacchetti. Nota che un server PUÒ richiedere che un utente cambi la password. Tutte le implementazioni DOVREBBERO supportare l'autenticazione a password.
byte SSH_MSG_USERAUTH_REQUEST
string user name
string service name
string "password"
boolean FALSE
string plaintext password in ISO-10646 UTF-8 encoding [RFC3629]
Nota che il valore 'plaintext password' è codificato in ISO-10646 UTF-8. Spetta al server come interpretare la password e validarla rispetto al database delle password. Tuttavia, se il client legge la password in un'altra codifica (ad es. ISO 8859-1 - ISO Latin1), DEVE convertire la password in ISO-10646 UTF-8 prima della trasmissione, e il server DEVE convertire la password nella codifica usata su quel sistema per le password.
Dal punto di vista dell'internazionalizzazione, si desidera che se un utente inserisce la password, il processo di autenticazione funzioni indipendentemente da quale OS e software client l'utente stia usando. Ciò richiede normalizzazione. I sistemi che supportano password non ASCII DOVREBBERO sempre normalizzare password e nomi utente ogni volta che sono aggiunti al database o confrontati (con o senza hashing) con voci esistenti nel database. Le implementazioni SSH che memorizzano e confrontano le password DOVREBBERO usare [RFC4013] per la normalizzazione.
Nota che sebbene la password in chiaro sia trasmessa nel pacchetto, l'intero pacchetto è crittografato dal livello di trasporto. Sia il server che il client DOVREBBERO verificare se il livello di trasporto sottostante fornisce riservatezza (cioè se è usata la crittografia). Se non è fornita riservatezza (cifrario « none »), l'autenticazione a password DOVREBBE essere disabilitata. Se non c'è riservatezza né MAC, il cambio password DOVREBBE essere disabilitato.
Normalmente, il server risponde a questo messaggio con successo o fallimento. Tuttavia, se la password è scaduta, il server DOVREBBE indicarlo rispondendo con SSH_MSG_USERAUTH_PASSWD_CHANGEREQ. In ogni caso, il server NON DEVE consentire l'uso di una password scaduta per l'autenticazione.
byte SSH_MSG_USERAUTH_PASSWD_CHANGEREQ
string prompt in ISO-10646 UTF-8 encoding [RFC3629]
string language tag [RFC3066]
In questo caso, il client PUÒ continuare con un metodo di autenticazione diverso o richiedere una nuova password all'utente e riprovare l'autenticazione a password usando il seguente messaggio. Il client PUÒ anche inviare questo messaggio al posto della normale richiesta di autenticazione a password senza che il server lo chieda.
byte SSH_MSG_USERAUTH_REQUEST
string user name
string service name
string "password"
boolean TRUE
string plaintext old password in ISO-10646 UTF-8 encoding
[RFC3629]
string plaintext new password in ISO-10646 UTF-8 encoding
[RFC3629]
Il server deve rispondere a ogni messaggio di richiesta con SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE o un altro SSH_MSG_USERAUTH_PASSWD_CHANGEREQ. Il significato è il seguente:
-
SSH_MSG_USERAUTH_SUCCESS- La password è stata cambiata e l'autenticazione è stata completata con successo. -
SSH_MSG_USERAUTH_FAILUREcon partial success - La password è stata cambiata, ma servono più autenticazioni. -
SSH_MSG_USERAUTH_FAILUREsenza partial success - La password non è stata cambiata. O il cambio password non era supportato, o la vecchia password era errata. Nota che se il server ha già inviatoSSH_MSG_USERAUTH_PASSWD_CHANGEREQ, sappiamo che supporta il cambio password. -
SSH_MSG_USERAUTH_PASSWD_CHANGEREQ- La password non è stata cambiata perché la nuova password non era accettabile (ad es. troppo facile da indovinare).
I seguenti numeri di messaggio specifici del metodo sono usati dal metodo di autenticazione a password.
SSH_MSG_USERAUTH_PASSWD_CHANGEREQ 60