DNSSEC, abréviation de « Domain Name System Security Extensions », est un protocole amélioré conçu pour garantir l'authenticité des informations fournies par les serveurs DNS. Il exploite la cryptographie à clé publique et les signatures numériques pour remédier aux vulnérabilités de sécurité du protocole DNS traditionnel. Le DNS, développé en 1983, est un système qui résout les noms de domaine (noms d'hôtes) en adresses IP, mais il a été critiqué pour son manque de mécanismes de sécurité robustes. L’une de ses vulnérabilités majeures est sa sensibilité aux attaques d’empoisonnement du cache DNS.
L'infrastructure DNS se compose de deux principaux types de serveurs :
Si des données malveillantes ou incorrectes sont stockées dans le cache (« cache empoisonné »), le serveur de cache DNS pourrait fournir aux clients une adresse IP incorrecte, les redirigeant vers des sites frauduleux. Cette exploitation délibérée est connue sous le nom d’empoisonnement du cache DNS. Cela se produit parce que la communication DNS entre les serveurs utilise le protocole UDP sans état, qui ne nécessite pas de vérification de l'expéditeur. En chronométrant habilement les paquets de réponses falsifiés pour les aligner sur des demandes légitimes, les attaquants exécutent l'empoisonnement du cache.
DNSSEC atténue ce problème en introduisant une validation cryptographique. Les serveurs de contenu DNS faisant autorité génèrent une paire de clés cryptographiques : une clé privée et une clé accessible au public. Lorsqu'il répond à une requête, le serveur utilise sa clé privée pour signer la réponse DNS. Le serveur de cache DNS, à la réception de la réponse, valide la signature numérique à l'aide de la clé publique. Ce processus garantit l’intégrité et l’authenticité des données, empêchant ainsi efficacement les attaques d’empoisonnement du cache DNS.