3.1 The IKE Header (En-tête IKE)
3.1 The IKE Header (En-tête IKE)
Les messages IKE utilisent les ports UDP 500 et/ou 4500, avec un message IKE par datagramme UDP. Les informations du début du paquet jusqu'à l'en-tête UDP sont en grande partie ignorées, sauf que les adresses IP et les ports UDP des en-têtes sont inversés et utilisés pour les paquets de retour. Sur le port UDP 500, les messages IKE commencent immédiatement après l'en-tête UDP. Sur le port UDP 4500, quatre octets de zéros précèdent les messages IKE. Ces quatre octets ne font pas partie du message IKE et ne sont inclus dans aucun champ de longueur ni somme de contrôle définis par IKE. Chaque message IKE commence par l'en-tête IKE, noté HDR dans ce document. Après l'en-tête viennent une ou plusieurs charges utiles IKE, chacune identifiée par un champ Next Payload de la charge utile précédente. L'ordre des charges utiles est déterminé par le champ Next Payload de l'en-tête IKE, puis par le champ Next Payload de chaque charge utile IKE jusqu'à ce qu'un Next Payload nul indique qu'il n'y a plus de charges utiles. Si une charge utile de type "Encrypted" est rencontrée, elle est déchiffrée et son contenu est analysé comme charges utiles supplémentaires. Une charge utile Encrypted DOIT être la dernière du paquet et une charge utile Encrypted NE DOIT PAS en contenir une autre.
Le SPI du répondeur dans l'en-tête identifie une instance d'association de sécurité IKE. Une seule instance IKE peut donc multiplexer des sessions distinctes avec plusieurs pairs, y compris plusieurs sessions par pair.
Tous les champs multi-octets représentant des entiers sont en ordre big endian ("octet de poids fort en premier", ordre réseau).
Le format de l'en-tête IKE est illustré à la figure 4.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IKE SA Initiator's SPI |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IKE SA Responder's SPI |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Payload | MjVer | MnVer | Exchange Type | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: IKE Header Format
-
Initiator's SPI (8 octets) - Valeur choisie par l'initiateur pour identifier une association de sécurité IKE unique. Cette valeur NE DOIT PAS être nulle.
-
Responder's SPI (8 octets) - Valeur choisie par le répondeur pour identifier une association de sécurité IKE unique. Elle DOIT être nulle dans le premier message d'un échange initial IKE (y compris les répétitions avec cookie).
-
Next Payload (1 octet) - Indique le type de charge utile qui suit immédiatement l'en-tête.
-
Major Version (4 bits) - Version majeure du protocole IKE. Les implémentations basées sur cette version DOIVENT mettre la version majeure à 2. Les implémentations IKE/ISAKMP antérieures DOIVENT mettre 1. Les implémentations IKEv2 de ce document DOIVENT rejeter ou ignorer les messages dont la version majeure est supérieure à 2 avec une notification INVALID_MAJOR_VERSION (section 2.5).
-
Minor Version (4 bits) - Version mineure. Les implémentations de cette version DOIVENT mettre 0. Elles DOIVENT ignorer le numéro de version mineure des messages reçus.
-
Exchange Type (1 octet) - Type d'échange. Le tableau suivant reflète la date de publication de RFC 4306; consulter [IKEV2IANA] pour les valeurs à jour.
| Exchange Type | Value |
|---|---|
| IKE_SA_INIT | 34 |
| IKE_AUTH | 35 |
| CREATE_CHILD_SA | 36 |
| INFORMATIONAL | 37 |
- Flags (1 octet) - Options du message indiquées par des bits.
+-+-+-+-+-+-+-+-+
|X|X|R|V|I|X|X|X|
+-+-+-+-+-+-+-+-+
« Défini » signifie 1, « effacé » signifie 0. Les bits X DOIVENT être effacés à l'envoi et ignorés à la réception.
-
R (Response) - Indique une réponse à un message avec le même Message ID. DOIT être effacé dans les requêtes et défini dans les réponses. Un point d'extrémité IKE NE DOIT PAS générer de réponse à un message marqué comme réponse (exception section 2.21.2).
-
V (Version) - Indique une version majeure supérieure à celle du champ. Les implémentations IKEv2 DOIVENT effacer ce bit à l'envoi et l'ignorer à la réception.
-
I (Initiator) - DOIT être défini dans les messages de l'initiateur d'origine de l'IKE SA et effacé dans ceux du répondeur d'origine. Permet au destinataire de savoir quels huit octets du SPI il a générés. Ce bit change selon qui a initié le dernier rekey de l'IKE SA.
-
Message ID (4 octets, non signé) - Identifiant pour la retransmission et l'appariement requête/réponse; essentiel contre la relecture de messages. Voir les sections 2.1 et 2.2.
-
Length (4 octets, non signé) - Longueur totale du message (en-tête + charges utiles) en octets.