A assinatura DKIM, junto com outros métodos, como SPF ou DMARC, é uma das formas mais comuns de autenticar-se como remetente de uma mensagem de email. Abaixo, 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 cada email enviado de um determinado endereço de email. Não é uma assinatura típica que você esperaria ver no final de um email corporativo. Na verdade, normalmente você nem vê o DKIM. É um conjunto aparentemente aleatório de caracteres escondidos no código-fonte de um email — um lugar onde as pessoas geralmente não olham, mas os servidores que aceitam emails definitivamente sim.
Afinal, DKIM é um padrão da indústria para autenticação de emails. Claro, adicionar uma assinatura DKIM não garante a entrega, mas aumenta significativamente as chances de um resultado positivo.
Por que usar DKIM?
Imagine o seguinte cenário. Você está enviando uma mensagem de acompanhamento rápida para um potencial investidor após uma reunião, “Yvonne, avise-me se você gostaria de prosseguir com o que discutimos anteriormente.” Passa algum tempo e você nunca recebeu uma resposta de Yvonne, mas você a encontra em outra reunião e menciona discretamente aquele email. Confusa, Yvonne diz, “Mark, eu nunca recebi uma resposta sua.”
Existem muitas razões potenciais para a má entregabilidade, mas, como se descobriu, Mark esqueceu de configurar a autenticação DKIM para sua conta de email. Como resultado, o servidor de Yvonne não tinha certeza se era realmente Mark enviando o email e descartou a mensagem.
O principal objetivo do DKIM é evitar spoofing. Spoofing de email é 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 utilizado para fraudes — por exemplo, alguém enviando mensagens de solicitação de pagamento de um endereço de email que parece ser o seu (<mark@empresaaleatoria.io> vs. <mark@empresa-aleatoria.io>).
Nota: Google e Yahoo estão fazendo da autenticação de email uma prioridade para os remetentes. Razão ainda maior para configurar DKIM.
Você pode aprender mais sobre autenticação de emails em nosso vídeo dedicado:
Como é o Cabeçalho de um 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 vários tags e valores correspondentes a cada um. Vamos detalhar o significado de cada elemento usado acima:
Tag e o seu valor | Significado | Obrigatório/Opcional |
---|---|---|
v=1 | Versão. Sempre igual a ‘1’. | Obrigatório |
a=rsa-sha256 | Algoritmo de assinatura (o usado para criar um registro DKIM no lado do remetente). Normalmente, é rsa-sha ou rsa-sha256. Existem outros algoritmos, mas nem sempre são suportados pelos clientes receptores. | Obrigatório |
d=example.com | O domínio do remetente de uma mensagem (onde o DKIM é assinado). | Obrigatório |
s=news | Seletor — inclui instruções sobre qual chave pública usar para resolver um determinado DKIM (mais sobre isso mais tarde). | Obrigatório |
c=relaxed/relaxed | Algoritmo de canonização usado tanto para o cabeçalho quanto para o corpo. | Obrigatório |
q=dns/txt | Método de consulta usado para recuperar a chave pública. Por padrão, é “dns/txt”. | Opcional (recomendado) |
t=1126524832 | Um carimbo de data/hora de quando a mensagem foi assinada. | Obrigatório |
x=1149015927 | Tempo de expiração deste DKIM (se um email chegar após o tempo de expiração, a verificação falhará mesmo que todo o resto esteja perfeitamente correto). | 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 hash, após ser canonizado com o método do tag “c” e depois passado pela função de hash do tag “a”. (bh – body hash) | Obrigatório |
b=hyjCnOfAKDdLZdKIc9G1q7LoDWlEniSbzc+yuU2zGrtruF00ldcFVoG4WTHNiYwG | E finalmente, esta é a assinatura digital dos cabeçalhos e do corpo, hash com a mesma função. | Obrigatório |
Como você pode ver, a assinatura real é apenas uma pequena parte do DKIM. Tudo o que está acima é metadata, descrevendo como os valores hash foram calculados.
Observe como dois dos tags foram marcados como opcionais — eles não são necessários para que o DKIM seja verificado corretamente, mas adicionam uma camada extra de segurança. Existem vários outros tags opcionais que você pode usar: “i” – Identidade de um usuário ou agente (recomendado definir); “l” – comprimento do corpo da mensagem, e “z” – lista dos cabeçalhos originais da mensagem (ambos não recomendados para definir).
Como funciona o DKIM?
A assinatura e recepção do DKIM ocorrem em três etapas:
- O remetente decide o que incluir em um registro DKIM
Como remetente, você pode se limitar a apenas certas partes dos campos de cabeçalho (“De”, “Para”, “Cc”, “Assunto”, etc.), e pode até incluir todo o cabeçalho e 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 você precisa ter cuidado com isso também, pois até os menores detalhes alterados pelo seu servidor de email SMTP levarão a uma falha na autenticação DKIM no lado receptor. Pense, por exemplo, em mensagens “encaminhadas por…” que são adicionadas aos emails ao encaminhá-los de clientes de email. Se você incluir todo o corpo no DKIM, ele inevitavelmente falhará, pois o corpo foi modificado.
Não se preocupe, no entanto. Você não precisa decidir a forma do DKIM toda vez que enviar um email. Isso é cuidado automaticamente por um servidor que você precisa configurar apenas uma vez.
2. O DKIM é criado, e uma mensagem incluindo-o é enviada
Uma vez que o servidor sabe o que incluir no DKIM e o envio do email é iniciado, ele começa a fazer o hash do conteúdo. Você já viu como os tags “b” e “bh” apareceram em nosso exemplo. Para dar um exemplo adicional, aqui está como o passo anterior pareceria se fosse feito o hash com o método SHA256:
568291DDA7ECE2594254BC8E7D70DA150968D022021081BB6E3FC40DC9C260D6
CE328291830AB02CFB1D8CDEC3C2B35C73F92ADF335BCCF38C6784AC9922A8C1
Embora possa parecer complexo, tais hashes são extremamente fáceis de decifrar com várias ferramentas online (experimente!). Por isso, antes de um email ser enviado, cada hash é criptografado com uma chamada chave privada. Você pode ter uma chave privada separada para cada seletor que usar, mesmo que você envie todos os emails do mesmo domínio. Isso pode significar uma chave para emails de marketing, outra para emails transacionais, e uma terceira para emails enviados a fornecedores. Usar diferentes chaves privadas é importante por razões de segurança.
Depois que tudo está configurado, o email é enviado!
3. Uma mensagem é recebida e o servidor valida as assinaturas DKIM
Em questão de segundos, uma mensagem é recebida pelo servidor de email receptor e ele precisa tomar uma decisão importante — permitir ou não a entrada do email. Quando 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 (tais dados estão publicamente disponíveis). Em seguida, com a chave pública recém-adquirida e os campos “b” e “h” criptografados, o servidor receptor constrói seus próprios hashes e os compara com os recebidos na mensagem. Se houver uma correspondência, a autenticação é bem-sucedida. Se não, a autorização DKIM falha. Isso não significa que a mensagem será descartada, mas reduz suas chances de ser entregue.
Como adicionar uma assinatura DKIM aos seus emails?
Adicionar DKIM requer alterar alguns detalhes dos seus registros DNS. Muitos clientes de email cobrem o processo em detalhes, então não focaremos nisso aqui. Consulte os seguintes links para obter detalhes específicos dos provedores mais populares:
Se o seu cliente de email não oferecer nenhuma ajuda na implementação do DKIM, ou se você estiver configurando sua própria infraestrutura, consulte a documentação oficial do DKIM. Com Email API de Mailtrap, você obtém registros DKIM com uma rotação automatizada trimestral que ajuda a manter sua infraestrutura de email segura.
Como testar se o DKIM foi configurado corretamente?
Uma vez que o DKIM foi adicionado, certifique-se de validá-lo com um analisador de DKIM online. Use, por exemplo, MXToolbox ou Mail-tester.com — o último pode ser usado para verificar registros SPF simultaneamente.
Você também pode simplesmente enviar um email de teste para sua conta do Gmail ou Yahoo e verificar se uma mensagem chegou com sua assinatura DKIM.
Quando a mensagem chegar, expanda o cabeçalho do email 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 DKIM.
Você também pode clicar nos três pontos no canto superior direito e “Mostrar Original”. Aqui você verá o resultado da autenticação DKIM. Se disser ‘PASS’ e o endereço do seu domínio, tudo está funcionando corretamente.
Para verificar o registro DKIM no Yahoo, clique em “Ver Cabeçalho Completo” e procure pelo traço de DKIM. Se encontrar dkim=pass (ok), você passou no teste!
O que é Gappssmtp?
gappssmtp é uma chave de domínio padrão para emails enviados através do servidor SMTP do Gmail. O registro de autenticação DKIM às vezes mostrará gappssmtp. Por exemplo, você recebeu um email de <nome@railsware.com>, o registro DKIM mostrará railsware-com.20150623.gappssmtp.com.
Para verificar o registro de autenticação DKIM, em caso de suspeita de phishing ou outro, localize o menu “mostrar detalhes” abaixo do nome do remetente. A seção “assinado por” é o que você procura para determinar se o email foi enviado de um servidor seguro. Se disser “gmail”, então o registro DKIM incluirá gappssmtp, portanto o email foi enviado de um servidor seguro com uma chave de autenticação padrão.
Emails enviados através de um serviço, como calendário, drive, box ou similar, não possuem um DKIM. Em vez disso, você poderá localizar apenas uma assinatura fornecida pelo serviço. Essas assinaturas, incluindo gappssmtp, são atribuídas automaticamente e simplesmente verificam a segurança do email que você recebeu. É um procedimento padrão, automatizado, realizado para fins de verificação.
Três grandes equívocos sobre o DKIM
O DKIM criptografa seu email
Não, não criptografa. A principal preocupação do DKIM é verificar e confirmar que a mensagem está intacta. Os hashes sob os tags “bh” e “b” oferecem proteção contra modificação e replay da mensagem, incluindo proteção parcial contra roubo de identidade e falsificação. Um teste de verificação DKIM aprovado basicamente significa que o email enviado tem permissão para ser enviado deste domínio e que o conteúdo da mensagem não foi alterado durante o trânsito.
Uma assinatura DKIM pode ser falsificada, pois seus detalhes estão disponíveis nos registros DNS
Não pode ser falsificada. O DKIM é baseado em PKI (infraestrutura de chave pública), o que significa que um par de chaves está envolvido. Uma pública e uma privada. Embora seja verdade que a chave pública é publicada nos registros DNS (e está disponível para todos recuperarem), a chave privada é mantida apenas no servidor do provedor de serviços de email. A chave privada permanece em segredo e é usada para assinar mensagens. A chave pública não pode assinar mensagens e é usada apenas para verificação.
O DKIM protege você contra spam de uma vez por todas
Gostaríamos que fosse verdade. Como a assinatura digital DKIM só permite provar que o remetente está autorizado a enviar mensagens do domínio, e que a mensagem não foi adulterada durante o envio, o DKIM apenas diminui as chances de spammers usarem endereços de email forjados ou roubados.
No entanto, nada impede que eles comprem um domínio, configurem um registro DKIM e continuem com suas atividades de spam. Na verdade, isso pode até, de certa forma, legitimar o spam.
De qualquer forma, usar um nome de domínio real em vez de um falso pode provavelmente minimizar ataques de phishing, como quando você recebe um email falso do seu “banco” pedindo para confirmar seus dados do cartão de crédito.
Rotação de chaves DKIM: mantenha sua segurança DKIM atualizada
Embora as chaves públicas DKIM de 1024 bits sejam difíceis de quebrar e as chaves de 2048 bits sejam quase impossíveis, elas ainda são publicadas nos registros DNS e, portanto, podem se tornar um alvo de ataque. As chaves privadas (chave de assinatura) também podem ser roubadas se o sistema onde estão armazenadas for hackeado.
Para mitigar 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 antigas por um novo é chamado de rotação de chaves DKIM.
Em geral, o período de rotação recomendado das chaves é de substituição trimestral até a cada seis meses. A frequência da rotação de chaves deve ser estabelecida pela organização individualmente, mas é definitivamente uma obrigação no fluxo de trabalho.
O processo de rotação de chaves pode se tornar bastante complicado em empresas que possuem vários fluxos de email, subdomínios delegados ou fluxos enviados em seu nome por terceiros. Portanto, para manter seu fluxo de email seguro, o processo de rotação de chaves DKIM deve ser planejado com antecedência.
Como rotacionar 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 email sendo enviados de sua organização: desde mensagens transacionais, mensagens conversacionais dentro da empresa até emails enviados por fornecedores terceirizados. A preparação também inclui informar as partes interessadas internas, administradores de email, administradores de DNS e o pessoal de suporte técnico interno responsável pelos fluxos de email sobre o processo de rotação de chaves. Eles também devem saber o que fazer em caso de rotação de chave de emergência, caso as chaves DKIM sejam inesperadamente comprometidas.
Em segundo lugar, na fase de implementação, você define seu esquema de rotação de seletores, rotaciona as chaves e faz a auditoria depois.
O Messaging, Malware, and Mobile Anti-Abuse Working Group (M3AAWG) criou um guia passo a passo para melhores práticas de rotação de chaves DKIM. Lembre-se, a segurança do email deve sempre vir em primeiro lugar.
Outras considerações
Isso conclui nosso guia sobre DKIM, mas não deve ser o fim dos seus esforços para melhorar a entregabilidade de emails. Confira nosso guia sobre entregabilidade, onde listamos muitas outras ideias. Certifique-se também de autenticar com SPF (Sender Policy Framework), bem como DMARC (Domain-based Message Authentication, Reporting, and Conformance) para tornar seu domínio ainda mais confiável. Isso leva apenas um pouco de tempo e esforço, mas o retorno pode ser enorme.