2.17. Génération de matériel de clé pour les Child SA
2.17. Génération de matériel de clé pour les Child SA
Une seule Child SA est créée par l'échange IKE_AUTH, et des Child SA supplémentaires peuvent optionnellement être créées dans des échanges CREATE_CHILD_SA. Le matériel de clé pour elles est généré comme suit :
KEYMAT = prf+(SK_d, Ni | Nr)
Où Ni et Nr sont les nonces de l'échange IKE_SA_INIT si cette demande est la première Child SA créée ou les nouveaux Ni et Nr de l'échange CREATE_CHILD_SA si c'est une création ultérieure.
Pour les échanges CREATE_CHILD_SA incluant un échange Diffie-Hellman optionnel, le matériel de clé est défini comme :
KEYMAT = prf+(SK_d, g^ir (new) | Ni | Nr )
où g^ir (new) est le secret partagé de l'échange Diffie-Hellman éphémère de cet échange CREATE_CHILD_SA (représenté comme une chaîne d'octets en ordre big endian remplie avec des zéros dans les bits de poids fort si nécessaire pour la rendre de la longueur du modulus).
Une seule négociation de CHILD_SA peut résulter en de multiples associations de sécurité. Les SA ESP et AH existent par paires (une dans chaque direction), donc deux SA sont créées dans une seule négociation de Child SA pour elles. En outre, la négociation de Child SA peut inclure certains protocoles IPsec futurs en plus de, ou au lieu de, ESP ou AH (par exemple, ROHC_INTEG comme décrit dans [ROHCV2]). Dans tous les cas, le matériel de clé pour chaque Child SA DOIT être pris du KEYMAT étendu en utilisant les règles suivantes :
o Toutes les clés pour les SA transportant des données de l'initiateur vers le répondeur sont prises avant les SA allant du répondeur vers l'initiateur.
o Si plusieurs protocoles IPsec sont négociés, le matériel de clé pour chaque Child SA est pris dans l'ordre dans lequel les en-têtes de protocole apparaîtront dans le paquet encapsulé.
o Si un protocole IPsec nécessite plusieurs clés, l'ordre dans lequel elles sont prises du matériel de clé de la SA doit être décrit dans la spécification du protocole. Pour ESP et AH, [IPSECARCH] définit l'ordre, à savoir : la clé de chiffrement (si elle existe) DOIT être prise des premiers bits et la clé d'intégrité (si elle existe) DOIT être prise des bits restants.
Chaque algorithme cryptographique prend un nombre fixe de bits de matériel de clé spécifié comme partie de l'algorithme, ou négocié dans les payloads SA (voir la section 2.13 pour la description des longueurs de clé, et la section 3.3.5 pour la définition de l'attribut de transformation de longueur de clé).