Résumé

  • draft-ietf-quic-address-discovery-01 permet à un pair de déclarer l’adresse source et le port qu’il observe pour chaque chemin QUIC ; le texte prévient pourtant qu’un pair ne peut généralement pas être tenu pour exact.
  • Le bon registre conserve l’observateur, le chemin, la connexion, la séquence et les corroborations ; il ne transforme pas cette déclaration en adresse publique canonique, en preuve de NAT ou en autorisation d’agir.

Au milieu d’une réunion d’incident, une valeur change dans le tableau de bord. L’ancienne adresse disparaît, la nouvelle reçoit un badge vert et quelqu’un demande : « Pourquoi notre adresse publique a-t-elle changé ? »

La question contient déjà une conclusion que les données ne fournissent pas. Le système ne possède pas forcément une adresse publique unique. Il possède une déclaration : à cet instant, depuis ce chemin, ce pair affirme avoir vu telle adresse et tel port.

La révision 01 de QUIC Address Discovery, datée du 15 août 2026, formalise précisément ce type de déclaration. C’est un Internet-Draft actif du groupe de travail QUIC, annoncé pour la voie Standards Track, mais ce n’est ni un RFC ni une preuve de déploiement, d’interopérabilité ou d’adoption. Son intérêt tient autant à ce qu’il permet qu’à la limite qu’il formule : le canal peut être protégé sans que l’observation soit vraie.

Le dehors dépend de l’endroit d’où l’on regarde

Une application connaît son socket local. Elle ignore souvent l’adresse de transport réflexive visible après un NAT, une passerelle opérateur, un équilibreur de charge ou une autre frontière. STUN résout depuis longtemps une partie de ce problème en demandant à un serveur distant de rapporter l’adresse source reçue. Le projet propose de porter cette observation directement dans QUIC.

L’intégration apporte des bénéfices concrets. La protection TLS 1.3 de QUIC masque le contenu à l’observateur passif. Le trafic n’exhibe plus le format reconnaissable de STUN. Une architecture qui distribue les paquets au moyen des identifiants de connexion QUIC peut simplifier son aiguillage. Et l’absence de démultiplexage STUN peut faciliter le graissage du bit QUIC.

Mais la confidentialité du message ne rend pas universel le point de vue de celui qui l’envoie. Un pair situé derrière une même façade réseau, dans un autre pays ou sur une autre famille d’adresses peut voir une autre projection. Deux valeurs différentes peuvent être simultanément honnêtes.

Il faut donc bannir l’article défini dans le modèle de données. Ce n’est pas « l’adresse externe » ; c’est « l’adresse observée par P sur le chemin X pendant l’époque Y ».

Négocier un service n’accorde pas une autorité

Le paramètre de transport address_discovery définit trois positions. La valeur 0 propose de fournir des observations sans en demander. La valeur 1 demande à les recevoir sans en fournir. La valeur 2 autorise les deux directions. Une autre valeur reconnue déclenche une erreur de paramètre de transport.

Le mécanisme évite ainsi l’envoi sauvage. Un nœud qui n’a pas demandé d’observation doit fermer la connexion s’il reçoit une trame OBSERVED_ADDRESS. Un répondant qui ne peut pas voir correctement l’adresse réflexive, ou qui risquerait de révéler son réseau interne, devrait refuser d’offrir la fonction.

Cette négociation fixe la capacité et la direction. Elle ne désigne pas le pair comme registre d’adresses. Accepter une observation ne signifie pas autoriser sa publication, son ajout dans une liste blanche ou son utilisation comme destination de bascule.

Le cas du 0-RTT montre pourquoi les durées de vie doivent rester séparées. Les deux extrémités mémorisent la valeur du paramètre ; si le serveur accepte le 0-RTT, il ne peut pas la désactiver ni la modifier pour la connexion reprise. Cette règle protège la cohérence du protocole face aux données précoces. Elle ne rend pas actuelle une adresse observée auparavant. La capacité peut survivre à la reprise alors que le réseau a changé.

Un numéro de séquence n’est pas un horodatage

La trame contient une adresse IPv4 ou IPv6, un port et un numéro de séquence croissant au sein de la connexion. Les trames peuvent arriver dans le désordre ; le récepteur devrait ignorer une observation si une valeur de séquence égale ou supérieure existe déjà pour le même chemin.

Le résultat est utile : une retransmission ancienne n’écrase pas un rapport plus récent. Pourtant, la séquence ne date pas l’événement. Elle n’indique ni le moment où le mappage a changé, ni sa durée probable, ni une modification qui n’aurait pas été rapportée. Elle n’est pas comparable à la séquence d’un autre pair.

OBSERVED_ADDRESS est une trame de sondage qui sollicite un accusé de réception. Sa retransmission doit emprunter le même chemin. Le fournisseur de l’observation doit l’envoyer sur chaque nouveau chemin, y compris celui de la poignée de main, puis peut renouveler le rapport quand l’adresse distante semble changer.

Ce soin lie le rapport à un contexte de transport. Il ne remplace pas la validation de chemin. Dans QUIC, PATH_CHALLENGE transporte une valeur imprévisible et PATH_RESPONSE la renvoie sur le chemin testé. Même ce dialogue ne prouve que l’accessibilité correspondante dans des conditions données. Une simple adresse déclarée ne prouve ni qu’un tiers peut l’atteindre, ni qu’un filtrage acceptera le trafic, ni qu’un service y écoute.

Le désaccord des témoins peut être le bon résultat

Le projet reconnaît qu’un nœud ne peut généralement pas faire confiance à un pair pour rapporter la bonne adresse. Il évoque des pairs de confiance ou la comparaison de plusieurs pairs non fiables, tout en laissant la logique de validation hors périmètre.

Comparer ne consiste pas à compter des réponses identiques. Trois observateurs qui partagent la même infrastructure, le même logiciel ou la même route peuvent reproduire la même erreur. À l’inverse, trois réponses différentes peuvent révéler des mappages dépendants de la destination, une asymétrie, un passage IPv4/IPv6 ou plusieurs niveaux de traduction.

L’exploitation devrait conserver l’ensemble des observations. Pour chacune : identité du pair, connexion, chemin, famille, adresse, port, séquence, heure locale de réception, niveau de confiance et groupe de corroboration. Si une règle choisit une valeur préférée, elle doit être versionnée et laisser visibles les alternatives.

La confiance elle-même doit être bornée. Un pair compétent pour alimenter un diagnostic ne devient pas automatiquement compétent pour modifier une annonce de routage ou une politique de sécurité.

« Pourrait indiquer » n’est pas « démontre »

Le texte dit qu’un changement d’adresse distante pourrait indiquer un rebinding NAT. Ce conditionnel protège plusieurs autres explications : migration, nouvelle interface, décision d’équilibreur, modification de route, manipulation sur le chemin ou déclaration erronée.

Un attaquant sur le chemin peut en outre recopier un paquet du demandeur en lui donnant une fausse adresse source. Des répétitions peuvent provoquer une rafale de trames d’observation et une détection illusoire de rebinding. L’envoi de la réponse sur le chemin où l’adresse a été vue empêche le vrai demandeur de recevoir une trame destinée à une adresse usurpée invalide. Il ne supprime pas le trafic produit par le répondant ni le signal parasite dans son état. D’où la nécessité de limiter le débit et de réutiliser les défenses QUIC contre les rebindings fallacieux.

Un tableau de bord honnête affiche donc « changement observé, cause inconnue ». Il déclenche ensuite un sondage réversible et confronte les témoins. Il ne crée pas une cause pour remplir une case.

Découvrir, joindre et consentir sont trois opérations

ICE collecte des candidats puis réalise des contrôles de connectivité. Le consent freshness vérifie séparément que le destinataire consent toujours à recevoir du trafic. Cette architecture voisine rappelle une vérité générale : connaître une adresse, atteindre un chemin et disposer d’une autorité continue sont trois faits.

L’automatisation doit refléter cette échelle. Une observation peut enrichir la télémétrie ou déclencher une validation. Elle ne devrait pas, seule, publier une entrée publique, remplacer une règle d’accès, conclure qu’il n’existe pas de NAT ou basculer une charge essentielle.

La formulation défendable reste limitée : ce pair authentifié a déclaré cette adresse sur cette connexion et ce chemin, avec cette séquence ; d’autres observateurs ont produit cet ensemble ; un contrôle indépendant a obtenu ce résultat ; le service a ensuite connu cet effet. Le reste est interprétation et doit être nommé comme tel.

Sources et limites

Le corpus rassemble la révision 01, son historique Datatracker, le dépôt du groupe QUIC et les RFC 8489, 9000 à 9002, 9287, 4787, 8445, 7675 et 8085. Il établit le mécanisme et ses limites, pas sa part de déploiement, ses performances, son interopérabilité ni la sincérité d’un pair réel.

Sources