Pular pro conteúdo principal

DKIM

DKIM (DomainKeys Identified Mail) é um método de autenticação de e-mail que adiciona uma assinatura criptográfica aos cabeçalhos das mensagens enviadas, permitindo que servidores de e-mail receptores verifiquem que a mensagem realmente partiu do domínio declarado e não foi alterada no caminho.

Definição

DKIM (DomainKeys Identified Mail) é uma especificação de autenticação de e-mail que usa criptografia de chave pública para assinar mensagens enviadas, permitindo que servidores receptores confirmem que o e-mail veio do domínio que ele alega ter como origem e que o corpo da mensagem e os cabeçalhos selecionados não foram modificados em trânsito. O domínio que assina publica sua chave pública no DNS; os servidores receptores buscam essa chave e usam-na para verificar a assinatura embutida no cabeçalho DKIM-Signature[1].

O DKIM nasceu da unificação de duas propostas iniciais que se sobrepunham — DomainKeys, da Yahoo, e Identified Internet Mail, da Cisco — e foi publicado pela primeira vez como IETF RFC 4871 em 2007. A especificação autoritativa atual é a RFC 6376, publicada em setembro de 2011 e atualizada pela RFC 8301 (2018) e pela RFC 8463 (2018) para tornar obrigatórios algoritmos criptográficos mais robustos. O DKIM está amplamente implantado no ecossistema de e-mail e é peça obrigatória para uma política DMARC que ofereça proteção real.

Como funciona

Quando o servidor de e-mail de uma organização envia uma mensagem, o módulo de assinatura DKIM (embutido em MTAs como Postfix, Exim e Microsoft Exchange, ou oferecido como serviço por provedores transacionais como SendGrid, Mailgun, Amazon SES e Postmark) executa o seguinte.

O assinante seleciona um subconjunto de cabeçalhos para incluir na assinatura — em geral From, To, Subject, Date e Content-Type — e os canonicaliza usando um dos dois algoritmos definidos: simple (normalização mínima de espaços em branco) ou relaxed (mais permissivo, tolerando reescritas pequenas no cabeçalho durante o trânsito). O corpo da mensagem é canonicalizado da mesma forma e tem hash calculado com SHA-256 (algoritmo obrigatório desde que a RFC 8301 descontinuou o antigo SHA-1). O assinante então calcula uma assinatura digital RSA ou Ed25519 sobre o hash dos cabeçalhos junto com uma string estruturada de metadados de assinatura e insere um cabeçalho DKIM-Signature no topo da mensagem.

O cabeçalho DKIM-Signature carrega: v=1 (versão), a=rsa-sha256 (algoritmo), d=example.com (domínio assinante, conhecido como tag d=), s=selector1 (selector, usado para localizar a chave pública específica), h=from:to:subject (cabeçalhos assinados), bh=<hash do corpo> e b=<assinatura em base64>.

O dono do domínio publica a chave pública correspondente em <selector>._domainkey.<domínio> como um registro DNS TXT. Quando Gmail, Outlook, Yahoo Mail ou qualquer MTA compatível com a RFC 6376 recebe a mensagem, ele consulta o DNS, recupera a chave pública e verifica a assinatura criptográfica. Uma assinatura válida resulta em DKIM pass. Assinatura ausente, inválida, ou qualquer modificação nos cabeçalhos assinados ou no corpo durante o trânsito, resulta em fail ou neutral, que então é encaminhado para o motor de avaliação DMARC.

Selectors (tag s=) permitem que um domínio publique várias chaves DKIM ao mesmo tempo — útil para girar chaves sem interrupção de serviço, ou para isolar chaves entre sistemas de envio diferentes (por exemplo, marketing._domainkey.example.com versus transacional._domainkey.example.com).

Onde você encontra

DKIM é um requisito de entregabilidade fundamental para qualquer serviço dependente de e-mail. Provedores transacionais como Amazon SES, SendGrid (do Twilio), Mailgun (da Sinch), Postmark e SparkPost incluem a assinatura DKIM como passo obrigatório de configuração na verificação de domínio. O provedor gera um par de chaves RSA-2048 ou Ed25519, mostra a chave pública como um registro DNS TXT e pede que o dono do domínio publique antes de liberar o envio[2].

Para plataformas de concurso que disparam votos por confirmação de e-mail, a assinatura DKIM é especialmente importante porque os e-mails de confirmação precisam passar pelas verificações de autenticação aplicadas pelos grandes provedores de caixa postal — Gmail / Google Workspace, Microsoft Outlook e Exchange Online Protection, Yahoo Mail, Apple iCloud Mail e ProtonMail. Mensagens não assinadas, ou cuja assinatura falha, têm muito mais chance de ir para o spam ou serem bloqueadas, impedindo que o eleitor confirme o voto.

Ferramentas de teste como Mail-Tester, GlockApps e MXToolbox DKIM Lookup permitem inspecionar e validar a configuração DKIM antes de produção. Google Postmaster Tools e Microsoft SNDS dão dados agregados de entregabilidade que refletem as taxas de pass de DKIM ao longo do tempo.

Exemplos práticos

Uma plataforma de concurso configurada com selector DKIM s=contest para o domínio votes.example.com publica a chave pública em contest._domainkey.votes.example.com. Cada e-mail de confirmação de saída carrega um cabeçalho DKIM-Signature assinado com a chave privada correspondente. Quando a conta Gmail do eleitor recebe a mensagem, o filtro de entrada do Gmail consulta o DNS, verifica a assinatura, registra um pass e encaminha o resultado ao classificador de spam. O DKIM pass confirmado, somado ao alinhamento SPF, satisfaz as condições para conformidade DMARC.

Um administrador de concurso troca uma chave RSA de 1024 bits (hoje considerada criptograficamente insuficiente) por uma chave RSA de 2048 bits depois de ler a RFC 8301. O selector antigo fica ativo por sete dias para cobrir as mensagens em trânsito e depois é removido do DNS. Todas as novas mensagens passam a usar o selector e a chave atualizados.

Conceitos relacionados

DKIM trabalha em conjunto com SPF Record — que autentica o IP do servidor que envia — e com DMARC — que define a ação de política e o mecanismo de relatórios baseados nos resultados de SPF e DKIM. Os dois sinais precisam ser entendidos em conjunto; passar somente DKIM não torna a mensagem conforme com DMARC se o domínio d= não estiver alinhado com o domínio do RFC5322.From. No contexto de operações de concurso, as consequências práticas das falhas de DKIM estão explicadas em Voto por confirmação de e-mail, em que a chegada da mensagem na caixa de entrada determina diretamente se um voto enviado é contado.


Fontes

  1. IETF RFC 6376 — DKIM Signatures: https://www.rfc-editor.org/rfc/rfc6376
  2. Wikipedia — DomainKeys Identified Mail: https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail
  3. DMARC.org Wiki — DKIM: https://dmarc.org/wiki/DKIM

Do blog — guias e estudos de caso

Guias práticos, deep-dives técnicos, estudos de caso anônimizados.60+ artigos. Seleção gira.

Victor Williams — founder of Buyvotescontest.com
Victor Williams
Online · responde em 5 min

Olá — manda a URL do concurso, em uma hora te passo o preço. Sem cartão por enquanto.