DKIM Explicado

On junho 08, 2023
10min read
Piotr Malek Technical Content Writer @ Mailtrap
Viktoriia Ivanenko Technical Content Writer @ Mailtrap

A assinatura DKIM, juntamente com outros métodos, como SPF ou DMARC, é um dos métodos mais comuns de autenticação como remetente de uma mensagem de e-mail. A seguir, explicamos por que você deve usá-lo e como ele realmente funciona. Vamos começar!

O que é DKIM?

DomainKeys Identified Mail (DKIM) é uma assinatura digital adicionada a todos os e-mails enviados de um determinado endereço de e-mail. Não é uma assinatura típica que você esperaria ver na parte inferior de um e-mail corporativo. Na verdade, normalmente, você nem vê o DKIM. Trata-se de um conjunto aparentemente aleatório de caracteres ocultos no código-fonte de um e-mail, um local onde as pessoas normalmente não olham, mas os servidores que aceitam os e-mails recebidos com certeza olham.

Afinal de contas, o DKIM é um padrão do setor para autenticação de e-mail. É claro que adicionar uma assinatura DKIM não garante a entrega, mas aumenta significativamente as chances de um resultado positivo.

Por que usar o DKIM?

Imagine o seguinte cenário. Você está enviando uma mensagem rápida de acompanhamento a um investidor em potencial após uma reunião: “Yvonne, informe-me se você gostaria de prosseguir com o que discutimos anteriormente“. Algum tempo se passou e você nunca recebeu uma resposta de Yvonne, mas a encontrou em outra reunião e mencionou discretamente o e-mail. Intrigada, Yvonne diz: “Mark, nunca mais ouvi nada de você“. 

Há muitos motivos possíveis para a baixa capacidade de entrega, mas, como se viu, Mark se esqueceu de configurar a autenticação DKIM em sua conta de e-mail. Como resultado, o servidor de Yvonne não tinha certeza se era realmente Mark que estava enviando um e-mail para ela e descartou a mensagem.  A assinatura DKIM, juntamente com outros métodos, como SPF ou DMARC, é um dos métodos mais comuns para se autenticar como remetente de uma mensagem de e-mail e manter uma boa entregabilidade de e-mail.

O principal objetivo do DKIM é evitar o spoofing. O spoofing de e-mail consiste em alterar o conteúdo da mensagem original e enviá-la de um remetente alternativo que parece ser uma fonte confiável. Esse tipo de ataque cibernético é amplamente usado para fraudes — por exemplo, alguém que envia mensagens de solicitação de pagamento de um endereço de e-mail que se parece com o seu (mark@whatevercompany.io  vs. mark@whatever-company.io).

Como é um cabeçalho DKIM? 

Aqui está um exemplo de um registro de DomainKeys Identified Mail:

DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=newyork;
     c=relaxed/simple; q=dns/txt; t=1117574938; x=1118006938;
     h=from:to:subject:date:keywords:keywords;
     bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;
     b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ
              VoG4ZHRNiYzR

O DKIM é composto de diferentes elementos, descritos com diversas tags e valores correspondentes a cada um deles. Vamos detalhar o significado de cada elemento usado acima:

Tag e seu valorSignificadoObrigatório/opcional
v=1Versão. Sempre igual a “1”.Obrigatório
a=rsa-sha256Algoritmo de assinatura (aquele usado para criar um registro DKIM no lado do remetente). Normalmente, é rsa-sha ou rsa-sha256. Existem outros algoritmos, mas eles nem sempre são suportados pelos clientes receptores.Obrigatório
d=example.comO domínio do remetente de uma mensagem (onde o DKIM é assinado).Obrigatório
s=newsSeletor — Isso inclui instruções sobre qual chave pública usar para resolver um determinado DKIM (mais sobre isso posteriormente).Obrigatório
c=relaxed/relaxedAlgoritmo de canonização usado tanto para o cabeçalho quanto para o corpo.Obrigatório
q=dns/txtMétodo de consulta usado para recuperar a chave pública. Por padrão, é “dns/txt”.Opcional (recomendado)
t=1126524832Um carimbo de data/hora de quando a mensagem foi assinada.Mandatory
x=1149015927Tempo de expiração desse DKIM (se um e-mail chegar após o tempo de expiração, a verificação falhará, mesmo que todo o resto corresponda perfeitamente).Opcional (recomendado)
h=from:to:subject:date:keywords:keywords;Lista de cabeçalhos, separados por dois pontos.Obrigatório
bh=MHIzKDU2Nzf3MDEyNzR1Njc5OTAyMjM0MUY3ODlqBLP=O corpo da mensagem com hash, depois de ser canonizado com o método da tag “c” e, em seguida, executado por meio da função de hash da tag “a”. (bh – body hash)Obrigatório
b=hyjCnOfAKDdLZdKIc9G1q7LoDWlEniSbzc+yuU2zGrtruF00ldcFVoG4WTHNiYwGE, por fim, esta é a assinatura digital dos cabeçalhos e do corpo, com hash com a mesma função.Obrigatório

Como você pode ver, a assinatura em si é apenas uma pequena parte do DKIM. Tudo o que está acima disso são metadados, descrevendo como os valores de hash foram calculados.

Observe como duas das tags foram marcadas como opcionais — elas não são necessárias para que o DKIM seja verificado corretamente, mas acrescentam uma camada extra de segurança. Há várias outras tags opcionais que você pode usar: “i” – Identidade de um usuário ou agente (recomendável definir); “l” – comprimento do corpo da mensagem e “z” – lista dos cabeçalhos originais da mensagem (não é recomendável definir ambos).

Como o DKIM funciona?

A assinatura e o recebimento do DKIM ocorrem em três etapas:

  1. O remetente decide o que incluir em um registro DKIM

Como remetente, você pode se limitar a apenas determinadas partes dos campos de cabeçalho (“De”, “Para”, “Cc”, “Assunto” etc.) e também pode incluir todo o cabeçalho e o corpo no DKIM. Você também pode optar por adicionar alguns ou todos os campos opcionais mencionados acima.

Tecnicamente, quanto mais detalhes específicos forem incluídos, mais confiável será a autenticação. Mas é preciso ter cuidado com isso também, pois até mesmo os menores detalhes alterados pelo seu servidor de e-mail SMTP levarão a uma falha na autenticação do DKIM no lado do destinatário. Pense, por exemplo, nas mensagens “encaminhadas por…” que são adicionadas aos e-mails ao encaminhá-los de clientes de e-mail. Se você incluir todo o seu corpo no DKIM, ele falhará inevitavelmente, pois o corpo acabou de ser modificado.

Mas não se preocupe. Você não precisa decidir sobre o formato do DKIM toda vez que enviar um e-mail. Isso é feito automaticamente por um servidor que você precisa configurar apenas uma vez.

  1. O DKIM é criado e uma mensagem que o inclui é enviada

Quando o servidor sabe o que incluir no DKIM e o envio de e-mail é iniciado, ele começa a fazer o hash do conteúdo. Você já viu como as tags “b” e “bh” ficaram em nosso exemplo. Para dar mais um exemplo, veja como a etapa anterior ficaria se fosse feito o hash com o método SHA256:

568291DDA7ECE2594254BC8E7D70DA150968D022021081BB6E3FC40DC9C260D6
CE328291830AB02CFB1D8CDEC3C2B35C73F92ADF335BCCF38C6784AC9922A8C1

Embora possa parecer complexo, esses hashes são extremamente fáceis de decifrar com várias ferramentas on-line (experimente você mesmo!). É por isso que, antes de um e-mail ser enviado, cada hash é criptografado com a chamada chave privada. Você pode ter uma chave privada separada para cada seletor que usar, mesmo que envie todos os e-mails do mesmo domínio. Isso pode significar uma chave para e-mails de marketing, outra para e-mails transacionais e uma terceira para e-mails enviados a fornecedores. O uso de chaves privadas diferentes é importante por motivos de segurança.

Quando tudo estiver configurado, o e-mail será enviado!

  1. Uma mensagem é recebida e o servidor valida as assinaturas DKIM

Em segundos, uma mensagem é recebida pelo servidor de e-mail do destinatário, e ele precisa tomar uma decisão importante: permitir ou não a entrada do e-mail. Quando ele vê que um DKIM está incluído na mensagem, ele inicia imediatamente o processo de validação.

Com os campos de domínio (“d”) e seletor (“s”) visíveis no DKIM, o servidor pode buscar a chave pública que corresponde a essa combinação executando uma consulta DNS apropriada (esses dados estão disponíveis publicamente). Em seguida, com a recém-adquirida chave pública e os campos criptografados “b” e “h”, o servidor receptor cria seus próprios hashes e os compara com os recebidos na mensagem. Se houver uma correspondência, a autenticação será bem-sucedida. Caso contrário, a autorização DKIM falhará. Isso não significa que a mensagem será descartada, mas reduz suas chances de ser entregue.

Como adicionar a assinatura DKIM aos seus e-mails?

A adição do DKIM requer a alteração de alguns detalhes dos seus registros DNS. Muitos clientes de e-mail cobrem o processo em detalhes, portanto, não vamos nos concentrar nele aqui. Consulte os links a seguir para obter detalhes específicos sobre os provedores mais populares:

Se o seu cliente de e-mail não oferecer ajuda para implementar o DKIM ou se você estiver configurando sua própria infraestrutura, consulte a documentação oficial do DKIM. Com o Mailtrap Email API, você obtém registros do DKIM com uma rotação automatizada trimestral que ajuda a manter sua infraestrutura de e-mail segura.

Como você pode testar se o DKIM foi configurado corretamente?

Depois que o DKIM for adicionado, certifique-se de validá-lo com um analisador de DKIM on-line. Use, por exemplo, MXToolbox ou mail-tester.com — esse último pode ser usado para verificar os registros SPF simultaneamente.

Você também pode simplesmente enviar um e-mail de teste para sua conta do Gmail ou do Yahoo e verificar se uma mensagem chegou com sua assinatura DKIM.

Quando a mensagem chegar, expanda o cabeçalho do e-mail com o ícone de triângulo abaixo do nome do remetente. Se o domínio do remetente aparecer tanto em “enviado por” quanto em “assinado por”, a mensagem foi verificada com sucesso com o DKIM.

Você também pode clicar nos três pontos no canto superior direito e em “Mostrar Original”. Aqui você verá o resultado da autenticação DKIM. Se aparecer “PASS” e seu endereço de domínio, tudo está funcionando corretamente.

Para verificar o registro DKIM no Yahoo, clique em “Exibir Cabeçalho Completo” e procure o rastro do DKIM. Se você encontrar dkim=pass (ok), você passou no teste!

O que é Gappssmtp?

gappssmtp é uma chave de domínio padrão para e-mails enviados pelo servidor SMTP do Gmail. O registro de autenticação DKIM às vezes mostrará gappssmtp. Por exemplo, se você recebeu um e-mail de name@railsware.com, o registro DKIM mostrará railsware-com.20150623.gappssmtp.com.

Para verificar o registro de autenticação DKIM, por suspeita de phishing ou outro motivo, localize o menu suspenso “mostrar detalhes” sob o nome do remetente. A seção “assinado por” é o que você está procurando para determinar se o e-mail foi enviado de um servidor seguro. Se estiver escrito “gmail”, o registro DKIM incluirá gappssmtp, portanto o e-mail foi enviado de um servidor seguro com uma chave de autenticação padrão.

Os e-mails enviados por meio de um serviço, como calendário, unidade, caixa, etc., não têm um DKIM. Em vez disso, você só conseguirá localizar uma assinatura fornecida pelo serviço. Essas assinaturas, incluindo gappssmtp, são atribuídas automaticamente e simplesmente verificam a segurança do e-mail que você recebeu. É um procedimento padrão e automatizado feito para fins de verificação.

Três principais equívocos sobre o DKIM

O DKIM criptografa seu e-mail

Não é o caso. A principal função do DKIM é verificar e confirmar que a mensagem está intacta. Os hashes das tags “bh” e “b” oferecem proteção contra modificação e reprodução de mensagens, incluindo proteção parcial contra roubo de identidade e falsificação. Um teste de verificação DKIM aprovado significa basicamente que o e-mail enviado tem permissão para ser enviado desse domínio e que o conteúdo da mensagem não foi alterado durante o trajeto.

Uma assinatura DKIM pode ser falsificada, pois seus detalhes estão disponíveis nos registros DNS

Não, ela não pode ser forjado. O DKIM é baseado em PKI (infraestrutura de chave pública), o que significa que um par de chaves está envolvido. Uma pública e outra privada. Embora seja verdade que a chave pública seja publicada nos registros DNS (e esteja disponível para todos recuperarem), a chave privada é mantida apenas no servidor do provedor de serviços de e-mail. A chave privada permanece secreta e é usada para assinar mensagens. A chave pública não pode assinar mensagens e é usada somente para verificação.

O DKIM salva você do spam de uma vez por todas

Nós gostaríamos que sim. Como a assinatura digital DKIM só permite comprovar que o remetente está autorizado a enviar mensagens do domínio e que a mensagem não foi adulterada no caminho, o DKIM apenas reduz as chances de spammers usarem endereços de e-mail falsos ou roubados.

No entanto, nada os impede de comprar um domínio, configurar um registro DKIM e continuar com suas atividades de spam. Na verdade, isso pode até, de certa forma, legitimar o spam.

No entanto, usar um nome de domínio real em vez de um nome forjado provavelmente minimizará os ataques de phishing, como quando você recebe um e-mail forjado do seu “banco” solicitando a confirmação dos detalhes do seu cartão de crédito.

Rotação de chaves DKIM: mantenha sua segurança DKIM atualizada

Embora as chaves públicas de 1024 bits do DKIM sejam difíceis de decifrar e as chaves de 2048 bits sejam quase impossíveis, elas ainda são publicadas nos registros do DNS e, portanto, podem se tornar um alvo de ataque. As chaves privadas (chave de assinatura) também podem ser roubadas se o sistema em que estão armazenadas for invadido.

Para reduzir os riscos de comprometimento das chaves DKIM, você precisa minimizar o tempo em que elas são usadas ativamente. O processo de substituição sistemática do par de chaves DKIM antigo pelo novo é chamado de DKIM rotação de chaves.

Em geral, o período de rotação de chaves recomendado é desde a substituição trimestral até a cada seis meses. A frequência do rodízio de chaves deve ser estabelecida pela organização individualmente, mas, sem dúvida, é uma obrigação no fluxo de trabalho.

O processo de rotação de chaves pode se tornar bastante complicado em empresas que têm vários fluxos de e-mail, subdomínios delegados ou fluxos enviados em seu nome por terceiros. Portanto, para manter seu fluxo de e-mail seguro, o processo de rotação de chaves DKIM deve ser planejado com antecedência.

Como fazer a rotação das chaves DKIM?

O processo de rotação de chaves DKIM é dividido em duas fases principais: preparação e rotação propriamente dita.

Primeiro, na fase de preparação, você identifica todos os fluxos de e-mail que estão sendo enviados da sua organização: desde mensagens transacionais e mensagens de conversação dentro da empresa até e-mails enviados por fornecedores terceirizados. A preparação também inclui informar as partes interessadas internas, os administradores de e-mail, os administradores de DNS e a equipe interna de suporte técnico responsável pelos fluxos de e-mail sobre o processo de rotação de chaves. Eles também devem saber o que fazer em caso de rotação de chaves de emergência se as chaves DKIM forem inesperadamente comprometidas.

Em segundo lugar, na fase de implementação, você define o esquema de rotação do seletor, rotaciona as chaves e faz a auditoria posteriormente.  

O M3AAWG (Grupo de Trabalho Antiabuso Móvel, Malware e Mensagens) criou um guia passo a passo para práticas recomendadas de rotação de chaves DKIM. Lembre-se de que a segurança do e-mail deve estar sempre em primeiro lugar.

Outras considerações 

Isso encerra nosso guia sobre o DKIM, mas não deve ser o fim de seus esforços para melhorar a capacidade de entrega de e-mails. Confira nosso guia sobre entregabilidade, onde listamos várias outras ideias. Certifique-se de autenticar também com SPF (Estrutura de Política de Remetente) e DMARC (Autenticação, Relatório e Conformidade de Mensagens Baseadas em Domínio) para tornar seu domínio ainda mais confiável. Isso requer apenas um pouco de tempo e esforço, mas a recompensa pode ser enorme.

Article by Piotr Malek Technical Content Writer @ Mailtrap
Article by Viktoriia Ivanenko Technical Content Writer @ Mailtrap

Experienced content and marketing specialist: content creation for the blog and video channel, UX/UI copies, technical writing, app localizations, and SEO. Skilled in marketing strategies, video production and management, creating brand concepts, technical and marketing writing, and analytical skills. Strong information technology professional of 10+ years work experience with a background from The University of Edinburgh, UK and Clark University, USA.