A.2 PBKDF2
L'identificateur d'objet id-PBKDF2 identifie la fonction de dérivation de clé PBKDF2 (Section 5.2).
id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12}
Le champ parameters associé à cet OID dans un AlgorithmIdentifier DOIT avoir le type 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 }
Les champs du type PBKDF2-params ont les significations suivantes:
- salt spécifie la valeur de sel ou la source de la valeur de sel. Il DOIT être soit une chaîne d'octets soit un ID d'algorithme avec un OID dans l'ensemble PBKDF2-SaltSources, qui est réservé pour les versions futures de PKCS #5.
L'approche source-de-sel est destinée à indiquer comment la valeur de sel doit être générée en fonction des paramètres dans l'ID d'algorithme, des données d'application, ou des deux. Par exemple, elle peut indiquer que la valeur de sel est produite à partir de l'encodage d'une structure qui spécifie des informations détaillées sur la clé dérivée comme suggéré dans la Section 4.1. Certaines des informations peuvent être portées ailleurs, par exemple, dans l'ID d'algorithme de chiffrement. Cependant, de telles facilités sont reportées à une version future de PKCS #5.
Dans cette version, une application peut obtenir les avantages mentionnés dans la Section 4.1 en choisissant une interprétation particulière de la valeur de sel dans l'alternative spécifiée.
PBKDF2-SaltSources ALGORITHM-IDENTIFIER ::= { ... }
-
iterationCount spécifie le nombre d'itérations. Le nombre d'itérations maximum autorisé dépend de l'implémentation. Il est prévu que les profils d'implémentation puissent contraindre davantage les limites.
-
keyLength, un champ optionnel, est la longueur en octets de la clé dérivée. La longueur de clé maximum autorisée dépend de l'implémentation; il est prévu que les profils d'implémentation puissent contraindre davantage les limites. Le champ est fourni pour commodité uniquement; la longueur de clé n'est pas protégée cryptographiquement. S'il y a des préoccupations concernant l'interaction entre les opérations avec différentes longueurs de clé pour un sel donné (voir la Section 4.1), le sel devrait distinguer entre les différentes longueurs de clé.
-
prf identifie la fonction pseudoaléatoire sous-jacente. Il DOIT être un ID d'algorithme avec un OID dans l'ensemble PBKDF2-PRFs, qui pour cette version de PKCS #5 DOIT consister en id-hmacWithSHA1 (voir l'Annexe B.1.1) et tous les autres OID définis par l'application.
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 fonction pseudoaléatoire par défaut est HMAC-SHA-1:
algid-hmacWithSHA1 AlgorithmIdentifier {{PBKDF2-PRFs}} ::=
{algorithm id-hmacWithSHA1, parameters NULL : NULL}