Aller au contenu principal

5.2 User-Password

5.2. User-Password

Description

Cet Attribute indique le mot de passe de l'utilisateur à authentifier, ou la saisie de l'utilisateur suite à un Access-Challenge. Il est uniquement utilisé dans les paquets Access-Request.

Lors de la transmission, le mot de passe est masqué. Le mot de passe est d'abord complété à la fin avec des nulls jusqu'à un multiple de 16 octets. Un hachage MD5 unidirectionnel est calculé sur un flux d'octets constitué du secret partagé suivi du Request Authenticator. Cette valeur est XORée avec le premier segment de 16 octets du mot de passe et placée dans les 16 premiers octets du champ String de l'Attribute User-Password.

Si le mot de passe est plus long que 16 caractères, un second hachage MD5 unidirectionnel est calculé sur un flux d'octets constitué du secret partagé suivi du résultat du premier xor. Ce hachage est XORé avec le second segment de 16 octets du mot de passe et placé dans les 16 seconds octets du champ String de l'Attribute User-Password.

Si nécessaire, cette opération est répétée, chaque résultat xor étant utilisé avec le secret partagé pour générer le prochain hachage pour xorer le segment suivant du mot de passe, jusqu'à 128 caractères maximum.

La méthode est tirée du livre "Network Security" de Kaufman, Perlman et Speciner [9] pages 109-110. Une explication plus précise de la méthode suit:

Appelons le secret partagé S et le Request Authenticator pseudo-aléatoire de 128 bits RA. Divisez le mot de passe en morceaux de 16 octets p1, p2, etc., le dernier étant complété à la fin avec des nulls jusqu'à une limite de 16 octets. Appelez les blocs de texte chiffré c(1), c(2), etc. Nous aurons besoin de valeurs intermédiaires b1, b2, etc.

b1 = MD5(S + RA)       c(1) = p1 xor b1
b2 = MD5(S + c(1)) c(2) = p2 xor b2
. .
. .
. .
bi = MD5(S + c(i-1)) c(i) = pi xor bi

Le String contiendra c(1)+c(2)+...+c(i) où + dénote la concaténation.

À la réception, le processus est inversé pour obtenir le mot de passe original.

Un résumé du format de l'Attribute User-Password est présenté ci-dessous. Les champs sont transmis de gauche à droite.

 0                   1                   2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Type | Length | String ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type

2 pour User-Password.

Length

Au moins 18 et pas plus de 130.

String

Le champ String fait entre 16 et 128 octets de long, inclus.