Cómo funciona DNSSEC — KSK, ZSK, DS, DNSKEY, RRSIG, NSEC explicados
Un recorrido por la cadena de confianza DNSSEC: cómo las claves de firma KSK y ZSK, los registros DS, los registros DNSKEY, las firmas RRSIG y NSEC/NSEC3 trabajan juntos para autenticar respuestas DNS.
TL;DR
DNSSEC funciona firmando cada conjunto de registros de su zona con una clave de firma privada. La Zone-Signing-Key (ZSK) firma todo excepto los registros DNSKEY; la Key-Signing-Key (KSK) firma el conjunto DNSKEY. Un hash de la KSK se publica como registro DS en su zona padre, vinculando su zona a la cadena de confianza global. Los registros RRSIG llevan las firmas, NSEC/NSEC3 demuestran que un nombre no existe, y los resolutores validadores recorren la cadena hasta la clave raíz que viene con su software.
What you'll learn
- Distinguir entre los roles KSK, ZSK y CSK en la firma DNSSEC
- Explicar cómo DNSKEY, DS y RRSIG se combinan en una cadena de confianza
- Entender la negación autenticada con NSEC y NSEC3
- Seguir paso a paso la validación que un resolutor recursivo realiza sobre una respuesta DNSSEC
DNSSEC autentica datos DNS mediante una jerarquía de firmas criptográficas que se encadenan desde un registro de su zona hasta un ancla de confianza codificada en cada resolutor validador. Esta guía recorre las piezas móviles — DNSKEY, DS, RRSIG, NSEC/NSEC3, y los roles KSK/ZSK — a un nivel que le permita razonar sobre despliegues reales sin ser criptógrafo.
Para los procedimientos operativos de rotación (pre-publish ZSK, doble-firma KSK, rotación de algoritmo), continúe en Gestión de claves DNSSEC. Para la introducción de alto nivel sin la mecánica, la página ¿Qué es DNSSEC? es un mejor punto de partida.
Los registros involucrados
DNSSEC introduce cuatro tipos de registros en una zona firmada, más registros DS publicados en la zona padre:
| Registro | Vive en | Propósito |
|---|---|---|
| DNSKEY | Su zona | Parte pública de cada clave de firma (KSK, ZSK o CSK) |
| RRSIG | Su zona | Firma digital sobre un conjunto de registros (un RRSIG por RRset, por clave activa) |
| NSEC / NSEC3 | Su zona | Negación autenticada — demuestra que un nombre no existe |
| DS | Zona padre | Hash de su KSK; el eslabón en la cadena de confianza |
| CDS / CDNSKEY | Su zona | Automatización opcional: indica al padre qué DS publicar (RFC 7344) |
Claves de firma: KSK, ZSK, CSK
DNSSEC ha usado históricamente una división de dos claves: una KSK para operaciones de alto valor y baja frecuencia, y una ZSK para operaciones de alta frecuencia y menor ceremonia. La motivación es puramente operativa — criptográficamente, ambas claves hacen lo mismo (firmar datos con una clave privada, verificar con una pública).
Zone-Signing-Key (ZSK)
La ZSK firma todo en su zona excepto el conjunto de registros DNSKEY. Cuando un resolutor pide los registros A de example.com, la respuesta vuelve con un RRSIG correspondiente firmado por la ZSK. Cada conjunto de registros firmado tiene su propio RRSIG.
Las ZSK típicamente son:
- Más pequeñas (RSA 1024 bits era común en despliegues iniciales; ECDSA P-256 / 256 bits es la norma moderna)
- Rotadas relativamente a menudo (cada 1–3 meses históricamente; algunos operadores ahora omiten rotaciones programadas con almacenamiento de claves fuerte)
- Más fáciles de rotar porque el registro DS de la zona padre no necesita cambiar
Key-Signing-Key (KSK)
La KSK firma solo el conjunto de registros DNSKEY. Ese conjunto contiene la parte pública de cada clave de firma activa en la zona. Al firmar el conjunto DNSKEY con la KSK, vincula cada otra clave en la zona (específicamente, cada ZSK activa) a una clave cuyo hash está publicado en el padre.
Las KSK típicamente son:
- Más grandes (RSA 2048 bits, ECDSA P-256 o Ed25519 son todos comunes)
- Rotadas raramente (cada 1–5 años, o solo ante sospecha de compromiso)
- Más costosas de rotar porque el registro DS en el padre debe actualizarse, lo que involucra al registrador y los tiempos del TLD
Combined Signing Key (CSK)
Una CSK cumple ambos roles en una única clave. La misma clave firma DNSKEY (rol KSK) y otros conjuntos de registros (rol ZSK). Los despliegues modernos usan cada vez más CSK con ECDSA P-256 o Ed25519, porque:
- Las firmas son lo bastante pequeñas para que el coste por consulta sea negligible
- La complejidad operativa es menor (una clave que gestionar, una rotación que coordinar)
- El almacenamiento respaldado por HSM reduce el argumento de seguridad para separar KSK y ZSK
DNScale usa por defecto CSK con ECDSA P-256 para nuevas zonas, que es el estándar para la mayoría de proveedores gestionados modernos.
DNSKEY: Publicar claves públicas en la zona
Cada clave de firma activa tiene su parte pública publicada como registro DNSKEY en el ápice de la zona:
example.com. 3600 IN DNSKEY 257 3 13 oJMR... ; KSK
example.com. 3600 IN DNSKEY 256 3 13 mZXp... ; ZSKDecodificando los campos:
- Banderas (
257o256): el bit 7 (SEP— Secure Entry Point) está activado en la KSK, dando257. La ZSK tiene256. Ambos formatos comparten el bit 8 (Zone Key), que siempre está activo en DNSKEY. - Protocolo (
3): siempre 3 en DNSSEC válido. - Algoritmo (
13aquí):13= ECDSA P-256,8= RSA SHA-256,15= Ed25519. Ver algoritmos DNSSEC IANA para la lista completa. - Clave pública (codificada en base64): el material de clave real.
Un resolutor validador recupera el conjunto DNSKEY al validar cualquier registro de su zona, y usa la clave apropiada (KSK para el RRSIG del DNSKEY mismo, ZSK para todo lo demás).
RRSIG: Las firmas
Cada conjunto de registros firmado en su zona se acompaña de uno o más registros RRSIG — uno por clave de firma activa para ese rol. Un RRSIG se ve así:
example.com. 3600 IN A 192.0.2.1
example.com. 3600 IN RRSIG A 13 2 3600 20260601000000 20260501000000 12345 example.com. 4kQp...Los campos RRSIG:
- Tipo cubierto (
A): el tipo del conjunto de registros que se firma. - Algoritmo (
13): debe coincidir con el algoritmo DNSKEY. - Etiquetas (
2): número de etiquetas en el nombre firmado original. - TTL original (
3600): el TTL que el conjunto tenía cuando se firmó. - Expiración de firma (
20260601000000) e inicio (20260501000000): timestamps UTC. La firma solo es válida en esa ventana. - Etiqueta de clave (
12345): identificador corto de qué DNSKEY de la zona produjo esta firma. Coincide con la etiqueta de clave del DNSKEY correspondiente. - Nombre del firmante (
example.com.): la zona cuya clave firmó esto. - Firma (codificada en base64): la firma criptográfica real.
Las ventanas de expiración de firmas son la razón por la que DNSSEC no es trivial operativamente. Si su servidor autoritativo deja de re-firmar la zona — incluso brevemente —, las firmas empezarán a expirar, los resolutores validadores empezarán a devolver SERVFAIL, y su dominio quedará efectivamente fuera de línea. Los proveedores DNS gestionados re-firman automáticamente; el DNSSEC autoalojado requiere un pipeline de firma funcional.
Registros DS: El enlace al padre
El registro DS (Delegation Signer) es la bisagra que conecta su zona a la cadena de confianza global. Vive en la zona padre (.com, .eu, .de, etc.) y contiene un hash de su KSK. No lo añade a su propia zona — lo publica en su registrador, que lo pasa al registro del TLD.
Un registro DS en la zona padre se ve así:
example.com. 86400 IN DS 12345 13 2 7c89...Campos:
- Etiqueta de clave (
12345): identificador de qué KSK hashea este DS (coincide con la etiqueta de clave DNSKEY). - Algoritmo (
13): debe coincidir con el algoritmo DNSKEY. - Tipo de digest (
2): SHA-256 (2) o SHA-384 (4) — SHA-1 (1) está obsoleto. - Digest (codificado en hex): el hash real.
Cuando un resolutor validador quiere autenticar su zona, recupera el registro DS desde el padre (por ejemplo, desde los servidores .com), luego recupera su conjunto DNSKEY, calcula el hash de la KSK correspondiente, y comprueba que iguala el digest del DS. Si coinciden, el resolutor confía en el conjunto DNSKEY de su zona, y por extensión en los RRSIGs firmados con esas claves.
Este es el único enlace automatizado desde fuera de su zona hacia el material de clave de su zona. Si el DS está mal, la validación DNSSEC falla — o peor, su dominio se vuelve irresoluble para clientes validadores.
NSEC y NSEC3: Negación autenticada
Un problema sutil pero importante: DNSSEC no puede solo firmar los registros que existen. También necesita demostrar, cuando un resolutor pide nonexistent.example.com, que el nombre realmente no existe en lugar de que la respuesta se descarte silenciosamente o se falsifique.
El mecanismo es NSEC (RFC 4034) o NSEC3 (RFC 5155).
NSEC
Los registros NSEC se ordenan alfabéticamente y encadenan los nombres que existen en la zona. Por ejemplo:
alpha.example.com. NSEC gamma.example.com. A NSEC RRSIG
gamma.example.com. NSEC zulu.example.com. A NSEC RRSIG
zulu.example.com. NSEC alpha.example.com. A NSEC RRSIG ; vuelve al inicioUn resolutor que pida beta.example.com recibe el NSEC firmado para alpha.example.com, que demuestra que no hay nada entre alpha y gamma — por tanto beta no existe. La firma sobre el NSEC autentica la respuesta negativa.
La desventaja: los registros NSEC enumeran públicamente cada nombre en la zona. Cualquiera que recorra la cadena NSEC puede construir una lista completa de cada nombre de registro. Esto es "zone walking" y a veces se considera una fuga de privacidad.
NSEC3
NSEC3 registra la misma cadena pero usa nombres hasheados en lugar de nombres en claro, más una cuenta de iteraciones y un salt:
< hash de alpha >.example.com. NSEC3 1 0 10 abcd123... < hash de gamma > A RRSIG NSEC3Los resolutores pueden verificar la negación como antes (calcular el hash del nombre consultado, encontrar qué NSEC3 lo cubre), pero un atacante no puede recorrer trivialmente la zona — tendría que romper cada hash. NSEC3 también soporta opt-out, que permite a los registros saltarse la firma de delegaciones no firmadas para evitar tener que firmar cada subzona inexistente.
Recomendación moderna: NSEC3 con iteraciones=0 y un salt fijo (o sin salt). Cuentas de iteraciones altas añaden coste de CPU sin beneficio significativo de privacidad porque atacantes con GPUs pueden romper cualquier cuenta no-cero. El enfoque "white lies" (RFC 4470) es otra forma de reducir el riesgo de zone walking manteniendo la simplicidad de NSEC.
El flujo de validación — Paso a paso
¿Qué pasa realmente cuando un resolutor validador recibe una respuesta firmada con DNSSEC? Recorriendo dig +dnssec example.com @1.1.1.1:
- El resolutor recibe el registro A + RRSIG de su servidor autoritativo.
- El resolutor recupera el conjunto DNSKEY de su zona + RRSIG. Ahora tiene tanto los datos como las claves (en forma pública) necesarias para verificar todo.
- El resolutor verifica el RRSIG de datos contra la ZSK en el conjunto DNSKEY. Si la firma es inválida, la validación falla inmediatamente.
- El resolutor verifica el RRSIG del DNSKEY contra la KSK en el conjunto DNSKEY. La KSK ha firmado el conjunto DNSKEY, incluyendo la ZSK. Este paso vincula la ZSK a la KSK.
- El resolutor recupera el registro DS de la zona padre (por ejemplo, desde los servidores
.com). El DS contiene un hash de la KSK. - El resolutor calcula el hash de la KSK y lo compara con el DS. Si coinciden, el padre ha confirmado qué KSK es autoritativa para su zona.
- El resolutor repite la cadena en el padre. El registro DS mismo está firmado por la ZSK de la zona padre; el conjunto DNSKEY del padre está firmado por la KSK del padre; la KSK del padre se hashea en el DS de la zona abuela, y así sucesivamente, hasta la raíz.
- En la raíz, el resolutor compara el hash de la KSK raíz con el ancla de confianza que tiene codificada (o auto-actualizada vía RFC 5011). La KSK raíz actual está publicada en https://data.iana.org/root-anchors/.
Si cada firma verifica y la raíz se encadena hasta el ancla de confianza, el resolutor devuelve la respuesta con la bandera AD (Authenticated Data) activada. Cualquier fallo en el camino y el resolutor devuelve SERVFAIL — mejor romper que servir una respuesta potencialmente manipulada.
Lo que puede salir mal
| Modo de fallo | Qué pasa | Cómo detectar |
|---|---|---|
| DS desactualizado en el registrador | El padre apunta a una KSK antigua que ya no está en su zona | dig DS sudominio @parent-ns; comparar con DNSKEY actual |
| Firmas expiradas | El servidor autoritativo no re-firmó a tiempo | dig +dnssec sudominio → comprobar expiración RRSIG |
| Mismatch de algoritmo | DS hashea una clave con algoritmo X pero DNSKEY publica algoritmo Y | Validadores reportan SERVFAIL; DNSViz lo resalta |
| Registros sin firmar insertados | El servidor autoritativo devuelve registros sin RRSIG | Validadores rechazan; resolutores caen a SERVFAIL |
| Clave eliminada demasiado pronto durante rotación | Firmas antiguas aún cacheadas pero DNSKEY correspondiente eliminado | Visible como fallos de validación limitados por TTL |
| Importación de zona sin re-firmar | Registros importados de otro proveedor pero no firmados | Todos los RRSIGs faltantes o inválidos |
Los dos primeros — DS desactualizado y firmas expiradas — causan la gran mayoría de las caídas DNSSEC reales. Los proveedores gestionados manejan la re-firma automáticamente; el registro DS en el registrador es el punto de fallo manipulable por humanos.
Uniéndolo todo — Un modelo mental
La aparente complejidad de DNSSEC es en su mayoría contabilidad. La verdadera pregunta criptográfica es simple: ¿vino esta respuesta de alguien que controla la clave privada de la zona? La cadena de confianza es una serie de vinculaciones de clave pública, cada una un paso normal "clave A firma clave B" o "clave A firma datos D":
- La KSK raíz firma el conjunto DNSKEY raíz (que incluye la ZSK raíz).
- La ZSK raíz firma los registros DS de los TLD.
- La KSK de un TLD firma el conjunto DNSKEY del TLD (que incluye la ZSK del TLD).
- La ZSK del TLD firma los registros DS de las zonas registradas.
- La KSK de su zona firma su conjunto DNSKEY (que incluye su ZSK).
- Su ZSK firma cada conjunto de registros en su zona — incluyendo los registros NSEC/NSEC3 que manejan la negación.
Cada eslabón es solo una firma; la magia es que el resolutor solo necesita la clave raíz para verificarlas todas.
Referencias
- RFC 4033 — Introducción y requisitos de DNS Security
- RFC 4034 — Resource Records para DNS Security Extensions (DNSKEY, DS, NSEC, RRSIG)
- RFC 4035 — Modificaciones del protocolo para DNS Security Extensions
- RFC 5155 — DNSSEC Hashed Authenticated Denial of Existence (NSEC3)
- RFC 6781 — DNSSEC Operational Practices, Version 2
- RFC 7344 / 8078 — Automating DNSSEC Delegation Trust Maintenance (CDS / CDNSKEY)
- RFC 8624 — Algorithm Implementation Requirements and Usage Guidance for DNSSEC
- RFC 8901 — Modelos DNSSEC multi-firmante
- Números de algoritmos DNSSEC IANA
- Anclas de confianza raíz IANA
Lecturas relacionadas
- ¿Qué es DNSSEC? — introducción top-of-funnel
- Gestión de claves DNSSEC — procedimientos operativos de rotación
- Guía de configuración DNSSEC para DNScale — paso a paso del producto
- DNSSEC vs DNS over HTTPS — integridad vs privacidad
- Envenenamiento de caché DNS — el ataque que DNSSEC derrota
- NIS2 y cumplimiento DNS — DNSSEC como control regulatorio
Frequently asked questions
- ¿Cuál es la diferencia entre KSK y ZSK?
- La KSK (Key-Signing-Key) firma solo el conjunto de registros DNSKEY de su zona — el conjunto que contiene sus claves públicas. La ZSK (Zone-Signing-Key) firma todo lo demás (A, AAAA, MX, TXT, etc.). La separación existe para que pueda rotar la ZSK con frecuencia sin involucrar a la zona padre, mientras la KSK — a la que la zona padre vincula vía el registro DS — rota raramente con alta ceremonia.
- ¿Qué es un registro DS y por qué está en el registrador?
- El registro DS (Delegation Signer) contiene un hash de la KSK de su zona. Vive en la zona padre (por ejemplo, .com) para que un resolutor que recupere información sobre su zona pueda encontrarlo y verificar sus registros DNSKEY contra él. Publica el DS vía su registrador, que lo pasa al registro del TLD. Sin el DS, su zona está firmada pero desconectada de la cadena de confianza global — los resolutores ven firmas pero no tienen razón para validarlas.
- ¿Qué es un registro RRSIG?
- RRSIG es el registro de firma. Para cada conjunto de registros de su zona (los registros A para example.com, los MX para example.com, el conjunto DNSKEY, etc.), DNSSEC produce un RRSIG que contiene una firma digital sobre ese conjunto. Los resolutores recuperan datos y RRSIG juntos, luego verifican la firma contra la clave pública apropiada (ZSK para la mayoría de datos, KSK para el conjunto DNSKEY mismo).
- ¿Cómo demuestra DNSSEC que un nombre NO existe?
- Mediante registros NSEC o NSEC3. Un NSEC firmado dice 'entre alpha.example.com y gamma.example.com no hay otro nombre' — demostrando que beta.example.com no existe. NSEC3 hace lo mismo con nombres hasheados para que un atacante que consulte no pueda enumerar toda la zona. Sin esto, un atacante podría falsificar respuestas NXDOMAIN; con esto, incluso la negación está firmada.
- ¿Qué es una CSK y cuándo usarla?
- Una CSK (Combined Signing Key) cumple los roles KSK y ZSK en una única clave. Simplifica las operaciones — solo una clave para gestionar y rotar — a costa de interacciones más frecuentes con el registrador durante rotaciones (porque cada rotación involucra el registro DS). Con ECDSA P-256, las firmas son lo bastante pequeñas para que la simplicidad operativa suela ganar, y muchos proveedores modernos por defecto usan CSK en vez de KSK/ZSK separadas.
- ¿Qué hace realmente un resolutor durante la validación DNSSEC?
- Recupera el conjunto de registros solicitado y su RRSIG, recupera el conjunto DNSKEY de la zona, verifica el RRSIG de los datos contra la ZSK, recupera el registro DS de la zona padre, calcula el hash de la KSK de la zona y comprueba que coincide con el DS, luego repite el proceso subiendo la cadena hasta la raíz. Si cada paso verifica y se encadena hasta el ancla de confianza raíz codificada, la respuesta se marca como autenticada (bandera AD activada).
Related guides
¿Qué es DNSSEC? Una guía clara sobre seguridad DNS
DNSSEC explicado desde lo básico — qué es, por qué existe, cómo funciona a alto nivel y cuándo debería activarlo para su dominio.
Guía de configuración DNSSEC para DNScale — Paso a paso
Active DNSSEC en una zona de DNScale en menos de 10 minutos — generar claves, copiar el DS al registrador, verificar y evitar los errores de rotación más comunes.
NIS2 y DNS — Lo que los operadores regulados en la UE deben saber
Cómo la Directiva NIS2 (UE 2022/2555) se aplica al DNS — obligaciones del proveedor, medidas de gestión de riesgos, notificación de incidentes y qué exigir a su proveedor de DNS.
Ready to manage your DNS with confidence?
DNScale provides anycast DNS hosting with a global network, real-time analytics, and an easy-to-use API.
Start free