A.2 PBKDF2
A.2 PBKDF2
L'identificatore di oggetto id-PBKDF2 identifica la funzione di derivazione delle chiavi PBKDF2 (Sezione 5.2).
id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12}
Il campo parameters associato a questo OID in un AlgorithmIdentifier deve avere tipo PBKDF2-params:
PBKDF2-params ::= SEQUENCE {
salt CHOICE {
specified OCTET STRING,
otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}
},
iterationCount INTEGER (1..MAX),
keyLength INTEGER (1..MAX) OPTIONAL,
prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT
algid-hmacWithSHA1 }
I campi di tipo PBKDF2-params hanno i seguenti significati:
-
salt specifica il valore del salt o la sorgente del valore del salt. Deve essere una stringa di ottetti o un ID di algoritmo con un OID nell'insieme PBKDF2-SaltSources, che è riservato per versioni future di PKCS #5.
L'approccio salt-source è destinato a indicare come il valore del salt deve essere generato come funzione dei parametri nell'ID dell'algoritmo, dei dati dell'applicazione o di entrambi. Ad esempio, può indicare che il valore del salt viene prodotto dalla codifica di una struttura che specifica informazioni dettagliate sulla chiave derivata come suggerito nella Sezione 4.1. Alcune delle informazioni possono essere portate altrove, ad esempio, nell'ID dell'algoritmo di cifratura. Tuttavia, tali strutture sono rinviate a una versione futura di PKCS #5.
In questa versione, un'applicazione può ottenere i vantaggi menzionati nella Sezione 4.1 scegliendo un'interpretazione particolare del valore del salt nell'alternativa specificata.
PBKDF2-SaltSources ALGORITHM-IDENTIFIER ::= { ... } -
iterationCount specifica il conteggio delle iterazioni. Il conteggio massimo delle iterazioni consentito dipende dall'implementazione. Si prevede che i profili di implementazione possano vincolare ulteriormente i limiti.
-
keyLength, un campo opzionale, è la lunghezza in ottetti della chiave derivata. La lunghezza massima della chiave consentita dipende dall'implementazione; si prevede che i profili di implementazione possano vincolare ulteriormente i limiti. Il campo è fornito solo per comodità; la lunghezza della chiave non è protetta crittograficamente. Se c'è preoccupazione per l'interazione tra operazioni con diverse lunghezze di chiave per un dato salt (vedere la Sezione 4.1), il salt dovrebbe distinguere tra le diverse lunghezze delle chiavi.
-
prf identifica la funzione pseudocasuale sottostante. Deve essere un ID di algoritmo con un OID nell'insieme PBKDF2-PRFs, che per questa versione di PKCS #5 deve consistere di id-hmacWithSHA1 (vedere l'Appendice B.1.1) e qualsiasi altro OID definito dall'applicazione.
PBKDF2-PRFs ALGORITHM-IDENTIFIER ::= {
{NULL IDENTIFIED BY id-hmacWithSHA1},
{NULL IDENTIFIED BY id-hmacWithSHA224},
{NULL IDENTIFIED BY id-hmacWithSHA256},
{NULL IDENTIFIED BY id-hmacWithSHA384},
{NULL IDENTIFIED BY id-hmacWithSHA512},
{NULL IDENTIFIED BY id-hmacWithSHA512-224},
{NULL IDENTIFIED BY id-hmacWithSHA512-256},
...
}
La funzione pseudocasuale predefinita è HMAC-SHA-1:
algid-hmacWithSHA1 AlgorithmIdentifier {{PBKDF2-PRFs}} ::=
{algorithm id-hmacWithSHA1, parameters NULL : NULL}