TSIG (Transaction Signature) is a DNS security mechanism that authenticates DNS messages between two parties using a shared secret key and keyed hash, commonly used to protect zone transfers and dynamic updates. It replaces weak IP-address-based access controls with cryptographic verification, ensuring that only parties holding the same key can modify zone data or trigger updates. Proper TSIG deployment requires careful key management, clock synchronization, and explicit access rules to avoid operational failures such as clock drift rejections and silent zone transfer interruptions.
Cómo funciona TSIG
TSIG utiliza una clave secreta compartida y un hash cifrado para demostrar que un mensaje DNS procede de una parte que posee la clave y que no ha sido alterado durante la transmisión. Ambas partes deben estar configuradas previamente con el mismo nombre de clave, algoritmo y secreto.
- Compartir una clave: un administrador genera una clave secreta y configura el mismo nombre de clave, algoritmo y secreto en ambos servidores, o en el cliente y el servidor.
- Firmar el mensaje: el remitente calcula un hash con clave sobre el mensaje DNS más determinados campos TSIG, incluida una marca de tiempo, y añade el resultado al mensaje como un registro TSIG.
- Verificar la firma: el receptor busca la clave por su nombre, vuelve a calcular el hash y lo compara con el recibido. Si no coinciden, el mensaje se rechaza.
- Comprueba la hora: el receptor también comprueba que la marca de tiempo firmada se encuentre dentro de un intervalo de tiempo permitido, lo que limita la reproducción de mensajes capturados.
- Firmar la respuesta: El destinatario firma su respuesta con la misma clave, de modo que el solicitante pueda confirmar que la respuesta procede del servidor esperado.
TSIG autentica y protege la integridad de los mensajes, pero no los cifra. Dado que se basa en un secreto compartido, es adecuado para la comunicación entre partes conocidas, no para la resolución pública, y los relojes de ambas partes deben mantenerse razonablemente sincronizados.
Problemas habituales con TSIG
El TSIG incluye una marca de tiempo, y el receptor rechaza los mensajes que se encuentran fuera de un intervalo de tiempo permitido. Si los relojes de los servidores se desajustan, las transferencias o actualizaciones fallan con un error de hora incorrecta, aunque la clave sea correcta. Sincronizar ambos lados con NTP suele resolver el problema.
El nombre de la clave, el algoritmo y el secreto deben coincidir en ambos lados. Un error tipográfico en el secreto, un algoritmo diferente o un nombre de clave escrito de forma distinta provocan un error de firma incorrecta o de clave desconocida, y la solicitud es rechazada.
La definición de una clave no implica por sí misma que sea necesaria. Si la zona sigue permitiendo transferencias o actualizaciones por dirección IP de origen, las solicitudes sin firmar pueden tener éxito. La regla de acceso debe especificar la clave de forma explícita.
Los secretos pegados en los tickets, compartidos entre muchas zonas o que nunca se rotan aumentan el riesgo de exposición si se filtra alguno. Utilizar una clave distinta para cada relación y rotarla según un calendario limita el daño.
TSIG firma los mensajes, pero no los cifra. El contenido de la zona enviado durante una transferencia puede leerse en la red a menos que el transporte también esté protegido, por ejemplo, con TLS.