O DNSSEC assina os dados DNS para que um resolvedor possa provar que uma resposta não foi adulterada. Quando você consulta com +dnssec (o que define a flag do do EDNS), os registros extras aparecem ao lado dos normais.
Os tipos de registro
- RRSIG é uma assinatura sobre um conjunto de registros de um tipo (um RRset). Seu rdata começa com o tipo que ela cobre, o número do algoritmo, uma contagem de labels, o TTL original, um horário de expiração e de início da assinatura, um key tag e o nome de quem assinou, seguidos pela assinatura em si. A janela de validade importa operacionalmente: um RRSIG expirado faz um resolvedor validador retornar
SERVFAIL, e assinaturas expiradas são uma causa comum de um domínio que "de repente parou de resolver" para alguns usuários mas não para outros. - DNSKEY é uma chave pública da zona. Um validador a usa para verificar os RRSIGs daquela zona. Seu rdata é um campo de flags, um byte de protocolo (sempre 3), um algoritmo e o material da chave.
- DS (Delegation Signer) é o elo entre uma zona pai e uma filha. É um hash da DNSKEY da filha, publicado na pai. Seu rdata é um key tag, um algoritmo, um tipo de digest e o digest. É o registro que você entrega ao seu registrar para ligar o DNSSEC de uma delegação.
- NSEC e NSEC3 fornecem negação de existência autenticada. Em vez de simplesmente dizer "não existe esse nome", uma zona assinada prova a lacuna: NSEC aponta para o próximo nome existente, e NSEC3 faz o mesmo sobre nomes com hash para dificultar a varredura da zona. É assim que um
NXDOMAINou NODATA validado é, ele próprio, confiável.
A cadeia de confiança
A validação é uma cadeia da raiz para baixo. Um resolvedor confia na chave da raiz (o único trust anchor configurado), usa o DS da raiz para atestar a DNSKEY do domínio de topo, usa isso para validar o DS do TLD para a próxima zona, e assim por diante até o nome que você pediu. Cada salto é um DS na pai combinando com uma DNSKEY na filha, e cada RRset é coberto por um RRSIG. Uma quebra em qualquer ponto, um DS ausente em uma delegação, um key rollover que removeu a chave errada, uma assinatura expirada, rompe a cadeia e o resolvedor retorna SERVFAIL.
O que ad realmente significa
A flag ad (Authentic Data) no cabeçalho é o veredito do resolvedor: significa que este resolvedor específico validou a cadeia e ela se sustentou. Não é uma prova em que você possa confiar de forma independente, a menos que confie no resolvedor e no caminho até ele, e não significa que o cliente validou algo. Se você consultou com do definido e recebeu dados reais de volta mas ad não está definido, o resolvedor ou não validou ou o dado não é assinado; essa lacuna costuma ser o que vale a pena investigar.