Dérivation de clé HKDF
Dérivation de clé Extract-Expand basée sur HMAC RFC 5869
Documentation HKDF
HKDF (Fonction de dérivation de clé Extract-and-Expand basée sur HMAC) est définie dans RFC 5869. Elle fournit une méthode robuste pour dériver des clés cryptographiques à partir de matériel de clé d'entrée en utilisant un processus en deux étapes : Extraction et Expansion.
HKDF est largement adopté dans les protocoles de sécurité modernes, notamment TLS 1.3, Signal Protocol, Noise Protocol Framework et SSH. Sa séparation claire des phases d'extraction et d'expansion le rend particulièrement adapté à la dérivation de hiérarchies de clés.
Phase d'extraction : HKDF-Extract(salt, IKM) → PRK
La phase d'extraction concentre l'entropie potentiellement dispersée du matériel de clé d'entrée (IKM) en une clé pseudo-aléatoire (PRK) de longueur fixe :
- Prend le sel (optionnel, par défaut HashLen zéros) et l'IKM en entrée
- Calcule PRK = HMAC-Hash(sel, IKM)
- La longueur du PRK égale la longueur de sortie du hachage (32 octets pour SHA-256)
- Le sel agit comme clé pour HMAC, renforçant l'extraction
Phase d'expansion : HKDF-Expand(PRK, info, L) → OKM
La phase d'expansion étire le PRK en matériel de clé de sortie (OKM) de la longueur souhaitée :
- Prend le PRK, l'info (contexte/label) et la longueur de sortie souhaitée L
- Calcule itérativement T(i) = HMAC-Hash(PRK, T(i-1) | info | compteur)
- Concatène les résultats : OKM = T(1) | T(2) | ... | T(N)
- La longueur maximale de sortie est 255 × HashLen octets
Cas d'utilisation courants
- Planification de clés TLS 1.3 : dérivation des secrets de trafic, clés de handshake et clés d'application
- Signal Protocol : dérivation des clés de chaîne et clés de message à partir de secrets partagés
- Échange de clés SSH : dérivation des clés de chiffrement et d'intégrité post-ECDH
- Hiérarchie de clés : dérivation de plusieurs clés à usage spécifique à partir d'un secret maître
HKDF vs PBKDF2
| Caractéristique | HKDF | PBKDF2 |
|---|---|---|
| Standard | RFC 5869 | RFC 8018 |
| Type d'entrée | Secrets partagés, sorties DH | Mots de passe utilisateur |
| Itérations | Passage unique | Nombreuses (10K-1M) |
| Vitesse | Rapide | Intentionnellement lent |
| Paramètre Info | Oui (liaison de contexte) | Non |
| Cas d'utilisation principal | Entrée haute entropie | Mots de passe faible entropie |
Considérations de sécurité
- HKDF suppose que l'IKM contient déjà suffisamment d'entropie ; ne pas utiliser avec des mots de passe faibles
- Le paramètre info doit identifier de manière unique l'utilisation prévue de la clé (séparation de contexte)
- Le sel est optionnel mais recommandé pour extraire plusieurs clés du même IKM
- Le PRK ne doit jamais être utilisé directement ; toujours utiliser la phase d'expansion pour dériver les clés finales
Références techniques
Outils Connexes
Dérivation de Clé PBKDF2
Dérivez des clés de chiffrement sécurisées à partir de mots de passe avec PBKDF2 SHA-256/384/512, conforme OWASP
Générateur HMAC
Outil de génération HMAC en ligne supportant MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3 et RIPEMD-160
Cryptage/Décryptage AES
Crypter et décrypter du texte en toute sécurité à l'aide de l'algorithme AES
Générateur de hachage SHA
Outil en ligne de génération de hachage SHA supportant SHA-1, SHA-256, SHA-384, SHA-512