Como funciona o DNSSEC

Logotipo do DNSSEC

O DNS (sistema de nomes de domínio) costuma ser considerado como a lista telefônica da internet, dizendo aos computadores para onde enviar e onde recuperar informações. Infelizmente, também aceita qualquer endereço que lhe for oferecido, sem questionar.

Os servidores de e-mail usam o DNS para rotear suas mensagens, o que significa que ficam vulneráveis a problemas de segurança na infraestrutura do DNS. Em setembro de 2014, pesquisadores da CMU encontraram e-mails supostamente enviados pelos servidores do Yahoo!, Hotmail e Gmail que, na verdade, estavam vindo de servidores de e-mail não autorizados. Os invasores estavam explorando uma vulnerabilidade muito antiga do DNS (Sistema de Nomes de Domínio): o sistema não verifica as credenciais antes de aceitar uma resposta.

A solução é um protocolo chamado DNSSEC, que adiciona uma camada de confiança ao DNS ao fornecer autenticação. Quando um resolvedor de DNS está procurando o subdomínio blog.cloudflare.com, os nameservers .com ajudam o resolvedor a verificar os registros retornados para a Cloudflare, enquanto a Cloudflare ajuda a verificar os registros retornados para o blog. Os nameservers do DNS raiz ajudam a verificar o domínio .com e as informações publicadas pelo raiz são confirmadas por um procedimento de segurança minucioso, incluindo a Cerimônia de Assinatura da Zona Raiz.

Logotipo do DNSSEC
Registros de signatários de delegação
O DNSSEC apresenta um registro de signatário de delegação (DS) para permitir a transferência de confiança de uma zona mãe para uma zona filha. Um operador de zona faz o hash do registro DNSKEY que contém a KSK pública e o fornece à zona mãe para publicar como um registro DS.
diagrama de registros de signatário de delegação
Sempre que um resolvedor é encaminhado a uma zona filha, a zona mãe também fornece um registro DS. É com esse registro DS que os resolvedores sabem que a zona filha está ativada para DNSSEC. Para verificar a validade da KSK pública da zona filha, o resolvedor faz um hash dela e o compara ao registro DS da mãe. Se coincidirem, o resolvedor pode presumir que a KSK pública não foi adulterada, o que significa que pode confiar em todos os registros existentes na zona filha. É assim que uma cadeia de confiança é estabelecida no DNSSEC.
Observe que qualquer alteração na KSK também requer uma alteração no registro DS da zona mãe. Alterar o registro DS é um processo em várias etapas que pode acabar destruindo a zona se for executado incorretamente. Primeiro, a mãe precisa adicionar o novo registro DS. Em seguida, é preciso esperar até que o TTL do registro DS original expire antes de removê-lo. Por essa razão, é muito mais fácil trocar as chaves de assinatura de zona do que as chaves de assinatura de chave.

Negação de existência explícita

Se você pedir ao DNS o endereço de IP de um domínio que não existe, ele retorna uma resposta vazia, já que não há como dizer explicitamente: “Desculpe, a zona solicitada não existe”. Isso constitui um problema se você deseja autenticar a resposta, pois não há nenhuma mensagem para assinar. O DNSSEC corrige isso adicionando os tipos de registro NSEC e NSEC3. Ambos permitem uma negação de existência autenticada.
O NSEC funciona retornando o "próximo registro seguro". Considere, por exemplo, um nameserver que define registros AAAA para uma API, um blog e um endereço www. Se você solicitasse um registro para "store" (loja), ele retornaria um registro NSEC contendo www, o que significa que não há registros AAAA entre store e www quando os registros são classificados em ordem alfabética. Isso informa, efetivamente, que "store" não existe. Como o registro NSEC é assinado, você pode validar seu RRSIG correspondente como faria com qualquer RRSet.
Infelizmente, essa solução permite que qualquer pessoa atravesse a zona e colete todos os registros sem saber quais deles está procurando. Isso poderia ser uma ameaça de segurança em potencial se o administrador da zona estivesse contando com o fato de que o conteúdo da zona fosse privado. Você pode ler mais sobre esse problema no artigo DNSSEC: complexidades e considerações, e também sobre a solução exclusiva da Cloudflare no artigo DNSSEC feito corretamente.
A cadeia de confiança
Certo, então temos uma maneira de estabelecer a confiança dentro de uma zona e conectá-la com sua zona mãe. Mas como podemos confiar no registro DS? Bem, o registro DS é assinado exatamente como qualquer outro RRSet. Isso significa que tem um RRSIG correspondente na zona mãe. O processo inteiro de validação se repete até chegarmos à KSK pública da mãe. Para verificar isso, precisamos ir ao registro DS da mãe e assim por diante, à medida que avançamos na cadeia de confiança.
diagrama da cadeia de confiança
No entanto, quando finalmente chegamos à zona raiz do DNS, temos um problema: não há registro DS mãe frente ao qual validar. É aqui que vemos um lado muito humano da internet global.
Na Cerimônia de Assinatura da Zona Raiz, vários indivíduos selecionados de todo o mundo se reúnem e assinam o RRSet do DNSKEY raiz de uma forma muito pública e altamente auditada. A cerimônia produz um registro RRSIG que pode ser usado para verificar a KSK e a ZSK públicas do nameserver raiz. Ao invés de confiar na KSK pública por conta do registro DS da mãe, presumimos que ela é válida porque confiamos nos procedimentos de segurança em torno do acesso à KSK privada.
A capacidade de estabelecer confiança entre as zonas mãe e filha é uma parte integrante do DNSSEC. Se alguma parte da cadeia for violada, não poderemos confiar nos registros que estamos solicitando porque um man-in-the-middle poderia alterar os registros e nos direcionar para qualquer endereço de IP que quisesse.
Summary

Similar to HTTPS, DNSSEC adds a layer of security by enabling authenticated answers on top of an otherwise insecure protocol. Whereas HTTPS encrypts traffic so nobody on the wire can snoop on your Internet activities, DNSSEC merely signs responses so that forgeries are detectable. DNSSEC provides a solution to a real problem without the need to incorporate encryption.

Cloudflare’s goal is to make it as easy as possible to enable DNSSEC. All Cloudflare customers can add DNSSEC to their web properties by flipping a switch to enable DNSSEC and uploading a DS record (which we'll generate automatically) to their registrar.: Learn more about how to get DNSSEC.

We’ve also published an Internet Draft outlining an automated way for registries and registrars to upload DS records on behalf of our customers. This will enable Cloudflare to automatically enable DNSSEC for our entire community. Stay tuned for updates.

Considerada confiável por milhões de ativos da internet

Logotipo da Doordash considerado confiável por em cinza
Logotipo da Garmin considerado confiável por em cinza
Logotipo da 23andme considerado confiável por em cinza
Logo lending tree trusted by gray
NCR logo
Thomson Reuters logo
Logotipo da Zendesk considerado confiável por em cinza