Résumé

  • L'option EDNS(0) 12 permet d'allonger un message DNS chiffré. Elle normalise un contenant, pas un résultat de confidentialité : les blocs de 128 octets pour les requêtes et de 468 pour les réponses relèvent d'une recommandation expérimentale de RFC 8467.
  • L'effet dépend des deux extrémités et du transport. Le client dimensionne la requête, le serveur choisit la réponse, TLS, HTTP ou QUIC impose son cadre, et le réseau borne le coût. Le rythme, les adresses et le nombre d'échanges restent observables.

Deux résolveurs peuvent afficher la même option et produire des protections opposées. Le premier arrondit les requêtes au multiple de 128 octets et les réponses au multiple de 468. Le second ajoute toujours seize octets. Les deux messages sont conformes à RFC 7830. Pourtant, le second conserve presque parfaitement les différences d'origine : l'observateur n'a qu'à soustraire une constante connue.

Le chiffrement du transport cache le contenu entre les deux participants. Il ne fait pas disparaître la taille du texte chiffré. Or certains noms, types de RR et ensembles de réponses donnent des couples de tailles caractéristiques. Un adversaire disposant d'un catalogue de trafic clair peut tenter de rapprocher ces silhouettes du flux chiffré.

RFC 7830 apporte une primitive volontairement étroite. Dans le pseudo-RR OPT d'EDNS, le code 12 indique Padding. L'option ne peut apparaître qu'une fois par message. Sa longueur compte les octets ajoutés ; zéro est permis, même si l'en-tête de l'option occupe déjà quatre octets. Les émetteurs devraient employer des zéros, mais les récepteurs doivent accepter toute valeur. Ces octets ne portent aucune sémantique DNS.

La norme ne fixe pas la quantité. Ce silence évite de confondre interopérabilité et politique mondiale. RFC 8467 compare ensuite plusieurs méthodes et recommande à titre expérimental des blocs : le client arrondit la requête à 128 octets, le serveur la réponse à 468. Plusieurs tailles initiales tombent alors dans une même classe visible.

Une classe n'est pas l'absence d'information. Si le pas est public, une requête de 256 octets révèle un intervalle pour la taille initiale. Le moment du départ, l'espacement, le sens et le nombre des messages demeurent. Le flux peut encore être reconnu comme DNS. Du trafic de couverture ou de la gigue viserait d'autres canaux, avec d'autres coûts.

Le serveur ne reçoit pas un ordre illimité. Une requête munie de Padding l'autorise et l'oblige à bourrer la réponse, sauf si la taille UDP annoncée serait dépassée. Sans Padding, le serveur peut encore le faire si le client a annoncé EDNS. Sans EDNS, il ne le peut pas. La permission est donc bornée par la capacité déclarée, non par une promesse abstraite de confidentialité.

Le chemin transforme la politique en problème de fiabilité. Padding est appliqué après les autres options EDNS, puisqu'il consomme l'espace restant. Le calcul exclut les deux octets de longueur propres à DNS sur TCP, faute de quoi un simple changement de transport révélerait une classe différente. Près du MTU, de grands blocs provoquent une fragmentation inutile ; au-delà, ils la rendent certaine en UDP. RFC 7830 interdit le bourrage sur DNS en clair, où le nom reste de toute façon lisible, et avertit du risque d'amplification.

DoH et DoQ déplacent encore la frontière. DoH autorise Padding dans une session HTTPS authentifiée, mais ses en-têtes, cookies, connexions et temporisations fournissent d'autres liens. DoQ peut bourrer le message DNS ou, si l'API QUIC le permet, ajuster le paquet QUIC complet en tenant compte des acquittements et du contrôle de flux.

Il n'existe donc pas de propriétaire unique de la confidentialité. Le client choisit sa requête et son résolveur. Le serveur choisit ses classes de réponse. La bibliothèque de transport contrôle parfois l'enveloppe finale. Le réseau décide ce qui passe sans perte. L'inscription du code 12 chez l'IANA prouve un vocabulaire commun, pas son exécution.

La preuve de terrain est une distribution. Il faut comparer les tailles avant et après, le nombre de messages rassemblés dans chaque classe, les réponses non bourrées, les octets ajoutés, la fragmentation, les nouvelles tentatives et le repli. Une case cochée ne montre pas qu'un ensemble d'anonymat s'est agrandi.