Aller au contenu principal

6.1.1 Opération de chiffrement PBES1

L'opération de chiffrement pour PBES1 consiste en les étapes suivantes, qui chiffrent un message M sous un mot de passe P pour produire un texte chiffré C:

  1. Sélectionner un sel S de huit octets et un nombre d'itérations c, comme indiqué dans la Section 4.

  2. Appliquer la fonction de dérivation de clé PBKDF1 (Section 5.1) au mot de passe P, au sel S, et au nombre d'itérations c pour produire une clé dérivée DK de longueur 16 octets:

DK = PBKDF1 (P, S, c, 16)
  1. Séparer la clé dérivée DK en une clé de chiffrement K consistant des huit premiers octets de DK et un vecteur d'initialisation IV consistant des huit octets suivants:
K   = DK<0..7>
IV = DK<8..15>
  1. Concaténer M et une chaîne de remplissage PS pour former un message encodé EM:
EM = M || PS

où la chaîne de remplissage PS consiste en 8-(||M|| mod 8) octets ayant chacun la valeur 8-(||M|| mod 8). La chaîne de remplissage PS satisfera l'une des déclarations suivantes:

PS = 01, si ||M|| mod 8 = 7 ;
PS = 02 02, si ||M|| mod 8 = 6 ;
...
PS = 08 08 08 08 08 08 08 08, si ||M|| mod 8 = 0.

La longueur en octets du message encodé sera un multiple de huit, et il sera possible de récupérer le message M sans ambiguïté à partir du message encodé. (Cette règle de remplissage est tirée du RFC 1423 [RFC1423].)

  1. Chiffrer le message encodé EM avec le chiffrement par blocs sous-jacent (DES ou RC2) en mode CBC sous la clé de chiffrement K avec le vecteur d'initialisation IV pour produire le texte chiffré C. Pour DES, la clé K DOIT être considérée comme un encodage sur 64 bits d'une clé DES de 56 bits avec les bits de parité ignorés (voir [NIST46]). Pour RC2, les "bits de clé effectifs" DOIVENT être 64 bits.

  2. Sortir le texte chiffré C.

Le sel S et le nombre d'itérations c peuvent être transmis à la partie effectuant le déchiffrement dans une valeur AlgorithmIdentifier (voir l'Annexe A.3).