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:
-
Sélectionner un sel S de huit octets et un nombre d'itérations c, comme indiqué dans la Section 4.
-
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)
- 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>
- 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].)
-
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.
-
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).