Vérificateur DNSSEC

Vérifiez la chaîne de confiance DNSSEC d'un domaine - enregistrements DS, DNSKEY et RRSIG, et si un résolveur peut les valider de bout en bout.

Vérification en direct via DNS-over-HTTPS (résolveurs publics Cloudflare et Google). Aucune donnée n'est conservée.

Guide

DNSSEC (RFC 4033/4034/4035) ajoute une chaîne de signatures numériques par-dessus le DNS classique, afin qu'un résolveur puisse prouver cryptographiquement que la réponse reçue est bien celle publiée par le propriétaire de la zone, et non une réponse falsifiée ou modifiée en chemin.

Pourquoi le DNS classique en avait besoin

Le DNS classique n'intègre aucune authentification. Un résolveur pose une question, reçoit une réponse en UDP, et n'a aucun moyen de confirmer qu'elle provient bien du serveur faisant autorité plutôt que d'un attaquant ayant deviné la requête et renvoyé une réponse falsifiée avant la vraie. Les attaques par empoisonnement de cache type Kaminsky fonctionnent précisément parce que rien dans le protocole ne garantit l'origine d'une réponse, en dehors de l'identifiant de transaction qui correspond. DNSSEC comble cette faille non pas en chiffrant quoi que ce soit (les réponses restent tout aussi visibles sur le réseau) mais en attachant une signature à chaque ensemble d'enregistrements, afin qu'un résolveur puisse vérifier l'authenticité même sur un chemin réseau non fiable.

Cette signature doit pouvoir être vérifiée sans confiance aveugle envers le serveur qui a répondu. DNSSEC règle cela avec une chaîne de confiance qui part de la racine DNS et suit le même chemin de délégation que le DNS classique utilise déjà, jusqu'à la zone interrogée : elle ajoute des signatures et des enregistrements de clés aux serveurs déjà interrogés, pas de nouveaux serveurs.

  • DNSSEC authentifie les réponses DNS, il ne les chiffre pas : la requête et la réponse restent visibles pour quiconque
  • La chaîne de confiance suit le chemin de délégation existant (racine → TLD → domaine), elle n'introduit pas de hiérarchie séparée
  • Un résolveur validant obtient soit une signature qui se vérifie, soit rien : il n'existe pas de confiance partielle
  • Un domaine sans aucun enregistrement DNSSEC est simplement non signé, ce qui est l'état par défaut et non une erreur en soi

DNSKEY, DS, RRSIG : trois enregistrements, trois rôles

Un enregistrement DNSKEY porte la clé publique de signature d'une zone. La plupart des zones en publient deux : une Zone Signing Key (ZSK) qui signe les ensembles d'enregistrements courants, et une Key Signing Key (KSK) qui signe l'ensemble des DNSKEY eux-mêmes. Cette séparation permet de faire tourner la ZSK fréquemment sans toucher à la KSK, la seule dont la zone parente doit avoir connaissance. Le rdata du DNSKEY porte des flags (257 marque une KSK via le bit Secure Entry Point, 256 marque une ZSK), un champ protocole fixé à 3, un numéro d'algorithme et la clé publique elle-même.

Un enregistrement DS (Delegation Signer) vit dans la zone parente, pas dans l'enfant : un hachage de la KSK de la zone enfant, publié là où le parent porte déjà les enregistrements NS de l'enfant. C'est le véritable maillon de la chaîne de confiance : un résolveur qui fait déjà confiance au parent peut récupérer le DS de l'enfant, calculer le hachage de la DNSKEY présentée par l'enfant, et vérifier qu'ils correspondent avant de faire confiance à quoi que ce soit signé par cette zone. Sans DS chez le parent, la chaîne s'arrête là, même si la zone enfant est elle-même parfaitement signée.

Un enregistrement RRSIG est la signature attachée à un ensemble d'enregistrements signé : un RRSIG par type d'enregistrement et par zone, couvrant tous les enregistrements de ce type à ce nom en une seule signature. Son rdata porte le type couvert, l'algorithme et le key tag identifiant quelle DNSKEY l'a produit, des dates d'expiration et d'entrée en vigueur, et les octets de signature eux-mêmes. Les signatures sont volontairement limitées dans le temps : une zone se re-signe selon un calendrier de rotation, ce qui borne la durée pendant laquelle une signature capturée resterait rejouable si elle avait fuité hors de sa fenêtre prévue.

EnregistrementOù il vitCe qu'il prouve
DNSKEYDans la zone signée elle-mêmeLa ou les clés publiques utilisées pour signer les enregistrements de cette zone
DSDans la zone parenteUn hachage de la KSK de l'enfant, le véritable maillon vers le haut de la chaîne de confiance
RRSIGDans la zone signée, aux côtés de chaque type d'enregistrement signéUne signature limitée dans le temps, couvrant un type d'enregistrement à un nom donné

Ce que signifient réellement le flag AD et le statut de la chaîne

Un résolveur validant qui vérifie avec succès toute la chaîne d'une zone (le DS chez le parent correspondant au hachage de la DNSKEY de l'enfant, le RRSIG se vérifiant contre cette DNSKEY, jusqu'à la racine) positionne le bit AD (Authenticated Data) sur sa réponse. C'est ce bit que la plupart des applications lisent réellement : un résolveur quelque part sur le chemin a effectué le travail cryptographique et la réponse a passé la vérification. Un résolveur qui obtient un DS mais ne peut pas terminer la validation, ou qui reçoit des enregistrements sans aucune signature, ne positionne pas AD.

Cet outil rapporte trois états de chaîne. Secure signifie que la zone est signée et que le résolveur a validé la chaîne de bout en bout (AD positionné). Unsigned signifie qu'aucun enregistrement DS ou DNSKEY n'a été trouvé, l'état par défaut de la grande majorité des domaines, non un défaut mais l'absence d'activation volontaire. Insecure signifie que la zone porte des enregistrements DNSSEC mais que le résolveur n'a pas obtenu de réponse validée : le plus souvent un DS absent ou périmé chez le parent ne laisse rien à authentifier, et c'est aussi là que se manifeste ici un véritable échec de validation. Ce cas d'échec est celui que DNSSEC existe pour détecter (clé incohérente, RRSIG expiré ou réponse altérée, ce que la RFC 4033 nomme bogus), et un résolveur validant est censé refuser purement et simplement une telle réponse plutôt que de la transmettre comme si de rien n'était.

Le choix d'algorithme ne change rien à cette logique mais affecte la longévité : RSA/SHA-256 (algorithme 8) reste le plus largement déployé, tandis qu'ECDSA P-256 (algorithme 13) et Ed25519 (algorithme 15) produisent des signatures et des clés bien plus courtes pour une marge de sécurité équivalente, ce qui explique pourquoi les déploiements récents les privilégient de plus en plus face à RSA.

Ce que la signature protège, et ce qu'elle ne protège pas

La garantie de DNSSEC est étroite : si une réponse arrive avec AD positionné, cet ensemble d'enregistrements est bien celui que le propriétaire de la zone a réellement signé, non modifié en chemin. Cela ne dit rien sur la fiabilité du contenu, sur la bonne configuration d'un serveur mail listé dans un MX, ou sur la sécurité d'un site derrière un enregistrement A : autant de questions distinctes que DNSSEC n'a jamais eu vocation à trancher.

Cela ne masque rien non plus : requête et réponse signée circulent en clair, exactement comme en DNS non signé. La confidentialité est un problème distinct, traité par DNS-over-HTTPS ou DNS-over-TLS au niveau transport, orthogonal à DNSSEC et couramment déployé en complément plutôt qu'à sa place.

Questions fréquentes

Quelle est la vraie différence entre une KSK et une ZSK ?

Les deux sont des enregistrements DNSKEY, distingués par leur champ flags : 257 marque une Key Signing Key (le bit Secure Entry Point est positionné), 256 marque une Zone Signing Key. La ZSK signe au quotidien les ensembles d'enregistrements courants de la zone ; la KSK n'a qu'un rôle, signer l'ensemble des DNSKEY de la zone. Cette séparation permet de faire tourner la ZSK selon un calendrier court sans avoir à mettre à jour le DS chez le parent à chaque fois, puisque seul le hachage de la KSK y est publié.

Pourquoi l'enregistrement DS vit-il dans la zone parente plutôt que dans l'enfant ?

Le DS est ce qui fait réellement chaîner la chaîne de confiance. Un résolveur fait déjà confiance à la zone parente (ayant suivi la délégation depuis la racine), donc un DS publié chez le parent (un hachage de la KSK de l'enfant) permet d'étendre cette confiance d'un niveau sans que le résolveur ait à faire confiance à la zone enfant sans condition au préalable. Si le DS ne vivait que dans la zone enfant, aucune partie indépendante ne garantirait sa clé, et la signature ne serait pas plus fiable qu'une réponse non signée.

Mon domaine affiche des enregistrements DNSKEY et RRSIG mais le statut de la chaîne n'est pas secure, pourquoi ?

Cette combinaison signifie presque toujours que le DS est absent chez le parent (le bureau d'enregistrement ne l'a pas reçu, ou il n'a jamais été soumis après l'activation de la signature), ou que le parent porte un DS qui ne correspond plus à la DNSKEY actuelle après une rotation de clé. La zone elle-même est correctement signée, mais rien ne la relie à la confiance déjà établie chez le parent, donc un résolveur validant n'a aucune base pour l'authentifier. Cet outil signale ce cas comme insecure (signée, mais chaîne non validée) plutôt que secure.

Activer DNSSEC rend-il mon site plus rapide ou mes emails mieux délivrés ?

Non, pas directement. DNSSEC authentifie les réponses DNS contre la falsification ; cela n'a aucun effet sur le temps de chargement d'une page, et aucun fournisseur mail majeur n'exige actuellement DNSSEC comme signal de délivrabilité au même titre que SPF, DKIM ou DMARC. Sa valeur consiste à se défendre contre l'usurpation au niveau DNS et l'empoisonnement de cache, un modèle de menace différent de la performance ou de l'authentification des emails.

Pourquoi une signature a-t-elle une date d'expiration ?

Les enregistrements RRSIG portent une date d'entrée en vigueur et une date d'expiration afin qu'une signature capturée ou ayant fuité ne puisse pas être rejouée indéfiniment. L'opérateur d'une zone re-signe les enregistrements selon un calendrier de rotation, bien avant l'expiration (automatisé par le logiciel DNS dans la quasi-totalité des déploiements réels), ce qui borne la fenêtre pendant laquelle une signature compromise ou périmée pourrait encore se vérifier si elle était réutilisée en dehors de sa durée de vie prévue.

DNSSEC peut-il faire cesser complètement la résolution d'un domaine ?

Oui, c'est le mode de panne opérationnel le plus courant : si un DS chez le parent reste pointé vers une clé retirée après une rotation, ou si les signatures d'une zone expirent parce que la re-signature n'était pas automatisée, les résolveurs validants traiteront toute réponse pour cette zone comme bogus et refuseront de la renvoyer, tandis que les résolveurs non validants continueront de fonctionner normalement. C'est pourquoi les déploiements DNSSEC s'appuient fortement sur la signature et la rotation automatisées plutôt que sur une gestion manuelle des clés.

Outils liés