5. Fonctions de dérivation de clé
- Fonctions de dérivation de clé (KDFs)
La section 8.4 de [RFC9052] contient une description générique des fonctions de dérivation de clé. Ce document définit une structure de contexte unique et une seule KDF. Ces éléments sont utilisés pour tous les algorithmes de destinataire définis dans ce document qui nécessitent un processus KDF. Ces algorithmes sont définis dans les sections 6.1.2, 6.3.1 et 6.4.1.
5.1. Fonction de dérivation de clé Extract-and-Expand basée sur HMAC (HKDF)
L'algorithme de dérivation de clé HKDF est défini dans [RFC5869] et [HKDF].
L'algorithme HKDF prend ces entrées :
secret: Une valeur partagée qui est secrète. Les secrets peuvent être partagés au préalable ou dérivés d'opérations telles qu'un accord de clé Diffie-Hellman (DH).
salt: Une valeur facultative utilisée pour modifier le processus de génération. La valeur de sel peut être publique ou privée. Si le sel est public et transporté dans le message, le paramètre d'en-tête d'algorithme "salt" défini dans le tableau 9 est utilisé. Bien que [RFC5869] suggère que la longueur du sel soit la même que la longueur de la valeur de hachage sous-jacente, toute longueur de sel positive améliorera la sécurité, car différentes valeurs de clé seront générées. Ce paramètre est protégé en étant inclus dans le calcul de la clé et n'a pas besoin d'être authentifié séparément. La valeur de sel n'a pas besoin d'être unique pour chaque message envoyé.
length: Le nombre d'octets de sortie qui doivent être générés.
context information: Informations décrivant le contexte dans lequel la valeur résultante sera utilisée. Rendre ces informations spécifiques au contexte dans lequel le matériel sera utilisé garantit que le matériel résultant sera toujours lié à cette utilisation. La structure de contexte définie à la section 5.2 est utilisée par les KDF dans ce document.
PRF: La fonction pseudo-aléatoire sous-jacente à utiliser dans l'algorithme HKDF. La PRF est codée dans la sélection de l'algorithme HKDF.
HKDF est défini pour utiliser HMAC comme PRF sous-jacente. Cependant, il est possible d'utiliser d'autres fonctions dans la même construction pour fournir une KDF différente qui est plus appropriée dans le monde contraint. Plus précisément, on peut utiliser AES-CBC-MAC comme PRF pour l'étape d'expansion, mais pas pour l'étape d'extraction. Lors de l'utilisation d'un bon secret partagé aléatoire de la bonne longueur, l'étape d'extraction peut être ignorée. Pour les versions de l'algorithme AES, l'étape d'extraction est toujours ignorée.
L'étape d'extraction ne peut pas être ignorée si le secret n'est pas uniformément aléatoire -- par exemple, s'il est le résultat d'une étape d'accord de clé ECDH. Cela implique que la version AES HKDF ne peut pas être utilisée avec ECDH. Si l'étape d'extraction est ignorée, la valeur "salt" n'est pas utilisée dans le cadre de la fonctionnalité HKDF.
Les algorithmes définis dans ce document se trouvent dans le tableau 8.
+==============+===================+========================+
| Nom | PRF | Description |
+==============+===================+========================+
| HKDF SHA-256 | HMAC avec SHA-256 | HKDF utilisant HMAC |
| | | SHA-256 comme PRF |
+--------------+-------------------+------------------------+
| HKDF SHA-512 | HMAC avec SHA-512 | HKDF utilisant HMAC |
| | | SHA-512 comme PRF |
+--------------+-------------------+------------------------+
| HKDF AES- | AES-CBC-MAC-128 | HKDF utilisant AES-MAC |
| MAC-128 | | comme PRF (clé 128 bits)|
+--------------+-------------------+------------------------+
| HKDF AES- | AES-CBC-MAC-256 | HKDF utilisant AES-MAC |
| MAC-256 | | comme PRF (clé 256 bits)|
+--------------+-------------------+------------------------+
Tableau 8 : Algorithmes HKDF