L’étape Extract compresse le matériel de clé d’entrée, avec un sel, en une clé pseudo-aléatoire PRK = HMAC(salt, IKM) ; l’étape Expand l’étire en matériel de clé de sortie OKM = T(1) ‖ T(2) ‖ … avec T(i) = HMAC(PRK, T(i−1) ‖ info ‖ i), jusqu’à 255 fois la longueur du condensat (8160 octets avec SHA-256). La chaîne info sépare les clés destinées à des usages différents, de sorte qu’un même secret ne produise jamais deux fois la même clé.
Toute la dérivation des clés de TLS 1.3 (key schedule) repose sur HKDF avec des étiquettes (HKDF-Expand-Label, RFC 9846 §7.1) ; HPKE, Signal, Noise, MLS et QUIC l’utilisent aussi, et le NIST approuve la même construction en deux étapes dans la SP 800-56C Rev. 2.
HKDF n’est pas une fonction de hachage de mots de passe : elle est rapide par conception, et lui fournir un mot de passe à faible entropie n’offre donc aucune protection contre les tentatives pour le deviner. Utilisez Argon2id, scrypt ou PBKDF2 pour les mots de passe, et HKDF pour les secrets à forte entropie.