Aller au contenu principal

8. Password Authentication Method: "password"

8. Password Authentication Method: "password"

L'authentification par mot de passe utilise les paquets suivants. Notez qu'un serveur PEUT demander à un utilisateur de changer son mot de passe. Toutes les implémentations DEVRAIENT prendre en charge l'authentification par mot de passe.

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]

Notez que la valeur ‚plaintext password' est encodée en ISO-10646 UTF-8. Il appartient au serveur d'interpréter le mot de passe et de le valider par rapport à la base de mots de passe. Toutefois, si le client lit le mot de passe dans un autre encodage (p. ex., ISO 8859-1 - ISO Latin1), il DOIT convertir le mot de passe en ISO-10646 UTF-8 avant transmission, et le serveur DOIT convertir le mot de passe vers l'encodage utilisé sur ce système pour les mots de passe.

D'un point de vue d'internationalisation, on souhaite que, si un utilisateur saisit son mot de passe, le processus d'authentification fonctionne quel que soient le système d'exploitation et le logiciel client utilisés. Cela exige une normalisation. Les systèmes prenant en charge des mots de passe non ASCII DEVRAIENT toujours normaliser les mots de passe et les noms d'utilisateur lorsqu'ils sont ajoutés à la base, ou comparés (avec ou sans hachage) aux entrées existantes. Les implémentations SSH qui stockent les mots de passe et les comparent DEVRAIENT utiliser [RFC4013] pour la normalisation.

Notez que même si le mot de passe en clair est transmis dans le paquet, l'intégralité du paquet est chiffrée par la couche de transport. Le serveur et le client devraient tous deux vérifier si la couche de transport sous-jacente assure la confidentialité (c.-à-d., si le chiffrement est utilisé). Si aucune confidentialité n'est fournie (chiffrement « none »), l'authentification par mot de passe DEVRAIT être désactivée. S'il n'y a ni confidentialité ni MAC, le changement de mot de passe DEVRAIT être désactivé.

Normalement, le serveur répond à ce message par succès ou échec. Toutefois, si le mot de passe a expiré, le serveur DEVRAIT l'indiquer en répondant par SSH_MSG_USERAUTH_PASSWD_CHANGEREQ. En tout cas, le serveur NE DOIT PAS permettre qu'un mot de passe expiré soit utilisé pour l'authentification.

byte      SSH_MSG_USERAUTH_PASSWD_CHANGEREQ
string prompt in ISO-10646 UTF-8 encoding [RFC3629]
string language tag [RFC3066]

Dans ce cas, le client PEUT poursuivre avec une autre méthode d'authentification, ou demander un nouveau mot de passe à l'utilisateur et réessayer l'authentification par mot de passe avec le message suivant. Le client PEUT également envoyer ce message à la place de la demande d'authentification par mot de passe habituelle sans que le serveur l'ait demandé.

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]

Le serveur doit répondre à chaque message de demande par SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE, ou un autre SSH_MSG_USERAUTH_PASSWD_CHANGEREQ. La signification est la suivante :

  • SSH_MSG_USERAUTH_SUCCESS - Le mot de passe a été modifié, et l'authentification s'est terminée avec succès.

  • SSH_MSG_USERAUTH_FAILURE avec succès partiel - Le mot de passe a été modifié, mais d'autres authentifications sont nécessaires.

  • SSH_MSG_USERAUTH_FAILURE sans succès partiel - Le mot de passe n'a pas été modifié. Soit le changement de mot de passe n'était pas pris en charge, soit l'ancien mot de passe était incorrect. Notez que si le serveur a déjà envoyé SSH_MSG_USERAUTH_PASSWD_CHANGEREQ, on sait qu'il prend en charge le changement de mot de passe.

  • SSH_MSG_USERAUTH_PASSWD_CHANGEREQ - Le mot de passe n'a pas été modifié parce que le nouveau mot de passe n'était pas acceptable (p. ex., trop facile à deviner).

Les numéros de messages spécifiques à la méthode suivants sont utilisés par la méthode d'authentification par mot de passe.

SSH_MSG_USERAUTH_PASSWD_CHANGEREQ   60