Zum Hauptinhalt springen

8. Password Authentication Method: "password"

8. Password Authentication Method: "password"

Die Passwortauthentifizierung verwendet die folgenden Pakete. Beachten Sie, dass ein Server verlangen KANN, dass ein Benutzer das Passwort ändert. Alle Implementierungen SOLLten die Passwortauthentifizierung unterstützen.

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]

Beachten Sie, dass der Wert ‚plaintext password‘ in ISO-10646 UTF-8 kodiert ist. Wie das Passwort interpretiert und gegen die Passwortdatenbank geprüft wird, liegt beim Server. Liest der Client das Passwort jedoch in einer anderen Kodierung (z. B. ISO 8859-1 - ISO Latin1), MUSS er das Passwort vor dem Senden in ISO-10646 UTF-8 umwandeln, und der Server MUSS das Passwort in die auf diesem System für Passwörter verwendete Kodierung umwandeln.

Aus Sicht der Internationalisierung ist gewünscht, dass der Authentifizierungsvorgang funktioniert, wenn ein Benutzer sein Passwort eingibt, unabhängig von Betriebssystem und Client-Software. Dazu ist Normalisierung erforderlich. Systeme mit Nicht-ASCII-Passwörtern SOLLten Passwörter und Benutzernamen stets normalisieren, wenn sie zur Datenbank hinzugefügt oder (mit oder ohne Hashing) mit vorhandenen Einträgen verglichen werden. SSH-Implementierungen, die Passwörter speichern und vergleichen, SOLLten [RFC4013] zur Normalisierung verwenden.

Beachten Sie, dass das Klartextpasswort zwar im Paket übertragen wird, das gesamte Paket jedoch von der Transportschicht verschlüsselt wird. Server und Client SOLLten prüfen, ob die zugrunde liegende Transportschicht Vertraulichkeit bietet (d. h. ob Verschlüsselung verwendet wird). Wird keine Vertraulichkeit bereitgestellt (Chiffre „none“), SOLLTE die Passwortauthentifizierung deaktiviert sein. Gibt es weder Vertraulichkeit noch MAC, SOLLTE die Passwortänderung deaktiviert sein.

Normalerweise antwortet der Server auf diese Nachricht mit Erfolg oder Misserfolg. Ist das Passwort jedoch abgelaufen, SOLLTE der Server dies durch Antwort mit SSH_MSG_USERAUTH_PASSWD_CHANGEREQ anzeigen. In jedem Fall DARF der Server nicht zulassen, dass ein abgelaufenes Passwort zur Authentifizierung verwendet wird.

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

In diesem Fall KANN der Client mit einer anderen Authentifizierungsmethode fortfahren oder ein neues Passwort vom Benutzer anfordern und die Passwortauthentifizierung mit der folgenden Nachricht wiederholen. Der Client KANN diese Nachricht auch ohne Aufforderung durch den Server anstelle der normalen Passwortauthentifizierungsanfrage senden.

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]

Der Server muss auf jede Anfragenachricht mit SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE oder einer weiteren SSH_MSG_USERAUTH_PASSWD_CHANGEREQ antworten. Die Bedeutung ist wie folgt:

  • SSH_MSG_USERAUTH_SUCCESS - Das Passwort wurde geändert und die Authentifizierung wurde erfolgreich abgeschlossen.

  • SSH_MSG_USERAUTH_FAILURE mit partial success - Das Passwort wurde geändert, es sind jedoch weitere Authentifizierungen nötig.

  • SSH_MSG_USERAUTH_FAILURE ohne partial success - Das Passwort wurde nicht geändert. Entweder wurde Passwortänderung nicht unterstützt, oder das alte Passwort war falsch. Hat der Server bereits SSH_MSG_USERAUTH_PASSWD_CHANGEREQ gesendet, wissen wir, dass er Passwortänderungen unterstützt.

  • SSH_MSG_USERAUTH_PASSWD_CHANGEREQ - Das Passwort wurde nicht geändert, weil das neue Passwort nicht akzeptabel war (z. B. zu leicht zu erraten).

Die folgenden methodenspezifischen Nachrichtennummern werden von der Passwortauthentifizierungsmethode verwendet.

SSH_MSG_USERAUTH_PASSWD_CHANGEREQ   60