Introduction au DNSSEC

Suite à la récente annonce du déploiement de cette technologie sur des serveurs racines DNS d'ici à une échéance proche, j'ai eu envie de vous faire un rapide article sans prétentions sur DNSSEC.

Rappel des bases du DNS

Le Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine.

Source : Wikipédia

Ce service fonctionne notamment grâce à une structure arborescente et hiérarchique. Pour simplifier et résumer, lorsque l'on veut obtenir l'adresse IP correspondante à www.cyber-securite.fr., le serveur DNS de votre FAI (qui ici par hypothèse ne connaît pas déjà la réponse) va d'abord interroger les serveurs racines (.) puis le serveur TLD (Top Level Domain) gérant la zone .fr et enfin le serveur DNS de 3ème niveau qui lui renverra l'adresse IP correspondante.

Il existe deux grandes familles de serveurs : les serveurs faisant autorité sur leur zone et les résolveurs (récursifs). Les 1ers disposent de l'ensemble des informations de correspondance nom-IP pour sa zone, inscrite dans un fichier (fichier de zone) ou une base de donnée.

Les résolveurs, quant à eux, interrogent les serveurs faisant autorité pour le compte des utilisateurs finaux (notamment clients d'un FAI). Ils ne disposent à l'origine d'aucunes informations, cependant, ils disposent presque toujours d'une fonction de cache qui leur permet de mémoriser les informations afin d'éviter les requêtes trop redondantes sur les serveurs faisant autorité.

Les problèmes de sécurité engendrés par DNS

DNS a été conçu pour être un service disposant de la plus grande disponibilité possible. C'est pourquoi, il utilise le protocole UDP qui travaille en mode non connecté. Autrement dit, il ne nécessite pas l'établissement préalable d'une connexion entre les deux communicants. Sous réserve de produire une réponse à une question attendue par le serveur récursif (query ID et port UDP), ce dernier ne vérifiera pas l'origine de la réponse : la belle attaque Man In The Middle !

Initialement, il n'était pas rare que le port UDP soit toujours identique. La seule sécurité était basée sur le query ID (codé sur 16 bits, donc pas vraiment fiable à long terme). Cette faille a d'ailleurs fait l'objet du RFC 3833 en 2004.

Une attaque de ce type n'étant toutefois pas triviale à cause du Time-To-Live des informations du cache du résolveur. Si celui-ci possédait la vraie réponse, il fallait à l'attaquant attendre son expiration dans le cache avant de tenter une attaque. La faille Kaminsky en 2008 permet d'améliorer ses "chances" en demandant une réponse pour un domaine inexistant. C'est pourquoi, une rustine a été mise en place : le SPR (Source Port Randomization) qui permet de rendre le port aléatoire (sur 16 bits également).

Qu'est ce que le DNSSEC ?

Le DNSSEC est une solution qui permet de corriger ce problème sans modifier le service DNS. Ce qui lui assure une parfaite compatibilité avec les équipements ne disposant pas de cette solution.

Celui-ci utilise la cryptographie asymétrique pour chiffrer les données : c'est à dire le principe de clée privée et clée publique. Avec de pouvoir vérifier l'ensemble des signatures, DNSSEC se base également sur le principe d'arborescence explicité plus haut (principe du Chain Of Trust).

DNSSEC permet donc de vérifier l'authenticité de l'origine des données.

Qu'est ce que cela engendre ?

L'implantation du DNSSEC va engendrer de multiples modifications. Parmi ces dernières, nous pouvons citer :

  • La modification de la taille des paquets

La taille maximale des paquets DNS est à l'origine de 512 octets. Certains pare-feux refusent des paquets de taille supérieure à 512 octets, or l'implantation de DNSSEC va augmenter la taille de ces paquets.

  • La problématique de gestion des clées

Il s'agit là d'une importante problématique puisqu'il s'agit de concilier le quasi-inconciliable : une grande disponibilité des clées et une grande sécurité de stockage.

  • La baisse de robustesse

En complexifiant le processus, le risque d'erreur, notamment humaine, augmente également. En effet, les erreurs de configuration ou par exemple de signature out of date risquent fort de se multiplier.

Pour conclure

Bien que n'étant pas sorti récemment (le DNSSEC en déploiement date de 2005), celui-ci connaît un regain d'intérêt notamment cette année. Certes, il résout de façon efficace le risque de cache poisoning des serveurs récursifs. Cependant, son déploiement ne risque pas d'être de tout repos.

Sources / pour en savoir plus :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

This site uses Akismet to reduce spam. Learn how your comment data is processed.