2.13. Génération de matériel de clé
2.13. Génération de matériel de clé
Dans le contexte de la IKE SA, 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 est utilisée pour la construction du matériel de clé pour tous les algorithmes cryptographiques utilisés à la fois dans la IKE SA et les Child SA.
Nous supposons que chaque algorithme de chiffrement et algorithme de protection d'intégrité utilise une clé de taille fixe et que toute valeur de cette taille fixe choisie aléatoirement peut servir de clé appropriée. Pour les algorithmes qui acceptent une clé de longueur variable, une taille de clé fixe DOIT être spécifiée comme partie de la transformation cryptographique négociée (voir la section 3.3.5 pour la définition de l'attribut de transformation de longueur de clé). Pour les algorithmes pour lesquels toutes les valeurs ne sont pas des clés valides (tels que DES ou 3DES avec parité de clé), l'algorithme par lequel les clés sont dérivées de valeurs arbitraires DOIT être spécifié par la transformation cryptographique.
Pour les fonctions de protection d'intégrité basées sur le code d'authentification de message haché (HMAC), la taille de clé fixe est la taille de la sortie de la fonction de hachage sous-jacente.
Il est supposé que les PRF acceptent des clés de toute longueur, mais ont une taille de clé préférée. La taille de clé préférée DOIT être utilisée comme longueur de SK_d, SK_pi, et SK_pr (voir section 2.14). Pour les PRF basées sur la construction HMAC, la taille de clé préférée est égale à la longueur de la sortie de la fonction de hachage sous-jacente. Les autres types de PRF DOIVENT spécifier leur taille de clé préférée.
Le matériel de clé sera toujours dérivé comme la sortie de l'algorithme PRF négocié. Puisque la quantité de matériel de clé nécessaire peut être supérieure à la taille de la sortie de la PRF, la PRF est utilisée de manière itérative. Le terme "prf+" décrit une fonction qui produit un flux pseudo-aléatoire basé sur les entrées d'une fonction pseudo-aléatoire appelée "prf".
Dans ce qui suit, | indique la concaténation. prf+ est défini comme :
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 pour calculer toutes les clés requises ait été produit par prf+. Les clés sont prises à partir de la chaîne de sortie sans égard aux frontières (par exemple, si les clés requises sont une clé Advanced Encryption Standard (AES) de 256 bits et une clé HMAC de 160 bits, et que la fonction prf génère 160 bits, la clé AES proviendra de T1 et du début de T2, tandis que la clé HMAC proviendra du reste de T2 et du début de T3).
La constante concaténée à la fin de chaque fonction prf est un seul octet. La fonction prf+ n'est pas définie au-delà de 255 fois la taille de la sortie de la fonction prf.