2.13. Generating Keying Material (Génération de matériel de clé)
2.13. Generating Keying Material (Génération de matériel de clé)
Dans le contexte de l'IKE SA (association de sécurité Internet Key Exchange), quatre algorithmes cryptographiques sont négociés: un algorithme de chiffrement, un algorithme de protection d'intégrité, un groupe Diffie-Hellman et une fonction pseudo-aléatoire (PRF). La PRF sert à construire le matériel de clé (keying material) pour tous les algorithmes cryptographiques utilisés dans l'IKE SA et les Child SA.
On suppose que chaque algorithme de chiffrement et de protection d'intégrité utilise une clé de taille fixe et que toute valeur aléatoire de cette taille peut servir de clé. Pour les algorithmes à clé de longueur variable, une taille de clé fixe DOIT être spécifiée dans la transformation cryptographique négociée (voir la section 3.3.5 pour l'attribut de transformation Key Length). Pour les algorithmes où toutes les valeurs ne sont pas des clés valides (comme DES ou 3DES avec parité de clé), l'algorithme dérivant les clés à partir de valeurs arbitraires DOIT être spécifié par la transformation. Pour les fonctions de protection d'intégrité basées sur HMAC (Hashed Message Authentication Code), la taille fixe de clé est celle de la sortie de la fonction de hachage sous-jacente.
On suppose que les PRF acceptent des clés de toute longueur mais ont une taille de clé préférée. La taille préférée DOIT être utilisée pour la longueur de SK_d, SK_pi et SK_pr (section 2.14). Pour les PRF basées sur HMAC, la taille préférée égale la longueur de sortie du hachage sous-jacent. Les autres types de PRF DOIVENT spécifier leur taille préférée.
Le matériel de clé est toujours dérivé comme sortie de la PRF négociée. Comme la quantité nécessaire peut dépasser la taille de sortie de la PRF, celle-ci est utilisée de façon itérative. Le terme "prf+" désigne une fonction produisant un flux pseudo-aléatoire à partir des entrées d'une fonction pseudo-aléatoire appelée "prf".
Ci-dessous, | indique la concaténation. prf+ est défini par:
prf+ (K,S) = T1 | T2 | T3 | T4 | ...
où:
T1 = prf (K, S | 0x01)
T2 = prf (K, T1 | S | 0x02)
T3 = prf (K, T2 | S | 0x03)
T4 = prf (K, T3 | S | 0x04)
...
Cela continue jusqu'à ce que tout le matériel nécessaire aux clés ait été produit. Les clés sont extraites de la chaîne de sortie sans respecter des frontières (par exemple, si des clés AES 256 bits et HMAC 160 bits sont requises et que prf produit 160 bits, la clé AES provient de T1 et du début de T2, la clé HMAC du reste de T2 et du début de T3).
La constante concaténée à chaque appel prf est un seul octet. prf+ n'est pas défini au-delà de 255 fois la taille de sortie de prf.