Résumé

  • Le mode entrelacé reporte dans un paquet ultérieur l’horodatage d’émission plus fidèle d’un paquet antérieur ; la mesure dépend donc d’un état continu entre deux échanges.
  • RFC 9769 impose unicité, usage unique, contrôles de mode et retour au mode de base afin qu’une valeur précise ne soit jamais rattachée à la mauvaise histoire.
  • La concordance du champ d’origine ne prouve ni l’identité du pair, ni l’absence d’un retard asymétrique, ni l’acceptation de l’échantillon, ni la correction effective de l’horloge.

Une carte réseau peut savoir exactement quand un paquet franchit son seuil. Le processus NTP, lui, a déjà remis ce paquet au noyau. L’information la plus fidèle existe donc, mais elle arrive trop tard pour être inscrite dans le message qu’elle décrit.

RFC 9769 ne masque pas ce paradoxe. Il le déplace dans le temps : la réponse suivante transporte l’instant d’émission de la réponse précédente. Ce choix économise un paquet correctif, évite une amplification et réutilise l’en-tête NTP existant. Il transforme cependant une mesure locale en chaîne de garde distribuée.

La question n’est plus seulement « quelle heure la carte a-t-elle vue ? ». Il faut demander : à quel paquet cette heure appartient-elle, quel état permet de le démontrer, cet état a-t-il déjà servi et que fait-on s’il a disparu ?

Un chiffre plus fin, une dépendance plus longue

Dans l’échange NTPv4 de base, quatre instants alimentent le calcul du décalage et du délai aller-retour : départ de la requête chez le client, réception chez le serveur, départ de la réponse, réception chez le client. Le troisième instant est difficile à capturer proprement. Une valeur écrite en espace utilisateur précède les files d’attente, les appels système, le pilote et le matériel. Un horodatage matériel est plus proche du fil, mais n’est disponible qu’une fois l’émission réalisée.

Le mode entrelacé fait circuler cette connaissance tardive lors du cycle suivant. Il n’ajoute ni champ ni négociation explicite. Les champs d’origine, de réception et d’émission conservent leur taille, mais changent de relation. Le gain ne vient donc pas d’un nombre magique. Il vient de la possibilité de raccorder un événement observé après coup au bon échange.

C’est une spécification initiale minimale au sens de Heng Lu : une petite modification partage ce que les deux extrémités peuvent vérifier. Le reste demeure local. Le protocole n’ordonne ni la source à retenir, ni le réglage de l’horloge, ni l’usage métier de cette heure.

Le champ d’origine indexe une mémoire

En mode client/serveur entrelacé, le client reprend l’horodatage de réception envoyé par le serveur dans la dernière réponse valide et le place dans le champ d’origine de la requête suivante. Le serveur cherche cette valeur dans les couples réception/émission qu’il a conservés. Une concordance lui permet de retrouver l’heure d’émission exacte de la réponse antérieure.

Cette valeur agit comme une clé de corrélation. Elle ne constitue pas une identité. RFC 9769 autorise une séparation de l’état par adresse IP, mais déconseille de le séparer par port, car RFC 9109 permet au client de changer de port UDP à chaque requête. Un NAT, une adresse partagée ou un chemin ECMP suffit à montrer pourquoi l’adresse réseau ne doit pas devenir un sujet juridique ou organisationnel.

La concordance prouve donc une proposition limitée : une requête présente une valeur que le serveur reconnaît dans son état retenu. Sans authentification, elle ne dit pas qui la présente ni avec quelle autorité.

L’unicité protège la filiation

Deux réponses ne doivent pas pouvoir partager le même identifiant temporel au point de rendre leur filiation indécidable. RFC 9769 exige des valeurs de réception et d’émission suffisamment uniques et interdit qu’elles soient égales dans un paquet utilisé pour détecter le mode. Si la résolution de l’horloge ne suffit pas, une unité fractionnaire NTP — environ un quart de nanoseconde — peut distinguer les valeurs.

Cette unité n’ajoute pas une observation physique. Elle protège l’unicité du protocole. Confondre ce rôle avec une précision mesurée serait une erreur de couche : le même champ sert à la fois de temps et de poignée de corrélation.

Une concordance doit en outre être consommée. Le serveur ne réutilise pas le même horodatage de réception pour reconnaître plusieurs requêtes entrelacées. L’usage unique empêche qu’un morceau d’histoire ouvre plusieurs branches incompatibles.

Quand l’état manque, la réponse doit être moins ambitieuse

Le premier échange est nécessairement en mode de base. Il crée l’état dont dépend le suivant. Le serveur peut limiter sa mémoire en supprimant les vieux couples. Une perte de paquet reste récupérable tant que le couple pertinent existe. Lorsqu’il a été évincé ou déjà utilisé, le serveur ne choisit pas la valeur « la plus proche ». S’il répond, il revient au mode de base et prépare un futur échange entrelacé.

Cette dégradation est un acte de rigueur. Elle affirme moins parce que la preuve disponible permet moins. Une exploitation saine doit rendre le retour au mode de base visible. Mélanger toutes les mesures sous l’étiquette « horodatage matériel » fabriquerait une continuité que le protocole a précisément refusé d’inventer.

La mémoire est aussi une surface de disponibilité. Des requêtes nombreuses, usurpées ou rejouées peuvent pousser le serveur à abandonner des couples utiles. Le RFC dit explicitement que les clients ne doivent pas dépendre de la capacité permanente du serveur à répondre en mode entrelacé. La précision est opportuniste ; l’interopérabilité de base est obligatoire.

Deux réponses valides forment la transaction

Une mesure entrelacée exige deux réponses valides consécutives. Entre les deux, le client doit préserver les valeurs qui permettront de refermer la chaîne. Une réponse invalide ne devrait pas écraser cet état, sous peine de perdre une mesure future pourtant correcte.

Le journal d’exploitation devrait donc garder davantage qu’un décalage final : identifiant d’association, empreintes des deux paquets, mode détecté, résultat de la concordance, âge du couple, raison d’éviction, perte observée, usage unique et ensemble des quatre instants finalement choisi.

RFC 9769 autorise deux ensembles de calcul. Celui recommandé pour les clients qui filtrent selon le délai décrit l’échange précédent. L’autre vise un décalage plus actuel, mais étend l’intervalle entre certaines observations ; le délai devient alors plus sensible à l’erreur de fréquence entre les deux horloges. « Plus actuel » et « plus stable » sont deux objectifs distincts. Le protocole rend le choix possible ; l’exploitant en porte la responsabilité.

Trois modes, trois contrats de garde

Le mode symétrique impose des contraintes supplémentaires. Les pairs peuvent émettre à des rythmes différents ; une réponse manquante peut alors associer l’émission distante à la mauvaise réception locale. L’entrelacement devrait y être désactivé par défaut, activé explicitement et utilisé seulement lorsque la séquence des émissions satisfait les conditions du RFC.

En diffusion, le paquet porte son heure d’émission approximative et, dans le champ d’origine, l’heure plus exacte du paquet précédent. Un client compatible compare cette valeur au paquet antérieur et écarte l’entrelacement si l’écart dépasse sa limite. La diffusion ne fournit pas à elle seule le délai du chemin ; cette mesure demande un échange client/serveur.

Dire seulement « interleaved=true » efface ces différences. Le type de mode, la séquence et la provenance de chaque instant sont nécessaires pour interpréter le résultat.

Corrélation, authentification et délai restent séparés

Une valeur d’origine imprévisible rend certaines attaques hors chemin plus difficiles. Elle n’est pas une signature. RFC 9769 recommande de ne pas divulguer les horodatages de réception et de randomiser tous les bits des horodatages de requête. RFC 8633 demande de surveiller les discordances d’origine et rappelle que des interfaces de contrôle peuvent révéler l’état attendu. L’étude de sécurité de NTP montre pourquoi une valeur prévisible ou divulguée affaiblit la défense hors chemin.

Network Time Security ajoute une authentification cryptographique. Même NTS ne supprime pas l’attaque par retard asymétrique : un adversaire sur le chemin peut retarder un paquet sans modifier son contenu authentifié. RFC 7384 et RFC 8915 maintiennent donc le délai, la diversité des sources et la topologie dans une couche de décision distincte.

La chaîne complète va du paquet analysé au couple retrouvé, puis à l’identité authentifiée, à la plausibilité du chemin, au filtre de source, à la politique de discipline de l’horloge et enfin à l’effet applicatif. Une preuve antérieure ne devient jamais le reçu automatique de l’étape suivante.

La précision oblige à mieux expliquer le réel

Plus un nombre comporte de décimales, plus une organisation est tentée de lui donner une autorité qu’il ne possède pas. RFC 9769 enseigne l’inverse. La meilleure heure devient crédible parce que son contexte est plus strict, pas parce que son affichage est plus fin.

La primauté du code en fonctionnement exige alors plusieurs traces : quel mode a réellement fonctionné, quel couple a été retrouvé, quel pair a été authentifié, quel échantillon a survécu à la sélection, quelle action a été appliquée à l’horloge et quel système dépendant a observé un effet. Le RFC publie un mécanisme. Seule l’exécution produit ces reçus.

Sources

  1. RFC 9769 — NTP Interleaved Modes
  2. RFC 5905 — Network Time Protocol Version 4
  3. RFC 9109 — NTPv4 Port Randomization
  4. RFC 7384 — Security Requirements of Time Protocols
  5. RFC 8633 — Network Time Protocol Best Current Practices
  6. RFC 8915 — Network Time Security for NTP
  7. The Security of NTP's Datagram Protocol
  8. Heng Lu — Running-Code Primacy
  9. Heng Lu — Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption
  10. Heng Lu — On Reality Layers, Symbolic Power, and Why Clarity Feels So Hostile