Résumé

  • Le RFC 6528 conserve la progression de l’espace de séquence TCP, mais masque le lien entre les connexions grâce à une fonction secrète fondée sur les adresses et ports locaux et distants.
  • Le mécanisme réduit la prédiction aveugle hors chemin sans devenir une authentification ; rotation du secret, TIME-WAIT, fuite liée au NAT et choix du port éphémère restent déterminants.

Un numéro de séquence initial doit remplir deux fonctions contradictoires. Il doit avancer pour qu’une nouvelle incarnation de connexion n’accepte pas un ancien segment. Il doit aussi éviter d’annoncer où commencera la connexion suivante. Une horloge globale visible répond au premier besoin tout en trahissant le second.

Le RFC 793 proposait un générateur global de 32 bits avançant d’une unité environ toutes les quatre microsecondes. Le RFC 6528 rappelle que TIME-WAIT et la période de silence de TCP assurent déjà une grande partie de la protection contre les segments périmés. Certaines piles issues de BSD utilisaient pourtant la hausse des ISN pour accepter rapidement une nouvelle incarnation. L’horloge est ainsi devenue à la fois une habitude de compatibilité et une surface de prédiction.

Un attaquant hors chemin n’avait pas toujours besoin de voir la réponse. S’il pouvait estimer l’ISN suivant du serveur à partir d’une connexion précédente, il pouvait forger le dernier ACK de la poignée de main et exploiter un service faisant confiance à l’adresse source. Les anciennes commandes de connexion distante ont largement cédé la place à SSH, mais la confiance fondée sur l’adresse persiste ailleurs. La faiblesse du protocole et celle de l’application se renforçaient.

Choisir chaque ISN au hasard limiterait la prédiction, mais pourrait casser les heuristiques qui attendent une progression monotone. Garder l’état de toute connexion fermée rétablirait la sûreté au prix de mémoire. Le RFC 6528 préserve donc la progression au sein d’une identité de connexion tout en rendant les identités différentes sans relation apparente.

Un décalage privé pour chaque conversation

La recommandation est ISN = M + F(localip, localport, remoteip, remoteport, secretkey). M est le compteur de quatre microsecondes. F est une fonction pseudo-aléatoire appliquée au quadruplet de connexion et à un secret. Le compteur garde le mouvement ; le décalage secret crée un espace apparent distinct pour chaque combinaison d’adresses et de ports.

La propriété essentielle n’est pas la complexité visuelle. F ne doit pas être calculable depuis l’extérieur, sinon l’ISN d’une connexion aiderait à prévoir celui d’une autre. Le quadruplet n’est pas secret : la protection dépend de la clé et de l’impossibilité de reconstruire la sortie sans elle.

Cette séparation évite de mémoriser toute connexion morte. Le même quadruplet continue d’avancer avec M, tandis qu’un autre reçoit un décalage différent. Il ne s’agit pas d’ajouter du hasard à TCP, mais de concilier continuité temporelle et opacité entre connexions.

Le secret possède son propre cycle de vie

Le RFC estime qu’une clé de 128 bits devrait suffire à son modèle et autorise un aléa véritable ou un secret propre à l’hôte. Il cite plusieurs moments de rotation : démarrage, délai écoulé ou usage devenu trop important. Aucun n’est une opération anodine.

Changer la clé modifie l’espace de séquence d’une connexion réincarnée. Sans conservation de l’état fermé, le système peut devoir attendre deux durées maximales de segment. Une mesure de sécurité qui ignore TIME-WAIT risque donc d’abîmer la sûreté temporelle qu’elle devait préserver.

Le texte considère MD5 acceptable pour ce problème étroit de prédiction hors chemin, tout en invitant à évaluer des fonctions plus robustes. Cette appréciation appartient à ce modèle de menace de 2012. Elle ne valide pas MD5 pour l’authentification et ne décrit pas les choix actuels des systèmes.

Un bon ISN n’est qu’un palliatif. Un observateur du début de connexion apprend l’état de séquence ; un adversaire sur le chemin dispose déjà d’un pouvoir supérieur. Le RFC cite IPsec et TCP-AO comme frontières cryptographiques. Il note aussi que plusieurs espaces ISN peuvent aider à compter les hôtes derrière un NAT et que l’aléa des ports éphémères rend le quadruplet plus difficile à deviner.

La source unique est le RFC 6528, publié sur le Standards Track en février 2012. Il remplace le RFC 1948 et met à jour le RFC 793. Il définit une réduction de la prédiction aveugle, pas un état des déploiements, rotations ou attaques actuels.