Gestion des clés
IKM : Input Keying Material, matériau de clé d'entrée de HKDF. « Le secret tel qu'il sort de l'échange, brut, inégal et encore incapable de servir de clé », par analogie avec le minerai qu'on apporte à la fonderie avant d'en tirer le moindre lingot.
Rôle : Dans HKDF (RFC 5869, mai 2010), l'IKM est l'entrée de l'étape d'extraction : PRK = HMAC-Hash(sel, IKM). Il peut s'agir du secret partagé d'un échange Diffie-Hellman, d'une clé pré-partagée ou de la concaténation de plusieurs secrets.
Exigence : L'IKM n'a pas besoin d'être uniforme, mais il doit contenir assez d'entropie. HKDF concentre l'aléa, il n'en crée pas : un IKM faible, mot de passe ou valeur devinable, donne une clé faible avec beaucoup d'élégance.
Exemples : Dans TLS 1.3 (RFC 8446), les extractions successives prennent pour IKM la clé pré-partagée puis le secret (EC)DHE. Dans un échange hybride post-quantique, l'IKM concatène les secrets classique et ML-KEM, ce qui garde la clé sûre tant que l'un des deux tient.
Ce qui arrive si on s'en passe
Utiliser l'IKM directement comme clé, sans l'étape d'extraction, revient à chiffrer avec une valeur dont les bits ne sont pas uniformément répartis : le secret brut d'un échange Diffie-Hellman a une structure mathématique qui n'a rien d'aléatoire. Les preuves de sécurité du protocole cessent alors de s'appliquer, et la même valeur finit souvent réutilisée pour plusieurs usages. La faire passer par HKDF-Extract, avec un sel quand on en dispose, puis par HKDF-Expand avec un contexte par usage, règle les deux problèmes.
Explication de la marmotte
Quand deux ordinateurs fabriquent ensemble un secret, ce secret n'est pas encore une bonne clé : certaines de ses parties sont plus prévisibles que d'autres. L'IKM, c'est ce secret brut, la matière première. On le donne à l'outil HKDF, qui le mélange pour en faire une clé bien régulière. Si la matière première est pauvre, par exemple un mot de passe trop simple, aucun mélange ne la rendra solide.
