6.1.1 PBES1 Encryption Operation (Operazione di Cifratura PBES1)
6.1.1 PBES1 Encryption Operation (Operazione di Cifratura PBES1)
L'operazione di cifratura per PBES1 consiste dei seguenti passaggi, che cifrano un messaggio M sotto una password P per produrre un testo cifrato C:
-
Selezionare un salt S di otto ottetti e un conteggio delle iterazioni c, come descritto nella Sezione 4.
-
Applicare la funzione di derivazione delle chiavi PBKDF1 (Sezione 5.1) alla password P, al salt S e al conteggio delle iterazioni c per produrre una chiave derivata DK di lunghezza 16 ottetti:
DK = PBKDF1 (P, S, c, 16) -
Separare la chiave derivata DK in una chiave di cifratura K costituita dai primi otto ottetti di DK e un vettore di inizializzazione IV costituito dagli otto ottetti successivi:
K = DK<0..7>
IV = DK<8..15> -
Concatenare M e una stringa di riempimento PS per formare un messaggio codificato EM:
EM = M || PSdove la stringa di riempimento PS consiste di 8-(||M|| mod 8) ottetti ciascuno con valore 8-(||M|| mod 8). La stringa di riempimento PS soddisferà una delle seguenti dichiarazioni:
PS = 01, se ||M|| mod 8 = 7 ;
PS = 02 02, se ||M|| mod 8 = 6 ;
...
PS = 08 08 08 08 08 08 08 08, se ||M|| mod 8 = 0.La lunghezza in ottetti del messaggio codificato sarà un multiplo di otto, e sarà possibile recuperare il messaggio M in modo non ambiguo dal messaggio codificato. (Questa regola di riempimento è tratta da RFC 1423 [RFC1423].)
-
Cifrare il messaggio codificato EM con il cifrario a blocchi sottostante (DES o RC2) in modalità CBC sotto la chiave di cifratura K con vettore di inizializzazione IV per produrre il testo cifrato C. Per DES, la chiave K deve essere considerata come una codifica a 64 bit di una chiave DES a 56 bit con bit di parità ignorati (vedere [NIST46]). Per RC2, i "bit chiave effettivi" devono essere 64 bit.
-
Fornire in output il testo cifrato C.
Il salt S e il conteggio delle iterazioni c possono essere trasmessi alla parte che esegue la decifratura in un valore AlgorithmIdentifier (vedere l'Appendice A.3).