Aller au contenu principal

2.14. Génération de matériel de clé pour la IKE SA

2.14. Génération de matériel de clé pour la IKE SA​

Les clés partagées sont calculées comme suit. Une quantité appelée SKEYSEED est calculée à partir des nonces échangés pendant l'échange IKE_SA_INIT et du secret partagé Diffie-Hellman établi pendant cet échange. SKEYSEED est utilisé pour calculer sept autres secrets : SK_d utilisé pour dériver de nouvelles clés pour les Child SA établies avec cette IKE SA ; SK_ai et SK_ar utilisés comme clé pour l'algorithme de protection d'intégrité pour authentifier les messages composants des échanges ultérieurs ; SK_ei et SK_er utilisés pour chiffrer (et bien sûr déchiffrer) tous les échanges ultérieurs ; et SK_pi et SK_pr, qui sont utilisés lors de la génération d'un payload AUTH. Les longueurs de SK_d, SK_pi, et SK_pr DOIVENT être la longueur de clé préférée de la PRF convenue.

SKEYSEED et ses dérivés sont calculés comme suit :

SKEYSEED = prf(Ni | Nr, g^ir)

{SK_d | SK_ai | SK_ar | SK_ei | SK_er | SK_pi | SK_pr } = prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr )

(indiquant que les quantités SK_d, SK_ai, SK_ar, SK_ei, SK_er, SK_pi, et SK_pr sont prises dans l'ordre à partir des bits générés par le prf+). g^ir est le secret partagé de l'échange Diffie-Hellman éphémère. g^ir est représenté comme une chaîne d'octets en ordre big endian remplie avec des zéros si nécessaire pour la rendre de la longueur du module. Ni et Nr sont les nonces, dépouillés de tout en-tête. Pour des raisons de compatibilité ascendante historique, il y a deux PRF qui sont traitées spécialement dans ce calcul. Si la PRF négociée est AES-XCBC-PRF-128 [AESXCBCPRF128] ou AES-CMAC-PRF-128 [AESCMACPRF128], seuls les premiers 64 bits de Ni et les premiers 64 bits de Nr sont utilisés dans le calcul de SKEYSEED, mais tous les bits sont utilisés pour l'entrée de la fonction prf+.

Les deux directions du flux de trafic utilisent des clés différentes. Les clés utilisées pour protéger les messages de l'initiateur original sont SK_ai et SK_ei. Les clés utilisées pour protéger les messages dans l'autre direction sont SK_ar et SK_er.