Aller au contenu principal

2.1. Use of Retransmission Timers

2.1. Use of Retransmission Timers

Tous les messages IKE existent par paires : une requête et une réponse. L'établissement d'une IKE SA comporte normalement deux échanges. Une fois l'IKE SA établie, chaque extrémité de l'Association de sécurité peut initier des requêtes à tout moment, et plusieurs requêtes et réponses peuvent être « en vol ». Chaque message est toutefois étiqueté comme requête ou réponse, et pour chaque échange une extrémité est l'initiateur et l'autre le répondant.

Pour chaque paire de messages IKE, l'initiateur est responsable de la retransmission en cas de délai d'attente. Le répondant NE DOIT JAMAIS retransmettre une réponse sauf s'il reçoit une retransmission de la requête. Dans ce cas, le répondant DOIT ignorer la requête retransmise sauf dans la mesure où elle provoque une retransmission de la réponse. L'initiateur DOIT mémoriser chaque requête jusqu'à la réponse correspondante. Le répondant DOIT mémoriser chaque réponse jusqu'à recevoir une requête dont le numéro de séquence est supérieur ou égal au numéro de la réponse plus la taille de sa fenêtre (Section 2.3). Pour économiser la mémoire, les répondants PEUVENT oublier la réponse après quelques minutes. Si le répondant reçoit une requête retransmise dont il a déjà oublié la réponse, il DOIT ignorer la requête (sans tenter par exemple de construire une nouvelle réponse).

IKE est fiable : l'initiateur DOIT retransmettre une requête jusqu'à réception de la réponse correspondante ou jusqu'à considérer l'IKE SA comme ayant échoué. Dans ce dernier cas, l'initiateur supprime tout état lié à l'IKE SA et aux Child SA négociées avec elle. Une retransmission de l'initiateur DOIT être bit à bit identique à la requête d'origine : tout à partir de l'en-tête IKE (SPI initiateur de l'IKE SA) doit être identique ; les éléments avant (en-têtes IP et UDP) peuvent différer.

Les retransmissions de la requête IKE_SA_INIT nécessitent un traitement particulier. Lorsqu'un répondant reçoit une requête IKE_SA_INIT, il doit déterminer s'il s'agit d'une retransmission liée à une IKE SA « semi-ouverte » existante (retransmettre la même réponse), d'une nouvelle requête (créer une nouvelle IKE SA et une réponse neuve), ou d'une IKE SA existante où la requête IKE_AUTH a déjà été reçue (ignorer).

Il ne suffit pas d'utiliser le SPI initiateur et/ou l'adresse IP pour distinguer ces cas : deux pairs derrière un même NAT pourraient choisir le même SPI initiateur. Un répondant robuste effectue la recherche d'IKE SA sur le paquet entier, son hachage ou la charge Ni.

La politique de retransmission des messages unidirectionnels diffère légèrement : aucun accusé de réception n'étant envoyé, il ne faut pas retransmettre gratuitement. Comme ce sont des erreurs, il est logique de les envoyer une fois par paquet « fautif » et de ne retransmettre que si d'autres paquets fautifs arrivent. Il reste pertinent de limiter ces retransmissions.